[
  {
    "path": ".travis.yml",
    "content": "sudo: required\ndist: trusty\nlanguage: python\ngit:\n  depth: 10\n  quiet: true\npython:\n  - \"3.6\"\nenv:\n  matrix:\n    - PROJECT=\"adversarial_robustness\"\n    # - PROJECT=\"cs_gan\"  # TODO(b/184845450): Fix and re-enable\n    - PROJECT=\"gated_linear_networks\"\n    - PROJECT=\"geomancer\"\n    - PROJECT=\"hierarchical_probabilistic_unet\"\n    - PROJECT=\"iodine\"\n    - PROJECT=\"kfac_ferminet_alpha\"\n    - PROJECT=\"learning_to_simulate\"\n    - PROJECT=\"nfnets\"\n    - PROJECT=\"option_keyboard\"\n    # - PROJECT=\"polygen\"  # TODO(b/184847339): Fix and re-enable\n    # - PROJECT=\"scratchgan\"  # TODO(b/184856293): Fix and enable\n    - PROJECT=\"sketchy\"\n    - PROJECT=\"tandem_dqn\"\n    - PROJECT=\"transporter\"\n    - PROJECT=\"tvt\"\n    # - PROJECT=\"unrestricted_advx\"  # TODO(b/184862249): Fix and enable\n    - PROJECT=\"unsupervised_adversarial_training\"\n    - PROJECT=\"meshgraphnets\"\nbefore_script:\n  - pip install --upgrade pip\n  - pip install --upgrade virtualenv\n  - pip install --upgrade wheel\nscript:\n  - ./$PROJECT/run.sh\n\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# How to Contribute\n\n# Pull Requests\n\nPlease send in fixes or feature additions through Pull Requests.\n\n## Contributor License Agreement\n\nContributions to this project must be accompanied by a Contributor License\nAgreement. You (or your employer) retain the copyright to your contribution,\nthis simply gives us permission to use and redistribute your contributions as\npart of the project. Head over to <https://cla.developers.google.com/> to see\nyour current agreements on file or to sign a new one.\n\nYou generally only need to submit a CLA once, so if you've already submitted one\n(even if it was for a different project), you probably don't need to do it\nagain.\n\n## Code reviews\n\nAll submissions, including submissions by project members, require review. We\nuse GitHub pull requests for this purpose. Consult\n[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more\ninformation on using pull requests.\n"
  },
  {
    "path": "LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "PrediNet/PrediNet.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"KDiJzbb8KFvP\"\n      },\n      \"source\": [\n        \"Copyright 2019 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n\",\n        \"this file except in compliance with the License. You may obtain a copy of the\\n\",\n        \"License at\\n\",\n        \"\\n\",\n        \"[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software distributed\\n\",\n        \"under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR\\n\",\n        \"CONDITIONS OF ANY KIND, either express or implied. See the License for the\\n\",\n        \"specific language governing permissions and limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"OgbZIk-6eFRA\"\n      },\n      \"source\": [\n        \"# The PrediNet architecture and experiment code\\n\",\n        \"\\n\",\n        \"This is the core code used for the results presented in the paper\\n\",\n        \"[\\\"An Explicitly Relational Neural Network Architecture\\\"](https://arxiv.org/abs/1905.10307).\\n\",\n        \"\\n\",\n        \"If this is the first time running the colab, run the cell below to install\\n\",\n        \"TensorFlow 2.0 and Sonnet 2.0. You might be asked to re-start the session.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"arE0dFJJjCYe\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!pip install \\\"tensorflow-gpu\\u003e=2.0.0rc0\\\" --pre\\n\",\n        \"!pip install \\\"dm-sonnet\\u003e=2.0.0b0\\\" --pre\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"1shymGSjLG88\"\n      },\n      \"source\": [\n        \"## Implementing the PrediNet model\\n\",\n        \"\\n\",\n        \"Let's first import the necessary dependencies: TensorFlow, numpy, matplotlib,\\n\",\n        \"and files for uploading our datasets.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"_0k8XnhjQ8Ym\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"from __future__ import absolute_import\\n\",\n        \"from __future__ import division\\n\",\n        \"from __future__ import print_function\\n\",\n        \"\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"import numpy as np\\n\",\n        \"import sonnet as snt\\n\",\n        \"import tensorflow as tf\\n\",\n        \"from google.colab import files\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"cEH2-TNUPeCD\"\n      },\n      \"source\": [\n        \"## Importing the training, validation and testing datasets\\n\",\n        \"\\n\",\n        \"We now load smaller versions of the datasets, provided in this repository. Make\\n\",\n        \"sure you download all dataset files for the target task:\\n\",\n        \"\\n\",\n        \"*   `mini_3task_col_patts_pentos.npz`\\n\",\n        \"*   `mini_3task_col_patts_hexos.npz`\\n\",\n        \"*   `mini_3task_col_patts_stripes.npz`,\\n\",\n        \"\\n\",\n        \"as well for the pre-training task:\\n\",\n        \"\\n\",\n        \"*   `mini_between_pentos.npz`\\n\",\n        \"*   `mini_between_hexos.npz`\\n\",\n        \"*   `mini_between_stripes.npz`\\n\",\n        \"\\n\",\n        \"from the repository to your local machine. You can select all six files for\\n\",\n        \"uploading using `files.upload()`.\\n\",\n        \"\\n\",\n        \"The files for the pentominoes datasets contain only 50,000 out of the 250,000\\n\",\n        \"sample images and will be used here as the training set. The files for the\\n\",\n        \"hexominoes and stripes datasets contain 5,000 samples and will be our held-out\\n\",\n        \"sets. We use a downsampled version of the full datasets to avoid memory issues\\n\",\n        \"when loading and running our experiments in Colab, but the full datasets can be\\n\",\n        \"found\\n\",\n        \"[here](https://console.cloud.google.com/storage/browser/relations-game-datasets).\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"kBpGpBW6uUFo\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"uploaded = files.upload()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"1DfGQyOxWOQ5\"\n      },\n      \"source\": [\n        \"## Dataset parameters\\n\",\n        \"\\n\",\n        \"Now that the dataset files have been uploaded, we need to set some global\\n\",\n        \"parameters:\\n\",\n        \"\\n\",\n        \"*   **`RES`** - a scalar denoting the resolution of the images contained in the\\n\",\n        \"    dataset. All the datasets provided have a resolution of 36 x 36 x 3.\\n\",\n        \"*   **`NUM_CLASSES`** - a scalar denoting the number of classes, ie: the size of\\n\",\n        \"    the label for the tasks. All the datasets provided have 2 classes\\n\",\n        \"    (indicating True or False), with the exception of the `colour_and_or_shape`\\n\",\n        \"    datasets which have 4 classes.\\n\",\n        \"*   **`NUM_TASKS`** - a scalar denoting the number of tasks contained in each of\\n\",\n        \"    the datasets. This can take a value between 1 and 5. Having a higher than\\n\",\n        \"    required number of tasks will not lead to an error, so it is recommended to\\n\",\n        \"    keep it to 5, which is the maximum number of tasks considered in any of the\\n\",\n        \"    datasets.\\n\",\n        \"\\n\",\n        \"Let's also define our task, training set, validation set and test set names:\\n\",\n        \"\\n\",\n        \"*   **`TASKS`** - a string denoting the name of the tasks on which the network\\n\",\n        \"    will be trained. Here, this will be `'3task_col_patts'`, in which each image\\n\",\n        \"    contains a column of objects conforming to one of three possible patterns.\\n\",\n        \"    Recognising each of the 3 possible patterns is a separate task.\\n\",\n        \"*   **`PRE_TASKS`** - a string denoting the name of the pre-training tasks on\\n\",\n        \"    which the network will be pre-trained. Here, this will be `'between'`, in\\n\",\n        \"    which the (single) task is to determine whether the image contains three\\n\",\n        \"    objects in a line comprising two identical objects either side of a third.\\n\",\n        \"*   **`TRAINING_SET_NAME`** - a string denoting the name of the training set.\\n\",\n        \"    Here we will use pentominoes (`'pentos'`) for training.\\n\",\n        \"*   **`VALIDATION_SET_NAME`** - a string denoting the name of the validation\\n\",\n        \"    set. Here we will use hexominoes (`'hexos'`) for validation.\\n\",\n        \"*   **`TEST_SET_NAME`** - a string denoting the name of the test set. Here we\\n\",\n        \"    will use striped squares (`'stripes'`) for testing.\\n\",\n        \"\\n\",\n        \"Using the above tasks and datasets we will be able to produce figures that match\\n\",\n        \"those in Figure 4 of the paper. You could, of course, train, validate and test\\n\",\n        \"on any of the full datasets.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"4aOWvqSnWOpj\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"RESOLUTION = 36\\n\",\n        \"NUM_CLASSES = 2\\n\",\n        \"NUM_TASKS = 5\\n\",\n        \"TASKS = '3task_col_patts'\\n\",\n        \"PRE_TASKS = 'between'\\n\",\n        \"TRAINING_SET_NAME = 'pentos'\\n\",\n        \"VALIDATION_SET_NAME = 'hexos'\\n\",\n        \"TEST_SET_NAME = 'stripes'\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"VJLifnKZYoij\"\n      },\n      \"source\": [\n        \"## Retrieving a dataset and get a batch\\n\",\n        \"\\n\",\n        \"We now need to define functions for loading a dataset and retrieving batches\\n\",\n        \"from it, using the task and set names.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"rZbx9mPAQiDQ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def preprocess_dataset(images, labels, tasks):\\n\",\n        \"  \\\"\\\"\\\"Preprocesses a batch from the dataset.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    images: An image of integer values in the range [0-255].\\n\",\n        \"    labels: a numpy array of size (batch_size, 1). Contains an integer from 0\\n\",\n        \"      to (NUM_CLASSES - 1) denoting the class of each image.\\n\",\n        \"    tasks: a numpy array of size (batch_size, 1). Contains an integer from 0\\n\",\n        \"      to (NUM_TASKS - 1) denoting the task from which each sample was drawn\\n\",\n        \"      from.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    images: a tf.Tensor of size (batch_size, RESOLUTION, RESOLUTION, 3).\\n\",\n        \"            Contains the normalised images.\\n\",\n        \"    labels: a numpy array of size (batch_size, 1). Contains an integer from\\n\",\n        \"      0 to (NUM_CLASSES - 1) denoting the class of each image.\\n\",\n        \"    labels_1hot: a tf.Tensor of size (batch_size, NUM_CLASSES). Encodes the\\n\",\n        \"      label for each sample into a 1-hot vector.\\n\",\n        \"    tasks: a numpy array of size (batch_size, 1). Contains an integer from 0 to\\n\",\n        \"      (NUM_TASKS - 1) denoting the task from which each sample was drawn from.\\n\",\n        \"    tasks_1hot:  a tf.Tensor of size (batch_size, NUM_TASKS). Encodes the\\n\",\n        \"      task for each sample into a 1-hot vector.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  images = tf.divide(tf.cast(images, tf.float32), 256.0)\\n\",\n        \"  labels_1hot = tf.one_hot(tf.cast(tf.squeeze(labels), tf.int32), NUM_CLASSES)\\n\",\n        \"  tasks_1hot = tf.one_hot(tf.cast(tf.squeeze(tasks), tf.int32), NUM_TASKS)\\n\",\n        \"\\n\",\n        \"  return (images, labels, labels_1hot, tasks, tasks_1hot)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_dataset(task_name, set_name, batch_size):\\n\",\n        \"  \\\"\\\"\\\"Given a task and set name loads and creates a dataset iterator.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    task_name: a string. The name of the task.\\n\",\n        \"    set_name: a string. One of 'pentos', 'hexos', 'stripes'\\n\",\n        \"    batch_size: a scalar (int). The required number of samples in each batch.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    dataset: a tf.Dataset for the multitask dataset, with preprocessing.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  loader = np.load('mini_{}_{}.npz'.format(task_name, set_name), 'rb')\\n\",\n        \"  images = loader['images']\\n\",\n        \"  labels = loader['labels']\\n\",\n        \"  tasks = loader['tasks']\\n\",\n        \"\\n\",\n        \"  # Create at tf.Dataset from the numpy arrays.\\n\",\n        \"  dataset = tf.data.Dataset.from_tensor_slices((images, labels, tasks))\\n\",\n        \"  # Create a dataset with infinite iterations, a buffer of 1000 elements from\\n\",\n        \"  # which to draw samples, and specify the batch size.\\n\",\n        \"  dataset = dataset.repeat(-1).shuffle(1000).batch(batch_size)\\n\",\n        \"\\n\",\n        \"  return dataset.map(preprocess_dataset)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"VqG6DEUXS7h1\"\n      },\n      \"source\": [\n        \"## Visualising the images\\n\",\n        \"\\n\",\n        \"Now we define a couple of useful functions for visualising the images from the\\n\",\n        \"datasets.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"xP6IDyWVu4fa\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def show_image(image):\\n\",\n        \"  \\\"\\\"\\\"Plots an image from the dataset with the appropriate formating.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    image: a numpy array or tf.Tensor of size (RESOLUTION, RESOLUTION, 3) from\\n\",\n        \"      the dataset.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  # Plot the image\\n\",\n        \"  plt.imshow(image, interpolation='nearest')\\n\",\n        \"  # Make the plot look nice\\n\",\n        \"  plt.xticks([])\\n\",\n        \"  plt.yticks([])\\n\",\n        \"  plt.grid(False)\\n\",\n        \"  ax = plt.gca()\\n\",\n        \"  ax.spines['bottom'].set_color('0.5')\\n\",\n        \"  ax.spines['top'].set_color('0.5')\\n\",\n        \"  ax.spines['left'].set_color('0.5')\\n\",\n        \"  ax.spines['right'].set_color('0.5')\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def visualise_dataset(dataset):\\n\",\n        \"  \\\"\\\"\\\"Plots and prints a 3 x 3 grid of sample images from the dataset.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    dataset: a tf.Iterator object. Used to draw batches of data for\\n\",\n        \"      visualisation.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  # Retrieve a batch from the dataset iterator\\n\",\n        \"  images, labels, _, tasks, _ = next(dataset)\\n\",\n        \"\\n\",\n        \"  # Plot it\\n\",\n        \"  plt.figure(figsize=(8, 8))\\n\",\n        \"  for i in range(9):\\n\",\n        \"    image = images[i, :, :, :]\\n\",\n        \"    label = labels[i][0]\\n\",\n        \"    task = tasks[i][0]\\n\",\n        \"    plt.subplot(3, 3, i + 1)\\n\",\n        \"    show_image(image)\\n\",\n        \"    if label:\\n\",\n        \"      plt.title('Task id: {0}. Label: True'.format(task))\\n\",\n        \"    else:\\n\",\n        \"      plt.title('Task id: {0}. Label: False'.format(task))\\n\",\n        \"\\n\",\n        \"  plt.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"yFaoe8vAT-J4\"\n      },\n      \"source\": [\n        \"And let's use them to visualise the datasets we have loaded. You can play around\\n\",\n        \"by changing the dataset or task.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"yWYPK1OPUF2A\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"visualise_dataset(iter(get_dataset(TASKS, TRAINING_SET_NAME, 10)))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"1kA5N2DfZD3b\"\n      },\n      \"source\": [\n        \"## Model configurations\\n\",\n        \"\\n\",\n        \"Here we define some global parameters.\\n\",\n        \"\\n\",\n        \"### Pre-processing convolutional layer\\n\",\n        \"\\n\",\n        \"*   **`FILTER_SIZE`** - a scalar (int). The size of the filter convolution of\\n\",\n        \"    the pre-processing convolutional layer.\\n\",\n        \"*   **`STRIDE`** - a scalar (int). The stride of the convolutional layer.\\n\",\n        \"*   **`NUM_CHANNELS`** - a scalar (int). The number of output channels of the\\n\",\n        \"    pre-processing convolutional layer.\\n\",\n        \"*   **`CONV_OUT_SIZE`** - a scalar (int). The resolution of the output of the\\n\",\n        \"    pre-processing convolutional layer. i.e. the output of that layer will be of\\n\",\n        \"    size (CONV_OUT_SIZE, CONV_OUT_SIZE, NUM_CHANNELS).\\n\",\n        \"\\n\",\n        \"### PrediNet\\n\",\n        \"\\n\",\n        \"*   **`HEADS_P`** - a scalar (int). The number of heads of the PrediNet.\\n\",\n        \"*   **`RELATIONS_P`** - a scalar (int). The size of the relations vector that\\n\",\n        \"    each of the PrediNet heads produces.\\n\",\n        \"*   **`CENTRAL_OUTPUT_SIZE`** - a scalar (int). The output size of the central\\n\",\n        \"    PrediNet module. It is the combined size of all heads.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"gdgh9j_Xppsj\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Pre-processing convolutional layer parameters\\n\",\n        \"FILTER_SIZE = 12\\n\",\n        \"STRIDE = 6\\n\",\n        \"NUM_CHANNELS = 32\\n\",\n        \"CONV_OUT_SIZE = int((RESOLUTION - FILTER_SIZE) / STRIDE + 1)\\n\",\n        \"\\n\",\n        \"# PrediNet module parameters\\n\",\n        \"HEADS_P = 32\\n\",\n        \"RELATIONS_P = 16\\n\",\n        \"CENTRAL_OUTPUT_SIZE = HEADS_P * (RELATIONS_P + 4)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"ZIjWJCsfs0xI\"\n      },\n      \"source\": [\n        \"## Predinet model\\n\",\n        \"\\n\",\n        \"We now need to define the PrediNet model, which is broken down into three\\n\",\n        \"modules: 1. The input module composed of a single convolutional layer 2. The\\n\",\n        \"central module composed of the PrediNet 3. The output module composed of a two\\n\",\n        \"layer MLP\\n\",\n        \"\\n\",\n        \"The model receives an image from the dataset and a 1-hot encoding of the task\\n\",\n        \"id. The input module processes the image to produce a vector of features for\\n\",\n        \"each of the patches in the input image. The central PrediNet module receives\\n\",\n        \"these feature vectors and produces a key for each of them. Then, each of the\\n\",\n        \"PrediNet heads produces two queries that match two of the keys (or mixtures of\\n\",\n        \"them). A vector of relations is produced by each head using its corresponding\\n\",\n        \"pair of selected feature vectors. The relations produced by all heads are then\\n\",\n        \"put together in a long vector, to which the 1-hot task id is appended. This is\\n\",\n        \"then passed through the output module to produce a classification indicating\\n\",\n        \"whether, or not, the objects in the image conform to the particular high-level\\n\",\n        \"relation defined by the task id. For more details about the network architecture\\n\",\n        \"and the tasks, see the [PrediNet paper](https://arxiv.org/abs/1905.10307).\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"NmPnVBlJghXi\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"class PrediNet4MultiTask(snt.Module):\\n\",\n        \"  \\\"\\\"\\\"PrediNet model for supervised learning.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               resolution,\\n\",\n        \"               conv_out_size,\\n\",\n        \"               filter_size,\\n\",\n        \"               stride,\\n\",\n        \"               channels,\\n\",\n        \"               relations,\\n\",\n        \"               heads,\\n\",\n        \"               key_size,\\n\",\n        \"               output_hidden_size,\\n\",\n        \"               num_classes,\\n\",\n        \"               num_tasks,\\n\",\n        \"               name='PrediNet'):\\n\",\n        \"    \\\"\\\"\\\"Initialise the PrediNet model.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      resolution: a scalar (int). Resolution of raw images.\\n\",\n        \"      conv_out_size: a scalar (int). Downsampled image resolution obtained at\\n\",\n        \"        the output of the convolutional layer.\\n\",\n        \"      filter_size: a scalar (int). Filter size for the convnet.\\n\",\n        \"      stride: a scalar (int). Stride size for the convnet.\\n\",\n        \"      channels: a scalar (int). Number of channels of the convnet.\\n\",\n        \"      relations: a scalar (int). Number of relations computed by each head.\\n\",\n        \"      heads: a scalar (int). Number of PrediNet heads.\\n\",\n        \"      key_size: a scalar (int). Size of the keys.\\n\",\n        \"      output_hidden_size: a scalar (int). Size of hidden layer in output MLP.\\n\",\n        \"      num_classes: a scalar (int). Number of classes in the output label.\\n\",\n        \"      num_tasks: a scalar (int). Max number of possible tasks.\\n\",\n        \"      name: a str. The name of the model.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(PrediNet4MultiTask, self).__init__(name=name)\\n\",\n        \"    self.model_desc = name\\n\",\n        \"    self._resolution = resolution\\n\",\n        \"    self._conv_out_size = conv_out_size\\n\",\n        \"    self._filter_size = filter_size\\n\",\n        \"    self._stride = stride\\n\",\n        \"    self._channels = channels\\n\",\n        \"    self._relations = relations\\n\",\n        \"    self._heads = heads\\n\",\n        \"    self._key_size = key_size\\n\",\n        \"    self._output_hidden_size = output_hidden_size\\n\",\n        \"    self._num_classes = num_classes\\n\",\n        \"\\n\",\n        \"    self._weight_initializer = snt.initializers.TruncatedNormal(\\n\",\n        \"        mean=0.0, stddev=0.1)\\n\",\n        \"    self._bias_initializer = snt.initializers.Constant(0.1)\\n\",\n        \"\\n\",\n        \"    # Feature co-ordinate matrix\\n\",\n        \"    cols = tf.constant([[[x / float(self._conv_out_size)]\\n\",\n        \"                         for x in range(self._conv_out_size)]\\n\",\n        \"                        for _ in range(self._conv_out_size)])\\n\",\n        \"    rows = tf.transpose(cols, [1, 0, 2])\\n\",\n        \"    # Append feature co-ordinates\\n\",\n        \"    self._locs = tf.reshape(\\n\",\n        \"        tf.concat([cols, rows], 2),\\n\",\n        \"        [self._conv_out_size * self._conv_out_size, 2])\\n\",\n        \"\\n\",\n        \"    # Define all model components\\n\",\n        \"    self.input_module = snt.Conv2D(\\n\",\n        \"        output_channels=self._channels,\\n\",\n        \"        kernel_shape=self._filter_size,\\n\",\n        \"        stride=self._stride,\\n\",\n        \"        padding='VALID',\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"    self.get_keys = snt.Linear(\\n\",\n        \"        output_size=self._key_size,\\n\",\n        \"        with_bias=False,\\n\",\n        \"        w_init=self._weight_initializer)\\n\",\n        \"    self.get_query1 = snt.Linear(\\n\",\n        \"        output_size=self._heads * self._key_size,\\n\",\n        \"        with_bias=False,\\n\",\n        \"        w_init=self._weight_initializer)\\n\",\n        \"    self.get_query2 = snt.Linear(\\n\",\n        \"        output_size=self._heads * self._key_size,\\n\",\n        \"        with_bias=False,\\n\",\n        \"        w_init=self._weight_initializer)\\n\",\n        \"    self.embed_entities = snt.Linear(\\n\",\n        \"        output_size=self._relations,\\n\",\n        \"        with_bias=False,\\n\",\n        \"        w_init=self._weight_initializer)\\n\",\n        \"    self.output_hidden = snt.Linear(\\n\",\n        \"        output_size=self._output_hidden_size,\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"    self.output = snt.Linear(\\n\",\n        \"        output_size=self._num_classes,\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"\\n\",\n        \"  def _reinitialise_weight(self, submodule):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise a weight variable.\\\"\\\"\\\"\\n\",\n        \"    submodule.w.assign(submodule.w_init(submodule.w.shape, submodule.w.dtype))\\n\",\n        \"\\n\",\n        \"  def _reinitialise_bias(self, submodule):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise a bias variable.\\\"\\\"\\\"\\n\",\n        \"    submodule.b.assign(submodule.b_init(submodule.b.shape, submodule.b.dtype))\\n\",\n        \"\\n\",\n        \"  def reinitialise_input_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the input convnet.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.input_module)\\n\",\n        \"    self._reinitialise_bias(self.input_module)\\n\",\n        \"\\n\",\n        \"  def reinitialise_central_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the central PrediNet module.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.get_keys)\\n\",\n        \"    self._reinitialise_weight(self.get_query1)\\n\",\n        \"    self._reinitialise_weight(self.get_query2)\\n\",\n        \"    self._reinitialise_weight(self.embed_entities)\\n\",\n        \"\\n\",\n        \"  def reinitialise_output_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the output MLP.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.output_hidden)\\n\",\n        \"    self._reinitialise_weight(self.output)\\n\",\n        \"    self._reinitialise_bias(self.output_hidden)\\n\",\n        \"    self._reinitialise_bias(self.output)\\n\",\n        \"\\n\",\n        \"  def __call__(self, x, tasks, batch_size):\\n\",\n        \"    \\\"\\\"\\\"Applies model to image x yielding a label.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      x: tensor. Input images of size (batch_size, RESOLUTION, RESOLUTION, 3).\\n\",\n        \"      tasks: tensor. List of task sizes of size (batch_size, NUM_TASKS).\\n\",\n        \"      batch_size: scalar (int). Batch size.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      output: tensor. Output of the model of size (batch_size, NUM_CLASSES).\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    features = tf.nn.relu(self.input_module(x))\\n\",\n        \"    features = tf.reshape(features, [batch_size, -1, self._channels])\\n\",\n        \"\\n\",\n        \"    # Append location\\n\",\n        \"    locs = tf.tile(tf.expand_dims(self._locs, 0), [batch_size, 1, 1])\\n\",\n        \"    features_locs = tf.concat([features, locs], 2)\\n\",\n        \"    # (batch_size, conv_out_size*conv_out_size, channels+2)\\n\",\n        \"\\n\",\n        \"    features_flat = snt.Flatten()(features_locs)\\n\",\n        \"    # (batch_size, conv_out_size*conv_out_size*channels+2)\\n\",\n        \"\\n\",\n        \"    # Keys\\n\",\n        \"    keys = snt.BatchApply(self.get_keys)(features_locs)\\n\",\n        \"    # (batch_size, conv_out_size*conv_out_size, key_size)\\n\",\n        \"\\n\",\n        \"    keys = tf.tile(tf.expand_dims(keys, 1), [1, self._heads, 1, 1])\\n\",\n        \"    # (batch_size, heads, conv_out_size*conv_out_size, key_size)\\n\",\n        \"\\n\",\n        \"    # Queries\\n\",\n        \"    query1 = self.get_query1(features_flat)\\n\",\n        \"    # (batch_size, heads*key_size)\\n\",\n        \"    query1 = tf.reshape(query1, [batch_size, self._heads, self._key_size])\\n\",\n        \"    # (batch_size, heads, key_size)\\n\",\n        \"    query1 = tf.expand_dims(query1, 2)\\n\",\n        \"    # (batch_size, heads, 1, key_size)\\n\",\n        \"\\n\",\n        \"    query2 = self.get_query2(features_flat)\\n\",\n        \"    # (batch_size, heads*key_size)\\n\",\n        \"    query2 = tf.reshape(query2, [batch_size, self._heads, self._key_size])\\n\",\n        \"    # (batch_size, heads, key_size)\\n\",\n        \"    query2 = tf.expand_dims(query2, 2)\\n\",\n        \"    # (batch_size, heads, 1, key_size)\\n\",\n        \"\\n\",\n        \"    # Attention weights\\n\",\n        \"    keys_t = tf.transpose(keys, perm=[0, 1, 3, 2])\\n\",\n        \"    # (batch_size, heads, key_size, conv_out_size*conv_out_size)\\n\",\n        \"    att1 = tf.nn.softmax(tf.matmul(query1, keys_t))\\n\",\n        \"    att2 = tf.nn.softmax(tf.matmul(query2, keys_t))\\n\",\n        \"    # (batch_size, heads, 1, conv_out_size*conv_out_size)\\n\",\n        \"\\n\",\n        \"    # Reshape features\\n\",\n        \"    features_tiled = tf.tile(\\n\",\n        \"        tf.expand_dims(features_locs, 1), [1, self._heads, 1, 1])\\n\",\n        \"    # (batch_size, heads, conv_out_size*conv_out_size, channels+2)\\n\",\n        \"\\n\",\n        \"    # Compute a pair of features using attention weights\\n\",\n        \"    feature1 = tf.squeeze(tf.matmul(att1, features_tiled))\\n\",\n        \"    feature2 = tf.squeeze(tf.matmul(att2, features_tiled))\\n\",\n        \"    # (batch_size, heads, (channels+2))\\n\",\n        \"\\n\",\n        \"    # Spatial embedding\\n\",\n        \"    embedding1 = snt.BatchApply(self.embed_entities)(feature1)\\n\",\n        \"    embedding2 = snt.BatchApply(self.embed_entities)(feature2)\\n\",\n        \"    # (batch_size, heads, relations)\\n\",\n        \"\\n\",\n        \"    # Comparator\\n\",\n        \"    dx = tf.subtract(embedding1, embedding2)\\n\",\n        \"    # (batch_size, heads, relations)\\n\",\n        \"\\n\",\n        \"    # Positions\\n\",\n        \"    pos1 = tf.slice(feature1, [0, 0, self._channels], [-1, -1, -1])\\n\",\n        \"    pos2 = tf.slice(feature2, [0, 0, self._channels], [-1, -1, -1])\\n\",\n        \"    # (batch_size, heads, 2)\\n\",\n        \"\\n\",\n        \"    # Collect relations and concatenate positions\\n\",\n        \"    relations = tf.concat([dx, pos1, pos2], 2)\\n\",\n        \"    # (batch_size, heads, relations+4)\\n\",\n        \"    relations = tf.reshape(relations,\\n\",\n        \"                           [batch_size, self._heads * (self._relations + 4)])\\n\",\n        \"    # (batch_size, heads*(relations+4))\\n\",\n        \"\\n\",\n        \"    # Append task id\\n\",\n        \"    relations_plus = tf.concat([relations, tasks], 1)\\n\",\n        \"\\n\",\n        \"    # Apply output network\\n\",\n        \"    hidden_activations = tf.nn.relu(self.output_hidden(relations_plus))\\n\",\n        \"    output = self.output(hidden_activations)\\n\",\n        \"\\n\",\n        \"    return output\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"-fxRUx6qBM6m\"\n      },\n      \"source\": [\n        \"## Baselines\\n\",\n        \"\\n\",\n        \"If you wish to also train the other baselines, you can run the following code\\n\",\n        \"cell, which will set the required parameters and define the baseline model\\n\",\n        \"classes.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"yBIu3-zIBy2f\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Baseline parameters\\n\",\n        \"\\n\",\n        \"# 2-layer MLP baseline\\n\",\n        \"# Fully connected hidden layer size\\n\",\n        \"CENTRAL_HIDDEN_SIZE = 1024\\n\",\n        \"\\n\",\n        \"# Relation net\\n\",\n        \"# Relation net MLP layer 1 size\\n\",\n        \"RN_HIDDEN_SIZE = 256\\n\",\n        \"\\n\",\n        \"# Self-attention net\\n\",\n        \"# Self-attention net number of heads - 32 will match those of PrediNet.\\n\",\n        \"HEADS_SA = 32\\n\",\n        \"# The required size of the Values produced by the model (per head), such that\\n\",\n        \"# the self-attention output size equals that of the PrediNet.\\n\",\n        \"VALUE_SIZE = int(CENTRAL_OUTPUT_SIZE / HEADS_SA)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# And below you can find the function definition.\\n\",\n        \"class ConvNetMLP1L(snt.Module):\\n\",\n        \"  \\\"\\\"\\\"Convnet + Single layer baseline model for supervised learning.\\n\",\n        \"\\n\",\n        \"  Input net = convnet\\n\",\n        \"  Central net = Single linear layer\\n\",\n        \"  Output net = 2-layer MLP\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               resolution,\\n\",\n        \"               conv_out_size,\\n\",\n        \"               filter_size,\\n\",\n        \"               stride,\\n\",\n        \"               channels,\\n\",\n        \"               central_output_size,\\n\",\n        \"               output_hidden_size,\\n\",\n        \"               num_classes,\\n\",\n        \"               num_tasks,\\n\",\n        \"               name='ConvNetMLP1L'):\\n\",\n        \"    \\\"\\\"\\\"Initialise the convnet/MLP model.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      resolution: scalar. Resolution of raw images.\\n\",\n        \"      conv_out_size: scalar. Downsampled resolution of the images.\\n\",\n        \"      filter_size: scalar. Filter size for the convnet.\\n\",\n        \"      stride: scalar. Stride size for the convnet.\\n\",\n        \"      channels: scalar. Number of channels of the convnet.\\n\",\n        \"      central_output_size: scalar. Output size of central MLP.\\n\",\n        \"      output_hidden_size: a scalar (int). Size of hidden layer in output MLP.\\n\",\n        \"      num_classes: scalar. Number of classes in the output label.\\n\",\n        \"      num_tasks: scalar. Max number of possible tasks.\\n\",\n        \"      name: a str. The name of the model.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(ConvNetMLP1L, self).__init__(name=name)\\n\",\n        \"    self.model_desc = '1-layer baseline'\\n\",\n        \"    self._resolution = resolution\\n\",\n        \"    self._conv_out_size = conv_out_size\\n\",\n        \"    self._filter_size = filter_size\\n\",\n        \"    self._stride = stride\\n\",\n        \"    self._channels = channels\\n\",\n        \"    self._central_output_size = central_output_size\\n\",\n        \"    self._output_hidden_size = output_hidden_size\\n\",\n        \"    self._num_classes = num_classes\\n\",\n        \"\\n\",\n        \"    self._weight_initializer = snt.initializers.TruncatedNormal(\\n\",\n        \"        mean=0.0, stddev=0.1)\\n\",\n        \"    self._bias_initializer = snt.initializers.Constant(0.1)\\n\",\n        \"\\n\",\n        \"    # Feature co-ordinate matrix\\n\",\n        \"    cols = tf.constant([[[x / float(self._conv_out_size)]\\n\",\n        \"                         for x in range(self._conv_out_size)]\\n\",\n        \"                        for _ in range(self._conv_out_size)])\\n\",\n        \"    rows = tf.transpose(cols, [1, 0, 2])\\n\",\n        \"    # Append feature co-ordinates\\n\",\n        \"    self._locs = tf.reshape(\\n\",\n        \"        tf.concat([cols, rows], 2),\\n\",\n        \"        [self._conv_out_size * self._conv_out_size, 2])\\n\",\n        \"\\n\",\n        \"    # Define all model components\\n\",\n        \"    self.input_module = snt.Conv2D(\\n\",\n        \"        output_channels=self._channels,\\n\",\n        \"        kernel_shape=self._filter_size,\\n\",\n        \"        stride=self._stride,\\n\",\n        \"        padding='VALID',\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"    self.central_hidden = snt.Linear(\\n\",\n        \"        output_size=self._central_output_size,\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"    self.output_hidden = snt.Linear(\\n\",\n        \"        output_size=self._output_hidden_size,\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"    self.output = snt.Linear(\\n\",\n        \"        output_size=self._num_classes,\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"\\n\",\n        \"  def _reinitialise_weight(self, submodule):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise a weight variable.\\\"\\\"\\\"\\n\",\n        \"    submodule.w.assign(submodule.w_init(submodule.w.shape, submodule.w.dtype))\\n\",\n        \"\\n\",\n        \"  def _reinitialise_bias(self, submodule):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise a bias variable.\\\"\\\"\\\"\\n\",\n        \"    submodule.b.assign(submodule.b_init(submodule.b.shape, submodule.b.dtype))\\n\",\n        \"\\n\",\n        \"  def reinitialise_input_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the input convnet.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.input_module)\\n\",\n        \"    self._reinitialise_bias(self.input_module)\\n\",\n        \"\\n\",\n        \"  def reinitialise_central_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the central hidden layer.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.central_hidden)\\n\",\n        \"    self._reinitialise_bias(self.central_hidden)\\n\",\n        \"\\n\",\n        \"  def reinitialise_output_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the output MLP.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.output_hidden)\\n\",\n        \"    self._reinitialise_weight(self.output)\\n\",\n        \"    self._reinitialise_bias(self.output_hidden)\\n\",\n        \"    self._reinitialise_bias(self.output)\\n\",\n        \"\\n\",\n        \"  def __call__(self, x, tasks, batch_size):\\n\",\n        \"    \\\"\\\"\\\"Applies model to image x yielding a label.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      x: tensor. Input image.\\n\",\n        \"      tasks: tensor. List of task sizes of length batch_size.\\n\",\n        \"      batch_size: scalar. Batch size.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      output: tensor. Output of the model.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    features = tf.nn.relu(self.input_module(x))\\n\",\n        \"    features = tf.reshape(features, [batch_size, -1, self._channels])\\n\",\n        \"\\n\",\n        \"    # Append location\\n\",\n        \"    locs = tf.tile(tf.expand_dims(self._locs, 0), [batch_size, 1, 1])\\n\",\n        \"    features_locs = tf.concat([features, locs], 2)\\n\",\n        \"    # (batch_size, conv_out_size*conv_out_size, channels+2)\\n\",\n        \"\\n\",\n        \"    features_flat = snt.Flatten()(features_locs)\\n\",\n        \"    # (batch_size, conv_out_size*conv_out_size*(channels+2))\\n\",\n        \"\\n\",\n        \"    # Fully connected layers\\n\",\n        \"    central_activations = tf.nn.relu(self.central_hidden(features_flat))\\n\",\n        \"    # (batch_size, central_output_size)\\n\",\n        \"\\n\",\n        \"    # Append task id\\n\",\n        \"    central_output = tf.concat([central_activations, tasks], 1)\\n\",\n        \"\\n\",\n        \"    # Apply output network\\n\",\n        \"    hidden_activations = tf.nn.relu(self.output_hidden(central_output))\\n\",\n        \"    output = self.output(hidden_activations)\\n\",\n        \"\\n\",\n        \"    return output\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class ConvNetMLP2L(snt.Module):\\n\",\n        \"  \\\"\\\"\\\"Convnet/MLP baseline model for supervised learning.\\n\",\n        \"\\n\",\n        \"  Input net = convnet\\n\",\n        \"  Central net = 2-layer MLP\\n\",\n        \"  Output net = 2-layer MLP\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               resolution,\\n\",\n        \"               conv_out_size,\\n\",\n        \"               filter_size,\\n\",\n        \"               stride,\\n\",\n        \"               channels,\\n\",\n        \"               central_hidden_size,\\n\",\n        \"               central_output_size,\\n\",\n        \"               output_hidden_size,\\n\",\n        \"               num_classes,\\n\",\n        \"               num_tasks,\\n\",\n        \"               name='MLP2'):\\n\",\n        \"    \\\"\\\"\\\"Initialise the convnet/MLP model.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      resolution: scalar. Resolution of raw images.\\n\",\n        \"      conv_out_size: scalar. Downsampled resolution of the images.\\n\",\n        \"      filter_size: scalar. Filter size for the convnet.\\n\",\n        \"      stride: scalar. Stride size for the convnet.\\n\",\n        \"      channels: scalar. Number of channels of the convnet.\\n\",\n        \"      central_hidden_size: scalar. Hidden units size of central MLP.\\n\",\n        \"      central_output_size: scalar. Output size of central MLP.\\n\",\n        \"      output_hidden_size: a scalar (int). Size of hidden layer in output MLP.\\n\",\n        \"      num_classes: scalar. Number of classes in the output label.\\n\",\n        \"      num_tasks: scalar. Max number of possible tasks.\\n\",\n        \"      name: a str. The name of the model.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(ConvNetMLP2L, self).__init__(name=name)\\n\",\n        \"    self.model_desc = '2-layer MLP baseline'\\n\",\n        \"    self._resolution = resolution\\n\",\n        \"    self._conv_out_size = conv_out_size\\n\",\n        \"    self._filter_size = filter_size\\n\",\n        \"    self._stride = stride\\n\",\n        \"    self._channels = channels\\n\",\n        \"    self._central_hidden_size = central_hidden_size\\n\",\n        \"    self._central_output_size = central_output_size\\n\",\n        \"    self._output_hidden_size = output_hidden_size\\n\",\n        \"    self._num_classes = num_classes\\n\",\n        \"\\n\",\n        \"    self._weight_initializer = snt.initializers.TruncatedNormal(\\n\",\n        \"        mean=0.0, stddev=0.1)\\n\",\n        \"    self._bias_initializer = snt.initializers.Constant(0.1)\\n\",\n        \"\\n\",\n        \"    # Feature co-ordinate matrix\\n\",\n        \"    cols = tf.constant([[[x / float(self._conv_out_size)]\\n\",\n        \"                         for x in range(self._conv_out_size)]\\n\",\n        \"                        for _ in range(self._conv_out_size)])\\n\",\n        \"    rows = tf.transpose(cols, [1, 0, 2])\\n\",\n        \"    # Append feature co-ordinates\\n\",\n        \"    self._locs = tf.reshape(\\n\",\n        \"        tf.concat([cols, rows], 2),\\n\",\n        \"        [self._conv_out_size * self._conv_out_size, 2])\\n\",\n        \"\\n\",\n        \"    # Define all model components\\n\",\n        \"    self.input_module = snt.Conv2D(\\n\",\n        \"        output_channels=self._channels,\\n\",\n        \"        kernel_shape=self._filter_size,\\n\",\n        \"        stride=self._stride,\\n\",\n        \"        padding='VALID',\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"    self.central_hidden = snt.Linear(\\n\",\n        \"        output_size=self._central_hidden_size,\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"    self.central_output = snt.Linear(\\n\",\n        \"        output_size=self._central_output_size,\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"    self.output_hidden = snt.Linear(\\n\",\n        \"        output_size=self._output_hidden_size,\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"    self.output = snt.Linear(\\n\",\n        \"        output_size=self._num_classes,\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"\\n\",\n        \"  def _reinitialise_weight(self, submodule):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise a weight variable.\\\"\\\"\\\"\\n\",\n        \"    submodule.w.assign(submodule.w_init(submodule.w.shape, submodule.w.dtype))\\n\",\n        \"\\n\",\n        \"  def _reinitialise_bias(self, submodule):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise a bias variable.\\\"\\\"\\\"\\n\",\n        \"    submodule.b.assign(submodule.b_init(submodule.b.shape, submodule.b.dtype))\\n\",\n        \"\\n\",\n        \"  def reinitialise_input_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the input convnet.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.input_module)\\n\",\n        \"    self._reinitialise_bias(self.input_module)\\n\",\n        \"\\n\",\n        \"  def reinitialise_central_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the central layers.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.central_hidden)\\n\",\n        \"    self._reinitialise_bias(self.central_hidden)\\n\",\n        \"    self._reinitialise_weight(self.central_output)\\n\",\n        \"    self._reinitialise_bias(self.central_output)\\n\",\n        \"\\n\",\n        \"  def reinitialise_output_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the output MLP.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.output_hidden)\\n\",\n        \"    self._reinitialise_weight(self.output)\\n\",\n        \"    self._reinitialise_bias(self.output_hidden)\\n\",\n        \"    self._reinitialise_bias(self.output)\\n\",\n        \"\\n\",\n        \"  def __call__(self, x, tasks, batch_size):\\n\",\n        \"    \\\"\\\"\\\"Applies model to image x yielding a label.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      x: tensor. Input image.\\n\",\n        \"      tasks: tensor. List of task sizes of length batch_size.\\n\",\n        \"      batch_size: scalar. Batch size.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      output: tensor. Output of the model.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    features = tf.nn.relu(self.input_module(x))\\n\",\n        \"    features = tf.reshape(features, [batch_size, -1, self._channels])\\n\",\n        \"\\n\",\n        \"    # Append location\\n\",\n        \"    locs = tf.tile(tf.expand_dims(self._locs, 0), [batch_size, 1, 1])\\n\",\n        \"    features_locs = tf.concat([features, locs], 2)\\n\",\n        \"    # (batch_size, conv_out_size*conv_out_size, channels+2)\\n\",\n        \"\\n\",\n        \"    features_flat = snt.Flatten()(features_locs)\\n\",\n        \"    # (batch_size, conv_out_size*conv_out_size*(channels+2))\\n\",\n        \"\\n\",\n        \"    # Fully connected layers\\n\",\n        \"    central_activations = tf.nn.relu(self.central_hidden(features_flat))\\n\",\n        \"    # (batch_size, central_hidden_size)\\n\",\n        \"    central_out_activations = tf.nn.relu(\\n\",\n        \"        self.central_output(central_activations))\\n\",\n        \"    # (batch_size, central_output_size)\\n\",\n        \"\\n\",\n        \"    # Append task id\\n\",\n        \"    central_out_locs = tf.concat([central_out_activations, tasks], 1)\\n\",\n        \"\\n\",\n        \"    # Apply output network\\n\",\n        \"    hidden_activations = tf.nn.relu(self.output_hidden(central_out_locs))\\n\",\n        \"    output = self.output(hidden_activations)\\n\",\n        \"\\n\",\n        \"    return output\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class RelationNet(snt.Module):\\n\",\n        \"  \\\"\\\"\\\"Relation net baseline model for supervised learning.\\n\",\n        \"\\n\",\n        \"  Input net = convnet\\n\",\n        \"  Central net = relation net\\n\",\n        \"  Output net = 2-layer MLP\\n\",\n        \"\\n\",\n        \"  Relation network taken from: Santoro, A., Raposo, D., Barrett,\\n\",\n        \"  D. G., Malinowski, M., Pascanu, R., Battaglia, P., \\u0026 Lillicrap, T.\\n\",\n        \"  (2017). A simple neural network module for relational reasoning.\\n\",\n        \"  In Advances in neural information processing systems (pp. 4967-4976).\\n\",\n        \"  http://papers.nips.cc/paper/7082-a-simple-neural-network-module-for-relational-reasoning\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               resolution,\\n\",\n        \"               conv_out_size,\\n\",\n        \"               filter_size,\\n\",\n        \"               stride,\\n\",\n        \"               channels,\\n\",\n        \"               central_hidden_size,\\n\",\n        \"               central_output_size,\\n\",\n        \"               output_hidden_size,\\n\",\n        \"               num_classes,\\n\",\n        \"               num_tasks,\\n\",\n        \"               name='RelationNet'):\\n\",\n        \"    \\\"\\\"\\\"Initialise the relation net model.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      resolution: scalar. Resolution of raw images.\\n\",\n        \"      conv_out_size: scalar. Downsampled resolution of the images.\\n\",\n        \"      filter_size: scalar. Filter size for the convnet.\\n\",\n        \"      stride: scalar. Stride size for the convnet.\\n\",\n        \"      channels: scalar. Number of channels of the convnet.\\n\",\n        \"      central_hidden_size: scalar. Hidden units size of Relation Net module.\\n\",\n        \"      central_output_size: scalar. Output size of Relation Net module.\\n\",\n        \"      output_hidden_size: a scalar (int). Size of hidden layer in output MLP.\\n\",\n        \"      num_classes: scalar. Number of classes in the output label.\\n\",\n        \"      num_tasks: scalar. Max number of possible tasks.\\n\",\n        \"      name: a str. The name of the model.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(RelationNet, self).__init__(name=name)\\n\",\n        \"    self.model_desc = 'Relation net baseline'\\n\",\n        \"    self._resolution = resolution\\n\",\n        \"    self._conv_out_size = conv_out_size\\n\",\n        \"    self._filter_size = filter_size\\n\",\n        \"    self._stride = stride\\n\",\n        \"    self._channels = channels\\n\",\n        \"    self._central_hidden_size = central_hidden_size\\n\",\n        \"    self._central_output_size = central_output_size\\n\",\n        \"    self._output_hidden_size = output_hidden_size\\n\",\n        \"    self._num_classes = num_classes\\n\",\n        \"\\n\",\n        \"    self._weight_initializer = snt.initializers.TruncatedNormal(\\n\",\n        \"        mean=0.0, stddev=0.1)\\n\",\n        \"    self._bias_initializer = snt.initializers.Constant(0.1)\\n\",\n        \"\\n\",\n        \"    # Feature co-ordinate matrix\\n\",\n        \"    cols = tf.constant([[[x / float(self._conv_out_size)]\\n\",\n        \"                         for x in range(self._conv_out_size)]\\n\",\n        \"                        for _ in range(self._conv_out_size)])\\n\",\n        \"    rows = tf.transpose(cols, [1, 0, 2])\\n\",\n        \"    # Append feature co-ordinates\\n\",\n        \"    self._locs = tf.reshape(\\n\",\n        \"        tf.concat([cols, rows], 2),\\n\",\n        \"        [self._conv_out_size * self._conv_out_size, 2])\\n\",\n        \"\\n\",\n        \"    # Define all model components\\n\",\n        \"    self.input_module = snt.Conv2D(\\n\",\n        \"        output_channels=self._channels,\\n\",\n        \"        kernel_shape=self._filter_size,\\n\",\n        \"        stride=self._stride,\\n\",\n        \"        padding='VALID',\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"    self.central_hidden = snt.Linear(\\n\",\n        \"        output_size=self._central_hidden_size,\\n\",\n        \"        with_bias=False,\\n\",\n        \"        w_init=self._weight_initializer)\\n\",\n        \"    self.central_output = snt.Linear(\\n\",\n        \"        output_size=self._central_output_size,\\n\",\n        \"        with_bias=False,\\n\",\n        \"        w_init=self._weight_initializer)\\n\",\n        \"    self.output_hidden = snt.Linear(\\n\",\n        \"        output_size=self._output_hidden_size,\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"    self.output = snt.Linear(\\n\",\n        \"        output_size=self._num_classes,\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"\\n\",\n        \"  def _reinitialise_weight(self, submodule):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise a weight variable.\\\"\\\"\\\"\\n\",\n        \"    submodule.w.assign(submodule.w_init(submodule.w.shape, submodule.w.dtype))\\n\",\n        \"\\n\",\n        \"  def _reinitialise_bias(self, submodule):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise a bias variable.\\\"\\\"\\\"\\n\",\n        \"    submodule.b.assign(submodule.b_init(submodule.b.shape, submodule.b.dtype))\\n\",\n        \"\\n\",\n        \"  def reinitialise_input_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the input convnet.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.input_module)\\n\",\n        \"    self._reinitialise_bias(self.input_module)\\n\",\n        \"\\n\",\n        \"  def reinitialise_central_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the central layers.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.central_hidden)\\n\",\n        \"    self._reinitialise_weight(self.central_output)\\n\",\n        \"\\n\",\n        \"  def reinitialise_output_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the output MLP.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.output_hidden)\\n\",\n        \"    self._reinitialise_weight(self.output)\\n\",\n        \"    self._reinitialise_bias(self.output_hidden)\\n\",\n        \"    self._reinitialise_bias(self.output)\\n\",\n        \"\\n\",\n        \"  def __call__(self, x, tasks, batch_size):\\n\",\n        \"    \\\"\\\"\\\"Applies model to image x yielding a label.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      x: tensor. Input image.\\n\",\n        \"      tasks: tensor. List of task sizes of length batch_size.\\n\",\n        \"      batch_size: scalar. Batch size.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      output: tensor. Output of the model.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    features = tf.nn.relu(self.input_module(x))\\n\",\n        \"    features = tf.reshape(features, [batch_size, -1, self._channels])\\n\",\n        \"\\n\",\n        \"    # Append location\\n\",\n        \"    locs = tf.tile(tf.expand_dims(self._locs, 0), [batch_size, 1, 1])\\n\",\n        \"    features_locs = tf.concat([features, locs], 2)\\n\",\n        \"    # (batch_size, conv_out_size*conv_out_size, channels+2)\\n\",\n        \"\\n\",\n        \"    features_flat = tf.reshape(\\n\",\n        \"        features_locs,\\n\",\n        \"        [batch_size, (self._conv_out_size**2), self._channels + 2])\\n\",\n        \"    # (batch_size, conv_out_size*conv_out_size, (channels+2))\\n\",\n        \"\\n\",\n        \"    # Compute all possible pairs of features\\n\",\n        \"    num_features = self._conv_out_size * self._conv_out_size\\n\",\n        \"    indexes = tf.range(num_features)\\n\",\n        \"    receiver_indexes = tf.tile(indexes, [num_features])\\n\",\n        \"    sender_indexes = tf.reshape(\\n\",\n        \"        tf.transpose(\\n\",\n        \"            tf.reshape(receiver_indexes, [num_features, num_features])), [-1])\\n\",\n        \"    receiver_objects = tf.gather(features_flat, receiver_indexes, axis=1)\\n\",\n        \"    sender_objects = tf.gather(features_flat, sender_indexes, axis=1)\\n\",\n        \"    object_pairs = tf.concat([sender_objects, receiver_objects], -1)\\n\",\n        \"    # (batch_size, (conv_out_size*conv_out_size)^2, (channels+2)*2)\\n\",\n        \"\\n\",\n        \"    # Compute \\\"relations\\\"\\n\",\n        \"    central_activations = tf.nn.relu(\\n\",\n        \"        snt.BatchApply(self.central_hidden)(object_pairs))\\n\",\n        \"    # (batch_size, (conv_out_size*conv_out_size)^2, central_hidden_size)\\n\",\n        \"    central_out_activations = tf.nn.relu(\\n\",\n        \"        snt.BatchApply(self.central_output)(central_activations))\\n\",\n        \"    # (batch_size, (conv_out_size*conv_out_size)^2, central_output_size)\\n\",\n        \"\\n\",\n        \"    # Aggregate relations\\n\",\n        \"    central_out_mean = tf.reduce_mean(central_out_activations, 1)\\n\",\n        \"    # (batch_size, central_output_size)\\n\",\n        \"\\n\",\n        \"    # Append task id\\n\",\n        \"    central_out_locs = tf.concat([central_out_mean, tasks], 1)\\n\",\n        \"\\n\",\n        \"    # Apply output network\\n\",\n        \"    hidden_activations = tf.nn.relu(self.output_hidden(central_out_locs))\\n\",\n        \"    output = self.output(hidden_activations)\\n\",\n        \"\\n\",\n        \"    return output\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class CombineValues(snt.Module):\\n\",\n        \"  \\\"\\\"\\\"Custom module for computing tensor products in SelfAttentionNet.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self, heads, w_init=None):\\n\",\n        \"    \\\"\\\"\\\"Initialise the CombineValues module.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      heads: scalar. Number of heads over which to combine the values.\\n\",\n        \"      w_init: an initializer. A sonnet snt.initializers.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(CombineValues, self).__init__(name='CombineValues')\\n\",\n        \"    self._heads = heads\\n\",\n        \"    self.w_init = w_init\\n\",\n        \"\\n\",\n        \"  @snt.once\\n\",\n        \"  def _initialize(self, inputs):\\n\",\n        \"    num_features = inputs.shape[2]\\n\",\n        \"    if self.w_init is None:\\n\",\n        \"      self.w_init = snt.initializers.TruncatedNormal(mean=0.0, stddev=0.1)\\n\",\n        \"    self.w = tf.Variable(\\n\",\n        \"        self.w_init([self._heads, 1, num_features], inputs.dtype), name='w')\\n\",\n        \"\\n\",\n        \"  def __call__(self, inputs):\\n\",\n        \"    self._initialize(inputs)\\n\",\n        \"    return tf.einsum('bhrv,har-\\u003ebhav', inputs, self.w)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class SelfAttentionNet(snt.Module):\\n\",\n        \"  \\\"\\\"\\\"Self-attention network model for supervised learning.\\n\",\n        \"\\n\",\n        \"  Input net = convnet\\n\",\n        \"  Central net = self-attention module\\n\",\n        \"  Output net = 2-layer MLP\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               resolution,\\n\",\n        \"               conv_out_size,\\n\",\n        \"               filter_size,\\n\",\n        \"               stride,\\n\",\n        \"               channels,\\n\",\n        \"               heads,\\n\",\n        \"               key_size,\\n\",\n        \"               value_size,\\n\",\n        \"               output_hidden_size,\\n\",\n        \"               num_classes,\\n\",\n        \"               num_tasks,\\n\",\n        \"               name='SelfAttention'):\\n\",\n        \"    \\\"\\\"\\\"Initialise the self-attention net model.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      resolution: scalar. Resolution of raw images.\\n\",\n        \"      conv_out_size: scalar. Downsampled resolution of the images.\\n\",\n        \"      filter_size: scalar. Filter size for the convnet.\\n\",\n        \"      stride: scalar. Stride size for the convnet.\\n\",\n        \"      channels: scalar. Number of channels of the convnet.\\n\",\n        \"      heads: scalar. Number of self-attention net heads.\\n\",\n        \"      key_size: scalar. Size of the keys.\\n\",\n        \"      value_size: scalar. Size of values in self-attention module.\\n\",\n        \"      output_hidden_size: a scalar (int). Size of hidden layer in output MLP.\\n\",\n        \"      num_classes: scalar. Number of classes in the output label.\\n\",\n        \"      num_tasks: scalar. Max number of possible tasks.\\n\",\n        \"      name: a str. The name of the model.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(SelfAttentionNet, self).__init__(name=name)\\n\",\n        \"    self.model_desc = 'Self-attention net baseline'\\n\",\n        \"    self._resolution = resolution\\n\",\n        \"    self._conv_out_size = conv_out_size\\n\",\n        \"    self._filter_size = filter_size\\n\",\n        \"    self._stride = stride\\n\",\n        \"    self._channels = channels\\n\",\n        \"    self._heads = heads\\n\",\n        \"    self._key_size = key_size\\n\",\n        \"    self._value_size = value_size\\n\",\n        \"    self._output_hidden_size = output_hidden_size\\n\",\n        \"    self._num_classes = num_classes\\n\",\n        \"\\n\",\n        \"    self._weight_initializer = snt.initializers.TruncatedNormal(\\n\",\n        \"        mean=0.0, stddev=0.1)\\n\",\n        \"    self._bias_initializer = snt.initializers.Constant(0.1)\\n\",\n        \"\\n\",\n        \"    # Feature co-ordinate matrix\\n\",\n        \"    cols = tf.constant([[[x / float(self._conv_out_size)]\\n\",\n        \"                         for x in range(self._conv_out_size)]\\n\",\n        \"                        for _ in range(self._conv_out_size)])\\n\",\n        \"    rows = tf.transpose(cols, [1, 0, 2])\\n\",\n        \"    # Append feature co-ordinates\\n\",\n        \"    self._locs = tf.reshape(\\n\",\n        \"        tf.concat([cols, rows], 2),\\n\",\n        \"        [self._conv_out_size * self._conv_out_size, 2])\\n\",\n        \"\\n\",\n        \"    # Define all model components\\n\",\n        \"    self.input_module = snt.Conv2D(\\n\",\n        \"        output_channels=self._channels,\\n\",\n        \"        kernel_shape=self._filter_size,\\n\",\n        \"        stride=self._stride,\\n\",\n        \"        padding='VALID',\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"    self.get_keys = snt.Linear(\\n\",\n        \"        output_size=self._heads * self._key_size,\\n\",\n        \"        with_bias=False,\\n\",\n        \"        w_init=self._weight_initializer)\\n\",\n        \"    self.get_queries = snt.Linear(\\n\",\n        \"        output_size=self._heads * self._key_size,\\n\",\n        \"        with_bias=False,\\n\",\n        \"        w_init=self._weight_initializer)\\n\",\n        \"    self.get_values = snt.Linear(\\n\",\n        \"        output_size=self._heads * self._value_size,\\n\",\n        \"        with_bias=False,\\n\",\n        \"        w_init=self._weight_initializer)\\n\",\n        \"    self.central_output = CombineValues(\\n\",\n        \"        heads=self._heads, w_init=self._weight_initializer)\\n\",\n        \"    self.output_hidden = snt.Linear(\\n\",\n        \"        output_size=self._output_hidden_size,\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"    self.output = snt.Linear(\\n\",\n        \"        output_size=self._num_classes,\\n\",\n        \"        w_init=self._weight_initializer,\\n\",\n        \"        b_init=self._bias_initializer)\\n\",\n        \"\\n\",\n        \"  def _reinitialise_weight(self, submodule):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise a weight variable.\\\"\\\"\\\"\\n\",\n        \"    submodule.w.assign(submodule.w_init(submodule.w.shape, submodule.w.dtype))\\n\",\n        \"\\n\",\n        \"  def _reinitialise_bias(self, submodule):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise a bias variable.\\\"\\\"\\\"\\n\",\n        \"    submodule.b.assign(submodule.b_init(submodule.b.shape, submodule.b.dtype))\\n\",\n        \"\\n\",\n        \"  def reinitialise_input_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the input convnet.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.input_module)\\n\",\n        \"    self._reinitialise_bias(self.input_module)\\n\",\n        \"\\n\",\n        \"  def reinitialise_central_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the central PrediNet module.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.get_keys)\\n\",\n        \"    self._reinitialise_weight(self.get_queries)\\n\",\n        \"    self._reinitialise_weight(self.get_values)\\n\",\n        \"    self._reinitialise_weight(self.central_output)\\n\",\n        \"\\n\",\n        \"  def reinitialise_output_module(self):\\n\",\n        \"    \\\"\\\"\\\"Re-initialise the weights of the output MLP.\\\"\\\"\\\"\\n\",\n        \"    self._reinitialise_weight(self.output_hidden)\\n\",\n        \"    self._reinitialise_weight(self.output)\\n\",\n        \"    self._reinitialise_bias(self.output_hidden)\\n\",\n        \"    self._reinitialise_bias(self.output)\\n\",\n        \"\\n\",\n        \"  def __call__(self, x, tasks, batch_size):\\n\",\n        \"    \\\"\\\"\\\"Applies model to image x yielding a label.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      x: tensor. Input images of size (batch_size, RESOLUTION, RESOLUTION, 3).\\n\",\n        \"      tasks: tensor. List of task sizes of size (batch_size, NUM_TASKS).\\n\",\n        \"      batch_size: scalar (int). Batch size.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      output: tensor. Output of the model of size (batch_size, NUM_CLASSES).\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    features = tf.nn.relu(self.input_module(x))\\n\",\n        \"    features = tf.reshape(features, [batch_size, -1, self._channels])\\n\",\n        \"\\n\",\n        \"    # Append location\\n\",\n        \"    locs = tf.tile(tf.expand_dims(self._locs, 0), [batch_size, 1, 1])\\n\",\n        \"    features_locs = tf.concat([features, locs], 2)\\n\",\n        \"    # (batch_size, conv_out_size*conv_out_size, channels+2)\\n\",\n        \"\\n\",\n        \"    # Keys\\n\",\n        \"    keys = snt.BatchApply(self.get_keys)(features_locs)\\n\",\n        \"    #(batch_size, conv_out_size*conv_out_size, heads*key_size)\\n\",\n        \"    keys = tf.reshape(keys, [\\n\",\n        \"        batch_size, self._conv_out_size * self._conv_out_size, self._heads,\\n\",\n        \"        self._key_size\\n\",\n        \"    ])\\n\",\n        \"    #(batch_size, conv_out_size*conv_out_size, heads, key_size)\\n\",\n        \"\\n\",\n        \"    # Queries\\n\",\n        \"    queries = snt.BatchApply(self.get_queries)(features_locs)\\n\",\n        \"    #(batch_size, conv_out_size*conv_out_size, heads*key_size)\\n\",\n        \"    queries = tf.reshape(queries, [\\n\",\n        \"        batch_size, self._conv_out_size * self._conv_out_size, self._heads,\\n\",\n        \"        self._key_size\\n\",\n        \"    ])\\n\",\n        \"    #(batch_size, conv_out_size*conv_out_size, heads, key_size)\\n\",\n        \"\\n\",\n        \"    # Values\\n\",\n        \"    values = snt.BatchApply(self.get_values)(features_locs)\\n\",\n        \"    #(batch_size, conv_out_size*conv_out_size, heads*value_size)\\n\",\n        \"    values = tf.reshape(values, [\\n\",\n        \"        batch_size, self._conv_out_size * self._conv_out_size, self._heads,\\n\",\n        \"        self._value_size\\n\",\n        \"    ])\\n\",\n        \"    #(batch_size, conv_out_size*conv_out_size, heads, values_size)\\n\",\n        \"\\n\",\n        \"    # Attention weights\\n\",\n        \"    queries_t = tf.transpose(queries, perm=[0, 2, 1, 3])\\n\",\n        \"    # (batch_size, heads, conv_out_size*conv_out_size, key_size)\\n\",\n        \"    keys_t = tf.transpose(keys, perm=[0, 2, 3, 1])\\n\",\n        \"    # (batch_size, heads, key_size, conv_out_size*conv_out_size)\\n\",\n        \"    att = tf.nn.softmax(tf.matmul(queries_t, keys_t))\\n\",\n        \"    # (batch_size, heads, conv_out_size^2, conv_out_size^2)\\n\",\n        \"\\n\",\n        \"    # Apply attention weights to values\\n\",\n        \"    values_t = tf.transpose(values, perm=[0, 2, 1, 3])\\n\",\n        \"    # (batch_size, heads, conv_out_size*conv_out_size, value_size)\\n\",\n        \"    values_out = tf.matmul(att, values_t)\\n\",\n        \"    # (batch_size, heads, conv_out_size*conv_out_size, value_size)\\n\",\n        \"\\n\",\n        \"    # Compute self-attention head output\\n\",\n        \"    central_out = snt.Flatten()(tf.squeeze(self.central_output(values_out)))\\n\",\n        \"    # (batch_size, heads*value_size)\\n\",\n        \"\\n\",\n        \"    # Append task id\\n\",\n        \"    central_out_plus = tf.concat([central_out, tasks], 1)\\n\",\n        \"\\n\",\n        \"    # Apply output network\\n\",\n        \"    hidden_activations = tf.nn.relu(self.output_hidden(central_out_plus))\\n\",\n        \"    output = self.output(hidden_activations)\\n\",\n        \"\\n\",\n        \"    return output\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"F-Xv4cwLs5NC\"\n      },\n      \"source\": [\n        \"## Training\\n\",\n        \"\\n\",\n        \"We now define functions for calculating the accuracy, loss, and gradients of our\\n\",\n        \"model, as well as the training function. The training function takes a model and\\n\",\n        \"a task name, draws batches from the training set (pentos) to train, and from the\\n\",\n        \"validation set (hexos) to report progress periodically. The model is trained\\n\",\n        \"with a learning rate of `0.01` using the `GradientDescentOptimizer`.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"OXAgc6k_RQXf\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def accuracy(y, y_labels):\\n\",\n        \"  \\\"\\\"\\\"Returns the average accuracy between model predictions and labels.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    y: a tensor (batch_size, NUM_CLASSES) containing the model predictions.\\n\",\n        \"    y_labels: a tensor of size (batch_size, NUM_CLASSES) containing 1-hot\\n\",\n        \"      embeddings of the labels.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_labels, 1))\\n\",\n        \"\\n\",\n        \"  return tf.reduce_mean(tf.cast(correct_prediction, tf.float32))\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def loss(y, y_labels):\\n\",\n        \"  \\\"\\\"\\\"Returns the cross entropy loss between the predictions and the labels.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    y: a tensor (batch_size, NUM_CLASSES) containing the model predictions.\\n\",\n        \"    y_labels: a tensor of size (batch_size, NUM_CLASSES) containing 1-hot\\n\",\n        \"      embeddings of the labels.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    cross_entropy: A tensor containing the average cross entropy between the\\n\",\n        \"      predictions and the model.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  cross_entropy = tf.reduce_mean(\\n\",\n        \"      tf.nn.softmax_cross_entropy_with_logits(logits=y, labels=y_labels))\\n\",\n        \"  return cross_entropy\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def grad(model, x, tasks, y_labels, batch_size, variable_list):\\n\",\n        \"  \\\"\\\"\\\"Compute the gradients of the loss wirht respect the the model parameters.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    model: An instance of the model being trained.\\n\",\n        \"    x: tensor. Input images of size (batch_size, RESOLUTION, RESOLUTION, 3).\\n\",\n        \"    tasks: tensor. List of task sizes of size (batch_size, NUM_TASKS).\\n\",\n        \"    y_labels: a tensor of size (batch_size, NUM_CLASSES) containing 1-hot\\n\",\n        \"      embeddings of the labels.\\n\",\n        \"    batch_size: scalar (int). The number of samples in the batch.\\n\",\n        \"    variable_list: list. Contains all the variables to be updated.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    A list of Tensors containing the gradients for each of the variables in the\\n\",\n        \"      variable_list with respect to the loss.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  with tf.GradientTape() as tape:\\n\",\n        \"    y = model(x=x, tasks=tasks, batch_size=batch_size)\\n\",\n        \"    loss_value = loss(y, y_labels)\\n\",\n        \"  return tape.gradient(loss_value, variable_list)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def train_model(model, task_name, variable_list, epsilon=0.01):\\n\",\n        \"  \\\"\\\"\\\"Trains the given model on the given dataset.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    model: An instance of the model to be trained.\\n\",\n        \"    task_name: string. The name of the task to train on.\\n\",\n        \"    variable_list: list. Contains all the variables to be updated.\\n\",\n        \"    epsilon: float. The early stopping threshold.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    A tuple containing the trained model and a list of accuracies during\\n\",\n        \"    training.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  print('Training {0} on {1}\\\\n'.format(model.model_desc, TRAINING_SET_NAME))\\n\",\n        \"\\n\",\n        \"  train_iterations = 100000\\n\",\n        \"  train_batch_size = 10\\n\",\n        \"  valid_batch_size = 250\\n\",\n        \"\\n\",\n        \"  training_set = get_dataset(task_name, TRAINING_SET_NAME, train_batch_size)\\n\",\n        \"  valid_set = iter(\\n\",\n        \"      get_dataset(task_name, VALIDATION_SET_NAME, valid_batch_size))\\n\",\n        \"\\n\",\n        \"  valid_data = next(valid_set)\\n\",\n        \"  x_valid = valid_data[0]\\n\",\n        \"  y_valid_labels = valid_data[2]\\n\",\n        \"  tasks_valid = valid_data[4]\\n\",\n        \"\\n\",\n        \"  optimizer = snt.optimizers.SGD(learning_rate=0.01)\\n\",\n        \"\\n\",\n        \"  # Initial accuracy for reference.\\n\",\n        \"  y_valid = model(x_valid, tasks_valid, valid_batch_size)\\n\",\n        \"  acc = accuracy(y_valid, y_valid_labels)\\n\",\n        \"  accuracies = [acc]\\n\",\n        \"  print('Accuracy for batch 0 {:.3f}\\\\n'.format(acc))\\n\",\n        \"\\n\",\n        \"  converged = False\\n\",\n        \"  for train_iter, train_data in enumerate(training_set.take(train_iterations)):\\n\",\n        \"\\n\",\n        \"    if not converged:\\n\",\n        \"      x_train = train_data[0]\\n\",\n        \"      y_train_labels = train_data[2]\\n\",\n        \"      tasks_train = train_data[4]\\n\",\n        \"      grads = grad(model, x_train, tasks_train, y_train_labels,\\n\",\n        \"                   train_batch_size, variable_list)\\n\",\n        \"      optimizer.apply(grads, variable_list)\\n\",\n        \"\\n\",\n        \"    # Compute accuracy\\n\",\n        \"    if (train_iter + 1) % 500 == 0:\\n\",\n        \"      valid_data = next(valid_set)\\n\",\n        \"      x_valid = valid_data[0]\\n\",\n        \"      y_valid_labels = valid_data[2]\\n\",\n        \"      tasks_valid = valid_data[4]\\n\",\n        \"      y_valid = model(x_valid, tasks_valid, valid_batch_size)\\n\",\n        \"      acc = accuracy(y_valid, y_valid_labels)\\n\",\n        \"      accuracies.append(acc)\\n\",\n        \"      converged = (1 - acc) \\u003c epsilon\\n\",\n        \"\\n\",\n        \"    if (train_iter + 1) % 20000 == 0:\\n\",\n        \"      if not converged:\\n\",\n        \"        print('Accuracy for batch {0} {1:.3f}\\\\n'.format(train_iter + 1, acc))\\n\",\n        \"\\n\",\n        \"  return (model, accuracies)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"jNV52vCl4yLI\"\n      },\n      \"source\": [\n        \"## Testing\\n\",\n        \"\\n\",\n        \"Here we define a function that will test the accuracy of the trained model on a\\n\",\n        \"given task, using the test set (stripes).\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"xKUcjusr3Icn\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def test_model(model, task_name):\\n\",\n        \"  \\\"\\\"\\\"Tests the given (trained) model on the given dataset and prints accuracy.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    model: An instance of the trained model.\\n\",\n        \"    task_name: string. The name of the task to train on.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  print('Testing {0} on {1}'.format(model.model_desc, TEST_SET_NAME))\\n\",\n        \"\\n\",\n        \"  batch_size = 250\\n\",\n        \"\\n\",\n        \"  test_set = iter(get_dataset(task_name, TEST_SET_NAME, batch_size))\\n\",\n        \"  test_data = next(test_set)\\n\",\n        \"\\n\",\n        \"  x_test = test_data[0]\\n\",\n        \"  y_test_labels = test_data[2]\\n\",\n        \"  tasks_test = test_data[4]\\n\",\n        \"\\n\",\n        \"  y_test = model(x_test, tasks_test, batch_size)\\n\",\n        \"\\n\",\n        \"  test_accuracy = accuracy(y_test, y_test_labels)\\n\",\n        \"  print('Accuracy for test set {:.3f}\\\\n'.format(test_accuracy))\\n\",\n        \"\\n\",\n        \"  # Show first 10 samples\\n\",\n        \"  plt.subplots(figsize=(20, 5))\\n\",\n        \"\\n\",\n        \"  for i in range(10):\\n\",\n        \"    image = x_test[i]\\n\",\n        \"    label = tf.argmax(y_test[i])\\n\",\n        \"    task = tf.argmax(tasks_test[i])\\n\",\n        \"\\n\",\n        \"    plt.subplot(1, 10, i + 1)\\n\",\n        \"    show_image(image)\\n\",\n        \"    plt.title('Task {0} label {1}'.format(task, label))\\n\",\n        \"\\n\",\n        \"  plt.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"_bH32LrP4_fF\"\n      },\n      \"source\": [\n        \"## The Multi-task experiment\\n\",\n        \"\\n\",\n        \"Now that all the necesary functions for running the experiment have been\\n\",\n        \"defined, we will create our experiment. In order to assess the benefits of\\n\",\n        \"pre-training, we will be conducting a four-stage experiment. These four stages\\n\",\n        \"are:\\n\",\n        \"\\n\",\n        \"1.  Train model A on target tasks from scratch\\n\",\n        \"2.  Pre-train a new model B on pre-training tasks\\n\",\n        \"3.  Retrain model B on target tasks with input and central network weights\\n\",\n        \"    frozen, and output weights randomised\\n\",\n        \"4.  Retrain on target tasks with input weights only frozen, and central and\\n\",\n        \"    output weights randomised\\n\",\n        \"\\n\",\n        \"What we expect to see is that during the third stage, the model can utilise the\\n\",\n        \"representations learned from the pre-training task, and train on the original\\n\",\n        \"task using fewer samples than when trained on the original task from scratch.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"Vao9Qxcy-4P3\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def multitask_experiment(model_name, tasks, pre_tasks):\\n\",\n        \"  \\\"\\\"\\\"Carries out a four-stage experiment to assess benefits of pre-training.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    model_name: string. Indicates which model is to be evaluated.\\n\",\n        \"    tasks: string. The name of the target task(s) dataset.\\n\",\n        \"    pre_tasks: string. The name of the pre-training tasks dataset.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    model. The final trained model.\\n\",\n        \"    [accs1, accs2, accs3, accs4]. Lists of accuracies during training\\n\",\n        \"    for each of the four stages of the experiment.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  print('\\\\n *** Starting experiment with {} model \\\\n'.format(model_name))\\n\",\n        \"  print('Target task(s): {}'.format(tasks))\\n\",\n        \"  print('Curriculum task(s): {} \\\\n'.format(pre_tasks))\\n\",\n        \"\\n\",\n        \"  # 1. Train on target task(s) without pre-training\\n\",\n        \"  print('\\\\nTARGET TASK(S) WITHOUT PRE-TRAINING\\\\n')\\n\",\n        \"\\n\",\n        \"  if model_name == 'ConvNetMLP1L':\\n\",\n        \"    model = ConvNetMLP1L(\\n\",\n        \"        resolution=RESOLUTION,\\n\",\n        \"        conv_out_size=CONV_OUT_SIZE,\\n\",\n        \"        filter_size=FILTER_SIZE,\\n\",\n        \"        stride=STRIDE,\\n\",\n        \"        channels=NUM_CHANNELS,\\n\",\n        \"        central_output_size=CENTRAL_OUTPUT_SIZE,\\n\",\n        \"        output_hidden_size=8,\\n\",\n        \"        num_classes=NUM_CLASSES,\\n\",\n        \"        num_tasks=NUM_TASKS)\\n\",\n        \"  elif model_name == 'ConvNetMLP2L':\\n\",\n        \"    model = ConvNetMLP2L(\\n\",\n        \"        resolution=RESOLUTION,\\n\",\n        \"        conv_out_size=CONV_OUT_SIZE,\\n\",\n        \"        filter_size=FILTER_SIZE,\\n\",\n        \"        stride=STRIDE,\\n\",\n        \"        channels=NUM_CHANNELS,\\n\",\n        \"        central_hidden_size=CENTRAL_HIDDEN_SIZE,\\n\",\n        \"        central_output_size=CENTRAL_OUTPUT_SIZE,\\n\",\n        \"        output_hidden_size=8,\\n\",\n        \"        num_classes=NUM_CLASSES,\\n\",\n        \"        num_tasks=NUM_TASKS)\\n\",\n        \"  elif model_name == 'RelationNet':\\n\",\n        \"    model = RelationNet(\\n\",\n        \"        resolution=RESOLUTION,\\n\",\n        \"        conv_out_size=CONV_OUT_SIZE,\\n\",\n        \"        filter_size=FILTER_SIZE,\\n\",\n        \"        stride=STRIDE,\\n\",\n        \"        channels=NUM_CHANNELS,\\n\",\n        \"        central_hidden_size=RN_HIDDEN_SIZE,\\n\",\n        \"        central_output_size=CENTRAL_OUTPUT_SIZE,\\n\",\n        \"        output_hidden_size=8,\\n\",\n        \"        num_classes=NUM_CLASSES,\\n\",\n        \"        num_tasks=NUM_TASKS)\\n\",\n        \"  elif model_name == 'SelfAttentionNet':\\n\",\n        \"    model = SelfAttentionNet(\\n\",\n        \"        resolution=RESOLUTION,\\n\",\n        \"        conv_out_size=CONV_OUT_SIZE,\\n\",\n        \"        filter_size=FILTER_SIZE,\\n\",\n        \"        stride=STRIDE,\\n\",\n        \"        channels=NUM_CHANNELS,\\n\",\n        \"        heads=HEADS_SA,\\n\",\n        \"        key_size=16,\\n\",\n        \"        value_size=VALUE_SIZE,\\n\",\n        \"        output_hidden_size=8,\\n\",\n        \"        num_classes=NUM_CLASSES,\\n\",\n        \"        num_tasks=NUM_TASKS)\\n\",\n        \"  elif model_name == 'PrediNet':\\n\",\n        \"    model = PrediNet4MultiTask(\\n\",\n        \"        resolution=RESOLUTION,\\n\",\n        \"        conv_out_size=CONV_OUT_SIZE,\\n\",\n        \"        filter_size=FILTER_SIZE,\\n\",\n        \"        stride=STRIDE,\\n\",\n        \"        channels=NUM_CHANNELS,\\n\",\n        \"        relations=RELATIONS_P,\\n\",\n        \"        heads=HEADS_P,\\n\",\n        \"        key_size=16,\\n\",\n        \"        output_hidden_size=8,\\n\",\n        \"        num_classes=NUM_CLASSES,\\n\",\n        \"        num_tasks=NUM_TASKS)\\n\",\n        \"  else:\\n\",\n        \"    raise ValueError('Model {0} not recognised'.format(model_name))\\n\",\n        \"  # Connect model\\n\",\n        \"  _ = model(\\n\",\n        \"      tf.zeros([10, RESOLUTION, RESOLUTION, 3]), tf.zeros([10, NUM_TASKS]), 10)\\n\",\n        \"  variable_list = model.trainable_variables\\n\",\n        \"  (model, accs1) = train_model(model, tasks, variable_list, epsilon=0.01)\\n\",\n        \"  test_model(model, tasks)\\n\",\n        \"\\n\",\n        \"  # 2. Pre-train on multi-task curriculum\\n\",\n        \"  print('PRE-TRAINING CURRICULUM TASKS\\\\n')\\n\",\n        \"\\n\",\n        \"  if model_name == 'ConvNetMLP1L':\\n\",\n        \"    model = ConvNetMLP1L(\\n\",\n        \"        resolution=RESOLUTION,\\n\",\n        \"        conv_out_size=CONV_OUT_SIZE,\\n\",\n        \"        filter_size=FILTER_SIZE,\\n\",\n        \"        stride=STRIDE,\\n\",\n        \"        channels=NUM_CHANNELS,\\n\",\n        \"        central_output_size=CENTRAL_OUTPUT_SIZE,\\n\",\n        \"        output_hidden_size=8,\\n\",\n        \"        num_classes=NUM_CLASSES,\\n\",\n        \"        num_tasks=NUM_TASKS)\\n\",\n        \"  elif model_name == 'ConvNetMLP2L':\\n\",\n        \"    model = ConvNetMLP2L(\\n\",\n        \"        resolution=RESOLUTION,\\n\",\n        \"        conv_out_size=CONV_OUT_SIZE,\\n\",\n        \"        filter_size=FILTER_SIZE,\\n\",\n        \"        stride=STRIDE,\\n\",\n        \"        channels=NUM_CHANNELS,\\n\",\n        \"        central_hidden_size=CENTRAL_HIDDEN_SIZE,\\n\",\n        \"        central_output_size=CENTRAL_OUTPUT_SIZE,\\n\",\n        \"        output_hidden_size=8,\\n\",\n        \"        num_classes=NUM_CLASSES,\\n\",\n        \"        num_tasks=NUM_TASKS)\\n\",\n        \"  elif model_name == 'RelationNet':\\n\",\n        \"    model = RelationNet(\\n\",\n        \"        resolution=RESOLUTION,\\n\",\n        \"        conv_out_size=CONV_OUT_SIZE,\\n\",\n        \"        filter_size=FILTER_SIZE,\\n\",\n        \"        stride=STRIDE,\\n\",\n        \"        channels=NUM_CHANNELS,\\n\",\n        \"        central_hidden_size=RN_HIDDEN_SIZE,\\n\",\n        \"        central_output_size=CENTRAL_OUTPUT_SIZE,\\n\",\n        \"        output_hidden_size=8,\\n\",\n        \"        num_classes=NUM_CLASSES,\\n\",\n        \"        num_tasks=NUM_TASKS)\\n\",\n        \"  elif model_name == 'SelfAttentionNet':\\n\",\n        \"    model = SelfAttentionNet(\\n\",\n        \"        resolution=RESOLUTION,\\n\",\n        \"        conv_out_size=CONV_OUT_SIZE,\\n\",\n        \"        filter_size=FILTER_SIZE,\\n\",\n        \"        stride=STRIDE,\\n\",\n        \"        channels=NUM_CHANNELS,\\n\",\n        \"        heads=HEADS_SA,\\n\",\n        \"        key_size=16,\\n\",\n        \"        value_size=VALUE_SIZE,\\n\",\n        \"        output_hidden_size=8,\\n\",\n        \"        num_classes=NUM_CLASSES,\\n\",\n        \"        num_tasks=NUM_TASKS)\\n\",\n        \"  elif model_name == 'PrediNet':\\n\",\n        \"    model = PrediNet4MultiTask(\\n\",\n        \"        resolution=RESOLUTION,\\n\",\n        \"        conv_out_size=CONV_OUT_SIZE,\\n\",\n        \"        filter_size=FILTER_SIZE,\\n\",\n        \"        stride=STRIDE,\\n\",\n        \"        channels=NUM_CHANNELS,\\n\",\n        \"        relations=RELATIONS_P,\\n\",\n        \"        heads=HEADS_P,\\n\",\n        \"        key_size=16,\\n\",\n        \"        output_hidden_size=8,\\n\",\n        \"        num_classes=NUM_CLASSES,\\n\",\n        \"        num_tasks=NUM_TASKS)\\n\",\n        \"  else:\\n\",\n        \"    raise ValueError('Model {0} not recognised'.format(model_name))\\n\",\n        \"  # Connect model\\n\",\n        \"  _ = model(\\n\",\n        \"      tf.zeros([10, RESOLUTION, RESOLUTION, 3]), tf.zeros([10, NUM_TASKS]), 10)\\n\",\n        \"  variable_list = model.trainable_variables\\n\",\n        \"  (model, accs2) = train_model(model, pre_tasks, variable_list, epsilon=0.01)\\n\",\n        \"  test_model(model, pre_tasks)\\n\",\n        \"\\n\",\n        \"  # Freeze some weights and reset others\\n\",\n        \"  print('Freezing weights\\\\n')\\n\",\n        \"  variable_list = []  # freeze all weights\\n\",\n        \"\\n\",\n        \"  # 3. Unfreeze output network weights and retrain on target task(s)\\n\",\n        \"  print('TARGET TASK(S) AFTER PRE-TRAINING, INPUT \\u0026 CENTRAL NETS FROZEN\\\\n')\\n\",\n        \"  # Reset output network weights\\n\",\n        \"  model.reinitialise_output_module()\\n\",\n        \"  # Unfreeze output network weights\\n\",\n        \"  variable_list = variable_list + [\\n\",\n        \"      model.output_hidden.w, model.output_hidden.b, model.output.w,\\n\",\n        \"      model.output.b\\n\",\n        \"  ]\\n\",\n        \"  # Retrain model\\n\",\n        \"  (model, accs3) = train_model(model, tasks, variable_list, epsilon=0.01)\\n\",\n        \"  test_model(model, tasks)\\n\",\n        \"\\n\",\n        \"  # 4. Unfreeze central network weights and retrain again\\n\",\n        \"  print('TARGET TASK(S) AFTER PRE-TRAINING, INPUT NET ONLY FROZEN\\\\n')\\n\",\n        \"  # Reset output network weights\\n\",\n        \"  model.reinitialise_output_module()\\n\",\n        \"  # Reset central network weights\\n\",\n        \"  model.reinitialise_central_module()\\n\",\n        \"  # Unfreeze central network weights\\n\",\n        \"  if model_name == 'ConvNetMLP1L':\\n\",\n        \"    variable_list = variable_list + [\\n\",\n        \"        model.central_hidden.w, model.central_hidden.b\\n\",\n        \"    ]\\n\",\n        \"  elif model_name == 'ConvNetMLP2L':\\n\",\n        \"    variable_list = variable_list + [\\n\",\n        \"        model.central_hidden.w, model.central_hidden.b, model.central_output.w,\\n\",\n        \"        model.central_output.b\\n\",\n        \"    ]\\n\",\n        \"  elif model_name == 'RelationNet':\\n\",\n        \"    variable_list = variable_list + [\\n\",\n        \"        model.central_hidden.w, model.central_output.w\\n\",\n        \"    ]\\n\",\n        \"  elif model_name == 'SelfAttentionNet':\\n\",\n        \"    variable_list = variable_list + [\\n\",\n        \"        model.get_keys.w, model.get_queries.w, model.get_values.w,\\n\",\n        \"        model.central_output.w\\n\",\n        \"    ]\\n\",\n        \"  elif model_name == 'PrediNet':\\n\",\n        \"    variable_list = variable_list + [\\n\",\n        \"        model.get_keys.w, model.get_query1.w, model.get_query2.w,\\n\",\n        \"        model.embed_entities.w\\n\",\n        \"    ]\\n\",\n        \"  else:\\n\",\n        \"    raise ValueError('Model {0} not recognised'.format(model_name))\\n\",\n        \"  # Retrain model\\n\",\n        \"  (model, accs4) = train_model(model, tasks, variable_list, epsilon=0.01)\\n\",\n        \"  test_model(model, tasks)\\n\",\n        \"\\n\",\n        \"  return (model, [accs1, accs2, accs3, accs4])\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def plot_multitask_accuracies(model, accuracies):\\n\",\n        \"  \\\"\\\"\\\"Plots the accuracies from the experiments.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    model: An instance of the trained model.\\n\",\n        \"    accuracies: The list of accuracies returned by the experiment.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  ipdp = 500  # iterations per data point\\n\",\n        \"\\n\",\n        \"  # Plot everything\\n\",\n        \"  plt.plot(np.arange(len(accuracies[0])) * ipdp, accuracies[0])\\n\",\n        \"  plt.plot(np.arange(len(accuracies[1])) * ipdp, accuracies[1])\\n\",\n        \"  plt.plot(np.arange(len(accuracies[2])) * ipdp, accuracies[2])\\n\",\n        \"  plt.plot(np.arange(len(accuracies[3])) * ipdp, accuracies[3])\\n\",\n        \"\\n\",\n        \"  # Add title, lables\\n\",\n        \"  plt.title('{} with multi-task pre-training'.format(model.model_desc))\\n\",\n        \"  plt.xlabel('Batches')\\n\",\n        \"  plt.ylabel('Accuracy')\\n\",\n        \"  plt.ylim((0.4, 1.0))\\n\",\n        \"  plt.legend([\\n\",\n        \"      'No pre-training', 'Curriculum tasks', 'Input \\u0026 central net pre-trained',\\n\",\n        \"      'Input net only pre-trained'\\n\",\n        \"  ],\\n\",\n        \"             loc='best')\\n\",\n        \"  plt.grid(False)\\n\",\n        \"  plt.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"1xsRmDRhNcCv\"\n      },\n      \"source\": [\n        \"## Running the experiment\\n\",\n        \"\\n\",\n        \"You can run the experiment with one of the following model names:\\n\",\n        \"\\n\",\n        \"1.  **`'PrediNet'`** - Central module is the PrediNet.\\n\",\n        \"2.  **`'ConvNetMLP1L'`** (baseline). Central module is a single fully-connected\\n\",\n        \"    layer.\\n\",\n        \"3.  **`'ConvNetMLP2L'`** (baseline). Central module is two fully-connected\\n\",\n        \"    layers.\\n\",\n        \"4.  **`'RelationNet'`** (baseline). Central module is a relation net\\n\",\n        \"    [Santoro et al](http://papers.nips.cc/paper/7082-a-simple-neural-network-module-for-relational-reasoning).\\n\",\n        \"5.  **`'SelfAttentionNet'`** (baseline). Central module is a self-attention\\n\",\n        \"    network with the same number of heads as the PrediNet.\\n\",\n        \"\\n\",\n        \"For each name, the appropriate central module will be invoked. The input and\\n\",\n        \"output modules are the same for all of them.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"xRAkQBaiKP-J\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"(trained_model, acc_list) = multitask_experiment('PrediNet', TASKS, PRE_TASKS)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"LK4lXxZduWCI\"\n      },\n      \"source\": [\n        \"And finally let's print the learning curves. If the green curve increase above\\n\",\n        \"chance much earlier than the blue one, there is evidence that the pre-training\\n\",\n        \"task has led to the network learning reusable representations of the input.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 621\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 995,\n          \"status\": \"ok\",\n          \"timestamp\": 1566473797728,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"UhiN-CP80dIm\",\n        \"outputId\": \"0538e0ef-98d6-4d08-abbf-beb3d2ce9eff\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAmQAAAJcCAYAAABXOLh8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsnXeYG+X1th+11UpaabW9F6/7rg02\\ntmENNgZCDDZgwBgSQgmBYEicYBL4hYAhEFowhMBHCDWEQEIJGIMpNhADLgEb997L9t606v374+id\\nGXVpi3cx731de2kljUbTNPPMOc97jszv9/vB4XA4HA6Hwxky5EO9ABwOh8PhcDjfd7gg43A4HA6H\\nwxliuCDjcDgcDofDGWK4IONwOBwOh8MZYrgg43A4HA6HwxliuCDjcDgcDofDGWK4IONwvmPU1NRA\\nJpPB4/EAAObMmYPXXnttiJcqnFtvvRUPPfRQ1PcfeOABXHvttSdwiURuuOEG3HvvvVHff/TRR/Hz\\nn/980JcjdF+eDMTb732dlsM52eGCjMMZBMrLy6HRaJCWloa8vDz87Gc/g8ViGZTvWrVqFX76058C\\nAP75z39CJpPhiSeeCJqmuLgYa9asiTuvgRQIL7zwAu677z4AwJo1a1BcXNzveQ4GkZbtnnvuwd//\\n/veonznnnHNivv9dpby8HKtXr+7XPKT7fSCn5XBOdrgg43AGiY8++ggWiwXbtm3D5s2b8fDDD4dN\\n4/f74fP5BvR7MzMzsXTpUvT29g7ofDnfLbxe74DP82SK5HE4ww0uyDicQaaoqAhz5szBnj17AFB0\\nZcmSJTjrrLOg1Wpx7NgxmEwm3HTTTSgoKEBRURHuvfde4YLq9Xpx5513Ijs7GxUVFfjkk0+C5h8a\\nrRk/fjymT5+Op556KuLy+Hw+PPbYYxg5ciSysrJw1VVXoaurCwBw9tlnAwCMRiPS0tKwYcOGoM86\\nHA5oNBp0dHQAAB5++GEolUpB/N177724/fbbAYhpQavVijlz5qCpqQlpaWlIS0tDU1MTAMDlcuH6\\n66+HXq9HVVUVtmzZEnU7ymQyPPfccxg9ejT0ej3uu+8+HD16FNOnT4fBYMBVV10Fl8sFgCKFM2bM\\nCPv8kSNHgl6Ltmyx0qlLlizB+vXr8atf/QppaWn41a9+BQBYvHgxSkpKYDAYMGXKFKxfv174zKZN\\nmzB16lQYDAbk5eXht7/9bcR5v/feeygvLxeOFSkskvfoo48iOzsb5eXleOONN4T3b7jhBvziF7/A\\n3LlzodPp8NVXX8HpdOLOO+9EaWkp8vLycOutt8Jut0f87uuuuw51dXW45JJLkJaWhscff1yImL7y\\nyisoLS3FeeedBwC48sorkZ+fj/T0dJx99tnYu3dv0HKwdDBb5ieffBK5ubkoKCjAq6++2qdpOzs7\\ncckll8BgMGDatGm49957w/Yxh/NdhgsyDmeQqa+vx8qVKzF58mThtX/961946aWXYDabUVZWhp/+\\n9KdQKpU4cuQItm/fjs8//1wQWS+//DI+/vhjbN++HVu2bMGyZcvifudDDz2Ep556ShBaUp555hl8\\n8MEHWLt2LZqampCRkYFFixYBANatWwcA6OnpgcViwfTp04M+m5qaimnTpmHt2rXC9GVlZfj666+F\\n57NmzQr6jE6nw6pVq1BYWAiLxQKLxYLCwkIAwIcffogf//jH6Onpwbx58wRxE41PP/0UW7duxcaN\\nG/H4449j4cKFeOONN1BfX489e/bgrbfeirttEl22aDzyyCOYOXMmnn32WVgsFjz77LMAgGnTpmHH\\njh3o6urCT37yE1x55ZVwOBwASKwtXrwYvb29OHr0KK666qqw+b766qu46667sHr1akyYMCHid7e0\\ntKCjowONjY147bXXsHDhQhw8eFB4/80338SSJUtgNpsxY8YM3HXXXTh06BB27NiBI0eOoLGxEQ8+\\n+GDEef/rX/9CaWmpENn93e9+J7y3du1a7N+/H5999hkA8i0ePnwYbW1tOO2003DNNddE3V4tLS0w\\nmUxobGzEK6+8gkWLFqG7uzvpaRctWgSdToeWlha89tprw9I3yeH0By7IOJxB4rLLLoPRaMSMGTMw\\na9Ys3HPPPcJ7N9xwA6qqqqBUKtHV1YVVq1bh6aefhk6nQ25uLn7zm9/g7bffBgC88847uP3221FS\\nUoLMzEzcfffdcb970qRJmD17NpYuXRr23osvvohHHnkExcXFUKvVeOCBB7Bs2bKE01GzZs3C2rVr\\n4fF4sGvXLtx2221Yu3YtHA4HNm/ejJkzZya4hYAZM2Zg7ty5UCgUuO6667Bz586Y0991110wGAyo\\nqqrChAkTMHv2bFRUVCA9PR1z5szB9u3bE/7ugebaa69FVlYWlEol7rjjDjidTkEsqVQqHDlyBB0d\\n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\\nzJkz2b9/P+np6UyZMoXf/e53fq9lMpk4fvw4AB06dKh1XC+//DIffvghOp2OMWPGMHfuXA4fPswj\\njzzCuXPnCA0N5b333qNbt25MnTqVyMhIsrKyOH36NC+//DITJ06sNp6YmBi++uorbDYbpaWlrFq1\\nivHjx1NQUIDdbmf27NmMHz++xjHl5uYyZswYhg4dypYtW2jbti0rV67EYrEEHFt+fj6rVq1i06ZN\\nzJ49m88++4xOnTpp55s6dSohISHs3buXM2fO8Je//IVx48axaNEiv3GuX7+eV155hb///e+Ul5cz\\nYcIEnnvuuWpje+edd9Dr9SxZsoQ333yT+fPnExsby65du+jXrx+TJk1ixowZWK1WLBYLCxcuJDU1\\nlY0bN/Lqq6/y5ZdfMmvWLH7++Wd++uknfv75Z2bMmKFlz5YsWcIbb7xBRUUFgwYN4u2330av17Nw\\n4ULmzJlDUlISXbt29dtjNBgkIBNCCHFV2LVrF3v37qVNmzZcd911bN68maFDhwLufSm3b9/OBx98\\nwIwZM/jyyy9rPM/cuXO1D/ZAOnXqxNy5c+nbty/jxo2r8Txff/01X3zxBdu2bSM0NFTb2Hv69Om8\\n8847dOnShW3btvHwww+zfv16AE6dOsV3333HgQMHyMzMZOLEidXGs2jRIrZu3cru3buJjY3F4XCw\\nYsUKIiMjOX/+PIMHDyYzM7PW/XEPHTrExx9/zHvvvccdd9zBZ599xuTJk2scW2Zmpl/wWlVubi6b\\nNm3i8OHDDB8+nB9//BHAb5xr1qzh0KFDbN++HVVVyczM5JtvvuGGG27QzpOSksKDDz5IeHg4jz/+\\nOADz58/n4MGDrF27Fr1ez4ULF/jmm28wGAysXbuWp59+ms8++6zamA4cOMCGDRsoLi4mNTWVhx56\\niB9//JFly5axefNmjEYjDz/8MB999BEjR47kz3/+M9nZ2URFRTF8+PAGb7dVEwnIhBBCNLq6ZrIa\\n08CBA0lOdtdlpqenk5ubqwVkd911l/bfqhmv+ti5cyerV69m165djBo1itjYWIYMGUKnTp04fPiw\\nXxC0du1a7rvvPkJDQwGIjY2lpKSELVu2cPvtt2vHlZeXa1//6le/QqfT0aNHD86cOVPjOEaOHEls\\nrLtljqqqPP3003zzzTfodDpOnDjBmTNnaN26dY3P79ChA+np6QD079+f3Nzci46tNnfccQc6nY4u\\n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\\n/y22FwAAAABJRU5ErkJggg==\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1000x1000 with 1 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"plt.figure(figsize=(10, 10))\\n\",\n        \"plot_multitask_accuracies(trained_model, acc_list)\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"last_runtime\": {\n        \"build_target\": \"//learning/deepmind/dm_python:dm_notebook3\",\n        \"kind\": \"private\"\n      },\n      \"name\": \"PrediNet.ipynb\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1n337yrEPEHP96Otf9JVq2TVunb6y8Bph\",\n          \"timestamp\": 1560424278071\n        },\n        {\n          \"file_id\": \"1kwSIRpWIrMqzlkrXT6oyZPvtOmSvgJEU\",\n          \"timestamp\": 1559065222853\n        },\n        {\n          \"file_id\": \"1vlbYwWbJXfwrHOSpSNNVZ7l4BNP1w4uA\",\n          \"timestamp\": 1553869581767\n        },\n        {\n          \"file_id\": \"1kTHl60edotmMJa6WtxJKDJaFn1G8eaJX\",\n          \"timestamp\": 1549406943984\n        },\n        {\n          \"file_id\": \"1p8XzSnh89yV5PJnYvDQdUcjrGqvdzFH6\",\n          \"timestamp\": 1548458764481\n        },\n        {\n          \"file_id\": \"1NBrElIZ01K3z4SeKIDH8LL3Ta4Z05p1d\",\n          \"timestamp\": 1548411560658\n        },\n        {\n          \"file_id\": \"19gXeyf9a_UVnqs3HvKHkgDJW3CbEjPVd\",\n          \"timestamp\": 1547752992099\n        },\n        {\n          \"file_id\": \"1Vfv-2v-j0kWYdlBpTeF70cHGWNAz0kVU\",\n          \"timestamp\": 1547586988844\n        },\n        {\n          \"file_id\": \"139B5ivXZUuEtA5zVgAgW4ciQFHbwpWqp\",\n          \"timestamp\": 1547225320474\n        }\n      ],\n      \"version\": \"0.3.2\"\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "PrediNet/README.md",
    "content": "# The PrediNet Architecture and Relations Game Datasets\n\nThis repository contains a notebook implementation of the PrediNet architecture,\nas well as the baselines and sample datasets.\n\nThe code was written by Murray Shanahan, Marta Garnelo and Kyriacos Nikiforou.\n\nThe `PrediNet.ipynb` notebook includes an overview of the PrediNet\narchitecture and the code to reproduce the *multi-task experiment* presented in the paper\n[*An Explicitly Relational Neural Network Architecture*](https://arxiv.org/pdf/1905.10307.pdf).\nAdditional details of the model and experiments can be found in the paper.\n\nSix `.npz` files contain downsampled versions of the datasets required to train\nand evaluate the various models on the multi-task experiment. The training set (`*_pentos.npz`),\ncontaining pentominoes, is a NPZ NumPy archive with the following fields:\n\n*  `images`: (50000 x 36 x 36, 3) Images in RGB.\n*  `labels`: (50000 x 2) Labels for the images.\n*  `tasks`:  (50000 x 1) Task ids that denote which relation must hold between the\n   objects in the images.\n\nTwo additional `.npz` files are provided for each task, one with hexominoes (`*_hexos.npz`)\nand one with striped squares (`*_stripes.npz`). These can be used for testing.\n\nThe full Relations Game datasets composed of 250,000 samples for pentominoes - and 50,000 samples\nfor hexominoes and stripes - can be found [here](https://console.cloud.google.com/storage/browser/relations-game-datasets)\n\n## Running the experiments\n\nThe easiest way to run the code is using the publicly available [Colab](https://colab.research.google.com) kernel.\nYou can run simply by clicking on [PrediNet Notebook](https://colab.research.google.com/github/deepmind/deepmind-research/blob/master/PrediNet/PrediNet.ipynb)\n\nColaboratory is a free Jupyter notebook environment provided by Google that requires no setup and runs entirely in the cloud.\nYou will need the following dependencies to run the code, with instructions on how to install them.\nThe code was tested with the versions shown in brackets\n\n*   TensorFlow 2 (2.0.0-rc0 with gpu support) - not installed\nYou can install TensorFlow 2.0 beta version by running the following  command in\nColab:\n\n```\n!pip install \"tensorflow-gpu>=2.0.0rc0\" --pre\n```\n\n*   Sonnet 2 (2.0.0b0) - not installed\nYou can install Sonnet 2 by running the following comment in Colab.\n\n```\n!pip install \"dm-sonnet>=2.0.0b0\" --pre\n```\n\nAlternatively, you can open the `.ipynb` files using\n[Jupyter notebook](http://jupyter.org/install.html). If you do this you will\nalso have to set up a local kernel that includes the libraries above.\n\n## Citing Predicate Networks\n\nIf you use this code in your work, please cite us as follows:\n\nShanahan, M., Nikiforou, K., Creswell, A., Kaplanis, C., Barrett, D.,\n& Garnelo, M. (2019). *An Explicitly Relational Neural Network Architecture*.\narXiv preprint arXiv:1905.10307.\n\n\n## Contact\n\nIf you have any feedback, or would like to get in touch with us, you can reach out to us\nat mshanahan@google.com and knikiforou@google.com.\n\n## Disclaimer\n\nThis is not an officially supported Google product.\n"
  },
  {
    "path": "README.md",
    "content": "# DeepMind Research\n\nThis repository contains implementations and illustrative code to accompany\nDeepMind publications. Along with publishing papers to accompany research\nconducted at DeepMind, we release open-source\n[environments](https://deepmind.com/research/open-source/open-source-environments/),\n[data sets](https://deepmind.com/research/open-source/open-source-datasets/),\nand [code](https://deepmind.com/research/open-source/open-source-code/) to\nenable the broader research community to engage with our work and build upon it,\nwith the ultimate goal of accelerating scientific progress to benefit society.\nFor example, you can build on our implementations of the\n[Deep Q-Network](https://github.com/deepmind/dqn) or\n[Differential Neural Computer](https://github.com/deepmind/dnc), or experiment\nin the same environments we use for our research, such as\n[DeepMind Lab](https://github.com/deepmind/lab) or\n[StarCraft II](https://github.com/deepmind/pysc2).\n\nIf you enjoy building tools, environments, software libraries, and other\ninfrastructure of the kind listed below, you can view open positions to work in\nrelated areas on our [careers page](https://deepmind.com/careers/).\n\nFor a full list of our publications, please see\nhttps://deepmind.com/research/publications/\n\n## Projects\n\n*   [Magnetic control of tokamak plasmas through deep reinforcement learning](fusion_tcv), Nature 2022\n*   [Pushing the Frontiers of Density Functionals by Solving the Fractional Electron Problem](density_functional_approximation_dm21), Science 2021\n*   [Mind the Gap: Assessing Temporal Generalization in Neural Language Models](pitfalls_static_language_models), NeurIPS 2021\n*   [The Difficulty of Passive Learning in Deep Reinforcement Learning](tandem_dqn), NeurIPS 2021\n*   [Skilful precipitation nowcasting using deep generative models of radar](nowcasting), Nature 2021\n*   [Compute-Aided Design as Language](cadl)\n*   [Encoders and ensembles for continual learning](continual_learning)\n*   [Towards mental time travel: a hierarchical memory for reinforcement learning agents](hierarchical_transformer_memory)\n*   [Perceiver IO: A General Architecture for Structured Inputs & Outputs](perceiver)\n*   [Solving Mixed Integer Programs Using Neural Networks](neural_mip_solving)\n*   [A Realistic Simulation Framework for Learning with Label Noise](noisy_label)\n*   [Rapid Task-Solving in Novel Environments](rapid_task_solving), ICLR 2021\n*   [WikiGraphs: A Wikipedia - Knowledge Graph Paired Dataset](wikigraphs), TextGraphs 2021\n*   [Behavior Priors for Efficient Reinforcement Learning](box_arrangement)\n*   [Learning Mesh-Based Simulation with Graph Networks](meshgraphnets), ICLR 2021\n*   [Open Graph Benchmark - Large-Scale Challenge (OGB-LSC)](ogb_lsc)\n*   [Synthetic Returns for Long-Term Credit Assignment](synthetic_returns)\n*   [A Deep Learning Approach for Characterizing Major Galaxy Mergers](galaxy_mergers)\n*   [Better, Faster Fermionic Neural Networks](kfac_ferminet_alpha) (KFAC implementation)\n*   [Object-based attention for spatio-temporal reasoning](object_attention_for_reasoning)\n*   [Effective gene expression prediction from sequence by integrating long-range interactions](enformer)\n*   [Satore: First-order logic saturation with atom rewriting](satore)\n*   [Characterizing signal propagation to close the performance gap in unnormalized ResNets](nfnets), ICLR 2021\n*   [Uncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples](adversarial_robustness)\n*   [Learning rich touch representations through cross-modal self-supervision](cmtouch), CoRL 2020\n*   [Functional Regularisation for Continual Learning](functional_regularisation_for_continual_learning), ICLR 2020\n*   [The Autoencoding Variational Autoencoder](avae), NeurIPS 2020\n*   [Self-Supervised MultiModal Versatile Networks](mmv), NeurIPS 2020\n*   [ODE-GAN: Training GANs by Solving Ordinary Differential Equations](ode_gan), NeurIPS 2020\n*   [Algorithms for Causal Reasoning in Probability Trees](causal_reasoning)\n*   [Gated Linear Networks](gated_linear_networks), NeurIPS 2020\n*   [Value-driven Hindsight Modelling](himo), NeurIPS 2020\n*   [Targeted free energy estimation via learned mappings](learned_free_energy_estimation), Journal of Chemical Physics 2020\n*   [Learning to Simulate Complex Physics with Graph Networks](learning_to_simulate), ICML 2020\n*   [Physically Embedded Planning Problems](physics_planning_games)\n*   [PolyGen: PolyGen: An Autoregressive Generative Model of 3D Meshes](polygen), ICML 2020\n*   [Bootstrap Your Own Latent](byol)\n*   [Catch & Carry: Reusable Neural Controllers for Vision-Guided Whole-Body Tasks](catch_carry), SIGGRAPH 2020\n*   [MEMO: A Deep Network For Flexible Combination Of Episodic Memories](memo), ICLR 2020\n*   [RL Unplugged: Benchmarks for Offline Reinforcement Learning](rl_unplugged)\n*   [Disentangling by Subspace Diffusion (GEOMANCER)](geomancer), NeurIPS 2020\n*   [What can I do here? A theory of affordances in reinforcement learning](affordances_theory), ICML 2020\n*   [Scaling data-driven robotics with reward sketching and batch reinforcement learning](sketchy), RSS 2020\n*   [Path-Specific Counterfactual Fairness](counterfactual_fairness), AAAI 2019\n*   [The Option Keyboard: Combining Skills in Reinforcement Learning](option_keyboard), NeurIPS 2019\n*   [VISR - Fast Task Inference with Variational Intrinsic Successor Features](visr), ICLR 2020\n*   [Unveiling the predictive power of static structure in glassy systems](glassy_dynamics), Nature Physics 2020\n*   [Multi-Object Representation Learning with Iterative Variational Inference (IODINE)](iodine)\n*   [AlphaFold CASP13](alphafold_casp13), Nature 2020\n*   [Unrestricted Adversarial Challenge](unrestricted_advx)\n*   [Hierarchical Probabilistic U-Net (HPU-Net)](hierarchical_probabilistic_unet)\n*   [Training Language GANs from Scratch](scratchgan), NeurIPS 2019\n*   [Temporal Value Transport](tvt), Nature Communications 2019\n*   [Continual Unsupervised Representation Learning (CURL)](curl), NeurIPS 2019\n*   [Unsupervised Learning of Object Keypoints (Transporter)](transporter), NeurIPS 2019\n*   [BigBiGAN](bigbigan), NeurIPS 2019\n*   [Deep Compressed Sensing](cs_gan), ICML 2019\n*   [Side Effects Penalties](side_effects_penalties)\n*   [PrediNet Architecture and Relations Game Datasets](PrediNet)\n*   [Unsupervised Adversarial Training](unsupervised_adversarial_training), NeurIPS 2019\n*   [Graph Matching Networks for Learning the Similarity of Graph Structured\n    Objects](graph_matching_networks), ICML 2019\n*   [REGAL: Transfer Learning for Fast Optimization of Computation Graphs](regal)\n*   [Deep Ensembles: A Loss Landscape Perspective](ensemble_loss_landscape)\n*   [Powerpropagation](powerpropagation)\n*   [Physics Inspired Models](physics_inspired_models)\n\n\n\n## Disclaimer\n\n*This is not an official Google product.*\n"
  },
  {
    "path": "__init__.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n"
  },
  {
    "path": "adversarial_robustness/README.md",
    "content": "# Adversarial Robustness\n\nThis repository contains the code needed to evaluate models trained in\n[Uncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples](https://arxiv.org/abs/2010.03593)\n(Gowal et al., 2020), in\n[Fixing Data Augmentation to Improve Adversarial Robustness](https://arxiv.org/abs/2103.01946)\n(Rebuffi et al., 2021) and in\n[Improving Robustness using Generated Data](https://arxiv.org/abs/2110.09468)\n(Gowal et al., 2021).\n\n\n## Contents\n\nWe have released our top-performing models in two formats compatible with\n[JAX](https://github.com/google/jax) and [PyTorch](https://pytorch.org/).\nThis repository also contains our model definitions.\n\n## Running the code\n\n### Downloading a model\n\nDownload a model from links listed in the following table.\nClean and robust accuracies are measured on the full test set.\nThe robust accuracy is measured using\n[AutoAttack](https://github.com/fra31/auto-attack).\nThe following table contains the models from **Gowal et al., 2020**.\n\n| dataset | norm | radius | architecture | extra data | clean | robust | link |\n|---|:---:|:---:|:---:|:---:|---:|---:|:---:|\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-70-16 | &#x2713; | 91.10% | 65.88% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_with.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_with.pt)\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-28-10 | &#x2713; | 89.48% | 62.80% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn28-10_with.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn28-10_with.pt)\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-70-16 | &#x2717; | 85.29% | 57.20% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_without.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_without.pt)\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-34-20 | &#x2717; | 85.64% | 56.86% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn34-20_without.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn34-20_without.pt)\n| CIFAR-10 | &#8467;<sub>2</sub> | 128 / 255 | WRN-70-16 | &#x2713; | 94.74% | 80.53% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_l2_wrn70-16_with.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_l2_wrn70-16_with.pt)\n| CIFAR-10 | &#8467;<sub>2</sub> | 128 / 255 | WRN-70-16 | &#x2717; | 90.90% | 74.50% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_l2_wrn70-16_without.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_l2_wrn70-16_without.pt)\n| CIFAR-100 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-70-16 | &#x2713; | 69.15% | 36.88% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn70-16_with.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn70-16_with.pt)\n| CIFAR-100 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-70-16 | &#x2717; | 60.86% | 30.03% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn70-16_without.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn70-16_without.pt)\n| MNIST | &#8467;<sub>&infin;</sub> | 0.3 | WRN-28-10 | &#x2717; | 99.26% | 96.34% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/mnist_linf_wrn28-10_without.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/mnist_linf_wrn28-10_without.pt)\n\nThe following table contains the models from **Rebuffi et al., 2021**.\n\n| dataset | norm | radius | architecture | extra data | clean | robust | link |\n|---|:---:|:---:|:---:|:---:|---:|---:|:---:|\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-106-16 | &#x2717; | 88.50% | 64.64% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn106-16_cutmix_ddpm_v2.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn106-16_cutmix_ddpm_v2.pt)\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-70-16 | &#x2717; | 88.54% | 64.25% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_cutmix_ddpm_v2.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_cutmix_ddpm_v2.pt)\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-28-10 | &#x2717; | 87.33% | 60.75% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn28-10_cutmix_ddpm_v2.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn28-10_cutmix_ddpm_v2.pt)\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | ResNet-18 | &#x2717; | 83.53% | 56.66% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_resnet18_ddpm.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_resnet18_ddpm.pt)\n| CIFAR-10 | &#8467;<sub>2</sub> | 128 / 255 | WRN-70-16 | &#x2717; | 92.41% | 80.42% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_l2_wrn70-16_cutmix_ddpm_v2.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_l2_wrn70-16_cutmix_ddpm_v2.pt)\n| CIFAR-10 | &#8467;<sub>2</sub> | 128 / 255 | WRN-28-10 | &#x2717; | 91.79% | 78.80% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_l2_wrn28-10_cutmix_ddpm_v2.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_l2_wrn28-10_cutmix_ddpm_v2.pt)\n| CIFAR-10 | &#8467;<sub>2</sub> | 128 / 255 | ResNet-18 | &#x2717; | 90.33% | 75.86% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_l2_resnet18_cutmix_ddpm.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_l2_resnet18_cutmix_ddpm.pt)\n| CIFAR-100 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-70-16 | &#x2717; | 63.56% | 34.64% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn70-16_cutmix_ddpm.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn70-16_cutmix_ddpm.pt)\n| CIFAR-100 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-28-10 | &#x2717; | 62.41% | 32.06% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn28-10_cutmix_ddpm.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn28-10_cutmix_ddpm.pt)\n| CIFAR-100 | &#8467;<sub>&infin;</sub> | 8 / 255 | ResNet-18 | &#x2717; | 56.87% | 28.50% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_resnet18_ddpm.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_resnet18_ddpm.pt)\n\nThe following table contains additional models from **Gowal et al., 2021**.\n\n| dataset | norm | radius | architecture | extra data | clean | robust | link |\n|---|:---:|:---:|:---:|:---:|---:|---:|:---:|\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-70-16 | &#x2717; | 88.74% | 66.11% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_cutmix_ddpm_100m.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_cutmix_ddpm_100m.pt)\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-70-16 | &#x2717; | 87.50% | 63.44% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn28-10_ddpm_100m.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn28-10_ddpm_100m.pt)\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | ResNet-18 | &#x2717; | 87.35% | 58.63% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_resnet18_ddpm_100m.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_resnet18_ddpm_100m.pt)\n\n### Installing\n\nThe following has been tested using Python 3.9.2.\nUsing `run.sh` will create and activate a virtualenv, install all necessary\ndependencies and run a test program to ensure that you can import all the\nmodules.\n\n```\n# Run from the parent directory.\nsh adversarial_robustness/run.sh\n```\n\nTo run the provided code, use this virtualenv:\n\n```\nsource /tmp/adversarial_robustness_venv/bin/activate\n```\n\nYou may want to edit `requirements.txt` before running `run.sh` if GPU support\nis needed (e.g., use `jaxline==0.1.67+cuda111`). See JAX's installation\n[instructions](https://github.com/google/jax#installation) for more details.\n\n### Using pre-trained models\n\nOnce downloaded, a model can be evaluated by running the `eval.py` script in\neither the `jax` or `pytorch` folders. E.g.:\n\n```\ncd jax\npython3 eval.py \\\n  --ckpt=${PATH_TO_CHECKPOINT} --depth=70 --width=16 --dataset=cifar10\n```\n\nThese models are also directly available within\n[RobustBench](https://github.com/RobustBench/robustbench#model-zoo-quick-tour)'s\nmodel zoo.\n\n### Training your own model\n\nWe also provide a training pipeline that reproduces results from both\npublications. This pipeline uses [Jaxline](https://github.com/deepmind/jaxline)\nand is written using [JAX](https://github.com/google/jax) and\n[Haiku](https://github.com/deepmind/dm-haiku). To train a model, modify the\nconfiguration in the `get_config()` function of `jax/experiment.py` and issue\nthe following command from within the virtualenv created above:\n\n```\ncd jax\npython3 train.py --config=experiment.py\n```\n\nThe training pipeline can run with multiple worker machines and multiple devices\n(either GPU or TPU). See [Jaxline](https://github.com/deepmind/jaxline) for more\ndetails.\n\nWe do not provide a PyTorch implementation of our training pipeline. However,\nyou may find one on GitHub, e.g.,\n[adversarial_robustness_pytorch](https://github.com/imrahulr/adversarial_robustness_pytorch)\n(by Rahul Rade).\n\n## Datasets\n\n### Extracted dataset\n\nGowal et al. (2020) use samples extracted from\n[TinyImages-80M](https://groups.csail.mit.edu/vision/TinyImages/).\nUnfortunately, since then, the official TinyImages-80M dataset has been\nwithdrawn (due to the presence of offensive images). As such, we cannot provide\na download link to our extrated data until we have manually verified that all\nextracted images are not offensive. If you want to reproduce our setup, consider\nthe generated datasets below. We are also happy to help, so feel free to reach\nout to Sven Gowal directly.\n\n### Generated datasets\n\nRebuffi et al. (2021) and Gowal et al. (2021) use samples generated by a\nDenoising Diffusion Probabilistic Model\n[(DDPM; Ho et al., 2020)](https://arxiv.org/abs/2006.11239)\nto improve robustness. The DDPM is solely trained on the original training data\nand does not use additional external data. The following table links to datasets\nof 1M **generated** samples for CIFAR-10, CIFAR-100 and SVHN.\n\n| dataset | model | size | link |\n|---|---|:---:|:---:|\n| CIFAR-10 | DDPM | 1M | [npz](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_ddpm.npz) |\n| CIFAR-100 | DDPM | 1M | [npz](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_ddpm.npz) |\n| SVHN | DDPM | 1M | [npz](https://storage.googleapis.com/dm-adversarial-robustness/svhn_ddpm.npz) |\n\nTo load each dataset, use NumPy. E.g.:\n\n```\nnpzfile = np.load('cifar10_ddpm.npz')\nimages = npzfile['image']\nlabels = npzfile['label']\n```\n\n## Citing this work\n\nIf you use this code (or any derived code), data or these models in your work,\nplease cite the relevant accompanying paper:\n\n```\n@article{gowal2020uncovering,\n  title={Uncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples},\n  author={Gowal, Sven and Qin, Chongli and Uesato, Jonathan and Mann, Timothy and Kohli, Pushmeet},\n  journal={arXiv preprint arXiv:2010.03593},\n  year={2020},\n  url={https://arxiv.org/pdf/2010.03593}\n}\n```\n\nand/or\n\n```\n@article{rebuffi2021fixing,\n  title={Fixing Data Augmentation to Improve Adversarial Robustness},\n  author={Rebuffi, Sylvestre-Alvise and Gowal, Sven and Calian, Dan A. and Stimberg, Florian and Wiles, Olivia and Mann, Timothy},\n  journal={arXiv preprint arXiv:2103.01946},\n  year={2021},\n  url={https://arxiv.org/pdf/2103.01946}\n}\n```\n\nand/or\n\n```\n@article{gowal2021generated,\n  title={Improving Robustness using Generated Data},\n  author={Gowal, Sven and Rebuffi, Sylvestre-Alvise and Wiles, Olivia and Stimberg, Florian and Calian, Dan A. and Mann, Timothy},\n  journal={arXiv preprint arXiv:2110.09468},\n  year={2021},\n  url={https://arxiv.org/pdf/2110.09468}\n}\n```\n\n## Disclaimer\n\nThis is not an official Google product.\n"
  },
  {
    "path": "adversarial_robustness/iclrw2021data/README.md",
    "content": "# Adversarial Robustness\n\nThis repository contains the code needed to evaluate models trained in\n[Data Augmentation Can Improve Robustness](https://storage.googleapis.com/dm-adversarial-robustness/rebuffi2021data.pdf)\nwhich has been accepted at\n[ICLR 2021 Security and Safety in Machine Learning Systems Workshop](https://aisecure-workshop.github.io/aml-iclr2021/).\n\n\n## Contents\n\nWe have released our top-performing models in two formats compatible with\n[JAX](https://github.com/google/jax) and [PyTorch](https://pytorch.org/).\nThis repository also contains our model definitions.\n\n## Running the example code\n\n### Downloading a model\n\nDownload a model from links listed in the following table.\nClean and robust accuracies are measured on the full test set.\nThe robust accuracy is measured using\n[AutoAttack](https://github.com/fra31/auto-attack).\n\n| dataset | norm | radius | architecture | extra data | clean | robust | link |\n|---|:---:|:---:|:---:|:---:|---:|---:|:---:|\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-70-16 | &#x2713; | 92.23% | 66.58% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_cutmix_external.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_cutmix_external.pt)\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-70-16 | &#x2717; | 87.25% | 60.07% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_cutmix.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_cutmix.pt)\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-28-10 | &#x2717; | 86.09% | 57.61% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn28-10_cutmix.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn28-10_cutmix.pt)\n| CIFAR-100 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-70-16 | &#x2717; | 65.76% | 32.43% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn70-16_cutmix.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn70-16_cutmix.pt)\n| CIFAR-100 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-28-10 | &#x2717; | 62.97% | 29.80% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn28-10_cutmix.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn28-10_cutmix.pt)\n\n### Using the model\n\nOnce downloaded, a model can be evaluated (clean accuracy) by running the\n`eval.py` script in either the `jax` or `pytorch` folders. E.g.:\n\n```\ncd jax\npython3 eval.py \\\n  --ckpt=${PATH_TO_CHECKPOINT} --depth=70 --width=16 --dataset=cifar10\n```\n\n\n## Citing this work\n\nIf you use this code or these models in your work, please cite the complete\nversion which combines data augmentation with generated samples:\n\n```\n@article{rebuffi2021fixing,\n  title={Fixing Data Augmentation to Improve Adversarial Robustness},\n  author={Rebuffi, Sylvestre-Alvise and Gowal, Sven and Calian, Dan A. and Stimberg, Florian and Wiles, Olivia and Mann, Timothy},\n  journal={arXiv preprint arXiv:2103.01946},\n  year={2021},\n  url={https://arxiv.org/pdf/2103.01946}\n}\n```\n\n## Disclaimer\n\nThis is not an official Google product.\n"
  },
  {
    "path": "adversarial_robustness/iclrw2021doing/README.md",
    "content": "# Adversarial Robustness\n\nThis repository contains the code needed to evaluate models trained in\n[Doing More with Less: Improving Robustness using Generated Data](https://storage.googleapis.com/dm-adversarial-robustness/gowal2021doing.pdf)\nwhich has been accepted at\n[ICLR 2021 Security and Safety in Machine Learning Systems Workshop](https://aisecure-workshop.github.io/aml-iclr2021/).\n\n\n## Contents\n\nWe have released our top-performing models in two formats compatible with\n[JAX](https://github.com/google/jax) and [PyTorch](https://pytorch.org/).\nThis repository also contains our model definitions.\n\n## Running the example code\n\n### Downloading a model\n\nDownload a model from links listed in the following table.\nClean and robust accuracies are measured on the full test set.\nThe robust accuracy is measured using\n[AutoAttack](https://github.com/fra31/auto-attack).\n\n| dataset | norm | radius | architecture | extra data | clean | robust | link |\n|---|:---:|:---:|:---:|:---:|---:|---:|:---:|\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-70-16 | &#x2717; | 86.94% | 63.62% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_ddpm_v2.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_ddpm_v2.pt)\n| CIFAR-10 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-28-10 | &#x2717; | 85.97% | 60.73% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn28-10_ddpm_v2.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn28-10_ddpm_v2.pt)\n| CIFAR-10 | &#8467;<sub>2</sub> | 8 / 255 | WRN-70-16 | &#x2717; | 90.83% | 78.39% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn70-16_ddpm_v2.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_l2_wrn70-16_ddpm_v2.pt)\n| CIFAR-10 | &#8467;<sub>2</sub> | 8 / 255 | WRN-28-10 | &#x2717; | 90.24% | 77.44% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_linf_wrn28-10_ddpm_v2.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_l2_wrn28-10_ddpm_v2.pt)\n| CIFAR-100 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-70-16 | &#x2717; | 60.46% | 33.49% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn70-16_ddpm.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn70-16_ddpm.pt)\n| CIFAR-100 | &#8467;<sub>&infin;</sub> | 8 / 255 | WRN-28-10 | &#x2717; | 59.18% | 30.81% | [jax](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn28-10_ddpm.npy), [pt](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_linf_wrn28-10_ddpm.pt)\n\n### Using the model\n\nOnce downloaded, a model can be evaluated (clean accuracy) by running the\n`eval.py` script in either the `jax` or `pytorch` folders. E.g.:\n\n```\ncd jax\npython3 eval.py \\\n  --ckpt=${PATH_TO_CHECKPOINT} --depth=70 --width=16 --dataset=cifar10\n```\n\n## Generated datasets\n\nThis work uses samples generated by a Denoising Diffusion\nProbabilistic Model [(DDPM; Ho et al., 2020)](https://arxiv.org/abs/2006.11239)\nto improve robustness. The DDPM is solely trained on the original training data\nand does not use additional external data. The following table links to datasets\nof 1M **generated** samples for CIFAR-10, CIFAR-100 and SVHN.\n\n| dataset | model | size | link |\n|---|---|:---:|:---:|\n| CIFAR-10 | DDPM | 1M | [npz](https://storage.googleapis.com/dm-adversarial-robustness/cifar10_ddpm.npz) |\n| CIFAR-100 | DDPM | 1M | [npz](https://storage.googleapis.com/dm-adversarial-robustness/cifar100_ddpm.npz) |\n| SVHN | DDPM | 1M | [npz](https://storage.googleapis.com/dm-adversarial-robustness/svhn_ddpm.npz) |\n\nTo load each dataset, use NumPy. E.g.:\n\n```\nnpzfile = np.load('cifar10_ddpm.npz')\nimages = npzfile['image']\nlabels = npzfile['label']\n```\n\n## Citing this work\n\nIf you use this code or these models in your work, please cite the complete\nversion which combines data augmentation with generated samples:\n\n```\n@article{rebuffi2021fixing,\n  title={Fixing Data Augmentation to Improve Adversarial Robustness},\n  author={Rebuffi, Sylvestre-Alvise and Gowal, Sven and Calian, Dan A. and Stimberg, Florian and Wiles, Olivia and Mann, Timothy},\n  journal={arXiv preprint arXiv:2103.01946},\n  year={2021},\n  url={https://arxiv.org/pdf/2103.01946}\n}\n```\n\n## Disclaimer\n\nThis is not an official Google product.\n"
  },
  {
    "path": "adversarial_robustness/jax/attacks.py",
    "content": "# Copyright 2021 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Adversarial attacks.\n\nThis file contains all the code necessary to create untargeted adversarial\nattacks in JAX (within an l-infinity ball). For example, to create an untargeted\nFGSM attack (with a single step), one can do the following:\n\n```\nimport attacks\n\nepsilon = 8/255  # Perturbation radius for inputs between 0 and 1.\nfgsm_attack = attacks.UntargetedAttack(\n    attacks.PGD(\n        attacks.IteratedFGSM(epsilon),\n        num_steps=1,\n        initialize_fn=attacks.linf_initialize_fn(epsilon),\n        project_fn=attacks.linf_project_fn(epsilon, bounds=(0., 1.))),\n    loss_fn=attacks.untargeted_cross_entropy)\n```\n\nJust as elegantly, one can specify an adversarial attack on KL-divergence\nto a target distribution (using 10 steps with Adam and a piecewise constant step\nschedule):\n\n```\nkl_attack_with_adam = attacks.UntargetedAttack(\n    attacks.PGD(\n        attacks.Adam(optax.piecewise_constant_schedule(\n            init_value=.1,\n            boundaries_and_scales={5: .1})),\n        num_steps=10,\n        initialize_fn=attacks.linf_initialize_fn(epsilon),\n        project_fn=attacks.linf_project_fn(epsilon, bounds=(0., 1.))),\n    loss_fn=attacks.untargeted_kl_divergence)\n```\n\nThe attack instances can be used later on to build adversarial examples:\n\n```\nmy_model = ...  # Model. We assume that 'my_model(.)' returns logits.\nclean_images, image_labels = ...  # Batch of images and associated labels.\nrng = jax.random.PRNGKey(0)  # A random generator state.\n\nadversarial_images = fgsm_attack(my_model, rng, clean_images, image_labels)\n```\n\nSee `experiment.py` or `eval.py` for more examples.\n\nThis file contains the following components:\n* Losses:\n * untargeted_cross_entropy: minimizes the likelihood of the label class.\n * untargeted_kl_divergence: maximizes the KL-divergence of the predictions with\n   a target distribution.\n * untargeted_margin: maximizes the margin loss (distance from the highest\n   non-true logits to the label class logit)\n* Step optimizers:\n  * SGD: Stochastic Gradient Descent.\n  * IteratedFGSM: Also called BIM (see https://arxiv.org/pdf/1607.02533).\n  * Adam: See https://arxiv.org/pdf/1412.6980.\n* Initialization and projection functions:\n  * linf_initialize_fn: Initialize function for l-infinity attacks.\n  * linf_project_fn: Projection function for l-infinity attacks.\n* Projected Gradient Descent (PGD):\n  * PGD: Runs Projected Gradient Descent using the specified optimizer,\n    initialization and projection functions for a given number of steps.\n* Untargeted attack:\n  * UntargetedAttack: Combines PGD and a specific loss function to find\n    adversarial examples.\n\"\"\"\n\nimport functools\nimport inspect\nfrom typing import Callable, Optional, Tuple, Union\n\nimport chex\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport optax\n\n\nModelFn = Callable[[chex.Array], chex.Array]\nLossFn = Callable[[chex.Array], chex.Array]\nClassificationLossFn = Callable[[chex.Array, chex.Array], chex.Array]\nOptimizeFn = Callable[[LossFn, chex.PRNGKey, chex.Array], chex.Array]\nNormalizeFn = Callable[[chex.Array], chex.Array]\nInitializeFn = Callable[[chex.PRNGKey, chex.Array], chex.Array]\nProjectFn = Callable[[chex.Array, chex.Array], chex.Array]\n\n\ndef untargeted_cross_entropy(logits: chex.Array,\n                             labels: chex.Array) -> chex.Array:\n  \"\"\"Maximize the cross-entropy of the true class (make it less likely).\"\"\"\n  num_classes = logits.shape[-1]\n  log_probs = jax.nn.log_softmax(logits)\n  return jnp.sum(\n      hk.one_hot(labels, num_classes).astype(logits.dtype) * log_probs, axis=-1)\n\n\ndef untargeted_kl_divergence(logits: chex.Array,\n                             label_probs: chex.Array) -> chex.Array:\n  \"\"\"Maximize the KL divergence between logits and label distribution.\"\"\"\n  # We are explicitly maximizing the cross-entropy, as this is equivalent to\n  # maximizing the KL divergence (when `label_probs` does not depend\n  # on the values that produce `logits`).\n  log_probs = jax.nn.log_softmax(logits)\n  return jnp.sum(label_probs * log_probs, axis=-1)\n\n\ndef untargeted_margin(logits: chex.Array,\n                      labels: chex.Array) -> chex.Array:\n  \"\"\"Make the highest non-correct logits higher than the true class logits.\"\"\"\n  batch_size = logits.shape[0]\n  num_classes = logits.shape[-1]\n  label_logits = logits[jnp.arange(batch_size), labels]\n  logit_mask = hk.one_hot(labels, num_classes).astype(logits.dtype)\n  highest_logits = jnp.max(logits - 1e8 * logit_mask, axis=-1)\n  return label_logits - highest_logits\n\n\nclass UntargetedAttack:\n  \"\"\"Performs an untargeted attack.\"\"\"\n\n  def __init__(self,\n               optimize_fn: OptimizeFn,\n               loss_fn: ClassificationLossFn = untargeted_cross_entropy):\n    \"\"\"Creates an untargeted attack.\n\n    Args:\n      optimize_fn: An `Optimizer` instance or any callable that takes\n        a loss function and an initial input and outputs a new input that\n        minimizes the loss function.\n      loss_fn: `loss_fn` is a surrogate loss. Its goal should be make the true\n        class less likely than any other class. Typical options for `loss_fn`\n        are `untargeted_cross_entropy` or `untargeted_margin`.\n    \"\"\"\n    self._optimize_fn = optimize_fn\n    self._loss_fn = loss_fn\n\n  def __call__(self,\n               logits_fn: ModelFn,\n               rng: chex.PRNGKey,\n               inputs: chex.Array,\n               labels: chex.Array) -> chex.Array:\n    \"\"\"Returns adversarial inputs.\"\"\"\n    def _loss_fn(x):\n      return self._loss_fn(logits_fn(x), labels)\n    return self._optimize_fn(_loss_fn, rng, inputs)\n\n  # Convenience functions to detect the type of inputs required by the loss.\n  def expects_labels(self):\n    return 'labels' in inspect.getfullargspec(self._loss_fn).args\n\n  def expects_probabilities(self):\n    return 'label_probs' in inspect.getfullargspec(self._loss_fn).args\n\n\nclass StepOptimizer:\n  \"\"\"Makes a single gradient step that minimizes a loss function.\"\"\"\n\n  def __init__(self,\n               gradient_transformation: optax.GradientTransformation):\n    self._gradient_transformation = gradient_transformation\n\n  def init(self,\n           loss_fn: LossFn,\n           x: chex.Array) -> optax.OptState:\n    self._loss_fn = loss_fn\n    return self._gradient_transformation.init(x)\n\n  def minimize(\n      self,\n      x: chex.Array,\n      state: optax.OptState) -> Tuple[chex.Array, chex.Array, optax.OptState]:\n    \"\"\"Performs a single minimization step.\"\"\"\n    g, loss = gradients_fn(self._loss_fn, x)\n    if g is None:\n      raise ValueError('loss_fn does not depend on input.')\n    updates, state = self._gradient_transformation.update(g, state, x)\n    return optax.apply_updates(x, updates), loss, state\n\n\nclass SGD(StepOptimizer):\n  \"\"\"Vanilla gradient descent optimizer.\"\"\"\n\n  def __init__(self,\n               learning_rate_fn: Union[float, int, optax.Schedule],\n               normalize_fn: Optional[NormalizeFn] = None):\n    # Accept schedules, as well as scalar values.\n    if isinstance(learning_rate_fn, (float, int)):\n      lr = float(learning_rate_fn)\n      learning_rate_fn = lambda _: lr\n    # Normalization.\n    def update_fn(updates, state, params=None):\n      del params\n      updates = jax.tree_map(normalize_fn or (lambda x: x), updates)\n      return updates, state\n    gradient_transformation = optax.chain(\n        optax.GradientTransformation(lambda _: optax.EmptyState(), update_fn),\n        optax.scale_by_schedule(learning_rate_fn),\n        optax.scale(-1.))\n    super(SGD, self).__init__(gradient_transformation)\n\n\nclass IteratedFGSM(SGD):\n  \"\"\"L-infinity normalized steps.\"\"\"\n\n  def __init__(self,\n               learning_rate_fn: Union[float, int, optax.Schedule]):\n    super(IteratedFGSM, self).__init__(learning_rate_fn, jnp.sign)\n\n\nclass Adam(StepOptimizer):\n  \"\"\"The Adam optimizer defined in https://arxiv.org/abs/1412.6980.\"\"\"\n\n  def __init__(\n      self,\n      learning_rate_fn: Union[float, int, optax.Schedule],\n      normalize_fn: Optional[NormalizeFn] = None,\n      beta1: float = .9,\n      beta2: float = .999,\n      epsilon: float = 1e-9):\n    # Accept schedules, as well as scalar values.\n    if isinstance(learning_rate_fn, (float, int)):\n      lr = float(learning_rate_fn)\n      learning_rate_fn = lambda _: lr\n    # Normalization.\n    def update_fn(updates, state, params=None):\n      del params\n      updates = jax.tree_map(normalize_fn or (lambda x: x), updates)\n      return updates, state\n    gradient_transformation = optax.chain(\n        optax.GradientTransformation(lambda _: optax.EmptyState(), update_fn),\n        optax.scale_by_adam(b1=beta1, b2=beta2, eps=epsilon),\n        optax.scale_by_schedule(learning_rate_fn),\n        optax.scale(-1.))\n    super(Adam, self).__init__(gradient_transformation)\n\n\nclass PGD:\n  \"\"\"Runs Project Gradient Descent (see https://arxiv.org/pdf/1706.06083).\"\"\"\n\n  def __init__(self,\n               optimizer: StepOptimizer,\n               num_steps: int,\n               initialize_fn: Optional[InitializeFn] = None,\n               project_fn: Optional[ProjectFn] = None):\n    self._optimizer = optimizer\n    if initialize_fn is None:\n      initialize_fn = lambda rng, x: x\n    self._initialize_fn = initialize_fn\n    if project_fn is None:\n      project_fn = lambda x, origin_x: x\n    self._project_fn = project_fn\n    self._num_steps = num_steps\n\n  def __call__(self,\n               loss_fn: LossFn,\n               rng: chex.PRNGKey,\n               x: chex.Array) -> chex.Array:\n    def _optimize(rng, x):\n      \"\"\"Optimizes loss_fn when keep_best is False.\"\"\"\n      def body_fn(_, inputs):\n        opt_state, current_x = inputs\n        current_x, _, opt_state = self._optimizer.minimize(current_x, opt_state)\n        current_x = self._project_fn(current_x, x)\n        return opt_state, current_x\n      opt_state = self._optimizer.init(loss_fn, x)\n      current_x = self._project_fn(self._initialize_fn(rng, x), x)\n      _, current_x = jax.lax.fori_loop(0, self._num_steps, body_fn,\n                                       (opt_state, current_x))\n      return current_x\n    return jax.lax.stop_gradient(_optimize(rng, x))\n\n\ndef linf_project_fn(epsilon: float, bounds: Tuple[float, float]) -> ProjectFn:\n  def project_fn(x, origin_x):\n    dx = jnp.clip(x - origin_x, -epsilon, epsilon)\n    return jnp.clip(origin_x + dx, bounds[0], bounds[1])\n  return project_fn\n\n\ndef linf_initialize_fn(epsilon: float) -> InitializeFn:\n  def initialize_fn(rng, x):\n    return x + jax.random.uniform(rng, x.shape, minval=-epsilon,\n                                  maxval=epsilon).astype(x.dtype)\n  return initialize_fn\n\n\ndef gradients_fn(loss_fn: LossFn,\n                 x: chex.Array) -> Tuple[chex.Array, chex.Array]:\n  \"\"\"Returns the analytical gradient as computed by `jax.grad`.\"\"\"\n  @functools.partial(jax.grad, has_aux=True)\n  def grad_reduced_loss_fn(x):\n    loss = loss_fn(x)\n    return jnp.sum(loss), loss\n  return grad_reduced_loss_fn(x)\n"
  },
  {
    "path": "adversarial_robustness/jax/datasets.py",
    "content": "# Copyright 2021 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Datasets.\"\"\"\n\nfrom typing import Sequence\n\nimport chex\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\nimport tensorflow.compat.v2 as tf\nimport tensorflow_datasets as tfds\n\n\n_CIFAR10_MEAN = (0.4914, 0.4822, 0.4465)\n_CIFAR10_STD = (0.2471, 0.2435, 0.2616)\n_CIFAR100_MEAN = (0.5071, 0.4865, 0.4409)\n_CIFAR100_STD = (0.2673, 0.2564, 0.2762)\n\n_DATA_URL = 'https://storage.googleapis.com/dm-adversarial-robustness/'\n_ALLOWED_FILES = ('cifar10_ddpm.npz',)\n_WEBPAGE = ('https://github.com/deepmind/deepmind-research/tree/master/'\n            'adversarial_robustness')\n\n\ndef cifar10_preprocess(mode: str = 'train'):\n  \"\"\"Preprocessing functions for CIFAR-10.\"\"\"\n  def _preprocess_fn_train(example):\n    \"\"\"Preprocessing of CIFAR-10 images for training.\"\"\"\n    image = example['image']\n    image = tf.image.convert_image_dtype(image, dtype=tf.float32)\n    image = _random_jitter(image, pad=4, crop=32)\n    image = tf.image.random_flip_left_right(image)\n    label = tf.cast(example['label'], tf.int32)\n    return {'image': image, 'label': label}\n\n  def _preprocess_fn_test(example):\n    \"\"\"Preprocessing of CIFAR-10 images for testing.\"\"\"\n    image = example['image']\n    image = tf.image.convert_image_dtype(image, dtype=tf.float32)\n    label = tf.cast(example['label'], tf.int32)\n    return {'image': image, 'label': label}\n\n  return _preprocess_fn_train if mode == 'train' else _preprocess_fn_test\n\n\ndef cifar10_normalize(image: chex.Array) -> chex.Array:\n  means = jnp.array(_CIFAR10_MEAN, dtype=image.dtype)\n  stds = jnp.array(_CIFAR10_STD, dtype=image.dtype)\n  return (image - means) / stds\n\n\ndef mnist_normalize(image: chex.Array) -> chex.Array:\n  image = jnp.pad(image, ((0, 0), (2, 2), (2, 2), (0, 0)), 'constant',\n                  constant_values=0)\n  return (image - .5) * 2.\n\n\ndef cifar100_normalize(image: chex.Array) -> chex.Array:\n  means = jnp.array(_CIFAR100_MEAN, dtype=image.dtype)\n  stds = jnp.array(_CIFAR100_STD, dtype=image.dtype)\n  return (image - means) / stds\n\n\ndef load_cifar10(batch_sizes: Sequence[int],\n                 subset: str = 'train',\n                 is_training: bool = True,\n                 drop_remainder: bool = True,\n                 repeat: int = 1) -> tf.data.Dataset:\n  \"\"\"Loads CIFAR-10.\"\"\"\n  if subset == 'train':\n    ds = tfds.load(name='cifar10', split=tfds.Split.TRAIN)\n    # In Gowal et al. (https://arxiv.org/abs/2010.03593) and Rebuffi et al.\n    # (https://arxiv.org/abs/2103.01946), we also keep a separate validation\n    # subset for early stopping and would run: ds = ds.skip(1_024).\n  elif subset == 'test':\n    ds = tfds.load(name='cifar10', split=tfds.Split.TEST)\n  else:\n    raise ValueError('Unknown subset: \"{}\"'.format(subset))\n\n  ds = ds.cache()\n  if is_training:\n    ds = ds.repeat()\n    ds = ds.shuffle(buffer_size=50_000, seed=0)\n    ds = _repeat_batch(batch_sizes, ds, repeat=repeat)\n  ds = ds.map(cifar10_preprocess('train' if is_training else 'test'),\n              num_parallel_calls=tf.data.AUTOTUNE)\n  for batch_size in reversed(batch_sizes):\n    ds = ds.batch(batch_size, drop_remainder=drop_remainder)\n  return ds.prefetch(tf.data.AUTOTUNE)\n\n\ndef load_extra(batch_sizes: Sequence[int],\n               path_npz: str,\n               is_training: bool = True,\n               drop_remainder: bool = True) -> tf.data.Dataset:\n  \"\"\"Loads extra data from a given path.\"\"\"\n  if not tf.io.gfile.exists(path_npz):\n    if path_npz in _ALLOWED_FILES:\n      path_npz = tf.keras.utils.get_file(path_npz, _DATA_URL + path_npz)\n    else:\n      raise ValueError(f'Extra data not found ({path_npz}). See {_WEBPAGE} for '\n                       'more details.')\n  with tf.io.gfile.GFile(path_npz, 'rb') as fp:\n    npzfile = np.load(fp)\n    data = {'image': npzfile['image'], 'label': npzfile['label']}\n    with tf.device('/device:cpu:0'):  # Prevent allocation to happen on GPU.\n      ds = tf.data.Dataset.from_tensor_slices(data)\n  ds = ds.cache()\n  if is_training:\n    ds = ds.repeat()\n    ds = ds.shuffle(buffer_size=50_000, seed=jax.host_id())\n  ds = ds.map(cifar10_preprocess('train' if is_training else 'test'),\n              num_parallel_calls=tf.data.AUTOTUNE)\n  for batch_size in reversed(batch_sizes):\n    ds = ds.batch(batch_size, drop_remainder=drop_remainder)\n  return ds.prefetch(tf.data.AUTOTUNE)\n\n\ndef load_dummy_data(batch_sizes: Sequence[int],\n                    is_training: bool = True,\n                    **unused_kwargs) -> tf.data.Dataset:\n  \"\"\"Loads fictive data (use this function when testing).\"\"\"\n  ds = tf.data.Dataset.from_tensor_slices({\n      'image': np.zeros((1, 32, 32, 3), np.float32),\n      'label': np.zeros((1,), np.int32),\n  })\n  ds = ds.repeat()\n  if not is_training:\n    total_batch_size = np.prod(batch_sizes)\n    ds = ds.take(total_batch_size)\n  ds = ds.map(cifar10_preprocess('train' if is_training else 'test'),\n              num_parallel_calls=tf.data.AUTOTUNE)\n  for batch_size in reversed(batch_sizes):\n    ds = ds.batch(batch_size, drop_remainder=True)\n  return ds.prefetch(tf.data.AUTOTUNE)\n\n\ndef _random_jitter(image: tf.Tensor, pad: int, crop: int) -> tf.Tensor:\n  shape = image.shape.as_list()\n  image = tf.pad(image, [[pad, pad], [pad, pad], [0, 0]])\n  image = tf.image.random_crop(image, size=[crop, crop, shape[2]])\n  return image\n\n\ndef _repeat_batch(batch_sizes: Sequence[int],\n                  ds: tf.data.Dataset,\n                  repeat: int = 1) -> tf.data.Dataset:\n  \"\"\"Tiles the inner most batch dimension.\"\"\"\n  if repeat <= 1:\n    return ds\n  if batch_sizes[-1] % repeat != 0:\n    raise ValueError(f'The last element of `batch_sizes` ({batch_sizes}) must '\n                     f'be divisible by `repeat` ({repeat}).')\n  # Perform regular batching with reduced number of elements.\n  for i, batch_size in enumerate(reversed(batch_sizes)):\n    ds = ds.batch(batch_size // repeat if i == 0 else batch_size,\n                  drop_remainder=True)\n  # Repeat batch.\n  fn = lambda x: tf.repeat(x, repeats=repeat, axis=len(batch_sizes) - 1)\n  def repeat_inner_batch(example):\n    return jax.tree_map(fn, example)\n  ds = ds.map(repeat_inner_batch,\n              num_parallel_calls=tf.data.AUTOTUNE)\n  # Unbatch.\n  for _ in batch_sizes:\n    ds = ds.unbatch()\n  return ds\n"
  },
  {
    "path": "adversarial_robustness/jax/eval.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Evaluates a JAX checkpoint on CIFAR-10/100 or MNIST.\"\"\"\n\nimport functools\n\nfrom absl import app\nfrom absl import flags\nimport haiku as hk\nimport numpy as np\nimport optax\nimport tensorflow.compat.v2 as tf\nimport tensorflow_datasets as tfds\nimport tqdm\n\nfrom adversarial_robustness.jax import attacks\nfrom adversarial_robustness.jax import datasets\nfrom adversarial_robustness.jax import model_zoo\n\n_CKPT = flags.DEFINE_string(\n    'ckpt', None, 'Path to checkpoint.')\n_DATASET = flags.DEFINE_enum(\n    'dataset', 'cifar10', ['cifar10', 'cifar100', 'mnist'],\n    'Dataset on which the checkpoint is evaluated.')\n_WIDTH = flags.DEFINE_integer(\n    'width', 16, 'Width of WideResNet.')\n_DEPTH = flags.DEFINE_integer(\n    'depth', 70, 'Depth of WideResNet.')\n_BATCH_SIZE = flags.DEFINE_integer(\n    'batch_size', 100, 'Batch size.')\n_NUM_BATCHES = flags.DEFINE_integer(\n    'num_batches', 0,\n    'Number of batches to evaluate (zero means the whole dataset).')\n\n\ndef main(unused_argv):\n  print(f'Loading \"{_CKPT.value}\"')\n  print(f'Using a WideResNet with depth {_DEPTH.value} and width '\n        f'{_WIDTH.value}.')\n\n  # Create dataset.\n  if _DATASET.value == 'mnist':\n    _, data_test = tf.keras.datasets.mnist.load_data()\n    normalize_fn = datasets.mnist_normalize\n  elif _DATASET.value == 'cifar10':\n    _, data_test = tf.keras.datasets.cifar10.load_data()\n    normalize_fn = datasets.cifar10_normalize\n  else:\n    assert _DATASET.value == 'cifar100'\n    _, data_test = tf.keras.datasets.cifar100.load_data()\n    normalize_fn = datasets.cifar100_normalize\n\n  # Create model.\n  @hk.transform_with_state\n  def model_fn(x, is_training=False):\n    model = model_zoo.WideResNet(\n        num_classes=10, depth=_DEPTH.value, width=_WIDTH.value,\n        activation='swish')\n    return model(normalize_fn(x), is_training=is_training)\n\n  # Build dataset.\n  images, labels = data_test\n  samples = (images.astype(np.float32) / 255.,\n             np.squeeze(labels, axis=-1).astype(np.int64))\n  data = tf.data.Dataset.from_tensor_slices(samples).batch(_BATCH_SIZE.value)\n  test_loader = tfds.as_numpy(data)\n\n  # Load model parameters.\n  rng_seq = hk.PRNGSequence(0)\n  if _CKPT.value == 'dummy':\n    for images, _ in test_loader:\n      break\n    params, state = model_fn.init(next(rng_seq), images, is_training=True)\n    # Reset iterator.\n    test_loader = tfds.as_numpy(data)\n  else:\n    params, state = np.load(_CKPT.value, allow_pickle=True)\n\n  # Create adversarial attack. We run a PGD-40 attack with margin loss.\n  epsilon = 8 / 255\n  eval_attack = attacks.UntargetedAttack(\n      attacks.PGD(\n          attacks.Adam(learning_rate_fn=optax.piecewise_constant_schedule(\n              init_value=.1,\n              boundaries_and_scales={20: .1, 30: .01})),\n          num_steps=40,\n          initialize_fn=attacks.linf_initialize_fn(epsilon),\n          project_fn=attacks.linf_project_fn(epsilon, bounds=(0., 1.))),\n      loss_fn=attacks.untargeted_margin)\n\n  def logits_fn(x, rng):\n    return model_fn.apply(params, state, rng, x)[0]\n\n  # Evaluation.\n  correct = 0\n  adv_correct = 0\n  total = 0\n  batch_count = 0\n  total_batches = min((10_000 - 1) // _BATCH_SIZE.value + 1, _NUM_BATCHES.value)\n  for images, labels in tqdm.tqdm(test_loader, total=total_batches):\n    rng = next(rng_seq)\n    loop_logits_fn = functools.partial(logits_fn, rng=rng)\n\n    # Clean examples.\n    outputs = loop_logits_fn(images)\n    correct += (np.argmax(outputs, 1) == labels).sum().item()\n\n    # Adversarial examples.\n    adv_images = eval_attack(loop_logits_fn, next(rng_seq), images, labels)\n    outputs = loop_logits_fn(adv_images)\n    predicted = np.argmax(outputs, 1)\n    adv_correct += (predicted == labels).sum().item()\n\n    total += labels.shape[0]\n    batch_count += 1\n    if _NUM_BATCHES.value > 0 and batch_count >= _NUM_BATCHES.value:\n      break\n  print(f'Accuracy on the {total} test images: {100 * correct / total:.2f}%')\n  print(f'Robust accuracy: {100 * adv_correct / total:.2f}%')\n\n\nif __name__ == '__main__':\n  flags.mark_flag_as_required('ckpt')\n  try:\n    tf.config.set_visible_devices([], 'GPU')  # Prevent TF from using the GPU.\n  except tf.errors.NotFoundError:\n    pass\n  app.run(main)\n"
  },
  {
    "path": "adversarial_robustness/jax/experiment.py",
    "content": "# Copyright 2021 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"JAXline experiment to perform robust adversarial training.\"\"\"\n\nimport functools\nimport os\nfrom typing import Callable, Optional, Tuple\n\nfrom absl import flags\nfrom absl import logging\nimport chex\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nfrom jaxline import base_config\nfrom jaxline import experiment\nfrom jaxline import utils as jl_utils\nfrom ml_collections import config_dict\nimport numpy as np\nimport optax\nimport tensorflow.compat.v2 as tf\nimport tensorflow_datasets as tfds\n\nfrom adversarial_robustness.jax import attacks\nfrom adversarial_robustness.jax import datasets\nfrom adversarial_robustness.jax import model_zoo\nfrom adversarial_robustness.jax import utils\n\nFLAGS = flags.FLAGS\n\n\ndef get_config():\n  \"\"\"Return config object for training.\"\"\"\n  config = base_config.get_base_config()\n\n  # Batch size, training steps and data.\n  num_classes = 10\n  num_epochs = 400\n  # Gowal et al. (2020) and Rebuffi et al. (2021) use 1024 as batch size.\n  # Reducing this batch size may require further adjustments to the batch\n  # normalization decay or the learning rate. If you have to use a batch size\n  # of 256, reduce the number of emulated workers to 1 (it should match the\n  # results of using a batch size of 1024 with 4 workers).\n  train_batch_size = 1024\n  def steps_from_epochs(n):\n    return max(int(n * 50_000 / train_batch_size), 1)\n  num_steps = steps_from_epochs(num_epochs)\n  test_batch_size = train_batch_size\n  # Specify the path to the downloaded data. You can download data from\n  # https://github.com/deepmind/deepmind-research/tree/master/adversarial_robustness.\n  # If the path is set to \"cifar10_ddpm.npz\" and is not found in the current\n  # directory, the corresponding data will be downloaded.\n  extra_npz = 'cifar10_ddpm.npz'  # Can be `None`.\n\n  # Learning rate.\n  learning_rate = .1 * max(train_batch_size / 256, 1.)\n  learning_rate_warmup = steps_from_epochs(10)\n  use_cosine_schedule = True\n  if use_cosine_schedule:\n    learning_rate_fn = utils.get_cosine_schedule(learning_rate, num_steps,\n                                                 learning_rate_warmup)\n  else:\n    learning_rate_fn = utils.get_step_schedule(learning_rate, num_steps,\n                                               learning_rate_warmup)\n\n  # Model definition.\n  model_ctor = model_zoo.WideResNet\n  model_kwargs = dict(\n      num_classes=num_classes,\n      depth=28,\n      width=10,\n      activation='swish')\n\n  # Attack used during training (can be None).\n  epsilon = 8 / 255\n  train_attack = attacks.UntargetedAttack(\n      attacks.PGD(\n          attacks.Adam(optax.piecewise_constant_schedule(\n              init_value=.1,\n              boundaries_and_scales={5: .1})),\n          num_steps=10,\n          initialize_fn=attacks.linf_initialize_fn(epsilon),\n          project_fn=attacks.linf_project_fn(epsilon, bounds=(0., 1.))),\n      loss_fn=attacks.untargeted_kl_divergence)\n\n  # Attack used during evaluation (can be None).\n  eval_attack = attacks.UntargetedAttack(\n      attacks.PGD(\n          attacks.Adam(learning_rate_fn=optax.piecewise_constant_schedule(\n              init_value=.1,\n              boundaries_and_scales={20: .1, 30: .01})),\n          num_steps=40,\n          initialize_fn=attacks.linf_initialize_fn(epsilon),\n          project_fn=attacks.linf_project_fn(epsilon, bounds=(0., 1.))),\n      loss_fn=attacks.untargeted_margin)\n\n  config.experiment_kwargs = config_dict.ConfigDict(dict(config=dict(\n      epsilon=epsilon,\n      num_classes=num_classes,\n      # Results from various publications use 4 worker machines, which results\n      # in slight differences when using less worker machines. To compensate for\n      # such discrepancies, we emulate these additional workers. Set to zero,\n      # when using more than 4 workers.\n      emulated_workers=4,\n      dry_run=False,\n      save_final_checkpoint_as_npy=True,\n      model=dict(\n          constructor=model_ctor,\n          kwargs=model_kwargs),\n      training=dict(\n          batch_size=train_batch_size,\n          learning_rate=learning_rate_fn,\n          weight_decay=5e-4,\n          swa_decay=.995,\n          use_cutmix=False,\n          supervised_batch_ratio=.3 if extra_npz is not None else 1.,\n          extra_data_path=extra_npz,\n          extra_label_smoothing=.1,\n          attack=train_attack),\n      evaluation=dict(\n          # If `interval` is positive, synchronously evaluate at regular\n          # intervals. Setting it to zero will not evaluate while training,\n          # unless `--jaxline_mode` is set to `train_eval_multithreaded`, which\n          # asynchronously evaluates checkpoints.\n          interval=steps_from_epochs(40),\n          batch_size=test_batch_size,\n          attack=eval_attack),\n  )))\n\n  config.checkpoint_dir = '/tmp/jaxline/robust'\n  config.train_checkpoint_all_hosts = False\n  config.training_steps = num_steps\n  config.interval_type = 'steps'\n  config.log_train_data_interval = steps_from_epochs(.5)\n  config.log_tensors_interval = steps_from_epochs(.5)\n  config.save_checkpoint_interval = steps_from_epochs(40)\n  config.eval_specific_checkpoint_dir = ''\n  return config\n\n\nclass Experiment(experiment.AbstractExperiment):\n  \"\"\"CIFAR-10 experiment.\"\"\"\n\n  CHECKPOINT_ATTRS = {\n      '_params': 'params',\n      '_avg_params': 'avg_params',\n      '_opt_state': 'opt_state',\n      '_state': 'state',\n  }\n\n  def __init__(self, mode, config, init_rng):\n    super().__init__(mode=mode)\n    self.config = config\n\n    self._params = None  # Network weights.\n    self._avg_params = None  # Averaged network weights.\n    self._state = None  # Network state (e.g., batch statistics).\n    self._opt_state = None  # Optimizer state.\n\n    # Build model.\n    self.model = hk.transform_with_state(self._get_model())\n\n    if mode == 'train':\n      self._initialize_training(init_rng)\n      if self.config.evaluation.interval > 0:\n        self._last_evaluation_scalars = {}\n        self._initialize_evaluation()\n    elif mode == 'eval':\n      self._initialize_evaluation()\n    elif mode == 'train_eval_multithreaded':\n      self._initialize_training(init_rng)\n      self._initialize_evaluation()\n    else:\n      raise ValueError(f'Unknown mode: \"{mode}\"')\n\n  #  _             _\n  # | |_ _ __ __ _(_)_ __\n  # | __| '__/ _` | | '_ \\\n  # | |_| | | (_| | | | | |\n  #  \\__|_|  \\__,_|_|_| |_|\n  #\n\n  def step(self, global_step, rng, *unused_args, **unused_kwargs):\n    # Get next inputs.\n    supervised_inputs = next(self.supervised_train_input)\n    if self.extra_train_input is None:\n      extra_inputs = None\n    else:\n      extra_inputs = next(self.extra_train_input)\n\n    # Perform step.\n    (self._params, self._avg_params, self._state, self._opt_state,\n     scalars) = self.train_fn(\n         params=self._params,\n         avg_params=self._avg_params,\n         state=self._state,\n         opt_state=self._opt_state,\n         global_step=global_step,\n         supervised_inputs=supervised_inputs,\n         extra_inputs=extra_inputs,\n         rng=rng)\n    scalars = jl_utils.get_first(scalars)\n\n    # Save final checkpoint.\n    if self.config.save_final_checkpoint_as_npy and not self.config.dry_run:\n      global_step_value = jl_utils.get_first(global_step)\n      if global_step_value == FLAGS.config.get('training_steps', 1) - 1:\n        f_np = lambda x: np.array(jax.device_get(jl_utils.get_first(x)))\n        np_params = jax.tree_map(f_np, self._avg_params or self._params)\n        np_state = jax.tree_map(f_np, self._state)\n        path_npy = os.path.join(FLAGS.config.checkpoint_dir, 'checkpoint.npy')\n        with tf.io.gfile.GFile(path_npy, 'wb') as fp:\n          np.save(fp, (np_params, np_state))\n        logging.info('Saved final checkpoint at %s', path_npy)\n\n    # Run synchronous evaluation.\n    if self.config.evaluation.interval <= 0:\n      return scalars\n\n    global_step_value = jl_utils.get_first(global_step)\n    if (global_step_value % self.config.evaluation.interval != 0 and\n        global_step_value != FLAGS.config.get('training_steps', 1) - 1):\n      return _merge_eval_scalars(scalars, self._last_evaluation_scalars)\n    logging.info('Running synchronous evaluation...')\n    eval_scalars = self.evaluate(global_step, rng)\n    f_list = lambda x: x.tolist() if isinstance(x, jnp.ndarray) else x\n    self._last_evaluation_scalars = jax.tree_map(f_list, eval_scalars)\n    logging.info('(eval) global_step: %d, %s', global_step_value,\n                 self._last_evaluation_scalars)\n    return _merge_eval_scalars(scalars, self._last_evaluation_scalars)\n\n  def _train_fn(self, params, avg_params, state, opt_state, global_step,\n                supervised_inputs, extra_inputs, rng):\n    scalars = {}\n    images, labels, target_probs = self.concatenate(supervised_inputs,\n                                                    extra_inputs)\n\n    # Apply CutMix.\n    if self.config.training.use_cutmix:\n      aug_rng, rng = jax.random.split(rng)\n      images, target_probs = utils.cutmix(aug_rng, images, target_probs,\n                                          split=self._repeat_batch)\n\n    # Perform adversarial attack.\n    if self.config.training.attack is None:\n      adv_images = None\n      grad_fn = jax.grad(self._cross_entropy_loss_fn, has_aux=True)\n    else:\n      attack = self.config.training.attack\n      attack_rng, rng = jax.random.split(rng)\n      def logits_fn(x):\n        x = self.normalize_fn(x)\n        return self.model.apply(params, state, rng, x, is_training=False,\n                                test_local_stats=True)[0]\n      if attack.expects_labels():\n        if self.config.training.use_cutmix:\n          raise ValueError('Use `untargeted_kl_divergence` when using CutMix.')\n        target_labels = labels\n      else:\n        assert attack.expects_probabilities()\n        if self.config.training.use_cutmix:\n          # When using CutMix, regress the attack away from mixed labels.\n          target_labels = target_probs\n        else:\n          target_labels = jax.nn.softmax(logits_fn(images))\n      adv_images = attack(logits_fn, attack_rng, images, target_labels)\n      grad_fn = jax.grad(self._trades_loss_fn, has_aux=True)\n\n    # Compute loss and gradients.\n    scaled_grads, (state, loss_scalars) = grad_fn(\n        params, state, images, adv_images, labels, target_probs, rng)\n    grads = jax.lax.psum(scaled_grads, axis_name='i')\n    scalars.update(loss_scalars)\n\n    updates, opt_state = self.optimizer.update(grads, opt_state, params)\n    params = optax.apply_updates(params, updates)\n\n    # Stochastic weight averaging.\n    if self.config.training.swa_decay > 0:\n      avg_params = utils.ema_update(global_step, avg_params, params,\n                                    decay_rate=self.config.training.swa_decay)\n\n    learning_rate = self.config.training.learning_rate(global_step)\n    scalars['learning_rate'] = learning_rate\n    scalars = jax.lax.pmean(scalars, axis_name='i')\n    return params, avg_params, state, opt_state, scalars\n\n  def _cross_entropy_loss_fn(self, params, state, images, adv_images, labels,\n                             target_probs, rng):\n    scalars = {}\n    images = self.normalize_fn(images)\n    logits, state = self.model.apply(\n        params, state, rng, images, is_training=True)\n    loss = jnp.mean(utils.cross_entropy(logits, target_probs))\n    loss += self.config.training.weight_decay * utils.weight_decay(params)\n    if not self.config.training.use_cutmix:\n      scalars['top_1_acc'] = utils.accuracy(logits, labels)\n    scalars['train_loss'] = loss\n    scaled_loss = loss / jax.device_count()\n    return scaled_loss, (state, scalars)\n\n  def _trades_loss_fn(self, params, state, images, adv_images, labels,\n                      target_probs, rng, beta=6.):\n    \"\"\"Calculates TRADES loss (https://arxiv.org/pdf/1901.08573).\"\"\"\n    scalars = {}\n\n    def apply_fn(x, **norm_kwargs):\n      x = self.normalize_fn(x)\n      return self.model.apply(params, state, rng, x, **norm_kwargs)\n\n    # Clean images.\n    clean_logits, _ = apply_fn(images, is_training=False, test_local_stats=True)\n    if not self.config.training.use_cutmix:\n      scalars['top_1_acc'] = utils.accuracy(clean_logits, labels)\n\n    # Adversarial images. Update BN stats with adversarial images.\n    adv_logits, state = apply_fn(adv_images, is_training=True)\n    if not self.config.training.use_cutmix:\n      scalars['top_1_adv_acc'] = utils.accuracy(adv_logits, labels)\n\n    # Compute loss.\n    clean_loss = jnp.mean(utils.cross_entropy(clean_logits, target_probs))\n    adv_loss = jnp.mean(utils.kl_divergence(adv_logits, clean_logits))\n    reg_loss = self.config.training.weight_decay * utils.weight_decay(params)\n    loss = clean_loss + beta * adv_loss + reg_loss\n    scalars['train_loss'] = loss\n\n    scaled_loss = loss / jax.device_count()\n    return scaled_loss, (state, scalars)\n\n  #                  _\n  #   _____   ____ _| |\n  #  / _ \\ \\ / / _` | |\n  # |  __/\\ V / (_| | |\n  #  \\___| \\_/ \\__,_|_|\n  #\n\n  def evaluate(self, global_step, rng, *unused_args, **unused_kwargs):\n    scalars = self.eval_epoch(self._params, self._state, rng)\n    if self._avg_params:\n      avg_scalars = self.eval_epoch(self._avg_params or self._params,\n                                    self._state, rng)\n      for k, v in avg_scalars.items():\n        scalars[k + '_swa'] = v\n    return scalars\n\n  def eval_epoch(self, params, state, rng):\n    host_id = jax.host_id()\n    num_samples = 0\n    batch_axis = 1\n    summed_scalars = None\n    # Converting to numpy here allows us to reset the generator.\n    eval_input = tfds.as_numpy(self.eval_input)\n    for all_inputs in eval_input:\n      # The inputs are send to multiple workers.\n      inputs = jax.tree_map(lambda x: x[host_id], all_inputs)\n      num_samples += jax.device_count() * inputs['image'].shape[batch_axis]\n      scalars = jl_utils.get_first(self.eval_fn(params, state, inputs, rng))\n      # Accumulate the sum of scalars for each step.\n      scalars = jax.tree_map(lambda x: jnp.sum(x, axis=0), scalars)\n      if summed_scalars is None:\n        summed_scalars = scalars\n      else:\n        summed_scalars = jax.tree_map(jnp.add, summed_scalars, scalars)\n    mean_scalars = jax.tree_map(lambda x: x / num_samples, summed_scalars)\n    return mean_scalars\n\n  def _eval_fn(self, params, state, inputs, rng):\n    images = inputs['image']\n    labels = inputs['label']\n\n    attack_rng, rng = jax.random.split(rng)\n    def logits_fn(x):\n      x = self.normalize_fn(x)\n      return self.model.apply(params, state, rng, x, is_training=False,\n                              test_local_stats=False)[0]\n\n    # Clean accuracy.\n    logits = logits_fn(images)\n    predicted_label = jnp.argmax(logits, axis=-1)\n    correct = jnp.equal(predicted_label, labels).astype(jnp.float32)\n    scalars = {'top_1_acc': correct}\n\n    # Adversarial accuracy.\n    if self.config.evaluation.attack is not None:\n      attack = self.config.evaluation.attack\n      assert attack.expects_labels()\n      adv_images = attack(logits_fn, attack_rng, images, labels)\n      adv_logits = logits_fn(adv_images)\n      predicted_label = jnp.argmax(adv_logits, axis=-1)\n      correct = jnp.equal(predicted_label, labels).astype(jnp.float32)\n      scalars['top_1_adv_acc'] = correct\n\n    # Returned values will be summed and finally divided by num_samples.\n    return jax.lax.psum(scalars, axis_name='i')\n\n  def _initialize_training(self, rng):\n    # Initialize inputs.\n    if self.config.emulated_workers > 0:\n      per_device_workers, ragged = divmod(self.config.emulated_workers,\n                                          jax.host_count())\n      if ragged:\n        raise ValueError('Number of emulated workers must be divisible by the '\n                         'number of physical workers `jax.host_count()`.')\n      self._repeat_batch = per_device_workers\n    else:\n      self._repeat_batch = 1\n    self.supervised_train_input = jl_utils.py_prefetch(\n        self._supervised_train_dataset)\n    if self.config.training.extra_data_path is None:\n      self.extra_train_input = None\n    else:\n      self.extra_train_input = jl_utils.py_prefetch(\n          self._extra_train_dataset)\n    self.normalize_fn = datasets.cifar10_normalize\n\n    # Optimizer.\n    self.optimizer = utils.sgd_momentum(self.config.training.learning_rate,\n                                        momentum=.9, nesterov=True)\n\n    # Initialize parameters.\n    if self._params is None:\n      logging.info('Initializing parameters randomly rather than restoring '\n                   'from checkpoint.')\n      # Create inputs to initialize the network state.\n      images, _, _ = jax.pmap(self.concatenate)(\n          next(self.supervised_train_input),\n          next(self.extra_train_input) if self.extra_train_input is not None\n          else None)\n      images = jax.pmap(self.normalize_fn)(images)\n      # Initialize weights and biases.\n      init_net = jax.pmap(\n          lambda *a: self.model.init(*a, is_training=True), axis_name='i')\n      init_rng = jl_utils.bcast_local_devices(rng)\n      self._params, self._state = init_net(init_rng, images)\n      # Setup weight averaging.\n      if self.config.training.swa_decay > 0:\n        self._avg_params = self._params\n      else:\n        self._avg_params = None\n      # Initialize optimizer state.\n      init_opt = jax.pmap(self.optimizer.init, axis_name='i')\n      self._opt_state = init_opt(self._params)\n\n    # Initialize step function.\n    self.train_fn = jax.pmap(self._train_fn, axis_name='i',\n                             donate_argnums=(0, 1, 2, 3))\n\n  def _initialize_evaluation(self):\n    load_fn = (datasets.load_dummy_data if self.config.dry_run else\n               datasets.load_cifar10)\n    self.eval_input = _dataset(\n        functools.partial(load_fn, subset='test'),\n        is_training=False, total_batch_size=self.config.evaluation.batch_size)\n    self.normalize_fn = datasets.cifar10_normalize\n    self.eval_fn = jax.pmap(self._eval_fn, axis_name='i')\n\n  def _supervised_train_dataset(self) -> tfds.typing.Tree[np.ndarray]:\n    \"\"\"Creates the training dataset.\"\"\"\n    load_fn = (datasets.load_dummy_data if self.config.dry_run else\n               datasets.load_cifar10)\n    load_fn = functools.partial(load_fn, subset='train',\n                                repeat=self._repeat_batch)\n    ds = _dataset(load_fn, is_training=True, repeat=self._repeat_batch,\n                  total_batch_size=self.config.training.batch_size,\n                  ratio=self.config.training.supervised_batch_ratio)\n    return tfds.as_numpy(ds)\n\n  def _extra_train_dataset(self) -> tfds.typing.Tree[np.ndarray]:\n    \"\"\"Creates the training dataset.\"\"\"\n    load_extra_fn = (self.config.training.get('load_extra_fn', None) or\n                     datasets.load_extra)\n    load_fn = datasets.load_dummy_data if self.config.dry_run else load_extra_fn\n    load_fn = functools.partial(\n        load_fn, path_npz=self.config.training.extra_data_path)\n    ds = _dataset(\n        load_fn, is_training=True, repeat=self._repeat_batch,\n        total_batch_size=self.config.training.batch_size,\n        one_minus_ratio=self.config.training.supervised_batch_ratio)\n    return tfds.as_numpy(ds)\n\n  def _get_model(self) -> Callable[..., chex.Array]:\n    config = self.config.model\n    def forward_fn(inputs, **norm_kwargs):\n      model_instance = config.constructor(**config.kwargs.to_dict())\n      return model_instance(inputs, **norm_kwargs)\n    return forward_fn\n\n  def concatenate(\n      self,\n      supervised_inputs: chex.ArrayTree,\n      extra_inputs: chex.ArrayTree\n  ) -> Tuple[chex.Array, chex.Array, chex.Array]:\n    \"\"\"Concatenate inputs.\"\"\"\n    num_classes = self.config.num_classes\n    supervised_images = supervised_inputs['image']\n    supervised_labels = supervised_inputs['label']\n    if extra_inputs is None:\n      images = supervised_images\n      labels = supervised_labels\n      target_probs = hk.one_hot(labels, num_classes)\n    else:\n      extra_images = extra_inputs['image']\n      images = jnp.concatenate([supervised_images, extra_images], axis=0)\n      extra_labels = extra_inputs['label']\n      labels = jnp.concatenate([supervised_labels, extra_labels], axis=0)\n      supervised_one_hot_labels = hk.one_hot(supervised_labels, num_classes)\n      extra_one_hot_labels = hk.one_hot(extra_labels, num_classes)\n      if self.config.training.extra_label_smoothing > 0:\n        pos = 1. - self.config.training.extra_label_smoothing\n        neg = self.config.training.extra_label_smoothing / num_classes\n        extra_one_hot_labels = pos * extra_one_hot_labels + neg\n      target_probs = jnp.concatenate(\n          [supervised_one_hot_labels, extra_one_hot_labels], axis=0)\n    return images, labels, target_probs\n\n\ndef _dataset(load_fn,\n             is_training: bool,\n             total_batch_size: int,\n             ratio: Optional[float] = None,\n             one_minus_ratio: Optional[float] = None,\n             repeat: int = 1) -> tf.data.Dataset:\n  \"\"\"Creates a dataset.\"\"\"\n  num_devices = jax.device_count()\n  per_device_batch_size, ragged = divmod(total_batch_size, num_devices)\n  if ragged:\n    raise ValueError(\n        f'Global batch size {total_batch_size} must be divisible by the '\n        f'total number of devices {num_devices}')\n  if repeat > 1:\n    if per_device_batch_size % repeat:\n      raise ValueError(\n          f'Per device batch size {per_device_batch_size} must be divisible '\n          f'by the number of repeated batches {repeat}')\n    per_device_batch_size //= repeat\n  if ratio is None and one_minus_ratio is None:\n    pass  # Use full batch size.\n  elif one_minus_ratio is None:\n    per_device_batch_size = max(\n        1, min(round(per_device_batch_size * ratio),\n               per_device_batch_size - 1))\n  elif ratio is None:\n    batch_size = max(1, min(round(per_device_batch_size * one_minus_ratio),\n                            per_device_batch_size - 1))\n    per_device_batch_size = per_device_batch_size - batch_size\n  else:\n    raise ValueError('Only one of `ratio` or `one_minus_ratio` must be '\n                     'specified')\n  if repeat > 1:\n    per_device_batch_size *= repeat\n  # When testing, we need to batch data across all devices (not just local\n  # devices).\n  num_local_devices = jax.local_device_count()\n  if is_training:\n    batch_sizes = [num_local_devices, per_device_batch_size]\n  else:\n    num_hosts = jax.host_count()\n    assert num_hosts * num_local_devices == num_devices\n    batch_sizes = [num_hosts, num_local_devices, per_device_batch_size]\n  return load_fn(batch_sizes, is_training=is_training)\n\n\ndef _merge_eval_scalars(a, b):\n  if b is None:\n    return a\n  for k, v in b.items():\n    a['eval_' + k] = v\n  return a\n"
  },
  {
    "path": "adversarial_robustness/jax/experiment_test.py",
    "content": "# Copyright 2021 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Quick script to test that experiment can import and run.\"\"\"\n\nfrom absl import app\nimport jax\nimport jax.numpy as jnp\nfrom jaxline import utils as jl_utils\nfrom adversarial_robustness.jax import experiment\n\n\n@jl_utils.disable_pmap_jit\ndef test_experiment(unused_argv):\n  \"\"\"Tests the main experiment.\"\"\"\n  config = experiment.get_config()\n  exp_config = config.experiment_kwargs.config\n  exp_config.dry_run = True\n  exp_config.emulated_workers = 0\n  exp_config.training.batch_size = 2\n  exp_config.evaluation.batch_size = 2\n  exp_config.model.kwargs.depth = 10\n  exp_config.model.kwargs.width = 1\n\n  xp = experiment.Experiment('train', exp_config, jax.random.PRNGKey(0))\n  bcast = jax.pmap(lambda x: x)\n  global_step = bcast(jnp.zeros(jax.local_device_count()))\n  rng = bcast(jnp.stack([jax.random.PRNGKey(0)] * jax.local_device_count()))\n  print('Taking a single experiment step for test purposes!')\n  result = xp.step(global_step, rng)\n  print(f'Step successfully taken, resulting metrics are {result}')\n\n\nif __name__ == '__main__':\n  app.run(test_experiment)\n"
  },
  {
    "path": "adversarial_robustness/jax/model_zoo.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"WideResNet implementation in JAX using Haiku.\"\"\"\n\nfrom typing import Any, Dict, Optional\n\nimport chex\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\n\n\nclass _WideResNetBlock(hk.Module):\n  \"\"\"Block of a WideResNet.\"\"\"\n\n  def __init__(self, num_filters, stride=1, projection_shortcut=False,\n               activation=jax.nn.relu, norm_args=None, name=None):\n    super().__init__(name=name)\n    num_bottleneck_layers = 1\n    self._activation = activation\n    if norm_args is None:\n      norm_args = {\n          'create_offset': False,\n          'create_scale': True,\n          'decay_rate': .99,\n      }\n    self._bn_modules = []\n    self._conv_modules = []\n    for i in range(num_bottleneck_layers + 1):\n      s = stride if i == 0 else 1\n      self._bn_modules.append(hk.BatchNorm(\n          name='batchnorm_{}'.format(i),\n          **norm_args))\n      self._conv_modules.append(hk.Conv2D(\n          output_channels=num_filters,\n          padding='SAME',\n          kernel_shape=(3, 3),\n          stride=s,\n          with_bias=False,\n          name='conv_{}'.format(i)))  # pytype: disable=not-callable\n    if projection_shortcut:\n      self._shortcut = hk.Conv2D(\n          output_channels=num_filters,\n          kernel_shape=(1, 1),\n          stride=stride,\n          with_bias=False,\n          name='shortcut')  # pytype: disable=not-callable\n    else:\n      self._shortcut = None\n\n  def __call__(self, inputs, **norm_kwargs):\n    x = inputs\n    orig_x = inputs\n    for i, (bn, conv) in enumerate(zip(self._bn_modules, self._conv_modules)):\n      x = bn(x, **norm_kwargs)\n      x = self._activation(x)\n      if self._shortcut is not None and i == 0:\n        orig_x = x\n      x = conv(x)\n    if self._shortcut is not None:\n      shortcut_x = self._shortcut(orig_x)\n      x += shortcut_x\n    else:\n      x += orig_x\n    return x\n\n\nclass WideResNet(hk.Module):\n  \"\"\"WideResNet designed for CIFAR-10.\"\"\"\n\n  def __init__(self,\n               num_classes: int = 10,\n               depth: int = 28,\n               width: int = 10,\n               activation: str = 'relu',\n               norm_args: Optional[Dict[str, Any]] = None,\n               name: Optional[str] = None):\n    super(WideResNet, self).__init__(name=name)\n    if (depth - 4) % 6 != 0:\n      raise ValueError('depth should be 6n+4.')\n    self._activation = getattr(jax.nn, activation)\n    if norm_args is None:\n      norm_args = {\n          'create_offset': True,\n          'create_scale': True,\n          'decay_rate': .99,\n      }\n    self._conv = hk.Conv2D(\n        output_channels=16,\n        kernel_shape=(3, 3),\n        stride=1,\n        with_bias=False,\n        name='init_conv')  # pytype: disable=not-callable\n    self._bn = hk.BatchNorm(\n        name='batchnorm',\n        **norm_args)\n    self._linear = hk.Linear(\n        num_classes,\n        w_init=jnp.zeros,\n        name='logits')\n\n    blocks_per_layer = (depth - 4) // 6\n    filter_sizes = [width * n for n in [16, 32, 64]]\n    self._blocks = []\n    for layer_num, filter_size in enumerate(filter_sizes):\n      blocks_of_layer = []\n      for i in range(blocks_per_layer):\n        stride = 2 if (layer_num != 0 and i == 0) else 1\n        projection_shortcut = (i == 0)\n        blocks_of_layer.append(_WideResNetBlock(\n            num_filters=filter_size,\n            stride=stride,\n            projection_shortcut=projection_shortcut,\n            activation=self._activation,\n            norm_args=norm_args,\n            name='resnet_lay_{}_block_{}'.format(layer_num, i)))\n      self._blocks.append(blocks_of_layer)\n\n  def __call__(self, inputs: chex.Array, **norm_kwargs) -> chex.Array:\n    net = inputs\n    net = self._conv(net)\n\n    # Blocks.\n    for blocks_of_layer in self._blocks:\n      for block in blocks_of_layer:\n        net = block(net, **norm_kwargs)\n    net = self._bn(net, **norm_kwargs)\n    net = self._activation(net)\n\n    net = jnp.mean(net, axis=[1, 2])\n    return self._linear(net)\n"
  },
  {
    "path": "adversarial_robustness/jax/train.py",
    "content": "# Copyright 2021 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Runs a JAXline experiment to perform robust adversarial training.\"\"\"\n\nimport functools\n\nfrom absl import app\nfrom absl import flags\nfrom jaxline import platform\nimport tensorflow.compat.v2 as tf\n\nfrom adversarial_robustness.jax import experiment\n\nif __name__ == '__main__':\n  flags.mark_flag_as_required('config')\n  try:\n    tf.config.set_visible_devices([], 'GPU')  # Prevent TF from using the GPU.\n  except tf.errors.NotFoundError:\n    pass\n  app.run(functools.partial(platform.main, experiment.Experiment))\n"
  },
  {
    "path": "adversarial_robustness/jax/utils.py",
    "content": "# Copyright 2021 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Helper functions.\"\"\"\n\nimport re\nfrom typing import Optional, Sequence, Tuple\n\nimport chex\nimport einops\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport optax\n\n\ndef get_cosine_schedule(\n    max_learning_rate: float,\n    total_steps: int,\n    warmup_steps: int = 0) -> optax.Schedule:\n  \"\"\"Builds a cosine decay schedule with initial warm-up.\"\"\"\n  if total_steps < warmup_steps:\n    return optax.linear_schedule(init_value=0., end_value=max_learning_rate,\n                                 transition_steps=warmup_steps)\n  return optax.join_schedules([\n      optax.linear_schedule(init_value=0., end_value=max_learning_rate,\n                            transition_steps=warmup_steps),\n      optax.cosine_decay_schedule(init_value=max_learning_rate,\n                                  decay_steps=total_steps - warmup_steps),\n  ], [warmup_steps])\n\n\ndef get_step_schedule(\n    max_learning_rate: float,\n    total_steps: int,\n    warmup_steps: int = 0) -> optax.Schedule:\n  \"\"\"Builds a step schedule with initial warm-up.\"\"\"\n  if total_steps < warmup_steps:\n    return optax.linear_schedule(init_value=0., end_value=max_learning_rate,\n                                 transition_steps=warmup_steps)\n  return optax.join_schedules([\n      optax.linear_schedule(init_value=0., end_value=max_learning_rate,\n                            transition_steps=warmup_steps),\n      optax.piecewise_constant_schedule(\n          init_value=max_learning_rate,\n          boundaries_and_scales={total_steps * 2 // 3: .1}),\n  ], [warmup_steps])\n\n\ndef sgd_momentum(learning_rate_fn: optax.Schedule,\n                 momentum: float = 0.,\n                 nesterov: bool = False) -> optax.GradientTransformation:\n  return optax.chain(\n      optax.trace(decay=momentum, nesterov=nesterov),\n      optax.scale_by_schedule(learning_rate_fn),\n      optax.scale(-1.))\n\n\ndef cross_entropy(logits: chex.Array, labels: chex.Array) -> chex.Array:\n  return -jnp.sum(labels * jax.nn.log_softmax(logits), axis=-1)\n\n\ndef kl_divergence(q_logits: chex.Array,\n                  p_logits: chex.Array) -> chex.Array:\n  \"\"\"Compute the KL divergence.\"\"\"\n  p_probs = jax.nn.softmax(p_logits)\n  return cross_entropy(q_logits, p_probs) - cross_entropy(p_logits, p_probs)\n\n\ndef accuracy(logits: chex.Array, labels: chex.Array) -> chex.Array:\n  predicted_label = jnp.argmax(logits, axis=-1)\n  correct = jnp.equal(predicted_label, labels).astype(jnp.float32)\n  return jnp.sum(correct, axis=0) / logits.shape[0]\n\n\ndef weight_decay(params: hk.Params,\n                 regex_match: Optional[Sequence[str]] = None,\n                 regex_ignore: Optional[Sequence[str]] = None) -> chex.Array:\n  \"\"\"Computes the L2 regularization loss.\"\"\"\n  if regex_match is None:\n    regex_match = ('.*w$', '.*b$')\n  if regex_ignore is None:\n    regex_ignore = ('.*batchnorm.*',)\n  l2_norm = 0.\n  for mod_name, mod_params in params.items():\n    for param_name, param in mod_params.items():\n      name = '/'.join([mod_name, param_name])\n      if (regex_match and\n          all(not re.match(regex, name) for regex in regex_match)):\n        continue\n      if (regex_ignore and\n          any(re.match(regex, name) for regex in regex_ignore)):\n        continue\n      l2_norm += jnp.sum(jnp.square(param))\n  return .5 * l2_norm  # pytype: disable=bad-return-type  # numpy-scalars\n\n\ndef ema_update(step: chex.Array,\n               avg_params: chex.ArrayTree,\n               new_params: chex.ArrayTree,\n               decay_rate: float = 0.99,\n               warmup_steps: int = 0,\n               dynamic_decay: bool = True) -> chex.ArrayTree:\n  \"\"\"Applies an exponential moving average.\"\"\"\n  factor = (step >= warmup_steps).astype(jnp.float32)  # pytype: disable=attribute-error  # numpy-scalars\n  if dynamic_decay:\n    # Uses TF-style EMA.\n    delta = step - warmup_steps\n    decay = jnp.minimum(decay_rate, (1. + delta) / (10. + delta))\n  else:\n    decay = decay_rate\n  decay *= factor\n  def _weighted_average(p1, p2):\n    d = decay.astype(p1.dtype)\n    return (1 - d) * p1 + d * p2\n  return jax.tree_map(_weighted_average, new_params, avg_params)\n\n\ndef cutmix(rng: chex.PRNGKey,\n           images: chex.Array,\n           labels: chex.Array,\n           alpha: float = 1.,\n           beta: float = 1.,\n           split: int = 1) -> Tuple[chex.Array, chex.Array]:\n  \"\"\"Composing two images by inserting a patch into another image.\"\"\"\n  batch_size, height, width, _ = images.shape\n  split_batch_size = batch_size // split if split > 1 else batch_size\n\n  # Masking bounding box.\n  box_rng, lam_rng, rng = jax.random.split(rng, num=3)\n  lam = jax.random.beta(lam_rng, a=alpha, b=beta, shape=())\n  cut_rat = jnp.sqrt(1. - lam)\n  cut_w = jnp.array(width * cut_rat, dtype=jnp.int32)\n  cut_h = jnp.array(height * cut_rat, dtype=jnp.int32)\n  box_coords = _random_box(box_rng, height, width, cut_h, cut_w)\n  # Adjust lambda.\n  lam = 1. - (box_coords[2] * box_coords[3] / (height * width))\n  idx = jax.random.permutation(rng, split_batch_size)\n  def _cutmix(x, y):\n    images_a = x\n    images_b = x[idx, :, :, :]\n    y = lam * y + (1. - lam) * y[idx, :]\n    x = _compose_two_images(images_a, images_b, box_coords)\n    return x, y\n\n  if split <= 1:\n    return _cutmix(images, labels)\n\n  # Apply CutMix separately on each sub-batch. This reverses the effect of\n  # `repeat` in datasets.\n  images = einops.rearrange(images, '(b1 b2) ... -> b1 b2 ...', b2=split)\n  labels = einops.rearrange(labels, '(b1 b2) ... -> b1 b2 ...', b2=split)\n  images, labels = jax.vmap(_cutmix, in_axes=1, out_axes=1)(images, labels)\n  images = einops.rearrange(images, 'b1 b2 ... -> (b1 b2) ...', b2=split)\n  labels = einops.rearrange(labels, 'b1 b2 ... -> (b1 b2) ...', b2=split)\n  return images, labels\n\n\ndef _random_box(rng: chex.PRNGKey,\n                height: chex.Numeric,\n                width: chex.Numeric,\n                cut_h: chex.Array,\n                cut_w: chex.Array) -> chex.Array:\n  \"\"\"Sample a random box of shape [cut_h, cut_w].\"\"\"\n  height_rng, width_rng = jax.random.split(rng)\n  i = jax.random.randint(\n      height_rng, shape=(), minval=0, maxval=height, dtype=jnp.int32)\n  j = jax.random.randint(\n      width_rng, shape=(), minval=0, maxval=width, dtype=jnp.int32)\n  bby1 = jnp.clip(i - cut_h // 2, 0, height)\n  bbx1 = jnp.clip(j - cut_w // 2, 0, width)\n  h = jnp.clip(i + cut_h // 2, 0, height) - bby1\n  w = jnp.clip(j + cut_w // 2, 0, width) - bbx1\n  return jnp.array([bby1, bbx1, h, w])\n\n\ndef _compose_two_images(images: chex.Array,\n                        image_permutation: chex.Array,\n                        bbox: chex.Array) -> chex.Array:\n  \"\"\"Inserting the second minibatch into the first at the target locations.\"\"\"\n  def _single_compose_two_images(image1, image2):\n    height, width, _ = image1.shape\n    mask = _window_mask(bbox, (height, width))\n    return image1 * (1. - mask) + image2 * mask\n  return jax.vmap(_single_compose_two_images)(images, image_permutation)\n\n\ndef _window_mask(destination_box: chex.Array,\n                 size: Tuple[int, int]) -> jnp.ndarray:\n  \"\"\"Mask a part of the image.\"\"\"\n  height_offset, width_offset, h, w = destination_box\n  h_range = jnp.reshape(jnp.arange(size[0]), [size[0], 1, 1])\n  w_range = jnp.reshape(jnp.arange(size[1]), [1, size[1], 1])\n  return jnp.logical_and(\n      jnp.logical_and(height_offset <= h_range,\n                      h_range < height_offset + h),\n      jnp.logical_and(width_offset <= w_range,\n                      w_range < width_offset + w)).astype(jnp.float32)\n"
  },
  {
    "path": "adversarial_robustness/pytorch/README.md",
    "content": "# PyTorch evaluation\n\nWe provide PyTorch evaluation code for convenience. If you developed a version\nof our training pipeline for PyTorch, please let us know as we will link it from\nhere.\n\nHere are known PyTorch implementations of our training pipeline:\n\n* https://github.com/imrahulr/adversarial_robustness_pytorch (by Rahul Rade)\n\nHere are few consideration when reproducing our training pipeline in PyTorch.\nAs opposed to the [RST](https://github.com/yaircarmon/semisup-adv) code\n(provided by Carmon et al.):\n\n* We set the batch normalization decay to 0.99 (instead of 0.9).\n* We do not apply weight decay (l2 regularization) to the batch normalization\n  scale and offset\n* We use Haiku's default initialization for all layers (except the last, which\n  is initialized with zeros).\n* The PGD attack used during training uniformly initializes the initial solution\n  over the l-p norm ball.\n* We run the attack over the local batch statistics (rather than the evaluation\n  statistics).\n* We update batch normalization statistics from adversarial examples only (\n  rather than both clean and adversarial examples).\n* We use 10 epochs warm-up to our learning schedule.\n\n\n"
  },
  {
    "path": "adversarial_robustness/pytorch/eval.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Evaluates a PyTorch checkpoint on CIFAR-10/100 or MNIST.\"\"\"\n\nfrom absl import app\nfrom absl import flags\nimport torch\nfrom torch.utils import data\nfrom torchvision import datasets\nfrom torchvision import transforms\nimport tqdm\n\nfrom adversarial_robustness.pytorch import model_zoo\n\n_CKPT = flags.DEFINE_string(\n    'ckpt', None, 'Path to checkpoint.')\n_DATASET = flags.DEFINE_enum(\n    'dataset', 'cifar10', ['cifar10', 'cifar100', 'mnist'],\n    'Dataset on which the checkpoint is evaluated.')\n_WIDTH = flags.DEFINE_integer(\n    'width', 16, 'Width of WideResNet (if set to zero uses a PreActResNet).')\n_DEPTH = flags.DEFINE_integer(\n    'depth', 70, 'Depth of WideResNet or PreActResNet.')\n_USE_CUDA = flags.DEFINE_boolean(\n    'use_cuda', True, 'Whether to use CUDA.')\n_BATCH_SIZE = flags.DEFINE_integer(\n    'batch_size', 100, 'Batch size.')\n_NUM_BATCHES = flags.DEFINE_integer(\n    'num_batches', 0,\n    'Number of batches to evaluate (zero means the whole dataset).')\n\n\ndef main(unused_argv):\n  print(f'Loading \"{_CKPT.value}\"')\n\n  # Create model and dataset.\n  if _WIDTH.value == 0:\n    print(f'Using a PreActResNet with depth {_DEPTH.value}.')\n    model_ctor = model_zoo.PreActResNet\n  else:\n    print(f'Using a WideResNet with depth {_DEPTH.value} and width '\n          f'{_WIDTH.value}.')\n    model_ctor = model_zoo.WideResNet\n  if _DATASET.value == 'mnist':\n    model = model_ctor(\n        num_classes=10, depth=_DEPTH.value, width=_WIDTH.value,\n        activation_fn=model_zoo.Swish, mean=.5, std=.5, padding=2,\n        num_input_channels=1)\n    dataset_fn = datasets.MNIST\n  elif _DATASET.value == 'cifar10':\n    model = model_ctor(\n        num_classes=10, depth=_DEPTH.value, width=_WIDTH.value,\n        activation_fn=model_zoo.Swish, mean=model_zoo.CIFAR10_MEAN,\n        std=model_zoo.CIFAR10_STD)\n    dataset_fn = datasets.CIFAR10\n  else:\n    assert _DATASET.value == 'cifar100'\n    model = model_ctor(\n        num_classes=100, depth=_DEPTH.value, width=_WIDTH.value,\n        activation_fn=model_zoo.Swish, mean=model_zoo.CIFAR100_MEAN,\n        std=model_zoo.CIFAR100_STD)\n    dataset_fn = datasets.CIFAR100\n\n  # Load model.\n  if _CKPT.value != 'dummy':\n    params = torch.load(_CKPT.value)\n    model.load_state_dict(params)\n  if _USE_CUDA.value:\n    model.cuda()\n  model.eval()\n  print('Successfully loaded.')\n\n  # Load dataset.\n  transform_chain = transforms.Compose([transforms.ToTensor()])\n  ds = dataset_fn(root='/tmp/data', train=False, transform=transform_chain,\n                  download=True)\n  test_loader = data.DataLoader(ds, batch_size=_BATCH_SIZE.value, shuffle=False,\n                                num_workers=0)\n\n  # Evaluation.\n  correct = 0\n  total = 0\n  batch_count = 0\n  total_batches = min((10_000 - 1) // _BATCH_SIZE.value + 1, _NUM_BATCHES.value)\n  with torch.no_grad():\n    for images, labels in tqdm.tqdm(test_loader, total=total_batches):\n      outputs = model(images)\n      _, predicted = torch.max(outputs.data, 1)\n      total += labels.size(0)\n      correct += (predicted == labels).sum().item()\n      batch_count += 1\n      if _NUM_BATCHES.value > 0 and batch_count >= _NUM_BATCHES.value:\n        break\n  print(f'Accuracy on the {total} test images: {100 * correct / total:.2f}%')\n\n\nif __name__ == '__main__':\n  flags.mark_flag_as_required('ckpt')\n  app.run(main)\n"
  },
  {
    "path": "adversarial_robustness/pytorch/model_zoo.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"WideResNet and PreActResNet implementations in PyTorch.\"\"\"\n\nfrom typing import Tuple, Union\n\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\n\n\nCIFAR10_MEAN = (0.4914, 0.4822, 0.4465)\nCIFAR10_STD = (0.2471, 0.2435, 0.2616)\nCIFAR100_MEAN = (0.5071, 0.4865, 0.4409)\nCIFAR100_STD = (0.2673, 0.2564, 0.2762)\n\n\nclass _Swish(torch.autograd.Function):\n  \"\"\"Custom implementation of swish.\"\"\"\n\n  @staticmethod\n  def forward(ctx, i):\n    result = i * torch.sigmoid(i)\n    ctx.save_for_backward(i)\n    return result\n\n  @staticmethod\n  def backward(ctx, grad_output):\n    i = ctx.saved_variables[0]\n    sigmoid_i = torch.sigmoid(i)\n    return grad_output * (sigmoid_i * (1 + i * (1 - sigmoid_i)))\n\n\nclass Swish(nn.Module):\n  \"\"\"Module using custom implementation.\"\"\"\n\n  def forward(self, input_tensor):\n    return _Swish.apply(input_tensor)\n\n\nclass _Block(nn.Module):\n  \"\"\"WideResNet Block.\"\"\"\n\n  def __init__(self, in_planes, out_planes, stride, activation_fn=nn.ReLU):\n    super().__init__()\n    self.batchnorm_0 = nn.BatchNorm2d(in_planes)\n    self.relu_0 = activation_fn()\n    # We manually pad to obtain the same effect as `SAME` (necessary when\n    # `stride` is different than 1).\n    self.conv_0 = nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,\n                            padding=0, bias=False)\n    self.batchnorm_1 = nn.BatchNorm2d(out_planes)\n    self.relu_1 = activation_fn()\n    self.conv_1 = nn.Conv2d(out_planes, out_planes, kernel_size=3, stride=1,\n                            padding=1, bias=False)\n    self.has_shortcut = in_planes != out_planes\n    if self.has_shortcut:\n      self.shortcut = nn.Conv2d(in_planes, out_planes, kernel_size=1,\n                                stride=stride, padding=0, bias=False)\n    else:\n      self.shortcut = None\n    self._stride = stride\n\n  def forward(self, x):\n    if self.has_shortcut:\n      x = self.relu_0(self.batchnorm_0(x))\n    else:\n      out = self.relu_0(self.batchnorm_0(x))\n    v = x if self.has_shortcut else out\n    if self._stride == 1:\n      v = F.pad(v, (1, 1, 1, 1))\n    elif self._stride == 2:\n      v = F.pad(v, (0, 1, 0, 1))\n    else:\n      raise ValueError('Unsupported `stride`.')\n    out = self.conv_0(v)\n    out = self.relu_1(self.batchnorm_1(out))\n    out = self.conv_1(out)\n    out = torch.add(self.shortcut(x) if self.has_shortcut else x, out)\n    return out\n\n\nclass _BlockGroup(nn.Module):\n  \"\"\"WideResNet block group.\"\"\"\n\n  def __init__(self, num_blocks, in_planes, out_planes, stride,\n               activation_fn=nn.ReLU):\n    super().__init__()\n    block = []\n    for i in range(num_blocks):\n      block.append(\n          _Block(i == 0 and in_planes or out_planes,\n                 out_planes,\n                 i == 0 and stride or 1,\n                 activation_fn=activation_fn))\n    self.block = nn.Sequential(*block)\n\n  def forward(self, x):\n    return self.block(x)\n\n\nclass WideResNet(nn.Module):\n  \"\"\"WideResNet.\"\"\"\n\n  def __init__(self,\n               num_classes: int = 10,\n               depth: int = 28,\n               width: int = 10,\n               activation_fn: nn.Module = nn.ReLU,\n               mean: Union[Tuple[float, ...], float] = CIFAR10_MEAN,\n               std: Union[Tuple[float, ...], float] = CIFAR10_STD,\n               padding: int = 0,\n               num_input_channels: int = 3):\n    super().__init__()\n    self.mean = torch.tensor(mean).view(num_input_channels, 1, 1)\n    self.std = torch.tensor(std).view(num_input_channels, 1, 1)\n    self.mean_cuda = None\n    self.std_cuda = None\n    self.padding = padding\n    num_channels = [16, 16 * width, 32 * width, 64 * width]\n    assert (depth - 4) % 6 == 0\n    num_blocks = (depth - 4) // 6\n    self.init_conv = nn.Conv2d(num_input_channels, num_channels[0],\n                               kernel_size=3, stride=1, padding=1, bias=False)\n    self.layer = nn.Sequential(\n        _BlockGroup(num_blocks, num_channels[0], num_channels[1], 1,\n                    activation_fn=activation_fn),\n        _BlockGroup(num_blocks, num_channels[1], num_channels[2], 2,\n                    activation_fn=activation_fn),\n        _BlockGroup(num_blocks, num_channels[2], num_channels[3], 2,\n                    activation_fn=activation_fn))\n    self.batchnorm = nn.BatchNorm2d(num_channels[3])\n    self.relu = activation_fn()\n    self.logits = nn.Linear(num_channels[3], num_classes)\n    self.num_channels = num_channels[3]\n\n  def forward(self, x):\n    if self.padding > 0:\n      x = F.pad(x, (self.padding,) * 4)\n    if x.is_cuda:\n      if self.mean_cuda is None:\n        self.mean_cuda = self.mean.cuda()\n        self.std_cuda = self.std.cuda()\n      out = (x - self.mean_cuda) / self.std_cuda\n    else:\n      out = (x - self.mean) / self.std\n    out = self.init_conv(out)\n    out = self.layer(out)\n    out = self.relu(self.batchnorm(out))\n    out = F.avg_pool2d(out, 8)\n    out = out.view(-1, self.num_channels)\n    return self.logits(out)\n\n\nclass _PreActBlock(nn.Module):\n  \"\"\"Pre-activation ResNet Block.\"\"\"\n\n  def __init__(self, in_planes, out_planes, stride, activation_fn=nn.ReLU):\n    super().__init__()\n    self._stride = stride\n    self.batchnorm_0 = nn.BatchNorm2d(in_planes)\n    self.relu_0 = activation_fn()\n    # We manually pad to obtain the same effect as `SAME` (necessary when\n    # `stride` is different than 1).\n    self.conv_2d_1 = nn.Conv2d(in_planes, out_planes, kernel_size=3,\n                               stride=stride, padding=0, bias=False)\n    self.batchnorm_1 = nn.BatchNorm2d(out_planes)\n    self.relu_1 = activation_fn()\n    self.conv_2d_2 = nn.Conv2d(out_planes, out_planes, kernel_size=3, stride=1,\n                               padding=1, bias=False)\n    self.has_shortcut = stride != 1 or in_planes != out_planes\n    if self.has_shortcut:\n      self.shortcut = nn.Conv2d(in_planes, out_planes, kernel_size=3,\n                                stride=stride, padding=0, bias=False)\n\n  def _pad(self, x):\n    if self._stride == 1:\n      x = F.pad(x, (1, 1, 1, 1))\n    elif self._stride == 2:\n      x = F.pad(x, (0, 1, 0, 1))\n    else:\n      raise ValueError('Unsupported `stride`.')\n    return x\n\n  def forward(self, x):\n    out = self.relu_0(self.batchnorm_0(x))\n    shortcut = self.shortcut(self._pad(x)) if self.has_shortcut else x\n    out = self.conv_2d_1(self._pad(out))\n    out = self.conv_2d_2(self.relu_1(self.batchnorm_1(out)))\n    return out + shortcut\n\n\nclass PreActResNet(nn.Module):\n  \"\"\"Pre-activation ResNet.\"\"\"\n\n  def __init__(self,\n               num_classes: int = 10,\n               depth: int = 18,\n               width: int = 0,  # Used to make the constructor consistent.\n               activation_fn: nn.Module = nn.ReLU,\n               mean: Union[Tuple[float, ...], float] = CIFAR10_MEAN,\n               std: Union[Tuple[float, ...], float] = CIFAR10_STD,\n               padding: int = 0,\n               num_input_channels: int = 3):\n    super().__init__()\n    if width != 0:\n      raise ValueError('Unsupported `width`.')\n    self.mean = torch.tensor(mean).view(num_input_channels, 1, 1)\n    self.std = torch.tensor(std).view(num_input_channels, 1, 1)\n    self.mean_cuda = None\n    self.std_cuda = None\n    self.padding = padding\n    self.conv_2d = nn.Conv2d(num_input_channels, 64, kernel_size=3, stride=1,\n                             padding=1, bias=False)\n    if depth == 18:\n      num_blocks = (2, 2, 2, 2)\n    elif depth == 34:\n      num_blocks = (3, 4, 6, 3)\n    else:\n      raise ValueError('Unsupported `depth`.')\n    self.layer_0 = self._make_layer(64, 64, num_blocks[0], 1, activation_fn)\n    self.layer_1 = self._make_layer(64, 128, num_blocks[1], 2, activation_fn)\n    self.layer_2 = self._make_layer(128, 256, num_blocks[2], 2, activation_fn)\n    self.layer_3 = self._make_layer(256, 512, num_blocks[3], 2, activation_fn)\n    self.batchnorm = nn.BatchNorm2d(512)\n    self.relu = activation_fn()\n    self.logits = nn.Linear(512, num_classes)\n\n  def _make_layer(self, in_planes, out_planes, num_blocks, stride,\n                  activation_fn):\n    layers = []\n    for i, stride in enumerate([stride] + [1] * (num_blocks - 1)):\n      layers.append(\n          _PreActBlock(i == 0 and in_planes or out_planes,\n                       out_planes,\n                       stride,\n                       activation_fn))\n    return nn.Sequential(*layers)\n\n  def forward(self, x):\n    if self.padding > 0:\n      x = F.pad(x, (self.padding,) * 4)\n    if x.is_cuda:\n      if self.mean_cuda is None:\n        self.mean_cuda = self.mean.cuda()\n        self.std_cuda = self.std.cuda()\n      out = (x - self.mean_cuda) / self.std_cuda\n    else:\n      out = (x - self.mean) / self.std\n    out = self.conv_2d(out)\n    out = self.layer_0(out)\n    out = self.layer_1(out)\n    out = self.layer_2(out)\n    out = self.layer_3(out)\n    out = self.relu(self.batchnorm(out))\n    out = F.avg_pool2d(out, 4)\n    out = out.view(out.size(0), -1)\n    return self.logits(out)\n"
  },
  {
    "path": "adversarial_robustness/requirements.txt",
    "content": "# Direct dependencies.\nabsl-py==0.12.0\nchex==0.0.7\ndm-haiku==0.0.4\neinops==0.3.0\njax==0.2.16\njaxlib==0.1.68\njaxline==0.0.3\nml-collections==0.1.0\nnumpy==1.19.5\noptax==0.0.8\ntensorflow==2.5.0\ntensorflow-datasets==4.3.0\ntorch==1.9.0\ntorchvision==0.10.0\ntqdm==4.61.1\n# Transitive dependencies.\nastunparse==1.6.3\nattrs==21.2.0\ncachetools==4.2.2\ncertifi==2021.5.30\nchardet==4.0.0\ncontextlib2==21.6.0\ndill==0.3.4\ndm-tree==0.1.6\nflatbuffers==1.12\nfuture==0.18.2\ngast==0.4.0\ngoogle-auth==1.32.0\ngoogle-auth-oauthlib==0.4.4\ngoogle-pasta==0.2.0\ngoogleapis-common-protos==1.53.0\ngrpcio==1.34.1\nh5py==3.1.0\nidna==2.10\nkeras-nightly==2.5.0.dev2021032900\nKeras-Preprocessing==1.1.2\nMarkdown==3.3.4\noauthlib==3.1.1\nopt-einsum==3.3.0\nPillow==8.2.0\npkg-resources==0.0.0\npromise==2.3\nprotobuf==3.17.3\npyasn1==0.4.8\npyasn1-modules==0.2.8\nPyYAML==5.4.1\nrequests==2.25.1\nrequests-oauthlib==1.3.0\nrsa==4.7.2\nscipy==1.7.0\nsix==1.15.0\ntabulate==0.8.9\ntensorboard==2.5.0\ntensorboard-data-server==0.6.1\ntensorboard-plugin-wit==1.8.0\ntensorflow-estimator==2.5.0\ntensorflow-metadata==1.1.0\ntermcolor==1.1.0\ntoolz==0.11.1\ntyping-extensions==3.7.4.3\nurllib3==1.26.6\nWerkzeug==2.0.1\nwrapt==1.12.1\n"
  },
  {
    "path": "adversarial_robustness/run.sh",
    "content": "#!/bin/sh\n# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -euf -o pipefail  # Stop at failure.\n\npython3 -m venv /tmp/adversarial_robustness_venv\nsource /tmp/adversarial_robustness_venv/bin/activate\npip install -U pip\npip install -r adversarial_robustness/requirements.txt\n\npython3 -m adversarial_robustness.jax.eval \\\n  --ckpt=dummy \\\n  --dataset=cifar10 \\\n  --width=1 \\\n  --depth=10 \\\n  --batch_size=1 \\\n  --num_batches=1\n\npython3 -m adversarial_robustness.pytorch.eval \\\n  --ckpt=dummy \\\n  --dataset=cifar10 \\\n  --width=1 \\\n  --depth=10 \\\n  --batch_size=1 \\\n  --num_batches=1 \\\n  --nouse_cuda\n\n# We disable pmap/jit to avoid compilation during testing. Since the\n# test only runs a single step, it would not benefit from such a compilation\n# anyways.\npython3 -m adversarial_robustness.jax.experiment_test \\\n  --jaxline_disable_pmap_jit=True\n"
  },
  {
    "path": "affordances_theory/AffordancesInContinuousEnvironment.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"ya9j9pyzkyBZ\"\n      },\n      \"source\": [\n        \"Copyright 2020 The \\\"What Can I do Here? A Theory of Affordances In Reinforcement Learning\\\" Authors. All rights reserved.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"you may not use this file except in compliance with the License.\\n\",\n        \"You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"     https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software\\n\",\n        \"distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"See the License for the specific language governing permissions and\\n\",\n        \"limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"colab_type\": \"code\",\n        \"id\": \"LbWb35G9UHLO\",\n        \"outputId\": \"280cac1e-76e0-4960-a271-24d351f249bc\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Populating the interactive namespace from numpy and matplotlib\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"%tensorflow_version 2.x\\n\",\n        \"%pylab inline\\n\",\n        \"\\n\",\n        \"# System imports\\n\",\n        \"import copy\\n\",\n        \"import dataclasses\\n\",\n        \"import enum\\n\",\n        \"import itertools\\n\",\n        \"import numpy as np\\n\",\n        \"import operator\\n\",\n        \"import random\\n\",\n        \"import time\\n\",\n        \"from typing import Optional, List, Tuple, Any, Dict, Union, Callable\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# Library imports.\\n\",\n        \"from google.colab import files\\n\",\n        \"from matplotlib import colors\\n\",\n        \"import matplotlib.animation as animation\\n\",\n        \"import matplotlib.pylab as plt\\n\",\n        \"import tensorflow as tf\\n\",\n        \"\\n\",\n        \"import tensorflow_probability as tfp\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"UZV6OS_BUklD\"\n      },\n      \"source\": [\n        \"# Environment Specification\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"Mz4KtBOVUpOV\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Point Class\\n\",\n        \"@dataclasses.dataclass(order=True, frozen=True)\\n\",\n        \"class Point:\\n\",\n        \"  \\\"\\\"\\\"A class representing a point in 2D space.\\n\",\n        \"\\n\",\n        \"  Comes with some convenience functions.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  x: float\\n\",\n        \"  y: float\\n\",\n        \"\\n\",\n        \"  def sum(self):\\n\",\n        \"    return self.x + self.y\\n\",\n        \"\\n\",\n        \"  def l2norm(self):\\n\",\n        \"    \\\"\\\"\\\"Computes the L2 norm of the point.\\\"\\\"\\\"\\n\",\n        \"    return np.sqrt(self.x * self.x + self.y * self.y)\\n\",\n        \"\\n\",\n        \"  def __add__(self, other: 'Point'):\\n\",\n        \"    return Point(self.x + other.x, self.y + other.y)\\n\",\n        \"\\n\",\n        \"  def __sub__(self, other: 'Point'):\\n\",\n        \"    return Point(self.x - other.x, self.y - other.y)\\n\",\n        \"\\n\",\n        \"  def normal_sample_around(self, scale: float):\\n\",\n        \"    \\\"\\\"\\\"Samples a point around the current point based on some noise.\\\"\\\"\\\"\\n\",\n        \"    new_coords = np.random.normal(dataclasses.astuple(self), scale)\\n\",\n        \"    new_coords = new_coords.astype(np.float32)\\n\",\n        \"    return Point(*new_coords)\\n\",\n        \"\\n\",\n        \"  def is_close_to(self, other: 'Point', diff: float = 1e-4):\\n\",\n        \"    \\\"\\\"\\\"Determines if one point is close to another.\\\"\\\"\\\"\\n\",\n        \"    point_diff =  self - other\\n\",\n        \"    if abs(point_diff.x) \\u003c diff and abs(point_diff.y) \\u003c diff:\\n\",\n        \"      return True\\n\",\n        \"    else:\\n\",\n        \"      return False\\n\",\n        \"\\n\",\n        \"# Test the points.\\n\",\n        \"z1 = Point(0.4, 0.1)\\n\",\n        \"assert z1.is_close_to(z1)\\n\",\n        \"assert z1.is_close_to(Point(0.5, 0.0), 1.0)\\n\",\n        \"assert not z1.is_close_to(Point(5.0, 0.0), 1.0)\\n\",\n        \"z2 = Point(0.1, 0.1)\\n\",\n        \"z3 = z1 - z2\\n\",\n        \"assert isinstance(z3, Point)\\n\",\n        \"assert z3.is_close_to(Point(0.3, 0.0))\\n\",\n        \"assert isinstance(z3.normal_sample_around(0.1), Point)\\n\",\n        \"\\n\",\n        \"class Force(Point):\\n\",\n        \"  pass\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# # Intersection code.\\n\",\n        \"# See Sedgewick, Robert, and Kevin Wayne. Algorithms. , 2011.\\n\",\n        \"# Chapter 6.1 on Geometric Primitives\\n\",\n        \"# https://algs4.cs.princeton.edu/91primitives/\\n\",\n        \"def _check_counter_clockwise(a: Point, b: Point, c: Point):\\n\",\n        \"  \\\"\\\"\\\"Checks if 3 points are counter clockwise to each other.\\\"\\\"\\\"\\n\",\n        \"  slope_AB_numerator = (b.y - a.y)\\n\",\n        \"  slope_AB_denominator = (b.x - a.x)\\n\",\n        \"  slope_AC_numerator = (c.y - a.y)\\n\",\n        \"  slope_AC_denominator = (c.x - a.x)\\n\",\n        \"  return (slope_AC_numerator * slope_AB_denominator \\u003e= \\\\\\n\",\n        \"          slope_AB_numerator * slope_AC_denominator)\\n\",\n        \"\\n\",\n        \"def intersect(segment_1: Tuple[Point, Point], segment_2: Tuple[Point, Point]):\\n\",\n        \"  \\\"\\\"\\\"Checks if two line segments intersect.\\\"\\\"\\\"\\n\",\n        \"  a, b = segment_1\\n\",\n        \"  c, d = segment_2\\n\",\n        \"\\n\",\n        \"  # Checking if there is an intersection is equivalent to:\\n\",\n        \"  # Exactly one counter clockwise path to D (from A or B) via C.\\n\",\n        \"  AC_ccw_CD = _check_counter_clockwise(a, c, d)\\n\",\n        \"  BC_ccw_CD = _check_counter_clockwise(b, c, d)\\n\",\n        \"  toD_via_C = AC_ccw_CD != BC_ccw_CD\\n\",\n        \"\\n\",\n        \"  # AND\\n\",\n        \"  # Exactly one counterclockwise path from A (to C or D) via B.\\n\",\n        \"  AB_ccw_BC = _check_counter_clockwise(a, b, c)\\n\",\n        \"  AB_ccw_BD = _check_counter_clockwise(a, b, d)\\n\",\n        \"\\n\",\n        \"  fromA_via_B = AB_ccw_BC != AB_ccw_BD\\n\",\n        \"\\n\",\n        \"  return toD_via_C and fromA_via_B\\n\",\n        \"\\n\",\n        \"# Some simple tests to ensure everything is working.\\n\",\n        \"assert not intersect((Point(1, 0), Point(1, 1)), (Point(0,0), Point(0, 1))), \\\\\\n\",\n        \"  'Parallel lines detected as intersecting.'\\n\",\n        \"assert not intersect((Point(0, 0), Point(1, 0)), (Point(0,1), Point(1, 1))), \\\\\\n\",\n        \"  'Parallel lines detected as intersecting.'\\n\",\n        \"assert intersect((Point(3, 5), Point(1, 1)), (Point(2, 2), Point(0, 1))), \\\\\\n\",\n        \"  'Lines that intersect not detected.'\\n\",\n        \"assert not intersect((Point(0, 0), Point(2, 2)), (Point(3, 3), Point(5, 1))), \\\\\\n\",\n        \"  'Lines that do not intersect detected as intersecting'\\n\",\n        \"assert intersect((Point(0, .5), Point(0, -.5)), (Point(.5, 0), Point(-.5, 0.))), \\\\\\n\",\n        \"  'Lines that intersect not detected.'\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"IaC8khoBVZ2a\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title ContinuousWorld environment.\\n\",\n        \"\\n\",\n        \"class ContinuousWorld(object):\\n\",\n        \"  r\\\"\\\"\\\"The ContinuousWorld Environment.\\n\",\n        \"\\n\",\n        \"  An agent can be anywhere in the grid. The agent provides Forces to move. When\\n\",\n        \"  the agent provides a force, it is applied and the final position is jittered.\\n\",\n        \"\\n\",\n        \"  When the agent is reset, its location is drawn from a global start position\\n\",\n        \"  given by `drift_between`. This start position is non-stationary and drifts\\n\",\n        \"  toward the target start position as the environment resets with the speed\\n\",\n        \"  `drift_speed`.\\n\",\n        \"\\n\",\n        \"  For example the start position is (0., 0.). After reseting once, the start\\n\",\n        \"  positon might drift toward (0.5, 0.5). After resetting again it may drift\\n\",\n        \"  again to (0., 0.). This happens smoothly according to the drifting speed.\\n\",\n        \"\\n\",\n        \"  Walls can be specified in this environment. Detection works by checking if the\\n\",\n        \"  agents action forces it to go in a direction which collides with a wall.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(\\n\",\n        \"      self,\\n\",\n        \"      size: float,\\n\",\n        \"      wall_pairs: Optional[List[Tuple[Point, Point]]] = None,\\n\",\n        \"      drift_between: Optional[List[Tuple[Point, Point]]] = None,\\n\",\n        \"      movement_noise: float = 0.1,\\n\",\n        \"      seed: int = 1,\\n\",\n        \"      drift_speed: float = 0.5,\\n\",\n        \"      reset_noise: Optional[float] = None,\\n\",\n        \"      max_episode_length: int = 10,\\n\",\n        \"      max_action_force: float = 0.5,\\n\",\n        \"      verbose_reset: bool = False\\n\",\n        \"      ):\\n\",\n        \"    \\\"\\\"\\\"Initializes the Continuous World Environment.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      size: The size of the world.\\n\",\n        \"      wall_pairs: A list of tuple of points representing the start and end\\n\",\n        \"        positions of the wall.\\n\",\n        \"      drift_between: A list of tuple of points representing how the starting\\n\",\n        \"        distrubiton should change. If None, it will drift between the four\\n\",\n        \"        corners of the room.\\n\",\n        \"      movement_noise: The noise around each position after movement.\\n\",\n        \"      seed: The seed for the random number generator.\\n\",\n        \"      drift_speed: How quickly to move in the drift direction.\\n\",\n        \"      reset_noise: The noise around the reset position. Defaults to\\n\",\n        \"        movement_noise if not specified.\\n\",\n        \"      max_episode_length: The maximum length of the episode before resetting.\\n\",\n        \"      max_action_force: If using random_step() this will be the maximum random\\n\",\n        \"        force applied in the x and y direction.\\n\",\n        \"      verbose_reset: Prints out every time the global starting position is\\n\",\n        \"        reset.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    self._size = size\\n\",\n        \"    self._wall_pairs = wall_pairs or []\\n\",\n        \"    self._verbose_reset = verbose_reset\\n\",\n        \"\\n\",\n        \"    # Points to drift the start position between.\\n\",\n        \"    if drift_between is None:\\n\",\n        \"      self._drift_between = (\\n\",\n        \"          Point((1/4) * size, (1/4) * size),\\n\",\n        \"          Point((1/4) * size, (3/4) * size),\\n\",\n        \"          Point((3/4) * size, (1/4) * size),\\n\",\n        \"          Point((3/4) * size, (3/4) * size),\\n\",\n        \"      )\\n\",\n        \"    else:\\n\",\n        \"      self._drift_between = drift_between\\n\",\n        \"\\n\",\n        \"    self._noise = movement_noise\\n\",\n        \"    self._reset_noise = reset_noise or movement_noise\\n\",\n        \"    self._rng = np.random.RandomState(seed)\\n\",\n        \"    random.seed(seed)\\n\",\n        \"\\n\",\n        \"    # The current and target starting positions.\\n\",\n        \"    # Internal to this class mu is used to refer to mean \\\"start position\\\".\\n\",\n        \"    # Therefore mu = current start position and end_mu is the target start\\n\",\n        \"    # position.\\n\",\n        \"    self._mu, self._end_mu = random.sample(self._drift_between, 2)\\n\",\n        \"    # The speed at which we will move toward the target position.\\n\",\n        \"    self._drift_speed = drift_speed\\n\",\n        \"    self.update_agent_position()\\n\",\n        \"    self._decide_new_target_mu()\\n\",\n        \"    self._max_episode_length = max_episode_length\\n\",\n        \"    self._current_episode_length = 0\\n\",\n        \"    self._terminated = True\\n\",\n        \"    self._max_action_force = max_action_force\\n\",\n        \"    self._recent_mu_updated = False\\n\",\n        \"\\n\",\n        \"  def _decide_new_target_mu(self):\\n\",\n        \"    \\\"\\\"\\\"Decide a new target direction to move toward.\\\"\\\"\\\"\\n\",\n        \"    # The direction should be toward the \\\"target ending mu.\\\"\\n\",\n        \"    (new_end_mu,) = random.sample(self._drift_between, 1)\\n\",\n        \"    while new_end_mu == self._end_mu:\\n\",\n        \"      (new_end_mu,) = random.sample(self._drift_between, 1)\\n\",\n        \"\\n\",\n        \"    self._end_mu = new_end_mu\\n\",\n        \"    self._decide_drift_direction()\\n\",\n        \"    if self._verbose_reset:\\n\",\n        \"      print(f'Target mu has been updated to: {self._end_mu}')\\n\",\n        \"    self._recent_mu_updated = True\\n\",\n        \"\\n\",\n        \"  def _decide_drift_direction(self):\\n\",\n        \"    \\\"\\\"\\\"Decide the drifting direction to move in.\\\"\\\"\\\"\\n\",\n        \"    direction = self._end_mu - self._mu\\n\",\n        \"    l2 = direction.l2norm()\\n\",\n        \"    drift_direction = Point(direction.x / l2, direction.y / l2)\\n\",\n        \"    self._drift_direction = Point(\\n\",\n        \"          drift_direction.x * self._drift_speed,\\n\",\n        \"          drift_direction.y * self._drift_speed\\n\",\n        \"          )\\n\",\n        \"\\n\",\n        \"  def _should_update_target_mu(self) -\\u003e bool:\\n\",\n        \"    \\\"\\\"\\\"Decide if the drift direction should change.\\\"\\\"\\\"\\n\",\n        \"    # Condition 1: We are past the edge of the environment.\\n\",\n        \"    if self._past_edge(self._mu.x)[0] or self._past_edge(self._mu.y)[0]:\\n\",\n        \"      return True\\n\",\n        \"\\n\",\n        \"    # Condition 2: Check if the current mu is close to the end mu.\\n\",\n        \"    return self._mu.is_close_to(self._end_mu, self._drift_speed)\\n\",\n        \"\\n\",\n        \"  def update_current_start_position(self):\\n\",\n        \"    \\\"\\\"\\\"Update the current mu to drift toward mu_end. Change mu_end if needed.\\\"\\\"\\\"\\n\",\n        \"    if self._should_update_target_mu():\\n\",\n        \"      self._decide_new_target_mu()\\n\",\n        \"    self._decide_drift_direction()\\n\",\n        \"    proposed_mu = self._mu + self._drift_direction\\n\",\n        \"    self._mu = self._wrap_coordinate(proposed_mu)\\n\",\n        \"\\n\",\n        \"  def _past_edge(self, x: float) -\\u003e Tuple[bool, float]:\\n\",\n        \"    \\\"\\\"\\\"Checks if coordinate is beyond the edges.\\\"\\\"\\\"\\n\",\n        \"    if x \\u003e= self._size:\\n\",\n        \"      return True, self._size\\n\",\n        \"    elif x \\u003c= 0.0:\\n\",\n        \"      return True, 0.0\\n\",\n        \"    else:\\n\",\n        \"      return False, x\\n\",\n        \"\\n\",\n        \"  def _wrap_coordinate(self, point: Point) -\\u003e Point:\\n\",\n        \"    \\\"\\\"\\\"Wraps coordinates that are beyond edges.\\\"\\\"\\\"\\n\",\n        \"    wrapped_coordinates = map(self._past_edge, dataclasses.astuple(point))\\n\",\n        \"    return Point(*map(operator.itemgetter(1), wrapped_coordinates))\\n\",\n        \"\\n\",\n        \"  def update_agent_position(self):\\n\",\n        \"    self._current_position = self._wrap_coordinate(\\n\",\n        \"        self._mu.normal_sample_around(self._noise))\\n\",\n        \"\\n\",\n        \"  def set_agent_position(self, new_position: Point):\\n\",\n        \"    self._current_position = self._wrap_coordinate(new_position)\\n\",\n        \"\\n\",\n        \"  def reset(self) -\\u003e Tuple[float, float]:\\n\",\n        \"    \\\"\\\"\\\"Reset the current position of the agent and move the global mu.\\\"\\\"\\\"\\n\",\n        \"    self.update_current_start_position()\\n\",\n        \"    self.update_agent_position()\\n\",\n        \"    self._current_episode_length = 0\\n\",\n        \"    self._terminated = False\\n\",\n        \"    return self._current_position\\n\",\n        \"\\n\",\n        \"  def get_random_force(self) -\\u003e Force:\\n\",\n        \"    return Force(*self._rng.uniform(\\n\",\n        \"        -self._max_action_force, self._max_action_force, 2))\\n\",\n        \"\\n\",\n        \"  def random_step(self):\\n\",\n        \"    random_action = self.get_random_force()\\n\",\n        \"    to_be_returned = self.step(random_action)\\n\",\n        \"    to_be_returned[-1]['action_taken'] = random_action\\n\",\n        \"    return to_be_returned\\n\",\n        \"\\n\",\n        \"  @property\\n\",\n        \"  def agent_position(self):\\n\",\n        \"    return dataclasses.astuple(self._current_position)\\n\",\n        \"\\n\",\n        \"  @property\\n\",\n        \"  def start_position(self):\\n\",\n        \"    return dataclasses.astuple(self._mu)\\n\",\n        \"\\n\",\n        \"  @property\\n\",\n        \"  def size(self):\\n\",\n        \"    return self._size\\n\",\n        \"\\n\",\n        \"  @property\\n\",\n        \"  def walls(self):\\n\",\n        \"    return self._wall_pairs\\n\",\n        \"\\n\",\n        \"  def _check_goes_through_wall(self, start: Point, end: Point):\\n\",\n        \"    if not self._wall_pairs: return False\\n\",\n        \"\\n\",\n        \"    for pair in self._wall_pairs:\\n\",\n        \"      if intersect((start, end), pair):\\n\",\n        \"        return True\\n\",\n        \"    return False\\n\",\n        \"\\n\",\n        \"  def step(\\n\",\n        \"      self,\\n\",\n        \"      action: Force\\n\",\n        \"      ) -\\u003e Tuple[Tuple[float, float], Optional[float], bool, Dict[str, Any]]:\\n\",\n        \"    \\\"\\\"\\\"Does a step in the environment using the action.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      action: Force applied by the agent.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      Agent position: A tuple of two floats.\\n\",\n        \"      The reward.\\n\",\n        \"      An indicator if the episode terminated.\\n\",\n        \"      A dictionary containing any information about the step.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    if self._terminated:\\n\",\n        \"      raise ValueError('Episode is over. Please reset the environment.')\\n\",\n        \"    perturbed_action = action.normal_sample_around(self._noise)\\n\",\n        \"\\n\",\n        \"    proposed_position = self._wrap_coordinate(\\n\",\n        \"        self._current_position + perturbed_action)\\n\",\n        \"\\n\",\n        \"    goes_through_wall = self._check_goes_through_wall(\\n\",\n        \"        self._current_position, proposed_position)\\n\",\n        \"\\n\",\n        \"    if not goes_through_wall:\\n\",\n        \"      self._current_position = proposed_position\\n\",\n        \"\\n\",\n        \"    self._current_episode_length += 1\\n\",\n        \"\\n\",\n        \"    if self._current_episode_length \\u003e self._max_episode_length:\\n\",\n        \"      self._terminated = True\\n\",\n        \"\\n\",\n        \"    recent_mu_updated = self._recent_mu_updated\\n\",\n        \"    self._recent_mu_updated = False\\n\",\n        \"    return (\\n\",\n        \"        self._current_position,\\n\",\n        \"        None,\\n\",\n        \"        self._terminated,\\n\",\n        \"        {\\n\",\n        \"            'goes_through_wall': goes_through_wall,\\n\",\n        \"            'proposed_position': proposed_position,\\n\",\n        \"            'recent_start_position_updated': recent_mu_updated\\n\",\n        \"         }\\n\",\n        \"    )\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"O43gq5h_YS2I\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Visualization suite.\\n\",\n        \"\\n\",\n        \"def visualize_environment(\\n\",\n        \"    world,\\n\",\n        \"    ax,\\n\",\n        \"    scaling=1.0,\\n\",\n        \"    agent_color='r',\\n\",\n        \"    agent_size=0.2,\\n\",\n        \"    start_color='g',\\n\",\n        \"    draw_agent=True,\\n\",\n        \"    draw_start_mu=True,\\n\",\n        \"    draw_target_mu=True,\\n\",\n        \"    draw_walls=True,\\n\",\n        \"    write_text=True):\\n\",\n        \"  \\\"\\\"\\\"Visualize the continuous grid world.\\n\",\n        \"\\n\",\n        \"  The agent will be drawn as a circle. The start and target\\n\",\n        \"  locations will be drawn by a cross. Walls will be drawn in\\n\",\n        \"  black.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    world: The continuous gridworld to visualize.\\n\",\n        \"    ax: The matplotlib axes to draw the gridworld.\\n\",\n        \"    scaling: Scale the plot by this factor.\\n\",\n        \"    agent_color: Color of the agent.\\n\",\n        \"    agent_size: Size of the agent in the world.\\n\",\n        \"    start_color: Color of the start marker.\\n\",\n        \"    draw_agent: Boolean that controls drawing agent.\\n\",\n        \"    draw_start_mu: Boolean that controls drawing starting position.\\n\",\n        \"    draw_target_mu: Boolean that controls drawing ending position.\\n\",\n        \"    draw_walls: Boolean that controls drawing walls.\\n\",\n        \"    write_text: Boolean to write text for each component being drawn.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  scaled_size = scaling * world.size\\n\",\n        \"\\n\",\n        \"  # Draw the outer walls.\\n\",\n        \"  ax.hlines(0, 0, scaled_size)\\n\",\n        \"  ax.hlines(scaled_size, 0, scaled_size)\\n\",\n        \"  ax.vlines(scaled_size, 0, scaled_size)\\n\",\n        \"  ax.vlines(0, 0, scaled_size)\\n\",\n        \"\\n\",\n        \"  for wall_pair in world.walls:\\n\",\n        \"    ax.plot(\\n\",\n        \"        [p.x * scaling for p in wall_pair],\\n\",\n        \"        [p.y * scaling for p in wall_pair],\\n\",\n        \"        color='k')\\n\",\n        \"\\n\",\n        \"  if draw_start_mu:\\n\",\n        \"    # Draw the position of the start dist.\\n\",\n        \"    x, y = [p * scaling for p in world.mu_start_position]\\n\",\n        \"    ax.scatter([x], [y], marker='x', c=start_color)\\n\",\n        \"    if write_text: ax.text(x, y, 'Starting position.')\\n\",\n        \"\\n\",\n        \"  if draw_target_mu:\\n\",\n        \"    # Draw the target position.\\n\",\n        \"    x, y = [p * scaling for p in dataclasses.astuple(world._end_mu)]\\n\",\n        \"    ax.scatter([x], [y], marker='x', c='k')\\n\",\n        \"    if write_text: ax.text(x, y,'Target position.')\\n\",\n        \"\\n\",\n        \"  if draw_agent:\\n\",\n        \"    # Draw the position of the agent as a circle.\\n\",\n        \"    x, y = [scaling * p for p in world.agent_position]\\n\",\n        \"    agent_circle = plt.Circle((x, y), agent_size, color=agent_color)\\n\",\n        \"    ax.add_artist(agent_circle)\\n\",\n        \"    if write_text: ax.text(x, y, 'Agent position.')\\n\",\n        \"\\n\",\n        \"  return ax\\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"eSfUwRtoY_aN\"\n      },\n      \"source\": [\n        \"# Affordance specification\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"IVTYi4YVZAfR\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Intent detection and plotting code.\\n\",\n        \"\\n\",\n        \"IntentName = enum.IntEnum(\\n\",\n        \"    'IntentName', 'delta_pos_x delta_neg_x delta_pos_y delta_neg_y')\\n\",\n        \"\\n\",\n        \"class IntentStatus(enum.IntEnum):\\n\",\n        \"  complete = 1\\n\",\n        \"  incomplete = 0\\n\",\n        \"\\n\",\n        \"@dataclasses.dataclass(eq=False)\\n\",\n        \"class Intent:\\n\",\n        \"  name: 'IntentName'\\n\",\n        \"  status: 'IntentStatus'\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"PointOrFloatTuple = Union[Point, Tuple[float, float]]\\n\",\n        \"\\n\",\n        \"def _get_intent_completed(\\n\",\n        \"    s_t: PointOrFloatTuple,\\n\",\n        \"    a_t: Force,\\n\",\n        \"    s_tp1: PointOrFloatTuple,\\n\",\n        \"    intent_name: IntentName,\\n\",\n        \"    threshold: float = 0.0):\\n\",\n        \"  r\\\"\\\"\\\"Determines if the intent was completed in the transition.\\n\",\n        \"\\n\",\n        \"  The available intents are based on significant movement on the x-y plane:\\n\",\n        \"\\n\",\n        \"  Intent is 1 if:\\n\",\n        \"    `s_tp1.{{x,y}} - s_t.{{x,y}} {{\\u003e,\\u003c}} threshold`\\n\",\n        \"  else: 0.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    s_t: The current position of the agent.\\n\",\n        \"    a_t: The force for the action.\\n\",\n        \"    s_tp1: The position after executing action of the agent.\\n\",\n        \"    intent_name: The intent that needs to be detected.\\n\",\n        \"    threshold: The significance threshold for the intent to be detected.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  if not isinstance(s_t, Point):\\n\",\n        \"    s_t = Point(*s_t)\\n\",\n        \"  if not isinstance(s_tp1, Point):\\n\",\n        \"    s_tp1 = Point(*s_tp1)\\n\",\n        \"  IntentName(intent_name)  # Check if valid intent_name.\\n\",\n        \"\\n\",\n        \"  diff = s_tp1 - s_t  # Find the positional difference.\\n\",\n        \"\\n\",\n        \"  if intent_name == IntentName.delta_pos_x:\\n\",\n        \"    if diff.x \\u003e threshold:\\n\",\n        \"      return IntentStatus.complete\\n\",\n        \"  if intent_name == IntentName.delta_pos_y:\\n\",\n        \"    if diff.y \\u003e threshold:\\n\",\n        \"      return IntentStatus.complete\\n\",\n        \"  if intent_name == IntentName.delta_neg_x:\\n\",\n        \"    if diff.x \\u003c -threshold:\\n\",\n        \"      return IntentStatus.complete\\n\",\n        \"  if intent_name == IntentName.delta_neg_y:\\n\",\n        \"    if diff.y \\u003c -threshold:\\n\",\n        \"      return IntentStatus.complete\\n\",\n        \"\\n\",\n        \"  return IntentStatus.incomplete\\n\",\n        \"\\n\",\n        \"# Some simple test cases.\\n\",\n        \"assert not _get_intent_completed(\\n\",\n        \"    Point(0, 0), None, Point(0.5, 0.0), IntentName.delta_neg_y)\\n\",\n        \"assert not _get_intent_completed(\\n\",\n        \"    Point(0, 0), None, Point(0.5, 0.0), IntentName.delta_pos_y)\\n\",\n        \"assert _get_intent_completed(\\n\",\n        \"    Point(0, 0), None, Point(0.5, 0.0), IntentName.delta_pos_x)\\n\",\n        \"assert not _get_intent_completed(\\n\",\n        \"    Point(0, 0), None, Point(0.5, 0.0), IntentName.delta_neg_x)\\n\",\n        \"assert _get_intent_completed(\\n\",\n        \"    Point(0, 0), None, Point(0.5, 0.5), IntentName.delta_pos_x)\\n\",\n        \"assert _get_intent_completed(\\n\",\n        \"    Point(0, 0), None, Point(0.5, 0.5), IntentName.delta_pos_y)\\n\",\n        \"assert not _get_intent_completed(\\n\",\n        \"    Point(0, 0), None, Point(0.5, 0.5), IntentName.delta_pos_y, 0.6)\\n\",\n        \"assert not _get_intent_completed(\\n\",\n        \"    Point(0, 0), None, Point(-0.5, -0.5), IntentName.delta_neg_x, 0.6)\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"OtWqqse4Zutx\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Data Collection code\\n\",\n        \"def get_transitions(\\n\",\n        \"    world: ContinuousWorld,\\n\",\n        \"    max_num_transitions: int = 500,\\n\",\n        \"    max_trajectory_length: Optional[int] = None,\\n\",\n        \"    policy: Optional[Callable[[np.ndarray], int]] = None,\\n\",\n        \"    intent_threshold: float = 0.0):\\n\",\n        \"  \\\"\\\"\\\"Samples transitions from an environment.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    world: The environment to collect trajectories from.\\n\",\n        \"    max_num_transitions: The total number of transitions to sample.\\n\",\n        \"    max_trajectory_length: The maximum length of the trajectory. If None\\n\",\n        \"      trajectories will naturally reset during episode end.\\n\",\n        \"    policy: The data collection policy. If None is given a random policy\\n\",\n        \"      is used. The policy must take a single argument, the one hot\\n\",\n        \"      representation of the state. If using a tensorflow function make sure to\\n\",\n        \"      handle batching within the policy itself.\\n\",\n        \"    intent_threshold: The threshold to use for the intent.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    The transitions collected from the environment:\\n\",\n        \"      This is a 4-tuple containing the batch of state, action, state' and intent\\n\",\n        \"      target.\\n\",\n        \"    Human Readable transitions:\\n\",\n        \"      A set containing the unique transitions in the batch and if the intent was\\n\",\n        \"      completed.\\n\",\n        \"    Infos:\\n\",\n        \"      A list containing the info dicts sampled during the batch.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  max_trajectory_length = max_trajectory_length or float('inf')\\n\",\n        \"  trajectory = []\\n\",\n        \"  s_t = world.reset()\\n\",\n        \"  trajectory_length = 0\\n\",\n        \"  human_readable = set()\\n\",\n        \"  if policy is None:\\n\",\n        \"    def policy(_):\\n\",\n        \"      return world.get_random_force()\\n\",\n        \"\\n\",\n        \"  infos = []\\n\",\n        \"\\n\",\n        \"  for _ in range(max_num_transitions):\\n\",\n        \"    action = policy(s_t)\\n\",\n        \"    s_tp1, _, done, info = world.step(action)\\n\",\n        \"    infos.append(info)\\n\",\n        \"    reward = 0\\n\",\n        \"\\n\",\n        \"    all_intents = []\\n\",\n        \"    intent_status_only = []\\n\",\n        \"    for intent_name in IntentName:\\n\",\n        \"      intent_status = _get_intent_completed(\\n\",\n        \"          s_t, action, s_tp1, intent_name, intent_threshold)\\n\",\n        \"      all_intents.append((intent_name, intent_status))\\n\",\n        \"      intent_status_only.append(intent_status)\\n\",\n        \"\\n\",\n        \"    # Human readable vesion:\\n\",\n        \"    human_readable.add((s_t, action, s_tp1, tuple(all_intents)))\\n\",\n        \"\\n\",\n        \"    # Prepare things for tensorflow:\\n\",\n        \"    s_t_tf = tf.constant(dataclasses.astuple(s_t), dtype=tf.float32)\\n\",\n        \"    s_tp1_tf = tf.constant(dataclasses.astuple(s_tp1), dtype=tf.float32)\\n\",\n        \"    a_t_tf = tf.constant(dataclasses.astuple(action), dtype=tf.float32)\\n\",\n        \"    intent_statuses_tf = tf.constant(intent_status_only)\\n\",\n        \"    trajectory.append((s_t_tf, a_t_tf, s_tp1_tf, reward, intent_statuses_tf))\\n\",\n        \"\\n\",\n        \"    trajectory_length += 1\\n\",\n        \"    if done or trajectory_length \\u003e max_trajectory_length:\\n\",\n        \"      s_t = world.reset()\\n\",\n        \"      trajectory_length = 0\\n\",\n        \"    else:\\n\",\n        \"      s_t = s_tp1\\n\",\n        \"\\n\",\n        \"  batch = list(map(tf.stack, zip(*trajectory)))\\n\",\n        \"  return batch, human_readable, infos\\n\",\n        \"\\n\",\n        \"# Integration test.\\n\",\n        \"world = ContinuousWorld(\\n\",\n        \"    size=2,\\n\",\n        \"    drift_speed=0.1,\\n\",\n        \"    max_action_force=2.0,\\n\",\n        \"    max_episode_length=100)\\n\",\n        \"data, _, _ = get_transitions(world, max_num_transitions=2)\\n\",\n        \"assert data is not None\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"bvYwGLyubcpa\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Probabilistic transition model\\n\",\n        \"\\n\",\n        \"hidden_nodes = 32\\n\",\n        \"input_size = 2\\n\",\n        \"\\n\",\n        \"class TransitionModel(tf.keras.Model):\\n\",\n        \"  def __init__(self, hidden_nodes, output_size):\\n\",\n        \"    super().__init__()\\n\",\n        \"    self._net1 = tf.keras.layers.Dense(\\n\",\n        \"       hidden_nodes, activation=tf.keras.activations.relu)\\n\",\n        \"    self._net2 = tf.keras.layers.Dense(\\n\",\n        \"       hidden_nodes, activation=tf.keras.activations.relu)\\n\",\n        \"    # Multiply by 2 for means and variances.\\n\",\n        \"    self._output = tf.keras.layers.Dense(2*output_size)\\n\",\n        \"\\n\",\n        \"  def __call__(self, st, at):\\n\",\n        \"    net_inputs = tf.concat((st, at), axis=1)\\n\",\n        \"    means_logstd = self._output(self._net2(self._net1(net_inputs)))\\n\",\n        \"    means, logstd = tf.split(means_logstd, 2, axis=1)\\n\",\n        \"    std = tf.exp(logstd)\\n\",\n        \"    return tfp.distributions.Normal(loc=means, scale=std)\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"5S6uqTVAdoKD\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Training algorithm.\\n\",\n        \"\\n\",\n        \"MACHINE_EPSILON = np.finfo(float).eps.item()\\n\",\n        \"\\n\",\n        \"def train_networks(\\n\",\n        \"    world: ContinuousWorld,\\n\",\n        \"    model_network: Optional[tf.keras.Model] = None,\\n\",\n        \"    model_optimizer: Optional[tf.keras.optimizers.Optimizer] = None,\\n\",\n        \"    affordance_network: Optional[tf.keras.Model] = None,\\n\",\n        \"    affordance_optimizer: Optional[tf.keras.optimizers.Optimizer] = None,\\n\",\n        \"    use_affordance_to_mask_model: bool = False,\\n\",\n        \"    affordance_mask_threshold: float = 0.9,\\n\",\n        \"    num_train_steps: int =10,\\n\",\n        \"    fresh_data: bool = True,\\n\",\n        \"    max_num_transitions: int = 1,\\n\",\n        \"    max_trajectory_length: Optional[int] = None,\\n\",\n        \"    optimize_performance: bool = False,\\n\",\n        \"    intent_threshold: float = 1.0,\\n\",\n        \"    debug: bool = False,\\n\",\n        \"    print_losses: bool = False,\\n\",\n        \"    print_every: int = 10):\\n\",\n        \"  \\\"\\\"\\\"Trains an affordance network.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    world: The gridworld to collect training data from.\\n\",\n        \"    model_network: The network for the transition model.\\n\",\n        \"    model_optimizer: The optimizer for the transition model.\\n\",\n        \"    affordance_network: The affordance network.\\n\",\n        \"    affordance_optimizer: The optimizer for the affordance network.\\n\",\n        \"    use_affordance_to_mask_model: Uses affordances to mask the losses of the\\n\",\n        \"      transition model.\\n\",\n        \"    affordance_mask_threshold: The threshold at which the mask should be\\n\",\n        \"      applied.\\n\",\n        \"    num_train_steps: The total number of training steps.\\n\",\n        \"    fresh_data: Collect fresh data before every training step.\\n\",\n        \"    max_num_transitions: The number of rollout trajectories per training step.\\n\",\n        \"    max_trajectory_length: The maximum length of each trajectory. If None then\\n\",\n        \"      there is no artifically truncated trajectory length.\\n\",\n        \"    optimizer_performance: Use `tf.function` to speed up training steps.\\n\",\n        \"    intent_threshold: The threshold to consider as a signficant completion of\\n\",\n        \"      the intent.\\n\",\n        \"    debug: Debug mode prints out the human readable transitions and disables\\n\",\n        \"      tf.function.\\n\",\n        \"    print_losses: Prints out the losses during training.\\n\",\n        \"    print_every: Indicates how often things should be printed out.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  all_aff_losses = []\\n\",\n        \"  all_model_losses = []\\n\",\n        \"\\n\",\n        \"  # Error checking to make sure the correct combinations of model/affordance\\n\",\n        \"  # nets and optimizers are given or none at all.\\n\",\n        \"  if (affordance_network is None) != (affordance_optimizer is None):\\n\",\n        \"    raise ValueError('Both affordance network and optimizer have to be given.')\\n\",\n        \"  else:\\n\",\n        \"    use_affordances = affordance_network is not None\\n\",\n        \"\\n\",\n        \"  if (model_network is None) != (model_optimizer is None):\\n\",\n        \"    raise ValueError('Both model network and optimizer have to be given.')\\n\",\n        \"  else:\\n\",\n        \"    use_model = model_network is not None\\n\",\n        \"\\n\",\n        \"  # At least one of affordance network or model network must be specified.\\n\",\n        \"  if model_network is None and (\\n\",\n        \"      (model_network is None) == (affordance_network is None)):\\n\",\n        \"    raise ValueError(\\n\",\n        \"        'This code does not do anything without models or affordances.')\\n\",\n        \"\\n\",\n        \"  # Check if both are specified if use_affordance_to_mask_model is True.\\n\",\n        \"  if use_affordance_to_mask_model and (\\n\",\n        \"      model_network is None and affordance_network is None):\\n\",\n        \"    raise ValueError(\\n\",\n        \"        'Cannot use_affordance_to_mask model if affordance and model networks'\\n\",\n        \"        ' are not given!')\\n\",\n        \"\\n\",\n        \"  # User friendly print outs indicate what is happening.\\n\",\n        \"  print(\\n\",\n        \"      f'Using model? {use_model}. Using affordances? {use_affordances}. Using'\\n\",\n        \"      f' affordances to mask model? {use_affordance_to_mask_model}.')\\n\",\n        \"\\n\",\n        \"  def _train_step_affordances(trajectory):\\n\",\n        \"    \\\"\\\"\\\"Train affordance network.\\\"\\\"\\\"\\n\",\n        \"    # Note: Please make sure you understand the shapes here before editing to\\n\",\n        \"    # prevent accidental broadcast.\\n\",\n        \"    with tf.GradientTape() as tape:\\n\",\n        \"      s_t, a_t, _, _, intent_target = trajectory\\n\",\n        \"      concat_input = tf.concat((s_t, a_t), axis=1)\\n\",\n        \"      preds = affordance_network(concat_input)\\n\",\n        \"\\n\",\n        \"      intent_target = tf.reshape(intent_target, (-1, 1))\\n\",\n        \"      unshaped_preds = preds\\n\",\n        \"      preds = tf.reshape(preds, (-1, 1))\\n\",\n        \"\\n\",\n        \"      loss = tf.keras.losses.binary_crossentropy(intent_target, preds)\\n\",\n        \"      total_loss = tf.reduce_mean(loss)\\n\",\n        \"    grads = tape.gradient(total_loss, affordance_network.trainable_variables)\\n\",\n        \"    affordance_optimizer.apply_gradients(\\n\",\n        \"        zip(grads, affordance_network.trainable_variables))\\n\",\n        \"\\n\",\n        \"    return total_loss, unshaped_preds\\n\",\n        \"\\n\",\n        \"  def _train_step_model(trajectory, affordances):\\n\",\n        \"    \\\"\\\"\\\"Train model network.\\\"\\\"\\\"\\n\",\n        \"    with tf.GradientTape() as tape:\\n\",\n        \"      s_t, a_t, s_tp1, _, _ = trajectory\\n\",\n        \"      transition_model = model_network(s_t, a_t)\\n\",\n        \"      log_prob = tf.reduce_sum(transition_model.log_prob(s_tp1), -1)\\n\",\n        \"      num_examples = s_t.shape[0]\\n\",\n        \"\\n\",\n        \"      if use_affordance_to_mask_model:\\n\",\n        \"        # Check if at least one intent is affordable.\\n\",\n        \"        masks_per_intent = tf.math.greater_equal(\\n\",\n        \"            affordances, affordance_mask_threshold)\\n\",\n        \"        masks_per_transition = tf.reduce_any(masks_per_intent, 1)\\n\",\n        \"        # Explicit reshape to prevent accidental broadcasting.\\n\",\n        \"        batch_size = len(s_t)\\n\",\n        \"        log_prob = tf.reshape(log_prob, (batch_size, 1))\\n\",\n        \"        masks_per_transition = tf.reshape(masks_per_transition, (batch_size, 1))\\n\",\n        \"        log_prob = log_prob * tf.cast(masks_per_transition, dtype=tf.float32)\\n\",\n        \"        # num_examples changes if there is masking so take that into account:\\n\",\n        \"        num_examples = tf.reduce_sum(\\n\",\n        \"            tf.cast(masks_per_transition, dtype=tf.float32))\\n\",\n        \"        num_examples = tf.math.maximum(num_examples, tf.constant(1.0))\\n\",\n        \"\\n\",\n        \"      # Negate log_prob here because we want to maximize this via minimization.\\n\",\n        \"      total_loss = -tf.reduce_sum(log_prob) / num_examples\\n\",\n        \"    grads = tape.gradient(total_loss, model_network.trainable_variables)\\n\",\n        \"    model_optimizer.apply_gradients(\\n\",\n        \"        zip(grads, model_network.trainable_variables))\\n\",\n        \"\\n\",\n        \"    return total_loss\\n\",\n        \"\\n\",\n        \"  # Optimize performance using tf.function.\\n\",\n        \"  if optimize_performance and not debug:\\n\",\n        \"    _train_step_affordances = tf.function(_train_step_affordances)\\n\",\n        \"    _train_step_model = tf.function(_train_step_model)\\n\",\n        \"    print('Training step has been optimized.')\\n\",\n        \"\\n\",\n        \"  initial_data_collected = False\\n\",\n        \"  infos = []\\n\",\n        \"  for i in range(num_train_steps):\\n\",\n        \"    # Step 1: Collect data.\\n\",\n        \"    if not initial_data_collected or fresh_data:\\n\",\n        \"      initial_data_collected = True\\n\",\n        \"      running_time = time.time()\\n\",\n        \"      trajectories, unique_transitions, infos_i = get_transitions(\\n\",\n        \"          world,\\n\",\n        \"          max_num_transitions=max_num_transitions,\\n\",\n        \"          max_trajectory_length=max_trajectory_length,\\n\",\n        \"          intent_threshold=intent_threshold)\\n\",\n        \"      collection_running_time = time.time() - running_time\\n\",\n        \"      if debug: print('unique_transitions:', unique_transitions)\\n\",\n        \"    running_time = time.time()\\n\",\n        \"\\n\",\n        \"    # Check if the start state was updated:\\n\",\n        \"    infos.append(\\n\",\n        \"        any([info['recent_start_position_updated'] for info in infos_i]))\\n\",\n        \"\\n\",\n        \"    # Step 2: Train affordance model.\\n\",\n        \"    if use_affordances:\\n\",\n        \"      aff_loss, affordance_predictions = _train_step_affordances(trajectories)\\n\",\n        \"      aff_loss = aff_loss.numpy().item()\\n\",\n        \"    else:\\n\",\n        \"      affordance_predictions = tf.constant(0.0)  # Basically a none.\\n\",\n        \"      aff_loss = None\\n\",\n        \"    all_aff_losses.append(aff_loss)\\n\",\n        \"\\n\",\n        \"    # Step 3: Train transition model and mask predictions if necessary.\\n\",\n        \"    if use_model:\\n\",\n        \"      model_loss = _train_step_model(trajectories, affordance_predictions)\\n\",\n        \"      model_loss = model_loss.numpy().item()\\n\",\n        \"    else:\\n\",\n        \"      model_loss = None\\n\",\n        \"    all_model_losses.append(model_loss)\\n\",\n        \"\\n\",\n        \"    if debug or print_losses:\\n\",\n        \"      if i % print_every == 0:\\n\",\n        \"        train_loop_time = time.time() - running_time\\n\",\n        \"        print(f'i: {i}, aff_loss: {aff_loss}, model_loss: {model_loss}, '\\n\",\n        \"              f'collection_loop_time: {collection_running_time:.2f}, '\\n\",\n        \"              f'train_loop_time: {train_loop_time:.2f}')\\n\",\n        \"\\n\",\n        \"  return all_model_losses, all_aff_losses, infos\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"6hXi7Iy0b50_\"\n      },\n      \"source\": [\n        \"# Plotting utilities\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"gMNIsCLEb3Ie\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Learning curve smoothing\\n\",\n        \"# From https://github.com/google-research/policy-learning-landscape/blob/master/analysis_tools/data_processing.py#L82\\n\",\n        \"\\n\",\n        \"DEFAULT_SMOOTHING_WEIGHT = 0.9\\n\",\n        \"def apply_linear_smoothing(data, smoothing_weight=DEFAULT_SMOOTHING_WEIGHT):\\n\",\n        \"  \\\"\\\"\\\"Smooth curves using a exponential linear weight.\\n\",\n        \"\\n\",\n        \"  This smoothing algorithm is the same as the one used in tensorboard.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    data: The sequence or list containing the data to smooth.\\n\",\n        \"    smoothing_weight: A float representing the weight to place on the moving\\n\",\n        \"      average.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    A list containing the smoothed data.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  if len(data) == 0:  # pylint: disable=g-explicit-length-test\\n\",\n        \"    raise ValueError('No data to smooth.')  \\n\",\n        \"  if smoothing_weight \\u003c= 0:\\n\",\n        \"    return data\\n\",\n        \"  last = data[0]\\n\",\n        \"  smooth_data = []\\n\",\n        \"  for x in data:\\n\",\n        \"    if not np.isfinite(last):\\n\",\n        \"      smooth_data.append(x)\\n\",\n        \"    else:\\n\",\n        \"      smooth_data.append(last * smoothing_weight + (1 - smoothing_weight) * x)\\n\",\n        \"    last = smooth_data[-1]\\n\",\n        \"  return smooth_data\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"T5cvk1XUb-M0\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Intent plotting code.\\n\",\n        \"\\n\",\n        \"def plot_intents(\\n\",\n        \"    world: ContinuousWorld,\\n\",\n        \"    affordance_predictions: np.ndarray,\\n\",\n        \"    eval_action: Tuple[float, float],\\n\",\n        \"    num_world_ticks: int = 3,\\n\",\n        \"    intent_collection: IntentName = IntentName,\\n\",\n        \"    subplot_configuration: Tuple[int, int] = (2, 2),\\n\",\n        \"    figsize: Tuple[int, int] = (5, 5)):\\n\",\n        \"  \\\"\\\"\\\"Plots the intents as a heatmap.\\n\",\n        \"\\n\",\n        \"  Given the predictions from the affordance network, we plot a heatmap for each\\n\",\n        \"  intent indicating how likely the `eval_action` can be used to complete it.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    world: The gridworld to use.\\n\",\n        \"    affordance_predictions: Predictions from the affordance classifier. The last\\n\",\n        \"      dimension should be of the same len as intent_collection.\\n\",\n        \"    eval_action: The eval action being used (For plotting the title).\\n\",\n        \"    num_world_ticks: The number of ticks on the axes of the world.\\n\",\n        \"    subplot_configuration: The arrangement of the subplots on the plot.\\n\",\n        \"    figsize: The size of the matplotlib figure.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  fig = plt.figure(figsize=figsize)\\n\",\n        \"\\n\",\n        \"  # Since we are predicting probabilities, normalize between 0 and 1.\\n\",\n        \"  norm = mpl.colors.Normalize(vmin=0.0, vmax=1.0)\\n\",\n        \"\\n\",\n        \"  # The colorbar axes.\\n\",\n        \"  cax = fig.add_axes([1.0, 0.1, 0.075, 0.8])\\n\",\n        \"\\n\",\n        \"  for intent in intent_collection:\\n\",\n        \"    ax = fig.add_subplot(*subplot_configuration, intent)\\n\",\n        \"    afford_sliced = affordance_predictions[:, :, intent-1]\\n\",\n        \"    afford_sliced = np.transpose(afford_sliced)\\n\",\n        \"    ax_ = ax.imshow(afford_sliced, origin='lower')\\n\",\n        \"\\n\",\n        \"    # This code will handle num_world_ticks=0 gracefully.\\n\",\n        \"    ax.set_xticks(np.linspace(0, afford_sliced.shape[0], num_world_ticks))\\n\",\n        \"    ax.set_yticks(np.linspace(0, afford_sliced.shape[0], num_world_ticks))\\n\",\n        \"    ax.set_xticklabels(\\n\",\n        \"        np.linspace(0, world.size, num_world_ticks), fontsize='x-small')\\n\",\n        \"    ax.set_yticklabels(\\n\",\n        \"        np.linspace(0, world.size, num_world_ticks), fontsize='x-small')\\n\",\n        \"\\n\",\n        \"    ax.set_xlabel('x')\\n\",\n        \"    ax.set_ylabel('y', rotation=0)\\n\",\n        \"    plt.title('Intent: {}'.format(intent.__repr__()[-10:-2]))\\n\",\n        \"    ax_.set_norm(norm)\\n\",\n        \"    if intent == len(intent_collection):\\n\",\n        \"      plt.colorbar(ax_, cax)\\n\",\n        \"      cax.set_ylabel('Probability of intent completion')\\n\",\n        \"\\n\",\n        \"  plt.suptitle('Evaluating Action: {}'.format(eval_action))\\n\",\n        \"  plt.tight_layout(rect=[0, 0.03, 1, 0.95])\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"pHarhdiSdixz\"\n      },\n      \"source\": [\n        \"# Main Experiment (Training)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"Zq9TXAyDfaP_\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Storing the losses and models in a global list.\\n\",\n        \"all_losses_global = []\\n\",\n        \"all_models_global = []\\n\",\n        \"all_affordance_global = []\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 1000\n        },\n        \"colab_type\": \"code\",\n        \"id\": \"OP50CV_YdkLi\",\n        \"outputId\": \"58a4677b-5dcf-4015-d795-2e7a4b9384fc\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Experiments that will be run: [False, True]\\n\",\n            \"Resetting seed to 0.\\n\",\n            \"Target mu has been updated to: Point(x=0.5, y=0.5)\\n\",\n            \"Using model? True. Using affordances? False. Using affordances to mask model? False.\\n\",\n            \"Training step has been optimized.\\n\",\n            \"Target mu has been updated to: Point(x=1.5, y=1.5)\\n\"\n          ]\n        },\n        {\n          \"name\": \"stderr\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:107: RuntimeWarning: invalid value encountered in double_scalars\\n\"\n          ]\n        },\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"i: 0, aff_loss: None, model_loss: 3.079850912094116, collection_loop_time: 0.20, train_loop_time: 0.28\\n\",\n            \"i: 1000, aff_loss: None, model_loss: -1.3993345499038696, collection_loop_time: 0.17, train_loop_time: 0.00\\n\",\n            \"Target mu has been updated to: Point(x=0.5, y=0.5)\\n\",\n            \"i: 2000, aff_loss: None, model_loss: -1.4746335744857788, collection_loop_time: 0.17, train_loop_time: 0.00\\n\",\n            \"Target mu has been updated to: Point(x=1.5, y=1.5)\\n\",\n            \"i: 3000, aff_loss: None, model_loss: -1.926070213317871, collection_loop_time: 0.29, train_loop_time: 0.00\\n\",\n            \"i: 4000, aff_loss: None, model_loss: -2.129803419113159, collection_loop_time: 0.17, train_loop_time: 0.00\\n\",\n            \"Target mu has been updated to: Point(x=0.5, y=0.5)\\n\",\n            \"i: 5000, aff_loss: None, model_loss: -2.212693452835083, collection_loop_time: 0.18, train_loop_time: 0.00\\n\",\n            \"Target mu has been updated to: Point(x=1.5, y=1.5)\\n\",\n            \"i: 6000, aff_loss: None, model_loss: -2.104724168777466, collection_loop_time: 0.18, train_loop_time: 0.00\\n\",\n            \"i: 7000, aff_loss: None, model_loss: -2.153459310531616, collection_loop_time: 0.19, train_loop_time: 0.00\\n\",\n            \"Target mu has been updated to: Point(x=0.5, y=0.5)\\n\",\n            \"Resetting seed to 0.\\n\",\n            \"Target mu has been updated to: Point(x=0.5, y=0.5)\\n\",\n            \"Using model? True. Using affordances? True. Using affordances to mask model? True.\\n\",\n            \"Training step has been optimized.\\n\",\n            \"Target mu has been updated to: Point(x=1.5, y=1.5)\\n\",\n            \"i: 0, aff_loss: 0.7048008441925049, model_loss: 3.4398090839385986, collection_loop_time: 0.17, train_loop_time: 0.66\\n\",\n            \"i: 1000, aff_loss: 0.19042730331420898, model_loss: -1.7565302848815918, collection_loop_time: 0.19, train_loop_time: 0.00\\n\",\n            \"Target mu has been updated to: Point(x=0.5, y=0.5)\\n\",\n            \"i: 2000, aff_loss: 0.23882852494716644, model_loss: -1.7699742317199707, collection_loop_time: 0.18, train_loop_time: 0.00\\n\",\n            \"Target mu has been updated to: Point(x=1.5, y=1.5)\\n\",\n            \"i: 3000, aff_loss: 0.207383394241333, model_loss: -1.983075737953186, collection_loop_time: 0.17, train_loop_time: 0.00\\n\",\n            \"i: 4000, aff_loss: 0.1946447789669037, model_loss: -2.051856517791748, collection_loop_time: 0.19, train_loop_time: 0.00\\n\",\n            \"Target mu has been updated to: Point(x=0.5, y=0.5)\\n\",\n            \"i: 5000, aff_loss: 0.21516098082065582, model_loss: -1.9648913145065308, collection_loop_time: 0.17, train_loop_time: 0.00\\n\",\n            \"Target mu has been updated to: Point(x=1.5, y=1.5)\\n\",\n            \"i: 6000, aff_loss: 0.20555077493190765, model_loss: -1.8827911615371704, collection_loop_time: 0.18, train_loop_time: 0.00\\n\",\n            \"i: 7000, aff_loss: 0.17789226770401, model_loss: -2.0646157264709473, collection_loop_time: 0.28, train_loop_time: 0.00\\n\",\n            \"Target mu has been updated to: Point(x=0.5, y=0.5)\\n\"\n          ]\n        },\n        {\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 360x360 with 1 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"needs_background\": \"light\",\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        },\n        {\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 360x360 with 1 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"needs_background\": \"light\",\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"#@title Train affordance and transition model.\\n\",\n        \"# Trains num_repeats affordance and model networks.\\n\",\n        \"#@markdown Experiments to run.\\n\",\n        \"run_model = True  #@param {type:\\\"boolean\\\"}\\n\",\n        \"run_model_with_affordances = True  #@param {type:\\\"boolean\\\"}\\n\",\n        \"num_repeats =   1#@param {type:\\\"integer\\\"}\\n\",\n        \"\\n\",\n        \"#@markdown Training arguments\\n\",\n        \"# use_affordance_to_mask_model = True #@param {type:\\\"boolean\\\"}\\n\",\n        \"optimize_performance = True  #@param {type:\\\"boolean\\\"}\\n\",\n        \"model_learning_rate = 1e-2  #@param {type:\\\"number\\\"}\\n\",\n        \"affordance_learning_rate = 1e-1  #@param {type:\\\"number\\\"}\\n\",\n        \"max_num_transitions = 1000  #@param {type:\\\"integer\\\"}\\n\",\n        \"num_train_steps = 8000  #@param {type:\\\"integer\\\"}\\n\",\n        \"affordance_mask_threshold = 0.5  #@param {type:\\\"number\\\"}\\n\",\n        \"seed = 0  #@param {type:\\\"integer\\\"}\\n\",\n        \"intent_threshold = 0.05  #@param {type:\\\"number\\\"}\\n\",\n        \"\\n\",\n        \"#@markdown Environment arguments\\n\",\n        \"drift_speed = 0.001  #@param {type:\\\"number\\\"}\\n\",\n        \"max_action_force = 0.5  #@param {type:\\\"number\\\"}\\n\",\n        \"movement_noise = 0.1  #@param {type:\\\"number\\\"}\\n\",\n        \"max_episode_length = 100000  #@param {type:\\\"integer\\\"}\\n\",\n        \"\\n\",\n        \"input_size = 2\\n\",\n        \"action_size = 2\\n\",\n        \"intent_size = len(IntentName)\\n\",\n        \"hidden_nodes = 32\\n\",\n        \"world_size = 2\\n\",\n        \"\\n\",\n        \"affordance_mask_params = []\\n\",\n        \"if run_model:\\n\",\n        \"  affordance_mask_params.append(False)\\n\",\n        \"if run_model_with_affordances:\\n\",\n        \"  affordance_mask_params.append(True)\\n\",\n        \"\\n\",\n        \"print(f'Experiments that will be run: {affordance_mask_params}')\\n\",\n        \"\\n\",\n        \"for repeat_number in range(num_repeats):\\n\",\n        \"  all_losses = {}\\n\",\n        \"  model_networks = {}\\n\",\n        \"  affordance_networks = {}\\n\",\n        \"  new_seed = seed + repeat_number\\n\",\n        \"  for use_affordance_to_mask_model in affordance_mask_params:\\n\",\n        \"    print(f'Resetting seed to {new_seed}.')\\n\",\n        \"    np.random.seed(new_seed)\\n\",\n        \"    random.seed(new_seed)\\n\",\n        \"    tf.random.set_seed(new_seed)\\n\",\n        \"\\n\",\n        \"    affordance_network = tf.keras.Sequential([\\n\",\n        \"        tf.keras.layers.Dense(\\n\",\n        \"            hidden_nodes, activation=tf.keras.activations.relu),\\n\",\n        \"        tf.keras.layers.Dense(\\n\",\n        \"            hidden_nodes, activation=tf.keras.activations.relu),\\n\",\n        \"        tf.keras.layers.Dense(\\n\",\n        \"            intent_size, activation=tf.keras.activations.sigmoid),\\n\",\n        \"    ])\\n\",\n        \"\\n\",\n        \"    affordance_sgd = tf.keras.optimizers.Adam(\\n\",\n        \"        learning_rate=affordance_learning_rate)\\n\",\n        \"    model_sgd = tf.keras.optimizers.Adam(learning_rate=model_learning_rate)\\n\",\n        \"    model_network = TransitionModel(hidden_nodes, input_size)\\n\",\n        \"\\n\",\n        \"    # Store models for later use.\\n\",\n        \"    model_networks[use_affordance_to_mask_model] = model_network\\n\",\n        \"    affordance_networks[use_affordance_to_mask_model] = affordance_network\\n\",\n        \"\\n\",\n        \"    world = ContinuousWorld(\\n\",\n        \"        size=world_size,\\n\",\n        \"        # Slow drift speed to make the transition from L -\\u003e R slow.\\n\",\n        \"        drift_speed=drift_speed,\\n\",\n        \"        drift_between=(\\n\",\n        \"            # Drift between the two sides around the wall.\\n\",\n        \"            Point((1 / 4) * world_size, (1 / 4) * world_size),\\n\",\n        \"            Point((3 / 4) * world_size, (3 / 4) * world_size),\\n\",\n        \"        ),\\n\",\n        \"        max_action_force=max_action_force,\\n\",\n        \"        max_episode_length=max_episode_length,\\n\",\n        \"        movement_noise=movement_noise,\\n\",\n        \"        wall_pairs=[\\n\",\n        \"            (Point(1.0, 0.0), Point(1.0, 2.0)),\\n\",\n        \"        ],\\n\",\n        \"        verbose_reset=True)\\n\",\n        \"\\n\",\n        \"    fig = plt.figure(figsize=(5, 5))\\n\",\n        \"    ax = fig.add_subplot(1, 1, 1)\\n\",\n        \"\\n\",\n        \"    visualize_environment(\\n\",\n        \"        world, ax, scaling=1.0, draw_start_mu=False, draw_target_mu=False)\\n\",\n        \"\\n\",\n        \"    def _use_affordance_or_none(model):\\n\",\n        \"      if use_affordance_to_mask_model:\\n\",\n        \"        return model\\n\",\n        \"      else:\\n\",\n        \"        return None\\n\",\n        \"\\n\",\n        \"    model_loss, aff_loss, infos = train_networks(\\n\",\n        \"        world,\\n\",\n        \"        model_network=model_network,\\n\",\n        \"        model_optimizer=model_sgd,\\n\",\n        \"        affordance_network=_use_affordance_or_none(affordance_network),\\n\",\n        \"        affordance_optimizer=_use_affordance_or_none(affordance_sgd),\\n\",\n        \"        print_losses=True,\\n\",\n        \"        fresh_data=True,\\n\",\n        \"        affordance_mask_threshold=affordance_mask_threshold,\\n\",\n        \"        use_affordance_to_mask_model=use_affordance_to_mask_model,\\n\",\n        \"        max_num_transitions=max_num_transitions,\\n\",\n        \"        max_trajectory_length=None,\\n\",\n        \"        optimize_performance=optimize_performance,\\n\",\n        \"        num_train_steps=num_train_steps,\\n\",\n        \"        intent_threshold=intent_threshold,\\n\",\n        \"        print_every=1000)\\n\",\n        \"\\n\",\n        \"    all_losses[use_affordance_to_mask_model] = (model_loss, aff_loss, infos)\\n\",\n        \"\\n\",\n        \"  all_models_global.append(model_networks)\\n\",\n        \"  all_affordance_global.append(affordance_networks)\\n\",\n        \"  all_losses_global.append(all_losses)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"90KLuKumiRcB\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Save weights\\n\",\n        \"\\n\",\n        \"for seed, model_networks in enumerate(all_models_global):\\n\",\n        \"  model_networks[True].save_weights(\\n\",\n        \"      f'./affordances/seed_{seed}_model_networks_True/keras.weights')\\n\",\n        \"  model_networks[False].save_weights(\\n\",\n        \"      f'./affordances/seed_{seed}_model_networks_False/keras.weights')\\n\",\n        \"for seed, affordance_networks in enumerate(all_models_global):\\n\",\n        \"  affordance_networks[True].save_weights(\\n\",\n        \"      f'./affordances/seed_{seed}_affordance_networks_true/keras.weights')\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"g1iO3h6Ffucu\"\n      },\n      \"source\": [\n        \"# Visualizations\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"OQtxS_ovhJxt\"\n      },\n      \"source\": [\n        \"## Learning curves\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"06NPUpXDfyFf\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Code to collect results from a list of lists into a single array.\\n\",\n        \"def _collect_results(\\n\",\n        \"    all_losses_g,\\n\",\n        \"    using_affordances,\\n\",\n        \"    save_to_disk=False,\\n\",\n        \"    smooth_weight=0.99,\\n\",\n        \"    skip_first=10):\\n\",\n        \"  \\\"\\\"\\\"Collects results from the list of losses.\\\"\\\"\\\"\\n\",\n        \"  smoothed_curves = []\\n\",\n        \"  for seed, trace in enumerate(all_losses_g):\\n\",\n        \"    if save_to_disk:\\n\",\n        \"      np.save(f'./affordances/curve_seed_{seed}_{using_affordances}.npy',\\n\",\n        \"              np.array(trace[using_affordances][0]))\\n\",\n        \"    # Smooth the curves for plotting.\\n\",\n        \"    smoothed_curves.append(\\n\",\n        \"        apply_linear_smoothing(\\n\",\n        \"            trace[using_affordances][0][skip_first:], smooth_weight))\\n\",\n        \"  all_curves_stacked = np.stack(smoothed_curves)\\n\",\n        \"  mean_curve = np.mean(all_curves_stacked, 0)\\n\",\n        \"  std_curve = np.std(all_curves_stacked, 0)\\n\",\n        \"  return mean_curve, std_curve\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"R4elUiamgc-I\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Plot averaged learning curves.\\n\",\n        \"\\n\",\n        \"mean_curve_aff, std_curve_aff = _collect_results(\\n\",\n        \"    all_losses_global, True)\\n\",\n        \"mean_curve_normal, std_curve_normal = _collect_results(\\n\",\n        \"    all_losses_global, False)\\n\",\n        \"colors = ['r', 'k']\\n\",\n        \"plt.plot(\\n\",\n        \"    mean_curve_aff, color=colors[0], linewidth=4, label='With Affordance')\\n\",\n        \"plt.plot(\\n\",\n        \"    mean_curve_normal, color=colors[1], linewidth=4, label='without Affordance')\\n\",\n        \"\\n\",\n        \"plt.fill_between(\\n\",\n        \"    range(len(mean_curve_aff)),\\n\",\n        \"    mean_curve_aff+std_curve_aff,\\n\",\n        \"    mean_curve_aff-std_curve_aff,\\n\",\n        \"    alpha=0.25,\\n\",\n        \"    color=colors[0])\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"plt.fill_between(\\n\",\n        \"    range(len(mean_curve_normal)),\\n\",\n        \"    mean_curve_normal+std_curve_normal/np.sqrt(num_repeats),\\n\",\n        \"    mean_curve_normal-std_curve_normal/np.sqrt(num_repeats),\\n\",\n        \"    alpha=0.25,\\n\",\n        \"    color=colors[1])\\n\",\n        \"\\n\",\n        \"plt.ylim([-2.2, -1.2])\\n\",\n        \"plt.xticks(fontsize=15)\\n\",\n        \"plt.yticks(fontsize=15)\\n\",\n        \"plt.xticks([0, 2500, 5000, 7500],[0, 2500, 5000, 7500], fontsize=15)\\n\",\n        \"plt.legend(fontsize=15)\\n\",\n        \"plt.xlabel('Updates', fontsize=20)\\n\",\n        \"plt.ylabel(r'$-\\\\log \\\\hat{P}(s^\\\\prime|s,a)$',fontsize=20)\\n\",\n        \"plt.tight_layout()\\n\",\n        \"plt.savefig('./affordances/model_learning_avg_plot.pdf')\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"OSAm0ukchLqr\"\n      },\n      \"source\": [\n        \"## Intent heatmap plots\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 399\n        },\n        \"colab_type\": \"code\",\n        \"id\": \"1NeTHiZkhXKj\",\n        \"outputId\": \"2428756a-8685-4312-f3f3-1bf4be01188b\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stderr\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:56: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\\n\"\n          ]\n        },\n        {\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 360x360 with 5 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"needs_background\": \"light\",\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"#@title Evaluating action and plotting intent heatmaps.\\n\",\n        \"#@markdown What is the action?\\n\",\n        \"action_x_dir =  0.2 #@param {type:\\\"number\\\"}\\n\",\n        \"action_y_dir =  0.2 #@param {type:\\\"number\\\"}\\n\",\n        \"network_seed =  0  #@param {type:\\\"integer\\\"}\\n\",\n        \"\\n\",\n        \"# Cover the x-y grid.\\n\",\n        \"xs = np.linspace(0, world.size)\\n\",\n        \"ys = np.linspace(0, world.size)\\n\",\n        \"xy_coords = tf.constant(list(itertools.product(xs, ys)), dtype=tf.float32)\\n\",\n        \"\\n\",\n        \"eval_action = [action_x_dir, action_y_dir]\\n\",\n        \"fixed_action = tf.constant([eval_action], dtype=tf.float32)\\n\",\n        \"fixed_action = tf.repeat(fixed_action, 2500, axis=0)\\n\",\n        \"\\n\",\n        \"concat_matrix = tf.concat((xy_coords, fixed_action), axis=1)\\n\",\n        \"affordance_network = all_affordance_global[network_seed][True]\\n\",\n        \"afford_predictions = affordance_network(concat_matrix)\\n\",\n        \"affordance_predictions = tf.reshape(\\n\",\n        \"    afford_predictions,\\n\",\n        \"    (len(xs), len(ys), intent_size)).numpy()\\n\",\n        \"\\n\",\n        \"plot_intents(world, affordance_predictions, eval_action)\\n\",\n        \"\\n\",\n        \"plt.savefig(\\n\",\n        \"    f'intent_eval_FX{action_x_dir}_FY{action_y_dir}.pdf', bbox_inches='tight')\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"mOK_e3oqhrjI\"\n      },\n      \"source\": [\n        \"## Model Predictions\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"61Gb_tXKh3je\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Round annotation plotting code.\\n\",\n        \"ROUND_BOX = dict(boxstyle='round', facecolor='wheat', alpha=1.0)\\n\",\n        \"\\n\",\n        \"def add_annotation(\\n\",\n        \"    ax,\\n\",\n        \"    start: Tuple[float, float],\\n\",\n        \"    end: Tuple[float, float],\\n\",\n        \"    connectionstyle, text):\\n\",\n        \"  x1, y1 = start\\n\",\n        \"  x2, y2 = end\\n\",\n        \"\\n\",\n        \"  # ax.plot([x1, x2], [y1, y2], \\\".\\\")\\n\",\n        \"  ax.annotate(\\n\",\n        \"      \\\"\\\",\\n\",\n        \"      xy=(x1, y1),\\n\",\n        \"      xycoords='data',\\n\",\n        \"      xytext=(x2 + 0.25, y2),\\n\",\n        \"      textcoords='data',\\n\",\n        \"      size=30.0,\\n\",\n        \"      arrowprops=dict(arrowstyle=\\\"-\\u003e\\\", color=\\\"0.0\\\",\\n\",\n        \"                      shrinkA=5, shrinkB=5,\\n\",\n        \"                      patchA=None, patchB=None,\\n\",\n        \"                      connectionstyle=connectionstyle,),)\\n\",\n        \"\\n\",\n        \"  ax.text(*end, text, size=15,\\n\",\n        \"          #transform=ax.transAxes,\\n\",\n        \"          ha=\\\"left\\\", va=\\\"top\\\", bbox=ROUND_BOX)\\n\",\n        \"\\n\",\n        \"connection_styles = [\\n\",\n        \"  \\\"arc3,rad=-0.3\\\",\\n\",\n        \"  \\\"arc3,rad=0.3\\\",\\n\",\n        \"  \\\"arc3,rad=0.0\\\",\\n\",\n        \"  \\\"arc3,rad=0.5\\\",\\n\",\n        \"  \\\"arc3,rad=-0.5\\\"\\n\",\n        \"]\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"both\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 689\n        },\n        \"colab_type\": \"code\",\n        \"id\": \"ILHEEbHShwCb\",\n        \"outputId\": \"9bac0134-d9d1-46da-9283-975ede52250e\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Figures show the predicted position of the transition distribution.\\n\",\n            \"Gray circle shows what would have been predicted but was masked by affordance model. \\n\"\n          ]\n        },\n        {\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 360x360 with 1 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"needs_background\": \"light\",\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        },\n        {\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 360x360 with 1 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"needs_background\": \"light\",\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"#@title Plotting Model predictions.\\n\",\n        \"\\n\",\n        \"#@markdown Use affordance based model?\\n\",\n        \"affordance_mask_threshold = 0.5  #@param {type:\\\"number\\\"}\\n\",\n        \"network_seed =  0  #@param {type:\\\"integer\\\"}\\n\",\n        \"\\n\",\n        \"#@markdown What is the action?\\n\",\n        \"action_x_dir = +0.5  #@param {type:\\\"number\\\"}\\n\",\n        \"action_y_dir = 0.0  #@param {type:\\\"number\\\"}\\n\",\n        \"\\n\",\n        \"#@markdown Where is the agent?\\n\",\n        \"agent_x = 0.75  #@param {type:\\\"number\\\"}\\n\",\n        \"agent_y = 1.0  #@param {type:\\\"number\\\"}\\n\",\n        \"\\n\",\n        \"action = tf.constant([[action_x_dir, action_y_dir]])\\n\",\n        \"pos = tf.constant([[agent_x, agent_y]])\\n\",\n        \"\\n\",\n        \"affordance_networks = all_affordance_global[network_seed]\\n\",\n        \"model_networks = all_models_global[network_seed]\\n\",\n        \"\\n\",\n        \"scale_scale = 2.0\\n\",\n        \"\\n\",\n        \"for i, use_affordance_to_mask_model in enumerate([False, True]):\\n\",\n        \"  fig = plt.figure(figsize=(5, 5))\\n\",\n        \"  ax = fig.add_subplot(1, 1, 1)\\n\",\n        \"  transition_dist = model_networks[use_affordance_to_mask_model](pos, action)\\n\",\n        \"  transition_loc = tuple(transition_dist.loc[0].numpy())\\n\",\n        \"  transition_scale = tuple(transition_dist.scale[0].numpy() * scale_scale)\\n\",\n        \"\\n\",\n        \"  if use_affordance_to_mask_model:\\n\",\n        \"    aff_network = affordance_networks[use_affordance_to_mask_model]\\n\",\n        \"    AF = aff_network(tf.concat([pos, action], axis=1))\\n\",\n        \"    intents_completable = (AF \\u003e affordance_mask_threshold)[0].numpy()\\n\",\n        \"\\n\",\n        \"  visualize_environment(\\n\",\n        \"      world,\\n\",\n        \"      ax,\\n\",\n        \"      scaling=1.0,\\n\",\n        \"      draw_start_mu=False,\\n\",\n        \"      draw_target_mu=False,\\n\",\n        \"      draw_agent=False,\\n\",\n        \"      agent_size=0.1,\\n\",\n        \"      write_text=False)\\n\",\n        \"  ax.scatter([agent_x], [agent_y], s=150.0, c='green', marker='x')\\n\",\n        \"  ax.arrow(agent_x, agent_y, action_x_dir, action_y_dir, head_width=0.05)\\n\",\n        \"\\n\",\n        \"  if use_affordance_to_mask_model and not np.any(intents_completable):\\n\",\n        \"    color = 'gray'\\n\",\n        \"    alpha = 0.25\\n\",\n        \"    ellipse_text = '(Masked) '\\n\",\n        \"  else:\\n\",\n        \"    color = None\\n\",\n        \"    alpha = 0.7\\n\",\n        \"    ellipse_text = ''\\n\",\n        \"\\n\",\n        \"  elipse = mpl.patches.Ellipse(\\n\",\n        \"      transition_loc, *transition_scale, alpha=alpha, color=color)\\n\",\n        \"  ax.add_artist(elipse)\\n\",\n        \"\\n\",\n        \"  if use_affordance_to_mask_model:\\n\",\n        \"    string_built = ' Intent classificaiton\\\\n'\\n\",\n        \"    for a in list(zip(IntentName, intents_completable)):\\n\",\n        \"      string_built += ' ' + str(a[0])[-5:] + ':' + str(a[1])\\n\",\n        \"      string_built += '\\\\n'\\n\",\n        \"    ax.text(\\n\",\n        \"        0,\\n\",\n        \"        0,\\n\",\n        \"        string_built,\\n\",\n        \"    )\\n\",\n        \"\\n\",\n        \"  ax.set_xticks([0.0, 1.0, 2.0])\\n\",\n        \"  ax.set_xticklabels([0, 1.0, 2.0])\\n\",\n        \"\\n\",\n        \"  ax.set_yticks([0.0, 1.0, 2.0])\\n\",\n        \"  ax.set_yticklabels([0, 1.0, 2.0])\\n\",\n        \"\\n\",\n        \"  if use_affordance_to_mask_model:\\n\",\n        \"    title = 'Using affordances'\\n\",\n        \"  else:\\n\",\n        \"    title = 'Without affordances'\\n\",\n        \"  ax.set_title(title)\\n\",\n        \"  ax.legend([elipse], [ellipse_text + 'Predicted transition'])\\n\",\n        \"  file_name = (f'./empirical_demo{movement_noise}_P{agent_x}_{agent_y}_'\\n\",\n        \"               f'F{action_x_dir}_{action_x_dir}.pdf')\\n\",\n        \"  fig.savefig(file_name)\\n\",\n        \"\\n\",\n        \"print(\\n\",\n        \"    'Figures show the predicted position of the transition distribution.'\\n\",\n        \"    '\\\\nGray circle shows what would have been predicted but was masked by '\\n\",\n        \"    'affordance model. ')\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"5GHbTbNClfL-\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"name\": \"AffordancesInContinuousEnvironment.ipynb\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1W86NFSHwhnx-UEmAY_mhJJzUxPXY3JC4\",\n          \"timestamp\": 1591715576521\n        }\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "affordances_theory/AffordancesInDiscreteEnvironment.ipynb",
    "content": "{\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0,\n  \"metadata\": {\n    \"colab\": {\n      \"name\": \"AffordancesInDiscreteEnvironment.ipynb\",\n      \"provenance\": [],\n      \"collapsed_sections\": [],\n      \"toc_visible\": true\n    },\n    \"kernelspec\": {\n      \"name\": \"python3\",\n      \"display_name\": \"Python 3\"\n    }\n  },\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"AXY3q8CdsGAR\",\n        \"colab_type\": \"text\"\n      },\n      \"source\": [\n        \"Copyright 2020 The \\\"What Can I do Here? A Theory of Affordances In Reinforcement Learning\\\" Authors. All rights reserved.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"you may not use this file except in compliance with the License.\\n\",\n        \"You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"     https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software\\n\",\n        \"distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"See the License for the specific language governing permissions and\\n\",\n        \"limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"lJB5fq1g81z2\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 343\n        },\n        \"outputId\": \"83ca2438-9624-4a09-c936-3457a1b1ab9c\"\n      },\n      \"source\": [\n        \"#@title Click to Install and import libraries.\\n\",\n        \"# Please follow the instructions in the README for dependencies installation.\\n\",\n        \"!git clone https://github.com/kkhetarpal/emdp.git\\n\",\n        \"%cd emdp/\\n\",\n        \"!pip install -e .\\n\",\n        \"!pip install matplotlib==3.0.2\\n\",\n        \"\\n\",\n        \"#@title General Imports\\n\",\n        \"%tensorflow_version 2.x\\n\",\n        \"from collections import defaultdict\\n\",\n        \"import enum\\n\",\n        \"import functools\\n\",\n        \"import os\\n\",\n        \"import random\\n\",\n        \"import sys\\n\",\n        \"import time\\n\",\n        \"from datetime import datetime\\n\",\n        \"\\n\",\n        \"import emdp\\n\",\n        \"from emdp import actions\\n\",\n        \"from emdp.gridworld import GridWorldPlotter\\n\",\n        \"from emdp.gridworld import build_simple_grid\\n\",\n        \"from emdp.gridworld.builder_tools import TransitionMatrixBuilder\\n\",\n        \"from emdp.gridworld.env import GridWorldMDP\\n\",\n        \"from emdp.gridworld.helper_utilities import get_state_after_executing_action\\n\",\n        \"from emdp.gridworld.helper_utilities import check_can_take_action\\n\",\n        \"from emdp.gridworld.helper_utilities import get_possible_actions\\n\",\n        \"from emdp.gridworld.helper_utilities import get_state_after_executing_action\\n\",\n        \"from emdp.gridworld.txt_utilities import get_char_matrix\\n\",\n        \"from emdp.gridworld.txt_utilities import build_gridworld_from_char_matrix\\n\",\n        \"from emdp.examples.simple import build_four_rooms_example\\n\",\n        \"from emdp.utils import convert_int_rep_to_onehot, convert_onehot_to_int\\n\",\n        \"\\n\",\n        \"import matplotlib\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"import matplotlib.animation as animation\\n\",\n        \"import numpy as np\\n\",\n        \"from numpy.linalg import inv\\n\",\n        \"\\n\",\n        \"import seaborn as sns\\n\",\n        \"import tensorflow as tf\\n\",\n        \"\\n\",\n        \"color_ls = [[102, 120, 173],\\n\",\n        \"            [118, 167, 125], \\n\",\n        \"            [198, 113, 113], \\n\",\n        \"            [230, 169, 132],\\n\",\n        \"            [169, 193, 213],\\n\",\n        \"            [192, 197, 182],\\n\",\n        \"            [210, 180, 226]]\\n\",\n        \"colors = [[shade / 255.0 for shade in rgb] for rgb in color_ls]\\n\",\n        \"markers = ['o', 's', 'D', '^', '*', 'x', 'p', '+', 'v','|']\\n\",\n        \"\\n\",\n        \"DEFAULT_ARROW_COLOR = '#a65628'\"\n      ],\n      \"execution_count\": null,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"fatal: destination path 'emdp' already exists and is not an empty directory.\\n\",\n            \"/content/emdp\\n\",\n            \"Obtaining file:///content/emdp\\n\",\n            \"Requirement already satisfied: numpy>=1.9.1 in /usr/local/lib/python3.6/dist-packages (from emdp==0.0.4) (1.18.5)\\n\",\n            \"Installing collected packages: emdp\\n\",\n            \"  Found existing installation: emdp 0.0.4\\n\",\n            \"    Can't uninstall 'emdp'. No files were found to uninstall.\\n\",\n            \"  Running setup.py develop for emdp\\n\",\n            \"Successfully installed emdp\\n\",\n            \"Requirement already satisfied: matplotlib==3.0.2 in /usr/local/lib/python3.6/dist-packages (3.0.2)\\n\",\n            \"Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib==3.0.2) (0.10.0)\\n\",\n            \"Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib==3.0.2) (1.2.0)\\n\",\n            \"Requirement already satisfied: numpy>=1.10.0 in /usr/local/lib/python3.6/dist-packages (from matplotlib==3.0.2) (1.18.5)\\n\",\n            \"Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib==3.0.2) (2.8.1)\\n\",\n            \"Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib==3.0.2) (2.4.7)\\n\",\n            \"Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from cycler>=0.10->matplotlib==3.0.2) (1.12.0)\\n\"\n          ],\n          \"name\": \"stdout\"\n        },\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"/usr/local/lib/python3.6/dist-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.\\n\",\n            \"  import pandas.util.testing as tm\\n\"\n          ],\n          \"name\": \"stderr\"\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"gDpLK58xElDQ\",\n        \"colab_type\": \"text\"\n      },\n      \"source\": [\n        \"# Helper functions\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"Y6_lV_vUIhs3\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {}\n      },\n      \"source\": [\n        \"#@title Plotting and verifying matrices.\\n\",\n        \"def plot_environment(\\n\",\n        \"    mdp, ax, wall_locs=None, plot_grid=False,\\n\",\n        \"    grid_kwargs=None,\\n\",\n        \"    wall_color=(0, 0, 0, 1), # R, G, B, alpha\\n\",\n        \"    ):\\n\",\n        \"  \\\"\\\"\\\"Function to plot emdp environment\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      mdp: The MDP to use.\\n\",\n        \"      ax: The axes to plot this on.\\n\",\n        \"      wall_locs: Locations of the walls for plotting them in a different color.\\n\",\n        \"      plot_grid: Boolean indicating if the overlay grid should be plotted.\\n\",\n        \"      grid_kwargs: Grid keyword argrument specification.\\n\",\n        \"      wall_color: RGB color of the walls.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      ax: The axes of the final plot.\\n\",\n        \"      imshow_ax: The final plot.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  grid_kwargs = grid_kwargs or {}\\n\",\n        \"\\n\",\n        \"  # Plot states with white background.\\n\",\n        \"  state_background = np.ones((mdp.size, mdp.size))\\n\",\n        \"\\n\",\n        \"  # Walls appear in a different color.\\n\",\n        \"  wall_img = np.ones((mdp.size, mdp.size, 4))\\n\",\n        \"  if wall_locs is not None:\\n\",\n        \"    for state in wall_locs:\\n\",\n        \"      y_coord = state[0]\\n\",\n        \"      x_coord = state[1]\\n\",\n        \"      wall_img[y_coord, x_coord, :] = np.array(wall_color)\\n\",\n        \"\\n\",\n        \"  # Render the heatmap and overlay the walls.\\n\",\n        \"  imshow_ax = ax.imshow(state_background, interpolation=None)\\n\",\n        \"  imshow_ax = ax.imshow(wall_img, interpolation=None)\\n\",\n        \"  ax.grid(False)\\n\",\n        \"  \\n\",\n        \"  # Switch on flag if you want to plot grid \\n\",\n        \"  if plot_grid:\\n\",\n        \"    for i in range(mdp.size + 1):\\n\",\n        \"      ax.plot(\\n\",\n        \"          np.arange(mdp.size + 1) - 0.5,\\n\",\n        \"          np.ones(mdp.size + 1) * i - 0.5,\\n\",\n        \"          **grid_kwargs)\\n\",\n        \"\\n\",\n        \"    for i in range(mdp.size + 1):\\n\",\n        \"      ax.plot(\\n\",\n        \"          np.ones(mdp.size + 1) * i - 0.5,\\n\",\n        \"          np.arange(mdp.size + 1) - 0.5,\\n\",\n        \"          **grid_kwargs)\\n\",\n        \"    ax.set_xlabel('x')\\n\",\n        \"    ax.set_ylabel('y')\\n\",\n        \"\\n\",\n        \"  return ax, imshow_ax\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_current_state_integer(state_):\\n\",\n        \"  return np.argmax(state_, axis=0)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_stateid(x, y, size):\\n\",\n        \"  \\\"\\\"\\\"Converts an (x, y) coordinate into the state id.\\\"\\\"\\\"\\n\",\n        \"  return size * x + y\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def _is_absorbing(state_int, mdp_size):\\n\",\n        \"  \\\"\\\"\\\"Checks if the state_int is an absorbing state\\\"\\\"\\\"\\n\",\n        \"  return state_int == mdp_size * mdp_size\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def _checking_P(P):\\n\",\n        \"  \\\"\\\"\\\"Checks if the P matrix is valid.\\\"\\\"\\\"\\n\",\n        \"  assert np.all(P <= 1.0) and np.all(P >= 0.0)\\n\",\n        \"  assert not np.allclose(P, 1.0)\\n\",\n        \"  assert not np.allclose(P, 0.0)\\n\"\n      ],\n      \"execution_count\": null,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"I9SJJN8aTuKL\",\n        \"colab_type\": \"text\"\n      },\n      \"source\": [\n        \"## Grid World Environment\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"bmdjTf1-Dd4a\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 332\n        },\n        \"outputId\": \"8df6e3ee-a090-4a96-8f42-96e31bdfeed5\"\n      },\n      \"source\": [\n        \"#@title Create the one room example.\\n\",\n        \"_ONE_ROOM_TXT = \\\"\\\"\\\"#############\\n\",\n        \"#           #\\n\",\n        \"#         g #\\n\",\n        \"#     #     #\\n\",\n        \"#     #     #\\n\",\n        \"#     #     #\\n\",\n        \"#     #     #\\n\",\n        \"#  #######  #\\n\",\n        \"#           #\\n\",\n        \"#           #\\n\",\n        \"#           #\\n\",\n        \"#s          #\\n\",\n        \"#############\\\"\\\"\\\".split('\\\\n')\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def build_one_room_example(gamma=0.99, seed=2017, p_success=1.0):\\n\",\n        \"  char_matrix = get_char_matrix(_ONE_ROOM_TXT)\\n\",\n        \"  return build_gridworld_from_char_matrix(\\n\",\n        \"      char_matrix, p_success=p_success, seed=seed, gamma=gamma)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"mdp, mdp_wall_locs = build_one_room_example()\\n\",\n        \"\\n\",\n        \"gwp = GridWorldPlotter.from_mdp(mdp)\\n\",\n        \"\\n\",\n        \"fig = plt.figure(figsize=(10, 4))\\n\",\n        \"ax = fig.add_subplot(121)\\n\",\n        \"\\n\",\n        \"plot_environment(mdp, ax, wall_locs=mdp_wall_locs, plot_grid=True, \\n\",\n        \"                 grid_kwargs={'color':(220 / 255, 220 / 255, 220 / 255, 0.8)})\\n\"\n      ],\n      \"execution_count\": 48,\n      \"outputs\": [\n        {\n          \"output_type\": \"execute_result\",\n          \"data\": {\n            \"text/plain\": [\n              \"(<matplotlib.axes._subplots.AxesSubplot at 0x7fb1ec8b8be0>,\\n\",\n              \" <matplotlib.image.AxesImage at 0x7fb1e52d89e8>)\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"execution_count\": 48\n        },\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"<Figure size 720x288 with 1 Axes>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"zui4ITyyAjFY\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {}\n      },\n      \"source\": [\n        \"# @title Functions for building transition matrices and affordance grids.\\n\",\n        \"\\n\",\n        \"def build_simple_grid_stochastic_states(\\n\",\n        \"    size=5, terminal_states=[], p_success=1):\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"    Builds a simple grid where an agent can move LEFT, RIGHT, UP or DOWN\\n\",\n        \"    and actions success with probability p_success.\\n\",\n        \"    A terminal state is added if len(terminal_states) > 0 and will return matrix\\n\",\n        \"    of size (|S|+1)x|A|x(|S|+1). Moving into walls does nothing.\\n\",\n        \"\\n\",\n        \"    Note that this is a function modified from emdp package to customise mdp\\n\",\n        \"    transitions.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      size: size of the grid world\\n\",\n        \"      terminal_state: the location of terminal states: a list of (x, y) tuples\\n\",\n        \"      p_success: the probabilty that an action will be successful.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      P: transition matrix of size (|S|+1)x|A|x(|S|+1).\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"  n_actions = 4\\n\",\n        \"  p_fail = 1 - p_success\\n\",\n        \"\\n\",\n        \"  n_states = size * size\\n\",\n        \"  # The number of entries in the state vector corresponding to grid itself.\\n\",\n        \"  grid_states = n_states\\n\",\n        \"  # Add an entry to state vector for terminal state.\\n\",\n        \"  if len(terminal_states) > 0:\\n\",\n        \"    n_states += 1\\n\",\n        \"  terminal_states = list(\\n\",\n        \"      map(lambda tupl: int(size * tupl[0] + tupl[1]), terminal_states))\\n\",\n        \"\\n\",\n        \"  # this helper function creates the state transition list for\\n\",\n        \"  # taking an action in a state\\n\",\n        \"  def create_state_list_for_action(state_idx, action, p_success):\\n\",\n        \"    p_success = p_success\\n\",\n        \"    p_fail = 1 - p_success\\n\",\n        \"    transition_probs = np.zeros(n_states)\\n\",\n        \"    if state_idx in terminal_states:\\n\",\n        \"      # no matter what action you take you should go to the absorbing state\\n\",\n        \"      transition_probs[-1] = 1\\n\",\n        \"    elif state_idx == n_states - 1 and len(terminal_states) > 0:\\n\",\n        \"      # absorbing state, you should just transition back here whatever action you take.\\n\",\n        \"      transition_probs[-1] = 1\\n\",\n        \"\\n\",\n        \"    elif action in [actions.LEFT, actions.RIGHT, actions.UP, actions.DOWN]:\\n\",\n        \"      # valid action, now see if we can actually execute this action\\n\",\n        \"      # in this state:\\n\",\n        \"      # TODO: distinguish between capability of slipping and taking wrong action vs failing to execute action.\\n\",\n        \"      if check_can_take_action(action, state_idx, size):\\n\",\n        \"        # yes we can\\n\",\n        \"        possible_actions = get_possible_actions(state_idx, size)\\n\",\n        \"        if action in possible_actions:\\n\",\n        \"          transition_probs[get_state_after_executing_action(\\n\",\n        \"              action, state_idx, size)] = p_success\\n\",\n        \"          possible_actions.remove(action)\\n\",\n        \"        for other_action in possible_actions:\\n\",\n        \"          transition_probs[get_state_after_executing_action(\\n\",\n        \"              other_action, state_idx, size)] = p_fail / len(possible_actions)\\n\",\n        \"\\n\",\n        \"      else:\\n\",\n        \"        possible_actions = get_possible_actions(state_idx, size)\\n\",\n        \"        transition_probs[\\n\",\n        \"            state_idx] = p_success  # cant take action, stay in same place\\n\",\n        \"        for other_action in possible_actions:\\n\",\n        \"          transition_probs[get_state_after_executing_action(\\n\",\n        \"              other_action, state_idx, size)] = p_fail / len(possible_actions)\\n\",\n        \"\\n\",\n        \"    else:\\n\",\n        \"      raise InvalidActionError(\\n\",\n        \"          'Invalid action {} in the 2D gridworld'.format(action))\\n\",\n        \"    return transition_probs\\n\",\n        \"\\n\",\n        \"  P = np.zeros((n_states, n_actions, n_states))\\n\",\n        \"  for s in range(n_states):\\n\",\n        \"    for a in range(n_actions):\\n\",\n        \"      # MDP states are considered stochastic such that the probability\\n\",\n        \"      # of success of a s,a pair is different for diff states,\\n\",\n        \"      # in particular between the range of  [0.1, 1.0]\\n\",\n        \"      p_success = random.uniform(0.10, 1.0)\\n\",\n        \"      P[s, a, :] = create_state_list_for_action(s, a, p_success)\\n\",\n        \"\\n\",\n        \"  return P\\n\",\n        \"\\n\",\n        \"def _unit_test_P(P):\\n\",\n        \"  assert np.allclose(P.sum(axis=2), 1), 'P matrix is not stochastic!'\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def build_affordance_grid(\\n\",\n        \"    affordances, size=13, p_success=1.0, terminal_states=()):\\n\",\n        \"  \\\"\\\"\\\"Builds a backbone for intent induced mdp transition matrix\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    affordances: AF of shape |S| * |A|\\n\",\n        \"    size: The grid size of the mdp.\\n\",\n        \"    p_success: The probability of success for a transition.\\n\",\n        \"    mdp: Environment specified as mdp.\\n\",\n        \"    terminal_states: List of terminal states.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    Returns model dynamics array of shape |S| x |A| x |S|\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  p_fail = 1 - p_success\\n\",\n        \"\\n\",\n        \"  n_states = size * size\\n\",\n        \"  grid_states = n_states  # the number of entries of the state vector\\n\",\n        \"  # corresponding to the grid itself.\\n\",\n        \"  if len(terminal_states) > 0:\\n\",\n        \"    n_states += 1  # add an entry to state vector for terminal state\\n\",\n        \"  terminal_states = list(\\n\",\n        \"      map(lambda tupl: int(size * tupl[0] + tupl[1]), terminal_states))\\n\",\n        \"\\n\",\n        \"  def create_state_list_for_action(state_idx, action):\\n\",\n        \"    transition_probs = np.zeros(n_states)\\n\",\n        \"    if state_idx in terminal_states:\\n\",\n        \"      # no matter what action you take you should go to the absorbing state\\n\",\n        \"      transition_probs[-1] = 1\\n\",\n        \"    elif state_idx == n_states - 1 and len(terminal_states) > 0:\\n\",\n        \"      # absorbing state, you should just transition back here whatever action you take.\\n\",\n        \"      transition_probs[-1] = 1\\n\",\n        \"\\n\",\n        \"    elif action in [actions.LEFT, actions.RIGHT, actions.UP, actions.DOWN]:\\n\",\n        \"      # valid action, now see if we can actually execute this action\\n\",\n        \"      # in this state:\\n\",\n        \"      if check_can_take_action(action, state_idx, size):\\n\",\n        \"        # yes we can\\n\",\n        \"        possible_actions = get_possible_actions(state_idx, size)\\n\",\n        \"        if action in possible_actions:\\n\",\n        \"          transition_probs[get_state_after_executing_action(\\n\",\n        \"              action, state_idx, size)] = p_success\\n\",\n        \"          possible_actions.remove(action)\\n\",\n        \"        for other_action in possible_actions:\\n\",\n        \"          transition_probs[get_state_after_executing_action(\\n\",\n        \"              other_action, state_idx, size)] = p_fail / len(possible_actions)\\n\",\n        \"\\n\",\n        \"      else:\\n\",\n        \"        possible_actions = get_possible_actions(state_idx, size)\\n\",\n        \"        transition_probs[\\n\",\n        \"            state_idx] = p_success  # cant take action, stay in same place\\n\",\n        \"        for other_action in possible_actions:\\n\",\n        \"          transition_probs[get_state_after_executing_action(\\n\",\n        \"              other_action, state_idx, size)] = p_fail / len(possible_actions)\\n\",\n        \"    else:\\n\",\n        \"      raise InvalidActionError(\\n\",\n        \"          'Invalid action {} in the 2D gridworld'.format(action))\\n\",\n        \"    return transition_probs\\n\",\n        \"\\n\",\n        \"  n_states = size * size\\n\",\n        \"  n_actions = 4\\n\",\n        \"  if len(terminal_states) > 0:\\n\",\n        \"    n_states += 1  # add an entry to state vector for terminal state\\n\",\n        \"\\n\",\n        \"  P = np.zeros((n_states, n_actions, n_states))\\n\",\n        \"  for s in range(n_states):\\n\",\n        \"    for a in range(n_actions):\\n\",\n        \"      if affordances[s, a] != 0.:\\n\",\n        \"        P[s, a, :] = create_state_list_for_action(s, a)\\n\",\n        \"      else:\\n\",\n        \"        P[s, a, s] = 1.0\\n\",\n        \"  return P\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def _construct_dynamics(mdp, affordances, size, p_success=1.0, wall_locs=None):\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"    Function to construct transition dynamics P\\n\",\n        \"    Args:\\n\",\n        \"      mdp: The mdp.\\n\",\n        \"      affordances: The wall locations of the mdp.\\n\",\n        \"      size: The grid size of the mdp.\\n\",\n        \"      p_success: Probability of success.\\n\",\n        \"      wall_locs: The location of the walls in the mdp.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      P: initialized transition matrix of shape |S| x |A| x |S|\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  if wall_locs is None:\\n\",\n        \"    raise ValueError('Please give me wall locations.')\\n\",\n        \"\\n\",\n        \"  grid_size = mdp.size\\n\",\n        \"\\n\",\n        \"  assert len(mdp.terminal_states) == 1, 'Only one terminal state supported.'\\n\",\n        \"  goal_loc = mdp.unflatten_state(\\n\",\n        \"      convert_int_rep_to_onehot(mdp.terminal_states[0], mdp.state_space))\\n\",\n        \"  # Attempt to make the desired gridworld.\\n\",\n        \"  reward_spec = {(goal_loc[0], goal_loc[1]): +1}\\n\",\n        \"\\n\",\n        \"  tmb = TransitionMatrixBuilder(grid_size, has_terminal_state=True)\\n\",\n        \"\\n\",\n        \"  # For the purposes of constructing the dynamics matrix\\n\",\n        \"  # and to match the way the library deals with MDPs, we set the\\n\",\n        \"  # walls to have affordable actions.\\n\",\n        \"  # affordances = affordances.copy()\\n\",\n        \"  # affordances[wall_locs, :] = 1\\n\",\n        \"  terminal_states = reward_spec.keys()\\n\",\n        \"  basic_affordance_grid = build_affordance_grid(\\n\",\n        \"      affordances,\\n\",\n        \"      size=mdp.size,\\n\",\n        \"      p_success=p_success,\\n\",\n        \"      terminal_states=terminal_states)\\n\",\n        \"\\n\",\n        \"  tmb._P = basic_affordance_grid\\n\",\n        \"  for (r, c) in wall_locs:\\n\",\n        \"    tmb.add_wall_at((r, c))\\n\",\n        \"  P = tmb.P\\n\",\n        \"  _unit_test_P(P)\\n\",\n        \"  _checking_P(P)\\n\",\n        \"  return P\\n\"\n      ],\n      \"execution_count\": null,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"cT39F8t1VHLQ\",\n        \"colab_type\": \"text\"\n      },\n      \"source\": [\n        \"## Affordances\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"A4sm9YlzrSP3\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {}\n      },\n      \"source\": [\n        \"#@title Function to compute intent completion.\\n\",\n        \"def _get_intent_completed(\\n\",\n        \"    mdp, state, action, statet,\\n\",\n        \"    threshold=0.0,\\n\",\n        \"    intent_name='collection',\\n\",\n        \"    P_AF=None):\\n\",\n        \"  \\\"\\\"\\\"Determines if a transition completed an intent.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    mdp: The MDP to evaluate the intent on.\\n\",\n        \"    state: The one hot representation of the current state\\n\",\n        \"    action: The integer representation of the action (currently unused).\\n\",\n        \"    statet: The state after taking the action.\\n\",\n        \"    threshold: The threshold to select actions with\\n\",\n        \"    intent_name: The name of the intent to calculate. Three intents are\\n\",\n        \"      currently supported \\\"collection\\\", \\\"up\\\" and \\\"left\\\". Collection is the union\\n\",\n        \"      over all intents.\\n\",\n        \"    P_AF: A probability transition matrix for the affordances.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    An integer that represents if the intent is completed.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  x_t, y_t = mdp.unflatten_state(state)\\n\",\n        \"  x_tp1, y_tp1 = mdp.unflatten_state(statet)\\n\",\n        \"\\n\",\n        \"  delta_x = x_t - x_tp1\\n\",\n        \"  delta_y = y_t - y_tp1\\n\",\n        \"\\n\",\n        \"  state_int = convert_onehot_to_int(state)\\n\",\n        \"  next_state_int = convert_onehot_to_int(statet)\\n\",\n        \"\\n\",\n        \"  # Select affordable actions based on the threshold.\\n\",\n        \"  # Default value is True for default threshold=0.0\\n\",\n        \"  prob_gt_threshold = True\\n\",\n        \"  if P_AF is not None:\\n\",\n        \"    prob_of_going_there = P_AF[state_int, action, next_state_int]\\n\",\n        \"  else:\\n\",\n        \"    prob_of_going_there = mdp.P[state_int, action, next_state_int]\\n\",\n        \"  prob_gt_threshold = prob_of_going_there >= threshold\\n\",\n        \"\\n\",\n        \"  if intent_name == 'collection':\\n\",\n        \"    # If the agent has moved in any direction return a 1.0.\\n\",\n        \"    if (int(delta_x) or int(delta_y)) and prob_gt_threshold:\\n\",\n        \"      return 1.0\\n\",\n        \"    else:\\n\",\n        \"      return 0.0\\n\",\n        \"  elif intent_name == 'up':\\n\",\n        \"    if not(_is_absorbing(next_state_int, mdp.size)):\\n\",\n        \"      if (x_tp1 < x_t) and prob_gt_threshold:\\n\",\n        \"        return 1.0\\n\",\n        \"      else:\\n\",\n        \"        return 0.0\\n\",\n        \"    else:\\n\",\n        \"      if action==actions.UP:\\n\",\n        \"        return 1.0\\n\",\n        \"      else:\\n\",\n        \"        return 0.0\\n\",\n        \"  elif intent_name == 'left':\\n\",\n        \"    if not(_is_absorbing(next_state_int, mdp.size)):\\n\",\n        \"      if (y_tp1 < y_t)  and prob_gt_threshold:\\n\",\n        \"        return 1.0\\n\",\n        \"      else:\\n\",\n        \"        return 0.0\\n\",\n        \"    else:\\n\",\n        \"      if action==actions.LEFT:\\n\",\n        \"        return 1.0\\n\",\n        \"      else:\\n\",\n        \"        return 0.0\\n\",\n        \"  else:\\n\",\n        \"    print(\\\"Not a valid Intent, See _get_intent_completed\\\")\"\n      ],\n      \"execution_count\": null,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"colab_type\": \"code\",\n        \"id\": \"nCjcsWdWTJmp\",\n        \"cellView\": \"form\",\n        \"colab\": {}\n      },\n      \"source\": [\n        \"#@title Function to compute the affordances from an intent completion function.\\n\",\n        \"def _compute_affordances(\\n\",\n        \"    mdp, n_states, n_actions, intent_name,\\n\",\n        \"    threshold, mdp_wall_locs):\\n\",\n        \"  '''\\n\",\n        \"  Args:\\n\",\n        \"    n_states: number of states in mdp\\n\",\n        \"    n_actions: number of actions in mdp \\n\",\n        \"    intent_name: name of the intent collection, up, etc.\\n\",\n        \"    threshold: float value between 0-1\\n\",\n        \"    mdp_wall_locs: list of mdp wall locations\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    Affordances in the form of a |S| * |A| array. The array has entries of\\n\",\n        \"    1.0 or 0.0 based on  the intent I_a(s') is true or not respectively.\\n\",\n        \"  '''\\n\",\n        \"  affordances = np.zeros((n_states, n_actions))\\n\",\n        \"  for s in range(n_states):\\n\",\n        \"    x_t, y_t = mdp.unflatten_state(\\n\",\n        \"        convert_int_rep_to_onehot(s, mdp.state_space))\\n\",\n        \"    if (x_t, y_t) in mdp_wall_locs:\\n\",\n        \"      # You're in a wall nothing is affordable.\\n\",\n        \"      continue\\n\",\n        \"    for a in range(n_actions):\\n\",\n        \"      if not(_is_absorbing(s, mdp.size)):\\n\",\n        \"        s_next = get_state_after_executing_action(a, s, mdp.size)\\n\",\n        \"        x, y = mdp.unflatten_state(\\n\",\n        \"            convert_int_rep_to_onehot(s_next, mdp.state_space))\\n\",\n        \"        if (x,y) in mdp_wall_locs:\\n\",\n        \"          s_next = s\\n\",\n        \"        intent = _get_intent_completed(\\n\",\n        \"            mdp, state=convert_int_rep_to_onehot(s, mdp.state_space),\\n\",\n        \"            action=a, statet=convert_int_rep_to_onehot(\\n\",\n        \"                s_next, mdp.state_space),\\n\",\n        \"            threshold=threshold, intent_name=intent_name)\\n\",\n        \"        affordances[s, a] = intent\\n\",\n        \"\\n\",\n        \"    # Hard code terminal states to be affordable since all actions are possible.\\n\",\n        \"    if s in mdp.terminal_states:\\n\",\n        \"      affordances[s, :] = 1.0\\n\",\n        \"  # Hard code absorbing state to be affordable (Environmental quirk).\\n\",\n        \"  affordances[-1, :] = 1.0\\n\",\n        \"  return affordances\"\n      ],\n      \"execution_count\": null,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"kUZ6lanOJcTV\",\n        \"colab_type\": \"text\"\n      },\n      \"source\": [\n        \"## Value Iteration and Policy Evaluation algorithms\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"E5delmlK9xFf\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {}\n      },\n      \"source\": [\n        \"#@title Code for value iteration.\\n\",\n        \"# We build this function on the following base code:\\n\",\n        \"# https://github.com/andrecianflone/policy_value_iteration\\n\",\n        \"def value_iteration(\\n\",\n        \"    r, p, theta=0.0001, gamma=0.99, max_iteration=100,\\n\",\n        \"    AF=None, seed=None, min_mask_value=-10, mdp_wall_locs=None):\\n\",\n        \"  \\\"\\\"\\\"Value iteration computes value & policy for a reward and transiton matrix.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      r: Rewards, array of shape |S| x |A|.\\n\",\n        \"      p: State transition probabilities, array of shape |S| x |A| x |S|.\\n\",\n        \"      theta: Stop if the change in value fn is less than this value.\\n\",\n        \"      gamma: Discount factor.\\n\",\n        \"      max_iteration: Maximum number of iterations to run VI.\\n\",\n        \"      AF: Affordances of shape |S| x |A|.\\n\",\n        \"      seed: Seed value for randomness.\\n\",\n        \"      min_mask_value: An optional check for values to not be negative.\\n\",\n        \"      mdp_wall_locs: Wall locations in the mdp.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      pi: Policy, |S| x |A|.\\n\",\n        \"      v: State values, |S|.\\n\",\n        \"      it: Number of iterations.\\n\",\n        \"      seconds: Planning time in seconds.\\n\",\n        \"      v_log: Log of value functions from init to convergence.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  if AF is not None:\\n\",\n        \"    AF = AF.copy()\\n\",\n        \"    assert mdp_wall_locs is not None, 'If AF is given, wall locs must also be given.'\\n\",\n        \"  if seed is not None:\\n\",\n        \"    np.random.seed(seed)\\n\",\n        \"    random.seed(seed)\\n\",\n        \"  t1 = datetime.now()\\n\",\n        \"  n_states, n_actions = p.shape[:2]\\n\",\n        \"  v = np.zeros(n_states)\\n\",\n        \"  v_log = np.zeros((max_iteration + 1, n_states))\\n\",\n        \"\\n\",\n        \"  if mdp_wall_locs:\\n\",\n        \"    wall_states_idx = list(\\n\",\n        \"        map(convert_onehot_to_int, map(mdp.flatten_state, mdp_wall_locs)))\\n\",\n        \"\\n\",\n        \"  # Mask out walls to be zero. But uncovered states should be -inf.\\n\",\n        \"  if AF is not None:\\n\",\n        \"    # Accounting for emdp environment behaviour.\\n\",\n        \"    AF[wall_states_idx] = 1\\n\",\n        \"    mask = np.logical_not(AF).astype(np.float32)\\n\",\n        \"  for it in range(max_iteration+1):\\n\",\n        \"    q = r + gamma * np.einsum('ijk, k->ij', p, v)\\n\",\n        \"    minimum_v = np.min(q)\\n\",\n        \"\\n\",\n        \"    if AF is not None:\\n\",\n        \"      q = AF * q + mask * minimum_v\\n\",\n        \"    \\n\",\n        \"    v_new = np.max(q, axis=1)\\n\",\n        \"    if np.all(np.absolute(v-v_new) < theta):\\n\",\n        \"      v = v_new\\n\",\n        \"      v_log[it, :] = v\\n\",\n        \"      v_iters = v_log[:it, :]\\n\",\n        \"      break\\n\",\n        \"    v = v_new\\n\",\n        \"    v_log[it, :] = v\\n\",\n        \"    v_iters = v_log[:it, :]\\n\",\n        \"\\n\",\n        \"  # Greedy policy extraction.\\n\",\n        \"  q_values = r + gamma * np.einsum('ijk, k->ij', p, v_new)\\n\",\n        \"  if AF is not None:\\n\",\n        \"    q_values = q_values * AF + mask * minimum_v\\n\",\n        \"\\n\",\n        \"  # Use \\\"random\\\" argmax with stochastic tie-breaking:\\n\",\n        \"  rargmax = lambda arr: np.random.choice(np.flatnonzero(arr))\\n\",\n        \"  best_actions = np.apply_along_axis(\\n\",\n        \"      rargmax, 1, np.isclose(q_values, q_values.max(-1, keepdims=True)))\\n\",\n        \"  pi = np.eye(r.shape[1])[best_actions]\\n\",\n        \"  assert pi.shape == r.shape\\n\",\n        \" \\n\",\n        \"  t2 = datetime.now()\\n\",\n        \"  seconds = (t2 - t1).total_seconds()\\n\",\n        \"  return pi, v, it+1, seconds, v_log\"\n      ],\n      \"execution_count\": null,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"72u1xS4tKM7R\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {}\n      },\n      \"source\": [\n        \"#@title Code for policy evaluation.\\n\",\n        \"\\n\",\n        \"def _policy_evaluation_exact(pi, r, p, gamma=0.99):\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    Evaluate policy by taking the inverse\\n\",\n        \"    Args:\\n\",\n        \"      pi: Policy, array of shape |S| x |A|.\\n\",\n        \"      r: Rewards, array of shape |S| x |A|.\\n\",\n        \"      p: State transition probabilities, array of shape |S| x |A| x |S|.\\n\",\n        \"    Return:\\n\",\n        \"      v: 1D array with updated state values\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    # Rewards according to policy: Hadamard product and row-wise sum\\n\",\n        \"    r_pi = np.einsum('ij,ij->i', pi, r)\\n\",\n        \"\\n\",\n        \"    # Policy-weighted transitions:\\n\",\n        \"    # multiply p by pi by broadcasting pi, then sum second axis\\n\",\n        \"    # result is an array of shape |S| x |S|\\n\",\n        \"    p_pi = np.einsum('ijk, ij->ik', p, pi)\\n\",\n        \"    v = np.dot(inv((np.eye(p_pi.shape[0]) - gamma*p_pi)), r_pi)\\n\",\n        \"    return v\"\n      ],\n      \"execution_count\": null,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"xVH35aHyLfj9\",\n        \"colab_type\": \"text\"\n      },\n      \"source\": [\n        \"#Sec 6.1 Experiment 1: Planning with Intents\\n\",\n        \"Evaluating the impact of intents and affordances on planning.  $||V^{\\\\pi^{*}_{I}}_{M}  - V^{\\\\pi^{*}}_{M}||_{n}$\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"LG2pxLBcSqC2\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 329\n        },\n        \"outputId\": \"6af0376f-9a4d-4488-bd61-cdd0850ee95e\"\n      },\n      \"source\": [\n        \"#@title Evaluate policy obtained from MDP M vs I in original MDP M\\n\",\n        \"#------------------------------------------------------------------------#\\n\",\n        \"# 1. Compute optimal value function and optimal policy in I \\n\",\n        \"# 2. Policy Evaluation in MDP M\\n\",\n        \"# 3. Report planning time in M vs I \\n\",\n        \"# 4. Report L2 value loss \\n\",\n        \"#------------------------------------------------------------------------#\\n\",\n        \"\\n\",\n        \"p_success_probs = [1.0, 0.75, 0.50, 0.40, 0.30, 0.25]\\n\",\n        \"thresholds = [0, 0.15, 0.25, 0.35, 0.45, 0.65, 0.75, 1.0]\\n\",\n        \"max_iterations = 10000\\n\",\n        \"\\n\",\n        \"# Initialize empty arrays to store results.\\n\",\n        \"valuefn_I = np.zeros(\\n\",\n        \"    (len(p_success_probs), len(thresholds), max_iterations+1, mdp.state_space))\\n\",\n        \"v_pi_star_I_M_thresholds = np.zeros(\\n\",\n        \"    (len(p_success_probs), len(thresholds), mdp.state_space))\\n\",\n        \"V_star_I_plan_time = np.zeros((len(p_success_probs), len(thresholds)))\\n\",\n        \"V_star_M_plan_time = np.zeros(len(p_success_probs))\\n\",\n        \"v_pi_star_M_M = np.zeros((len(p_success_probs), mdp.state_space))\\n\",\n        \"\\n\",\n        \"# Stores the ratio of |AF|/(|S| x |A|)\\n\",\n        \"AF_SA_size_ratio = np.zeros((len(p_success_probs), len(thresholds)))\\n\",\n        \"\\n\",\n        \"# Iterate over the thresholds and success probs to create data for the plot.\\n\",\n        \"for idx_p, p_success in enumerate(p_success_probs):\\n\",\n        \"  for ind, k in enumerate(thresholds):\\n\",\n        \"    # Create an mdp with a success prob of p_success\\n\",\n        \"    mdp, mdp_wall_locs = build_one_room_example(p_success=p_success)\\n\",\n        \"\\n\",\n        \"    # |S| x |A| size in base MDP M.\\n\",\n        \"    state_action_space = mdp.state_space * mdp.action_space\\n\",\n        \"\\n\",\n        \"    # Compute affordance matrix.\\n\",\n        \"    AF = _compute_affordances(\\n\",\n        \"        mdp=mdp,\\n\",\n        \"        n_states=mdp.state_space,\\n\",\n        \"        n_actions=mdp.action_space,\\n\",\n        \"        intent_name=\\\"collection\\\",\\n\",\n        \"        threshold=k,\\n\",\n        \"        mdp_wall_locs=mdp_wall_locs)\\n\",\n        \"    \\n\",\n        \"    # |S| x |A| size in intended MDP M_I\\n\",\n        \"    AF_size = np.count_nonzero(AF)\\n\",\n        \"    AF_SA_size_ratio[idx_p, ind] = AF_size/state_action_space\\n\",\n        \"    \\n\",\n        \"    #construct P_I with a determinsitic probability\\n\",\n        \"    P_affordances = _construct_dynamics(\\n\",\n        \"        mdp, affordances=AF, size=mdp.size, p_success=1.0,\\n\",\n        \"        wall_locs=mdp_wall_locs)\\n\",\n        \"\\n\",\n        \"    _checking_P(P_affordances)\\n\",\n        \"\\n\",\n        \"    try:\\n\",\n        \"      # Compute optimal value function in MDP I with affordances\\n\",\n        \"      (policy_star_I, V_star_I, _,\\n\",\n        \"      V_star_I_seconds, V_star_I_iters) = value_iteration(\\n\",\n        \"          mdp.R, P_affordances, max_iteration=max_iterations,\\n\",\n        \"          AF=AF, mdp_wall_locs=mdp_wall_locs)\\n\",\n        \"    except RuntimeError:\\n\",\n        \"      print(f'No affordances found for threshold={k}, p_success={p_success}.')\\n\",\n        \"      continue\\n\",\n        \"    \\n\",\n        \"    V_star_I_plan_time[idx_p, ind] = V_star_I_seconds\\n\",\n        \"    \\n\",\n        \"    # Evaluate the optimal policies from MDP I in the original mdp M.\\n\",\n        \"    v_pi_star_I_M_thresholds[idx_p, ind, :] = _policy_evaluation_exact(\\n\",\n        \"        pi=policy_star_I, \\n\",\n        \"        r=mdp.R, p=mdp.P, \\n\",\n        \"        gamma=mdp.gamma)\\n\",\n        \"  \\n\",\n        \"  # Compute optimal value function in original mdp.P\\n\",\n        \"  V_star_M = np.zeros(mdp.state_space)\\n\",\n        \"  (policy_star_M, V_star_M, _,\\n\",\n        \"   V_star_M_seconds, V_star_M_iters) = value_iteration(\\n\",\n        \"       mdp.R, mdp.P, max_iteration=max_iterations)\\n\",\n        \"\\n\",\n        \"  V_star_M_plan_time[idx_p] = V_star_M_seconds\\n\",\n        \"\\n\",\n        \"  # Evaluate the optimal policies in M in the original environment M \\n\",\n        \"  v_pi_star_M_M[idx_p] = _policy_evaluation_exact(\\n\",\n        \"      pi=policy_star_M, \\n\",\n        \"      r=mdp.R, \\n\",\n        \"      p=mdp.P, \\n\",\n        \"      gamma=mdp.gamma)\\n\",\n        \"\\n\",\n        \"# Compute the absolute error wrto the ground mdp.\\n\",\n        \"value_loss_to_plot = np.zeros((len(p_success_probs), len(thresholds)))\\n\",\n        \"for p_id in range(len(p_success_probs)):\\n\",\n        \"  for _thresh in range(len(thresholds)):\\n\",\n        \"      value_loss_to_plot[p_id, _thresh] = np.linalg.norm(\\n\",\n        \"          abs(v_pi_star_M_M[p_id, :] - \\n\",\n        \"              v_pi_star_I_M_thresholds[p_id, _thresh, :])\\n\",\n        \"          )\\n\",\n        \"\\n\",\n        \"fig, ax = plt.subplots()\\n\",\n        \"x_axis = np.linspace(0, 1, len(thresholds))\\n\",\n        \"for i in range(value_loss_to_plot.shape[0]):\\n\",\n        \"  ax.plot(\\n\",\n        \"      x_axis, value_loss_to_plot[i, :], color=colors[i],\\n\",\n        \"      label='p={}'.format(p_success_probs[i]), linewidth=3.00,\\n\",\n        \"      marker=markers[i], markersize=14)\\n\",\n        \"\\n\",\n        \"ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.19),\\n\",\n        \"          fancybox=True, shadow=True, ncol=7,\\n\",\n        \"          facecolor='w', fontsize=10)\\n\",\n        \"ax.set_xlabel(\\\"Threshold $\\\\kappa$\\\", fontsize=18)\\n\",\n        \"ax.set_ylabel(\\\"$ ||V^{\\\\pi^{*}_{I}}_M - V^{*}_M||_2$\\\", fontsize=18) \\n\",\n        \"plt.title(\\\"Planning with Intents\\\")\\n\",\n        \"matplotlib.rc('axes', edgecolor='black')\\n\",\n        \"plt.show()\"\n      ],\n      \"execution_count\": null,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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6SbeeOONiPSlMtG23ZtvvsmNN96IiDBp0iSampqor68PWn7nzp0cOXKEr33ta7GUb4toDdlDJMacqPZMJp2iZA8xiJbj3XYnT55k0aJFLFy4sFs67fL+1v2srNrW6VF/vHP3XP3xli5l3t+6P6LrxLvdzj77bACcTidtbW2elGrCCGTMsTLkeLZdnz59mDZtGgA5OTlMmDCB2touA6mjwvbwwP/54z/G5ILVe451OdezP/tekNLuY6qreeGFF7j00ku59dZbWbp0KXV1daxd2/WW0zlz5nRKJYSioaGBc845h+xsqxmKi4upq6uzWRP7PLzin+N2rifn/DRk+Wjarq6ujqFDh3q3e9plyJAhAa+xYsUKZs+e3ekD/Yc//IGqqirKysp4+umnO50vFqy/776YncvV3s62X/7S+3ryokVBy8a7PW+55RaysrK45pprWLhwYcy/JOtXPhH5Qa4OWndvonX3ppDFhnz/kZD749l2jz76KPfffz99+vSJoGL2WVm1LWwZ/565QD11B4+f7HKu7085P+R54/2emz59Ohs3buRb3/qWN0CJJe/9dVX4QsAnn20M+ToQl3/1WyH3J+L7r6mpibfeeou7777bu607339pMWZ/6NChXHrppQDccMMNLF68OKMi2niSiLZbsWIFL7/8svf1d77zHebOnUtubi7PPvssN910E2vWrInpNZNFPNvzlVdeoaioiJaWFq655hpefvllbrzxxpicOxWIV9t9/PHH7N69m6effpp9+/Z1+3ypRrw/w6tXr+b06dNcf/31rFmzhm9+85sxO3eyiXfbOZ1O5s6dy1133cXIkdbtWt39/ksLU/aPFkSEe++9t9uR8oABA2hqasLpdJKdnU1tbS1FRUUx0ZwqRNN2RUVFHDhwwLs9VLts2bIFp9PJxIkTvdsGDPgi5TRv3jweeihz7q2OZ3t6tuXl5XHdddexcePGjDLleLXd+vXr+fDDDxk+fDhOp5MjR44wdepU3n333bjUI9HE+zMM0Lt3b2bNmsWbb76ZUaYc77a7/fbbKS0t9Q5yhe5//9k2Zf8U86LnqqjecyyiiwGMGlnAffOnRHTM/v37Wb9+PZMnT+bVV1/lsssu4/7774/42v6ICNOmTeP1119nzpw5vPTSS8yaNavb5/XHP8XcnXR2uHS1P9G0XUVFBc888wxz5szhgw8+ID8/P2jq5ne/+x1z587ttK2+vt5bvrKykvLy8og028GTYu5unzKAo1cvRtucUCRe7el0OmlqaqKgoID29nbefvttrrjiiqjrFIxgKebmTato3bvliwFegXBk0WfEOPInzojq2vFquwULFngH4+zbt49vf/vbMTfkUCnmhhOneO/Tv+PscHXZl53lYOrYYfTPOyvqa8er3U6ePElLSwtDhgzB6XTypz/9KS7jQsKlmP37kGM5yCue338LFy6kubm5y+jq7n7/RT3Q68opZeTmRBZo5+ZkM/3yURFfa9SoUSxZsoTy8nIaGxtDjsD0cOjQIYqLi1m0aBGPP/44xcXFnDhxAoCZM2dy8OBBAJ588kkWLVpESUkJDQ0N3HbbbRHrS2WiabuZM2cycuRISkpKmD9/PkuXLvXuGzduXKeyK1eu7GLKixcvZsyYMVx00UUsXryY5cuXx6QugcgvLWX0vHk4QgzoC0Ukhgzxa88zZ84wffp0xo4dy7hx4ygqKmL+/PlR1SlSuoy4DkY3R2LH+72YLBpPnup0T3KWz+yFxhiOt5wKdJht4tVun3/+ORUVFd733KBBg7jjjju6pTVSAhlwJPcxhyNebVdbW8sTTzzBtm3bmDBhQqdbn7r7/Rdu7mvjm5b0xeUyPPLUX2hsPmXrtigR6J/fh8cfnB7RlJueX75bt261fUyqk6hIORPbLhjRRMyRGnKmtqetKNlDlNFyprYdwPrttRw4egKHQ+jdK5vx5xWyefdhTrc5cRnDuQPPZlJ5cVTnzuR2CxcRdzdiTvW227RpE4899tgLwD9XVlYe9GyPOlJ2OIR7br2M3rnZhBsgKgK9c7O5+9ZLdQ5sJS5EGjFHasiZiu0o2UOS71tORY63nEKAogF5zLj4PIoKzmbGxefxDwPyEKChm5FyJmLHcGMZMacTUZsyQOHAPH78g2n0yz8raCo7Nyeb/vl9+PEPplE4MC/iawwfPjxlf+mkOj2t7ewac7SGnIntGfC+5HBEcd9yJradh7yzcrm4bAiTy4vJzrK+UrOzHHz1/GIuLhtC3lm5UZ87E9stkgi4O8acrm3X7dHXhQPzeOLBGWzfdYTV71Wz50AjTmcH2dlZjBzaj+mXj6K8ZJBGyD707d036lWilNB4jDlYKlsj5M60NdTZj5I9uDpoa4jNRAmZwJQLzw26b8TgfowY3C+BalKflpPNEaWkPcbccrI5o+a/DkY4UzYulyvkohRgpbLHlBUypqwwdsoyGF1+Mb4EM2Y15K4MvDK+U6Aqij/RLL/YL39ARhmyy+UKumBJSLd1OBw7Dh061OFydR3qryipjH8qWw1ZUZRUwOVyUV9f7zp9+nTAe4pDRsoul+vK+vr6NQcPHixN9JyoihILHFOm4NqwAcekSew6cQI2hZ4qUlEUJZ4YYzh9+vTxl1566ffAWUCnSdND3hIFUFFRIcBVwDVAYtb1UhRFUZTMxgEsr6ysrPLdGNaUwWvMg4Gz46NNURRFUXoMBmiqrKzsspaxLVNWFEVRFCX+dOs+ZUVRFEVRYoeasqIoiqKkCGrKiqIoipIi/DcDCH5gMg1xgwAAAABJRU5ErkJggg==\\n\",\n            \"text/plain\": [\n              \"<Figure size 432x288 with 1 Axes>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": [],\n            \"needs_background\": \"light\"\n          }\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"wWgD4QVJoNR3\",\n        \"colab_type\": \"text\"\n      },\n      \"source\": [\n        \"# Sec 6.2 Experiment 2: Planning time with & w/o Affordances\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"WlY_AIqwGiqf\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {}\n      },\n      \"source\": [\n        \"#@title Utility to create One-room and Pachinko Environments\\n\",\n        \"\\n\",\n        \"# One-Room gridsize_dict\\n\",\n        \"ONE_ROOM_DIFF_GRIDSIZES = {\\n\",\n        \"    7: \\\"\\\"\\\"#######\\n\",\n        \"#     #\\n\",\n        \"#   g #\\n\",\n        \"#  #  #\\n\",\n        \"# ### #\\n\",\n        \"#s    #\\n\",\n        \"#######\\\"\\\"\\\".split('\\\\n'),\\n\",\n        \"    9: \\\"\\\"\\\"#########\\n\",\n        \"#       #\\n\",\n        \"#     g #\\n\",\n        \"#       #\\n\",\n        \"#       #\\n\",\n        \"#       #\\n\",\n        \"#       #\\n\",\n        \"#s      #\\n\",\n        \"#########\\\"\\\"\\\".split('\\\\n'),\\n\",\n        \"    13: \\\"\\\"\\\"#############\\n\",\n        \"#           #\\n\",\n        \"#         g #\\n\",\n        \"#     #     #\\n\",\n        \"#     #     #\\n\",\n        \"#     #     #\\n\",\n        \"#     #     #\\n\",\n        \"#  #######  #\\n\",\n        \"#           #\\n\",\n        \"#           #\\n\",\n        \"#           #\\n\",\n        \"#s          #\\n\",\n        \"#############\\\"\\\"\\\".split('\\\\n'),\\n\",\n        \"    15: \\\"\\\"\\\"###############\\n\",\n        \"#             #\\n\",\n        \"#           g #\\n\",\n        \"#             #\\n\",\n        \"#             #\\n\",\n        \"#             #\\n\",\n        \"#             #\\n\",\n        \"#             #\\n\",\n        \"#             #\\n\",\n        \"#             #\\n\",\n        \"#             #\\n\",\n        \"#             #\\n\",\n        \"#             #\\n\",\n        \"#s            #\\n\",\n        \"###############\\\"\\\"\\\".split('\\\\n'),\\n\",\n        \"    17: \\\"\\\"\\\"#################\\n\",\n        \"#               #\\n\",\n        \"#             g #\\n\",\n        \"#       #       #\\n\",\n        \"#       #       #\\n\",\n        \"#       #       #\\n\",\n        \"#       #       #\\n\",\n        \"#       #       #\\n\",\n        \"#       #       #\\n\",\n        \"#  ###########  #\\n\",\n        \"#               #\\n\",\n        \"#               #\\n\",\n        \"#               #\\n\",\n        \"#               #\\n\",\n        \"#               #\\n\",\n        \"#s              #\\n\",\n        \"#################\\\"\\\"\\\".split('\\\\n'),\\n\",\n        \"    19: \\\"\\\"\\\"###################\\n\",\n        \"#                 #\\n\",\n        \"#               g #\\n\",\n        \"#        #        #\\n\",\n        \"#        #        #\\n\",\n        \"#        #        #\\n\",\n        \"#        #        #\\n\",\n        \"#        #        #\\n\",\n        \"#        #        #\\n\",\n        \"#        #        #\\n\",\n        \"#  #############  #\\n\",\n        \"#                 #\\n\",\n        \"#                 #\\n\",\n        \"#                 #\\n\",\n        \"#                 #\\n\",\n        \"#                 #\\n\",\n        \"#                 #\\n\",\n        \"#s                #\\n\",\n        \"###################\\\"\\\"\\\".split('\\\\n'),\\n\",\n        \"    25: \\\"\\\"\\\"#########################\\n\",\n        \"#                       #\\n\",\n        \"#                     g #\\n\",\n        \"#                       #\\n\",\n        \"#                       #\\n\",\n        \"#                       #\\n\",\n        \"#           #           #\\n\",\n        \"#           #           #\\n\",\n        \"#           #           #\\n\",\n        \"#           #           #\\n\",\n        \"#           #           #\\n\",\n        \"#           #           #\\n\",\n        \"#           #           #\\n\",\n        \"#   #################   #\\n\",\n        \"#                       #\\n\",\n        \"#                       #\\n\",\n        \"#                       #\\n\",\n        \"#                       #\\n\",\n        \"#                       #\\n\",\n        \"#                       #\\n\",\n        \"#                       #\\n\",\n        \"#                       #\\n\",\n        \"#                       #\\n\",\n        \"#s                      #\\n\",\n        \"#########################\\\"\\\"\\\".split('\\\\n')\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"def build_one_room_gridsize(gamma=0.99, seed=2017,p_success=1.0, grid_size=13):\\n\",\n        \"  _ONE_ROOM_TXT = ONE_ROOM_DIFF_GRIDSIZES[grid_size]\\n\",\n        \"  char_matrix = get_char_matrix(_ONE_ROOM_TXT)\\n\",\n        \"  return build_gridworld_from_char_matrix(\\n\",\n        \"      char_matrix, p_success=p_success, seed=seed, gamma=gamma)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# pachinko_gridsize_dict\\n\",\n        \"PACHINKO_DIFF_GRIDSIZES = {\\n\",\n        \"    7: \\\"\\\"\\\"#######\\n\",\n        \"#     #\\n\",\n        \"# # # #\\n\",\n        \"#  g  #\\n\",\n        \"# # # #\\n\",\n        \"# s   #\\n\",\n        \"#######\\\"\\\"\\\".split('\\\\n'),\\n\",\n        \"    9: \\\"\\\"\\\"#########\\n\",\n        \"#       #\\n\",\n        \"# # # # #\\n\",\n        \"#    g  #\\n\",\n        \"# # # # #\\n\",\n        \"#       #\\n\",\n        \"# # # # #\\n\",\n        \"# s     #\\n\",\n        \"#########\\\"\\\"\\\".split('\\\\n'),\\n\",\n        \"    13: \\\"\\\"\\\"#############\\n\",\n        \"#           #\\n\",\n        \"# # # # # # #\\n\",\n        \"#        g  #\\n\",\n        \"# # # # # # #\\n\",\n        \"#           #\\n\",\n        \"# # # # # # #\\n\",\n        \"#           #\\n\",\n        \"# # # # # # #\\n\",\n        \"#           #\\n\",\n        \"# # # # # # #\\n\",\n        \"# s         #\\n\",\n        \"#############\\\"\\\"\\\".split('\\\\n'),\\n\",\n        \"    15: \\\"\\\"\\\"###############\\n\",\n        \"#             #\\n\",\n        \"# # # # # # # #\\n\",\n        \"#          g  #\\n\",\n        \"# # # # # # # #\\n\",\n        \"#             #\\n\",\n        \"# # # # # # # #\\n\",\n        \"#             #\\n\",\n        \"# # # # # # # #\\n\",\n        \"#             #\\n\",\n        \"# # # # # # # #\\n\",\n        \"#             #\\n\",\n        \"# # # # # # # #\\n\",\n        \"# s           #\\n\",\n        \"###############\\\"\\\"\\\".split('\\\\n'),\\n\",\n        \"    17: \\\"\\\"\\\"#################\\n\",\n        \"#               #\\n\",\n        \"# # # # # # # # #\\n\",\n        \"#            g  #\\n\",\n        \"# # # # # # # # #\\n\",\n        \"#               #\\n\",\n        \"# # # # # # # # #\\n\",\n        \"#               #\\n\",\n        \"# # # # # # # # #\\n\",\n        \"#               #\\n\",\n        \"# # # # # # # # #\\n\",\n        \"#               #\\n\",\n        \"# # # # # # # # #\\n\",\n        \"#               #\\n\",\n        \"# # # # # # # # #\\n\",\n        \"# s             #\\n\",\n        \"#################\\\"\\\"\\\".split('\\\\n'),\\n\",\n        \"    19: \\\"\\\"\\\"###################\\n\",\n        \"#                 #\\n\",\n        \"# # # # # # # # # #\\n\",\n        \"#              g  #\\n\",\n        \"# # # # # # # # # #\\n\",\n        \"#                 #\\n\",\n        \"# # # # # # # # # #\\n\",\n        \"#                 #\\n\",\n        \"# # # # # # # # # #\\n\",\n        \"#                 #\\n\",\n        \"# # # # # # # # # #\\n\",\n        \"#                 #\\n\",\n        \"# # # # # # # # # #\\n\",\n        \"#                 #\\n\",\n        \"# # # # # # # # # #\\n\",\n        \"#                 #\\n\",\n        \"# # # # # # # # # #\\n\",\n        \"# s               #\\n\",\n        \"###################\\\"\\\"\\\".split('\\\\n'),\\n\",\n        \"    25: \\\"\\\"\\\"#########################\\n\",\n        \"#                       #\\n\",\n        \"# # # # # # # # # # # # #\\n\",\n        \"#                    g  #\\n\",\n        \"# # # # # # # # # # # # #\\n\",\n        \"#                       #\\n\",\n        \"# # # # # # # # # # # # #\\n\",\n        \"#                       #\\n\",\n        \"# # # # # # # # # # # # #\\n\",\n        \"#                       #\\n\",\n        \"# # # # # # # # # # # # #\\n\",\n        \"#                       #\\n\",\n        \"# # # # # # # # # # # # #\\n\",\n        \"#                       #\\n\",\n        \"# # # # # # # # # # # # #\\n\",\n        \"#                       #\\n\",\n        \"# # # # # # # # # # # # #\\n\",\n        \"#                       #\\n\",\n        \"# # # # # # # # # # # # #\\n\",\n        \"#                       #\\n\",\n        \"# # # # # # # # # # # # #\\n\",\n        \"#                       #\\n\",\n        \"# # # # # # # # # # # # #\\n\",\n        \"# s                     #\\n\",\n        \"#########################\\\"\\\"\\\".split('\\\\n')\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"def build_pachinko_gridsize(gamma=0.99, seed=2017,p_success=1.0, grid_size=13):\\n\",\n        \"  _PACHINKO_ROOMS_TXT = PACHINKO_DIFF_GRIDSIZES[grid_size]\\n\",\n        \"  char_matrix = get_char_matrix(_PACHINKO_ROOMS_TXT)\\n\",\n        \"  return build_gridworld_from_char_matrix(\\n\",\n        \"      char_matrix, p_success=p_success, seed=seed, gamma=gamma)\\n\",\n        \"\\n\"\n      ],\n      \"execution_count\": null,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"VYFvBmjloZ85\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 245\n        },\n        \"outputId\": \"bad5093c-0733-4244-89d8-57dfa6d87cd5\"\n      },\n      \"source\": [\n        \"#@title Planning Time with Increasing Grid Size: One-Room\\n\",\n        \"#------------------------------------------------------------------------#\\n\",\n        \"# 1. MDP's will have p_success 0.5\\n\",\n        \"# 2. Choose a threshold of 0.5 for AF computation\\n\",\n        \"# 3. For different factors in range(factors):\\n\",\n        \"#    Compute V_star_M, V_star_M_I\\n\",\n        \"#    Planning time for each\\n\",\n        \"#    Return V_star_M, V_star_M_I plan times\\n\",\n        \"# 4. Multiple runs to account for randomness\\n\",\n        \"#------------------------------------------------------------------------#\\n\",\n        \"\\n\",\n        \"seed = 10000 \\n\",\n        \"p_success = 0.5\\n\",\n        \"threshold = 0.5\\n\",\n        \"max_iterations = 10000\\n\",\n        \"nruns = 10\\n\",\n        \"grid_sizes = [7, 9, 13, 15, 17, 19, 25] \\n\",\n        \"\\n\",\n        \"V_star_I_plan_time = np.zeros((len(grid_sizes), nruns))\\n\",\n        \"V_star_M_plan_time = np.zeros((len(grid_sizes), nruns))\\n\",\n        \"\\n\",\n        \"# Run VI for MDP M\\n\",\n        \"for size_idx, size_val in enumerate(grid_sizes):\\n\",\n        \"  for run_id in range(nruns):\\n\",\n        \"    # Create an mdp with grid size size_val, fixed p\\n\",\n        \"    _mdp, _mdp_walls = build_one_room_gridsize(\\n\",\n        \"        grid_size=size_val, p_success=p_success)\\n\",\n        \"\\n\",\n        \"    # Compute V* in original _mdp.P\\n\",\n        \"    (policy_star_M, V_star_M, _,\\n\",\n        \"    V_star_M_seconds, V_star_M_iters) = value_iteration(\\n\",\n        \"        _mdp.R, _mdp.P, max_iteration=max_iterations, \\n\",\n        \"        seed=seed+run_id)\\n\",\n        \"  \\n\",\n        \"    V_star_M_plan_time[size_idx, run_id] = V_star_M_seconds\\n\",\n        \"\\n\",\n        \"    # Compute Affordances AF based on intent I\\n\",\n        \"    _AF = _compute_affordances(mdp=_mdp,\\n\",\n        \"                              n_states=_mdp.state_space,\\n\",\n        \"                              n_actions=_mdp.action_space,\\n\",\n        \"                              intent_name=\\\"collection\\\",\\n\",\n        \"                              threshold=threshold,\\n\",\n        \"                              mdp_wall_locs=_mdp_walls)\\n\",\n        \"\\n\",\n        \"    #construct P_I with a determinsitic probability\\n\",\n        \"    _P_affordances = _construct_dynamics(_mdp,\\n\",\n        \"                                        affordances=_AF,\\n\",\n        \"                                        size=_mdp.size,\\n\",\n        \"                                        p_success=1.0,\\n\",\n        \"                                         wall_locs=_mdp_walls)\\n\",\n        \"    _checking_P(_P_affordances)\\n\",\n        \"\\n\",\n        \"    # Compute V*_I in mdp M_I with AF\\n\",\n        \"    (policy_star_I, V_star_I, _,\\n\",\n        \"    V_star_I_seconds, V_star_I_iters) = value_iteration(\\n\",\n        \"        _mdp.R,  _P_affordances, max_iteration=max_iterations,\\n\",\n        \"        seed=seed+run_id)\\n\",\n        \"    \\n\",\n        \"    V_star_I_plan_time[size_idx, run_id] = V_star_I_seconds\\n\",\n        \"\\n\",\n        \"V_star_I_plan_time_avg = np.mean(V_star_I_plan_time, axis=1)\\n\",\n        \"V_star_I_plan_time_std = np.std(V_star_I_plan_time, axis=1)\\n\",\n        \"V_star_I_plan_time_CI = V_star_I_plan_time_std/np.sqrt(nruns)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"V_star_M_plan_time_avg = np.mean(V_star_M_plan_time, axis=1)\\n\",\n        \"V_star_M_plan_time_std = np.std(V_star_M_plan_time, axis=1)\\n\",\n        \"V_star_M_plan_time_CI = V_star_M_plan_time_std/np.sqrt(nruns) \\n\",\n        \"\\n\",\n        \"#@title Plot Planning Time: TwoRooms\\n\",\n        \"fig = plt.figure(figsize=(4,3.5))\\n\",\n        \"ax1 = fig.add_subplot(1,1,1)\\n\",\n        \"# sns.set_context(\\\"paper\\\")\\n\",\n        \"sns.set_style('white')\\n\",\n        \"sns.set_context(\\\"paper\\\", font_scale=1.85)\\n\",\n        \"\\n\",\n        \"fig.patch.set_facecolor('1.0')\\n\",\n        \"\\n\",\n        \"plt.grid(False)\\n\",\n        \"x_axis = grid_sizes\\n\",\n        \"xi = list(range(len(x_axis)))\\n\",\n        \"\\n\",\n        \"ax1.plot(xi, V_star_I_plan_time_avg, color = colors[1],  label = '$V^{*}_{M_I}$', \\n\",\n        \"         linewidth=4.00, marker=markers[1], markersize=10)\\n\",\n        \"ax1.fill_between(xi, V_star_I_plan_time_avg-V_star_I_plan_time_CI,\\n\",\n        \"                   V_star_I_plan_time_avg+V_star_I_plan_time_CI,\\n\",\n        \"                   facecolor=colors[1], edgecolor=colors[1], alpha=0.5)\\n\",\n        \"\\n\",\n        \"ax1.plot(xi, V_star_M_plan_time_avg, color = colors[3],  label = '$V^{*}_{M}$',\\n\",\n        \"         linewidth=4.00, marker=markers[3], markersize=10)\\n\",\n        \"ax1.fill_between(xi, V_star_M_plan_time_avg-V_star_M_plan_time_CI,\\n\",\n        \"                   V_star_M_plan_time_avg+V_star_M_plan_time_CI,\\n\",\n        \"                   facecolor=colors[3], edgecolor=colors[3], alpha=0.5)\\n\",\n        \"\\n\",\n        \"ax1.legend(loc='upper left', bbox_to_anchor=(0.05, 0.9),\\n\",\n        \"          fancybox=True, shadow=True, ncol=1,\\n\",\n        \"          facecolor='w', fontsize=15)\\n\",\n        \"ax1.set_xlabel(\\\"Grid size\\\", fontsize=16)\\n\",\n        \"ax1.set_ylabel(\\\"Planning Time\\\\n(seconds)\\\", fontsize=16) \\n\",\n        \"xticks_pos = [0, 3, 6]\\n\",\n        \"ax1.set_xticks(xticks_pos)\\n\",\n        \"ax1.set_xticklabels([grid_sizes[i] for i in xticks_pos])\\n\",\n        \"fig.tight_layout()\\n\",\n        \"\\n\",\n        \"plt.show()\\n\"\n      ],\n      \"execution_count\": null,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"<Figure size 288x252 with 1 Axes>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"CyIEYxUubTNw\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 245\n        },\n        \"outputId\": \"e68a7f32-bc80-4d00-9a45-25e6bc673fa9\"\n      },\n      \"source\": [\n        \"#@title Planning Time with Increasing Grid Size: Pachinko\\n\",\n        \"#------------------------------------------------------------------------#\\n\",\n        \"# 1. MDP's will have p_success 0.5\\n\",\n        \"# 2. Choose a threshold of 0.5 for AF computation\\n\",\n        \"# 3. For different factors in range(factors):\\n\",\n        \"#    Compute V_star_M, V_star_M_I\\n\",\n        \"#    Planning time for each\\n\",\n        \"#    Return V_star_M, V_star_M_I plan times\\n\",\n        \"#------------------------------------------------------------------------#\\n\",\n        \"\\n\",\n        \"seed = 10000\\n\",\n        \"p_success = 0.5\\n\",\n        \"threshold = 0.5\\n\",\n        \"max_iterations = 20000\\n\",\n        \"grid_sizes = [7, 9, 13, 15, 17, 19, 25] \\n\",\n        \"nruns = 10\\n\",\n        \"\\n\",\n        \"outer_dir = os.path.dirname('/content/')\\n\",\n        \"dir_name = \\\"planning_valueloss\\\"\\n\",\n        \"dir_name = os.path.join(outer_dir, dir_name)\\n\",\n        \"if not os.path.exists(dir_name):\\n\",\n        \"  os.makedirs(dir_name)\\n\",\n        \"\\n\",\n        \"V_star_I_plan_time = np.zeros((len(grid_sizes), nruns))\\n\",\n        \"V_star_M_plan_time = np.zeros((len(grid_sizes), nruns))\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# Run VI for MDP M\\n\",\n        \"for size_idx, size_val in enumerate(grid_sizes):\\n\",\n        \"  for run_id in range(nruns):\\n\",\n        \"    # Create an mdp with grid size size_val, fixed p\\n\",\n        \"    _mdp, _mdp_walls = build_pachinko_gridsize(\\n\",\n        \"        grid_size=size_val, p_success=p_success)\\n\",\n        \"\\n\",\n        \"    # Compute V* in original _mdp.P\\n\",\n        \"    (policy_star_M, V_star_M, _,\\n\",\n        \"    V_star_M_seconds, V_star_M_iters) = value_iteration(\\n\",\n        \"        _mdp.R, _mdp.P, max_iteration=max_iterations,\\n\",\n        \"        seed=seed+run_id)\\n\",\n        \"  \\n\",\n        \"    V_star_M_plan_time[size_idx, run_id] = V_star_M_seconds\\n\",\n        \"\\n\",\n        \"    # Compute Affordances AF based on intent I\\n\",\n        \"    _AF = _compute_affordances(mdp=_mdp,\\n\",\n        \"                              n_states=_mdp.state_space,\\n\",\n        \"                              n_actions=_mdp.action_space,\\n\",\n        \"                              intent_name=\\\"collection\\\",\\n\",\n        \"                              threshold=threshold,\\n\",\n        \"                              mdp_wall_locs=_mdp_walls)\\n\",\n        \"    \\n\",\n        \"    \\n\",\n        \"    #construct P_I with a determinsitic probability\\n\",\n        \"    _P_affordances = _construct_dynamics(_mdp,\\n\",\n        \"                                        affordances=_AF,\\n\",\n        \"                                        size=_mdp.size,\\n\",\n        \"                                        p_success=1.0,\\n\",\n        \"                                        wall_locs=_mdp_walls)\\n\",\n        \"    _checking_P(_P_affordances)\\n\",\n        \"\\n\",\n        \"    # Compute V*_I in mdp M_I with AF\\n\",\n        \"    (policy_star_I, V_star_I, _,\\n\",\n        \"    V_star_I_seconds, V_star_I_iters) = value_iteration(\\n\",\n        \"        _mdp.R,  _P_affordances, max_iteration=max_iterations,\\n\",\n        \"        seed=seed+run_id)\\n\",\n        \"    \\n\",\n        \"    V_star_I_plan_time[size_idx, run_id] = V_star_I_seconds\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"V_star_I_plan_time_avg = np.mean(V_star_I_plan_time, axis=1)\\n\",\n        \"V_star_I_plan_time_std = np.std(V_star_I_plan_time, axis=1)\\n\",\n        \"V_star_I_plan_time_CI = V_star_I_plan_time_std/np.sqrt(nruns)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"V_star_M_plan_time_avg = np.mean(V_star_M_plan_time, axis=1)\\n\",\n        \"V_star_M_plan_time_std = np.std(V_star_M_plan_time, axis=1)\\n\",\n        \"V_star_M_plan_time_CI = V_star_M_plan_time_std/np.sqrt(nruns)  \\n\",\n        \"\\n\",\n        \"\\n\",\n        \"#@title Plot Planning Time: Pachinko\\n\",\n        \"fig = plt.figure(figsize=(4,3.5))\\n\",\n        \"ax1 = fig.add_subplot(1,1,1)\\n\",\n        \"sns.set_style('white')\\n\",\n        \"sns.set_context(\\\"paper\\\", font_scale=1.85)\\n\",\n        \"fig.patch.set_facecolor('1.0')\\n\",\n        \"plt.grid(False)\\n\",\n        \"x_axis = grid_sizes\\n\",\n        \"xi = list(range(len(x_axis)))\\n\",\n        \"\\n\",\n        \"ax1.plot(xi, V_star_I_plan_time_avg, color = colors[1],  label = '$V^{*}_{M_I}$', \\n\",\n        \"         linewidth=4.00, marker=markers[1], markersize=10)\\n\",\n        \"ax1.fill_between(xi, V_star_I_plan_time_avg-V_star_I_plan_time_CI,\\n\",\n        \"                   V_star_I_plan_time_avg+V_star_I_plan_time_CI,\\n\",\n        \"                   facecolor=colors[1], edgecolor=colors[1], alpha=0.5)\\n\",\n        \"\\n\",\n        \"ax1.plot(xi, V_star_M_plan_time_avg, color = colors[3],  label = '$V^{*}_{M}$',\\n\",\n        \"         linewidth=4.00, marker=markers[3], markersize=10)\\n\",\n        \"ax1.fill_between(xi, V_star_M_plan_time_avg-V_star_M_plan_time_CI,\\n\",\n        \"                   V_star_M_plan_time_avg+V_star_M_plan_time_CI,\\n\",\n        \"                   facecolor=colors[3], edgecolor=colors[3], alpha=0.5)\\n\",\n        \"\\n\",\n        \"ax1.legend(loc='upper left', bbox_to_anchor=(0.05, 0.9),\\n\",\n        \"          fancybox=True, shadow=True, ncol=1,\\n\",\n        \"          facecolor='w', fontsize=15)\\n\",\n        \"ax1.set_xlabel(\\\"Grid size\\\", fontsize=16)\\n\",\n        \"ax1.set_ylabel(\\\"Planning Time\\\\n(seconds)\\\", fontsize=16) \\n\",\n        \"xticks_pos = [0, 3, 6]\\n\",\n        \"ax1.set_xticks(xticks_pos)\\n\",\n        \"ax1.set_xticklabels([grid_sizes[i] for i in xticks_pos])\\n\",\n        \"fig.tight_layout()\\n\",\n        \"\\n\",\n        \"plt.show()\"\n      ],\n      \"execution_count\": null,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"<Figure size 288x252 with 1 Axes>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"r05HA2UWhKz6\",\n        \"colab_type\": \"text\"\n      },\n      \"source\": [\n        \"# Sec 6.3 Experiment 3: Planning Loss Bound\\n\",\n        \"$\\\\Big|\\\\Big|V^*_M - V^{\\\\pi^{*}_{\\\\hat{M}_{{{\\\\mathcal{A} \\\\mathcal{F}}_{\\\\cal I}}}}}_M \\\\Big|\\\\Big|_{\\\\infty}$\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"SAxhAKT3emQW\",\n        \"colab_type\": \"text\"\n      },\n      \"source\": [\n        \"## Model Learning\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"CZQ7dOYZfJZD\",\n        \"colab_type\": \"text\"\n      },\n      \"source\": [\n        \"To learn the model from the experience-data, we consider the count based approach:\\n\",\n        \"\\n\",\n        \"Transition Dynamics computation $\\\\hat{P_{\\\\cal I}}(s' \\\\mid s,a) = \\\\frac{1}{n} \\\\sum \\\\text{COUNT}(s,a, s')$\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"fa0XlSG4co_v\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {}\n      },\n      \"source\": [\n        \"#@title Helper functions to collect data and create transition matrices.\\n\",\n        \"class Actions(enum.IntEnum):\\n\",\n        \"  LEFT = actions.LEFT\\n\",\n        \"  RIGHT = actions.RIGHT\\n\",\n        \"  UP = actions.UP\\n\",\n        \"  DOWN = actions.DOWN\\n\",\n        \"  \\n\",\n        \"def get_randomized_state(mdp):\\n\",\n        \"  \\\"\\\"\\\"Generates a random state and sets mdp current state to that.\\\"\\\"\\\"\\n\",\n        \"  state_id = np.random.randint(0, mdp.state_space-1)\\n\",\n        \"  x, y = mdp.unflatten_state(convert_int_rep_to_onehot(state_id, mdp.state_space))\\n\",\n        \"  while (x,y) in mdp_wall_locs:\\n\",\n        \"    state_id = np.random.randint(0, mdp.state_space-1)\\n\",\n        \"    x, y = mdp.unflatten_state(\\n\",\n        \"        convert_int_rep_to_onehot(state_id, mdp.state_space))\\n\",\n        \"  mdp.set_current_state_to((x,y))\\n\",\n        \"  state_onehot = mdp.current_state\\n\",\n        \"  return state_onehot\\n\",\n        \"\\n\",\n        \"def get_trajectories_transitions(\\n\",\n        \"    mdp, num_trajectories=500, max_trajectory_length=50, policy=None,\\n\",\n        \"    intent_name='collection', random_starts=False, seed=None):\\n\",\n        \"  \\\"\\\"\\\"Takes transitions samples from an environment.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    mdp: The MDP to evaluate the intent on.\\n\",\n        \"    num_trajectories: The total number of trajectories to sample.\\n\",\n        \"    max_trajectory_length: The maximum length of the trajectory.\\n\",\n        \"    policy: The policy to sample using. If none is given a random policy\\n\",\n        \"      is used. The policy must take a single argument, the one hot\\n\",\n        \"      representation of the state. \\n\",\n        \"    intent_name: Name of the intent to be considered\\n\",\n        \"    random_starts: Data collection including random starts\\n\",\n        \"    seed: seed for randomness \\n\",\n        \"  Returns:\\n\",\n        \"    The trajectories collected from the environment:\\n\",\n        \"      This is a 4-tuple containing the batch of state, action, state' \\n\",\n        \"      and reward\\n\",\n        \"    Human Readable transitions:\\n\",\n        \"      A set containing the unique transitions in the trajectory batch.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  if seed is not None:\\n\",\n        \"    np.random.seed(seed)\\n\",\n        \"    random.seed(seed)\\n\",\n        \"    print(f'seed set to {seed}')\\n\",\n        \"\\n\",\n        \"  trajectory = []\\n\",\n        \"  if random_starts:\\n\",\n        \"    s_t = get_randomized_state(mdp)\\n\",\n        \"  else:\\n\",\n        \"    s_t = mdp.reset()\\n\",\n        \"  trajectory_length = 0\\n\",\n        \"  human_readable = set()\\n\",\n        \"  if policy is None:\\n\",\n        \"    def policy(_):\\n\",\n        \"      return np.random.randint(mdp.action_space)\\n\",\n        \"\\n\",\n        \"  for _ in range(num_trajectories):\\n\",\n        \"    action = policy(s_t)\\n\",\n        \"    s_tp1, reward, done, _ = mdp.step(action)\\n\",\n        \"    state_int = get_current_state_integer(s_t)\\n\",\n        \"    intent = _get_intent_completed(\\n\",\n        \"        mdp, s_t, action, s_tp1, intent_name=intent_name)\\n\",\n        \"\\n\",\n        \"    # Human readable vesion:\\n\",\n        \"    human_readable.add((\\n\",\n        \"        mdp.unflatten_state(s_t),\\n\",\n        \"        Actions(action),\\n\",\n        \"        mdp.unflatten_state(s_tp1),\\n\",\n        \"        reward))\\n\",\n        \"\\n\",\n        \"    trajectory.append((\\n\",\n        \"        convert_onehot_to_int(s_t), action,\\n\",\n        \"        convert_onehot_to_int(s_tp1), reward)\\n\",\n        \"    )\\n\",\n        \"    trajectory_length += 1\\n\",\n        \"    if done or trajectory_length > max_trajectory_length:\\n\",\n        \"      if random_starts:\\n\",\n        \"        s_t = get_randomized_state(mdp)\\n\",\n        \"      else:\\n\",\n        \"        s_t = mdp.reset()\\n\",\n        \"    else:\\n\",\n        \"      s_t = s_tp1\\n\",\n        \"\\n\",\n        \"  return trajectory, human_readable\\n\",\n        \"\\n\",\n        \"def get_stochastic_states_P(mdp, wall_locs):\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"    Function to initialize P with non-uniform probability\\n\",\n        \"    of transitioning to the neighborhood states.\\n\",\n        \"    Introduces stochasticity in actions.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      mdp: The mdp to get the affordances from.\\n\",\n        \"      wall_locs: The wall locations of the mdp.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      P: initialized transition matrix\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"  grid_size = mdp.size\\n\",\n        \"\\n\",\n        \"  assert len(mdp.terminal_states) == 1, 'only one terminal state supported.'\\n\",\n        \"  goal_loc = mdp.unflatten_state(\\n\",\n        \"      convert_int_rep_to_onehot(\\n\",\n        \"          mdp.terminal_states[0], mdp.state_space))\\n\",\n        \"\\n\",\n        \"  # Attempt to make the desired gridworld.\\n\",\n        \"  reward_spec = {(goal_loc[0], goal_loc[1]): +1}\\n\",\n        \"\\n\",\n        \"  tmb = TransitionMatrixBuilder(grid_size, has_terminal_state=True)\\n\",\n        \"  terminal_state = mdp.unflatten_state(\\n\",\n        \"      convert_int_rep_to_onehot(mdp.terminal_states, mdp.state_space))\\n\",\n        \"  stochastic_P = build_simple_grid_stochastic_states(\\n\",\n        \"      size=grid_size,\\n\",\n        \"      terminal_states=[terminal_state])\\n\",\n        \"  tmb._P = stochastic_P\\n\",\n        \"  for (r, c) in wall_locs:\\n\",\n        \"    tmb.add_wall_at((r, c))\\n\",\n        \"  P = tmb.P\\n\",\n        \"  _unit_test_P(P)\\n\",\n        \"  _checking_P(P)\\n\",\n        \"  return P\\n\",\n        \"\\n\",\n        \"def get_uniform_phat(mdp, wall_locs):\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  Function to initialize P with uniform probability\\n\",\n        \"  of transitioning to the neighborhood states\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    mdp: The to get a uniform starting state for.\\n\",\n        \"    wall_locs: The locations of the walls.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    P: initialized transition matrix\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  grid_size = mdp.size\\n\",\n        \"\\n\",\n        \"  assert len(mdp.terminal_states) == 1, 'only one terminal state supported.'\\n\",\n        \"  goal_loc = mdp.unflatten_state(\\n\",\n        \"      convert_int_rep_to_onehot(\\n\",\n        \"          mdp.terminal_states[0], mdp.state_space))\\n\",\n        \"  # Attempt to make the desired gridworld.\\n\",\n        \"  reward_spec = {(goal_loc[0], goal_loc[1]): +1}\\n\",\n        \"\\n\",\n        \"  tmb = TransitionMatrixBuilder(grid_size,  has_terminal_state=True)\\n\",\n        \"  terminal_state_idx = mdp.unflatten_state(\\n\",\n        \"      convert_int_rep_to_onehot(mdp.terminal_states, mdp.state_space))\\n\",\n        \"  uniform_P = build_simple_grid(\\n\",\n        \"      size=grid_size, \\n\",\n        \"      terminal_states=[terminal_state_idx],\\n\",\n        \"      p_success=0.25)\\n\",\n        \"  tmb._P = uniform_P\\n\",\n        \"  for (r, c) in wall_locs:\\n\",\n        \"    tmb.add_wall_at((r, c))\\n\",\n        \"  P = tmb.P\\n\",\n        \"  _unit_test_P(P)\\n\",\n        \"  _checking_P(P)\\n\",\n        \"  return P\\n\",\n        \"\\n\"\n      ],\n      \"execution_count\": 35,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"9NV8NBmVeoj1\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {}\n      },\n      \"source\": [\n        \"#@title Function: Code to learn a count based model from data.\\n\",\n        \"\\n\",\n        \"def learn_model_from_data(\\n\",\n        \"    mdp, mdp_wall_locs,\\n\",\n        \"    num_trajectories=50, \\n\",\n        \"    max_trajectory_length=10,\\n\",\n        \"    random_starts=False,\\n\",\n        \"    affordances=None,\\n\",\n        \"    policy=None,\\n\",\n        \"    seed=None,\\n\",\n        \"    trajectories=None):\\n\",\n        \"  \\\"\\\"\\\"Learns a transition dynamics from sampled data.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    mdp: The MDP to sample from.\\n\",\n        \"    mdp_wall_locs: The wall locations in that mdp.\\n\",\n        \"    num_trajectories: The total number of trajectories to sample.\\n\",\n        \"    max_trajectory_length: The maximum length of the trajectory.\\n\",\n        \"    random_starts: rollouts are performed with random starting state.\\n\",\n        \"    affordances: The affordances of shape |S| * |A|\\n\",\n        \"    policy: The policy to sample using. If none is given a random policy\\n\",\n        \"      is used. The policy must take a single argument, the one hot\\n\",\n        \"      representation of the state. \\n\",\n        \"    seed: seed for randomness in any sampling used.\\n\",\n        \"    passing_data: set True if previously collected data is being passed\\n\",\n        \"    trajectories: tf trajectories from previously collected data\\n\",\n        \"  Returns:\\n\",\n        \"    The transition model P_hat\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  if seed is not None:\\n\",\n        \"    np.random.seed(seed)\\n\",\n        \"    random.seed(seed)\\n\",\n        \"\\n\",\n        \"  Mhat = np.zeros((mdp.state_space, mdp.action_space, mdp.state_space))\\n\",\n        \"  Phat = np.zeros((mdp.state_space, mdp.action_space, mdp.state_space))\\n\",\n        \"\\n\",\n        \"  if trajectories is None:\\n\",\n        \"    trajectories, _ = get_trajectories_transitions(\\n\",\n        \"        mdp=mdp, num_trajectories=num_trajectories,\\n\",\n        \"        max_trajectory_length=max_trajectory_length,\\n\",\n        \"        random_starts=random_starts)\\n\",\n        \"  else:\\n\",\n        \"    trajectories = trajectories\\n\",\n        \"\\n\",\n        \"  for (s,a,s_dash, r) in trajectories:\\n\",\n        \"    Mhat[s,a,s_dash] += 1\\n\",\n        \"\\n\",\n        \"  # Use get_random_phat instead of a naive initialization to take into account\\n\",\n        \"  # the wall locations and the fact that we cannot transition into walls.\\n\",\n        \"  Phat_init_uniform = get_uniform_phat(mdp, mdp_wall_locs)\\n\",\n        \"  \\n\",\n        \"  for (s, a, s_dash, r) in trajectories:\\n\",\n        \"    if affordances is None or affordances[s,a] !=0:\\n\",\n        \"      Phat[s,a,s_dash] = Mhat[s,a,s_dash]/np.sum(Mhat[s,a,:])\\n\",\n        \"\\n\",\n        \"  # Copy over \\\"initialized uniform state transition\\\" here.\\n\",\n        \"  # i.e. if you have never seen a transition (s, a), \\n\",\n        \"  # P (s,a, s') = 1/4 (except walls)\\n\",\n        \"  P_visited_mask = np.sum(Phat, 2) == 0\\n\",\n        \"  for s in range(mdp.state_space):\\n\",\n        \"    for a in range(mdp.action_space):\\n\",\n        \"      if P_visited_mask[s, a]:\\n\",\n        \"        if affordances is None or affordances[s,a] >= 0.0:\\n\",\n        \"          Phat[s, a] = Phat_init_uniform[s, a]\\n\",\n        \"\\n\",\n        \"  return Phat\"\n      ],\n      \"execution_count\": 36,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"fv5ilraeV7gD\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {}\n      },\n      \"source\": [\n        \"#@title Planning Value Loss Evaluation\\n\",\n        \"#------------------------------------------------------------------------#\\n\",\n        \"# 1. Computationally build affordances\\n\",\n        \"# 2. Learn a model for those affordances from the data experience\\n\",\n        \"# 3. Compute optimal value function and optimal policy in M_M and M_hat_I_M\\n\",\n        \"# 4. Policy Evaluation in MDP M \\n\",\n        \"# 5. Compare loss for different number of samples \\n\",\n        \"# 6. Hypothesis: the planning value loss shrinks with more and more data\\n\",\n        \"#    for low data regime, there would be an intermediate value of |AF_I| which\\n\",\n        \"#    yields the optimal planning value loss.\\n\",\n        \"#------------------------------------------------------------------------#\\n\",\n        \"\\n\",\n        \"n_trajectories = [250, 400, 500, 750, 2000, 10000]\\n\",\n        \"thresholds = [0.0, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.9, 1.0]\\n\",\n        \"\\n\",\n        \"p_success = 0.70 #@param {type:\\\"slider\\\", min:0, max:1, step:0.1}\\n\",\n        \"max_iterations = 10000 #@param {type:\\\"integer\\\"}\\n\",\n        \"max_trajectory_length =  10#@param {type:\\\"integer\\\"}\\n\",\n        \"seed = 10000 #@param {type:\\\"integer\\\"}\\n\",\n        \"nruns = 10\\n\",\n        \"\\n\",\n        \"v_pi_star_Mhat_I_M_thresh_nsamples = np.zeros(\\n\",\n        \"    (nruns,  len(n_trajectories), len(thresholds), mdp.state_space))\\n\",\n        \"\\n\",\n        \"# Create an mdp M\\n\",\n        \"mdp, mdp_wall_locs = build_pachinko_gridsize(grid_size=19)\\n\",\n        \"\\n\",\n        \"mdp.P = get_stochastic_states_P(mdp, mdp_wall_locs)\\n\",\n        \"\\n\",\n        \"AF_sizes = np.zeros((len(thresholds)))\\n\",\n        \"\\n\",\n        \"for n_traj_idx, n_traj_val in enumerate(n_trajectories):\\n\",\n        \"  for ind, k in enumerate(thresholds):\\n\",\n        \"    for run_id in range(nruns):\\n\",\n        \"      #  ------------Step 1: Compute Affordances ------------\\n\",\n        \"      # Compute Affordances AF based on intent I\\n\",\n        \"      AF = _compute_affordances(mdp=mdp,\\n\",\n        \"                              n_states=mdp.state_space,\\n\",\n        \"                              n_actions=mdp.action_space,\\n\",\n        \"                              intent_name=\\\"collection\\\",\\n\",\n        \"                              threshold=k,\\n\",\n        \"                              mdp_wall_locs=mdp_wall_locs)\\n\",\n        \"         \\n\",\n        \"      \\n\",\n        \"      #  ------------Step 2: Learn a Model for AF ------------\\n\",\n        \"      # Learn  P_hat_I from data:  M_hat_I - Model with AF\\n\",\n        \"      Phat_I = learn_model_from_data(\\n\",\n        \"          mdp, mdp_wall_locs,\\n\",\n        \"          num_trajectories=n_traj_val,\\n\",\n        \"          max_trajectory_length=max_trajectory_length,\\n\",\n        \"          random_starts=True,\\n\",\n        \"          affordances=AF,\\n\",\n        \"          policy=None,\\n\",\n        \"          seed=seed+run_id)\\n\",\n        \"\\n\",\n        \"      #  ------------Step 3: Value Iteration------------  \\n\",\n        \"      # Value iteration -  pi*M_hat_I\\n\",\n        \"      (policy_star_Mhat_I, V_star_Mhat_I, _, \\n\",\n        \"      V_star_Mhat_I_seconds, V_star_Mhat_I_iters) = value_iteration(\\n\",\n        \"          mdp.R, Phat_I, max_iteration=max_iterations, seed=seed+run_id,\\n\",\n        \"          AF=AF, mdp_wall_locs=mdp_wall_locs)\\n\",\n        \"\\n\",\n        \"      # #  ------------Step 3: Policy Evaluation------------\\n\",\n        \"      # pi*M_hat_I evaluated in M\\n\",\n        \"      v_pi_star_Mhat_I_M_thresh_nsamples[run_id, n_traj_idx, ind, :] = _policy_evaluation_exact(pi=policy_star_Mhat_I,\\n\",\n        \"                                                                                               r=mdp.R,\\n\",\n        \"                                                                                               p=mdp.P,\\n\",\n        \"                                                                                               gamma=mdp.gamma)\\n\",\n        \"\\n\",\n        \"    AF_sizes[ind] = np.count_nonzero(AF)   \\n\",\n        \"    \\n\",\n        \"(policy_star_M, V_star_M, _, \\n\",\n        \"V_star_M_seconds, V_star_M_iters) = value_iteration(mdp.R,\\n\",\n        \"                                                       mdp.P,\\n\",\n        \"                                                       max_iteration=max_iterations,\\n\",\n        \"                                                       seed=seed) \\n\",\n        \"# pi*M evaluated in M\\n\",\n        \"v_pi_star_M_M = _policy_evaluation_exact(pi=policy_star_M,\\n\",\n        \"                                                    r=mdp.R,\\n\",\n        \"                                                    p=mdp.P,\\n\",\n        \"                                                    gamma=mdp.gamma)\\n\",\n        \"\\n\",\n        \"value_loss_to_plot = np.zeros((len(n_trajectories), len(thresholds)))\\n\",\n        \"value_loss_to_plot_std = np.zeros((len(n_trajectories), len(thresholds)))\\n\",\n        \"value_loss_to_plot_CI = np.zeros((len(n_trajectories), len(thresholds)))\\n\",\n        \"for n_id in range(len(n_trajectories)):\\n\",\n        \"  for _thresh in range(len(thresholds)):\\n\",\n        \"    value_loss_raw_values = [] \\n\",\n        \"    for run_id in range(nruns):\\n\",\n        \"      sliced_result = v_pi_star_Mhat_I_M_thresh_nsamples[run_id, n_id, _thresh, :]\\n\",\n        \"      value_loss_raw_values.append(np.linalg.norm(\\n\",\n        \"          abs(v_pi_star_M_M - sliced_result)))\\n\",\n        \"    value_loss_to_plot[n_id, _thresh] = np.mean(value_loss_raw_values)\\n\",\n        \"    value_loss_to_plot_std[n_id, _thresh] = np.std(value_loss_raw_values)\\n\",\n        \"    value_loss_to_plot_CI[n_id, _thresh] = value_loss_to_plot_std[n_id, _thresh]/np.sqrt(nruns)\"\n      ],\n      \"execution_count\": 38,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"OwWVblmnYqv0\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 333\n        },\n        \"outputId\": \"d2bf4025-a399-479f-ae64-764fc2c3b645\"\n      },\n      \"source\": [\n        \"#@title Plotting Planning Value Loss Evaluation\\n\",\n        \"\\n\",\n        \"fig, ax1 = plt.subplots()\\n\",\n        \"x_axis = thresholds\\n\",\n        \"for i in range(value_loss_to_plot.shape[0]):\\n\",\n        \"  plt.plot(x_axis, value_loss_to_plot[i, :], color = colors[i],  label = 'n={}'.format(int(n_trajectories[i]/max_trajectory_length)),\\n\",\n        \"           linewidth = 3.00, marker=markers[i], markersize=10)\\n\",\n        \"  plt.fill_between(x_axis, value_loss_to_plot[i, :]-value_loss_to_plot_CI[i,:],\\n\",\n        \"                   value_loss_to_plot[i, :]+value_loss_to_plot_CI[i,:],\\n\",\n        \"                   facecolor=colors[i], edgecolor=colors[i], alpha=0.25)\\n\",\n        \"\\n\",\n        \"ax1.set_xticks([0, 0.25, 0.5, 0.75, 1.0])\\n\",\n        \"ax1.legend(loc='upper center', bbox_to_anchor=(0.5, -0.19),\\n\",\n        \"          fancybox=True, shadow=True, ncol=7,\\n\",\n        \"          facecolor='w', fontsize=10)\\n\",\n        \"ax1.set_xlabel(\\\"Threshold ($k$)\\\", fontsize=16)\\n\",\n        \"ax1.set_ylabel(\\\"$||V^*_M - V^{\\\\pi^{*}_{\\\\hat{M}_{{{\\\\mathcal{A} \\\\mathcal{F}}_{\\\\cal I}}}}}_M ||_2$\\\", fontsize=18) \\n\",\n        \"plt.title(\\\"Model Learning: Value Loss Analysis\\\")\\n\",\n        \"matplotlib.rc('axes', edgecolor='black')\\n\",\n        \"plt.show()\"\n      ],\n      \"execution_count\": 39,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAeEAAAE8CAYAAAD36gn/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsvXmcVNWZ//8+d6u9qveFpgFZujEiy4iAiChuo4NB3BKcxGWMk0lG49cYMxnzMyZGs05MonEyYxJNjDHBRBuMRtAghlFx17iLyNo0NL3Xvtzl/P6o7uouuoFGlla479erXrfq3HPvOffcqvrc5znnPEdIKSUuLi4uLi4uhxxlpCvg4uLi4uJypOKKsIuLi4uLywjhirCLi4uLi8sI4Yqwi4uLi4vLCOGKsIuLi4uLywjhirCLi4uLi8sI4YrwYcgll1zCqaee+qGPP/XUU7nkkksOYI0++hyJ1wzwk5/8hMbGRlpbW0e6Ki4fgkNx/+bPn8/ll19+0M5/pOOK8AHmhRdeoLGxkcbGRm677bYh8/z9738v5PnOd75ziGt44Oi71t/85jcjXZXDEsuymDdvHvPnz8dxnN3mW7t2LY2NjXz3u989hLU7cFx//fU0NjaSTCZHuiofiq997Ws0Nja6QuXyoXBF+CDh8Xh4+OGHh/zzbGpqwuPxjECtXHbHypUrufvuu0e6GkVomsaiRYvYuXMnzz777G7zPfTQQwBccMEFh6pqLr0kEgkef/xxxowZw/PPP09LS8tIV+mAs2rVKn75y1+OdDUOW1wRPkicdtppQ/55ZrNZVqxYwemnnz5CNTu8yeVy5HK5fT7OMAwMwzgINdo/+oR12bJlQ+5PJBKsWrWKY445hsbGxkNZNRdgxYoVpNNpbrvtNjRN2+19+jhjGAa6ro90NQ5bXBE+SEybNo3x48cP+lGuWrWKWCzGeeedN+RxlmXxi1/8grPPPpspU6YwZ84crr32WjZv3jwobzQa5cYbb2T27NlMnz6dSy65hLfeemu3dXr99df5whe+wKxZs5gyZQoLFy7kvvvu41BELo1Go/zgBz/gtNNOY8qUKZx44ol8/etfp729vSjfzp07+f73v8+iRYuYOXMmU6dOZdGiRfz+978fdM6f/exnNDY2sm7dOm699VbmzZvH1KlT2bBhA9u2baOxsZGf/exnPPnkk5x33nkce+yxnHzyyfzv//7voHMN1Sfc2NjIf/7nf/LKK69w8cUXM23aNObOnct3v/tdTNMcdI7HH3+cRYsWceyxx3LKKadw5513FlzFTU1NRXm3bt3Khg0b9tpuEyZMYNq0aaxatYp4PD5o/2OPPUYmkymygltbW/nud7/LokWLOO6445g6dSrnnnsuDzzwwF7LA7j44os544wzBqX3XcvDDz9clJ7JZLjzzjs566yzmDJlCrNnz+baa69l69atwypvX1i5ciWf+tSnmD59OjNmzOCSSy7hueeeG5Rv1apVXHzxxcyaNYtp06Zx6qmn8uUvf5m2trZCnvfee4+rrrqKefPmMWXKFObNm8cVV1zByy+/POz6NDU1MWPGDKZOncqCBQtYtmzZkL+nvjbdsWMH11xzDccddxwzZszgS1/60qDfwP7cv1tvvZWjjz6a7du3D9r3xhtv0NjYyJ133llI+9Of/sT5559fqM+ZZ57Jf/7nf5LJZAp5huoTHk77ugwPbaQrcDhz3nnnceeddxKPxwmFQkD+Rzt9+nSOOuqoIY+5/vrrWbFiBSeddBKf+cxnaG1t5f777+fZZ5/lj3/8Y+E40zT53Oc+x5tvvsl5553H1KlTeffdd/mXf/kXSkpKBp139erVXHPNNUyYMIErr7ySYDDI888/z6233sq2bdu44YYbDlo7xGIxlixZQltbGxdddBFHHXUULS0t3H///bz44os0NTURDocBWLduHX/9618588wzqa+vJ5vN8vjjj3PzzTfT09PDv//7vw86/1e/+lWCwSBXXnklUkoikUihG2DNmjU88MADLFmyhAsvvJBHHnmEn/zkJ9TU1LB48eK91v3dd9/lqquu4sILL2TRokU89dRT3HvvvUQiEa666qpCvscee4zrrruOsWPH8qUvfQlFUVi+fDmrV68e8ryXX345LS0trFu3bq91OP/88/nmN7/JX/7yF5YsWVK0r6mpCcMwOOecc4rq/NRTT3H66adTX19PJpPh8ccf56abbiIajfL5z39+r2UOl1wux+WXX84777zDeeedx+WXX05HRwd/+MMf+NSnPkVTUxOjRo06IGX99re/5Tvf+Q4NDQ1cffXVWJbFgw8+yBVXXMFPfvITzjrrLCD/sHD11Vczc+ZMrr76anw+Hzt27ODpp5+mra2Nqqoq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QQghhExG1B1NCCGElAkFYUIIIaRMKAgTQgghZUJBmBBCCCkTCsKEEEJImVAQJoQQQsqEgjAhhBBSJhSER6ivrw933303Fi9ejGOOOQaXXXYZ3nrrrUN67IYNG3DRRRfhqKOOwpIlS/DDH/4QmUxm0HkdHR341re+hUWLFuHYY4/Ftddeiy1bthT6RymJ0bxe8XgcDz/8MC6//HJ88pOfxHHHHYeLLroIv//978E5zzt33bp1aGpqGvR18sknF/PHKprRvr+uvPLKIV+H+++/f9C527Ztw1e/+lUce+yxWLhwIW6++Wa0tbUV48cpidG8Zrt37x7y9cp9PfbYY9a5E+k91t7ejpUrV+Kyyy7DMcccg6amJjQ3Nx/y4yfjZ1ix0YpZIyCEwI033oiWlhZ897vfRXV1NZ5++mlcc801WLt2LebPnz/sY//+97/j61//Os4991x85zvfwc6dO3Hfffehra0NDz74oHVeOp3GVVddBSEE/vu//xsulwuPPvoorrjiCvzhD39AbW1tKX7Ughjt67V3714888wzuOCCC3D99dfD4XDgtddew3/8x3+gubkZt99++6DH3H///aivr7du22y2ov1cxTKW9xcAzJo1C6tWrco7VlNTk3e7q6sLV1xxBaZOnYoHHngAuq7jJz/5CZYtW4bnn38eHo+n4D9XMY32NauursZvf/vbQcd//etf45VXXsHpp58+6L6J8B7buXMnXnrpJRx55JFYtGgR3njjjUN+7GT8DCsJQQ7Zq6++KhobG8WGDRusY5lMRpxxxhniuuuuO+BjL7zwQnHJJZcIzrl17NlnnxWNjY3i3XfftY499dRToqmpSTQ3N1vHent7xfHHHy/uueeewv0wJTDa1yuRSIhkMjno+G233Sbmz58v+vr6rGO///3vRWNjo9i8eXNhG18GY3l/XXHFFeLCCy886DVWrVolPvGJT4ju7m7r2I4dO8TcuXPFY489NvrGl8lYXrP9GYYhlixZIi6++OK84xPpPcYYs74f6c81GT/DSoG6o0fg1VdfRTAYxKc+9SnrmN1ux9lnn42///3vSCaTQz6ura0NmzZtwnnnnQdJkqzj55xzDmw2G/7v//4v7xrz58/HnDlzrGOBQACf+cxn8Oc//7kIP1XxjPb1crvdcLlcg44vWLAAhmFg3759RWtzOY329RrpNZYsWYJwOGwdmzFjBo499tjD7v0FFPY1+9vf/obOzk5cdNFFxWjquCDLo/vIn6yfYaVAQXgEtmzZgjlz5uS9CQGgsbERhmFg27Ztwz4OQN6bEgCcTifq6+vzxkpy19jfnDlz0NXVhUgkMtYfo2RG+3oN580334TH48GUKVMG3feVr3wF8+bNw+LFi/Hd734XHR0dY2p7OYz19WppacHChQtx5JFH4qyzzsKTTz6ZN4aeTqfR2to67PtrJGOD40Uh32Pr1q2Dw+HAOeecM+T9E+E9NlqT9TOsFGhMeASi0SgaGhoGHQ8EAtb9wz1u4Hn7P7a3tzfvXL/fP+i8YDBo3R8KhUbe+DIY7es1lNdeew3/+7//ixUrVsBut1vHq6qqcOONN+KYY46By+XCe++9h8cffxz//Oc/sW7dusPmtQLG9nodf/zxOOecczBr1iz09fXhlVdewapVq7Bz507cc8891uOFEMO+v5LJJHRdP6zGOgv1HotGo3j11VdxxhlnDHp9JtJ7bLQm62dYKVAQJuPehx9+iFtvvRWLFy/GDTfckHffKaecglNOOcW6feKJJ+K4447D0qVL8cwzz2D58uWlbm5Z3HLLLXm3Tz/9dLhcLqxZswbXXnstpk2bVqaWHR5efPFFaJo2ZFc0vcdIMVF39AgEAgHEYrFBxw/0V+LA40P9VR6NRq2/EA90jdxfmsNdYzwa7es10NatW3HNNdegoaEBDz/8MFT14H83Hn/88Zg6dSree++9kTe6jArxeg103nnnQQiB999/HwDg9/shSdKw7y+3231YZcFA4V6z5557DrW1tTjppJMO6fzD9T02WpP1M6wUKAiPwOzZs7F161aI/bZg3rJlC1RVxaxZs4Z8XG58ZOvWrXnHhxqjmz179pDz6bZu3YqqqqrDqhtntK9Xzvbt23H11VejpqYGjz/++IimzwghBo0Tjndjfb32l3ue3Ovgcrkwbdq0Qe9DwHx/NTY2jrLl5VOI12zLli14//338YUvfGFEhUuH43tstCbrZ1gpUBAegdNPPx2RSCRvbp2u63jppZewePFiuN3uIR9XV1eH+fPn48UXX8z7sHjppZeg6zo++9nP5l3jww8/REtLi3UsFovhtddeG3Lu4ng22tcLAFpbW3H11VfD7/fj17/+9Yj+en7rrbewd+9eHH300WNqf6mN5fUaygsvvABZlnHUUUflXeONN97IK47ZtWsX3nnnncPu/QUU5jVbt24dAODCCy885Oseru+x0Zqsn2GlIIn9/4QkwxJC4IorrsDOnTtx6623orq6Gr/5zW/wxhtvYM2aNViwYAEA4IwzzsCUKVOwevVq67EbN27E9ddfj/PPPx8XXnihNdH9pJNOwk9/+lPrvFQqhS984QsAgG9961twOp34xS9+gZaWFjz//POoq6sr7Q89BqN9vbq7u3HJJZcgEong3nvvRVVVVd7zzp49G16vFwBw9dVX44QTTkBjYyPcbjfef/99PP744/D7/Vi3bl1eN9l4N9rX66233sKjjz6KM888E/X19YjH43j55Zfxpz/9CcuWLcMdd9xhXaOzsxMXXHAB6uvrceONN1qLdaRSKfzhD3+wXtfDxVh+JwHAMAx8+tOfRn19PdasWTPkNSbSewwAXnnlFQDAP//5TzzzzDO4/fbbUVtbC5fLhVNPPRUAfYaVEgXhEYrFYrj//vuxfv16JJNJzJ8/H9/+9rexaNEi65zTTjsNU6dOxdNPP5332L/85S/42c9+hq1btyIQCODcc8/FLbfcAqfTmXdeR0cHVq1ahY0bN8IwDBx33HH47ne/i6amppL8jIU0mtfrzTffxLJly4Z9zqeeegonnngiAOB//ud/sHHjRrS1tUHXdVRXV+PUU0/F8uXLUVFRUdwfrghG83rt3LkTK1euxMcff4xIJAJVVdHQ0IAvfelhQ1JFAAAUIElEQVRL+NKXvjSoy7SlpQWrVq3C//t//w+yLOPkk0/GbbfdNuTUr8PBWH4nX3vtNdxwww1YuXIlLrnkkiGff6K9x4b7HJk6dSr+8pe/AKDPsFKiIEwIIYSUCY0JE0IIIWVCQZgQQggpEwrChBBCSJlQECaEEELKhIIwIYQQUiYUhAkhhJAyoSBMCCGElAkFYUIIIaRMKAiTSa2pqemgX6eddhp+9rOfoampCYZhlLvJBW9L7vkOxZVXXokrr7zykM5duXIlvva1r+Uda2lpQVNTEzZu3DjkY5588kmcd9554Jwf0jUIOdzRfsJkUvvtb3+bd3v58uVoamrCihUrrGN2ux2vvvpqqZt2WNu1axfWrl07aD3mDz74AACsNZ33d9lll+Hxxx/Hc889hy9+8YtFbych5UZBmExqn/jEJ/Ju2+12hEKhQcfHEoQ1TYPdbh/14w9Hq1evRlNTU94OTgCwadMmTJs2bdhND5xOJy644AL86le/oiBMJgXqjiZkBHbv3o2vfvWrOPbYY/GZz3wGDz30UF7Xaa5rt7m5Gddeey2OPfZYfOMb37Du//jjj3HDDTdg0aJFOProo3HZZZfhrbfeyrvG9u3bcdNNN2Hx4sU46qij8OlPfxo333zzoO7ng7UFAF5//XVceun/b+/eY6K60waOf+fiIDAKiIJFxgspBYV1cUWrFKlvLWoXKbztZmu8pFWJZFmjJm76rqarVHHXWux2S6XbVtk2cc3GmBZraYuXSKmtWlIrBLkEK2NBXq4iw0iBYWbeP+jM6zg3ZhgGtb9PQsycy5xnfp5znvP8zu0FZs+ezdy5c8nKyuL69etD+q1FRUUsX76c2NhYUlJSOH369JDm6+/v55NPPiE1NdVqXFVVlUUVrNVq2bx5M0888QTffvstACkpKVy7do3Lly8PaXmC8CATSVgQXLBp0yYWLFjAwYMHWbJkCXl5eXz88cdW02VlZTFv3jzy8/N56aWXgMEqcOXKlXR1dbFnzx7y8vIIDAzkpZdeMnfTAmRmZtLS0kJ2djaHDx9m27ZtKBQKqwTrLJbS0lIyMzPx8/Pj73//O9nZ2dTV1bFq1SpaWloc/s5vvvmGbdu2MX36dN5++202bNjA3r17qa+vd9pGV65cQaPRMHfuXIvhRqPRIgnX1tby/PPP09LSwkcffcT8+fMBmDlzJv7+/hbvCBaEh5XojhYEF6xbt87cTZqQkMClS5coKiqy6jpdu3YtL774osWw/fv388gjj/Dhhx+au6cTExNZsWIF+fn55Ofnc+vWLW7cuEF+fr7FC9BtVZXOYnnzzTdRqVS8//77yOWDm3pcXBzLly+noKCA7du32/2db731FhEREeTn5yOVDh6rR0RE8MILLzBjxgyHbXTlyhUkEonVxV719fXcuXOH2NhYCgsLyc7OJj09nR07dlh010ulUqKjoykvL3e4HEF4GIhKWBBcsHjxYovPkZGRNDU1WU2XnJxs8bm3t5eysjKWL1+OVCplYGCAgYEBjEYjCQkJ5i7poKAgVCoVBw4c4NixY6jVardi6enpoaqqimeeecacgAFUKhW/+c1vKCsrs/u9er2eyspKli1bZk7AMJjAp0yZYnc+k9bWVpRKpdV58KqqKmDwYrhdu3aRnZ1Ndna2zfPlEyZMoLW11emyBOFBJyphQXBBQECAxWeFQkF/f7/VdJMmTbL43NXVhV6vN1e8thgMBqRSKf/617/Iy8vjwIED3L59m/DwcDZs2MCqVauGHItGo8FoNBISEmK1nIkTJ3Lz5k27v7GzsxOdTsfEiRNtzuuMvQvRrl69yvjx4zl16hRr1qwhPT3d7nf4+PjQ29vrdFmC8KATSVgQRoBEIrH4PG7cOKRSKatXryYtLc3mPKaqU6VSsX//foxGIzU1NRw5coRXX32VKVOm8OSTTw5p+ePHj0cikdDW1mY1rr293e7VyTBYjY8ZM4b29nab8zqrhgMDA9FoNFbDKysrSUxMJD4+npycHOLj41m6dKnN7+jq6iIoKMjhcgThYSC6owXBC/z8/IiPj6empoaYmBh+9atfWf3dSyKRMHPmTPO527q6OpeWFxMTwxdffIFerzcPv3nzJt9//735IihbZDIZsbGxFBcXW1wMVl5e7rCCNomIiECn09Hc3GweZjQaqa6uZubMmaxevZrVq1fz8ssvU1FRYfM7GhsbnZ57FoSHgaiEBcFL/vznP7NmzRo2bNjA7373OyZNmkRnZydVVVXo9Xr+9Kc/UVNTw969e/ntb3/LtGnT0Ov1fPzxx8jlchYsWODS8rZs2UJmZiaZmZmsWrWKnp4e8vLyUCqVrFu3zuG8mzdvZv369WRlZbFy5Upu3bpFXl6eVTe7LfHx8QBUVFQwefJkYPDhHd3d3URHRwOwfft2GhoayMrK4tixY4SFhZnn12g0qNVqNmzY4NLvFYQHkaiEBcFLYmJiOH78OIGBgeTk5LB+/Xr27t1LbW0t8+bNAwbPJYeFhfHBBx/whz/8gW3bttHa2so///lPu0+ZsicpKYl3332X7u5utm7dyq5du4iIiODo0aOEhoY6nDchIYHc3Fzq6+vZtGkThw8fZseOHUOqTsPDw5k9ezbnzp0zD7t69SowePsRDFbbb7zxBsHBwWRmZqLVas3TlpSUMGbMGJ5++mmXfq8gPIgkRqPRONpBCILwcPnoo4/Yu3cv58+fx9fX16V5MzIyCAoK4vXXXx+h6ATh/iEqYUEQPO7ZZ58lJCSEo0ePujRfdXU1Fy9eZNOmTSMUmSDcX0QSFgTB4+RyOX/7298YO3asS/O1tbWxb98+pk2bNkKRCcL9RXRHC4IgCMIoEZWwIAiCIIySYd2ipNfrUavVNp8YJAiCIAi/dAqFgunTpyOTyWyOH1Z39A8//EBQUBATJkxwO0BB8JSuujqu/ec/PLpyJQGRkaMdjiAIAu3t7TQ0NBAVFYWfn5/V+GF1R/f394sELNwXuurqqDl0iP7OTmoOHaLLhadLCYIgjJSJEyei1+s5fvw4fX19VuO99sSstg4tp7+q49KVBnr7BhjrI+fxOBXJiyKZFKz0Vhj3tT2F+9H2ap1Opxyr5C/pL3shogeDKQEbdDoADDodNYcOEZ2RISpiO/Q/ddN5sZCgBf+NzFdsf470D+j5traJ+VFhKOS2uxQFaz/evM44ZQBBAcF2p+ns6qBb28XUKRFejMz7pFIp3d3dtLW1ER4ebjnOGwFU1jaz+x9nOV+mprdvAIDevgHOl6nZ/Y+zVNY2O/kGz/v666957rnnSE1N5bnnnuPChQvmcWvXrmXZsmWkpaWRlpZGR0eHV2IaSgJ2ZTpPa2pqYs6cORw+fNg8rLS0lGXLlpGcnMx7773n9ZjuTcAmpkTs7Yq4sbGR2bNnm9ednTt3msdVVlaSmppKcnIyOTk5jOaNCdqq8+jaGtBWnR+1GAA++eQTc1ulpaURHR1NdXU1MHrb4b2aOrpp6ujmfzu6R2X5Jo72WfbWrdu3b7Nu3TqWLl3KunXr6Orq8lq845QBVNd+T2eX7f+3zq4Oqmu/Z5wywOb4kdLZ2cnatWuZM2cOu3fvthjnajsajUZycnJITk4mNTXV/GQ4e+5+jrvJiCfhtg4t7/77Ev06PXqD5U5HbzDSr9Pz7r8v0dbh3cQSFBTEO++8w8mTJ9m3bx8vv2xZWebm5nLixAlOnDhBcLD9I7lfkn379rFo0SLzZ71ez+7duzl06BBFRUV8+umnXLt2zWvx2EvAJqOViKdOnWped+7eyLOzs9mzZw+nTp1CrVZTWlrq1bhM9D9101NfARjpUZej/2l0Dupg8KEeprbav38/4eHh5kdbwv2xHdY33wbg+s//jhZH+yx769Z7773HwoULOXXqFAsXLvTqgXJQQDAzo+bYTMSmBDwzao7DSnkk+Pj4sGXLFqt9PrjejqWlpajVak6dOsWePXvIzs52OZ4RT8Knv6pDrzc4nEavN3D6vHs778bGRp555hleeeUVUlJSWL9+/ZDeQzpr1izz83MjIyPp6+t76K/ydretAM6cOcOUKVOIvKt7t6KigmnTpqFSqVAoFKSkpHD27NmRCt+CswRs4m4iHk5b2dLa2opWqyUuLg6JREJ6errX2upeg9XvzwfERqNHqmFPtFdRUREpKSnDjmW4SirUHCutMv91aH4CoEPzk8Xwkgq1W9/v6X2Wo3Xr7Nmz5vc2p6enc+bMGbdidpetROypBOxuO5reaObj42Mx3J12NA2XSCTExcWh0WhobW116Xd47Jzw6a/qOHmmmr7+AZfn1RuMfHnxOl9evG4x3EchJ/XpmSQvcnxe78aNG7zxxhvk5OSwZcsWiouLaWtr4+TJk1bTzps3j1deecViWHFxMbNmzbJ4EfmOHTuQSqUsXbqUrKwsq/fDDkdpzdecrjxH/4D7Sf9//rPT4rNCriA59r9Iin7C4XzutNWdO3d4//33KSgooKCgwDy+paXF/JYcgNDQULuvphuOppISGoqLMdi4qGEoDDodVe+8YzFM6uODatkywhYvtjufu+tVY2Mj6enpKJVKtm7dSnx8vFVbTZ48mZaWFrd+jyPa2otor36FcajrlkFPzw/f0fPDd3YnkcgVKGMWoYxy/Ban4W6Hn332Gfn5+RbDRnI7rG3s4OqNNgacFAmGn7skDfecPmi93cOx0iqLYXKZlJhpk4gKd5xcPLnPcrRudXR0EBISAgy+HGQkuvQbbtZzo6EOvcG6q/VuFVe/dfj5bjKpjGmqSFRTHL8wZLjteDd32tHePKZph8KjSdidBOxIX/8Ap7+qc5qE7+7CiomJ4ebNm2RlZZGRkeF0GXV1deTm5lokl9zcXEJDQ9FqtWzevJkTJ06Yj4I8obTmm2ElYFv6B/oprfnGaRJ2p63efvttXnzxRfz9/T0a81A1lZS4nYDtMfT10VRS4jAJu9NWISEhnDt3jqCgICorK/njH/9IUVGRR2N35E7tpaEn4CEyDvRzp/aS0yQ8nO2wvLwcX19fHnvsMfOwkd4Oaxs7nCZgVw3oDdQ2djhNwp7eZw2FRCLx6EGMSWNTvdME7Cq9QU9jU73TJDycdnSXp9vRY0k4eVGk25WwPT4KudMEDFhUsDKZjL6+Pg4dOuT0aKi5uZlNmzbx2muvMXXqVPM0pi4fpVLJihUrqKio8OjGnxSdMOxK+F4KuYKk6ATn07nRVuXl5RQXF5Obm4tGo0EqleLj40NMTIzFi9tbWlqcviLPHWGLFw+rErZF6uPjMAGDe22lUCjM88XGxjJ16lTq6+sJDQ21aKvm5uYRaSv/qMddq4SHQCJX4B/1uNPp3N0OwXZX9Ehvh1HhwUOqhF0hl0mdJmDw7D7L0boVHBxMa2srISEhtLa2jsgtpeFhM4ZUCbtCJpURHub8tZnDWefu5U47emK79mgStpUwjxZ+z/kytdVFWXeTSSUkzp/BqrQ4T4VDRkaGw6MhjUbDxo0b2bZtG3PnzjUPHxgYQKPRMGHCBHQ6HSUlJSxcuNBjcQEkRT9hs2K9t4vZkddW7nY+0RA5a6u734STl5eHn58fa9asYWBgALVaTUNDA6GhoRQVFXHgwAGPxWUStnixVcIc6jlhAOmYMR67XclZW926dYuAgABkMhkNDQ2o1WpUKhWBgYEolUquXLnCr3/9awoLC1m7du2w47mXMmqB3Yq167vP6akvB1s7S6kMvxlxBMxd7tF4nLUXgMFg4PPPP7dYz7yxHUaFBztMmDdabvNdXTN6gwGpVILBYEQmlTI3cjLTQgM9Ggu4v88KCQmxu2499dRTFBYWsnHjRgoLC1myZInH41ZNmeGwYr33HPBIX5Q1lHXOFnfa8amnnuLIkSOkpKRQXl7OuHHjXOqKBi/cJ5y8KJILl390eJQkk0lJTnx0pEOxcOTIEX788UcOHjzIwYMHASgoKMDX15eMjAx0Oh0Gg4GFCxfy+9//3quxPSjkcjk7d+4kIyMDvV7P888/b3Hh1kgKiIwkOiPDaSL2ZAIeirKyMt566y3kcjlSqZRXX32VwMDBHfauXbvYvn07vb29JCUlkZSU5JWY4K4rou1thwY9PepylLMSvX7fcFlZGY888ggqlco8rL+/f9S3w+vNtxkwGAj0H8vsiBAqrrdy+04v15tvj0gSdsbePis4ONjuurVx40a2bt3K8ePHCQsL48033/RqzLYS7t0Xa43G1dEwmDy1Wi06nY4zZ85QUFDAo48+6nI7Pvnkk3z55ZckJyfj6+vLX//6V5djGdZjK6urqy1uJ7CnsraZd/99Cb3eYFERy6QSZDIpmasfJzZqsoNv+GUYrUr4QeaoIvZ2Ar6fOayCTUaoGn5Qnb/6I5PG+/NY+AQkEgkGo5G6xlu0ae6QGDPV+Rf8wjmreEfzNiVvu3z5MhcuXGDFihVWr+n0ysM6YqMms3PLEhLnz2CsjxyJBMb6yEmcP4OdW5aIBPwz5dihVSBDne6XwFQRS8eMsRguErCl/o6bjhMwgEFPf0ejdwJ6ACTGTCVKFWy+CEcqkRClChYJeIi6tV0OE6ypIu7Weu8BIvcjr1TCgjDS7q6IRQIWBOF+MuqVsCCMNFNFrAgKEglYEIQHhtde4CAIIy0gMpK5f/nLaIchCIJgwVGH87AqYYVCQXt7+3C+QhAEQRAeWu3t7TZfYWgyrEp4+vTpVFZWolarkUpFz7YgCIIgmBiNRvr6+rhx4wZGoxE/Pz+raYZ1YRaATqfj5MmTLj+0WhAEQRAedkajEYPBQFxcHAkJCVaPvBx2EobBJ96YbnwWBEEQBOH/+fj44O/vb/OZ0x5JwoIgCIIguE6cyBUEQRCEUSKSsCAIgiCMEpGEBUEQBGGU/B9L1XRS1p2q9QAAAABJRU5ErkJggg==\\n\",\n            \"text/plain\": [\n              \"<Figure size 432x288 with 1 Axes>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"t3lzaMwFLi4D\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {}\n      },\n      \"source\": [\n        \"#@title Helper function to plot affordance arrows.\\n\",\n        \"\\n\",\n        \"def plot_affordances_camera_ready(\\n\",\n        \"    nstates, nactions, affordances, mdp, mdp_wall_locs, ax=None,\\n\",\n        \"    headwidth=2.7, linewidths=1, scale=1.9, headlength=2,\\n\",\n        \"    wall_color=(0, 0, 0, 1), grid_kwargs=None, figsize=(14, 8)):\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"    Plots the environment  with walls.\\n\",\n        \"    Args:\\n\",\n        \"      nstates: Number of state in the mdp\\n\",\n        \"      nactions: Number of actions in the mdp\\n\",\n        \"      affordances: Affordances of shape |S| * |A|\\n\",\n        \"      mdp: The mdp to plot\\n\",\n        \"      mdp_wall_locs:Locations of the walls for plotting them in a different color\\n\",\n        \"      ax: The axes to plot this on\\n\",\n        \"      headwidth: quiver arguments for arrows\\n\",\n        \"      linewidths: quiver arguments for arrows\\n\",\n        \"      scale: quiver arguments for arrows\\n\",\n        \"      headlength:  quiver arguments for arrows\\n\",\n        \"      wall_color: RGB color of the walls\\n\",\n        \"      grid_kwargs: grid argrument specification.\\n\",\n        \"      figsize: Dimensions of the figure.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      Visualization of the environment\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"  grid_kwargs = grid_kwargs or {}\\n\",\n        \"  if ax is None:\\n\",\n        \"    fig = plt.figure(figsize=figsize)\\n\",\n        \"    ax = fig.add_subplot(111)\\n\",\n        \"  plot_environment(\\n\",\n        \"      mdp, ax,\\n\",\n        \"      wall_locs=mdp_wall_locs,\\n\",\n        \"      plot_grid=True,\\n\",\n        \"      grid_kwargs=grid_kwargs,\\n\",\n        \"      wall_color=wall_color)\\n\",\n        \"  action_symbols = []\\n\",\n        \"  for s in range(nstates):\\n\",\n        \"    for a in range(nactions):\\n\",\n        \"      one_hot_state = convert_int_rep_to_onehot(s, nstates)\\n\",\n        \"      y_pos, x_pos =  mdp.unflatten_state(one_hot_state)\\n\",\n        \"      if (y_pos, x_pos) not in mdp_wall_locs:\\n\",\n        \"        if affordances[s, a] == 1.0:\\n\",\n        \"          left_arrow = (-0.8, 0)\\n\",\n        \"          right_arrow = (0.8, 0)\\n\",\n        \"          up_arrow = (0, -0.8)\\n\",\n        \"          down_arrow = (0, 0.8)\\n\",\n        \"          if a == actions.LEFT:  # Left\\n\",\n        \"            ax.quiver(\\n\",\n        \"                x_pos,y_pos,*left_arrow, color=DEFAULT_ARROW_COLOR, alpha=1.0,\\n\",\n        \"                angles='xy', scale_units='xy', scale=scale,\\n\",\n        \"                headwidth=headwidth, linewidths=linewidths,\\n\",\n        \"                headlength=headlength) #L\\n\",\n        \"          if a == actions.RIGHT:  #Right\\n\",\n        \"            ax.quiver(\\n\",\n        \"                x_pos,y_pos,*right_arrow, color=DEFAULT_ARROW_COLOR, alpha=1.0,\\n\",\n        \"                angles='xy', scale_units='xy', scale=scale,\\n\",\n        \"                headwidth=headwidth, linewidths=linewidths,\\n\",\n        \"                headlength=headlength) #R\\n\",\n        \"          if a == actions.UP:  #Up\\n\",\n        \"            ax.quiver(\\n\",\n        \"                x_pos,y_pos,*up_arrow, color=DEFAULT_ARROW_COLOR, alpha=1.0,\\n\",\n        \"                angles='xy', scale_units='xy', scale=scale,\\n\",\n        \"                headwidth=headwidth, linewidths=linewidths,\\n\",\n        \"                headlength=headlength) #U\\n\",\n        \"          if a == actions.DOWN:  #Down\\n\",\n        \"            ax.quiver(\\n\",\n        \"                x_pos,y_pos,*down_arrow,color=DEFAULT_ARROW_COLOR, alpha=1.0,\\n\",\n        \"                angles='xy', scale_units='xy', scale=scale,\\n\",\n        \"                headwidth=headwidth, linewidths=linewidths,\\n\",\n        \"                headlength=headlength) #D\\n\",\n        \"\\n\",\n        \"  return ax\\n\"\n      ],\n      \"execution_count\": 40,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"0bM1DormLHHr\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 390\n        },\n        \"outputId\": \"7e2c289a-03bc-4602-e066-373e317d2d8d\"\n      },\n      \"source\": [\n        \"#@title Plot affordances computed from transition matrix.\\n\",\n        \"intent_name = 'collection' #@param [\\\"collection\\\", \\\"up\\\", \\\"left\\\"]\\n\",\n        \"world_name = 'pachinko' #@param [\\\"pachinko\\\", \\\"one_room\\\", \\\"four_room\\\"]\\n\",\n        \"grid_size =  7#@param {type:'integer'}\\n\",\n        \"headwidth =  5#@param {type:'number'}\\n\",\n        \"\\n\",\n        \"if world_name == 'one_room':\\n\",\n        \"  mdp, mdp_wall_locs = build_one_room_gridsize(grid_size=grid_size)\\n\",\n        \"elif world_name == 'pachinko':\\n\",\n        \"  mdp, mdp_wall_locs = build_pachinko_gridsize(grid_size=grid_size)\\n\",\n        \"elif world_name == 'four_room':\\n\",\n        \"  mdp, mdp_wall_locs = build_four_rooms_example()\\n\",\n        \"else:\\n\",\n        \"  raise ValueError('Unknown environment!')\\n\",\n        \"\\n\",\n        \"AF = _compute_affordances(\\n\",\n        \"    mdp,\\n\",\n        \"    mdp.state_space,\\n\",\n        \"    mdp.action_space,\\n\",\n        \"    intent_name=intent_name,\\n\",\n        \"    threshold=0.0,\\n\",\n        \"    mdp_wall_locs=mdp_wall_locs)\\n\",\n        \"\\n\",\n        \"if intent_name == 'up':\\n\",\n        \"  AF[mdp.terminal_states[0], :] = 0\\n\",\n        \"  AF[mdp.terminal_states[0], actions.LEFT] = 1\\n\",\n        \"\\n\",\n        \"plot_affordances_camera_ready(\\n\",\n        \"    mdp.state_space, \\n\",\n        \"    mdp.action_space, \\n\",\n        \"    affordances=AF, mdp=mdp,\\n\",\n        \"    mdp_wall_locs=mdp_wall_locs,\\n\",\n        \"    linewidths=0,\\n\",\n        \"    headwidth=headwidth,\\n\",\n        \"    headlength=4,\\n\",\n        \"    wall_color=(220, 220, 220, 0.5),\\n\",\n        \"    figsize=(5,5),\\n\",\n        \"    grid_kwargs={'color':(220 / 255, 220 / 255, 220 / 255, 0.8)}\\n\",\n        \"    )\\n\",\n        \"plt.axis('off')\\n\",\n        \"plt.tight_layout()\"\n      ],\n      \"execution_count\": 43,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\\n\"\n          ],\n          \"name\": \"stderr\"\n        },\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"<Figure size 360x360 with 1 Axes>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"HbXIGuRCX35O\",\n        \"colab_type\": \"text\"\n      },\n      \"source\": [\n        \"# Sec 7.1 Learn Affordances\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"K3p1iqV8waWh\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {}\n      },\n      \"source\": [\n        \"#@title Helper function to collect data from environment.\\n\",\n        \"class Intent(enum.IntEnum):\\n\",\n        \"  completed = 1.0\\n\",\n        \"  incomplete = 0.0\\n\",\n        \"\\n\",\n        \"def get_trajectories(\\n\",\n        \"    mdp, num_rollouts=500, max_trajectory_length=50, policy=None,\\n\",\n        \"    intent_name='collection', random_starts=False, seed=None):\\n\",\n        \"  \\\"\\\"\\\"Takes trajectory samples from an environment.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    mdp: The MDP to evaluate the intent on.\\n\",\n        \"    num_rollouts: The total number of trajectories to sample.\\n\",\n        \"    max_trajectory_length: The maximum length of the trajectory.\\n\",\n        \"    policy: The policy to sample using. If none is given a random policy\\n\",\n        \"      is used. The policy must take a single argument, the one hot\\n\",\n        \"      representation of the state. If using a tensorflow function make sure to\\n\",\n        \"      handle batching within the policy itself.\\n\",\n        \"    intent_name: The name of the intent to evalaute.\\n\",\n        \"    random_starts: randomly sampled start state per rollout\\n\",\n        \"    seed: set a specific seed\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    The trajectories collected from the environment:\\n\",\n        \"      This is a 4-tuple containing the batch of state, action, state' and intent\\n\",\n        \"      target.\\n\",\n        \"    Human Readable transitions:\\n\",\n        \"      A set containing the unique transitions in the trajectory batch and if the\\n\",\n        \"      intent was completed.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  if seed is not None:\\n\",\n        \"    np.random.seed(seed)\\n\",\n        \"    random.seed(seed)\\n\",\n        \"    mdp.set_seed(seed)\\n\",\n        \"\\n\",\n        \"  trajectory = []\\n\",\n        \"  if random_starts:\\n\",\n        \"    s_t = get_randomized_state(mdp)\\n\",\n        \"  else:\\n\",\n        \"    s_t = mdp.reset()\\n\",\n        \"  trajectory_length = 0\\n\",\n        \"  human_readable = set()\\n\",\n        \"  if policy is None:\\n\",\n        \"    def policy(_):\\n\",\n        \"      return np.random.randint(mdp.action_space)\\n\",\n        \"\\n\",\n        \"  for _ in range(num_rollouts):\\n\",\n        \"    action = policy(s_t)\\n\",\n        \"    s_tp1, reward, done, _ = mdp.step(action)\\n\",\n        \"    state_int = get_current_state_integer(s_t)\\n\",\n        \"    intent = _get_intent_completed(\\n\",\n        \"        mdp, s_t, action, s_tp1, intent_name=intent_name)\\n\",\n        \"\\n\",\n        \"    # Human readable vesion:\\n\",\n        \"    human_readable.add((\\n\",\n        \"        mdp.unflatten_state(s_t),\\n\",\n        \"        Actions(action),\\n\",\n        \"        mdp.unflatten_state(s_tp1),\\n\",\n        \"        Intent(intent)))\\n\",\n        \"\\n\",\n        \"    # Prepare things for tensorflow:\\n\",\n        \"    s_tf = tf.constant(s_t.astype(np.float32))\\n\",\n        \"    s_tp1_tf = tf.constant(s_tp1.astype(np.float32))\\n\",\n        \"    a_tf = tf.one_hot(action, mdp.action_space)\\n\",\n        \"    # The mask will only consider the action that was actually taken.\\n\",\n        \"    mask_tf = tf.cast(a_tf, tf.float32)\\n\",\n        \"    # Computing targets\\n\",\n        \"    if intent > 0.0:\\n\",\n        \"      # if a completed the intent I_a(s')\\n\",\n        \"      targets = tf.one_hot(action, mdp.action_space)\\n\",\n        \"    else:\\n\",\n        \"      # vector of zeros if action a completed no intent.\\n\",\n        \"      targets = tf.zeros_like(a_tf)\\n\",\n        \"\\n\",\n        \"    trajectory.append((\\n\",\n        \"        s_tf, a_tf, s_tp1_tf, targets)\\n\",\n        \"    )\\n\",\n        \"    trajectory_length += 1\\n\",\n        \"    if done or trajectory_length > max_trajectory_length:\\n\",\n        \"      if random_starts:\\n\",\n        \"        s_t = get_randomized_state(mdp)\\n\",\n        \"      else:\\n\",\n        \"        s_t = mdp.reset()\\n\",\n        \"    else:\\n\",\n        \"      s_t = s_tp1\\n\",\n        \"\\n\",\n        \"  trajectory = list(map(tf.stack, zip(*trajectory)))\\n\",\n        \"  \\n\",\n        \"  return trajectory, human_readable\"\n      ],\n      \"execution_count\": 44,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"4GMq1t77eigL\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {}\n      },\n      \"source\": [\n        \"#@title Function: Populate Learned Affordances\\n\",\n        \"def get_learned_affordances(mdp, affordnet, classification_threshold=0.55):\\n\",\n        \"  '''Gets the learned affordances from the environment.\\n\",\n        \"  Args:\\n\",\n        \"    mdp: The mdp to get the affordances from.\\n\",\n        \"    affordnet: The affordance network.\\n\",\n        \"    classification_threshold: accuracy of the classifier\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    affordances in the form of a |S| * |A|\\n\",\n        \"  '''\\n\",\n        \"  n_states, n_actions = mdp.state_space, mdp.action_space\\n\",\n        \"  affordances = np.zeros((n_states, n_actions))\\n\",\n        \"  for s in range(n_states):\\n\",\n        \"    action_prob_predictions = affordnet(tf.eye(n_states))[s]\\n\",\n        \"    actions_affordable = tf.where(\\n\",\n        \"        tf.greater_equal(\\n\",\n        \"            action_prob_predictions, tf.constant(classification_threshold)))[:,-1]\\n\",\n        \"    for ind, a in enumerate(actions_affordable.numpy()):\\n\",\n        \"      affordances[s,a] = 1.0\\n\",\n        \"  return affordances\"\n      ],\n      \"execution_count\": 45,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"t789yH3IkGjR\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {}\n      },\n      \"source\": [\n        \"#@title Function: Affordance training code.\\n\",\n        \"def train_afford_net(\\n\",\n        \"    mdp, network, optimizer,\\n\",\n        \"    intent_name='collection',\\n\",\n        \"    num_train_steps=10,\\n\",\n        \"    fresh_data=True,\\n\",\n        \"    num_rollouts=1,\\n\",\n        \"    max_trajectory_length=100,\\n\",\n        \"    optimize_performance=False,\\n\",\n        \"    debug=False,\\n\",\n        \"    print_losses=False,\\n\",\n        \"    random_starts=False,\\n\",\n        \"    passing_data=False,\\n\",\n        \"    trajectories=None,\\n\",\n        \"    unique_transitions=None):\\n\",\n        \"  \\\"\\\"\\\"Trains an affordance network.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    mdp: The mdp to collect training data from.\\n\",\n        \"    network: The affordance network.\\n\",\n        \"    optimizer: The optimizer to use for training.\\n\",\n        \"    intent_name: The name of the intent to train affordances for.\\n\",\n        \"    num_train_steps: The total number of training steps.\\n\",\n        \"    fresh_data: Use fresh data at every before completing a training step.\\n\",\n        \"    num_rollouts: The number of rollout trajectories per training step.\\n\",\n        \"    max_trajectory_length: The maximum length of each trajectory\\n\",\n        \"    optimizer_performance: Use tf.function to speed up training. (Right now\\n\",\n        \"      there are no apparent speed benefits of this function...?)\\n\",\n        \"    debug: Debug mode prints out the human readable transitions.\\n\",\n        \"    print_losses: Prints out the losses at every training step.\\n\",\n        \"    random_starts: randomly sampled start state per rollout\\n\",\n        \"    passing_data: set True if previously collected data is being passed\\n\",\n        \"    trajectories: tf trajectories from previously collected data\\n\",\n        \"    unique_transitions: tf unique_transitions from previously collected data\\n\",\n        \"  \\\"\\\"\\\"  \\n\",\n        \"\\n\",\n        \"  def _train_step(trajectory):\\n\",\n        \"    with tf.GradientTape() as tape:\\n\",\n        \"      s_t, a_t, s_tp1, intent_target = trajectory\\n\",\n        \"      preds = network(s_t)\\n\",\n        \"      mask = tf.cast(a_t, tf.float32)\\n\",\n        \"\\n\",\n        \"      intent_target = tf.reshape(intent_target, (-1, 1))\\n\",\n        \"      preds = tf.reshape(preds, (-1, 1))\\n\",\n        \"      mask = tf.reshape(mask, (-1,))\\n\",\n        \"\\n\",\n        \"      loss = tf.keras.losses.binary_crossentropy(intent_target, preds)\\n\",\n        \"      masked_loss = (loss * mask)\\n\",\n        \"\\n\",\n        \"      total_loss = tf.reduce_sum(masked_loss) / tf.reduce_sum(1-mask)\\n\",\n        \"    grads = tape.gradient(total_loss, network.trainable_variables)\\n\",\n        \"    optimizer.apply_gradients(zip(grads, network.trainable_variables))\\n\",\n        \"\\n\",\n        \"    return total_loss\\n\",\n        \"\\n\",\n        \"  if optimize_performance and not debug:\\n\",\n        \"    print('Training step has been optimized.')\\n\",\n        \"    _train_step = tf.function(_train_step)\\n\",\n        \"\\n\",\n        \"  initial_data_collected = False\\n\",\n        \"  for i in range(num_train_steps):\\n\",\n        \"    if not initial_data_collected or fresh_data:\\n\",\n        \"      initial_data_collected = True\\n\",\n        \"      running_time = time.time()\\n\",\n        \"      if not passing_data:\\n\",\n        \"        trajectories, unique_transitions = get_trajectories(\\n\",\n        \"            mdp, num_rollouts=num_rollouts,\\n\",\n        \"            max_trajectory_length=max_trajectory_length,\\n\",\n        \"            intent_name=intent_name,\\n\",\n        \"            random_starts=random_starts)\\n\",\n        \"      else:\\n\",\n        \"        trajectories = trajectories\\n\",\n        \"        unique_transitions = unique_transitions\\n\",\n        \"      collection_running_time = time.time() - running_time\\n\",\n        \"      if debug: print('unique_transitions:', unique_transitions)\\n\",\n        \"    running_time = time.time()\\n\",\n        \"    loss = _train_step(trajectories)\\n\",\n        \"    if debug or print_losses: \\n\",\n        \"      print(\\n\",\n        \"          'loss:', loss.numpy().item(),\\n\",\n        \"          'collection_loop_time', collection_running_time,\\n\",\n        \"          'train_loop_time', time.time() - running_time)\\n\"\n      ],\n      \"execution_count\": 46,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"bNMt4bEJKFJz\",\n        \"colab_type\": \"code\",\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 407\n        },\n        \"outputId\": \"873aedbb-2205-4261-e513-b64a69753349\"\n      },\n      \"source\": [\n        \"intent_name = 'collection' #@param {type:'string'}\\n\",\n        \"world_name = 'pachinko' #@param {type:'string'}\\n\",\n        \"grid_size =  9#@param {type:'integer'}\\n\",\n        \"headwidth =  5#@param {type:'number'}\\n\",\n        \"classification_threshold =  0.95#@param {type:'number'}\\n\",\n        \"num_transitions = 2000#@param {type:'number'}\\n\",\n        \"max_trajectory_length = 10#@param {type:'number'}\\n\",\n        \"\\n\",\n        \"if world_name == 'one_room':\\n\",\n        \"  mdp, mdp_wall_locs = build_one_room_gridsize(grid_size=grid_size)\\n\",\n        \"elif world_name == 'pachinko':\\n\",\n        \"  mdp, mdp_wall_locs = build_pachinko_gridsize(grid_size=grid_size)\\n\",\n        \"elif world_name == 'four_room':\\n\",\n        \"  mdp, mdp_wall_locs = build_four_rooms_example()\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"network = tf.keras.layers.Dense(\\n\",\n        \"    mdp.action_space,\\n\",\n        \"    activation=tf.keras.activations.sigmoid)\\n\",\n        \"\\n\",\n        \"sgd = tf.keras.optimizers.Adam(learning_rate=0.1)\\n\",\n        \"\\n\",\n        \"train_afford_net(\\n\",\n        \"    mdp, \\n\",\n        \"    network,\\n\",\n        \"    sgd,\\n\",\n        \"    intent_name=intent_name,\\n\",\n        \"    num_train_steps=5000,\\n\",\n        \"    num_rollouts=num_transitions,\\n\",\n        \"    fresh_data=False,\\n\",\n        \"    max_trajectory_length=max_trajectory_length,\\n\",\n        \"    debug=False,\\n\",\n        \"    print_losses=False,\\n\",\n        \"    optimize_performance=True,\\n\",\n        \"    random_starts=True)\\n\",\n        \"\\n\",\n        \"AF_learned = get_learned_affordances(\\n\",\n        \"    mdp,\\n\",\n        \"    affordnet=network, \\n\",\n        \"    classification_threshold=0.95)\\n\",\n        \"\\n\",\n        \"plot_affordances_camera_ready(\\n\",\n        \"    mdp.state_space, \\n\",\n        \"    mdp.action_space, \\n\",\n        \"    affordances=AF_learned, mdp=mdp,\\n\",\n        \"    mdp_wall_locs=mdp_wall_locs,\\n\",\n        \"    linewidths=0,\\n\",\n        \"    headwidth=headwidth,\\n\",\n        \"    headlength=4,\\n\",\n        \"    wall_color=(220,220,220,0.5),\\n\",\n        \"    figsize=(5,5),\\n\",\n        \"    grid_kwargs={'color':(220/255,220/255,220/255,0.8)}\\n\",\n        \"    )\\n\",\n        \"plt.axis('off')\\n\",\n        \"plt.tight_layout()\"\n      ],\n      \"execution_count\": 47,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Training step has been optimized.\\n\"\n          ],\n          \"name\": \"stdout\"\n        },\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\\n\"\n          ],\n          \"name\": \"stderr\"\n        },\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"<Figure size 360x360 with 1 Axes>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "affordances_theory/README.md",
    "content": "# Code for \"What can I do here? A theory of affordances in reinforcement Learning.\n\nThis repository contains code that accompanies the paper \"What can I do here? A\ntheory of affordances in reinforcement learning\".\n\nThe iPython notebook AffordancesInDiscreteEnvironment.ipynb covers the\nexperiments in Section 6 and Learning affordances in discrete environments.\n\nThe iPython notebook AffordancesInContinuousEnvironment.ipynb covers the\nexperiments in Section 7.\n"
  },
  {
    "path": "affordances_theory/requirements.txt",
    "content": "tensorflow==2.1.0\ntensorflow_probability=0.7.0\nmatplotlib==3.1.2\nnumpy==1.17.5\n"
  },
  {
    "path": "alphafold_casp13/README.md",
    "content": "# AlphaFold 1\n\nThis package provides an implementation of the contact prediction network used\nin AlphaFold 1, associated model weights and CASP13 dataset as used for CASP13\n(2018) and published in Nature. **This is completely different code from that\nused in AlphaFold 2 which was used in CASP14 (2020). You can find AlphaFold 2 at\nhttps://github.com/deepmind/alphafold.**\n\nAny publication that discloses findings arising from using this source code must\ncite *Improved protein structure prediction using potentials from deep learning*\nby Andrew W. Senior, Richard Evans, John Jumper, James Kirkpatrick, Laurent\nSifre, Tim Green, Chongli Qin, Augustin Žídek, Alexander W. R. Nelson, Alex\nBridgland, Hugo Penedones, Stig Petersen, Karen Simonyan, Steve Crossan,\nPushmeet Kohli, David T. Jones, David Silver, Koray Kavukcuoglu, Demis Hassabis.\n\nThe paper abstract can be found on Nature's site\n[10.1038/s41586-019-1923-7](https://www.nature.com/articles/s41586-019-1923-7)\nand the full text can be accessed directly at https://rdcu.be/b0mtx.\n\n## Setup\n\n**This code can't be used to predict structure of an arbitrary protein sequence.\nIt can be used to predict structure only on the CASP13 dataset (links below).**\nThe feature generation code is tightly coupled to our internal infrastructure as\nwell as external tools, hence we are unable to open-source it. We give guide as\nto the features used for those accustomed to computing them below. See also\n[issue #18](https://github.com/deepmind/deepmind-research/issues/28) for more\ndetails.\n\nThis code works on Linux, we don't support other operating systems.\n\n### Dependencies\n\n*   Python 3.6+.\n*   [Abseil 0.8.0](https://github.com/abseil/abseil-py)\n*   [Numpy 1.16](https://numpy.org)\n*   [Six 1.12](https://pypi.org/project/six/)\n*   [Setuptools 41.0.0](https://setuptools.readthedocs.io/en/latest/)\n*   [Sonnet 1.35](https://github.com/deepmind/sonnet)\n*   [TensorFlow 1.14](https://tensorflow.org). Not compatible with TensorFlow\n    2.0+.\n*   [TensorFlow Probability 0.7.0](https://www.tensorflow.org/probability)\n\nYou can set up Python virtual environment (you might need to install the\n`python3-venv` package first) with all needed dependencies inside the forked\n`deepmind_research` repository using:\n\n```shell\npython3 -m venv alphafold_venv\nsource alphafold_venv/bin/activate\npip install wheel\npip install -r alphafold_casp13/requirements.txt\n```\n\nAlternatively, you can just use the `run_eval.sh` script provided which will run\nthese commands for you. See the section on running the system below for more\ndetails.\n\n## Data\n\nWhile the code is licensed under the Apache 2.0 License, the AlphaFold weights\nand data are made available for non-commercial use only under the terms of the\nCreative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)\nlicense. You can find details at:\nhttps://creativecommons.org/licenses/by-nc/4.0/legalcode\n\nYou can download the data from:\n\n*   http://bit.ly/alphafold-casp13-data-license: The data license file.\n*   http://bit.ly/alphafold-casp13-data: The dataset to reproduce AlphaFold's\n    CASP13 results.\n*   http://bit.ly/alphafold-casp13-weights: The model checkpoints.\n\n### Input data\n\nThe dataset to reproduce AlphaFold's CASP13 results can be downloaded from\nhttp://bit.ly/alphafold-casp13-data. The dataset is in a single zip file called\n`casp13_data.zip` which has about **43.5 GB**.\n\nThe zip file contains 1 directory for each CASP13 target and a `LICENSE.txt`\nfile. Each target directory contains the following files:\n\n1.  `TARGET.tfrec` file. This is a\n    [TFRecord](https://www.tensorflow.org/tutorials/load_data/tfrecord) file\n    with serialized tf.train.Example protocol buffers that contain the features\n    needed to run the model.\n1.  `contacts/TARGET.pickle` file(s) with the predicted distogram. These pickles\n    were pickled using Python 2, so to unpickle them in Python 3 you will need\n    to set the `encoding='latin1'` optional argument for `pickle.load()`.\n1.  `contacts/TARGET.rr` file(s) with the contact map derived from the predicted\n    distogram. The RR format is described on the\n    [CASP website](http://predictioncenter.org/casp13/index.cgi?page=format#RR).\n\nNote that for **T0999** the target was manually split based on hits in HHSearch\ninto 5 sub-targets, hence there are 5 distograms\n(`contacts/T0999s{1,2,3,4,5}.pickle`) and 5 RR files\n(`contacts/T0999s{1,2,3,4,5}.rr`).\n\nThe `contacts/` folder is not needed to run the model, these files are included\nonly for convenience so that you don't need to run the inference for CASP13\ntargets to get the contact map.\n\n### Model checkpoints\n\nThe model checkpoints can be downloaded from\nhttp://bit.ly/alphafold-casp13-weights. The model checkpoints are in a zip file\ncalled `alphafold_casp13_weights.zip` which has about **210 MB**.\n\nThe zip file contains:\n\n1.  A directory `873731`. This contains the weights for the distogram model.\n1.  A directory `916425`. This contains the weights for the background distogram\n    model.\n1.  A directory `941521`. This contains the weights for the torsion model.\n1.  `LICENSE.txt`. The model checkpoints have a non-commercial license which is\n    defined in this file.\n\nEach directory with model weights contains a number of different model\nconfigurations. Each model has a config file and associated weights. There is\nonly one torsion model. Each model directory also contains a stats file that is\nused for feature normalization specific to that model.\n\n## Distogram prediction\n\n### Running the system\n\nYou can use the `run_eval.sh` script to run the entire Distogram prediction\nsystem. There are a few steps you need to start with:\n\n1.  Download the input data as described above. Unpack the data in the directory\n    with the code.\n1.  Download the model checkpoints as described above. Unpack the data.\n1.  In `run_eval.sh` set the following:\n    *   `DISTOGRAM_MODEL` to the path to the directory with the distogram model.\n    *   `BACKGROUND_MODEL` to the path to the directory with the background\n        model.\n    *   `TORSION_MODEL` to the path to the directory with the torsion model.\n    *   `TARGET` to the name of the target.\n    *   `TARGET_PATH` to the path to the directory with the target input data.\n    *   `OUTPUT_DIR` is by default set to a new directory with a timestamp\n        within your home directory.\n\nThen run `alphafold_casp13/run_eval.sh` from the `deepmind_research` parent\ndirectory (you will get errors if you try running `run_eval.sh` directly from\nthe `alphafold_casp13` directory).\n\nThe contact prediction works in the following way:\n\n1.  4 replicas (by *replica* we mean a configuration file describing the network\n    architecture and a snapshot with the network weights), each with slightly\n    different model configuration, are launched to predict the distogram.\n1.  4 replicas, each with slightly different model configuration are launched to\n    predict the background distogram.\n1.  1 replica is launched to predict the torsions.\n1.  The predictions from the different replicas are averaged together using\n    `ensemble_contact_maps.py`.\n1.  The predictions for the 64 × 64, 128 × 128 and 256 × 256 distogram crops are\n    pasted together using `paste_contact_maps.py`.\n\nWhen running `run_eval.sh` the output has the following directory structure:\n\n*   **distogram/**: Contains 4 subfolders, one for each replica. Each of these\n    contain the predicted ASA, secondary structure and a pickle file with the\n    distogram for each crop (see below for more details). It also contains an\n    `ensemble` directory with the ensembled distograms.\n*   **background_distogram/**: Contains 4 subfolders, one for each replica. Each\n    of these contain a pickle file with the background distogram for each crop.\n    It also contains an `ensemble` directory with the ensembled background\n    distograms.\n*   **torsion/**: Contains 1 subfolder as there was only a single replica. This\n    folder contains contains the predicted ASA, secondary structure, backbone\n    torsions and a pickle file with the distogram for each crop. It also\n    contains an `ensemble` directory, which contains a copy of the predicted\n    output as there is only a single replica in this case.\n*   **pasted/**: Contains distograms obtained from the ensembled distograms by\n    pasting. An RR contact map file is computed from this pasted distogram.\n    **This is the final distogram that was used in the subsequent AlphaFold\n    folding pipeline in CASP13.**\n\n### Distogram output format\n\nThe distogram is a Python pickle file with a dictionary containing the following\nfields:\n\n*   `min_range`: The minimum range in Angstroms to consider in distograms.\n*   `max_range`: The range in Angstroms to consider in distograms, see\n    `num_bins` below for clarification. The upper end of the distogram is\n    `min_range + max_range`.\n*   `num_bins`: The number of bins in the distance histogram being predicted. We\n    divide the interval from `min_range` to `min_range + max_range` into this\n    many bins. The distograms were trained so that distances lower than\n    `min_range` were counted in the lowest bin and distances higher than\n    `min_range + max_range` were added to the final bin. The `num_bins - 1`\n    boundaries between bins are thus `np.linspace(0, max_range, num_bins + 1,\n    endpoint=True)[1:-1] + min_range`.\n*   `sequence`: The target sequence of amino acids of length `L`.\n*   `target`: The name of the target.\n*   `domain`: The name of the target including the domain name.\n*   `probs`: The distogram as a Numpy array of shape `[L, L, num_bins]`.\n\n## Data splits\n\nWe used a version of [PDB](https://www.rcsb.org/) downloaded on 2018-03-15. The\ntrain/test split can be found in the `train_domains.txt` and `test_domains.txt`\nfiles in this repository. The split is based on the\n[CATH 2018-03-16](https://www.cathdb.info/) database.\n\n## Features\n\nThere is currently no plan to open source the feature generation code as it is\ntightly coupled to our internal infrastructure as well as external tools which\nwe cannot open source.\n\nSome features are needed only as placeholders to construct the model. These can\nbe set to all zeros when running the inference. Such features are marked in the\ntable below as not needed and you can just fill them with zeros when running\ninference.\n\nThe table below provides an overview of the features we used to make it possible\nto reconstruct our feature generation code. Some features that require more\nthorough explanation are explained in the section below the table. Note that\n`NR` stands for number of residues, i.e. the length of the amino acid sequence:\n\n| Name                              | Needed | TF DType | Shape           | Description                                                                                                                  |\n|-----------------------------------|:------:|----------|-----------------|------------------------------------------------------------------------------------------------------------------------------|\n| `aatype`                          | ✔️      | float32  | `(NR, 21)`      | One hot encoding of amino acid types. The mapping is `ARNDCQEGHILKMFPSTWYVX -> range(21)`. See below.                        |\n| `alpha_mask`                      | ❌     | int64    | `(NR, 1)`       | Mask for `alpha_positions`.                                                                                                  |\n| `alpha_positions`                 | ❌     | float32  | `(NR, 3)`       | `(x, y, z)` Carbon Alpha coordinates.                                                                                        |\n| `beta_mask`                       | ❌     | int64    | `(NR, 1)`       | Mask for `beta_positions`.                                                                                                   |\n| `beta_positions`                  | ❌     | float32  | `(NR, 3)`       | `(x, y, z)` Carbon Beta coordinates.                                                                                         |\n| `between_segment_residues`        | ❌     | int64    | `(NR, 1)`       | The number of between segment residues (BSR) at the next position. E.g. `ABCXXD` (`XX` is BSR) would be `[0,0,2,0]`.         |\n| `chain_name`                      | ❌     | string   | `(1)`           | The chain name. E.g. 'A', 'B', ...                                                                                           |\n| `deletion_probability`            | ✔️      | float32  | `(NR, 1)`       | The fraction of sequences that had a deletion at this position. See below.                                                   |\n| `domain_name`                     | ❌     | string   | `(1)`           | The domain name.                                                                                                             |\n| `gap_matrix`                      | ✔️      | float32  | `(NR, NR, 1)`   | Covariation signal from the gapped states, this gives an indication of the variance induced due to gapped states. See below. |\n| `hhblits_profile`                 | ❌     | float32  | `(NR, 22)`      | A profile (probability distribution over amino acid types) computed using HHBlits MSA. Encoding: 20 amino acids + 'X' + '-'. |\n| `hmm_profile`                     | ✔️      | float32  | `(NR, 30)`      | The HHBlits HHM profile (from the `-ohhm` HHBlits output file). Asterisks in the output are replaced by 0.0. See below.      |\n| `key`                             | ❌     | string   | `(1)`           | The unique id of the protein.                                                                                                |\n| `mutual_information`              | ❌      | float32  | `(NR, NR, 1)`   | The average product corrected mutual information. See https://doi.org/10.1093/bioinformatics/btm604.                         |\n| `non_gapped_profile`              | ✔️      | float32  | `(NR, 21)`      | A profile from amino acids only (discounting gaps). See below.                                                               |\n| `num_alignments`                  | ✔️      | int64    | `(NR, 1)`       | The number of HHBlits multiple sequence alignments. Has to be repeated `NR` times. See below.                                |\n| `num_effective_alignments`        | ❌     | float32  | `(1)`           | The number of effective alignments (neff at 62 % sequence similarity).                                                       |\n| `phi_angles`                      | ❌     | float32  | `(NR, 1)`       | The phi angles.                                                                                                              |\n| `phi_mask`                        | ❌     | int64    | `(NR, 1)`       | Mask for `phi_angles`.                                                                                                       |\n| `profile`                         | ❌     | float32  | `(NR, 21)`      | A profile (probability distribution over amino acid types) computed using PSI-BLAST. Equivalent to the output of ChkParse.   |\n| `profile_with_prior`              | ✔️      | float32  | `(NR, 22)`      | A profile computed using HHBlits which takes into account priors and Blosum matrix. See equation 5 in https://doi.org/10.1093/nar/25.17.3389.         |\n| `profile_with_prior_without_gaps` | ✔️      | float32  | `(NR, 21)`      | Same as `profile_with_prior` but without gaps included.                                                                      |\n| `pseudo_bias`                     | ✔️      | float32  | `(NR, 22)`      | The bias computed in the MSA pseudolikelihood computation.                                                                   |\n| `pseudo_frob`                     | ✔️      | float32  | `(NR, NR, 1)`   | Frobenius norm of `pseudolikelihood` (gaps not included). Similar to the output of CCMPred.                                  |\n| `pseudolikelihood`                | ✔️      | float32  | `(NR, NR, 484)` | The weights computed in the MSA pseudolikelihood computation.                                                                |\n| `psi_angles`                      | ❌     | float32  | `(NR, 1)`       | The psi angles.                                                                                                              |\n| `psi_mask`                        | ❌     | int64    | `(NR, 1)`       | Mask for `psi_angles`.                                                                                                       |\n| `residue_index`                   | ✔️      | int64    | `(NR, 1)`       | Index of each residue giong from 0 to `NR - 1`. See below.                                                                   |\n| `resolution`                      | ❌     | float32  | `(1)`           | The protein structure resolution.                                                                                            |\n| `reweighted_profile`              | ✔️      | float32  | `(NR, 22)`      | Profile where sequences are reweighted to weight rarer sequences higher. See below.                                          |\n| `sec_structure`                   | ❌     | int64    | `(NR, 8)`       | Secondary structure generated by DSSP and one-hot encoded by the mapping `-HETSGBI -> range(8)`.                             |\n| `sec_structure_mask`              | ❌     | int64    | `(NR, 1)`       | Mask for `sec_structure_mask`.                                                                                               |\n| `seq_length`                      | ✔️      | int64    | `(NR, 1)`       | The length of the amino acid sequence. Has to be repeated `NR` times. See below.                                             |\n| `sequence`                        | ✔️      | string   | `(1)`           | The amino acid sequence (1-letter amino acid encoding). See below.                                                           |\n| `solv_surf`                       | ❌     | float32  | `(NR, 1)`       | Relative solvent accessible area computed using DSSP and then normalized by amino acid maximum accessibility.                |\n| `solv_surf_mask`                  | ❌     | int64    | `(NR, 1)`       | Mask for `solv_surf`.                                                                                                        |\n| `superfamily`                     | ❌     | string   | `(1)`           | The superfamily CATH code.                                                                                                   |\n\n### More details on needed features\n\n#### `aatype`\n\nOne hot encoding of amino acid types. The following code converts an amino acid\nstring into the one-hot encoding:\n\n```python\ndef sequence_to_onehot(sequence):\n  \"\"\"Maps the given sequence into a one-hot encoded matrix.\"\"\"\n  mapping = {aa: i for i, aa in enumerate('ARNDCQEGHILKMFPSTWYVX')}\n  num_entries = max(mapping.values()) + 1\n  one_hot_arr = np.zeros((len(sequence), num_entries), dtype=np.int32)\n\n  for aa_index, aa_type in enumerate(sequence):\n    aa_id = mapping[aa_type]\n    one_hot_arr[aa_index, aa_id] = 1\n\n  return one_hot_arr\n```\n\n#### `deletion_probability`\n\nThe fraction of sequences that had an insert state (denoted by a lowercase\nletter in the A3M format) at this position. We used the following code to\ncompute it from the HHBlits MSA in the A3M format:\n\n```python\ndeletion_matrix = []\nfor msa_sequence in hhblits_a3m_sequences:\n  deletion_vec = []\n  deletion_count = 0\n  for j in msa_sequence:\n    if j.islower():\n      deletion_count += 1\n    else:\n      deletion_vec.append(deletion_count)\n      deletion_count = 0\n  deletion_matrix.append(deletion_vec)\n\ndeletion_matrix = np.array(deletion_matrix)\ndeletion_matrix[deletion_matrix != 0] = 1.0\ndeletion_probability = deletion_matrix.sum(axis=0) / len(deletion_matrix)\n```\n\n#### `gap_matrix`\n\nCovariation signal from the gapped states, this gives an indication of the\nvariance induced due to gapped states. Example:\n\n```\nMSA = A A C D B D F J G B M A\n      - - C D B D F J G B M A\n      A A C D B - - J G B M A\ngap_count = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n             [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n             [0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0]]\ngap_matrix = np.matmul(gap_count.T, gap_count)\n```\n\n#### `hmm_profile`\n\nThe HHBlits HHM profile (from the `-ohhm` HHBlits output file). Asterisks in the\noutput are replaced by 0.0. The following code parses the HHM file:\n\n```python\ndef extract_hmm_profile(hhm_file, sequence, asterisks_replace=0.0):\n  \"\"\"Extracts information from the hmm file and replaces asterisks.\"\"\"\n  profile_part = hhm_file.split('#')[-1]\n  profile_part = profile_part.split('\\n')\n  whole_profile = [i.split() for i in profile_part]\n  # This part strips away the header and the footer.\n  whole_profile = whole_profile[5:-2]\n  gap_profile = np.zeros((len(sequence), 10))\n  aa_profile = np.zeros((len(sequence), 20))\n  count_aa = 0\n  count_gap = 0\n  for line_values in whole_profile:\n    if len(line_values) == 23:\n      # The first and the last values in line_values are metadata, skip them.\n      for j, t in enumerate(line_values[2:-1]):\n        aa_profile[count_aa, j] = (\n            2**(-float(t) / 1000.0) if t != '*' else asterisks_replace)\n      count_aa += 1\n    elif len(line_values) == 10:\n      for j, t in enumerate(line_values):\n        if j <= 6:\n          gap_profile[count_gap, j] = (\n              2**(-float(t) / 1000.0) if t != '*' else asterisks_replace)\n        else:\n          # Neff_M, Neff_I, and Neff_D are given in units of 0.001.\n          gap_profile[count_gap, j] = float(t) / 1000.0\n      count_gap += 1\n    elif not line_values:\n      pass\n    else:\n      raise ValueError('Wrong length of line %s hhm file. Expected 0, 10 or 23'\n                       'got %d'%(line_values, len(line_values)))\n  hmm_profile = np.hstack([aa_profile, gap_profile])\n  assert len(hmm_profile) == len(sequence)\n  return hmm_profile\n```\n\n#### `non_gapped_profile`\n\nA profile from amino acids only (discounting gaps).\n\n```python\ndef non_gapped_profile(amino_acids):\n  \"\"\"Computes a profile from only amino acids and discounting gaps.\"\"\"\n  profile = np.zeros(21)\n  for aa in amino_acids:\n    if aa != 21:  # Ignore gaps.\n      profile[aa] += 1.\n  return profile / np.sum(profile)\n```\n\n#### `num_alignments`\n\nThe number of HHBlits multiple sequence alignments. Has to be repeated `NR`\ntimes. For example, if there are 10 alignments for a sequence of length 8, then\n`num_alignments = [[10], [10], [10], [10], [10], [10], [10], [10]]`.\n\n#### `pseudo_frob`\nThis feature collapses the 484 channels of pseudolikelihood into one by taking\nthe Frobenius norm of the 484 channels and then subtracting the Average Product\nCorrection of the computed Frobenius norm. The Frobenius norm does not take into\naccount the 22nd gap state.\n\n#### `pseudolikelihood`\n\nParameters of a Potts Model coupling the amino acid types of particular residues\nestimated by pseudolikelihood. See https://doi.org/10.1103/PhysRevE.87.012707\nfor more details.\n\n#### `residue_index`\n\nIndex of each residue giong from 0 to `NR - 1`. For example, the sequence `AACR`\nhas `residue_index = [[0], [1], [2], [3]]`.\n\n#### `reweighted_profile`\n\nProfile where sequences are reweighted to weight rarer sequences higher. The\nsequence weights are calculated like this:\n\n```python\ndef sequence_weights(sequence_matrix):\n  \"\"\"Compute sequence reweighting to weight rarer sequences higher.\"\"\"\n  num_rows, num_res = sequence_matrix.shape\n  cutoff = 0.62 * num_res\n  weights = np.ones(num_rows, dtype=np.float32)\n  for i in range(num_rows):\n    for j in range(i + 1, num_rows):\n      similarity = (sequence_matrix[i] == sequence_matrix[j]).sum()\n      if similarity > cutoff:\n        weights[i] += 1\n        weights[j] += 1\n  return 1.0 / weights\n```\n\n#### `seq_length`\n\nThe length of the amino acid sequence. Has to be repeated `NR` times. For\nexample, the sequence `AACR` would have  `seq_length = [[4], [4], [4], [4]]`.\n\n#### `sequence`\n\nThe amino acid sequence (1-letter amino acid encoding). For example, a protein\nwith Alanine, Lysine, Arginine has `sequence = 'AKR'`.\n\n\n# Disclaimer\n\nThis is not an official Google product.\n"
  },
  {
    "path": "alphafold_casp13/asa_output.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Class for predicting Accessible Surface Area.\"\"\"\n\nimport tensorflow as tf  # pylint: disable=g-explicit-tensorflow-version-import\n\n\nclass ASAOutputLayer(object):\n  \"\"\"An output layer to predict Accessible Surface Area.\"\"\"\n\n  def __init__(self, name='asa'):\n    self.name = name\n\n  def compute_asa_output(self, activations):\n    \"\"\"Just compute the logits and outputs given activations.\"\"\"\n    asa_logits = tf.contrib.layers.linear(\n        activations, 1,\n        weights_initializer=tf.random_uniform_initializer(-0.01, 0.01),\n        scope='ASALogits')\n    self.asa_output = tf.nn.relu(asa_logits, name='ASA_output_relu')\n\n    return asa_logits\n"
  },
  {
    "path": "alphafold_casp13/config_dict.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Utilities for storing configuration flags.\"\"\"\n\nimport json\n\n\nclass ConfigDict(dict):\n  \"\"\"Configuration dictionary with convenient dot element access.\"\"\"\n\n  def __init__(self, *args, **kwargs):\n    super(ConfigDict, self).__init__(*args, **kwargs)\n    for arg in args:\n      if isinstance(arg, dict):\n        for key, value in arg.items():\n          self._add(key, value)\n    for key, value in kwargs.items():\n      self._add(key, value)\n\n  def _add(self, key, value):\n    if isinstance(value, dict):\n      self[key] = ConfigDict(value)\n    else:\n      self[key] = value\n\n  def __getattr__(self, attr):\n    try:\n      return self[attr]\n    except KeyError as e:\n      raise AttributeError(e)\n\n  def __setattr__(self, key, value):\n    self.__setitem__(key, value)\n\n  def __setitem__(self, key, value):\n    super(ConfigDict, self).__setitem__(key, value)\n    self.__dict__.update({key: value})\n\n  def __delattr__(self, item):\n    self.__delitem__(item)\n\n  def __delitem__(self, key):\n    super(ConfigDict, self).__delitem__(key)\n    del self.__dict__[key]\n\n  def to_json(self):\n    return json.dumps(self)\n\n  @classmethod\n  def from_json(cls, json_string):\n    return cls(json.loads(json_string))\n"
  },
  {
    "path": "alphafold_casp13/contacts.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Code to run distogram inference.\"\"\"\n\nimport collections\nimport os\nimport time\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport numpy as np\nimport six\nimport sonnet as snt\nimport tensorflow as tf  # pylint: disable=g-explicit-tensorflow-version-import\n\nfrom alphafold_casp13 import config_dict\nfrom alphafold_casp13 import contacts_experiment\nfrom alphafold_casp13 import distogram_io\nfrom alphafold_casp13 import secstruct\n\nflags.DEFINE_string('config_path', None, 'Path of the JSON config file.')\nflags.DEFINE_string('checkpoint_path', None, 'Checkpoint path for evaluation.')\nflags.DEFINE_boolean('cpu', False, 'Force onto CPU.')\nflags.DEFINE_string('output_path', None,\n                    'Base path where all output files will be saved to.')\nflags.DEFINE_string('eval_sstable', None,\n                    'Path of the SSTable to read the input tf.Examples from.')\nflags.DEFINE_string('stats_file', None,\n                    'Path of the statistics file to use for normalization.')\n\nFLAGS = flags.FLAGS\n\n\n# A named tuple to store the outputs of a single prediction run.\nPrediction = collections.namedtuple(\n    'Prediction', [\n        'single_message',  # A debugging message.\n        'num_crops_local',  # The number of crops used to make this prediction.\n        'sequence',  # The amino acid sequence.\n        'filebase',  # The chain name. All output files will use this name.\n        'softmax_probs',  # Softmax of the distogram.\n        'ss',  # Secondary structure prediction.\n        'asa',  # ASA prediction.\n        'torsions',  # Torsion prediction.\n    ])\n\n\ndef evaluate(crop_size_x, crop_size_y, feature_normalization, checkpoint_path,\n             normalization_exclusion, eval_config, network_config):\n  \"\"\"Main evaluation loop.\"\"\"\n  experiment = contacts_experiment.Contacts(\n      tfrecord=eval_config.eval_sstable,\n      stats_file=eval_config.stats_file,\n      network_config=network_config,\n      crop_size_x=crop_size_x,\n      crop_size_y=crop_size_y,\n      feature_normalization=feature_normalization,\n      normalization_exclusion=normalization_exclusion)\n\n  checkpoint = snt.get_saver(experiment.model, collections=[\n      tf.GraphKeys.GLOBAL_VARIABLES,\n      tf.GraphKeys.MOVING_AVERAGE_VARIABLES])\n\n  with tf.train.SingularMonitoredSession(hooks=[]) as sess:\n    logging.info('Restoring from checkpoint %s', checkpoint_path)\n    checkpoint.restore(sess, checkpoint_path)\n\n    logging.info('Writing output to %s', eval_config.output_path)\n    eval_begin_time = time.time()\n    _run_evaluation(sess=sess,\n                    experiment=experiment,\n                    eval_config=eval_config,\n                    output_dir=eval_config.output_path,\n                    min_range=network_config.min_range,\n                    max_range=network_config.max_range,\n                    num_bins=network_config.num_bins,\n                    torsion_bins=network_config.torsion_bins)\n    logging.info('Finished eval %.1fs', (time.time() - eval_begin_time))\n\n\ndef _run_evaluation(\n    sess, experiment, eval_config, output_dir, min_range, max_range, num_bins,\n    torsion_bins):\n  \"\"\"Evaluate a contact map by aggregating crops.\n\n  Args:\n    sess: A tf.train.Session.\n    experiment: An experiment class.\n    eval_config: A config dict of eval parameters.\n    output_dir: Directory to save the predictions to.\n    min_range: The minimum range in Angstroms to consider in distograms.\n    max_range: The maximum range in Angstroms to consider in distograms, see\n      num_bins below for clarification.\n    num_bins: The number of bins in the distance histogram being predicted.\n      We divide the min_range--(min_range + max_range) Angstrom range into this\n      many bins.\n    torsion_bins: The number of bins the torsion angles are discretised into.\n  \"\"\"\n  tf.io.gfile.makedirs(os.path.join(output_dir, 'pickle_files'))\n\n  logging.info('Eval config is %s\\nnum_bins: %d', eval_config, num_bins)\n  num_examples = 0\n  num_crops = 0\n  start_all_time = time.time()\n\n  # Either do the whole test set, or up to a specified limit.\n  max_examples = experiment.num_eval_examples\n  if eval_config.max_num_examples > 0:\n    max_examples = min(max_examples, eval_config.max_num_examples)\n\n  while num_examples < max_examples:\n    one_prediction = compute_one_prediction(\n        num_examples, experiment, sess, eval_config, num_bins, torsion_bins)\n\n    single_message = one_prediction.single_message\n    num_crops_local = one_prediction.num_crops_local\n    sequence = one_prediction.sequence\n    filebase = one_prediction.filebase\n    softmax_probs = one_prediction.softmax_probs\n    ss = one_prediction.ss\n    asa = one_prediction.asa\n    torsions = one_prediction.torsions\n\n    num_examples += 1\n    num_crops += num_crops_local\n\n    # Save the output files.\n    filename = os.path.join(output_dir,\n                            'pickle_files', '%s.pickle' % filebase)\n    distogram_io.save_distance_histogram(\n        filename, softmax_probs, filebase, sequence,\n        min_range=min_range, max_range=max_range, num_bins=num_bins)\n\n    if experiment.model.torsion_multiplier > 0:\n      torsions_dir = os.path.join(output_dir, 'torsions')\n      tf.io.gfile.makedirs(torsions_dir)\n      distogram_io.save_torsions(torsions_dir, filebase, sequence, torsions)\n\n    if experiment.model.secstruct_multiplier > 0:\n      ss_dir = os.path.join(output_dir, 'secstruct')\n      tf.io.gfile.makedirs(ss_dir)\n      secstruct.save_secstructs(ss_dir, filebase, None, sequence, ss)\n\n    if experiment.model.asa_multiplier > 0:\n      asa_dir = os.path.join(output_dir, 'asa')\n      tf.io.gfile.makedirs(asa_dir)\n      secstruct.save_secstructs(asa_dir, filebase, None, sequence,\n                                np.expand_dims(asa, 1), label='Deepmind 2D ASA')\n\n    time_spent = time.time() - start_all_time\n    logging.info(\n        'Evaluate %d examples, %d crops %.1f crops/ex. '\n        'Took %.1fs, %.3f s/example %.3f crops/s\\n%s',\n        num_examples, num_crops, num_crops / float(num_examples), time_spent,\n        time_spent / num_examples, num_crops / time_spent, single_message)\n\n  logging.info('Tested on %d', num_examples)\n\n\ndef compute_one_prediction(\n    num_examples, experiment, sess, eval_config, num_bins, torsion_bins):\n  \"\"\"Find the contact map for a single domain.\"\"\"\n  num_crops_local = 0\n  debug_steps = 0\n  start = time.time()\n  output_fetches = {'probs': experiment.eval_probs}\n  output_fetches['softmax_probs'] = experiment.eval_probs_softmax\n  # Add the auxiliary outputs if present.\n  experiment.model.update_crop_fetches(output_fetches)\n  # Get data.\n  batch = experiment.get_one_example(sess)\n  length = batch['sequence_lengths'][0]\n  batch_size = batch['sequence_lengths'].shape[0]\n  domain = batch['domain_name'][0][0].decode('utf-8')\n  chain = batch['chain_name'][0][0].decode('utf-8')\n  filebase = domain or chain\n  sequence = six.ensure_str(batch['sequences'][0][0])\n  logging.info('SepWorking on %d %s %s %d', num_examples, domain, chain, length)\n  inputs_1d = batch['inputs_1d']\n  if 'residue_index' in batch:\n    logging.info('Getting residue_index from features')\n    residue_index = np.squeeze(\n        batch['residue_index'], axis=2).astype(np.int32)\n  else:\n    logging.info('Generating residue_index')\n    residue_index = np.tile(np.expand_dims(\n        np.arange(length, dtype=np.int32), 0), [batch_size, 1])\n  assert batch_size == 1\n  num_examples += batch_size\n  # Crops.\n  prob_accum = np.zeros((length, length, 2))\n  ss_accum = np.zeros((length, 8))\n  torsions_accum = np.zeros((length, torsion_bins**2))\n  asa_accum = np.zeros((length,))\n  weights_1d_accum = np.zeros((length,))\n  softmax_prob_accum = np.zeros((length, length, num_bins), dtype=np.float32)\n\n  crop_size_x = experiment.crop_size_x\n  crop_step_x = crop_size_x // eval_config.crop_shingle_x\n  crop_size_y = experiment.crop_size_y\n  crop_step_y = crop_size_y // eval_config.crop_shingle_y\n\n  prob_weights = 1\n  if eval_config.pyramid_weights > 0:\n    sx = np.expand_dims(np.linspace(1.0 / crop_size_x, 1, crop_size_x), 1)\n    sy = np.expand_dims(np.linspace(1.0 / crop_size_y, 1, crop_size_y), 0)\n    prob_weights = np.minimum(np.minimum(sx, np.flipud(sx)),\n                              np.minimum(sy, np.fliplr(sy)))\n    prob_weights /= np.max(prob_weights)\n    prob_weights = np.minimum(prob_weights, eval_config.pyramid_weights)\n  logging.log_first_n(logging.INFO, 'Crop: %dx%d step %d,%d pyr %.2f',\n                      debug_steps,\n                      crop_size_x, crop_size_y,\n                      crop_step_x, crop_step_y, eval_config.pyramid_weights)\n  # Accumulate all crops, starting and ending half off the square.\n  for i in range(-crop_size_x // 2, length - crop_size_x // 2, crop_step_x):\n    for j in range(-crop_size_y // 2, length - crop_size_y // 2, crop_step_y):\n      # The ideal crop.\n      patch = compute_one_patch(\n          sess, experiment, output_fetches, inputs_1d, residue_index,\n          prob_weights, batch, length, i, j, crop_size_x, crop_size_y)\n      # Assemble the crops into a final complete prediction.\n      ic = max(0, i)\n      jc = max(0, j)\n      ic_to = ic + patch['prob'].shape[1]\n      jc_to = jc + patch['prob'].shape[0]\n      prob_accum[jc:jc_to, ic:ic_to, 0] += patch['prob'] * patch['weight']\n      prob_accum[jc:jc_to, ic:ic_to, 1] += patch['weight']\n      softmax_prob_accum[jc:jc_to, ic:ic_to, :] += (\n          patch['softmax'] * np.expand_dims(patch['weight'], 2))\n      weights_1d_accum[jc:jc_to] += 1\n      weights_1d_accum[ic:ic_to] += 1\n      if 'asa_x' in patch:\n        asa_accum[ic:ic + patch['asa_x'].shape[0]] += np.squeeze(\n            patch['asa_x'], axis=1)\n        asa_accum[jc:jc + patch['asa_y'].shape[0]] += np.squeeze(\n            patch['asa_y'], axis=1)\n      if 'ss_x' in patch:\n        ss_accum[ic:ic + patch['ss_x'].shape[0]] += patch['ss_x']\n        ss_accum[jc:jc + patch['ss_y'].shape[0]] += patch['ss_y']\n      if 'torsions_x' in patch:\n        torsions_accum[\n            ic:ic + patch['torsions_x'].shape[0]] += patch['torsions_x']\n        torsions_accum[\n            jc:jc + patch['torsions_y'].shape[0]] += patch['torsions_y']\n      num_crops_local += 1\n  single_message = (\n      'Constructed %s len %d from %d chunks [%d, %d x %d, %d] '\n      'in %5.1fs' % (\n          filebase, length, num_crops_local,\n          crop_size_x, crop_step_x, crop_size_y, crop_step_y,\n          time.time() - start))\n  logging.info(single_message)\n  logging.info('prob_accum[:, :, 1]: %s', prob_accum[:, :, 1])\n  assert (prob_accum[:, :, 1] > 0.0).all()\n  probs = prob_accum[:, :, 0] / prob_accum[:, :, 1]\n  softmax_probs = softmax_prob_accum[:, :, :] / prob_accum[:, :, 1:2]\n\n  asa_accum /= weights_1d_accum\n  ss_accum /= np.expand_dims(weights_1d_accum, 1)\n  torsions_accum /= np.expand_dims(weights_1d_accum, 1)\n\n  # The probs are symmetrical.\n  probs = (probs + probs.transpose()) / 2\n  if num_bins > 1:\n    softmax_probs = (softmax_probs + np.transpose(\n        softmax_probs, axes=[1, 0, 2])) / 2\n  return Prediction(\n      single_message=single_message,\n      num_crops_local=num_crops_local,\n      sequence=sequence,\n      filebase=filebase,\n      softmax_probs=softmax_probs,\n      ss=ss_accum,\n      asa=asa_accum,\n      torsions=torsions_accum)\n\n\ndef compute_one_patch(sess, experiment, output_fetches, inputs_1d,\n                      residue_index, prob_weights, batch, length, i, j,\n                      crop_size_x, crop_size_y):\n  \"\"\"Compute the output predictions for a single crop.\"\"\"\n  # Note that these are allowed to go off the end of the protein.\n  end_x = i + crop_size_x\n  end_y = j + crop_size_y\n  crop_limits = np.array([[i, end_x, j, end_y]], dtype=np.int32)\n  ic = max(0, i)\n  jc = max(0, j)\n  end_x_cropped = min(length, end_x)\n  end_y_cropped = min(length, end_y)\n  prepad_x = max(0, -i)\n  prepad_y = max(0, -j)\n  postpad_x = end_x - end_x_cropped\n  postpad_y = end_y - end_y_cropped\n\n  # Precrop the 2D features:\n  inputs_2d = np.pad(batch['inputs_2d'][\n      :, jc:end_y, ic:end_x, :],\n                     [[0, 0],\n                      [prepad_y, postpad_y],\n                      [prepad_x, postpad_x],\n                      [0, 0]], mode='constant')\n  assert inputs_2d.shape[1] == crop_size_y\n  assert inputs_2d.shape[2] == crop_size_x\n\n  # Generate the corresponding crop, but it might be truncated.\n  cxx = batch['inputs_2d'][:, ic:end_x, ic:end_x, :]\n  cyy = batch['inputs_2d'][:, jc:end_y, jc:end_y, :]\n  if cxx.shape[1] < inputs_2d.shape[1]:\n    cxx = np.pad(cxx, [[0, 0],\n                       [prepad_x, max(0, i + crop_size_y - length)],\n                       [prepad_x, postpad_x],\n                       [0, 0]], mode='constant')\n  assert cxx.shape[1] == crop_size_y\n  assert cxx.shape[2] == crop_size_x\n  if cyy.shape[2] < inputs_2d.shape[2]:\n    cyy = np.pad(cyy, [[0, 0],\n                       [prepad_y, postpad_y],\n                       [prepad_y, max(0, j + crop_size_x - length)],\n                       [0, 0]], mode='constant')\n  assert cyy.shape[1] == crop_size_y\n  assert cyy.shape[2] == crop_size_x\n  inputs_2d = np.concatenate([inputs_2d, cxx, cyy], 3)\n\n  output_results = sess.run(output_fetches, feed_dict={\n      experiment.inputs_1d_placeholder: inputs_1d,\n      experiment.residue_index_placeholder: residue_index,\n      experiment.inputs_2d_placeholder: inputs_2d,\n      experiment.crop_placeholder: crop_limits,\n  })\n  # Crop out the \"live\" region of the probs.\n  prob_patch = output_results['probs'][\n      0, prepad_y:crop_size_y - postpad_y,\n      prepad_x:crop_size_x - postpad_x]\n  weight_patch = prob_weights[prepad_y:crop_size_y - postpad_y,\n                              prepad_x:crop_size_x - postpad_x]\n  patch = {'prob': prob_patch, 'weight': weight_patch}\n\n  if 'softmax_probs' in output_results:\n    patch['softmax'] = output_results['softmax_probs'][\n        0, prepad_y:crop_size_y - postpad_y,\n        prepad_x:crop_size_x - postpad_x]\n  if 'secstruct_probs' in output_results:\n    patch['ss_x'] = output_results['secstruct_probs'][\n        0, prepad_x:crop_size_x - postpad_x]\n    patch['ss_y'] = output_results['secstruct_probs'][\n        0, crop_size_x + prepad_y:crop_size_x + crop_size_y - postpad_y]\n  if 'torsion_probs' in output_results:\n    patch['torsions_x'] = output_results['torsion_probs'][\n        0, prepad_x:crop_size_x - postpad_x]\n    patch['torsions_y'] = output_results['torsion_probs'][\n        0, crop_size_x + prepad_y:crop_size_x + crop_size_y - postpad_y]\n  if 'asa_output' in output_results:\n    patch['asa_x'] = output_results['asa_output'][\n        0, prepad_x:crop_size_x - postpad_x]\n    patch['asa_y'] = output_results['asa_output'][\n        0, crop_size_x + prepad_y:crop_size_x + crop_size_y - postpad_y]\n  return patch\n\n\ndef main(argv):\n  del argv  # Unused.\n\n  logging.info('Loading a JSON config from: %s', FLAGS.config_path)\n  with tf.io.gfile.GFile(FLAGS.config_path, 'r') as f:\n    config = config_dict.ConfigDict.from_json(f.read())\n\n  # Redefine the relevant output fields.\n  if FLAGS.eval_sstable:\n    config.eval_config.eval_sstable = FLAGS.eval_sstable\n  if FLAGS.stats_file:\n    config.eval_config.stats_file = FLAGS.stats_file\n  if FLAGS.output_path:\n    config.eval_config.output_path = FLAGS.output_path\n\n  with tf.device('/cpu:0' if FLAGS.cpu else None):\n    evaluate(checkpoint_path=FLAGS.checkpoint_path, **config)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "alphafold_casp13/contacts_dataset.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"TF wrapper for protein tf.Example datasets.\"\"\"\n\nimport collections\nimport enum\nimport json\n\nimport tensorflow as tf  # pylint: disable=g-explicit-tensorflow-version-import\n\n\n_ProteinDescription = collections.namedtuple(\n    '_ProteinDescription', (\n        'sequence_lengths', 'key', 'sequences', 'inputs_1d', 'inputs_2d',\n        'inputs_2d_diagonal', 'crops', 'scalars', 'targets'))\n\n\nclass FeatureType(enum.Enum):\n  ZERO_DIM = 0  # Shape [x]\n  ONE_DIM = 1  # Shape [num_res, x]\n  TWO_DIM = 2  # Shape [num_res, num_res, x]\n\n# Placeholder values that will be replaced with their true value at runtime.\nNUM_RES = 'num residues placeholder'\n\n# Sizes of the protein features. NUM_RES is allowed as a placeholder to be\n# replaced with the number of residues.\nFEATURES = {\n    'aatype': (tf.float32, [NUM_RES, 21]),\n    'alpha_mask': (tf.int64, [NUM_RES, 1]),\n    'alpha_positions': (tf.float32, [NUM_RES, 3]),\n    'beta_mask': (tf.int64, [NUM_RES, 1]),\n    'beta_positions': (tf.float32, [NUM_RES, 3]),\n    'between_segment_residues': (tf.int64, [NUM_RES, 1]),\n    'chain_name': (tf.string, [1]),\n    'deletion_probability': (tf.float32, [NUM_RES, 1]),\n    'domain_name': (tf.string, [1]),\n    'gap_matrix': (tf.float32, [NUM_RES, NUM_RES, 1]),\n    'hhblits_profile': (tf.float32, [NUM_RES, 22]),\n    'hmm_profile': (tf.float32, [NUM_RES, 30]),\n    'key': (tf.string, [1]),\n    'mutual_information': (tf.float32, [NUM_RES, NUM_RES, 1]),\n    'non_gapped_profile': (tf.float32, [NUM_RES, 21]),\n    'num_alignments': (tf.int64, [NUM_RES, 1]),\n    'num_effective_alignments': (tf.float32, [1]),\n    'phi_angles': (tf.float32, [NUM_RES, 1]),\n    'phi_mask': (tf.int64, [NUM_RES, 1]),\n    'profile': (tf.float32, [NUM_RES, 21]),\n    'profile_with_prior': (tf.float32, [NUM_RES, 22]),\n    'profile_with_prior_without_gaps': (tf.float32, [NUM_RES, 21]),\n    'pseudo_bias': (tf.float32, [NUM_RES, 22]),\n    'pseudo_frob': (tf.float32, [NUM_RES, NUM_RES, 1]),\n    'pseudolikelihood': (tf.float32, [NUM_RES, NUM_RES, 484]),\n    'psi_angles': (tf.float32, [NUM_RES, 1]),\n    'psi_mask': (tf.int64, [NUM_RES, 1]),\n    'residue_index': (tf.int64, [NUM_RES, 1]),\n    'resolution': (tf.float32, [1]),\n    'reweighted_profile': (tf.float32, [NUM_RES, 22]),\n    'sec_structure': (tf.int64, [NUM_RES, 8]),\n    'sec_structure_mask': (tf.int64, [NUM_RES, 1]),\n    'seq_length': (tf.int64, [NUM_RES, 1]),\n    'sequence': (tf.string, [1]),\n    'solv_surf': (tf.float32, [NUM_RES, 1]),\n    'solv_surf_mask': (tf.int64, [NUM_RES, 1]),\n    'superfamily': (tf.string, [1]),\n}\n\nFEATURE_TYPES = {k: v[0] for k, v in FEATURES.items()}\nFEATURE_SIZES = {k: v[1] for k, v in FEATURES.items()}\n\n\ndef shape(feature_name, num_residues, features=None):\n  \"\"\"Get the shape for the given feature name.\n\n  Args:\n    feature_name: String identifier for the feature. If the feature name ends\n      with \"_unnormalized\", theis suffix is stripped off.\n    num_residues: The number of residues in the current domain - some elements\n      of the shape can be dynamic and will be replaced by this value.\n    features: A feature_name to (tf_dtype, shape) lookup; defaults to FEATURES.\n\n  Returns:\n    List of ints representation the tensor size.\n  \"\"\"\n  features = features or FEATURES\n  if feature_name.endswith('_unnormalized'):\n    feature_name = feature_name[:-13]\n\n  unused_dtype, raw_sizes = features[feature_name]\n  replacements = {NUM_RES: num_residues}\n\n  sizes = [replacements.get(dimension, dimension) for dimension in raw_sizes]\n  return sizes\n\n\ndef dim(feature_name):\n  \"\"\"Determine the type of feature.\n\n  Args:\n    feature_name: String identifier for the feature to lookup. If the feature\n      name ends with \"_unnormalized\", theis suffix is stripped off.\n\n  Returns:\n    A FeatureType enum describing whether the feature is of size num_res or\n    num_res * num_res.\n\n  Raises:\n    ValueError: If the feature is of an unknown type.\n  \"\"\"\n  if feature_name.endswith('_unnormalized'):\n    feature_name = feature_name[:-13]\n\n  num_dims = len(FEATURE_SIZES[feature_name])\n  if num_dims == 1:\n    return FeatureType.ZERO_DIM\n  elif num_dims == 2 and FEATURE_SIZES[feature_name][0] == NUM_RES:\n    return FeatureType.ONE_DIM\n  elif num_dims == 3 and FEATURE_SIZES[feature_name][0] == NUM_RES:\n    return FeatureType.TWO_DIM\n  else:\n    raise ValueError('Expect feature sizes to be 2 or 3, got %i' %\n                     len(FEATURE_SIZES[feature_name]))\n\n\ndef _concat_or_zeros(tensor_list, axis, tensor_shape, name):\n  \"\"\"Concatenates the tensors if given, otherwise returns a tensor of zeros.\"\"\"\n  if tensor_list:\n    return tf.concat(tensor_list, axis=axis, name=name)\n  return tf.zeros(tensor_shape, name=name + '_zeros')\n\n\ndef parse_tfexample(raw_data, features):\n  \"\"\"Read a single TF Example proto and return a subset of its features.\n\n  Args:\n    raw_data: A serialized tf.Example proto.\n    features: A dictionary of features, mapping string feature names to a tuple\n      (dtype, shape). This dictionary should be a subset of\n      protein_features.FEATURES (or the dictionary itself for all features).\n\n  Returns:\n    A dictionary of features mapping feature names to features. Only the given\n    features are returned, all other ones are filtered out.\n  \"\"\"\n  feature_map = {\n      k: tf.io.FixedLenSequenceFeature(shape=(), dtype=v[0], allow_missing=True)\n      for k, v in features.items()\n  }\n  parsed_features = tf.io.parse_single_example(raw_data, feature_map)\n\n  # Find out what is the number of sequences and the number of alignments.\n  num_residues = tf.cast(parsed_features['seq_length'][0], dtype=tf.int32)\n\n  # Reshape the tensors according to the sequence length and num alignments.\n  for k, v in parsed_features.items():\n    new_shape = shape(feature_name=k, num_residues=num_residues)\n    # Make sure the feature we are reshaping is not empty.\n    assert_non_empty = tf.assert_greater(\n        tf.size(v), 0, name='assert_%s_non_empty' % k,\n        message='The feature %s is not set in the tf.Example. Either do not '\n        'request the feature or use a tf.Example that has the feature set.' % k)\n    with tf.control_dependencies([assert_non_empty]):\n      parsed_features[k] = tf.reshape(v, new_shape, name='reshape_%s' % k)\n\n  return parsed_features\n\n\ndef create_tf_dataset(tf_record_filename, features):\n  \"\"\"Creates an instance of tf.data.Dataset backed by a protein dataset SSTable.\n\n  Args:\n    tf_record_filename: A string with filename of the TFRecord file.\n    features: A list of strings of feature names to be returned in the dataset.\n\n  Returns:\n    A tf.data.Dataset object. Its items are dictionaries from feature names to\n    feature values.\n  \"\"\"\n  # Make sure these features are always read.\n  required_features = ['aatype', 'sequence', 'seq_length']\n  features = list(set(features) | set(required_features))\n  features = {name: FEATURES[name] for name in features}\n\n  tf_dataset = tf.data.TFRecordDataset(filenames=[tf_record_filename])\n  tf_dataset = tf_dataset.map(lambda raw: parse_tfexample(raw, features))\n\n  return tf_dataset\n\n\ndef normalize_from_stats_file(\n    features, stats_file_path, feature_normalization, copy_unnormalized=None):\n  \"\"\"Normalizes the features set in the feature_normalization by the norm stats.\n\n  Args:\n    features: A dictionary mapping feature names to feature tensors.\n    stats_file_path: A string with the path of the statistics JSON file.\n    feature_normalization: A dictionary specifying the normalization type for\n      each input feature. Acceptable values are 'std' and 'none'. If not\n      specified default to 'none'. Any extra features that are not present in\n      features will be ignored.\n    copy_unnormalized: A list of features whose unnormalized copy should be\n      added. For any feature F in this list a feature F + \"_unnormalized\" will\n      be added in the output dictionary containing the unnormalized feature.\n      This is useful if you have a feature you want to have both in\n      desired_features (normalized) and also in desired_targets (unnormalized).\n      See convert_to_legacy_proteins_dataset_format for more details.\n\n  Returns:\n    A dictionary mapping features names to feature tensors. The ones that were\n    specified in feature_normalization will be normalized.\n\n  Raises:\n    ValueError: If an unknown normalization mode is used.\n  \"\"\"\n  with tf.io.gfile.GFile(stats_file_path, 'r') as f:\n    norm_stats = json.loads(f.read())\n\n  if not copy_unnormalized:\n    copy_unnormalized = []\n  # We need this unnormalized in convert_to_legacy_proteins_dataset_format.\n  copy_unnormalized.append('num_alignments')\n\n  for feature in copy_unnormalized:\n    if feature in features:\n      features[feature + '_unnormalized'] = features[feature]\n\n  range_epsilon = 1e-12\n  for key, value in features.items():\n    if key not in feature_normalization or feature_normalization[key] == 'none':\n      pass\n    elif feature_normalization[key] == 'std':\n      value = tf.cast(value, dtype=tf.float32)\n      train_mean = tf.cast(norm_stats['mean'][key], dtype=tf.float32)\n      train_range = tf.sqrt(tf.cast(norm_stats['var'][key], dtype=tf.float32))\n      value -= train_mean\n      value = tf.where(\n          train_range > range_epsilon, value / train_range, value)\n      features[key] = value\n    else:\n      raise ValueError('Unknown normalization mode %s for feature %s.'\n                       % (feature_normalization[key], key))\n  return features\n\n\ndef convert_to_legacy_proteins_dataset_format(\n    features, desired_features, desired_scalars, desired_targets):\n  \"\"\"Converts the output of tf.Dataset to the legacy format.\n\n  Args:\n    features: A dictionary mapping feature names to feature tensors.\n    desired_features: A list with the names of the desired features. These will\n      be filtered out of features and returned in one of the inputs_1d or\n      inputs_2d. The features concatenated in `inputs_1d`, `inputs_2d` will be\n      concatenated in the same order as they were given in `desired_features`.\n    desired_scalars: A list naming the desired scalars. These will\n      be filtered out of features and returned in scalars. If features contain\n      an unnormalized version of a desired scalar, it will be used.\n    desired_targets: A list naming the desired targets. These will\n      be filtered out of features and returned in targets. If features contain\n      an unnormalized version of a desired target, it will be used.\n\n  Returns:\n    A _ProteinDescription namedtuple consisting of:\n      sequence_length: A scalar int32 tensor with the sequence length.\n      key: A string tensor with the sequence key or empty if not set features.\n      sequences: A string tensor with the protein sequence.\n      inputs_1d: All 1D features in a single tensor of shape\n        [num_res, 1d_channels].\n      inputs_2d: All 2D features in a single tensor of shape\n        [num_res, num_res, 2d_channels].\n      inputs_2d_diagonal: All 2D diagonal features in a single tensor of shape\n        [num_res, num_res, 2d_diagonal_channels]. If no diagonal features found\n        in features, the tensor will be set to inputs_2d.\n      crops: A int32 tensor with the crop poisitions. If not set in features,\n        it will be set to [0, num_res, 0, num_res].\n      scalars: All requested scalar tensors in a list.\n      targets: All requested target tensors in a list.\n\n  Raises:\n    ValueError: If the feature size is invalid.\n  \"\"\"\n  tensors_1d = []\n  tensors_2d = []\n  tensors_2d_diagonal = []\n  for key in desired_features:\n    # Determine if the feature is 1D or 2D.\n    feature_dim = dim(key)\n    if feature_dim == FeatureType.ONE_DIM:\n      tensors_1d.append(tf.cast(features[key], dtype=tf.float32))\n    elif feature_dim == FeatureType.TWO_DIM:\n      if key not in features:\n        if not(key + '_cropped' in features and key + '_diagonal' in features):\n          raise ValueError(\n              'The 2D feature %s is not in the features dictionary and neither '\n              'are its cropped and diagonal versions.' % key)\n        else:\n          tensors_2d.append(\n              tf.cast(features[key + '_cropped'], dtype=tf.float32))\n          tensors_2d_diagonal.append(\n              tf.cast(features[key + '_diagonal'], dtype=tf.float32))\n      else:\n        tensors_2d.append(tf.cast(features[key], dtype=tf.float32))\n    else:\n      raise ValueError('Unexpected FeatureType returned: %s' % str(feature_dim))\n\n  # Determine num_res from the sequence as seq_length was possibly normalized.\n  num_res = tf.strings.length(features['sequence'])[0]\n\n  # Concatenate feature tensors into a single tensor\n  inputs_1d = _concat_or_zeros(\n      tensors_1d, axis=1, tensor_shape=[num_res, 0],\n      name='inputs_1d_concat')\n  inputs_2d = _concat_or_zeros(\n      tensors_2d, axis=2, tensor_shape=[num_res, num_res, 0],\n      name='inputs_2d_concat')\n  if tensors_2d_diagonal:\n    # The legacy dataset outputs the two diagonal crops stacked\n    # A1, B1, C1, A2, B2, C2. So convert the A1, A2, B1, B2, C1, C2 format.\n    diagonal_crops1 = [t[:, :, :(t.shape[2] // 2)] for t in tensors_2d_diagonal]\n    diagonal_crops2 = [t[:, :, (t.shape[2] // 2):] for t in tensors_2d_diagonal]\n    inputs_2d_diagonal = tf.concat(diagonal_crops1 + diagonal_crops2, axis=2)\n  else:\n    inputs_2d_diagonal = inputs_2d\n\n  sequence = features['sequence']\n  sequence_key = features.get('key', tf.constant(['']))[0]\n  if 'crops' in features:\n    crops = features['crops']\n  else:\n    crops = tf.stack([0, tf.shape(sequence)[0], 0, tf.shape(sequence)[0]])\n\n  scalar_tensors = []\n  for key in desired_scalars:\n    scalar_tensors.append(features.get(key + '_unnormalized', features[key]))\n\n  target_tensors = []\n  for key in desired_targets:\n    target_tensors.append(features.get(key + '_unnormalized', features[key]))\n\n  scalar_class = collections.namedtuple('_ScalarClass', desired_scalars)\n  target_class = collections.namedtuple('_TargetClass', desired_targets)\n\n  return _ProteinDescription(\n      sequence_lengths=num_res,\n      key=sequence_key,\n      sequences=sequence,\n      inputs_1d=inputs_1d,\n      inputs_2d=inputs_2d,\n      inputs_2d_diagonal=inputs_2d_diagonal,\n      crops=crops,\n      scalars=scalar_class(*scalar_tensors),\n      targets=target_class(*target_tensors))\n"
  },
  {
    "path": "alphafold_casp13/contacts_experiment.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Contact prediction convnet experiment example.\"\"\"\n\nfrom absl import logging\nimport tensorflow as tf  # pylint: disable=g-explicit-tensorflow-version-import\n\nfrom alphafold_casp13 import contacts_dataset\nfrom alphafold_casp13 import contacts_network\n\n\ndef _int_ph(shape, name):\n  return tf.placeholder(\n      dtype=tf.int32, shape=shape, name=('%s_placeholder' % name))\n\n\ndef _float_ph(shape, name):\n  return tf.placeholder(\n      dtype=tf.float32, shape=shape, name=('%s_placeholder' % name))\n\n\nclass Contacts(object):\n  \"\"\"Contact prediction experiment.\"\"\"\n\n  def __init__(\n      self, tfrecord, stats_file, network_config, crop_size_x, crop_size_y,\n      feature_normalization, normalization_exclusion):\n    \"\"\"Builds the TensorFlow graph.\"\"\"\n    self.network_config = network_config\n    self.crop_size_x = crop_size_x\n    self.crop_size_y = crop_size_y\n\n    self._feature_normalization = feature_normalization\n    self._normalization_exclusion = normalization_exclusion\n    self._model = contacts_network.ContactsNet(**network_config)\n    self._features = network_config.features\n    self._scalars = network_config.scalars\n    self._targets = network_config.targets\n    # Add extra targets we need.\n    required_targets = ['domain_name', 'resolution', 'chain_name']\n    if self.model.torsion_multiplier > 0:\n      required_targets.extend([\n          'phi_angles', 'phi_mask', 'psi_angles', 'psi_mask'])\n    if self.model.secstruct_multiplier > 0:\n      required_targets.extend(['sec_structure', 'sec_structure_mask'])\n    if self.model.asa_multiplier > 0:\n      required_targets.extend(['solv_surf', 'solv_surf_mask'])\n    extra_targets = [t for t in required_targets if t not in self._targets]\n    if extra_targets:\n      targets = list(self._targets)\n      targets.extend(extra_targets)\n      self._targets = tuple(targets)\n    logging.info('Targets %s %s extra %s',\n                 type(self._targets), self._targets, extra_targets)\n    logging.info('Evaluating on %s, stats: %s', tfrecord, stats_file)\n    self._build_evaluation_graph(tfrecord=tfrecord, stats_file=stats_file)\n\n  @property\n  def model(self):\n    return self._model\n\n  def _get_feature_normalization(self, features):\n    return {key: self._feature_normalization\n            for key in features\n            if key not in list(self._normalization_exclusion)}\n\n  def _build_evaluation_graph(self, tfrecord, stats_file):\n    \"\"\"Constructs the graph in pieces so it can be fed.\"\"\"\n    with tf.name_scope('competitionsep'):\n      # Construct the dataset and mapping ops.\n      dataset = contacts_dataset.create_tf_dataset(\n          tf_record_filename=tfrecord,\n          features=tuple(self._features) + tuple(\n              self._scalars) + tuple(self._targets))\n\n      def normalize(data):\n        return contacts_dataset.normalize_from_stats_file(\n            features=data,\n            stats_file_path=stats_file,\n            feature_normalization=self._get_feature_normalization(\n                self._features),\n            copy_unnormalized=list(set(self._features) & set(self._targets)))\n\n      def convert_to_legacy(features):\n        return contacts_dataset.convert_to_legacy_proteins_dataset_format(\n            features, self._features, self._scalars, self._targets)\n\n      dataset = dataset.map(normalize)\n      dataset = dataset.map(convert_to_legacy)\n      dataset = dataset.batch(1)\n\n      # Get a batch of tensors in the legacy ProteinsDataset format.\n      iterator = tf.data.make_one_shot_iterator(dataset)\n      self._input_batch = iterator.get_next()\n\n      self.num_eval_examples = sum(\n          1 for _ in tf.python_io.tf_record_iterator(tfrecord))\n\n      logging.info('Eval batch:\\n%s', self._input_batch)\n      feature_dim_1d = self._input_batch.inputs_1d.shape.as_list()[-1]\n      feature_dim_2d = self._input_batch.inputs_2d.shape.as_list()[-1]\n      feature_dim_2d *= 3  # The diagonals will be stacked before feeding.\n\n      # Now placeholders for the graph to compute the outputs for one crop.\n      self.inputs_1d_placeholder = _float_ph(\n          shape=[None, None, feature_dim_1d], name='inputs_1d')\n      self.residue_index_placeholder = _int_ph(\n          shape=[None, None], name='residue_index')\n      self.inputs_2d_placeholder = _float_ph(\n          shape=[None, None, None, feature_dim_2d], name='inputs_2d')\n      # 4 ints: x_start, x_end, y_start, y_end.\n      self.crop_placeholder = _int_ph(shape=[None, 4], name='crop')\n\n      # Finally placeholders for the graph to score the complete contact map.\n      self.probs_placeholder = _float_ph(shape=[None, None, None], name='probs')\n      self.softmax_probs_placeholder = _float_ph(\n          shape=[None, None, None, self.network_config.num_bins],\n          name='softmax_probs')\n      self.cb_placeholder = _float_ph(shape=[None, None, 3], name='cb')\n      self.cb_mask_placeholder = _float_ph(shape=[None, None], name='cb_mask')\n      self.lengths_placeholder = _int_ph(shape=[None], name='lengths')\n\n      if self.model.secstruct_multiplier > 0:\n        self.sec_structure_placeholder = _float_ph(\n            shape=[None, None, 8], name='sec_structure')\n        self.sec_structure_logits_placeholder = _float_ph(\n            shape=[None, None, 8], name='sec_structure_logits')\n        self.sec_structure_mask_placeholder = _float_ph(\n            shape=[None, None, 1], name='sec_structure_mask')\n\n      if self.model.asa_multiplier > 0:\n        self.solv_surf_placeholder = _float_ph(\n            shape=[None, None, 1], name='solv_surf')\n        self.solv_surf_logits_placeholder = _float_ph(\n            shape=[None, None, 1], name='solv_surf_logits')\n        self.solv_surf_mask_placeholder = _float_ph(\n            shape=[None, None, 1], name='solv_surf_mask')\n\n      if self.model.torsion_multiplier > 0:\n        self.torsions_truth_placeholder = _float_ph(\n            shape=[None, None, 2], name='torsions_truth')\n        self.torsions_mask_placeholder = _float_ph(\n            shape=[None, None, 1], name='torsions_mask')\n        self.torsion_logits_placeholder = _float_ph(\n            shape=[None, None, self.network_config.torsion_bins ** 2],\n            name='torsion_logits')\n\n      # Build a dict to pass all the placeholders into build.\n      placeholders = {\n          'inputs_1d_placeholder': self.inputs_1d_placeholder,\n          'residue_index_placeholder': self.residue_index_placeholder,\n          'inputs_2d_placeholder': self.inputs_2d_placeholder,\n          'crop_placeholder': self.crop_placeholder,\n          'probs_placeholder': self.probs_placeholder,\n          'softmax_probs_placeholder': self.softmax_probs_placeholder,\n          'cb_placeholder': self.cb_placeholder,\n          'cb_mask_placeholder': self.cb_mask_placeholder,\n          'lengths_placeholder': self.lengths_placeholder,\n      }\n      if self.model.secstruct_multiplier > 0:\n        placeholders.update({\n            'sec_structure': self.sec_structure_placeholder,\n            'sec_structure_logits_placeholder':\n            self.sec_structure_logits_placeholder,\n            'sec_structure_mask': self.sec_structure_mask_placeholder,})\n      if self.model.asa_multiplier > 0:\n        placeholders.update({\n            'solv_surf': self.solv_surf_placeholder,\n            'solv_surf_logits_placeholder': self.solv_surf_logits_placeholder,\n            'solv_surf_mask': self.solv_surf_mask_placeholder,})\n      if self.model.torsion_multiplier > 0:\n        placeholders.update({\n            'torsions_truth': self.torsions_truth_placeholder,\n            'torsion_logits_placeholder': self.torsion_logits_placeholder,\n            'torsions_truth_mask': self.torsions_mask_placeholder,})\n\n      activations = self._model(\n          crop_size_x=self.crop_size_x,\n          crop_size_y=self.crop_size_y,\n          placeholders=placeholders)\n      self.eval_probs_softmax = tf.nn.softmax(\n          activations[:, :, :, :self.network_config.num_bins])\n      self.eval_probs = tf.reduce_sum(\n          self.eval_probs_softmax[:, :, :, :self._model.quant_threshold()],\n          axis=3)\n\n  def get_one_example(self, sess):\n    \"\"\"Pull one example off the queue so we can feed it for evaluation.\"\"\"\n    request_dict = {\n        'inputs_1d': self._input_batch.inputs_1d,\n        'inputs_2d': self._input_batch.inputs_2d,\n        'sequence_lengths': self._input_batch.sequence_lengths,\n        'beta_positions': self._input_batch.targets.beta_positions,\n        'beta_mask': self._input_batch.targets.beta_mask,\n        'domain_name': self._input_batch.targets.domain_name,\n        'chain_name': self._input_batch.targets.chain_name,\n        'sequences': self._input_batch.sequences,\n    }\n    if hasattr(self._input_batch.targets, 'residue_index'):\n      request_dict.update(\n          {'residue_index': self._input_batch.targets.residue_index})\n    if hasattr(self._input_batch.targets, 'phi_angles'):\n      request_dict.update(\n          {'phi_angles': self._input_batch.targets.phi_angles,\n           'psi_angles': self._input_batch.targets.psi_angles,\n           'phi_mask': self._input_batch.targets.phi_mask,\n           'psi_mask': self._input_batch.targets.psi_mask})\n    if hasattr(self._input_batch.targets, 'sec_structure'):\n      request_dict.update(\n          {'sec_structure': self._input_batch.targets.sec_structure,\n           'sec_structure_mask': self._input_batch.targets.sec_structure_mask,})\n    if hasattr(self._input_batch.targets, 'solv_surf'):\n      request_dict.update(\n          {'solv_surf': self._input_batch.targets.solv_surf,\n           'solv_surf_mask': self._input_batch.targets.solv_surf_mask,})\n    if hasattr(self._input_batch.targets, 'alpha_positions'):\n      request_dict.update(\n          {'alpha_positions': self._input_batch.targets.alpha_positions,\n           'alpha_mask': self._input_batch.targets.alpha_mask,})\n    batch = sess.run(request_dict)\n    return batch\n"
  },
  {
    "path": "alphafold_casp13/contacts_network.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Network for predicting C-beta contacts.\"\"\"\n\nfrom absl import logging\nimport sonnet\nimport tensorflow as tf  # pylint: disable=g-explicit-tensorflow-version-import\n\nfrom alphafold_casp13 import asa_output\nfrom alphafold_casp13 import secstruct\nfrom alphafold_casp13 import two_dim_convnet\nfrom alphafold_casp13 import two_dim_resnet\n\n\ndef call_on_tuple(f):\n  \"\"\"Unpacks a tuple input parameter into arguments for a function f.\n\n  Mimics tuple unpacking in lambdas, which existed in Python 2 but has been\n  removed in Python 3.\n\n  Args:\n    f: A function taking multiple arguments.\n\n  Returns:\n    A function equivalent to f accepting a tuple, which is then unpacked.\n  \"\"\"\n  return lambda args: f(*args)\n\n\nclass ContactsNet(sonnet.AbstractModule):\n  \"\"\"A network to go from sequence to distance histograms.\"\"\"\n\n  def __init__(self,\n               binary_code_bits,\n               data_format,\n               distance_multiplier,\n               features,\n               features_forward,\n               max_range,\n               min_range,\n               num_bins,\n               reshape_layer,\n               resolution_noise_scale,\n               scalars,\n               targets,\n               network_2d_deep,\n               torsion_bins=None,\n               skip_connect=0,\n               position_specific_bias_size=0,\n               filters_1d=(),\n               collapsed_batch_norm=False,\n               is_ca_feature=False,\n               asa_multiplier=0.0,\n               secstruct_multiplier=0.0,\n               torsion_multiplier=0.0,\n               name='contacts_net'):\n    \"\"\"Construct position prediction network.\"\"\"\n    super(ContactsNet, self).__init__(name=name)\n\n    self._filters_1d = filters_1d\n    self._collapsed_batch_norm = collapsed_batch_norm\n    self._is_ca_feature = is_ca_feature\n    self._binary_code_bits = binary_code_bits\n    self._data_format = data_format\n    self._distance_multiplier = distance_multiplier\n    self._features = features\n    self._features_forward = features_forward\n    self._max_range = max_range\n    self._min_range = min_range\n    self._num_bins = num_bins\n    self._position_specific_bias_size = position_specific_bias_size\n    self._reshape_layer = reshape_layer\n    self._resolution_noise_scale = resolution_noise_scale\n    self._scalars = scalars\n    self._torsion_bins = torsion_bins\n    self._skip_connect = skip_connect\n    self._targets = targets\n    self._network_2d_deep = network_2d_deep\n\n    self.asa_multiplier = asa_multiplier\n    self.secstruct_multiplier = secstruct_multiplier\n    self.torsion_multiplier = torsion_multiplier\n\n    with self._enter_variable_scope():\n      if self.secstruct_multiplier > 0:\n        self._secstruct = secstruct.Secstruct()\n      if self.asa_multiplier > 0:\n        self._asa = asa_output.ASAOutputLayer()\n      if self._position_specific_bias_size:\n        self._position_specific_bias = tf.get_variable(\n            'position_specific_bias',\n            [self._position_specific_bias_size, self._num_bins or 1],\n            initializer=tf.zeros_initializer())\n\n  def quant_threshold(self, threshold=8.0):\n    \"\"\"Find the bin that is 8A+: we sum mass below this bin gives contact prob.\n\n    Args:\n      threshold: The distance threshold.\n    Returns:\n      Index of bin.\n    \"\"\"\n    # Note that this misuses the max_range as the range.\n    return int(\n        (threshold - self._min_range) * self._num_bins / float(self._max_range))\n\n  def _build(self, crop_size_x=0, crop_size_y=0, placeholders=None):\n    \"\"\"Puts the network into the graph.\n\n    Args:\n      crop_size_x: Crop a chunk out in one dimension. 0 means no cropping.\n      crop_size_y: Crop a chunk out in one dimension. 0 means no cropping.\n      placeholders: A dict containing the placeholders needed.\n\n    Returns:\n      A Tensor with logits of size [batch_size, num_residues, 3].\n    \"\"\"\n    crop_placeholder = placeholders['crop_placeholder']\n    inputs_1d = placeholders['inputs_1d_placeholder']\n    if self._is_ca_feature and 'aatype' in self._features:\n      logging.info('Collapsing aatype to is_ca_feature %s',\n                   inputs_1d.shape.as_list()[-1])\n      assert inputs_1d.shape.as_list()[-1] <= 21 + (\n          1 if 'seq_length' in self._features else 0)\n      inputs_1d = inputs_1d[:, :, 7:8]\n    logits = self.compute_outputs(\n        inputs_1d=inputs_1d,\n        residue_index=placeholders['residue_index_placeholder'],\n        inputs_2d=placeholders['inputs_2d_placeholder'],\n        crop_x=crop_placeholder[:, 0:2],\n        crop_y=crop_placeholder[:, 2:4],\n        use_on_the_fly_stats=True,\n        crop_size_x=crop_size_x,\n        crop_size_y=crop_size_y,\n        data_format='NHWC',  # Force NHWC for evals.\n    )\n    return logits\n\n  def compute_outputs(self, inputs_1d, residue_index, inputs_2d, crop_x, crop_y,\n                      use_on_the_fly_stats, crop_size_x, crop_size_y,\n                      data_format='NHWC'):\n    \"\"\"Given the inputs for a block, compute the network outputs.\"\"\"\n    hidden_1d = inputs_1d\n    hidden_1d_list = [hidden_1d]\n    if len(hidden_1d_list) != 1:\n      hidden_1d = tf.concat(hidden_1d_list, 2)\n\n    output_dimension = self._num_bins or 1\n    if self._distance_multiplier > 0:\n      output_dimension += 1\n    logits, activations = self._build_2d_embedding(\n        hidden_1d=hidden_1d,\n        residue_index=residue_index,\n        inputs_2d=inputs_2d,\n        output_dimension=output_dimension,\n        use_on_the_fly_stats=use_on_the_fly_stats,\n        crop_x=crop_x,\n        crop_y=crop_y,\n        crop_size_x=crop_size_x, crop_size_y=crop_size_y,\n        data_format=data_format)\n    logits = tf.debugging.check_numerics(\n        logits, 'NaN in resnet activations', name='resnet_activations')\n    if (self.secstruct_multiplier > 0 or\n        self.asa_multiplier > 0 or\n        self.torsion_multiplier > 0):\n      # Make a 1d embedding by reducing the 2D activations.\n      # We do this in the x direction and the y direction separately.\n\n      collapse_dim = 1\n      join_dim = -1\n      embedding_1d = tf.concat(\n          # First targets are crop_x (axis 2) which we must reduce on axis 1\n          [tf.concat([tf.reduce_max(activations, axis=collapse_dim),\n                      tf.reduce_mean(activations, axis=collapse_dim)],\n                     axis=join_dim),\n           # Next targets are crop_y (axis 1) which we must reduce on axis 2\n           tf.concat([tf.reduce_max(activations, axis=collapse_dim+1),\n                      tf.reduce_mean(activations, axis=collapse_dim+1)],\n                     axis=join_dim)],\n          axis=collapse_dim)  # Join the two crops together.\n      if self._collapsed_batch_norm:\n        embedding_1d = tf.contrib.layers.batch_norm(\n            embedding_1d, is_training=use_on_the_fly_stats,\n            fused=True, decay=0.999, scope='collapsed_batch_norm',\n            data_format='NHWC')\n      for i, nfil in enumerate(self._filters_1d):\n        embedding_1d = tf.contrib.layers.fully_connected(\n            embedding_1d,\n            num_outputs=nfil,\n            normalizer_fn=(\n                tf.contrib.layers.batch_norm if self._collapsed_batch_norm\n                else None),\n            normalizer_params={'is_training': use_on_the_fly_stats,\n                               'updates_collections': None},\n            scope='collapsed_embed_%d' % i)\n\n      if self.torsion_multiplier > 0:\n        self.torsion_logits = tf.contrib.layers.fully_connected(\n            embedding_1d,\n            num_outputs=self._torsion_bins * self._torsion_bins,\n            activation_fn=None,\n            scope='torsion_logits')\n        self.torsion_output = tf.nn.softmax(self.torsion_logits)\n      if self.secstruct_multiplier > 0:\n        self._secstruct.make_layer_new(embedding_1d)\n      if self.asa_multiplier > 0:\n        self.asa_logits = self._asa.compute_asa_output(embedding_1d)\n    return logits\n\n  @staticmethod\n  def _concatenate_2d(hidden_1d, residue_index, hidden_2d, crop_x, crop_y,\n                      binary_code_bits, crop_size_x, crop_size_y):\n    # Form the pairwise expansion of the 1D embedding\n    # And the residue offsets and (one) absolute position.\n    with tf.name_scope('Features2D'):\n      range_scale = 100.0  # Crude normalization factor.\n      n = tf.shape(hidden_1d)[1]\n      # pylint: disable=g-long-lambda\n      hidden_1d_cropped_y = tf.map_fn(\n          call_on_tuple(lambda c, h: tf.pad(\n              h[tf.maximum(0, c[0]):c[1]],\n              [[tf.maximum(0, -c[0]),\n                tf.maximum(0, crop_size_y -(n - c[0]))], [0, 0]])),\n          elems=(crop_y, hidden_1d), dtype=tf.float32,\n          back_prop=True)\n      range_n_y = tf.map_fn(\n          call_on_tuple(lambda ri, c: tf.pad(\n              ri[tf.maximum(0, c[0]):c[1]],\n              [[tf.maximum(0, -c[0]),\n                tf.maximum(0, crop_size_y -(n - c[0]))]])),\n          elems=(residue_index, crop_y), dtype=tf.int32,\n          back_prop=False)\n      hidden_1d_cropped_x = tf.map_fn(\n          call_on_tuple(lambda c, h: tf.pad(\n              h[tf.maximum(0, c[0]):c[1]],\n              [[tf.maximum(0, -c[0]),\n                tf.maximum(0, crop_size_x -(n - c[0]))], [0, 0]])),\n          elems=(crop_x, hidden_1d), dtype=tf.float32,\n          back_prop=True)\n      range_n_x = tf.map_fn(\n          call_on_tuple(lambda ri, c: tf.pad(\n              ri[tf.maximum(0, c[0]):c[1]],\n              [[tf.maximum(0, -c[0]),\n                tf.maximum(0, crop_size_x -(n - c[0]))]])),\n          elems=(residue_index, crop_x), dtype=tf.int32,\n          back_prop=False)\n      # pylint: enable=g-long-lambda\n      n_x = crop_size_x\n      n_y = crop_size_y\n\n      offset = (tf.expand_dims(tf.cast(range_n_x, tf.float32), 1) -\n                tf.expand_dims(tf.cast(range_n_y, tf.float32), 2)) / range_scale\n      position_features = [\n          tf.tile(\n              tf.reshape(\n                  (tf.cast(range_n_y, tf.float32) - range_scale) / range_scale,\n                  [-1, n_y, 1, 1]), [1, 1, n_x, 1],\n              name='TileRange'),\n          tf.tile(\n              tf.reshape(offset, [-1, n_y, n_x, 1]), [1, 1, 1, 1],\n              name='TileOffset')\n      ]\n      channels = 2\n      if binary_code_bits:\n        # Binary coding of position.\n        exp_range_n_y = tf.expand_dims(range_n_y, 2)\n        bin_y = tf.stop_gradient(\n            tf.concat([tf.math.floormod(exp_range_n_y // (1 << i), 2)\n                       for i in range(binary_code_bits)], 2))\n        exp_range_n_x = tf.expand_dims(range_n_x, 2)\n        bin_x = tf.stop_gradient(\n            tf.concat([tf.math.floormod(exp_range_n_x // (1 << i), 2)\n                       for i in range(binary_code_bits)], 2))\n        position_features += [\n            tf.tile(\n                tf.expand_dims(tf.cast(bin_y, tf.float32), 2), [1, 1, n_x, 1],\n                name='TileBinRangey'),\n            tf.tile(\n                tf.expand_dims(tf.cast(bin_x, tf.float32), 1), [1, n_y, 1, 1],\n                name='TileBinRangex')\n        ]\n        channels += 2 * binary_code_bits\n\n      augmentation_features = position_features + [\n          tf.tile(tf.expand_dims(hidden_1d_cropped_x, 1),\n                  [1, n_y, 1, 1], name='Tile1Dx'),\n          tf.tile(tf.expand_dims(hidden_1d_cropped_y, 2),\n                  [1, 1, n_x, 1], name='Tile1Dy')]\n      channels += 2 * hidden_1d.shape.as_list()[-1]\n      channels += hidden_2d.shape.as_list()[-1]\n      hidden_2d = tf.concat(\n          [hidden_2d] + augmentation_features, 3, name='Stack2Dfeatures')\n    logging.info('2d stacked features are depth %d %s', channels, hidden_2d)\n    hidden_2d.set_shape([None, None, None, channels])\n    return hidden_2d\n\n  def _build_2d_embedding(self, hidden_1d, residue_index, inputs_2d,\n                          output_dimension, use_on_the_fly_stats, crop_x,\n                          crop_y, crop_size_x, crop_size_y, data_format):\n    \"\"\"Returns NHWC logits and NHWC preactivations.\"\"\"\n    logging.info('2d %s %s', inputs_2d, data_format)\n\n    # Stack with diagonal has already happened.\n    inputs_2d_cropped = inputs_2d\n\n    features_forward = None\n    hidden_2d = inputs_2d_cropped\n    hidden_2d = self._concatenate_2d(\n        hidden_1d, residue_index, hidden_2d, crop_x, crop_y,\n        self._binary_code_bits, crop_size_x, crop_size_y)\n\n    config_2d_deep = self._network_2d_deep\n    num_features = hidden_2d.shape.as_list()[3]\n    if data_format == 'NCHW':\n      logging.info('NCHW shape deep pre %s', hidden_2d)\n      hidden_2d = tf.transpose(hidden_2d, perm=[0, 3, 1, 2])\n      hidden_2d.set_shape([None, num_features, None, None])\n      logging.info('NCHW shape deep post %s', hidden_2d)\n    layers_forward = None\n    if config_2d_deep.extra_blocks:\n      # Optionally put some extra double-size blocks at the beginning.\n      with tf.variable_scope('Deep2DExtra'):\n        hidden_2d = two_dim_resnet.make_two_dim_resnet(\n            input_node=hidden_2d,\n            num_residues=None,  # Unused\n            num_features=num_features,\n            num_predictions=2 * config_2d_deep.num_filters,\n            num_channels=2 * config_2d_deep.num_filters,\n            num_layers=config_2d_deep.extra_blocks *\n            config_2d_deep.num_layers_per_block,\n            filter_size=3,\n            batch_norm=config_2d_deep.use_batch_norm,\n            is_training=use_on_the_fly_stats,\n            fancy=True,\n            final_non_linearity=True,\n            atrou_rates=[1, 2, 4, 8],\n            data_format=data_format,\n            dropout_keep_prob=1.0\n        )\n        num_features = 2 * config_2d_deep.num_filters\n        if self._skip_connect:\n          layers_forward = hidden_2d\n        if features_forward is not None:\n          hidden_2d = tf.concat([hidden_2d, features_forward], 1\n                                if data_format == 'NCHW' else 3)\n    with tf.variable_scope('Deep2D'):\n      logging.info('2d hidden shape is %s', str(hidden_2d.shape.as_list()))\n      contact_pre_logits = two_dim_resnet.make_two_dim_resnet(\n          input_node=hidden_2d,\n          num_residues=None,  # Unused\n          num_features=num_features,\n          num_predictions=(config_2d_deep.num_filters\n                           if self._reshape_layer else output_dimension),\n          num_channels=config_2d_deep.num_filters,\n          num_layers=config_2d_deep.num_blocks *\n          config_2d_deep.num_layers_per_block,\n          filter_size=3,\n          batch_norm=config_2d_deep.use_batch_norm,\n          is_training=use_on_the_fly_stats,\n          fancy=True,\n          final_non_linearity=self._reshape_layer,\n          atrou_rates=[1, 2, 4, 8],\n          data_format=data_format,\n          dropout_keep_prob=1.0\n      )\n\n      contact_logits = self._output_from_pre_logits(\n          contact_pre_logits, features_forward, layers_forward,\n          output_dimension, data_format, crop_x, crop_y, use_on_the_fly_stats)\n      if data_format == 'NCHW':\n        contact_pre_logits = tf.transpose(contact_pre_logits, perm=[0, 2, 3, 1])\n    # Both of these will be NHWC\n    return contact_logits, contact_pre_logits\n\n  def _output_from_pre_logits(self, contact_pre_logits, features_forward,\n                              layers_forward, output_dimension, data_format,\n                              crop_x, crop_y, use_on_the_fly_stats):\n    \"\"\"Given pre-logits, compute the final distogram/contact activations.\"\"\"\n    config_2d_deep = self._network_2d_deep\n    if self._reshape_layer:\n      in_channels = config_2d_deep.num_filters\n      concat_features = [contact_pre_logits]\n      if features_forward is not None:\n        concat_features.append(features_forward)\n        in_channels += self._features_forward\n      if layers_forward is not None:\n        concat_features.append(layers_forward)\n        in_channels += 2 * config_2d_deep.num_filters\n      if len(concat_features) > 1:\n        contact_pre_logits = tf.concat(concat_features,\n                                       1 if data_format == 'NCHW' else 3)\n\n      contact_logits = two_dim_convnet.make_conv_layer(\n          contact_pre_logits,\n          in_channels=in_channels,\n          out_channels=output_dimension,\n          layer_name='output_reshape_1x1h',\n          filter_size=1,\n          filter_size_2=1,\n          non_linearity=False,\n          batch_norm=config_2d_deep.use_batch_norm,\n          is_training=use_on_the_fly_stats,\n          data_format=data_format)\n    else:\n      contact_logits = contact_pre_logits\n\n    if data_format == 'NCHW':\n      contact_logits = tf.transpose(contact_logits, perm=[0, 2, 3, 1])\n\n    if self._position_specific_bias_size:\n      # Make 2D pos-specific biases: NHWC.\n      biases = build_crops_biases(\n          self._position_specific_bias_size,\n          self._position_specific_bias, crop_x, crop_y, back_prop=True)\n      contact_logits += biases\n\n    # Will be NHWC.\n    return contact_logits\n\n  def update_crop_fetches(self, fetches):\n    \"\"\"Add auxiliary outputs for a crop to the fetches.\"\"\"\n    if self.secstruct_multiplier > 0:\n      fetches['secstruct_probs'] = self._secstruct.get_q8_probs()\n    if self.asa_multiplier > 0:\n      fetches['asa_output'] = self._asa.asa_output\n    if self.torsion_multiplier > 0:\n      fetches['torsion_probs'] = self.torsion_output\n\n\ndef build_crops_biases(bias_size, raw_biases, crop_x, crop_y, back_prop):\n  \"\"\"Take the offset-specific biases and reshape them to match current crops.\n\n  Args:\n    bias_size: how many bias variables we're storing.\n    raw_biases: the bias variable\n    crop_x: B x 2 array of start/end for the batch\n    crop_y: B x 2 array of start/end for the batch\n    back_prop: whether to backprop through the map_fn.\n\n  Returns:\n    Reshaped biases.\n  \"\"\"\n  # First pad the biases with a copy of the final value to the maximum length.\n  max_off_diag = tf.reduce_max(\n      tf.maximum(tf.abs(crop_x[:, 1] - crop_y[:, 0]),\n                 tf.abs(crop_y[:, 1] - crop_x[:, 0])))\n  padded_bias_size = tf.maximum(bias_size, max_off_diag)\n  biases = tf.concat(\n      [raw_biases,\n       tf.tile(raw_biases[-1:, :],\n               [padded_bias_size - bias_size, 1])], axis=0)\n  # Now prepend a mirror image (excluding 0th elt) for below-diagonal.\n  biases = tf.concat([tf.reverse(biases[1:, :], axis=[0]), biases], axis=0)\n\n  # Which diagonal of the full matrix each crop starts on (top left):\n  start_diag = crop_x[:, 0:1] - crop_y[:, 0:1]  # B x 1\n  crop_size_x = tf.reduce_max(crop_x[:, 1] - crop_x[:, 0])\n  crop_size_y = tf.reduce_max(crop_y[:, 1] - crop_y[:, 0])\n\n  # Relative offset of each row within a crop:\n  # (off-diagonal decreases as y increases)\n  increment = tf.expand_dims(-tf.range(0, crop_size_y), 0)  # 1 x crop_size_y\n\n  # Index of diagonal of first element of each row, flattened.\n  row_offsets = tf.reshape(start_diag + increment, [-1])  # B*crop_size_y\n  logging.info('row_offsets  %s', row_offsets)\n\n  # Make it relative to the start of the biases array. (0-th diagonal is in\n  # the middle at position padded_bias_size - 1)\n  row_offsets += padded_bias_size - 1\n\n  # Map_fn to build the individual rows.\n  # B*cropsizey x cropsizex x num_bins\n  cropped_biases = tf.map_fn(lambda i: biases[i:i+crop_size_x, :],\n                             elems=row_offsets, dtype=tf.float32,\n                             back_prop=back_prop)\n  logging.info('cropped_biases %s', cropped_biases)\n  return tf.reshape(\n      cropped_biases, [-1, crop_size_y, crop_size_x, tf.shape(raw_biases)[-1]])\n"
  },
  {
    "path": "alphafold_casp13/distogram_io.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Write contact map predictions to a tf.io.gfile.\n\nEither write a binary contact map as an RR format text file, or a\nhistogram prediction as a pickle of a dict containing a numpy array.\n\"\"\"\n\nimport os\n\nimport numpy as np\nimport six.moves.cPickle as pickle\nimport tensorflow as tf  # pylint: disable=g-explicit-tensorflow-version-import\n\n\nRR_FORMAT = \"\"\"PFRMAT RR\nTARGET {}\nAUTHOR DM-ORIGAMI-TEAM\nMETHOD {}\nMODEL 1\n{}\n\"\"\"\n\n\ndef save_rr_file(filename, probs, domain, sequence,\n                 method='dm-contacts-resnet'):\n  \"\"\"Save a contact probability matrix as an RR file.\"\"\"\n  assert len(sequence) == probs.shape[0]\n  assert len(sequence) == probs.shape[1]\n  with tf.io.gfile.GFile(filename, 'w') as f:\n    f.write(RR_FORMAT.format(domain, method, sequence))\n    for i in range(probs.shape[0]):\n      for j in range(i + 1, probs.shape[1]):\n        f.write('{:d} {:d} {:d} {:d} {:f}\\n'.format(\n            i + 1, j + 1, 0, 8, probs[j, i]))\n    f.write('END\\n')\n\n\ndef save_torsions(torsions_dir, filebase, sequence, torsions_probs):\n  \"\"\"Save Torsions to a file as pickle of a dict.\"\"\"\n  filename = os.path.join(torsions_dir, filebase + '.torsions')\n  t_dict = dict(probs=torsions_probs, sequence=sequence)\n  with tf.io.gfile.GFile(filename, 'w') as fh:\n    pickle.dump(t_dict, fh, protocol=2)\n\n\ndef save_distance_histogram(\n    filename, probs, domain, sequence, min_range, max_range, num_bins):\n  \"\"\"Save a distance histogram prediction matrix as a pickle file.\"\"\"\n  dh_dict = {\n      'min_range': min_range,\n      'max_range': max_range,\n      'num_bins': num_bins,\n      'domain': domain,\n      'sequence': sequence,\n      'probs': probs.astype(np.float32)}\n  save_distance_histogram_from_dict(filename, dh_dict)\n\n\ndef save_distance_histogram_from_dict(filename, dh_dict):\n  \"\"\"Save a distance histogram prediction matrix as a pickle file.\"\"\"\n  fields = ['min_range', 'max_range', 'num_bins', 'domain', 'sequence', 'probs']\n  missing_fields = [f for f in fields if f not in dh_dict]\n  assert not missing_fields, 'Fields {} missing from dictionary'.format(\n      missing_fields)\n  assert len(dh_dict['sequence']) == dh_dict['probs'].shape[0]\n  assert len(dh_dict['sequence']) == dh_dict['probs'].shape[1]\n  assert dh_dict['num_bins'] == dh_dict['probs'].shape[2]\n  assert dh_dict['min_range'] >= 0.0\n  assert dh_dict['max_range'] > 0.0\n  with tf.io.gfile.GFile(filename, 'wb') as fw:\n    pickle.dump(dh_dict, fw, protocol=2)\n\n\ndef contact_map_from_distogram(distogram_dict):\n  \"\"\"Split the boundary bin.\"\"\"\n  num_bins = distogram_dict['probs'].shape[-1]\n  bin_size_angstrom = distogram_dict['max_range'] / num_bins\n  threshold_cts = (8.0 - distogram_dict['min_range']) / bin_size_angstrom\n  threshold_bin = int(threshold_cts)  # Round down\n  pred_contacts = np.sum(distogram_dict['probs'][:, :, :threshold_bin], axis=-1)\n  if threshold_bin < threshold_cts:  # Add on the fraction of the boundary bin.\n    pred_contacts += distogram_dict['probs'][:, :, threshold_bin] * (\n        threshold_cts - threshold_bin)\n  return pred_contacts\n\n"
  },
  {
    "path": "alphafold_casp13/ensemble_contact_maps.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Form a weighted average of several distograms.\n\nCan also/instead form a weighted average of a set of distance histogram pickle\nfiles, so long as they have identical hyperparameters.\n\"\"\"\n\nimport os\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport tensorflow as tf  # pylint: disable=g-explicit-tensorflow-version-import\n\nfrom alphafold_casp13 import distogram_io\nfrom alphafold_casp13 import parsers\n\nflags.DEFINE_list(\n    'pickle_dirs', [],\n    'Comma separated list of directories with pickle files to ensemble.')\nflags.DEFINE_list(\n    'weights', [],\n    'Comma separated list of weights for the pickle files from different dirs.')\nflags.DEFINE_string(\n    'output_dir', None, 'Directory where to save results of the evaluation.')\nFLAGS = flags.FLAGS\n\n\ndef ensemble_distance_histograms(pickle_dirs, weights, output_dir):\n  \"\"\"Find all the contact maps in the first dir, then ensemble across dirs.\"\"\"\n  if len(pickle_dirs) <= 1:\n    logging.warning('Pointless to ensemble %d pickle_dirs %s',\n                    len(pickle_dirs), pickle_dirs)\n    # Carry on if there's one dir, otherwise do nothing.\n    if not pickle_dirs:\n      return\n\n  tf.io.gfile.makedirs(output_dir)\n  one_dir_pickle_files = tf.io.gfile.glob(\n      os.path.join(pickle_dirs[0], '*.pickle'))\n  assert one_dir_pickle_files, pickle_dirs[0]\n  original_files = len(one_dir_pickle_files)\n  logging.info('Found %d files %d in first of %d dirs',\n               original_files, len(one_dir_pickle_files), len(pickle_dirs))\n  targets = [os.path.splitext(os.path.basename(f))[0]\n             for f in one_dir_pickle_files]\n  skipped = 0\n  wrote = 0\n  for t in targets:\n    dump_file = os.path.join(output_dir, t + '.pickle')\n    pickle_files = [os.path.join(pickle_dir, t + '.pickle')\n                    for pickle_dir in pickle_dirs]\n    _, new_dict = ensemble_one_distance_histogram(pickle_files, weights)\n    if new_dict is not None:\n      wrote += 1\n      distogram_io.save_distance_histogram_from_dict(dump_file, new_dict)\n      msg = 'Distograms Wrote %s %d / %d Skipped %d %s' % (\n          t, wrote, len(one_dir_pickle_files), skipped, dump_file)\n      logging.info(msg)\n\n\ndef ensemble_one_distance_histogram(pickle_files, weights):\n  \"\"\"Average the given pickle_files and dump.\"\"\"\n  dicts = []\n  sequence = None\n  max_dim = None\n  for picklefile in pickle_files:\n    if not tf.io.gfile.exists(picklefile):\n      logging.warning('missing %s', picklefile)\n      break\n    logging.info('loading pickle file %s', picklefile)\n    distance_histogram_dict = parsers.parse_distance_histogram_dict(picklefile)\n    if sequence is None:\n      sequence = distance_histogram_dict['sequence']\n    else:\n      assert sequence == distance_histogram_dict['sequence'], '%s vs %s' % (\n          sequence, distance_histogram_dict['sequence'])\n    dicts.append(distance_histogram_dict)\n    assert dicts[-1]['probs'].shape[0] == dicts[-1]['probs'].shape[1], (\n        '%d vs %d' % (dicts[-1]['probs'].shape[0], dicts[-1]['probs'].shape[1]))\n    assert (dicts[0]['probs'].shape[0:2] == dicts[-1]['probs'].shape[0:2]\n           ), ('%d vs %d' % (dicts[0]['probs'].shape, dicts[-1]['probs'].shape))\n    if max_dim is None or max_dim < dicts[-1]['probs'].shape[2]:\n      max_dim = dicts[-1]['probs'].shape[2]\n  if len(dicts) != len(pickle_files):\n    logging.warning('length mismatch\\n%s\\nVS\\n%s', dicts, pickle_files)\n    return sequence, None\n  ensemble_hist = (\n      sum(w * c['probs'] for w, c in zip(weights, dicts)) / sum(weights))\n  new_dict = dict(dicts[0])\n  new_dict['probs'] = ensemble_hist\n  return sequence, new_dict\n\n\ndef main(argv):\n  del argv  # Unused.\n  num_dirs = len(FLAGS.pickle_dirs)\n  if FLAGS.weights:\n    assert len(FLAGS.weights) == num_dirs, (\n        'Supply as many weights as pickle_dirs, or no weights')\n    weights = [float(w) for w in FLAGS.weights]\n  else:\n    weights = [1.0 for w in range(num_dirs)]\n\n  ensemble_distance_histograms(\n      pickle_dirs=FLAGS.pickle_dirs,\n      weights=weights,\n      output_dir=FLAGS.output_dir)\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "alphafold_casp13/parsers.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Parsers for various standard biology or AlphaFold-specific formats.\"\"\"\n\nimport pickle\n\nimport tensorflow as tf  # pylint: disable=g-explicit-tensorflow-version-import\n\n\ndef distance_histogram_dict(f):\n  \"\"\"Parses distance histogram dict pickle.\n\n  Distance histograms are stored as pickles of dicts.\n\n  Write one of these with contacts/write_rr_file.write_pickle_file()\n\n  Args:\n    f: File-like handle to distance histogram dict pickle.\n\n  Returns:\n    Dict with fields:\n      probs: (an L x L x num_bins) histogram.\n      num_bins: number of bins for each residue pair\n      min_range: left hand edge of the distance histogram\n      max_range: the extent of the histogram NOT the right hand edge.\n  \"\"\"\n  contact_dict = pickle.load(f, encoding='latin1')\n\n  num_res = len(contact_dict['sequence'])\n\n  if not all(key in contact_dict.keys()\n             for key in ['probs', 'num_bins', 'min_range', 'max_range']):\n    raise ValueError('The pickled contact dict doesn\\'t contain all required '\n                     'keys: probs, num_bins, min_range, max_range but %s.' %\n                     contact_dict.keys())\n  if contact_dict['probs'].ndim != 3:\n    raise ValueError(\n        'Probs is not rank 3 but %d' % contact_dict['probs'].ndim)\n  if contact_dict['num_bins'] != contact_dict['probs'].shape[2]:\n    raise ValueError(\n        'The probs shape doesn\\'t match num_bins in the third dimension. '\n        'Expected %d got %d.' % (contact_dict['num_bins'],\n                                 contact_dict['probs'].shape[2]))\n  if contact_dict['probs'].shape[:2] != (num_res, num_res):\n    raise ValueError(\n        'The first two probs dims (%i, %i) aren\\'t equal to len(sequence) %i'\n        % (contact_dict['probs'].shape[0], contact_dict['probs'].shape[1],\n           num_res))\n  return contact_dict\n\n\ndef parse_distance_histogram_dict(filepath):\n  \"\"\"Parses distance histogram piclkle from filepath.\"\"\"\n  with tf.io.gfile.GFile(filepath, 'rb') as f:\n    return distance_histogram_dict(f)\n"
  },
  {
    "path": "alphafold_casp13/paste_contact_maps.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Combines predictions by pasting.\"\"\"\n\nimport os\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport numpy as np\nimport six\nimport tensorflow as tf  # pylint: disable=g-explicit-tensorflow-version-import\n\nfrom alphafold_casp13 import distogram_io\nfrom alphafold_casp13 import parsers\n\nflags.DEFINE_string(\"pickle_input_dir\", None,\n                    \"Directory to read pickle distance histogram files from.\")\nflags.DEFINE_string(\"output_dir\", None, \"Directory to write chain RR files to.\")\nflags.DEFINE_string(\"tfrecord_path\", \"\",\n                    \"If provided, construct the average weighted by number of \"\n                    \"alignments.\")\nflags.DEFINE_string(\"crop_sizes\", \"64,128,256\", \"The crop sizes to use.\")\nflags.DEFINE_integer(\"crop_step\", 32, \"The step size for cropping.\")\nFLAGS = flags.FLAGS\n\n\ndef generate_domains(target, sequence, crop_sizes, crop_step):\n  \"\"\"Take fasta files and generate a domain definition for data generation.\"\"\"\n  logging.info(\"Generating crop domains for target %s\", target)\n\n  windows = [int(x) for x in crop_sizes.split(\",\")]\n  num_residues = len(sequence)\n  domains = []\n  domains.append({\"name\": target, \"description\": (1, num_residues)})\n\n  for window in windows:\n    starts = list(range(0, num_residues - window, crop_step))\n    # Append a last crop to ensure we get all the way to the end of the\n    # sequence, even when num_residues - window is not divisible by crop_step.\n    if num_residues >= window:\n      starts += [num_residues - window]\n    for start in starts:\n      name = \"%s-l%i_s%i\" % (target, window, start)\n      domains.append({\"name\": name, \"description\": (start + 1, start + window)})\n  return domains\n\n\ndef get_weights(path):\n  \"\"\"Fetch all the weights from a TFRecord.\"\"\"\n  if not path:\n    return {}\n  logging.info(\"Getting weights from %s\", path)\n  weights = {}\n  record_iterator = tf.python_io.tf_record_iterator(path=path)\n  for serialized_tfexample in record_iterator:\n    example = tf.train.Example()\n    example.ParseFromString(serialized_tfexample)\n\n    domain_name = six.ensure_str(\n        example.features.feature[\"domain_name\"].bytes_list.value[0])\n    weights[domain_name] = float(\n        example.features.feature[\"num_alignments\"].int64_list.value[0])\n    logging.info(\"Weight %s: %d\", domain_name, weights[domain_name])\n  logging.info(\"Loaded %d weights\", len(weights))\n  return weights\n\n\ndef paste_distance_histograms(\n    input_dir, output_dir, weights, crop_sizes, crop_step):\n  \"\"\"Paste together distograms for given domains of given targets and write.\n\n  Domains distance histograms are 'pasted', meaning they are substituted\n  directly into the contact map. The order is determined by the order in the\n  domain definition file.\n\n  Args:\n    input_dir: String, path to directory containing chain and domain-level\n      distogram files.\n    output_dir: String, path to directory to write out chain-level distrogram\n      files.\n    weights: A dictionary with weights.\n    crop_sizes: The crop sizes.\n    crop_step: The step size for cropping.\n\n  Raises:\n    ValueError: if histogram parameters don't match.\n  \"\"\"\n  tf.io.gfile.makedirs(output_dir)\n\n  targets = tf.io.gfile.glob(os.path.join(input_dir, \"*.pickle\"))\n  targets = [os.path.splitext(os.path.basename(t))[0] for t in targets]\n  targets = set([t.split(\"-\")[0] for t in targets])\n  logging.info(\"Pasting distance histograms for %d targets\", len(targets))\n\n  for target in sorted(targets):\n    logging.info(\"%s as chain\", target)\n\n    chain_pickle_path = os.path.join(input_dir, \"%s.pickle\" % target)\n    distance_histogram_dict = parsers.parse_distance_histogram_dict(\n        chain_pickle_path)\n\n    combined_cmap = np.array(distance_histogram_dict[\"probs\"])\n    # Make the counter map 1-deep but still rank 3.\n    counter_map = np.ones_like(combined_cmap[:, :, 0:1])\n\n    sequence = distance_histogram_dict[\"sequence\"]\n\n    target_domains = generate_domains(\n        target=target, sequence=sequence, crop_sizes=crop_sizes,\n        crop_step=crop_step)\n\n    # Paste in each domain.\n    for domain in sorted(target_domains, key=lambda x: x[\"name\"]):\n      if domain[\"name\"] == target:\n        logging.info(\"Skipping %s as domain\", target)\n        continue\n\n      if \",\" in domain[\"description\"]:\n        logging.info(\"Skipping multisegment domain %s\",\n                     domain[\"name\"])\n        continue\n\n      crop_start, crop_end = domain[\"description\"]\n\n      domain_pickle_path = os.path.join(input_dir, \"%s.pickle\" % domain[\"name\"])\n\n      weight = weights.get(domain[\"name\"], 1e9)\n\n      logging.info(\"Pasting %s: %d-%d. weight: %f\", domain_pickle_path,\n                   crop_start, crop_end, weight)\n\n      domain_distance_histogram_dict = parsers.parse_distance_histogram_dict(\n          domain_pickle_path)\n      for field in [\"num_bins\", \"min_range\", \"max_range\"]:\n        if domain_distance_histogram_dict[field] != distance_histogram_dict[\n            field]:\n          raise ValueError(\"Field {} does not match {} {}\".format(\n              field,\n              domain_distance_histogram_dict[field],\n              distance_histogram_dict[field]))\n      weight_matrix_size = crop_end - crop_start + 1\n      weight_matrix = np.ones(\n          (weight_matrix_size, weight_matrix_size), dtype=np.float32) * weight\n      combined_cmap[crop_start - 1:crop_end, crop_start - 1:crop_end, :] += (\n          domain_distance_histogram_dict[\"probs\"] *\n          np.expand_dims(weight_matrix, 2))\n      counter_map[crop_start - 1:crop_end,\n                  crop_start - 1:crop_end, 0] += weight_matrix\n\n    # Broadcast across the histogram bins.\n    combined_cmap /= counter_map\n\n    # Write out full-chain cmap for folding.\n    output_chain_pickle_path = os.path.join(output_dir,\n                                            \"{}.pickle\".format(target))\n\n    logging.info(\"Writing to %s\", output_chain_pickle_path)\n\n    distance_histogram_dict[\"probs\"] = combined_cmap\n    distance_histogram_dict[\"target\"] = target\n\n    # Save the distogram pickle file.\n    distogram_io.save_distance_histogram_from_dict(\n        output_chain_pickle_path, distance_histogram_dict)\n\n    # Compute the contact map and save it as an RR file.\n    contact_probs = distogram_io.contact_map_from_distogram(\n        distance_histogram_dict)\n    rr_path = os.path.join(output_dir, \"%s.rr\" % target)\n    distogram_io.save_rr_file(\n        filename=rr_path,\n        probs=contact_probs,\n        domain=target,\n        sequence=distance_histogram_dict[\"sequence\"])\n\n\ndef main(argv):\n  del argv  # Unused.\n  flags.mark_flag_as_required(\"pickle_input_dir\")\n\n  weights = get_weights(FLAGS.tfrecord_path)\n\n  paste_distance_histograms(\n      FLAGS.pickle_input_dir, FLAGS.output_dir, weights, FLAGS.crop_sizes,\n      FLAGS.crop_step)\n\nif __name__ == \"__main__\":\n  app.run(main)\n"
  },
  {
    "path": "alphafold_casp13/requirements.txt",
    "content": "setuptools==41.0.0\nabsl-py==0.8.1\nnumpy==1.16\nsix==1.12\ndm-sonnet==1.35\ntensorflow==1.14\ntensorflow-probability==0.7.0\n"
  },
  {
    "path": "alphafold_casp13/run_eval.sh",
    "content": "#!/bin/bash\n# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -e\n\n# We assume the script is being run from the deepmind_research parent directory.\n\nDISTOGRAM_MODEL=\"alphafold_casp13/873731\"  # Path to the directory with the distogram model.\nBACKGROUND_MODEL=\"alphafold_casp13/916425\"  # Path to the directory with the background model.\nTORSION_MODEL=\"alphafold_casp13/941521\"  # Path to the directory with the torsion model.\n\nTARGET=\"T1019s2\"  # The name of the target.\nTARGET_PATH=\"alphafold_casp13/${TARGET}\"  # Path to the directory with the target input data.\n\n# Set up the virtual environment and install dependencies.\npython3 -m venv alphafold_venv\nsource alphafold_venv/bin/activate\npip install wheel\npip install -r alphafold_casp13/requirements.txt\n\n# Create the output directory.\nOUTPUT_DIR=\"${HOME}/contacts_${TARGET}_$(date +%Y_%m_%d_%H_%M_%S)\"\nmkdir -p \"${OUTPUT_DIR}\"\necho \"Saving output to ${OUTPUT_DIR}/\"\n\n# Run contact prediction over 4 replicas.\nfor replica in 0 1 2 3; do\n  echo \"Launching all models for replica ${replica}\"\n\n  # Run the distogram model.\n  python3 -m alphafold_casp13.contacts \\\n    --logtostderr \\\n    --cpu=true \\\n    --config_path=\"${DISTOGRAM_MODEL}/${replica}/config.json\" \\\n    --checkpoint_path=\"${DISTOGRAM_MODEL}/${replica}/tf_graph_data/tf_graph_data.ckpt\" \\\n    --output_path=\"${OUTPUT_DIR}/distogram/${replica}\" \\\n    --eval_sstable=\"${TARGET_PATH}/${TARGET}.tfrec\" \\\n    --stats_file=\"${DISTOGRAM_MODEL}/stats_train_s35.json\" &\n\n  # Run the background model.\n  python3 -m alphafold_casp13.contacts \\\n    --logtostderr \\\n    --cpu=true \\\n    --config_path=\"${BACKGROUND_MODEL}/${replica}/config.json\" \\\n    --checkpoint_path=\"${BACKGROUND_MODEL}/${replica}/tf_graph_data/tf_graph_data.ckpt\" \\\n    --output_path=\"${OUTPUT_DIR}/background_distogram/${replica}\" \\\n    --eval_sstable=\"${TARGET_PATH}/${TARGET}.tfrec\" \\\n    --stats_file=\"${BACKGROUND_MODEL}/stats_train_s35.json\" &\ndone\n\n# Run the torsion model, but only 1 replica.\npython3 -m alphafold_casp13.contacts \\\n  --logtostderr \\\n  --cpu=true \\\n  --config_path=\"${TORSION_MODEL}/0/config.json\" \\\n  --checkpoint_path=\"${TORSION_MODEL}/0/tf_graph_data/tf_graph_data.ckpt\" \\\n  --output_path=\"${OUTPUT_DIR}/torsion/0\" \\\n  --eval_sstable=\"${TARGET_PATH}/${TARGET}.tfrec\" \\\n  --stats_file=\"${TORSION_MODEL}/stats_train_s35.json\" &\n\necho \"All models running, waiting for them to complete\"\nwait\n\necho \"Ensembling all replica outputs\"\n\n# Run the ensembling jobs for distograms, background distograms.\nfor output_dir in \"${OUTPUT_DIR}/distogram\" \"${OUTPUT_DIR}/background_distogram\"; do\n  pickle_dirs=\"${output_dir}/0/pickle_files/,${output_dir}/1/pickle_files/,${output_dir}/2/pickle_files/,${output_dir}/3/pickle_files/\"\n\n  # Ensemble distograms.\n  python3 -m alphafold_casp13.ensemble_contact_maps \\\n    --logtostderr \\\n    --pickle_dirs=\"${pickle_dirs}\" \\\n    --output_dir=\"${output_dir}/ensemble/\"\ndone\n\n# Only ensemble single replica distogram for torsions.\npython3 -m alphafold_casp13.ensemble_contact_maps \\\n  --logtostderr \\\n  --pickle_dirs=\"${OUTPUT_DIR}/torsion/0/pickle_files/\" \\\n  --output_dir=\"${OUTPUT_DIR}/torsion/ensemble/\"\n\necho \"Pasting contact maps\"\n\npython3 -m alphafold_casp13.paste_contact_maps \\\n  --logtostderr \\\n  --pickle_input_dir=\"${OUTPUT_DIR}/distogram/ensemble/\" \\\n  --output_dir=\"${OUTPUT_DIR}/pasted/\" \\\n  --tfrecord_path=\"${TARGET_PATH}/${TARGET}.tfrec\"\n\necho \"Done\"\n"
  },
  {
    "path": "alphafold_casp13/secstruct.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Layer for modelling and scoring secondary structure.\"\"\"\n\nimport os\n\nfrom absl import logging\nimport numpy as np\nimport tensorflow as tf  # pylint: disable=g-explicit-tensorflow-version-import\n\n\n# 8-class classes (Q8)\nSECONDARY_STRUCTURES = '-HETSGBI'\n\n# Equivalence classes for 3-class (Q3) from Li & Yu 2016.\n# See http://www.cmbi.ru.nl/dssp.html for letter explanations.\nQ3_MAP = ['-TSGIB', 'H', 'E']\n\n\ndef make_q3_matrices():\n  \"\"\"Generate mapping matrices for secstruct Q8:Q3 equivalence classes.\"\"\"\n  dimension = len(SECONDARY_STRUCTURES)\n  q3_map_matrix = np.zeros((dimension, len(Q3_MAP)))\n  q3_lookup = np.zeros((dimension,), dtype=np.int32)\n  for i, eclass in enumerate(Q3_MAP):  # equivalence classes\n    for m in eclass:  # Members of the class.\n      ss_type = SECONDARY_STRUCTURES.index(m)\n      q3_map_matrix[ss_type, i] = 1.0\n      q3_lookup[ss_type] = i\n  return q3_map_matrix, q3_lookup\n\n\nclass Secstruct(object):\n  \"\"\"Make a layer that computes hierarchical secstruct.\"\"\"\n  # Build static, shared structures:\n  q3_map_matrix, q3_lookup = make_q3_matrices()\n  static_dimension = len(SECONDARY_STRUCTURES)\n\n  def __init__(self, name='secstruct'):\n    self.name = name\n    self._dimension = Secstruct.static_dimension\n\n  def make_layer_new(self, activations):\n    \"\"\"Make the layer.\"\"\"\n    with tf.variable_scope(self.name, reuse=tf.AUTO_REUSE):\n      logging.info('Creating secstruct %s', activations)\n      self.logits = tf.contrib.layers.linear(activations, self._dimension)\n      self.ss_q8_probs = tf.nn.softmax(self.logits)\n      self.ss_q3_probs = tf.matmul(\n          self.ss_q8_probs, tf.constant(self.q3_map_matrix, dtype=tf.float32))\n\n  def get_q8_probs(self):\n    return self.ss_q8_probs\n\n\ndef save_secstructs(dump_dir_path, name, index, sequence, probs,\n                    label='Deepmind secstruct'):\n  \"\"\"Write secstruct prob distributions to an ss2 file.\n\n  Can be overloaded to write out asa values too.\n\n  Args:\n    dump_dir_path: directory where to write files.\n    name: name of domain\n    index: index number of multiple samples. (or None for no index)\n    sequence: string of L residue labels\n    probs: L x D matrix of probabilities. L is length of sequence,\n      D is probability dimension (usually 3).\n    label: A label for the file.\n  \"\"\"\n  filename = os.path.join(dump_dir_path, '%s.ss2' % name)\n  if index is not None:\n    filename = os.path.join(dump_dir_path, '%s_%04d.ss2' % (name, index))\n  with tf.io.gfile.GFile(filename, 'w') as gf:\n    logging.info('Saving secstruct to %s', filename)\n    gf.write('# %s CLASSES [%s] %s sample %s\\n\\n' % (\n        label, ''.join(SECONDARY_STRUCTURES[:probs.shape[1]]), name, index))\n    for l in range(probs.shape[0]):\n      ss = SECONDARY_STRUCTURES[np.argmax(probs[l, :])]\n      gf.write('%4d %1s %1s %s\\n' % (l + 1, sequence[l], ss, ''.join(\n          [('%6.3f' % p) for p in probs[l, :]])))\n"
  },
  {
    "path": "alphafold_casp13/test_domains.txt",
    "content": "3r75A02\n4f03B02\n2kssA01\n2fmlB03\n2o7sA02\n2bmoA01\n2cjzA00\n4cbeA00\n1u78A02\n5ccbA01\n4hcjA00\n3c1dA03\n5fo5A00\n2x9oA00\n1vq8P02\n4fuoA01\n1pp8O00\n2vosA02\n4q5fA02\n4htgA03\n3aafA00\n1el6A02\n3duzA03\n2v0oB00\n3zm1A00\n3sk9A00\n1s8nA02\n3vurA02\n1v3fA00\n3by6C01\n2yv7A02\n3q7eA02\n1ucrB00\n4n6qA00\n3n40F01\n3abhA01\n1yo5C00\n1t6sA01\n3rgoA00\n4ljxA00\n4acoA01\n5g5eA02\n4r8hB02\n3bjaA00\n2cn4A01\n3h20A01\n4ak1A01\n1ouwA00\n4g7nA02\n4b7lA01\n2nnuA01\n6escA05\n2iv2X03\n4hojA02\n1ik7A00\n4lq4A01\n2htjA01\n2ju0B00\n5it3A00\n2keyA00\n3g9gA00\n3s2wG00\n4aumB03\n2xvcA00\n3r4kB01\n2o0yC01\n3mczA01\n2nyxB01\n3b4vD01\n1x8pA00\n1eaqB00\n4cjxA02\n1lkoA01\n4pvkA02\n3bddD00\n4atmA00\n4n6rB00\n2g3rA02\n2wqgA00\n3nr7A00\n4rs8A00\n1bbyA00\n2efeA02\n1azoA00\n3d79A01\n2icgA00\n1s3jA02\n3nrvB00\n5j8eA00\n3apaA00\n3vvmA02\n3bv8A00\n4mlvA03\n3m8eA00\n3lapA01\n2wq4A01\n2m8eA00\n3u62A01\n2qbyB03\n2m45A00\n3pvtA00\n1gpwD00\n3bwgB01\n2m13A00\n2ls0101\n1iqoA00\n6az6A01\n4oggC02\n3o8qA01\n3gw6D02\n16vpA00\n1lf7A00\n2v89A01\n3ttyA02\n2fxaA00\n3kq0A00\n3ubkB02\n2ee7A01\n2kw7A00\n2c3nA02\n1d3yA01\n2lw7A01\n3agcB00\n1ifcA00\n3hwcA03\n2h6bA02\n1g4iA00\n4om7A00\n3c1dB01\n1vq8P01\n3d54D00\n4aihF00\n1bkrA00\n1larB01\n4djaA02\n1opcA00\n5x07F00\n2b9wA03\n2od5A00\n4ad9A02\n1ev7B02\n1mswD01\n2vj4A01\n4f7zA02\n2vxdA00\n2b1xA01\n2rbgA00\n4pitA00\n2o6yA02\n1ksqA00\n2cjaA01\n4a0pA02\n3c57B00\n2ia2C01\n3eyyA01\n4pxoA02\n1r7jA00\n2dt8A01\n2ojhA00\n1t3gB00\n4htpA00\n1pdnC02\n2pg0A03\n5hvqC02\n4e4rA01\n1vmiA01\n4xrfA00\n3h1dA01\n4hl4A01\n2vzbB00\n2pn1A01\n3a9qE00\n3bpvA00\n2hpuA02\n3teqB00\n2kjzA01\n4lmyA01\n3fx3B02\n4rl1A02\n4boeA00\n4p5pA00\n2b49A00\n1zbhA01\n1mc2A00\n2qq9A01\n3zc0D00\n2l02A00\n4e8hA02\n3lszA02\n2e6xB00\n2hqrA02\n3gudA00\n3tgnB02\n2cxyA00\n3zuiA00\n2qrvD02\n3vsmA02\n1i4jA00\n2fdoA00\n5tp4A02\n2pvqA02\n3htuA00\n3ay8A02\n4gqbA03\n4wohA01\n4r6rA00\n2fsiB04\n3qaoA00\n2zhgA00\n2xqoA00\n3terA00\n1hciA01\n2va0A00\n1f2eA02\n2zbkA01\n3m0fB02\n2g8sB00\n3v8jA01\n4lzpA00\n3d2qD00\n1bhdA00\n2vpzA04\n3cm3A00\n2fr2A00\n5hdkC00\n4agsA02\n6em3Y00\n3hugA00\n3h92A00\n1dceA02\n2or0A03\n4pxdA02\n1lvaA03\n2pmuC00\n3mwmA01\n4mv4A01\n3fprA00\n2y3cA00\n2pagA00\n5c8eG01\n2ip2A01\n4cvkA03\n4uhvA02\n2cqkA00\n3mq0A01\n3k6mD01\n3e5zA00\n3b0pA02\n5h5lB02\n3fvqA03\n2qvoA00\n2qe8A00\n2n01B00\n4mnuB00\n3jw4A00\n3hhdA04\n3vpbA01\n1vk5A00\n5xyiE02\n6az1E02\n4k05A02\n2dulA02\n1j5yA01\n4if4A02\n1qdlB00\n2fexA00\n3tgxB00\n3t0yA02\n2i8bB00\n4u63A02\n3mq1A01\n5jpoD02\n2itbB00\n4d2mA00\n4g6qA01\n1go3F01\n3b73B00\n2c2jA00\n2h09A01\n5e1wA00\n3m9vA03\n1wh2A01\n3m8eB00\n1r8eA02\n3ecrB03\n4pqhA02\n2c2uA00\n2rbdA01\n5d4sB00\n1wchA00\n2jngA00\n1oyiA00\n4mziA00\n3k69A00\n3r1fE02\n2obpA00\n3lppA01\n2kd1A00\n5hgwA00\n2a6hF02\n3snfA00\n1v2aA02\n1k3yA02\n3oqgB00\n4aohA00\n1xeqB00\n2i1yA00\n1i27A00\n2hqtK00\n3qhqA02\n3lbxB02\n3o2pE00\n3buxB01\n5aipB00\n2fphX01\n5kzwA01\n3dv8A02\n2a7oA00\n4iwyA01\n2r3sB01\n3ebkB00\n1mz9A00\n5ilbA02\n2r7kA01\n4fzqA00\n1y60A00\n3lmmB05\n4c08A02\n6em3M01\n3echA01\n3l09A01\n1cf7A00\n4xvxA03\n2w25A01\n3kfwX01\n4ivfA02\n4hw0C00\n1ej6D02\n2odvA02\n4kdxA02\n3boqA00\n3a5zF01\n1rt8A01\n3sreA00\n1c3kA00\n3lp8A01\n3fzvB01\n3i71B00\n2wa7A01\n1c3cA02\n2kvuA00\n2os0A00\n1mzbA01\n5cecA02\n4c5cA01\n4gyiA01\n3duzA04\n3ibtA02\n3fvzA00\n3bhnA00\n1xvsA00\n2eshA00\n4jzyA02\n5mgwA02\n3m1gA02\n4f3fC00\n2gxgA00\n2kj8A00\n3majA02\n3cbuA02\n3to7A03\n2rk3A00\n2pfbB00\n4h63H04\n3sxyA01\n3p8bB02\n3kyzA00\n4wr4A02\n4i1oD02\n5hs7B00\n5cvvB01\n4ac7B00\n1gpmA01\n3ic8A02\n4g9yA00\n5f07A02\n1ya5T01\n2ia1B02\n4dzoA02\n1vq8R00\n2hj0A02\n4v33A01\n4arcA05\n2v9vA02\n3v4gA01\n2o3fA00\n5b4jA00\n3ak8F00\n5dukB00\n2d87A01\n2p8tA01\n1vjxA00\n2kiwA01\n5jskA02\n2omdA00\n4a5uB00\n1tbxB00\n3e6cC02\n3ei4B01\n4fw1A02\n1xmbA02\n1in4A02\n1c9vA00\n1jigA00\n3t5xA02\n2hnlA02\n2b9wA02\n4lqcB00\n3bnjA02\n2rb7A02\n3d37A02\n4dr8D00\n3k5iD01\n4iw9A02\n6el8A00\n4nyqA00\n4nhjB00\n1p15A00\n2o0yB01\n1xjhA00\n4zxgA02\n4kyqA00\n4ck4A00\n3pltA00\n4nlcA02\n3cj8B02\n5dm7R00\n3eetA01\n1ejgA00\n1y0uA00\n3einA02\n5cwtA00\n1fseB00\n3k2zB01\n4ou0A00\n2qqyA00\n2p5zX02\n5lrrF02\n5xyiK00\n2mh2A00\n4ercA00\n4fzsA00\n1i9gA01\n3cx5E01\n4rayA01\n1pchA00\n3ez0C00\n1kwgA02\n1t8sA01\n4jmfA00\n4x9xA01\n1e6bA02\n3dptB01\n5a89A00\n5dzsA01\n4w8hA00\n3ll2A00\n2odvA01\n3gw2A00\n4p79A00\n4uzsB02\n1oheA02\n3o6uA00\n2gauA02\n4hyeA02\n4qqwA01\n5jhmA01\n3l2pA01\n4gcvC00\n4j2fA02\n2q8kA02\n3s6xC01\n3ml1A03\n3nqoB00\n2fq3A00\n1jkvA01\n3pqkA00\n4ea9A01\n2hoxA01\n1w4tA02\n2v9vA01\n1irxA03\n2xv4S03\n1d8bA00\n5dqvA02\n1p3dA03\n1w5sA03\n3o65A02\n3pfeA02\n2j5dA01\n5eehB01\n3it4B01\n1yf2A02\n1mw9X02\n2zahA02\n3l0mA02\n3drwA02\n3cuqA02\n3gxhA00\n2v9bA00\n2irfG00\n3cuqB03\n4o7hB02\n3gz5B02\n4cvrA00\n1l3lA02\n3keyA01\n3g73A00\n4lr4A02\n1vkzA01\n3c8tA02\n4hi7B02\n2vooB01\n2lm9A00\n2m1bA00\n1pp9E01\n3ebwA01\n1xezA02\n1m7lA00\n2c5zA00\n3ngxA02\n1rt8A03\n5uejA02\n4a6dA01\n4esjA02\n3dr2A00\n4r0sA00\n3p4tA03\n4g10A02\n3jamZ00\n2konA00\n3e3vA01\n4nyhA00\n2vpzA03\n2ipcA04\n2pvpA01\n3i4pA01\n1fm0E00\n1z6oM00\n1sh5A01\n1biaA01\n2rt6A00\n1ul4A01\n1fpqA02\n5fwaA02\n2d89A01\n3ir4A02\n1yyvB00\n2felE00\n4zbdA02\n1npeA00\n4wd3A01\n1o5zA02\n5dcmA00\n1qmoE01\n2nraC02\n1pfiA00\n4r24B00\n3aw8A01\n4pxeA02\n1sy7A03\n1knzA01\n3l4rA00\n3h4sA02\n3owaA03\n2xstA00\n2qlzB01\n3byqA00\n1v74A00\n2xubA04\n2ga1A02\n4k2eB00\n2hraA02\n2zogA02\n4exjA02\n2zuvA03\n2esnA01\n2gtiA01\n3ljdA00\n3er6A00\n2g6zA00\n1i7qB00\n2pbiA01\n3gp4B00\n3edvB01\n1edzA02\n4glwA01\n2yo3A04\n1kt6A00\n1vq8T00\n4wlsA00\n2cuyA02\n2dk5A01\n4fasA01\n1hciA04\n2ot3A02\n4o6uA00\n4etrB00\n5t3wA00\n3p9cA01\n5uagF02\n3ei3B01\n3fseA01\n3sk1C01\n1s29A00\n1sfxB00\n1u3eM02\n2yjkC00\n4ymyA00\n1wi9A01\n2o5cB02\n2xxlA01\n2rn7A01\n4cdgA04\n3jygA00\n5ahoA02\n4nb5B01\n4nkbA01\n3ccdA00\n3go5A04\n4m3oA00\n2rqpA00\n1l0oC00\n1zarA01\n5f64A02\n2l5pA00\n3qweA00\n3iylU02\n3owaB04\n3gk7A01\n4dylA01\n2jozA01\n4zyeA02\n4tvvC00\n3dfgA02\n3pwzA01\n3lbxB01\n2f2eA01\n2li6A00\n4gnkE00\n2dlbA00\n5tjjA01\n5x12A01\n1jgsA00\n1u0sA00\n2sttA00\n2z3yA01\n4nx8B00\n3f81A00\n3bt3A01\n2d29A03\n3qhbA00\n3lk7A03\n2x3lA03\n2fp8B00\n2a3vB01\n1gqvA00\n2fa5A00\n4o92A02\n1n57A00\n2vzcB00\n2cvdA02\n2fbhA00\n3m1cA04\n2hgcA00\n5e33A02\n4aukA01\n1o8vA00\n3unoE00\n2p7sA00\n1sx5B00\n2riqA02\n3d5pA00\n1miuA04\n3vpdA01\n3bt5A00\n3keoA01\n1stzA01\n4nswB01\n4r42A01\n3r5xA01\n4l9bA02\n2co5A00\n2bh1A01\n4fzbC02\n5gvyA00\n3d06A00\n4gy7A03\n3wnzA01\n5k3hB04\n3bk3C00\n2wyhB01\n2pn6A01\n3kbgA03\n5ck3C00\n2w86A02\n4bvxB02\n2cg4A01\n2looA02\n2h1yA02\n1hkqA00\n3swoA03\n4iylA01\n4m37A02\n2ia0A01\n4x28A03\n4bwsF00\n2rhfA00\n1i4dA00\n2zbdA01\n1b9mB01\n3fiqA00\n3jyoA01\n3k4iC02\n2ofqA01\n3vsmA03\n4c6rA00\n1uebA01\n1k90B03\n2qjzA00\n3dfgA01\n1mkmB01\n1ua4A02\n1xo0A01\n3vfzB00\n2llzA01\n3elkB00\n1q1hA00\n2o62A02\n4j3vA01\n3wd6A02\n1jhfA02\n1sfuA00\n1ufmA00\n2lonA01\n3lxzB02\n2zkoA00\n3sovA01\n2hoqA02\n1c6vX00\n3ramA02\n3sqiA02\n1pueF00\n4jedA02\n1repC01\n1avgI00\n3cniA00\n2du5B01\n3ispA01\n2qlzA03\n3qu3B01\n2zo4A02\n1bjaA00\n1dp7P00\n5i47A01\n4rgxB00\n5ffxD00\n3tedA01\n2vdjA01\n3ar4A01\n3l3bA00\n4i2oA02\n3ziwA02\n4x6gB01\n1ocyA02\n4ytlA02\n2fytA02\n2gsqA02\n4kf9A02\n2d4cB00\n4esbA00\n2w7aB00\n1j6uA03\n1c4zA01\n4i98C01\n3rjpA00\n4akxB01\n1x6oA01\n1z6tA04\n2efkA01\n1lr1A00\n1ut7B01\n2vrnA00\n1fzpD00\n3m1eA00\n2hzrA00\n2c2xA02\n4mhgA01\n3gvaA00\n4irnA03\n1khiA01\n2qjxA00\n3hn7A03\n4wu3A01\n3bxjA01\n4wpeA00\n3iq1B00\n3qavA02\n2e1mB02\n3d37A03\n1q08A00\n1oe8A02\n3fdeB01\n5k2mA01\n1l8dA00\n2fnoA02\n1p4xA01\n4u9hS02\n1cruA00\n2rkhA01\n2ix5A03\n4mtdD01\n4jbbA02\n5mteA00\n3f7cA00\n2fmyA02\n1qftB00\n1h67A00\n4nzvA02\n3bz6A02\n3fxqB01\n3e3vA03\n1fp2A01\n2hcmA01\n1tnsA00\n1ev7A01\n2yvlA01\n2y5pA00\n1cunA01\n3fvcA05\n3nk4B01\n4m9cA01\n4c4aA04\n4eg0A01\n2hztC00\n1k7wA02\n5bpdD01\n2di3A01\n2kj9A00\n3m6zA02\n1epaA00\n4ijaA01\n2wgpA00\n3u9gA01\n3l09A02\n1m6nA04\n4f0bA02\n3c7jA01\n4fu0A01\n1lehA01\n3cjnA00\n3x0dA02\n1r0uA00\n4acoA02\n2p7vB00\n3ax6A01\n3safA02\n1kafA00\n2oxoA00\n4rm7A03\n3pvhA00\n1qo0D02\n1m1gB03\n5jtwA06\n3lupA01\n2jrtA01\n3wocA00\n1hw1A01\n2i87B01\n2h6oA03\n4admC02\n1ussA00\n3ehmA03\n3ii2A00\n3lfkD00\n2e70A00\n4qytA00\n1rt8A04\n2ycdA02\n1kgsA02\n4l5jB01\n1t4wA00\n2e1fA01\n3qphA01\n1xezA04\n1fnnB03\n2ex2A02\n4q5nA02\n5fgmA00\n3vcxA01\n3votA01\n1ptfA00\n1g8lA02\n4oj5A02\n3ig5A04\n4tq2A00\n2lkpA00\n1ulyA01\n4adiB04\n2yu3A01\n1t6sB02\n4jg5A02\n2g7zA01\n1s6lA01\n4hw6A02\n2rdpA00\n3sqnB01\n3e6mA00\n1tjoB00\n3phhA01\n2p5kA00\n4txiA03\n2mlgA00\n2v1xA03\n1p2xA00\n5gtqA00\n1vlgA00\n3fb2A01\n2igsA00\n2q0oA02\n3op1B02\n3ezuA01\n3if8B02\n2v6kA02\n1fc3B00\n1ov9B00\n3l00A02\n4u7bA02\n3o22A00\n5j4uA02\n3ct9A02\n3cazB00\n3dasA00\n3dkmA00\n2nlkA02\n1peqA03\n5wvoC02\n1u5tB02\n1y2oA00\n3dytA02\n3akmA00\n4xgiA02\n4m32A01\n4az1B00\n1yu0A03\n2gp4A03\n2xubA01\n3mw9A02\n4esfA00\n3f5dA00\n4uf1A00\n5xoyB02\n2clbA01\n2h6oA02\n3graA00\n5h80A01\n1wymA01\n4em2A00\n4fczA00\n3liuA02\n1qbjC00\n1a4iA02\n3u1dB00\n3d7jA00\n1ro2A03\n2dbbB01\n3g27A01\n1z9hA03\n3bf0A02\n3ttvA03\n4co8A00\n3ztaA00\n1u0jA01\n2gumB05\n2ci8A01\n2jbrA03\n2vheA01\n1p2fA02\n3vg7A00\n3kffA00\n5m43A00\n3oghB00\n3lt7C00\n2ffjB03\n1o1yA00\n1v4rA01\n2kkpA00\n4jerA00\n1vh6A01\n1gm5A01\n5bx1A00\n1oahA02\n4l0yB00\n2qfaC00\n3emuA00\n1ub9A00\n1vjvA02\n1d8jA00\n1r2jA03\n3k3vA00\n1w79A02\n1k0oB02\n1on2A01\n2kptA00\n4es8B01\n3saoB01\n1o54A01\n3r0rA00\n3qg5D02\n4q48A03\n2dk8A01\n1afoA00\n1qgpA00\n3gzxA01\n2z3qA00\n4cxfA02\n5j09A00\n4g7nA01\n2j4dA02\n1w07A04\n2p63A01\n3bnwB00\n2wg7A00\n2dj6B00\n3rhtA00\n5gouG00\n2outA01\n4gf0A02\n5anpA00\n2e0iA02\n3cymA02\n3i3lA02\n3ok8A00\n2qenA03\n4nleA01\n5j3bA01\n2ztbA02\n3fseB02\n1o57A01\n4o5vA01\n1vzyA02\n4iikA00\n4k2hD00\n4lruA00\n3lwbA01\n2memA00\n4dk1C01\n3c8eA02\n2qwwC00\n1dzkA00\n2e2fA00\n4tkbA00\n1pocA00\n1zs3A00\n2gscE00\n2x3dF01\n1or7B02\n5lewA03\n4mamA01\n3d1lA02\n4mudC00\n3w6jE02\n4e5vB00\n2vclA00\n5i47B03\n4ytlA01\n1f1mA00\n3neuA01\n4qupA01\n3jrnA00\n2d1hB00\n1yg2A01\n2nxuA01\n2hivA01\n4ivnA01\n4hz4A02\n1poiB00\n1owaA02\n3mjfA01\n1ldjA06\n5an9F02\n3bvfA00\n5c0yA02\n1b7yB06\n5trdA02\n3r0aA00\n3ucsA00\n2z1qB04\n1fy2A00\n2fjcB00\n4d3pA00\n1v66A00\n2lmzA00\n1xeoA00\n1u9cA00\n2l5qA02\n5tkwA01\n4awxB00\n2d86A01\n2ww2A04\n4fcyB05\n4mf5A02\n3vpdA03\n3lysD00\n5oomT00\n2nnnC00\n2qbyA03\n2x5oA03\n2qf9A01\n1gxqA00\n1z01A01\n4b4uA02\n5j93A00\n4mvkA00\n3bj6B00\n4e70A01\n4a0pA01\n3eo5A01\n3ww9A00\n1q7hA01\n5hjfA00\n3hjhA02\n3topA01\n5nzxA02\n1xkiA00\n3kyaA02\n3tx8A02\n3gb0A02\n5d9vA02\n3l2cA00\n2hc1A00\n3fm3A02\n1s1dA00\n3d9xA03\n2c2nA02\n3ethA01\n5dblA00\n2pwyA01\n1jbwA02\n2ib0A01\n3sbmA02\n2fh5A01\n2gk3A00\n3tqtB01\n2uxwA04\n1lm8V01\n2i5eA02\n3dfgA03\n4p72A06\n4jrfA02\n4wcgA00\n1uzkA02\n2glfA02\n5u56A02\n3fo3A03\n2ia2D01\n2pjpA02\n4wfvA00\n2q9rA01\n5hdwA00\n2ns0A00\n3aosA00\n4ri6A02\n1vl2A03\n3amrA00\n3lapD01\n2a61B00\n2g9wA01\n3f6oB00\n5d7uA00\n3co6C00\n5jscA03\n5hbsA00\n3dkwG02\n4es7A00\n4o3mA04\n4hz2A02\n3uowB01\n3itwB01\n2k4xA01\n2pg4A00\n1v5eA04\n2fftA01\n2zkzC00\n2j16B00\n4nqiD00\n2z99A01\n4n0vA02\n1debB00\n3e97A02\n5j41A02\n2wteA02\n3k1lA01\n3p7nA02\n4a8eA01\n2vdfA00\n3tnlA01\n4kfcB02\n6az1a00\n3tu3B01\n2v79A00\n1p6rA00\n1z70X00\n5jrcA00\n4lwoB02\n1repC02\n2vbuA01\n4o5mC03\n1j30A00\n4eo7A01\n1poiA01\n1a0pA01\n4perB00\n2oh3A01\n3pe0A01\n4ki9A00\n1xr4B01\n4uhtA00\n3hh2D01\n2d74B01\n1x9nA01\n4ejoA00\n5deqB02\n3dplC03\n4s04A02\n2e1nA00\n2a6hF03\n3cuqB02\n2ptrA02\n3ff5A00\n2g7bA00\n2ek5B00\n1v3yA00\n3l7wA00\n1pjxA00\n4bl0B00\n3nyiA01\n4ixaB00\n2isyA01\n1s35A02\n4emeD02\n5d6eA02\n3fpnB00\n6az1E03\n3e8tA00\n1ka8A00\n3kloA02\n3pdiD03\n3hruB01\n5t5xA02\n3fpnA00\n2fnaA03\n1u3dA02\n4agsB04\n1xsvA00\n5gudA02\n2j58A04\n2prvB00\n2cttA01\n3cqnB00\n2fcjC00\n1vraB01\n4o3mA03\n1q7fB00\n4cdnB02\n2vglS00\n1nfvA00\n2b25A01\n1iznB03\n5jgfA02\n1qwdB00\n3q18A02\n1y2mC02\n2fmlA01\n3cdhA00\n3kwoA00\n3l7nA00\n1nb0A00\n2nuiA00\n3aa0B01\n1nnvA01\n3en0C00\n1l9xA00\n4tvrA02\n2cz2A02\n1k78I00\n1zhxA03\n3mmjA02\n3mgkB00\n1ku9B01\n3ifeA02\n3f8mA01\n4b8xB00\n3oopA01\n2lclA00\n2x46A00\n2gigB00\n3im9A02\n3w3sA01\n5xdcA03\n2m1xA00\n2ga1A01\n1lwbA00\n2mc3A00\n3kwlA04\n4c4aA02\n3ajqA00\n4cgyA02\n4cy9A00\n2r0bA00\n5gqtA01\n1wyrA00\n1jeqA05\n4kibA01\n2rfqC03\n3edpA01\n3w6kC00\n1a04A02\n3broD00\n1np7A02\n2heoA00\n1wthD03\n4e4tB01\n3k6mC02\n2ltjA00\n6az1N00\n3h1nA02\n2pspA02\n2kobA01\n3pn3A00\n1nktA04\n2g7uA01\n3u04A00\n4mq0A02\n4xfjA03\n1ijqA01\n4ntkA00\n5xm5A00\n1u2mB00\n2pokA02\n1apjA00\n3b02A02\n3cddB03\n5t17A00\n2ve8D01\n3kp7A00\n1ywfA00\n2uxwA01\n2fzfA01\n2elhA01\n3tzyA02\n3hrpA02\n5cqgA02\n3m6nC02\n1hqoA02\n1hciA02\n1t0fA02\n3iwfB00\n5i41B00\n2nynA02\n2ahuA02\n4eqqA02\n4uu3B00\n2a5yC03\n2q5wE00\n4g0iA02\n2b0lC00\n3io1A02\n3b5iA02\n3zl8A03\n4dimA01\n4q5qA02\n5cyvA00\n2pybA00\n4dbgB01\n5dd8A00\n1ldjA07\n5mc7A00\n1wfxA01\n4nkbB02\n3axsA02\n2ma3A00\n3qp6A02\n1k90C03\n1z05A01\n3vmaA03\n1t0bA00\n2jbyA00\n1rz4A02\n5h9nA00\n4m9sB04\n5ih3D02\n1w5rA02\n3ihsA00\n5ed4A02\n3efeC00\n5trdA01\n3eyiB00\n2e7zA03\n3pdiA02\n2l48A00\n1wruA02\n1u2wD00\n2zcwA02\n1nltA02\n4gpvA02\n4fzbA02\n4d0pA02\n1kqfA03\n2kkvA01\n4kt5C00\n2k4jA00\n1wruA03\n3e3vA02\n2gyqA00\n4pzjA00\n5dvwA00\n1svbA01\n3kfwX03\n3tqeA02\n4p55B00\n2spcA00\n3l4eA00\n2l0jA00\n1oywA03\n2ethA00\n2yykA03\n4oa3A00\n1o7fA02\n4nqwA02\n1vhqB00\n3pfoA02\n2cm2A00\n5sy4A00\n1cf7B00\n5l87A00\n2ipqX01\n3fijC00\n1t98A01\n1td6A03\n3jtgA01\n3ihuA01\n2mqdA00\n3tduD00\n1hstA00\n1z67A00\n1yt3A03\n2kr6A01\n4c6sA00\n2c46B00\n5ffdA00\n3jqoB00\n1j9iA00\n2r85A01\n5ggeA00\n1u5pA01\n4btfA01\n3pptA00\n2p0aA01\n1ho8A02\n1xd7A00\n5an9H00\n2q12A00\n2ff4A01\n2g64A00\n2yv9B02\n1lfwA02\n4fx0A00\n5erqA02\n4yiiA00\n1dnpA02\n4cfsA02\n4gudB00\n2b8iA00\n2ghsA00\n1rp3B02\n3vatA02\n3zgxC00\n2pjpA01\n2oasA01\n2p84A02\n1i4uB00\n4bhbA02\n1yuzB01\n4oo2A02\n3oipA01\n6blbA03\n3f8bA00\n2e12A00\n1nrjA00\n3kbgA02\n1u2mA00\n1r1tA00\n3zm6A03\n1dy5A00\n5iceA01\n2ckfC01\n2hoeA01\n2yrnA01\n3s4lA00\n1h5wB02\n4iwkA00\n3mb5A01\n3v0dA01\n3ulqB00\n3f6vA00\n1g8kA03\n1g4wR02\n1sg2B00\n2ox7A02\n1jadA00\n1w78A02\n1tw9F02\n1zzwA00\n3cneA00\n2de6A01\n2xigA01\n5d90B00\n2gwrA02\n3rpfA00\n4n9jA02\n2cx0A01\n1wqjB01\n2cf7A00\n4bvxA02\n2oqgC00\n4tv7D01\n4xijA01\n4m98A01\n3d2nA00\n4mmoA02\n4asnA00\n1p4wA00\n1wudA00\n2ckkA02\n3pvtB00\n2fwvA00\n4gd3Q02\n3lkmA02\n3ub2A00\n2q2eA01\n2wa7A02\n4yt2A02\n2kj5A00\n4cydB02\n2xubA02\n3tqnA01\n2xrnB01\n2d1lA00\n3gwzA01\n1u8vB03\n3g3zA02\n4yaaA00\n1u5tB01\n1e8cB03\n2r7dA01\n2vxzA01\n1lvaA04\n2ikdA00\n4x28C03\n3u2rA00\n1vprA02\n3wtsC00\n4cybD00\n2zj2A03\n2rldA00\n1npyA01\n4guzA02\n1gsaA01\n2x4hA00\n4nn5B01\n5xxuK00\n4abxC01\n3hrzA06\n5bvrA01\n3df8A00\n4yifF00\n1bm9A00\n3rbtA02\n3c18A03\n2kc5A01\n2ds5A00\n1w4mA00\n5cvrA02\n4gggA00\n4kh7B02\n4kmfA00\n2f1lA01\n3ha4B00\n2ymaA00\n2ijlB00\n1mdcA00\n5dmhB02\n1oheA01\n4pcqA01\n2oc5A01\n1kjqA01\n2f46A00\n4ewtA02\n4rkkA02\n3t8rA00\n1musA01\n4bxuA00\n2rhsD06\n4gciA02\n3dp7B01\n5mpoC00\n4hf0B00\n2j91C02\n2ddhA03\n1lfwA03\n4llfD02\n3szpA01\n4iiwA01\n1i7dA02\n5dymA00\n3jysA03\n2z1dB01\n3r0qA02\n2i76B02\n2rq5A00\n1vprA03\n2q4zA02\n3vepH00\n5k8pA02\n1sd4A01\n5g3mA00\n3cymA03\n4a0zA01\n2c0gA02\n3g5kA00\n4dw1A02\n1vq8A02\n5fhiA02\n2w7tA00\n1p4xA02\n2hq4A00\n3uulA00\n2rdcA00\n4dthA02\n4qbuA03\n1c1dA01\n2nv0A00\n3r8yA01\n2hk9C01\n2oc3A00\n1y0kA00\n4lerA03\n3bz6A01\n4innA00\n2wanA01\n1xgsA02\n1xmkA00\n2o62A01\n1s35A01\n2ahuA01\n5x8tT00\n2ra6C00\n3gpvA00\n1cg2A02\n3d5lA03\n3oyyA01\n4c12A03\n2lsoA00\n3mkhA03\n2xqyA03\n3hl1B01\n1je8E00\n2jtvA00\n2khqA01\n2zdhA01\n3f8mB01\n3zxcB00\n4ueyA00\n2rjbD00\n1a9xB02\n2n93A00\n2khvA01\n3lsoA01\n2ysrA00\n3lx3A00\n4j6eA01\n1uunA02\n4reoA01\n2fswA00\n2f7vA02\n1eu1A02\n2rrfA00\n2vz4A00\n2p9bA02\n2kvdA02\n2g8lA03\n2x5hA00\n2p4wA01\n1tj7A02\n4ptsB02\n5v8zC00\n3unvA02\n4k28A01\n3lypA02\n1yguA02\n1gkmA02\n3noqA00\n1rt8A02\n6az1T02\n1wpuA00\n1nm2A01\n2cfmA01\n3n0aA01\n1cunA02\n2w82A02\n3ckcA03\n2dg1C00\n4qdiA03\n3m3pA00\n1lkeA00\n5eriA00\n1nhyA02\n1wl8A00\n1r8iA00\n4wiqA02\n4jqfA02\n1ig6A00\n4ge1C00\n2e1mC01\n2p4oA01\n2qfaB00\n5cehA02\n2vglM01\n2pspA01\n2nraC01\n3drxB03\n3zmdA00\n1g8kC01\n1j27A00\n3f31A00\n1rx0A03\n1mrzB02\n3hugE00\n1vl2B03\n1fpzC00\n4zdjA02\n2htsA00\n2jz7A00\n4b09B02\n2va0B00\n3cuqA03\n4g6dA00\n2kw6A00\n2bv6A00\n3wg9B01\n4hr3A03\n3vrpA01\n3nqiA02\n1r6tA01\n2kdsA01\n5forA00\n1jvnA01\n2xovA00\n4oddB00\n1yt3A02\n3q6kA00\n4pxyA00\n3ke2B00\n2pq8A03\n1bkbA01\n5kvrA00\n2ikeA00\n2jvwA01\n4q7aC02\n2yjeM00\n1k78A01\n1ydxA02\n5gjvE00\n3q4oA00\n2dyiA01\n2yg2B00\n1xriA00\n2c4jA02\n3nivC02\n2fokA02\n1jmuB02\n3k9tA03\n2kuyA00\n4hlyA00\n2hnhA03\n3pe0A02\n1lddA00\n1quuA02\n3la7B02\n3hlkA01\n1aoaA02\n2b0jA02\n4qqdA02\n4q2cA01\n2abwA00\n1ia9A02\n3nrwA00\n1z6oA00\n3hh0A01\n1ft9A02\n3r2qA02\n4wpcA00\n2xjaD03\n3hsrA00\n2hr3D02\n1hsjB03\n2i6jA00\n3olmA01\n2p5vA01\n"
  },
  {
    "path": "alphafold_casp13/train_domains.txt",
    "content": "1bxyA00\n3r5xD02\n1ib8A02\n1xzzA00\n4it7A00\n2zpaA02\n2hv2A01\n2uxwA02\n4n5mA00\n2jbaA00\n2ymsA00\n4c2lA00\n4wwoA01\n2jvoA00\n1wluA00\n2haxA02\n3aowA01\n4u3vA00\n3ilhA00\n2oyhE01\n2lcqA01\n4ap5A02\n3exnA00\n2fl7A00\n3zq4C03\n2yjgA02\n1n93X02\n2ou5A00\n4aibA01\n3tl8F00\n1ntyA02\n1lssA00\n1qxyA00\n2g3bA00\n1vs0A03\n4neuB00\n6em3O01\n5c11A00\n3pu6A00\n5kvgH02\n2j42A01\n2dgbA00\n2hsjD00\n5ljlA00\n3h09A04\n1vefA01\n2xdhA00\n3fbgA01\n3c8vA02\n3vs8H00\n3caiA01\n3rotA01\n2ld7A00\n2d4aD01\n5aqmD00\n5mp0D00\n3lo7B01\n3lkeB00\n6b6uB01\n4me2A00\n3c3mA00\n3h74A00\n4oonA02\n3bl4A02\n2ztdA03\n4euoA02\n4dv8A01\n2nx4C00\n4yy8A02\n4jp6A00\n1eg2A00\n3slkA01\n2g81I00\n4b8vA03\n4ofzA03\n3i45A02\n2d9qB01\n3rbyA02\n2hoqA01\n2q6kA02\n4feyA02\n2lvlA01\n4b6hA00\n5am2A02\n1lvkA04\n2ztuB00\n3g7sB02\n4usaA03\n2j3tD01\n1xdnA01\n1wxxA01\n3fgeA01\n2qkdA03\n1u0tB01\n2qb7A01\n3m4pA01\n4c91A04\n1kcmA00\n3hrzC01\n4fx5A03\n3e0jC01\n2bolA03\n2f4eB00\n4ms4A01\n1vi6C01\n2b1eA03\n2bi7A01\n1zzgA01\n3rfqC00\n1so2A00\n3gnfB06\n4uwjA02\n2mf9A00\n4up0A00\n3u49D00\n3k1rB00\n2w5vA00\n3etvA02\n3ufcX01\n3arxA01\n4kyoD00\n2icwG02\n3bkbA01\n4wuyA03\n3tszA03\n1x0gA00\n4b7cA01\n3mviA00\n2jwaA00\n4qhqA02\n1tsjA00\n1yukB01\n3kz9D00\n1l7mA02\n2jgpA03\n5bqnA02\n3odtA00\n4hnoA00\n3h46O01\n3r89A00\n3c96A02\n3jslA02\n2eboA00\n2gumC03\n3hphB01\n2r5wB02\n5bxrA02\n5hxgB00\n2zhjA01\n1r6xA01\n1xszA02\n3co8A01\n3shqA02\n2q8aA03\n3usbB00\n1xq8A00\n1dl5A02\n4qjvB00\n3d2fA05\n1q6zA02\n3cvoA00\n2hhiA02\n3bjbD00\n2fd6U03\n1m6bB04\n3fvvA01\n3k1hA00\n1sz9C00\n4a2aA02\n5by5A00\n2xikA01\n2o0rA02\n1oi0A00\n4j6eA02\n5cclA01\n3lgiA02\n1oiaA00\n3h5tA03\n1ccwB02\n3zukA02\n3vpsB02\n4a3zA00\n2h5gB01\n3gveA00\n2c4bA00\n3ho7A01\n2yzrC00\n1kw4A00\n1pvmA00\n3jb9L00\n1m2kA02\n2rsoA00\n3d9yA00\n2v9tA00\n3k7dA01\n4m7oA01\n2fvyA02\n4iupA02\n3fk9A00\n3tdgA01\n2rsvA00\n2d73A01\n2wnpF01\n1svbA04\n2w2jA00\n1z3iX03\n3ha9A00\n4mndA02\n3rtxA02\n2vchA01\n1r30A00\n1ic8A01\n4ww8D00\n4g9mB00\n3aekB04\n4jquB00\n1y56A01\n3jr7A01\n5a3vA02\n2lckA00\n1qfhA01\n1vi4A00\n3w4rA01\n2lwpA00\n3kzgA01\n5iqaA01\n3wvsA00\n1nj8A03\n3aupD02\n3bghB01\n2iw5B00\n3h8uA00\n1n1cB02\n1l5aA01\n5eokA01\n1pcxA02\n2bdrA00\n2bujB01\n4behA01\n1w36D02\n1jxzC02\n1pjqA02\n2qwvA00\n1t3kA00\n4u85A01\n2xyqA00\n3f9mA02\n5h80B03\n3jtpA00\n5okaA00\n1lfdA00\n4uhoA01\n1mmdA06\n1yozA00\n1u84A00\n3tefA02\n3h0uB00\n1xs0A00\n4oxxA00\n1tuhA00\n4igbB02\n1ym5A01\n1weqA00\n3dv8A01\n5aoxE00\n4k29B00\n3o6wA01\n4l4hA03\n1kxlA00\n1tkeA03\n1k20A02\n3rhgA00\n3sbtB02\n1pugB00\n3upuA01\n3crnA00\n2dirA01\n4ft4B01\n3pguA00\n1wwmA00\n4airB01\n1jy5A00\n4m8dA00\n3qx3B03\n1ezjA01\n4v1xA02\n3nynA02\n3akeA00\n1z0sA01\n2lxfA00\n2j6bA00\n1vq8W01\n3df6B00\n5e9nA02\n4xotA03\n2pn6A02\n1t7vA01\n1j6uA02\n3ozbA00\n1t5oA02\n1lciA02\n3rhzA01\n4f42A00\n3kxeC01\n2nxpB00\n1vf6C00\n4gn2A00\n1exzB00\n4uxuA00\n1n3kA00\n5e16A00\n1bd8A00\n1nfpA00\n4ckkB02\n3nkhA00\n2bhwA01\n3qnmA02\n1hwtD02\n1c8uA02\n5mf6A01\n2o5nB01\n3jqwC00\n4nekA02\n5l3sB02\n5an9G00\n1j9jA00\n2q8pA02\n1hqsA00\n1d2mA02\n2vqeK00\n3ch4B00\n1zccA00\n3zwcA03\n4bqnA02\n1bymA00\n3f70A02\n3szaA01\n1rqgA02\n1wlgA02\n3venA03\n2i3dB00\n2a1sA02\n3t4nA01\n3of4A00\n4pqgA03\n4lupA00\n4yecA01\n3hxlA04\n3qavA01\n2jjqA03\n2zgyA02\n3bleA00\n3nuhB03\n1m9oA00\n2wagA00\n4fh0A00\n2vjvA00\n2xcbA00\n4mzaA00\n1sl6A00\n2xnxM00\n4xgiA03\n5ktmA01\n4oagB02\n3oz2A02\n3pidA02\n1gm5A03\n1ceuA00\n2oayA01\n1hyhC02\n4fixA01\n3gw6F01\n2h88A03\n4d79A00\n2vm1C01\n1h8uB00\n2eh3A02\n3ssoA01\n4aa9A01\n3whpA01\n5jybA02\n3pv7A02\n1vpaA00\n3pmqA02\n3czgA01\n1yu0A02\n1t9hA03\n4ihmA00\n4dz1A02\n1w85I00\n4cd5A00\n4fzlA02\n3gdcA02\n4bhrA00\n2ae0X01\n3uw3B01\n2c0cA02\n1v9dA01\n1gp6A00\n2jk1A00\n5lxfA00\n5jxgA02\n1ibyA00\n5dt9A03\n3rlfG01\n2i33B00\n4p0tB00\n4rngC00\n1x3kA01\n2c78A01\n3fg2P03\n1y8qB01\n2fzlA02\n1ogoX02\n2rjlA01\n2i49A01\n3aqlA02\n3ktbA00\n1a8oA00\n1vfrA00\n1rkuA01\n3twyA00\n3kjjB00\n2wz8A00\n1xqiA00\n2dmkA01\n2f09A00\n5d22B00\n1cd9D01\n5aunB01\n3ll3B01\n1chcA00\n4h63H01\n1n7zA02\n1r2jA01\n5flmH01\n3b9fI02\n4hzuS00\n3x1lB02\n1ci9A00\n1vomA04\n6az1c00\n1qf8A01\n4egwA01\n1uj8A00\n3m0zD00\n2qiyA00\n4cbbA02\n4wjvD00\n4ewfA00\n2fywA02\n3u7iA00\n3hhpA01\n2z14A00\n4ag7A01\n2essA01\n3g7gH00\n1yyhB00\n3ci0J02\n1vqsA00\n5e8vA02\n2pbeA01\n2rprA00\n2gw6A01\n5cxbA02\n2ww2A03\n2ka6B00\n3h96C00\n1m0wA04\n5mu9A02\n3fidA00\n2kmsA02\n2zbkB03\n2biiA02\n1lqaA00\n1yt5A02\n3vxmE01\n3s1tA01\n4ilvB00\n1cgmE00\n3u8vA00\n2v76B00\n2gs8A01\n4y60C00\n3arxA02\n2jxwA00\n3dh1B00\n4f9cA02\n2mjkA00\n5nt7B00\n2lopA00\n1e4uA00\n3l1wA00\n2p65A00\n2je6B01\n1pl4A02\n3c6xA00\n5dltA02\n2pqcA02\n5e68A00\n3frrA00\n4at7B02\n4a15A03\n1peaA01\n3fnbA01\n4s1vB01\n3cc1B01\n3b0zB00\n4gw9B03\n3v5uA01\n1wgoA01\n3iwgA01\n4rudA00\n4flaC00\n2kigA00\n4k89A01\n2hdwA02\n1x38A02\n4pqhA01\n2v7kA01\n1jvrA00\n3f5oA00\n4tw1B00\n5k2lA00\n5tpkA01\n2pjsA01\n1fl0A00\n4l6wA02\n1bazC00\n4gr5C01\n1u5uA00\n4kikB02\n1r3hA01\n1fjeB01\n2gmlA02\n1vb3A03\n3hssA00\n1vknA01\n2q9oA01\n2p01A02\n4i3mA00\n4r36A02\n1ybxA00\n3bzcA04\n5efzC00\n2xdpA01\n5ailB00\n5dudC02\n2al6A03\n3bulA04\n4i6vA02\n1w3dA00\n3ni7A00\n1dnlA00\n3opfB01\n4gnxA00\n3i33A04\n2o57A02\n5b5eE00\n4xi1B00\n3in6A02\n4r6uA03\n2vrqA02\n2lsmA00\n3l09A03\n2hvrA03\n3khkB01\n1wxvA01\n3i8nB00\n5a9tA01\n2g0qA02\n3vzbB02\n5f28C00\n3gi1B01\n3o1iD02\n2gtjA01\n4ep8C01\n2bkwA01\n3lssA02\n5p9iA02\n4bofA02\n2d5mA00\n4z6mA02\n1r6uB02\n3c2qA01\n1ny8A00\n3pl5A01\n3vgiA00\n3tvjB02\n2x8gA01\n3czqC00\n3sqzA01\n4pw8D01\n3thaB00\n2c4fT00\n3e9kA01\n4eskC00\n1urqB00\n1sxjE01\n1xdpA03\n1apyB00\n2dm0A01\n2fsqA00\n1vecA00\n3c7tA01\n1zy9A02\n3kojB00\n1oyxA01\n1zc1A02\n3mvuA00\n1fx7B03\n3outA02\n2rfrA00\n4pj2C00\n2o71A00\n2y1bA00\n2ghjA01\n1d0qA00\n1dciA02\n4ecfA01\n1uheA00\n1gzsB00\n4wveA00\n4nmwA00\n3bwvA02\n3qvsA01\n4e6fA00\n4losA02\n4dqaA02\n3rwbA00\n5oswA05\n3kdeC01\n4ar9A01\n4g55A00\n1zu0A03\n3elfA00\n3mp7A00\n2qsfX01\n3qc5X01\n2pqrC00\n4kc0A01\n2zxdA01\n1lqlA02\n2wf7A01\n4ejqB01\n3u5vA01\n1xtzA02\n2h6eA02\n4cbpB02\n3lw6A00\n2oa5A01\n2ownA00\n2r01A01\n4mcjG00\n5du9B02\n3dteA01\n3ltoA01\n2vrbA02\n1ztcA00\n2lq3A01\n2akoA00\n2wdqA04\n2zp1A02\n2n50A00\n2arrA02\n2fxqA01\n4p9iA00\n3s35X00\n3kb1A01\n5wqjA01\n2dp9A01\n3hzbC00\n4u36A00\n1t94B04\n2qvwC06\n4krgA02\n3bjqJ00\n3hhfA02\n5ufhA02\n3fghA00\n1o50A00\n3me5A02\n3lvfP01\n3nrkA02\n1xaiA02\n3nqpA00\n2oiwA00\n5hsxB00\n2yhcA00\n2nnuA02\n3r1iB00\n2gtvX00\n1snyA00\n1yrlB01\n1txkA01\n3vpgA02\n4aazA00\n4kkzC02\n2okxA03\n5u9cC02\n4jylA02\n3q1cA01\n2k2qB00\n4yivA01\n2hhjB00\n3pj0A02\n2yg9A02\n3zytA00\n2fsrA00\n2heuA02\n2gjlA00\n3p6iA00\n3h7jA01\n2qv7A01\n3dxyA00\n2w3qA01\n5mj3A02\n3a57A00\n1wn1A01\n4litA02\n1uuqA00\n4xbmA01\n3euhC02\n3kspA00\n2olsA02\n4ii1A02\n2ougA00\n4ylkA01\n2hiyB01\n2hkeB01\n3f6cA00\n2p0wA02\n2v3sA00\n4bwpA03\n1v1hA02\n1lfpA03\n2egmA00\n5o5jR00\n2wiiC03\n1o0sA02\n3a09A02\n2r40D00\n1wgvA00\n4wl0A01\n2b5dX02\n1unnC00\n2lqiB00\n4u8uN01\n5le5B00\n5fhkA00\n4aylA00\n1x54A02\n3eh2B04\n3ciaA03\n3cjxA01\n2jrrA01\n2m2kA00\n4je5C00\n1ov3A02\n3moiA01\n2v8hA01\n4m5sA00\n5teeA01\n3uimA01\n2ymvA02\n4otdA02\n2xz0D00\n1w96A03\n3a32A01\n3ec8A00\n3kf6B00\n2hzaA01\n2pyfA02\n4j6fA02\n4nwbA01\n1ybfA00\n2jhpA02\n2kjrA01\n2m89A00\n2ichB02\n3h79A00\n3nv0A00\n4aybF01\n3mi0F00\n2ecfA01\n2cyeC00\n2fm9A00\n1nnlB02\n3pduA02\n1dn0D02\n1vp2A00\n2clyC01\n2icsA01\n2h62C00\n2p2sA01\n1rjmA02\n4rwhA00\n3dbyL00\n3p26B02\n3ugfB02\n3hwcA01\n3l0zC00\n1vhoA02\n5cegD00\n2lkzA01\n3lhsA01\n1vq8V00\n2bryA01\n2hkuB00\n1qu3A05\n3rbtD01\n2pkdA00\n1vj7B01\n3svtA00\n3w6gA02\n4iupB01\n4idhA01\n2yuxA01\n3fedA03\n1tk7A02\n2ynmD02\n5ix8A01\n3rheA00\n4c5eC02\n3lpzA01\n4by2B00\n2m80A00\n1cg5A00\n3b5mA01\n4po5B00\n1k2eA00\n1nm2A02\n4qrvA00\n3f6kA03\n3me4B02\n3khtA00\n3r62A02\n3phuA02\n1vhkC02\n2le1A00\n1sefA02\n3c9pA00\n2xzlA03\n1m22A00\n3dcdA00\n3igmA00\n3g1wA01\n1rxtC01\n3tfoB00\n5kvcA00\n3oq3B02\n1r61A00\n1vbiA01\n3q0hB00\n4a6rB02\n1p9gA00\n2i39B00\n3smjA00\n2oafB00\n3evzA01\n2d1sA01\n2eplX01\n4lg9A00\n4ndoB00\n2mhkA02\n2iojA00\n1h59B00\n5n4tA00\n2xi8A00\n2ra1A03\n4kd6A00\n4uhbA00\n4n0vA01\n2c81A01\n1nzyA01\n2i8dA01\n4c1nA01\n4mhxA01\n4jd9G00\n5w3xD01\n4hh2A02\n3oggA02\n3adjA00\n5fbkB01\n2zzeA05\n2pfcA00\n3rysB00\n3h78B01\n1miwA04\n1ylxA00\n5e6zC01\n3v96A01\n2kuqA00\n4l0mA00\n5a1iA03\n4rk0A02\n2qsdA01\n3zhiA00\n3i8bA02\n3smvA02\n5b1aM00\n5gmdA01\n2ppxA00\n4m02A02\n5tr9A01\n1l1qA00\n1eptA00\n3lvyE01\n5dm6100\n1hn0A02\n2hr2A00\n2vwxA01\n1x74A05\n2mrlA00\n4apxB02\n2e29A01\n4eaeA00\n3nphB00\n2plrA00\n5d1vA00\n5b66H01\n2qp2A02\n1o4uA01\n4bb7B00\n3esuF02\n1o70A01\n4k7rA02\n1h5wB03\n4a64C03\n4nwyC00\n4k12A00\n2onfA01\n1xkpB00\n3m71A00\n2fb5A01\n1iabA00\n4zevA02\n5mtvA02\n2px0A01\n4eoyB00\n3gmsA01\n2q1fA04\n4jx0A01\n5jnmA01\n2q3xA00\n4mdbA00\n4rjwA00\n4p7oB00\n3uiyA00\n1y7pB02\n5vi4A00\n4jemA00\n1nsjA00\n3c4rA00\n4bhdA01\n3kyfA02\n4fytA03\n2ez2A02\n3m3hA00\n3gygC02\n2b30A02\n3stjA01\n4dncD00\n1svbA02\n3kydB02\n1mspB00\n5b08A00\n4w1tC02\n3bexA01\n3cddF01\n2hq9B00\n2wdqD00\n3qfwA01\n5ntdC01\n3uogA01\n4gj4B00\n2kk4A00\n3h41A02\n5m5eB02\n3gwaA02\n4mb8D00\n3fjsC00\n5e10A01\n3ni8A00\n2j05A00\n1mkkB00\n2zxrA04\n4jcmA01\n1rlhA02\n3tvrA00\n2kk8A01\n4avrA00\n5hy0A01\n3lcrB00\n1s14B00\n1sgwA00\n1i5pA01\n1g8kA01\n4qf3A00\n3d0kB00\n2a6qA01\n4xybA01\n4dqwA02\n3kevA02\n2xvoB00\n1jyhA00\n4rm4A00\n1rc6A00\n4hi8A00\n2k5hA01\n2p10C01\n1thxA00\n1tr8A01\n3nzeA00\n4hvmD02\n2p3hA00\n3d3bJ00\n2kiqA00\n4z2zB00\n4zohA01\n2z9vA01\n6bogA02\n2xusA00\n3wqbA02\n1eakA01\n3u52E01\n5b66j00\n3k9oA02\n1dl6A00\n2awnD01\n3zqsA01\n2pa2A00\n1jeyA04\n4hkuB00\n1dlfH00\n5macE01\n2cunA01\n4oelA02\n2yiuC01\n4egjD02\n4zbdA01\n1qe0A02\n1lj8A01\n4frwA02\n3sd2A01\n2bbrA02\n2hlcA01\n5b2lA02\n2v8fA00\n3isxA01\n1tqyA01\n2owaA01\n2digA00\n3p9zA01\n4jvtA02\n4hwvB00\n3iu0A00\n2q1sA02\n3s5oA00\n4m9pA02\n4ag1A02\n3hi7B02\n5fpoA01\n3n7zB03\n3mzfA01\n3p3yA01\n5fi3A01\n1m4uA02\n5c5cA02\n3bwhA01\n1kxpD03\n2k4vA00\n3g7dA01\n3f5vA00\n2cveA02\n4dyeA01\n2bmxA00\n1gheA00\n3l00A01\n2lseA00\n2pgnA03\n3e8pA00\n3urzA00\n2hyxA01\n5f9fA02\n3dmeA02\n1rj8A00\n2qecA00\n5m3bB01\n3milB00\n1weeA00\n2aehA03\n1kl9A01\n4dooA01\n1g9rA00\n2rkcA00\n2bbeA00\n4f14A00\n5buvB00\n3h6eB01\n3lstA02\n4jdmC02\n2ztgA01\n5uv2A01\n1cb8A02\n3nngA00\n2ieeA02\n4uybA02\n5tprA02\n4my0A02\n3seiB02\n4c81A00\n3cqjA00\n5phlA00\n1zx5A01\n3mcbA00\n1cvjH02\n4b2oA00\n5jicA02\n2h0aA01\n3bwuC02\n1zl0B02\n2otmA00\n3k01A02\n1wp1B01\n3ry3A02\n1a6jB00\n4g68A02\n3t69A01\n3edvA02\n3h4tA02\n4irnA02\n3tmoA01\n3luuA00\n2bl0A00\n5br4A02\n2cx0A02\n3lafA01\n3anwB00\n4hz2A01\n3bjsA02\n3hsiA02\n4zg6A04\n2cunA02\n2l9fA00\n1n73D00\n4ua8A02\n1s8nA01\n4wcjA00\n3hn2B01\n5afwA01\n1ridA03\n4a94C00\n4mouA01\n2qzsA01\n1vlmA00\n1ve2A01\n2zgyA01\n4hh5A00\n3nhmA00\n4oi4C01\n3ialA01\n2gpeD01\n4gs5A02\n3bc8A03\n6bvcA00\n1cwvA03\n4zy9A00\n1oc7A00\n3t66A01\n3dzmB00\n3o7aA00\n2hzgA02\n2vimA00\n4rm7A01\n3og6A00\n2ddzE00\n4nphA01\n1l8qA03\n1wohA00\n3rmrB01\n1w4sA00\n4py6C00\n2do8A01\n4knuA01\n3biqA02\n2z4uA01\n1nklA00\n4u2mA01\n4fwvA02\n1qhdA01\n4yiwB01\n3udcA03\n3i2vA00\n2mq8A00\n4g65B02\n2dwuA02\n2durB01\n2y1vA01\n3e1tA02\n1xocA01\n2vtfA03\n4qclA05\n3tfzB00\n1qcsA01\n2i4lB02\n2rioA02\n5c3pD00\n3qwzA02\n3a8tA01\n4yznA02\n2cuaB00\n1a0iA02\n3ix0B01\n1ug7A00\n2cwqA00\n4es6A02\n5bmnA03\n2zt5A03\n3gaaB00\n4es8B02\n1x19A01\n3r4rA02\n1xp8A02\n3bo7A00\n4di9A00\n5aigA00\n1srqC02\n5lomA02\n1veeA00\n4h8aA01\n4twgC00\n2qjvA01\n2qkwB02\n2p13A00\n4ofqA02\n4hz9B00\n5ng9A01\n2y8dA02\n1wruA01\n2rijA03\n2zzvA00\n4pfyA03\n1nkpD00\n2kyuA00\n2al3A00\n3c6mC01\n2etvA02\n1vq8Z00\n5cu7A00\n3u5nA01\n2q35A02\n2oqoA00\n3d9aL01\n3sumB00\n2f20B00\n2kskA00\n1c4kA03\n2xtcA00\n3mx3A01\n3dlqR01\n5cm7A02\n2heuB01\n3fi7A01\n5jg7B00\n1wdnA01\n1pp9T00\n2dibA01\n3cu5B00\n1ro2A02\n1tvsA00\n3hj3A01\n3ga8A00\n4tr6A01\n2ijrA01\n4muvA00\n1dfaA03\n2r3sA03\n4tq1A01\n2m7oA00\n3c8vA01\n2cklB01\n3kihD00\n2dreA00\n1hymA00\n1l3iA00\n3ovgA00\n1m4uA01\n4iv9A03\n3tu1A00\n2wzoA01\n1gaxA02\n2gxfA00\n4hy4B00\n1v32A00\n3b21A00\n4l3aA03\n3hn5A01\n3c7mA00\n2gy5A02\n5u7aA00\n2c4eA00\n4bkyA00\n2cgqA00\n1jfiA00\n3ry0A00\n3h1nB01\n1o4tA00\n1e1hB01\n1wd3A02\n1hj8A02\n4e3qA02\n2q1fA01\n4b8cD03\n3lccA00\n5fvjA00\n4mewA01\n4l8nA03\n2po3A02\n5y9qA00\n2rf4C01\n3a2vC02\n1rfhA01\n1wlfA01\n2acmB00\n2pmaA01\n3kqxL01\n3so5B00\n3qj4A02\n3nx3A01\n1f97A02\n2f4mB00\n3kalA03\n4n30A00\n3vwnX01\n1b25A02\n1up6E02\n2fjrA01\n3fjyA02\n1ttnA01\n4gnrA01\n2v3uA02\n1yueA03\n3i9xA00\n1vq8X00\n4hfxC00\n2ovsA00\n4i3fA00\n1uurA04\n4mzyA01\n3smzA01\n1o6vA02\n3qslA02\n2gukA00\n3w1zD00\n3thrA02\n1n7oA03\n2j6lA01\n4b21A02\n2v8pA02\n3hh2D04\n3ba1A01\n1u57A00\n2a9uA01\n3gd6A01\n4iqnC00\n3zn6A02\n3hc7A01\n1zpvB00\n1vkyB02\n2m4mA00\n1r6dA01\n4isbA01\n1g1cA00\n4pchB00\n1pycA00\n2jz8A00\n4x9tA02\n2grgA01\n2z3zA01\n2bc0A03\n2gsvB00\n1zelA01\n1zb9A01\n3r1xB01\n5agrA00\n1whsB02\n5kazA00\n3a7fA01\n3wh1A02\n1e9gB00\n1zdnA00\n4iysA00\n1qf8A02\n4ywjA01\n2oizH00\n4ip8A00\n3m7gA01\n1moeA02\n3g7uA02\n3ozqA02\n2qryA02\n3k0wA01\n3sqnB04\n1rmgA00\n3ceyB02\n2egaA00\n2i5eA01\n2cr7A01\n3ezyA01\n2obdA01\n4xk2B00\n1jp4A01\n4ckbA01\n3l5oA02\n2p4zA00\n4j2gA00\n4hamA02\n5is2A02\n5m3oA01\n2asuB01\n2gf6A00\n3frhA01\n2l1qA00\n4zsiB00\n5jbxA02\n4igvA00\n4kkuA02\n3ec4B00\n2azeB00\n3gzrB00\n5kw6A02\n4u72A01\n2gwgA00\n4u5wA00\n1khtB00\n1zauA01\n4eadA03\n1wy5A02\n2xqyA02\n1v0wA02\n4je1B00\n1fcjA01\n3tlaA02\n2kaaA00\n3fbzA01\n4bjmC00\n3m2wA02\n1r0vA02\n1mdyA00\n4lg3A02\n1wueB01\n3floB00\n1dt9A03\n2i87A03\n5ji2E02\n3s1sA01\n2d29A01\n2oxgA00\n4euyA00\n2v33A00\n4bzaA02\n4plzA02\n4zrmA01\n2pq8A01\n1ohhG00\n4fvmA08\n1v5vA03\n3omlA01\n1whtA00\n3qkxB00\n5dx6B03\n3uogA02\n2ltrA00\n1jthA00\n1gvpA00\n1ej0A00\n3itqA01\n1cwvA02\n3nzbX00\n1zr6A03\n3ie7A00\n2mpkA00\n2r9qC01\n2lxeA01\n1mzpA02\n3bd2A00\n5f7cA02\n3ufiA02\n1lnsA02\n3rjoA02\n3q31A00\n2jx2A00\n5m33B00\n4yt2A01\n3i9v400\n3sjaC00\n4hg0A01\n2iqcA00\n2yuwA01\n2fpnA01\n2cdcA01\n5dp2A01\n4eyeA01\n1eigA00\n2w02B01\n1lwuB03\n2my5A00\n2rkvA01\n2vqeM02\n1pl5A00\n3ntkB01\n3lqmA01\n3g16B00\n4kqcA02\n2g2cA00\n4h3tA02\n1dkgB02\n1vyiA00\n2qihA00\n5femA03\n5a04A01\n1sr8A03\n2ww4A02\n4l0rB00\n3tc5A01\n3kc2A02\n2h1cA00\n3f9xD00\n1ez3A00\n1vrbD01\n4dq5B00\n4u7tD00\n5d5pC01\n3fx7A00\n3aslA00\n2nn5A00\n3pt3B00\n1gpjA02\n2y4yA00\n1oq1B00\n1zcjA03\n4rs6A01\n4o1hA00\n3bf0C03\n1t3qC02\n2z8fB02\n2bh1A02\n6bk7A02\n2e0gA00\n1u7gA00\n1nu4A00\n1qgkB00\n2bjiA01\n4j8lA01\n5jajA03\n1eg5B01\n4mx6A00\n2rk5A00\n3vm9A01\n2ja2A03\n2mp1A00\n1bg6A02\n4gxbA03\n1qsmD00\n1hfeS00\n2zhjA02\n2h92A00\n2fvyA01\n5ls7D00\n1t0fC00\n3ksrA01\n3o7bA00\n5a2qG02\n2ww8A05\n4jhmA02\n3fcgB00\n2wlrA02\n3m7kA00\n1tzyE00\n4uobA02\n3fn9C04\n4ehsA00\n4zkpA01\n1vq8E02\n2c1iA03\n1wfxA02\n3ll7A02\n4x2pA01\n4gewA01\n1tbnA00\n2qh5B00\n1vbkA02\n3ix1A02\n3kzwA01\n3l2bA02\n5y3cA00\n3nl6B01\n2ig3A00\n2hueC00\n4klkA00\n2bq4A00\n2mygA00\n4q53B00\n3wndA01\n1vkeB00\n1hnjA02\n2gg2A00\n3ifuA02\n1pyyA01\n2wzpP02\n1rlwA00\n4lg8A00\n1zldA00\n2pvuA02\n2ozlB01\n4tm5A01\n1nltA01\n1oh4A00\n5dcpA01\n3hz6A01\n4hguA00\n1mwqA00\n3sgzB00\n5ghuA02\n4g84A02\n3uejA01\n4c3sA01\n3cnxA00\n2qfaA00\n5er9B01\n4n5uA00\n5i2mA01\n5eidA00\n1u6zA02\n2cs4A00\n1f0cA01\n4aklA02\n3zhoA00\n2hlyA00\n4e21A01\n3sfvB01\n1kg2A02\n1ex7A02\n1tvcA01\n3ij3A01\n4p8bA00\n4iqzD02\n1ofcX03\n1okcA00\n3e48A01\n3m7gA02\n4bvqA01\n1jr1B00\n5hqtA02\n4wesC01\n1sknP00\n4cbuA01\n2ck3G01\n1p9hA00\n4giwB00\n2zs0C00\n2xu9A01\n1qgvA00\n2g30A01\n2ex5A00\n1uhvA01\n4j0xA00\n2g5dA01\n4uexA00\n2f4nB02\n4qiwK00\n2wtzC01\n3varA01\n2z4iA01\n4rnaA02\n3t5gA00\n5kloA01\n2la6A01\n3k8wA01\n3g7qA02\n3vouB00\n2roqA01\n2h8gA00\n3s64A00\n3e56A00\n1ukxA00\n4evuB00\n1gkrB02\n1oo0A00\n1rajA01\n1eziA00\n6emlV03\n3gp6A00\n2drmA00\n3t6kA00\n3e54A00\n3gd0A02\n2nxvA01\n4koaA01\n4hudA01\n2knoA01\n3d6jA02\n4jdpA01\n4w78F00\n4wzxA01\n2f0cA02\n2w4sA00\n2b9cB00\n2hhpA03\n3amnA00\n3ejjX03\n2xe4A01\n2a4xA00\n5jeaF00\n2oqrA01\n1u6tA00\n3r5gA00\n4dt0A01\n1q5kA01\n1pqzA01\n3oc7A02\n4pprA00\n5tv2A01\n2b82A00\n3ws7A01\n4horA01\n4ljsA01\n3on0C02\n1ci4A00\n3mbkA01\n4hutA00\n5bv8A00\n2dq0A01\n2x3aA01\n1gdtB02\n3g20A01\n3slgF01\n3busB00\n1qveB00\n5c7hA00\n4dunA02\n1b63A02\n4oelB00\n2qyvA01\n4gdoA00\n5lu5A00\n3fmgA01\n4esqA00\n2je6I02\n2fldA00\n2e6nA00\n3q87B00\n1wy1B00\n2p3nA02\n1xjuA00\n1wubA00\n4r2fA02\n3zibC00\n2kxeA00\n1dfmB00\n4ybmA02\n4eqaC00\n4go6B01\n2a38B01\n1v9mA02\n2ot9A01\n4s1wA01\n2j0wA04\n3tuoC00\n1ss4B00\n3u88M00\n2ihr103\n3ggnB00\n2lx7A00\n4b1yB02\n4ft4A03\n5j39A02\n2dbyA03\n3euaA02\n1k3xA02\n2fnjB00\n3pbtA02\n1qhuA01\n2jwyA01\n3kg2A05\n3h7hB00\n1fo0B00\n5jeaG01\n3ip1A02\n1wddA02\n4w78G00\n4qdgA01\n2wtuB04\n1avoB00\n1mkzA00\n2ip2A02\n3sd4A00\n5ctbB03\n1ik9B02\n4c5eA04\n3ivfA01\n2npnA01\n2x5fA01\n2z98A00\n1i58A00\n3ngqA00\n2hszA01\n3h8gA01\n2v78A00\n1sw5A01\n4h05A02\n1z47A02\n1gqeA03\n4h03A01\n1jmxA03\n1ok3A01\n2lrdA00\n1ne2B00\n4i2uA00\n1hyeA02\n5iz3B02\n1xlyA00\n2oemB02\n3t9wA02\n5ctaA00\n3nwjA00\n1ogaE01\n3brvC00\n1rw1A00\n4gelA00\n3a52A02\n5xtck00\n4of8A02\n3lheA00\n4uv7A02\n3f1yA00\n3ismC02\n5vxzC00\n3merA00\n3rq1D01\n3b42A00\n4xloA01\n1ow6A01\n4h4nA00\n5u3fB01\n1rjtA00\n3myxA02\n1oy5A02\n3g2bA00\n3ot9A02\n1a0iA01\n2dn6A00\n2xi9A03\n3f8uB02\n3owqA00\n3ezqB00\n5aejB00\n1tuwA00\n2nn4A00\n3bigA02\n1vclA01\n4nzdB02\n4i1oF01\n5cdvA01\n4n6kA00\n5d4nC00\n1rp3G02\n2qkdA01\n4oonA03\n4jedA01\n1k8rB00\n5t3uB00\n4u8uM02\n3b7fA00\n2dhkA01\n3t5aA00\n3eshA01\n3pkvA00\n2z9iC01\n2qn4A00\n4ghnA03\n3mxnA01\n4hzrA01\n4tveA01\n3ze3A00\n3r6aB00\n4qiiA02\n3aqtA00\n4ewcA03\n2f42A02\n5y32B02\n3eeyA00\n4a0gC02\n2vn6A00\n1svdM00\n5eq7A01\n4rpfA02\n2gksB01\n2dymC01\n2p11A02\n3owcB00\n4rpoA01\n2b7nA01\n3gkuC02\n3lybC00\n4kemA01\n1ibxA00\n4fvdA01\n3zkqD00\n4a02A00\n2jjuA01\n2qdfA02\n3dpjF00\n5sy8O00\n4xxpA00\n2l0rA00\n2im9A03\n1yuaA02\n3b4sA02\n4dv8A03\n1ly2A02\n3jy6A01\n2yunA00\n1w5fA02\n2gqtA03\n2fp4B01\n1u3oA01\n2mr7A00\n2m3aA00\n3a8gB02\n4g7xA00\n4q25A01\n5hyvA01\n2yhxA01\n3kvpC00\n5fgzA02\n2a4kB01\n3lteD00\n2flbT00\n1tfsA00\n5b0hA00\n2ckwA04\n4n91A00\n5cm6A01\n2ffgA00\n4htfA00\n3prnA00\n4k3bA02\n3kloA01\n3h3aA04\n3gqxB00\n4hchA01\n1lkiA00\n1ogdA01\n3q5zA02\n1w55A01\n2h4pA02\n1n7kA00\n2w53B00\n4a9aA02\n5j8yD00\n3m7nA03\n3au4A02\n2odeB01\n4x1fA00\n4y8dA02\n2a8yA00\n4mspA01\n3f1tB00\n3kf8B00\n4g54A02\n4rd4A03\n4l6gA00\n4v2bA00\n1r9lA01\n4m6wA02\n2w9xA02\n1sezA02\n2kc6A01\n5mmiY00\n4ggcA00\n4lo6B01\n2h84A02\n3cmgA01\n3pzfA02\n4jhnA00\n4gczA03\n3eyaA03\n2gnoA01\n1hdlA00\n2mh3A00\n3w1sC00\n2hzmA02\n3nxbA00\n1j98A00\n2f23A01\n3kxeA00\n3kv1A00\n1winA01\n3sllA02\n2g5gX02\n5xgrA01\n4p78C00\n1tgrA00\n1zd1B00\n6em3S01\n2jmpA01\n1rxqD00\n4gafB02\n2og5A00\n8abpA01\n5lpeB02\n2wv3A01\n4lj0A00\n2rijA01\n2vpaA00\n3ozqA01\n1v9vA01\n1x54A01\n5teeA02\n2np9A01\n4jq9A03\n2bw0A02\n3lczA00\n1wb9A03\n1r6vA01\n1wocC00\n2hx1A02\n2mhkA01\n2l2tA01\n1orrC00\n3k7yA02\n4naoA00\n4psuA00\n3zj1A00\n4grfA00\n4gxzD00\n1kaeA01\n3pxgA04\n3ce2A01\n1zwtA00\n1dbqA01\n3ke3A02\n3hr4E00\n2fc6A00\n3mdyA01\n4fcaA04\n4h0pA01\n4dexB00\n1u07B00\n3h99A03\n2b26C01\n5fm5M00\n1icrA00\n2o14A01\n4ohyA01\n3w0lB03\n2zuvA01\n3v8xA01\n4pw8F02\n4nurA01\n1oy5B01\n4adnA01\n1tedA02\n3tdwA01\n2imsA00\n1rjaA00\n4w4kB00\n4ecfA02\n3i84B00\n3w1yB00\n3l76A01\n3hxkA00\n4uhvA01\n2rafB01\n2kq8A01\n3e11A00\n4wecC00\n2cw5C01\n2weiA01\n3ehcB00\n1dbqA02\n1a17A00\n1wmzA00\n1jofA00\n3vpsB01\n3pdgA00\n3ga4A00\n3l5kA01\n2m67A00\n2hfsA01\n2p22D00\n3zdbA01\n3rufA01\n3nehA00\n2vh1B02\n5trbA00\n2e31A01\n1kqfB03\n2asbA02\n2ag4A00\n1vq8I00\n2qpvA00\n3lm4A01\n4ja7A01\n5tqjA00\n2r7eA02\n2nxwA03\n1m8oB00\n3olcX03\n5dgjA01\n1a6zA01\n2cwpA00\n3weeA02\n1f5nA01\n3mlfB00\n1ka1A01\n1lrzA01\n1nezH00\n3km3B00\n3efbC00\n1t46A01\n3h04A00\n1cqxA02\n3htvA02\n1l1jA01\n3zxkA02\n3o4oC01\n2lkmA01\n3rqsB01\n3zxnA00\n2eqkA01\n1u5mA01\n1o0sA04\n4ag4A02\n3m07A01\n2im9A02\n4glxA04\n4iqhA00\n1rlmA01\n2as0A01\n4tpsD00\n4a9iB00\n2dzjA00\n4qpmB02\n2ntxA01\n6b9xE00\n3ndcA01\n3ajeA02\n2nq2A00\n4u9rA01\n4z47A00\n3oxhA02\n3vr4A03\n2vdrB02\n4jwoA02\n2bhvA02\n5gvrA00\n3t2cA02\n1qx8A00\n4m4pA05\n2v62A01\n2z51A01\n2zt5A02\n2ob9A00\n4oavD03\n4uqvF02\n2hzmG01\n4ccaA02\n1extA01\n3r2uA02\n3ub1D02\n2mpcA00\n4dadA01\n1x91A00\n3fj1A02\n4jb3A02\n4dllB02\n3witA00\n3h7oA02\n3swhA01\n3nqhA02\n3oigA00\n2crmA01\n1x4dA00\n1v5uA00\n3nybA02\n3ghgJ01\n1je6A02\n4r52A01\n4b4oG00\n3nbmA00\n3qftA01\n4kvxA00\n4i1aA00\n4h08A00\n1x13B01\n2cvcA04\n4ry8A01\n5nczA03\n3dexH00\n2yevC00\n4e9kA00\n2ktmA00\n2fbqA00\n6aqgA01\n1ry6A00\n2z7fI00\n1z1vA00\n3c1mA01\n2j6lA02\n4f9zA01\n5y9aA00\n5w93A00\n1dxsA00\n1xfdA01\n4esyB00\n4akmB00\n4i8iA00\n3n06B02\n4eekA01\n2o3sA02\n4cy8A03\n3u3pA01\n2mouA00\n2jjqA02\n1iupA00\n3mxoB00\n1nq7A00\n5eayC00\n3shoA00\n2vkpB00\n5i34A02\n3nbiA02\n3py9A02\n3p7iA02\n4rgyA00\n4l1jB00\n3enpA00\n1xteA00\n4jdeA01\n2cjgA02\n2w91A02\n1iqqA00\n2g3rA01\n2hn1A01\n1n91A00\n2ac3A01\n3tw8A02\n4cs9A00\n1p0hA00\n5c86A02\n5ej8A03\n1n7dA01\n2qxyA00\n2eljA01\n4ab5A02\n3fi7A02\n3kh8A02\n1wghA01\n3oe7Q00\n2l49B01\n1jssA00\n3c8wA01\n4qqgG00\n2qr6A02\n4qe6A00\n4jf7A01\n3e3mA01\n4a2vA00\n4mx8C01\n3urrA00\n4e8uA00\n5bwjD02\n3q6dA01\n1k8kA03\n5fc9A00\n4lrjA02\n1ulyA02\n2gsoA01\n3od1A01\n2hqxA01\n3idbB01\n2y7bA00\n5dvhA00\n1sx3A01\n5a74A00\n1r6dA02\n4h51A01\n1o5lA00\n1jl0A00\n3ne5B04\n1kx3G00\n3p26A03\n1nwwA00\n3gg8C03\n1n1tA02\n3zq6C00\n1rwhA02\n3x27A01\n3pc6A00\n4rpoA02\n2otnB01\n4czgA02\n1l0wA02\n1kilE00\n1obbB00\n3w6wB01\n5aeaA00\n1p3cA02\n1faaA00\n2zs0A00\n3rdkB00\n3nuaA01\n1l5jA04\n1zylA02\n4trtA01\n2ppyA01\n4qlaB00\n3tufB00\n2elcA01\n4kzkA02\n4gyoB01\n2cqhA00\n1x8bA02\n1wiaA01\n2cw1A00\n4ijjA00\n2zu6F01\n5ehrB02\n4n06A01\n4n3sA03\n1xvxA02\n3f8uD03\n1i6aA01\n1ztmA01\n3aj3A00\n3k9aA00\n4p3fA00\n4ekuA01\n4uabB00\n4ry9A02\n2m4lA00\n3cnhA01\n2dzlA00\n1ka1A02\n2wbmA03\n3ui3A02\n3upsA00\n4h6cB00\n4k3dH01\n3anuA01\n4zevB01\n4bxmB00\n4ktbA00\n1tmxB00\n4mamB03\n4e9sA03\n4uwjA01\n2q04F00\n2dsyD00\n4kmaA02\n3nviA01\n2ecnA01\n4o8aA01\n2p31A00\n4tzmB00\n4yfbC03\n4jw0A00\n3iuwB00\n4qvgA02\n4kfuA00\n3etuA01\n1s0aA01\n2qa4G01\n3h4jA03\n3b79A00\n3ghdA00\n2dscA00\n4i0kA02\n2mdaA00\n1yi9A01\n3g8qA02\n2dgmC03\n5vs7A00\n3lubA01\n3ce8A00\n1tk7A01\n3qsjA00\n4i1aB02\n4reoA02\n1qu9A00\n1yrrA01\n3zvqA00\n3nhiA02\n1kvnA00\n2gj2A00\n3opyB01\n1wysA00\n3al2A01\n3es6B00\n4hvcB02\n3bhwA00\n3ozoA02\n1u0mA01\n3dgbA02\n3fnbA02\n1iujA00\n1woqA01\n4mo4A01\n3tlxA00\n1w4tA01\n3a44C02\n5ao2B02\n3me3C01\n2l6lA02\n3pvsB01\n1ohtA00\n2z86D01\n2rgyA01\n4dlqA02\n1q2zA00\n2cr5A01\n3p4lA02\n2oltB00\n2guhB00\n1ncnA00\n3qq2B00\n4b6gA00\n2egzC00\n1cq3A00\n2qtfA01\n1hx8A01\n1k28D01\n3r0nA00\n2e1mB01\n3thdA03\n5uptA02\n3du1X00\n5erqA03\n5a1iA01\n3t7kA02\n2lepA00\n1vkmA00\n5kinC00\n5y5qC00\n5fktA02\n4gkfA00\n4fgmA02\n3f8tA03\n3fcnA00\n1thzA03\n3kjxD01\n3cjeA00\n2ys4A01\n4jf7B01\n3gedA00\n4bhxB00\n2b99C00\n3ohrA02\n1ou5A01\n2dy1A02\n5lxxA02\n2zadA02\n2gleA00\n5j92B00\n3vorA00\n2np3A00\n1aipE02\n4xc5B00\n1abaA00\n1hdfA00\n1jg8A02\n3a21B01\n1y1uA01\n4plgB02\n2kluA00\n2d5wA01\n2e5jA01\n4g3hC00\n5vxzA01\n4i0uA03\n2pa7A00\n5ka5A00\n5cjjB00\n2al6A02\n4iibA01\n4nsmA00\n1n00A01\n1rm6A01\n4dvyP03\n2ba0A01\n5nb4A00\n1neuA00\n4lukA00\n1ujnA02\n2xtsA02\n1yg9A01\n2oyoA02\n4cgkA01\n4f67A02\n1bjtA03\n3thtA02\n3fkeA02\n3vthA03\n5cnoB01\n1mjnA00\n3uqzB00\n2otoA00\n4mjgA00\n5c8wB00\n4jzcA02\n3w1gA03\n3ba3B00\n3jxoA00\n4j3cA02\n5fh7A00\n1m15A01\n3pm9A04\n1hkfA00\n2h3hA01\n5am2A01\n5dm6U00\n3tztA00\n4qb6A00\n1rwuA00\n3n53A00\n5ve2I00\n3g2eB00\n3b0xA02\n4mijA00\n2xqnT01\n3pfbA00\n5x5mA00\n5evkA00\n3gtyX02\n2bfdB01\n1u9yA02\n4mv7A03\n4rweA02\n2zwiA01\n3b46A02\n1mu5A02\n1zejA01\n4pxdA01\n2jheA01\n2ux9C00\n4miyA01\n3hinA02\n2qyuA01\n1u60A00\n3n75A02\n1tuzA00\n1xl7A01\n3tlxC01\n2ztsA00\n4rnyA03\n2v26A05\n4m0wA02\n1fsuA01\n4wuiA00\n3l4gB04\n1k4iA00\n2ysaA00\n3thgA00\n2j8gA02\n4njhA00\n1vq3B00\n2gnnB00\n2c0wA00\n3l1nA01\n4rwxC01\n4ww7B00\n3lvlA01\n3b2vA04\n4bu0A02\n3rixA00\n1twuA00\n4hfvA02\n5e3iA01\n3mmgA02\n3aibB01\n4pdoA01\n1te0A02\n3k7yA01\n3fd4A00\n5fs8A03\n3vskA01\n2xu3A00\n3s98A01\n3k8kA04\n3hksA02\n2vkwA02\n2yfaB01\n2d4zA00\n1xszA01\n2sn3A00\n6em3f00\n2ix5A01\n3hs3A01\n3ty5B01\n4jiuA00\n2itaA01\n1jr2A02\n1zoiA00\n1p3cA01\n2fefA02\n5gmkn00\n2xqyA01\n3fvcA03\n2oayA02\n2rmfA00\n3utnX01\n2o8lA01\n1upsB01\n1twfF00\n3lhqB00\n2q03B00\n2nlyA00\n5w38A02\n2od0A00\n4xloA03\n2q5cA01\n3kp1A03\n1g8kA04\n1vqtA00\n1u2zA02\n4pfrA00\n4id8A00\n1rjhA00\n2heyT02\n1okgA03\n2rauA00\n1ebfA01\n3hwjB00\n2c5sA01\n2nyvA02\n1io7A00\n4m6rA00\n4ns4A00\n4f01A02\n4rxuA01\n1cwvA05\n4qu6A01\n5t3oA02\n3b2vA01\n1w8sE00\n2dw4A03\n4xqaA00\n3hufA02\n4k3lB03\n4qxbB00\n2vvfA02\n2cm5A00\n4i2oA01\n1nt2A01\n5jeaD00\n3gwcA02\n2cy3A00\n2nwhA00\n4mb7A02\n1fasA00\n4p10A01\n4gicA01\n2psoB02\n3o27B00\n4uf7E00\n2ckkA01\n3w54B00\n1nnfA01\n5iz4A00\n3ml1A02\n1cixA00\n3icxA02\n4jbdA02\n1rz3A00\n5dedF02\n1qyiA01\n3sghA00\n3u26A01\n2a2mA00\n3kjyA01\n1thtA00\n5tdeB01\n4b1yB03\n5c33A00\n4egdA00\n1jlxA02\n3d2fA03\n2z9vA02\n2kj1A00\n3fgaD00\n4ff5A00\n2d6yA00\n4finB01\n4dt5A00\n1wleA02\n3zyiA02\n3clwA02\n1zl8B00\n2bskB00\n2hcfA02\n3wuyA00\n1in4A01\n3da0A01\n1iugA01\n2xi9A02\n4lrjA01\n3cjlA00\n4gzcA00\n1o20A01\n1z9iA01\n5b3pA00\n3swxA02\n1hkyA00\n3su6A02\n2wqkA00\n4nofB00\n4cymD00\n1nt2B01\n4xkyA00\n2x3eA02\n3lqkA00\n3d0wD00\n5d84A01\n5cenA01\n2w3qA02\n3goxA01\n1khcA02\n3ufxB02\n1vqqA02\n1pbjA00\n3mw8A02\n2zv2A01\n3wvtA02\n5e3sA02\n3es1A02\n3oajA02\n3idwA00\n1nkzB00\n3ktzA01\n3gbyA00\n2cduA03\n4j42B00\n4fe9A01\n2qn6B00\n3oepA04\n3ddhA02\n3lzdA02\n3bnkA00\n3tm0A02\n5ik4A02\n2gqcA01\n1rvkA02\n1f0kA02\n4l4jA02\n1jvwA00\n3c8yA02\n3c18A01\n4eewB00\n3m0mD00\n4gafB01\n2x4lA02\n1gkrB01\n2lotA00\n2fgtA03\n1t0hA00\n2zbvA02\n4pgzA01\n3gywA02\n4gdnC00\n3lf2A01\n2bnmA02\n2wqmA01\n4bjtA02\n4c4aA01\n1s9rA01\n1ezgA00\n4tqrA03\n5c8gB00\n4d8oA03\n4m0mA04\n4y0hA02\n4ivnA02\n1wyzA01\n5cl8A00\n3kalB05\n4da5A01\n3q1xA01\n3wcyA04\n3e2qA01\n4od9B00\n3eduA00\n3k2zA02\n2d2eA00\n2v8iA03\n2it9A00\n2o2gA00\n2ns6A00\n3ojmB02\n3g5jA00\n3qt2A01\n2kzfA00\n2x3lB02\n4aukA02\n3ey5A01\n4e9lA01\n1rxwA01\n1nz8A00\n2fauA01\n2ehfA00\n1yrtA03\n1usmA00\n4ag6A02\n2woyA01\n1l9bM01\n2ddmB00\n4mb7A01\n2i9xA00\n5i8cA01\n4rcjA01\n3s0xA02\n5is2A01\n1iv0A00\n2c9jD00\n3w20B00\n1uj6A02\n4r6hA02\n4f7zA03\n3u31A02\n1hm9A01\n1hztA00\n3ewlB00\n5lohA02\n4wihA02\n3fhnA05\n3tdnA00\n1o6wA01\n4u7oA01\n2w6kA00\n2qv0A00\n3lnpA01\n2xepB02\n3ba1A02\n1o63A02\n2pbiA03\n2gqtA01\n4utuA00\n3n5bB02\n4yypA00\n2c4jA01\n4el6A00\n5le5a00\n2jsnA00\n2i9iA00\n3kvnA02\n1wkrA01\n4dq6A01\n2b68A01\n2kivA01\n2dx1A01\n2ox7A01\n2oocB00\n4kkdB04\n5e0yA00\n2csxA03\n2v5yA04\n3r6oA02\n3nvoB02\n5ippC01\n3govB02\n4drbD00\n1xm7A00\n1o98A01\n5kn8A01\n2l03A00\n3tnlA02\n2nxcA02\n3pr6A00\n1f53A00\n1tolA02\n1c8bA00\n2grjA00\n4ohcC00\n4z3xA01\n3ukmA01\n3oh8A01\n2qqiA02\n2ds4A01\n1n1tA01\n1dleB02\n3ckmA01\n2m72A00\n2e8gA02\n1hu3A00\n3pe6A00\n1x3sA00\n1txgA02\n4dhxB00\n2xbuA00\n2bonA01\n1utaA00\n2l2dA00\n1mw7A01\n4prkA01\n3sxxD02\n5g4kA00\n5kztA01\n4bvaB01\n4n67A00\n4zeoH02\n3imlD03\n3tlfA02\n1z2nX02\n2hyvA04\n3c3dA02\n3bnjA01\n4o38B02\n2qw5A00\n3dhaA01\n3kkfA00\n2mb9A00\n1xruA02\n3mdqA02\n3knwB00\n2d2sA02\n4b3fX03\n2ltsA00\n2j4bB00\n2wscH01\n4hj1C03\n2oyoA01\n5dwsC01\n2axqA03\n1vhkB00\n2ffhA03\n2x9aA00\n1tejB00\n1so7A00\n4b4hA00\n5lciA00\n3pjpB01\n4gymB00\n1i5pA02\n4eadA02\n4kbqD00\n4dy0B01\n1nu0A00\n3neqA00\n4wzzA01\n1on2A02\n1h4aX02\n2cz4A00\n2uz1A01\n4gx0B05\n1pe4A00\n1v63A00\n1r4vA00\n5by7A02\n5cb7A00\n5o75A00\n1nf2A02\n2kc7A00\n1sumB01\n1y1lA00\n4gkpB00\n2daxA01\n1i6uA01\n5k4xA00\n4lg1B00\n1nyrB02\n2bicA01\n3ke6A02\n1zunB01\n5a71A00\n1jxcA00\n4jvsA01\n4ap9A01\n4zciA02\n5bn3A04\n2y8nB02\n2ogiB00\n1di2A00\n2rkhA02\n2lknA00\n4ikhA01\n2dc4A00\n1tc1B00\n3emxA00\n3mvsA02\n3mcaA02\n3kuzB00\n1pe9A00\n2bgkA00\n3mlgA00\n2zyzB02\n1khvA04\n2r44A02\n4i0wA00\n2jpfA01\n3p04A00\n4hfqA02\n5cxfC02\n4ypoA01\n1rgxA01\n3sjrB00\n4rk0D01\n3wliA01\n2ec8A01\n1jfbA00\n3wz2B00\n1olgA00\n3rk6A00\n2u1aA00\n4jwoA01\n4lgdD02\n4efaE02\n5xzgA01\n3q9dA03\n2ap1A02\n4q97A00\n1rr8C04\n3bb7A02\n3a1kA01\n4exrA01\n2ntxA02\n2ahmH02\n3x34A00\n1v30A00\n1eu1A03\n1rfeA01\n2hmaA03\n3js8A02\n1oaqL00\n2gw1A02\n2ln7A00\n5bxdE00\n1vioA03\n4eebA01\n2bhyA03\n6b9uB00\n2ht1A01\n5g38A00\n3d6iA00\n1wqaA01\n4m8aA00\n1vclA02\n3r72A00\n3it5G00\n4fybA00\n1vioA02\n4pr3A00\n4otpA02\n3u65A00\n2lrrA00\n4az6A02\n1e8cA02\n4qbuA02\n3ktoA00\n2qsfA02\n3d6wB01\n5bv3D02\n3s79A00\n3zilA00\n4fyyB01\n3rbsA01\n4mfkA02\n5jj2A00\n3mpkA01\n2kkeA00\n2eenA00\n2k3oA00\n4d8oA02\n1m9sA03\n3jqqC01\n3dwlE00\n5uagE00\n3vk6A01\n4n9f302\n3isaB00\n4c9rD00\n5uqmA03\n1y3jA00\n2ohwA00\n3cq5A02\n2fqxA02\n2oemA01\n3wcoA02\n1wfeA00\n1wdkA01\n3c6cA00\n1z7mC00\n5o95A02\n2qgvA00\n1zmbA01\n3vvhC02\n3hn3A02\n3mmyA00\n5oswA03\n2hz8A00\n5h68A00\n5l4qB00\n5cgqB02\n5ajgA01\n1i42A00\n1ybkA00\n5an9B01\n3eytB00\n4bjsC00\n5ibqA02\n4lgqA00\n3g64A02\n3r5dA02\n3l4gB01\n3bblA01\n5idjA01\n3dfrA00\n2bcmA00\n5ee2A00\n4mxnB00\n3i9v201\n3kq5A01\n5eo9B01\n2im8A00\n4cllA01\n3myxB01\n1wzaA02\n3i38K01\n4xijA02\n3orgA02\n4zohA02\n3abqB03\n2lw6A00\n2rhqB04\n3uljB00\n3e3xA02\n3laaA00\n1ro2A01\n3piuA01\n5hkoA02\n2ljmA01\n3h6xB00\n4aimA04\n4twkB00\n4if4A01\n3swhA02\n3nsxA03\n3pbtA03\n5xxuG02\n4cpdC01\n3l0fA00\n3mfqA02\n3uknC02\n3gzxB00\n3r2uB01\n3g79A01\n4zi5A00\n3i3vB01\n3b2eF00\n5afdA00\n2nxwA02\n4ifdI02\n3lmcA00\n3sluA02\n5m06A01\n4asmB00\n1v0aA01\n1g8mB02\n4gucA00\n1t9hA01\n3htmA02\n3oooA00\n3if4A01\n1uoyA01\n2gqtA02\n3lq1A02\n3ru6B00\n1hw7A02\n2lo0A00\n2kxsA00\n4a9zD00\n3htxD03\n3e7jA03\n4q0cA01\n3o4oC02\n2napA02\n4u9uA01\n3vv5A02\n3zx4A01\n3up3A00\n2oy9A01\n4r9fA02\n2l2lA00\n2a2cA02\n3ttyA01\n4p82A00\n3qjgA00\n3k59A02\n4hzsA02\n3clkB01\n1zmeC01\n3f5lA00\n3u9qA00\n3ecsE01\n4l1nA00\n4g9eA00\n4ne2B00\n3cryA00\n5ehaA00\n4wczA02\n4c1bA02\n4irxA02\n5mc1A01\n3kebB00\n4mldA00\n4e79C03\n2p6wA00\n1usyD00\n1yb3A00\n2oi2A02\n3bs1A00\n1v3vA01\n3qkaA02\n2bayE00\n3htkC01\n2covG00\n2j8pA00\n3cuzA02\n5j1gB00\n1r0kC03\n2xetB00\n2p4vA01\n3qhaA01\n2wssW01\n3qbrX00\n2oktA02\n5le5I00\n1op1A00\n1wcv100\n2wa2A00\n3op9A02\n5ucdA02\n2x2zD03\n1wehA00\n3of5B00\n2vebA00\n4x8yB00\n3kh5A01\n2vfrA03\n3d8uB01\n1a35A04\n1i36A02\n3rfiA00\n4fr4E01\n2amhA00\n4nboA00\n1txdA02\n2lvfA00\n2qvgA00\n4oztE00\n5kprA02\n3fsdA00\n1ycsB02\n4e1sA00\n2wcoA03\n1jjoC01\n4bvaA02\n4gx0B04\n4qpkB02\n3w0oA02\n4hj1A01\n2hewF00\n4jb7A01\n1alyA00\n1sazA02\n2lw1A00\n4i8oA03\n2dgdA01\n3l4qC00\n3e9kA02\n4ogrL00\n1knzA02\n2leqA00\n4bxfA01\n3eo8A00\n3tfgA00\n3keoB02\n1vj0A02\n2kqpA00\n1q0vA00\n1pfzB01\n2hxoA02\n3d3zA00\n2j43A01\n3g7lA00\n3vykA00\n1musA02\n4obxA00\n2q3zA03\n1f5tA02\n2x5oA02\n4qedA00\n2z6rB01\n1ri0A01\n3p51A00\n1vpcA00\n4qpwA00\n5ci5B02\n1ei7A00\n3o8jA02\n3l2pA04\n3wmqA00\n4gmkA02\n2kkxA00\n3n3aC00\n4u8uO01\n2v1oB00\n2xlgA00\n1o0sA03\n2q97T00\n2fkcA01\n3b46A01\n5d8vA00\n4p09A00\n4cdjB00\n3u9jA00\n3l9jC00\n2gu1A03\n5jbxB01\n2g3aA02\n3gldA01\n1gsoA03\n3ep0A00\n1sf9A02\n3kk7A01\n5gtuA00\n4e2xA04\n2wstA00\n2fipA00\n2rovA00\n1bdoA00\n2aefA03\n3qfwB02\n1w7dA00\n1nd6A00\n4nuuA02\n3hoaA00\n3lx4A02\n2w02B06\n4xrwA01\n4a4kA01\n2ynkA00\n3ku7B00\n1fvrA01\n3llpB04\n5jzeA00\n4limA00\n1x0vA02\n3fbqA01\n4lsoA00\n1t9hA02\n1h8eG02\n3gmgA00\n1r94A00\n1l1oF01\n3ijdA00\n2wxyC02\n4b41A00\n1f2dA02\n1r89A03\n3l48A01\n1y88A01\n2xb4A00\n3griA02\n1y9bB02\n1xb2B01\n4jf8A00\n4rpcA00\n4n1lA00\n4jleA00\n4y97D00\n3l5aA00\n1pm6A00\n2i45D00\n4lrtA01\n1fzcB03\n2yn3B03\n2aucB01\n2p5vA02\n2vqrA01\n1uadC00\n1n26A01\n1yrkA00\n2m5zA00\n1z8hA00\n4n7wA00\n2inbA00\n3oamA00\n2kywA00\n3k2oA01\n4izeA00\n3s28A04\n2p3yA04\n4id0A01\n2p8bA02\n3mkvA02\n4i9fA02\n4nozB01\n2yq2A01\n2panA02\n2dfkC02\n2e4uA03\n4bzaA03\n5dl5A00\n2b6cA01\n1cnt200\n5fu6C00\n3cexA00\n2zsjA01\n1hxiA00\n4dx8D00\n3amlA02\n3ue2A01\n4gfxA00\n1yt8A01\n2a9iA00\n4uw9A02\n2j8aA01\n4kcaA03\n3lxrF00\n3ognA01\n3oeqA01\n3i0wA02\n1ckmA03\n3ubtA01\n5dn6I00\n3pdkA02\n4ktpA01\n2rqrA00\n5aboA02\n1icfI00\n4dk2A02\n1ecfA01\n2y4rA01\n1c3yA00\n5tleD00\n1fmcA00\n2cc0A00\n3oxnB02\n1tvfA02\n3rrkA01\n3tp4B02\n4w66B00\n3netB02\n1mhwC00\n4xvvA00\n3tadC03\n4s2xA00\n2cs1A00\n1mbaA00\n1dpjA02\n2v7fA00\n1mdoA02\n2y5dA01\n3rh9A01\n5u23A02\n2nn6F00\n2w15A00\n3ubyA00\n4ag6D01\n6bhdA01\n2qnlA00\n4cd8A00\n3tcqA02\n2j5gK00\n3ctzA03\n2conA00\n4pysA02\n2f93B00\n2no7B00\n1rcwB00\n3q3eA03\n4jg9A00\n3sjnA02\n4b8nB00\n1qgeD00\n2qcuA02\n1ylmA00\n4dyvA00\n4iwxA02\n3tsnA00\n4xqmA00\n5fglA00\n4uzgA02\n4g26A01\n2p2dD01\n3v2lA00\n3cp2A02\n4ioiE00\n2f8lA02\n3lpwA01\n5umnB00\n3ze3B00\n5a2fA01\n3sxnA01\n2nv4A00\n2xu9A02\n3wodG00\n3if2A00\n1pugC00\n5jryA01\n2o1sB03\n2lvgA00\n3fwzA00\n6bphA00\n3sxpB02\n4id9A01\n3twlA02\n4m4zA01\n4nbmA00\n2byvE05\n1nubA01\n3eetB02\n4gevA00\n4fppA02\n3p42A03\n3wfiA01\n3m9wA01\n3exqA01\n2py5A06\n3kotA02\n2arzA02\n4pkdB02\n2yzqA02\n2pa8D01\n3p2eA00\n4hxfB02\n1w2qA01\n3nvwC05\n4kn7X01\n2o0qA00\n3lopA01\n4ue7H02\n4eysA02\n3lvjC00\n4wnnD00\n4n73A00\n4bizA02\n4kh7B01\n1h54A03\n3hv2A00\n3iauB01\n1ntvA00\n1eo0A00\n5v01B00\n4c5cA03\n2pk3A01\n4ov4A01\n1vpbA01\n3hl6A01\n1psyA01\n3ehrB01\n5g5gA02\n3n71A01\n5f5eA00\n1cr5A01\n4eisA00\n2jdcA00\n4w4oC02\n1u34A00\n1o0xA00\n4cvnA00\n2ayzA00\n3s99A02\n2cc6A00\n4y8wA00\n3i9v104\n3rnjA00\n1n62B02\n3u1nC02\n1tueD00\n3h63A00\n3zypA00\n3mqgA02\n2xzlA05\n3gt7A00\n2w7yA01\n3draA00\n2glzA00\n4kyzA00\n1oh0B00\n3o1lB01\n1jmxA02\n2wbfX00\n3offA00\n5uc6A00\n3w1zC00\n3cwqA00\n3vtiA03\n2wp8A00\n4a8jB00\n2zgdA00\n2zejA01\n3mw8A01\n1o98A02\n3luyA03\n1grjA02\n3wdhA02\n5ci5A01\n2brxA00\n2ql8A00\n2b61A01\n1r5bA03\n4ad8A01\n4lviA01\n2xmxA01\n3oyoA00\n1qamA02\n5olpA00\n5gi7A00\n5d8hC01\n3thxB03\n2cu2A00\n1p1hB02\n3c3kA02\n4lj1A00\n2w8tA01\n4kdiD00\n1ig3A01\n4c0eA02\n4qyiA00\n3q1nA00\n3ndnA02\n3pdiA01\n4fz2A01\n2xfrA00\n4feiA00\n4z0mB02\n3bc1A00\n5d0iB00\n2imuA00\n1amuA01\n1o70A02\n1vljA02\n2dfjA00\n5dikA00\n4dloB01\n4g4sP00\n2jaeA02\n3ktwB00\n3tejA00\n1oacA02\n3moyA02\n2ywkA01\n2dnnA01\n4hzpA00\n4lflB00\n3sggA02\n1v8cA02\n5g4iA02\n2vk8A02\n2lu1A00\n4ogqB01\n1bikA00\n1tgoA05\n2zxiA03\n1rzhM02\n3s6lD00\n2ecsA00\n4bbyA06\n4ca1B02\n2fvgA02\n2ziuA02\n5kiqA02\n3h5lA01\n3guyA00\n3dwdA00\n5c40B00\n4tjvA00\n1cpqA00\n1z85B02\n2ibdA02\n1iomA02\n1wncB00\n2d5vA01\n2yi9A02\n2xhsA00\n1jhjA00\n2hyjA02\n2pljA01\n2v82A00\n3sukA00\n2arhA01\n1wp9B03\n1yc0I00\n2xliA02\n5lb7B00\n4uuwA03\n2erxA00\n3qszA00\n1n71B00\n3qk7A01\n2hszA02\n4dckA02\n1sqeA00\n2j0wA03\n2hpgC00\n3quvB02\n1umzB00\n1pv5A00\n2kogA00\n1c0pA02\n4l68A01\n4h10B00\n5k2iA00\n3k40A03\n2lrtA00\n3pveA00\n2y2pA01\n4k25A01\n1q1uA00\n2w9xB01\n2b69A01\n5c3uA02\n3k9gA00\n4m9dA02\n2rfbA00\n5hc0A00\n4co3A00\n2gk9C02\n4d6wA03\n4cbpA01\n3rq9A00\n3ls1A00\n3es4A00\n2ichA01\n2obdA02\n5fydB00\n2bfwA01\n3ejvA00\n1go4H00\n2bl9A00\n2qa1A03\n3bbjA00\n2yn5A01\n3kptA03\n4kjzB04\n3cawA02\n4f23A02\n1l6xA01\n4yqyB00\n3q8gA01\n2eo6A01\n2vldA02\n1dc1A02\n3t8bB00\n4uskA01\n4p1nC00\n2mev400\n4ohxA03\n5c8zA00\n1xq1A00\n1jb0L00\n5oswA06\n4fx5A01\n3g02B00\n1sfeA01\n1ehxA00\n2k5gA01\n4extC00\n3qdpA00\n2kdoA03\n2ftyA01\n4w4tB00\n3gydA00\n4fxxB01\n2c1zA01\n3c2gA02\n3h6eA03\n2ckiA00\n3eoiA00\n3fotA02\n1k1xB01\n3nqzA02\n2n7eA00\n1xeaA01\n2l0bA00\n3kjxA03\n3smvA01\n3pqhA01\n1xv5A01\n1s9cC01\n2ylmA03\n2ip6A00\n2rcyA01\n4mv2A00\n4h3wA02\n3o8mA03\n1gtvA00\n3ay5A02\n3m4wC01\n1pn2C01\n3up9A02\n3fanA02\n2frgP00\n4ojdH01\n3ir9B02\n4q8gA00\n2v5oA02\n2hekA01\n1nkzA00\n4tkdD00\n3eqcA01\n5vehB01\n1sddB02\n6em3i00\n3kuvB00\n1a59A02\n2o5uA00\n2mgwA00\n2qjyC01\n4agrB00\n4joxA00\n1vlyA03\n2zetC00\n2b06A00\n4j32B00\n1l2pA00\n4gv1A02\n2pndA00\n5jskB00\n2y44A00\n3pg1A02\n2endA00\n3abgA02\n4xpkA00\n1ji1A01\n4rkrD02\n3nbzC00\n4g3jA00\n1pdoA00\n3fpcA01\n1tvgA00\n4xuoA00\n2yhgA02\n4rkrB01\n3ipcA01\n1owlA03\n1rffA01\n3f6tA01\n1jsuC00\n3cvgA01\n4yzeB00\n3b9oA00\n2pxxA00\n1vhnA01\n2v6eA03\n2av4A00\n5hmaA02\n1jwwA00\n2ve7C02\n1xqoA01\n2fm8B00\n3cyjA02\n3hj6A01\n4k2pD01\n3h7uA00\n2hdzA00\n2hhcA01\n1uf3A00\n5o1qA00\n3nvsA02\n2o01L01\n4rx6D00\n4ohfA03\n1zkpA00\n4mgeA00\n5xyib00\n3a07B00\n1sgmA00\n2qpxA00\n2qmlA00\n2yboA02\n3nwrA01\n2kt7A01\n4b15A00\n4e75C03\n2fywC01\n3gvxA02\n2n17A00\n4jbbA01\n2vb1A00\n4xpxA00\n2vf7A02\n4aysA01\n1vq8H00\n1blxA01\n4u1cA01\n3bmxA02\n3dssA00\n4i05A00\n3mcsA00\n2dn7A00\n2xciC01\n4l8iB00\n3c6aA00\n1k04A01\n3qwlA03\n4f6cB00\n2dsjA01\n3abgB03\n3zitB00\n1s3eA03\n3daoB01\n3ml4A02\n1m2xA00\n2yicA04\n3hjcA01\n2pn0A01\n1qkkA00\n2p67A03\n4cr6A00\n3zqoB00\n5acsA00\n2amlA02\n3os4A00\n5c05A01\n5u47A03\n2j9uB00\n1ykwA02\n2x12A01\n5ly3A02\n3tg9A00\n4fl4F02\n2euiA01\n2kw3A00\n5egnA00\n1q25A01\n2dk6A01\n4itxA01\n4glxA07\n3llpB01\n1xg7B01\n3bgaA05\n4k0dA00\n2m4hA00\n3fk8A00\n2vqeL00\n4zeyA00\n4ej6A02\n2wzpR02\n5a6wB00\n4bizE01\n2z67A00\n3vmnA01\n3g5oC00\n3te6A01\n4ntwB00\n4gytA00\n2kx7A00\n3knvA00\n1tkiA02\n1na3A00\n3hyqA00\n2yfoA01\n4p6qA03\n3pl2A01\n3wfiB02\n1c1dA02\n4osnA00\n2osrA00\n3k1rA01\n3p2tA02\n4dcmA01\n4wedA01\n3isqA01\n4usaA02\n2b4lA01\n3ougA00\n2yweA04\n4oj5A01\n3d3kA00\n2yyhA00\n5jhmA02\n2o3jB01\n1g5cA00\n3a1cA02\n2wyhB06\n4na1B02\n3hidA02\n3d31C00\n1ap8A00\n1fpoA01\n3dorA03\n3fhrA01\n1inpA02\n1g0dA03\n3f4lA01\n4a4zA03\n4f4eA02\n1ty0B01\n5bsrA01\n1v5pA01\n3rjvA02\n2d2rA00\n3huuD01\n3p42D01\n5xtcj00\n1lj8A02\n2bc4B01\n3rghA01\n1wgdA00\n4fvgA00\n2nn6I01\n4og1A01\n3a2bA01\n5gxeA01\n4n6aA01\n4a1kA01\n4lvqA01\n4k3lB02\n1h6gA02\n5kvfL01\n2b3yA02\n2nvnA00\n3na2D00\n2erwA00\n3js8A01\n2cg4A02\n2sicI00\n1oqyA03\n3um7A02\n1l3lA01\n3zbgA00\n4izbB02\n2h7aA01\n2gz4A00\n2qgoA00\n4fglA00\n2bdvA00\n5a2bA01\n1xezA01\n4b7hA03\n3pmsA01\n1f20A03\n1o94A02\n3u1lA02\n1k6yA01\n2hngA00\n3v31A00\n2hg7A00\n3tklB02\n4b1zM01\n4gh5B00\n5k31C00\n1gyxA01\n1tqgA00\n1u7lA03\n4h41B00\n5k9gA00\n1twfC01\n2plgA01\n3wfsC01\n4dhiB02\n3purA01\n2y8tD01\n3my2A00\n2h1rA02\n5xlyB00\n1o17A01\n3d3mA00\n1nyuD00\n3em1A00\n4w6zA01\n1iipA02\n2cxkA00\n4gnfA00\n1bu8A01\n5h9cA00\n3luaA00\n4y88A00\n5my5A02\n5x7kB00\n3t0pA02\n2r39A00\n4pssA00\n3pc3A02\n2ae6A00\n4aeeA03\n2xr1A02\n3rq1A02\n2pcsA00\n2xi5A00\n2r0xA00\n1w53A00\n2r4fA03\n3lxyA00\n2keaA00\n3dnhA02\n2z5bB01\n2cphA01\n5k7fA02\n3kg0A00\n1yrxC01\n1e3mB03\n1owxA00\n3n27C00\n3ghgC01\n4gy7A04\n3r4qA01\n5i2mA03\n4jhcB00\n1ridA01\n5m5eC01\n3un7B02\n3hf5D01\n3l4cA00\n3rlfF01\n1eajB00\n4qq1C03\n4wedA02\n2y1nA04\n2ch0A01\n1fc6A03\n2dk4A00\n2guzB00\n5bq5B00\n4m2mA01\n2wzkA02\n1fqiA01\n1y8aA03\n4rdlA02\n3hbkA00\n1juhA01\n3igfA02\n3g79A02\n5i47B02\n3e61B01\n1jetA02\n1gz0F01\n4ma9A00\n1s2oA02\n4z7aA03\n1cg2A01\n3lazA01\n4uobA01\n5ahkA02\n2yq2A02\n4hizA01\n4mnrA02\n4bwjA02\n3o4zA02\n6b10B00\n2w1nA02\n2l6lA01\n1xv2C01\n2w5qA02\n3qflA00\n1e2kA00\n1nvpB00\n4i3yA01\n3t47A00\n1w0pA02\n3rvaA01\n3rq4A02\n1x93A01\n1tjlA00\n1fnfA03\n2kfdA00\n3l0qA02\n4yheA00\n2hzgB01\n2rh2A00\n4lp8A02\n2jl1A01\n3nkdB01\n5x3pA00\n4as2A02\n2v3bB00\n2xhiA03\n1tkiA01\n3oseA00\n4gqbB00\n4iefA00\n5hftD00\n4l9uA00\n2wanA02\n2hr7B02\n2rilA00\n1y8qD02\n3h14A00\n1vjuB00\n1es5A00\n3b4nA02\n2ffsA00\n1xe1A00\n5nqbA02\n3otnA00\n2qo3A03\n3tg0A00\n5icwB00\n1te4A01\n1ckmA02\n5c15A00\n4wcwA01\n1n1fA00\n3bxwA02\n4ldgA00\n4wz8B02\n4iknA02\n1l4sA01\n4i9fB01\n4a5sB01\n1yr1A00\n4bgoA00\n3waeA02\n2p5zX01\n3l82B00\n5e6tA02\n1zx5A02\n3gmsA02\n2ectA00\n4a6dA02\n2e7zA02\n4mz7A01\n3fo3A02\n1q35A01\n2im5A00\n3duwA00\n5gjaA00\n3c5eA01\n4qrhB01\n2x65A00\n3d8bA01\n3ttcA03\n2o6kB00\n4hacA02\n1ohuA00\n2kr7A02\n3zeuB02\n4jbgA02\n4l6hA02\n1j0hA02\n4r9nA00\n3e96A00\n2y1vA04\n5opfA00\n2ewtA00\n5x0wF00\n3r5tA02\n4ofgA00\n3l7yA02\n3og2A04\n4eswA02\n1g8aA01\n2g31A01\n4m68A01\n3behA01\n1m8lA01\n4q3kB00\n4o8mD00\n1m62A00\n1euvA02\n2h0uA00\n4dunA01\n4gb0A00\n3da1A03\n2mcqA01\n5k1sB00\n4n4uB00\n5fpzA00\n4n8nC00\n4py5A01\n3gkrA02\n2lp6A00\n1m1fB00\n2xi9B01\n4bjqA00\n2fdrA02\n5ucvA00\n1o04A01\n1ex2A00\n2ya1A03\n4gxxE01\n1jb0F00\n3iacC01\n2bh1X00\n4j4zA00\n3gjuA01\n3htnB00\n3zssA01\n1hruA00\n4p72A03\n2w5qA01\n3v10A02\n4dpoB00\n2ydyA00\n1kkoA01\n4gs7C02\n2o7sA03\n3lweA00\n1jb0K00\n5dicA00\n5mybA02\n3eliA00\n3ku3A02\n2lmkA00\n3l0wB02\n1miuA05\n5x7fA00\n4g3fA02\n4gc1A03\n4txwA00\n2c71A00\n5eghA02\n3nvsA01\n1yt8A02\n1qhdA02\n3n0rA02\n2o0rB01\n2gy5A04\n3rnyA01\n1dvkA00\n3qc1A02\n2vhaA01\n3mr0A02\n4hl9A00\n2f1kC02\n4ifdI01\n3eupB00\n5hnoA00\n3hl8A02\n4hc5D00\n1yzhB00\n2elcA02\n2a2aA02\n3hwuA00\n2ooaA00\n5cdvA02\n2y0oA00\n2eklA01\n4zwvA02\n4esuA01\n1rzhL01\n2rt9A00\n4ntlA02\n2o2kA02\n1dusA00\n4wx4A00\n5exeA02\n2vvmA02\n2q74A02\n3dxqB02\n5hlaA01\n6az1C01\n1wxaA00\n4jcsA01\n4x2oA00\n2e8yA01\n3seoB02\n1y7pB01\n4oogC01\n3nzlA00\n3v6gA00\n2vk8A01\n4f87B00\n3f1zI00\n4eq6B00\n3d7iB00\n1i8dC02\n3c5xC00\n3bpzA02\n2efrB00\n1izmA00\n4q7gA00\n3c8uA00\n4tqgA00\n1xfdA02\n2jxpA01\n3v0rA01\n2lnuA01\n1nm8A02\n3fn1B00\n3pvzA02\n3fv9C01\n1uebA03\n4iw7A01\n3pplA02\n1l2mA00\n2d42A01\n2imrA01\n3sxxA01\n3v4dB00\n2m7aA00\n3s63A00\n3bg2A01\n4uyiA00\n2vecA01\n5df6A01\n1aggA00\n2hg6A00\n2p90A01\n2pvpA02\n2hwgA01\n5c2vB00\n3zihB00\n3iwcC00\n1eerA00\n4cgrB00\n2o7iA02\n3hrzA01\n2o0mA00\n4pyrA02\n3psmA00\n2ortA01\n1whvA00\n4ckbA02\n3bvoA02\n2iuwA00\n3meuB02\n2lu2A00\n1hxmA01\n1pfsA00\n3pqiA02\n2y9wA00\n1d0dA00\n1lghB00\n3do6A03\n5wm1A05\n1qsaA02\n3ho6B00\n3mb2F00\n2qzsA02\n3mggA02\n1tuoA02\n1r5tA00\n2wfpA01\n2qsiA02\n3hn7A01\n2nx2A00\n4xqcA01\n3nrnA02\n1yjrA00\n3fleA00\n1nd9A00\n2ee2A01\n3kbrA02\n1gxyA00\n3a99A02\n3okxB00\n2qorA01\n1k1yB02\n2pwjA00\n1whsB01\n1w27A03\n2zw3A00\n4mlzA02\n4lq4A02\n3rv1B02\n4wpgA02\n4n01A02\n4ysiA00\n3vajB01\n3k3pB03\n1zd9A00\n5ix8A02\n4afkA00\n5gl2B00\n4werA02\n3vm9A02\n2id5D02\n2d0bA01\n4qtcA01\n3ljuX01\n4bxiA00\n3v46A00\n2edyA00\n1q8bA00\n5amvA00\n3ftbA01\n1hgvA00\n2p3yA02\n3c8lB00\n3ipcA02\n1js8B02\n2fqmA01\n3iuyA00\n1w0nA00\n3fduF00\n4aidA02\n3ljuX03\n3pjvD02\n4j3vA02\n2fwmX00\n6ensA00\n3ungC04\n3l46B01\n3q26A00\n3vu9B00\n4c5sC03\n3ieyA02\n5dp2A02\n1it2A00\n2k54A00\n3cskA03\n3w5xA00\n4maaA02\n4q2lA00\n2dkzA01\n2qsjB00\n2hjeA02\n4za3A01\n3im9A01\n3fd3A02\n2w9mA04\n1vpqA00\n2xglA00\n4y9wA02\n2eqpA00\n3ro6C01\n2fji101\n2ayhA00\n1w9pA01\n3czpA02\n3imfC00\n3gw6A03\n3s6xC03\n1wfwA00\n1dz3A00\n4ow8A02\n4ch0S00\n1qg8A00\n1a92A00\n2q7aA00\n1o7zA00\n4relA02\n3rpzA00\n2liyA00\n1cksB00\n1ecaA00\n2vscA01\n2auaA02\n1e0cA02\n1c5eA00\n2rloA00\n3agnA00\n3g9kS01\n3mf7A00\n1wkvA02\n2efvA00\n1yx4A01\n4fqjA02\n5bnzA03\n1pdkB00\n5kkrB02\n2debA03\n1vquA01\n2bo9B01\n3nvwC01\n4annA00\n2zshB00\n4jykA02\n2zxxD00\n3jtxB01\n2ob3A00\n4cvuA02\n2v9lA00\n1o4wA00\n2c60A01\n2cudA00\n1dqnA00\n1ju2A02\n2bwqA00\n3foaB01\n2f9sB00\n3tm0A01\n5c5cA01\n5eq7A02\n3fgrA02\n2dpmA02\n4gcjA01\n3nnbA01\n5lmaA01\n2yy3A00\n5idmA00\n3qwmA00\n2ebfX02\n1vd6A00\n1v05A00\n5jscA02\n4xa4A02\n3r44A01\n4nxyA00\n2i15A01\n3a5yA00\n2olcA02\n3qxcA00\n1e1hB02\n4lvqA02\n3kl7A00\n3d8cA02\n3kcgI01\n3udcA01\n2ejqB00\n4yi7A02\n4aslA00\n1x4oA00\n4ls9A01\n4hadA01\n2iw1A02\n1l5aA03\n3hhtA00\n2q4zA01\n3ijtB00\n3n05A03\n2wyrA01\n2afdA00\n2djqA00\n1u3zA00\n3qexA04\n4qtuB00\n2h4oA00\n1mkfA01\n2cvcA02\n1lxmA04\n3uifA02\n1f7uA02\n5c98B02\n3dcyA00\n4pwqA01\n3lagB00\n5cclA03\n1itvA00\n3f6kA02\n4x83A02\n4qjvA03\n4jneA01\n4rg8A04\n1dzfA02\n3p09A00\n2xhgA02\n2okcB01\n3s04A02\n2ew8B00\n2kkrA01\n1xk7A01\n1xk5A01\n4yl4A00\n2p62A02\n2r60A02\n2l93A01\n2c61A00\n3qguA01\n2hfqA00\n2gk4B00\n1zr6A01\n4hs1A00\n3na8B00\n3kn6A01\n1h54B01\n4n3gA02\n3o3uN03\n2rhkD00\n3ju7A00\n2f48A03\n4n9fe00\n4wpgA01\n5imaA00\n3eypA02\n1y55X00\n5fa8A00\n4kkrA01\n2xdbA00\n2hfsA02\n5hdiA00\n3gagA00\n3we0A03\n1x1mA00\n1ohfC01\n2j9wB00\n4tx5B00\n2orwB01\n2fztA00\n3dzoA02\n4nj9H02\n2pjyC00\n3m6aA02\n1zxqA02\n3ckdA02\n1y4cA03\n3frnA01\n4hscX03\n3otdA00\n1koeA00\n1avyA00\n4w4mH00\n1s2gB00\n1xovA02\n3umcD02\n4n6jA00\n3r0uB02\n3vl9B00\n1vqqA01\n2omzB00\n3r8jA00\n4d02A01\n2wnhA00\n5y4fB00\n1bg6A01\n2h0bC00\n1xk7A02\n3mcpA02\n3pm6A00\n2sakA00\n2p2vA00\n4btfA02\n3nb0B02\n1gkpA01\n2m7zA00\n3he0B00\n3vvmA01\n3ho1A03\n1dbhA01\n1i7dA01\n1sg1X01\n3e0gA03\n2vliB00\n3alxC02\n1hl6C00\n4ah6A01\n4cxpA00\n4pbhA00\n4cgyA01\n4cvhA01\n5a9gA02\n4twlA00\n4qreA03\n4c16A03\n4j6oA00\n1j99A00\n1wilA00\n1uvjA03\n1l7dA02\n4on1A02\n1l5jA05\n4m4pA03\n4p0pB02\n2obnA02\n2cpyA01\n1wthD04\n1i7nA03\n5m8hF01\n1lshB00\n3fvcA01\n3anoA00\n4uapA00\n1tocR02\n4ywrA00\n3sk3A02\n5wjpA01\n4im9C00\n1vzyA01\n1zcdA00\n1p6qA00\n2nt4A00\n2ynmC01\n2govA01\n1o9pA00\n2fsjA01\n2jbvA02\n2w51A02\n4bn4A02\n2q2eB04\n3vivA00\n5gz3A01\n2jenA00\n2b69A02\n2vugA01\n2ck3A01\n4nmyA02\n5iszD02\n3olcX02\n4ru1A01\n2jz6A01\n3hp7A01\n1nh2D02\n1q60A00\n2x5rA01\n2c55A01\n4d3tA02\n3qyfA01\n2dy1A01\n3lpmA01\n3qyzA01\n3gz1A00\n2khiA00\n4gywC01\n3n2bD01\n1f46B00\n2nugA02\n3plwA00\n3ar4A02\n2eq5B01\n3pg5A00\n4o5fA01\n2ifuD00\n4r1hA02\n3htvA01\n3gn3A00\n2qsvA02\n3mdnD00\n3l2oB01\n4ab5B01\n1wvqC00\n2guzA00\n2vk8A03\n3wnoA03\n3uo9C01\n1ws6A00\n5p9vA00\n4kroA04\n2psbA00\n1rh9A00\n1floA01\n4efpA02\n2vqeP00\n1vl6B02\n3wewA00\n3iraA00\n4dsdA00\n1fjcA00\n2nruA02\n3ivtA02\n2j8hA01\n4x3kA00\n2pbzA03\n1qazA00\n1uwwB00\n2wjvD02\n2fsfB03\n4ypjA02\n1elvA02\n2krbA00\n3i6dA03\n3gr0D01\n3bwxA00\n3njtA01\n1rm6D04\n2csvA00\n5dzzA02\n4z88A00\n1avwB00\n3wecA00\n3e3xA01\n3vtiA06\n4i50F03\n1ymtA00\n1nlsA00\n3lssA01\n3h78A02\n3e1uA00\n1pq1A00\n2nteA02\n1p94A00\n4oxwA00\n4v08A00\n5ob5A00\n1rw2A00\n1atiB01\n1cipA01\n1zkcB02\n2v7kA02\n3ollA00\n1ygyB03\n5vogA00\n2l57A00\n2qu8A00\n3otiA01\n2gxqA00\n3rrsA01\n3jwnE00\n5kbmA00\n4luaA00\n7ahlF01\n2b5eA02\n3dcfA02\n4nfnA02\n4d8mA03\n2xauA04\n4gsxA03\n2bklA01\n4i8hA02\n3dd7C00\n2asuB02\n4hz9A00\n2kg5A01\n3ihtA00\n1stuA00\n3zzoA00\n2xykB00\n4cpdA02\n4g3fA01\n4zbwA01\n2a9dA01\n5kbpA05\n3v5wG00\n1qq5A02\n3lcnB00\n1rxtC02\n5iwhA00\n1b33N01\n2k9hA00\n3rmhA00\n3gygC01\n1nmpA01\n3vkwA03\n1ktkF02\n3v6iX00\n1uzbA01\n1g5hB02\n3pc7A00\n3rr6A01\n3mc6A02\n1ybiA02\n4dhiB01\n4usaA05\n1ni5A02\n3pjaJ01\n3df7A01\n4cc9B00\n2gysA02\n2bl8B00\n3dlsB01\n2csuA03\n4cngA00\n5jmuA00\n3sxlA02\n3ighX01\n1cl8A00\n4u9rA02\n2c78A03\n2o6lB00\n5u23D01\n2dhoA00\n1s0iA02\n4mt4A00\n3vppB00\n2yxyA01\n4x9mA02\n3tp9A02\n5tz5A00\n4v1xB01\n4kf8B00\n3hpyA01\n4j15A01\n4qpnA00\n4kqpA02\n2aeuA02\n5hvqC01\n4pz7A01\n3hz7A00\n2k5dA01\n4fzmA01\n2rcnA01\n3us3A02\n5eh1A01\n1nh1A01\n4fqnC00\n3okpA01\n3ii9B01\n2lzlA00\n4i92A02\n2v1qA00\n5ja4D00\n1l5jA02\n2r8qA00\n5d1iA00\n3ivfA02\n1n1cA01\n4zo2A00\n3fhtB01\n4zdjA01\n2jmbA00\n2e45A01\n2onsA01\n4oo4A00\n4p17A02\n4pkfB00\n2qyfB00\n3cijA02\n3t30C00\n1cukA02\n2xqhA03\n2kq9A00\n2vr3B02\n1uunA01\n4bryA00\n3kl4A03\n3iqtA01\n1mdbA01\n3tlxC02\n1up9A00\n4nbuA00\n1oflA00\n3be6A01\n3fkaB00\n1hbkA00\n4eadA01\n2gumA02\n3ir3A00\n4w4lA00\n3zzyB00\n2hlzA00\n1kf6A03\n4uavA01\n1skvA00\n1n7oA02\n3ctgA00\n1m5yC02\n4zcnA00\n4hfvA01\n4jgxA00\n5jenA02\n2a1sC02\n3p3cA01\n2xp1A02\n4k2jB00\n1pn0A03\n2l5oA00\n2y8eB00\n3qp3A00\n3f8uB01\n3bh1A03\n2py6A01\n4bwcA02\n4i9oA00\n1wyuA02\n2eebA00\n5k3wA01\n2jobA00\n1txqB00\n4qtcA02\n2efjA02\n1t3jA00\n1gmnB01\n3vwaA02\n2dbsA00\n1mg7A02\n3mmlE02\n5ezqA02\n4me3A03\n1pffA01\n2qruA00\n3ruiA00\n3nqbA01\n2pt7G01\n3sqfA00\n3hdxA00\n1uwvA03\n3fotA01\n5g4iB01\n4r5rA00\n2zibA00\n2p3yA01\n3bf4A01\n2nzcB00\n4pwyA00\n3ht1A00\n4q4gX00\n1ygyA01\n3g13B00\n4usaA06\n5tf5A03\n4c5kD00\n2e0nB02\n2exuA02\n4h7lB00\n2dfvA01\n1td4A00\n5u4hA02\n2wnvD00\n5cbeF00\n5ii8A00\n1x5mA01\n4c48C00\n1g8kA02\n2h1vA02\n2zbxA00\n2ffjA01\n1k8kA04\n1nxhA00\n4nc6A02\n4xpzA02\n2c1cA00\n2id0A02\n1ogaD01\n3e0gA05\n3o1nA00\n3td3D00\n4uqtA00\n1vpkA02\n3zh5A00\n3q6bA01\n3u0jA00\n1n0zA00\n3v3kD00\n4aybA06\n2i10B02\n3apqA02\n1rk6A03\n2ctoA01\n3dtnA01\n3ofkA00\n1miwA01\n2l1sA00\n3b7cA00\n1oi2A01\n1xuvA00\n2okuA00\n3hj6A02\n3fg1A03\n3iv4A00\n4i4tA02\n3gu3A01\n1ryp100\n4gakA00\n1x9fC00\n3d7lA00\n1cd3B00\n3b0dC00\n3l8aA01\n5n6yA01\n3rpeB00\n2ddxA00\n2ijaA00\n2qh9A00\n2qrvA01\n2ci9B00\n1c1kA02\n3ce7A00\n2dbbA02\n2kswA01\n3f7wA03\n3v6cB00\n3fvcA02\n3o63A00\n4gl8A03\n3powA01\n3rfxA01\n1lvkA05\n2fbnA00\n4ef1A02\n2nnwA01\n3h8vB00\n3rc1A01\n5u78C00\n1y0bB01\n2yv7A01\n2qy0D02\n1wkaA00\n1jkeA00\n3qwgB00\n5nonB00\n2zdiC00\n3gqvA01\n2uvoA04\n2e8eA00\n3b34A05\n3jvgA01\n2yxlA01\n3kd4A01\n1udxA03\n3qzmA00\n3qdkB01\n4pdxA03\n3i4uA01\n5cxwA00\n4hcwA01\n1uurA02\n2btqB02\n1u8vA02\n3ipfA01\n4m0mA03\n4l9mA01\n1hfeL02\n5a62A00\n2vouA02\n1bihA04\n4js8A01\n3if8A03\n3sm3A00\n2ec1A00\n1knyA01\n2aplA02\n2wy4A00\n1jyeA01\n5j62B00\n1txkB02\n3to7A01\n5k9bA00\n3rloA02\n4xjvA00\n3hq1A02\n4ywoA03\n2dtcA00\n4zc3A00\n3wv4A00\n1floC02\n1lvkA03\n3clhA02\n5fi3A02\n5jjiE01\n4nnaA01\n1g41A02\n1hqkA00\n2pziA04\n5dmyA05\n3c9zA02\n2a6cA00\n3zdoB00\n2wz9A00\n3nvwC03\n4tzcD00\n2hjhB01\n4zyaB00\n3tqtA02\n3aoxA01\n2jynA01\n2khjA00\n4psrA01\n3gzbA00\n4hhaB01\n2vqeQ00\n2gkmA00\n4r33A00\n2griA01\n1cydA00\n3dtyA01\n1t0fA01\n3ga1A00\n5jq1A00\n2gfhA02\n4jx2A01\n2prrA01\n2dkxA00\n1z2zA03\n3hfiA00\n3tn4A00\n1o5uA00\n1vj7B02\n3ehgA00\n2d1yA00\n3qxyA01\n5bxoB00\n2jifA01\n1qqhA00\n2gf2A02\n3uf6B00\n1n7dA06\n3ik4B01\n2bh8B01\n3qa8H03\n3nhvC01\n1svfC00\n1r12A02\n2gumB03\n5uukA00\n3zwfA00\n4hhjA01\n1rfyB00\n2l80A01\n3qx3A02\n2mpvA00\n3nhqC03\n2jvaA00\n2ig8A00\n4nooB00\n1j2oA00\n2y27A02\n2hh8A00\n1sjqA00\n4nn5B02\n4uhqA00\n3b9fL00\n2bnuB02\n1rh6A00\n3io5A00\n3oymA02\n1yq2A05\n3rrwB01\n5a0yB02\n4bh6L00\n3c4bA02\n2rg8A00\n4d7sA02\n2phnA01\n3k40A01\n2pkaA00\n3zeuA01\n3zqjE04\n3tjoA01\n1toaA02\n1l3wA03\n1x3lA01\n4xcvA02\n1ytlA00\n4iymC01\n3mkrA00\n2gd9A01\n2zodA02\n1o9gA01\n2qnuA00\n3fh3A00\n1lucB00\n1ileA03\n3do5A01\n2fg9A01\n2q35A01\n4qnsA00\n3qpbF00\n2ynmC03\n3iylB02\n3g2fA01\n2acvA02\n3db2A01\n3f1xA01\n2b9kA00\n3zciA00\n3nddA02\n3loyA01\n2uuuB02\n4zpjA02\n5dgqA01\n2f9wA01\n4faoC00\n3e61A02\n5aiuA00\n3f6aA00\n3bfpA02\n2carB00\n2zosB01\n3tk2A00\n1un8A02\n1vchD00\n3t7zA00\n1lu4A00\n1z41A00\n4r7yA01\n1eluA02\n3fncB00\n2p06B00\n3p1tA02\n3hi7B01\n3svkA01\n4npjB02\n2rdgA02\n3cvjC00\n4iv9A02\n3w6sC00\n2gqfA03\n3pidA03\n2rblA02\n1d7mA00\n4k4kB01\n2w59A01\n3gbwA00\n3mcaA01\n3eayA02\n1z5zA02\n2i6dA02\n4f02A01\n3peyA02\n2m9uA00\n3h0dA01\n1ok0A00\n1z82A01\n2qsfA03\n3gniB02\n2oo4A02\n3k8wA02\n4r75A01\n5m72A00\n3i1aA03\n5hfiA00\n2xzzA00\n3zrhA01\n4x84A02\n2v94B00\n4cykA00\n2wdcA01\n4qfeB01\n5kutA00\n4w8pA02\n2j0wA02\n1zzvA01\n2gkeA01\n2zi0B00\n3hn3A03\n3holA03\n3kyjB00\n2p3yA03\n3be4A00\n2cs3A01\n3p9zA02\n4jpbW02\n4bc3A01\n1kg2A01\n3odhA00\n2luwA00\n4dcuA02\n3isyA00\n3qu5A02\n5fzoA01\n4jbeA02\n1fj2A00\n1o22A00\n3hgfB00\n4kxvA02\n3e7rL01\n1hh8A00\n3e0hA00\n2pcqA00\n2gfgA00\n2ly8A00\n2vpzB02\n1rutX01\n4jcsA02\n3mdmA00\n1sddB03\n1akoA00\n1ml9A00\n1divA02\n1sjwA00\n1r5lA01\n2p1oB01\n1lw7A02\n3lyhB00\n1lbvA02\n2dgmA02\n3eayA01\n2pkeA02\n1ds1A00\n2wr8A02\n4xtvA01\n2r51A02\n1oahA01\n2ju5A01\n4xs5C00\n2qsxA01\n4pzvA01\n4cujA02\n3mmlF01\n5wl1A01\n2h62B00\n4jzjC03\n3d2mA02\n3kkeD02\n4hheA02\n3pqsA02\n4x3aA00\n4euoA01\n3jtnB00\n4bsxA00\n2fa8B00\n3purA02\n4yc5A00\n1qr6A01\n1imvA02\n1nvpC00\n1hzhH01\n2j63A00\n1bctA00\n3jy6D02\n4pnlA00\n5jntA00\n3ce2A02\n3hnrA00\n4h63Q02\n1fr3A00\n1w79A01\n2ge3A00\n1jm7A00\n2qf4A01\n1vryA00\n1fnfA01\n1g25A00\n4b43A03\n4j0cA00\n1el6A03\n1x7dB01\n2qtsF01\n4pabA04\n4e6uA02\n3rvyA02\n3iq2A00\n5jd6A00\n1a62A01\n3mjkA00\n1oz9A00\n4oydB00\n3ju4A04\n3pk0D00\n2kxyA01\n4dglB02\n3rm5B02\n5gy7A01\n2r9fA02\n3mgbA01\n4ezbA02\n3pycA00\n2lhfA00\n3hutA01\n3i06A00\n1k3sA00\n5b5lA00\n1nhwA00\n1l3kA01\n3u1wA01\n1f35A00\n3it8D01\n1iv8A04\n4o38A01\n5c79A00\n5lndB00\n2huhA01\n4g50A01\n1kqfA04\n5h5zA02\n4nnoA01\n1mscA00\n2gmwA00\n5kj4A01\n1oeyL00\n3kihC01\n4xq7A01\n3frnA03\n2i1pA00\n3fstA00\n4tkzA00\n4dohB02\n3glkA04\n1a2pA00\n2hafA02\n3l49A01\n1o59A01\n4gyiA02\n2re7A00\n5jgiA00\n4wbjA00\n1uxyA02\n3k4zA01\n5gudE02\n1hy9A00\n1o69A02\n4xo9A02\n3askA01\n4hr3A02\n1vs3A02\n3bexA02\n3wdqA00\n2kvaA01\n3frmA00\n3mu6A01\n4ygmB00\n1oryB00\n4bt2A02\n3snxA00\n3no3A00\n2jnaA01\n1zvuA03\n4ognA01\n4idcA02\n1sauA02\n4kt6B00\n1auoA00\n4ne3B01\n1weoA00\n1jnrB01\n2rslA00\n1wqkA00\n4wmeB03\n1f1eA00\n2jbmA02\n4aq4A02\n3bp6B02\n3fhnA04\n2wjnL02\n1kp8A02\n2hbpA00\n2e0qA00\n3u4tB00\n1t1jA00\n2e5wA01\n2r3aA00\n1dhkB00\n2yilA02\n5gjhA00\n3tqnB02\n1hwtC01\n4joqA02\n3fw2A00\n2o0bA01\n2geeA02\n4mi0A00\n1j09A03\n2vrsA02\n4py2A03\n3vldA01\n1jc4A00\n5xxuI03\n4mupB00\n2arhA02\n3i08B01\n1lj5A01\n1gmxA00\n3iacA02\n3pnwO00\n4gnrA02\n1hyhA01\n2vpnA00\n3k8rA01\n2qkhA00\n3ztgA00\n2ov6A01\n3a1yA00\n3f1lB00\n3gkuA03\n3h31A00\n3e8lC00\n1h70A00\n2imfA00\n3ghmA01\n5d8nA01\n3fd9B02\n2axqA01\n5n17A01\n3t5vA00\n3f02A01\n2xf7A00\n4biuE01\n3agdB02\n3hy3A00\n2li8A00\n2mraA00\n3hutA02\n4oi4A03\n1tdpA00\n2o5vA01\n2wtmA00\n1i9gA02\n4ix8A02\n1ybtB00\n1jlxA01\n3rmuA00\n3nz2A00\n2h5cA02\n1u3eM01\n4q7eA00\n1kmdA00\n4qtpB00\n2yc4C00\n2reeA00\n2rfvA01\n5jeaB00\n4g59C01\n2f2hA02\n2bc4D02\n4gkbA00\n4yl8A03\n1wf6A01\n4wd3A02\n2y8kA01\n4io2A01\n5pagB02\n4rndD00\n2lrjA00\n4kjdB00\n4n04A00\n2i06A02\n3ewbX00\n4aqoA00\n4jgiA01\n3lv9A00\n4mnnA00\n3nrhA00\n1spxA00\n4bk0A01\n2oo8X01\n2h21C01\n3nuqA02\n2x3hA00\n3b77A01\n6bweB00\n4p6qA02\n3zvlA02\n4jimA03\n4upkA02\n2cwyA00\n2kyzA00\n4qflA02\n4az3A00\n3juwA00\n1jmoA02\n3wsfA02\n5veiA00\n3dtgA01\n1ffyA02\n4a2lF02\n3ulpD00\n3kdfA00\n2a6zA00\n2yqyA00\n5h5oA00\n1fm2B02\n1wlyA02\n2qrdA00\n4qc6A00\n2o8gI00\n3v7bA00\n3zo9A01\n3a99A01\n5ulcX00\n2oebA00\n4mb1A01\n3vrdB03\n3mczA02\n2nn6G01\n2gzqA00\n1r89A01\n3i2dA02\n1pn5A00\n5w3rA00\n3lhxA00\n5gutA04\n4qc8A00\n3rc3A01\n1rp0A01\n3o2eA00\n2vo9A01\n4m0mA02\n2o8bA04\n2omlA01\n2orwB02\n3fdwA00\n3k9cB01\n1ix2A00\n5jn0A00\n4n5cD06\n4ccsA01\n1bcpF00\n3o83A00\n2rspA00\n4trtA03\n4b8cD02\n2v2fF00\n3n3mB00\n1v39A00\n2v3mB00\n2vhlA02\n2npbA00\n3tixB03\n2ke9A00\n1tukA00\n2gf3A02\n4powA02\n3k3sH01\n2bmoB00\n2qtlA02\n1ltsA00\n1osyB00\n3rppA01\n2nrjA01\n4rv5A02\n3jami00\n3qwxX01\n1q7zA01\n4lhxE00\n5jouA03\n4jz5A00\n2cw8A03\n3necA00\n1a8dA02\n5czfD00\n3ajvA01\n3j26N01\n2rorA00\n4qgsA02\n1u97A00\n2blnA02\n2xggB00\n2cdcA02\n5jryA02\n2j3tC00\n2e8nA00\n1a9xB01\n5vn4B00\n3wucB00\n1o57B02\n3a06B01\n3luyA02\n4c72A02\n3pg0A00\n3hklA00\n4houB00\n2as0A03\n5b1aE00\n4gl8A01\n4xr9B02\n3qekB01\n4z4dA03\n3ikmC01\n3k6oA02\n3dxeA00\n1neiA00\n3facA00\n4a64A01\n3qtaB00\n2q2eB02\n2wweA01\n4chgA00\n4tm7A00\n3lmmC04\n4m51A02\n2byoA00\n2oarA02\n1xl7A02\n1lt7B00\n4iyjA00\n5oswA04\n3r9bA00\n5fifC02\n2hyvA02\n1m9sA04\n6blgA01\n3qufA02\n2gi3A02\n4q7fA01\n3bq9A01\n4d2iA02\n3uhmA01\n2ehoA00\n2zsjA02\n2m5vA00\n4cvnG00\n1llaA01\n5hfjC00\n3gwjA02\n4aybF02\n3op7A02\n4pkyE00\n1g7sA03\n3ezjA03\n2hq6A00\n2ok2A03\n1w2wA00\n5oomb00\n3r27A01\n2i7rA00\n4iqbA00\n3otgA02\n1h03P02\n2yxhA00\n1vcaA01\n3ljlA00\n3oaaa01\n1txdA01\n3b2yA00\n3aofA00\n1ukvY00\n4w8kA01\n3s5bB00\n2yimA02\n4w88B00\n2aydA01\n4il3A02\n1pkoA00\n3kttB02\n3l4nA00\n4o89A02\n5tbxB00\n2kr7A01\n4klxA00\n3b4qA00\n2oktA01\n4zu2A01\n1hf9A00\n1w32A00\n2ebyB00\n4xboB02\n3i9wA00\n3hczA00\n2krsA01\n1ta3A00\n4csrA00\n4m66B00\n1ggpA01\n3hx3A02\n2fiaB00\n5ty6L01\n4q6rB01\n4n13A02\n3vajB02\n1z2qA00\n1tgsI00\n3rrsA03\n2uy1B00\n1ax8A00\n3robA00\n1sfnA00\n2odxA00\n3tqvA01\n2qrrA00\n3gnfB03\n3oeeY02\n2ekkA00\n5c5uB00\n2ookA00\n1tafA00\n1zodA02\n3s6jA01\n1yovC01\n2c4xA02\n3p0wC02\n1ghpA00\n4cfiA01\n3oizA00\n2bb0A01\n1q25A02\n3deoA01\n3ibwA00\n3gg2A02\n2essA02\n2a7yA00\n3s6mA00\n2x5fA02\n4yzrA00\n2dafA01\n4bxfA02\n3tj9A02\n1lkvX02\n2ov0A00\n2yqzA02\n4qfvA02\n1oi7A01\n1ux5A01\n1cb8A01\n3in6A01\n1q5yB00\n2retA00\n2hdiB00\n1zgkA00\n3eevB00\n2dr1A01\n3zyqA01\n2hafA01\n5gmdA02\n3ddvB01\n4jb7A02\n3b5nK00\n2zy4A02\n1z63A03\n2gf5A01\n4au2D01\n4ze1A01\n3utnX02\n1cczA02\n1d1nA00\n4fc7D00\n4j82A01\n1q7eA02\n5uggA02\n4faoc00\n2l92A01\n5tdeA01\n2gzsA00\n3ldaA01\n2vk9A04\n3i7jA00\n1aipE03\n5cbeE00\n2f5tX02\n5rubA01\n4u2hH02\n2r1iA01\n3ll7A01\n4xgqA00\n3f9mA01\n4f0zA00\n4dgjA02\n1x1iA01\n2qmaA01\n3e8oB00\n2dtxA00\n2nsmA01\n3vokA00\n3oymA04\n3ns6A00\n4mcoA00\n2pkeA01\n4jk8B01\n2bx2L02\n4wkaA01\n5eljA00\n3anwA01\n2qytA02\n2amfA01\n3ppeA01\n4dq6A02\n5jhxA04\n1yfqA00\n2ikbB00\n4izdB02\n2i1oA01\n3vr6A01\n2b8tB02\n3fgrA01\n1ukkA00\n3ls9A02\n3mstA00\n2bh7A01\n3s9kA01\n2hxrB00\n1e9rD01\n2e85B00\n3r1fQ00\n2zu9B00\n5lomA01\n3ej9B00\n4kxfB02\n2e26A03\n4zdsB00\n2r1jL00\n1y9qA02\n3pg7A01\n4fflA02\n4hczA00\n3pf2A01\n3eb7A02\n1mdaH00\n1kngA00\n3px8X01\n2hc9A02\n5eiqA01\n3ckmA02\n4fojA00\n2qhqB00\n5xexE01\n3hrsA02\n4g9sB00\n2w83C00\n4a1nA02\n4kqpA01\n3gf3A01\n3dwoX00\n2xgtB01\n5a67A00\n4glxA05\n1vk4A00\n2v31A01\n2cmrA00\n1u0tA01\n3gylB02\n2hlcA02\n2w8nA02\n2vngA00\n5c9gA01\n3bt4A00\n4aybG00\n1jetA03\n2d5wA03\n4atoA00\n1v3wA00\n4gosA00\n2fs1A00\n4axpA01\n5fmgH00\n4omfA00\n1ig0A02\n1t4oA00\n1lpbA00\n4e15B00\n4an8A02\n1rl6A01\n2optA02\n2r8oB03\n4rz0A00\n3nnfA00\n2lcuA01\n1cttA01\n3m4yA01\n3i3fB00\n3gk7A02\n5fkyA02\n3egnA02\n2xolB00\n1deuB00\n3fgqA02\n4esnA00\n5l2pA00\n1f0kA01\n1pzlA00\n1ohgA02\n2oo2A00\n1ft9A01\n5jixA00\n2qztB00\n1kdgA02\n1vliA02\n5b66U01\n4lx3A00\n3d9rB00\n4r85A01\n3mogC02\n3eabG00\n3o3uN02\n3ip1A01\n2nutA02\n1n7vA03\n3rnlA00\n1d7cA00\n3zg9B02\n1upqA00\n4de9A02\n3qvlA00\n4wfoA02\n1vcfB00\n4e98C00\n1pbyA03\n4l9oA00\n2looA01\n3fblA00\n3q6oA01\n3l9vC00\n2k1mA00\n4qfuE01\n1mswD02\n2nxfA01\n3q7aA00\n2hjhA02\n1ef8B01\n4hbzA00\n3qv2A02\n4do4A01\n4chjA00\n2g0cA00\n4c2m400\n2rdqA00\n5khqA00\n3eodA00\n5m0yB01\n5c2zA01\n4qjvA01\n3ungC01\n5dj7A02\n3iu5A00\n4glkA00\n5n0mA01\n4jn7A01\n3kvtA00\n4o9dA00\n5c1iA00\n4pg7A01\n5o99A00\n3cngA01\n1l7aA00\n2c5jA00\n3k9vA00\n3uceA00\n1h9eA00\n1kx5A00\n5diiA01\n1gakA00\n2py5A05\n1xu6A00\n2zf9B00\n2ra1A04\n4fqpA03\n1c4zA03\n4lrqA00\n3ml4C01\n2wm3A01\n5pxlB02\n2wadA04\n3u6pA01\n2nzxA02\n1httA01\n1f0lA03\n2ckzC01\n2zctA01\n2m4vA00\n2w40A01\n1oc2A02\n3zghA00\n3pdyB00\n3o3mB02\n1pz4A00\n5al9A01\n4jehA01\n1vjnA00\n5of3A00\n3p8aA01\n1bprA00\n3vthA01\n2v1mA00\n3ir4A01\n2d7cC00\n1fc6A01\n1ukfA00\n1b0uA00\n4l0cA00\n4iufA00\n6blgA02\n2fwrA02\n3mtqB00\n2hqbA02\n3nynA01\n1sv0D00\n4e2xA01\n2hdoA01\n3lk7A02\n5gaeI00\n1ut9A01\n5u56A01\n4xw3A00\n2i9dA00\n5v00B01\n1a5tA02\n3wqoA00\n4aaaA01\n2zsgA01\n3u0oA02\n4giuA01\n1ycdB00\n2rl8A00\n2r2dA00\n3ifrA01\n2a2fX02\n3g0tA01\n2vqrA02\n3qx1A00\n2b7kA00\n3mybA01\n1mkiA01\n1x53A01\n1jfxA00\n5domA00\n3pv7A01\n4aflB00\n3laxA00\n1gdjA00\n1vomA05\n3l9wB02\n1o7dA01\n3zkcA00\n4qbbA00\n4ofzA01\n3d98A02\n5ejwA00\n5hdmA01\n1yvuA02\n2wz1B00\n5u47A04\n1iv8A03\n1vi0A02\n4nv5B01\n2jzkA00\n3v77A00\n1qdmA01\n3asiA01\n1u08A02\n3mkcA01\n3bbaA00\n1al0B00\n1dj7B00\n3popA02\n1q5zA00\n4i5qA01\n2de0X03\n2oj5D00\n2v4iA00\n1nijA01\n1zv1A00\n5i0uA00\n5tz6B02\n4az9B00\n1j0pA00\n1g3iW02\n4nh4A01\n4yubB01\n3ip4C01\n4ltyB01\n2ozzA02\n4gqzD00\n2gsmB02\n2oy7A02\n3e3mA02\n3c8yA01\n2if4A02\n5b1aD00\n3gv4A00\n3n0xA01\n4kd5A02\n2c8mB00\n4jniU01\n3k5wA01\n5uzgA00\n1cyxA00\n1hz6B00\n3pkzG00\n4oh1A02\n1y0pA01\n1iz0A02\n2ic2A00\n5j9cA00\n1z47A03\n1q16B01\n1xezA03\n2de3A02\n4bloG01\n1xmbA01\n5fokB01\n3e0xA00\n1aozA02\n1gvcA00\n3pevB00\n3og2A01\n1nr0A02\n5mlnA00\n3rkgA02\n3rqwA02\n4b2rA02\n2gd5B00\n2p1jB02\n3eqcA02\n2w2xC00\n1xy7B00\n2gskA02\n4oaqA02\n4epsA02\n1cg5B00\n2pohF01\n3guwA00\n3g8rB02\n1hn3A01\n1gaxA05\n3wt0A02\n2qlcA00\n5lxvA01\n2jhpA03\n1m1jA00\n1zr6A04\n3g7nB00\n2vgnB01\n1ykhB00\n2h09A02\n5jd5B00\n3imkA00\n1sxlA00\n1f3zA00\n4m1gA00\n3i65A00\n3vpaB00\n2jd3A01\n1f3mA00\n4rnlD00\n4e01A02\n1sj8A02\n4ilkA01\n3katA00\n4ntwA01\n2w1jA00\n5tt0B00\n3obyA01\n5akrA02\n2aegA01\n3sp1A02\n4kpkA00\n4gs5A01\n1nwbA00\n3etvA01\n5c5oA02\n2lqvA00\n5b69A00\n1kskA01\n2ymmA02\n1e0aB00\n4mdwA00\n4xs9A02\n2wjsA02\n1jyeA02\n3khiA02\n4eo1A00\n3rqiA01\n3fkcA00\n4s3jB02\n1i1rB00\n2b78A03\n4cgxA00\n4hdoA01\n4x9eA01\n2l6jA00\n2bonA02\n4je0A02\n4x30A02\n3ff4A00\n4gwgA01\n5dmmA00\n2hayC00\n3enhC01\n2zo4A01\n4ap5A01\n1xu1A00\n1wznA01\n3qq8A01\n3agxA01\n3r9qB02\n1p7lA01\n3oheA00\n1wfnA01\n3fhdA01\n5uiyA00\n4s0uC00\n4m1uA01\n1sqsA00\n5a1nA00\n2c35A00\n2vtfA02\n4eirA00\n2doaA00\n4x28A01\n3f5fA02\n1mtpA02\n3zvlA01\n3u1kA02\n2awiA01\n2yudA01\n1vq8B01\n4cblA02\n1r0vA01\n1ynpB01\n1q72H02\n1zpuA03\n4bk8A00\n4lk4A02\n3lfuA02\n3ph9A00\n3vu1A01\n3rc3A04\n3n3fA01\n4czlA03\n2mvtA00\n2n3zA00\n1cfbA01\n2b4qB00\n4x83A04\n4r7yA04\n4yudA01\n2yhaA01\n3u7qA03\n2y23A01\n3n2oA03\n2jkbA01\n1mqsA03\n4h79A00\n1lkxA02\n4hcsA00\n2bm0A03\n2b6cB02\n3e7jA01\n1g6uA00\n4ajyV01\n4k35A02\n2vj4A03\n3vg8C00\n2oztA02\n1qu3A04\n2uytA01\n2wviA00\n5l4lA00\n4l7aA00\n3epuB01\n2q2fA00\n4rw0A00\n2rreA00\n2wzqA02\n2wp8J01\n3girA02\n2icuB00\n1fmkA02\n2gr7A00\n4ae5C00\n2j8mB00\n2f4iA02\n3fwnA03\n3gfsC00\n2bs2A03\n3atsA02\n5ig0A00\n2ypvA02\n2cb9A02\n1xb4B01\n1vraB02\n1hh2P01\n2vf7A03\n4by6B00\n1fd9A02\n3bxjA02\n1w5qB00\n5wedA00\n2h3oA00\n4z0oA00\n3ju8A01\n2b9vA02\n5tkwA02\n2zy4C01\n1nthA00\n1r6wA01\n2ef7A00\n2hczX01\n4e4tA03\n2d8sA00\n4hvkA02\n5ck3F00\n3vn5A01\n1rsoB00\n2xhvB02\n3mgjA00\n2x5cA01\n3bcwA01\n4a0sC01\n4qobA00\n5aykA03\n2diiA01\n1xhnA01\n2hqyA02\n2odeD01\n1peaA02\n3qfgB00\n4athA00\n4alzA02\n1tm9A00\n4bbjA03\n4ix1A00\n1pzxB01\n1xp4C02\n1eerB02\n4k3bA06\n3ghgB01\n2xjpA01\n3vlnA01\n3iv0A00\n1t0pB00\n3d40A00\n3r0sA01\n1wisA01\n3vqiA01\n5ghgA01\n1jrmA00\n4hnlA02\n5da5c00\n5ix3A00\n3vpdA02\n1tqhA00\n2qfcA00\n3sc7X02\n3l6iA00\n5nsaA00\n3vvfA01\n3hr6A02\n5fljA00\n3gyrA02\n1uw4B00\n3udfA01\n5tseA00\n5mmiU01\n2b3yA01\n3mfrA01\n4dhxA00\n3mcxA03\n3qthB00\n2d28C02\n2dk7A00\n1uaaA02\n1ciiA01\n2o26U02\n3rsiB02\n4evwA00\n4hdeA00\n3tmgA02\n3cecA00\n4kikA01\n3k5oB04\n4u8uO02\n3ehfB01\n4ekxA00\n5gaeG01\n2rasA01\n4z7fB00\n5njjB00\n1jfiB00\n1vyhC01\n4cq1B01\n2q0yA01\n1yarO01\n4udtA01\n4p04A01\n5uj0A00\n4am6A03\n5fewA00\n3ermB00\n2kxqA02\n5icuA00\n1yx6A01\n4q1vA01\n2jxdA00\n1a5tA01\n3m4iA02\n2g0tB01\n2r2aA00\n4ebbA01\n4fuqA02\n2wzpR03\n1y3tA02\n2yykA01\n3azoA02\n4wiwD01\n4nawA00\n4m8iA02\n3mk7C01\n4kvgB01\n3l41A01\n3sk1A02\n2m47A00\n2rioA03\n3g3kA02\n4ympA00\n5eswB00\n1elkA00\n3kxwA02\n2jbmD01\n3lwjA00\n1dq3A02\n3n75A04\n3rd4B00\n2yurA00\n4kliA01\n3s8kB00\n1xrsB01\n2c4nA02\n2bm5B00\n1a04A01\n4ld6A00\n4lbaA01\n3qwnA02\n3pvlA01\n3zssA03\n3tq6B02\n2gysA01\n3hn7A02\n1mw9X01\n1nkrA01\n1u6mA00\n4xslC00\n1eljA01\n2jubA02\n3bmvA04\n1hskA03\n3smdA00\n4jo7A00\n3a35A01\n3qexA01\n3bigA01\n4cgyA03\n2jiiA01\n2ymoA02\n1zpuA02\n3lv0A01\n4my5D01\n3hhlC00\n1qkrB00\n2xq0A04\n2gt1A01\n4ifdK01\n3ilmB00\n4l3fA02\n3or1A04\n2r19A00\n1gpjA03\n3pc3A03\n3t9yA00\n4jklA02\n3p1vA01\n2kgsA01\n3e4wA02\n1kl9A02\n2e7cA01\n3cqbB01\n1vkzA02\n3if8B01\n2qq4I00\n2qltA02\n3kluA01\n5a5wA00\n3reaB00\n1xrdA01\n4r1qB01\n4jn2B01\n3tsaA02\n4fkmA02\n3dkaB01\n4usoA00\n5afyH01\n1a7sA01\n4zwnB00\n4ex6A02\n1yj7D02\n4jqiL02\n1rhfA02\n4bl6D00\n3cbnA00\n1tljB00\n4h2gA01\n3er9B03\n3qxbA00\n1wcwA01\n1r45A00\n3ce6B01\n2hr3B03\n2askA00\n4aybA05\n5ecuA00\n5udzA02\n3i8oA01\n4ogqC03\n4bgjA00\n2ho4B01\n1lmiA00\n4ianA01\n3njcA00\n2b5xA00\n1d02B00\n1jjdA00\n4g1iB01\n2mntA00\n1b3qA01\n4uskA02\n5h2gA02\n1d6gA00\n4isbB02\n3ur8A00\n3cwzB02\n3fmtE01\n2nykA02\n4zieA00\n2dznA00\n1y10B02\n2a0bA00\n1hdhA01\n3fv6A00\n5i0qB02\n3dpuB03\n2halA01\n1ursA02\n3breB01\n1lxjA00\n2etdA00\n2phpB00\n2vfrA04\n3cp0A00\n2eiyB01\n4eweA01\n1vrmA02\n3p8kA00\n4jehA03\n5etrA00\n2r18A02\n2rhqB03\n2kcnA00\n5aqcB00\n4jxhA01\n2cwsA00\n1g5gA03\n3j27A05\n1dj0A02\n3qwuA03\n3d0jA00\n2v9rA02\n2jsxA01\n3mazA00\n5m1pB00\n1r77B00\n2ostD00\n2cjgA01\n3b55A03\n4a37A02\n2leaA01\n1yt8A04\n4lq3A04\n5lypA00\n3ct6A00\n2c78A02\n3d1pA00\n2gauA01\n2o98P00\n4elnA00\n3cx5C00\n4kx7A03\n2vp7A00\n2uz5A01\n3llpB02\n1je0C00\n3llcA00\n3ky7A02\n3h6nA00\n1sy7A02\n3rfzB01\n2ygoA01\n1uqwA03\n2jwkA00\n3cihA02\n2o01N01\n1v1hF01\n1i9zA00\n3utoB01\n2l4vA00\n4r6yA01\n4phzB00\n1p3y100\n2e9xD02\n3sqrA03\n4ql3A00\n4maxA00\n4ccgY00\n1nqjB00\n3slgC02\n1gyoA00\n2f02B00\n2ltkA01\n4aruA02\n4eyyQ02\n2ah5A01\n2lsbA00\n1tz0B00\n1agjA01\n4ablA00\n4g7xB00\n3i9yA00\n3kdgA02\n2pp6A02\n2jh3A01\n3hrdA02\n1d4bA00\n4xxfA00\n1vgjA00\n3f95B00\n1jvbA02\n1wkbA02\n3o3mB01\n2np5D00\n4zzxA02\n3wnzA03\n4ly4A00\n3bjsA01\n1y9qA01\n1eq9A01\n5ls3B00\n3rvaA02\n3ziuA01\n4wjmA00\n2dbnA00\n1kfwA02\n1zzmA00\n1wfuA01\n2okxA02\n2od4B01\n4p7aA02\n1v4pA02\n3fcmA00\n2o55A00\n2xgsB01\n2e1bA02\n4ltnA00\n2gy5A01\n1c96A02\n2ot3A01\n3uwcA02\n4dzhA02\n2hmhA00\n2pq6A01\n4kamA01\n3cl3A02\n3cc2Z00\n4u2vA02\n2ww8A03\n2yexA01\n1vr8A00\n1twyA01\n3bjeA01\n3bk5A00\n2rfmA00\n2qtcA02\n4n7rA02\n3hh7A00\n3on7B00\n1n8zC04\n2lteA00\n4df0A00\n2pr9A02\n3tn2A00\n3n7zA02\n2zwsA02\n3ci0K01\n3e15A00\n4ux5A00\n5ksdA04\n2i0kA04\n4tsfI00\n4hluD00\n3hr4C01\n5x8fA01\n3zssA02\n4oloB00\n1uujB00\n5ic7A00\n2gj8D00\n1m1eB01\n1vyrA00\n4lirB01\n2jubA01\n3o8bA04\n3nraA02\n2xioA00\n4ipaD01\n2b0vA00\n1r1hA01\n4e6kG00\n4hesA00\n4fvmA04\n2xdjF00\n1srzA00\n3na5A03\n2wurA00\n2yn3D03\n2cvdA01\n1av1A00\n2gttJ02\n4j8dD00\n3l81A01\n4pp8A00\n3qvpA02\n3cssA00\n1oizA02\n1ewfA01\n3nuaA02\n3ikhA00\n1n26A03\n3kv0A01\n1tyjA00\n3egcA01\n1w2tA02\n3eslA02\n4b5oA00\n5v07Z01\n1k0iA02\n4hi7B01\n2aafB01\n3m21F00\n2wtkC02\n2etvA01\n3n29B01\n2o06B01\n4ladB00\n3slkA02\n1o7fA03\n1ujpA00\n1m0wB05\n3en8A01\n4am6A01\n6bk0A01\n1ze3D00\n3f9tA01\n5hoqC00\n4nkrE00\n2hjjA00\n1zx8A01\n5tz6A01\n2woyA02\n2eo4A00\n3mkyP00\n1jgtB01\n4oo3A01\n4qtoA02\n3ezxA01\n3cr3A00\n1fg7A02\n3i6tB01\n4wk7A00\n4xvxB02\n3oocA01\n4eo3A02\n2je6A01\n6az1F01\n1nh8A02\n2c2nA01\n3wxmB03\n3rcoB00\n3e0gA01\n1oz2A03\n4qgpB00\n2mn3A00\n2bwnA02\n2yz0A00\n4maiA00\n2opiB00\n4m37A01\n1k1vA00\n3r8eA02\n2f8xM00\n2o8qA00\n1y62A00\n3go5A02\n2re3A01\n1cpyA01\n2vgoC01\n2f1fA02\n2remB00\n4zgnB00\n2o0bA02\n2gj4A01\n4gvbA00\n2d00A02\n4cj0A01\n4ehuA01\n3crmA01\n2kksA00\n1t2wA00\n2k75A01\n5y9eE00\n1wthA02\n4r60A01\n2cxiA01\n2qi9C00\n1l3wA05\n1ojqA00\n1t62B00\n3s28A02\n3l4gB02\n3q7rA00\n2yf0A01\n1n62C03\n1f0xA03\n1zvaA00\n1gkpB02\n4edhB00\n1dkiA02\n1y43B00\n4me7E00\n4hvkA01\n5tnxA02\n1sixA00\n2hpwA00\n4nk2A01\n4jgjA01\n3hlzB01\n2xzeB00\n3fspA03\n5ug9A02\n1txnA00\n3ca8A01\n4mqbB00\n1nctA00\n5thqA00\n4oi9A03\n4xemA01\n5bxrA03\n3im1A02\n1t3uA02\n5um2A01\n4lk5A00\n1hpiA00\n5ntwA00\n1va6A01\n2q4aA00\n3c4zA02\n1enfA01\n3n5aA00\n6aorA01\n5hbpA00\n4f1vA02\n4gf3A00\n3c3pA00\n3pmtA00\n4nxtA01\n1gcyA01\n2oezA01\n3md3A01\n4lubB02\n2kz0A01\n3orjA01\n2yd6A02\n4y9tA01\n2o0aA00\n1a73A00\n1e5rB01\n2wjeA00\n2e52B01\n3dfzA02\n4zavA00\n2w2gB01\n4kt3B00\n5cx7E00\n3lh2U00\n3v6oA02\n3o14A00\n3mk6B01\n3ovkA00\n5uofA01\n2r3sA02\n4zkdA01\n4pakA00\n3zpyB00\n3eh1A03\n3ie4A00\n3tl2A01\n1qbzA00\n3ep6B01\n2ff4A02\n2mp8A00\n4afxA02\n3s9dD02\n4pytA01\n3ssmC02\n3wnoA01\n2rdmA00\n2ka3A00\n2hfnA01\n3n01A00\n1a41A02\n3pl0B00\n2lyiA01\n5fyfA00\n2ayiA01\n3proC02\n3t5tA02\n4aurA01\n1p1mA02\n2x5nA01\n3h7iA02\n3bpzA01\n4fpwB00\n2f4iA01\n4ni6A00\n3optA01\n3rfwA01\n2m88A01\n4lusB01\n3u7rA00\n3nwrA02\n3vuqB00\n4efoA00\n4jbgA01\n1nhwC00\n1z5bB03\n1zmbA02\n2qcvA01\n3llhB00\n2kw3C00\n4kt0F00\n3fw3B00\n2qo3A01\n4mnkA02\n2w5eA01\n4ga6A04\n1gdhA01\n1e5wA04\n1f32A01\n4huzA01\n5oomU00\n3vldA02\n4e4uA02\n2jchA01\n2re3B03\n4aciA00\n4nf1D00\n3vubA00\n2hw6A02\n2r2oA00\n4x6gE03\n2c1iA02\n4ofzA02\n2ov9B01\n3wo4C02\n4u9bA00\n4mo1A00\n5f7vA00\n2opwA00\n1o7iB00\n3d8uB02\n2r7eA04\n6b9xB00\n2d7lA01\n3s8pA02\n4dk0A02\n2eq5A02\n4q0jA03\n3htyA00\n3omlA02\n1kvdB00\n3nutC01\n1vz0A01\n5c54G00\n4mp8A01\n1r4xA02\n4pavB00\n5tnxA01\n2c5uA02\n2d9uA00\n4qr9A00\n3neuA02\n1r53A00\n3l5kA02\n3gx8A01\n1sbqA00\n4ci8A01\n4nutA00\n2zgiA01\n3bd1B00\n1wwiA00\n3m1gA01\n3m62B00\n3o44A03\n2x0dA02\n2rflH00\n1j0tA00\n3kyeB00\n3qwuA02\n5h9fJ00\n3bzcA03\n3db7A00\n4kxqA02\n2v0cA04\n3o60A00\n2h8eA00\n2bs2C00\n4e9oX00\n1z00B00\n3lnnB01\n5ajiB02\n2pliA00\n4i59A03\n2ppiA01\n2rc8A02\n1nr0A01\n3nrsA01\n2g7sA00\n2qpqA01\n3q0iA01\n4wydA01\n1g3pA01\n1ss6A01\n2ortA03\n1wfjA01\n4j80A02\n3e0eA00\n2p5zX03\n2pn1A02\n5k87A01\n3c07B00\n3kflA03\n4zpcA03\n4edgA01\n1tzvA00\n2cviA01\n2hd0A01\n5b66O02\n3f7wA01\n2o36A01\n3t3lA00\n1yz7A01\n4pbqA00\n5ihwA02\n3brdA01\n4jrnA02\n1avvA00\n4yhbA01\n2wb7A03\n3sy8A01\n3bqzA02\n3igfA01\n2ztjA02\n3e03A00\n3n7zA01\n1ee8A01\n3u2gA01\n3rm3A00\n1k8kE00\n4dllA01\n2pf4E01\n4kfzA01\n3bhdB00\n2g7jA00\n3ju4A02\n4x83A03\n4h8aB01\n4ew6A01\n1n13B00\n3v5wA03\n2mbeA00\n4gbuA00\n2xxlA02\n1sngA01\n2yvkA01\n4c4oB01\n1esjA00\n2e73A01\n2w61A01\n2db2A01\n1n62E01\n3lufB02\n2dh2A01\n1sg5A01\n1dq3A04\n3l9fA02\n2y4tA02\n3ksmA01\n4j8zA02\n4htgA02\n1phkA01\n3axjA01\n3hc1A00\n2bj3D02\n1us5A01\n2wscN00\n5jhtA00\n4qg5B01\n3aoeC03\n4xr9B01\n2xgmA01\n3k4hB01\n2csyA01\n4iggA01\n1paqA00\n3n9uI00\n2yilA01\n2p9mB00\n4kgqC01\n1h3oA00\n1agjA02\n4dzbB01\n3eesA00\n2qsfX02\n3n0wA02\n4io2A02\n4qclA01\n3hh2D03\n1q38A00\n2ck3A03\n4chiA01\n4dddA01\n3tm4A02\n2oaaB01\n3f02B02\n2uuyB01\n2pgeA02\n6bq9A02\n4gi5A00\n5hiwA00\n3d5lA01\n5bn1A00\n4icgD00\n1ttzA00\n4hdrD01\n2hv2C02\n2jwpA00\n2yzkA00\n4tmvA01\n2q5fA02\n3im1A01\n4oxpA01\n5ig6A00\n3ks9B02\n4jf1B01\n4qitB00\n1evuA01\n4iapA01\n1mqsA01\n1ryiA02\n3m6uB02\n3ajvD01\n1bmbA00\n3aq1B01\n5emiA00\n4rjzA01\n1d8wC00\n4u0wA02\n4c1lA00\n2v9pA01\n3iagC02\n4dsfA04\n4mikA00\n1uz5A01\n4q4lA02\n3h0dA02\n2kxoA01\n3dl3E00\n1e25A00\n5lqdD01\n5a0yA01\n4bbyA05\n1m2dA00\n3p24C02\n2id6A02\n2d59A00\n2cq7A00\n2lw3A00\n1m2tB02\n4n0rA02\n3bosB01\n3qjoA03\n1ypqA00\n5efqA02\n1nm7A00\n3pvlA03\n5b5ee00\n4qroG00\n3s6eB00\n3s2kC00\n4kmcA00\n1wvgA01\n4w5wA01\n5x56B00\n1z4eA00\n1nv8A02\n4m2aA02\n3bdwA00\n5cqgA03\n2c40A00\n1jg7A02\n4jzuA00\n1uwyA02\n4kgqD02\n3t4rA00\n4tv7A02\n3h09B02\n1cs1A02\n3tt2A00\n2wnyA00\n3bfmA01\n3fpcA02\n1qs1A02\n3oy2A01\n4rnaA03\n4kliA02\n3daqA00\n4yz9A03\n2i00A02\n5guaA00\n3o4fC01\n1l8rB00\n1n97A00\n2wqrA02\n2fu2A00\n2g0qA01\n3dl2A01\n4h7wA00\n4iusA00\n2f6eA00\n3ouzA03\n4d8oA04\n5hqjA02\n4afiB00\n3fddA03\n1wmdA02\n5mblA00\n5f1sA01\n3fhnA03\n4qboA00\n1wmgA00\n3wj1A00\n5l3sA02\n2bghA01\n2bl7A00\n2ihr101\n4x83D01\n4pfyB01\n4r9kA00\n1wfyA01\n3t5qG03\n1edxA00\n2ox1A00\n3s6n201\n4d57A02\n3mwcA02\n4cs4A01\n3cxgA00\n1to3A00\n5kfzA03\n2jdaB00\n5hd6F00\n4qicA02\n3gr5A02\n4xxiA00\n4wz9A02\n3wirA03\n2xwsA00\n3hftA00\n3p34A02\n3wmvB00\n3kmhA00\n2qryA01\n2g2sA00\n5crwA02\n4pagA01\n5kh0A02\n3mswA00\n3or1B03\n1b5pA02\n1e40A01\n2nujA01\n4xpmB00\n3sl7A00\n2yxnA02\n2gwnA02\n3a9zA03\n1pjrA01\n3oxnA01\n4dm5A00\n3bfoA00\n4gqbA02\n4ogqB02\n2xu7A00\n4uv6A01\n1bvp103\n3bgaA04\n1xfsA00\n5tinA02\n1c4oA03\n3cf6E01\n3mpxA02\n1jjgA00\n1u0lA01\n5i99A01\n4ci9A00\n1kxpD05\n2y8yA02\n3bxuA00\n1s5aB00\n2g1pB01\n4hacB01\n2o26U03\n3sxmA00\n3nrkA01\n4bs9A05\n1m9zA00\n3v4cB01\n3hzpA00\n3uwpA02\n2x9zA01\n1u9lB00\n3mjfA04\n2km1A00\n2rqmA01\n3tlkB02\n1dcsA00\n3di5A00\n4yn3A02\n3t6oA00\n4clcA00\n1o75A03\n3d8dA00\n3pvlA05\n3rrvC00\n5n81A00\n4kiaA00\n5hbfA01\n3t0oA00\n2au5A00\n2je8B05\n2gzaA01\n1zbtA01\n1mugA00\n3mujA01\n1wi5A01\n4mxwS00\n5od6A00\n2iboA00\n4g2pA00\n4omfB02\n2b3fC02\n3hp7A02\n3t2lA02\n2bsfA01\n3klqA01\n2osxA02\n3memA02\n2rjzA02\n4u7mA03\n2xxpA01\n4driB00\n1jzoA02\n5dzsB02\n1x1iA03\n2qckA01\n3nd1A02\n2kmwA01\n2yxlA02\n2q0tB01\n2f48A01\n3zkjA02\n4hy1A01\n3n7lA02\n2hf9A00\n4ehiA01\n3kptB01\n1yueA02\n3madA01\n1g3kA00\n3bh1A01\n1musA03\n1vimC00\n3e74B02\n4njmA02\n4ix3A02\n4aj5100\n2ia0B02\n3tb6A01\n1uvjA02\n3q7xA00\n5c82A00\n4dloB02\n2hiyA02\n2in3A01\n5ilgB00\n1q79A01\n4ga2A00\n4ojdH03\n4ziyA01\n3g9vA02\n3zqkA00\n3u7qA01\n1uhrA00\n3zizA00\n1zbsA03\n3l8hA00\n1fmjA00\n1yrbA01\n3zieD00\n5an9A02\n3hyiA01\n2o9uX00\n4xnhB00\n1sg6A02\n4s17C02\n2n7zA00\n1rzhH01\n1jyoE00\n1nexA00\n4khbD02\n1hyeA01\n3iusB00\n4kbmB02\n2z3xA00\n3i1aA01\n4lg3A01\n1z0nA00\n2rqyA01\n2cfbA01\n4rlzA01\n3m1xA00\n1ym0A02\n3m1mA03\n4mjdA00\n2e28A03\n4dz4A00\n2hldH01\n4nleA02\n3hrzB01\n1d2pA02\n4joqA01\n5decC01\n4g1iA03\n3hrzA04\n4nsxA01\n2lvnC00\n2ad6B00\n4heiB00\n1vbkA01\n4rg6A03\n3aabB00\n4by6D02\n3q7cA01\n1nu5A01\n1or4B00\n4h5iB00\n4rweA01\n3c3yA00\n3ihvA03\n3hjhA01\n1h2uA01\n1i7dA04\n3wnzA04\n3erbA01\n5e2cA00\n1e8yA02\n3dg6A01\n2k6wA01\n5c1eA00\n4al8C00\n2bmbA01\n5iqnA00\n4rnaA01\n3lvqE03\n4lv5B02\n3nclA02\n2q6fB03\n3df7A02\n3i7mA00\n4liqE05\n4iy7A01\n4al0A00\n1uj2A00\n1z9lA00\n4f7zA05\n2fcwA00\n4fvmA07\n3fz0D00\n4zi8B01\n1dtdB00\n4i90A00\n4ag5D01\n4cc2A00\n2x3mA00\n2p9xA00\n3shsA02\n2l60A00\n3grzB00\n2e3nA00\n2xy1A01\n4m0nA01\n5o6tA00\n1c8iA01\n3orkA01\n3i0pA01\n2oxgD00\n1hn0A01\n4issA03\n3m8uA01\n4xdaA00\n3w57A00\n1wvoA00\n1yqbA01\n2wh6A00\n2gpiA00\n3hx9B00\n2oodA02\n1o7jA02\n4lr2A02\n1fc4A02\n4alzA01\n3lvqE02\n2g8lA02\n1p7hL01\n3dupA02\n5aebA00\n2hyxA02\n1ahoA00\n3b7xA00\n3bg1B01\n4i69A00\n5imsA02\n3sdbA01\n3kolA01\n6az1C02\n2gdqA02\n3ontA00\n3f67A00\n5ftwA02\n2i6eA01\n4ei7A02\n1yzbA01\n5b2lA01\n3mjgX02\n2ozgA02\n2f6kA00\n2wk1A00\n1z05A03\n3onmA01\n1sc6A01\n3bjkC00\n2p5tA00\n3ottB03\n5cemA01\n2ozlB02\n4p9fA02\n2qg7B01\n4a7kA02\n2zjrG00\n2js9A00\n4cbbA01\n1kyiS02\n1eyvB00\n3fhhA01\n1cjcA01\n1j9bA00\n3dbgA00\n1wglA00\n4glsC00\n2p5zX04\n3hg9A02\n2aegA03\n5f9eA01\n2zwaA02\n4pf4A01\n3ep1A00\n3d7rA00\n3x30A00\n1cczA01\n2y43A00\n2plnA00\n4p78A00\n1rgxA02\n5eyaF00\n2rbcA00\n4cs4A02\n2q9kA00\n2f9iD00\n1ajoA00\n1nqeA01\n2xk0A00\n1zczA01\n1dc7A00\n4o5aA02\n1szqA02\n5sxwA01\n1yeyD02\n4l9hA00\n1qwrA02\n4ymuD00\n3liyA00\n1jg1A00\n2g3aA01\n5hp5A01\n5epfA00\n1gu9C00\n1nkgA01\n2pq0A02\n3hsiA01\n3m1rB01\n4ejnA01\n4fbwA01\n4ovjA02\n4rojA01\n1vq8P03\n2yd6A01\n4p02B05\n3eh2A03\n2ga8A00\n2kn8A00\n3wdcA00\n1hyuA02\n6b9xC00\n2x41A03\n1q0qA01\n1pcxA03\n3repA02\n3mmgA01\n2f5jB00\n1vb3A02\n4chdA00\n3ottA01\n1pz7A00\n4oxiA02\n4bguA01\n1ypfA00\n2m7bA00\n3x01A02\n2ja9A01\n3dupB01\n5iklF01\n2c31A02\n2m76A00\n3tc2B00\n2wyhA07\n4eclA01\n2yn0A00\n2l6cA00\n2iu1A00\n3lfrA02\n2l5aA00\n4g78A00\n2hhpA02\n1e50B00\n1vf6A00\n2nn6C00\n1i1rA01\n3sg0A01\n3mm5B01\n4yrbA00\n4kxqA01\n4ld1A00\n1dgsA02\n3f0hA01\n1kqfB01\n3ik5A00\n3nyqA02\n1c44A00\n4jmpA00\n2k60A01\n1gqyB02\n3cp7A01\n4bwcA01\n1tzfA00\n4jzaA03\n3k2wE01\n3e0rB01\n3og9A00\n2a3nA02\n2e3fA00\n3l0qA01\n4acfA01\n2zfdB00\n4oq1A01\n5nhmB00\n5eo9A00\n3ntvA00\n3ff9A00\n3lsoB02\n1f60B00\n2h7tA01\n3ievA01\n4pwuC00\n1a79A02\n4zb7A00\n3o8bA03\n3qexA03\n3t97B00\n3hsuA01\n4eqmA01\n5mx9A00\n4i5jA01\n1sddB01\n3djdB02\n2nytD00\n3shsA03\n2gupA02\n1fnnA02\n3phhA02\n2eqmA01\n3craB01\n4le5A01\n2ch5B02\n2zbtA00\n2eodA00\n1vlyA02\n4wt7B02\n3hlzA02\n3pvlA04\n4edgA03\n1l4dB00\n2d93A00\n1bh9B00\n2jcbB00\n2x9xA03\n2dc0A00\n1j34B00\n2c9aA02\n1qe3A00\n2ck3D03\n2hxtA01\n1k4tA04\n4nq0A00\n5noiA02\n1a1tA00\n5l09B00\n5kszA03\n1zarA03\n2gq1A01\n1omiA02\n3we5A00\n3pfeA01\n4guaA02\n3fbiD00\n4c97A02\n4fnxA01\n3iagC01\n4jnhA02\n1w4vA00\n4myzC00\n1yb1B01\n4kliA03\n5nthA01\n3o8mA02\n1ezwA00\n3o2uA01\n1gxlA01\n3f2iF00\n4wuyA01\n2viuA02\n3luyA01\n3c8eB01\n2j8zA01\n2lh0A00\n3mgdB00\n4e9xA02\n1ithA00\n2p58C00\n2je8A01\n2qe9B01\n3wnzA02\n4egeA01\n3hwrA01\n1faqA00\n4bj6B01\n2v57A00\n5ahnA00\n4l4uA01\n5dmyB03\n2ob0C01\n1nm3A02\n2qdlA01\n1ijyA00\n2pgdA03\n4hsqA01\n4qhfA00\n2l1tA00\n2e0zA01\n2lrmA00\n2bt9C01\n2fr5A00\n1qf9A00\n2cg7A01\n1azsB00\n5kvyA01\n4hv0C00\n4cvkA01\n4ncdA02\n4gczB02\n4knkA00\n3v7eA00\n5v4dB00\n3c5eA02\n2yyzA03\n3eauA00\n1n0uA03\n2m01A00\n4k3zA00\n1eijA00\n2hdiA02\n4f8xA00\n1xfjA00\n3eh1A02\n5f2kB01\n3g3zA03\n3ezqA00\n2zhnA00\n2r6fA04\n2wnpF02\n4netB00\n2rm8A00\n5wjpA02\n1sauA01\n4x3lA01\n3tgnA03\n4f7kA03\n1wdkB03\n3n93B04\n3rk1B02\n3p8cD02\n3ugoA00\n3dp7A03\n4mrtC00\n2lvaA02\n4dxkA02\n2htdB00\n1p1mA01\n2evvB00\n3n40P01\n4py9A01\n2an1D01\n2x98A02\n2fckA00\n5hm6A00\n2bykD00\n3d36B01\n4cu5A00\n5buwA00\n2xb3A00\n2f62A00\n1q25A03\n1v7rA00\n4bvxA01\n1jocA01\n3c1aA01\n5csrC00\n4rd4A02\n1m0wA02\n4lnsA00\n2vvwA00\n4yfkA03\n1o13A00\n5ko9A00\n2ar5A00\n3cz8A01\n1a7jA00\n4u3yA01\n3d2fA02\n4gbjC02\n1h8eH00\n3as5A01\n5gylA01\n3op7A01\n2hntC00\n3g9qA02\n3dxlA01\n2i5iA00\n2d5bA02\n4gb7A00\n1lo7A00\n4kdwA00\n4irzA01\n2wy3B00\n4evxA00\n1ygtA01\n3egqA00\n5an3D00\n1yy3A02\n1g41A01\n1h34A00\n3l7tA01\n2fwgA00\n2ccqA00\n2hkvA01\n2yx1A03\n1q0qA03\n2f6mC00\n4u32X00\n1u5tA01\n4efvA00\n3h90A01\n4lniJ01\n1mqsA04\n3ww3A00\n2fz4A01\n2hqlA01\n2yqzA01\n1wiwA02\n2d8dB00\n2h98A02\n4pp0B01\n2mbgA02\n2d3dA00\n1p99A01\n3ctlA00\n1g3qA00\n4h7yA00\n4g0mA00\n4ombA02\n3djmD00\n3cfuA00\n3q1xA02\n3b64A00\n1josA00\n4wi1B02\n3g0mA00\n5cmlA00\n2zyoA01\n5t3eB02\n2dm3A00\n2gmqA00\n2rgnB02\n3twlA01\n2ob1A00\n3brsA01\n3hx3A01\n2e2oA02\n2k6pA00\n2cb1A01\n4wz3B02\n4gvoA01\n3qvmB00\n3k1lA02\n2l5qA01\n2x8kA02\n3kp1A01\n1x4uA01\n2rfqA02\n4aaaA02\n3lr5A00\n4x57D00\n3g2sB00\n3jqoA01\n3u2aA00\n5wbyC01\n4l5tB01\n3lszA01\n3h8zA02\n4rg6A02\n1qwrB01\n4fxgB01\n2dziA00\n1iarB01\n4e1oA03\n4k3bA04\n2l0yA00\n4madA02\n2r55A00\n4dveC00\n5ivyA00\n4yl8A02\n2ckxA00\n4evyA00\n3dytA01\n3lmbA01\n2l2qA00\n2vfrA05\n2x1lC02\n3v5uA02\n2if7D01\n2aamA00\n2l9jA00\n4clqA02\n2zhjA03\n4xwwB01\n3gfaA00\n4fgwA01\n3txnA00\n1zkiA00\n5ep9C00\n2vxpA00\n1srqD01\n4p98A02\n1iamA01\n4o5vA03\n2hoxA03\n3igmB00\n4y6wA00\n2lt3A01\n4x1bA03\n2yicD03\n2aujD03\n6ao7A00\n3nk7B01\n2x8kA03\n1zu0A02\n4rljA00\n2gsqA01\n5f29B00\n2d40B00\n1nvpD02\n4nzdB01\n3igrA00\n3qorD00\n1xhcA03\n1m7bA00\n2b0cA01\n3v2uA01\n2rdkA00\n3ihuA02\n2mqcA00\n4qkdA00\n4f5lA01\n1wvvB02\n3axjB02\n3ju8A02\n1hnjA01\n4ezcB00\n3zs6A03\n4uzgA01\n3eudA00\n1ecsA00\n4apvA00\n5y32B03\n4oujA01\n3sw0X01\n3qijB03\n3qsgA02\n4ry1A02\n1oisA01\n2mc5A00\n1pc3A02\n4y2mA00\n3lftA01\n2dclA00\n3h7jA02\n2mj0A00\n1u6pA00\n2x4kA00\n5k8cA02\n3hdjA01\n4gm6A00\n2c81A02\n3rt2A00\n3rqtA02\n4b7hA02\n2pulB01\n4eacC01\n2hwyA00\n5osiK00\n2oztA01\n4le6D00\n3rpdA00\n1g8pA01\n3qk8B01\n2cw8A02\n3bs4A00\n1ixkA01\n4r8xC00\n3bn7A00\n4alzA03\n1ufyA00\n1o7dE00\n3frhA02\n4un2B00\n3c4zA03\n3dmyA01\n1edgA00\n3so6A00\n4nrjA01\n2yvrA00\n5oaqA00\n4ca1A01\n1vpuA00\n4jcwA01\n2hkxB00\n4mtuA00\n2lm0A01\n2jhnA02\n2qsaA00\n4kdrA00\n1xdwA01\n3d01E00\n3f59D00\n3kaeA00\n3o8eB01\n3qq5A01\n3eurA00\n3jc6301\n3do6A01\n2a26B01\n1fsuA02\n3zsuA00\n3eeqB03\n3tbgB00\n4wk0A00\n1vmhA00\n5uh0A01\n2oqrA02\n1plsA00\n3cnhB02\n1fzdA01\n3k9dA01\n3kw0A00\n3ij6A00\n1sg4A01\n2arkA00\n4r4xA03\n4oycB00\n2wltA02\n1yphC00\n4mj2A01\n2imrA02\n3weoA02\n3g98A00\n2ii8D00\n1u02A01\n4v1gA00\n4gyiA03\n4dd5A02\n3w77A00\n1wyuB01\n4deqA02\n3hqxA00\n1xocA02\n3ry4A02\n4a57A02\n4edpA02\n3on5B02\n3nreA00\n1b67A00\n3jr1A02\n3kw2B02\n1z21A00\n3ujcA00\n3rmqA01\n4g92C00\n1jeyB01\n2l6oA01\n3gf5A01\n3jxgA00\n1s5dA00\n4uuwA01\n1n7dA02\n1zy8K00\n3zdqA01\n2fx5A00\n4dwrC00\n5ajiB01\n3oeeP02\n5yayA00\n5cecB00\n2h5cA01\n1jhnA01\n4ae8D00\n4ltyA02\n1vq8A01\n3hj3D02\n4h9nA00\n1n62C01\n4aa9A02\n4qmdA00\n5tcmA00\n3gnaA00\n4bxsA02\n3g7rA00\n2yd9A03\n3u50C02\n4r1sB00\n5m49A02\n5hjsA00\n4pzaB00\n1z2iA03\n2g82A01\n4ax2A01\n1l9lA00\n1eq2A01\n4k9zA00\n4j7rB01\n4zkaA01\n5udhA02\n4z8aA00\n5le5J00\n4w98A00\n3ga3A00\n1k1fD00\n1ve2B02\n2w2kA01\n2kknA00\n2z2mD01\n4dvzA02\n4yzzA02\n3d03A02\n4jnuA00\n4j1oA02\n3mwbB03\n3h6pC00\n1wywB00\n1hssA00\n2bf6A02\n3raoB00\n1x1qB02\n1t6nA00\n3swoB01\n3fceA02\n4fo5A00\n3ayhB01\n4ccdA03\n3beeA00\n3hdeC00\n4bqqB02\n3ocuA00\n1v25A02\n2p0sB01\n1q8cA00\n2o7gB00\n5cqgA04\n2nyiA01\n2p84A01\n5l6gA02\n2hdoA02\n1xw3A01\n4hy3D01\n4wepA01\n1toaA01\n5kb6A01\n4iv6B01\n3kz3A00\n4p1eA00\n4tquM01\n7odcA01\n1tpmA00\n1vloA04\n3lqmA02\n5jh8A02\n4f7uP00\n1xdpA02\n4wxtA00\n5d95B01\n4rg1A02\n4lsdF00\n1rf8B01\n4ogqD01\n1rp5A01\n3go2A01\n2xigA02\n5l10A00\n5ibkB00\n1svmA01\n2fnoA01\n1eljA02\n2g37A01\n1vhxB00\n3getA02\n3d2lC01\n3gt0A01\n1pavA00\n3c3wA01\n4hh3C01\n4wp9A00\n3gfuA01\n2x2uA02\n2d9rA00\n4pawB00\n2fh5B00\n2fgyA01\n3h6pA00\n3qhaB02\n4ycbA00\n3bbzA00\n4eryA00\n5ts9B00\n3qwuA01\n1xkpC00\n2vbkA00\n2h6fA00\n4hujA00\n2a6aA02\n1i6aA02\n2pqvB00\n4q9bA00\n2ww8A02\n2joxA00\n1p9oA00\n2j42A03\n1qynD00\n5kvpA00\n1ooeA00\n2lr4A00\n2y2mA02\n4kamC02\n1wwjA00\n1tlyA00\n3lmoA00\n3dmnA00\n4ixoA01\n2j58A02\n1x74A02\n5vf5A02\n3m4aA02\n4mqdA00\n3a6mB01\n2yzyA00\n3bcvA00\n1sy6A01\n1nogA00\n2o20B01\n5iaiA02\n3ghgB02\n2a19C01\n1svjA00\n3m9zA00\n3pu5A02\n3typB00\n1v8hA00\n4i4tF01\n2n2qA00\n1ursB01\n2pgfA00\n2bbsB00\n2cfmA02\n1lvbA01\n2p11A01\n3tqeA01\n2ymsB00\n4kv7A01\n1vavA00\n2axcA02\n3kzqA00\n2pk3A02\n2qs7A00\n1evlA01\n1h29D03\n3pcvA00\n1ldjA05\n2kktA00\n3hjhA03\n4wvmB04\n5uctB00\n1sddA01\n2y28B00\n3um7A03\n4kl0A00\n4inwA00\n4p02B01\n5grqA00\n2nqwA00\n4iheA00\n3f52A00\n3ju1B00\n1zjjA02\n1j8kA00\n3v97B04\n3ii6X03\n1i3cA00\n3ft7B00\n3mc6A01\n2y9uA00\n2cg5B00\n4q9wA00\n4gi2B01\n4lrvC00\n2pziB02\n4dw8A02\n1l1lA03\n1tdqB00\n3qyeA03\n5y4zA02\n4r84A02\n4w82A01\n4i9qA05\n3eh1A04\n4x28C01\n1qqgA01\n1h3fA02\n4ys4A02\n1u6lA01\n3qooA00\n2yvaA00\n3n9gH02\n3fw9A01\n2vokA00\n3exmA01\n3bdiA00\n4xdxA00\n5gv0A00\n2gviA01\n3ooxA00\n2w5aA01\n5grmA02\n3h6jA02\n6az1S00\n3louA02\n2cdpA00\n4jp2A00\n1vkpB00\n3ga2A00\n1xe0C00\n2xmjA00\n4wvrB00\n2xtlA04\n5eesA01\n3owaA01\n5kc8A01\n1l2hA00\n3i57A02\n2iybE00\n2g3vA00\n1b12A02\n1gudA01\n2w43A01\n1x47A01\n3hrnA00\n3kl1B00\n3wg3A00\n2nogA01\n1knmA00\n3tndB01\n256bA00\n2k5jA01\n5l77A02\n3ottB02\n3bu2A02\n3n5lA03\n4yonA01\n5bq8A00\n3aagA01\n5jxzA00\n4z7eA02\n2kvtA00\n2olvB02\n4ac9C04\n2qdeA02\n2f4pA00\n3cg3A01\n1j09A02\n4ns0A00\n3dclA01\n1ufiC01\n2mj6A00\n1afwA01\n2jfzB01\n4wnfA00\n3fpzA01\n1kutB01\n2o4cA03\n3rkrA00\n2wyhA05\n4u68A00\n3gohA02\n1y1pA01\n2oa2A01\n4cocC00\n3h6qA00\n1m2tB01\n4oanB00\n4dmvA01\n3ikwA01\n4y6lA01\n4ll1C02\n1am7A00\n2or0B01\n3d2wA00\n1mhwA00\n2qvwA04\n4pvkA03\n2jhfA01\n4imrB00\n4bkwA02\n1v1hD00\n2q83B01\n2ragA00\n1ly2A01\n5in3A02\n3b34A04\n3jr7A02\n3anpB00\n2flzB00\n4qu7A00\n1kdjA00\n4jisA00\n3hctA00\n1qzrA02\n1fyhB02\n3s5tA01\n1oaiA00\n3ndaA02\n4muqA02\n2nyvA01\n2qrjA02\n1eluA01\n4l74A02\n1yhnB00\n2cxhA01\n3a3cA03\n3mcaB03\n3mfdA02\n1qzyA01\n5ag8A01\n5is2A03\n1hn0A03\n2j9oD01\n5o85D00\n3id6A02\n2hxvA02\n4lldB00\n2ocgA00\n1ywkC00\n4b7oA01\n2z6iA00\n2we8A02\n2nw8B00\n3hz6A02\n3m7nA02\n1y9kA01\n4rlzA02\n4h1zF01\n4h2dA00\n4r4xA02\n4dohE02\n1lu9A01\n3au4A01\n3colB00\n1xr0B01\n1mk0A00\n1w2wB00\n5mj6A03\n1bgcA00\n4nzuL02\n4hcwA02\n2x0qA01\n3wfwA00\n4fkzA01\n4dkwA00\n1p3qQ00\n2m9nA00\n1tbaA00\n3zbqA00\n4oebA00\n3fe3A03\n1hxhA00\n4eycB00\n4x5wB02\n2anuA00\n1pjqA01\n2o7aA00\n3iwgA02\n5idvA01\n2gqqA02\n4dnjA00\n3nnrA00\n2nxcA03\n4fa8A01\n3bpkA01\n2xn6A01\n1tp6A00\n5dkaA00\n2eu9A02\n1zw8A01\n2e7vA01\n3ijmA00\n4lb8A02\n3sbtB01\n5n40A01\n4fr9A00\n4wsfA00\n2x44D01\n1wibA00\n5ue1A00\n3bkhA02\n2c0gA01\n1tu5B02\n3cb7A00\n3lp8A04\n4wp2F00\n2joqA01\n2k1gA00\n1gxeA00\n4kpoB00\n3a9sA01\n1keaA01\n3gm8A05\n2xdjB00\n4zm4D01\n3lftB02\n3fokA00\n3iprA00\n5twtA02\n1vsrA00\n3fd9A01\n4gioA00\n1ceoA00\n1wuuB01\n3fx3B01\n3omtA00\n1oxxK03\n4pl9A00\n2k37A00\n3pbkA02\n1t07A00\n1h3fA03\n3thxB04\n2opcA00\n3zleA03\n4n0pA00\n3hxlA03\n3hkoA01\n4r1vA01\n1z6tA02\n3zm6A01\n2p19A01\n3ld2B00\n3uenA02\n2e1vA02\n1x4zA01\n3vueA02\n4a56A00\n1qu6A02\n2j5yA00\n3p86A02\n5m5zA02\n1ui6A00\n2dmwA01\n3thdA01\n1yu0A01\n1amuA04\n2llwA00\n2pf5D00\n5vzaA03\n2m0oA00\n1jnyA01\n2w7zA00\n4f4oC02\n1pf5A00\n3ju3A00\n4cayA00\n2yzvA00\n2o30A00\n5jouA02\n3fpfA00\n5jeaE00\n2a8xA03\n2uzyB03\n1wgfA01\n4mccA02\n3gcmA02\n3tc8A00\n2lc3A00\n1ewrB02\n4bn4A01\n3crvA02\n4xvhA02\n3egvA02\n1mdbA03\n4igkA01\n4p02B03\n5loqA02\n2dt6A01\n2qaiA00\n4yrdA02\n4j0eA01\n5ihbA02\n3qitB00\n1e7uA04\n3comB01\n3q34C00\n4bq6F00\n5m5zA01\n3dktA01\n4le3C00\n2vj4A02\n2qguA01\n5dmyA02\n3g5cA01\n1nrwA02\n3wsfB01\n2nxoA02\n2hp0A02\n3l7vA00\n1nnhA00\n3bjdA01\n1ucsA00\n2xv9A00\n1mkfA02\n2i6dA01\n2xbkA00\n2y2mA03\n4hscX04\n3ar4A03\n3a9iA01\n4qpkA01\n3vfiA00\n4k15B00\n3w0tA00\n3ea0A00\n3ma2C00\n2mdrA00\n2wujA00\n1mj5A00\n2ljyA00\n1chmA02\n1ybyA02\n5ktnA02\n2fyfA02\n4iloA00\n3fn5B00\n2owpA00\n4incB00\n2g7lA00\n2a7kE02\n5t9gB03\n3hr0A02\n2pr1A00\n2kanA01\n2piaA01\n3grzA01\n4errB00\n1h2vZ00\n3nymA00\n4uhcA00\n2reoA01\n3bb5A00\n2g5rA00\n3zgjA02\n3ghfA00\n2arpF02\n3ssuA00\n1vplA00\n3eb2A00\n2a4aA00\n3dluA00\n2kjyA00\n2gjvA00\n2janA03\n1f0lB02\n1i7wB00\n1or7B01\n5tvoB00\n5kvbA01\n1b37A02\n4ijrA00\n4p56A00\n1q67A01\n3lzdA03\n2al6B01\n4xgwB00\n2e71A00\n2wqfA00\n3ka7A02\n1y2mA03\n3k50A03\n4qqhA00\n3fymA00\n3mvgA01\n2ppqA02\n4ri1C00\n4iauA02\n3p2hA00\n2hj1A00\n2erfA00\n2vlaA01\n1um8A01\n4rlqA03\n1jdpA01\n5ti1A01\n3f6gA01\n3ccyA02\n3r5tA01\n2bnxA02\n4ymhD00\n3hzrA02\n3ci9A00\n2bezC00\n1ibvB00\n3dp7A02\n4f0jA00\n5c17A00\n5c5zA00\n3pvlA02\n1xkgA00\n3qsgA01\n3hy5A01\n2yvwA02\n3kasA03\n3oa6A01\n5dwzF02\n2b67A00\n4gicA02\n3afhA02\n4bk7A00\n3dfzB01\n3g43E00\n4r78A01\n5cm2Z00\n2odpA02\n3m0fA01\n2jmkA00\n2atzA00\n5m5eB01\n2fcoA00\n3bt7A01\n3afgA03\n2aalA00\n2hc5A01\n2rsdA00\n2dbjA01\n2ql3A02\n2j43A02\n4itqA00\n1mgtA01\n1bvyF00\n4k81A01\n2vlaA02\n1rl1A00\n4mp8A02\n3giaA00\n1yhpA01\n4mk6A00\n3loiA01\n2yhgA01\n3ux3A01\n4ohnA02\n2xmzA00\n3giwA00\n1p22A01\n4ovdA03\n2dsjA03\n1zpwX00\n3cw2C02\n4euuA02\n3immA00\n3mtwA01\n1sxrA00\n4qgrA02\n1gqiA03\n1cjwA00\n5njiA00\n1wz2A04\n4b3hA03\n4uuwB02\n1wvtA00\n2l42A00\n2v9xJ01\n1zodA01\n2cr4A01\n1f2lA00\n2vunA01\n4g1iA02\n6az1Y00\n2egvA02\n3c9hA02\n3emiA00\n3mqdA02\n4q82A00\n3s44A01\n3ispB02\n5i4cA00\n3l81A02\n3u83A03\n3kbtA00\n1gjjA00\n1tocR01\n1gxlA02\n3of7A00\n3eleA02\n2dkuA01\n3h1qA02\n2q2eB05\n1z9fA00\n2i51B00\n5aovA02\n3ulhA00\n3vw4A02\n1uhzA00\n4ac1X01\n5oswA02\n2go8A01\n3eu9C00\n3cwvA02\n1wvkA00\n2kieA00\n3rsnA00\n3u50C01\n2xc1A01\n2xjyA02\n1gz0B02\n3gv3A00\n3csxA00\n2rg4A01\n3dsqA01\n1zuwB01\n3b8xA01\n2dtjA02\n5um2A02\n3alfA02\n1z0kB00\n3tvyA02\n3r5zA00\n1maiA00\n4g6iC02\n4xxhA02\n4umoA00\n2ggoA01\n3go2A02\n4exjB01\n3gycA00\n1iarB02\n2gbbA00\n1di6A00\n2qm0B01\n4a11B00\n5ko4A00\n4j29A00\n1uwkA02\n1j3wC00\n4fo0A03\n3lb5B00\n5dqpB00\n3me8B00\n5cclA05\n4crhA00\n3i07B01\n2rsqA00\n4uzzB00\n3w9kA00\n3ziuB01\n3ip3A01\n2qsvA01\n1n00A04\n5ah2B03\n3vc5A01\n4mveA00\n2xheA04\n4rv5A01\n4mdvB03\n2gpjA01\n3pbkB01\n3f4sA01\n3zzhC00\n3qcpA01\n3lfhA00\n3sgwA00\n3me5A03\n3fs8A01\n4wutA02\n1oqvA00\n4lqzA00\n3wxmB02\n2qbuA01\n2i50A00\n2wcyA01\n2rsmA00\n1pb7A01\n1su3A02\n4hylB00\n2nncA00\n5v0zA00\n3bypA00\n2qytA01\n5gpiB02\n3hnyM00\n1gkpB01\n3zscA00\n2zx2A02\n2g7oA00\n4devD01\n1zkrB00\n4pwwA00\n3hunA01\n5do6A00\n1xtmA00\n1xkyA00\n2z0mA01\n4upaA02\n1n5uA01\n3qv0A00\n2cxiA03\n2db7A01\n3jumA01\n3sdeA01\n3dxpA02\n2aa4A02\n2a90A02\n2mcmA00\n3prbA02\n1pwtA00\n2wtbA03\n4jzaA02\n1eysH01\n1ei5A02\n4ac9C03\n1yx0A00\n1yt5A01\n4heoA00\n3ptaA05\n4emoC00\n4ub9A01\n1w8oA02\n4owfA00\n1mf7A00\n2i74A00\n3kloD00\n3h1qB01\n4ub9A02\n3zx1A03\n3wy1A01\n3zzpA00\n3ef8A00\n5d84A02\n1r26A00\n3thxA02\n2rhqB01\n3warA01\n1cxyA00\n2icsA02\n5lc9A00\n2bnmA01\n5lvoA02\n3mr7A00\n2hujA00\n3t4nC01\n2fnuB02\n2yo0A01\n1odfA00\n5uuiA00\n2driA01\n2bk8A00\n3da5A00\n5urpA00\n5e4bA00\n2feaA01\n4kqiA02\n2dtjB01\n2k6aA00\n2zovA00\n2yu4A00\n2y27B01\n3pwxA01\n4inoA02\n4ds7E00\n3zrtD01\n1foeA01\n5lw3A00\n4lanB00\n1ur1A00\n4hsaF02\n5jo9A00\n3vliA01\n1g2bA00\n4makB00\n2ca5A00\n1gnlA02\n3rkoG00\n4ba9A00\n2rpbA00\n2qm1B01\n4icwA00\n3ipjA01\n4q6jB00\n2m85A00\n3t9kA02\n5dclA00\n2ctrA00\n2mzjA00\n3b5nA00\n1p9cA01\n3onrJ00\n1na0A00\n4jndA01\n1xkrA00\n2jiwA03\n4zu4C00\n3huuC02\n2kngA01\n2v5oA05\n4gdxB00\n2vqeR00\n1h98A00\n1gqgC02\n2y7eB00\n1z57A01\n1jcuA00\n1mixA02\n2iayA00\n2hjeA01\n1kblA03\n4d8bA00\n5tl8A00\n3sqiA01\n3d19B00\n2d7vB00\n2pblA01\n4ouhC00\n4qflA01\n3mpzA00\n2r0lA02\n1re3B01\n3pfyA02\n4a6rA01\n2fiqB01\n3ff1B02\n5in3A01\n2pocB01\n1wkcA00\n4atyA00\n1d4tA00\n4p4mA02\n5b1rA00\n1yz7A02\n4at7B01\n4upiA01\n3nbcA00\n2x9zA02\n2kyrA00\n3ub1A01\n2pd1A01\n2iazA00\n4xi0A00\n1q0rA00\n2kwaA00\n3dmgA02\n3whrA02\n4devA02\n1wfkA01\n4gipD03\n2yt4A03\n4lqxA00\n4irnA01\n3lb6D02\n5aunA01\n3i10A00\n4o92A01\n1ox3A00\n5j80A00\n3n9yC00\n16pkA01\n1potA02\n3gdhA00\n4bwnA00\n2xrbA01\n2w9hA00\n4p4mA03\n1b07A00\n3mzkB03\n1udkA00\n1jqgA01\n3on2A00\n3khnB00\n4lk4A03\n1o12A01\n2ep8A01\n4xjwA03\n3e2dA04\n3fgyA00\n5hiaA00\n4h22A00\n3ecfA00\n4x5wB01\n1puoB00\n2b4jC00\n1ug6A00\n2qntA01\n2ia1A01\n4jr7A02\n1o8rA00\n1my5A00\n1fzcB01\n1ej5A00\n2ii0A01\n3v9rA00\n2gwmA00\n4r75A02\n3gw7A00\n2k6xA00\n3nyqA01\n3twoA02\n2jgpA01\n3e0gA04\n2krhA00\n2p1aB01\n2fiwA00\n4gb5A00\n3lo8A01\n2mutA00\n1nsxA00\n1h6wA02\n3oosA01\n1p7hL02\n4fxkC02\n3e4oA01\n2yyoA00\n4g29A00\n1lqsL01\n3clqA02\n4r9fA01\n1lwuC03\n4yycA00\n1jmoA01\n1e2tA01\n2vqeE01\n3mnfA00\n3phxB00\n3h7fA01\n2hrzA02\n4jj0B00\n2pn2A00\n2np9B02\n6eimB01\n1dkxA02\n2ym9D00\n4zoyA00\n4mr0B00\n4l6wA01\n2n3lA00\n1ok3A02\n3teuA00\n3irbA01\n3hphD01\n2mhgA00\n4wywA03\n2hboA01\n1xaoA02\n1b8wA00\n3ghyA02\n3q63F00\n1of5B00\n3rq4A01\n1q5dA00\n5flmI02\n2re3A02\n4ac9C01\n2qi9A00\n1zjkA01\n4fr4A02\n3hsaD00\n2l17A00\n2vo1B00\n2wcjA00\n2q01A02\n2z3tA00\n3md9A01\n2jxbA00\n3mw9A03\n3pmoA03\n4ed9A02\n2zaiA02\n2dj0A01\n2ec4A00\n2ke3A01\n4kzpB00\n3dfeA00\n3pr9A00\n1v0dA01\n2vxbA02\n3ovpB00\n3rrsA02\n1xu9C00\n5buqA02\n4ehiB02\n4ebjA01\n5v3nA00\n3r9tC02\n1v61A00\n5h3gA00\n5b1nA00\n2x4dA01\n3mz1B01\n2m2bA00\n2cuhA01\n4x28A02\n2bjiB02\n3h20A04\n3bbdA00\n4wz0A00\n2okcA02\n3k1zA01\n3k59A07\n5ekcF01\n1edzA01\n4kn8A02\n5lp0A00\n1vk3A04\n3igsB00\n4kwaB00\n1h4gB00\n1a6bB00\n4lflA00\n2pptA01\n1ub4C00\n3x2mA00\n3qa8A01\n4bgcA00\n4c1uA02\n1wdeA02\n3hk4A00\n4epsA01\n1k0rA01\n4aruA01\n3vxbA01\n3i2kA01\n2i5hA01\n1g8lA03\n2jv7A00\n3zriA01\n2mysA03\n2kvzA00\n4eukA00\n2ztbA01\n1yqsA00\n3n1eA02\n1wqaA02\n3sqsA01\n2dvzA02\n4p13A01\n5kxhA01\n1twfC02\n3fmbA01\n3a6rA00\n3fanA01\n2yxmA00\n4d6vA01\n1cyoA00\n2yt6A01\n1f32A02\n2omlA02\n4wz9A04\n4tq1A02\n3p0bA01\n4lr3A01\n4i1sB00\n1jb0C00\n1ppjD01\n2rc5B01\n2q2eB01\n4n65B00\n2mdtA00\n1twfL00\n3vejB00\n4y1sA00\n2asbA01\n5ktbA01\n3hj6A03\n3rioA01\n2iv2X04\n4hspA00\n1jdwA00\n3oeiE02\n3tbkA03\n1qhhD01\n3cxjA00\n4x7rA01\n4g5eA02\n1f9zA00\n3rufA02\n5f47B00\n4r9iA01\n3cghA00\n4gs3A00\n2qv5A01\n2i7hA00\n1dgnA00\n5w2cA01\n3viqA00\n4uz0A00\n1u96A01\n2mkcA00\n3jtxB02\n4m7xA01\n4b56B02\n2k0mA00\n4b6dB00\n6b46I00\n2rffA00\n1x7oA02\n1wq6A00\n3nvxB00\n2mhdA00\n4im0A02\n1mw5A01\n3eleC01\n3r4dA02\n2v9kA03\n2uuvB01\n2gf4A00\n1r0vA03\n4tq1A03\n3mwyW03\n1avoA00\n5jhxA02\n1r62A00\n2vqaC01\n2ekfA01\n3q2wA05\n3umcA01\n5e9nA01\n1qnaA02\n1ngmJ00\n2qfeA00\n1vr9A02\n2kd3A00\n3ic4A00\n3fi9A01\n4eqsA03\n3l39A01\n2zb4A01\n1xrbA02\n2eihA01\n1n45A00\n3dm5B03\n1twyD02\n2x9qB00\n3dohA01\n2vi7C00\n4jocA00\n3r6oA01\n2efjA01\n5v89A02\n1y56A04\n2v0xA01\n4fvcE00\n3sy6B01\n1cr5B02\n3s57A00\n3h5qA03\n1reqB01\n2gagB02\n5iw9B00\n6bo0A00\n2a19A02\n2pgwA02\n2m5jA00\n1y81A00\n2vseA02\n1wevA01\n1zc3B00\n4mo7A02\n4whsA00\n3omyA00\n4rk6B02\n3p7iA03\n1knvB00\n1wj3A01\n3fhkA02\n1wyuB02\n3pmeA01\n2z4dA00\n2oarE02\n2kzrA00\n2zwaA01\n2wnsA00\n3uafA00\n4dnnB00\n3ic7A02\n4msxA01\n2w0tA00\n4uopA01\n2e87A02\n1yuaA01\n5xw3A01\n4fqeA00\n4hatA00\n2v5yA05\n3lxqA02\n3c8fA00\n2py6A03\n3s9zA02\n4jd2B01\n1udlA00\n2yykA02\n1vr7A00\n5f0jB02\n3wfjH01\n2ihyA00\n2kgjA00\n2gw5A02\n2z3gB00\n2q1sA01\n4dx9q00\n2p1mA00\n2gm5D00\n3f13B00\n1qpoA01\n2uzxB02\n1ii5A02\n4fflA01\n3zgzA04\n4behB01\n1w59A01\n3weeB02\n4mxwR02\n1t77A02\n2w3sA03\n3phsA02\n5kloA02\n3k53A02\n1lfkA00\n4zr8B00\n3m8nD01\n2pgcC01\n1nzaA00\n4g75A01\n3ohuC01\n3q69A00\n3tzlA02\n2j73A00\n3e35A02\n1s70B01\n1wh6A01\n2rvfA00\n3zwcA01\n3pfgA01\n1uekA02\n3k85A00\n2cpgB00\n3d9jB00\n4gwmA02\n3n08B00\n3uguA01\n2ppqA01\n1gk8I00\n3hluA00\n2hoxA02\n2b7eA00\n2nxwA01\n1klxA00\n2cfoA02\n4ousA00\n3e0gA02\n5ixgB00\n3pi7A02\n5tabA00\n4i1lA00\n3qbmB00\n3l0xB01\n2jbrA01\n2xdqB03\n3lqcA00\n2blfA01\n2ewcB00\n1i7wD00\n1jhgA00\n3tx8A01\n2fd6U01\n3hlkB02\n2qywA00\n2hbwA01\n4l2iA02\n3p06A00\n5jajA01\n2c3nA01\n3l4bC01\n3bzcA05\n2v3aA03\n1tvxA00\n5kj4C02\n3akoA00\n1eokA00\n1m3sB00\n1ye9A03\n2e2oA01\n2p7oA00\n4l8pA00\n4nb5B02\n4tkpB00\n4rxtA02\n2hsiB02\n2j48A00\n4pg7A03\n2h7zA00\n4oq1A03\n2zj8A02\n3vmvA00\n1g6hA00\n2pujA00\n1b22A00\n2glfA01\n2vf8B05\n4clqA01\n2ynmD04\n2x4jA01\n3mcxA02\n3rw6B01\n2yo2A02\n1jy2S00\n5ul6A00\n4jmuA00\n1ckmA01\n3wi7A00\n2yjlA00\n1b4fG00\n2vszA01\n4udtB01\n2p9bA04\n1vlaA01\n1lurA00\n5avdA01\n1nnfA02\n3oz6A01\n6b0gE00\n2aq6A00\n2bkaA00\n1yn3A00\n4e3yA00\n3fcyA00\n2qpqA02\n3grdA00\n6az1g01\n1rypI00\n1goiA01\n4j9tA00\n4i6mA01\n5le5H00\n4dnhA01\n1z6tA05\n4pfyA02\n6eqnB02\n1h97A00\n1cfrA00\n3pt1A02\n3lqwA00\n3rrrG01\n1yw5A01\n4x9kA00\n3hduA00\n2cs0A01\n4czxA00\n2m9vA00\n3hpaA02\n4msxA02\n3r3sA00\n3w7tA02\n1y5iC01\n3q8gA02\n3eqzB00\n1qcxA00\n4b8vA01\n3av0A01\n1pkyC03\n1b5fB00\n2gb3A01\n3d2lA02\n3ggmA00\n3wnvA01\n1rkxB02\n3n6rA04\n3u64A00\n4q5eC00\n4j25F00\n3ocrB00\n4mtdA02\n2xkiA00\n1efdN01\n1sr2A00\n3rcmA00\n3i5xA01\n3ci0I00\n2ck3D01\n4kqcA01\n1vk1A01\n3me0B00\n1seiA01\n4dg8A01\n1z6mA01\n3ayjA02\n1w99A02\n2b0jA01\n4fo0A01\n2joiA00\n4l63A00\n2kkhA01\n2no2A00\n4z0gA00\n1ksiA01\n2v0cA03\n3b0gA01\n5mb2B01\n3fkqA02\n4wj3C01\n3h3aA03\n1br2A04\n4zosB00\n5tzmA00\n1x3zA04\n2wb0X01\n4rh8C00\n1qsaA01\n1j5yA02\n3sokB00\n5jy1A00\n5ksdA01\n1ow1A00\n4w6zA02\n4ad9A01\n1md8A03\n3pidA01\n5jx5A00\n4qt4A00\n1unqA00\n4nocD00\n3u28C00\n1jiwI00\n2nr7A00\n2wmmA02\n5tpkA02\n2w45A01\n2dmbA00\n2znhB01\n4rriA01\n2vuvA00\n4oaqA01\n3cnyA00\n3w6bB00\n3i3wA01\n1odzA00\n2ja4A00\n2kbnA00\n4ccjA02\n1wmiA00\n1iyuA00\n3dh0B00\n2mz0A00\n4wepA02\n3aonB00\n1p49A03\n4fvdA02\n3iqlA00\n3rd7A00\n3mkhA01\n3ultA00\n1x4rA01\n1kj6A00\n4dndA00\n3k6jA02\n3nwzC00\n5a2qw00\n3e49A00\n4jp0A01\n1wvfA02\n1qubA01\n1mg1A03\n2e50P01\n2hv2A03\n2q83A02\n3bwnD01\n1pu6A01\n2ux0A00\n1fn9A01\n2hi4A00\n4dxbA03\n2if2A00\n5cayG01\n1oizB01\n1y93A00\n3al9A01\n2ervA00\n2km6A00\n2l9nA01\n4lgdB02\n1p22A02\n3udfA03\n2k8sA00\n3ckyA02\n2fb9A02\n2p9rA00\n1hyoA02\n3gqhA01\n2halA02\n4kemA02\n2la7A01\n2f37A00\n2c9wA01\n2rdeB01\n4nxiA00\n1pjaA00\n3ervA00\n2kpyA01\n1vybA00\n4pcaB00\n4yleA01\n5fgoD00\n3dr4A02\n1pujA02\n2axwA01\n4zglD00\n1wh0A01\n3hm6X01\n3uguA02\n3louB01\n2v5fA00\n2z3qD01\n3v4gA02\n4ga6A03\n4g2nA01\n3cpxB01\n2oh1C00\n3mwbA02\n4rhwE00\n3a1cB01\n3majA01\n3kewB02\n3suuA01\n1qnaA01\n5j1nA02\n2vsdA00\n3hrxA02\n1x0tA02\n2l6eA00\n4k05A01\n3fz2E00\n5t57A01\n1qg3A02\n3k0yA02\n1wjtA00\n3sf4D00\n4e4uA01\n3agdA01\n3uesA02\n1rm6A03\n5lewA01\n1gtmA02\n2e6iA00\n4lswA01\n3n0uA02\n1q7eA01\n2h88A04\n3qkbA00\n3nekB01\n1x9pA01\n3cbwA00\n3gaxA00\n4evqA02\n4kddA02\n1i07A00\n1vcvA00\n5c98A01\n2co8A00\n5dawA00\n5le5Q00\n2e26A01\n1tk5A04\n4ehuA02\n5ifpA03\n1rhxA00\n3f6tA03\n1zpsA01\n4bf2A02\n4oc9A01\n2v6eA02\n3vk8A01\n1tu5A01\n1w6kA01\n3ddeB00\n5pg1A00\n3pnxB00\n5c67E00\n2arrA01\n3h4cA02\n3venA02\n1l2lA01\n2gfiA02\n2yt0A01\n1cqzA01\n3vbcA00\n4gysA02\n2r25B00\n3d4eA02\n3fdhA01\n3mmyB00\n2dflA01\n1b9xC02\n1fw8A01\n1kn6A00\n2wf7A02\n2ph0B00\n4hzdB01\n3g0tA03\n4m20A00\n4exrA02\n4it4A02\n3eujB00\n1m8nB00\n1a91A00\n1aapA00\n3u5wA00\n2dlxA01\n3bf5A02\n4tkrA00\n3kd3A02\n2v4hB00\n2wzpP04\n4yfeA02\n3e13X02\n4xrtA01\n3s81D01\n4ay0A01\n2yh5A00\n3lo3A00\n2otdA01\n2kooA00\n4bluB00\n1keaA02\n4ki3I00\n4e61B00\n3sebA01\n2nutA03\n2nswA00\n3qxzA02\n4rzyA01\n2wpvE00\n1wwzA00\n3kd4A03\n1gz2A00\n4n03A01\n4pbxA06\n3sk7A00\n3g15B01\n1x19A02\n4ovnF02\n2l0dA00\n3ndcA02\n4jdoA01\n1h2bA02\n3c0wA01\n4djaA03\n3rgcB01\n4n72B00\n1z7kB00\n2j9lF01\n5kvsB01\n3okyB01\n3l0iA02\n3t64A01\n2bh9A01\n1tulA00\n3vv1A00\n3gpgA00\n3h3eA00\n4exnB00\n3cngC02\n4r9xA00\n4h89A00\n1foeC02\n3nkqA01\n5jowA02\n5eeqA00\n1cfzA00\n4mzyA02\n4xcfH01\n5a95A00\n4am6A02\n3uykA01\n4zo4A00\n3jzlA02\n4dimA03\n3hdgA00\n2eo2A00\n3tqtA03\n1n2mC00\n1u5dA00\n4umgA00\n1lmlA01\n1lkoA02\n2cjtC00\n4lmyA02\n4m8mA02\n2qjpB02\n4y85A02\n4fdyA01\n1z2uA00\n2h3qA01\n3tl4X02\n4ragA02\n2lmlA00\n1l7bA00\n3rf3A02\n2uy6C01\n1k8kC00\n5hmaA01\n4l8kA01\n4ay0B02\n3ptaA04\n3a6sA00\n4b2rA01\n2a0uB01\n1l6pA00\n4l1fA01\n3cjhI00\n1wfoA01\n3tadD01\n1t82B00\n6bcbA00\n2djaA00\n4r1vA02\n1pieA02\n2dltA00\n5hweA02\n3cmgA02\n1b7yB05\n2plcA00\n3q6sA00\n1werA01\n5fl3A01\n2vriA00\n3pmcA00\n4h2wC00\n4a7wA00\n5ekdA02\n4kopD00\n2pn1A03\n3lw9A00\n2h8nA00\n4zk1C00\n3zx7A01\n4hh4C01\n2nx9A01\n3dzzA01\n5g0aA02\n2pjuC01\n3td9A02\n3dteA02\n5aysC00\n4bhqA00\n4lleA00\n5je8B02\n2vdwB02\n4bjaA00\n4fmkA02\n4zpxA01\n2xeuA00\n4l11A02\n1pjqA03\n2yj6B01\n1fxkC00\n3emrA00\n1q2hA00\n4dywA00\n4x36A02\n4me9B00\n2ccyA00\n1eqnC03\n4bbyB04\n2wzvA01\n2z0qA01\n3oh3A02\n2cs8A01\n1fftC00\n3fvvA02\n2gcuA01\n4g2aA01\n2j3xA02\n5xc5A00\n4y7uA00\n1yukA02\n2qmaA03\n3fjoA01\n2va8A03\n3hl8A04\n3cf6E04\n1elvA01\n4ounA00\n3qx3A04\n1wa9B03\n3pm9A02\n4onrA00\n2lioA00\n3fh1A00\n3q0bX00\n3vo3A02\n2o3bB00\n1x9bA00\n3okpA02\n5ot0A01\n1v5sA00\n4avaA01\n3vywA01\n4oevA01\n2o2xA01\n1jyaB00\n3cmgA03\n2di3B02\n2zfyA01\n1o75A01\n1bquA01\n3c5cB00\n1yq2A02\n3c48A01\n4bpyA00\n3u7uA04\n5u9nB00\n2vunA02\n3upuA02\n2lgqA00\n2jgsB00\n4huqS00\n4wfqA00\n4umvA02\n5hk7B00\n4g2kC00\n1i2uA00\n2z0rC00\n3etnB00\n1ep3B01\n3uuwA01\n3h5tA02\n2i2xB01\n5jrjA01\n1hh2P02\n3lm2A02\n3u02A02\n3m33A00\n4maqB00\n5uofA02\n3gykB00\n4hpmD00\n2hf1A01\n1vj0B01\n2h7oA02\n4durB01\n4hy1A02\n4z2oA00\n1ciyA01\n4kigA02\n2v17L01\n1hfeL01\n1bcpD00\n3r8qA03\n5i7iA00\n4p6bB00\n4bx9C00\n2h2tB01\n3pucA00\n1rliD00\n4xjwA02\n3ujhB01\n4w7wA00\n3fgqA01\n1m32A01\n1s5jA03\n3gnnA01\n5dxfA02\n1h4uA00\n4bjjB00\n2c3gA00\n2ek1A00\n1kjqB03\n2yhxA02\n3rnsA01\n4i84A00\n3crkD00\n3vx8A02\n2f5xA02\n3w0kA00\n1fiwA02\n1n6zA00\n1uddA00\n3a21A03\n1wu2A01\n1ug1A00\n1td6A01\n5jscA01\n3c8dA01\n2jn9A01\n1rssA00\n1b8xA03\n3s6jE02\n2fulB00\n1imlA00\n5f5nA00\n2o3jA03\n3i96A00\n4m9pA01\n1pjzA00\n2d3o100\n1fsgA00\n3ic5A00\n3bm7A00\n1vkwA01\n3iiiA03\n5hk3B00\n5faaA00\n2hjsA01\n2c0cA01\n3cslA01\n2de3A01\n5cvdB00\n5fkbA02\n3imiC00\n3hphH00\n1o9aA01\n3ksrA02\n1mpgA02\n5my5A01\n3pgvA02\n2yi9A01\n4kvgB02\n2cnqA02\n5nulA00\n3wxyA02\n2w25A02\n5cgmB01\n4pkwA02\n4kt7A00\n4dgjA01\n4jkzA00\n2hfkA00\n2o5hA00\n1c3gA02\n2p10B02\n2kdtA00\n4jdfA02\n5e8sA02\n3tvjA01\n3c9zA01\n1rynA00\n2v03A02\n4fxdA04\n5ahkA03\n2a2kA00\n3go6A00\n2kcpA01\n1q7lB01\n2k88A00\n3ju4A03\n1ly1A00\n2oxlA00\n1zswA02\n4exkA01\n1z0pA00\n3u61A02\n3towA00\n4dteA02\n4zxbE06\n4ccdA01\n4b0zA00\n1tkvA00\n2d9wA01\n6az1U00\n2f9wA02\n5esrA00\n2p0nA00\n3sfvB02\n2keoA00\n2j5aA00\n3b0zA00\n3dgbA01\n3uf7A00\n5ktbB01\n2nyiA02\n4l9mA04\n4kq9A02\n2q7bA00\n5dcyB00\n1l3wA04\n6em3O02\n3hi0A02\n2p08B00\n3hx8A00\n1jjoA00\n4dkkA02\n2wp7A00\n3lofD00\n5tdeA03\n1rg8A00\n1a6sA00\n4at7A01\n2zi0A00\n2ysmA00\n3ucjA00\n5f1sA02\n3hg7A02\n3cueC00\n3m1mA02\n5ls7B00\n2gaiA03\n2bjnB00\n2rioA01\n4j7aA00\n1b79B00\n1v9mA01\n3bgwA01\n3ol4A02\n1jfuA00\n4htgA01\n5y4zA01\n3widA02\n1ygyA04\n1tqyB02\n4n0hA00\n1gprA00\n3udcA02\n2l3fA00\n2qlzA02\n3pfqA01\n3f75P00\n2e5yA01\n1k4tA01\n1kolA02\n3nrxA00\n1w96C01\n1ztmA03\n1va0B02\n2nscA01\n4nx1A00\n3pshA01\n1npyA02\n5e62A01\n3oidC00\n2o1sA02\n3kkzB00\n3wuhA02\n1k0wA00\n2hy5A00\n1y4wA02\n5mdtA00\n1zunB03\n3mcpA01\n1df0A02\n3onpA00\n3lnnA01\n2mhyA00\n3cdjA02\n2vgaA00\n1fkmA02\n3npiB00\n1a0rP02\n3kwkA00\n4f4sB00\n1mpxA03\n5f4wA00\n3fixA00\n1ugiD00\n2b5wA02\n2zopA00\n3cgxA00\n4z7xB00\n1wmaA00\n3cjsB00\n2f7lA03\n3g7kA01\n4ht4A00\n1hyoA01\n4w8iB01\n3nz3A00\n3ju4A01\n3o0fA01\n5mozA00\n3g48B00\n2w3sB02\n5achA00\n4di1A02\n1y56B02\n2e2dC02\n4dcaA02\n1xhmB00\n5szcA00\n3qfeB00\n2a5hA01\n3lbeB00\n3tjmA01\n3kdfB00\n3wgcB02\n3gywA01\n2a9gA02\n4rt5A00\n3zcoA00\n1aozA01\n2d8aA02\n2ql3A01\n2cukA01\n5ve3A02\n4gx0A01\n2xdqA03\n5icqA01\n3fo3A01\n3vpzA01\n2x0qA04\n2gjhA00\n3rloA01\n2vnuD04\n3gmxA00\n3k4oA00\n4lqkA00\n4fd4A00\n2ej8B00\n1kz7C02\n2b3hA00\n1pbyB00\n4l05A00\n4n0tA04\n4impA02\n3h4qA00\n1e5dA01\n1pbuA00\n2v0nA02\n2oq1A02\n3h4tA01\n3u7qB02\n5gpgA00\n4gv2A02\n1nmoA02\n3sdeA02\n1e59A00\n1iq8A04\n3hufB03\n1q4tA00\n3f7eA00\n3p6lA00\n1ejfA00\n3qufA01\n3mb2B00\n4oopB00\n4gqwA00\n4qd6B00\n5uejB01\n1kkhA01\n3doeB00\n2gb4B00\n1xs5A01\n3ltoA02\n2tpsB00\n4hg5C00\n4i5pA02\n1bvsF03\n2rh0A01\n4y0fA00\n2q14C01\n4efaC00\n4wqmA02\n1ob8A00\n2qhlD00\n2q78F00\n3pohA02\n5e95B00\n4aukA03\n4f80A02\n1urhA02\n2uwnA03\n4zraA00\n4pl7B01\n4cc0A01\n3erbA03\n3i6sA03\n3orkA02\n3clqB01\n1v33A01\n4qasA00\n2k1aA00\n4wkyA02\n2p9uB01\n5dwzC01\n2ra4A00\n2cx7A00\n2jwhA00\n3d48P00\n1sfcH00\n2pjzA00\n1cd9B02\n1bvp101\n2e0nA01\n4gi3C00\n3zvrA02\n3ocmB00\n4r6kA01\n2heyR01\n1xppD00\n5oomI00\n2e8bA00\n5hk8A00\n1l5hA02\n5a3fC03\n1e3mA01\n3d1lB01\n4yl8A01\n1vkhA00\n3bxwA01\n2bkfA01\n3aluA00\n2la4A00\n3vtxA00\n3fwcB00\n4qbnA00\n2ipxA01\n2k7vB01\n3hlxA00\n2w3sB01\n3iiqA01\n3f9tA02\n4aogA00\n2yx5A00\n2yinA03\n5thkA00\n3h6rA00\n3fd5A02\n2fphX02\n2jn4A00\n1zm8A00\n3kzgA02\n3iayA07\n4pu7A00\n1oqjA00\n4yj6A00\n4q0jA02\n2wm5A00\n3oblA00\n1te7A00\n1cukA01\n1yn8A00\n1g55A02\n3ubfA03\n2a33A00\n4ei0A01\n2v1xA02\n1xm5C00\n3m6mD00\n2a1vA00\n4epcA02\n5vqfD01\n2m6mA00\n4wz9A03\n3qzbA00\n1xdiA03\n3h75A01\n4fwiB00\n1stzA03\n5b2dA00\n3t7vA00\n1rx0C01\n1bd3A00\n5vzaA04\n1zyoA01\n3bpsA02\n1gvzA01\n2vobB02\n1wb9A04\n3m8jA00\n3kzxA02\n3rfaA02\n3qvqA00\n3i9v102\n1ayeA01\n3hdtA00\n1dd9A01\n4bqdB00\n5vnxA02\n4nc6A01\n4p9tA01\n4tyzA00\n1y3iA01\n3jc6C00\n2l8eA00\n5epoA00\n5x8fB02\n1hypA00\n2pttB00\n3khiA01\n3zdoD00\n2qr4A02\n4kqkB01\n3vemA00\n4ojmX02\n3e82B01\n2qmaA02\n4hkhA00\n2b4vA03\n2f2uB01\n2qdjA03\n1tq5A02\n1j6rA00\n2hi0A02\n2f01B00\n3aa0B02\n3e10A00\n1ornA02\n2ju1A00\n2if6B00\n2l5gB00\n1uu2B01\n3u0hA00\n5tdrA00\n4hikA00\n4k5sA03\n4p2iA00\n4yt3A00\n3w5hA01\n2x5yA00\n4e6xB00\n3crcA01\n1tedB01\n2b1eA01\n5m4yA00\n3c26A00\n3eafA02\n1z3iX01\n2gffA00\n2bkoA02\n3t7yA00\n5g05P01\n3zjxB01\n2b4aA00\n3n7sA00\n2v1rA00\n2vvpC00\n1p91B00\n4d4rB01\n3chvA00\n3lkdB01\n2gt1A02\n1ou8A00\n3zmrA01\n2hqvA00\n4bbyA03\n3awuA00\n3ec3A01\n4ubtD00\n3uitA01\n1whwA01\n1o7fA01\n2hy5B00\n1or0B01\n3ftbA02\n2r44A03\n1tzkC01\n3bc9A01\n2oodA01\n2pn0A02\n4y0hA01\n3w7tA04\n3bqwA02\n2cwoA01\n3fcsB06\n3obyA02\n3s8mA00\n2ee3A00\n2d0oA05\n2rjzA01\n2odiA02\n2wm3A02\n4mboA02\n4hkgA00\n3qy1A00\n3seiA01\n2xziA00\n3tewA04\n5tsqA00\n3lhrB00\n4ae2C01\n4y96A00\n3zeuB01\n2yogA00\n3sq7A01\n1v37A00\n1y64B01\n1b5eA00\n2e6rA00\n3iekA01\n5jp0A03\n2pjdA02\n1byrA00\n3ed5A01\n3wttB00\n3e1eC00\n2djpA00\n2parB00\n3u21A00\n2lciA00\n3u6gA00\n1s4cC00\n3zdbA02\n4l44A01\n1o04A02\n4czuA01\n1p4tA00\n2opjA01\n1e0gA00\n5fagA01\n4pabA02\n5h9fB00\n4qdcA02\n1im2A02\n4n59A02\n2cy2A00\n2bh8A02\n2d8yA01\n3ijlA01\n2v84A02\n2pz9A00\n3dmyA02\n3rr1B02\n4mf5A01\n4jzzA01\n3f7pE02\n4ohfA01\n5ce6A02\n3lnnA03\n3vqtD02\n4j8qA02\n3k5pA02\n2g8yB01\n2b81C00\n3wyeB00\n2ehbD00\n3besR01\n3ckdA03\n1p2fA01\n2hy7A02\n3iegA00\n3wa2X01\n4u6uA00\n4f3lB01\n1o20A02\n2rfqB01\n3rqwA01\n2qbuA02\n4g31A02\n3hugJ00\n1jkgB00\n1yx5A02\n1rzsA00\n4dylA02\n4bwpB01\n4kv9A00\n5a0yA02\n4p0fA02\n1wzlA01\n1dk8A01\n2kz6A01\n3pyfA02\n4c00A04\n4pevA01\n4a6qA00\n4r3nA01\n4nckB01\n5cr4A00\n2aa4A01\n2pw9A01\n1sznA01\n2dsjA02\n4lubB01\n1wkvA01\n1k38A00\n3d6wB02\n1k8kB01\n3qu5B01\n1ixrB03\n2jllA03\n1iqzA00\n4r01A00\n1x4tA01\n4mj0D00\n3hupA00\n1jdpB02\n3nf1A00\n2o34B00\n4mdyA02\n3bt3A02\n4l7gA01\n1yg0A00\n3thxB01\n3kzpA00\n3wvoC02\n1tbfA00\n2i2cA01\n4bgpA02\n1uscA00\n1q42A00\n4i4tE01\n4c12A01\n4k84A00\n5hj9A00\n5d9xA01\n4j39A01\n2qibB00\n1ktgA00\n3nsxA02\n4oqpA00\n3ly7A02\n1kg1A02\n4i71A00\n4rjzA02\n4a3pA02\n3uorB01\n4qdiA02\n5eruA04\n4lb0A02\n4c5cA02\n2pozA02\n2xhgA01\n1i0vA00\n1q0pA00\n4fvmA05\n2pw9C02\n2o5aA01\n1n4kA01\n2nwbA02\n4ko8A03\n3tefA01\n3nekA02\n2hthB00\n4e84B00\n3kz5E00\n4l0fA00\n1sk7A00\n4f2eA00\n3pqcB00\n1w8oA03\n3tq5A01\n4j8cA00\n2o9xA02\n4noiA01\n4ac7A00\n3qyjA00\n1v57A02\n4xxuA01\n4itbA01\n3mwxA00\n2grvA02\n4e3eA00\n3b82A03\n1nkgA02\n3n75A03\n4g1tA03\n2rijA02\n2dx0B01\n2w7nA00\n4evfA02\n1i4nA00\n2a5yC01\n2k5iA02\n1wxqA02\n1r2qA00\n3pe0A03\n3eivD00\n3ma5A00\n2dgyA02\n5cw2A00\n4ykiA02\n2xxpA02\n1kgcD01\n5wseB00\n4oelA01\n3lnbA00\n3id9B00\n5jbdA03\n3ulkA01\n1f8yA00\n3it8D02\n2hfvA01\n2hd3A00\n4da2A02\n1o5hA00\n4zdtC00\n5j7dC00\n5idqB00\n2x1fA00\n1cb8A03\n3rtlB00\n4by6C00\n3fo5B00\n2xzlA04\n5dxfB01\n4yqdA01\n4bsjA02\n2lxiA00\n1rq0A01\n2ewfA03\n1k8bA00\n2xj7B03\n2i4kA00\n2oizA01\n3ou5A02\n1r79A01\n4o8sA02\n3v0dA02\n4m9pA03\n5e6zA02\n4efaG00\n4we6A01\n2fiyA00\n2znhA02\n5jphB00\n1uebA02\n4kksA03\n2pytA00\n2id4A02\n1b3qA04\n1hcdA00\n4ncbA05\n1r0mA02\n4dh2A00\n4bzyA02\n4e0gA01\n1nnxA00\n3it3B00\n1hxvA00\n2g84A01\n1xovA01\n4c47A01\n4pxeA01\n4ftxB01\n1aroP02\n3ks3A00\n1yg9A02\n3v9fA01\n3moyA01\n3hv8A00\n5i4nA02\n5ybwA01\n1ajkB00\n2cmgA02\n5gxdA01\n3vygE00\n4wv4B00\n3bpqA00\n4ml7B01\n1vg0A03\n4aqlA02\n5hv6B01\n3dalA00\n2qgqA02\n4ag1A01\n5h9iA00\n1twfI01\n4p3hA00\n4z65A00\n2ozzA01\n3l4gC04\n3k3qA00\n5vm2A01\n3bdeB00\n3if5A02\n4r2xD00\n1h2bB01\n3mxnB00\n1vfyA00\n2kt8A00\n4pyrA01\n3g3sA02\n5b23A00\n3b82A05\n3g68A01\n3rg9A00\n3f4sA02\n4fekB00\n3tw0D01\n3besR02\n1x74A01\n3b34A03\n2cruA01\n2ps2A02\n4bmhA00\n3cp7B02\n2yf2E00\n3laeA00\n1jr7A00\n4jh2A01\n2fdbN00\n1fcqA00\n4izhA02\n1ghhA00\n2hdlA00\n3vaaA00\n1c1yB00\n2zrrA00\n3hulA02\n2freA00\n2fxuA01\n1e1oA01\n2akaB00\n3cd8A01\n2w2kA02\n4litA01\n2jbwB01\n4v3lC00\n3a9lA00\n4qvaA02\n2blnA01\n2bhvD01\n4lj9A01\n4cgvB00\n4i6xA00\n1pj3A02\n2o57D00\n1ne5A00\n4y9tA02\n2eduA01\n4zblA00\n1cs6A01\n4qgoA00\n2ywwA01\n3e5dA00\n5l19A00\n1c4kA04\n5jc8C00\n3rklA00\n4zxbE05\n1ya0A01\n4ix8A01\n1x5xA00\n2cxxA00\n2damA00\n2g7rA00\n2nq3A00\n4uhoA02\n1lbuA02\n5m3oA02\n2e1vA01\n4gvbB00\n4p02B04\n1x4lA00\n3tk8B01\n1n7vA02\n2nrlA00\n3zleI01\n1irqA00\n3hm4A00\n3rjaA02\n4cq4B00\n1lbaA00\n2pd2A00\n5tgnA00\n2u2fA00\n2w1kA00\n3d3rB00\n3i33A01\n3rykA00\n4u19A01\n1q02A00\n3m1tA00\n2jjqA01\n4w8bA00\n4hdrA01\n3r4iA02\n2zixA01\n3kjhA00\n3n0xA02\n3k7iB00\n2ycfA01\n3i09A01\n2grcA00\n2e4mC00\n1jyoA00\n1b5fC00\n3pf0A00\n2lmeA00\n1d7kB01\n3nklB00\n1ekeB02\n4a5xA00\n1wcnA01\n5y32B01\n5xyiU00\n2dnxA00\n5c5aA00\n2bhuA01\n3ktdD02\n2ma6A00\n2hldQ02\n3rlfF04\n4b6xA00\n4ofxA01\n2oryA00\n2gysA03\n1zn6A00\n4qtbB01\n5wtzA01\n3jymA01\n5i9jA00\n1w0mA00\n3v5cB02\n3ubfA02\n4dx8J01\n1ryaA00\n5cq2A02\n3cb3A02\n4qdnA00\n4dzhA01\n1n26A02\n2j7uA04\n3gf8A01\n2gvhB02\n4yzoC00\n4lbhA00\n1wyzB02\n1f45B00\n4qyoB00\n1ouvA00\n1th8B00\n2lfuA02\n4g54A01\n4kp1A02\n2i6hA01\n2chgA01\n1vpyA00\n1z23A00\n4n2pA00\n2katA00\n2hf0A00\n2luhB00\n1s6dA01\n1t6cA01\n3lkkB00\n2pcjA00\n1p9rA02\n3ry3A01\n1ovmA02\n4joiC00\n3p1aA01\n1h5qA00\n4i4tC03\n4b62A00\n1ru4A00\n3zjaA01\n4lowA00\n3fawA02\n3ckyD01\n2ol5A00\n4k2pA02\n1r0mA01\n2rkvA02\n2m3kA00\n1z8gA01\n4e6uA01\n1m6yA01\n3bf7A00\n3hr7B00\n5dldA02\n5lzhA00\n4bfcA00\n3k0bA02\n3lcmA00\n2g3qA00\n2eplX02\n2o7rA00\n3q2iA01\n1vl4A01\n3teoA01\n1vl7A00\n3cjyA00\n3hdoA01\n3rssA01\n3v7iA01\n2ca5B00\n1nznA00\n2kk7A00\n1x6gA00\n3nk6B02\n2lyxA00\n3rgzA02\n5dm6Q00\n3by4A00\n4dgwB02\n1ys1X00\n4ynxB00\n3pfnC02\n2r8rA00\n1mynA00\n1vq8M00\n2hytA00\n2o8nA00\n3zpgA02\n3mkvA01\n3bzbB00\n3al5B01\n4z3tB01\n1gmjD00\n3d31A02\n1fs0G02\n2zj2A04\n2gcgA02\n1iurA01\n5vctA00\n2cc3A00\n4puhA00\n4n6cB00\n4h6zA02\n4ollA02\n3cwzB01\n1fs0G01\n2wskA01\n1vhtA00\n1w4rA01\n3lzdA01\n3htmA01\n4jwxA02\n3hzhB00\n2q0oA01\n3t6pA01\n2gmhA02\n3kasA01\n1od3A00\n2wa0A02\n3nhiA01\n4b4yA00\n3pdiH04\n3zymA02\n2qi2A03\n4ozxA00\n1sgoA01\n1tuvA00\n3rp8A02\n1wwyA00\n4go6A00\n1yhfA01\n3c9fA01\n1hs7A00\n3agkA03\n3eo7A01\n2dq5A01\n4e1pA00\n3bg2A02\n1h6hA00\n5deqA01\n4c3sA02\n5nioA02\n2bcqA01\n3eulB00\n3uemA01\n1i36A01\n1efdN02\n3r1kA02\n2idaA01\n4necC01\n4f15J02\n4fw9A01\n3bf5A01\n3hshE00\n2q5cA02\n1y0gA00\n3i7dA00\n2iy5A00\n3b8lA01\n3qqnA00\n1ac5A00\n2h3gX02\n1jb3A00\n1ddwA00\n3hh0B02\n4xltA00\n3ip4A00\n1ws8A00\n3ejbB01\n4i93A01\n2zuvA02\n3h90A02\n3tadC02\n2bsyA01\n2jxgA01\n1yp2A02\n3pjxA02\n2g5cA01\n3wu4A01\n4lpvA00\n3l3fX01\n3tc3B00\n1lrzA02\n1mtyG01\n3ne5B01\n1euvA01\n2fyfA01\n2jmiA00\n2dmvA01\n3rd5A00\n4haeA00\n3a6mA02\n3l9wA01\n2kk9A00\n2eapA01\n2lpmA00\n2qltA01\n1mabG00\n1a4iB01\n2avnA00\n2h5nC00\n2i6hA02\n2x51A06\n1k8kA02\n2zqmA00\n2hy5C00\n2gbjB00\n3dr3A01\n3u0bA01\n1yarH00\n5an4A01\n1j6uA01\n5f6lB00\n2psoB01\n6az1F02\n5enqC02\n1u2zA01\n1xtaA02\n1jz7A04\n3iijA00\n4d86A01\n3a4lB01\n4nacA00\n3qy7A00\n2x6qA02\n1ghjA00\n4q6kA01\n4lh9A00\n4o2tA00\n5on8A02\n3n89A01\n3kewA01\n2i0mA02\n4mruB00\n3i83A02\n2e9xA01\n2gfhA01\n3hh1A00\n4j1qA00\n2pfiB01\n1x1oA01\n1kvdA00\n3ufiA01\n3r4cA02\n2gv5C00\n3bc9A02\n5xmvA01\n1qusA01\n5ex8A00\n2vqeI00\n2cw8A04\n4hatB00\n2e62A01\n1jsxA00\n2fo1D00\n3vcxA02\n5x9vA01\n3fhnA02\n4indA02\n1tqzA01\n2pokA01\n4jk8A02\n3vkiA02\n4wpyA01\n3kt7A01\n5e0jA02\n1ys7A01\n2ywqC00\n2f4wB00\n2pjrA03\n5drbA01\n4wkrA02\n3zfpA02\n3b85A00\n1zbsA02\n3bp3A00\n3qauA03\n3qq6A00\n2pqmB01\n4k3fA01\n3vqtB03\n4cmhA01\n4e4rA02\n2rjoA01\n5xxlB03\n2edmA00\n3fhrA02\n3rp9A01\n3t7aA01\n2js2A00\n6amgA00\n3fdqA01\n4kgdA03\n2qgqB01\n4aqlA01\n5mb2B03\n5hdmA02\n3ne5B03\n2lf2A00\n2dajA00\n1swvA02\n1p32B00\n5dcfA01\n1zxfA00\n1y8eB04\n1p9bA02\n4bduA02\n3defA00\n5c94A00\n3dnfA02\n1pv8B00\n3oh8A02\n1cc8A00\n2bopA00\n3vrcA00\n1kf6D00\n2jvlA01\n2om6A01\n3fp5A00\n5gm0A01\n1mk4A00\n2bi0A01\n1hj0A00\n1vbvA00\n5dj1A01\n2vxbA01\n3wajA02\n2rngA02\n2ge9A00\n4ihqB01\n1sq4A01\n3nybB00\n3rlfF03\n4ej6A01\n3d59A00\n3vthA04\n4ccwA00\n2nptA01\n2x41A02\n5xd7A02\n4dcmA02\n1tf5A02\n1t6eX01\n1op4A01\n4lzlA00\n3fdoA00\n3q87A00\n1vp7D00\n2j3sB01\n3g8qA01\n1ixcA03\n4ry2A02\n4y86B00\n2o8pA00\n2wiiC01\n2z5yA02\n3i00A00\n2ybyA01\n2yb1A02\n2jh3A02\n2p4wA02\n1pm3A00\n3cesA03\n1knrA03\n5hqaA02\n3cw3A00\n1zboA02\n2fl4A01\n2ftrA00\n5tpvB00\n3eb8B01\n2g36A02\n2i02A00\n3d1gA01\n1nxmA00\n3gziA00\n2ku3A00\n2wvxA01\n5lw5A00\n3k6rA02\n3ci3A01\n1fiuA00\n1m55A00\n3mudA02\n2uzxB01\n1go3E02\n5culB00\n1g6xA00\n3hs3A02\n4dt4A01\n3c38A02\n3lp8A03\n4rj2A00\n3f5bA00\n1nnlA01\n4wfoA04\n3d33B00\n3fkdA02\n1hfiA00\n2l0cA00\n1p1hB01\n1w7cA02\n2uvpA00\n4f03A01\n2e9hA02\n1fzcA00\n1m93A00\n3f8tA02\n1wc2A00\n3tpqM02\n4ri6A01\n4b0hB00\n1jidA00\n1vlaD02\n2r3bA01\n1s1gA00\n2j7aC00\n2ypaB00\n3fbqA02\n4eyeA02\n1y7rA00\n4pneA00\n3gpiA00\n4k36B00\n2zyzC00\n1fxlA02\n2cszA00\n3vlaA02\n2jxnA01\n2crlA01\n5wy2A00\n5cdzA02\n1xkoB00\n3bb6C00\n1vhsA00\n3g7kB02\n1bihA02\n5ekiC00\n1whrA00\n5o2vA00\n1yf3A02\n4x5wA01\n1evlA02\n3m2pB00\n4f2lA00\n2bkrA00\n3mwcA01\n5fr6A00\n1inpA03\n2kinA00\n4wj7D00\n1u69C00\n2go7A02\n6bogA08\n1s05A00\n1n62B04\n3guuA01\n1ddgA01\n4en2C00\n2fe1A00\n2kqrA01\n1yleA02\n2xr1A01\n2olgA02\n4zvaA00\n2grrB00\n1ei5A03\n5epeA00\n3gb0A01\n2fomA01\n3cuzA01\n1jb7A03\n1piiA01\n2qflA02\n4gxtA01\n3n6xA02\n3r6uA02\n2x7xA01\n3u1cA00\n4rifB01\n1kblA06\n3bsoA02\n3ntkA02\n3o6pA00\n4x2rA00\n4kh8A02\n3p9vA00\n3wctD00\n1ihgA02\n3lvmB01\n4j4hA02\n4p5nA00\n1wj7A01\n5dl8A00\n3hhdA03\n2h1yB01\n4j8lA02\n1zuoB00\n5i86A00\n1werA02\n1o6lA02\n5kp7B00\n3lzkB00\n1ib8A01\n3d30A01\n4ic9A00\n1zruC01\n3mwbA01\n4a5sA02\n3gixA00\n6eqsA02\n3ctpA02\n3qilB00\n3wxmF01\n2jswA00\n2m0nA00\n2petA01\n3fojA00\n3dewA02\n2x7rB00\n5cxxB00\n2eqaA01\n4yarA02\n1vl2D02\n2yztA00\n5i5mA02\n3qpaA00\n3cq2A00\n5xfoA02\n1yj7B01\n1t94A01\n2hkeA02\n2l16A00\n1ji7A00\n2hi6A00\n4qwoB00\n2a5lB00\n4e69A00\n1kmiZ02\n1wp9A01\n2aebB00\n1dl5A01\n5tirB02\n3ig4A01\n2hykA00\n4aj5H00\n6az1V01\n4egvD01\n2md0A00\n1wduB00\n1oxjA01\n2zouB00\n2e7zA04\n2k2dA00\n5le5F00\n1atxA00\n4zjuA00\n4rfsS00\n2cg9X01\n2vmhA00\n4k12B00\n5gxeA02\n3ksmA02\n2nn6A01\n4bkwA03\n2ahmE01\n4z9cA00\n3vcfA00\n3znuA00\n3f9uA00\n2xrcC04\n4cq1A02\n3ieeA02\n4cgsB00\n4ur7D00\n4fgmA01\n1jykA00\n5oomL00\n2ganA01\n3pe7A00\n5ej8A02\n2bhvB02\n3l86A00\n2v8iA02\n3o8mA01\n3vpbB03\n3k6qA01\n3pdfA02\n3fsyB01\n2z2mD02\n2epbA00\n1kthA00\n4i5pA01\n2wscG00\n1e0fI01\n4k35A03\n1woqA02\n3vh8G01\n3imhA00\n2a2nA00\n5e75A00\n3m65A02\n3kn6A02\n4s12A02\n3icuA01\n4nzrM03\n3plnA03\n5ng0A00\n1v47A01\n3wvtA01\n1cs6A02\n3iwcB00\n4xvwL00\n3bjdA02\n5ti8A01\n3khwA02\n3hymL00\n4dh4A00\n4ytbA01\n5cyxA02\n1tujA00\n1wm3A00\n2btoB02\n3ksxA02\n2q87C00\n1jndA02\n2pbdA02\n3crjC00\n3aehA00\n5agiA00\n3kr3D00\n4nplA00\n3bs7A00\n4i0kA01\n4zhvB00\n4itaA02\n2iqtA00\n1f3vB00\n1xtpA01\n2i4rB00\n1zc1A01\n5svyA00\n4bfaA01\n3s0yB00\n2okaA00\n3kgrA00\n4dlqA01\n4dccA01\n3v7qA00\n3utoA04\n5cflA02\n4g4sO01\n5ab4A00\n3pm9A01\n2ex2A01\n2coaA01\n5le5U00\n2ciuA00\n3oqbA01\n2k0sA00\n1x8bA01\n3vmaA02\n3axbA02\n4czwA01\n2jvfA00\n1xerA00\n3kkgA00\n3ip4B03\n1uarA01\n3qfmA00\n4ak1A04\n3ddmA01\n3ffhB02\n2qtsA03\n1ohpA00\n5v07Z02\n1rqpA02\n1up7A01\n4ckbA03\n2o01J01\n2x6rB01\n3awmA00\n4ildA03\n2imlA02\n5v6rA02\n2vseA04\n1uapA00\n3skvA01\n3rfaA01\n3kttB03\n1m4iB00\n3iu6A00\n2xw7A00\n4l8kA02\n3og2A02\n5uttA00\n4rzfA00\n3g8dA02\n1vq8K00\n1tzbA01\n3sigA00\n1d4vA03\n2m1mA00\n3llkA01\n4at7A02\n4jvtA01\n5o5jQ00\n1q9cA01\n1jb0D00\n5ffgA02\n3kb5A00\n2vl7A01\n4r8zA00\n3hm0A00\n3tzgA00\n1kf6C00\n4lfhG02\n3bhqA00\n4zm3B01\n4pxvC00\n2iabA01\n3frqB00\n3d36B02\n1vffA00\n2r8bA00\n2gdzA00\n3kqgD01\n3vnrA02\n4k17A02\n3qzrA02\n4gywA01\n4l6xA03\n2oblA02\n4e5sA02\n3zuaA01\n1qsaA03\n2wcrB00\n3jzyA00\n3zvzB00\n3a1sA02\n4f0wA00\n3gueB01\n2kldA01\n1pswA02\n3gw6A01\n4bvxB01\n3eucA01\n5gzkA00\n4fxtG01\n1q6zA03\n1z3xA01\n2zt5A01\n2uurA00\n3gvzA00\n3ruvA01\n5hweA01\n1kv3A01\n1pzwA00\n2ld7B00\n3uifA01\n4wkzB00\n5ik2E01\n3s21A01\n2lstA00\n2vgeA00\n2x49A03\n1x4xA00\n3ds4B00\n3sbmA01\n1y3tA01\n2vrwB01\n5unaE00\n3irzA03\n4hn9A02\n5b57D00\n4ic7E00\n3rjrB02\n1v0lA00\n1uptF00\n3k8pC01\n2wzkA03\n5lpgA00\n2e1mC02\n4fe3A02\n1vyxA00\n2fsfB02\n5swuA00\n3da7E00\n2dlaA02\n2ba2A00\n4xotA02\n5b66C02\n4mtlA00\n2vf7B03\n1nz0D00\n5a1iA02\n3htrB00\n2m6oA00\n3tmmA01\n3m7nA01\n3retB00\n4d0qA00\n3us3A01\n2yb5F01\n5xb0A02\n3fqmA02\n4dx9Q00\n3gwcB03\n4esjA01\n3oksA01\n2pnrC01\n4wesB02\n2nutA01\n4dohB01\n1v1cA00\n3aw5A02\n5le5M00\n1inpA01\n3nwnA00\n2zyqA01\n2copA00\n1qwjB00\n1hcyA02\n2x0jA02\n4nurA02\n5vhtA00\n4zgsA01\n2vhjA01\n4dzzA00\n4l4qB01\n3i5qA02\n3putB00\n4ex6A01\n4lerA01\n3drxA02\n5epbA00\n1tzpB00\n2e5rA00\n3hr6A01\n4fd5A00\n2r6zB02\n2nspA00\n2e5fA02\n3vb0A02\n1q8kA03\n1w3fA02\n2qcpX01\n3wwnA00\n2daiA00\n2muoA00\n2o1sC01\n3tjeF01\n2kucA00\n1azsA00\n4hw6A01\n3cxbA02\n3nqbA02\n2f69A01\n2v62A02\n4hymB00\n3idvA01\n4jyjB00\n3vgzC00\n2ychA02\n4nnoA02\n4dp9X00\n2bbhA01\n1osdA00\n2xjyA01\n2q0zX01\n4pwtC00\n3gkrA01\n4b0eD00\n2wb9A01\n4qhqA01\n2zp9H00\n3oe3C00\n3ep6A00\n2g6gA02\n5fm5P00\n3dkqA02\n1uu1B01\n3rpmA02\n5b66h01\n4c2vD00\n1hw1A02\n3asuB01\n3eucA02\n1dlwA00\n1g29103\n3gxqA00\n4nesA01\n2d4rA00\n3cs5A00\n5uklA05\n3vthA02\n3kptA02\n4qdgA02\n4zboC00\n4mvtB01\n4jw2A00\n4nzjA01\n6blkC00\n1tu9A00\n4j1oA01\n3zbdA00\n3hbcA00\n2hwjE01\n4a82A01\n4m70B00\n1bf6A00\n3g3zA01\n2ac3A02\n4w8oB00\n2p4bB02\n3ctzA02\n1cdcA00\n3iq0A00\n5e1qA02\n1ev0A00\n3p1xA00\n4ncbA01\n1pkhB00\n3g7sB01\n3dydA01\n4a27A02\n3cx5F00\n1wa3D00\n1hc7A03\n1ydgA00\n3dttA00\n2grvC03\n3a1kA02\n2aynA00\n1vytB02\n5y4eA00\n4iirA01\n1y0yA01\n1u6zA04\n4ksyA01\n2kpnA01\n1wpbG01\n4jixB00\n1wu9A00\n4iabB00\n2h8lA01\n2j3wF00\n2dy0B00\n4puxA00\n3ilxA01\n1sfkA00\n3pwzA02\n2prbA00\n4j6fA01\n4hwiB02\n2oikA00\n4ye0A00\n2uz1B03\n3rkoF01\n1neqA00\n4j5rA00\n2akzB02\n2ln8A00\n2pmsC00\n2crjA00\n1f7uA03\n3cetB02\n1t5oA01\n3lc0A01\n2d4pA00\n1pinA01\n2lu7A00\n1uqwA02\n1tfzA02\n4af8A00\n4qrlA00\n5xnsC00\n4oj8B00\n2fueA01\n2w9rA00\n3o70A00\n2i1oA02\n2hx1A01\n1v8pF00\n2xt2A00\n1r3jC00\n1oi7A02\n1earA02\n3v76A02\n2yevA02\n3hdlA02\n2wdtA01\n3on4D00\n3viuA04\n1mhmA00\n3ebrA00\n5u95B01\n2l7kA00\n1lmlA04\n2js4A01\n3f1sB03\n1ypxA00\n4jpbW01\n4q4hA01\n1l1oC02\n3dxqA01\n2g80A02\n3n40P04\n1zk5A00\n2oycA01\n5kckA00\n4whiA00\n4lloC00\n4qs8A01\n5hoeA00\n3cwxA00\n1fzdA02\n1avcA07\n3v7iA02\n3w6wB02\n3e4bD01\n2p17A00\n2ntkB00\n1zjcA01\n3iqwB00\n2f57B01\n4fx5A02\n2rowA01\n4afhE00\n4x2uA05\n3l49A02\n2pajA01\n5lxrA00\n2wp0D00\n2bnlC00\n1s9iA02\n1ps9A01\n1y7wA01\n3tebB00\n4i3gA01\n2xseA00\n3tutA02\n4a4zA01\n3p3qB00\n2nluA01\n3urgA01\n4jivD00\n5a86A00\n2v4bA02\n4hsaC01\n1uctA01\n2hueB00\n2o01401\n3tioB00\n2hdwA01\n3c5hA00\n1fxjA02\n2cnzA00\n3zl8A01\n2p97A00\n2vsyA01\n3hzaA01\n2yxxA01\n4gmuA03\n3nb0A03\n3cjdA00\n3nznA00\n3c7aA02\n4aybA04\n2j2jA00\n5k3xB01\n2q1fA03\n2fk5A00\n2jmsA01\n3tqlA01\n3k6tB00\n4lgtA01\n2ivnA02\n4xb1A01\n2f8mA02\n2miuA00\n2gk6A02\n1uajA02\n2odpA01\n3gj0A00\n1e91A00\n5ljwA02\n3d32B00\n2kouA00\n4rk4A02\n2rjiA00\n1xszA03\n4jejA00\n5eyfA02\n2wczB00\n4rg1A01\n2ewfA02\n3dmcA00\n2cazF00\n4hwuA00\n2wiiC02\n3v97A02\n3l4jA05\n5efqA01\n2acfD00\n2fvvA00\n2qbyB02\n3k6xA01\n2a1xA00\n2r6fA02\n2vn8A02\n1bkbA02\n3njnA00\n1bihA03\n3mprB00\n4m5bA00\n4izxA00\n1o8xA00\n2yrvA01\n2b9hA01\n2oeeB00\n4p2vF00\n1eg3A01\n4ry1A01\n3ed3A01\n3bulA01\n2gomA00\n2n5hA00\n4rj0A02\n5b21A00\n1ry9A00\n1b3qB03\n4fuvA00\n1k1eD00\n2zj8A03\n3dmlA00\n1l9mA04\n3a98A01\n1lv7A01\n5f33A03\n2b0oG01\n4hteA02\n1ufzA01\n4igiA00\n3b8xA02\n2d4uB00\n1rmdA01\n1khvA05\n3n75A01\n2ipiA02\n2o01D01\n2p0oA01\n1jmxB00\n2yzsA01\n3m89A00\n2wuqB00\n2qvsB02\n2b4nA00\n4a8xA00\n1dr9A02\n3l6bA01\n1a3qA01\n1y5hA00\n2oplB01\n1j5wB02\n2l55A00\n1z45A02\n5itsC00\n2z5bB02\n4c2uA02\n4nzuH02\n1lqlC01\n2p0tA02\n4p32B00\n2ha8B01\n4l22A01\n5ai0A03\n2wy3A00\n3qjoA02\n3o38B01\n2bhuA02\n3ss7X02\n3g4nA01\n1vkrA00\n2zhyB01\n4eweA02\n4azsA01\n5umhA00\n3lk7A01\n5jawA01\n4gu4A01\n1ix9A02\n1vjvA01\n3kl9A02\n4wkzA01\n3g6eU00\n1omoA01\n2obbA00\n3rpwA01\n4qysB01\n4zi9A03\n3hxlA05\n1oywA01\n2d8cA01\n3io3A01\n3fldA01\n1wggA01\n4lunU00\n1uxdA00\n2pv3A01\n3k5iA02\n2b5iD01\n2ya0A02\n4ihqB04\n5fbkB02\n3no7A00\n1ffyA03\n3us3A03\n3u61A03\n1tucA00\n2z0jH00\n4yo7A01\n1o4sA02\n1oacA04\n1qvrC01\n3gzaA01\n4f0hB00\n4neoA00\n139lA00\n2wjsA03\n3d82A00\n4pf4A02\n2wzkA01\n2v5yA03\n1a1xA00\n2iuyA01\n4dn2A00\n5evcA02\n3hq1B04\n1wpiA00\n2hhzA00\n3cisH00\n3l43C00\n4brcA02\n3eyyA02\n5azpA02\n4iioA00\n3slrA01\n4lfhD02\n3d4oA02\n5wl1A02\n3nfgP00\n2nutC00\n1jdqA00\n1xovA03\n2pw8I00\n4dcaA01\n2g43B01\n5a4eC00\n5cybA00\n4in9A00\n1jsgA00\n1v77A00\n5k3hA01\n3gf5B07\n4j2kB00\n3h7mA02\n1n0eA00\n2yb1A01\n3h5tA01\n3tcsA02\n1gl2B00\n5tx7A01\n3zeuA02\n4l8jA01\n1gpzA02\n3cz1A00\n1n0uA04\n3ktsC00\n1dowA00\n3epuA00\n4cu4A01\n3quaA00\n1vq8B02\n1rwjA00\n2f1fA01\n2cujA01\n2hsgA01\n3ntlA01\n1jbeA00\n3vglA02\n5tnwA00\n7a3hA00\n1rtqA00\n4od4A01\n1vkcA01\n2v3zA02\n5kefA00\n4ncbA02\n4im7A02\n1oaaA00\n1je5A00\n5jszC00\n3l4gB03\n2xqxA00\n3s13B01\n3h1dA02\n1kkhA02\n2gnoA02\n3oosA02\n5c5rD00\n1jflA02\n4icvA00\n2iu8C01\n3lnlB02\n5dm2A00\n2ko2A00\n5aykA06\n1uekA01\n1uxoA00\n3cpxA02\n3evyA00\n1ytzT00\n4c65A02\n2iksA01\n4qw2B02\n4ml1A02\n3l8dA00\n3bs5B00\n3tovA01\n3te8A00\n1zboA01\n3l8wA00\n3vqtA01\n3peyA01\n3jamI03\n1d5tA02\n3vaxA02\n2czvC01\n2qzgA01\n2vx8D00\n2h5gB02\n1konA01\n3un1C00\n4huqB00\n3v6iA02\n3l2pA03\n2pe4A00\n3ro6A02\n1wspA00\n1d5rA02\n4ag1C00\n2yrbA01\n4rdrA01\n3u1wA02\n1mppA01\n1i52A00\n1rttA00\n2q8nA01\n3lx4A01\n1xknA00\n5ahkA01\n2zixB01\n2l6uA00\n1r55A00\n3b5oA00\n4z02B01\n5bu9A00\n3do6A02\n3h7mA01\n2qm8A03\n3wj7A00\n1s6yA02\n5malA00\n3s95A02\n3r2qA01\n4zn6A03\n4w6yA00\n4p2fA00\n3qy9B01\n5t6jB00\n1zuyA00\n2vs7D02\n4as2A01\n4fxiA00\n2bwfA00\n2p0kA01\n5b1aC01\n4lqsB00\n1pa4A00\n1r9lA02\n2o20A02\n3kmiA00\n3hcnA02\n2pgcA02\n4gmuA01\n1j0wB00\n3k3fA00\n4g6vA00\n2fbeD00\n3p8dA00\n4a0sA02\n4hwhE00\n1vf5B01\n3rriA00\n2eyyA02\n3p4xB02\n3n79A02\n2yzqA01\n3cvpA00\n3floA02\n3hrdB01\n5gmsA00\n4bmdA02\n3egeA00\n5a0lA02\n2jtfA00\n5tp4B01\n5k8pD01\n3r2tA02\n2epjA01\n4c1bB01\n3dohA02\n1q0uB00\n4p6qA01\n4dolA01\n3sxpA01\n2waaA02\n4bzaA01\n1twfI02\n2rikA02\n3cg4A00\n2o3aB00\n2gacB00\n4toiA01\n2l5tA00\n3lhoA01\n1uz5A04\n4meeA00\n4mobA01\n1y02A01\n2d00A01\n3fnrA01\n2xtlA02\n2rbkA01\n1u7zA00\n5lqdA02\n3fzvD02\n1vioA01\n1v33A02\n1lngA00\n2q30A01\n5tinA01\n4qxdB02\n1ln1A00\n4begB00\n2ldiA00\n1am9B00\n4i0wB02\n1erdA00\n4e5nC01\n1xwhA00\n4nbiB00\n1u5kA01\n2xotA02\n2erlA00\n3kc2A01\n2ipiA01\n1vq8U00\n4rd4A01\n2v3zA01\n4y8eA00\n4pgnA00\n4jutE00\n4bqyA00\n1zq1A01\n4lxhA00\n5u1mA00\n1envA00\n1k5oA00\n2gnpA00\n4e3xA02\n2f76X00\n5jw8A00\n4ee9A00\n4tquN00\n1z5zB01\n2x4lA01\n2qdfA03\n2q01A01\n4itxA02\n3npfA02\n3tovA02\n1mppA02\n2pk8A00\n5hmmA01\n4ob7A00\n2fe7B00\n5dzoA00\n4bmnD00\n3teeA02\n1vkeE00\n2y8nB01\n5fiiB00\n4m1qA01\n2a50C00\n3c2bA02\n2p39A00\n2ivdA02\n3rkxA02\n3vtiA01\n2kvcA01\n2h84A01\n1fpoC02\n2m3xB01\n2hhgA00\n4mlaB01\n3pxpA01\n4xymC03\n3b81A00\n2bnuA02\n3sojB00\n4mbyH00\n2rdgA01\n1o75A04\n5llbA00\n5ituB02\n4c4aA03\n3e18A01\n1wn9A00\n4nsvA02\n3ghyA01\n2kn1A00\n2ja2A02\n4dz1A01\n2ouxA02\n4dxkA01\n1qk9A00\n1gmuA01\n3d4rB02\n4kgdA02\n5kwnA00\n2h32A00\n1ri5A00\n3stoA02\n4ggtB00\n4wfoA03\n2rdxA02\n2et6A02\n2xdqB01\n3go5A01\n3iquA00\n3fajA00\n1f9vA00\n4qyrA02\n3aonA00\n5vyqA01\n1jbjA01\n4kh8A01\n3n8bB00\n2x7kA00\n4r8hA01\n2nvoA01\n1rdrA01\n4wbyA01\n2rjnA00\n1wvfA01\n5figA00\n1eu3A01\n2jexA02\n4fd9A00\n3qdkA02\n3fayA00\n3cmnA01\n2vl6A02\n3rhbA00\n2kk6A00\n4pl0A02\n4pioB01\n4h0fA02\n2gwnA01\n2qb7B02\n1e8uA00\n3v8dB00\n3ov5A00\n3n3yC00\n3irsA00\n1xviB01\n4oiyA01\n1ua7A01\n1ny1A00\n3eg5B01\n3gwiA00\n2auvA00\n3tboA00\n1j6oA00\n2vtfA01\n1wi1A01\n2ze3A02\n5hsgA02\n4j3rA00\n4jc0A03\n2dyoA02\n2dzmA01\n3akoD00\n3jsjC00\n1ltsC00\n4o6rA01\n3n50B02\n3jvdA02\n4qrnB00\n5jtwA04\n2fz0A00\n4om8A01\n4jyaR00\n5c5jA03\n3nynA05\n3o2iA00\n1t6gC00\n1aa0A00\n3sztA01\n5k3xA02\n1vjtA01\n3iv6A02\n1r8nA00\n4ccjA01\n2czlA02\n2kpqA01\n4f7oA00\n1to2I00\n2heqA01\n3o0zB00\n1pq4A01\n3uxfA02\n4q27A00\n3of6E00\n2gfuA00\n3rt3B01\n3hbvP01\n1swyA00\n3tj8A02\n3oymA01\n4a4aA01\n2q88A02\n4decA00\n1vykA00\n2ozbE02\n1xgkA01\n1k3xA01\n4hvyA00\n3gf3A03\n3lgdA00\n2lqlA02\n1bvp102\n2of7A02\n3tewA02\n3kzwA02\n3hjlA03\n2v84A01\n3ksxA03\n2ea7C02\n2ebzA01\n2x24A03\n1pq7A02\n3pnaA01\n2lwxA00\n5h2gB01\n1j1eF00\n4krgA01\n4zdoB00\n1kq3A02\n2mfiA00\n2qkoA00\n2yweA02\n4f27A02\n3jamS01\n3wp8A02\n3lhiA00\n2l9bB00\n1w8iA00\n3qouA01\n4fymF00\n3nvwA02\n3rw7A01\n5fsvA00\n3b4wA02\n2e63A00\n2cnqA01\n2xnjA01\n1g6eA00\n4xpzA03\n3qy3A00\n4lvuA00\n3e1sA03\n2qwzA01\n4kvmA02\n2vd3A01\n3fbuA00\n4j37A01\n3pfoA01\n1btnA00\n2r2zA00\n3bl9B03\n2ihtA03\n4b8eB00\n3wwcA00\n2wg5F02\n4jpnA00\n4q5eA01\n1vpkA03\n4gt8A00\n2yg5A03\n4m7gA01\n4opmA00\n2fd5A02\n4culB01\n5eo4A01\n3nzpB04\n5x8rr00\n4l7gA02\n1s12A00\n2o8bB04\n1pq4A02\n2lq4p01\n3q6aB00\n2qn5B01\n4a2lB01\n4kwyA00\n3cu2A00\n5hv6A02\n3qelD01\n3wxyA01\n4oseB00\n1ujyA00\n4oi3A00\n4i59A02\n1dekA01\n5jviE01\n1yqgA02\n4ms4B01\n4i9xC02\n3lfuA03\n2hs5A02\n3w0fA02\n1k3kA00\n2hwnB00\n2qj8A00\n1h7sA01\n3jr1A01\n3a2qA00\n1ichA00\n3uh0A02\n4lhsA02\n4werA01\n3zx1A02\n3sl1A00\n2vugA05\n4odpA00\n1iojA00\n4ii2A03\n4od9A00\n3mz2A00\n1vk1A02\n2g5cB02\n2vsmA00\n1zc6A02\n1irxA02\n3evpA00\n2i24N00\n4i8oA02\n3a9sA03\n1vq8L01\n4ddpA00\n4nobA00\n5ck4A00\n2mhjA00\n4i6mA03\n1qh5A00\n2hwjA02\n2nw2A01\n2d1sA02\n4hz4A01\n1i8nA00\n2ggsA02\n1i60A00\n4n49A00\n5evhA00\n2vveA01\n1g66A00\n3fxdB00\n1witA00\n1wxpA01\n3snkA00\n2js3A01\n3gbnL02\n1y0mA00\n3kp8A00\n4r5zA01\n2fsxA00\n2acvA01\n1va9A00\n4n7rB01\n5jybA01\n4o6xB00\n1wotA00\n1vclA03\n1t9fA00\n3lgiB01\n3g0oA01\n2e0zA03\n4azsA02\n4l8hB00\n4i2zA01\n4fk9A00\n5nj2A00\n3rx6A00\n3kosA01\n1nqzA00\n3mybB02\n3ivpD01\n2cspA01\n4lftB00\n3e57A00\n1rsoA01\n1uwvA01\n2jfzA02\n2z72A00\n1jy2N00\n3fvwB00\n3oc9A00\n5m0nA00\n1sumB02\n1n12A00\n2disA01\n1aroP05\n1wzoA01\n1tllA01\n1ypzF01\n2kutA01\n3i38I02\n4irfB00\n4pxhB00\n2a5yB01\n1rm6A05\n4p3wC01\n4agkA01\n1lucA00\n2k6sA00\n2hoeA02\n2oc6A01\n4eagA01\n1j3aA00\n3rl5A00\n2iafA00\n5cqxA00\n3m5rD00\n3zc4A01\n5hrjA00\n4yucA01\n5vacA00\n2r5sA01\n4e6zA01\n3nbxX01\n2z8uB02\n4fa8B02\n4ccsA02\n2vqeN00\n2jzjA01\n1nxuB03\n1lb6A00\n4bemJ00\n5a6mA02\n1weuA00\n2q0zX03\n4ploB01\n2faoA01\n1dm9A00\n3dnpA01\n2ccvA00\n4prxA02\n4wz8C01\n3vwcA00\n2mcaA00\n5tb7B00\n2uxwA03\n2hn1A02\n1tazA00\n4e1jD02\n3zjbA00\n4bolA02\n3sz7A00\n3phtA01\n4iuwA02\n2o8bB01\n4qfeK02\n2wuhA00\n1grjA01\n1y89A00\n3cxkA00\n5ej8A01\n3dc7A00\n3hcjA01\n3jyzA00\n2i7cA01\n1ii5A01\n1f7dA00\n3fawA01\n1j8uA00\n2jq3A00\n4fl3A03\n3t3pB02\n2m4gA00\n4ln6A01\n3n72A00\n3i5rA00\n2y7pA01\n3cu3A00\n5ir2A00\n1r5sA01\n2pf4G01\n4qqrB00\n4ok4A01\n3vnrA01\n2cq8A01\n4j9fA00\n2sliA01\n4wiaC00\n2fsdA00\n2wxfA04\n1j3mA00\n4mloA02\n4rwzA00\n2cxnA02\n1hq0A00\n2dgyA01\n3lluA00\n1x3lA02\n3uc9A00\n3eusB00\n3rmrC01\n4a7kA03\n1gknA02\n2xepB01\n2f1rA00\n1pbyC00\n1z56B00\n3swxB01\n3lmzA00\n2e11A00\n3c7aA01\n4ycaB01\n3bmxA01\n4lfhG01\n4y9wA01\n2hw2A00\n5dllA05\n2yziB00\n3kxyT00\n4ak8A00\n4pn6A00\n3zljB01\n4okoA00\n3tlaA01\n3u26A02\n3lr2A01\n1v25A01\n5ttbA00\n1wpnA00\n3m20A00\n2zixB02\n3h95A02\n4a64A02\n3s1xA00\n1eu8A01\n1olzA01\n2r16A00\n2j8gA03\n4g6vB00\n3h1tA03\n4g41A00\n1xhbA02\n3nbxX03\n3zi1A02\n3sybA00\n3a8yD00\n5d5hA03\n4u8fB00\n3kfaA01\n3axgK00\n4aq1A03\n4fk5A02\n4jnfA01\n5h7eA00\n4ioyX02\n5kprA03\n4finB02\n1o17D02\n1fp2A02\n3tl4X01\n2lkyA00\n4k7cA01\n2a6hA01\n1eu1A01\n3e2oA01\n1vcsA00\n1npiA00\n2pw9D03\n2vqxA01\n5jipA01\n3g1pA00\n2apoB00\n4ewtA01\n3fxaA00\n2fstX01\n4hr6B01\n4izbB01\n2hx5A00\n3hi0A01\n2c95A00\n1whiA00\n3abgB01\n2anvA00\n2absA01\n2vt1B00\n2z0fA02\n2uuqA00\n4olsA00\n1itxA02\n4dk2A01\n4bv1A00\n3tm4A01\n4ihqA02\n3lrtA02\n3lmaB00\n1s9rA02\n3l0wA00\n3myvA02\n2pcrA02\n4pagA03\n3ip0A00\n3dtnA02\n2ynmD03\n1mdbA02\n4f0bA01\n1upsA02\n1g2nA00\n1lo6A02\n3lwaA01\n2f6mD00\n5aozA00\n2opeA00\n5cclA04\n2fjrB02\n1k6kA00\n3mopA00\n2kmxA00\n1xiwA00\n1u0tA02\n4u5pA00\n2jo7A00\n2oyqD05\n2ehzA01\n3p26A01\n2dt9A02\n5sv2A00\n1zgzA00\n4mi8B00\n3sdeA03\n4rsvA00\n2db8A00\n2g6tA01\n2it1A02\n5il3A02\n3m70A01\n3irbA02\n3iwtA00\n5tu0A01\n1uzbA02\n1zbdB00\n3letA00\n2r2qA00\n3m1hD00\n3pxvB00\n3p0fA00\n3n2oC01\n2eabB01\n4ntlA01\n3uc3A01\n1nynA00\n4jcqa00\n5amhA00\n2voaA00\n4r27B00\n1gttA01\n1lu9A02\n3h87D01\n1z01A03\n4jf3A00\n4bfiB01\n4i16A00\n2awnC03\n3k6yA01\n3r12A00\n1iynA02\n1xubA02\n1akpA00\n1fi8C00\n3pt8A00\n1x4sA00\n5dvbD00\n1qhqA00\n3ragB00\n2w3pA02\n4h6qA00\n1pieA01\n3ftdA02\n4yqaA02\n5exeA01\n3l6aA01\n4cguB00\n1xdnA02\n3wndA02\n1shuX00\n2o01G01\n1pwaA00\n1i12D00\n1f1sA03\n5kp7A02\n3fkjA01\n5tzdB00\n5aq0B00\n2agkA00\n4dkjA01\n1j0aA02\n3i33A02\n3ayhA00\n4ohjB01\n1uiiA00\n2xswB00\n3s9xA00\n1gveB00\n2ykoA01\n4yg0A00\n4he6A00\n2gnxA02\n2rtxA00\n5ftzA00\n1lnsA04\n3ddtA00\n4l4yA00\n2vqeD02\n4iykA01\n2bbrA01\n1yd0A00\n1szhA02\n4iknA01\n2hu9A02\n3vxgA00\n2z2nA00\n1b9mB02\n2ivyA01\n1ug3A02\n4aq1A05\n1cx1A00\n2ilrA00\n4a0tA02\n3md9A02\n5awwY00\n2xauA02\n2fzlA01\n3zrpA01\n1u6zA01\n3oj0A00\n4c2mC01\n4qlxB00\n4azcB02\n4f0qA02\n4gqmA00\n3b8bA02\n4rpfC01\n2xsaA01\n4w7zA00\n4kboA01\n3o9zA01\n5sznA05\n4eozB01\n2ve7C01\n4qv2A02\n4wbtA02\n1ye8A00\n3o6qD01\n1y0hB00\n4phtY02\n4zqbB01\n2f51A00\n4b3fX01\n3bqkA02\n5ftgA01\n1h3lB00\n3d2uA02\n4pcqA02\n2iz6A00\n2imqX00\n4rlqA01\n2w31A00\n2douB01\n1v5mA00\n2dkhA03\n5u69A00\n3bedA00\n2qycA00\n2z0mA02\n2k8oA00\n4qrbA03\n2o6xA00\n4kq9A01\n1z2nX01\n1mnmA01\n5jpoD01\n3vhlA02\n4lq6A00\n1szhA01\n2o2cA02\n1eslA00\n1wc1C00\n4m7tA00\n2dl4A00\n2btoA03\n1dbwB00\n4y7dA00\n1zxjA01\n1s9uA00\n4ns5A02\n5vf5A01\n2d2sA01\n4hyzA00\n4mlmA00\n4o95A01\n4i1sA02\n4hqzA00\n1r6vA04\n2gi3A01\n5ecdA00\n2a0mA00\n3x0jA00\n2p5xB00\n2rvjA01\n3s95A01\n2fnuA01\n1vl0A02\n4tlqB00\n1r6wA02\n3cewA01\n1u9yA01\n1j7xA01\n1h80B00\n4a42A00\n2jmoA01\n1xyzA00\n1dkgA01\n1jmxA04\n1ko7A02\n4fdiA02\n1yeyD01\n1q35A02\n3llpA03\n2iw0A01\n1eptB00\n3kgzA00\n1nd4A01\n3fi8A01\n1kza100\n3d2mA01\n3fdjA02\n3k9tA02\n3l9aX01\n1h9fA00\n3vvyD00\n4h9nC00\n5ib9A01\n2lpeA01\n4e5sC01\n3basB00\n4pp8D00\n4d6gA03\n3q46A00\n3aekB02\n2ajrA02\n1nf2A01\n3og2A03\n3triA01\n4mptA02\n3ibpA01\n3h6gA01\n4y99C01\n4nkpC00\n1q6oB00\n2vptA00\n4mj2B03\n4rugB00\n4unfA02\n3uq8A01\n5cmyA00\n2j5uA03\n4i86A00\n2yutA00\n3zqoA00\n3r96B00\n4gimC00\n3dfuA01\n3eunA00\n2p6rA03\n3tqmC00\n4p47A00\n3rofA00\n3jamY00\n3zmrB02\n1pn0A02\n4h4aA00\n3g3sA01\n2rdiA04\n2je6I01\n5flmC01\n1nr3A00\n3tj4A01\n1sqhA02\n4ft4A02\n2atpD00\n2efxF00\n2mysA06\n4k2mA02\n3p2mA00\n4kbxA01\n4z8lB00\n4nj6B00\n4x9tA01\n3a98A02\n1rkqA01\n4p48A02\n1a7cA02\n4fe9A02\n1xxlA00\n3h9pB00\n5hgjA00\n1fgyA00\n3zjxA02\n2hiqA00\n3tdgA02\n3ws7A02\n2fo1E00\n1kz1C00\n1ynbA00\n4k8lA02\n5colA01\n1booA00\n1np6B01\n2pq8A02\n2px0A02\n3ubdA01\n3aamA00\n3ebeB00\n1nlwD00\n2lqlA01\n1n40A00\n3thiA01\n1i24A02\n2eyzA03\n4l9aA00\n3alnC02\n3sqlB02\n3kxrA01\n5b1aC02\n3g5cA02\n3bb0A02\n5d3xB00\n1inlD01\n3c2qA02\n3fzqB01\n3ua3A02\n3edgA00\n1p1jB01\n2ii2A01\n2jysA00\n2w3zA00\n2hinA00\n3gk7A03\n3aqoA02\n1k77A00\n3ddcB00\n4jcyA00\n5ajoA01\n2kkmA01\n4yleA02\n1f3yA00\n3nytA02\n1zl0B01\n4abnA01\n4oqvA00\n5uznA00\n4ns1C00\n2vq3A00\n4glxA06\n5vi4F03\n1ji0A00\n3aqqA00\n1fdoA05\n4j7qA00\n1v72A01\n3qhyB00\n2x8xX02\n2itmB02\n3ubgB01\n4hstB01\n6apeA01\n6eqsD01\n2ce7C03\n4k17B01\n1s4kA00\n2qmxA01\n2ynaA01\n1g2oA00\n3nojA01\n2pgnA01\n2wb7A02\n1tv8B00\n4crgA01\n1u0kA02\n5kkuD00\n2wojC00\n2pa8D02\n3ighX02\n1xt8A02\n3lwcA00\n1pbyA02\n3mkqA03\n2r6aB02\n3kb2A00\n4zocA03\n1fx3B00\n1bf5A04\n3lo7A01\n2dstA00\n3ljkA01\n2p9iB01\n2z0bE00\n1th8A00\n1x61A00\n2p8jA00\n2rkyC02\n1q4rA00\n3bw6A00\n2oqkA00\n1s3lA00\n2l2oA00\n1cjxA01\n4ihqB03\n4c6eA00\n3hebA00\n3t5sA00\n2b5aA00\n4g6dB02\n2yufA00\n1f94A00\n2pyyB01\n3fkqA01\n3mkaZ00\n4mobA02\n1k9oI01\n1axiB01\n3uebF00\n1id1A00\n4otkA00\n3ceyA03\n3sl2A00\n3uv1A00\n2ahmA00\n2g5xA01\n3e20H01\n2bolB02\n1mx3A02\n2f41B00\n2xg5A02\n2j45A02\n2f4qA01\n1y8cA02\n2d5wA02\n3ii6X01\n4ryaA02\n5d55A00\n1jh6A00\n3nxpA02\n3gr5A01\n2yt4A02\n3p3cA02\n2b1eA04\n5bqsA02\n2imjD01\n1ei9A00\n1jeyA01\n1f00I03\n3vsvA01\n1qm9A01\n3aw5A03\n4b6wA00\n3gn4A00\n1m5q102\n1v85A00\n3uorB02\n1nc7A00\n4c0gB00\n1u58A02\n5dm6E01\n1yk3B00\n5l73A00\n3s83A00\n1zklA00\n5tflB02\n1oxjA02\n4e5nA02\n2l7xA00\n5eehC03\n3qijA01\n2dqbB00\n3bnvD00\n2qeeA02\n5k2xA00\n5wpwB01\n3s9dD01\n3ow8C00\n3dwbA02\n2gslF00\n2qzbA00\n2w2sA00\n5cfjA00\n2x8sA02\n2i6lA01\n2ltlA00\n2gx8A02\n3tewA03\n1u00A02\n4gpkF02\n3hieB01\n3hynA00\n2n7yA00\n2fj6A01\n2hdmA00\n2kcqA00\n2ypsA00\n5t9cE00\n2cqvA00\n4zylB00\n4qt6A00\n3cygA01\n4qhpA05\n3pg6A00\n3qf2A00\n2hraB01\n3j27B00\n1x1fA00\n2of5H00\n1ky9B01\n3m9vA01\n3onqC01\n3crvA01\n3p01A02\n2vqeD01\n3mfiA04\n3k2oA02\n1go3E01\n2gsoA02\n1h7eA00\n3sbtA02\n3dlcA00\n3oa5B02\n1m6yA02\n1ympA00\n4kmrA01\n2r75101\n2r9qA02\n1y6dA00\n2hfnB02\n1bf2A01\n2qeaB00\n3ljsA00\n3cc8A00\n3b43A02\n4s1tA02\n1tdqA01\n2okxA01\n5eyfB01\n3ldzA00\n5le5E00\n2v0eA00\n1g8pA02\n3drzA00\n2hc9A01\n2p8bA01\n4cyiE01\n5mkvD01\n3b7kC02\n2mn4A00\n4fb7A00\n3es1A01\n2z2uA00\n2xn6A02\n3gwzA02\n2ondA00\n3g23A02\n1s7mA02\n2m1sA01\n2wtpA00\n5viuA01\n1ha8A00\n1s7zA01\n4bsjA01\n2p32A00\n5jnmA02\n3dxoB00\n4wjwA00\n2py6A02\n3seeA00\n3c9iA02\n4odjA03\n2lhjA01\n1qfjA01\n1gccA00\n4m88A02\n6bogA07\n2wbtA01\n3essA00\n5o60c00\n2d3yA00\n4j7zF00\n2xknB01\n3in6B00\n2zb4A02\n4agsA03\n3e0rB02\n3k9iA01\n2d48A00\n1nkiA00\n1tuoA03\n1r8oB01\n5jfwA01\n3dqpA00\n3um7A01\n4e9jB01\n5kbzB00\n3mhsB00\n3fl2A00\n4gl8A02\n3g46A00\n5tdeB02\n4exkA03\n3k8pC02\n1whyA01\n1vk3A01\n2y7pA02\n2ajuH02\n4i4tB03\n1uzmB00\n2r85A03\n1f00I01\n3i6eA02\n5dmjA02\n4a1iA02\n1gm5A04\n1r7lA00\n3vk5B00\n4hstA02\n1ekjA00\n3mx7A00\n1zy9A03\n1br2A03\n4e40A00\n3bilA02\n3fgtA01\n2ppnA00\n2gllF00\n1sfsA00\n4kcfA02\n2hp0A01\n2w0rA00\n3rrxA02\n3fr7A01\n1vprA01\n2oucA00\n4l6hA01\n5i0cA00\n1rv9A00\n3lygA00\n1dekA02\n1ixcA02\n4hppA02\n3lcyA01\n2cibA00\n4fdaA00\n2gaiA04\n4o6mB02\n4gfiA02\n3iteB01\n4bopB00\n1lstA02\n4i66A00\n1jeyB03\n1rwrA00\n2if7B02\n4o8kB02\n2eplX03\n1sg1X02\n5d1pA02\n3ot2A00\n4wiwA02\n1v74B00\n3gohA01\n3jtmA02\n3lmlA02\n4z67A00\n3zzsA00\n6b8sA00\n3pfnD01\n2o35A00\n2vknA00\n3e19B01\n3exiA00\n1gk9B01\n2vqeC01\n1dg3A02\n1x7vA00\n2bo1A00\n3uc4A01\n1zbmA01\n2qtcA01\n1g60B00\n1s5uE00\n3idsA01\n2q8gA02\n5tcsD00\n5jviE02\n1p9rA01\n5lfzA00\n2fd6U02\n3fgvA00\n2k0rA00\n2yguC00\n2oyzA00\n2ls6A00\n1qubA03\n4ijaB02\n2zyrA02\n1mdbA04\n2gncA00\n5gm2K01\n1dxyA02\n1uglA00\n4idcA01\n3ruvA02\n2ktyA01\n2q6kA01\n1iuqA02\n2d5bA03\n3abqD01\n2ou3A01\n1mqvA00\n1gu3A00\n2wqpA02\n1hczA02\n1wcwA02\n1kbeA00\n4je3B00\n4lv5A01\n5wj7A02\n1rz1A00\n3i2zA00\n4h63Q01\n3phsA01\n3i8sB02\n3dxiA00\n2x1dA02\n2vozA02\n3hn0A01\n1kf6B02\n5x7vF02\n4ki8A02\n2debA01\n1uf9A00\n2jyeA01\n2a9dA02\n2g40A00\n2chrA02\n2f8aB00\n3rkgA01\n5ur6A00\n3k2wB02\n2izrA02\n3i8bA01\n5u4hA01\n5cuwA00\n3fndA01\n2jfnA01\n4a8jA00\n2q86A01\n4hvtA01\n5w8qA01\n5yobA00\n3td7A02\n1mjuL01\n4lmpA02\n2uxtA03\n4h33A00\n2l3lA01\n3bn3B01\n2b5uA03\n2o9sA00\n2ozaA03\n2pbiA02\n3htxA01\n3l1nA02\n4n01A01\n1cs6A03\n2d69A02\n4dg9A03\n3wb9A01\n1yadB00\n2dyuA01\n3wmgA01\n1o6dA00\n3ibxD00\n4lhpF00\n3cmgA04\n4nbpA00\n2wlrA03\n1k2xB00\n2f6iC00\n2i00A03\n3jvdB01\n1wleA01\n3l3sB02\n1qmeA01\n2j4mA02\n3mwzA00\n3m4rA01\n1mkyA03\n3gnnB02\n1kvkA01\n4dmgA01\n5h02A02\n3d8lA00\n2re2A00\n4o9bC00\n1u8sA02\n2h8pD00\n2czlA01\n2gutA00\n1h30A01\n2a5zA00\n3g7qA01\n2gqrA01\n3n2eA00\n3u3wA02\n3lxzA01\n1jndA01\n3hg7A01\n2z8xA01\n1gcqC00\n5khaB01\n1sw6A00\n4d73B00\n1pmiA03\n3u7qB04\n3u9wA03\n1ym5A02\n4nsvA01\n3bpjB00\n2ww8A01\n2in3A02\n2qs8A01\n1klpA00\n4cogA00\n4h3vA01\n3k7uC00\n3mqlA04\n1v72A02\n3h8qA00\n1z72A00\n4k3bA03\n2p38A01\n1qb2A00\n2oieD00\n2ruhA00\n5xaoA02\n3iekA02\n3exvA00\n5oom800\n2rhcA00\n4boqA00\n2r41D00\n4fbnA01\n3mjgX03\n1cseI00\n2xgfA01\n4a0zB00\n4zdnA02\n4r7kA00\n2iw3A03\n4nogA01\n5c4vF00\n4f3xA02\n2atrA00\n2c1lA02\n2bfdA00\n3cnlA02\n5y1fA00\n3cjsA00\n2oyaA00\n2bw0A01\n2zigA00\n2k3iA01\n4i8oA04\n5hrbA02\n4jdnC00\n3o65E01\n5a0yB01\n3zpmA00\n3o3mD03\n3qwxX02\n3ifeA01\n2r6uA01\n2dm9A00\n2advC01\n3hi0A03\n4ljrA00\n3kgwB01\n4jwxA01\n2i9uA01\n1wteA02\n3k8uA01\n5vamA02\n4bjjA00\n3or1A01\n4pqqA00\n3b40A02\n4xnhC00\n2w07B01\n4leuA00\n3dmyA03\n4gjzA00\n3lb9A00\n4rqrA00\n2r8wA00\n2bc4C01\n4db5A00\n1dg6A00\n5d4z401\n1qsdA00\n3e0jA02\n3w4sA00\n3r2cA00\n4rvuA01\n2egtA01\n3bdwB00\n2de6A02\n3qdhA01\n4xpzA01\n2htfA00\n4lpsA00\n5u00D00\n1vq2A00\n3h2tA01\n2jokA01\n3ugcA01\n5o15B00\n3n40P03\n3oyyA02\n3gg7A00\n2b7vA00\n4nnqC01\n1ufiD01\n1i7dA03\n4cj0B00\n5le5D00\n1wlfA02\n2x7jA03\n1mw7A03\n4yucA02\n2qv2A01\n4zohA04\n3vqjA00\n3fxqA03\n3fiwA02\n2dgvA01\n4gmkA01\n2jgbA01\n3tiiB02\n4lwoE01\n5wqjA02\n1ra0A01\n1i24A01\n3vr4B04\n3glkA01\n1hekA00\n3fndA02\n3zdsA02\n1e8cA01\n2xwxA03\n3ghjA00\n2oqqA00\n4yrdA01\n4gniA03\n1ncwH02\n1x1oA02\n2qjwA00\n4g6xA00\n2l95A00\n1wgsA00\n3hrxA01\n1um9A00\n3u97A00\n1bm8A00\n4g65A04\n3kkeB01\n3jzjA01\n3bkwB00\n5m4vA00\n2zztA00\n1jqoA03\n3b0xA03\n1iknD00\n2w5eA02\n2jy5A00\n3c1yA01\n2j8hA02\n2vq2A00\n1edqA01\n1mv8A01\n4jdpA02\n1db3A02\n4ha4A00\n1sqgA03\n3qi7A03\n2id3A02\n2bcqA04\n4w8qA00\n4c2mK00\n2j1vA00\n3na7A00\n1no1A00\n1ikpA01\n5hg8A01\n1zhxA04\n2aznA00\n3dwlG00\n3fs8A02\n3zc4F02\n3hiaA00\n2cvhA01\n2kd2A01\n3gw6B01\n3uoeA01\n3azjG00\n3qouA03\n4driA00\n1jalA03\n4i14A02\n3biqA01\n4ogdA01\n1v5vA02\n3n98A02\n3ayhB02\n4gkwA00\n4a63B01\n2q7sA00\n3ahpA00\n1ez0A02\n3adgA00\n3e2oA02\n2ouwB00\n3mzlB01\n1rutX02\n1id0A00\n5hobD00\n1h3zA00\n4hfiA02\n2dwkA00\n5m17A00\n1v89A00\n3uanB00\n3kmlA00\n2lx9A00\n3s8sA00\n4mfiA00\n4eogA01\n1sdoA00\n3f0cA02\n4jvwD00\n4ks7A01\n1gl4B00\n4pytA02\n5itwA00\n4e3xA01\n3vhxH00\n1wzaA01\n3td9A01\n3e48B02\n3owrB00\n2eigA00\n4jn7A02\n4ebbA02\n3fmcA02\n4dmgA03\n3hmsA00\n4l8jA02\n3qg2A02\n1m32A02\n2qzqA00\n2pr7A00\n4qxbA01\n3or5A00\n4zmhA02\n4ay9D00\n4lixA01\n1hdoA00\n3rbzA01\n1gy6A00\n3kkiA01\n1sc6A03\n1sjdB01\n3nbiA01\n1vdwA01\n4pmhA00\n3g4nA03\n2ogfA00\n1n2dC00\n1x4pA00\n5jj6B01\n5i9eA03\n2i5hA02\n5d7wA02\n3zx1A01\n4jhmA01\n2c5aA02\n3g8kA00\n3c6wC00\n5a35A00\n3oa3A00\n2yyzA02\n3d5kA02\n2k9qA02\n3eyaA02\n2xwlB00\n2vg9A00\n1t11A03\n1hlqA00\n4llgM00\n5fq4A00\n2zyoA02\n5c50B00\n2olvA03\n2x0dA01\n3mmzC00\n4us5C00\n1no5B00\n5dmhB01\n2z10A00\n2r15A01\n3sb1A01\n3jrvA00\n3k6hA01\n3iiiA01\n3f0hA02\n3mmkA01\n3ehmA01\n2wusS00\n3fn2A00\n2z1dA02\n4rctA01\n3mtwA02\n4a4jA00\n2xgrA00\n5e3iA02\n3fppA02\n2mqjA00\n1kaeA02\n1zyoA02\n1jvnA02\n4hl4A02\n3o4oC03\n2f4mA02\n1f5yA01\n3ouxB00\n2fji102\n2xcmC00\n4rleA01\n3up8A00\n2ksfA00\n2o3iA01\n4uf0A03\n1eteA00\n3kpbA00\n4ja2A00\n4uoiC00\n5jgfA01\n2pusA02\n3e58B01\n2iwxA00\n2yqpA00\n2a50B00\n3zxaC02\n3d0fA01\n1s1nA00\n1ctfA00\n1gsaA02\n4rxuA02\n2zq5A00\n5tuxA02\n2r47A01\n2ixsA02\n4ce8A00\n5uy7A00\n1xkwA01\n3ahcA01\n3pvvA00\n3aj1B01\n2qm1A02\n3feoB01\n3t6pA02\n4jr6B00\n1oeyA00\n3iisM00\n3shpA00\n3ftdA01\n2g1uA00\n4fibA02\n3h1tA02\n3ej7C00\n4fdyA02\n3s24A03\n3kwuA00\n1qhtA01\n4phzA03\n3tm8B00\n3gdzB00\n1jd5A00\n4blqA00\n4i4oA00\n4fyuA00\n3tj8A01\n4hwbA00\n3c8dB02\n3mw4A00\n1gh9A00\n2e1mA05\n2oznA00\n3nmrA02\n1qw9A02\n4r2yC00\n3v7jA01\n4hepA01\n3jc6D01\n3hz4A00\n1nnwB00\n4bmdA01\n4wsiA02\n1j5xA01\n1eayD00\n4bt2A01\n2b5gA00\n2l76A00\n2qmuC00\n2an1C02\n3wndA03\n3lasA00\n3alnB01\n3vusA00\n3gwcD01\n4gqoA02\n3kasA02\n1gsaA03\n2rinA01\n3gniB01\n3ec6A00\n4yrbF00\n3ljcA02\n4g9fD01\n3go5A03\n4n8gD00\n2qr3A00\n2xanA01\n2y0mB00\n1c41A00\n4onlA00\n2gq0B01\n2di0A01\n4db3A01\n2hnaA00\n2qq8A01\n3cimA00\n3bwwA01\n1dmuA00\n2cdqA03\n2klqA00\n3rv0B03\n2mx8A01\n2v26A04\n4c0oC01\n3u9wA02\n2v8qB00\n4csrB00\n4zohA03\n3hrzC03\n4dg8A02\n1tiqA00\n5drfA00\n3q49B00\n5b66u01\n2bo9B02\n4cswA02\n1zeeA01\n1j5sA01\n3vepC00\n3lz8A01\n3t66A02\n1whzA00\n3a9zA02\n2h0aA02\n4ozuA01\n3ko8A01\n1r4gA00\n3tjrA00\n3jqyC00\n3k6jA01\n2os5A00\n3e1sA01\n2qrlA01\n5b66c02\n3ewiB00\n4h3wA01\n2bapA02\n3vvvA00\n2xzlA02\n4ba0A02\n2uzyB04\n5ifzA00\n2g8yA03\n4ga6A02\n4extA00\n1bcpB01\n2phcB01\n1uufA01\n2ahoB01\n1jg7A01\n1qtoA00\n4b4sA01\n2bsyA02\n2ocaA03\n3s4kA00\n3girA04\n4iciA00\n4a8jF00\n1n4cA01\n4a6hA00\n1t33A02\n1q32B02\n1qqrB00\n3coqA00\n4gqbA01\n1mn8D00\n1wv9A00\n5czdB00\n4dppA00\n5tf5A02\n2mdiA00\n3gtyX01\n1ny4A00\n5jeaH01\n5d94A00\n2b3fA01\n3iveA01\n3k4uE01\n4jm1A00\n5ldqA00\n4dovA00\n3kbbA01\n1zk4A00\n5b6kA00\n2gmyD00\n4ds2B00\n3ed5A02\n4epcA01\n2wj9B00\n3eaaA00\n5a2gA00\n4lc3A02\n4v33A02\n2iaiA02\n3c24A02\n2wpfA03\n3h1tA01\n3gm5A00\n2eisA00\n3nkuA00\n2e1mA01\n4g84A01\n1pj5A05\n5chtB00\n5k68A00\n2lf0A01\n3vmkA00\n1hlbA00\n2wzbA02\n5ws7A00\n2x7qA02\n3qr0A03\n2iyvA00\n3g89B00\n3ct9B01\n4bspA00\n5lnnA00\n5lhjA02\n1zr6A02\n4xfkA01\n4htlA01\n2v03A01\n2ohhA02\n3beuA02\n2fhqA00\n4bfiB02\n3n90A00\n4wf2A02\n4kxwA03\n2i3fA00\n2g30A02\n3tvaA00\n4dbgB02\n4p1zA00\n2zadA01\n4v0bA00\n4bx8A03\n2kloA00\n2h9gS00\n2oa9B02\n2vvyA01\n2o38A01\n2cofA00\n1y1uA02\n5b7yA00\n4yfeA01\n4aqnA02\n4illA02\n2qedA00\n3g0tA02\n3thtA01\n1m2tA01\n1lghA00\n2ebqA00\n2r6aC02\n2pjdA01\n2ahrA02\n2xd3A02\n3ek3A01\n1x51A01\n2ereA00\n3r8eA01\n4rl1A01\n4ysxC00\n1o7jA01\n2grvA01\n3oo8A01\n2oxcA00\n4tkoB01\n2ogjA01\n1pvgA01\n2pgwA01\n1r8gB00\n1yhtA00\n4igdA01\n2xvtC00\n5jipA02\n2qddA02\n4jbeB01\n4mkiB00\n2f1vA00\n2kjqA01\n1onwA01\n4exbB00\n4ec6A00\n3f44A00\n3bl9B02\n2zw5A02\n4ry9A01\n2v2gD02\n2obxA00\n3aj4A00\n3eyaH01\n4ebgA00\n5j41A01\n3peaF00\n2ig6A00\n4q5eA02\n4apmA03\n3egoA01\n3fi8A02\n3s40B02\n4qflA03\n3m5bA00\n2rikA03\n1cjxB02\n1xi3A00\n3t8kB00\n2o1qA01\n1f60A03\n3n3uA00\n4tn5A00\n3lfuA01\n1uh6A00\n2rb8A00\n1wddA01\n3hrgA02\n1yrtA02\n4cn9A01\n1wmhB00\n1bg1A01\n2wjwA01\n4owyA00\n4m0wA01\n3ondA01\n2ix7C00\n3scyA00\n2a02A01\n3keaA00\n1v76A00\n3wx4A00\n3gbvA01\n3mlpA02\n4bgbA02\n2yz8A01\n2g6yB00\n5cdzA01\n1wosA02\n2ll0A00\n4ab7H02\n2bkmA00\n3qxzA01\n2nmlA00\n4lk4A01\n4mzcA00\n5vxfA02\n3khkA02\n2imhA01\n2dpyB00\n5p9iA01\n4ruwA01\n3gf8A02\n4w5zA00\n2jc5A00\n3r9tB01\n3e4bA00\n1i94M02\n2ic6A00\n5k26B00\n4f3qA03\n2kp7A01\n4ch7A02\n1nh2B00\n5fvkA00\n5cu1A00\n4gdxA02\n1qtwA00\n4i7wA00\n2lgxA00\n1nu7D02\n3hi9D00\n3a1yG02\n3c0tA00\n5vg3A02\n2r6aA01\n1rqgA04\n4hwgA01\n2xvyA01\n1ugkA00\n1eazA00\n5fg6A00\n3o79B00\n1wkbA03\n4bfrB02\n4kp4A02\n2iidA01\n4ms8C01\n2eyuA00\n1g8eB00\n2pz1A01\n3i4tA02\n3gzaA02\n2istA01\n3wajA04\n2z6rA02\n1m93B02\n2bs2B02\n5nrgS02\n1f3vA00\n6az1d00\n2ovrB01\n3aj1A01\n5mj3A01\n1zt3A00\n1wkyA02\n2wuiA00\n3vtfA02\n2k5nA00\n1y1uA04\n2k87A00\n4brcA01\n3tr3B00\n1u04A03\n1zjjB01\n3m84A02\n3kgwA02\n3rojA02\n3n5nX01\n3v93F01\n2j6aA00\n1lbvA01\n3nvoA01\n1z7cA00\n2bw2A02\n2q8vB00\n4a14A00\n4s1pA00\n1juhA02\n3eeqA01\n1iv8A01\n3gm8A03\n4lfuA01\n2c2qA01\n5ciyA02\n3me4B01\n2w56B00\n4qa9A00\n1t0iA00\n1dquA02\n4omfG02\n3ombA02\n3q91D00\n1ymhE00\n4e5yD02\n5b71E00\n3fruA01\n2wqrB01\n4iqfA02\n1tvmA01\n2gmhA03\n4urfA00\n1t8hA00\n5d6eA01\n3mwfA02\n3vxvA00\n3efzB00\n5pxlB01\n2aklA02\n3npfA03\n2mzrA00\n4gywA05\n3o6qC01\n4m02A01\n5bowA00\n4zcdB02\n5gy7A02\n4aqzA00\n3vxcA02\n2vh7A00\n3gfzB02\n5b4wA00\n4h2wA00\n3bg1B03\n2bolA01\n1n7sD00\n3d31A03\n4pbpA00\n1sqjB02\n5aogA01\n5xtbF00\n5tnvA00\n1iy9A02\n4oe7A00\n4rzyA02\n4bucA02\n1wkrA02\n4v2xA01\n2k0lA00\n3rstA02\n3f62A00\n4aq1A01\n3kkdA00\n5d7wA01\n4ushA00\n1z6mA02\n2qikA02\n3id6A01\n1yvwA00\n3f4aA00\n3sdoB00\n4mxtA00\n3sx6A00\n4qq4A00\n4hstB03\n2dzrA00\n4lp8A01\n5axoA00\n4ru1A02\n1lk5A01\n3pnnA00\n4oqjA01\n1d7qA00\n1o4yA00\n1lkkA00\n2hvwA00\n1jmmA01\n5c04A00\n2yukA00\n4o32C00\n3st6C00\n4ofyD02\n4wfeA00\n1xv2D02\n1n00A02\n2b3yA05\n3mggB01\n3gpuA02\n3i2tA04\n4e2bA00\n2vhaA02\n3osxA00\n3t8yB00\n2qsxB02\n5joqA01\n4phqC00\n3e58A02\n3s6pD01\n1vdyA00\n1tbrR01\n2jekA00\n2n1aB00\n3i6iA02\n1xfkA00\n1jeyA02\n1okgA02\n2q09A01\n4ii2A04\n1al3A01\n3js6A01\n3tb6B02\n2zqkC00\n1nlqE00\n1g7sA04\n4fm3A00\n4hgzA02\n2rkqA00\n4xttA00\n3goeA00\n4q7qB00\n1moqA02\n3s0aA00\n1v2yA00\n1yphE00\n3ke7B00\n1rmjA01\n3tvmE02\n3qg5A02\n1odmA00\n3fmyA00\n4lvpA00\n3ufeB01\n3kvhA00\n1jmkC02\n5lznA00\n1kzfA00\n4gvfA00\n2w5fB01\n3stoA01\n2xj4A00\n4jc8A01\n7fd1A00\n3abqA02\n2f69A02\n5bqpD00\n5j3bA02\n2w2uA00\n3vpzA02\n3knuD02\n2abqA00\n3euaF01\n5cr9A01\n3cs3A01\n5tevB02\n3l9bA00\n1ei5A01\n1zsyA01\n2llgA00\n3wp4A00\n1q1rA03\n5escA00\n2lkiA00\n1w23A02\n3jv1A00\n2w9jB00\n1wimA00\n1jbiA00\n3sqdA02\n1p49A02\n1kf6A04\n1yhpA02\n3soyA00\n2q2gB02\n4j0eA02\n4jf5A00\n1fp0A00\n1bg5A03\n2c2aA02\n1s28A00\n4hceA00\n1o0sA01\n4f54A00\n3lqbA00\n3kzxA01\n2nbsA00\n2vhhA00\n2ivnA01\n4gx0B03\n4u77A00\n3asdA00\n3axjB01\n2nuhA00\n4rckB00\n2hciB00\n5in4B01\n3bh7B02\n4hasA00\n4idoA02\n1x5aA01\n1n62B03\n3isxA02\n4wftB00\n1mv8A03\n3i1iB01\n2ogwA01\n3kdrA03\n4wczC01\n2hwtA00\n1lc0A01\n4kypA00\n2lnaA00\n3d1bB00\n2qdfA01\n4iq4E03\n3a0oA02\n4m85C00\n1gq8A00\n2e30B01\n5k9fA00\n3mtjA01\n1i1qA00\n1zczA02\n5jqyA02\n2pfdA03\n2y8kA02\n3upuA03\n1tr8A02\n1xakA00\n1cfbA02\n3csqA02\n2k60A02\n2ei0A02\n3he1A00\n3ctrA00\n3k67A00\n2a9sB00\n1lr5B00\n2ij2B00\n1p5dX01\n5e56A00\n2fitA00\n3khpD01\n2qjcA00\n1m1hA02\n4k1pE00\n2odaA00\n2yfaA02\n1hx6A01\n5lrrA01\n1yc9A01\n3tw5A02\n3ec3A02\n4mjsX00\n1yqtA01\n2obeB02\n3u5nA02\n2xhfB00\n3ecmA00\n2w1tA01\n3pl5A02\n2kkwA01\n2qq9A03\n2v25A02\n3oc8A00\n4dcuA03\n2za4B00\n1cz3B00\n3bvoB01\n3aa0A02\n4k2mB01\n3brqB02\n2eg4A01\n3rqtA01\n1914A00\n1j8bA00\n2j3wC00\n4bmvI00\n4bx8B02\n4di1B01\n3dnhB01\n4fe3A01\n4d7pA00\n1z84A02\n3szvA01\n5eynA00\n2h8lA02\n1jx7A00\n4e9jA02\n1nuiA01\n3g6mA02\n3geeA03\n2w72A00\n5daeA00\n4i5tB00\n4hkaA02\n1h7cA00\n1ceeB00\n4xghA03\n4n7rC01\n4cemA00\n2ychA01\n2jliA00\n3oa5A01\n2fhpA00\n2e6oA00\n1texA00\n4mdcD01\n3rotA02\n3cveB00\n2w4lD00\n4kmdA02\n4q3oA00\n3obwA02\n2xexA05\n1lzlA00\n2kqaA00\n3vx8A01\n4n5hX00\n1x7oA01\n1cxzB00\n3hh2C02\n1e6cA00\n3ljuX02\n3b0pA01\n3ifuA01\n3dnsA00\n2og4A01\n1ztdA00\n1z2iA01\n3fxhA00\n3b48F00\n1p6oA00\n4u83C01\n1ewfA02\n3rkvA00\n2zg6A02\n3esuF01\n4cvuA03\n2h7bA01\n5e6sC01\n2qq8A03\n4wnqA01\n2o3oA02\n3fz4A00\n1t6uD00\n1oo0B00\n3eccA01\n5wq3B01\n1u0jA02\n3g0hA01\n4dn9B00\n3g5oA01\n2qa7A00\n1aqzA00\n1d66B01\n4nl9B01\n5lzkA00\n3k5iA03\n3pqaB01\n4hkmA01\n4u5hA00\n3sg8A02\n1ow4A00\n4xcgA02\n1a8lA02\n2vqeB02\n2xnqA00\n5o8wA02\n2qudA00\n3s3xB01\n4nn5A00\n5eoxB03\n1dfxA00\n4blpB00\n5mu3B00\n2zg6B01\n4lhsA01\n2kzvA01\n3lodA00\n1jmkC01\n4zz1A00\n1v71A02\n3uibA01\n4gyvE00\n1vpkA01\n4es1A00\n3gf3A02\n3zheC01\n1hg8A00\n1httA02\n4fdxB00\n4kc3B01\n1czjA00\n2tgiA00\n3oqiB00\n3pa6A00\n3cwrB00\n2lg7A00\n2l7rA00\n4moaA01\n3kf3A02\n4djaA04\n1sqhA01\n3e2dA02\n1iyjB03\n2b5dX01\n2ofyA01\n2pjuA02\n4lctB00\n5dleA00\n3v5wA01\n3sjlE00\n3vseA01\n1g0dA01\n3mcxA01\n3uemA02\n3cnbA00\n1q7hA02\n2p45B00\n1x9xA00\n2wanA04\n5hmlA02\n3fvqA02\n2p26A02\n4nnqA02\n3zj0A00\n3mb8A00\n3gg2A01\n4gl6A01\n1pzqA01\n1mh5B02\n4j80A03\n2rmsB00\n1n2sA02\n1vcdA01\n1xg7A02\n5k91B00\n1iloA00\n3i9sA00\n3i5tB01\n5cvmA00\n1xg0C00\n1ij5A01\n1uwcA00\n3lsoA03\n2lfvA00\n2b9lA03\n3dsmA00\n2ojwE01\n5my8A01\n1sf9A01\n3bn0A00\n2o7tA00\n2wsdA03\n2h5xA03\n4mpoB00\n1pgjA03\n1z0sA02\n1uzcA00\n3h3hB00\n2z7bA00\n2o4cA01\n2ba3A01\n4xhyA00\n4qm9A00\n3k59A01\n2r9rB03\n4nn7C02\n2mmbA00\n5chxA02\n2gysB04\n3b6hA00\n3i9v202\n1ofcX01\n3girA03\n3b7bB00\n4kujA01\n2nr4A02\n2czqA00\n3jtzA00\n4f3vB01\n2nr4A01\n4b3xA02\n5oomq00\n3sonA00\n4jphB00\n2ykzA00\n5agvA01\n1us7B02\n4qhzA00\n1imvA01\n2pkhB01\n1szqA01\n1jz8A05\n2xciA02\n1amuA02\n1yt8A03\n4gl6A02\n1wpoB00\n3r1kA03\n1wr2A01\n4ycaA02\n3gyrA01\n5hubA00\n4h2uD00\n3fzqB02\n3eyxA00\n4i4cB00\n1xbiA00\n1wdeA01\n2qrdB01\n4gc3A00\n3tk8C02\n2lg4A00\n3htkB00\n1yo7A00\n3qtgA03\n2j58A03\n3votB02\n1or7C00\n2fiuA00\n4hlbA00\n4evqA01\n3fdrA00\n3a0yB00\n4w9zA00\n3fcdB00\n2qifA00\n1u6eA01\n2pifA01\n1m2kA01\n4k5bC00\n2gl5A01\n2ixaA01\n1iqvA00\n5ibkE00\n2iu8C03\n4kddA01\n3lafA03\n1ug3A01\n5tgfD00\n5i7wA02\n4c9bB00\n2fwrA03\n3ripA02\n3rccN00\n4qfwA00\n1f3rB02\n3wbiA04\n1x49A01\n4fxvA00\n2k49A00\n5flmE01\n1g8xA06\n3nrgA00\n2qq8A02\n4hh0A02\n3f6gA02\n4p02A03\n3v9fA03\n2yvpA00\n3b59A01\n4n40A01\n4czgA01\n5fooF00\n4i62A02\n4nl4H03\n3gyrA03\n5b22A01\n3fewX02\n2fkbA00\n5wu6A01\n5fcrA02\n4yv7A02\n3grcA00\n3osjA01\n3obhA00\n4bjyA02\n3wyfE00\n1w66A01\n4e12A01\n4bu0A01\n2yk0A03\n3a4rA00\n2qdrA01\n4e6rA00\n4qtaA02\n2v7bA01\n1ncwH01\n5e6sB02\n3u61C01\n4hdrB02\n3dodB01\n3jv3A01\n1s99A01\n1xgkA02\n2pfuA01\n1ulvA03\n2jbrA02\n2lrsA00\n2ksnA01\n1f39A00\n4by6A01\n3nv9A02\n3gz7B00\n1zs9A02\n1nf1A01\n3h99A02\n5eo9B02\n4i6mA02\n4yb6A03\n3lhhA01\n2w1vA00\n1yvcA00\n2r1bA00\n4p0gA01\n6az1L00\n1r8jB01\n1dipA01\n1xiuB00\n1becA02\n4hu8A02\n3ppbA00\n2x2zB03\n4ilkA02\n3ledA02\n2ns9A01\n1pfjA00\n2vooA02\n3r8qA02\n3ehuA03\n3i45A01\n2ixsA01\n1otrA00\n5lhmA00\n4hxyA00\n3a35A02\n3fr7B02\n3qe5A01\n4rg9B04\n4yhxA01\n1ep3A00\n3w0fA01\n4ii2A01\n3godD01\n3bamA00\n5iz3A01\n6az1E01\n4cp8E00\n2iciA02\n5v1yB00\n4g3oA00\n1ui0A00\n1rykA00\n4n18A01\n4fhrA00\n4q9cA00\n4ycsA00\n2rc3C00\n2bghA02\n4hynB00\n2gfnA00\n4cihA00\n3hakA00\n1odhA02\n2cjaA02\n2yimA01\n1i7nA01\n2c4kA01\n3zr5A02\n1ybhA02\n2nrhB02\n3ou2A00\n5m3qA00\n1nv8B01\n2codA01\n3ahcA03\n2lfeA00\n2i7vA02\n3pd7A00\n3hrzA05\n5u95B03\n3t57A02\n2b0aA00\n4g22B01\n3e7kA00\n2hjnA00\n3dliA00\n2d96A01\n5ax2A00\n5c9fA00\n3euoA02\n1wiwA01\n3fbgA02\n1j34A00\n4wkaA02\n1q15A01\n1vk6A02\n3f40A00\n3euhA02\n3ei3B02\n3eo4D00\n2b7uA01\n2d1sA04\n3htaD00\n4pq0A02\n3r3pB00\n2r0yA01\n4po2A02\n1rtm100\n3e8vA00\n4eekA02\n3h8gA02\n1wwuA01\n1et9A01\n3htkC02\n2mj7A00\n5n9cA00\n3dddA01\n4lgvA01\n3ge6A00\n3mahA02\n4fzvA02\n2m2jA00\n3ed3B02\n3d5nA00\n2kctA01\n3hf7A00\n3wp0A00\n2fueA02\n3ckkA01\n2w3xC00\n1sdwA02\n3lq6A01\n4dw4B00\n4ga4A02\n1nkgA03\n2l8tB01\n4c08A01\n1w0dA00\n3qzrA01\n1wsrA02\n3hzhA00\n4yjqA01\n4rzkA00\n5bt9D00\n3wh1A01\n2kcwA00\n2dk1A00\n3no4B00\n3d3bA00\n4gwmB03\n3e8sA00\n1qexA02\n3kjxA02\n4zxgA01\n3so1E00\n5an9B02\n2gnxA01\n3c7xA00\n3gxvB00\n2c9kA01\n4emeA01\n2aprA02\n1dkiC01\n4x9rA01\n1mowA01\n4rncA00\n2a90A01\n5dldA01\n1a2oA01\n4obiA00\n3v75A01\n3po3S02\n2bbkH00\n4r0mA02\n3hhwK02\n3h0nA00\n3g2mA02\n2l7aA00\n1h4aX01\n1wu7A03\n2ve3B00\n1pu1A00\n3eipA00\n3myuA01\n5ayvA01\n3pe8A00\n3tqlA02\n1njrA00\n4cymA00\n4o8hA00\n5joeA00\n3f7sA00\n4c2mC02\n5de3A00\n3ph0C00\n2gviA02\n3gw6A04\n5kngB00\n4aq4A01\n4ysxD00\n3rkoA00\n3aj1A02\n1shxA00\n2pmlX01\n3bl4A01\n1rk4A01\n1yxeA01\n2ms3A00\n4xurA00\n5bw0F00\n4c5wA02\n3bkxA00\n3cucA00\n4ww1A01\n2vsyA02\n3b6eA00\n3gk6A00\n3hcnA01\n2mkzA01\n4c8yA01\n3ccfA00\n5g05P02\n2ffwA00\n1xwmA00\n5ia8B00\n4kgqA00\n1lqsL02\n1r89A02\n3racA00\n2esnA02\n4cc0B02\n4impA01\n3c4mA03\n3s98A03\n3h8zA01\n2k4nA00\n1b9oA00\n3n0uC01\n4feuF01\n1n7hB01\n1h6wA01\n4evfA03\n2efeA01\n1sbxA00\n4jbmA02\n3a7rA01\n5t3yA00\n2zjrA01\n5dx6B01\n3nb2A02\n3fwyA00\n4i0nA00\n1ox0A02\n3oy2A02\n2id0A04\n3gz8C01\n2zexA00\n4clfA02\n1zcjA04\n5c0yA01\n3delB01\n3warA02\n2rgoB03\n2dleA01\n5d78A00\n1v7wA02\n3m2tB01\n3ccgA00\n5e4wC02\n5afbA01\n3op8A00\n2g7gA00\n3ub0A01\n1vpdA01\n2dnrA00\n4jdmA01\n4hdhA01\n3i3vA02\n3czpB01\n5uazA00\n4eguA00\n5t5qB00\n3lhnB00\n4eihA00\n3dskB00\n5v5hA00\n4l57A01\n2vs7A02\n3euaA03\n3pfyA01\n3fjyA01\n5ijtC00\n1k92A02\n1b9hA02\n5fmgG00\n1yg9A03\n2gu1A02\n2q18X02\n3gqcA03\n3v7nA02\n3clqA03\n2j8gA01\n2qpwA01\n5wrkA01\n2fcwB01\n5bncA02\n3ffhA01\n3silA00\n4bg7A00\n3p3yA03\n4rekA02\n1auuA00\n3wqlA01\n3v1aA00\n3hdoA02\n2h1eA02\n2p2eA00\n3na6A00\n2p12A01\n2w79A00\n4qi3A00\n4jjhA00\n4impA03\n3p1tA01\n4m00A01\n1eb6A00\n4oltB01\n4owwB00\n2y9yA01\n1l6rA02\n3i2nA00\n5ktnA03\n4aeeA04\n4q69B00\n3p0uA00\n4m0wA03\n4pf6A00\n2mu2A00\n4ypoA02\n1x6bA01\n4i42C01\n1s70B02\n3ed4C01\n4nesA02\n1v84A00\n2oerA00\n4apoB00\n1vkfB00\n4hdoA02\n1w1wA00\n1g5bB00\n3k0zA00\n2wskA02\n3p4tA02\n2xppA00\n1kobA01\n3bb9B00\n3rpwA02\n2g3mA02\n4ay9B00\n2qyaA01\n4dtgK00\n3p73A01\n3ioxA02\n5x40A00\n1fzcC03\n1ae9A00\n4cvqA02\n5cs2A00\n1x43A01\n1muwA00\n3gh1A02\n3rhzA02\n2c7hA00\n4a2nB00\n2om6A02\n1lc5A01\n2i9fB00\n5krdB00\n4e2xA02\n5c7qB00\n3l5iA03\n3h5qA01\n3l4fC00\n1ur4A00\n4r7yA03\n2uyoA00\n4udsA00\n1u7iA01\n5ayvA02\n2p61A00\n4nzrM02\n1mpgA03\n3i4jB02\n1g86A00\n3qleA00\n1cw5A00\n3i9v700\n1bb9A00\n4iirA02\n2vk9A03\n3m6wA01\n2ysgA01\n1eerC01\n5t4nB03\n1vq8100\n4z0tA00\n2qlpA01\n3bf0C01\n1njkA00\n1z6aA01\n4bj1A02\n5exvC00\n4bubB01\n2rk0A01\n5l37C00\n4zgmA00\n1jf8A00\n2lw9A00\n2v05A01\n4citA00\n3wutG00\n2o01200\n5erxA03\n5febA00\n3nrrB01\n2nr5E00\n1un2A00\n1l0nK00\n3d22A00\n3k17A01\n2xtmA00\n4hmsA00\n4zi3C00\n3x2fB01\n3rqbB00\n1z7aC00\n3hhsB02\n1xmxA02\n1g61A00\n4l82A00\n2vldA01\n3cedA00\n4x8qA02\n5lhfB00\n1ny9A00\n1t6aA02\n3mjgX01\n3pjyB00\n4an3A01\n1c4zA02\n4uucA00\n2mumA00\n2olsA03\n3ly1D01\n3qoqD00\n3ajdA02\n1t0jB00\n3thxA03\n5bz3A00\n2v05A02\n1gxrA00\n3im6A00\n2cz9A02\n2genA00\n3pl9A00\n3jyoA02\n3lf5A00\n3vsmA01\n1sr4A00\n4k4kA02\n2ed7A00\n3tdwA02\n1qrvA00\n1k9aA01\n3pzlB00\n2nrtA02\n1k2i101\n3ufcX02\n1imtA00\n4ky9P00\n4le5A02\n3bs0A00\n2aepL01\n4v24B01\n3rwxA02\n4nqwB00\n5hkoA01\n5decA02\n1w99A01\n3mbhA00\n1sqgA01\n3kmuA01\n2au3A02\n4r9iA02\n4gouA03\n1iq8A03\n1j4aD01\n1vfiA00\n4cu9A00\n2zkmX04\n3c48B02\n3tu3B03\n2ghjB01\n1sjyA00\n2hnuA00\n3peiA01\n2c31A01\n2f68X02\n1y4mA00\n5ewiH01\n4aayA02\n4qloA00\n1btkA00\n4bj8K00\n2pgeA01\n2e7mA01\n1wt6B00\n3ulrB00\n1zu0A01\n3r6fA00\n2xfdA00\n3n06B01\n3u4kA00\n3bvpB00\n2kjzA02\n3q45A01\n2ynqA00\n4k89A02\n1vloA02\n1fg7A01\n3obwA01\n1h0hB01\n3ct8A00\n3ix1A01\n4nhxA01\n2rb7A01\n3uo3A02\n3ax2A00\n1h6fA00\n4az3B00\n3gw4A00\n2vqcA00\n1w8uA00\n5eghB01\n1o6wA02\n3p3eA02\n2g5dA03\n4hvzA01\n1wb9A02\n2d6fA01\n3piuA02\n3qdlA00\n4ol9A01\n2jbwA02\n4qamB00\n2de6A03\n4h8wC02\n3mkqB00\n3i4jB01\n4h40A02\n3huhA01\n1xi9B01\n2e8pA01\n4es6A01\n3gg9A01\n1nulA00\n1fltX00\n3fzvA03\n2f4lA01\n2qjvA02\n4n13A01\n1j77A00\n3bkrA00\n2zskA01\n4o8yB00\n4xduA00\n1z0wA00\n2yhxA03\n4ikgA00\n1y8qC00\n3ch0A00\n1uelB00\n2r8eA00\n5eiqA02\n2h6oA01\n3rnvA00\n4evfA01\n3c7jA02\n2p0lA00\n3swoA02\n2giyB00\n1z45A01\n3gg2C03\n4glaC00\n4hpnA02\n4cfsA01\n2edkA00\n2wtkC01\n3h7oB01\n1zd0A01\n3i4hX01\n2a40B00\n1i8dA01\n4pz0A01\n3om0A02\n3d02A01\n5ibqA01\n3h4xA00\n2zueA03\n2qjgA00\n5eccA00\n2np3B02\n3jybA00\n3h41A03\n3qbyB00\n3lq9A00\n3gdvC01\n3fe3A02\n3futA02\n2iuyA02\n1u6fA00\n2yxoB00\n1v65A00\n1hxmB01\n1q7lA00\n5b66o02\n1cvrA01\n3drwB01\n1enfA02\n1va6B02\n3k05B02\n1okgA01\n1l0qA02\n4xwxA00\n4fe7A02\n1jy2O00\n4heaA00\n1w3bB00\n3gnlB02\n2zc0A01\n2mf4A01\n2a2lC00\n1ep3B03\n1bdsA00\n1djxA03\n1rtwB00\n3gnfB04\n1j8eA00\n2ylnA01\n2kdiA00\n2fdnA00\n1xd3C00\n4rxmA01\n1n9wA01\n2v3gA00\n3pp2A00\n2vrwB03\n1rp3A01\n2qvwA03\n2zxiD02\n3qp1A00\n1fviA01\n2ynzC02\n3bdvA00\n4k73A02\n2ebuA01\n2ogkD00\n4ghjB00\n5jrhB01\n4h5gA02\n3e6cC01\n4r8qA01\n1te5A00\n3oetD03\n4jb1A03\n3cebA01\n1x6oA02\n4jklA01\n1wr8A02\n1tkjA00\n3hfqA00\n3dwcB00\n5o9fA02\n1sh1A00\n1vqqA03\n1lfpA02\n2qr4A01\n4ms4B02\n2q8kA01\n3ifrB02\n1evyA01\n5d01A01\n3dxrB00\n3errA01\n1iktA00\n2dm4A01\n2aiqA02\n2ab5B02\n3b5eB00\n1vqrB00\n1sxjA01\n4ew5B00\n4lplA00\n2r4gA02\n3nvqA03\n4ptsA01\n3ziyA01\n3b8bA01\n4jotA01\n5g0tC00\n3p02A02\n2mm4A00\n1xqoA02\n1q9jB02\n5ifiC02\n2ko6A00\n1f8dA00\n4gvqA02\n5kbwB00\n4a15A01\n2fgtA02\n3k96A01\n4y5tB00\n3juuA00\n3dzaD01\n2rd9B01\n4d05B01\n1xm3B00\n5w8qA02\n4nfnA01\n3hdvB00\n4r8oA00\n2nliB00\n2dv6A01\n3v97B01\n3vmnA02\n4mptA01\n2kerA00\n3wqcA01\n4rm7A02\n3sqlB01\n5vfbA01\n4qhpA04\n3n9yB00\n1io1A01\n3duzA02\n1bhuA00\n3d2yA01\n3t4lA02\n4fu0A02\n3bzsA00\n4f4oC01\n2op5B01\n3b08B00\n3qnmA01\n2k85A00\n2qs9A00\n1uklC00\n3ia1B00\n5n7qA02\n1tigA00\n2proC01\n1nytA02\n2cxiA02\n3dcmX00\n2qguA02\n1pyiA01\n2o16B00\n3sscA00\n4gipA00\n3f8kA00\n4fqjA01\n3zheD01\n3brkX02\n3qyfA03\n4wuvA00\n5d18A00\n1i0rA00\n3gl3D00\n3b4uA00\n1sy7A01\n3c3vA02\n2r6jA01\n2vswA00\n4jgbB00\n4cvuA01\n2b9lA01\n2xp1A01\n3cx5I00\n1k5cA00\n2w39A00\n2x8xX01\n1mr7C00\n4lpqA01\n2h9aA02\n1xo0A02\n4wxmB00\n2nn6I02\n3kbrA01\n3payB02\n1s4nB00\n2kivA02\n2ztgA04\n1vrbA02\n3njdA00\n1uf2C02\n3lmlB01\n1n0qB00\n4k3dI01\n3p4eA02\n4a2aA04\n4b6uA00\n5wxhA00\n1wf1A01\n1y0yA02\n4rv9A02\n3gv0A01\n4wwhA01\n4cgyA04\n5rubA02\n1xttB00\n1t9iA00\n3o6cA00\n3gocA00\n2q1zB02\n2bpa100\n2xw9A01\n1mbmA01\n2dkjA02\n2jepB00\n3s9dA00\n1rypL00\n1pjuA02\n3js6A02\n3tmaA02\n3te6A02\n2hjmA01\n4c23B02\n5l9sB01\n3cerC01\n5j7mA00\n2o3oB01\n5dnyA02\n2xvyA02\n1jb7A02\n3e8mA00\n2qvhA02\n1xmcB03\n3bwsA01\n3zigA00\n4weeA01\n1j7xA02\n4m0nA02\n1y5oA00\n3edoA00\n3oajA01\n4fe7A01\n3fo8D02\n2y1hB00\n2i38A02\n4ofdB02\n1zkdA02\n4twcA01\n2fxoB00\n4qi8A00\n5xjnA00\n3thfA00\n3o6qA02\n3lp5A00\n1bquA02\n3jx9A00\n3fcsA03\n4dxtA00\n4yzzA01\n3dnpA02\n2dmfA00\n2rbbA00\n1o59A02\n3csvA02\n1g8mA04\n2geeA01\n2jaqA00\n1hq1A00\n2bz1A00\n3lkdA02\n3cnuA00\n5m04A01\n4o6kA00\n2vugA04\n3d3aA03\n4x00A00\n4dgfA00\n2fokB01\n4gv8D00\n4jaqA01\n4ob0B01\n1znbB00\n4yorB00\n2ap3A00\n3m5qA02\n4ahcA05\n4hwtA02\n1o3xA00\n5ghlA00\n1om2A00\n2kesA00\n5nceA00\n4c0eB01\n3i33A03\n3w15A01\n4i6kA00\n4u19B02\n3g68A02\n4p02B02\n1vq8200\n1nkdA00\n2o7iA01\n4dz6A00\n1e6uA02\n1krlA00\n4eziA02\n3kcgI02\n2w72B00\n5eokA02\n4xchA00\n3c8iA00\n4c16A04\n2x4iA00\n2rdeA02\n1zj8A02\n1byiA00\n3kwrB00\n4q8kA00\n4efiA00\n5eb9A00\n1d2zA00\n4id9B02\n2z69B00\n3jsbA01\n1u6zA03\n2dg8D00\n3hr8A02\n1nowA02\n4i6yA02\n4nzcA01\n1fp1D02\n5vccA00\n3qouA02\n3c12A02\n2yicC02\n2qdeA01\n2cbzA00\n3dd6A01\n2qu7A01\n3whrB01\n2dryA00\n5cr9A02\n2gefA02\n1tuoA01\n1vheA02\n2e26A02\n4flbA00\n3rc3A02\n3l0iA01\n4u2nB02\n5ae0A00\n2ih2A01\n2z8lA02\n3vdpA04\n2qgyA02\n3mlfE00\n1jz7A02\n5jffA00\n2c5lC01\n4ylmX00\n2wwxB00\n3x17A01\n2vqeM01\n2o36A03\n5jawC02\n5hsqA03\n3ma5D00\n4fytA02\n4a0gD01\n1v6pA00\n2o8bB02\n4bouA00\n3mixA01\n2hsnA02\n2ozhA01\n3h5jA00\n1b0bA00\n1h8gA00\n1wv8A00\n2khkA00\n2cfmA03\n1mw9X03\n1sqgA02\n4wciC00\n3vskA03\n3u9lA00\n1bunB00\n3vvcA01\n2rugA00\n5jr2C00\n4dbgA00\n2bivC02\n5iyzB03\n3ibyD02\n1ka2A00\n3lewA01\n3cxbA03\n5knhI00\n1jtvA00\n4dapA02\n1ywyA00\n1y8cA01\n4j7hA02\n2wsdA02\n1sbzD00\n1ldjA01\n3bp6A00\n1ixmA01\n4h27A01\n1zmeC02\n3bz5A02\n4yoeA02\n5mu9A01\n3le2A01\n5x6bJ01\n2kmaA02\n2e9xG00\n2aibA00\n5jioA02\n2i2oA00\n2y78A00\n4negA02\n2je8A02\n4oc8A02\n1wvhA00\n1vf7A03\n2hxvA01\n3p0wA01\n3mdpA00\n4npsA02\n3pjvD01\n2dchX01\n1z56C01\n3oo8A02\n5e9nA03\n1ng2A01\n5jtwA01\n3mq2A00\n3g5tA00\n2hw0A00\n4gywA03\n4xymA02\n3oouA02\n1nigA00\n2kinB01\n4bk0A02\n4bhuA00\n2krrA01\n3rtkA01\n4pv6A00\n3on3B00\n2hhcA02\n3mcaB01\n1j83A00\n4z1xA02\n2jx4A01\n1serA01\n3sqzA02\n3kk8A02\n1s55A00\n1vbfA00\n3l0oA01\n1iukA00\n2qtfA03\n1uqwA01\n1nn3A00\n2hepA00\n3jq1B01\n3zn3A00\n3vwaA01\n4ifdK02\n1vhzA01\n4bt9A02\n2mr9A00\n3k63A01\n3tutA01\n1w36D01\n3en9A03\n1ixhA02\n3u4gA00\n4pxwB00\n3i5xA02\n2xr6A00\n3amuA02\n2yo3A03\n1epuA03\n2gqwA03\n2pjhA00\n4dm7A01\n3lx7A01\n2htiA00\n4y1lC00\n4jqrA00\n3egcD02\n5j4uA01\n3d85C00\n1ofwA02\n5isvA00\n1gnlA01\n5jodA02\n3jwgA00\n1kzyC02\n3t0yA01\n1r8eA01\n3kk4A01\n1rk6A01\n4ndhB00\n2lzrA00\n1f0xA01\n4aezI01\n1dp4C02\n3sh4A00\n1cmxA00\n1ji1A02\n3n0rA01\n3frnA02\n3hq1B02\n1xmxA03\n5xapA02\n1y0nA00\n2bo4A01\n5i8tA00\n2xr1B04\n2wjrA00\n4z9mB02\n3c3jA01\n4nzvA01\n1wyuB03\n3cxnB00\n2o14A02\n5e1vB00\n3f0dA00\n4isdA01\n4hziB00\n1sflB00\n2nwrA00\n1y07B01\n1jmtA00\n4p5eA00\n2y0tA00\n1ca1A01\n4jhtA00\n3nqnA00\n2yu0A00\n3czcA00\n3lqnA00\n2ihxA00\n3vupA00\n1mwwB00\n2qmiA02\n1hufA00\n2zcmA00\n4lo6A00\n1u7lA02\n3pj0A01\n3r15A00\n4kikA03\n3pzgA00\n3tadB01\n2prsA02\n2ihtA02\n2xs2A00\n2x1dA01\n1lfwA01\n5dn6G02\n1x4eA00\n2e9xB01\n1ddbA00\n4usaA07\n1sefA01\n4hhxA00\n2p0gB00\n5khtA00\n2ln3A00\n4f88102\n3nvwK01\n2z0tB00\n2dgxA01\n4jtmA00\n2x1wO01\n2x4gA00\n3mtrA01\n3ndhA00\n3t8jA00\n4bpzA00\n3wjpA02\n2j0aA00\n5ee0A03\n1uvgA01\n2f5tX01\n1wtjB01\n4iibA02\n3hztA01\n4h7pA01\n4bx8A01\n1kblA01\n4p7tB00\n6em3G00\n2lboA00\n4c76A00\n4zf7B00\n3czbA02\n1d2fA02\n4aeeA01\n1p99A02\n2wnfA00\n3fzxA00\n4a20A00\n2i49A02\n4kv2A00\n1bi7B00\n2h88D00\n4r1bA01\n1senA00\n1u9pA00\n6ay2B00\n2z16A02\n1jmuB01\n3bb8A01\n1miuA03\n3c4nA02\n4n0rA01\n4i6rA00\n1jv1B01\n2h41A00\n2e87A01\n5i4zA00\n3r2gA00\n1txgA01\n4da2A01\n2jxuA00\n2xuvB00\n2nszA00\n3ui2A03\n2ra1A05\n2y8dA01\n4eglA02\n2w2gA02\n3rf9A03\n2wyoA04\n3fhvA00\n3ojaB03\n4h63H02\n2j4xA01\n4n0dA01\n2p0yA00\n1enwA00\n1y14A01\n2h8pC00\n2qf4A02\n3e2lD02\n4h8eA00\n3gkeA02\n3p73A02\n2vseA03\n5maoA00\n4p2yA03\n3s0xA01\n1wjjA01\n4atiB00\n4bzpA00\n1q6zA01\n4jfcA02\n1t2dA01\n3weeA03\n1jjfA00\n3sluB01\n1xauA00\n4f3nA00\n4itjB01\n2jfkA02\n4abyD00\n2pmlX02\n2yq3A03\n2vcnA01\n2ly1A01\n2bsjB00\n2ei9A00\n4duiA00\n1zv8G00\n4q7zA02\n5cgqA00\n3hulB01\n1otjA00\n1zhxA02\n2h36X00\n1jw9B00\n2ifcA02\n5erqA01\n5kecD02\n3vhxF00\n3fp3A01\n2zfzD00\n3dkxA02\n2yhwA02\n2k5qA00\n1x7dA02\n5jrjA02\n4kx7A04\n2wadA01\n3llvA00\n2i9wA00\n4bq2D01\n3d37B01\n2wy7Q00\n3wwxA00\n3k25A00\n1mbyA00\n2g7cB01\n3thoB03\n3wknF00\n3gvxB01\n1x3xA00\n5o33B00\n2g9zB01\n1zpsA02\n2jtqA00\n3cwcB01\n3h49B00\n4ecnA01\n3m9lA02\n3c0iA02\n2cvcA01\n3tv0A00\n2ej7A01\n4rz4A00\n4hdoA03\n3m66A00\n3cvzC01\n2ck3A02\n5b7gA00\n3s6xC02\n4h27A02\n1is1A01\n1z4rA00\n2htaA00\n3g8yA00\n4beuA01\n3bp8C00\n4r03A00\n3ir1B01\n3fhgA01\n1ahsA00\n3t9oB00\n5bu5A01\n1lq9A00\n2vpzA05\n3wmm000\n2j98A01\n3bqxA00\n2pp6A01\n2m35A00\n3vasA01\n3keyA02\n3cihA01\n1ffvB04\n5g6rB02\n2raeA02\n2ht1A02\n2ii7H00\n4uopA02\n1qvrC04\n2gk6A01\n1p90A00\n3u1kC01\n1v6tA00\n2j0wA01\n1eexG02\n4hktA01\n1tgxA00\n2obeA04\n1devB00\n3abiA01\n4jduA00\n3bxjB03\n1rl6A02\n4bh5A00\n2r76A00\n2arpF01\n4kv7A02\n1bolA00\n1ewqB05\n2yugA00\n3ajdA01\n2d8mA01\n3e2iA02\n1vytA01\n4bpfA00\n3atsA01\n1rl2A01\n1ynfA00\n4wgkA02\n2x2uA01\n5hwrA00\n3h9xA00\n3v4vB01\n3ctzA01\n2kwbA00\n4ae4A00\n4mpgB01\n1ehyA00\n2wvfA01\n4g38A01\n5usfA03\n1z6tA03\n4w4kA00\n2wv3A02\n3ly0A00\n2xpwA02\n5fmgN00\n5freA00\n1zbsA01\n4fzlA01\n1g5aA03\n3mgbB00\n3i2kA03\n2hrvA01\n4zl8A00\n3m3iB01\n5nusA00\n3ry4A01\n2c4nA01\n3ej7H00\n3v6iA01\n3k9rC00\n3hn0A02\n3vygD00\n1wd5A01\n4nvsA00\n3e2vB00\n4cyiB03\n3holA04\n3pp9B00\n4jj9C00\n4yvdA01\n1e2wA02\n2dbyA01\n1ii7B02\n3ky8A01\n3p8nA02\n1vkuA00\n2ejwA01\n5bseA01\n1q40D00\n2r4iA00\n3imiB02\n4hljA01\n1wr8A01\n2gruA02\n4r3aA02\n2ylnA02\n2frxA02\n4wsjB01\n2dgtA01\n4ktpB02\n1tt5B02\n2kgwA00\n3mgxB00\n2ch5A01\n1ts9A00\n2btqA01\n3eazA00\n3p5nA00\n5jn5B01\n2hi0A01\n4uuuA00\n2o26U01\n1mo9A03\n5k3qA00\n2uy2A00\n3dlqR02\n2vf1A04\n3c2uB02\n4mchA00\n5cb1A02\n1s3sH00\n4bc3A02\n3u7zA00\n3abqB01\n3slrA02\n2z51A02\n3fppA03\n5cg8A00\n1rlhA01\n4inkA01\n5iipD00\n3lm3A01\n3f3kA00\n2fibA01\n2aeuA01\n2jisB02\n4f3lA01\n1sd4A02\n2olvA01\n1xnfA00\n3cerA02\n2gf4B00\n3cuqB01\n3l4gC03\n2ghvC01\n3x3mA01\n2ymsD00\n4flwA03\n1ta8A01\n2vn8A01\n5u8uA03\n4rk5A01\n2xjpA02\n3oi8A01\n2k9yA00\n3ayvD00\n4npcA00\n2kn0A00\n3f14A00\n2z0uA00\n3usyA01\n4mtnA01\n1qgnG01\n2xrcC03\n4iwbA00\n2pefA01\n2jlnA00\n3gopA01\n3ffrA01\n3hsyA02\n2ob5A00\n3q5yA01\n4lksA00\n3fm0A00\n3fqmA01\n3t38A02\n2vqeE02\n2xtsA01\n3madA02\n2v1yA00\n1y9bB01\n1sczA00\n2e6fA02\n4bkjA01\n2r9yA02\n2outA02\n3ck1A00\n2qklB00\n4x0jA00\n4m1qA02\n2l69A00\n3cygA02\n4awdB00\n2q3zA04\n2it2B00\n3bb7A01\n5j90A00\n4ap9A02\n2f5zK00\n3iplB01\n5c5dA00\n1rwhA01\n4cyfA01\n2r6iA01\n1u6eA02\n3zrpA02\n5jk7F00\n3islA02\n4e9sA02\n3cg0A00\n3cinA01\n3tuiD01\n2hbvB00\n3piwA00\n2vapA02\n2l9sA00\n4it6B00\n3t49A00\n1rffB02\n2prxA00\n3s28A03\n2qsbA00\n4jjjA02\n4gafB03\n3bxwA03\n4z7eA01\n3b0xA01\n3etcA01\n1zyiA00\n2p6vA00\n3vyxA00\n4dguA02\n3o1iC01\n1wvfA04\n1h72C02\n5wqoB00\n1vb5B02\n5ep2A01\n2mzsA00\n4ybnB00\n3eh2A02\n2doeA00\n4dzgA00\n1ye9A02\n3k4iA01\n2g5dA02\n1zemA00\n2yhoE00\n4b60A02\n3o4xE01\n2qffA00\n1wcuA00\n5tvoA00\n3mbdA00\n3brvB00\n1wtjA03\n2lfhA00\n4i07A00\n2oojB00\n1ek9A00\n3flhB00\n3rwxA01\n3wadA02\n2guwC02\n4m83A01\n3x0uB01\n3mdqA01\n3swfC00\n5c5oA01\n3trgA00\n1aoeA00\n2hv8D00\n3k8aB00\n5k87B02\n4ehcA00\n4fchA01\n3wirA01\n1jz7A03\n3gf6A00\n2o1cA00\n3fp9A02\n3tacB03\n4hu2A01\n5u9cA01\n3ktnA00\n6bogA05\n1kkoA02\n2gviA03\n2vrwB02\n3gjxB00\n5b6cA02\n2oq1A01\n3im1A03\n3p32A03\n4a29A00\n4r6yA02\n3b34A02\n3k8kA03\n2k5fA01\n5azpB01\n2kz9A00\n2lxrA00\n5o9mA00\n3bguA01\n2xvsA00\n4lw2A01\n4er8A00\n2iepA01\n2pq7A00\n1umuB00\n1gzhB01\n2npsD00\n3tsoC00\n2d9yA00\n2p1pA00\n2xljA02\n2f6rA00\n3gm8A04\n4evfA04\n1t8kA00\n1um0A00\n2j23A00\n2x53S02\n3vk0B00\n2xqhA01\n1zlhB01\n1hykA00\n2iqjB00\n2hxiB02\n5jxtD00\n2yicA01\n3n2lF00\n1h6wA03\n1fhgA00\n3rl0h00\n5hnmC00\n3pddA02\n1bzkA00\n3qfcA01\n3zf8A00\n4x90A01\n4f4oC03\n3ixlA00\n3mopK00\n1darA05\n3otgA01\n3zqsA02\n2w5aA02\n2ggoA02\n1mzwA00\n4wk0B02\n2hs1A00\n2pmrA00\n1c4kA01\n4cidA01\n3uqcD02\n4pzkA00\n5g3yA00\n2o4aA00\n4ernA00\n1v95A01\n3hfwA00\n1bxoA01\n4g6tA00\n3lydA01\n3ulbA01\n2c0dA00\n4im0A04\n2i7uA00\n4z0zA00\n3g23A01\n5kbpA01\n5enqA04\n2nycA00\n5ojjF00\n2kvlA00\n2vqgA00\n1kmvA00\n2knaA01\n2xodA00\n5tmaA02\n4i3yA02\n5e4eC02\n3mzfA02\n5g2uA00\n4ydrA01\n2q7dB02\n1q9uA00\n2w42B01\n3rqzC00\n1dd9A03\n2je8A04\n4gd3R02\n3qguA02\n5a9uA01\n3ialA02\n2q9uA02\n3hisA01\n1vloA03\n2fmpA04\n2xheB01\n1jegA00\n1wjkA01\n2lfuA01\n3q91B00\n4h0cA00\n2qebA00\n1rifA02\n4q28A00\n4rlcA00\n4gn3N00\n3hnoA01\n4isvA01\n2cr8A01\n4mhlA00\n3mcbB00\n2z1nA00\n1wthD02\n1wmtA00\n4a1fB00\n4doiA01\n1qs0A00\n2z3zA02\n1bg1A02\n4bj0A00\n3rtxA01\n5lxxA01\n2d0oA04\n3kwlA03\n1rm6A02\n2dvjA01\n1sj1A00\n2mfqA00\n2ywiB00\n4kd5A01\n4fvaC00\n2egjA00\n4ak1A03\n5m49A01\n2ekgB01\n3v48A00\n3ezjG01\n4ao9A01\n1vq8E01\n3l8kA03\n2fsjA02\n3prbA01\n1ah7A00\n2qq5A00\n1s1fA00\n1wfpA00\n3p8cF01\n3qwbA01\n5di3B00\n5a0dB01\n1uw4A00\n1oedA00\n2hbaA00\n3n91A02\n2zyrA01\n3ux4A00\n1vemA01\n2v1nA01\n1waaC00\n4ua3A00\n3rrwA02\n3mz1B02\n2zatA00\n3d1nP00\n1w7cA03\n4guzA01\n4hzdA02\n3cwnA00\n2le0A00\n3kawB00\n2ofkA00\n2yeqA02\n1ng7A00\n4b93B00\n1ub0A00\n2pv7A02\n2rd5A00\n5xgtA00\n3fdbA02\n6blqA02\n1pyfA00\n2qzuA01\n3mxnA02\n4n0tA02\n5itmA00\n2ogjA02\n3akjA01\n2jc2A01\n3kyqA02\n4lesA00\n4wesB04\n4ht1T00\n3lltA01\n1hcnB00\n1tzbA02\n1y6xA00\n3bmvA03\n3zj2A00\n3t1oA00\n3ephA01\n1z8uC00\n3c3dA01\n3duzA05\n2welA03\n4gd3A00\n5e33A03\n1srqA01\n1z84B01\n4oy4A02\n5ksdA02\n3dsbA01\n1te2A02\n3h7hA01\n3vpbA02\n3hoiA00\n3cqlA01\n2ksgA01\n1nslA00\n2yv5A03\n4gkhB01\n3fgxA00\n2rgqB00\n2e7pC00\n4urpA00\n4fm9A05\n1ihuA02\n1nkqA00\n4ybaA00\n5itaA01\n1dj0A01\n3sqnA03\n2r31A02\n1q8fA00\n3ptyA02\n1uxtA01\n1ko7B01\n1nj1A03\n5th6B00\n3cuqC01\n6em3S02\n3hqiA02\n5u95B02\n4zohA05\n2q6qA00\n2wkbD01\n1nzeA00\n5hw4A02\n1cidA01\n1qwyA01\n3efaA00\n1vmbA00\n3hhdA01\n4ha7B00\n2vp4D00\n3a8gB01\n3osvC01\n3oc7A01\n1n9pA00\n4fazA00\n2nqcA00\n3fkrA00\n3zgxA02\n2ywmA01\n4e0pA02\n3kwlA02\n3kqiA00\n1sr8A02\n1e2tA02\n3bj5A00\n4h05B01\n2n7dA00\n2vnuD01\n4n82B00\n3qldB01\n3i5pA03\n1m5yA01\n5i3sB01\n2ictA01\n2xc8A00\n3euhD01\n4ypcA00\n2nz7B00\n3i3wA02\n2abyA00\n2ifxA01\n2kelA00\n1uirA02\n3rrcA01\n2gl5A02\n1xffA00\n1l1sA00\n1ku1A02\n4gc5A02\n3ialA03\n3mabA00\n4e8dA02\n1mmaA04\n2ho1B00\n4lpqA02\n2fnaA01\n3w15B00\n1xl3C00\n2af5A01\n1x66A01\n2fxmB00\n1urvA00\n2z1cA00\n1mw7A02\n1g5gA01\n1n13E00\n4kh3A00\n3sy8C02\n5hi4B00\n5lszA00\n3h95A01\n3vtaB03\n4ezeB00\n5ovoA00\n5bpbA00\n1zmaA00\n3er7B00\n2k9kA00\n4uiqB00\n3t5vF01\n2l8oA00\n6elmA00\n1wouA00\n2w91A01\n1bifA02\n5ezqA01\n4r81C00\n3oiiB01\n4knuA02\n4hpnA01\n3mogA03\n5ljmA00\n2pfzA00\n3ondA02\n3dkrA00\n2d0iA01\n3o8qA02\n3py9A03\n3tnyA02\n1vpdA02\n4aefA03\n3c4sA00\n1j8iA00\n1s2oA01\n4hfiA01\n2biiA01\n3dfuA02\n4r16A01\n4qnnA00\n5i7wB01\n1pu6A02\n4hdjA00\n2qt1A00\n4wndA00\n5tf2A00\n6bogA04\n2k0zA00\n3lkbA02\n5d38A00\n4wovA01\n4zoxA00\n4mlzA01\n2eo1A00\n4bhbA01\n2g0bH01\n1svmA02\n1h44A01\n2jj7B02\n4k7bA00\n4lrtB01\n2jgpA02\n4d8mA02\n3bzwF00\n2kwyA00\n3ptaA03\n4wjqA00\n3cyjA01\n3wkyA02\n4z3xA03\n2zw5A01\n1xi7A00\n2lefA00\n4loxA02\n1o9gA02\n2xwxA02\n1u7nA00\n3k6yA02\n3fmeA02\n2zvbA02\n2vl7A03\n3op9A01\n4au8B02\n2zj8A01\n4q11A00\n4x28C02\n4af1A02\n4rz3A00\n2iw3A05\n5c4yA00\n4pf3A00\n2cb4A00\n2mjnA02\n3uitA02\n3ruvA03\n3gv0A02\n5v8sA01\n4dhgD01\n4dnxA01\n4wbxC01\n4oltA02\n3d9xA01\n3ethA03\n3tfmA02\n2rhqB05\n4ecgA00\n1b7yB01\n3ej9E00\n2w5fA02\n3jvaB02\n1o0lA00\n4hy3A02\n3v33A00\n3or1C01\n3p8bB01\n5whuC00\n1u8xX02\n4ofaA00\n2xgjB01\n3pvzD01\n4n77A00\n3tvjB01\n2w02B02\n1qhxA00\n1ip9A00\n3voqA00\n3hnxA00\n2iw3A04\n2dg7A00\n2di7A01\n3aowA02\n3v9fA02\n1us5A02\n1pc3A01\n4nzuL01\n4zdfB00\n3tjyA00\n4qglA00\n2cr6A01\n3puqA01\n2xy2A02\n2y6xA00\n3eeqA02\n1ltlA01\n2daqA00\n4dvcA00\n3fflA00\n5uj6A01\n1y9zA02\n4lqeA00\n1fo5A00\n5f42A02\n2w16B01\n1zh8A01\n2hy7A01\n3exzA00\n4c98A02\n4oevA02\n1xneA00\n1krhA02\n4yk8B00\n2duyA00\n3oq3B01\n3cqzH00\n4d2kB00\n2hzcA00\n3rsbB00\n1juvA00\n5vfbA03\n4uzsB01\n3rsjB02\n4bxoA02\n5w83A00\n2nocA01\n4nc6A03\n3tfmA01\n2fe3A02\n1x9nA02\n4i3gA02\n3jz3B01\n5gipA01\n2bujA02\n4zs9A02\n3iuoA00\n2ltnA00\n4rqaA00\n1gr0A01\n2uytA02\n2izxB00\n3kh8B01\n4h7nA01\n1z0xA02\n4f06A02\n3esiA00\n5toqA02\n2e67A00\n3eozB01\n3vlaA01\n2w8xB00\n3obiA01\n1trlA00\n2petA02\n4r9oC00\n2e6fA01\n4d70A00\n3n9xA02\n1fc4A01\n1vk8A00\n4murA00\n4en2A02\n4e72A02\n3l6uA01\n3e8xA00\n3qwlA01\n2ojwA02\n3ljwA00\n1tkeA02\n4aycA02\n2qnkA00\n4x84B01\n2nqlA02\n4uf7B00\n2a3lA02\n2xuaA00\n4i3gA04\n2y5dB02\n2e44A01\n3styB00\n2il5A00\n4djbA00\n3i5qA01\n3ll3B02\n4wy8B00\n2zf8A02\n4pliA00\n5g0aA01\n1ygmA01\n2gujA01\n1yb5A01\n2kxjA00\n2icyA01\n5j8qA01\n3irpX02\n2flhB00\n2l3nA00\n4bbqA01\n4ps6A00\n4aumA02\n2k35A00\n4f3mA00\n4kvfA01\n5xztJ00\n3hn3D01\n1qwgA00\n4wnoA02\n5te1A01\n3fi9A02\n2i6eA02\n4e21B02\n2qu7A02\n1nstA00\n4d9bC01\n1gmiA00\n1orfA02\n3c0wA02\n1vomA01\n1mswD04\n3dvoA00\n2ditA01\n3n0aA02\n2qziA00\n2i5fA00\n3bwsA02\n1g5hA01\n2x32A00\n4jhyA00\n1mtzA00\n1se8A02\n3bu3A01\n3rjvA01\n1wn2A00\n3gnjA00\n5xymT00\n1su1A00\n3nywD00\n2hxsA00\n3madA03\n4hi6C00\n3oc4B03\n1r73A00\n1m1hA01\n4ap2B03\n4xomB00\n2jkhA01\n2llvA00\n3o7wA00\n3qw3A01\n1s5jA05\n5h66A00\n3i08A02\n3ol0B00\n2dt7B01\n1xv5A02\n3fdjA01\n3qraA00\n1we6A00\n3rj2X00\n3tbiA00\n1wrdA00\n2pvuA01\n2iw1A01\n5isuA03\n5jzjA01\n1mb3A00\n4dziB00\n4fbcA01\n2dknB00\n3veaA01\n1hulA00\n4lr2A01\n2ktaA01\n5itqA01\n3hr6A03\n1milA00\n2apcA01\n5lxeA00\n2p35A01\n1ht6A01\n2h6dA01\n1vajA01\n3s6fA00\n3agkA02\n4pswA03\n1tviA00\n1wihA00\n3ushB00\n5aqbA01\n1zi7A02\n2v6kA01\n1tdjA03\n3qi7A02\n3ojaA03\n3hbmA02\n3ihjA01\n1ybeB01\n2qyzA01\n4xdeA01\n3l6bA02\n2qlwA01\n3gcgB00\n1uelA00\n4hjhA02\n4jb3A01\n4hvzA02\n4gieA00\n2p5mA00\n1xodB00\n3p0bA02\n2waoA02\n3i4fC00\n2zzjA00\n4hseA02\n3is5F02\n3h0oA00\n3gasB02\n3ekgA02\n4dx8K01\n4kkrA02\n3lvuB00\n4za1C00\n3pf2A02\n5lwxA02\n4he8D00\n2qtcA03\n4wwhA02\n3o0fA02\n3cafA01\n1yiiA01\n2greF02\n2yw3E00\n1of5A00\n1yuzA02\n4b4dA01\n5nzxA01\n2g7cB03\n3tu3B02\n1sffA01\n2p38A02\n2ys8A00\n2jahA00\n5bq1A00\n3mduA01\n1f15B00\n5vg3A01\n1fi2A00\n1x6vA02\n3iv6A01\n1y6zA01\n2cirA00\n4lvfB02\n4hjhB01\n4l9dA00\n1gmuA02\n2vqeJ00\n1g1tA01\n2zxiA04\n4my5A02\n3b59A02\n2a1jB01\n5t5iD00\n3nzzB00\n3tcmA02\n2eb4D00\n3dbxA02\n2a7lA00\n5drbA02\n4q6bA02\n3nvwB02\n5ldgA00\n1gvfB00\n4jpsB02\n4g9qA00\n3bqyA02\n3w1oA00\n4etnA00\n4aefA01\n4esxB01\n5t5lA00\n2xg7C00\n1zlhB02\n4la2A00\n2himB02\n4sgbI00\n2gu1A01\n5i7pA02\n4binA01\n2hf2B02\n3razA00\n3nb2A04\n3ptaA01\n1u14A00\n3o5qA00\n2dsxA00\n4ze8A02\n1jkxA00\n4cvuA05\n3o0dA00\n1qjpA00\n5c8qB01\n2kncB00\n5m29A02\n3bchA01\n1w5rA01\n3wwhA01\n4id2A00\n3lcyA02\n4mvfA01\n4buhA02\n5le5b00\n4gvoA02\n3u12A00\n5d1mB01\n4mo4A02\n2d37A00\n1ehiA02\n5tkzA00\n2wjsA01\n3a9zA01\n1mkeA00\n3px4A04\n1n62A02\n1yb5A02\n1xdyG00\n3mzlB02\n3pgvB01\n4a0gC03\n2fp1B00\n3ntuA01\n4v0hD00\n4goqA00\n3ckcA02\n5kshB01\n3wurA00\n3oxhA01\n4u04B01\n5xdcB01\n1u5kA02\n3cp3A00\n3hvyA01\n1h0hB02\n5wceA03\n4ljyA02\n2f23A02\n2l14B00\n1l1eB00\n1weyA00\n2zejB02\n3rr6A02\n2ghaA01\n4okcA01\n3qqaA02\n4q66D02\n4fd7A00\n3qneA01\n4pkcC00\n3pplB01\n2bcqA03\n4eo0A00\n4ryaA01\n3cmbA00\n3og6B02\n2xquA01\n4u1eI00\n4rvcA00\n4qiwA04\n3mvcB00\n1w5sA02\n1x6iA00\n1b4rA00\n3stqF00\n2ox9C00\n2ozvA01\n2xsgB01\n5lvoA01\n3da8B00\n4mouC02\n1mkcA00\n3ttcA04\n2x7qA01\n3kyfA01\n4i5sA01\n4wtxA00\n3i6vA02\n4m55E00\n2odfB01\n1pswA01\n3ooqA02\n2z43B01\n3mp6A05\n1w1wE00\n1w70A00\n1rsgA02\n2p8vA00\n4k8lA01\n2j3sA03\n5t1dB00\n2e1mA04\n1dgwY01\n2r85A02\n2r7dA03\n1x7fA02\n3u4yA00\n3kyjA00\n5b8iA00\n4muoA02\n3ggdA00\n2cz9A01\n2r75102\n4narA01\n3egrA00\n3op4B00\n1wyxA00\n5ik4A01\n4layA02\n5tj3A01\n2krxA01\n2vk2A01\n4lo6B03\n2mlbA00\n1pj5A02\n2a1jA00\n3f1sB02\n3ehhA01\n3stbC00\n2iimA00\n1qq5A01\n4yuvA01\n2jxtA01\n4bucA01\n4jx0A02\n1v9sD00\n5m04A02\n1griA01\n3kxkB01\n1exbE00\n2i71A01\n2wj5A01\n1yc9A02\n2g0wB00\n3obeB00\n4nufA02\n1v1aA00\n2x5oA01\n1rhcA00\n1n00A03\n2o3gA00\n1h72C01\n3bc8A01\n3fovA00\n3luiC00\n2ze6A01\n1iooA00\n1aohB00\n3aekB03\n2zayA00\n3cswC01\n3i9v103\n3tszA02\n5b1aI00\n1dj8A00\n1h9mA02\n4j6cA00\n2pstX00\n4m4pA04\n4o9kA00\n2pm9A01\n4ywaA00\n1ewqA02\n2ozjA00\n3h2gA01\n3ce9A02\n1xsfA00\n4wkgA02\n3lq6A02\n1n7sB00\n4kvfA02\n4zs9A01\n5cgqB01\n4u7aA00\n1k8kG00\n1wyyB00\n4egcB00\n3t5oA03\n4bszB00\n5ji7A00\n4is2A00\n1vziA01\n2xdpA02\n3mizA01\n1y2kA00\n2hlsA01\n4k3cA01\n1kqfB02\n1dbhA02\n5enqB05\n2oznB01\n1k1aA00\n1pujA01\n4hyeA01\n3ezjA02\n3cf6E02\n2fg1A00\n1vziA02\n3m7aA01\n4pswA02\n2hcnA03\n3l4gM00\n3fzyA00\n3ke3A01\n2dc1A01\n1zcjA02\n4hn9A01\n1n02A00\n3au4A04\n2i4aA00\n1fobA00\n3v2uC02\n1uuyA00\n3pftA00\n1pgjA02\n4r6uA02\n3a2zA00\n5c8qB02\n3r2vA02\n4pklA00\n2pv4A00\n3getA01\n3jv3A02\n1tf5A03\n3o4hA02\n4mb0A00\n2k3qA00\n1nt2B02\n1c8cA00\n4afmA00\n5tjgE00\n2wi8A01\n2dplA02\n1js8A01\n2jw5A00\n3vibA00\n1ve4A02\n5h8wA04\n2fs2B00\n3kgyA00\n2yv9A01\n5gutA01\n5jk6B00\n1vq8W02\n2inuA00\n5a3lA00\n2ebbA00\n3zyyX03\n4v0kB00\n3ii7A00\n3ekgA01\n1evsA00\n2dybA02\n3cm1C00\n1y14D01\n2f1nA00\n3edpA02\n3od1A02\n1yqgA01\n3sy7A01\n2yv4A00\n3dy0A02\n2ri7A02\n4gx0A02\n1rkuA02\n3i4oA00\n3k2tA01\n5wm1A01\n1q44A00\n4gzuA02\n3gekA00\n3byvA01\n3wgxB00\n1ux6A02\n2wlrA01\n4fe9A03\n3ecsD02\n2o1eB01\n4bllA01\n5b22B02\n3ldvA00\n4b4lA02\n3agxA02\n1ksiA02\n4zemA02\n3tytA02\n1ecfA02\n4pw0A00\n1rk6A02\n4joiA00\n1uarA02\n4oo1I01\n3lhlA00\n3pmiA01\n1e9rA02\n5aykA05\n5uptA01\n3ledA01\n1ss3A00\n3fy6D01\n2yx1A01\n1b93B00\n3uv5A01\n3vp7A00\n4w9rB01\n1lmlA03\n3zgjA01\n3thxB05\n3krbA00\n3l12B00\n3n70A00\n1gs5A00\n5f6eA00\n4nmyA01\n3netB01\n2bgoA00\n3fzgA00\n4yarA03\n1wv4B00\n4lr4A01\n2hq7B00\n2qswA00\n3l56B02\n3cl3A01\n2mgvA00\n4gniA02\n3jrpA01\n2gttC01\n1ucdA00\n3un6A01\n5h66B00\n1vheA01\n4qftA00\n4n0tA03\n3deoA02\n3eqtA00\n2jh1A01\n3c0fB00\n1tplA01\n4mocA02\n2ju4A00\n4qb3A01\n5ds2A00\n3gu3A02\n3gn5B01\n1hxrB00\n3iteB02\n3it4A00\n5if3B00\n3dd9D01\n3s5jA02\n1gk9B03\n1yjdC00\n3ajvC02\n3w1bA02\n3m9wA02\n3d4eA01\n2ww8A04\n2hmaA02\n4bs9A04\n3id7A00\n4ewcA01\n1io2A02\n1qv9A01\n2x3gA00\n5gudA03\n1pxvA00\n2gboA00\n1rkqA02\n3lrtB01\n2xllA02\n3ajcA01\n5ao9A00\n3m9qB00\n4y0cB00\n1pfxL01\n5gutA02\n3ea6A01\n2q7dB01\n4gbmA00\n2ieqA00\n1p1tA00\n2nsqA00\n2wkkA00\n5ktaA00\n3ilsA00\n5bv3D01\n2fqxA01\n2o1bA01\n5i9eA02\n5bpdA02\n3ehdA00\n4aybC02\n3dxlA02\n2a2cA03\n3d9xA02\n3mtvA02\n4zbwA02\n4bfgA01\n3a5pA00\n1knwA01\n1wgpA01\n4fvyA01\n1uxtA02\n3kbqB00\n2zcwA01\n1o9iA02\n4nn3A00\n4ivaA02\n1sluA00\n1tq1A00\n1sqjB01\n3kifD00\n1d2fB01\n4pj2A00\n2juoA00\n1c4kA02\n1iq4A00\n3k0bA01\n2wyoA03\n2vk2A02\n4q7kA00\n3l2pA02\n1d2nA01\n4nt9A00\n1uvjA04\n3n2qA02\n3ajxA00\n1kx5B00\n3eixA02\n2qazD00\n5g4dA01\n4ml9A00\n4f67A01\n2rc8A01\n4l1dC00\n2dkaA01\n4wksC01\n2okmA00\n2lvwA00\n2mqaA00\n1qwyA02\n1vjqA00\n1jfwA00\n3sebA02\n2x1qA00\n4xcvA01\n2dawA01\n2a6qB00\n2gc5A01\n2cy5A00\n4h8wC01\n4c4oA02\n2c0zA01\n3q64A00\n1n9wB02\n2gs9A01\n3bzyB00\n4mitG00\n1c4oA01\n2qgmA02\n3m7pA01\n5cnxA01\n3sjnA01\n1vq8S00\n5erxA01\n2ebmA00\n3egoA02\n3c1qA00\n2pzhA00\n5f4cA00\n1wy6A00\n4g22A02\n2gumB01\n5o45A00\n1knxE02\n4nyzA03\n3kxaA01\n2oqzA00\n1rd5A00\n1i17A00\n1c96A01\n4wreA00\n5lx6A00\n2wntA02\n2mkhA02\n3u3wA01\n2oap101\n1zqwA03\n3t3wB00\n2df7A02\n1wz9A01\n5jenA01\n5agvA02\n2bzyA00\n2fgcA03\n1avyB00\n5k98B00\n3s24F02\n2rq6A02\n3loyA02\n3bl9A02\n1s7mA03\n2yqgA00\n5f0xA03\n1n7xA01\n3efgA00\n3r1vA00\n4n2kA03\n5w8oA00\n1u0mA02\n4izaB00\n2hcjB01\n2bzvA00\n4n7rC02\n1b4pA01\n1t3bA01\n3q8dA02\n2azeC00\n3u83A02\n2nt0A01\n3ooqF01\n3lnnB03\n4rr2B00\n1y88A02\n1nxiA00\n3mvkD01\n3ot9A01\n3llmA01\n3c6kA01\n1gjzA00\n4rg8A02\n3a09A01\n4inzA00\n4v03A00\n1s3eA02\n2fp4B03\n3v8hC00\n4ajyC00\n5kukA02\n1wkqB00\n1amlA00\n1htwA00\n3pjpA02\n1vjhA00\n4z9fA00\n1e2wA01\n3bgaA01\n3rznA01\n3h36A00\n1mjfB02\n2gmlA01\n4ro9C01\n1h03P01\n4im8A02\n3islA01\n2w50B00\n3venA01\n1iw4A00\n2w9mB01\n3ro3A00\n1nscA00\n2dyjA00\n1b9mA03\n2yg5A02\n5coyA00\n1r3eA02\n1xebA00\n3hjlA01\n2o4cA02\n4iscA00\n4xxuA02\n1m93B01\n4dzdA01\n3nytA01\n2zvfA02\n4mozD00\n1dqgA00\n2pgsA02\n3f3bA00\n3k7dA02\n2xkrA00\n4nhoA01\n2o57A01\n3f7xA00\n4aumA01\n5ciyA01\n3r6uA01\n1us0A00\n3fvqA01\n5u47A01\n3maeA00\n2b1xB00\n1vb5A01\n2xauA03\n2iutA02\n3bgaA02\n4o6vA00\n2c2aA01\n2vf9A00\n2dceA01\n1kqfC00\n1v70A00\n1a8lA01\n5bp3B00\n2ychA03\n2wqrA03\n4apmA01\n4ze8A03\n1x3zA01\n1gmeA00\n2q9uB01\n2jgqA00\n4gzuB03\n4dlqA03\n4fakA00\n3p0cA00\n3kg7C00\n3ihjA03\n1y74A00\n2fh0A00\n3lbmC00\n1z3eB00\n3kf8A00\n2q0xA01\n3m8oH02\n2ajrA01\n4q9nA00\n4eziA01\n3u02A01\n2v4dE01\n5jozA02\n4rlqB04\n3zd7A02\n5ljwB01\n4wk0B03\n3ia7A01\n3w9sB00\n5bncB01\n3ekiA01\n4fdbA00\n5kxjA03\n4w4oC03\n4ohxA02\n1y66A00\n1l8qA01\n4g12A02\n6bogA01\n1tqyB01\n3akhA02\n2jfnA02\n3eviA00\n3einA01\n1g55A01\n5o2dA00\n2vseA05\n2apjD00\n5o9fC01\n2ozeA00\n4nurA03\n2q7xA00\n3c4aA02\n2z4iB01\n3o12A00\n2aj6A00\n2vbfA02\n1ydlA00\n3u62A02\n4hsqA02\n2qhoD00\n1et9A02\n1v4pC01\n4qqdB01\n4jrfA03\n2kckA00\n3it4D02\n1nf1A02\n3t7lA00\n2r15A02\n2h1iA00\n3hl1A02\n1nr4C00\n2yk4A01\n4f02D02\n5xyig01\n3f42A00\n5i2mA02\n2q24A00\n3lo3a00\n4o7qA00\n4g2tA01\n5dm6J01\n3k1zA02\n1pucA00\n1e19A00\n4eunA00\n4p98A01\n2imlA01\n1v43A03\n2r5uC00\n2a6tB01\n3ddmA02\n2w02B04\n2kt9A01\n2b1lA00\n2ytyA00\n3mtsA00\n3uueA00\n2puzA02\n2d9oA00\n3rc3A03\n4b46A02\n2wpvB01\n5i29A00\n3qatA01\n2nvaA01\n2yweA05\n3zudA00\n2fj8A01\n2q7rC00\n2avdA00\n3sz3A02\n4eo3A01\n2x7xA03\n1lk3A00\n2yucA01\n3jtmA01\n4e2gC00\n3m9qA02\n2zihC00\n3ilkA02\n2bdtA00\n5bj4A01\n3buxB03\n2q2tA03\n3no8A00\n2cjsC01\n3n5mB01\n2fpeA00\n1nrjB00\n2diuA01\n2lbwA00\n2r7aA02\n3kgkB00\n3clkA02\n4m1bA00\n3lxqA01\n3ijlA02\n3tahA02\n2o8rB02\n4wbyA02\n3ckcA01\n4pyhA02\n3dplC02\n4bpmA00\n2j76E00\n3e9nA00\n2o8lA02\n1k3rA01\n3nrtB00\n1gm5A05\n4xloA02\n3iupA01\n3l0gB01\n1sgvA02\n3hjlA02\n1lamA01\n4x5mA00\n2g7hA01\n3njaA02\n3q3eA02\n1wu9B00\n3cbfA01\n1me8A00\n1urqA00\n4u8uN02\n4ghnA01\n3ebyA00\n3caoA00\n5c5oA03\n3e6pL02\n1vlpD00\n5nt7A00\n3n6zA01\n2uzgA00\n5gjoB01\n3ss7X01\n1mxgA01\n4ynmB00\n2mswA00\n1ub1A00\n3vliA02\n4cyiA02\n1rcqA01\n2rp4A00\n1bi6H00\n4iaoA01\n2ddhA02\n4iilA02\n3o2rA00\n2kt2A00\n3d9aH02\n4g6iB01\n2ew0A00\n3b1fA01\n4fchA02\n1kjqB02\n3mkhA02\n2x8nA01\n1fd3A00\n2jhnA03\n4ffuD00\n2kjgA00\n2ggrA00\n2gwcB00\n2pnlA00\n3c4bA01\n3apsA00\n1ed1A00\n1wz2A05\n2gtiA02\n3oryA02\n5h6kA00\n1r4xA01\n4i6jB01\n4qqtA01\n3mc3A00\n3d7nA00\n4r3lA00\n3bq5A01\n4ua6A00\n3pukA01\n2pv7A01\n2dadA00\n1ia9A01\n1twfK00\n1zbpA01\n1cjaA01\n3eh0A03\n4lgdC01\n3r0uA01\n4iylA02\n2boyF00\n5e44A01\n1w0pA03\n3zyyX04\n4mxwD00\n4e9xB01\n3s6dA00\n1ov3A01\n4dwdA02\n5oom100\n3dkqA01\n4jcqA00\n5jx2A02\n2b97A00\n3a2eA00\n3dcpA00\n1kmiZ01\n1bkpA00\n4g4gA00\n3tzyA01\n3qhqB01\n1fn9A02\n2ecuA00\n4pdcE00\n3rnmF00\n2qcuA03\n1f0xB02\n3q9dB01\n5ktkA00\n1xawA01\n3ucgA00\n4ydzA00\n4iqzB01\n1yx5A01\n1u8sA01\n2fb0A00\n1pbgA00\n1ns5B00\n3rbsA02\n3fhwA00\n3nfqB02\n5ijwA01\n3dboB00\n4l4eA00\n1khiA02\n2g1pA02\n4emtA01\n5ehmA02\n1i1wA00\n2j4xA02\n3utmB01\n2iswB00\n1kl7A01\n1pxzA00\n4i1dC01\n2bpsA00\n5jajA02\n3n71A03\n3fdbA01\n2qmwA02\n3bwgC02\n3bd1A00\n4nsxA02\n2dnzA01\n1e7lA02\n1edqA03\n2a6sB00\n4rhaA00\n1r29A00\n5xtfA00\n1jkgA00\n4hojA01\n1vg0A02\n4aw7A02\n1ogaD02\n1t77A01\n2e55A00\n3ii1A02\n3ct5A00\n2exrA01\n3pfgA02\n4puiB01\n4ruvA00\n4rmoA00\n1z2zA02\n1h6gA01\n4x3lA02\n2jdjA00\n3by6A02\n1sxeA00\n4e4yA00\n3rf9B01\n1vb3A01\n1fyhB01\n1x2iA00\n3eofB00\n3kciA00\n5ch8A00\n2yi9A05\n1tq5A01\n3flvA00\n2r9iA00\n2hrzA01\n3i9v600\n4ohnA01\n4x8qA01\n1m15A02\n3ez9A02\n1yf3A01\n1uxyA03\n3ifqC00\n1ro5A01\n3pnzC00\n5oobJ00\n3p9aF00\n2ckwA02\n4dkcB00\n2zzeA03\n3cb2A03\n3e9fA00\n1tafB00\n2x7iA02\n4iyaA00\n4pfiA00\n2rinA02\n1l8nA02\n4unuA00\n3l6dA01\n1xhbA01\n1df0A03\n2uvfA01\n2j4mA01\n5u4qB00\n4ak1A02\n3e4vA01\n2pt7A02\n2ebfX01\n2f1cX00\n2lnvA01\n1vf1A01\n5iyzD02\n2nrhB01\n4o6yB00\n1jqlB00\n4jdmA02\n1v2dA01\n1xkzC00\n2z6oA00\n2vfxD00\n3gazA01\n3gazA02\n2ia7A00\n5co1B02\n4m1aA00\n1xjvA02\n3ly1A02\n3p5jB02\n4pdpB02\n3gd7C01\n3rfwA02\n1wpbB02\n4pvkA01\n2a15A00\n4kc5B01\n2aq5A01\n2e3lA00\n3hhyA01\n2awiF02\n3e38B01\n2p09A00\n1fjrA02\n1oisA02\n2dy1A03\n2calA00\n2ozgA01\n4a4zA02\n3ciaA04\n1p5dX03\n1ti5A00\n2kdxA00\n1kyfA02\n2eggA02\n5fcdA00\n2knjA00\n3qw9B00\n3qr8A02\n2enyA00\n2opkB01\n3s2rA01\n4ptsB01\n3cqcB02\n2wsuB02\n4gc8B00\n4cqbA02\n2o0tA01\n5dc4A00\n2l8kA00\n3douA00\n3ehrA02\n3g1jA00\n2w0gA00\n4af3D01\n1t71A00\n1jmuB04\n5gotA00\n2l25A00\n2quyF00\n1n0uA05\n2nrkA00\n2zktB01\n2rt3A00\n2z6vA00\n1j20A02\n1pd3A00\n4ybmA01\n3hkoA02\n2eklA02\n2p90A02\n2furB00\n4xwwA03\n4f98A00\n4x2cA00\n4jniU02\n5jtwB02\n1x32A00\n4hn9A03\n2ph7A01\n3uswA02\n2cxaA02\n1uynX00\n2xrbA04\n1no4B00\n2dhzA01\n5torB01\n3b0xA04\n1w61A01\n5ksdA03\n2yevB02\n2ybyA02\n3qvoA00\n4wesB01\n1ccwB01\n4ammA00\n1smoB00\n4nhbA00\n2pc1A00\n2ddfA00\n3e99A00\n2wiyA00\n5x8rm02\n3d9aH01\n2fgxA00\n1yllC02\n4zk8A00\n4njmA01\n3pu5A01\n1cttA02\n2gh9A02\n4yz0A00\n2n59A00\n4fu0A03\n1f2uA00\n3oonA00\n5fxdA01\n2l1aA00\n1mntA00\n4r7vA00\n4k8gA01\n5fu6E00\n1kolA01\n3qr8A01\n4usaA04\n2zb9A02\n4emiA03\n3vmaA01\n2qmxA02\n2darA01\n1n0uA01\n4h18A00\n2azwA00\n1eggA00\n3hwrA02\n4mnoA00\n3d2eA06\n4r1kB00\n2ebeA00\n3kztA00\n5ly3A01\n2zcxA00\n4yapA01\n5cecA01\n2uzzA02\n1ollA01\n2b8mA00\n4zi6A01\n4s12B01\n3natA01\n3e05B00\n3nkgA00\n4mybA00\n4aidB02\n2c5aA01\n1q8dA00\n1mcpH02\n3rv1A01\n1yd9B00\n3avrA02\n1jg5A00\n5fjqA00\n3vnnA00\n3nraA01\n4z3gA00\n2iv2X02\n4f06A01\n3bmzA00\n2dnlA01\n3ktdC01\n3erpA01\n4zznA01\n2bjdA00\n4g5aA00\n4ogdA02\n2cocA01\n3f7lA00\n1jb0E00\n4gv5A00\n2eg4A02\n2oseA00\n5xd7A01\n3djlA03\n2gu9A01\n4bqnB01\n2y1sA00\n3icsA03\n3wg9A02\n4k2nA02\n2btqB03\n3erwC00\n2wzpR01\n3ve9A00\n4zv9A00\n3brkX01\n4yj4A00\n1r2jA02\n4zzfA02\n2p62A01\n2vh1A01\n4nqwA01\n2eqbC00\n2ygqA02\n1wosA03\n4yqzB00\n2v7qJ00\n4f85A00\n2qwoB00\n1kx5D00\n4d0nB01\n4zpjA01\n2bykA00\n3oaaA01\n2crqA01\n3jamf00\n1b8tA02\n3ogzA01\n1a0aA00\n2loqA01\n1qr9A00\n2ft0A00\n3gonA01\n1owwA00\n1zatA02\n3g3tA00\n3dpuA01\n1i1nA00\n3qexA06\n3tktA00\n1v5rA00\n1poiA02\n2m38A00\n2od6C00\n1cb6A04\n3vtoQ02\n5er6C00\n2oo4A01\n3snoA01\n1iv3A00\n3rlgA00\n3p9yA01\n2v9kA04\n4khbC00\n2q07A01\n1xrtB01\n4o4vA00\n3gmfA01\n2bm8B02\n2zw2A00\n1w07A01\n2j5bA02\n2pv1A00\n4d3tA01\n2dvmA01\n4aw4A03\n2vxgA02\n4yuyB02\n2dskA00\n2dyqA00\n2f7aA01\n4jrrB00\n2geyB00\n3lufB01\n2d4gA00\n4u13A00\n2i5gA00\n2e7yB00\n3tklB01\n3ceuA00\n2epiB00\n3cwvA01\n3e7qA00\n5dzeA00\n3p1aA02\n3guvA00\n4bfgA02\n2rj2A00\n5bpkA02\n4nheB01\n2mcfA00\n2bu3B00\n2qyuA03\n5vi4E03\n5ctmA00\n3k17A02\n3b77C02\n3rgfA01\n5lauA00\n2ynmC02\n5f82B00\n5aarA00\n3gonA02\n3oufB00\n3fxqB02\n2driA02\n3dgpB00\n3u4vA00\n2o3iA02\n2f3xA00\n4g65A03\n4r0kA01\n1xruA01\n4ii2A06\n5in4A02\n5fbfA00\n3igzB01\n1omoA02\n4c12A02\n3po1B00\n4cydB01\n2kafA00\n2i46A00\n1pl8A02\n3o69A00\n3pqaA02\n2itmA01\n4p9tA02\n2d1pB00\n1k0hA00\n4lypB00\n3enuA00\n1o69A01\n3viiA00\n4f9cA01\n1uixB00\n1kw3B01\n3onmA02\n4ovxA00\n4ohjA02\n2i00C01\n2ot2A02\n4g2aA02\n1g8fA03\n3hpxA01\n6bk0A02\n3lovA02\n2w02B07\n1v7zA00\n1zxtA01\n4dkjA02\n3fynA00\n2vf1A01\n1x9nA03\n1gqeA01\n2yb6A00\n1h7dA00\n1xubA01\n2ljpA00\n2zpaA01\n3k1sB00\n4hjhA03\n3bk7A01\n2vigA01\n3g9rA00\n5da5C00\n1a0iA03\n2v8pA01\n1oxxK02\n4rlyA00\n4g2nA02\n3eslA01\n1a3wA03\n2z7eC00\n3m6jA01\n1se0A00\n4h59A02\n2xryA03\n1jcnA00\n1zoqC00\n4jvcA00\n2ezvA01\n1s7iA00\n4u7iA00\n4fo0A04\n4rljB00\n5bzaB01\n5jdjA00\n3u1xA00\n3cioA00\n3nfwA00\n4iw9B01\n4ncdA01\n3s6pG00\n2c6uA00\n3db5A00\n4wihA01\n1cscA02\n3a9bA00\n3vutA01\n1vr9A01\n4mj7A00\n1z45A03\n2qmiA01\n1i4wA01\n1pp9J00\n1dc1A01\n3c7fA01\n1g2rA00\n1mvlA00\n2wtgA00\n1vd4A00\n4iauA01\n3u23A00\n3ulkA02\n5tkyA05\n3tuiA00\n4zgwB00\n3dz1A00\n5bnzA02\n1qz9A01\n2ej9A01\n1ft5A00\n4jqpA00\n4eq3A01\n4emyA01\n4r4mA00\n4hp8A00\n4jysB00\n1q33A02\n3kxpA00\n1qklA00\n4go6B02\n5dnyA03\n3wa8B00\n2gs5A01\n4rajA00\n5d79A03\n1k66A00\n4zocA02\n1r69A00\n2lcqA02\n3sj5A00\n4mz2A00\n3mduA02\n5cdkA00\n4mmoA01\n3ua4A01\n4dciD00\n5d8iA02\n5cm0B01\n4u9cA02\n1qqp400\n2xczA00\n2fb6A00\n2l3oA00\n3tmpA01\n3cvgC01\n2qa4I01\n5fuhD00\n4e0qA00\n2vd8A01\n2arfA00\n2q8nA02\n2l81A00\n3v8bC00\n2hwwB00\n5axmB00\n3b8fB00\n2dt4A00\n2cqaA01\n4xqcA02\n5m6nA00\n4ascA00\n2e4tA02\n4f4hB01\n1pjrA02\n1r0rI00\n4bwpB02\n4lqqA01\n2jm4A00\n1pgxA00\n5aq8A01\n1es9A00\n2qupA00\n5jiwA00\n1xqaA01\n5xnlh01\n1qs1A01\n2no4A02\n4ihqA01\n4xcbD00\n5wkpH01\n2qy6A01\n2du7B03\n3u2uA00\n4k8yA02\n3qijA02\n3fzeA00\n1uwvA02\n4c2vA02\n4ij5A00\n3i99A01\n1c96A03\n1wmhA00\n2b5wA01\n2bogX00\n5tk8A00\n1ik3A02\n3wkyB01\n2vg1A00\n1l8nA03\n2pptA02\n2raaA00\n2llmA00\n3ctvA00\n1g29102\n1zkcB01\n3pivA00\n2l22A01\n2h1eB01\n3u3pA02\n3ic8A01\n4ar9A02\n4ydsA00\n3fm2A00\n2wlgB00\n2j8zA02\n1xqbA02\n2wdtC02\n2iu4A02\n5wrtB00\n3iavA01\n1ef1C01\n2z4iB02\n2lrqA00\n4ud4A02\n3kh5A02\n4ix9D00\n3cvgA02\n4fwgA03\n1gxuA00\n4oavB02\n2wqlA00\n2rfiB00\n3rfzB03\n4fzbC01\n1wmkA03\n4gm2A00\n2ck3H01\n2ou6A00\n3v7nA01\n3caiA02\n1t50A00\n3tmgB01\n4mllB00\n1lt3A00\n4q75A02\n3tviA01\n1hskA02\n3v09A06\n3kmaA00\n2yveB00\n2wr8A01\n4pteB02\n4k7rA01\n1wdyA00\n3erbA02\n2cpcA01\n3q6bA02\n3gemD00\n4ejsA00\n3pubA01\n2c9wA02\n3o4xE02\n4mgqA01\n2ixeD01\n2k0nA00\n1qy9A02\n3m0dC00\n3a9sA02\n1kaeA03\n4ekjA01\n2hsnA01\n3qa8A02\n2oz4A03\n3u4fA01\n3g0kA00\n2vfrA02\n5axgA02\n3zo9A02\n4y4qA00\n2rooA00\n2ptfA01\n4htlA02\n1vcaA02\n1miwA03\n1d4oA00\n3tw8A01\n4r16A02\n2a6hA02\n3wwlA00\n3psgA01\n2o1kA00\n3aeiA00\n3k1wA01\n2f40A00\n2h88B02\n1tnrA00\n4p22A01\n2w91A03\n3lyyA00\n4jhrB00\n3pdiB02\n2ra9A01\n2olnA02\n3thmF00\n2xw6A00\n3hd7B00\n4h0oA02\n2b3rA00\n4idoA01\n3kwdA00\n5wcmA00\n1pc6A00\n1bpvA00\n3m0rA00\n3vayA02\n2eqnA01\n3g7dA04\n3pshA02\n4h3kB02\n2nsfA01\n4iz6B03\n5c5rA00\n5xnlH01\n3mu7A00\n1by1A00\n5gizA01\n3hk0B02\n1mqsA02\n2dy7A00\n2r60A01\n4fcjA00\n1snnA00\n2oyhA00\n1ex0A03\n3mjfA02\n4a4aA03\n5gs7A01\n4whsD00\n3e21A00\n2in5A00\n3juiA00\n1k7cA00\n5teaB00\n2wyhB02\n1jmuB03\n2j49A00\n1gu7A02\n3nxhA00\n2fboJ02\n4mjeA01\n4lnpA00\n2g2qB01\n1c9kB00\n2d0oA03\n3r7aB00\n3vbaA00\n4ry8C02\n3u3zA02\n5l0nA00\n3goaA01\n4mpsA00\n2yj6A02\n4a5zB00\n3dmgA01\n3dx5A00\n2r0cA03\n1c96A04\n1zarA02\n2w4eA00\n2qzuA02\n1a7sA02\n1x60A01\n1pmhX00\n3ejxD01\n2vf8B04\n2kwzA00\n3ctpA01\n2lf0A02\n1zp6A00\n2jeeA00\n2k7qA02\n3l0oB02\n2chcC00\n5f2kB02\n1z9bA01\n1yq2A04\n3craA02\n3g85A02\n3hnwA00\n4i9fA03\n3dm8A00\n3v76A03\n5ew0A00\n2fq4A02\n3mhxB00\n3ohsX01\n1gklA00\n4ng0B00\n5dxxA00\n2ewlA00\n3rh7A02\n4rnyA02\n3nv1A00\n2lm4A01\n3ffrA02\n1evyA02\n3vskA02\n1djuB01\n2d1gA02\n2e7gA01\n5xw3A02\n4egxD01\n1sh8B00\n4wzsB00\n2n1kA00\n4udqA02\n3vywA02\n3aczA02\n1vphB00\n3g8rA01\n3u9rB02\n3kd6A00\n2ikkA00\n2yreA01\n4bbrM00\n2lhrA00\n4noiA02\n2ayxA01\n4n78D01\n2vrsA03\n2xheA02\n3wgtA02\n3mgmA00\n4cbvC02\n3m1aJ00\n1cwxA00\n1cr2A00\n4g1lA01\n2ivwA01\n4qptA01\n2idoB00\n3p01B01\n1ufhA00\n2p57A00\n4pdyA02\n2rjdA02\n5i99A03\n3ozyA01\n4jxjA02\n1tfzA01\n1imjA00\n4xxhA01\n3oq3B03\n5hyvA03\n2qcxA00\n1zymA01\n4i2xE03\n2irpA00\n2lqjA00\n2kxgA00\n3io1A01\n4pirA01\n4b7yD00\n3pm9A05\n2a3jA00\n1vq8Q00\n4jzjD02\n4c24A00\n3ny5B01\n3pqiA01\n3r6dA00\n3p2nB01\n1mu5A01\n1qd5A00\n5vi4C02\n1wf9A00\n3p3oA00\n3vbiA01\n2rqcA00\n1nuwA02\n4j6rG01\n4b8vA02\n2wylC00\n4cuaA00\n1p16B02\n5xh2A00\n3utmA02\n4d02A02\n2nq2D00\n1wigA00\n3zpjA00\n4gbjC01\n2uxtA01\n2ch9A01\n2ccwA00\n2rrkA00\n3u8zD02\n4ay7A00\n4kg0A01\n4l4qA03\n2rblA01\n4cu7A02\n1nu7D01\n2b9eA02\n3fljA00\n1vmjA00\n1vdwA02\n3lulA01\n5izbA00\n5mifA00\n3ha2A00\n4euuA01\n1hn6A00\n2ba0A02\n5aoyA00\n3blzA00\n4bi3A01\n2au3A04\n3sg8A01\n1qupA01\n2zcaB00\n5kmyA00\n4q6bA01\n1f0lA01\n3ddjA02\n1lmmA01\n1jovA00\n2b0cA02\n1npsA00\n4kn8A01\n3dxrA00\n4nk6A00\n1dt9A02\n1kyqB01\n3k5wA02\n4fevA02\n2v6eA01\n3lb6C01\n2f5gA00\n3mzoB00\n3k7pA00\n3gwoA00\n3oq4E00\n1narA00\n3ttcA02\n2lvaA01\n2bcoA02\n3blnA00\n4q63A00\n5wlfA00\n2zptX00\n3onqA03\n4e4tB02\n2mp2B00\n1x5oA01\n3vopC00\n2ztbA03\n2b1eA02\n3sg0A02\n3cxbB00\n4l57A02\n2vgnB02\n3h5iA00\n4j5xD00\n3mzwA04\n1je3A01\n5kwiA00\n4hvwA00\n2qr4A03\n1qzfA02\n3olzB02\n3m1uA01\n3l5iA01\n4h0oA01\n2ey4D00\n4ivkA00\n3obyA03\n4wlhA02\n4bbyA02\n3pasA00\n2yt4A01\n3qayA00\n4ecnA02\n1wh3A01\n2b0hA01\n2zaiC03\n1z6nA00\n3b9wA00\n4nt1D00\n1z1sA00\n5xdcA02\n2jzvA00\n2y0nC00\n2lksA00\n2zxpA02\n3g91A00\n3liuA01\n3qbvB02\n2vkjA00\n5m7uB01\n2pqrA01\n3fppA01\n1k7bA00\n4xfwA00\n3w0eA00\n2fgsA01\n2ljkA01\n1zu2A00\n2dgdA02\n1x74A03\n4xr8H02\n4dddA02\n1b89A00\n3vi6A00\n1vf7A02\n1s68A01\n1te2A01\n3ab8A00\n1uhvA02\n2hx0A01\n3ocoA00\n5kdoB00\n2mamA00\n2lnhC00\n4jylA01\n3eo6A00\n1zi8A00\n2daeA00\n4wilB00\n3ozyA02\n4w9rA02\n4ak2A01\n2bw8A00\n2gs8A02\n3k4uA02\n1extA02\n2fp7B02\n2kjiA00\n4bndA02\n4lnwA00\n4nc2A00\n3cb2B01\n3dkzA00\n1gotG00\n3jsyA01\n4pmoA00\n3ihjA02\n1ew4A00\n1pcxA04\n3bniB00\n4zciA03\n4f7zA04\n4grhA00\n2dulA01\n1jm7B00\n3tglA00\n2qvwB05\n2dngA00\n3r2pA02\n4rdzB00\n3dk9A03\n3i47A01\n4dxfA02\n5jlaA00\n4irzA02\n1chmA01\n5groA00\n5c6kB00\n1whxA00\n4hetA02\n2a7kH02\n4lclA00\n1ornA01\n2e5fA01\n4tt3G02\n1k99A00\n3o0lB00\n1vctA01\n3r9vA00\n1x5eA01\n3irhD01\n2m1hA00\n1khcA01\n2r6vA01\n1wgtA04\n4r80A00\n2i7tA01\n3wgtA01\n2v6vA00\n1t72A01\n1ultA02\n3ig5A02\n2hqyA01\n3cp7A03\n4fs8A02\n3hi2B00\n3abzA03\n2vwiD01\n2mphA01\n4gywA02\n4eq9A01\n1bcpA00\n2oggA01\n4hljA02\n3dlqI00\n2klnA00\n4lw4D00\n2d1cA01\n2xwvA00\n4yyfA00\n2a5hA02\n3h7aA00\n1tj1A02\n3qoqC00\n2jhfA02\n4bbkA00\n5dufA00\n4b0fB00\n2auwA01\n3a0rA02\n3aihB01\n4x6gE02\n4qxfC00\n3me0A01\n1pguB02\n2yhwA01\n2qkdA04\n2lqrA00\n4locA03\n4luqC00\n3h2bB00\n3nv0B00\n4oi4A02\n3d03A01\n5lxtF03\n3r2tA01\n5kfzA04\n2jjnA00\n3g12B00\n2zcuA02\n3bwvA01\n3kf6A00\n5oomJ02\n3kw3B01\n1ehsA00\n2vo8A00\n1oohA00\n3h52A01\n2y8gB00\n2g0tA02\n2nwuB01\n2pr9A01\n2vqxA02\n3cetB01\n4ewgA01\n4oi9A04\n4n9wA02\n4i4tB01\n2trcP01\n3qdhA02\n2xvmA00\n2e50B02\n3tloA02\n3ossC00\n1otgA00\n3d00A01\n4gfiC01\n4e38C00\n1dynA00\n2fkjA02\n3fhmB00\n4ldvA03\n1g12A00\n1wz6A01\n4jxhA02\n4ylkA02\n4x2pA02\n2ajaA00\n4bs9A02\n2no4B01\n2d1sA03\n4ykcA00\n5jn5A02\n3wcnA01\n2b9vA01\n3eziA00\n5xkuA00\n3aiiA02\n5dnoA00\n1yrrA02\n1yb2A00\n4s1wB02\n5hfkA01\n1f4sP00\n3cegA00\n3aaaC00\n2rs7A01\n6az1M00\n4i6nA00\n4lejA02\n2hsiA01\n1ixhA01\n3abqB02\n4m82A00\n2hazA00\n4fhdA01\n3froA01\n5i0qB01\n2xskA00\n3outA01\n5i8fA00\n5d66A00\n3rm5B01\n3wisA00\n3gpkA00\n3cjpA00\n3tdnB00\n4y9iA00\n3kltB00\n4pz7A02\n4lmpA01\n2yv5A01\n3onqA01\n5he9A00\n3lw3B00\n2x06A01\n2r2cB00\n4zi8A02\n2kw8A00\n3ednA01\n3cueB00\n1af7A02\n1wbhB00\n2qkwB01\n5eokA04\n4n40A02\n2wvqA00\n4oq1A02\n2h00B00\n3kwsA00\n2zfuA01\n4xvxA01\n4chmB00\n2bi0A02\n4m5xA02\n2jbvA04\n3rmiA00\n5jhxB03\n2oqmB01\n4hfkB00\n2k6gA00\n3jz7A02\n4xkbA02\n1k3iA02\n1r89A04\n4g0xA00\n2a6pA00\n1lqtA01\n1mtpA01\n3r3eA01\n5uf2A01\n1kw3B02\n1kq6A00\n4a8sC04\n2a2cA01\n1zsqA01\n3kk8A01\n3aiaA00\n1usuB00\n1x4gA00\n4pswB00\n2q1zD01\n2p5gB01\n2b9eA01\n2zf8A01\n3nr5A00\n2zj8A04\n2mhrA00\n2waaA01\n4jf1B02\n2bngC00\n3zx3A02\n2p7nA00\n2mjfA00\n1fviA03\n2f3jA02\n1g9pA00\n2pmiA01\n3sucA02\n2c6qG00\n3fwbB00\n4memA02\n4jc0A02\n2yt5A00\n2ycfA02\n2f21A01\n3cjmA00\n3mydA01\n2lg1A02\n5uq6A00\n3hm2A00\n3p4lA01\n2hirA00\n4ef0A01\n1vdrA00\n3r4vA01\n1q1fA00\n4nv0A02\n1oi2A02\n3ucqA01\n3e29B00\n2gtrA02\n4w7sA02\n3bt7A02\n2yz2B00\n1tu3J00\n2wd6A00\n2kpmA01\n4inkA02\n3jamG02\n2i5vO02\n2j5vA02\n1hp8A00\n4kk7A01\n2ar0A01\n2e9xD01\n4yn3A03\n2yexA02\n1faoA00\n1atgA02\n1m0wA03\n2qg7D02\n5u3aA01\n3n3eB00\n2auwB02\n3mi6A01\n3l4gC02\n3iagC03\n3lafA02\n2olrA01\n2cwdC00\n2vsoF01\n2ac1A02\n3jrtA00\n5tuxA01\n4f55A02\n2pcrC01\n2l35A00\n3d3sA00\n1bf2A02\n2vpzA02\n2hbwA02\n2xomA00\n4immA00\n4il6X00\n4okiA00\n4ja8B00\n1bxoA02\n2ffuA02\n5kc8A02\n3s1sA02\n2rikA01\n2z5dB00\n4hl2A00\n5ijaA00\n5hciC00\n2j8kA01\n2odiA01\n5gutA03\n3h5nD02\n1eq2D02\n3uuxB01\n2pbyB02\n1jg8A01\n2f7vA01\n5xtbA04\n2m6xB00\n2w1sA00\n4xa8A01\n3nb0D01\n3qelD02\n1a76A02\n4dloA03\n3nvwL04\n1xutA01\n3cs3A02\n5b3kA00\n3c1yA02\n4nrhB00\n1rktA02\n1rduA00\n4e57A01\n4ywkA01\n3equA01\n3d9aL02\n2e9xB02\n4eiuA01\n3dhuA01\n2vycA04\n2xexA04\n1q5qH00\n3ia4A00\n4uasA02\n4k8wA00\n4h0pB02\n5wriB00\n2zuxA01\n4ovjA01\n1u7iA02\n1ztpA01\n4i3vA01\n5tmaA03\n2ylmA02\n4espA00\n1uyvB02\n5ks8A00\n1vmaA02\n5ajiB03\n2k5lA00\n2hjiA00\n2zteA01\n1c0pA01\n1svvA01\n3i57A01\n4e5xG00\n3k9tA01\n3o0mB00\n4lc3A01\n4j44A00\n1lqvB00\n2gdqA01\n4ao8A00\n2rbkA02\n3oanA00\n3g0oA02\n1h5wB01\n3afmB00\n3vk6A02\n3qt2B03\n5cofA00\n4ag6A01\n2pziA01\n1n8vB00\n3orhD00\n4kt3A00\n1t6eX02\n4n1yB00\n2w7yA02\n4u4eA00\n1v92A00\n4iaoC01\n1f0xA04\n2wbnA00\n5t1iA00\n3hzsA00\n3ln6A01\n3pgzA00\n4yi7A01\n3ga7A00\n4ijnB01\n3ks6A00\n4uoyA01\n4ywkB02\n1hz4A00\n4oy3A00\n3ljnA00\n2j66A01\n2w9mB03\n3c9hA01\n2hmtA00\n4relA01\n1kxpD02\n5inwA02\n3fj1A01\n4odkA00\n2rrnA01\n3kb6A01\n2qjyB02\n2k4mA00\n2m71A00\n4oh1A01\n1ydyA00\n3cx5H00\n2ennA01\n3u07A02\n2dfuA01\n3brbA01\n3o4hA01\n4hbqA01\n3g85A01\n1k9oI02\n3himA00\n3proC01\n3olcX01\n2cmgA01\n1htrP00\n3q2oA03\n4d05B02\n1hm9A02\n2wadB03\n4pscA00\n1n9gA01\n1wgnA00\n2etsA00\n4cs9B02\n4d3dB02\n2cg7A02\n3pg7A02\n4o8sA01\n3lkmA01\n2jaeA03\n5o5jD02\n4kisA01\n5hr5A01\n1j93A00\n3l5oA01\n3ucsC00\n3f3qA00\n3nc3B00\n2cpxA01\n3eblA00\n5a0lA01\n3kvnA01\n1e3mB04\n3s6n202\n1iq0A02\n3gnlA01\n1h7vA00\n3fceA01\n1jetA01\n1p9kA00\n3vb0A01\n2fi1A02\n4ckkC03\n1np7B03\n3hxsA01\n4jg4A00\n3pu2B00\n1euhA02\n4ib2A01\n2ii2A03\n3kkiA02\n3ldtA00\n3ez2A01\n1qcsA02\n2jveA00\n4dohE01\n3rcnA02\n3krnA00\n3t7kA01\n3hz8A00\n1vdiA00\n1gvnA00\n2fazA00\n2izvA00\n3b5iB01\n1ojhA00\n3bdkA00\n2yinA01\n3mpxA01\n3vk8A02\n2nqtA01\n1i4wA02\n2a5hA03\n1iuqA01\n1k4nA00\n4ofkB00\n2c5qF00\n3cj1A01\n5kzzA00\n3lz8B02\n2wdqA03\n1c17M00\n3q39B02\n2nyzE00\n5bv2Q01\n5lslA00\n1jr2A01\n5jabA00\n4h83F01\n3orjA02\n5bn3A02\n1sshA00\n2r5fA00\n4inaA01\n4mhvA00\n1cz4A01\n2xcjA00\n2wn9D00\n2djwA01\n1bteA00\n4a9cA00\n1yo6F00\n3jyyA01\n4kq7A02\n1s7mB01\n4mkxA01\n4esrB00\n1itxA01\n2fl4A02\n2cumA00\n3k4gB00\n3py9A04\n2wcyA02\n4f01B01\n3u31A01\n3h2sA00\n4h5sB00\n4s3jA03\n3bo5A00\n2asbA03\n4mj2B02\n5ncsA02\n2f2gA00\n4z5hA00\n3r5xD03\n1kxpD04\n3k1yA00\n1dypA00\n3b1nA00\n3iylB03\n3b5nD00\n4jneA03\n3crvA03\n3a98B01\n3lqvA01\n2qikA01\n3l32A00\n2xu8A00\n1qo0D01\n3fxtA00\n4uejA01\n1t6cA02\n3v5cA01\n1bx7A00\n1gvzA02\n4c3iG02\n3fybB00\n2e2rA00\n2d69B01\n3v3lB00\n2qa9E02\n1wx1A01\n1x65A01\n4of6A00\n1s68A02\n2mb7A00\n4rt1A00\n3d5vA01\n5a6sA02\n1oxxK01\n4gxwB00\n2d0oA01\n2lxpC00\n3hq1A01\n4ipiA01\n1vpmB00\n3uamC00\n5h3xA01\n4lziA02\n2wsdA01\n4lqbA00\n3h35C00\n1nhlA00\n3pmsA02\n2jpnA00\n2x7aA00\n4likA00\n4m7oA02\n3hhfA01\n1dkyB02\n1uj0A00\n4rshA00\n3qh6A00\n6ao9A00\n1gd8A00\n4izzB03\n2etxA01\n4kc5C03\n3m6iA02\n4q20A01\n3iiiA02\n1qexA03\n1x9zA02\n1hf2A01\n3jvnA00\n4oj6C03\n2ec7A00\n4mduA02\n3bruB00\n4j1vA00\n3adoA02\n2f4lA03\n5my8A02\n5ebgA00\n2znhA03\n1p0kA00\n3veaA02\n1p1xB00\n2z86D02\n2n3hA00\n4y99B00\n5k8bA02\n1byfA00\n1sxjH01\n4bxoB02\n5hj5A00\n3l4jA02\n5szvA00\n4wi1A03\n6az1b00\n2dbhA01\n4a2bA03\n5l9iB01\n2h3gX01\n2rjoA02\n4wy4D00\n5bpxA00\n3szhC00\n3obqA00\n1xvxA01\n3ojaB02\n2k1oA00\n1qxnA00\n2xmeF00\n2pefA02\n3g7vA02\n4hdtA00\n3n4dH00\n3tnfB01\n1r9wA00\n3zykB02\n4ph1A00\n5teoB00\n1qh4A01\n4r2fA01\n5mlc900\n5u0iB00\n3smzA02\n3cxlA01\n4uu4A00\n3fo8D03\n3r8yA02\n4pj1100\n2epdA00\n2x8xX03\n3lcvB01\n2k5eA00\n2gu3A01\n5swcD00\n1mvfD00\n2dkjA01\n2ed6A01\n3tixB02\n3onqA02\n2zeqA00\n2avtB01\n2wyoD02\n5hklB00\n3cxlA02\n4bqqA01\n4jwvA01\n2a3nA01\n2zvfA01\n3hlsB00\n2q7tA02\n2mhcA00\n3kpeA00\n3o44A01\n1n7oA01\n2jq5A00\n2k3dA00\n5on8A01\n3a04A02\n1e0tA03\n2jzcA00\n3c8vA04\n3pz6D00\n4fqgA01\n2fi0A00\n2pw9D02\n4i17A00\n3i7tA00\n5c2mA00\n3kkcA01\n1of9A00\n2bdqA00\n2ftyD02\n2fhzA00\n3n28A01\n1s4uX00\n3gwqB01\n3hmzA00\n2r9yA01\n1d2mA01\n1xp4A01\n4dk0A01\n2qtqB00\n3stpA02\n1wzdA00\n3lmmC03\n5d1rB00\n2f9zC00\n4k3xA02\n3flpA00\n1gkxA01\n4d74A00\n2pt7C01\n3wo4C03\n4f7kA01\n2j5uB01\n2y2zA02\n1bvsA02\n3nx6A00\n4mi2B01\n2ihuA01\n4kgdA01\n2m5rA00\n5fwaA01\n2micA00\n1h7sA02\n1lrzA03\n2hhfA01\n3pviA00\n3kh1A00\n2b7oA01\n1v9mA03\n1wicA01\n1ezjA02\n4b93A00\n3mqgC01\n3h1dA03\n4j4hA01\n5u89B00\n5oomk00\n1beaA00\n3zylA01\n1px5A01\n3gm8A02\n1brtA00\n2i52B00\n4jbdA01\n2y1eA03\n4bguA02\n2oi8A00\n5kxhA02\n3wwvA00\n4w8iA01\n4owkE00\n1aolA00\n4ga6A01\n4mrsA01\n1v8qA00\n1x64A01\n5e8sA01\n4trtA02\n3hl6A02\n2je8A03\n1ky9A01\n4ftdA01\n3g8zA00\n5tshE01\n3gqvA02\n4k7jA01\n6bhdA03\n3edfA01\n1p9yA00\n4uejA02\n4q5qB00\n2e5lB01\n4xaaA00\n2f8lA01\n1kohA01\n2vf7A01\n4me3A01\n3nj2A00\n3ezsA01\n3wuzA00\n2yrlA01\n3a72A00\n2cpiA01\n2lklA01\n3besL00\n4oleC00\n2a79B02\n2x5dD02\n2p0wA03\n2yrrA02\n1qp8A01\n2j92A02\n2z5wA00\n2qv7A02\n2w43A02\n4muoA01\n5ltrA00\n2wn3A01\n3rfwA03\n4ue8A00\n2vf1A02\n2ci1A00\n3rgfA02\n2id0A01\n4hgnB00\n2mbyA00\n1wjxA00\n1y44A00\n1xe7A00\n2if5A00\n4k02A00\n1edtA00\n3lm4A02\n5l2lF00\n1vccA00\n2rkkA01\n1k8qA00\n2h30A00\n3b0dB00\n3ku3A01\n5bmnA02\n4xuwA00\n1z54A00\n3i1aA02\n4m16A00\n4zldA00\n1ukuA00\n2mn5A00\n4x33A00\n4wy4A00\n2hahA00\n4nn5C02\n2f9aA01\n4aefA02\n1sfkH00\n1bsmA02\n2lorA00\n3gjyA00\n2dpwA00\n1sqwA01\n3rgcA02\n4z04A00\n5eoxB02\n2dchX02\n5uj6A03\n4iilA01\n4zmyA02\n1mx3A01\n1c9oA00\n2n04A00\n2bvfA03\n1qfoC00\n3if8B03\n3u1kA03\n2qy1A00\n2cqmA01\n3lfrB01\n1v4aA02\n4tmxB02\n1sekA02\n1o1zA00\n4qusB00\n1e5xB01\n2i9sA00\n1ik3A03\n1nxuA01\n1jusA02\n2me8A00\n3hhyA02\n4ic6C01\n3d02A02\n2kgtA00\n2gsbA01\n3fdiB00\n1h2tC03\n4c65B01\n3r5dA01\n3bilA01\n3tacB01\n5e0nX00\n2w0mA00\n2p4hX00\n5nkfA02\n3agtA00\n4e12A02\n1cqmA00\n1kxpD01\n2uv4A00\n1litA00\n3hjcA02\n4qm6A00\n1g5aA01\n2mx2A00\n2xevB00\n4jkmA02\n1gl2D00\n1ylqA00\n4wtwA00\n3n7sD00\n3mtjA03\n2zfuA02\n2q13A02\n3qreA00\n3qt2A02\n4ckkB01\n3wsxA03\n1lqlA01\n3qw4B02\n2a35A00\n1gweA00\n3d4oB01\n2qhpA00\n2igtA01\n5eksA02\n3q3qA01\n1hi9A02\n2j4jF00\n4a4aA04\n2aefA01\n2qdlA02\n1l4aA00\n1w9zA01\n4pqxA02\n3nggB00\n5inbA00\n1q1aA01\n4pswA01\n5fo8C02\n1i5nD00\n2vklA00\n5cklA00\n2f3nA00\n2zueA01\n3ls9A01\n4m1xD00\n5ifiB02\n1fjkA00\n3ed4A02\n4fx9A03\n1oywA02\n4zrmB02\n2vpvA00\n4n03A02\n1ym3A00\n3hkmB00\n2nxnB02\n1qwoA01\n3ld9A00\n3w06A00\n1f97A01\n5dviA01\n1r5bA02\n3f7qA01\n2fy7A00\n2wxfA02\n3i2kA02\n3pi7A01\n4b3hA02\n3kzhB00\n3r87A00\n2vzyC00\n2o1xD03\n1z94B00\n3qtgA02\n1y9wA01\n3gqhA02\n4i3gA03\n2g6fX00\n1gqpA00\n3butA00\n4a2qA02\n3lb2A00\n1xdwA02\n1t11A02\n4krtB03\n4x1oA00\n2ynaA02\n2nvwB01\n1l7mB01\n1jb7A01\n4g9sA00\n2q18X01\n5cqeB01\n3fd3A01\n4lw8A01\n2qzcA00\n4z6mA01\n1gmlA00\n3ld7A00\n4tl9F00\n2qolA01\n4f0fA01\n3i3wA03\n3brqB01\n2f9fA00\n1uirA01\n3ze3E00\n3tghA00\n4v2oB00\n1x6aA01\n4lw8A02\n2mztA00\n4gq1A00\n3rr1A01\n4n6oB00\n5du9A01\n1sseB00\n3isrA02\n3njtA03\n3olqA00\n1v2bB00\n3nk4A02\n3fssA02\n2f5xA01\n3iibA01\n3umoA00\n5xymC01\n5sxoA02\n3a74A01\n2ii3A01\n2nn6E00\n3l22A00\n4ksaA01\n3adrB00\n1kv4A00\n3ig2B00\n1zczA03\n3fl7A05\n3cwcA02\n1wwcA00\n4ombA01\n4do7A00\n1xq6A00\n2wbrA00\n3zedA04\n4elsC02\n5brkA00\n3qs2A00\n3f51C00\n3flbA00\n4kgiC01\n1lnsA03\n3mb5A02\n2fi1A01\n2avuB00\n4co6D00\n3f08A00\n2e28A04\n2l3bA00\n3fuyA00\n3k2jA00\n1atzB00\n2wpwC00\n4cdpA02\n1n62B05\n1tu7A01\n3claA00\n2fshB01\n2yc3A00\n3jq0A00\n4l8jA03\n3ohmB04\n3w3sA02\n2kj6A01\n3wx7A02\n2zwrB00\n5dj1A02\n4iihB04\n1vhuA00\n3cb2A02\n2hntE00\n4gekA00\n2qmwA03\n3m9lA01\n2cvcA03\n4q3lB00\n3amlA01\n4twjA02\n2odkA00\n2olmA00\n1e52A00\n4cayB00\n1fhoA00\n2k4pA00\n1pm4A00\n1tt8A00\n4oy7E00\n3iayA01\n1m1sA00\n2l4eA00\n3km5A00\n4f9zA02\n4i62A01\n2jz5A00\n3ombA01\n5h8iB00\n1lbuA01\n1wbaA00\n5imsB03\n4hr3A01\n3tdqB00\n3a27A00\n3nm7B00\n3rnkB00\n5fo8B01\n4my0C01\n3hd7E00\n4mdyA01\n3t6pA03\n5nqbA01\n4wydA02\n1f6bB00\n1pqhB00\n4r78A02\n2c52A00\n3cj8B01\n3jvoA00\n5mj3C00\n1bkjA00\n2yyyA01\n3mpcA00\n1ou5A02\n2divA01\n3doaA02\n2j8bA00\n5dinA00\n3eo7A02\n2izrA01\n4ku0D00\n2hr7A02\n2r6jA02\n4tuuA01\n3s93A00\n1s4dE02\n2c1lA01\n2olgA01\n2l1lB00\n4a4yA01\n5kwrA00\n2ymkA01\n1qd1B02\n1vhoA01\n5mtvA01\n1isiA02\n4k9qA03\n3csvA01\n1k5nA01\n3nftA00\n4mncA00\n4y85C01\n4uwhA02\n4ne3A00\n3aqlA01\n1vc1A00\n4hi8B00\n4mtxD00\n4rxtA01\n3mvpA02\n4hbeA00\n4q20A02\n3eg5B03\n3jszA01\n4msoB02\n2zpaA03\n1sxjH02\n5cemA02\n2ah5A02\n2zvbA01\n2o1uB01\n3c19A02\n4yaeA00\n5i8gA02\n1ks9A01\n2w87A00\n2ddhA01\n4e0aA00\n1jo6A00\n5jciA03\n4p3gD00\n4pmxA00\n1k12A00\n2rdyA01\n2ly1A03\n4kkuC01\n3dqgC00\n4lk5C01\n1swvA01\n3cr8A01\n2k9jB00\n5tv2A02\n4ljsA02\n4q7aA01\n4pq0A01\n2ajeA00\n3vr0A00\n2gfpA00\n3q0iA02\n1d2zB00\n2czrA01\n4xbaB00\n2ld6A00\n4ygbA00\n2gn0B01\n5fktB01\n3fsgA00\n3jamF00\n1sedA00\n3qexA05\n3ztvA01\n2a4vA01\n2mm0A00\n2uz1A02\n4nohA02\n1oksA00\n3fmcC01\n1tx9A00\n4n0tA01\n1or5A00\n4zd6C00\n2lpeA02\n2oi2A01\n2gksB03\n3rwaA00\n1yc5A02\n3bbbC00\n5x5hA01\n2yrrA01\n5kbpA03\n3kdqA00\n2pa8D03\n2mheA00\n1k3eB02\n3bzmA00\n1z3iX02\n4e9sA01\n2v5cA03\n4p4hA01\n6b1zA02\n4lxqB00\n1tfeA02\n3qr3A00\n1qexA01\n1kwmA01\n3pdiB01\n3f1sA01\n3d8cA01\n5uklG00\n4ijaA03\n1zavA01\n5avdA02\n2vxnA00\n2oaiA00\n5a4aA00\n4iymA02\n3b4nA01\n4wx0B00\n2pqcA01\n4ol9A02\n1wm1A00\n4ae2B02\n5fxdA04\n2yxdA00\n2w3pA01\n3oiyB01\n1tzyC00\n3evtA01\n2rihA00\n3ejjX02\n4dezA03\n3s98A02\n4g2tA02\n3n5bB01\n3dzvA00\n1ty0A02\n5x4bA00\n2nrqA00\n2c92A00\n3glaA00\n3s5rB00\n1nw1A01\n4igdA03\n5a0yC00\n4j0wA00\n1o5zA01\n2fcwB02\n3skxA02\n1gaxA04\n1te0A01\n3mi0200\n5i9eC01\n1qmbB00\n4g2eA00\n1w96A02\n2qtdA00\n4aw7A03\n3vz9B00\n2l9uA00\n2cryA01\n3lm2A01\n2pfxA01\n3mv2B00\n1w6sB00\n1w0pA01\n4lf0A00\n1pfzA02\n4cv7A00\n1sva400\n5jp1A00\n3a32A02\n3fw9A03\n3l4aA00\n3knbB00\n2z5eA00\n3i2dA01\n2xg5B01\n4b6iA00\n3h5xA04\n2x1wD00\n5mb2B02\n3c64A00\n3a5fA00\n5g1sG00\n5dg2B00\n5n92A00\n1sbyA00\n4c0aA01\n2va8A04\n1v57A03\n1feuA02\n5bseA02\n1gp0A00\n1pguB01\n5aykA04\n3p3yA02\n2esnA03\n5tk4A00\n5oomP00\n4xvhA01\n1af7A01\n4jdcA01\n3v5rA03\n2yevA03\n2cpmA00\n4e8dA03\n2kisA00\n3fniA00\n1jeyB02\n2g8lB01\n3hhiA00\n5a9tA02\n3asaA01\n5c3fA01\n5vzaA02\n5i5mA01\n2lmjA00\n3oyxA02\n2q73C00\n3rpcA00\n1z1nX03\n2q9oA02\n2pqxA00\n3e38A02\n3bpqD00\n1ft8E00\n1miuA02\n1khdA01\n5kjpA02\n3r64A01\n3mjgB00\n4kxvA01\n1h0zA00\n2yjnB00\n2x8kC01\n3b84A00\n2ji7A03\n3n2oA04\n2nwiB00\n3pb6X00\n1px5A02\n2ip1A02\n5jeaC00\n4qysA02\n2j07A03\n2bnxB02\n1q6hA01\n4x1jA00\n5ut3A01\n2c9oB02\n3zxqB00\n4e74A00\n3caxA01\n3dbxA01\n3e1sA02\n4z3tA02\n2py5A03\n3ihmA02\n4e6zA02\n2v3cC03\n2waoA01\n1vemA02\n1qysA00\n4crgA02\n1x7fA01\n1ocsA00\n3mhsC01\n4k61B00\n3ku7A00\n1sesA01\n1ybzA00\n5bylA02\n1ryqA00\n3dxpA01\n4qp5A00\n4psrA03\n2ztdA02\n4gc5A01\n3r3tA00\n2d0nA00\n3bhoA01\n2e6jA00\n3rc3A05\n3ty4B00\n2rknA00\n2h88C01\n4uw9A01\n1lr0A00\n1ohfA03\n2cksB00\n1ixlA00\n3bm1A00\n1ufnA00\n5noiA01\n3e39A00\n4dixA01\n1b8tA01\n3uq8A03\n1lc5A02\n3b0tA00\n2wbmA01\n3u3zA01\n2wfpA02\n2hyvA03\n3weeA01\n4eqbA01\n2y8tA03\n1dw9A01\n4tr3A00\n2ysjA00\n4ak2A02\n3fegA02\n3c6fA02\n1aukA02\n2o8bA01\n3hmcA00\n3tacB02\n3md7A00\n4bboA00\n2fc9A00\n3l7iA02\n4u7mA02\n4w64B00\n3beyD00\n2xidA04\n3kg2B01\n5hvzB00\n5tfqA00\n2wa0A01\n4of0A02\n4dghA00\n2akzA01\n3by5A00\n3zxfB00\n2bcoB01\n2q02A00\n1i94M01\n1zq1A02\n2r25A00\n4a2bA01\n4qjiB00\n3dorA01\n1pj5A04\n2qcvA02\n2rn8A00\n5czcB01\n4g6qA02\n1yzfA00\n4c1wA00\n3gbvA02\n4cfpA02\n3l6dA02\n2hhiA01\n1xx7A00\n1k7jA00\n4a0tA01\n1vqqB04\n5fvnA00\n2pf4F02\n2yxlA03\n3nycA02\n2cdqA02\n2y9mA00\n1ryoA01\n3upvA00\n4exkA02\n1wmxA00\n3e97A01\n4u4iA00\n3aalA00\n2bd0A01\n3cggA00\n4x54A00\n3dgtA00\n2lqgA00\n2x5xA00\n2q1fA02\n4uqwB00\n1c01A00\n1qr4A01\n5ce6A01\n4c5wA01\n3gybA02\n2wyqA00\n3ea6A02\n2p8iC00\n3g2oA01\n4kxfL01\n2yleA00\n4ehiA02\n3ramA01\n3mmkA02\n4b43A01\n3ocjA00\n3s3lA01\n5ubgA01\n3t5tA01\n2w82A01\n2vvgA00\n3mw9A01\n5ie9A00\n6az1Z00\n3ppeA02\n5dviA02\n4rflA02\n1yb0B00\n4adiA02\n3pw3D00\n1xpjA00\n1y6kR01\n3abzA01\n5dx6B02\n3lc0A02\n4ei7B01\n2n8xA00\n4obvA02\n3ksxA01\n4uqxA01\n2gu3A02\n4crwB00\n5aulA00\n4rwuA00\n5a86B00\n2qe7G01\n5cyxA03\n2zv2A02\n1nh2C00\n1xjvA01\n4r6kA02\n2nsaA00\n5inwA01\n2zycA01\n3h3lC00\n2af7D00\n2xhcA01\n2lpbA00\n1zk8B02\n3k9dA02\n5d1pA03\n4douA02\n3ziyA02\n4gcnA00\n3ohrA01\n1aocA00\n1wu3I00\n1v86A00\n1ji6A02\n1axiB02\n5aphA00\n5k8sB00\n4yliE00\n5v8sA02\n2dgwA01\n3cg6B00\n1d4vA02\n4ikbB00\n1cy5A00\n5iplA01\n3igzB02\n1kqfA02\n4gvqA01\n3delB02\n2lndA00\n2ra9A02\n2koeA00\n4xylB02\n1uz3B00\n5eehA02\n5b1aF00\n3jysA01\n2ewhA01\n3rvcA00\n3kbgA01\n1ng2A02\n4lvnP00\n1bjtA01\n3sbfA01\n4ayaA00\n4bi3A02\n2qksA01\n1kwgA01\n5jqnA00\n1zhxA01\n4m51A01\n2py5A02\n1egwB01\n4gnxB00\n3na5A01\n3mmpA01\n2i3tD01\n2kyyA00\n3h25A02\n2yq1C00\n1j3bB01\n1v9fA02\n3ksvA01\n2zs0D00\n4obmA00\n3v4cA02\n1m56C01\n1y8aA01\n1vrmA01\n2i15A02\n3alfA01\n1tifA00\n2o36A02\n3fgnD00\n3mszB00\n5muaB01\n2rfaA00\n2wawA00\n3tj4A02\n4g65A01\n4eqvA02\n3dtdD00\n3nb2A01\n1ykgA00\n1e5kA00\n1xqbA01\n1lq7A00\n1xmtA00\n4jxqA00\n2ghtA00\n2xhiA02\n3uzuA02\n1wqjI00\n3rayA00\n1srvA00\n5u56C01\n4u2xD00\n1eq9A02\n2q62G01\n3qk8B02\n1ra0A02\n3hjgA00\n5x3yA00\n3lmmA01\n3pduA01\n1o2dA02\n2d73A02\n2icyB02\n1vbwA00\n1tz1A00\n4ixjA02\n4ga4A01\n2cqnA00\n4pbdA00\n2ordA01\n4fmrB01\n4q9aA00\n3tlfD01\n1v96A00\n3ttvA02\n1i2mB00\n3o8eD02\n3uxfA01\n5cphA00\n3ahcA02\n4dpzX00\n2yh9B00\n1ngmB00\n1mtyG02\n2v5oA03\n2l73A00\n3fhlA01\n3jc6201\n1nwmX00\n2qq6A02\n2wolA01\n2bw2A01\n3r0sA02\n5feyA00\n4zwvA01\n2yvqA00\n3hnmA00\n3ar4A04\n4ob0B02\n2fctB00\n1o63A01\n2o7iA03\n3ivrA00\n1rcuA00\n3pvcA03\n3og2A05\n3ey6A00\n3nzpB03\n3gzkA01\n2l9pA00\n1atiB02\n1lm0A00\n2p0tA01\n1r3fA02\n2h1vA01\n2wnvB00\n3c5vA00\n1wfmA00\n3ux3A02\n2ahmG01\n4rk6A01\n3vwnX02\n1sazA01\n2ltmA00\n3nuhB02\n1fguB01\n3hpyA02\n1r12A01\n2bv2A00\n2is9A02\n1x0pE02\n2dvkA00\n2zo6A00\n2rh3A00\n2a7kB01\n3eerA02\n4hr6A00\n1xt8A01\n4fcaA03\n4e45B01\n1jznA00\n4qmaA02\n2rqvA01\n2qyuA02\n4r60A02\n3h3iA00\n4xfkA02\n4jz6A01\n4nimA00\n2x43S00\n5by7A01\n2aj0A00\n2p14A00\n4xdiA00\n1euwA00\n1vl1A00\n2mdfA00\n4h83A02\n3gq8A01\n3v7nA03\n3zfiA00\n1wu7A02\n2lgnA00\n4nzgA00\n3sd7A01\n3om0A01\n4zyeA01\n2ox6D00\n2lc0A00\n5g1lA01\n2porA00\n1yx1A00\n3vc5A02\n2ee6A00\n3i4kA02\n1qp8A02\n2lmcB00\n1xiwB00\n1qz9A02\n3os7A00\n3co5A00\n3szyA01\n3kcnB00\n3sx2H00\n3w07A00\n2wn3A02\n4i4kA00\n3kzvA00\n4ktyB04\n4axhA03\n2bsqE01\n1jayA00\n2w8mA00\n2cxcA02\n3oxpA00\n1ve5C02\n4nkgB00\n4ua8A01\n1jqeA00\n3fhnA01\n3py9A01\n2b3yA03\n2qzjA00\n3feyA02\n1p5qA02\n3k40A02\n3la7A01\n1of8A00\n3mwmA02\n5d1pA01\n1escA00\n2kkuA00\n5imsB01\n3n12A00\n2yfoA02\n3bg3B03\n5kawA00\n2e5vA03\n3zgzD04\n2z0qA02\n3eq2A02\n4inoA01\n1o94A01\n2zgcA02\n1jcdB00\n4cdpA01\n2e5aA01\n1ve3A00\n3gffA00\n1z7mF01\n2wi8A02\n3hgtA00\n2y6uA01\n3f8xB00\n3gwyB00\n2qgyB01\n1rozB00\n3ne5C02\n3zccA00\n5b8dA00\n2j6pA00\n2nptB01\n3ncvA02\n3rl0H00\n1rylA00\n4xcxA00\n6b7tA00\n1l5jA03\n1vlyA01\n2zfyA02\n3wxfA00\n1tdqA02\n2ymmB01\n2zm5B01\n2pimA00\n3e0zB00\n2x4dA02\n2wdqC00\n1zghA01\n4z9hB00\n2arzA01\n4u1rB03\n1xipA00\n2va1B00\n4ykiA01\n1pzxA02\n3cq5A01\n2qtwB02\n3k3wB03\n3iruA02\n4kp3C00\n1y6kR02\n3pijA02\n2vy1A00\n1n3lA02\n2q88A01\n3mqmA00\n4kbfA02\n2oycA02\n1g4aE02\n4a1gB00\n1z5hA02\n5i7lA00\n3sd7A02\n4f4eA01\n3wa2X02\n3dnjA00\n2m5yA01\n3ihxC01\n5b1aL00\n1onwB02\n3hdcA01\n3n4jA00\n3ufbA01\n4jqtA01\n4gpkB01\n1wxqA01\n2pl2A00\n3tqhA01\n1t1vA00\n3dc4A00\n4uxdA00\n1m1qA00\n1k90A02\n1fcyA00\n2l22A02\n3zm6A02\n1pg6A00\n3vy8X00\n5hqpD01\n3ideA02\n4c1uA01\n3gidB02\n3omlA03\n1ihkA00\n3rlbA00\n4fc3E00\n3judA00\n4xfeA00\n2r6aC01\n4ateA00\n1zxxA01\n4f25A00\n3rlfA02\n2pm9A02\n2xrwA02\n3alrB00\n4e3zB00\n3n5mA02\n1eiwA00\n1lwjA01\n3bs9A00\n2jh1A02\n3kbbA02\n3l6gA01\n2wfbA00\n4qblB00\n3hd5A01\n3behB02\n1e3mB05\n2lnhA00\n2qmqA00\n3ckfA01\n1b0xA00\n2virC01\n3h09A03\n3u9wA04\n2iutA01\n2gr8A00\n3kt7A02\n2f6uA00\n3do9A01\n4nogA02\n3mmjB01\n3ufeA02\n5dltA03\n4ci8A02\n1zc6B01\n1yoaA00\n2z5bA00\n2zy4B01\n3n2wD00\n3d2yA02\n2knrA00\n4ffcA02\n4yzwA01\n1o7dD01\n2dpmA01\n3mwbA04\n1n0rA00\n5ls0B00\n3f2zA00\n1dpgA01\n2pngA01\n2p0wA01\n3cf6E03\n3iuzA00\n4ccvA00\n2zs0B00\n1x7iA00\n1g44C04\n4ualA02\n4b46A01\n3bcyA00\n4f52C02\n1q1lA00\n5hwaA02\n4tndA01\n1cpyA02\n1yudA01\n5bmnA01\n3uqcB01\n4go7X01\n3h51A00\n1cz4A02\n1h4vB02\n4p02A02\n2ii2A04\n5lwxA03\n1l0sA00\n4jvuA00\n3fhmA00\n3mj6A01\n3rjuA00\n1srrC00\n3c7lB01\n5e5bA01\n3t4xA00\n4wy4C00\n1jeyA03\n1g8lA04\n3kizA02\n4wkgC01\n2ffmA00\n4od8D00\n4x7rA03\n2y7sA01\n5v5nA02\n2ykgA01\n1dyqA01\n5j3tA00\n2xdgA01\n2i5vO01\n5vd6A00\n1d66A00\n2iu5B00\n4q5wA02\n3bg3A05\n3c6fA01\n4agkA02\n1y12C00\n1zghA02\n2m3xB02\n2r7hB00\n4anoA00\n5xzgA02\n4gx8B00\n2oezB02\n3d2uE01\n4ogqA00\n4ii2B00\n2hnfA00\n2b3zA02\n1cs6A04\n3korB00\n3l2bA01\n4o5qA01\n3qslA01\n4pfoA02\n1rzhM01\n2k29A00\n6eixA01\n2fukA00\n3ewoA00\n2gpyB00\n3whjA00\n3emfB00\n2odmA00\n3szyA02\n2qlvB01\n3kd3A01\n3zpeA00\n2roqA02\n3s5tA02\n1v38A00\n1f2uB00\n4huzA02\n3hl8A03\n4u04A02\n3p9nA00\n3h5lA02\n3crdA00\n4q1tB01\n1imhC02\n2cwzA00\n2b5iD02\n3g0eA01\n3tewA01\n1wmsA00\n1gpjA01\n2ztdA01\n1agrH01\n3n2tA00\n5taoA02\n3ufbA02\n4i2xE02\n2vqeC02\n2gasA02\n1e3oC01\n5tqiA00\n2vnfC00\n4ox6A00\n4nv0A01\n2uwqA00\n2levA00\n4fwwA01\n4bd9B02\n3au7A02\n2g2sB00\n1sz2B01\n2obnD01\n5enfA00\n3wo4B01\n1al3A02\n5m9dA00\n3qqmA01\n2a74A02\n4g6hA00\n1uu1A02\n4yo7A02\n3a74A02\n1c7kA00\n5k8jB00\n3k7mX02\n3r75B01\n2qsiA01\n4ffhA02\n3bemB00\n1vs0A01\n2clqA01\n3vc8B00\n4eqbA02\n4issA02\n3zoqC00\n2yfuA00\n3ofgB00\n2gj4A02\n3c1yA03\n2a5yB03\n4gnxC03\n3lucA01\n1xouA00\n3p5mA02\n4qndA00\n1jniA00\n5kvfE00\n1h29B04\n2l37A00\n2jopA00\n3nqjA00\n4p0fA01\n3wx7A01\n2x9gD00\n3mudA01\n1igdA00\n5b66b02\n1hp1A01\n2k52A00\n2gb3A02\n4mowC00\n1nlfA00\n4liqE04\n4fdwA01\n4c26A00\n1igqB00\n3nctB00\n3vurA01\n5aoxA00\n4c7rA02\n4nn5C01\n3osnA03\n1wyuA01\n2zu0D00\n3pc3A01\n4q6kA02\n1jf3A00\n1vl5C00\n5w0kA01\n5wm1A04\n2b4vA02\n2yxtA00\n5dm6V00\n3csxB00\n4nhxA02\n2oqbA00\n2wteA01\n3l3sC02\n2xy1A02\n2gowA01\n1j5uA01\n2dnaA00\n3ix7A00\n1vkwA02\n3bidA01\n4o0kA00\n4aybP00\n1yx1B01\n3rgaA01\n4o3vA00\n2hljA01\n1xt5A00\n2b4lA02\n1pgyA00\n3smzA03\n1rrzA00\n4ev6A03\n4cndA01\n4q68A02\n4d9kC01\n3fbkA00\n3av3A00\n3mh7A02\n4zysA01\n3mvsA01\n3pzjB00\n3t5qG01\n3cl3E00\n5a2fA02\n2f91A02\n2lrcA00\n4bb9A02\n4au2B02\n1ryoA02\n2ozbB01\n1jerA00\n3mt0A00\n4hfmA02\n3nzpA04\n5fmgK00\n2pgnA02\n2v14A00\n4eq3A02\n2wraA00\n1ezxC00\n1jb0J00\n4ei6A01\n3zpxA02\n2qf0B02\n5e1qB01\n1wk1A01\n2x49A01\n2i76A01\n1qojA00\n2oz8A02\n4j5tA01\n1zceA00\n4eozB02\n2mqkA00\n1kjnA00\n3vrpA03\n2w18A00\n5nnpA01\n1wraA01\n5xktA00\n3mfiA03\n3l41A02\n4fk7A00\n3cjkB00\n4jaqA02\n1m40A00\n2gwfC00\n2o01300\n3obwA03\n4hppA01\n3drfA02\n2v6eA04\n2g1dA00\n3eb7C01\n1uwkB01\n3b4wA01\n4b3hB01\n3vkwA02\n4toiA02\n2jr1A01\n1w1oA02\n2x7mA01\n2ny4A00\n3v0sA00\n4h8qA00\n3l60A01\n1osnC00\n3c6kB03\n3pgbA03\n3kezA02\n3urgA02\n5hx0A00\n1jnrA03\n4i6pA00\n3f5rA00\n2olrA03\n4czxB00\n1kfdA02\n3eafA01\n3cqcA00\n1u2hA00\n4q0cA02\n2ckzA01\n1hzmA00\n5hqtA01\n3gybA01\n3nuiA01\n2jp7A00\n1q3lA00\n4f7kA02\n2gkeA02\n1wkoA00\n3vkwA01\n5civA00\n4l9bA01\n2m3eA00\n3lsjA02\n2db6A01\n4nmkA02\n4k28A02\n2xmoA01\n4zlxA00\n2ef8B00\n4xrwA02\n3wmm100\n1wy2A01\n3vylA00\n3kanA00\n2kdpA00\n4v15A01\n4azsA03\n3tloA01\n2uvfB02\n2i4iA01\n3f1bA00\n3h9mA00\n3u7qA02\n4jdzA03\n4rmmA00\n2f22A00\n3r6nA01\n2vyoA00\n1u7lA01\n1w1hD00\n4ixoA02\n1txjA00\n4jd0A00\n3le2A02\n2afbB00\n1iybA00\n4kbqA00\n2zjtB01\n5brhB01\n1hn0A04\n3fegA01\n4h1xA01\n3ljbA00\n5flmL00\n5bupA00\n4wqoD00\n3cokA02\n2wolA02\n2yxwB03\n3lrqB00\n4avsA00\n4l8jA04\n1k85A00\n3osvA02\n3l8aA02\n4jfhE01\n4xymA01\n4nj5A02\n1culC01\n3prbA03\n2qkdA02\n2bn8A00\n1wndA01\n5im0B00\n4l3nA02\n3iohA00\n1yx3A01\n1kgdA01\n4hg2B01\n4aybA07\n4iumA00\n2kslA00\n3bg2A03\n4egwA02\n4cl2A02\n3mahA01\n4k90A02\n4pe3A00\n4bbyB01\n1okiA02\n3cx2A00\n3gs9A01\n1n7sA00\n1ldjA03\n2posA00\n1v0uA01\n4k8kB00\n5j3uA01\n1yw4B00\n4k3wB02\n4k1oA00\n1zunB02\n4dgwB01\n1nqkA00\n4d6gA01\n5f9eB01\n4p5mB01\n5x5jA00\n4fkmA01\n3qivA00\n3f2eA00\n1ytqA01\n3d6jA01\n2nteA01\n3ktcA00\n2f1kA01\n4dapA01\n2bk9A00\n4q4hB01\n3zm8A02\n1a62A02\n2c4iA01\n3jxvA01\n4z48A00\n5hxbA01\n2p0oA02\n5xymC03\n3ib6C00\n5cbgA00\n2iwrA00\n3is3A00\n1useA00\n3qb8A00\n3itwA02\n5le5P00\n3vyyB00\n2oyyA00\n1omzB00\n4opfA00\n1mwyA00\n4npjB01\n4u98A02\n1e6uA01\n4b1mA00\n3rf3B01\n1njgA01\n5mgwA01\n4p5oB00\n4a15A02\n3apqB01\n3ujzA03\n3edfA02\n3bwzA00\n3bb8A02\n2y1eA01\n1nhyA01\n3hhsB01\n1xs8A01\n1skzA01\n2j58A01\n3wy7D01\n5d91A02\n3pm2A00\n5u47A02\n1jhsA00\n3ebtA00\n5vi4B02\n3fkjA02\n4gdzA00\n5oaqL01\n2v1uA02\n2bv1B01\n3ff1B01\n1dzfA01\n2qeuB00\n1k5nB00\n4iqjM02\n3qksA02\n4g26A02\n5jmfA01\n2e7jA02\n1s5lh00\n2napA04\n3pf6B00\n3lh5A01\n4a57A01\n3ocfB03\n4h63F02\n3ds8A00\n3fp7J00\n2qv6A01\n1xdpA04\n3p1vA02\n3bqpA00\n1s5lH00\n4fvmA01\n3dn7B00\n1pyvA00\n3b02A01\n4l3aA05\n3i83A01\n4rk2A00\n1tg0A00\n3g36B00\n4my0A03\n2ekjA00\n2a6aA01\n3lloA00\n4o2zA01\n3hrzB02\n3qkyA00\n3s2eA01\n4n6fA00\n2q07A02\n4m68A02\n2i7gB00\n4qqbX01\n2fmmE00\n2m4nA00\n4m55F00\n1wx8A00\n5ng9A02\n6bq9A03\n3ivfA03\n2rfvA02\n1pp9H00\n1qypA00\n1ve1A01\n3zidB00\n2hl7A00\n2p7iA00\n3skvA02\n3dkpA00\n1y71A00\n2rhmC00\n4i5sB03\n2c9aA01\n5b74B00\n2q1wC00\n3er9B01\n1kobA02\n3ewmA00\n2fhzB00\n3e23A00\n3zheB02\n3js8A04\n1yloA01\n3e35A01\n4fkbA00\n4fhrB02\n5jtwA05\n1a3aC00\n4ix3A01\n3b1fA02\n1amuA03\n1xg5B00\n4p72A05\n5tpmB00\n4r70B03\n2c2iA00\n2y9mB00\n3ldcA00\n4dokA01\n3d7aA01\n2nlvA00\n1v4aA01\n5wmfE00\n2kheA00\n3gd6A02\n1j5xA02\n5c68A00\n4jglA00\n4fqdA01\n4kgmA00\n1yllA01\n2vzpB00\n4n68A00\n3gg9A02\n1x9tA02\n4q8rA01\n4nomA02\n2o7sA01\n3ck2A00\n1v2xA00\n1rjjA00\n2k50A01\n3r7wA01\n2lkgA00\n3g8qB03\n1yoxC00\n5h34A00\n2ehpA00\n3es5A02\n4y0aA00\n1wk0A01\n4qxaB00\n5tuuA00\n4h6zA01\n1fi8D00\n2byeA01\n1zkhA00\n3q8dA01\n1pftA00\n3v3tA01\n1vq8300\n1v8dC00\n4d3tA03\n3cw9A03\n1k0eB00\n2r2jA03\n1kmoA01\n4dplA01\n4ct3A00\n4g1gA02\n3mpiA01\n1qv9A02\n5irqD00\n4cvuA04\n1aukA01\n5xogM00\n3nppA00\n3tlqA00\n3mdfA00\n3ndoA00\n4ccdA02\n4uypA01\n2bfdB02\n3zfwB00\n1nlwE00\n3n4iB01\n2bn4B03\n4k00A00\n4gniA01\n3pl2A02\n1dkgD02\n2x5pA00\n4cdoC00\n3u6xS00\n3eifA05\n4zj9A00\n4m7rA00\n3lmeC00\n3djhA00\n4kr6A01\n2g3wA00\n2cj4A00\n3db0B00\n4ofyD03\n4az6A01\n2vecA02\n4gt9A00\n1wloA00\n1vp8A00\n4lttA00\n4s1hA00\n3wydA00\n3bwuF00\n4zotA00\n2vpzB01\n2fhdA01\n2pz1A03\n4nv4A00\n1e0bA00\n3hrdB02\n2mw4A00\n2hoeA03\n1xocA03\n3wihA00\n2yzuA00\n4kq7A01\n2dr1A02\n2k4zA01\n2bl2A00\n2dyiA02\n2mgzA00\n1p4cA00\n3hcsA02\n5ap1A02\n3gk5A00\n1t1hA00\n3nvqA01\n2octA00\n3l7hB00\n3e0sA00\n1yvuA03\n2pgsA03\n4xabA00\n2ebyA01\n4n7qA02\n3n79A01\n2yzjA01\n5aovA01\n1vq8D00\n2crzA00\n3gv1A00\n4wbtA01\n3tr0A01\n1luzA00\n3pmoA01\n3ikbA00\n1m6bA04\n1wkvA03\n3p4tA01\n2j6vA00\n3shgA00\n4f1jA00\n1d2oA01\n3pstA01\n4q1iA00\n2yvsA01\n2ctqA01\n1zzaA00\n2y24A02\n1io1A02\n4d7sA01\n2jkhA02\n2yxzA02\n1jz7A01\n1fxrA00\n4izzB02\n1sqwA02\n2cxcA01\n2nlrA00\n4jzjC01\n4aybK00\n3tu3A00\n1zd8A00\n4oevA03\n5kayB00\n3odgA00\n4qniA02\n1eg3A02\n3i6cA00\n2ii2A02\n4oxiA01\n2z00A01\n2wdcA02\n1j5wB01\n2eqgA01\n2p9bA03\n1cmbA00\n4x89A00\n1vh5A00\n3gdwB00\n3s5jA01\n3b5mC02\n3i7aA00\n3n77A00\n4pofA03\n5jazA01\n1yocA00\n3nwoA00\n4jl5A00\n3szaA02\n4airA02\n2corA00\n1yrvA00\n3c8vC03\n4q34A00\n1r1hA02\n3ko8A02\n5uaxA01\n3pe5A00\n4j37A02\n2c9oA01\n1piiA02\n2vu9A01\n1w94A00\n4rv7D00\n5t8uB01\n4c0fC00\n1cidA02\n3q9oA01\n2ktsA01\n5ofkA00\n2hc8A00\n2oz8A01\n1th0B00\n1xmxA01\n3f8tA01\n2mkyA00\n4fypB00\n4o7hA01\n5mnjG00\n1p0sL01\n3hmuB01\n2p9bA01\n1z05A02\n2awnC02\n2cy8A01\n2y7lA02\n1c7sA04\n4lyaA01\n2oibA01\n4dccA02\n1hxnA00\n4gxbA02\n2dhaA00\n1yxmC00\n5w56B01\n5lz6A00\n3wf7A01\n4lmiB00\n3g1wA02\n4q5tA01\n4x5pA00\n3ednA02\n3jtwA00\n5k97A02\n2hd0A02\n4gxbA01\n2p6pA02\n1k7kA00\n2pt5B00\n2ycdA01\n3q10D02\n4r7rA00\n1svvB02\n5hsgA01\n2hzmH00\n1hw7A01\n1u8vA01\n4aeeA02\n5vzaA01\n1t5jA00\n1x6zA00\n1is3A00\n3qc0A00\n2hihB00\n4j8eA00\n4ggjA00\n1p3dA01\n2q0oC00\n4p0gA02\n2e8oA01\n4kzsA03\n1yq5A00\n1mznA00\n4mb4A03\n4r6hA01\n5jzxD02\n3t7aA02\n2o0jA02\n4at5A01\n3r0vA00\n4zhbA00\n3axjA02\n2es9A00\n1nh8A03\n4m88A01\n3opyA01\n3l4jA03\n2qwtA00\n1e0cA01\n2vhlB01\n5dwdB00\n1p1lA00\n4wpkA00\n5chlB00\n2vszB02\n3mcrA00\n4nzcA02\n1u5lA00\n4h14A00\n1bxkA02\n3ff2A00\n1sb2A00\n2iahA02\n3p3yA04\n5mj3A03\n3tmaA01\n1w4rA02\n3a11B01\n2ghjB02\n5it6A00\n1k5nA02\n4c2mV02\n1zkeA00\n3b40A01\n2vchA02\n1gh2A00\n2uwiA01\n2wqtA00\n1l3kA02\n2osoA00\n2x98A01\n3e1sA04\n3kxrA02\n3rfyA02\n2z8fA01\n4ze8A01\n5hrbA01\n4gmqA00\n1f6kC00\n1l9nA03\n2eucA00\n3c3kB01\n2gbwB00\n4oijA00\n2hlrA00\n4ed9A01\n2v7sA00\n2pw0B02\n1ibtC00\n3aj6A02\n5gzaA00\n3uv9A00\n4xbrA01\n3cw9A01\n4cqbA01\n3gruA01\n4od4A02\n3bc8A02\n3ltiA01\n5brhA02\n5eq0A00\n1hyuA04\n4du5B00\n2fhtA00\n4po5A00\n2frxB01\n2b9dA01\n1zs4C00\n2vl7A02\n2rk9B00\n5dajD00\n3f0nB02\n3f7wA02\n4besA02\n4r0mB01\n3b7hA00\n2o2oA00\n3aptA00\n2kewA00\n5g5gC03\n3vglA01\n3gwaA01\n3t4nB01\n3kttB01\n3hbzA01\n1mh1A00\n1qdmC02\n5gjiA00\n4mxmA00\n2wbqA00\n4lihA02\n2l89A00\n3h4oA00\n3futA01\n4e79B01\n3m6zA03\n2dvmB02\n2j5iA01\n1tbuB00\n2vfrA01\n4qb5D00\n1t7sA00\n3vytA00\n4eysA01\n2qggA02\n5bo7B00\n4jpbB00\n3i08A01\n1yqhB00\n1pb7A02\n3kg4A00\n1ozhA03\n1dxyA01\n1ro7C00\n3l7iA01\n2kl5A00\n1bheA00\n3lopA02\n1wazA00\n3qhoA00\n5bovB00\n3h20A02\n3ny7A00\n4dd5A01\n1h4xA00\n3czxA00\n2fpnA02\n2ls5A00\n4s3oC00\n4i9xA00\n4u0cA02\n3ziwA01\n3wjtA00\n2ke7A00\n3feuA00\n4axoB00\n1qamA01\n2miqA00\n2vanA01\n2b78A01\n2xtyB00\n3tqsA02\n4irxA01\n5hsfA00\n1knxA01\n5hyvA02\n3na5A02\n4ztkA00\n2iiiA00\n2aneA00\n1v6eA01\n3waeB01\n3mjkX00\n3me5A01\n2e8mA01\n4pabA05\n1wyhA00\n1jvaB02\n1qfhA02\n1ufoA00\n3ivvA01\n4uhvA04\n3w3aH00\n3cz5C00\n2k6lA00\n2wzpP03\n4zi9A01\n2v2gA01\n1abvA00\n3hdjA02\n3bjrA00\n5b7hB01\n1ejeA00\n3gqcC04\n1xtiA02\n3njtA02\n2budA00\n3cypB00\n1h6uA01\n2wyoC01\n5ejdA00\n4n7qA03\n2yweA01\n4n9wA01\n2vdwG00\n2gzaB02\n4ozwA00\n6b6lA05\n4jgwA01\n1dj7A00\n4hbqA02\n1wu7A01\n1m7gC00\n3fedA01\n3bxpB00\n4emnA00\n1orqC01\n2bf6A01\n3maoA00\n1iq6B00\n2dxqA00\n2qq6B01\n3qekA02\n4tpoA00\n3gg8C01\n4c0nA00\n4cfrQ00\n3ewwA00\n3h38A02\n3l5iA02\n3oisB00\n2g0iA00\n3bzcA02\n4he7A00\n4k45A00\n2qa9E01\n1sg7A00\n2c9oB01\n3wdhA01\n4horA02\n3clqA04\n1s3jB03\n3ossD00\n2c7wA00\n3h7iA01\n1rhfA01\n5nckA01\n1g0sA00\n2pnwA01\n3umgA02\n1jx6A01\n3un6A02\n3oepA02\n1u8xX01\n4hvmB01\n1yreC00\n1e5rB02\n2dduA03\n1cs3A00\n4i8hA01\n3n4hA00\n1b7yB02\n2apoA03\n2j3xA01\n2r6fA03\n1g5aA02\n3gneB00\n3iupA02\n4dt4A02\n2x3lA01\n2zubB01\n3s8pB01\n3kljA03\n4id3A00\n4mtmA01\n4wnoA01\n5t5xA03\n3vlmB02\n2h88C02\n1t0yA00\n2xgjA05\n3daoB02\n2higA02\n4ldaB00\n5b31G00\n4h5sA00\n1fx2A00\n2ywmA02\n4uv7A04\n2j5uA02\n2k9pA00\n4i6vA01\n3v6oB01\n1po5A00\n3al2A02\n3gi7A00\n4hwiB01\n1kg1A01\n2az4A01\n4tquS02\n3todA01\n2lakA00\n3ghmA03\n5crwA01\n3be6A02\n2f66F00\n2x55A00\n2y3mB01\n1ng6A02\n2x2sC00\n4uf4A01\n1nh8A01\n3khqA00\n2kpjA01\n3le4A00\n1pvtA00\n1noxA00\n2okxA04\n3clmA00\n2ooeA01\n2wtzA02\n3w3aG00\n3dktA02\n1c7sA03\n1j02A00\n1tu1A00\n5nj9D01\n3icxA01\n2l09A01\n4cujA01\n2lnmA00\n4d9iA02\n3sylA01\n3u0vA00\n1pzsA00\n1mj4A00\n4ca9A00\n2cw6D00\n2pt7G02\n3w5sA02\n3n10A00\n3e6qA00\n2adzA01\n2zdsB00\n3hsyA01\n1ssqD02\n4ek4A02\n2f2lA00\n4kctA01\n4h59A01\n4s2rP02\n5ccbA02\n4bkxA01\n4mb1A02\n1elwA00\n3uenA01\n1vq8A03\n2xrcA02\n3k4tB00\n4arcA04\n3r3qA00\n2y3mA02\n2xz2A00\n1wk8B00\n1aluA00\n2odlA00\n2w9dL01\n3zx7A02\n1wznA02\n3feyB00\n2mjfB00\n3l9cA00\n2hivA02\n3mn8B02\n2wbmA02\n3ilvA01\n1u7pD00\n3dclA03\n1ohfA01\n3sqbB00\n4k0nA01\n4tviA01\n4q25A02\n2ifgA02\n1bg1A04\n1atgA01\n3grnA00\n2cvzA02\n4fqgA02\n4fqgB03\n2iidA03\n3lecA02\n5i45A00\n4l68A02\n3gnfB02\n1dq3A03\n1mqkL00\n1xksA00\n3fduA02\n3ig9B00\n2zogA01\n1z9hA01\n4aghA00\n3gfuA02\n3zl8A02\n1ztmA04\n2xgjB04\n3bhpA00\n1i1jB00\n2pkaB00\n4iajC00\n1c7nA01\n3b1bA01\n2dnoA00\n2ku7A00\n3nb2A03\n3n6yA01\n4gouA02\n3bjvA00\n4coqB00\n3al5A02\n1e0tA01\n3vp9B00\n5umfC00\n1wf3A02\n3vueA01\n3ck6E01\n3ug9A01\n2mmpA00\n5j4lA00\n3m1dA00\n1jp4A02\n1tfiA00\n1hnrA00\n5iyzF02\n1q9jB01\n4fp5D00\n4d9bA02\n2o8bB03\n4e5yC01\n1ifyA00\n1r0dB00\n4l4hA02\n4h3uA00\n3icjA03\n1h2eA00\n1wwrA00\n3a7iA02\n5bq0A01\n5hwaA01\n1r6tB02\n3l2hA01\n5hawA00\n4g68A01\n4erdA00\n4zbgA00\n3okyA02\n3d8pB00\n3c9aA02\n5ib0A00\n2k8qA00\n4l4qA02\n3adoA01\n4n9fE00\n3zi1A01\n2k14A00\n1t4aA00\n3u9rB01\n2lhtA01\n3anwA02\n2ds2D01\n1l1lA02\n4kdsA01\n4uwmA00\n2lriC00\n3seoA01\n2qqzA01\n3m6aA01\n2q7wA02\n2po3A01\n1wpxB00\n3p7iA01\n1n81A00\n4damC00\n4n2kA02\n2w8tA02\n3fruA02\n1jmcA02\n3kopF01\n2ibgA02\n3qhpA00\n3mzkB01\n2gagC02\n1j0hA03\n3ndaA01\n2w8nA01\n1u89A00\n4hscX02\n3gldA02\n2aegA02\n3e59B02\n3ug9A03\n2k5cA00\n1tteA02\n1ofuX00\n2ggsA01\n3og4B01\n3iduB00\n3dclA02\n2mezA00\n3qnfA04\n4c2vB01\n1uxzA00\n1whqA01\n5cw6A00\n4m70I00\n5cy0A00\n1t6oA00\n3t5oA04\n4b89A00\n4nzrM01\n1s3rA02\n1my7A00\n1zq1C03\n2p1jA02\n2ww5A02\n5ey8G02\n3oy1A01\n1l8yA00\n3n28A02\n1w3iA00\n1vs0A02\n5d01B02\n3gv5D04\n1uohA00\n1t17A00\n3md1A00\n4l69A02\n2wssA01\n4kzsA01\n3fedA02\n1e5dA02\n2fgqX00\n2yvsA02\n1bcpB02\n3skjF00\n4gniA04\n2qezE03\n3f43A01\n1ps9A02\n3sy6A02\n4p49A01\n1oltA02\n1z7bA02\n3noiA00\n5b66B02\n4k8gA02\n1dcfA00\n2kwpA00\n1naqB00\n3ho7A02\n5dl7A00\n2kdoA02\n4g08A02\n2e9hA01\n1b0nA00\n3ks7B01\n1rp3H01\n2enmA00\n5ib9A02\n4g08A01\n3uo3A01\n5fveA02\n4nswA02\n3s2eA02\n2o9xA01\n4amgB01\n1yqtA02\n3a8xB01\n4eijB00\n4p29B02\n3qmjA00\n4ylqT02\n3cdlB02\n2j3lA01\n4peoB00\n2wmfA03\n2rsxA00\n2pxgA01\n2yyvB00\n3cbqA00\n4fqdB02\n4c1hA00\n2wscK00\n1sz7A00\n4eozB03\n2pttA00\n2kvsA00\n3pp5A01\n2r7fA03\n3hdpA00\n2qk4B02\n1nypA00\n4mnrA01\n3wh2A00\n4yslA00\n2l0zA00\n4rayA02\n2xr1A03\n2lqoA00\n3sk2A00\n1uf5A00\n3gr3A00\n4eq9A02\n5le5A00\n4mydA00\n2pl3A00\n3hrgA01\n3otxB01\n1rpuB00\n1hdhA02\n1iv8A02\n4unfA01\n2iyfB02\n2gagD00\n2yweA03\n2jovA01\n3b0xA05\n2o2cC01\n3ejjX01\n1sq4A02\n3lkbA01\n2eq9C00\n4fn7B00\n3e2dA01\n5iaiA01\n1ykwA01\n2vvfA01\n3vqiD03\n2dyoA03\n1xo8A00\n3g9xA00\n2vw8A00\n1seqH02\n2aiqA01\n3a0oB01\n3s6pA03\n3knbA00\n3tgnA01\n1ro3A00\n2ejaA00\n3dteA03\n4x5wA02\n1g31A00\n4ea9A02\n2nsfA02\n1vr4C00\n2w7qB00\n4eldB00\n2amlB01\n4itjB02\n3gruA02\n4lgcA00\n4zflD00\n1ej8A00\n3aekB01\n3i09A02\n5t3eB01\n4l5tB02\n3jruA01\n4hvcA01\n5fs6A03\n3ungC02\n1uouA03\n2it1A03\n5uidA01\n1t7pA02\n4fnvA01\n4loxA01\n3bl9A01\n4gf0A01\n2j3mA02\n4fxqA01\n2bycB00\n1wxtA00\n4umlA00\n2c0nA00\n1okiA01\n4edpA01\n1l6rA01\n4mv4A03\n4n2kA01\n1c8uA01\n2x4fB01\n4ivvA00\n1vz0C02\n3vajA02\n3dplC01\n2b5eA04\n3a43B02\n3i0zA02\n5cllB00\n1jx6A02\n1w36D03\n4zf5B00\n3slgF02\n2k4dA01\n3x0dA03\n1y14D02\n3lffA01\n1guiA00\n3e07A00\n5bykA00\n2pg0A01\n3if8A02\n4j9cA00\n4yyuA00\n4ml2A00\n2wnwA02\n1h6yA00\n1olzA03\n1v87A01\n1viaA00\n1wp9A02\n3lvmA01\n3i44A01\n2f9iC00\n3cnvA01\n4uijA00\n3w5jA00\n4tktA02\n3b5nJ00\n2mysA04\n3cw9A02\n3mhsA01\n1yi8A02\n2okqB00\n1jx4A04\n3k12D00\n2kr5A01\n3d2fA01\n2bwnB01\n2eciA01\n1ri6A00\n1j2zA02\n1fmkA03\n1zylA01\n3ubtA02\n4p52A02\n2lwlA00\n3mkoA00\n5tdeA02\n4rhmA00\n3mkcA02\n1eu1A04\n3nstA01\n4fedA02\n3oqvA00\n4omjA00\n4m8kA00\n2i7xA01\n3hj4A02\n1ow0A01\n4fasA02\n4kruA00\n1zg2A00\n3pluA00\n2ibpA02\n2kumA01\n1qz5A01\n2vwaA00\n5f44C01\n1w23A01\n2r0yA02\n4yvoA00\n1cukA03\n3l77A00\n3rh0B00\n1rwhA03\n5dafA00\n1wlyA01\n1olrA00\n4xaxB02\n1k3rA02\n2xepA03\n2wfwA01\n3q15B00\n3v9rB00\n2ebdA02\n1aozA03\n5eliA00\n5braA02\n5ay7B00\n1ynsA01\n1d5tA03\n3shsA01\n1ef8A02\n5reqB03\n5nzoA00\n5dxhB00\n3e13X01\n4j87A00\n2b9sA02\n4ii1A01\n1qzgA00\n1tc5C00\n2x5dA01\n3s40A01\n3ndnA01\n4gdiA00\n4om8A02\n4d6gA02\n3eifA02\n1khyD00\n4lldA00\n2panA03\n2pziB03\n1r5lA03\n4o2hA00\n4fsdA01\n5dhvN00\n3r6nA02\n3ntlA02\n3n9gH01\n1szwA02\n1xouB00\n3vx0A01\n3i4pA02\n3up6A02\n4jeaA00\n4uulA02\n1pk1B00\n4dguA01\n3ehhB01\n3zh9B01\n2e2eA01\n2jvuA00\n2engA00\n3m6nB01\n2hqbA01\n3gy9A00\n2puyB00\n2o23A00\n2ystA01\n4rhsA00\n2e6qA00\n5tmaA01\n1e3pA02\n5b6cA01\n3nr1A00\n2fa1A00\n3k6eA00\n3woeB00\n4ylqT01\n4rg9B01\n3fjuB00\n2f8xK00\n3dmbA00\n3h6jA01\n3pmoA02\n1puzA00\n3mfdA01\n1bcoA02\n3u4zA00\n3uidA00\n3bf2A00\n2kbzA00\n3hhdA05\n4c89C00\n5d9oA01\n2xqqC00\n3qc4B01\n4trkA00\n3c6kA02\n2fpoC00\n2gedA00\n3qk7C02\n3s99A01\n4gyoA02\n3cjwA00\n2fcrA00\n3i9fB00\n1kyqA02\n4j9zB00\n4o9lA00\n3dzzA02\n4pt1B00\n2k13X00\n4bwrA00\n5vnxA01\n3c8mA01\n3n1fD00\n5eh1A02\n4m9cA02\n1vjlA00\n1ml8A01\n4d8mA01\n4ihzA00\n1qqeA00\n5kh0A03\n2ph5A01\n3nl6C02\n1inlC02\n5kp7A01\n4xt6A00\n4h15A00\n1sr4C00\n5i3sC02\n5h5zB00\n2adlA01\n2c3vB00\n3be3A00\n2m4eA00\n3k7cA00\n3ic9A04\n3zyqA02\n2kfjA00\n2wxyC01\n5e4gA00\n2j59M02\n1gl2C00\n2vycA03\n3dkxA01\n3a4cA00\n4gwgA02\n3sl9G00\n1b6gA00\n4pdyA01\n2dxuA01\n2fprB00\n4jquA00\n2cyaA02\n4bndB01\n2k6vA00\n4rexA00\n1j0hA01\n2greA01\n3cnrB00\n2f07B00\n2basB01\n2o2kA01\n2wmoA01\n2w9yA00\n3smtA01\n4krpA03\n4qa8A00\n5c3kA00\n3ix3A00\n4ie5A01\n5b7wA01\n1l0qA01\n4u2mA02\n4bwxA02\n3dr4C01\n5cenA02\n3cjhB00\n2xtcB00\n2n8kA00\n1uaiA00\n3dxsX00\n3c9uA02\n3no6A00\n1qksA02\n3zheA02\n3slzA00\n1ibxB00\n4egvA02\n2avpA00\n2a14A00\n2y8yA01\n3ua0A00\n2v8qA01\n2znrA00\n4nn2B00\n4kkiA02\n4igkA02\n3ltlA01\n3w7tA01\n5e10A02\n4ie5A02\n1svmA03\n3c85A00\n1wqaA03\n3uzuA01\n2jlpB00\n3h2yA01\n4xaeB00\n1eu3A02\n3ullB00\n1fmbA00\n2wg6D00\n3mqdA01\n1co4A00\n3nheA00\n4qy7A01\n4hhvA00\n1yixA00\n3vgpA00\n5c4mA00\n1iamA02\n3g21A00\n3hhpA02\n5ff5B02\n3kfaA02\n4jy5L01\n5fifE01\n5j7cD00\n5u1hC00\n1dqcA00\n4dgwC00\n1vmgA00\n4uwwA00\n3l6uA02\n2d7iA02\n4locA02\n6az1Q00\n1r44A00\n4wiqA01\n1euhA01\n2bgiA01\n2i7xA02\n3deeA01\n2khxA00\n3thiA02\n5h3hB00\n3bpnC01\n4wxjB01\n2r5oA01\n3kxaA02\n4eu0A02\n3g14B00\n4bgpA01\n5kjzA00\n3k6iA00\n4axvA00\n2qgmA03\n1ihuA01\n1taqA01\n4iuwA01\n2v72A00\n1d5yB03\n1f08B00\n3gs9A02\n1lf6A01\n4gqoA01\n1ii7A01\n1r5mA00\n2wvfA02\n3rxzA00\n1h3oB00\n4rgdA00\n2aqeA00\n2fb5A02\n2fo3A00\n4iuyA00\n3t2lA01\n3p8cD01\n5gqoB00\n4jrnA01\n2qi2A02\n2ddrA00\n2nxoD01\n4jmqA02\n4n4gA01\n2f0cB01\n2qm8A02\n1a8dA01\n3dghA03\n2vycA01\n2qipA00\n4dwsC01\n2yysA00\n3q2oA02\n2qq9A02\n3kh0A00\n3vwbA00\n3thxB02\n1g3pA02\n4bb9A01\n4pc9A00\n1bgwA03\n3hg9A01\n5mf6A02\n3mayB00\n3l2dB01\n3ggyA00\n1x9yA01\n4trpH01\n3hm7B01\n2gaxA00\n2we5A00\n2rqyA02\n1ivzA00\n4ofyD01\n3mpkA02\n3gwrB00\n3ib7A00\n2bhgA01\n4cqiA00\n2fjlA00\n2hd9A00\n5w95B00\n1jliA00\n2rhsD02\n1v7mV00\n5frdA00\n2qniA01\n1borA00\n3h75A02\n3buuB00\n4cczA01\n1gvnD00\n1wdjA00\n3rf0A00\n3o8oA03\n3c0kA01\n4xr8F01\n3iibA02\n4qdjA00\n5a5hH00\n1rpyB00\n3dg3A02\n2h7oA01\n3ddjA01\n1ox0A01\n3cp8D03\n2q7fA00\n2og9A01\n3uesB01\n4qxdA01\n4mtnA02\n2d9dA00\n1bihA01\n1c0wC03\n4z49A02\n2iskA01\n2junA00\n4if8B01\n2laiA00\n2j59N00\n2puzA01\n3cawA01\n5xxlA01\n2j8iA01\n5cnwA01\n2yy5A02\n4didB01\n5gzcA00\n2dn8A01\n2pveA00\n4mlsA00\n3plnA02\n2iksB02\n4c69X00\n3shqA01\n1u9iA02\n2ovbA02\n5bn3A03\n1s99A02\n1yrtA01\n4wksC03\n2xexA03\n2mi5A00\n3ucxA00\n3t9wA01\n5cxoB00\n2jryA00\n2vugA02\n4iw7A02\n5jv4A00\n3ck6C02\n4qq6A00\n1t4yA01\n3o48A01\n5oomK00\n1vzsA01\n2vf7B01\n2o6pA00\n3nurA00\n4n75B00\n4ph8A00\n1ng5B00\n4cgkA02\n2rhsC00\n4fleA00\n2n99A00\n1h1lD03\n4xxbB00\n3en9A04\n3ne8A00\n1ltmA02\n4h4dA02\n3n2zB02\n4j8sA00\n3wfvA00\n3wa1A01\n2ab5A01\n2pihA00\n1x79B00\n3t90A00\n2xmoA02\n4fo0A02\n1ve4A01\n4aw2A01\n1kfiA03\n1mfaH01\n1g8mA01\n2qm4D01\n2bnkA00\n1bh9A00\n4rl3A00\n1qlwA00\n2hjqA02\n3l84A03\n4gipD02\n6em3h02\n4m2mA02\n2i79D00\n3zm8A01\n2yvtA00\n4pz0A02\n3kxyJ00\n3hvnA02\n4gmvA01\n2n3oA00\n1cp2A00\n5jn5A03\n2p4gA00\n5jlvC00\n3qv2A01\n3kfvA01\n3nmrA01\n4c72A01\n1gnyA00\n2lezA00\n2dmoA00\n4h7pA02\n2x7jA02\n1ujcA00\n4o5aA01\n5afwA02\n2ymyB00\n5tifA00\n4mbrA02\n2ozgA03\n1v2zA00\n1z5hA03\n5jrtA00\n4fyqA04\n1gz6A02\n1o54A02\n3gdcB01\n4n02A00\n3tekA00\n5je8B01\n1ct9A01\n1g8aA02\n3c6mD01\n2z26B00\n5j07A00\n2nugA01\n3hhwK01\n2lznA00\n1vf7F01\n4maaA01\n2ae0X02\n2g50F03\n3fmtB00\n3mpoA02\n1iicA01\n2qiwA02\n1lnqA01\n1i3oF00\n3fkdA01\n4g09A03\n2xmxA02\n4og1A02\n4qu2A00\n4oneC00\n2qc7A01\n2bw4A01\n4o6mA01\n2aklA01\n3nswA00\n3cgbA03\n3vprA02\n5i34A03\n3ligA02\n3gasA01\n2hjqA01\n1wmiB00\n4abxA02\n2plwA00\n1l5xA00\n3ngwA00\n3brsA02\n2kq5A00\n2pqgB01\n3g7uA01\n5i40A00\n1dcqA02\n2g9oA00\n2bkxA00\n4fxeA00\n3r41A00\n4e72A01\n3k1wA02\n2zuqA00\n4mymA00\n5xpcA00\n5hheA00\n2oulA00\n2fozA00\n1yloE02\n2cfxA02\n4k90A01\n4kncA02\n2rh0A02\n1aqcB00\n2x29A00\n3tjeL01\n2xedC00\n5a0yA03\n4eg0A03\n5tchA00\n1dgwA00\n3pxpB02\n2o1bA02\n5jazA03\n2avwD01\n1k3iA01\n3wczA00\n3rrkA03\n1zx3A01\n4nn1A00\n4u3qB00\n1m65A00\n3hrpA01\n4hu4A00\n5iucA00\n3dpuA02\n4yz9A01\n1z3eA00\n1njhA00\n3ejkA00\n1b63A01\n3wdnA00\n3qiiA00\n1ucuA01\n2bc4A02\n1wd3A01\n3lw7A00\n1wjrA00\n2wu9B00\n2rp5A00\n3hp0A00\n1qu3A03\n5elnA01\n1y7jA00\n2ed9A01\n3wj2B00\n3czbA01\n3ge3C00\n4txrA00\n1i1gA02\n3ci0J01\n3fz5B00\n2o5fA00\n4dwdA01\n1lniA00\n3onjA00\n2hcfA01\n2q2bA00\n3ttcA01\n2hb0A01\n3nrlA00\n2cayB00\n5dm6300\n5cqgA05\n1idpA00\n4wokA02\n1dciA01\n1zxuA00\n4jccA01\n5dmyA01\n5hqpD02\n4mewA02\n3otiA02\n2vobB03\n4xwuA00\n3ui4A00\n1zuuA00\n2fgyA03\n1pnbB00\n5jbdA02\n3f4mA00\n2n9bA00\n5wwwA01\n2m20A00\n5jrbA01\n3rtyB01\n3ihvA01\n4gc0A01\n3g5oA02\n3kbhE00\n4b9gA00\n4n9xA01\n2o6fA00\n1r6vA02\n3r4yA01\n3dwgC00\n2da4A01\n2nt0A02\n4em6A03\n2culA00\n2xs1A03\n3dlkB03\n4novA00\n2qgsB01\n3icsA02\n1cipA02\n2llkA01\n2qr6A01\n3lnmD02\n2edvA00\n2nn6G03\n3fq4B01\n3n89A02\n2lqxA00\n1q1rA01\n2r1fA01\n3ogiB00\n3wjpA01\n4e2uA00\n3mh7A04\n4njcA00\n3hufA01\n3gwlA00\n5ml3B00\n3g9kD02\n2w3cA02\n4psrA02\n2vveA02\n4tpsA00\n1c3cA03\n4llsA00\n2obeA03\n3hx4A01\n2p26A04\n1dx5I01\n4qmhA00\n2zm5A02\n4jxyA00\n1h12A00\n1vsgA01\n4ritB01\n3ol2B02\n3iwaA02\n1w98B01\n3qd6R02\n4q4w400\n4aieA03\n3e4pA03\n2xubA05\n3k3wA02\n1kyqA03\n2idbA03\n3hhsB03\n3hcyA00\n1zzpA00\n3krmA00\n3c9uA01\n3df7A03\n5w3mA00\n3vtnA01\n2ganA02\n2q37A00\n5eowA00\n2vtwA00\n1r3fA01\n5v7qL01\n3mzlB03\n2blfB01\n3amiA01\n1ebdA02\n1sznA02\n5b1aH00\n1vhkA01\n2fefA01\n1dw0A00\n1h99A01\n1wzaA03\n1qv0A00\n3u1jB01\n3k3dA00\n2vn6B00\n4hteA01\n3ephA02\n3v3tA02\n3no0A00\n3lifB01\n3wdoA01\n2ciwA00\n4o65A00\n1f6vA00\n2qjlA00\n2ws9100\n3hidA01\n3qwlA02\n4udxX02\n3vkeA00\n3r9mA00\n2qv8B00\n4hh3C02\n1pmiA02\n4rl6B02\n3rmqA02\n1etxA00\n3fiuA00\n3m9bB01\n1xviA02\n1c4qA00\n5c0pA00\n2qtsA02\n3p32A01\n2m86A00\n1bu8A02\n4qosA02\n2jwgA00\n2cxnA03\n2opsB02\n3zq5A01\n4aqtA02\n1wurA02\n2k2sB00\n1xdiA02\n4hc7A02\n1ykhA00\n1tezA01\n2z80B00\n1h3iA01\n2kb3A01\n1wlzA01\n1dofA03\n4grvA01\n3trcA00\n3cx5A02\n1mnnA00\n4tmpC00\n3rqiA02\n2j1dG01\n3od5A00\n2ebjA00\n4xhvA00\n2lr2A00\n2y24A01\n4eneB00\n2awnD02\n2kinB02\n1stzA02\n3nfkA00\n2jj7B01\n1nziA01\n2kr1A00\n3by9B01\n2ouxA01\n2g0dA00\n4c92C00\n3c4nA01\n3l6xA01\n3ilxA02\n2kicA00\n3cvvA01\n3adyA00\n3ukgA02\n1tkeA01\n3r4zA00\n5dm6S01\n1jusD01\n5dm6L01\n3wfdC00\n3ksvA02\n2i44B00\n3q0yC00\n1yx7A00\n2bkyX00\n2wkdA00\n2r31A01\n2b9wA01\n4yosA02\n3uepA00\n2yo3A02\n2dkhA02\n3a2kA01\n2qngA01\n1szbA02\n5jn5B04\n4o1rA00\n4e01A01\n3r7fA01\n3cjiB00\n1eqgA01\n1dd9A02\n4g3vA00\n4bjuA03\n3kp1A04\n2eprA01\n3cf0A02\n2qz4A02\n1im2A03\n3zh9B03\n3dd9D02\n4nmxA01\n4l07A00\n3v9wB00\n1x6dA01\n2eq6A02\n4xsqB00\n2yt8A00\n1plqA00\n1krlB00\n4hn7A00\n1kdgA01\n4fwdA02\n4zn0A01\n2w96A01\n1ccvA00\n4kwdA00\n4m77A00\n1w8aA00\n3dk9A01\n3vdzA01\n2m74A01\n3lsjA01\n3fiaA00\n4yp6A00\n1g3gA00\n2v8iA01\n4f0aB02\n5cclA02\n2qqmA01\n3f1iH00\n1zk8A01\n4ftbC00\n2waqQ00\n3s8fB01\n2wjnC02\n1jhnA02\n5hl8C00\n2lcjA00\n1y0pA02\n5dqvB01\n1qzmA00\n1cxcA00\n4ngdA02\n3wasA00\n3goxA02\n5tj3A02\n3df7A04\n4hc9A01\n2cu3B00\n5jskA01\n3gqcC01\n2xryA01\n2hr7A01\n4n0kA00\n3vrdA02\n3njaB01\n2scpA00\n1eg3A03\n5gjoA02\n3egnA01\n3dddA02\n3nqhA01\n2l6qA00\n2mkgA00\n1ud9A00\n1qw9A01\n5glkA00\n3a01E00\n5f68A00\n1q4gA01\n1d5yA02\n3cpkA00\n3layJ00\n1nxuB02\n3i3lA01\n5m3nA03\n2yeqA01\n4arnA00\n3s5wA00\n3bulA02\n1f00I02\n5fmnA00\n3or1A02\n2r9zA02\n4fprB00\n1l6lS00\n1wmwB00\n4l3tB04\n3wkgA00\n3d36C01\n1y9zB01\n2b78A02\n4g6tB00\n3lomA00\n3loqA02\n1wurA01\n3vrhA00\n4beuA02\n3vypB01\n3pu9A00\n1s6lA02\n1b9lA00\n1k9cA00\n1fqjB02\n2eaqA00\n2y9yA04\n1dfuP00\n1emnA01\n3nufB00\n4fxkC01\n4c92F00\n3eyeA00\n4m3lD00\n3t3pB01\n3k59A06\n1xkuA00\n5agdA00\n2jc2A02\n4wqmA01\n2gu0A01\n3n05A02\n1nk3P00\n1kb2B00\n3k59A05\n5g08A02\n1uzkA01\n2fokA03\n3r84A00\n5j98B00\n1nw9B00\n3c9aA01\n1za7A00\n1zu1A02\n2c7nA01\n5dn7A00\n3ihmA03\n2w0iA00\n3p3vB00\n2lvhA00\n3fefA00\n3ucqA04\n4tqrA02\n3v69B00\n3ebbA00\n3c4aA01\n3v64C01\n2p26A03\n1z85A01\n2jn6A01\n2ykoA03\n2fpqA00\n4l4uA03\n1vdkB03\n2w2nE00\n4l5gA01\n3zucA00\n4nbqB04\n5fmuC01\n4oveA01\n2mjmA00\n4bs9A01\n1zylA03\n2ekdA00\n1sg6A01\n3qfsA03\n2r4gA01\n3e4cB00\n1ep3B02\n2vouB01\n3ih5A00\n1efuB03\n4h3vB02\n2pd0D01\n4g2uA00\n1u04A04\n2bouA01\n3zn4A00\n2vhjA02\n2iylD01\n4i2lC00\n3fdsC01\n3i5cA01\n1b8iA00\n3ctdA02\n4x9cD00\n1nbuA00\n4on1A01\n4jdxF00\n1vibA00\n2cobA01\n3hrzA03\n3dlbA04\n4f6mA01\n2bs2A02\n2ygwA02\n2y26A01\n3ka7A01\n4wyuA02\n4n6xA00\n2yubA01\n2d0oA02\n3r7fA02\n1t6lA00\n4dgkA01\n4bjtA01\n1zq1C02\n2qveA01\n1ut9A02\n4h7uA01\n2pieA01\n2z1dA03\n1twfJ00\n3rhaA00\n4bdxA00\n4l3aA02\n2h6fB00\n4aibA02\n2z1eA01\n1fs0E02\n5haxA01\n1korB01\n1ciyA02\n1iv6A00\n3cwfA00\n1o97D01\n1xioA00\n2fclA00\n2x8jB01\n4k2xB02\n3hagA02\n2x0qA02\n1im3D00\n3hgmA00\n3f1pB01\n1wzlA04\n4eefH00\n4ol8B01\n5i7zA00\n1xo5B00\n3lifA02\n4g1qA03\n4uypB00\n3hb7A00\n1y56A02\n3wb9A02\n3glvA00\n3hhwA00\n1dceA03\n2ctfA00\n4l3rA00\n4wqkA00\n4kefA00\n4dwlA00\n3nlcA02\n1vkkA00\n2wt9A00\n3bywB00\n4uwxA00\n3zhnA00\n2h9eC01\n3t41B01\n3h5xA03\n4za3A02\n1zubA00\n1y42X01\n3e04A03\n4jwqC00\n4ksnD00\n2k4rA00\n2he2B00\n1jm1A00\n2h9aB01\n2h88A01\n4aq1A04\n4z24A01\n2xlkB00\n2zbkA02\n2iruA02\n4f0zB00\n5cd2A00\n3lm3A02\n3q1pA01\n1g3jC00\n4gf2A02\n3pv2A03\n1i6uB02\n4xrmA00\n2ke4A00\n1llmC01\n5jouA05\n1x6mA00\n3ztvA02\n2nnrA00\n3fdsD00\n3i4wA00\n3pufL00\n2q9vA00\n1np8A00\n5eqtA02\n1zbtA02\n4wywA02\n1fm2B03\n5c8cB00\n1w99A03\n2ja2A01\n4r84A01\n4phjA00\n4gt6A00\n1gcyA02\n1stmA00\n5fxdA03\n1g3nC02\n3isnD02\n4rbnA01\n3afhA04\n4ygaA04\n3wajA03\n3axbA01\n2hhpA01\n3ffvA00\n2gqwA02\n3pimB00\n5ircB00\n4hroB00\n1y9bA00\n4hscX01\n1tt5B03\n3nkzA00\n1t1gA00\n4zveA00\n2c43A01\n1jekA00\n3t4lB01\n4xosA00\n1pjrA04\n3vpyA00\n2ykfA02\n1k92A03\n2hu9A01\n2b9sA03\n4f7uE00\n4q14A00\n1k61A00\n1we8A01\n1z1bA01\n4zzzA01\n4n7bA01\n1tj7A03\n1uaaA04\n3hrzC02\n3u60E02\n5apsA00\n3bgeA01\n2fomB01\n3q2bA00\n2ixaA02\n1ht6A02\n4q68A01\n5fgpA00\n2dkoA00\n4dshB00\n3mqqB00\n2e56A00\n3ligA01\n4kjmB01\n1a1hA01\n4lrtC02\n4hktA02\n5wm1A02\n1ds9A00\n1h2cA00\n2ip1A01\n3oa2C02\n1dmzA00\n4wvaB00\n3doaA03\n2y5cA00\n3rlsB00\n2rm4A01\n3amiA02\n2elkA00\n1khxA00\n5iqlA00\n2mknA00\n3ibzA01\n4jndA02\n3vwoA02\n1s7eA02\n3a7rA02\n3mn2A00\n5jolA00\n2qsfA04\n2rklF00\n1fo8A02\n1ct5A00\n3ig5A03\n5bmoC00\n4g1qA05\n4admA03\n1rr7A02\n4zpcA02\n1iyrA00\n1sigA00\n4m8rA01\n3u61A01\n1hlvA02\n3cpgA00\n2v3aA02\n1iz5A00\n1m5q101\n2h29A00\n4fhdA02\n3nf2A00\n3dk9A02\n2yadD00\n4hs2A00\n4x9jA00\n4i9qA04\n4f7uB00\n3mqzA00\n5ui5I04\n1iq8A01\n4q6vA00\n5e3sA01\n3lzqA00\n4m5dB02\n4fnqA03\n2cw8A01\n4uelA02\n2d92A00\n2cveA01\n1qd1A01\n1wthA01\n2j7nA02\n1lv7A02\n3stjA03\n2o5gA00\n1mknA00\n1whlA00\n1ic8A02\n5g5gB02\n3ajmB02\n2wlvA00\n4g59C02\n4yhbA02\n3iqcA00\n4q37A00\n2a06B01\n3uk3D01\n3nbxX04\n3jc2200\n5bnzA01\n4hstB02\n1eiaA01\n3q4hD00\n2nwtA00\n2qkvA00\n3lzwA01\n1j24A00\n4o4oA00\n1v4eA00\n4u9cA01\n3kdrA02\n3k1tA02\n2b0rB00\n3mtjA02\n1kloA02\n5b6qA00\n2xkjE01\n2wskA03\n3afhA05\n2lv2A00\n5ippB02\n4qpiC00\n1i7hC00\n3i2tA03\n1l3pA00\n2g3mF01\n1jfjA02\n2az4A02\n3zx6A00\n4i1kA00\n2j3lA03\n3fg1A02\n2l04A00\n4jykA01\n3mxjA01\n4ociA02\n1oe9B01\n4dplA02\n1zj8A04\n2ezvA02\n2absA02\n2debA02\n2ffhA01\n4a4aA02\n3v42A02\n1mg7A01\n3q2uA00\n1u7vB00\n2r2iA02\n3bs6B00\n1jlcB04\n2m2fA00\n1q2lA02\n3ug9A02\n2wfxB02\n3sxxA03\n4jzeL00\n2fmaA00\n3zbhA00\n2ggzA00\n3vseB02\n2w96A02\n1wy9A00\n2h80A01\n3mq0B02\n4g1vA03\n1gqiA01\n1ujsA00\n5gnaA00\n1x8yA00\n1r6jA00\n4nuaA00\n4pkhG00\n1rh7B01\n4h40A01\n4mzdA00\n2d46A00\n3a0oA03\n1w0tA00\n2qorA02\n4rcwA00\n3tdsE00\n3hvwA00\n2zktA02\n4udxX03\n3oakA01\n3s4yA00\n2f9hA00\n2bcxA01\n2a8eA00\n1zr9A00\n2q14H02\n2jvzA02\n4ou7A00\n1p4qA00\n5eufB01\n1v9fA01\n3cqxC00\n4k22B01\n1tx4A00\n1wdcC02\n3sdgA01\n1x3zA03\n1aduB02\n3l8kA01\n4bfaA02\n3vsfC01\n1m0dA00\n2ivfC00\n4qi1A00\n1y6zA02\n4dixA02\n2dohX00\n1sfpA00\n3lfjB00\n4jonC00\n2ph7A02\n1xhcA02\n3tbiB02\n1yg2A02\n1v9nA02\n5y7wB00\n5eksB01\n4nirB00\n4tr6A02\n4emkA00\n3fylA00\n2ha9B00\n1jr3D02\n4jokA00\n2j80B00\n3c8tA01\n5eroA00\n2i2xB02\n4yokA02\n3o53A00\n3b8mC01\n3gmfA02\n4b9fA00\n4lwlA00\n3lidA03\n3covA02\n3bonA00\n3girA01\n1nziB02\n1ulvA04\n3ixsE00\n2dwyB00\n3favA00\n2basA03\n2riqA01\n3bz5A01\n3oiqA02\n1gxmB00\n5c5sB00\n1iqpA03\n5wgiA00\n5jouA04\n4muqA01\n1q8iA03\n4fkeA01\n2p8eA00\n1mp1A00\n2oj5B01\n1y6uA01\n1mjhB00\n1fdrA02\n5dthD01\n1i71A00\n4jp0A03\n2kjxA01\n2o2cA03\n2xe4A02\n3dyjA01\n4mjkA00\n4qrbA02\n4e6nB00\n3d89A00\n3ag6A02\n5xn6D00\n3qvaA00\n4pysA01\n3nohA00\n2y4qA00\n4acvB00\n4amuA02\n1nycA00\n2d68A00\n4hstA01\n4c7oD01\n3qexA02\n2igpA00\n1ikpA02\n2xz9B00\n3qqmA02\n2hzdA00\n4x9mA01\n4ia6A02\n4rduA01\n1b69A00\n2j82A00\n4zh5A00\n2kfnA01\n3r45C00\n3h4rA00\n5a6mA01\n2qk1A01\n2ksdA00\n1rkiA01\n3hx1B00\n5gudB01\n1rp0A02\n4j27A02\n2ra1A01\n5b1aJ00\n1tizA00\n3sjlA01\n1le8B00\n1ct9B02\n3esmA00\n1q57G01\n1exrA02\n4m1uA02\n1rwxA00\n3mr0A01\n5m7oA03\n3bofA02\n2q82A00\n5cz1A00\n4o1sA00\n3ii6X02\n3lidA01\n3t33A00\n4qpgA00\n3lidA02\n4alyB00\n3i9v101\n2ljwA00\n1x2mA01\n1ujnA01\n2dlaA01\n5hzlB01\n4lhfA00\n4up3A01\n2j7qA00\n3eh1A01\n3m4xA03\n4illB01\n2pjwH00\n1aq5A00\n4up3A02\n4a8tA01\n3lo8A02\n3llkA02\n4dkkA01\n4uv7A01\n2yfvC00\n4kxfP04\n4py5A02\n3nuqA01\n4px7A00\n1oacA03\n2anrA02\n1dgwX00\n3fc7A00\n3lovA03\n3gw6A02\n2auaA01\n3a8rA01\n2pwaA00\n2qacA01\n4dyqA01\n3jz0A02\n1xeaA02\n1xkpA01\n3ljkA03\n2cw9A00\n5e50A01\n3irpX01\n5fkyB01\n3g33B01\n3rcnA01\n2rf4B01\n4ip2A03\n2xv5A00\n1o7dC01\n4m4xA00\n1uhtA00\n1ifpA00\n2yijA00\n2pd8B00\n1vk3A02\n1hqz800\n5c39A00\n3dssB00\n3fanA03\n3e18A02\n2uwiA02\n1ya9A00\n4l3tA03\n3qvpA01\n1j0hA04\n1sxjB03\n4jn9A01\n1y56B01\n4f3lA03\n4pqxA01\n5k08A00\n3mmhA00\n2r4fD01\n2ahxA01\n1jnrA01\n1v9cA00\n1wgwA00\n5nx5B00\n3zojA00\n1qqp200\n3pqhA02\n4fcyB02\n1zcjA01\n4eahA00\n3on9A00\n5o9jA00\n2r4fA02\n3kw3A02\n1s5jA02\n4c92G00\n4u1rA04\n3hq1B03\n4aw7A01\n2czsA01\n4i5sA02\n5mxcA00\n2ii0A02\n2p5oA04\n3vbhD00\n3syyA00\n4c8qA00\n3oduB01\n1vqzA02\n1oruA00\n1sezA01\n2wyhB04\n3g4nA02\n1zh8A02\n2qxfA01\n4eicA00\n2yiuB01\n3dh3A02\n2z6dA00\n3asiA02\n3e3xA03\n4l2iA01\n5hqhA00\n4ydeB00\n2d1cA02\n2lv7A00\n4o5qA02\n5y1zA01\n4mb4A04\n2fnaA02\n1b77A00\n2lz0A00\n4l7mA00\n3a1jB00\n2p28B04\n3mi8D02\n4kcaA02\n4ihqB05\n1b2pA00\n3kdrA01\n2p3fN00\n1g8kB00\n2zkmX01\n2dmqA01\n2c9lZ00\n4d0eA01\n2kq1A01\n3mgnA00\n2ja2A04\n2f2hA01\n3uk3D02\n2hpsA00\n3dgpA00\n4reyA01\n2uv1A00\n4u1rA02\n3bp1A02\n1xf1A01\n4wkzA02\n1ufgA00\n2ehgA00\n2i04A00\n2ifgA01\n2pjwV00\n1hy5B00\n2wwwC01\n4bjzA01\n3hpkB00\n3c1aA02\n1ku9A02\n1r6xA02\n1i5pA03\n4ktwA00\n1u02A02\n2gx5C00\n3jx8D00\n3k1rA02\n3gwjA03\n4ghnA02\n1ji1A03\n4wh5A00\n1jq4A00\n2basA02\n2ejwA02\n4iarA01\n1zhsA01\n4qmfB01\n2kv8A00\n2hw4A01\n4aj5S00\n4dq9B00\n2qcuB01\n3webA00\n5e9aB03\n3s44A02\n2f4mA01\n2pmiB00\n4fvmA02\n1bbgA00\n5fagB02\n5d5pA02\n2edpA01\n3i0wA01\n3q98A01\n2ghfA01\n4c2mD01\n4jc0A01\n3c8zA02\n1xc5A01\n2l0fB01\n3p8aA02\n3r0hG01\n4fz4A00\n1hwmA02\n3kajA01\n2jo1A00\n1vk3A03\n1q1vA00\n1ojlA03\n1dnpA01\n5u8uA02\n1z4hA01\n3pmmA00\n4c1sA00\n3c8cB01\n2ch7B00\n4i2zA03\n5tprA01\n4g2sA00\n4uqfG01\n3ic9A02\n2e5vA01\n2vpzC00\n1exrA01\n5djtA00\n1m56D00\n1d3yB02\n2mdgA00\n3ic9C01\n1obhA01\n4b6mB00\n3p91A00\n2jrbA00\n4ntdA02\n3o5cC01\n1utgA00\n2lt4A00\n3f8dB01\n2qsdB02\n1gs9A00\n5bs8B00\n2xcqA01\n1y2mD01\n4aybN00\n4mq3A00\n2q1kA00\n3obvF03\n2drpA02\n1vmaA01\n3un9A01\n2yjgA01\n4l9mA03\n2i2lA01\n3iwaA01\n2f48A02\n1mswD03\n2vvmB01\n2l6hA00\n1rl0A02\n2np3B01\n2lsnA00\n4jmqB01\n1hxdA03\n1ueqA00\n2e10A02\n1jkfA03\n3m4aA03\n2ygwA01\n2lycA00\n4lrzE02\n5fkbA01\n2ncoA00\n3khfA00\n1zhcA00\n1q15D02\n4rv1D00\n2x78A00\n4b4cA02\n4hytD01\n2jbvB01\n1n67A01\n3w1eA01\n2vrsC01\n3v97A03\n1cwvA04\n3tpfA02\n3h99A01\n3focA01\n1y9lA00\n1sj7C00\n2l6mA00\n4ejrA00\n3htkA00\n4lxrA02\n3tulC00\n5kxjA02\n4opwB00\n2jr3A00\n3b9pA02\n3mfiA02\n4adzA00\n1peqA02\n3encA00\n4tkcA00\n3nt1A02\n3wkmB01\n4mx8A02\n2kaeA00\n2zk9X00\n1c9bA02\n3ot4A00\n3ic3A01\n1nlxA00\n4cfrA00\n3h8lA02\n1zatA01\n1pfkA02\n2jyaA00\n1xdtR00\n5eo8A00\n1ldfA00\n4xotA01\n2eayB02\n1mzkA00\n2gn4A02\n3mk7B01\n2wl8C00\n5cbzA00\n3zxaC01\n3jsyA02\n3kujA01\n5nn4A02\n4yn3A01\n5vhgA00\n1sziA02\n3zyiA01\n2opgA00\n4h61A00\n1y8aA02\n3e6dB00\n1mpgA01\n4dqlA02\n1gk9A02\n3axaA00\n3k94A00\n3vmnA03\n3j4uH00\n4d53A00\n1vbkA03\n4a4kA02\n4dezA01\n3fkeA01\n5lltA00\n5gq9A05\n4dnxA02\n3e1tA01\n1lgpA00\n2v6zM00\n2qbyB01\n2g3mA03\n4hh2C04\n3cinA02\n4jjjA01\n2wbtB02\n2m7lA01\n5jysA00\n3h9wA00\n4mi7A00\n1yqeA02\n4g3nA00\n3dnfA03\n3c8cB02\n3vj8A00\n1odhA01\n2d42A02\n1vmoA00\n3rwnB00\n3byiD00\n4yzgA00\n4zgyB00\n2ivxB01\n3m7pA03\n2wq7A01\n1sr8A01\n5gmke00\n1ug2A01\n1zcbA02\n3d1nL02\n2jtxA01\n5hweA03\n4eeiA03\n3zdrA01\n2o90A00\n5lweA00\n3t6gC00\n2k2wA00\n4hrvB00\n2yyyA02\n1fc6A02\n1cvrA02\n2ca6A00\n4ldvA02\n4xt1A00\n5br4B01\n2bt6B00\n3go9A02\n1dt9A01\n3pf7B00\n4uu5A00\n3pehA02\n3a9fA01\n2qqkA01\n1gk4C00\n2hf5A00\n2hxiA01\n1y96D00\n2kp6A00\n2lo3A01\n4wdcA00\n1l8qA02\n4apxB01\n2w2rA00\n2gsmB01\n3hvaA00\n2r1fA03\n1jl5A00\n1lw7A01\n2vpzA01\n3if4A02\n2b4wA00\n3po8A00\n5dk5A01\n1sxjD03\n4b9cA00\n2o4tA00\n1hr6B02\n2x3nA02\n5hpfA00\n5tr9A02\n2pmvB00\n2ehwA00\n2p1jA01\n3hrdC02\n2oolB02\n3e7lA00\n4rdbA01\n3bijB00\n4qmgC01\n1rocA00\n1exeA00\n3cf4A02\n3oloA00\n5u8uD01\n3djeA01\n2ivdB01\n1bl0A01\n1wp5A00\n1io1A03\n3mfxB00\n3kuqA00\n3ndzE00\n4g6zA01\n4perA00\n1regX00\n2v8tA01\n3dghA01\n3cr8B02\n3f1pA00\n2qqpA03\n6b6uA02\n2mkvA00\n3tzlA01\n4nzjA03\n3hagA01\n1c9bA01\n1r71A01\n4jqfA01\n3b8iC00\n1o6aB00\n5einA02\n2cfqA01\n2jhnA01\n2cxaA01\n4qmfD02\n4ah6A03\n4cn5B00\n4xxlA00\n4m9vC00\n4ldsA00\n3lp1B04\n3noyB02\n3swfA00\n1irxA05\n2jafA00\n3hj4A01\n3gd8A00\n1za0A00\n4ja3A03\n2xotB01\n3dmeA01\n3hnpE01\n2x48A00\n2l4dA00\n3u7uK00\n3h09A01\n1wktA00\n1f7uA01\n3m1cB01\n4r5qA00\n3oc4B01\n2lpfA01\n2z0lA00\n3tr9D00\n3cbyB00\n3n2oA02\n4aaiA01\n3kstA00\n3gzhA01\n3uc2A00\n3gkuC01\n2anrA01\n3ns4A00\n2qtsA04\n5a5cB00\n3lk5A00\n1lf6A02\n5jo7A02\n5dm7C00\n4mo0A00\n3lzwA02\n5x6vG00\n4udgB00\n3gehA02\n3by8A00\n4lebA01\n1x58A01\n3lwzB00\n3cp5A00\n5gpiB01\n1xfiA02\n4xl1A03\n4eieA00\n4c91A03\n5cm7B01\n3mw6B00\n1o6vB01\n4rflA01\n1jnrA02\n2bvbA00\n2isbA00\n2mobA00\n3e6pL01\n3c8mA02\n1n8yC01\n3e4gA00\n2apoA01\n4fb9A02\n4mn7A00\n3moiA02\n1ma1A01\n4v2kA02\n2h7gX02\n1t3oA01\n3hveB02\n3qc7A02\n1jogA00\n2f2cA02\n1nafA01\n3covA01\n2aujD01\n3ls8B01\n1jswB03\n4gxtA02\n5hj1A00\n2rsiA03\n4qozC00\n5bvaA00\n5gpiF01\n2fgeA02\n3lqsA02\n1tfeA01\n2o8iA00\n2jh3A04\n2qqpD00\n1hcyA03\n3vavH00\n3ef6A02\n3ee4A00\n1rktA01\n2a3dA00\n3k32B00\n4phzA02\n5io9A00\n4hoiB00\n2ov7A01\n3napC00\n4r4kA00\n4m9rB00\n2j9lA02\n1pcxA01\n3cymA01\n4pn0C00\n4q4w300\n4cpgA00\n2r01A02\n4eqsA02\n3nybA01\n4ja3A02\n3oa8A02\n4kqdB00\n1qtqA01\n5cfcA00\n2z66A00\n3jvtB01\n4qcjA01\n3kq4B04\n3chxC00\n2sqcA01\n3qx3A01\n2lvvA00\n2i9cA01\n3f79E00\n1ignB02\n2fe0A01\n2bzbA00\n3w5hA02\n1sdiA00\n2ww2A02\n2zxrA01\n4k7jA02\n1jkwA02\n4hqnA01\n3k29A00\n3kwlA01\n1f5qB02\n2etjA00\n1t3qC03\n1lwjA03\n1fecA02\n1s67L00\n4i2zA02\n4iykA02\n1ci6B00\n1xb2B02\n1w33A00\n1nowA01\n4yx1A00\n2jx0A00\n3vwaA03\n3lqyA00\n4i6oA00\n4cknD00\n2wgnB01\n1k3eB01\n2hmaA01\n1bd0A01\n4cj0A02\n3nowA02\n1yvuA04\n2gy5A03\n5t69A01\n2cfoA05\n3o2tA00\n3kheA02\n5gmkm00\n3ltjA00\n5osnA00\n2wgoA00\n3kroD00\n4usaA01\n3nixB00\n2inwA01\n1tvcA02\n3eh2C01\n3cx5A01\n3cirA02\n3pmrA00\n3ab4E02\n5sx5N00\n4pvaA00\n1sxjE02\n2xdoD00\n4kp1A01\n3bm3A00\n3op1A01\n1oyzA00\n5oomW00\n1vk9A00\n3cmyA00\n1wolA00\n4dh2D00\n2e0iA01\n1fm2A00\n2qv6B02\n2hgsA01\n4a8tA02\n2zp1A01\n2df7J01\n3ge3B00\n4i0wB01\n1kb0A02\n1x0cA01\n1go3F02\n1llmD02\n5heeA00\n4c46A00\n2nqtA02\n2wshB00\n2ixtA00\n3djbA01\n2l1nA00\n4mspB02\n4mxmB01\n2pyxA01\n3oqpA00\n3k62A00\n4a91A01\n3u9tA04\n2kebA00\n1khvA03\n1y8tA03\n3up6A01\n1k4zA00\n1sxjD02\n4omfG01\n4epzA00\n5o95D01\n3pl8A02\n2qiwA01\n3avrA01\n3pvsA02\n3chtA00\n1vkyB01\n1wv3A01\n5dz2A00\n2giaA00\n3vsvA02\n1ywmA01\n3mhsC02\n4qhrA02\n3ephA03\n1zp2A01\n1gdtB03\n4a9aC01\n1t3yA00\n1kwgA03\n4idiB00\n4r6fA00\n4d2cA00\n3kepB00\n2yvyA01\n4q2qA00\n1t3cA00\n1pbwB00\n1el6A01\n3tixA02\n1jfkA02\n3gqqF00\n5vpcA00\n2yfoA03\n2xijA02\n2ey4A01\n5e62B00\n4d3xA00\n1ijqA02\n5hy0D03\n3wkyB03\n3kheA01\n3e0jB00\n5j60B02\n2bc0A01\n2kmuA00\n3wraA01\n3puaA02\n1c7sA02\n4l6rA02\n1ywmA02\n1gvhA03\n3ayjA01\n2zxeB02\n4q62A00\n4p1mB01\n5ftjA06\n4i6mC00\n4b8cD01\n2mbgA01\n3q2qA00\n4pibJ00\n4hiaA00\n1yuiA00\n1hr7C02\n2oznB02\n5cqgA01\n4h3sA03\n4qxeA01\n3cnqP00\n2vxgA01\n3c9aC00\n3pvcA02\n4gw9A02\n2mgyA01\n3o7iA00\n1zhvA00\n4uhvA03\n3a8tA02\n4l2iB00\n2id5D01\n1ysqA00\n4xeaA02\n4kbmB01\n3tnuA00\n2wnoA01\n3whkA02\n3ng7X01\n2pm7C00\n1dd3A01\n5hodA00\n3vm7A02\n4rocA01\n3canA00\n2ijqB00\n3t5oA01\n4bgbB01\n3ip3A02\n2x49A04\n2bw3A01\n4k92A00\n2wssT00\n4j5tA02\n2gefA01\n3fdjA03\n4wnyA00\n1q5nA01\n1hx2A00\n1sraA00\n1nxcA00\n1g6gB00\n4aqsA01\n1ydxA03\n5f1mA00\n3rsiB01\n5ilnB02\n4hkjD00\n1o67C00\n4nzqA01\n4z6mA03\n3n54B01\n1qauA00\n3u1kB04\n3gwmA00\n1ux6A01\n2yu5A00\n1t4bA02\n3agkA01\n3sovA02\n4b7hA01\n1bgwA02\n4irvA00\n1sxjC03\n5jzgA00\n1wrkA00\n3k92A01\n3ozoA01\n4i6jB02\n2wzpP01\n5aurA00\n4u8uM01\n2jneA00\n4aivA00\n1bcoA01\n1z2zA01\n4gw9A01\n2lyyA00\n2qgmA01\n1gk9B02\n5dnlA01\n1iieA00\n4rcaB00\n5gmki00\n4f3lB02\n2ynyC00\n1rifA01\n1rj9A01\n1s3eA01\n4h4dA01\n1x9mA01\n2i88A00\n1nupB00\n2bkyA00\n2dkrA00\n3p0yA00\n1bf2A03\n4f9cB02\n3sc7X01\n3hurA02\n3a21A02\n3nghA00\n1orsC00\n1orjB00\n2o0yB02\n5jxgA01\n5jbnA00\n4ckmB00\n4kx7A01\n4l0nJ00\n2ielA00\n1djxB01\n3cu9A00\n2ws9201\n2g3mA04\n4b21A01\n4fgmA03\n3lulB02\n2ayaA00\n5c5jA01\n5visB00\n4cruB00\n3k50A01\n5a7vB00\n2wb6A00\n4p27A00\n1r6bX05\n1p1jA02\n2zpaA04\n1d8hA00\n3oymA03\n3geeA02\n3eefA00\n2fh1A01\n4chiA02\n3o7vX00\n3he5A00\n2giaB00\n4exoA00\n1snlA00\n1i8oA00\n2hknA00\n3c18A02\n3kvwA01\n3hn5A02\n2z30B00\n3eapD00\n3o7qA01\n3fg1A01\n3jb9l00\n2gf3A01\n4r9pA00\n1jnmA00\n2zaiA04\n4h6xA00\n2k4qA00\n2jikB00\n2r4hC01\n3f1iS00\n1olzA02\n3sb1A02\n3dffA00\n3d3oA00\n4pwaD00\n4o4fA00\n1w2yA00\n4j3cB01\n2f06A00\n3l4gC01\n1o94A03\n1m6nA05\n4b4dA02\n1i5jA00\n3l3uA00\n4l9mA02\n2lraA00\n4k08A00\n3c3rA00\n4amuA01\n1kn7A00\n2wc7A02\n3e2dA03\n4wf7A03\n2fe5A00\n2i0zA01\n2qqpA01\n2fd5A01\n5csmA00\n3nzmA00\n3d3qB02\n2gytA01\n4edgA02\n5hyhA00\n4c68A00\n3dghA02\n3mm5A03\n4ol8B02\n5ip4E00\n4fp4A00\n4hytB01\n4x1hA00\n1wh1A01\n1h99A02\n4uw2A03\n1kzqA02\n4pzvA02\n4n06A02\n5aooC00\n3fmgA02\n1o9yC00\n2j4oA00\n5b4wE02\n2x8aA02\n4fwwA02\n4u4vA02\n2bl5A00\n2pnqA00\n4hu8A01\n4jwhA00\n1hi9A01\n1ni5A01\n4y5jA00\n1wjpA01\n1onfA02\n3cloC01\n4e29B00\n4hq1A02\n4tzhA00\n3q13A01\n2l9qA00\n5t1xD00\n2e9fA01\n4onsB00\n1js1X02\n3dt5A00\n4lfgA00\n2olnA01\n4g1qA01\n3t38A01\n1g5gA02\n4eqpA00\n1hbwA00\n4h3sA02\n2ao9I01\n1feuA01\n1tf6A02\n2dmpA01\n3fg8A00\n4lvnA00\n2ih2A02\n1knwA02\n3renA00\n3bc1B00\n1kfiA04\n1vigA00\n1vdkA01\n1qtxA02\n2v1uA01\n3orgA01\n3w1eA03\n3ul4B00\n5a1mA00\n1m5zA00\n4wwuH01\n2e4tA01\n5kb6A02\n4gc1A01\n2azjA00\n1b4uA00\n3luqB00\n4qqsB00\n3virC00\n2r18A01\n4ba0A01\n2k9xA00\n1uaxA00\n4lijC00\n2wnwA01\n5dhdA00\n1gppA00\n3h3aA02\n2l9dA00\n3g80A00\n2mf3A00\n5b1aK00\n1iq8A02\n3mj0A00\n2q2kA00\n5gz3A02\n1dszA00\n1wgxA00\n3zrgA00\n2dydA00\n3pkoB00\n4aanA02\n3drxC01\n5ldaB00\n1wkbA01\n1wdcC01\n3iujA02\n1hwtC02\n2ijeS00\n2igiB00\n5avuB01\n3k6qA02\n4etxA01\n2mctA00\n3dtyB02\n3rguC00\n2drpA01\n2da1A01\n2ebfX04\n3ewkA01\n2nwaA01\n3bb0A01\n3d4rB01\n1af6A00\n4e27B00\n1wh5A00\n4gfcB00\n2f5yA00\n2qjoA01\n4dhdA00\n1vg0A01\n3tw8A03\n4c2mS01\n1topA02\n6em3Q00\n3ajwA00\n4mn5A00\n2e1mA03\n1aorA03\n4yy8A01\n2nogB02\n5h3jA01\n3dhuA02\n2j4dA01\n1n93X01\n1kwfA00\n4mc3A00\n3loqA01\n2eabA02\n3d1cA02\n2p8tA02\n2ijqA00\n3sxuA00\n3uh8A00\n4hxiA02\n4lrlB02\n4jccA02\n3b8oA01\n4ic1D00\n3pesA00\n5expA02\n3oovA00\n4kg7A00\n2rsiA02\n1qnxA00\n1x6vB03\n5a04A02\n3ostA00\n4f8bA00\n1m1zA02\n4csdB00\n3r79B00\n4mx2A01\n2r2iA01\n3f6uL01\n2wb0X02\n5gaeP00\n3zdmA00\n1ntcA00\n2dxaA00\n2dgjA01\n3rpfC00\n2yggA00\n3u7qB03\n4rft000\n2iqiB00\n1wwlB00\n4b1bA00\n1rsgB01\n4wqmA03\n3m92A01\n3w5sA01\n1m0wA01\n3bh7B01\n3msuA02\n3s84A01\n1ix9A01\n3pquA01\n1v6zA01\n4gehA00\n3n40P02\n2r78C00\n3cwwA03\n2xtzB02\n2de0X01\n3e4pA02\n2kvvA00\n1kv9A02\n1qtnB00\n3v5wA02\n3qtgA01\n1wy0A00\n1nepA00\n2pg3A00\n2ijrA02\n2ek0A00\n3rx9A00\n2h21A02\n1ixmB02\n4ls9B02\n3buxB02\n3imoC00\n3n2bB02\n4ol8B03\n3ckdA01\n1cxqA00\n3hzqA00\n3tg2A00\n1zxxA02\n4omhB00\n2ixmA02\n4kw3A00\n4lgvD02\n1ignA01\n4zmhA01\n4e04B01\n5bxrA01\n5k7fB01\n4gamD00\n1w2lA00\n4ks9A01\n4pniA01\n1vk0A00\n2vlgC00\n1junA00\n1miwA02\n3uonA01\n1ydxA01\n3r4kA02\n3i18A00\n1ileA01\n4dczA00\n3ipiA00\n2zauA01\n3pmiA02\n3nlcA01\n4is1C00\n2kcaA00\n4a3pA01\n3q3qA02\n3cwwA02\n3qd7X00\n2vkcA00\n1n4kA02\n3mjqA00\n3ezuA02\n3ty1A00\n3db2B02\n4ffhA01\n2zodB01\n2ipqX02\n2vnuD02\n1uewA00\n3dd4A00\n4xbvB00\n3bc9A03\n1xzpA02\n3kdgB01\n4mvfA03\n1k0iA01\n3giuA00\n1qr0A02\n4y2fA00\n1ho8A01\n1lqtB02\n4ixjA01\n1h1oA02\n4nohA01\n2yevB01\n4wk0B01\n4ip2A02\n2yp9A01\n4q2nD00\n1ps9A03\n5j39A01\n1gd2F00\n4u63A01\n4uzsA03\n2eqxA01\n1rzhH02\n3p1gA00\n4fxkB01\n1w1oA03\n1rqgA01\n2ylbC00\n3u27A02\n2jmwA01\n2qx2A00\n4dckA01\n3js8A03\n3d8bB02\n4mh8A04\n1li5B01\n1fakL01\n2joeA01\n1dqaD01\n1qjtA00\n4nreA01\n2ocyA00\n4iv9A01\n1nf3C00\n4ftfA00\n3or1B02\n4zquA00\n1h32A02\n2qpzA00\n4xwwA02\n3iveA02\n4z8jA00\n2xn2A03\n4udxX01\n3eehA00\n3wa2X03\n3vrdB01\n3fwbA01\n4npdA00\n1ncsA00\n4kzsA02\n2kx2A00\n1p35C00\n2iw3B01\n3mk7A00\n3p24A01\n4dqaA01\n3di2A00\n3nt8A01\n3gv5B01\n3aqbA00\n2vs0A00\n1o97C00\n4hb1A00\n3napB00\n4u06A00\n4ygbB00\n2w4yA00\n1xg0B00\n5ekaA00\n2ka6A00\n4f7uG00\n3go9A01\n4n1iA00\n1htmD00\n3kp1E02\n3wqbA01\n4b2fA00\n1y0pA03\n1y4wA01\n3ceiA01\n3kq4B01\n2rqxA00\n1eexB00\n2xt9B01\n2ja9A02\n2jnsA01\n1zlpA00\n1dq3A01\n2l6oA02\n2jh3A03\n1x3cA00\n2gagC01\n3gmiA02\n1ycyA00\n4phzG00\n5dmdA00\n4nleA03\n1c75A00\n2zndA00\n2ctjA00\n2adrA02\n4fxeC00\n4tpjA00\n2fneA00\n1hzfA00\n2f2hA03\n1nijA02\n2opvA00\n1mkmA02\n4zoqM00\n1x0tA01\n5ermB00\n2m0rA00\n5x8t300\n2yzsA02\n2i8dA02\n3nisA01\n2kgyA00\n2ptrB03\n3k8zA01\n1zymA02\n3ihgA02\n2ef0A01\n3v1vA00\n3eaqA02\n4r5dA02\n3mfiA01\n3hi7A03\n2wxfA05\n1dw9A02\n3u2gA02\n2xs6A00\n3nxaB00\n2clyB00\n4xb6F00\n4v1sA00\n4l5eA00\n5jb9E00\n3pblB01\n1zybA01\n1nbaB00\n5gxxA02\n2ahfA00\n2zxrA03\n3b0gA03\n3zx4A02\n2w0nA00\n2wanA05\n1j5pA02\n3k7xA00\n3h4cA01\n3m1cA01\n2q5xA00\n4il7A00\n1kxuA01\n1vajA02\n2doqD00\n3hskA02\n4ijdA02\n2gruA01\n3fxdC00\n2ndpA00\n5fy1A02\n3c9aA03\n3dpuA03\n2g8yA02\n3uuwB02\n4h0aA00\n2dnfA01\n2wxfA01\n3mfnB00\n2lj8A00\n4mbqC00\n2kw4A00\n1ml4A01\n3zo9B03\n3fhlA02\n1yo8A03\n5lf2A03\n4x9xA02\n1l2gA00\n3ek4A01\n5wm1A03\n3c2uA01\n3qj4A01\n1k7wA03\n2ja2A05\n1e7uA03\n1js1Y01\n1ky9B04\n4du6B02\n2tbvA00\n3elbA02\n1cqxA03\n4wk5A00\n3nrfA00\n5fwsA01\n4v3iA00\n1l0wA03\n1v8cA01\n2ywwB02\n3rw6A02\n4opxA01\n2xsbA02\n4tviA02\n2olrA02\n3bpuA00\n2hosB00\n1eaiC00\n4at0A02\n4u7lA02\n3nsxA01\n1vsgA02\n2jpeA00\n3bgyA00\n2ra1A02\n2oarC01\n3a2kA02\n2wpgA04\n3nmzA00\n2mabA00\n4f1vA01\n3qfsA02\n3m91A00\n4ndcB00\n4lwsB00\n5xopA00\n2jroA01\n2as0A02\n3m97X00\n3vsjD00\n2iumA00\n2l9bA00\n4d1eA04\n2ygoA02\n2hgaA01\n1z2iA02\n2z3vA00\n3txsC01\n5hwvA00\n2b34A00\n2vxzA02\n3ve5A03\n3ktzA02\n2d7eA01\n3d55C02\n1k8uA00\n3k11A00\n2hh2A00\n3d8kD00\n4g1qA04\n3t97C00\n1ayoA00\n3bh4A03\n1so9A00\n2jilA00\n4hadB02\n1t23A00\n1vq8O00\n1oaoD05\n2egoB00\n4h63K00\n4gofA00\n3hxlA02\n5wb7E00\n2i53A01\n3lyxB00\n2d73A03\n1r5lA02\n1xdiA01\n3ikwA02\n2d56A00\n3k9xC01\n2v7qI00\n3jr7A03\n3hvzA00\n3d34B01\n2k57A00\n1t60D00\n4xeaA01\n2cg8C01\n3k7aM01\n2weuA00\n1y96A00\n2dkhA01\n2bl0B01\n2w82A03\n3wnoB04\n3tz6A02\n1ll8A00\n2chnB04\n3ioyA02\n3osgA01\n2g9wB02\n4gpvB01\n3napA00\n3hc7A02\n4om9A01\n1a02F00\n3oz2A01\n3sjmA00\n4ic6B03\n2w42B02\n5j7xA01\n1dh3A00\n3uxjA01\n2x3nA01\n5bmnA04\n4a9aA01\n3e3rA02\n3qqaA01\n1r75A00\n3fhkA01\n5b42A00\n1li5A02\n4l80D00\n2mhhA00\n1m45A02\n2yxbA00\n2e8yA04\n3b33A00\n2qjtB01\n1moxD00\n3mjoA00\n2i53A02\n4wriA00\n1a87A01\n2nykA01\n3kycB03\n2vsgA01\n1vjfA00\n4g1eA04\n3q9tA02\n3oljA00\n2c8sA00\n2jksA02\n2czrA02\n4npxA00\n3eojA00\n3irvA01\n3mnmA00\n1qhlA00\n1k04A02\n5bs1A00\n1cshA01\n5osnD00\n1cjaA02\n4g92A00\n2y30B01\n2qgaB03\n2j5bA01\n1jr8A00\n1nirA01\n3g7mA00\n3a1jC00\n4v2dA00\n1kq1H00\n2lvsA02\n3sy1A00\n2a2bA00\n1t3uB01\n2lr8A00\n3zdmB00\n1zj8A03\n4ew6A02\n1em9B00\n3aa0A01\n3iayA06\n4lmoA00\n4g0aA01\n3k6sH04\n3a7oB00\n2a66A00\n1p68A00\n1kmtA00\n1m45A01\n4q65A00\n1r76A00\n3n1eA01\n2ce0A00\n3by9A02\n4hi4A00\n2m1cA00\n5klaA00\n2db0B00\n1dpgA02\n3gdiA01\n4oifA03\n2obeA01\n2ofcA00\n2hjsA02\n4wfaS01\n1sezA03\n3px8X02\n5t5dA00\n2j7jA01\n3sduA03\n2w48B01\n2jvnA00\n2jmzA01\n4aefA04\n2fhdA02\n5kszA02\n4bwiB01\n3aaiA00\n5jelA00\n3di2C00\n3k66A01\n1q16B03\n4au1A00\n4hkrA00\n2f2pA02\n4s39A02\n3pohA01\n3nvwB03\n1ou0B00\n3wrbB02\n4ar9A03\n4u7bA01\n3ioxA01\n2dmnA00\n1wv3A02\n4zpxA02\n1lfbA00\n1kzqA01\n2pbeA02\n5oomg00\n2z73B01\n4n5xA02\n2vlaA03\n3m7oA00\n1ftrA01\n2qtfA02\n3wiwA00\n4okvE00\n1j72A01\n5eesA02\n3tviE02\n2e5yA02\n2f4lA02\n1qlsA00\n3tt9A00\n3ibjA01\n2bezF00\n1ye9A01\n1d1rA00\n2wdcA03\n3fwkA00\n1fftB01\n3kb9A00\n1pulA00\n4l69A01\n3k6rA01\n4b3fX02\n1psrA00\n2zblB00\n1mbmB03\n4ojuC00\n4z4dA02\n4gehB00\n2okxA05\n2yskA00\n4i0xK00\n4lsbA02\n2y38A01\n3i9v900\n1wveC00\n1q77A00\n3c8zA01\n5mk2B00\n2e0zA02\n1ddlA00\n1opoA02\n5bz1A00\n1wjvA01\n4j7rB03\n2lceA01\n4lusA02\n4lj9A02\n5mjvB00\n2zjsE00\n1rm6B02\n1wdcB02\n3okgA02\n1k4tA03\n1vhnA02\n3o8oB04\n1ji6A03\n3tufA00\n4l3tA02\n3k7dA03\n1lj2A00\n2c43A02\n3bh4A02\n2e42A00\n4fidA02\n1eg3A04\n1g3nC01\n3sdbA02\n4cc0B03\n2j32A00\n4ba0A03\n1lrvA00\n4e18B00\n3purA03\n1zroA02\n2f2bA00\n2p2uA01\n2k9sA00\n4nzfD02\n3jb8A00\n1irxA04\n2otaA00\n2iy9A00\n4h09B00\n1c1kA01\n4mt2A00\n1g2cB00\n1hw8A01\n1hp1A02\n2rc5A02\n4q4w100\n3oa8B00\n1zrxA00\n2pvbA00\n1kblA02\n4kjzA04\n2wnxA00\n2hsbA00\n5nioA01\n4dmiA02\n1owaA01\n1hjrA00\n3l4yA02\n1aiwA00\n3p8nA01\n2xtsB01\n1gxcA00\n2egdB00\n5e1qA03\n3a7mA01\n4v02C00\n4f6mA03\n1qqp100\n2w61A03\n2gmhA01\n3v76A01\n3qtyB01\n1jl1A00\n4fxdA05\n2a4hA01\n4m4pA02\n1um8A02\n2dh2A02\n3zn6A01\n1pyoC00\n3bo6B01\n4cycB00\n3b9qA01\n2g2bA01\n2dlkA01\n4aybA09\n3co8A02\n2ivxB02\n3wkmA02\n1np7B01\n3fg2P02\n3icyA00\n3li9A02\n1p9aG00\n2cqqA01\n4ay9X00\n2gagB01\n4aybA08\n3d1cA01\n3k65A00\n3e0yA00\n4hd1A00\n1jqjC02\n2a06A02\n4n1vA00\n3fetA00\n3kxtA00\n1iq0A01\n3nmdA00\n4xgoA00\n3dnfB01\n2a2fX01\n4ep4A00\n3aoeD01\n1m06G00\n4fzxC00\n1t6aA01\n2chgA02\n2e6mA00\n5fmoL00\n3u3lC00\n3wadA01\n4pk9A00\n1bboA02\n3w7tA03\n2b5uA02\n1llaA02\n3k13A00\n2nllA00\n1wu4A01\n4ljiB00\n2vhkA00\n2iwoA00\n3h8lA01\n1goiB03\n2gnoA03\n5i0fB04\n1fl2A02\n4mbsA00\n5ihwA01\n3i3wA04\n1xhhA00\n4nwbA02\n5b66Z00\n1yo8A01\n3e9tB00\n1zjaA03\n2pyqA00\n2r0qC02\n1w5sA01\n5jpnB04\n3besR03\n5m9oA01\n2qv2A02\n1ogqA00\n1bgfA00\n3cq9A00\n1uurA03\n2dduA02\n2rpiA00\n3m2tA02\n5fo8B03\n1x9zA01\n3ccyA01\n1g5aA04\n2dsmA00\n3b8pC00\n3a54A01\n4l9yD00\n4gr6B00\n1ztmA02\n3fg9C01\n1ds6B00\n4wnkA01\n1lvkA01\n3cu4A00\n5ky2B00\n3u28B01\n3c96A01\n4f4hA02\n1xm9A01\n3b76A00\n3npdA00\n3ic9A03\n1bpoA02\n3mw6C00\n3nt1A01\n1g1tA02\n3h4sE00\n3l0aA00\n1pzxA03\n1jbaA01\n1w9rA00\n3qwnD01\n5l77A01\n4xb3A03\n3r07C00\n1zvpD00\n2d0bA02\n5oc1A02\n3favD00\n2z5yA03\n1yduA01\n1ibrD00\n1ygcL00\n4ayoA00\n2b3yA04\n2be4A03\n2x51A07\n2m9aA03\n2o8mB01\n2napA01\n2axqA02\n4mh6A00\n1oaoC01\n4uusE00\n3eh1A05\n1lc0A02\n3qz6A00\n1k7wA01\n1mg4A00\n4krwA00\n3n8hA02\n2xfaA00\n2yrtA00\n2o99B00\n2bmbA02\n4c3xA01\n4k73A01\n4n6hA02\n4n0rA03\n2yhaA02\n2fgeA04\n3rk1B01\n4b6eB01\n2zgiD02\n2ctdA00\n2id3A01\n2qg8A00\n1z5hA01\n1ryiA01\n1xzpB00\n4jykB01\n3s84A02\n2arcA00\n2v5cA01\n2yngB03\n3x01B01\n4b8tA00\n2qkbA00\n3cx5D01\n4uwhA01\n3u3gA00\n2ze7A02\n3kraC00\n3x1lB03\n5m2pA00\n2q22A00\n2c52B00\n5kytA01\n2o3lB00\n1ksiA03\n3nwsA02\n5a2bA02\n3r1xA02\n3abqA01\n2x49A02\n3hhdA02\n4hrsA00\n2jfkD01\n2j91A01\n2is9A01\n5jemA00\n1gksA00\n1ml4A02\n3nqzA01\n2r0cA01\n3o10C00\n1ga6A00\n3qdrB00\n3g06A01\n2pusA05\n1a1hA03\n2z4vA00\n2rngA01\n3etzB00\n4dnyA00\n2inpL00\n4mboA01\n1yycA01\n4hp9A00\n3zxkA01\n1ux5A03\n4e04A02\n3fd5B01\n4fs7A00\n3m4wE01\n3rfeA00\n3zpnC00\n2np2A00\n3osgA02\n1h3fB01\n5iztB00\n1sg4C02\n4abmA00\n5ipyA01\n4i5jA02\n3q9oA02\n3qyeB01\n3vjfA00\n4r6gA00\n3h11A00\n2e8gA01\n3vv3A00\n4gf4A00\n3fgrB00\n5cxmA00\n3k50A02\n2zdjA00\n3aqoA01\n1oqcA00\n1k25B01\n3n6rA03\n3zygB01\n3o5aA01\n4mzjA02\n1t3qB02\n1xwvA00\n3d3yA01\n3hu5A00\n2vh3A00\n3pv2A02\n2d28C01\n1kloA01\n2lzfA00\n2b3wA00\n5niiB01\n4kc5D02\n1uhsA01\n3wcoA01\n1nphA01\n5tgtA02\n1b25A03\n3v67A01\n1x3aA00\n4wqdA01\n1q5nA03\n1w2tA01\n2bklA02\n2m7lA02\n2goyA00\n5nn4A05\n1h32A01\n4hp4B00\n4lzkC00\n1mxgA02\n2zxdA02\n1d2nA02\n3ci0K02\n1pw4A02\n2nrrA00\n3nycA01\n1zunA01\n5k3wB02\n2e3hA00\n3ggeA00\n3kioC01\n1j09A05\n2wnkA02\n1qksA01\n1m70A02\n3c8gD00\n2c3aA00\n3onhA01\n3bdlA01\n1a9nC00\n2xwtC00\n4knfC00\n4ch7A01\n2luyA01\n1wjpA03\n2cjjA00\n1nyrB01\n2yuhA01\n1ryjA00\n5t1xA00\n1wjpA02\n3e4wA01\n4u9hS01\n5bukB00\n1wteB01\n5ui5I01\n3edyA02\n3q5wA00\n1r21A00\n4hwmA00\n4lgtA02\n2fyuF00\n4akfA01\n2wjvD01\n1aepA00\n5gmkg00\n1rwzA00\n2wadA02\n5fr1B00\n4fvmA06\n5u3aA02\n1q74B00\n5fs8A02\n2eabB03\n1b34B00\n3v4yB01\n4w8pA01\n2fupA00\n2rtsA00\n4zurA00\n2lxwA00\n3cc1A02\n2ijd101\n2cteA01\n4wksA00\n3mlqG00\n1mgqF00\n3vw7A01\n1ij5A02\n3s28A01\n3fgaB00\n3ak2A01\n3rvyA01\n1j2rA00\n1b7tA02\n1ihjB00\n2pr5B00\n3ug3D01\n1aisB01\n1xeeA01\n3dzaA02\n3dbaA00\n3jqqD02\n2cfqA02\n2xrnA02\n1r8uA00\n1h54A02\n4kl5B00\n5koxA01\n2crgA00\n3soeA00\n2iaiA01\n4aanA01\n4fcyA01\n1jlcB03\n3mklA00\n2py5A04\n2b4vA01\n5luvA00\n1c07A00\n3ilvA02\n2hgkA01\n4mloA01\n1wmdA01\n2qtlA01\n2q3gA00\n3pm9A03\n2haiA03\n1nzjA02\n1v4aA03\n4h5bA00\n1j7qA00\n4oq8A00\n2xu6A00\n4ksaC02\n4iofB01\n4dl8A00\n3ay5A01\n1e29A00\n3fssA01\n2ze0A03\n3dshA01\n2v9tB00\n3hjcA03\n3goxA03\n4qdcA01\n3kd4A02\n1gaiA00\n3lp1B03\n2g7zA02\n1iioA00\n3fbyA01\n2izwC00\n2l3xA00\n1x7aL02\n1tuoA04\n1wxxA02\n1xn8A00\n2m4iA01\n3u27A01\n1pov100\n2q9bB01\n1pj5A03\n5x6vF00\n1ufbA00\n4uv3E01\n2cyjA00\n3s6sB00\n3ib5A00\n2v0pB00\n4he8F02\n1yu5X00\n3jamj00\n1nyaA00\n2g5xA02\n3uaqB01\n2haxA01\n4tv5A00\n2dcfA01\n1fjrA01\n2pjuD03\n4be3A00\n5aeiB00\n3sb4A01\n4griA05\n4m95A02\n1y9iA00\n1mtyD00\n2w7vA00\n3gceA00\n1n4qB00\n3afoA01\n4i6yB01\n2fqqA01\n4bx8A04\n3mk7C03\n4obuA01\n1r3eA01\n3wy2A03\n4j05A00\n3e7jA02\n3i5pA02\n4ph2A00\n4u9uA02\n1chdA00\n1c3pA00\n2raeA01\n4wanG00\n4m75F00\n3fauB00\n1k40A00\n2r6zA01\n2vlcA02\n3iv1A00\n2im9A01\n3bqyA01\n4fxtA02\n2yxnA01\n1nc5A00\n3hxlA01\n3bqwA01\n5ewpA00\n3fnrA02\n3cx5B02\n3o5yB00\n4hjhA04\n2i1sA00\n3al9A02\n4tndA02\n1yf2A01\n1l8nA01\n3eoqB02\n4h2gA02\n3n29A02\n4ne3B02\n3ddlB00\n2a67B00\n1gvdA00\n1zw0C00\n3whpA02\n2d9hA00\n5jmfA02\n1r6bX03\n4ociA01\n3lrkA02\n4hpmA00\n3gfzB01\n2o5vA02\n3sqnA02\n3pijA01\n5jcpA01\n4eiyA01\n5e6zA03\n2rrlA01\n1ppjI00\n3weoA04\n4l3tA01\n3vgfA03\n2xdwA02\n2an7A00\n2yciX00\n3t1iA02\n4hyjA00\n4qgsA01\n2y2wD01\n1wlmA01\n1s2wA00\n2piaA03\n1tozA02\n4opcA00\n4at0A01\n2yf4F00\n4doiA02\n5izaA00\n3hdiA02\n1j2jB00\n1gjwA02\n2l97A01\n4rekA01\n3p4gD00\n1u7kA00\n4jpqB00\n5m10A01\n2i2lB02\n3bwtA00\n5axgA03\n2qvaA02\n2vqeT00\n1g4yR01\n1n9rB00\n1x5rA01\n1ea9C04\n4qclA03\n4f3lA02\n2ivdA03\n3lfuA04\n2bs2B01\n1l6jA05\n1zgwA01\n5o5jT00\n1e7lA01\n3k21A02\n3cx5B01\n2osaA00\n3hzrA01\n4mixA00\n4bg5B00\n1u5eA01\n4ejqA02\n3p02A01\n4ezgA00\n2v66B00\n2j91A03\n2zmfA00\n4ygcH00\n1oznA00\n3q20B00\n3lnyA00\n1aooA00\n5koxA02\n1na6A01\n2idbC03\n2qg1A00\n3u52D00\n1gk6A00\n3lpcA00\n2ov9A02\n4iypA01\n3elsA00\n3lmmA02\n1bl0A02\n2jnfA01\n5oomF00\n2fh1B03\n1slqE02\n2m2eA00\n3eeaA00\n3k6sD05\n1hhnA00\n1ykdB02\n1nbwB00\n2nydA02\n2bw3B01\n3a04A01\n4iuhA00\n3iugB00\n3sb4A02\n3qz4A00\n3vdpA03\n2aplA01\n3na5A04\n4a1xB01\n2pofA00\n2q00B00\n2k9qA01\n3do8A00\n4k6nA02\n3tjzB00\n3gd0A01\n1pufA00\n3bdlA02\n2yuyA00\n5ek0C01\n3pnrB00\n1gk9A01\n2oyrA01\n3g5sA01\n2pw6A00\n2z4uA02\n4fdwA02\n3ix0A02\n5cgzA00\n1sxjA03\n3jyuB01\n4pq8A00\n3bzcA01\n3fcsB04\n2jfrA00\n2o8sA01\n3edfA03\n3sjlA02\n1g2hA00\n2ibpA01\n2jksA01\n3c1mA02\n2ct1A01\n4rzlA00\n4g6uA01\n4wksC02\n1r8uB00\n1rr7A01\n3kw2A01\n5lcyA00\n2wg3D02\n4h7uA02\n1c7sA01\n4u7lA01\n1pzrA00\n2p64A00\n3cjiA00\n2a1iA01\n2a25A01\n1w9eA01\n3nhqA02\n3suuA02\n3vdpA01\n5tytA00\n1zkdA03\n3o0gD00\n4dzoB01\n4xlzA00\n4u4vA01\n3a2kA03\n3qxlA00\n3op6A00\n1s5jA04\n1sziA01\n3qvsA02\n2l31A00\n1l5pA00\n3e20B01\n3gmiA01\n4k7zA01\n2ks1B01\n4b60A01\n3zg9A00\n3isrA01\n3bqoA00\n2bmoA02\n4indA01\n1harA02\n4usrA00\n3a4mA02\n2pljA02\n5ttjB01\n1h8pA01\n5b1aB01\n2nwfA00\n3suzA02\n4le7A01\n3narA00\n3pm8B02\n2w3cA01\n2o5nA02\n3dtgA02\n4tx8A01\n3ajiB00\n4jgpA02\n3kizA01\n2phnA02\n1y8qD03\n1m4jA00\n3zbeA00\n3opcA01\n2az0B00\n1dx5I02\n1nwzA00\n2dbyA02\n1ofcX04\n4ipuB00\n1s0pA01\n4q0yA00\n3mk7C02\n4bwvA00\n3d3yA02\n5i32A00\n4xb1A02\n4miyA02\n3k2nA00\n1d2tA00\n2iw3A02\n4mcwB01\n2m74A02\n4e2vA00\n4r2zA00\n4p3aA00\n2eefA01\n3nowA01\n3zqxA00\n2h88B01\n3npkA00\n2jg0A00\n1p1eA00\n1ot6A00\n3ttyA03\n1h6uA02\n2gfqA02\n4q4w200\n3shgB00\n1qqp300\n3uoeA02\n5ftjA04\n4kjmA02\n2jqqA00\n1p5dX04\n1k92A01\n2mpnA00\n2jaxA01\n1yt3A01\n3zqiA01\n2b7uA02\n2xssA00\n4l3uA00\n3su0A01\n1ggzA01\n4jr9A00\n1cf4B00\n3r84J00\n4j20A00\n3msxB00\n3l4yA04\n3rkxA03\n1ng6A01\n3zssA04\n1zp2A02\n1ydwA02\n4de9A01\n3iabB01\n3acxA00\n2e19A01\n3pv2D01\n4g38A02\n4qpiB00\n4jbzA03\n3djlA02\n4bxoB01\n3clwC01\n2o2tB00\n4dokA02\n3uiaA00\n2r4jB04\n1d4uA00\n1kblA05\n3topA05\n4ndlB00\n4iynA03\n3n54B03\n4pe0A00\n4krdB00\n2dt8A02\n2rccA01\n1aisB02\n2oy7A03\n1dx5I03\n1e8rA00\n1reqB02\n4bkxA02\n4aeeA05\n3h05B00\n4ebrA00\n5t6jA00\n1knyA02\n4aq1A02\n3akbA00\n3nyiA02\n3l7zF03\n1pd0A05\n3u61D03\n4wz9A01\n3q2iA02\n4ntqA00\n2pifA02\n4c7gA01\n4wxpA03\n2k31A00\n3gkeA01\n3f0cA01\n1kwaA00\n4f27A01\n2beqD00\n2brfA00\n1vjkA00\n4pydF00\n2l10A00\n1tc3C00\n1dgfA01\n4fcgA00\n2a1uA01\n2fgeA03\n5oomm00\n5bnzA04\n1jggA00\n4wfoA01\n4ko8B04\n5f67B00\n2jpiA00\n4qhsA02\n3c97A01\n4ybrA00\n2bouA03\n2fd6A01\n2vsvB00\n3kevA01\n3zr5A01\n3vdpA02\n1kgdA02\n1iufA01\n2yadB00\n5cqfA00\n3k2yA00\n2vjwA00\n3rlfF02\n3i0pA02\n5dfyA00\n2i71A02\n1ftrA02\n1b72A00\n5ep2A02\n4fibB01\n4bwdB00\n1pufB00\n1tuaA01\n1pnkA02\n4l9eA00\n2lfpA01\n1vq8N00\n3nl9A00\n4gc1A02\n2kzyA00\n4fbwA02\n2pmyA00\n1dd4D01\n3rc2A02\n1um1A00\n1pp0B00\n4lmxC00\n1j8mF01\n3aiiA03\n2oq2D00\n4npfX01\n4fx9B01\n4m9fA00\n3gqcA02\n1zud400\n1te0A03\n3pojB00\n4v15A02\n3bc9A04\n3ieyB00\n3m86A00\n2gkpA00\n2gb7D00\n4hb9A01\n4kkiA01\n3qmlD00\n4w97A01\n3c0dA00\n3p1yA01\n3l8kA02\n4r2lA00\n4ok4A02\n1io0A00\n1pgvA00\n4fnvA02\n2hpuA01\n2wbuA03\n3petA00\n1yyqB00\n2ya0A03\n4je0B01\n2x0kA01\n2mv2A00\n4ifaA01\n4e7sA01\n1bplA01\n3thrA01\n4k5sA02\n2mh4A00\n3rb5A02\n4e54B01\n4ebjA02\n5uswA00\n3ke6B01\n1qakA01\n2hz7A04\n2r9gA02\n2bouA02\n4jwjA00\n1gciA00\n1nhpA02\n5hb6B00\n3zurA01\n3ge3A00\n3tvkA00\n3tc1B00\n4sbvC00\n3u28A02\n4g79A00\n1lslA02\n4hjiA00\n2d0oB00\n4dezA02\n1khvA01\n3opyI00\n2hekA02\n1m70A01\n4b86B00\n4a54A00\n3g67A00\n1ci6A00\n1i2tA00\n2zpmA00\n1lpvA00\n4b9iA00\n1wdvA00\n1s6cA00\n2iwqA00\n1vr6D01\n3kxlA02\n2xocA01\n1yi8B01\n2kzbA00\n1ohgA01\n1q2lA03\n1ekeB01\n3tcqA01\n4q7fA02\n1ng0C00\n3qk9B00\n2c5sA02\n5g1aA00\n4m7cB00\n2p35A02\n1d3bB00\n3w6vA00\n4xfjB01\n5jouA01\n2rvhA00\n1wtjA02\n1kblA04\n2qt5A01\n1wqaA04\n2be4A02\n1uurA01\n5lfnD00\n3qllA00\n2kseA00\n5xs2B01\n3a02A00\n4bs9A03\n2z0xA00\n2xrhA00\n2olsA04\n4ud4A01\n1ygsA00\n4ywoA02\n1wa9A02\n1ig0A01\n3qipA05\n2p51A00\n3v9oA00\n3aljA02\n3bgeA02\n3oqbH02\n2i13A01\n4ywjA02\n2i5uA00\n2wt7B00\n4hnmA00\n2qgaB01\n4m52A02\n4u12A00\n4ghbA00\n1i16A00\n5i1uA00\n4gwbA00\n3cgbA01\n2jspA01\n3opxA02\n4pfoA01\n4wsgA04\n2r7gA02\n4uwhA03\n3b4sB01\n4glqA00\n2zc2A00\n1bhaA00\n5gmkl00\n3ctwB00\n1pw4A01\n2lvsA01\n3oouA01\n4lscA00\n2qtrA00\n2bpoA02\n2q7vA01\n3ctdB02\n4k3jB02\n5tjjB02\n3lsgA01\n3kfwX02\n4j3vA04\n1v9dB00\n4hg2A02\n4gznC01\n1kyfA01\n4fyyB02\n4a8pF01\n1rz4A01\n3oceA03\n1uv7A00\n4k17B03\n1whmA01\n1f20A02\n1qu3A01\n1z9hA02\n4atgA00\n5b0nA00\n2r7gA01\n5dc8A00\n4kk7A03\n1sxjA02\n2h9aA01\n5b02B01\n3kznA02\n4i0xL00\n3cx5G00\n4k22A02\n5kxjA01\n4roqA00\n3h5nA01\n3ohsX02\n1heiA03\n4htuA00\n4ks9B02\n1tltA02\n2cshA01\n3brjC00\n1k3eA01\n2o1zA01\n5dwyA00\n2jaeA01\n1wh7A01\n3ungC03\n3cf6E05\n4jzxA00\n1tygB00\n2ff4A03\n4qmgA02\n4il1B01\n2kb9A00\n2da5A00\n3wqcA02\n2wasB00\n2jugA01\n2vrdA00\n2g5gX01\n4mhcA01\n3dqyA00\n2o6sA00\n3lhkC02\n4g1qB01\n5dm6200\n3btvA02\n1o7dC02\n4lrzE01\n3r90A00\n3c5wA00\n1g4uS01\n3cx8B00\n4oh7A02\n3muuC01\n2cduA01\n5l7oB00\n2ee8A01\n3p5jA01\n4rlqA02\n5m7yA01\n1pyoB00\n4mb1A03\n5l3qA01\n2mfzA01\n2yqrA01\n4lcbA02\n4mloA03\n4o1eB00\n3l4yA05\n1x4qA01\n2cjqA03\n2qo3A02\n2sasA00\n2iq1A00\n5kfzA02\n1vq8L02\n2yh6D00\n3v2yA01\n2gu0A02\n4aqsA02\n3hbmA01\n3e98B00\n1iv8A05\n2hb0B02\n2vsgA02\n1lwcA05\n1wlnA00\n2zxyA00\n5jciA01\n4ia6B01\n5lm4A00\n2cyaA01\n3licA01\n5an9A03\n4mvcB00\n2higB03\n4f0qD01\n3eoqA01\n3kl2I00\n1jr3C02\n1f5qB01\n1oaoC03\n1ebfA02\n4ywzB00\n1n7vA01\n4py9A02\n3qikA01\n2piaA02\n3qyyA00\n1f86A00\n4y4nA00\n5kvsA02\n4qbdB02\n2rq7A02\n3citA00\n1favA00\n4n4nB00\n2gm3A00\n5ffiE00\n4e6nA02\n5xbfB00\n4jioB01\n1wljA00\n3dloD00\n1yo8A02\n2xapA02\n4eiuA02\n2kddA00\n2v4xA00\n4zcrA00\n4s39A01\n4y9hA00\n3ohmB02\n1m2tA02\n3kp1E01\n3nqiA01\n3dcfA01\n3oa8A01\n5hsqA02\n4hrgB00\n3rkoB02\n4jgyA00\n1d2mA03\n1y1aA01\n2exrA03\n4eojB02\n4yfuA01\n1xf1A03\n3aj7A03\n3we0A01\n3gdiB02\n4lixA02\n2z1kA02\n1qasA01\n2i9aC02\n4j19B01\n2kz4A00\n1fvgA00\n2kbiA01\n2pbiA04\n4a0eA00\n1nykA00\n4ktpA03\n6bogA06\n3u0cA00\n2o0tA02\n5e37A01\n3u66A00\n3v53E00\n3ab1A02\n1mgpA02\n1mijA00\n3zxyA00\n3p0hB01\n1j09A04\n1yr2A02\n3sm4A00\n4lwsA00\n2hczX02\n2nvaC02\n3do9C02\n3v5nD02\n3ikoC02\n2ra8A02\n2yu1A02\n1njgA02\n2f42A01\n3qi7A01\n2vc8A00\n4yhjB01\n1k8kD02\n4ba0A04\n2a06B02\n1xdpA01\n2z0wA00\n2gahA02\n4frfA00\n2y39A00\n2od1A00\n1pp9A01\n3lmlA03\n5loqC01\n4fk1A02\n4indA03\n4hc9A02\n2qtlA03\n3tduA01\n4gywC04\n2cfoA04\n1np6A02\n4wp6A00\n3tixB01\n4bcuA00\n3bh1A02\n3crmA02\n5eeaB00\n3licA02\n5szdB00\n3g2mB01\n2jheA02\n4d0eA03\n3okyB02\n2q58B00\n2bl0B02\n2ogpA00\n1aztB02\n2i7aA00\n2ve7A02\n3odcA00\n4gczA02\n2mw8A00\n3oc2A01\n4j32A00\n4c7nB00\n5m1eA02\n4tqrA01\n1e1hA00\n2yo2A03\n2guiA00\n3qwoC00\n1sxjC02\n1gaxA01\n3m6wA03\n4fzvA01\n3zy7A00\n1m5iA00\n1mtyB00\n4a69D00\n3aljA01\n3pn7E01\n3ox6A02\n3o94B00\n4bmjA00\n3oc4A02\n4gvcA00\n1tf6D01\n2oarB00\n4tpvA00\n4e57A02\n1pn0A01\n3h5cB01\n3e70C01\n4q52B00\n1ubdC01\n3ekiA02\n3w0oA01\n3mvgB02\n3cf2A06\n3p5bL01\n1h2sA00\n4nc7A00\n4wm8A00\n2q5wD00\n2qm4D02\n4dvgB00\n3px4A03\n4j33B00\n3pqsA01\n3u52B00\n4g3kA00\n3o7qA02\n3vrdB02\n2opsB03\n2f2hA04\n1vexA00\n3uv0B00\n1zzkA00\n4qbdB01\n1c3cA01\n4fk1A01\n2jdiH02\n2j5iA02\n1s1tA02\n1h6tA01\n1qqfA00\n2e52A02\n3e3rB01\n3k1uA00\n3s46A02\n4nhaA02\n3r4iA01\n4lixA03\n1bsmA01\n5fafA00\n3idfA00\n2wfpA03\n1efvB00\n3klyD00\n4e0iA01\n3u28A01\n3tnjA01\n4p6vF01\n3fd9A03\n2qndA02\n2dlqA02\n2uwmA01\n3mseB00\n2whxA01\n4du6E01\n4gz8B02\n1am2A00\n2nutA05\n1ljoA00\n3cqcB01\n3bosA02\n5ilqA01\n3ujhA03\n2veaA02\n2bb6A01\n1b9wA01\n2iidA02\n3mk7B02\n1yiqA02\n3uoaB02\n3m19A00\n3oqcA02\n1hlvA01\n2y3vD00\n2igtA02\n3mp7B00\n5ekwA01\n5ic0A03\n4qtrC00\n2rciA00\n1y8xB00\n1l5jA01\n1n1iC02\n1q57G02\n2iv2X01\n2xdaA00\n4f5cF00\n3bwhA02\n2ej4A01\n2dpfA00\n5lqfB01\n2uw1B00\n2zosA02\n1qw2A00\n1zb1A00\n3cwwA01\n4ipeB04\n1mo9A01\n1d5tA01\n4qrhA02\n2v9kA01\n1p5vB00\n2advC02\n5gljC00\n1zkgA01\n1sxjE03\n4dw1A01\n2p2sA02\n3k93A00\n4okeA00\n2m8gX00\n1d06A00\n4v0sB00\n2fq4A01\n1sgjA00\n4xtlA00\n5h0pA00\n4g38A03\n5kfnA01\n4iq0A02\n3fbiC00\n1t94A03\n1abrA02\n2c9kA03\n1f7cA00\n1fnnA01\n1a6cA02\n2xs1A02\n1fecB01\n3u1uA01\n2qkwA00\n3k8kA01\n2astB00\n1oh1A00\n1xb2B03\n1o2dA01\n1gr0A02\n1lmjA00\n2iewB00\n4od6A00\n4n5xA01\n3godB02\n3okgA01\n1gntA04\n3awuB01\n5b66z00\n3wfdB00\n4dmiD01\n3vtiA07\n4khnB04\n2qndB01\n2jaxA02\n3iayA03\n2x5kP02\n2p3wB01\n2a01A02\n2wbsA00\n1vm9A00\n2dplA01\n3akjA02\n1a5tA03\n2fp3A01\n2yorA00\n4dxwB01\n4m1hB00\n3p0iB02\n2wx3A00\n3zr8X00\n4zacA03\n4m7dA00\n4kqeA03\n1w0hA00\n4jgwB02\n2w4fA00\n5m0yB02\n3l8iA01\n3snpA01\n2egvA01\n1ua7A02\n4nbgE00\n2rpcA03\n3smtA02\n5a8cA00\n3sdbA03\n4bxoA01\n1i2kA02\n4tm5A02\n5l0vB00\n3ly7A01\n5noaA00\n4c3xB02\n5hn9C00\n4ggfA00\n3fcsD04\n4im6A00\n5fs8A01\n1f8vC00\n1b9wA02\n4phzA01\n4ntcA02\n3rfsA00\n4fhoB00\n5e37A02\n5tgzA01\n3qxyA02\n5o0xA02\n2ia2A02\n4a37A01\n3p5jB01\n2fb7A00\n4wf2A03\n5f3mA00\n3he5B00\n4q0hA02\n2z84A00\n4ew7A00\n3s6pA02\n4nwvA01\n3tfiA00\n4nx9A02\n1k25D01\n3we9A00\n1dmlA00\n3w9eC00\n4qmaA01\n1gqeA02\n4b1zM02\n5gmzA00\n4fcaA01\n4ktyA02\n4gkgA00\n2y26A02\n2dpkA01\n2qtwB01\n1h1oA01\n1nrzA00\n1mnmC00\n3r2pA01\n4fcaA02\n2yg9B01\n3gaeA00\n1yzvA00\n3fcsA04\n1ofcX02\n3cswA02\n3ce9A01\n4w8kA02\n3bdlA03\n1xk4D00\n4c9yA00\n3qipA02\n4gznC02\n2zwiB02\n4l8nA01\n2qy9A01\n4r3nA02\n1gkmA01\n3tz1A00\n1jqjD03\n1u53A00\n2gv8A02\n3bsuA00\n3u61C02\n3hdiA01\n3t92A00\n4a53A01\n1szwA01\n5b2nA00\n1widA00\n4ebaG00\n4h63Q04\n3grfA02\n3aiiA01\n3uwpA01\n4hfsA00\n4cy8A01\n1mv8A02\n2xsdC02\n4dooA02\n4dmgA02\n2g1eA00\n1vq8B03\n3ub8A00\n1t6t200\n1nl1A00\n1qx2A00\n1dvoA00\n1jnrB02\n3hr0A01\n3kd9A02\n1y1xB00\n2ifcA01\n2a2pA01\n3draB00\n1oaoC02\n1n62A01\n3hl4B00\n4cckA03\n2yg5A01\n3n4pC00\n2yx1A02\n3exaA03\n4jcwA02\n3vn0B00\n4bxfA03\n3qyfA02\n2yxxA02\n1xeuA01\n2zahC01\n4f6mA02\n2m83A00\n4ntcA01\n3tbdA02\n2ziwB01\n2kbsA00\n3nksA00\n2c9oB03\n4jpzB01\n3rkqA00\n4ackB00\n3bfmA02\n1wxqA03\n4yi8A01\n3mhvA00\n2e5aA02\n3kl6B00\n2e3uA02\n1au7A02\n1lmlA02\n1fexA00\n2bkiD01\n3ogiC00\n4qiqA00\n4do4A02\n2e7zA01\n3sykA02\n5dgrB02\n2v9yA01\n3cwzB03\n3p0hB02\n2xguA00\n2e3iA00\n3rnrB00\n1w7cA01\n2v3aA01\n3dsoA00\n1sc3B00\n4m7dI00\n4kseB03\n1rieA00\n3od8F00\n5iu1B00\n3rbyA01\n3mlqH00\n1kskA02\n3mvpA01\n3k9xC02\n2nutA04\n4bvnA00\n1e57B00\n1i8fE00\n4ntdA01\n2f33A01\n1ij5A03\n1pj5A01\n4griA04\n1colA00\n2gzvA01\n2cu7A01\n4adyA02\n4wxaA00\n1fi6A00\n3okqA00\n4ffbC00\n1jr3D03\n3c2bA01\n3k21A01\n4ymeA00\n3ajfD00\n3qrlA00\n4g1qA02\n2jbvA03\n2w3sA05\n4i8oA01\n1o75A02\n1cozA00\n5h3jA02\n1x9dA00\n4qclA02\n1ta9B01\n4m78G00\n3dyjA02\n2f68X01\n1jmvA00\n3lovA01\n2ks9A00\n3gefA00\n3fw6A01\n2vqpA01\n5do8B03\n1h32B00\n1he1A00\n4yi8A02\n4i6mD00\n1i6kA01\n3he4B00\n3v10A01\n4eqsA01\n2gliA01\n2pqgB02\n3d30A02\n1iapA00\n1rcqA02\n3askA02\n1gu2A00\n3mtvA01\n3a5vA02\n4djaA01\n3cgbA02\n2qvwD02\n3k6oA01\n2q0lA01\n3d00A02\n3viuA03\n3w1eA02\n3oeeI00\n3rfzB04\n4k51B00\n4cnmA00\n1yacA00\n4yn3B00\n4bt9A01\n3q12B02\n2b1yA00\n1x9mA03\n3k6sD04\n3c19A01\n2be4A01\n5h3xA03\n4hh3A01\n2gd7B00\n2vovA00\n3snoA02\n1u7bA00\n1vddB01\n5ahwC00\n4i0xG00\n4f7uC00\n3vhtB02\n3d9sA00\n1o7dB00\n4qreA01\n3n6xA03\n4h4dA03\n1d3bC00\n5k7fA01\n1c8nC00\n2h3lB00\n1ncxA01\n2gliA04\n1koyA00\n2w3gA00\n1pmmC01\n1llnA02\n1gff200\n2x8sA01\n3iwvB00\n3ut4A00\n2ovjA00\n1y1aA02\n2je6I03\n3wdhA04\n2ok5A02\n1w6kA02\n3oioA00\n2xszD02\n3kljA02\n4jrfA01\n1ccwA00\n2gh8A01\n3rrsA04\n1qhhC00\n3pggA00\n1fp3A00\n2i9aB01\n1y1uA03\n1f7lA00\n1gu4A00\n4jgiB02\n3v8eA00\n3cwiA00\n2zutA04\n3ivlA00\n3o5nG00\n2cs7A00\n3gwqA02\n1ojjA00\n2qvkA00\n1u5kA03\n3aq0G00\n4zy7A00\n3h3mA00\n2vlqA00\n1nwqA00\n2of3A00\n1u8bA01\n1qa4A00\n2uuzB00\n5b1aG00\n1csbA01\n2yusA01\n1n7eA00\n2yxzD01\n1s2xA00\n1xlqA00\n1mh3A03\n3vsjA00\n3ge3E00\n2jzaA01\n4dolA02\n4udqA01\n2vp8B00\n4k7zA02\n2qsfA01\n3kksB00\n3zh9B02\n1yelA00\n4cp6A00\n1aqsA00\n4a9aA03\n5tr4A02\n4m44B00\n3b34A01\n2l3uA00\n1krhA03\n4wfoA05\n3kv5D03\n3obfA00\n4gc0A02\n2m5sA00\n1n62C02\n2yy5A01\n4kt6A01\n2zyrB03\n2v3iA00\n2j7jA03\n1r0oB00\n4qq1C01\n2ywlA01\n4aqrD00\n2v3cC01\n2qsrA01\n3vw4A01\n3w42A00\n3mhvC00\n1oaoC04\n5y77B01\n2zfdA00\n1v5vA01\n1surA00\n4hq1A01\n2o9gA00\n3lyuA01\n3ihmA01\n1ig3A02\n2wjnC01\n2ys9A00\n1fipA00\n1oygA01\n2hr7B01\n2qa1A02\n3lyrA00\n4xekA00\n4xwjA00\n1q2lA04\n1x6fA00\n2ykfA01\n1xqrA00\n3qrxA02\n5xs2B02\n1qfjA02\n1nh2D01\n4u9nA00\n4en6B02\n3ci0K03\n2bz6L00\n2z1pA01\n3u9wA01\n4iguA00\n3cebA02\n3memA01\n2i10A01\n3cwwA04\n3sjsA01\n4gvpA01\n4mn0A00\n4eclA02\n1ju2A01\n4jgpA01\n1xg4D00\n3gs3A00\n1hr6A01\n1v5dA01\n1jv2B03\n3nauA00\n3effK02\n3lyeA00\n4iejA00\n3ukvC01\n2j66A02\n3sxuB00\n1qhtA02\n4d90A02\n5vpeB00\n3kinB00\n4emhA00\n4mzgB00\n3qvpA03\n2ynzC01\n5vqfB01\n2ltpA00\n1yspA00\n1u3dA01\n4fe7A03\n4f7uF00\n3i2mX00\n1uzkA03\n5kszA01\n3dorA02\n3hbxA01\n4gh9A01\n4oh7A01\n4csqA00\n1hf2C02\n3lfvB02\n1in4A03\n3eh2A05\n3hfoB00\n1qxfA00\n3r4rA01\n2r44A01\n3ol4B01\n1td6A02\n2gm2A01\n2fh1A02\n3abiB02\n2yy0B00\n5lt5A01\n5e1yA00\n4h9dB00\n3amkA03\n5twbA01\n3al8B02\n2pwwA00\n3bjnA00\n4h8aA02\n4tmaJ00\n1hx6A02\n3cjiC00\n3oyzA01\n3q4hC00\n2opoC00\n2vwsA00\n2omkB00\n5k8cA01\n4aycA01\n2wxuA02\n4a0tA03\n1hehC00\n2vrqA01\n4pelA02\n2ri9A00\n2bgwB01\n4c2uA04\n3vcaA02\n1njgB01\n2hr3A01\n1eq1A00\n4f55A01\n3rrkA02\n3a0sA00\n1r6vA03\n1sf8G00\n2gloA00\n1irxA01\n1ihmB01\n3ieeA01\n4z4dA04\n5c05B02\n4lizA00\n3gwnA00\n1rmdA02\n2ckwA03\n3m07A04\n2gj3A00\n3eb7A03\n1kqpA00\n2z4sA02\n1zu4A01\n1t1uA01\n2pjqA01\n2hr7B03\n4g3aB00\n2jv8A00\n3g39A00\n4fmrA02\n3rg0A03\n4oqjA02\n4r3aB01\n2xfvA00\n3wryA01\n1ddgA02\n1kbhA00\n3va4A00\n4fvmA03\n2o70B00\n4k35A04\n2sqcA02\n3rrrG02\n2mekA00\n1at0A00\n3gt5A00\n5flwA00\n4ii2A05\n6b0sC00\n4fb5A02\n1ohnA00\n2l7nA00\n4gklA02\n2xtzA02\n4xgiA01\n5eufA02\n3wpuA01\n5e8dA00\n3msuA01\n4lrtB02\n2ihdA02\n3ivpC02\n3ziyA03\n2fi9A00\n5l0rB00\n1jb7B00\n4zgfA00\n4gmuA02\n3aqbB00\n4jg5A01\n5ool200\n4mg4C00\n2y4rA02\n1b37A01\n4k5yA01\n1mxrA00\n4gouA01\n3fewX01\n4jioB02\n1vm0A00\n1zavA02\n2kl1A01\n2nzwA01\n5i8gA03\n2dkoB00\n4gw9C04\n3ntdA01\n4uafB00\n3weoA03\n2ra2B00\n3ttgA00\n2jzxA02\n1kcfB00\n3cjrB02\n3nbkD00\n3ejbB02\n2py5A01\n3f4lA02\n1s3jB01\n4o06A00\n3s5zA02\n1r71A02\n2lwyA00\n3sfjA00\n4oj5C04\n1guxB00\n1tj7A01\n4bv4R00\n1vm6A02\n3li9A01\n3c9qA00\n3jszA03\n4adiA01\n1a41A01\n3hnoD02\n5jtwA03\n1v9dC02\n7odcA02\n5l6wC00\n1hcrA00\n3q98A02\n1xngA01\n2wnkA01\n2ae8B01\n1jv1B02\n4ha6A01\n3zyyX01\n3zt9A00\n2h56B01\n3e9vA00\n2qybA00\n2d5vA02\n5gp9A01\n4e2xA03\n1k8kD01\n2wmmA01\n5fiwC00\n2eh3A01\n3dewA01\n2ra8A01\n1j20A01\n3o6xA02\n3kk7A03\n1a6cA01\n1v9xA00\n1wwpA00\n1owfB00\n2w6aB00\n2jqjA01\n3g74C00\n2rczA01\n3afgB01\n2e2aA00\n5lt5A02\n3pjxA01\n4bwiB02\n2nynA01\n3gwbA02\n3zqcA02\n3lywA00\n2icwG01\n1upkA01\n4narA02\n1zu1A01\n3e82E02\n1ls1A01\n3nvwB01\n4b9wA01\n1i82A00\n4zzxA01\n1wd5A02\n1wzzA00\n3ptyA01\n2c34A00\n1rsgA01\n4ce7B00\n4mu3A02\n1a0sP00\n1v7wA03\n2vncB03\n2gq0B02\n3k0yA01\n4cidA03\n3p4uA00\n2wcbA00\n1wg6A01\n3ku3B00\n4o59O02\n3k30A03\n1tf6A03\n3wozB00\n2clyA00\n1w6kA03\n3wi3B00\n1iufA02\n2jrmA00\n3id1A00\n3ft1C00\n3bmvA02\n3gqsB00\n4eojD01\n3mtkA00\n3v42A01\n4r70B02\n4ibnA01\n1f2nC00\n1n3lA01\n2wb4B01\n2a1rB01\n5l44A01\n1hfeL03\n5t69A02\n1d66B02\n2lfcA00\n4ha6A02\n3ca8A02\n5a8iA00\n1suuA00\n2bhzA04\n4bz4B00\n1xtaA01\n3evnA02\n3gzkA02\n2a1kA00\n3m03B00\n2p67A01\n5ibwA00\n4jj7A00\n4fgqB00\n3m7pA02\n5fmoS00\n3ue6C00\n5lxuA00\n1mo9A02\n5cr5A02\n1doiA00\n4ka7A01\n5jciA02\n4hr1A00\n5ax0A00\n1dmgA00\n4okmD00\n4h4rA01\n3wguB00\n4urgA00\n4ntqB00\n3kljA01\n1rfsA00\n2knqA01\n3t69A02\n1u8bA02\n3ir9A01\n3lg3B00\n1gv2A02\n1gp8A00\n3dadA00\n3nvqA02\n1b9rA00\n2wbuA01\n2xqhA02\n3a1pB00\n4koaA02\n1vq8C00\n2qk2A01\n1krhA01\n2bs2A04\n2iihA00\n3itfA00\n5a0jA00\n5j60A01\n1l5aA02\n1p7nA00\n1uasA02\n3a1gA00\n3anuA02\n3bczA00\n4durB06\n3tedA02\n3nkeA00\n4nqfA00\n2wr1C01\n2i06A01\n2fyuI00\n4jvhA00\n3c02A00\n4h17A00\n3bwlB00\n1owfA00\n4g0aB02\n3ugfA01\n1na6B02\n2cduA02\n2gfqB01\n1yf2A03\n3myuB02\n4eetB00\n2osxA01\n1n7zA01\n3a1jA00\n2l32A00\n4h31A01\n4xpcA01\n3s3tA00\n3vx0A02\n2wdsA00\n3bg3A04\n1g33A00\n1k94A00\n2fiqA02\n4a1rC00\n5j71A01\n3gwbA01\n1c52A00\n2qfpA01\n2eiyB02\n4ix7A00\n1qr0A01\n4kwtA02\n2fbaA00\n3pm8B01\n3by7E00\n3vn5A02\n3hisA02\n3mxqC00\n3mhdD02\n1wvfA03\n1jo0A00\n3c9fA02\n1izcA00\n3b0gA02\n4bwjA01\n2r0cA02\n3n91A01\n2ej9A02\n3fb9B00\n3m0aA00\n4dqyC03\n3mcwA00\n1wi4A01\n3cs1A01\n4g1mA04\n2qdjA02\n1qu7A00\n2feaA02\n1k8kF00\n4zcdB01\n2nabA01\n1w2dB00\n3uoaB01\n5svvD00\n1seiA02\n1uw0A01\n1yumA00\n2o6yC01\n3u0oA01\n3ajmA01\n3p42A02\n2y3nB00\n4pabA03\n5mfiB00\n1h8pA02\n1wy5A01\n2gv8A01\n3b8eB00\n1rknA00\n3vx7B00\n3f1sB01\n2ab1A00\n4wxwA00\n5b7wA02\n1bg1A03\n6b4oA02\n3vrdA01\n4mkzA02\n1gnlA03\n4zw9A00\n3cs1A02\n4olnA00\n1kq3A01\n3woeA00\n4hteA03\n4g80T00\n4c92A00\n2c36A00\n2jisA01\n4q2pA00\n2isnB00\n4aqsA03\n4wwmA00\n4qbuA01\n3ojaA02\n3cxbA01\n3kdjB00\n1u5hA00\n1vk6A01\n5fb8C00\n1xg8A00\n3wcqA00\n2jx5A00\n4u6dA00\n4jadA01\n4oeoA00\n3ewkA03\n2a01C01\n3g2oB01\n2gpjA02\n2cwoA02\n1dtjA00\n4a24A00\n2kdcA00\n4jq9A02\n3gqcD02\n4djgB00\n2hyjA01\n3ntnA02\n1yukB02\n1dofA02\n1v9kA00\n2w1rA00\n1nqlB00\n1z2nX03\n4bfoA00\n3deeA02\n3i0wA03\n2qkpD00\n3c5nA00\n1kptA00\n2ct9A00\n2kvpA00\n5ipyA02\n4cbuG00\n4h4kA01\n1dk8A02\n2c1iA01\n2optB01\n3i6dA01\n3wryA02\n4pabA01\n3kqgA01\n2lg1A01\n3t91B00\n2ixdA00\n3a03A00\n1v5iB00\n3gozA01\n3rdeA02\n2aaoB00\n3bk6A02\n3i5pA01\n3njaA01\n"
  },
  {
    "path": "alphafold_casp13/two_dim_convnet.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Two dimensional convolutional neural net layers.\"\"\"\n\nfrom absl import logging\nimport tensorflow as tf  # pylint: disable=g-explicit-tensorflow-version-import\n\n\ndef weight_variable(shape, stddev=0.01):\n  \"\"\"Returns the weight variable.\"\"\"\n  logging.vlog(1, 'weight init for shape %s', str(shape))\n  return tf.get_variable(\n      'w', shape, initializer=tf.random_normal_initializer(stddev=stddev))\n\n\ndef bias_variable(shape):\n  return tf.get_variable(\n      'b', shape, initializer=tf.zeros_initializer())\n\n\ndef conv2d(x, w, atrou_rate=1, data_format='NHWC'):\n  if atrou_rate > 1:\n    return tf.nn.convolution(\n        x,\n        w,\n        dilation_rate=[atrou_rate] * 2,\n        padding='SAME',\n        data_format=data_format)\n  else:\n    return tf.nn.conv2d(\n        x, w, strides=[1, 1, 1, 1], padding='SAME', data_format=data_format)\n\n\ndef make_conv_sep2d_layer(input_node,\n                          in_channels,\n                          channel_multiplier,\n                          out_channels,\n                          layer_name,\n                          filter_size,\n                          filter_size_2=None,\n                          batch_norm=False,\n                          is_training=True,\n                          atrou_rate=1,\n                          data_format='NHWC',\n                          stddev=0.01):\n  \"\"\"Use separable convolutions.\"\"\"\n  if filter_size_2 is None:\n    filter_size_2 = filter_size\n  logging.vlog(1, 'layer %s in %d out %d chan mult %d', layer_name, in_channels,\n               out_channels, channel_multiplier)\n  with tf.variable_scope(layer_name):\n    with tf.variable_scope('depthwise'):\n      w_depthwise = weight_variable(\n          [filter_size, filter_size_2, in_channels, channel_multiplier],\n          stddev=stddev)\n    with tf.variable_scope('pointwise'):\n      w_pointwise = weight_variable(\n          [1, 1, in_channels * channel_multiplier, out_channels], stddev=stddev)\n    h_conv = tf.nn.separable_conv2d(\n        input_node,\n        w_depthwise,\n        w_pointwise,\n        padding='SAME',\n        strides=[1, 1, 1, 1],\n        rate=[atrou_rate, atrou_rate],\n        data_format=data_format)\n\n    if batch_norm:\n      h_conv = batch_norm_layer(\n          h_conv, layer_name=layer_name, is_training=is_training,\n          data_format=data_format)\n    else:\n      b_conv = bias_variable([out_channels])\n      h_conv = tf.nn.bias_add(h_conv, b_conv, data_format=data_format)\n\n    return h_conv\n\n\ndef batch_norm_layer(h_conv, layer_name, is_training=True, data_format='NCHW'):\n  \"\"\"Batch norm layer.\"\"\"\n  logging.vlog(1, 'batch norm for layer %s', layer_name)\n  return tf.contrib.layers.batch_norm(\n      h_conv,\n      is_training=is_training,\n      fused=True,\n      decay=0.999,\n      scope=layer_name,\n      data_format=data_format)\n\n\ndef make_conv_layer(input_node,\n                    in_channels,\n                    out_channels,\n                    layer_name,\n                    filter_size,\n                    filter_size_2=None,\n                    non_linearity=True,\n                    batch_norm=False,\n                    is_training=True,\n                    atrou_rate=1,\n                    data_format='NHWC',\n                    stddev=0.01):\n  \"\"\"Creates a convolution layer.\"\"\"\n\n  if filter_size_2 is None:\n    filter_size_2 = filter_size\n  logging.vlog(\n      1, 'layer %s in %d out %d', layer_name, in_channels, out_channels)\n  with tf.variable_scope(layer_name):\n    w_conv = weight_variable(\n        [filter_size, filter_size_2, in_channels, out_channels], stddev=stddev)\n    h_conv = conv2d(\n        input_node, w_conv, atrou_rate=atrou_rate, data_format=data_format)\n\n    if batch_norm:\n      h_conv = batch_norm_layer(\n          h_conv, layer_name=layer_name, is_training=is_training,\n          data_format=data_format)\n    else:\n      b_conv = bias_variable([out_channels])\n      h_conv = tf.nn.bias_add(h_conv, b_conv, data_format=data_format)\n\n    if non_linearity:\n      h_conv = tf.nn.elu(h_conv)\n\n    return h_conv\n"
  },
  {
    "path": "alphafold_casp13/two_dim_resnet.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"2D Resnet.\"\"\"\n\nfrom absl import logging\nimport tensorflow as tf  # pylint: disable=g-explicit-tensorflow-version-import\n\nfrom alphafold_casp13 import two_dim_convnet\n\n\ndef make_sep_res_layer(\n    input_node,\n    in_channels,\n    out_channels,\n    layer_name,\n    filter_size,\n    filter_size_2=None,\n    batch_norm=False,\n    is_training=True,\n    divide_channels_by=2,\n    atrou_rate=1,\n    channel_multiplier=0,\n    data_format='NHWC',\n    stddev=0.01,\n    dropout_keep_prob=1.0):\n  \"\"\"A separable resnet block.\"\"\"\n\n  with tf.name_scope(layer_name):\n    input_times_almost_1 = input_node\n    h_conv = input_times_almost_1\n\n    if batch_norm:\n      h_conv = two_dim_convnet.batch_norm_layer(\n          h_conv, layer_name=layer_name, is_training=is_training,\n          data_format=data_format)\n\n    h_conv = tf.nn.elu(h_conv)\n\n    if filter_size_2 is None:\n      filter_size_2 = filter_size\n\n    # 1x1 with half size\n    h_conv = two_dim_convnet.make_conv_layer(\n        h_conv,\n        in_channels=in_channels,\n        out_channels=in_channels / divide_channels_by,\n        layer_name=layer_name + '_1x1h',\n        filter_size=1,\n        filter_size_2=1,\n        non_linearity=True,\n        batch_norm=batch_norm,\n        is_training=is_training,\n        data_format=data_format,\n        stddev=stddev)\n\n    # 3x3 with half size\n    if channel_multiplier == 0:\n      h_conv = two_dim_convnet.make_conv_layer(\n          h_conv,\n          in_channels=in_channels / divide_channels_by,\n          out_channels=in_channels / divide_channels_by,\n          layer_name=layer_name + '_%dx%dh' % (filter_size, filter_size_2),\n          filter_size=filter_size,\n          filter_size_2=filter_size_2,\n          non_linearity=True,\n          batch_norm=batch_norm,\n          is_training=is_training,\n          atrou_rate=atrou_rate,\n          data_format=data_format,\n          stddev=stddev)\n    else:\n      # We use separable convolution for 3x3\n      h_conv = two_dim_convnet.make_conv_sep2d_layer(\n          h_conv,\n          in_channels=in_channels / divide_channels_by,\n          channel_multiplier=channel_multiplier,\n          out_channels=in_channels / divide_channels_by,\n          layer_name=layer_name + '_sep%dx%dh' % (filter_size, filter_size_2),\n          filter_size=filter_size,\n          filter_size_2=filter_size_2,\n          batch_norm=batch_norm,\n          is_training=is_training,\n          atrou_rate=atrou_rate,\n          data_format=data_format,\n          stddev=stddev)\n\n    # 1x1 back to normal size without relu\n    h_conv = two_dim_convnet.make_conv_layer(\n        h_conv,\n        in_channels=in_channels / divide_channels_by,\n        out_channels=out_channels,\n        layer_name=layer_name + '_1x1',\n        filter_size=1,\n        filter_size_2=1,\n        non_linearity=False,\n        batch_norm=False,\n        is_training=is_training,\n        data_format=data_format,\n        stddev=stddev)\n\n    if dropout_keep_prob < 1.0:\n      logging.info('dropout keep prob %f', dropout_keep_prob)\n      h_conv = tf.nn.dropout(h_conv, keep_prob=dropout_keep_prob)\n\n    return h_conv + input_times_almost_1\n\n\ndef make_two_dim_resnet(\n    input_node,\n    num_residues=50,\n    num_features=40,\n    num_predictions=1,\n    num_channels=32,\n    num_layers=2,\n    filter_size=3,\n    filter_size_2=None,\n    final_non_linearity=False,\n    name_prefix='',\n    fancy=True,\n    batch_norm=False,\n    is_training=False,\n    atrou_rates=None,\n    channel_multiplier=0,\n    divide_channels_by=2,\n    resize_features_with_1x1=False,\n    data_format='NHWC',\n    stddev=0.01,\n    dropout_keep_prob=1.0):\n  \"\"\"Two dim resnet towers.\"\"\"\n  del num_residues  # Unused.\n\n  if atrou_rates is None:\n    atrou_rates = [1]\n  if not fancy:\n    raise ValueError('non fancy deprecated')\n\n  logging.info('atrou rates %s', atrou_rates)\n\n  logging.info('name prefix %s', name_prefix)\n  x_image = input_node\n  previous_layer = x_image\n  non_linearity = True\n  for i_layer in range(num_layers):\n    in_channels = num_channels\n    out_channels = num_channels\n\n    curr_atrou_rate = atrou_rates[i_layer % len(atrou_rates)]\n\n    if i_layer == 0:\n      in_channels = num_features\n    if i_layer == num_layers - 1:\n      out_channels = num_predictions\n      non_linearity = final_non_linearity\n    if i_layer == 0 or i_layer == num_layers - 1:\n      layer_name = name_prefix + 'conv%d' % (i_layer + 1)\n      initial_filter_size = filter_size\n      if resize_features_with_1x1:\n        initial_filter_size = 1\n      previous_layer = two_dim_convnet.make_conv_layer(\n          input_node=previous_layer,\n          in_channels=in_channels,\n          out_channels=out_channels,\n          layer_name=layer_name,\n          filter_size=initial_filter_size,\n          filter_size_2=filter_size_2,\n          non_linearity=non_linearity,\n          atrou_rate=curr_atrou_rate,\n          data_format=data_format,\n          stddev=stddev)\n    else:\n      layer_name = name_prefix + 'res%d' % (i_layer + 1)\n      previous_layer = make_sep_res_layer(\n          input_node=previous_layer,\n          in_channels=in_channels,\n          out_channels=out_channels,\n          layer_name=layer_name,\n          filter_size=filter_size,\n          filter_size_2=filter_size_2,\n          batch_norm=batch_norm,\n          is_training=is_training,\n          atrou_rate=curr_atrou_rate,\n          channel_multiplier=channel_multiplier,\n          divide_channels_by=divide_channels_by,\n          data_format=data_format,\n          stddev=stddev,\n          dropout_keep_prob=dropout_keep_prob)\n\n  y = previous_layer\n\n  return y\n"
  },
  {
    "path": "avae/README.md",
    "content": "# The Autoencoding Variational Autoencoder\n\nThis is the code for the models in NeurIPS Submission [AVAE](https://papers.nips.cc/paper/2020/file/ac10ff1941c540cd87c107330996f4f6-Paper.pdf)\n\nFolder contains code to train AVAE model in JAX, and we will be uploading\nevaluation setup soon.\n\nCode files in the folder\n - checkpointer.py: Checkpointing abstraction\n - data_iterators.py: Datasets to be used\n - decoders.py: VAE decoder network architectures\n - encoders.py: VAE encoder network architectures\n - kl.py: KL computation between 2 gaussians\n - train.py: Function to train given ELBO, network and data\n - train_main.py: Main file to train AVAE\n - vae.py: VAE model defining various ELBOs\n\n## Setup\n\nTo set up a Python3 virtual environment with the required dependencies, run:\n\n```shell\npython -m venv avae_env\nsource avae_env/bin/activate\npip install --upgrade pip\npip install -r avae/requirements.txt\n```\n\n## Running AVAE training\n\nFollowing command will run AVAE training for ColorMnist dataset using MLP\nnetwork architectures.\n\n```shell\npython -m avae.train_main \\\n  --dataset='color_mnist' \\\n  --latent_dim=64 \\\n  --checkpoint_dir='/tmp/avae_checkpoints' \\\n  --checkpoint_filename='color_mnist_mlp_avae' \\\n  --rho=0.975 \\\n  --encoder='color_mnist_mlp_encoder' \\\n  --decoder='color_mnist_mlp_decoder'\n```\n\n## References\n\n### Citing our work\n\nIf you use that code for your research, please consider citing our paper:\n\n```bibtex\n@article{cemgil2020autoencoding,\n  title={The Autoencoding Variational Autoencoder},\n  author={Cemgil, Taylan and Ghaisas, Sumedh and Dvijotham, Krishnamurthy and Gowal, Sven and Kohli, Pushmeet},\n  journal={Advances in Neural Information Processing Systems},\n  volume={33},\n  year={2020}\n}\n```\n"
  },
  {
    "path": "avae/checkpointer.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Checkpointing functionality.\"\"\"\n\nimport os\nfrom typing import Any, Mapping, Optional\n\nfrom absl import logging\nimport dill\nimport jax\nimport jax.numpy as jnp\n\n\nclass Checkpointer:\n  \"\"\"A checkpoint saving and loading class.\"\"\"\n\n  def __init__(self, checkpoint_dir: str, filename: str):\n    \"\"\"Class initializer.\n\n    Args:\n     checkpoint_dir: Checkpoint directory.\n     filename: Filename of checkpoint in checkpoint directory.\n    \"\"\"\n    self._checkpoint_dir = checkpoint_dir\n    if not os.path.isdir(self._checkpoint_dir):\n      os.mkdir(self._checkpoint_dir)\n\n    self._checkpoint_path = os.path.join(self._checkpoint_dir, filename)\n\n  def save_checkpoint(\n      self,\n      experiment_state: Mapping[str, jnp.ndarray],\n      opt_state: Mapping[str, jnp.ndarray],\n      step: int,\n      extra_checkpoint_info: Optional[Mapping[str, Any]] = None) -> None:\n    \"\"\"Save checkpoint with experiment state and step information.\n\n    Args:\n     experiment_state: Experiment params to be stored.\n     opt_state: Optimizer state to be stored.\n     step: Training iteration step.\n     extra_checkpoint_info: Extra information to be stored.\n    \"\"\"\n    if jax.host_id() != 0:\n      return\n\n    checkpoint_data = dict(\n        experiment_state=jax.tree_map(jax.device_get, experiment_state),\n        opt_state=jax.tree_map(jax.device_get, opt_state),\n        step=step)\n    if extra_checkpoint_info is not None:\n      for key in extra_checkpoint_info:\n        checkpoint_data[key] = extra_checkpoint_info[key]\n\n    with open(self._checkpoint_path, 'wb') as checkpoint_file:\n      dill.dump(checkpoint_data, checkpoint_file, protocol=2)\n\n  def load_checkpoint(\n      self) -> Optional[Mapping[str, Mapping[str, jnp.ndarray]]]:\n    \"\"\"Load and return checkpoint data.\n\n    Returns:\n     Loaded checkpoint if it exists else returns None.\n    \"\"\"\n\n    if os.path.exists(self._checkpoint_path):\n      with open(self._checkpoint_path, 'rb') as checkpoint_file:\n        checkpoint_data = dill.load(checkpoint_file)\n        logging.info('Loading checkpoint from %s, saved at step %d',\n                     self._checkpoint_path, checkpoint_data['step'])\n        return checkpoint_data\n    else:\n      logging.warning('No pre-saved checkpoint found at %s',\n                      self._checkpoint_path)\n      return None\n"
  },
  {
    "path": "avae/data_iterators.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Dataset iterators Mnist, ColorMnist.\"\"\"\n\nimport enum\n\nimport jax.numpy as jnp\nimport numpy as np\nimport tensorflow as tf\nimport tensorflow_datasets as tfds\n\nfrom avae import types\n\n\nclass Dataset(enum.Enum):\n  color_mnist = enum.auto()\n\n\nclass MnistDataIterator(object):\n  \"\"\"Mnist data iterator class.\n\n  Data is obtained as dataclass, types.LabelledData.\n  \"\"\"\n\n  def __init__(self, subset: str, batch_size: int):\n    \"\"\"Class initializer.\n\n    Args:\n     subset: Subset of dataset.\n     batch_size: Batch size of the returned dataset iterator.\n    \"\"\"\n    datasets = tfds.load('mnist')\n    train_dataset = datasets[subset]\n    def _map_fun(x):\n      return {'data': tf.cast(x['image'], tf.float32) / 255.0,\n              'label': x['label']}\n    train_dataset = train_dataset.map(_map_fun)\n    train_dataset = train_dataset.batch(batch_size,\n                                        drop_remainder=True).repeat()\n    self._iterator = iter(tfds.as_numpy(train_dataset))\n    self._batch_size = batch_size\n\n  def __iter__(self):\n    return self\n\n  def __next__(self) -> types.LabelledData:\n    return types.LabelledData(**next(self._iterator))\n\n\nclass ColorMnistDataIterator(MnistDataIterator):\n  \"\"\"Color Mnist data iterator.\n\n  Each ColorMnist image is of shape (28, 28, 3). ColorMnist digit can have 7\n  different colors by permution of RGB channels (turning on and off RGB\n  channels, except for all channels off permutation).\n\n  Data is obtained as dataclass, util_dataclasses.LabelledData.\n  \"\"\"\n\n  def __next__(self) -> types.LabelledData:\n    mnist_batch = next(self._iterator)\n    mnist_image = mnist_batch['data']\n    # Colors are supported by turning off and on RGB channels.\n    # Thus possible colors are\n    # [black (excluded), red, green, yellow, blue, magenta, cyan, white]\n    # color_id takes value from [1,8)\n    color_id = np.random.randint(7, size=self._batch_size) + 1\n    red_channel_bool = np.mod(color_id, 2)\n    red_channel_bool = jnp.reshape(red_channel_bool, [-1, 1, 1, 1])\n    blue_channel_bool = np.floor_divide(color_id, 4)\n    blue_channel_bool = jnp.reshape(blue_channel_bool, [-1, 1, 1, 1])\n    green_channel_bool = np.mod(np.floor_divide(color_id, 2), 2)\n    green_channel_bool = jnp.reshape(green_channel_bool, [-1, 1, 1, 1])\n\n    color_mnist_image = jnp.stack([\n        jnp.multiply(red_channel_bool, mnist_image),\n        jnp.multiply(blue_channel_bool, mnist_image),\n        jnp.multiply(green_channel_bool, mnist_image)], axis=3)\n    color_mnist_image = jnp.reshape(color_mnist_image, [-1, 28, 28, 3])\n    # Color id takes value [1, 8)\n    # Although to make classification code easier `color` label attached to data\n    # takes value in [0, 7) (by subtracting 1 from color id)\n    return types.LabelledData(\n        data=color_mnist_image, label=mnist_batch['label'])\n"
  },
  {
    "path": "avae/decoders.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Decoder architectures to be used with VAE.\"\"\"\n\nimport abc\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\n\n\nclass DecoderBase(hk.Module):\n  \"\"\"Base class for decoder network classes.\"\"\"\n\n  def __init__(self, obs_var: float):\n    \"\"\"Class initializer.\n\n    Args:\n     obs_var: oversation variance of the dataset.\n    \"\"\"\n    super().__init__()\n    self._obs_var = obs_var\n\n  @abc.abstractmethod\n  def __call__(self, z: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Reconstruct from a given latent sample.\n\n    Args:\n     z: latent samples of shape (batch_size, latent_dim)\n    Returns:\n     Reconstruction with shape (batch_size, ...).\n    \"\"\"\n\n  def data_fidelity(\n      self,\n      input_data: jnp.ndarray,\n      recons: jnp.ndarray,\n  ) -> jnp.ndarray:\n    \"\"\"Compute Data fidelity (recons loss) for given input and recons.\n\n    Args:\n     input_data: Input batch of shape (batch_size, ...).\n     recons: Reconstruction of the input data. An array with the same shape as\n       `input_data.data`.\n    Returns:\n     Computed data fidelity term across batch of data. An array of shape\n     `(batch_size,)`.\n    \"\"\"\n    error = (input_data - recons).reshape(input_data.shape[0], -1)\n    return -0.5 * jnp.sum(jnp.square(error), axis=1) / self._obs_var\n\n\nclass ColorMnistMLPDecoder(DecoderBase):\n  \"\"\"MLP decoder for Color Mnist.\"\"\"\n\n  _hidden_units = (200, 200, 200, 200)\n  _image_dims = (28, 28, 3)  # Dimensions of a single MNIST image.\n\n  def __call__(self, z: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Reconstruct with given latent sample.\n\n    Args:\n     z: latent samples of shape (batch_size, latent_dim)\n    Returns:\n     Reconstructions data of shape (batch_size, 28, 28, 3).\n    \"\"\"\n    out = z\n    for units in self._hidden_units:\n      out = hk.Linear(units)(out)\n      out = jax.nn.relu(out)\n    out = hk.Linear(np.product(self._image_dims))(out)\n    out = jax.nn.sigmoid(out)\n    return jnp.reshape(out, (-1,) + self._image_dims)\n\n"
  },
  {
    "path": "avae/encoders.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Encoder architectures to be used with VAE.\"\"\"\n\nimport abc\nfrom typing import Generic, TypeVar\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\n\nfrom avae import types\n\n_Params = TypeVar('_Params')\n\n\nclass EncoderBase(hk.Module, Generic[_Params]):\n  \"\"\"Abstract class for encoder architectures.\"\"\"\n\n  def __init__(self, latent_dim: int):\n    \"\"\"Class initializer.\n\n    Args:\n     latent_dim: Latent dimensions of the model.\n    \"\"\"\n    super().__init__()\n    self._latent_dim = latent_dim\n\n  @abc.abstractmethod\n  def __call__(self, input_data: jnp.ndarray) -> _Params:\n    \"\"\"Return posterior distribution over latents.\n\n    Args:\n     input_data: Input batch of shape (batch_size, ...).\n\n    Returns:\n     Parameters of the posterior distribution over the latents.\n    \"\"\"\n\n  @abc.abstractmethod\n  def sample(self, posterior: _Params, key: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Sample from the given posterior distribution.\n\n    Args:\n     posterior: Parameters of posterior distribution over the latents.\n     key: Random number generator key.\n\n    Returns:\n     Sample from the posterior distribution over latents,\n     shape[batch_size, latent_dim]\n    \"\"\"\n\n\nclass ColorMnistMLPEncoder(EncoderBase[types.NormalParams]):\n  \"\"\"MLP encoder for ColorMnist.\"\"\"\n\n  _hidden_units = (200, 200, 200, 200)\n\n  def __call__(\n      self, input_data: jnp.ndarray) -> types.NormalParams:\n    \"\"\"Return posterior distribution over latents.\n\n    Args:\n     input_data: Input batch of shape (batch_size, ...).\n\n    Returns:\n     Posterior distribution over the latents.\n    \"\"\"\n    out = hk.Flatten()(input_data)\n    for units in self._hidden_units:\n      out = hk.Linear(units)(out)\n      out = jax.nn.relu(out)\n    out = hk.Linear(2 * self._latent_dim)(out)\n    return _normal_params_from_logits(out)\n\n  def sample(\n      self,\n      posterior: types.NormalParams,\n      key: jnp.ndarray,\n  ) -> jnp.ndarray:\n    \"\"\"Sample from the given normal posterior (mean, var) distribution.\n\n    Args:\n     posterior: Posterior over the latents.\n     key: Random number generator key.\n    Returns:\n     Sample from the posterior distribution over latents,\n     shape[batch_size, latent_dim]\n    \"\"\"\n    eps = jax.random.normal(\n        key, shape=(posterior.mean.shape[0], self._latent_dim))\n    return posterior.mean + eps * posterior.variance\n\n\ndef _normal_params_from_logits(\n    logits: jnp.ndarray) -> types.NormalParams:\n  \"\"\"Construct mean and variance of normal distribution from given logits.\"\"\"\n  mean, log_variance = jnp.split(logits, 2, axis=1)\n  variance = jnp.exp(log_variance)\n  return types.NormalParams(mean=mean, variance=variance)\n"
  },
  {
    "path": "avae/kl.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Various KL implementations in JAX.\"\"\"\n\nimport jax.numpy as jnp\n\n\ndef kl_p_with_uniform_normal(mean: jnp.ndarray,\n                             variance: jnp.ndarray) -> jnp.ndarray:\n  r\"\"\"KL between p_dist with uniform normal prior.\n\n  Args:\n   mean: Mean of the gaussian distribution, shape (latent_dims,)\n   variance: Variance of the gaussian distribution, shape (latent_dims,)\n  Returns:\n   KL divergence KL(P||N(0, 1)) shape ()\n  \"\"\"\n\n  if len(variance.shape) == 2:\n    # If `variance` is a full covariance matrix\n    variance_trace = jnp.trace(variance)\n    _, ldet1 = jnp.linalg.slogdet(variance)\n  else:\n    variance_trace = jnp.sum(variance)\n    ldet1 = jnp.sum(jnp.log(variance))\n\n  mean_contribution = jnp.sum(jnp.square(mean))\n  res = -ldet1\n  res += variance_trace + mean_contribution - mean.shape[0]\n  return res * 0.5\n"
  },
  {
    "path": "avae/requirements.txt",
    "content": "absl-py>0.9\ndill==0.3.2\ndm-haiku\njax\noptax\ntensorflow\ntensorflow_datasets\n\n"
  },
  {
    "path": "avae/run.sh",
    "content": "#!/bin/bash\n# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\npython -m venv avae_env\nsource avae_env/bin/activate\npip install --upgrade pip\npip install -r avae/requirements.txt\n\n# Start training AVAE model.\npython -m avae.train_main \\\n  --dataset='color_mnist' \\\n  --latent_dim=64 \\\n  --checkpoint_dir='/tmp/avae_checkpoints' \\\n  --checkpoint_filename='color_mnist_mlp_avae' \\\n  --rho=0.975 \\\n  --encoder=color_mnist_mlp_encoder \\\n  --decoder=color_mnist_mlp_decoder \\\n  --iterations=1\n"
  },
  {
    "path": "avae/train.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"VAE style training.\"\"\"\n\nfrom typing import Any, Callable, Iterator, Sequence, Mapping, Tuple, Optional\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport optax\n\nfrom avae import checkpointer\nfrom avae import types\n\n\ndef train(\n    train_data_iterator: Iterator[types.LabelledData],\n    test_data_iterator: Iterator[types.LabelledData],\n    elbo_fun: hk.Transformed,\n    learning_rate: float,\n    checkpoint_dir: str,\n    checkpoint_filename: str,\n    checkpoint_every: int,\n    test_every: int,\n    iterations: int,\n    rng_seed: int,\n    test_functions: Optional[Sequence[Callable[[Mapping[str, jnp.ndarray]],\n                                               Tuple[str, float]]]] = None,\n    extra_checkpoint_info: Optional[Mapping[str, Any]] = None):\n  \"\"\"Train VAE with given data iterator and elbo definition.\n\n  Args:\n   train_data_iterator: Iterator of batched training data.\n   test_data_iterator: Iterator of batched testing data.\n   elbo_fun: Haiku transfomed function returning elbo.\n   learning_rate: Learning rate to be used with optimizer.\n   checkpoint_dir: Path of the checkpoint directory.\n   checkpoint_filename: Filename of the checkpoint.\n   checkpoint_every: Checkpoint every N iterations.\n   test_every: Test and log results every N iterations.\n   iterations: Number of training iterations to perform.\n   rng_seed: Seed for random number generator.\n   test_functions: Test function iterable, each function takes test data and\n    outputs extra info to print at test and log time.\n   extra_checkpoint_info: Extra info to put inside saved checkpoint.\n  \"\"\"\n  rng_seq = hk.PRNGSequence(jax.random.PRNGKey(rng_seed))\n\n  opt_init, opt_update = optax.chain(\n      # Set the parameters of Adam. Note the learning_rate is not here.\n      optax.scale_by_adam(b1=0.9, b2=0.999, eps=1e-8),\n      # Put a minus sign to *minimise* the loss.\n      optax.scale(-learning_rate))\n\n  @jax.jit\n  def loss(params, key, data):\n    elbo_outputs = elbo_fun.apply(params, key, data)\n    return -jnp.mean(elbo_outputs.elbo)\n\n  @jax.jit\n  def loss_test(params, key, data):\n    elbo_output = elbo_fun.apply(params, key, data)\n    return (-jnp.mean(elbo_output.elbo), jnp.mean(elbo_output.data_fidelity),\n            jnp.mean(elbo_output.kl))\n\n  @jax.jit\n  def update_step(params, key, data, opt_state):\n    grads = jax.grad(loss, has_aux=False)(params, key, data)\n    updates, opt_state = opt_update(grads, opt_state, params)\n    params = optax.apply_updates(params, updates)\n    return params, opt_state\n\n  exp_checkpointer = checkpointer.Checkpointer(\n      checkpoint_dir, checkpoint_filename)\n  experiment_data = exp_checkpointer.load_checkpoint()\n\n  if experiment_data is not None:\n    start = experiment_data['step']\n    params = experiment_data['experiment_state']\n    opt_state = experiment_data['opt_state']\n  else:\n    start = 0\n    params = elbo_fun.init(\n        next(rng_seq), next(train_data_iterator).data)\n    opt_state = opt_init(params)\n\n  for step in range(start, iterations, 1):\n    if step % test_every == 0:\n      test_loss, ll, kl = loss_test(params, next(rng_seq),\n                                    next(test_data_iterator).data)\n      output_message = (f'Step {step} elbo {-test_loss:0.2f} LL {ll:0.2f} '\n                        f'KL {kl:0.2f}')\n      if test_functions:\n        for test_function in test_functions:\n          name, test_output = test_function(params)\n          output_message += f' {name}: {test_output:0.2f}'\n      print(output_message)\n\n    params, opt_state = update_step(params, next(rng_seq),\n                                    next(train_data_iterator).data, opt_state)\n\n    if step % checkpoint_every == 0:\n      exp_checkpointer.save_checkpoint(\n          params, opt_state, step, extra_checkpoint_info)\n"
  },
  {
    "path": "avae/train_main.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Main file for training VAE/AVAE.\"\"\"\n\nimport enum\nfrom absl import app\nfrom absl import flags\nimport haiku as hk\n\nfrom avae import data_iterators\nfrom avae import decoders\nfrom avae import encoders\nfrom avae import train\nfrom avae import vae\n\n\nclass Model(enum.Enum):\n  vae = enum.auto()\n  avae = enum.auto()\n\n\nclass EncoderArch(enum.Enum):\n  color_mnist_mlp_encoder = 'ColorMnistMLPEncoder'\n\n\nclass DecoderArch(enum.Enum):\n  color_mnist_mlp_decoder = 'ColorMnistMLPDecoder'\n\n\n_DATASET = flags.DEFINE_enum_class(\n    'dataset', data_iterators.Dataset.color_mnist, data_iterators.Dataset,\n    'Dataset to train on')\n_LATENT_DIM = flags.DEFINE_integer('latent_dim', 32,\n                                   'Number of latent dimensions.')\n_TRAIN_BATCH_SIZE = flags.DEFINE_integer('train_batch_size', 64,\n                                         'Train batch size.')\n_TEST_BATCH_SIZE = flags.DEFINE_integer('test_batch_size', 64,\n                                        'Testing batch size.')\n_TEST_EVERY = flags.DEFINE_integer('test_every', 1000,\n                                   'Test every N iterations.')\n_ITERATIONS = flags.DEFINE_integer('iterations', 102000,\n                                   'Number of training iterations.')\n_OBS_VAR = flags.DEFINE_float('obs_var', 0.5,\n                              'Observation variance of the data. (Default 0.5)')\n\n\n_MODEL = flags.DEFINE_enum_class('model', Model.avae, Model,\n                                 'Model used for training.')\n_RHO = flags.DEFINE_float('rho', 0.8, 'Rho parameter used with AVAE or SE.')\n_LEARNING_RATE = flags.DEFINE_float('learning_rate', 1e-4, 'Learning rate.')\n_RNG_SEED = flags.DEFINE_integer('rng_seed', 0,\n                                 'Seed for random number generator.')\n_CHECKPOINT_DIR = flags.DEFINE_string('checkpoint_dir', '/tmp/',\n                                      'Directory for checkpointing.')\n_CHECKPOINT_FILENAME = flags.DEFINE_string(\n    'checkpoint_filename', 'color_mnist_avae_mlp', 'Checkpoint filename.')\n_CHECKPOINT_EVERY = flags.DEFINE_integer(\n    'checkpoint_every', 1000, 'Checkpoint every N steps.')\n_ENCODER = flags.DEFINE_enum_class(\n    'encoder', EncoderArch.color_mnist_mlp_encoder, EncoderArch,\n    'Encoder class name.')\n_DECODER = flags.DEFINE_enum_class(\n    'decoder', DecoderArch.color_mnist_mlp_decoder, DecoderArch,\n    'Decoder class name.')\n\n\ndef main(_):\n  if _DATASET.value is data_iterators.Dataset.color_mnist:\n    train_data_iterator = iter(\n        data_iterators.ColorMnistDataIterator('train', _TRAIN_BATCH_SIZE.value))\n    test_data_iterator = iter(\n        data_iterators.ColorMnistDataIterator('test', _TEST_BATCH_SIZE.value))\n\n  def _elbo_fun(input_data):\n    if _ENCODER.value is EncoderArch.color_mnist_mlp_encoder:\n      encoder = encoders.ColorMnistMLPEncoder(_LATENT_DIM.value)\n\n    if _DECODER.value is DecoderArch.color_mnist_mlp_decoder:\n      decoder = decoders.ColorMnistMLPDecoder(_OBS_VAR.value)\n\n    vae_obj = vae.VAE(encoder, decoder, _RHO.value)\n\n    if _MODEL.value is Model.vae:\n      return vae_obj.vae_elbo(input_data, hk.next_rng_key())\n    else:\n      return vae_obj.avae_elbo(input_data, hk.next_rng_key())\n\n  elbo_fun = hk.transform(_elbo_fun)\n\n  extra_checkpoint_info = {\n      'dataset': _DATASET.value.name,\n      'encoder': _ENCODER.value.name,\n      'decoder': _DECODER.value.name,\n      'obs_var': _OBS_VAR.value,\n      'rho': _RHO.value,\n      'latent_dim': _LATENT_DIM.value,\n  }\n\n  train.train(\n      train_data_iterator=train_data_iterator,\n      test_data_iterator=test_data_iterator,\n      elbo_fun=elbo_fun,\n      learning_rate=_LEARNING_RATE.value,\n      checkpoint_dir=_CHECKPOINT_DIR.value,\n      checkpoint_filename=_CHECKPOINT_FILENAME.value,\n      checkpoint_every=_CHECKPOINT_EVERY.value,\n      test_every=_TEST_EVERY.value,\n      iterations=_ITERATIONS.value,\n      rng_seed=_RNG_SEED.value,\n      extra_checkpoint_info=extra_checkpoint_info)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "avae/types.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Useful dataclasses types used across the code.\"\"\"\n\nfrom typing import Optional\n\nimport dataclasses\nimport jax.numpy as jnp\nimport numpy as np\n\n\n@dataclasses.dataclass(frozen=True)\nclass ELBOOutputs:\n  elbo: jnp.ndarray\n  data_fidelity: jnp.ndarray\n  kl: jnp.ndarray\n\n\n@dataclasses.dataclass(frozen=True)\nclass LabelledData:\n  \"\"\"A batch of labelled examples.\n\n  Attributes:\n    data: Array of shape (batch_size, ...).\n    label: Array of shape (batch_size, ...).\n  \"\"\"\n  data: np.ndarray\n  label: Optional[np.ndarray]\n\n\n@dataclasses.dataclass(frozen=True)\nclass NormalParams:\n  \"\"\"Parameters of a normal distribution.\n\n  Attributes:\n    mean: Array of shape (batch_size, latent_dim).\n    variance: Array of shape (batch_size, latent_dim).\n  \"\"\"\n  mean: jnp.ndarray\n  variance: jnp.ndarray\n"
  },
  {
    "path": "avae/vae.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Standard VAE class.\"\"\"\n\nfrom typing import Optional\n\nimport jax\nimport jax.numpy as jnp\n\nfrom avae import decoders\nfrom avae import encoders\nfrom avae import kl\nfrom avae import types\n\n\nclass VAE:\n  \"\"\"VAE class.\n\n  This class defines the ELBO used in training VAE models. It also adds function\n  for forward passing data through VAE.\n  \"\"\"\n\n  def __init__(self, encoder: encoders.EncoderBase,\n               decoder: decoders.DecoderBase, rho: Optional[float] = None):\n    \"\"\"Class initializer.\n\n    Args:\n     encoder: Encoder network architecture.\n     decoder: Decoder network architecture.\n     rho: Rho parameter used in AVAE training.\n    \"\"\"\n    self._encoder = encoder\n    self._decoder = decoder\n    self._rho = rho\n\n  def vae_elbo(\n      self, input_data: jnp.ndarray,\n      key: jnp.ndarray) -> types.ELBOOutputs:\n    \"\"\"ELBO for training VAE.\n\n    Args:\n     input_data: Input batch of shape (batch_size, ...).\n     key: Key for random number generator.\n    Returns:\n\n     Computed VAE Elbo as type util_dataclasses.ELBOOutputs\n    \"\"\"\n    posterior = self._encoder(input_data)\n    samples = self._encoder.sample(posterior, key)\n    kls = jax.vmap(kl.kl_p_with_uniform_normal, [0])(\n        posterior.mean, posterior.variance)\n    recons = self._decoder(samples)\n    data_fidelity = self._decoder.data_fidelity(input_data, recons)\n    elbo = data_fidelity - kls\n    return types.ELBOOutputs(elbo, data_fidelity, kls)\n\n  def avae_elbo(\n      self, input_data: jnp.ndarray,\n      key: jnp.ndarray) -> types.ELBOOutputs:\n    \"\"\"ELBO for training AVAE model.\n\n    Args:\n     input_data: Input batch of shape (batch_size, ...).\n     key: Key for random number generator.\n    Returns:\n     Computed AVAE Elbo in nested tuple (Elbo, (data_fidelity, KL)). All arrays\n     have batch dimension intact.\n    \"\"\"\n    aux_images = jax.lax.stop_gradient(self(input_data, key))\n\n    posterior = self._encoder(input_data)\n    samples = self._encoder.sample(posterior, key)\n    kls = jax.vmap(kl.kl_p_with_uniform_normal, [0, 0])(\n        posterior.mean, posterior.variance)\n    recons = self._decoder(samples)\n    data_fidelity = self._decoder.data_fidelity(input_data, recons)\n    elbo = data_fidelity - kls\n\n    aux_posterior = self._encoder(aux_images)\n    latent_mean = posterior.mean\n    latent_var = posterior.variance\n    aux_latent_mean = aux_posterior.mean\n    aux_latent_var = aux_posterior.variance\n    latent_dim = latent_mean.shape[1]\n\n    def _reduce(x):\n      return jnp.mean(jnp.sum(x, axis=1))\n\n    # Computation of <log p(Z_aux | Z)>.\n    expected_log_conditional = (\n        aux_latent_var + jnp.square(self._rho) * latent_var +\n        jnp.square(aux_latent_mean - self._rho * latent_mean))\n    expected_log_conditional = _reduce(expected_log_conditional)\n    expected_log_conditional /= 2.0 * (1.0 - jnp.square(self._rho))\n    expected_log_conditional = (latent_dim *\n                                jnp.log(1.0 / (2 * jnp.pi)) -\n                                expected_log_conditional)\n    elbo += expected_log_conditional\n    # Entropy of Z_aux\n    elbo += _reduce(0.5 * jnp.log(2 * jnp.pi * jnp.e * aux_latent_var))\n\n    return types.ELBOOutputs(elbo, data_fidelity, kls)\n\n  def __call__(\n      self, input_data: jnp.ndarray,\n      key: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Reconstruction of the input data.\n\n    Args:\n     input_data: Input batch of shape (batch_size, ...).\n     key: Key for random number generator.\n    Returns:\n     Reconstruction of the input data as jnp.ndarray of shape\n     [batch_dim, observation_dims].\n    \"\"\"\n    posterior = self._encoder(input_data)\n    samples = self._encoder.sample(posterior, key)\n    recons = self._decoder(samples)\n    return recons\n\n"
  },
  {
    "path": "bigbigan/README.md",
    "content": "# Pretrained BigBiGAN models\n\nWe have released pretrained BigBiGAN models used for unsupervised image\ngeneration and representation learning, as described in our July 2019\ntech report,\n[\"Large Scale Adversarial Representation Learning\"](https://arxiv.org/abs/1907.02544) [1].\n\nThe pretrained models are available for use via [TF Hub](https://tfhub.dev/s?publisher=deepmind&q=bigbigan).\nThe release includes two BigBiGAN models with different encoder architectures:\n\n* Small encoder (ResNet-50): [https://tfhub.dev/deepmind/bigbigan-resnet50/1](https://tfhub.dev/deepmind/bigbigan-resnet50/1)\n* Large encoder (RevNet-50 x4): [https://tfhub.dev/deepmind/bigbigan-revnet50x4/1](https://tfhub.dev/deepmind/bigbigan-revnet50x4/1)\n\nSee the TF Hub pages linked above for documentation and example usage of each module.\n\n## Demo (Colab)\n\nA Google Colab-based demo with example usage of the model functionality and sample visualization is available [here](//colab.research.google.com/github/tensorflow/hub/blob/master/examples/colab/bigbigan_with_tf_hub.ipynb).\n\n## Example use\nThe snippet below demonstrates the use of the released TF Hub modules for\nimage generation/reconstruction and encoder feature computation.\n(The [Colab demo](//colab.research.google.com/github/tensorflow/hub/blob/master/examples/colab/bigbigan_with_tf_hub.ipynb)\nincludes more extensive documentation and visualizations.)\n\n```python\n# Load BigBiGAN module.\nmodule = hub.Module('https://tfhub.dev/deepmind/bigbigan-resnet50/1')  # small encoder\n# module = hub.Module('https://tfhub.dev/deepmind/bigbigan-revnet50x4/1')  # large encoder\n\n# Sample a batch of 8 random latent vectors (z) from the Gaussian prior. Then\n# call the generator on the latent samples to generate a batch of images with\n# shape [8, 128, 128, 3] and range [-1, 1].\nz = tf.random.normal([8, 120])  # latent samples\ngen_samples = module(z, signature='generate')\n\n# Given a batch of 256x256 RGB images in range [-1, 1], call the encoder to\n# compute predicted latents z and other features (e.g. for use in downstream\n# recognition tasks).\nimages = tf.placeholder(tf.float32, shape=[None, 256, 256, 3])\nfeatures = module(images, signature='encode', as_dict=True)\n\n# Get the predicted latent sample `z_sample` from the dict of features.\n# Other available features include `avepool_feat` and `bn_crelu_feat`, used in\n# the representation learning results.\nz_sample = features['z_sample']  # shape [?, 120]\n\n# Compute reconstructions of the input `images` by passing the encoder's output\n# `z_sample` back through the generator. Note that raw generator outputs are\n# half the resolution of encoder inputs (128x128). To get upsampled generator\n# outputs matching the encoder input resolution (256x256), instead use:\n#     recons = module(z_sample, signature='generate', as_dict=True)['upsampled']\nrecons = module(z_sample, signature='generate')  # shape [?, 128, 128, 3]\n```\n\n## References\n\n[1] Jeff Donahue and Karen Simonyan.\n[Large Scale Adversarial Representation Learning](https://arxiv.org/abs/1907.02544).\n*arxiv:1907.02544*, 2019.\n"
  },
  {
    "path": "box_arrangement/README.md",
    "content": "# Predicate tasks.\n\nThis package contains tasks associated with \"Behavior Priors for Efficient\nReiforcement Learning\" (https://arxiv.org/abs/2010.14274), \"Exploiting Hierarchy\nfor Learning and Transfer in KL-Regularized RL\" (https://arxiv.org/abs/2010.14274)\nand \"Information asymmetry in KL-regularized RL\"\n(https://arxiv.org/abs/1905.01240).\nThis is research code, and has dependencies on more stable code that is\navailable as part of [`dm_control`], in particular upon components in\n[`dm_control.locomotion`] and [`dm_control.manipulation`].\n\nTo get access to preconfigured python environments for the tasks, see the\n`task_examples.py` file. To use the MuJoCo interactive viewer (from dm_control)\nto load the environments, see `explore.py`.\n\n<p float=\"left\">\n  <img src=\"tasks.png\" height=\"200\">\n</p>\n\n## Installation instructions\n\n1.  Download [MuJoCo Pro](https://mujoco.org/) and extract the zip archive as\n    `~/.mujoco/mujoco200_$PLATFORM` where `$PLATFORM` is one of `linux`,\n    `macos`, or `win64`.\n\n2.  Ensure that a valid MuJoCo license key file is located at\n    `~/.mujoco/mjkey.txt`.\n\n3.  Clone the `deepmind-research` repository:\n\n    ```shell\n       git clone https://github.com/deepmind/deepmind-research.git\n       cd deepmind-research\n    ```\n\n4.  Create and activate a Python virtual environment:\n\n    ```shell\n       python3 -m virtualenv box_arrangement\n       source box_arrangement/bin/activate\n    ```\n\n5.  Install the package:\n\n    ```shell\n       pip install ./box_arrangement\n    ```\n\n## Quickstart\n\nTo instantiate and step through the go to one of K targets task:\n\n```python\nfrom box_arrangement import task_examples\nimport numpy as np\n\n# Build an example environment.\nenv = task_examples.go_to_k_targets()\n\n# Get the `action_spec` describing the control inputs.\naction_spec = env.action_spec()\n\n# Step through the environment for one episode with random actions.\ntime_step = env.reset()\nwhile not time_step.last():\n  action = np.random.uniform(action_spec.minimum, action_spec.maximum,\n                             size=action_spec.shape)\n  time_step = env.step(action)\n  print(\"reward = {}, discount = {}, observations = {}.\".format(\n      time_step.reward, time_step.discount, time_step.observation))\n```\n\nThe above code snippet can also be used for other tasks by replacing\n`go_to_k_targets` with one of (`move_box`, `move_box_or_gtt` and\n`move_box_and_gtt`).\n\n## Visualization\n\n[`dm_control.viewer`] can be used to visualize and interact with the\nenvironment. We provide the `explore.py` script specifically for this. If you\nfollowed our installation instructions above, this can be launched for the\ngo to one of K targets task via:\n\n```shell\npython3 -m box_arrangement.explore --task='go_to_target'\n```\n\n## Citation\n\nIf you use the code or data in this package, please cite:\n\n```\n@misc{tirumala2020behavior,\n      title={Behavior Priors for Efficient Reinforcement Learning},\n      author={Dhruva Tirumala and Alexandre Galashov and Hyeonwoo Noh and Leonard Hasenclever and Razvan Pascanu and Jonathan Schwarz and Guillaume Desjardins and Wojciech Marian Czarnecki and Arun Ahuja and Yee Whye Teh and Nicolas Heess},\n      year={2020},\n      eprint={2010.14274},\n      archivePrefix={arXiv},\n      primaryClass={cs.AI}\n}\n```\n\n[`dm_control`]: https://github.com/deepmind/dm_control\n[`dm_control.locomotion`]: https://github.com/deepmind/dm_control/tree/master/dm_control/locomotion\n[`dm_control.manipulation`]: https://github.com/deepmind/dm_control/tree/master/dm_control/manipulation\n[`dm_control.viewer`]: https://github.com/deepmind/dm_control/tree/master/dm_control/viewer\n"
  },
  {
    "path": "box_arrangement/__init__.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n"
  },
  {
    "path": "box_arrangement/dmlab_assets.py",
    "content": "# Copyright 2018 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"DeepMind Lab textures.\"\"\"\n\nfrom dm_control import composer\nfrom dm_control import mjcf\nfrom labmaze import assets as labmaze_assets\n\n\nclass SkyBox(composer.Entity):\n  \"\"\"Represents a texture asset for the sky box.\"\"\"\n\n  def _build(self, style):\n    labmaze_textures = labmaze_assets.get_sky_texture_paths(style)\n    self._mjcf_root = mjcf.RootElement(model='dmlab_' + style)\n    self._texture = self._mjcf_root.asset.add(\n        'texture', type='skybox', name='texture',\n        fileleft=labmaze_textures.left, fileright=labmaze_textures.right,\n        fileup=labmaze_textures.up, filedown=labmaze_textures.down,\n        filefront=labmaze_textures.front, fileback=labmaze_textures.back)\n\n  @property\n  def mjcf_model(self):\n    return self._mjcf_root\n\n  @property\n  def texture(self):\n    return self._texture\n\n\nclass WallTextures(composer.Entity):\n  \"\"\"Represents wall texture assets.\"\"\"\n\n  def _build(self, style):\n    labmaze_textures = labmaze_assets.get_wall_texture_paths(style)\n    self._mjcf_root = mjcf.RootElement(model='dmlab_' + style)\n    self._textures = []\n    for texture_name, texture_path in labmaze_textures.items():\n      self._textures.append(self._mjcf_root.asset.add(\n          'texture', type='2d', name=texture_name,\n          file=texture_path.format(texture_name)))\n\n  @property\n  def mjcf_model(self):\n    return self._mjcf_root\n\n  @property\n  def textures(self):\n    return self._textures\n\n\nclass FloorTextures(composer.Entity):\n  \"\"\"Represents floor texture assets.\"\"\"\n\n  def _build(self, style):\n    labmaze_textures = labmaze_assets.get_floor_texture_paths(style)\n    self._mjcf_root = mjcf.RootElement(model='dmlab_' + style)\n    self._textures = []\n    for texture_name, texture_path in labmaze_textures.items():\n      self._textures.append(self._mjcf_root.asset.add(\n          'texture', type='2d', name=texture_name,\n          file=texture_path.format(texture_name)))\n\n  @property\n  def mjcf_model(self):\n    return self._mjcf_root\n\n  @property\n  def textures(self):\n    return self._textures\n"
  },
  {
    "path": "box_arrangement/explore.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Simple script to launch viewer with an example environment.\"\"\"\n\nfrom absl import app\nfrom absl import flags\nfrom dm_control import viewer\nfrom box_arrangement import task_examples\n\nFLAGS = flags.FLAGS\nflags.DEFINE_enum('task', 'go_to_target', [\n    'go_to_target', 'move_box', 'move_box_or_go_to_target',\n    'move_box_and_go_to_target'\n], 'The task to visualize.')\n\n\nTASKS = {\n    'go_to_target': task_examples.go_to_k_targets,\n    'move_box': task_examples.move_box,\n    'move_box_or_go_to_target': task_examples.move_box_or_gtt,\n    'move_box_and_go_to_target': task_examples.move_box_and_gtt,\n}\n\n\ndef main(unused_argv):\n  viewer.launch(environment_loader=TASKS[FLAGS.task])\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "box_arrangement/predicate_task.py",
    "content": "# Copyright 2018 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"A task where different `Predicate`s need to be solved.\n\nIn each episode a spiking reward is given for each `Predicate` solved with an\nextra reward bonus added when all of the predicates are solved. On each episode\nthe number of predicates are sampled randomly. This provides a common interface\nto specify distributions over tasks ranging in difficulty levels but with common\ncomponents. Each `Predicate` involves some manipulation of the walker, props and\ntargets which thus allows for rich configurations of tasks to be defined.\n\"\"\"\nimport colorsys\nimport functools\nfrom dm_control import composer\nfrom dm_control.composer.observation import observable\nfrom dm_env import specs\n\nimport numpy as np\n\n\n_FLOOR_GAP_CHAR = '#'\n_AMBIENT_HEADLIGHT = 0.8\n_HSV_SATURATION = 0.5\n_HSV_ACTIVATED_SATURATION = 0.75\n_HSV_VALUE = 1.0\n_PROP_SIZE = 0.5\n_MAX_ITERATIONS = 1000\n\n\ndef _generate_target_permutation(num_targets, random_state):\n  targets = list(range(num_targets))\n  random_state.shuffle(targets)\n  return targets\n\n\nclass PredicateTask(composer.Task):\n  \"\"\"Requires objects to be moved onto targets.\"\"\"\n\n  def __init__(self,\n               walker,\n               maze_arena,\n               predicates,\n               props=None,\n               targets=None,\n               max_num_predicates=1,\n               randomize_num_predicates=False,\n               predicate_prob=None,\n               reward_scale=1.0,\n               terminating_reward_bonus=5.0,\n               regenerate_predicates=False,\n               physics_timestep=0.001,\n               control_timestep=0.025,\n               alive_threshold=-0.5):\n    \"\"\"Initializes a task with multiple sub-components(predicates) to be solved.\n\n       This task essentially contains different flavors of go to target. The\n       task contains a walker, props and target positions. To solve the entire\n       task, the walker would need to solve a certain number of 'predicates' or\n       sub-tasks. For instance, the task could contain 2 predicates for the\n       walker going to a target position and the walker moving a box to a target\n       position. In such a case, there is an implicit ordering of the way the\n       walker needs to solve things to achieve the net task.\n\n    Args:\n      walker: A `Walker` instance.\n      maze_arena: An `Entity` that defines a maze-like arena.\n      predicates: A list of `Predicate` instances for ths task.\n      props: An optional list of `manipulation.prop` instances for the task.\n        These are used to generate observables for the task.\n      targets: An optional list of `locomotion.prop` instances for the task.\n        These are used to generate observables for the task.\n      max_num_predicates: The maximum number of predicates to use in each\n        episode of the task.\n      randomize_num_predicates: A `bool` flag indicating whether the number of\n        `valid` predicates should be randomized for each task. If set to `True`,\n        then on each episode, between 1 and `num_predicates` are chosen as valid\n        predicates and `predicate.invalid_observation_value` is output for the\n        remaining slots in the observation.\n      predicate_prob: An optional `list` containing the probabilities for each\n        of the `predicates`. If not `None`, must have the same length as\n        `predicates.\n      reward_scale: `float` to scale the reward.\n      terminating_reward_bonus: A bonus added to the reward when all predicates\n        have been solved.\n      regenerate_predicates: A `bool` flag indicating which when set, spawns a\n        new set of predicates when the previous set is successful instead of\n        terminating.\n      physics_timestep: The time step of the physics simulation.\n      control_timestep: Should be an integer multiple of the physics time step.\n      alive_threshold: Aliveness in [-1., 0.].\n\n    Raises:\n      ValueError: If `num_props` is greater than `num_targets` or if\n        `num_predicates` is greater than `num_targets`.\n    \"\"\"\n    if max_num_predicates > len(predicates):\n      raise ValueError('Not enough predicates for task. The maximum number of '\n                       'predicates can be '\n                       '{} but only {} predicates provided.'.format(\n                           max_num_predicates, len(predicates)))\n    self._arena = maze_arena\n    self._walker = walker\n    self._reward_scale = reward_scale\n\n    self._alive_threshold = alive_threshold\n    self._terminating_reward_bonus = terminating_reward_bonus\n    self._arena.mjcf_model.visual.headlight.ambient = [_AMBIENT_HEADLIGHT] * 3\n    maze_arena.text_maze_regenerated_hook = self._regenerate_positions\n\n    self._max_num_predicates = max_num_predicates\n    self._predicates = predicates\n    self._predicate_prob = predicate_prob\n\n    self._randomize_num_predicates = randomize_num_predicates\n    self._active_predicates = []\n    self._regen_predicates = regenerate_predicates\n    self._reward = 0\n\n    # Targets.\n    self._targets = targets\n    for target in targets:\n      self._arena.attach(target)\n\n    if props is None:\n      props = []\n    # Props.\n    self._props = props\n    # M Props + 1 Walker and we choose 'N' predicates as the task.\n    for prop in props:\n      prop.geom.rgba = [0, 0, 0, 1]  # Will be randomized for each episode.\n      self._arena.add_free_entity(prop)\n\n    # Create walkers and corresponding observables.\n    walker.create_root_joints(self._arena.attach(walker))\n    self._create_per_walker_observables(walker)\n    self._generate_target_permutation = None\n    maze_arena.text_maze_regenerated_hook = self._regenerate_positions\n\n    # Set time steps.\n    self.set_timesteps(\n        physics_timestep=physics_timestep, control_timestep=control_timestep)\n\n  def _create_per_walker_observables(self, walker):\n    # Enable proprioceptive observables.\n    for obs in (walker.observables.proprioception +\n                walker.observables.kinematic_sensors +\n                [walker.observables.position, walker.observables.orientation]):\n      obs.enabled = True\n    xpos_origin_callable = lambda phys: phys.bind(walker.root_body).xpos\n\n    # Egocentric prop positions.\n    # For each prop, we add the positions for the 8 corners using the sites.\n    for prop_id, prop in enumerate(self._props):\n\n      def _prop_callable(physics, prop=prop):\n        return [physics.bind(s).xpos for s in prop.corner_sites]\n\n      if len(self._props) > 1:\n        observable_name = 'prop_{}_position'.format(prop_id)\n      else:\n        observable_name = 'prop_position'\n      walker.observables.add_egocentric_vector(\n          observable_name,\n          observable.Generic(_prop_callable),\n          origin_callable=xpos_origin_callable)\n\n    # Egocentric target positions.\n    def _target_callable(physics):\n      target_list = []\n      for target in self._targets:\n        target_list.append(target.site_pos(physics))\n      return np.array(target_list)\n\n    walker.observables.add_egocentric_vector(\n        'target_positions',\n        observable.Generic(_target_callable),\n        origin_callable=xpos_origin_callable)\n\n    # Whether targets are activated.\n    def _predicate_activated_callable(physics):\n      predicate_activated_list = np.full(self._max_num_predicates, True)\n      for i, predicate in enumerate(self._active_predicates):\n        predicate_activated_list[i] = predicate.is_active(physics)\n      return predicate_activated_list\n\n    walker.observables.add_observable(\n        'predicates_activated',\n        observable.Generic(_predicate_activated_callable))\n    self._observables = self._walker.observables.as_dict()\n\n    # Predicate observables.\n    for pred_idx in range(self._max_num_predicates):\n\n      def _predicate_callable(_, pred_idx=pred_idx):\n        \"\"\"Callable for the predicate observation.\"\"\"\n        if pred_idx in range(len(self._active_predicates)):\n          predicate = self._active_predicates[pred_idx]\n          return predicate.observation_value\n        else:\n          # Use any predicates inactive observation to fill the rest.\n          predicate = self._predicates[0]\n          return predicate.inactive_observation_value\n\n      predicate_name = 'predicate_{}'.format(pred_idx)\n      self._observables[predicate_name] = observable.Generic(\n          _predicate_callable)\n      self._observables[predicate_name].enabled = True\n\n  @property\n  def observables(self):\n    return self._observables\n\n  @property\n  def name(self):\n    return 'predicate_task'\n\n  @property\n  def root_entity(self):\n    return self._arena\n\n  def _regenerate_positions(self):\n    target_permutation = self._generate_target_permutation(\n        len(self._arena.target_positions))\n    num_permutations = len(self._props) + len(self._targets)\n    target_permutation = target_permutation[:num_permutations]\n\n    if len(self._props) + len(self._targets) > len(\n        self._arena.target_positions):\n      raise RuntimeError(\n          'The generated maze does not contain enough target positions '\n          'for the requested number of props ({}) and targets ({}): got {}.'\n          .format(\n              len(self._props), len(self._targets),\n              len(self._arena.target_positions)))\n\n    self._prop_positions = []\n    for i in range(len(self._props)):\n      self._prop_positions.append(\n          self._arena.target_positions[target_permutation[i]])\n\n    self._target_positions = []\n    for i in range(len(self._targets)):\n      idx = i + len(self._props)\n      self._target_positions.append(\n          self._arena.target_positions[target_permutation[idx]])\n\n  def initialize_episode_mjcf(self, random_state):\n    self._generate_target_permutation = functools.partial(\n        _generate_target_permutation, random_state=random_state)\n    self._arena.regenerate()\n\n    # Set random colors for the props and targets.\n    self._set_random_colors(random_state)\n    self._set_active_predicates(random_state)\n\n  def _set_active_predicates(self, random_state):\n    # Reinitialize predicates to set any properties they want.\n    iteration = 0\n    valid_set_found = False\n    while not valid_set_found and iteration < _MAX_ITERATIONS:\n      for predicate in self._predicates:\n        predicate.reinitialize(random_state)\n      if self._randomize_num_predicates and self._max_num_predicates > 1:\n        num_predicates = random_state.choice(\n            list(range(1, self._max_num_predicates + 1)), size=1)[0]\n      else:\n        num_predicates = self._max_num_predicates\n      valid_set_found = self._choose_random_predicates(random_state,\n                                                       num_predicates)\n      iteration += 1\n\n    if not valid_set_found:\n      raise ValueError(\n          'Could not find set of active predicates with '\n          'unique objects are after {} iterations.'.format(_MAX_ITERATIONS))\n    for predicate in self._active_predicates:\n      predicate.activate_predicate()\n\n  def _choose_random_predicates(self, random_state, num_predicates):\n    self._active_predicates = random_state.choice(\n        self._predicates,\n        replace=False,\n        size=num_predicates,\n        p=self._predicate_prob)\n    objects_in_common = self._active_predicates[0].objects_in_use\n    for predicate in self._active_predicates[1:]:\n      new_objects = predicate.objects_in_use\n      if objects_in_common.intersection(new_objects):\n        return False\n      objects_in_common.union(new_objects)\n    return True\n\n  def _set_random_colors(self, random_state):\n    hue0 = random_state.uniform()\n    hues = [(hue0 + i / len(self._targets)) % 1.0\n            for i in range(len(self._targets))]\n    rgbs = [\n        colorsys.hsv_to_rgb(hue, _HSV_SATURATION, _HSV_VALUE) for hue in hues\n    ]\n    activated_rgbs = [\n        colorsys.hsv_to_rgb(hue, _HSV_ACTIVATED_SATURATION, _HSV_VALUE)\n        for hue in hues\n    ]\n\n    # There are fewer props than targets.\n    # Pick as far apart colors for each prop as possible.\n    if self._props:\n      targets_per_prop = len(self._targets) // len(self._props)\n    else:\n      targets_per_prop = len(self._targets)\n\n    for prop_id in range(len(self._props)):\n      # The first few targets have to match the props' color.\n      rgb_id = prop_id * targets_per_prop\n      self._props[prop_id].geom.rgba[:3] = rgbs[rgb_id]\n      self._targets[prop_id].set_colors(rgbs[rgb_id], activated_rgbs[rgb_id])\n\n      # Assign colors not used by any prop to decoy targets.\n      for decoy_target_offset in range(targets_per_prop - 1):\n        target_id = len(\n            self._props) + prop_id * targets_per_prop + decoy_target_offset\n        rgb_id = prop_id * targets_per_prop + decoy_target_offset\n        self._targets[target_id].set_colors(rgbs[rgb_id], rgbs[rgb_id])\n\n    # Remainder loop for targets.\n    for target_id in range(targets_per_prop * len(self._props),\n                           len(self._targets)):\n      self._targets[target_id].set_colors(rgbs[target_id], rgbs[target_id])\n\n  def initialize_episode(self, physics, random_state):\n    self._first_step = True\n    self._was_active = [False] * len(self._active_predicates)\n\n    walker = self._walker\n    spawn_indices = random_state.permutation(len(self._arena.spawn_positions))\n    spawn_index = spawn_indices[0]\n    walker.reinitialize_pose(physics, random_state)\n    spawn_position = self._arena.spawn_positions[spawn_index]\n    spawn_rotation = random_state.uniform(-np.pi, np.pi)\n    spawn_quat = np.array(\n        [np.cos(spawn_rotation / 2), 0, 0,\n         np.sin(spawn_rotation / 2)])\n    walker.shift_pose(\n        physics, [spawn_position[0], spawn_position[1], 0.0],\n        spawn_quat,\n        rotate_velocity=True)\n\n    for prop, prop_xy_position in zip(self._props, self._prop_positions):\n      # Position at the middle of a maze cell.\n      prop_position = np.array(\n          [prop_xy_position[0], prop_xy_position[1], prop.geom.size[2]])\n\n      # Randomly rotate the prop around the z-axis.\n      prop_rotation = random_state.uniform(-np.pi, np.pi)\n      prop_quat = np.array(\n          [np.cos(prop_rotation / 2), 0, 0,\n           np.sin(prop_rotation / 2)])\n\n      # Taking into account the prop's orientation, first calculate how much we\n      # can displace the prop from the center of a maze cell without any part of\n      # it sticking out of the cell.\n      x, y, _ = prop.geom.size\n      cos = np.cos(prop_rotation)\n      sin = np.sin(prop_rotation)\n      x_max = max([np.abs(x * cos - y * sin), np.abs(x * cos + y * sin)])\n      y_max = max([np.abs(y * cos + x * sin), np.abs(y * cos - x * sin)])\n      prop_max_displacement = self._arena.xy_scale / 2 - np.array(\n          [x_max, y_max])\n      assert np.all(prop_max_displacement >= 0)\n      prop_max_displacement *= 0.99  # Safety factor.\n\n      # Then randomly displace the prop from the center of the maze cell.\n      prop_position[:2] += prop_max_displacement * random_state.uniform(\n          -1, 1, 2)\n\n      # Commit the prop's final pose.\n      prop.set_pose(physics, position=prop_position, quaternion=prop_quat)\n\n    for target, target_position in zip(self._targets, self._target_positions):\n      target_position[2] = _PROP_SIZE\n      target.set_position(physics, target_position)\n\n  def before_step(self, physics, actions, random_state):\n    if isinstance(actions, list):\n      actions = np.concatenate(actions)\n    super(PredicateTask, self).before_step(physics, actions, random_state)\n    if self._first_step:\n      self._first_step = False\n    else:\n      self._was_active = [\n          predicate.is_active(physics) for predicate in self._active_predicates\n      ]\n\n  def after_step(self, physics, random_state):\n    if self._all_predicates_satisfied() and self._regen_predicates:\n      self._set_random_colors(random_state)\n      self._set_active_predicates(random_state)\n      super(PredicateTask, self).after_step(physics, random_state)\n\n  def get_reward(self, physics):\n    reward = 0.0\n    for predicate, was_active in zip(self._active_predicates, self._was_active):\n      if predicate.is_active(physics) and not was_active:\n        reward += 1.0\n      elif was_active and not predicate.is_active(physics):\n        reward -= 1.0\n\n    if self._all_predicates_satisfied():\n      reward += self._terminating_reward_bonus\n    self._reward = reward\n    return reward * self._reward_scale\n\n  def _all_predicates_satisfied(self):\n    return sum(self._was_active) == len(self._active_predicates)\n\n  def should_terminate_episode(self, physics):\n    return ((self._all_predicates_satisfied() and not self._regen_predicates) or\n            self._walker.aliveness(physics) < self._alive_threshold)\n\n  def get_discount(self, physics):\n    if self.should_terminate_episode(physics):\n      return 0.0\n    return 1.0\n\n  def get_reward_spec(self):\n    return specs.Array(shape=[], dtype=np.float32)\n\n  def get_discount_spec(self):\n    return specs.Array(shape=[], dtype=np.float32)\n"
  },
  {
    "path": "box_arrangement/predicate_task_test.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Tests for box_arrangement.predicate_task.\"\"\"\n\nfrom absl.testing import absltest\nfrom dm_control import composer\nfrom dm_control.entities import props\nfrom dm_control.locomotion import arenas\nfrom dm_control.locomotion import walkers\nimport numpy as np\n\nfrom box_arrangement import predicate_task\nfrom box_arrangement import predicates\n\n\n_EGOCENTRIC_OBSERVABLES = [\n    \"walker/body_height\",\n    \"walker/end_effectors_pos\",\n    \"walker/joints_pos\",\n    \"walker/joints_vel\",\n    \"walker/sensors_accelerometer\",\n    \"walker/sensors_gyro\",\n    \"walker/sensors_velocimeter\",\n    \"walker/world_zaxis\",\n]\n\n\nclass PredicateTaskTest(absltest.TestCase):\n\n  def _setup_basic_gtt_task(self, num_targets=1, reward_scale=1.0):\n    walker = walkers.Ant()\n    text_maze = arenas.padded_room.PaddedRoom(\n        room_size=8, num_objects=2, pad_with_walls=True)\n    maze_arena = arenas.MazeWithTargets(maze=text_maze)\n    targets = []\n    for _ in range(num_targets):\n      targets.append(\n          props.PositionDetector(\n              pos=[0, 0, 0.5],\n              size=[0.5, 0.5, 0.5],\n              inverted=False,\n              visible=True))\n    test_predicates = [predicates.MoveWalkerToRandomTarget(walker, targets)]\n    self._task = predicate_task.PredicateTask(\n        walker=walker,\n        maze_arena=maze_arena,\n        predicates=test_predicates,\n        targets=targets,\n        randomize_num_predicates=False,\n        reward_scale=reward_scale,\n        terminating_reward_bonus=2.0,\n        )\n    random_state = np.random.RandomState(12345)\n    self._env = composer.Environment(self._task, random_state=random_state)\n    self._walker = walker\n    self._targets = targets\n\n  def test_observables(self):\n    self._setup_basic_gtt_task()\n    timestep = self._env.reset()\n    self.assertIn(\"predicate_0\", timestep.observation)\n    self.assertIn(\"walker/target_positions\", timestep.observation)\n    for observable in _EGOCENTRIC_OBSERVABLES:\n      self.assertIn(observable, timestep.observation)\n\n  def test_termination_and_discount(self):\n    self._setup_basic_gtt_task()\n    self._env.reset()\n    target_pos = (0, 0, 0.5)\n    # Initialize the walker away from the target.\n    self._walker.set_pose(\n        self._env.physics, position=(-2, 0, 0.0), quaternion=(1, 0, 0, 0))\n    self._targets[0].set_position(\n        self._env.physics,\n        target_pos)\n    self._env.physics.forward()\n    zero_action = np.zeros_like(self._env.physics.data.ctrl)\n    for _ in range(10):\n      timestep = self._env.step(zero_action)\n      self.assertEqual(timestep.discount, 1.0)\n      self.assertEqual(timestep.reward, 0.0)\n\n    walker_pos = (0, 0, 0.0)\n    self._walker.set_pose(\n        self._env.physics,\n        position=walker_pos)\n    self._env.physics.forward()\n\n    # For a single predicate, first the reward is +1.0 for activating the\n    # predicate\n    timestep = self._env.step(zero_action)\n    self.assertEqual(timestep.discount, 1.0)\n    self.assertEqual(timestep.reward, 1.0)\n    # If the predicate is active and *remains* active, the discount gets to 0.0\n    # and the terminating reward bonus is given.\n    timestep = self._env.step(zero_action)\n    self.assertEqual(timestep.discount, 0.0)\n    self.assertEqual(timestep.reward, 2.0)\n    # Make sure this is a termination step.\n    self.assertTrue(timestep.last())\n\n  def test_reward_scaling(self):\n    self._setup_basic_gtt_task(reward_scale=10.0)\n    self._env.reset()\n    zero_action = np.zeros_like(self._env.physics.data.ctrl)\n    target_pos = (0, 0, 0.5)\n    walker_pos = (0, 0, 0.0)\n    self._targets[0].set_position(self._env.physics, target_pos)\n    self._walker.set_pose(self._env.physics, position=walker_pos)\n    self._env.physics.forward()\n\n    # For a single predicate, first the reward is +1.0 for activating the\n    # predicate\n    timestep = self._env.step(zero_action)\n    self.assertEqual(timestep.discount, 1.0)\n    self.assertEqual(timestep.reward, 10.0)\n    # If the predicate is active and *remains* active, the discount gets to 0.0\n    # and the terminating reward bonus is given.\n    timestep = self._env.step(zero_action)\n    self.assertEqual(timestep.discount, 0.0)\n    self.assertEqual(timestep.reward, 20.0)\n    # Make sure this is a termination step.\n    self.assertTrue(timestep.last())\n\n  def test_too_few_predicates_raises_exception(self):\n    walker = walkers.Ant()\n    num_targets = 1\n    text_maze = arenas.padded_room.PaddedRoom(\n        room_size=8, num_objects=2, pad_with_walls=True)\n    maze_arena = arenas.MazeWithTargets(maze=text_maze)\n    targets = []\n    for _ in range(num_targets):\n      targets.append(\n          props.PositionDetector(\n              pos=[0, 0, 0.5],\n              size=[0.5, 0.5, 0.5],\n              inverted=False,\n              visible=True))\n    test_predicates = []\n    with self.assertRaisesWithLiteralMatch(\n        ValueError, \"Not enough predicates for task.\"\n        \" The maximum number of \"\n        \"predicates can be \"\n        \"1 but only 0 predicates provided.\"):\n      predicate_task.PredicateTask(\n          walker=walker,\n          maze_arena=maze_arena,\n          predicates=test_predicates,\n          targets=targets,\n          randomize_num_predicates=False,\n          reward_scale=1.0,\n          terminating_reward_bonus=2.0,\n          )\n\n  def test_error_too_few_targets(self):\n    walker = walkers.Ant()\n    num_targets = 5\n    text_maze = arenas.padded_room.PaddedRoom(\n        room_size=8, num_objects=2, pad_with_walls=True)\n    maze_arena = arenas.MazeWithTargets(maze=text_maze)\n    targets = []\n    for _ in range(num_targets):\n      targets.append(\n          props.PositionDetector(\n              pos=[0, 0, 0.5],\n              size=[0.5, 0.5, 0.5],\n              inverted=False,\n              visible=True))\n    test_predicates = [predicates.MoveWalkerToRandomTarget(walker, targets)]\n    task = predicate_task.PredicateTask(\n        walker=walker,\n        maze_arena=maze_arena,\n        predicates=test_predicates,\n        targets=targets,\n        randomize_num_predicates=False,\n        reward_scale=1.0,\n        terminating_reward_bonus=2.0,\n    )\n    random_state = np.random.RandomState(12345)\n    env = composer.Environment(task, random_state=random_state)\n    with self.assertRaisesWithLiteralMatch(\n        RuntimeError, \"The generated maze does not contain enough target \"\n        \"positions for the requested number of props (0) and targets (5): \"\n        \"got 2.\"\n    ):\n      env.reset()\n\n  def test_error_if_no_predicates_found(self):\n    walker = walkers.Ant()\n    num_targets = 2\n    text_maze = arenas.padded_room.PaddedRoom(\n        room_size=8, num_objects=6, pad_with_walls=True)\n    maze_arena = arenas.MazeWithTargets(maze=text_maze)\n    targets = []\n    for _ in range(num_targets):\n      targets.append(\n          props.PositionDetector(\n              pos=[0, 0, 0.5],\n              size=[0.5, 0.5, 0.5],\n              inverted=False,\n              visible=True))\n    # Moving the walker to two targets is not possible since the walker is a\n    # shared object in use.\n    test_predicates = [predicates.MoveWalkerToTarget(walker, targets[0]),\n                       predicates.MoveWalkerToTarget(walker, targets[1])]\n    task = predicate_task.PredicateTask(\n        walker=walker,\n        maze_arena=maze_arena,\n        predicates=test_predicates,\n        targets=targets[1:],\n        randomize_num_predicates=False,\n        max_num_predicates=2,\n        reward_scale=1.0,\n        terminating_reward_bonus=2.0,\n    )\n    random_state = np.random.RandomState(12345)\n    env = composer.Environment(task, random_state=random_state)\n    with self.assertRaisesWithLiteralMatch(\n        ValueError, \"Could not find set of active predicates\"\n        \" with unique objects are after 1000 iterations.\"):\n      env.reset()\n\n    # However moving to one of the two targets is fine.\n    walker = walkers.Ant()\n    num_targets = 2\n    text_maze = arenas.padded_room.PaddedRoom(\n        room_size=8, num_objects=6, pad_with_walls=True)\n    maze_arena = arenas.MazeWithTargets(maze=text_maze)\n    targets = []\n    for _ in range(num_targets):\n      targets.append(\n          props.PositionDetector(\n              pos=[0, 0, 0.5],\n              size=[0.5, 0.5, 0.5],\n              inverted=False,\n              visible=True))\n    test_predicates = [predicates.MoveWalkerToTarget(walker, targets[0]),\n                       predicates.MoveWalkerToTarget(walker, targets[1])]\n    task = predicate_task.PredicateTask(\n        walker=walker,\n        maze_arena=maze_arena,\n        predicates=test_predicates,\n        targets=targets[1:],\n        randomize_num_predicates=False,\n        max_num_predicates=1,\n        reward_scale=1.0,\n        terminating_reward_bonus=2.0,\n    )\n    random_state = np.random.RandomState(12345)\n    env = composer.Environment(task, random_state=random_state)\n    env.reset()\n\n\nif __name__ == \"__main__\":\n  absltest.main()\n"
  },
  {
    "path": "box_arrangement/predicates.py",
    "content": "# Copyright 2018 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Defines some `predicates` for the predicate_task.\"\"\"\nimport abc\nimport colorsys\nimport numpy as np\n\nHSV_SATURATION = 0.5\nHSV_ACTIVATED_SATURATION = 0.75\nHSV_VALUE = 1.0\n\nWALKER_GOAL_RGBA = [0, 0, 0]\nWALKER_GOAL_PRESSED_RGBA = [128, 128, 128]\nINACTIVE_OBSERVATION_VALUE = [-1] * 5\n\n# Define globals for the special encoding.\nMOVABLE_TYPES = {'walker': 0, 'box': 1}\nTARGET_TYPES = {'box': 0, 'target': 1}\nPREDICATE_TYPES = {'on': 0, 'close_to': 1, 'far_from': 2}\n\n\nclass BasePredicate(object, metaclass=abc.ABCMeta):\n  \"\"\"Base class for all predicates.\"\"\"\n\n  def __init__(self, walker):\n    self._walker = walker\n\n  @abc.abstractmethod\n  def reinitialize(self, random_state):\n    \"\"\"Reinitializes a new, potentially random, predicate state.\n\n    The reinitialize method should reset to a new predicate state which could\n    update the `objects_in_use` by the `Predicate`. This method could be called\n    multiple times before a finally binding predicate set has been found.\n    Therefore no changes to the model that are not reversible should be made\n    here (setting colors etc). Any changes affecting the Mujoco model should\n    instead be made in the `activate_predicate` method call.\n\n    Args:\n      random_state: An instance of `np.RandomState` which may be seeded to\n        ensure a deterministic environment.\n    \"\"\"\n    pass\n\n  @abc.abstractmethod\n  def activate_predicate(self):\n    \"\"\"Activates the current predicate configuration.\n\n    Any changes that are non-reversible like setting object properties or\n    affinities *must* only be done in this method. At this point, the\n    `predicate_task` logic has confirmed that a valid predicate configuration\n    has been found.\n    \"\"\"\n    pass\n\n  @property\n  def objects_in_use(self):\n    \"\"\"Returns the `set` of objects used for this episode.\"\"\"\n    return set()\n\n  @abc.abstractproperty\n  def observation_value(self):\n    \"\"\"Returns a `dict` to be used as the predicate observable.\"\"\"\n    pass\n\n  @abc.abstractmethod\n  def is_active(self, physics):\n    \"\"\"Boolean method indicating whether the predicate has been activated.\n\n    If `True`, it implies the condition for the predicate has been satisfied\n    and the walker can be rewarded.\n\n    Args:\n      physics: An instance of `control.Physics`.\n    \"\"\"\n    pass\n\n  @property\n  def inactive_observation_value(self):\n    \"\"\"observation_value indicating a `Predicate` is inactive.\n\n    The `PredicateTask` randomly samples the number of active predicates to be\n    used on each episode. For a consistent `observation_spec`, the predicates\n    that are not active need a special observation_value that cannot be used\n    anywhere else.\n\n    Returns:\n      A special value indicating that the predicate is inactive and is not used\n      by any other predicate in the task.\n    \"\"\"\n    return INACTIVE_OBSERVATION_VALUE\n\n\nclass MoveWalkerToTarget(BasePredicate):\n  \"\"\"Predicate to move a walker to a specific target.\"\"\"\n\n  def __init__(self, walker, target, target_index=0):\n    \"\"\"Predicate to move a walker or box to a target.\n\n    Args:\n      walker: An locomotion `Walker` instance to use for this predicate.\n      target: `locomotion.prop` instance containing an `activated` property.\n      target_index: An 'int' argument to add to the observable to indicate the\n        index of the target.\n    \"\"\"\n    super(MoveWalkerToTarget, self).__init__(walker)\n    self._target = target\n    self._target_id = target_index\n\n  def reinitialize(self, random_state):\n    self._target.deregister_entities()\n\n  def activate_predicate(self):\n    self._target.register_entities(self._walker)\n    self._target.set_colors(WALKER_GOAL_RGBA, WALKER_GOAL_PRESSED_RGBA)\n\n  @property\n  def objects_in_use(self):\n    return set([self._walker, self._target])\n\n  @property\n  def observation_value(self):\n    return np.array([\n        MOVABLE_TYPES['walker'], 0, TARGET_TYPES['target'], self._target_id,\n        PREDICATE_TYPES['close_to']\n    ])\n\n  def is_active(self, physics):\n    return self._target.activated\n\n\nclass MoveWalkerToRandomTarget(BasePredicate):\n  \"\"\"Predicate to move a walker to a random target.\"\"\"\n\n  def __init__(self, walker, targets=None):\n    \"\"\"Predicate to move a walker or box to a target.\n\n    Args:\n      walker: An locomotion `Walker` instance to use for this predicate.\n      targets: An optional list of `locomotion.prop` instances each of which\n        contains an `activated` property.\n    \"\"\"\n    super(MoveWalkerToRandomTarget, self).__init__(walker)\n    self._targets = targets\n    self._target_to_move_to = None\n\n  def reinitialize(self, random_state):\n    if self._target_to_move_to is not None:\n      self._target_to_move_to.deregister_entities()\n    self._target_to_move_to = random_state.choice(self._targets)\n    self._target_idx = self._targets.index(self._target_to_move_to)\n\n  def activate_predicate(self):\n    self._target_to_move_to.register_entities(self._walker)\n    self._target_to_move_to.set_colors(WALKER_GOAL_RGBA,\n                                       WALKER_GOAL_PRESSED_RGBA)\n\n  @property\n  def objects_in_use(self):\n    return set([self._walker, self._target_to_move_to])\n\n  @property\n  def observation_value(self):\n    return np.array([\n        MOVABLE_TYPES['walker'], 0, TARGET_TYPES['target'], self._target_idx,\n        PREDICATE_TYPES['close_to']\n    ])\n\n  def is_active(self, physics):\n    return self._target_to_move_to.activated\n\n\nclass MoveWalkerToBox(BasePredicate):\n  \"\"\"Predicate to move a walker to a specific box.\"\"\"\n\n  def __init__(self, walker, box, box_index=0, detection_region=None):\n    \"\"\"Predicate to move a walker to a specific box.\n\n    Args:\n      walker: An locomotion `Walker` instance to use for this predicate.\n      box: A `manipulation.prop` instance to move.\n      box_index: An integer index to use for the observable to identify the\n        `box`.\n      detection_region: A 2-tuple indicating the tolerances in x and y for the\n        walker to be deemed `close_to` the box. If `None`, contact based\n        detection is used.\n    \"\"\"\n    super(MoveWalkerToBox, self).__init__(walker)\n    self._box = box\n    self._detection_region = detection_region\n    self._box_index = box_index\n    self._walker_geoms = None\n\n  def reinitialize(self, random_state):\n    if self._walker_geoms is None:\n      # pylint: disable=protected-access\n      self._walker_geoms = set(self._walker._mjcf_root.find_all('geom'))\n\n  def activate_predicate(self):\n    self._box.geom.rgba[:3] = WALKER_GOAL_RGBA\n\n  @property\n  def objects_in_use(self):\n    return set([self._walker, self._box])\n\n  @property\n  def observation_value(self):\n    return np.array([\n        MOVABLE_TYPES['walker'], 0, TARGET_TYPES['box'], self._box_index,\n        PREDICATE_TYPES['close_to']\n    ])\n\n  def is_active(self, physics):\n    if self._detection_region is None:\n      return self._is_walker_contacting_box(physics)\n    else:\n      return np.all(\n          np.abs(\n              physics.bind(self._walker.root_body).xpos -\n              physics.bind(self._box.geom).xpos)[:2] < self._detection_region)\n\n  def _is_walker_contacting_box(self, physics):\n    walker_geom_ids = [\n        physics.bind(geom).element_id for geom in self._walker_geoms\n    ]\n    for contact in physics.data.contact:\n      contact_geoms = set([contact.geom1, contact.geom2])\n      if (physics.bind(self._box.geom).element_id in contact_geoms and\n          contact_geoms.intersection(walker_geom_ids)):\n        return True\n    return False\n\n\nclass MoveBoxToBox(BasePredicate):\n  \"\"\"Predicate to move a walker to a specific box.\"\"\"\n\n  def __init__(self,\n               walker,\n               first_box,\n               second_box,\n               first_box_index=0,\n               second_box_index=1,\n               detection_region=None):\n    \"\"\"Predicate to move a walker to a specific box.\n\n    Args:\n      walker: An locomotion `Walker` instance to use for this predicate.\n      first_box: A `manipulation.prop` instance to move.\n      second_box: A `manipulation.prop` instance to move.\n      first_box_index: An integer index to use for the observable to identify\n        the  `box`.\n      second_box_index: An integer index to use for the observable to identify\n        the  `box`.\n      detection_region: A 2-tuple indicating the tolerances in x and y for the\n        walker to be deemed `close_to` the box. If `None`, contact based\n        detection is used.\n    \"\"\"\n    super(MoveBoxToBox, self).__init__(walker)\n    self._first_box = first_box\n    self._second_box = second_box\n    self._detection_region = detection_region\n    self._first_box_index = first_box_index\n    self._second_box_index = second_box_index\n    self._walker_geoms = None\n\n  def reinitialize(self, random_state):\n    if self._walker_geoms is None:\n      # pylint: disable=protected-access\n      self._walker_geoms = set(self._walker._mjcf_root.find_all('geom'))\n\n  def activate_predicate(self):\n    self._first_box.geom.rgba[:3] = WALKER_GOAL_RGBA\n\n  @property\n  def objects_in_use(self):\n    return set([self._first_box, self._second_box])\n\n  @property\n  def observation_value(self):\n    return np.array([\n        MOVABLE_TYPES['box'], self._first_box_index, TARGET_TYPES['box'],\n        self._second_box_index, PREDICATE_TYPES['close_to']\n    ])\n\n  def is_active(self, physics):\n    if self._detection_region is None:\n      return self._are_boxes_in_contact(physics)\n    else:\n      return np.all(\n          np.abs(\n              physics.bind(self._first_box.geom).xpos -\n              physics.bind(self._second_box.geom).xpos)[:2] <\n          self._detection_region)\n\n  def _are_boxes_in_contact(self, physics):\n    for contact in physics.data.contact:\n      contact_geoms = set([contact.geom1, contact.geom2])\n      if (physics.bind(self._first_box.geom).element_id in contact_geoms and\n          physics.bind(self._second_box.geom).element_id in contact_geoms):\n        return True\n    return False\n\n\nclass MoveBoxToTarget(BasePredicate):\n  \"\"\"Predicate to move a walker to a specific target.\"\"\"\n\n  def __init__(self, walker, box, target, box_index=0, target_index=0):\n    \"\"\"Predicate to move a walker or box to a target.\n\n    Args:\n      walker: An locomotion `Walker` instance to use for this predicate.\n      box: A `manipulation.prop` to move to the target.\n      target: `locomotion.prop` instance containing an `activated` property.\n      box_index: An 'int' argument to add to the observable to indicate the\n        index of the box.\n      target_index: An 'int' argument to add to the observable to indicate the\n        index of the target.\n    \"\"\"\n    super(MoveBoxToTarget, self).__init__(walker)\n    self._box = box\n    self._target = target\n    self._box_id = box_index\n    self._target_id = target_index\n    self._original_box_size = np.copy(box.geom.size)\n    self._rgb = None\n    self._activated_rgb = None\n\n  def reinitialize(self, random_state):\n    self._target.deregister_entities()\n    self._get_box_properties(random_state)\n\n  def _get_box_properties(self, random_state):\n    hue0 = random_state.uniform()\n    hue = (hue0 + self._target_id) % 1.0\n    self._rgb = colorsys.hsv_to_rgb(hue, HSV_SATURATION, HSV_VALUE)\n    self._activated_rgb = colorsys.hsv_to_rgb(hue, HSV_ACTIVATED_SATURATION,\n                                              HSV_VALUE)\n\n  def activate_predicate(self):\n    self._target.set_colors(self._rgb, self._activated_rgb)\n    self._box.geom.rgba[:3] = self._rgb\n    self._target.register_entities(self._box)\n\n  @property\n  def objects_in_use(self):\n    return set([self._box, self._target])\n\n  @property\n  def observation_value(self):\n    return np.array([\n        MOVABLE_TYPES['box'], self._box_id, TARGET_TYPES['target'],\n        self._target_id, PREDICATE_TYPES['close_to']\n    ])\n\n  def is_active(self, physics):\n    return self._target.activated\n\n\nclass MoveBoxToRandomTarget(BasePredicate):\n  \"\"\"Predicate to move a walker to a random target.\"\"\"\n\n  def __init__(self, walker, box, box_index=0, targets=None):\n    \"\"\"Predicate to move a walker or box to a target.\n\n    Args:\n      walker: An locomotion `Walker` instance to use for this predicate.\n      box: A `manipulation.prop` to move to the target.\n      box_index: An optional 'int' argument to add to the observable to indicate\n        the index of the box.\n      targets: An optional list of `locomotion.prop` instances each of which\n        contains an `activated` property.\n    \"\"\"\n    super(MoveBoxToRandomTarget, self).__init__(walker)\n    self._targets = targets\n    self._box_to_move = box\n    self._box_index = box_index\n    self._target_to_move_to = None\n    self._original_box_size = np.copy(box.geom.size)\n    self._rgb = None\n    self._activated_rgb = None\n\n  def reinitialize(self, random_state):\n    if self._target_to_move_to is not None:\n      self._target_to_move_to.deregister_entities()\n    self._target_to_move_to = random_state.choice(self._targets)\n    self._target_idx = self._targets.index(self._target_to_move_to)\n    self._get_box_properties(random_state)\n\n  def _get_box_properties(self, random_state):\n    hue0 = random_state.uniform()\n    hue = (hue0 + (self._target_idx / len(self._targets))) % 1.0\n    self._rgb = colorsys.hsv_to_rgb(hue, HSV_SATURATION, HSV_VALUE)\n    self._activated_rgb = colorsys.hsv_to_rgb(hue, HSV_ACTIVATED_SATURATION,\n                                              HSV_VALUE)\n\n  def activate_predicate(self):\n    self._target_to_move_to.set_colors(self._rgb, self._activated_rgb)\n    self._box_to_move.geom.rgba[:3] = self._rgb\n    self._target_to_move_to.register_entities(self._box_to_move)\n\n  @property\n  def objects_in_use(self):\n    return set([self._box_to_move, self._target_to_move_to])\n\n  @property\n  def observation_value(self):\n    return np.array([\n        MOVABLE_TYPES['box'], self._box_index,\n        TARGET_TYPES['target'], self._target_idx,\n        PREDICATE_TYPES['close_to']\n    ])\n\n  def is_active(self, physics):\n    return self._target_to_move_to.activated\n"
  },
  {
    "path": "box_arrangement/setup.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Setup for pip package.\"\"\"\n\nfrom setuptools import find_packages\nfrom setuptools import setup\n\n\nREQUIRED_PACKAGES = ['absl-py', 'dm_control', 'numpy', 'dm_env']\n\nsetup(\n    name='box_arrangement',\n    version='0.1',\n    description=('Sparse reward tasks involving moving and pushing boxes to'\n                 ' targets.'),\n    url='https://github.com/deepmind/deepmind-research/box_arrangement',\n    author='DeepMind',\n    author_email='dhruvat@google.com',\n    # Contained modules and scripts.\n    packages=find_packages(),\n    install_requires=REQUIRED_PACKAGES,\n    platforms=['any'],\n    license='Apache 2.0',\n)\n"
  },
  {
    "path": "box_arrangement/task_examples.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Example tasks used in publications.\"\"\"\n\nfrom dm_control import composer\nfrom dm_control.entities import props\nfrom dm_control.locomotion import arenas as locomotion_arenas\nfrom dm_control.locomotion import walkers\nfrom dm_control.manipulation import props as manipulation_props\n\n\nfrom box_arrangement import dmlab_assets\nfrom box_arrangement import predicates as predicates_module\nfrom box_arrangement.predicate_task import PredicateTask\n\nDEFAULT_TIME_LIMIT = 20.0\nDEFAULT_CONTROL_TIMESTEP = 0.05\nMIN_ROOM_SIZE = 3\n\n\ndef _make_predicate_task(n_boxes, n_targets,\n                         include_gtt_predicates, include_move_box_predicates,\n                         max_num_predicates, control_timestep, time_limit):\n  \"\"\"Auxiliary function to construct different predicates tasks.\"\"\"\n  walker = walkers.Ant()\n  skybox = dmlab_assets.SkyBox(style='sky_03')\n  wall = dmlab_assets.WallTextures(style='style_03')\n  floor = dmlab_assets.FloorTextures(style='style_03')\n\n  # Make room size become bigger once the number of objects become larger.\n  num_objects = n_boxes + n_targets\n  room_size = max(MIN_ROOM_SIZE, num_objects)\n  text_maze = locomotion_arenas.padded_room.PaddedRoom(\n      room_size=room_size, num_objects=num_objects, pad_with_walls=True)\n  arena = locomotion_arenas.MazeWithTargets(\n      maze=text_maze,\n      skybox_texture=skybox,\n      wall_textures=wall,\n      floor_textures=floor)\n\n  boxes = []\n  for _ in range(n_boxes):\n    boxes.append(\n        manipulation_props.BoxWithSites(mass=1.5, half_lengths=[0.5, 0.5, 0.5]))\n\n  targets = []\n  for _ in range(n_targets):\n    targets.append(\n        props.PositionDetector(\n            pos=[0, 0, 0.5], size=[0.5, 0.5, 0.5], inverted=False,\n            visible=True))\n\n  predicates = []\n  if include_gtt_predicates:\n    predicates.append(\n        predicates_module.MoveWalkerToRandomTarget(\n            walker=walker, targets=targets))\n  if include_move_box_predicates:\n    for box_idx in range(len(boxes)):\n      predicates.append(\n          predicates_module.MoveBoxToRandomTarget(\n              walker=walker,\n              box=boxes[box_idx],\n              box_index=box_idx,\n              targets=targets))\n\n  task = PredicateTask(\n      walker=walker,\n      maze_arena=arena,\n      predicates=predicates,\n      props=boxes,\n      targets=targets,\n      max_num_predicates=max_num_predicates,\n      randomize_num_predicates=False,\n      reward_scale=10.,\n      regenerate_predicates=False,\n      physics_timestep=0.005,\n      control_timestep=control_timestep)\n  env = composer.Environment(task=task, time_limit=time_limit)\n\n  return env\n\n\ndef go_to_k_targets(n_targets=3,\n                    time_limit=DEFAULT_TIME_LIMIT,\n                    control_timestep=DEFAULT_CONTROL_TIMESTEP):\n  \"\"\"Loads `go_to_k_targets` task.\"\"\"\n  return _make_predicate_task(\n      n_boxes=0,\n      n_targets=n_targets,\n      include_gtt_predicates=True,\n      include_move_box_predicates=False,\n      max_num_predicates=1,\n      control_timestep=control_timestep,\n      time_limit=time_limit)\n\n\ndef move_box(n_targets=3,\n             time_limit=DEFAULT_TIME_LIMIT,\n             control_timestep=DEFAULT_CONTROL_TIMESTEP):\n  \"\"\"Loads `move_box` task.\"\"\"\n  return _make_predicate_task(\n      n_boxes=1,\n      n_targets=n_targets,\n      include_gtt_predicates=False,\n      include_move_box_predicates=True,\n      max_num_predicates=1,\n      control_timestep=control_timestep,\n      time_limit=time_limit)\n\n\ndef move_box_or_gtt(n_targets=3,\n                    time_limit=DEFAULT_TIME_LIMIT,\n                    control_timestep=DEFAULT_CONTROL_TIMESTEP):\n  \"\"\"Loads `move_box_or_gtt` task.\"\"\"\n  return _make_predicate_task(\n      n_boxes=1,\n      n_targets=n_targets,\n      include_gtt_predicates=True,\n      include_move_box_predicates=True,\n      max_num_predicates=1,\n      control_timestep=control_timestep,\n      time_limit=time_limit)\n\n\ndef move_box_and_gtt(n_targets=3,\n                     time_limit=DEFAULT_TIME_LIMIT,\n                     control_timestep=DEFAULT_CONTROL_TIMESTEP):\n  \"\"\"Loads `move_box_or_gtt` task.\"\"\"\n  return _make_predicate_task(\n      n_boxes=1,\n      n_targets=n_targets,\n      include_gtt_predicates=True,\n      include_move_box_predicates=True,\n      max_num_predicates=2,\n      control_timestep=control_timestep,\n      time_limit=time_limit)\n"
  },
  {
    "path": "byol/README.md",
    "content": "# Bootstrap Your Own Latent\n\nThis is the implementation of the pre-training and linear evaluation pipeline of\nBYOL - https://arxiv.org/abs/2006.07733.\n\nUsing this implementation should achieve a top-1 accuracy on Imagenet between\n74.0% and 74.5% after about 8h of training using 512 Cloud TPU v3.\n\nThe main pretraining module is `byol_experiment.py`. By default it uses BYOL to\npretrain a Resnet-50 on Imagenet. In parallel, we train a classifier on top of\nthe representation to assess its performance during training. This classifier\ndoes not back-propagate any gradient to the ResNet-50.\n\nThe evaluation module is `eval_experiment.py`. It evaluates the performance of\nthe representation learnt by BYOL (using a given checkpoint).\n\n## Setup\n\nTo set up a Python virtual environment with the required dependencies, run:\n\n```shell\npython3 -m venv byol_env\nsource byol_env/bin/activate\npip install --upgrade pip\npip install -r byol/requirements.txt\n```\n\nThe code uses `tensorflow_datasets` to load the Imagenet dataset. Manual\ndownload may be required; see https://www.tensorflow.org/datasets/catalog/imagenet2012\nfor details.\n\n## Running a short pre-training locally\n\nTo run a short (40 epochs) pre-training experiment on a local machine, use:\n\n```shell\nmkdir /tmp/byol_checkpoints\npython -m byol.main_loop \\\n  --experiment_mode='pretrain' \\\n  --worker_mode='train' \\\n  --checkpoint_root='/tmp/byol_checkpoints' \\\n  --pretrain_epochs=40\n```\n\n## Full pipeline and presets\n\nThe various parts of the pipeline can be run using:\n\n```shell\npython -m byol.main_loop \\\n  --experiment_mode=<'pretrain' or 'linear-eval'> \\\n  --worker_mode=<'train' or 'eval'> \\\n  --checkpoint_root=</path/to/the/checkpointing/folder> \\\n  --pretrain_epochs=<40, 100, 300 or 1000>\n```\n\n### Pretraining\nSetting `--experiment_mode=pretrain` will configure the main loop for\npretraining; we provide presets for 40, 100, 300 and 1000 epochs.\n\nUse `--worker_mode=train` for a training job, which will regularly save\ncheckpoints under `<checkpoint_root>/pretrain.pkl`. To monitor the progress of\nthe pretraining, you can run a second worker (using `--worker_mode=eval`) with\nthe same `checkpoint_root` setting. This worker will regularly load the\ncheckpoint and evaluate the performance of a linear classifier (trained by the\npretraining `train` worker) on the `TEST` set.\n\nNote that the default settings are set for large-scale training on Cloud TPUs,\nwith a total batch size of 4096. To avoid the need to re-run the full\nexperiment, we provide the following pre-trained checkpoints:\n\n- [ResNet-50 1x](https://storage.googleapis.com/deepmind-byol/checkpoints/pretrain_res50x1.pkl) (570 MB): should evaluate to ~74.4% top-1 accuracy.\n- [ResNet-200 2x](https://storage.googleapis.com/deepmind-byol/checkpoints/pretrain_res200x2.pkl) (4.6GB): should evaluate to ~79.6% top-1 accuracy.\n\n\n### Linear evaluation\nSetting `--experiment_mode=linear-eval` will configure the main loop for\nlinear evaluation; we provide presets for 80 epochs.\n\nUse `--worker_mode=train` for a training job, which will load the encoder\nweights from an existing checkpoint (form a pretrain experiment) located at\n`<checkpoint_root>/pretrain.pkl`, and train a linear classifier on top of this\nencoder. The weights from the linear classifier trained in the pretraining phase\nwill be discarded.\n\nThe training job will regularly save checkpoints under\n`<checkpoint_root>/linear-eval.pkl`. You can run a second worker\n(using `--worker_mode=eval`) with the same `checkpoint_root` setting to\nregularly load the checkpoint and evaluate the performance of the classifier\n(trained by the linear-eval `train` worker) on the test set.\n\nNote that the above will run a simplified version of the linear evaluation\npipeline described in the paper, with a single value of the base learning rate\nand without using a validation set. To fully reproduce the results from the\npaper, one should run 5 instances of the linear-eval `train` worker (using only\nthe `TRAIN` subset, and each using a different `checkpoint_root`), run the\n`eval` worker (using only the `VALID` subset) for each checkpoint, then run a\nfinal `eval` worker on the `TEST` set.\n\n\n### Note on batch normalization\nWe found that using [Goyal et al.'s](https://arxiv.org/abs/1706.02677)\ninitialization for the batch-normalization (i.e., initializing the scaling\ncoefficient gamma to 0 in the last batchnorm of each residual block) led to\nmore stable training, but slightly harms BYOL's performance for very large\nnetworks (e.g., `ResNet-50 (3x)`, `ResNet-200 (2x)`). We didn't observe any\nchange in performance for smaller networks (`ResNet-50 (1x)` and `(2x)`).\n\nResults in the paper were obtained *without* this modified initialization, i.e.\nusing Haiku's default of $\\gamma = 1$. To fully reproduce, please remove the\n`scale_init` argument in Haiku's ResNet [BlockV1](https://github.com/deepmind/dm-haiku/blob/0673817149470d19d4c03de4a45e6409f214b61d/haiku/_src/nets/resnet.py#L99).\n\n\n## Running on GCP\n\nNotice: we currently do not recommend running the full experiment on public\nCloud TPUs. We provide an alternative small-scale GPU setup in the next section.\n\nThe experiments from the paper were run on Google's internal infrastructure.\nUnfortunately, training JAX models on publicly available Cloud TPUs is currently\nin its early stages; in particular, we found the learning to be heavily\nbottlenecked by the data loading pipeline, resulting in a significantly slower\ntraining. We will update the code and instructions below once the limitation is\naddressed.\n\nTo train the model on TPU using Google Compute Engine, please follow the\ninstructions at https://cloud.google.com/tpu/docs/imagenet-setup to first\ndownload and preprocess the ImageNet dataset and upload it to a\nCloud Storage Bucket. From a GCE VM, you can check that `tensorflow_datasets`\ncan correctly load the dataset by running:\n\n```python\nimport tensorflow_datasets as tfds\ntfds.load('imagenet2012', data_dir='gs://<your-bucket-name>')\n```\n\nTo learn how to use JAX with Cloud TPUs, please follow the instructions here:\nhttps://github.com/google/jax/tree/master/cloud_tpu_colabs.\n\n\n## Setup for fast iteration\n\nIn order to make reproduction easier, it is possible to change the training\nsetup to use the smaller [imagenette](https://github.com/fastai/imagenette)\ndataset (9469 training images with 10 classes). The following setup and\nhyperparameters can be used on a machine with a single V100 GPU:\n\n- in `utils/dataset.py`:\n  - update `Split.num_examples` with the figures from\n  [tfds](https://www.tensorflow.org/datasets/catalog/imagenette)\n  (with `Split.VALID: 0`)\n  - use `imagenette/160px-v2` in the call to `tfds.load`\n  - use 128x128 px images (_i.e._, replace all instances of `224` by `128`)\n  - it doesn't seem necessary to change the color normalization (make sure to\n    not replace the value `0.224` by mistake in the previous step).\n- in `configs/byol.py`, use:\n  - `num_classes`: `10`\n  - `network_config.encoder`: `ResNet18`\n  - `optimizer_config.weight_decay`: `1e-6`\n  - `lr_schedule_config.base_learning_rate`: `2.0`\n  - `evaluation_config.batch_size`: `25`\n  - other parameters unchanged.\n\nYou can then run:\n\n```shell\nmkdir /tmp/byol_checkpoints\npython -m byol.main_loop \\\n  --experiment_mode='pretrain' \\\n  --worker_mode='train' \\\n  --checkpoint_root='/tmp/byol_checkpoints' \\\n  --batch_size=256 \\\n  --pretrain_epochs=1000\n```\n\nWith these settings, BYOL should achieve ~92.3% top-1 accuracy (for the\n*online* classifier) in roughly 4 hours. Note that the above parameters were not\nfinely tuned and may not be optimal.\n\n\n## Additional checkpoints\n\nAlongside with the pretrained ResNet-50 and ResNet-200 2x, we provide the\nfollowing checkpoints from our ablation study. They all correspond to a\nResNet-50 1x pre-trained over 300 epochs and were randomly selected within the\nthree seeds; file size is roughly 640MB each.\n\n- [Baseline](https://storage.googleapis.com/deepmind-byol/checkpoints/ablations/res50x1_baseline.pkl)\n\n- Smaller batch sizes (figure 3a):\n  - [Batch size 2048](https://storage.googleapis.com/deepmind-byol/checkpoints/ablations/res50x1_batchsize_2048.pkl)\n  - [Batch size 1024](https://storage.googleapis.com/deepmind-byol/checkpoints/ablations/res50x1_batchsize_1024.pkl)\n  - [Batch size 512](https://storage.googleapis.com/deepmind-byol/checkpoints/ablations/res50x1_batchsize_512.pkl)\n  - [Batch size 256](https://storage.googleapis.com/deepmind-byol/checkpoints/ablations/res50x1_batchsize_256.pkl)\n  - [Batch size 128](https://storage.googleapis.com/deepmind-byol/checkpoints/ablations/res50x1_batchsize_128.pkl)\n  - [Batch size 64](https://storage.googleapis.com/deepmind-byol/checkpoints/ablations/res50x1_batchsize_64.pkl)\n\n- Ablation on transformations (figure 3b):\n  - [Remove grayscale](https://storage.googleapis.com/deepmind-byol/checkpoints/ablations/res50x1_no_grayscale.pkl)\n  - [Remove color](https://storage.googleapis.com/deepmind-byol/checkpoints/ablations/res50x1_no_color.pkl)\n  - [Crop and blur only](https://storage.googleapis.com/deepmind-byol/checkpoints/ablations/res50x1_crop_and_blur_only.pkl)\n  - [Crop only](https://storage.googleapis.com/deepmind-byol/checkpoints/ablations/res50x1_crop_only.pkl)\n  - (from Table 18) [Crop and color only](https://storage.googleapis.com/deepmind-byol/checkpoints/ablations/res50x1_crop_and_color_only.pkl)\n\n\n## License\n\nWhile the code is licensed under the Apache 2.0 License, the checkpoints weights\nare made available for non-commercial use only under the terms of the\nCreative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)\nlicense. You can find details at:\nhttps://creativecommons.org/licenses/by-nc/4.0/legalcode.\n"
  },
  {
    "path": "byol/byol_experiment.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"BYOL pre-training implementation.\n\nUse this experiment to pre-train a self-supervised representation.\n\"\"\"\n\nimport functools\nfrom typing import Any, Generator, Mapping, NamedTuple, Text, Tuple, Union\n\nfrom absl import logging\nfrom acme.jax import utils as acme_utils\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\nimport optax\n\nfrom byol.utils import augmentations\nfrom byol.utils import checkpointing\nfrom byol.utils import dataset\nfrom byol.utils import helpers\nfrom byol.utils import networks\nfrom byol.utils import optimizers\nfrom byol.utils import schedules\n\n\n# Type declarations.\nLogsDict = Mapping[Text, jnp.ndarray]\n\n\nclass _ByolExperimentState(NamedTuple):\n  \"\"\"Byol's model and optimization parameters and state.\"\"\"\n  online_params: hk.Params\n  target_params: hk.Params\n  online_state: hk.State\n  target_state: hk.State\n  opt_state: optimizers.LarsState\n\n\nclass ByolExperiment:\n  \"\"\"Byol's training and evaluation component definition.\"\"\"\n\n  def __init__(\n      self,\n      random_seed: int,\n      num_classes: int,\n      batch_size: int,\n      max_steps: int,\n      enable_double_transpose: bool,\n      base_target_ema: float,\n      network_config: Mapping[Text, Any],\n      optimizer_config: Mapping[Text, Any],\n      lr_schedule_config: Mapping[Text, Any],\n      evaluation_config: Mapping[Text, Any],\n      checkpointing_config: Mapping[Text, Any]):\n    \"\"\"Constructs the experiment.\n\n    Args:\n      random_seed: the random seed to use when initializing network weights.\n      num_classes: the number of classes; used for the online evaluation.\n      batch_size: the total batch size; should be a multiple of the number of\n        available accelerators.\n      max_steps: the number of training steps; used for the lr/target network\n        ema schedules.\n      enable_double_transpose: see dataset.py; only has effect on TPU.\n      base_target_ema: the initial value for the ema decay rate of the target\n        network.\n      network_config: the configuration for the network.\n      optimizer_config: the configuration for the optimizer.\n      lr_schedule_config: the configuration for the learning rate schedule.\n      evaluation_config: the evaluation configuration.\n      checkpointing_config: the configuration for checkpointing.\n    \"\"\"\n\n    self._random_seed = random_seed\n    self._enable_double_transpose = enable_double_transpose\n    self._num_classes = num_classes\n    self._lr_schedule_config = lr_schedule_config\n    self._batch_size = batch_size\n    self._max_steps = max_steps\n    self._base_target_ema = base_target_ema\n    self._optimizer_config = optimizer_config\n    self._evaluation_config = evaluation_config\n\n    # Checkpointed experiment state.\n    self._byol_state = None\n\n    # Input pipelines.\n    self._train_input = None\n    self._eval_input = None\n\n    # build the transformed ops\n    forward_fn = functools.partial(self._forward, **network_config)\n    self.forward = hk.without_apply_rng(hk.transform_with_state(forward_fn))\n    # training can handle multiple devices, thus the pmap\n    self.update_pmap = jax.pmap(self._update_fn, axis_name='i')\n    # evaluation can only handle single device\n    self.eval_batch_jit = jax.jit(self._eval_batch)\n\n    self._checkpointer = checkpointing.Checkpointer(**checkpointing_config)\n\n  def _forward(\n      self,\n      inputs: dataset.Batch,\n      projector_hidden_size: int,\n      projector_output_size: int,\n      predictor_hidden_size: int,\n      encoder_class: Text,\n      encoder_config: Mapping[Text, Any],\n      bn_config: Mapping[Text, Any],\n      is_training: bool,\n  ) -> Mapping[Text, jnp.ndarray]:\n    \"\"\"Forward application of byol's architecture.\n\n    Args:\n      inputs: A batch of data, i.e. a dictionary, with either two keys,\n        (`images` and `labels`) or three keys (`view1`, `view2`, `labels`).\n      projector_hidden_size: hidden size of the projector MLP.\n      projector_output_size: output size of the projector and predictor MLPs.\n      predictor_hidden_size: hidden size of the predictor MLP.\n      encoder_class: type of the encoder (should match a class in\n        utils/networks).\n      encoder_config: passed to the encoder constructor.\n      bn_config: passed to the hk.BatchNorm constructors.\n      is_training: Training or evaluating the model? When True, inputs must\n        contain keys `view1` and `view2`. When False, inputs must contain key\n        `images`.\n\n    Returns:\n      All outputs of the model, i.e. a dictionary with projection, prediction\n      and logits keys, for either the two views, or the image.\n    \"\"\"\n    encoder = getattr(networks, encoder_class)\n    net = encoder(\n        num_classes=None,  # Don't build the final linear layer\n        bn_config=bn_config,\n        **encoder_config)\n\n    projector = networks.MLP(\n        name='projector',\n        hidden_size=projector_hidden_size,\n        output_size=projector_output_size,\n        bn_config=bn_config)\n    predictor = networks.MLP(\n        name='predictor',\n        hidden_size=predictor_hidden_size,\n        output_size=projector_output_size,\n        bn_config=bn_config)\n    classifier = hk.Linear(\n        output_size=self._num_classes, name='classifier')\n\n    def apply_once_fn(images: jnp.ndarray, suffix: Text = ''):\n      images = dataset.normalize_images(images)\n\n      embedding = net(images, is_training=is_training)\n      proj_out = projector(embedding, is_training)\n      pred_out = predictor(proj_out, is_training)\n\n      # Note the stop_gradient: label information is not leaked into the\n      # main network.\n      classif_out = classifier(jax.lax.stop_gradient(embedding))\n      outputs = {}\n      outputs['projection' + suffix] = proj_out\n      outputs['prediction' + suffix] = pred_out\n      outputs['logits' + suffix] = classif_out\n      return outputs\n\n    if is_training:\n      outputs_view1 = apply_once_fn(inputs['view1'], '_view1')  # pytype: disable=wrong-arg-types  # jax-ndarray\n      outputs_view2 = apply_once_fn(inputs['view2'], '_view2')  # pytype: disable=wrong-arg-types  # jax-ndarray\n      return {**outputs_view1, **outputs_view2}\n    else:\n      return apply_once_fn(inputs['images'], '')  # pytype: disable=wrong-arg-types  # jax-ndarray\n\n  def _optimizer(self, learning_rate: float) -> optax.GradientTransformation:\n    \"\"\"Build optimizer from config.\"\"\"\n    return optimizers.lars(\n        learning_rate,\n        weight_decay_filter=optimizers.exclude_bias_and_norm,\n        lars_adaptation_filter=optimizers.exclude_bias_and_norm,\n        **self._optimizer_config)\n\n  def loss_fn(\n      self,\n      online_params: hk.Params,\n      target_params: hk.Params,\n      online_state: hk.State,\n      target_state: hk.Params,\n      rng: jnp.ndarray,\n      inputs: dataset.Batch,\n  ) -> Tuple[jnp.ndarray, Tuple[Mapping[Text, hk.State], LogsDict]]:\n    \"\"\"Compute BYOL's loss function.\n\n    Args:\n      online_params: parameters of the online network (the loss is later\n        differentiated with respect to the online parameters).\n      target_params: parameters of the target network.\n      online_state: internal state of online network.\n      target_state: internal state of target network.\n      rng: random number generator state.\n      inputs: inputs, containing two batches of crops from the same images,\n        view1 and view2 and labels\n\n    Returns:\n      BYOL's loss, a mapping containing the online and target networks updated\n      states after processing inputs, and various logs.\n    \"\"\"\n    if self._should_transpose_images():\n      inputs = dataset.transpose_images(inputs)\n    inputs = augmentations.postprocess(inputs, rng)\n    labels = inputs['labels']\n\n    online_network_out, online_state = self.forward.apply(\n        params=online_params,\n        state=online_state,\n        inputs=inputs,\n        is_training=True)\n    target_network_out, target_state = self.forward.apply(\n        params=target_params,\n        state=target_state,\n        inputs=inputs,\n        is_training=True)\n\n    # Representation loss\n\n    # The stop_gradient is not necessary as we explicitly take the gradient with\n    # respect to online parameters only in `optax.apply_updates`. We leave it to\n    # indicate that gradients are not backpropagated through the target network.\n    repr_loss = helpers.regression_loss(\n        online_network_out['prediction_view1'],\n        jax.lax.stop_gradient(target_network_out['projection_view2']))\n    repr_loss = repr_loss + helpers.regression_loss(\n        online_network_out['prediction_view2'],\n        jax.lax.stop_gradient(target_network_out['projection_view1']))\n\n    repr_loss = jnp.mean(repr_loss)\n\n    # Classification loss (with gradient flows stopped from flowing into the\n    # ResNet). This is used to provide an evaluation of the representation\n    # quality during training.\n\n    classif_loss = helpers.softmax_cross_entropy(\n        logits=online_network_out['logits_view1'],\n        labels=jax.nn.one_hot(labels, self._num_classes))\n\n    top1_correct = helpers.topk_accuracy(\n        online_network_out['logits_view1'],\n        inputs['labels'],\n        topk=1,\n    )\n\n    top5_correct = helpers.topk_accuracy(\n        online_network_out['logits_view1'],\n        inputs['labels'],\n        topk=5,\n    )\n\n    top1_acc = jnp.mean(top1_correct)\n    top5_acc = jnp.mean(top5_correct)\n\n    classif_loss = jnp.mean(classif_loss)\n    loss = repr_loss + classif_loss\n    logs = dict(\n        loss=loss,\n        repr_loss=repr_loss,\n        classif_loss=classif_loss,\n        top1_accuracy=top1_acc,\n        top5_accuracy=top5_acc,\n    )\n\n    return loss, (dict(online_state=online_state,\n                       target_state=target_state), logs)\n\n  def _should_transpose_images(self):\n    \"\"\"Should we transpose images (saves host-to-device time on TPUs).\"\"\"\n    return (self._enable_double_transpose and\n            jax.local_devices()[0].platform == 'tpu')\n\n  def _update_fn(\n      self,\n      byol_state: _ByolExperimentState,\n      global_step: jnp.ndarray,\n      rng: jnp.ndarray,\n      inputs: dataset.Batch,\n  ) -> Tuple[_ByolExperimentState, LogsDict]:\n    \"\"\"Update online and target parameters.\n\n    Args:\n      byol_state: current BYOL state.\n      global_step: current training step.\n      rng: current random number generator\n      inputs: inputs, containing two batches of crops from the same images,\n        view1 and view2 and labels\n\n    Returns:\n      Tuple containing the updated Byol state after processing the inputs, and\n      various logs.\n    \"\"\"\n    online_params = byol_state.online_params\n    target_params = byol_state.target_params\n    online_state = byol_state.online_state\n    target_state = byol_state.target_state\n    opt_state = byol_state.opt_state\n\n    # update online network\n    grad_fn = jax.grad(self.loss_fn, argnums=0, has_aux=True)\n    grads, (net_states, logs) = grad_fn(online_params, target_params,\n                                        online_state, target_state, rng, inputs)\n\n    # cross-device grad and logs reductions\n    grads = jax.tree_map(lambda v: jax.lax.pmean(v, axis_name='i'), grads)\n    logs = jax.tree_map(lambda x: jax.lax.pmean(x, axis_name='i'), logs)\n\n    learning_rate = schedules.learning_schedule(\n        global_step,\n        batch_size=self._batch_size,\n        total_steps=self._max_steps,\n        **self._lr_schedule_config)\n    updates, opt_state = self._optimizer(learning_rate).update(\n        grads, opt_state, online_params)\n    online_params = optax.apply_updates(online_params, updates)\n\n    # update target network\n    tau = schedules.target_ema(\n        global_step,\n        base_ema=self._base_target_ema,\n        max_steps=self._max_steps)\n    target_params = jax.tree_map(lambda x, y: x + (1 - tau) * (y - x),\n                                      target_params, online_params)\n    logs['tau'] = tau\n    logs['learning_rate'] = learning_rate\n    return _ByolExperimentState(\n        online_params=online_params,\n        target_params=target_params,\n        online_state=net_states['online_state'],\n        target_state=net_states['target_state'],\n        opt_state=opt_state), logs\n\n  def _make_initial_state(\n      self,\n      rng: jnp.ndarray,\n      dummy_input: dataset.Batch,\n  ) -> _ByolExperimentState:\n    \"\"\"BYOL's _ByolExperimentState initialization.\n\n    Args:\n      rng: random number generator used to initialize parameters. If working in\n        a multi device setup, this need to be a ShardedArray.\n      dummy_input: a dummy image, used to compute intermediate outputs shapes.\n\n    Returns:\n      Initial Byol state.\n    \"\"\"\n    rng_online, rng_target = jax.random.split(rng)\n\n    if self._should_transpose_images():\n      dummy_input = dataset.transpose_images(dummy_input)\n\n    # Online and target parameters are initialized using different rngs,\n    # in our experiments we did not notice a significant different with using\n    # the same rng for both.\n    online_params, online_state = self.forward.init(\n        rng_online,\n        dummy_input,\n        is_training=True,\n    )\n    target_params, target_state = self.forward.init(\n        rng_target,\n        dummy_input,\n        is_training=True,\n    )\n    opt_state = self._optimizer(0).init(online_params)\n    return _ByolExperimentState(\n        online_params=online_params,\n        target_params=target_params,\n        opt_state=opt_state,\n        online_state=online_state,\n        target_state=target_state,\n    )\n\n  def step(self, *,\n           global_step: jnp.ndarray,\n           rng: jnp.ndarray) -> Mapping[Text, np.ndarray]:\n    \"\"\"Performs a single training step.\"\"\"\n    if self._train_input is None:\n      self._initialize_train()\n\n    inputs = next(self._train_input)\n\n    self._byol_state, scalars = self.update_pmap(\n        self._byol_state,\n        global_step=global_step,\n        rng=rng,\n        inputs=inputs,\n    )\n\n    return helpers.get_first(scalars)\n\n  def save_checkpoint(self, step: int, rng: jnp.ndarray):\n    self._checkpointer.maybe_save_checkpoint(\n        self._byol_state, step=step, rng=rng, is_final=step >= self._max_steps)\n\n  def load_checkpoint(self) -> Union[Tuple[int, jnp.ndarray], None]:\n    checkpoint_data = self._checkpointer.maybe_load_checkpoint()\n    if checkpoint_data is None:\n      return None\n    self._byol_state, step, rng = checkpoint_data\n    return step, rng\n\n  def _initialize_train(self):\n    \"\"\"Initialize train.\n\n    This includes initializing the input pipeline and Byol's state.\n    \"\"\"\n    self._train_input = acme_utils.prefetch(self._build_train_input())\n\n    # Check we haven't already restored params\n    if self._byol_state is None:\n      logging.info(\n          'Initializing parameters rather than restoring from checkpoint.')\n\n      # initialize Byol and setup optimizer state\n      inputs = next(self._train_input)\n      init_byol = jax.pmap(self._make_initial_state, axis_name='i')\n\n      # Init uses the same RNG key on all hosts+devices to ensure everyone\n      # computes the same initial state and parameters.\n      init_rng = jax.random.PRNGKey(self._random_seed)\n      init_rng = helpers.bcast_local_devices(init_rng)\n\n      self._byol_state = init_byol(rng=init_rng, dummy_input=inputs)\n\n  def _build_train_input(self) -> Generator[dataset.Batch, None, None]:\n    \"\"\"Loads the (infinitely looping) dataset iterator.\"\"\"\n    num_devices = jax.device_count()\n    global_batch_size = self._batch_size\n    per_device_batch_size, ragged = divmod(global_batch_size, num_devices)\n\n    if ragged:\n      raise ValueError(\n          f'Global batch size {global_batch_size} must be divisible by '\n          f'num devices {num_devices}')\n\n    return dataset.load(\n        dataset.Split.TRAIN_AND_VALID,\n        preprocess_mode=dataset.PreprocessMode.PRETRAIN,\n        transpose=self._should_transpose_images(),\n        batch_dims=[jax.local_device_count(), per_device_batch_size])\n\n  def _eval_batch(\n      self,\n      params: hk.Params,\n      state: hk.State,\n      batch: dataset.Batch,\n  ) -> Mapping[Text, jnp.ndarray]:\n    \"\"\"Evaluates a batch.\n\n    Args:\n      params: Parameters of the model to evaluate. Typically Byol's online\n        parameters.\n      state: State of the model to evaluate. Typically Byol's online state.\n      batch: Batch of data to evaluate (must contain keys images and labels).\n\n    Returns:\n      Unreduced evaluation loss and top1 accuracy on the batch.\n    \"\"\"\n    if self._should_transpose_images():\n      batch = dataset.transpose_images(batch)\n\n    outputs, _ = self.forward.apply(params, state, batch, is_training=False)\n    logits = outputs['logits']\n    labels = hk.one_hot(batch['labels'], self._num_classes)\n    loss = helpers.softmax_cross_entropy(logits, labels, reduction=None)\n    top1_correct = helpers.topk_accuracy(logits, batch['labels'], topk=1)\n    top5_correct = helpers.topk_accuracy(logits, batch['labels'], topk=5)\n    # NOTE: Returned values will be summed and finally divided by num_samples.\n    return {\n        'eval_loss': loss,\n        'top1_accuracy': top1_correct,\n        'top5_accuracy': top5_correct,\n    }\n\n  def _eval_epoch(self, subset: Text, batch_size: int):\n    \"\"\"Evaluates an epoch.\"\"\"\n    num_samples = 0.\n    summed_scalars = None\n\n    params = helpers.get_first(self._byol_state.online_params)\n    state = helpers.get_first(self._byol_state.online_state)\n    split = dataset.Split.from_string(subset)\n\n    dataset_iterator = dataset.load(\n        split,\n        preprocess_mode=dataset.PreprocessMode.EVAL,\n        transpose=self._should_transpose_images(),\n        batch_dims=[batch_size])\n\n    for inputs in dataset_iterator:\n      num_samples += inputs['labels'].shape[0]\n      scalars = self.eval_batch_jit(params, state, inputs)\n\n      # Accumulate the sum of scalars for each step.\n      scalars = jax.tree_map(lambda x: jnp.sum(x, axis=0), scalars)\n      if summed_scalars is None:\n        summed_scalars = scalars\n      else:\n        summed_scalars = jax.tree_map(jnp.add, summed_scalars, scalars)\n\n    mean_scalars = jax.tree_map(lambda x: x / num_samples, summed_scalars)\n    return mean_scalars\n\n  def evaluate(self, global_step, **unused_args):\n    \"\"\"Thin wrapper around _eval_epoch.\"\"\"\n\n    global_step = np.array(helpers.get_first(global_step))\n    scalars = jax.device_get(self._eval_epoch(**self._evaluation_config))\n\n    logging.info('[Step %d] Eval scalars: %s', global_step, scalars)\n    return scalars\n"
  },
  {
    "path": "byol/configs/__init__.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n"
  },
  {
    "path": "byol/configs/byol.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Config file for BYOL experiment.\"\"\"\n\nfrom byol.utils import dataset\n\n\n# Preset values for certain number of training epochs.\n_LR_PRESETS = {40: 0.45, 100: 0.45, 300: 0.3, 1000: 0.2}\n_WD_PRESETS = {40: 1e-6, 100: 1e-6, 300: 1e-6, 1000: 1.5e-6}\n_EMA_PRESETS = {40: 0.97, 100: 0.99, 300: 0.99, 1000: 0.996}\n\n\ndef get_config(num_epochs: int, batch_size: int):\n  \"\"\"Return config object, containing all hyperparameters for training.\"\"\"\n  train_images_per_epoch = dataset.Split.TRAIN_AND_VALID.num_examples\n\n  assert num_epochs in [40, 100, 300, 1000]\n\n  config = dict(\n      random_seed=0,\n      num_classes=1000,\n      batch_size=batch_size,\n      max_steps=num_epochs * train_images_per_epoch // batch_size,\n      enable_double_transpose=True,\n      base_target_ema=_EMA_PRESETS[num_epochs],\n      network_config=dict(\n          projector_hidden_size=4096,\n          projector_output_size=256,\n          predictor_hidden_size=4096,\n          encoder_class='ResNet50',  # Should match a class in utils/networks.\n          encoder_config=dict(\n              resnet_v2=False,\n              width_multiplier=1),\n          bn_config={\n              'decay_rate': .9,\n              'eps': 1e-5,\n              # Accumulate batchnorm statistics across devices.\n              # This should be equal to the `axis_name` argument passed\n              # to jax.pmap.\n              'cross_replica_axis': 'i',\n              'create_scale': True,\n              'create_offset': True,\n          }),\n      optimizer_config=dict(\n          weight_decay=_WD_PRESETS[num_epochs],\n          eta=1e-3,\n          momentum=.9,\n      ),\n      lr_schedule_config=dict(\n          base_learning_rate=_LR_PRESETS[num_epochs],\n          warmup_steps=10 * train_images_per_epoch // batch_size,\n      ),\n      evaluation_config=dict(\n          subset='test',\n          batch_size=100,\n      ),\n      checkpointing_config=dict(\n          use_checkpointing=True,\n          checkpoint_dir='/tmp/byol',\n          save_checkpoint_interval=300,\n          filename='pretrain.pkl'\n      ),\n  )\n\n  return config\n"
  },
  {
    "path": "byol/configs/eval.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Config file for evaluation experiment.\"\"\"\n\nfrom typing import Text\n\nfrom byol.utils import dataset\n\n\ndef get_config(checkpoint_to_evaluate: Text, batch_size: int):\n  \"\"\"Return config object for training.\"\"\"\n  train_images_per_epoch = dataset.Split.TRAIN_AND_VALID.num_examples\n\n  config = dict(\n      random_seed=0,\n      enable_double_transpose=True,\n      max_steps=80 * train_images_per_epoch // batch_size,\n      num_classes=1000,\n      batch_size=batch_size,\n      checkpoint_to_evaluate=checkpoint_to_evaluate,\n      # If True, allows training without loading a checkpoint.\n      allow_train_from_scratch=False,\n      # Whether the backbone should be frozen (linear evaluation) or\n      # trainable (fine-tuning).\n      freeze_backbone=True,\n      optimizer_config=dict(\n          momentum=0.9,\n          nesterov=True,\n      ),\n      lr_schedule_config=dict(\n          base_learning_rate=0.2,\n          warmup_steps=0,\n      ),\n      network_config=dict(  # Should match the evaluated checkpoint\n          encoder_class='ResNet50',  # Should match a class in utils/networks.\n          encoder_config=dict(\n              resnet_v2=False,\n              width_multiplier=1),\n          bn_decay_rate=0.9,\n      ),\n      evaluation_config=dict(\n          subset='test',\n          batch_size=100,\n      ),\n      checkpointing_config=dict(\n          use_checkpointing=True,\n          checkpoint_dir='/tmp/byol',\n          save_checkpoint_interval=300,\n          filename='linear-eval.pkl'\n      ),\n  )\n\n  return config\n\n\n"
  },
  {
    "path": "byol/eval_experiment.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Linear evaluation or fine-tuning pipeline.\n\nUse this experiment to evaluate a checkpoint from byol_experiment.\n\"\"\"\n\nimport functools\nfrom typing import Any, Generator, Mapping, NamedTuple, Optional, Text, Tuple, Union\n\nfrom absl import logging\nfrom acme.jax import utils as acme_utils\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\nimport optax\n\nfrom byol.utils import checkpointing\nfrom byol.utils import dataset\nfrom byol.utils import helpers\nfrom byol.utils import networks\nfrom byol.utils import schedules\n\n# Type declarations.\nOptState = Tuple[optax.TraceState, optax.ScaleByScheduleState, optax.ScaleState]\nLogsDict = Mapping[Text, jnp.ndarray]\n\n\nclass _EvalExperimentState(NamedTuple):\n  backbone_params: hk.Params\n  classif_params: hk.Params\n  backbone_state: hk.State\n  backbone_opt_state: Union[None, OptState]\n  classif_opt_state: OptState\n\n\nclass EvalExperiment:\n  \"\"\"Linear evaluation experiment.\"\"\"\n\n  def __init__(\n      self,\n      random_seed: int,\n      num_classes: int,\n      batch_size: int,\n      max_steps: int,\n      enable_double_transpose: bool,\n      checkpoint_to_evaluate: Optional[Text],\n      allow_train_from_scratch: bool,\n      freeze_backbone: bool,\n      network_config: Mapping[Text, Any],\n      optimizer_config: Mapping[Text, Any],\n      lr_schedule_config: Mapping[Text, Any],\n      evaluation_config: Mapping[Text, Any],\n      checkpointing_config: Mapping[Text, Any]):\n    \"\"\"Constructs the experiment.\n\n    Args:\n      random_seed: the random seed to use when initializing network weights.\n      num_classes: the number of classes; used for the online evaluation.\n      batch_size: the total batch size; should be a multiple of the number of\n        available accelerators.\n      max_steps: the number of training steps; used for the lr/target network\n        ema schedules.\n      enable_double_transpose: see dataset.py; only has effect on TPU.\n      checkpoint_to_evaluate: the path to the checkpoint to evaluate.\n      allow_train_from_scratch: whether to allow training without specifying a\n        checkpoint to evaluate (training from scratch).\n      freeze_backbone: whether the backbone resnet should remain frozen (linear\n        evaluation) or be trainable (fine-tuning).\n      network_config: the configuration for the network.\n      optimizer_config: the configuration for the optimizer.\n      lr_schedule_config: the configuration for the learning rate schedule.\n      evaluation_config: the evaluation configuration.\n      checkpointing_config: the configuration for checkpointing.\n    \"\"\"\n\n    self._random_seed = random_seed\n    self._enable_double_transpose = enable_double_transpose\n    self._num_classes = num_classes\n    self._lr_schedule_config = lr_schedule_config\n    self._batch_size = batch_size\n    self._max_steps = max_steps\n    self._checkpoint_to_evaluate = checkpoint_to_evaluate\n    self._allow_train_from_scratch = allow_train_from_scratch\n    self._freeze_backbone = freeze_backbone\n    self._optimizer_config = optimizer_config\n    self._evaluation_config = evaluation_config\n\n    # Checkpointed experiment state.\n    self._experiment_state = None\n\n    # Input pipelines.\n    self._train_input = None\n    self._eval_input = None\n\n    backbone_fn = functools.partial(self._backbone_fn, **network_config)\n    self.forward_backbone = hk.without_apply_rng(\n        hk.transform_with_state(backbone_fn))\n    self.forward_classif = hk.without_apply_rng(hk.transform(self._classif_fn))\n    self.update_pmap = jax.pmap(self._update_func, axis_name='i')\n    self.eval_batch_jit = jax.jit(self._eval_batch)\n\n    self._is_backbone_training = not self._freeze_backbone\n\n    self._checkpointer = checkpointing.Checkpointer(**checkpointing_config)\n\n  def _should_transpose_images(self):\n    \"\"\"Should we transpose images (saves host-to-device time on TPUs).\"\"\"\n    return (self._enable_double_transpose and\n            jax.local_devices()[0].platform == 'tpu')\n\n  def _backbone_fn(\n      self,\n      inputs: dataset.Batch,\n      encoder_class: Text,\n      encoder_config: Mapping[Text, Any],\n      bn_decay_rate: float,\n      is_training: bool,\n  ) -> jnp.ndarray:\n    \"\"\"Forward of the encoder (backbone).\"\"\"\n    bn_config = {'decay_rate': bn_decay_rate}\n    encoder = getattr(networks, encoder_class)\n    model = encoder(\n        None,\n        bn_config=bn_config,\n        **encoder_config)\n\n    if self._should_transpose_images():\n      inputs = dataset.transpose_images(inputs)\n    images = dataset.normalize_images(inputs['images'])\n    return model(images, is_training=is_training)\n\n  def _classif_fn(\n      self,\n      embeddings: jnp.ndarray,\n  ) -> jnp.ndarray:\n    classifier = hk.Linear(output_size=self._num_classes)\n    return classifier(embeddings)\n\n  #  _             _\n  # | |_ _ __ __ _(_)_ __\n  # | __| '__/ _` | | '_ \\\n  # | |_| | | (_| | | | | |\n  #  \\__|_|  \\__,_|_|_| |_|\n  #\n\n  def step(self, *,\n           global_step: jnp.ndarray,\n           rng: jnp.ndarray) -> Mapping[Text, np.ndarray]:\n    \"\"\"Performs a single training step.\"\"\"\n\n    if self._train_input is None:\n      self._initialize_train(rng)\n\n    inputs = next(self._train_input)\n    self._experiment_state, scalars = self.update_pmap(\n        self._experiment_state, global_step, inputs)\n\n    scalars = helpers.get_first(scalars)\n    return scalars\n\n  def save_checkpoint(self, step: int, rng: jnp.ndarray):\n    self._checkpointer.maybe_save_checkpoint(\n        self._experiment_state, step=step, rng=rng,\n        is_final=step >= self._max_steps)\n\n  def load_checkpoint(self) -> Union[Tuple[int, jnp.ndarray], None]:\n    checkpoint_data = self._checkpointer.maybe_load_checkpoint()\n    if checkpoint_data is None:\n      return None\n    self._experiment_state, step, rng = checkpoint_data\n    return step, rng\n\n  def _initialize_train(self, rng):\n    \"\"\"BYOL's _ExperimentState initialization.\n\n    Args:\n      rng: random number generator used to initialize parameters. If working in\n        a multi device setup, this need to be a ShardedArray.\n      dummy_input: a dummy image, used to compute intermediate outputs shapes.\n\n    Returns:\n      Initial EvalExperiment state.\n\n    Raises:\n      RuntimeError: invalid or empty checkpoint.\n    \"\"\"\n    self._train_input = acme_utils.prefetch(self._build_train_input())\n\n    # Check we haven't already restored params\n    if self._experiment_state is None:\n\n      inputs = next(self._train_input)\n\n      if self._checkpoint_to_evaluate is not None:\n        # Load params from checkpoint\n        checkpoint_data = checkpointing.load_checkpoint(\n            self._checkpoint_to_evaluate)\n        if checkpoint_data is None:\n          raise RuntimeError('Invalid checkpoint.')\n        backbone_params = checkpoint_data['experiment_state'].online_params\n        backbone_state = checkpoint_data['experiment_state'].online_state\n        backbone_params = helpers.bcast_local_devices(backbone_params)\n        backbone_state = helpers.bcast_local_devices(backbone_state)\n      else:\n        if not self._allow_train_from_scratch:\n          raise ValueError(\n              'No checkpoint specified, but `allow_train_from_scratch` '\n              'set to False')\n        # Initialize with random parameters\n        logging.info(\n            'No checkpoint specified, initializing the networks from scratch '\n            '(dry run mode)')\n        backbone_params, backbone_state = jax.pmap(\n            functools.partial(self.forward_backbone.init, is_training=True),\n            axis_name='i')(rng=rng, inputs=inputs)\n\n      init_experiment = jax.pmap(self._make_initial_state, axis_name='i')\n\n      # Init uses the same RNG key on all hosts+devices to ensure everyone\n      # computes the same initial state and parameters.\n      init_rng = jax.random.PRNGKey(self._random_seed)\n      init_rng = helpers.bcast_local_devices(init_rng)\n      self._experiment_state = init_experiment(\n          rng=init_rng,\n          dummy_input=inputs,\n          backbone_params=backbone_params,\n          backbone_state=backbone_state)\n\n      # Clear the backbone optimizer's state when the backbone is frozen.\n      if self._freeze_backbone:\n        self._experiment_state = _EvalExperimentState(\n            backbone_params=self._experiment_state.backbone_params,\n            classif_params=self._experiment_state.classif_params,\n            backbone_state=self._experiment_state.backbone_state,\n            backbone_opt_state=None,\n            classif_opt_state=self._experiment_state.classif_opt_state,\n        )\n\n  def _make_initial_state(\n      self,\n      rng: jnp.ndarray,\n      dummy_input: dataset.Batch,\n      backbone_params: hk.Params,\n      backbone_state: hk.Params,\n  ) -> _EvalExperimentState:\n    \"\"\"_EvalExperimentState initialization.\"\"\"\n\n    # Initialize the backbone params\n    # Always create the batchnorm weights (is_training=True), they will be\n    # overwritten when loading the checkpoint.\n    embeddings, _ = self.forward_backbone.apply(\n        backbone_params, backbone_state, dummy_input, is_training=True)\n    backbone_opt_state = self._optimizer(0.).init(backbone_params)\n\n    # Initialize the classifier params and optimizer_state\n    classif_params = self.forward_classif.init(rng, embeddings)\n    classif_opt_state = self._optimizer(0.).init(classif_params)\n\n    return _EvalExperimentState(  # pytype: disable=wrong-arg-types  # numpy-scalars\n        backbone_params=backbone_params,\n        classif_params=classif_params,\n        backbone_state=backbone_state,\n        backbone_opt_state=backbone_opt_state,\n        classif_opt_state=classif_opt_state,\n    )\n\n  def _build_train_input(self) -> Generator[dataset.Batch, None, None]:\n    \"\"\"See base class.\"\"\"\n    num_devices = jax.device_count()\n    global_batch_size = self._batch_size\n    per_device_batch_size, ragged = divmod(global_batch_size, num_devices)\n\n    if ragged:\n      raise ValueError(\n          f'Global batch size {global_batch_size} must be divisible by '\n          f'num devices {num_devices}')\n\n    return dataset.load(\n        dataset.Split.TRAIN_AND_VALID,\n        preprocess_mode=dataset.PreprocessMode.LINEAR_TRAIN,\n        transpose=self._should_transpose_images(),\n        batch_dims=[jax.local_device_count(), per_device_batch_size])\n\n  def _optimizer(self, learning_rate: float):\n    \"\"\"Build optimizer from config.\"\"\"\n    return optax.sgd(learning_rate, **self._optimizer_config)\n\n  def _loss_fn(\n      self,\n      backbone_params: hk.Params,\n      classif_params: hk.Params,\n      backbone_state: hk.State,\n      inputs: dataset.Batch,\n  ) -> Tuple[jnp.ndarray, Tuple[jnp.ndarray, hk.State]]:\n    \"\"\"Compute the classification loss function.\n\n    Args:\n      backbone_params: parameters of the encoder network.\n      classif_params: parameters of the linear classifier.\n      backbone_state: internal state of encoder network.\n      inputs: inputs, containing `images` and `labels`.\n\n    Returns:\n      The classification loss and various logs.\n    \"\"\"\n    embeddings, backbone_state = self.forward_backbone.apply(\n        backbone_params,\n        backbone_state,\n        inputs,\n        is_training=not self._freeze_backbone)\n\n    logits = self.forward_classif.apply(classif_params, embeddings)\n    labels = hk.one_hot(inputs['labels'], self._num_classes)\n    loss = helpers.softmax_cross_entropy(logits, labels, reduction='mean')\n    scaled_loss = loss / jax.device_count()\n\n    return scaled_loss, (loss, backbone_state)\n\n  def _update_func(\n      self,\n      experiment_state: _EvalExperimentState,\n      global_step: jnp.ndarray,\n      inputs: dataset.Batch,\n  ) -> Tuple[_EvalExperimentState, LogsDict]:\n    \"\"\"Applies an update to parameters and returns new state.\"\"\"\n    # This function computes the gradient of the first output of loss_fn and\n    # passes through the other arguments unchanged.\n\n    # Gradient of the first output of _loss_fn wrt the backbone (arg 0) and the\n    # classifier parameters (arg 1). The auxiliary outputs are returned as-is.\n    grad_loss_fn = jax.grad(self._loss_fn, has_aux=True, argnums=(0, 1))\n\n    grads, aux_outputs = grad_loss_fn(\n        experiment_state.backbone_params,\n        experiment_state.classif_params,\n        experiment_state.backbone_state,\n        inputs,\n    )\n    backbone_grads, classifier_grads = grads\n    train_loss, new_backbone_state = aux_outputs\n    classifier_grads = jax.lax.psum(classifier_grads, axis_name='i')\n\n    # Compute the decayed learning rate\n    learning_rate = schedules.learning_schedule(\n        global_step,\n        batch_size=self._batch_size,\n        total_steps=self._max_steps,\n        **self._lr_schedule_config)\n\n    # Compute and apply updates via our optimizer.\n    classif_updates, new_classif_opt_state = \\\n        self._optimizer(learning_rate).update(\n            classifier_grads,\n            experiment_state.classif_opt_state)\n\n    new_classif_params = optax.apply_updates(experiment_state.classif_params,\n                                             classif_updates)\n\n    if self._freeze_backbone:\n      del backbone_grads, new_backbone_state  # Unused\n      # The backbone is not updated.\n      new_backbone_params = experiment_state.backbone_params\n      new_backbone_opt_state = None\n      new_backbone_state = experiment_state.backbone_state\n    else:\n      backbone_grads = jax.lax.psum(backbone_grads, axis_name='i')\n\n      # Compute and apply updates via our optimizer.\n      backbone_updates, new_backbone_opt_state = \\\n          self._optimizer(learning_rate).update(\n              backbone_grads,\n              experiment_state.backbone_opt_state)\n\n      new_backbone_params = optax.apply_updates(\n          experiment_state.backbone_params, backbone_updates)\n\n    experiment_state = _EvalExperimentState(  # pytype: disable=wrong-arg-types  # numpy-scalars\n        new_backbone_params,\n        new_classif_params,\n        new_backbone_state,\n        new_backbone_opt_state,\n        new_classif_opt_state,\n    )\n\n    # Scalars to log (note: we log the mean across all hosts/devices).\n    scalars = {'train_loss': train_loss}\n    scalars = jax.lax.pmean(scalars, axis_name='i')\n\n    return experiment_state, scalars\n\n  #                  _\n  #   _____   ____ _| |\n  #  / _ \\ \\ / / _` | |\n  # |  __/\\ V / (_| | |\n  #  \\___| \\_/ \\__,_|_|\n  #\n\n  def evaluate(self, global_step, **unused_args):\n    \"\"\"See base class.\"\"\"\n\n    global_step = np.array(helpers.get_first(global_step))\n    scalars = jax.device_get(self._eval_epoch(**self._evaluation_config))\n\n    logging.info('[Step %d] Eval scalars: %s', global_step, scalars)\n    return scalars\n\n  def _eval_batch(\n      self,\n      backbone_params: hk.Params,\n      classif_params: hk.Params,\n      backbone_state: hk.State,\n      inputs: dataset.Batch,\n  ) -> LogsDict:\n    \"\"\"Evaluates a batch.\"\"\"\n    embeddings, backbone_state = self.forward_backbone.apply(\n        backbone_params, backbone_state, inputs, is_training=False)\n    logits = self.forward_classif.apply(classif_params, embeddings)\n    labels = hk.one_hot(inputs['labels'], self._num_classes)\n    loss = helpers.softmax_cross_entropy(logits, labels, reduction=None)\n    top1_correct = helpers.topk_accuracy(logits, inputs['labels'], topk=1)  # pytype: disable=wrong-arg-types  # jax-ndarray\n    top5_correct = helpers.topk_accuracy(logits, inputs['labels'], topk=5)  # pytype: disable=wrong-arg-types  # jax-ndarray\n    # NOTE: Returned values will be summed and finally divided by num_samples.\n    return {\n        'eval_loss': loss,\n        'top1_accuracy': top1_correct,\n        'top5_accuracy': top5_correct\n    }\n\n  def _eval_epoch(self, subset: Text, batch_size: int):\n    \"\"\"Evaluates an epoch.\"\"\"\n    num_samples = 0.\n    summed_scalars = None\n\n    backbone_params = helpers.get_first(self._experiment_state.backbone_params)\n    classif_params = helpers.get_first(self._experiment_state.classif_params)\n    backbone_state = helpers.get_first(self._experiment_state.backbone_state)\n    split = dataset.Split.from_string(subset)\n\n    dataset_iterator = dataset.load(\n        split,\n        preprocess_mode=dataset.PreprocessMode.EVAL,\n        transpose=self._should_transpose_images(),\n        batch_dims=[batch_size])\n\n    for inputs in dataset_iterator:\n      num_samples += inputs['labels'].shape[0]\n      scalars = self.eval_batch_jit(\n          backbone_params,\n          classif_params,\n          backbone_state,\n          inputs,\n      )\n\n      # Accumulate the sum of scalars for each step.\n      scalars = jax.tree_map(lambda x: jnp.sum(x, axis=0), scalars)\n      if summed_scalars is None:\n        summed_scalars = scalars\n      else:\n        summed_scalars = jax.tree_map(jnp.add, summed_scalars, scalars)\n\n    mean_scalars = jax.tree_map(lambda x: x / num_samples, summed_scalars)\n    return mean_scalars\n"
  },
  {
    "path": "byol/main_loop.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Training and evaluation loops for an experiment.\"\"\"\n\nimport time\nfrom typing import Any, Mapping, Text, Type, Union\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport jax\nimport numpy as np\n\nfrom byol import byol_experiment\nfrom byol import eval_experiment\nfrom byol.configs import byol as byol_config\nfrom byol.configs import eval as eval_config\n\nflags.DEFINE_string('experiment_mode',\n                    'pretrain', 'The experiment, pretrain or linear-eval')\nflags.DEFINE_string('worker_mode', 'train', 'The mode, train or eval')\nflags.DEFINE_string('worker_tpu_driver', '', 'The tpu driver to use')\nflags.DEFINE_integer('pretrain_epochs', 1000, 'Number of pre-training epochs')\nflags.DEFINE_integer('batch_size', 4096, 'Total batch size')\nflags.DEFINE_string('checkpoint_root', '/tmp/byol',\n                    'The directory to save checkpoints to.')\nflags.DEFINE_integer('log_tensors_interval', 60, 'Log tensors every n seconds.')\n\nFLAGS = flags.FLAGS\n\n\nExperiment = Union[\n    Type[byol_experiment.ByolExperiment],\n    Type[eval_experiment.EvalExperiment]]\n\n\ndef train_loop(experiment_class: Experiment, config: Mapping[Text, Any]):\n  \"\"\"The main training loop.\n\n  This loop periodically saves a checkpoint to be evaluated in the eval_loop.\n\n  Args:\n    experiment_class: the constructor for the experiment (either byol_experiment\n    or eval_experiment).\n    config: the experiment config.\n  \"\"\"\n  experiment = experiment_class(**config)\n  rng = jax.random.PRNGKey(0)\n  step = 0\n\n  host_id = jax.host_id()\n  last_logging = time.time()\n  if config['checkpointing_config']['use_checkpointing']:\n    checkpoint_data = experiment.load_checkpoint()\n    if checkpoint_data is None:\n      step = 0\n    else:\n      step, rng = checkpoint_data\n\n  local_device_count = jax.local_device_count()\n  while step < config['max_steps']:\n    step_rng, rng = tuple(jax.random.split(rng))\n    # Broadcast the random seeds across the devices\n    step_rng_device = jax.random.split(step_rng, num=jax.device_count())\n    step_rng_device = step_rng_device[\n        host_id * local_device_count:(host_id + 1) * local_device_count]\n    step_device = np.broadcast_to(step, [local_device_count])\n\n    # Perform a training step and get scalars to log.\n    scalars = experiment.step(global_step=step_device, rng=step_rng_device)\n\n    # Checkpointing and logging.\n    if config['checkpointing_config']['use_checkpointing']:\n      experiment.save_checkpoint(step, rng)\n      current_time = time.time()\n      if current_time - last_logging > FLAGS.log_tensors_interval:\n        logging.info('Step %d: %s', step, scalars)\n        last_logging = current_time\n    step += 1\n  logging.info('Saving final checkpoint')\n  logging.info('Step %d: %s', step, scalars)\n  experiment.save_checkpoint(step, rng)\n\n\ndef eval_loop(experiment_class: Experiment, config: Mapping[Text, Any]):\n  \"\"\"The main evaluation loop.\n\n  This loop periodically loads a checkpoint and evaluates its performance on the\n  test set, by calling experiment.evaluate.\n\n  Args:\n    experiment_class: the constructor for the experiment (either byol_experiment\n    or eval_experiment).\n    config: the experiment config.\n  \"\"\"\n  experiment = experiment_class(**config)\n  last_evaluated_step = -1\n  while True:\n    checkpoint_data = experiment.load_checkpoint()\n    if checkpoint_data is None:\n      logging.info('No checkpoint found. Waiting for 10s.')\n      time.sleep(10)\n      continue\n    step, _ = checkpoint_data\n    if step <= last_evaluated_step:\n      logging.info('Checkpoint at step %d already evaluated, waiting.', step)\n      time.sleep(10)\n      continue\n    host_id = jax.host_id()\n    local_device_count = jax.local_device_count()\n    step_device = np.broadcast_to(step, [local_device_count])\n    scalars = experiment.evaluate(global_step=step_device)\n    if host_id == 0:  # Only perform logging in one host.\n      logging.info('Evaluation at step %d: %s', step, scalars)\n    last_evaluated_step = step\n    if last_evaluated_step >= config['max_steps']:\n      return\n\n\ndef main(_):\n  if FLAGS.worker_tpu_driver:\n    jax.config.update('jax_xla_backend', 'tpu_driver')\n    jax.config.update('jax_backend_target', FLAGS.worker_tpu_driver)\n    logging.info('Backend: %s %r', FLAGS.worker_tpu_driver, jax.devices())\n\n  if FLAGS.experiment_mode == 'pretrain':\n    experiment_class = byol_experiment.ByolExperiment\n    config = byol_config.get_config(FLAGS.pretrain_epochs, FLAGS.batch_size)\n  elif FLAGS.experiment_mode == 'linear-eval':\n    experiment_class = eval_experiment.EvalExperiment\n    config = eval_config.get_config(f'{FLAGS.checkpoint_root}/pretrain.pkl',\n                                    FLAGS.batch_size)\n  else:\n    raise ValueError(f'Unknown experiment mode: {FLAGS.experiment_mode}')\n  config['checkpointing_config']['checkpoint_dir'] = FLAGS.checkpoint_root  # pytype: disable=unsupported-operands  # dict-kwargs\n\n  if FLAGS.worker_mode == 'train':\n    train_loop(experiment_class, config)\n  elif FLAGS.worker_mode == 'eval':\n    eval_loop(experiment_class, config)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "byol/main_loop_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Tests for BYOL's main training loop.\"\"\"\n\nfrom absl import flags\nfrom absl.testing import absltest\nimport tensorflow_datasets as tfds\n\nfrom byol import byol_experiment\nfrom byol import eval_experiment\nfrom byol import main_loop\nfrom byol.configs import byol as byol_config\nfrom byol.configs import eval as eval_config\n\n\nFLAGS = flags.FLAGS\n\n\nclass MainLoopTest(absltest.TestCase):\n\n  def test_pretrain(self):\n    config = byol_config.get_config(num_epochs=40, batch_size=4)\n    temp_dir = self.create_tempdir().full_path\n\n    # Override some config fields to make test lighter.\n    config['network_config']['encoder_class'] = 'TinyResNet'\n    config['network_config']['projector_hidden_size'] = 256\n    config['network_config']['predictor_hidden_size'] = 256\n    config['checkpointing_config']['checkpoint_dir'] = temp_dir\n    config['evaluation_config']['batch_size'] = 16\n    config['max_steps'] = 16\n\n    with tfds.testing.mock_data(num_examples=64):\n      experiment_class = byol_experiment.ByolExperiment\n      main_loop.train_loop(experiment_class, config)\n      main_loop.eval_loop(experiment_class, config)\n\n  def test_linear_eval(self):\n    config = eval_config.get_config(checkpoint_to_evaluate=None, batch_size=4)\n    temp_dir = self.create_tempdir().full_path\n\n    # Override some config fields to make test lighter.\n    config['network_config']['encoder_class'] = 'TinyResNet'\n    config['allow_train_from_scratch'] = True\n    config['checkpointing_config']['checkpoint_dir'] = temp_dir\n    config['evaluation_config']['batch_size'] = 16\n    config['max_steps'] = 16\n\n    with tfds.testing.mock_data(num_examples=64):\n      experiment_class = eval_experiment.EvalExperiment\n      main_loop.train_loop(experiment_class, config)\n      main_loop.eval_loop(experiment_class, config)\n\n  def test_pipeline(self):\n    b_config = byol_config.get_config(num_epochs=40, batch_size=4)\n    temp_dir = self.create_tempdir().full_path\n\n    # Override some config fields to make test lighter.\n    b_config['network_config']['encoder_class'] = 'TinyResNet'\n    b_config['network_config']['projector_hidden_size'] = 256\n    b_config['network_config']['predictor_hidden_size'] = 256\n    b_config['checkpointing_config']['checkpoint_dir'] = temp_dir\n    b_config['evaluation_config']['batch_size'] = 16\n    b_config['max_steps'] = 16\n\n    with tfds.testing.mock_data(num_examples=64):\n      main_loop.train_loop(byol_experiment.ByolExperiment, b_config)\n\n    e_config = eval_config.get_config(\n        checkpoint_to_evaluate=f'{temp_dir}/pretrain.pkl',\n        batch_size=4)\n\n    # Override some config fields to make test lighter.\n    e_config['network_config']['encoder_class'] = 'TinyResNet'\n    e_config['allow_train_from_scratch'] = True\n    e_config['checkpointing_config']['checkpoint_dir'] = temp_dir\n    e_config['evaluation_config']['batch_size'] = 16\n    e_config['max_steps'] = 16\n\n    with tfds.testing.mock_data(num_examples=64):\n      main_loop.train_loop(eval_experiment.EvalExperiment, e_config)\n\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "byol/requirements.txt",
    "content": "dm-acme\ndm-haiku\ndm-tree\njax\njaxlib\nnumpy>=1.16\noptax\ntensorflow\ntensorflow_datasets\n"
  },
  {
    "path": "byol/setup.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Setup BYOL for pip package.\"\"\"\n\nimport setuptools\n\nsetuptools.setup(\n    name='byol',\n    description='Bootstrap Your Own Latents',\n    long_description=open('README.md').read(),\n    author='DeepMind',\n    author_email='no-reply@google.com',\n    url='https://github.com/deepmind/deepmind-research/byol',\n    install_requires=[\n        'chex',\n        'dm-acme',\n        'dm-haiku',\n        'dm-tree',\n        'jax',\n        'jaxlib',\n        'numpy>=1.16',\n        'optax',\n        'tensorflow',\n        'tensorflow-datasets',\n    ],\n    package_dir={'byol': ''},\n    py_modules=[\n        'byol.byol_experiment', 'byol.eval_experiment', 'byol.main_loop'\n    ],\n    packages=['byol.configs', 'byol.utils'])\n"
  },
  {
    "path": "byol/utils/__init__.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n"
  },
  {
    "path": "byol/utils/augmentations.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Data preprocessing and augmentation.\"\"\"\n\nimport functools\nfrom typing import Any, Mapping, Text\n\nimport jax\nimport jax.numpy as jnp\n\n# typing\nJaxBatch = Mapping[Text, jnp.ndarray]\nConfigDict = Mapping[Text, Any]\n\naugment_config = dict(\n    view1=dict(\n        random_flip=True,  # Random left/right flip\n        color_transform=dict(\n            apply_prob=1.0,\n            # Range of jittering\n            brightness=0.4,\n            contrast=0.4,\n            saturation=0.2,\n            hue=0.1,\n            # Probability of applying color jittering\n            color_jitter_prob=0.8,\n            # Probability of converting to grayscale\n            to_grayscale_prob=0.2,\n            # Shuffle the order of color transforms\n            shuffle=True),\n        gaussian_blur=dict(\n            apply_prob=1.0,\n            # Kernel size ~ image_size / blur_divider\n            blur_divider=10.,\n            # Kernel distribution\n            sigma_min=0.1,\n            sigma_max=2.0),\n        solarize=dict(apply_prob=0.0, threshold=0.5),\n    ),\n    view2=dict(\n        random_flip=True,\n        color_transform=dict(\n            apply_prob=1.0,\n            brightness=0.4,\n            contrast=0.4,\n            saturation=0.2,\n            hue=0.1,\n            color_jitter_prob=0.8,\n            to_grayscale_prob=0.2,\n            shuffle=True),\n        gaussian_blur=dict(\n            apply_prob=0.1, blur_divider=10., sigma_min=0.1, sigma_max=2.0),\n        solarize=dict(apply_prob=0.2, threshold=0.5),\n    ))\n\n\ndef postprocess(inputs: JaxBatch, rng: jnp.ndarray):\n  \"\"\"Apply the image augmentations to crops in inputs (view1 and view2).\"\"\"\n\n  def _postprocess_image(\n      images: jnp.ndarray,\n      rng: jnp.ndarray,\n      presets: ConfigDict,\n  ) -> JaxBatch:\n    \"\"\"Applies augmentations in post-processing.\n\n    Args:\n      images: an NHWC tensor (with C=3), with float values in [0, 1].\n      rng: a single PRNGKey.\n      presets: a dict of presets for the augmentations.\n\n    Returns:\n      A batch of augmented images with shape NHWC, with keys view1, view2\n      and labels.\n    \"\"\"\n    flip_rng, color_rng, blur_rng, solarize_rng = jax.random.split(rng, 4)\n    out = images\n    if presets['random_flip']:\n      out = random_flip(out, flip_rng)\n    if presets['color_transform']['apply_prob'] > 0:\n      out = color_transform(out, color_rng, **presets['color_transform'])\n    if presets['gaussian_blur']['apply_prob'] > 0:\n      out = gaussian_blur(out, blur_rng, **presets['gaussian_blur'])\n    if presets['solarize']['apply_prob'] > 0:\n      out = solarize(out, solarize_rng, **presets['solarize'])\n    out = jnp.clip(out, 0., 1.)\n    return jax.lax.stop_gradient(out)\n\n  rng1, rng2 = jax.random.split(rng, num=2)\n  view1 = _postprocess_image(inputs['view1'], rng1, augment_config['view1'])\n  view2 = _postprocess_image(inputs['view2'], rng2, augment_config['view2'])\n  return dict(view1=view1, view2=view2, labels=inputs['labels'])\n\n\ndef _maybe_apply(apply_fn, inputs, rng, apply_prob):\n  should_apply = jax.random.uniform(rng, shape=()) <= apply_prob\n  return jax.lax.cond(should_apply, inputs, apply_fn, inputs, lambda x: x)\n\n\ndef _depthwise_conv2d(inputs, kernel, strides, padding):\n  \"\"\"Computes a depthwise conv2d in Jax.\n\n  Args:\n    inputs: an NHWC tensor with N=1.\n    kernel: a [H\", W\", 1, C] tensor.\n    strides: a 2d tensor.\n    padding: \"SAME\" or \"VALID\".\n\n  Returns:\n    The depthwise convolution of inputs with kernel, as [H, W, C].\n  \"\"\"\n  return jax.lax.conv_general_dilated(\n      inputs,\n      kernel,\n      strides,\n      padding,\n      feature_group_count=inputs.shape[-1],\n      dimension_numbers=('NHWC', 'HWIO', 'NHWC'))\n\n\ndef _gaussian_blur_single_image(image, kernel_size, padding, sigma):\n  \"\"\"Applies gaussian blur to a single image, given as NHWC with N=1.\"\"\"\n  radius = int(kernel_size / 2)\n  kernel_size_ = 2 * radius + 1\n  x = jnp.arange(-radius, radius + 1).astype(jnp.float32)\n  blur_filter = jnp.exp(-x**2 / (2. * sigma**2))\n  blur_filter = blur_filter / jnp.sum(blur_filter)\n  blur_v = jnp.reshape(blur_filter, [kernel_size_, 1, 1, 1])\n  blur_h = jnp.reshape(blur_filter, [1, kernel_size_, 1, 1])\n  num_channels = image.shape[-1]\n  blur_h = jnp.tile(blur_h, [1, 1, 1, num_channels])\n  blur_v = jnp.tile(blur_v, [1, 1, 1, num_channels])\n  expand_batch_dim = len(image.shape) == 3\n  if expand_batch_dim:\n    image = image[jnp.newaxis, ...]\n  blurred = _depthwise_conv2d(image, blur_h, strides=[1, 1], padding=padding)\n  blurred = _depthwise_conv2d(blurred, blur_v, strides=[1, 1], padding=padding)\n  blurred = jnp.squeeze(blurred, axis=0)\n  return blurred\n\n\ndef _random_gaussian_blur(image, rng, kernel_size, padding, sigma_min,\n                          sigma_max, apply_prob):\n  \"\"\"Applies a random gaussian blur.\"\"\"\n  apply_rng, transform_rng = jax.random.split(rng)\n\n  def _apply(image):\n    sigma_rng, = jax.random.split(transform_rng, 1)\n    sigma = jax.random.uniform(\n        sigma_rng,\n        shape=(),\n        minval=sigma_min,\n        maxval=sigma_max,\n        dtype=jnp.float32)\n    return _gaussian_blur_single_image(image, kernel_size, padding, sigma)\n\n  return _maybe_apply(_apply, image, apply_rng, apply_prob)\n\n\ndef rgb_to_hsv(r, g, b):\n  \"\"\"Converts R, G, B  values to H, S, V values.\n\n  Reference TF implementation:\n  https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/adjust_saturation_op.cc\n  Only input values between 0 and 1 are guaranteed to work properly, but this\n  function complies with the TF implementation outside of this range.\n\n  Args:\n    r: A tensor representing the red color component as floats.\n    g: A tensor representing the green color component as floats.\n    b: A tensor representing the blue color component as floats.\n\n  Returns:\n    H, S, V values, each as tensors of shape [...] (same as the input without\n    the last dimension).\n  \"\"\"\n  vv = jnp.maximum(jnp.maximum(r, g), b)\n  range_ = vv - jnp.minimum(jnp.minimum(r, g), b)\n  sat = jnp.where(vv > 0, range_ / vv, 0.)\n  norm = jnp.where(range_ != 0, 1. / (6. * range_), 1e9)\n\n  hr = norm * (g - b)\n  hg = norm * (b - r) + 2. / 6.\n  hb = norm * (r - g) + 4. / 6.\n\n  hue = jnp.where(r == vv, hr, jnp.where(g == vv, hg, hb))\n  hue = hue * (range_ > 0)\n  hue = hue + (hue < 0)\n\n  return hue, sat, vv\n\n\ndef hsv_to_rgb(h, s, v):\n  \"\"\"Converts H, S, V values to an R, G, B tuple.\n\n  Reference TF implementation:\n  https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/adjust_saturation_op.cc\n  Only input values between 0 and 1 are guaranteed to work properly, but this\n  function complies with the TF implementation outside of this range.\n\n  Args:\n    h: A float tensor of arbitrary shape for the hue (0-1 values).\n    s: A float tensor of the same shape for the saturation (0-1 values).\n    v: A float tensor of the same shape for the value channel (0-1 values).\n\n  Returns:\n    An (r, g, b) tuple, each with the same dimension as the inputs.\n  \"\"\"\n  c = s * v\n  m = v - c\n  dh = (h % 1.) * 6.\n  fmodu = dh % 2.\n  x = c * (1 - jnp.abs(fmodu - 1))\n  hcat = jnp.floor(dh).astype(jnp.int32)\n  rr = jnp.where(\n      (hcat == 0) | (hcat == 5), c, jnp.where(\n          (hcat == 1) | (hcat == 4), x, 0)) + m\n  gg = jnp.where(\n      (hcat == 1) | (hcat == 2), c, jnp.where(\n          (hcat == 0) | (hcat == 3), x, 0)) + m\n  bb = jnp.where(\n      (hcat == 3) | (hcat == 4), c, jnp.where(\n          (hcat == 2) | (hcat == 5), x, 0)) + m\n  return rr, gg, bb\n\n\ndef adjust_brightness(rgb_tuple, delta):\n  return jax.tree_map(lambda x: x + delta, rgb_tuple)\n\n\ndef adjust_contrast(image, factor):\n  def _adjust_contrast_channel(channel):\n    mean = jnp.mean(channel, axis=(-2, -1), keepdims=True)\n    return factor * (channel - mean) + mean\n  return jax.tree_map(_adjust_contrast_channel, image)\n\n\ndef adjust_saturation(h, s, v, factor):\n  return h, jnp.clip(s * factor, 0., 1.), v\n\n\ndef adjust_hue(h, s, v, delta):\n  # Note: this method exactly matches TF\"s adjust_hue (combined with the hsv/rgb\n  # conversions) when running on GPU. When running on CPU, the results will be\n  # different if all RGB values for a pixel are outside of the [0, 1] range.\n  return (h + delta) % 1.0, s, v\n\n\ndef _random_brightness(rgb_tuple, rng, max_delta):\n  delta = jax.random.uniform(rng, shape=(), minval=-max_delta, maxval=max_delta)\n  return adjust_brightness(rgb_tuple, delta)\n\n\ndef _random_contrast(rgb_tuple, rng, max_delta):\n  factor = jax.random.uniform(\n      rng, shape=(), minval=1 - max_delta, maxval=1 + max_delta)\n  return adjust_contrast(rgb_tuple, factor)\n\n\ndef _random_saturation(rgb_tuple, rng, max_delta):\n  h, s, v = rgb_to_hsv(*rgb_tuple)\n  factor = jax.random.uniform(\n      rng, shape=(), minval=1 - max_delta, maxval=1 + max_delta)\n  return hsv_to_rgb(*adjust_saturation(h, s, v, factor))\n\n\ndef _random_hue(rgb_tuple, rng, max_delta):\n  h, s, v = rgb_to_hsv(*rgb_tuple)\n  delta = jax.random.uniform(rng, shape=(), minval=-max_delta, maxval=max_delta)\n  return hsv_to_rgb(*adjust_hue(h, s, v, delta))\n\n\ndef _to_grayscale(image):\n  rgb_weights = jnp.array([0.2989, 0.5870, 0.1140])\n  grayscale = jnp.tensordot(image, rgb_weights, axes=(-1, -1))[..., jnp.newaxis]\n  return jnp.tile(grayscale, (1, 1, 3))  # Back to 3 channels.\n\n\ndef _color_transform_single_image(image, rng, brightness, contrast, saturation,\n                                  hue, to_grayscale_prob, color_jitter_prob,\n                                  apply_prob, shuffle):\n  \"\"\"Applies color jittering to a single image.\"\"\"\n  apply_rng, transform_rng = jax.random.split(rng)\n  perm_rng, b_rng, c_rng, s_rng, h_rng, cj_rng, gs_rng = jax.random.split(\n      transform_rng, 7)\n\n  # Whether the transform should be applied at all.\n  should_apply = jax.random.uniform(apply_rng, shape=()) <= apply_prob\n  # Whether to apply grayscale transform.\n  should_apply_gs = jax.random.uniform(gs_rng, shape=()) <= to_grayscale_prob\n  # Whether to apply color jittering.\n  should_apply_color = jax.random.uniform(cj_rng, shape=()) <= color_jitter_prob\n\n  # Decorator to conditionally apply fn based on an index.\n  def _make_cond(fn, idx):\n\n    def identity_fn(x, unused_rng, unused_param):\n      return x\n\n    def cond_fn(args, i):\n      def clip(args):\n        return jax.tree_map(lambda arg: jnp.clip(arg, 0., 1.), args)\n      out = jax.lax.cond(should_apply & should_apply_color & (i == idx), args,\n                         lambda a: clip(fn(*a)), args,\n                         lambda a: identity_fn(*a))\n      return jax.lax.stop_gradient(out)\n\n    return cond_fn\n\n  random_brightness_cond = _make_cond(_random_brightness, idx=0)\n  random_contrast_cond = _make_cond(_random_contrast, idx=1)\n  random_saturation_cond = _make_cond(_random_saturation, idx=2)\n  random_hue_cond = _make_cond(_random_hue, idx=3)\n\n  def _color_jitter(x):\n    rgb_tuple = tuple(jax.tree_map(jnp.squeeze, jnp.split(x, 3, axis=-1)))\n    if shuffle:\n      order = jax.random.permutation(perm_rng, jnp.arange(4, dtype=jnp.int32))\n    else:\n      order = range(4)\n    for idx in order:\n      if brightness > 0:\n        rgb_tuple = random_brightness_cond((rgb_tuple, b_rng, brightness), idx)\n      if contrast > 0:\n        rgb_tuple = random_contrast_cond((rgb_tuple, c_rng, contrast), idx)\n      if saturation > 0:\n        rgb_tuple = random_saturation_cond((rgb_tuple, s_rng, saturation), idx)\n      if hue > 0:\n        rgb_tuple = random_hue_cond((rgb_tuple, h_rng, hue), idx)\n    return jnp.stack(rgb_tuple, axis=-1)\n\n  out_apply = _color_jitter(image)\n  out_apply = jax.lax.cond(should_apply & should_apply_gs, out_apply,\n                           _to_grayscale, out_apply, lambda x: x)\n  return jnp.clip(out_apply, 0., 1.)\n\n\ndef _random_flip_single_image(image, rng):\n  _, flip_rng = jax.random.split(rng)\n  should_flip_lr = jax.random.uniform(flip_rng, shape=()) <= 0.5\n  image = jax.lax.cond(should_flip_lr, image, jnp.fliplr, image, lambda x: x)\n  return image\n\n\ndef random_flip(images, rng):\n  rngs = jax.random.split(rng, images.shape[0])\n  return jax.vmap(_random_flip_single_image)(images, rngs)\n\n\ndef color_transform(images,\n                    rng,\n                    brightness=0.8,\n                    contrast=0.8,\n                    saturation=0.8,\n                    hue=0.2,\n                    color_jitter_prob=0.8,\n                    to_grayscale_prob=0.2,\n                    apply_prob=1.0,\n                    shuffle=True):\n  \"\"\"Applies color jittering and/or grayscaling to a batch of images.\n\n  Args:\n    images: an NHWC tensor, with C=3.\n    rng: a single PRNGKey.\n    brightness: the range of jitter on brightness.\n    contrast: the range of jitter on contrast.\n    saturation: the range of jitter on saturation.\n    hue: the range of jitter on hue.\n    color_jitter_prob: the probability of applying color jittering.\n    to_grayscale_prob: the probability of converting the image to grayscale.\n    apply_prob: the probability of applying the transform to a batch element.\n    shuffle: whether to apply the transforms in a random order.\n\n  Returns:\n    A NHWC tensor of the transformed images.\n  \"\"\"\n  rngs = jax.random.split(rng, images.shape[0])\n  jitter_fn = functools.partial(\n      _color_transform_single_image,\n      brightness=brightness,\n      contrast=contrast,\n      saturation=saturation,\n      hue=hue,\n      color_jitter_prob=color_jitter_prob,\n      to_grayscale_prob=to_grayscale_prob,\n      apply_prob=apply_prob,\n      shuffle=shuffle)\n  return jax.vmap(jitter_fn)(images, rngs)\n\n\ndef gaussian_blur(images,\n                  rng,\n                  blur_divider=10.,\n                  sigma_min=0.1,\n                  sigma_max=2.0,\n                  apply_prob=1.0):\n  \"\"\"Applies gaussian blur to a batch of images.\n\n  Args:\n    images: an NHWC tensor, with C=3.\n    rng: a single PRNGKey.\n    blur_divider: the blurring kernel will have size H / blur_divider.\n    sigma_min: the minimum value for sigma in the blurring kernel.\n    sigma_max: the maximum value for sigma in the blurring kernel.\n    apply_prob: the probability of applying the transform to a batch element.\n\n  Returns:\n    A NHWC tensor of the blurred images.\n  \"\"\"\n  rngs = jax.random.split(rng, images.shape[0])\n  kernel_size = images.shape[1] / blur_divider\n  blur_fn = functools.partial(\n      _random_gaussian_blur,\n      kernel_size=kernel_size,\n      padding='SAME',\n      sigma_min=sigma_min,\n      sigma_max=sigma_max,\n      apply_prob=apply_prob)\n  return jax.vmap(blur_fn)(images, rngs)\n\n\ndef _solarize_single_image(image, rng, threshold, apply_prob):\n\n  def _apply(image):\n    return jnp.where(image < threshold, image, 1. - image)\n\n  return _maybe_apply(_apply, image, rng, apply_prob)\n\n\ndef solarize(images, rng, threshold=0.5, apply_prob=1.0):\n  \"\"\"Applies solarization.\n\n  Args:\n    images: an NHWC tensor (with C=3).\n    rng: a single PRNGKey.\n    threshold: the solarization threshold.\n    apply_prob: the probability of applying the transform to a batch element.\n\n  Returns:\n    A NHWC tensor of the transformed images.\n  \"\"\"\n  rngs = jax.random.split(rng, images.shape[0])\n  solarize_fn = functools.partial(\n      _solarize_single_image, threshold=threshold, apply_prob=apply_prob)\n  return jax.vmap(solarize_fn)(images, rngs)\n"
  },
  {
    "path": "byol/utils/checkpointing.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Checkpoint saving and restoring utilities.\"\"\"\n\nimport os\nimport time\nfrom typing import Mapping, Text, Tuple, Union\n\nfrom absl import logging\nimport dill\nimport jax\nimport jax.numpy as jnp\n\nfrom byol.utils import helpers\n\n\nclass Checkpointer:\n  \"\"\"A checkpoint saving and loading class.\"\"\"\n\n  def __init__(\n      self,\n      use_checkpointing: bool,\n      checkpoint_dir: Text,\n      save_checkpoint_interval: int,\n      filename: Text):\n    if (not use_checkpointing or\n        checkpoint_dir is None or\n        save_checkpoint_interval <= 0):\n      self._checkpoint_enabled = False\n      return\n\n    self._checkpoint_enabled = True\n    self._checkpoint_dir = checkpoint_dir\n    os.makedirs(self._checkpoint_dir, exist_ok=True)\n    self._filename = filename\n    self._checkpoint_path = os.path.join(self._checkpoint_dir, filename)\n    self._last_checkpoint_time = 0\n    self._checkpoint_every = save_checkpoint_interval\n\n  def maybe_save_checkpoint(\n      self,\n      experiment_state: Mapping[Text, jnp.ndarray],\n      step: int,\n      rng: jnp.ndarray,\n      is_final: bool):\n    \"\"\"Saves a checkpoint if enough time has passed since the previous one.\"\"\"\n    current_time = time.time()\n    if (not self._checkpoint_enabled or\n        jax.host_id() != 0 or  # Only checkpoint the first worker.\n        (not is_final and\n         current_time - self._last_checkpoint_time < self._checkpoint_every)):\n      return\n    checkpoint_data = dict(\n        experiment_state=jax.tree_map(\n            lambda x: jax.device_get(x[0]), experiment_state),\n        step=step,\n        rng=rng)\n    with open(self._checkpoint_path + '_tmp', 'wb') as checkpoint_file:\n      dill.dump(checkpoint_data, checkpoint_file, protocol=2)\n    try:\n      os.rename(self._checkpoint_path, self._checkpoint_path + '_old')\n      remove_old = True\n    except FileNotFoundError:\n      remove_old = False  # No previous checkpoint to remove\n    os.rename(self._checkpoint_path + '_tmp', self._checkpoint_path)\n    if remove_old:\n      os.remove(self._checkpoint_path + '_old')\n    self._last_checkpoint_time = current_time\n\n  def maybe_load_checkpoint(\n      self) -> Union[Tuple[Mapping[Text, jnp.ndarray], int, jnp.ndarray], None]:\n    \"\"\"Loads a checkpoint if any is found.\"\"\"\n    checkpoint_data = load_checkpoint(self._checkpoint_path)\n    if checkpoint_data is None:\n      logging.info('No existing checkpoint found at %s', self._checkpoint_path)\n      return None\n    step = checkpoint_data['step']\n    rng = checkpoint_data['rng']\n    experiment_state = jax.tree_map(\n        helpers.bcast_local_devices, checkpoint_data['experiment_state'])\n    del checkpoint_data\n    return experiment_state, step, rng\n\n\ndef load_checkpoint(checkpoint_path):\n  try:\n    with open(checkpoint_path, 'rb') as checkpoint_file:\n      checkpoint_data = dill.load(checkpoint_file)\n      logging.info('Loading checkpoint from %s, saved at step %d',\n                   checkpoint_path, checkpoint_data['step'])\n      return checkpoint_data\n  except FileNotFoundError:\n    return None\n"
  },
  {
    "path": "byol/utils/dataset.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"ImageNet dataset with typical pre-processing.\"\"\"\n\nimport enum\nfrom typing import Generator, Mapping, Optional, Sequence, Text, Tuple\n\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\nimport tensorflow.compat.v2 as tf\nimport tensorflow_datasets as tfds\n\nBatch = Mapping[Text, np.ndarray]\n\n\nclass Split(enum.Enum):\n  \"\"\"Imagenet dataset split.\"\"\"\n  TRAIN = 1\n  TRAIN_AND_VALID = 2\n  VALID = 3\n  TEST = 4\n\n  @classmethod\n  def from_string(cls, name: Text) -> 'Split':\n    return {\n        'TRAIN': Split.TRAIN,\n        'TRAIN_AND_VALID': Split.TRAIN_AND_VALID,\n        'VALID': Split.VALID,\n        'VALIDATION': Split.VALID,\n        'TEST': Split.TEST\n    }[name.upper()]\n\n  @property\n  def num_examples(self):\n    return {\n        Split.TRAIN_AND_VALID: 1281167,\n        Split.TRAIN: 1271167,\n        Split.VALID: 10000,\n        Split.TEST: 50000\n    }[self]\n\n\nclass PreprocessMode(enum.Enum):\n  \"\"\"Preprocessing modes for the dataset.\"\"\"\n  PRETRAIN = 1  # Generates two augmented views (random crop + augmentations).\n  LINEAR_TRAIN = 2  # Generates a single random crop.\n  EVAL = 3  # Generates a single center crop.\n\n\ndef normalize_images(images: jnp.ndarray) -> jnp.ndarray:\n  \"\"\"Normalize the image using ImageNet statistics.\"\"\"\n  mean_rgb = (0.485, 0.456, 0.406)\n  stddev_rgb = (0.229, 0.224, 0.225)\n  normed_images = images - jnp.array(mean_rgb).reshape((1, 1, 1, 3))\n  normed_images = normed_images / jnp.array(stddev_rgb).reshape((1, 1, 1, 3))\n  return normed_images\n\n\ndef load(split: Split,\n         *,\n         preprocess_mode: PreprocessMode,\n         batch_dims: Sequence[int],\n         transpose: bool = False,\n         allow_caching: bool = False) -> Generator[Batch, None, None]:\n  \"\"\"Loads the given split of the dataset.\"\"\"\n  start, end = _shard(split, jax.host_id(), jax.host_count())\n\n  total_batch_size = np.prod(batch_dims)\n\n  tfds_split = tfds.core.ReadInstruction(\n      _to_tfds_split(split), from_=start, to=end, unit='abs')\n  ds = tfds.load(\n      'imagenet2012:5.*.*',\n      split=tfds_split,\n      decoders={'image': tfds.decode.SkipDecoding()})\n\n  options = tf.data.Options()\n  options.experimental_threading.private_threadpool_size = 48\n  options.experimental_threading.max_intra_op_parallelism = 1\n\n  if preprocess_mode is not PreprocessMode.EVAL:\n    options.experimental_deterministic = False\n    if jax.host_count() > 1 and allow_caching:\n      # Only cache if we are reading a subset of the dataset.\n      ds = ds.cache()\n    ds = ds.repeat()\n    ds = ds.shuffle(buffer_size=10 * total_batch_size, seed=0)\n\n  else:\n    if split.num_examples % total_batch_size != 0:\n      raise ValueError(f'Test/valid must be divisible by {total_batch_size}')\n\n  ds = ds.with_options(options)\n\n  def preprocess_pretrain(example):\n    view1 = _preprocess_image(example['image'], mode=preprocess_mode)\n    view2 = _preprocess_image(example['image'], mode=preprocess_mode)\n    label = tf.cast(example['label'], tf.int32)\n    return {'view1': view1, 'view2': view2, 'labels': label}\n\n  def preprocess_linear_train(example):\n    image = _preprocess_image(example['image'], mode=preprocess_mode)\n    label = tf.cast(example['label'], tf.int32)\n    return {'images': image, 'labels': label}\n\n  def preprocess_eval(example):\n    image = _preprocess_image(example['image'], mode=preprocess_mode)\n    label = tf.cast(example['label'], tf.int32)\n    return {'images': image, 'labels': label}\n\n  if preprocess_mode is PreprocessMode.PRETRAIN:\n    ds = ds.map(\n        preprocess_pretrain, num_parallel_calls=tf.data.experimental.AUTOTUNE)\n  elif preprocess_mode is PreprocessMode.LINEAR_TRAIN:\n    ds = ds.map(\n        preprocess_linear_train,\n        num_parallel_calls=tf.data.experimental.AUTOTUNE)\n  else:\n    ds = ds.map(\n        preprocess_eval, num_parallel_calls=tf.data.experimental.AUTOTUNE)\n\n  def transpose_fn(batch):\n    # We use the double-transpose-trick to improve performance for TPUs. Note\n    # that this (typically) requires a matching HWCN->NHWC transpose in your\n    # model code. The compiler cannot make this optimization for us since our\n    # data pipeline and model are compiled separately.\n    batch = dict(**batch)\n    if preprocess_mode is PreprocessMode.PRETRAIN:\n      batch['view1'] = tf.transpose(batch['view1'], (1, 2, 3, 0))\n      batch['view2'] = tf.transpose(batch['view2'], (1, 2, 3, 0))\n    else:\n      batch['images'] = tf.transpose(batch['images'], (1, 2, 3, 0))\n    return batch\n\n  for i, batch_size in enumerate(reversed(batch_dims)):\n    ds = ds.batch(batch_size)\n    if i == 0 and transpose:\n      ds = ds.map(transpose_fn)  # NHWC -> HWCN\n\n  ds = ds.prefetch(tf.data.experimental.AUTOTUNE)\n\n  yield from tfds.as_numpy(ds)\n\n\ndef _to_tfds_split(split: Split) -> tfds.Split:\n  \"\"\"Returns the TFDS split appropriately sharded.\"\"\"\n  # NOTE: Imagenet did not release labels for the test split used in the\n  # competition, we consider the VALID split the TEST split and reserve\n  # 10k images from TRAIN for VALID.\n  if split in (Split.TRAIN, Split.TRAIN_AND_VALID, Split.VALID):\n    return tfds.Split.TRAIN\n  else:\n    assert split == Split.TEST\n    return tfds.Split.VALIDATION\n\n\ndef _shard(split: Split, shard_index: int, num_shards: int) -> Tuple[int, int]:\n  \"\"\"Returns [start, end) for the given shard index.\"\"\"\n  assert shard_index < num_shards\n  arange = np.arange(split.num_examples)\n  shard_range = np.array_split(arange, num_shards)[shard_index]\n  start, end = shard_range[0], (shard_range[-1] + 1)\n  if split == Split.TRAIN:\n    # Note that our TRAIN=TFDS_TRAIN[10000:] and VALID=TFDS_TRAIN[:10000].\n    offset = Split.VALID.num_examples\n    start += offset\n    end += offset\n  return start, end\n\n\ndef _preprocess_image(\n    image_bytes: tf.Tensor,\n    mode: PreprocessMode,\n) -> tf.Tensor:\n  \"\"\"Returns processed and resized images.\"\"\"\n  if mode is PreprocessMode.PRETRAIN:\n    image = _decode_and_random_crop(image_bytes)\n    # Random horizontal flipping is optionally done in augmentations.preprocess.\n  elif mode is PreprocessMode.LINEAR_TRAIN:\n    image = _decode_and_random_crop(image_bytes)\n    image = tf.image.random_flip_left_right(image)\n  else:\n    image = _decode_and_center_crop(image_bytes)\n  # NOTE: Bicubic resize (1) casts uint8 to float32 and (2) resizes without\n  # clamping overshoots. This means values returned will be outside the range\n  # [0.0, 255.0] (e.g. we have observed outputs in the range [-51.1, 336.6]).\n  assert image.dtype == tf.uint8\n  image = tf.image.resize(image, [224, 224], tf.image.ResizeMethod.BICUBIC)\n  image = tf.clip_by_value(image / 255., 0., 1.)\n  return image\n\n\ndef _decode_and_random_crop(image_bytes: tf.Tensor) -> tf.Tensor:\n  \"\"\"Make a random crop of 224.\"\"\"\n  img_size = tf.image.extract_jpeg_shape(image_bytes)\n  area = tf.cast(img_size[1] * img_size[0], tf.float32)\n  target_area = tf.random.uniform([], 0.08, 1.0, dtype=tf.float32) * area\n\n  log_ratio = (tf.math.log(3 / 4), tf.math.log(4 / 3))\n  aspect_ratio = tf.math.exp(\n      tf.random.uniform([], *log_ratio, dtype=tf.float32))\n\n  w = tf.cast(tf.round(tf.sqrt(target_area * aspect_ratio)), tf.int32)\n  h = tf.cast(tf.round(tf.sqrt(target_area / aspect_ratio)), tf.int32)\n\n  w = tf.minimum(w, img_size[1])\n  h = tf.minimum(h, img_size[0])\n\n  offset_w = tf.random.uniform((),\n                               minval=0,\n                               maxval=img_size[1] - w + 1,\n                               dtype=tf.int32)\n  offset_h = tf.random.uniform((),\n                               minval=0,\n                               maxval=img_size[0] - h + 1,\n                               dtype=tf.int32)\n\n  crop_window = tf.stack([offset_h, offset_w, h, w])\n  image = tf.io.decode_and_crop_jpeg(image_bytes, crop_window, channels=3)\n  return image\n\n\ndef transpose_images(batch: Batch):\n  \"\"\"Transpose images for TPU training..\"\"\"\n  new_batch = dict(batch)  # Avoid mutating in place.\n  if 'images' in batch:\n    new_batch['images'] = jnp.transpose(batch['images'], (3, 0, 1, 2))\n  else:\n    new_batch['view1'] = jnp.transpose(batch['view1'], (3, 0, 1, 2))\n    new_batch['view2'] = jnp.transpose(batch['view2'], (3, 0, 1, 2))\n  return new_batch\n\n\ndef _decode_and_center_crop(\n    image_bytes: tf.Tensor,\n    jpeg_shape: Optional[tf.Tensor] = None,\n) -> tf.Tensor:\n  \"\"\"Crops to center of image with padding then scales.\"\"\"\n  if jpeg_shape is None:\n    jpeg_shape = tf.image.extract_jpeg_shape(image_bytes)\n  image_height = jpeg_shape[0]\n  image_width = jpeg_shape[1]\n\n  padded_center_crop_size = tf.cast(\n      ((224 / (224 + 32)) *\n       tf.cast(tf.minimum(image_height, image_width), tf.float32)), tf.int32)\n\n  offset_height = ((image_height - padded_center_crop_size) + 1) // 2\n  offset_width = ((image_width - padded_center_crop_size) + 1) // 2\n  crop_window = tf.stack([\n      offset_height, offset_width, padded_center_crop_size,\n      padded_center_crop_size\n  ])\n  image = tf.image.decode_and_crop_jpeg(image_bytes, crop_window, channels=3)\n  return image\n"
  },
  {
    "path": "byol/utils/helpers.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Utility functions.\"\"\"\n\nfrom typing import Optional, Text\nfrom absl import logging\nimport jax\nimport jax.numpy as jnp\n\n\ndef topk_accuracy(\n    logits: jnp.ndarray,\n    labels: jnp.ndarray,\n    topk: int,\n    ignore_label_above: Optional[int] = None,\n) -> jnp.ndarray:\n  \"\"\"Top-num_codes accuracy.\"\"\"\n  assert len(labels.shape) == 1, 'topk expects 1d int labels.'\n  assert len(logits.shape) == 2, 'topk expects 2d logits.'\n\n  if ignore_label_above is not None:\n    logits = logits[labels < ignore_label_above, :]\n    labels = labels[labels < ignore_label_above]\n\n  prds = jnp.argsort(logits, axis=1)[:, ::-1]\n  prds = prds[:, :topk]\n  total = jnp.any(prds == jnp.tile(labels[:, jnp.newaxis], [1, topk]), axis=1)\n\n  return total\n\n\ndef softmax_cross_entropy(\n    logits: jnp.ndarray,\n    labels: jnp.ndarray,\n    reduction: Optional[Text] = 'mean',\n) -> jnp.ndarray:\n  \"\"\"Computes softmax cross entropy given logits and one-hot class labels.\n\n  Args:\n    logits: Logit output values.\n    labels: Ground truth one-hot-encoded labels.\n    reduction: Type of reduction to apply to loss.\n\n  Returns:\n    Loss value. If `reduction` is `none`, this has the same shape as `labels`;\n    otherwise, it is scalar.\n\n  Raises:\n    ValueError: If the type of `reduction` is unsupported.\n  \"\"\"\n  loss = -jnp.sum(labels * jax.nn.log_softmax(logits), axis=-1)\n  if reduction == 'sum':\n    return jnp.sum(loss)\n  elif reduction == 'mean':\n    return jnp.mean(loss)\n  elif reduction == 'none' or reduction is None:\n    return loss\n  else:\n    raise ValueError(f'Incorrect reduction mode {reduction}')\n\n\ndef l2_normalize(\n    x: jnp.ndarray,\n    axis: Optional[int] = None,\n    epsilon: float = 1e-12,\n) -> jnp.ndarray:\n  \"\"\"l2 normalize a tensor on an axis with numerical stability.\"\"\"\n  square_sum = jnp.sum(jnp.square(x), axis=axis, keepdims=True)\n  x_inv_norm = jax.lax.rsqrt(jnp.maximum(square_sum, epsilon))\n  return x * x_inv_norm\n\n\ndef l2_weight_regularizer(params):\n  \"\"\"Helper to do lasso on weights.\n\n  Args:\n    params: the entire param set.\n\n  Returns:\n    Scalar of the l2 norm of the weights.\n  \"\"\"\n  l2_norm = 0.\n  for mod_name, mod_params in params.items():\n    if 'norm' not in mod_name:\n      for param_k, param_v in mod_params.items():\n        if param_k != 'b' not in param_k:  # Filter out biases\n          l2_norm += jnp.sum(jnp.square(param_v))\n        else:\n          logging.warning('Excluding %s/%s from optimizer weight decay!',\n                          mod_name, param_k)\n    else:\n      logging.warning('Excluding %s from optimizer weight decay!', mod_name)\n\n  return 0.5 * l2_norm\n\n\ndef regression_loss(x: jnp.ndarray, y: jnp.ndarray) -> jnp.ndarray:\n  \"\"\"Byol's regression loss. This is a simple cosine similarity.\"\"\"\n  normed_x, normed_y = l2_normalize(x, axis=-1), l2_normalize(y, axis=-1)\n  return jnp.sum((normed_x - normed_y)**2, axis=-1)\n\n\ndef bcast_local_devices(value):\n  \"\"\"Broadcasts an object to all local devices.\"\"\"\n  devices = jax.local_devices()\n\n  def _replicate(x):\n    \"\"\"Replicate an object on each device.\"\"\"\n    x = jnp.array(x)\n    return jax.device_put_sharded(len(devices) * [x], devices)\n\n  return jax.tree_util.tree_map(_replicate, value)\n\n\ndef get_first(xs):\n  \"\"\"Gets values from the first device.\"\"\"\n  return jax.tree_map(lambda x: x[0], xs)\n"
  },
  {
    "path": "byol/utils/networks.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Networks used in BYOL.\"\"\"\n\nfrom typing import Any, Mapping, Optional, Sequence, Text\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\n\n\nclass MLP(hk.Module):\n  \"\"\"One hidden layer perceptron, with normalization.\"\"\"\n\n  def __init__(\n      self,\n      name: Text,\n      hidden_size: int,\n      output_size: int,\n      bn_config: Mapping[Text, Any],\n  ):\n    super().__init__(name=name)\n    self._hidden_size = hidden_size\n    self._output_size = output_size\n    self._bn_config = bn_config\n\n  def __call__(self, inputs: jnp.ndarray, is_training: bool) -> jnp.ndarray:\n    out = hk.Linear(output_size=self._hidden_size, with_bias=True)(inputs)\n    out = hk.BatchNorm(**self._bn_config)(out, is_training=is_training)\n    out = jax.nn.relu(out)\n    out = hk.Linear(output_size=self._output_size, with_bias=False)(out)\n    return out\n\n\ndef check_length(length, value, name):\n  if len(value) != length:\n    raise ValueError(f'`{name}` must be of length 4 not {len(value)}')\n\n\nclass ResNetTorso(hk.Module):\n  \"\"\"ResNet model.\"\"\"\n\n  def __init__(\n      self,\n      blocks_per_group: Sequence[int],\n      num_classes: Optional[int] = None,\n      bn_config: Optional[Mapping[str, float]] = None,\n      resnet_v2: bool = False,\n      bottleneck: bool = True,\n      channels_per_group: Sequence[int] = (256, 512, 1024, 2048),\n      use_projection: Sequence[bool] = (True, True, True, True),\n      width_multiplier: int = 1,\n      name: Optional[str] = None,\n  ):\n    \"\"\"Constructs a ResNet model.\n\n    Args:\n      blocks_per_group: A sequence of length 4 that indicates the number of\n        blocks created in each group.\n      num_classes: The number of classes to classify the inputs into.\n      bn_config: A dictionary of three elements, `decay_rate`, `eps`, and\n        `cross_replica_axis`, to be passed on to the `BatchNorm` layers. By\n        default the `decay_rate` is `0.9` and `eps` is `1e-5`, and the axis is\n        `None`.\n      resnet_v2: Whether to use the v1 or v2 ResNet implementation. Defaults to\n        False.\n       bottleneck: Whether the block should bottleneck or not. Defaults to True.\n      channels_per_group: A sequence of length 4 that indicates the number\n        of channels used for each block in each group.\n      use_projection: A sequence of length 4 that indicates whether each\n        residual block should use projection.\n      width_multiplier: An integer multiplying the number of channels per group.\n      name: Name of the module.\n    \"\"\"\n    super().__init__(name=name)\n    self.resnet_v2 = resnet_v2\n\n    bn_config = dict(bn_config or {})\n    bn_config.setdefault('decay_rate', 0.9)\n    bn_config.setdefault('eps', 1e-5)\n    bn_config.setdefault('create_scale', True)\n    bn_config.setdefault('create_offset', True)\n\n    # Number of blocks in each group for ResNet.\n    check_length(4, blocks_per_group, 'blocks_per_group')\n    check_length(4, channels_per_group, 'channels_per_group')\n\n    self.initial_conv = hk.Conv2D(\n        output_channels=64 * width_multiplier,\n        kernel_shape=7,\n        stride=2,\n        with_bias=False,\n        padding='SAME',\n        name='initial_conv')\n\n    if not self.resnet_v2:\n      self.initial_batchnorm = hk.BatchNorm(name='initial_batchnorm',\n                                            **bn_config)\n\n    self.block_groups = []\n    strides = (1, 2, 2, 2)\n    for i in range(4):\n      self.block_groups.append(\n          hk.nets.ResNet.BlockGroup(\n              channels=width_multiplier * channels_per_group[i],\n              num_blocks=blocks_per_group[i],\n              stride=strides[i],\n              bn_config=bn_config,\n              resnet_v2=resnet_v2,\n              bottleneck=bottleneck,\n              use_projection=use_projection[i],\n              name='block_group_%d' % (i)))\n\n    if self.resnet_v2:\n      self.final_batchnorm = hk.BatchNorm(name='final_batchnorm', **bn_config)\n\n    self.logits = hk.Linear(num_classes, w_init=jnp.zeros, name='logits')\n\n  def __call__(self, inputs, is_training, test_local_stats=False):\n    out = inputs\n    out = self.initial_conv(out)\n    if not self.resnet_v2:\n      out = self.initial_batchnorm(out, is_training, test_local_stats)\n      out = jax.nn.relu(out)\n\n    out = hk.max_pool(out,\n                      window_shape=(1, 3, 3, 1),\n                      strides=(1, 2, 2, 1),\n                      padding='SAME')\n\n    for block_group in self.block_groups:\n      out = block_group(out, is_training, test_local_stats)\n\n    if self.resnet_v2:\n      out = self.final_batchnorm(out, is_training, test_local_stats)\n      out = jax.nn.relu(out)\n    out = jnp.mean(out, axis=[1, 2])\n    return out\n\n\nclass TinyResNet(ResNetTorso):\n  \"\"\"Tiny resnet for local runs and tests.\"\"\"\n\n  def __init__(self,\n               num_classes: Optional[int] = None,\n               bn_config: Optional[Mapping[str, float]] = None,\n               resnet_v2: bool = False,\n               width_multiplier: int = 1,\n               name: Optional[str] = None):\n    \"\"\"Constructs a ResNet model.\n\n    Args:\n      num_classes: The number of classes to classify the inputs into.\n      bn_config: A dictionary of two elements, `decay_rate` and `eps` to be\n        passed on to the `BatchNorm` layers.\n      resnet_v2: Whether to use the v1 or v2 ResNet implementation. Defaults\n        to False.\n      width_multiplier: An integer multiplying the number of channels per group.\n      name: Name of the module.\n    \"\"\"\n    super().__init__(blocks_per_group=(1, 1, 1, 1),\n                     channels_per_group=(8, 8, 8, 8),\n                     num_classes=num_classes,\n                     bn_config=bn_config,\n                     resnet_v2=resnet_v2,\n                     bottleneck=False,\n                     width_multiplier=width_multiplier,\n                     name=name)\n\n\nclass ResNet18(ResNetTorso):\n  \"\"\"ResNet18.\"\"\"\n\n  def __init__(self,\n               num_classes: Optional[int] = None,\n               bn_config: Optional[Mapping[str, float]] = None,\n               resnet_v2: bool = False,\n               width_multiplier: int = 1,\n               name: Optional[str] = None):\n    \"\"\"Constructs a ResNet model.\n\n    Args:\n      num_classes: The number of classes to classify the inputs into.\n      bn_config: A dictionary of two elements, `decay_rate` and `eps` to be\n        passed on to the `BatchNorm` layers.\n      resnet_v2: Whether to use the v1 or v2 ResNet implementation. Defaults\n        to False.\n      width_multiplier: An integer multiplying the number of channels per group.\n      name: Name of the module.\n    \"\"\"\n    super().__init__(blocks_per_group=(2, 2, 2, 2),\n                     num_classes=num_classes,\n                     bn_config=bn_config,\n                     resnet_v2=resnet_v2,\n                     bottleneck=False,\n                     channels_per_group=(64, 128, 256, 512),\n                     width_multiplier=width_multiplier,\n                     name=name)\n\n\nclass ResNet34(ResNetTorso):\n  \"\"\"ResNet34.\"\"\"\n\n  def __init__(self,\n               num_classes: Optional[int],\n               bn_config: Optional[Mapping[str, float]] = None,\n               resnet_v2: bool = False,\n               width_multiplier: int = 1,\n               name: Optional[str] = None):\n    \"\"\"Constructs a ResNet model.\n\n    Args:\n      num_classes: The number of classes to classify the inputs into.\n      bn_config: A dictionary of two elements, `decay_rate` and `eps` to be\n        passed on to the `BatchNorm` layers.\n      resnet_v2: Whether to use the v1 or v2 ResNet implementation. Defaults\n        to False.\n      width_multiplier: An integer multiplying the number of channels per group.\n      name: Name of the module.\n    \"\"\"\n    super().__init__(blocks_per_group=(3, 4, 6, 3),\n                     num_classes=num_classes,\n                     bn_config=bn_config,\n                     resnet_v2=resnet_v2,\n                     bottleneck=False,\n                     channels_per_group=(64, 128, 256, 512),\n                     width_multiplier=width_multiplier,\n                     name=name)\n\n\nclass ResNet50(ResNetTorso):\n  \"\"\"ResNet50.\"\"\"\n\n  def __init__(self,\n               num_classes: Optional[int] = None,\n               bn_config: Optional[Mapping[str, float]] = None,\n               resnet_v2: bool = False,\n               width_multiplier: int = 1,\n               name: Optional[str] = None):\n    \"\"\"Constructs a ResNet model.\n\n    Args:\n      num_classes: The number of classes to classify the inputs into.\n      bn_config: A dictionary of two elements, `decay_rate` and `eps` to be\n        passed on to the `BatchNorm` layers.\n      resnet_v2: Whether to use the v1 or v2 ResNet implementation. Defaults\n        to False.\n      width_multiplier: An integer multiplying the number of channels per group.\n      name: Name of the module.\n    \"\"\"\n    super().__init__(blocks_per_group=(3, 4, 6, 3),\n                     num_classes=num_classes,\n                     bn_config=bn_config,\n                     resnet_v2=resnet_v2,\n                     bottleneck=True,\n                     width_multiplier=width_multiplier,\n                     name=name)\n\n\nclass ResNet101(ResNetTorso):\n  \"\"\"ResNet101.\"\"\"\n\n  def __init__(self,\n               num_classes: Optional[int],\n               bn_config: Optional[Mapping[str, float]] = None,\n               resnet_v2: bool = False,\n               width_multiplier: int = 1,\n               name: Optional[str] = None):\n    \"\"\"Constructs a ResNet model.\n\n    Args:\n      num_classes: The number of classes to classify the inputs into.\n      bn_config: A dictionary of two elements, `decay_rate` and `eps` to be\n        passed on to the `BatchNorm` layers.\n      resnet_v2: Whether to use the v1 or v2 ResNet implementation. Defaults\n        to False.\n      width_multiplier: An integer multiplying the number of channels per group.\n      name: Name of the module.\n    \"\"\"\n    super().__init__(blocks_per_group=(3, 4, 23, 3),\n                     num_classes=num_classes,\n                     bn_config=bn_config,\n                     resnet_v2=resnet_v2,\n                     bottleneck=True,\n                     width_multiplier=width_multiplier,\n                     name=name)\n\n\nclass ResNet152(ResNetTorso):\n  \"\"\"ResNet152.\"\"\"\n\n  def __init__(self,\n               num_classes: Optional[int],\n               bn_config: Optional[Mapping[str, float]] = None,\n               resnet_v2: bool = False,\n               width_multiplier: int = 1,\n               name: Optional[str] = None):\n    \"\"\"Constructs a ResNet model.\n\n    Args:\n      num_classes: The number of classes to classify the inputs into.\n      bn_config: A dictionary of two elements, `decay_rate` and `eps` to be\n        passed on to the `BatchNorm` layers.\n      resnet_v2: Whether to use the v1 or v2 ResNet implementation. Defaults\n        to False.\n      width_multiplier: An integer multiplying the number of channels per group.\n      name: Name of the module.\n    \"\"\"\n    super().__init__(blocks_per_group=(3, 8, 36, 3),\n                     num_classes=num_classes,\n                     bn_config=bn_config,\n                     resnet_v2=resnet_v2,\n                     bottleneck=True,\n                     width_multiplier=width_multiplier,\n                     name=name)\n\n\nclass ResNet200(ResNetTorso):\n  \"\"\"ResNet200.\"\"\"\n\n  def __init__(self,\n               num_classes: Optional[int],\n               bn_config: Optional[Mapping[str, float]] = None,\n               resnet_v2: bool = False,\n               width_multiplier: int = 1,\n               name: Optional[str] = None):\n    \"\"\"Constructs a ResNet model.\n\n    Args:\n      num_classes: The number of classes to classify the inputs into.\n      bn_config: A dictionary of two elements, `decay_rate` and `eps` to be\n        passed on to the `BatchNorm` layers.\n      resnet_v2: Whether to use the v1 or v2 ResNet implementation. Defaults\n        to False.\n      width_multiplier: An integer multiplying the number of channels per group.\n      name: Name of the module.\n    \"\"\"\n    super().__init__(blocks_per_group=(3, 24, 36, 3),\n                     num_classes=num_classes,\n                     bn_config=bn_config,\n                     resnet_v2=resnet_v2,\n                     bottleneck=True,\n                     width_multiplier=width_multiplier,\n                     name=name)\n"
  },
  {
    "path": "byol/utils/optimizers.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Implementation of LARS Optimizer with optax.\"\"\"\n\nfrom typing import Any, Callable, List, NamedTuple, Optional, Tuple\n\nimport jax\nimport jax.numpy as jnp\nimport optax\nimport tree as nest\n\n# A filter function takes a path and a value as input and outputs True for\n# variable to apply update and False not to apply the update\nFilterFn = Callable[[Tuple[Any], jnp.ndarray], jnp.ndarray]\n\n\ndef exclude_bias_and_norm(path: Tuple[Any], val: jnp.ndarray) -> jnp.ndarray:\n  \"\"\"Filter to exclude biaises and normalizations weights.\"\"\"\n  del val\n  if path[-1] == \"b\" or \"norm\" in path[-2]:\n    return False  # pytype: disable=bad-return-type  # jax-ndarray\n  return True  # pytype: disable=bad-return-type  # jax-ndarray\n\n\ndef _partial_update(updates: optax.Updates,\n                    new_updates: optax.Updates,\n                    params: optax.Params,\n                    filter_fn: Optional[FilterFn] = None) -> optax.Updates:\n  \"\"\"Returns new_update for params which filter_fn is True else updates.\"\"\"\n\n  if filter_fn is None:\n    return new_updates\n\n  wrapped_filter_fn = lambda x, y: jnp.array(filter_fn(x, y))\n  params_to_filter = nest.map_structure_with_path(wrapped_filter_fn, params)\n\n  def _update_fn(g: jnp.ndarray, t: jnp.ndarray, m: jnp.ndarray) -> jnp.ndarray:\n    m = m.astype(g.dtype)\n    return g * (1. - m) + t * m\n\n  return jax.tree_map(_update_fn, updates, new_updates, params_to_filter)\n\n\nclass ScaleByLarsState(NamedTuple):\n  mu: jnp.ndarray\n\n\ndef scale_by_lars(\n    momentum: float = 0.9,\n    eta: float = 0.001,\n    filter_fn: Optional[FilterFn] = None) -> optax.GradientTransformation:\n  \"\"\"Rescales updates according to the LARS algorithm.\n\n  Does not include weight decay.\n  References:\n    [You et al, 2017](https://arxiv.org/abs/1708.03888)\n\n  Args:\n    momentum: momentum coeficient.\n    eta: LARS coefficient.\n    filter_fn: an optional filter function.\n\n  Returns:\n    An (init_fn, update_fn) tuple.\n  \"\"\"\n\n  def init_fn(params: optax.Params) -> ScaleByLarsState:\n    mu = jax.tree_map(jnp.zeros_like, params)  # momentum\n    return ScaleByLarsState(mu=mu)\n\n  def update_fn(updates: optax.Updates, state: ScaleByLarsState,\n                params: optax.Params) -> Tuple[optax.Updates, ScaleByLarsState]:\n\n    def lars_adaptation(\n        update: jnp.ndarray,\n        param: jnp.ndarray,\n    ) -> jnp.ndarray:\n      param_norm = jnp.linalg.norm(param)\n      update_norm = jnp.linalg.norm(update)\n      return update * jnp.where(\n          param_norm > 0.,\n          jnp.where(update_norm > 0,\n                    (eta * param_norm / update_norm), 1.0), 1.0)\n\n    adapted_updates = jax.tree_map(lars_adaptation, updates, params)\n    adapted_updates = _partial_update(updates, adapted_updates, params,\n                                      filter_fn)\n    mu = jax.tree_map(lambda g, t: momentum * g + t,\n                           state.mu, adapted_updates)\n    return mu, ScaleByLarsState(mu=mu)\n\n  return optax.GradientTransformation(init_fn, update_fn)\n\n\nclass AddWeightDecayState(NamedTuple):\n  \"\"\"Stateless transformation.\"\"\"\n\n\ndef add_weight_decay(\n    weight_decay: float,\n    filter_fn: Optional[FilterFn] = None) -> optax.GradientTransformation:\n  \"\"\"Adds a weight decay to the update.\n\n  Args:\n    weight_decay: weight_decay coeficient.\n    filter_fn: an optional filter function.\n\n  Returns:\n    An (init_fn, update_fn) tuple.\n  \"\"\"\n\n  def init_fn(_) -> AddWeightDecayState:\n    return AddWeightDecayState()\n\n  def update_fn(\n      updates: optax.Updates,\n      state: AddWeightDecayState,\n      params: optax.Params,\n  ) -> Tuple[optax.Updates, AddWeightDecayState]:\n    new_updates = jax.tree_map(lambda g, p: g + weight_decay * p, updates,\n                                    params)\n    new_updates = _partial_update(updates, new_updates, params, filter_fn)\n    return new_updates, state\n\n  return optax.GradientTransformation(init_fn, update_fn)  # pytype: disable=wrong-arg-types  # numpy-scalars\n\n\nLarsState = List  # Type for the lars optimizer\n\n\ndef lars(\n    learning_rate: float,\n    weight_decay: float = 0.,\n    momentum: float = 0.9,\n    eta: float = 0.001,\n    weight_decay_filter: Optional[FilterFn] = None,\n    lars_adaptation_filter: Optional[FilterFn] = None,\n) -> optax.GradientTransformation:\n  \"\"\"Creates lars optimizer with weight decay.\n\n  References:\n    [You et al, 2017](https://arxiv.org/abs/1708.03888)\n\n  Args:\n    learning_rate: learning rate coefficient.\n    weight_decay: weight decay coefficient.\n    momentum: momentum coefficient.\n    eta: LARS coefficient.\n    weight_decay_filter: optional filter function to only apply the weight\n      decay on a subset of parameters. The filter function takes as input the\n      parameter path (as a tuple) and its associated update, and return a True\n      for params to apply the weight decay and False for params to not apply\n      the weight decay. When weight_decay_filter is set to None, the weight\n      decay is not applied to the bias, i.e. when the variable name is 'b', and\n      the weight decay is not applied to nornalization params, i.e. the\n      panultimate path contains 'norm'.\n    lars_adaptation_filter: similar to weight decay filter but for lars\n      adaptation\n\n  Returns:\n    An optax.GradientTransformation, i.e. a (init_fn, update_fn) tuple.\n  \"\"\"\n\n  if weight_decay_filter is None:\n    weight_decay_filter = lambda *_: True\n  if lars_adaptation_filter is None:\n    lars_adaptation_filter = lambda *_: True\n\n  return optax.chain(\n      add_weight_decay(\n          weight_decay=weight_decay, filter_fn=weight_decay_filter),\n      scale_by_lars(\n          momentum=momentum, eta=eta, filter_fn=lars_adaptation_filter),\n      optax.scale(-learning_rate),\n  )\n"
  },
  {
    "path": "byol/utils/schedules.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Learning rate schedules.\"\"\"\nimport jax.numpy as jnp\n\n\ndef target_ema(global_step: jnp.ndarray,\n               base_ema: float,\n               max_steps: int) -> jnp.ndarray:\n  decay = _cosine_decay(global_step, max_steps, 1.)\n  return 1. - (1. - base_ema) * decay\n\n\ndef learning_schedule(global_step: jnp.ndarray,\n                      batch_size: int,\n                      base_learning_rate: float,\n                      total_steps: int,\n                      warmup_steps: int) -> float:\n  \"\"\"Cosine learning rate scheduler.\"\"\"\n  # Compute LR & Scaled LR\n  scaled_lr = base_learning_rate * batch_size / 256.\n  learning_rate = (\n      global_step.astype(jnp.float32) / int(warmup_steps) *\n      scaled_lr if warmup_steps > 0 else scaled_lr)\n\n  # Cosine schedule after warmup.\n  return jnp.where(\n      global_step < warmup_steps, learning_rate,\n      _cosine_decay(global_step - warmup_steps, total_steps - warmup_steps,\n                    scaled_lr))\n\n\ndef _cosine_decay(global_step: jnp.ndarray,\n                  max_steps: int,\n                  initial_value: float) -> jnp.ndarray:\n  \"\"\"Simple implementation of cosine decay from TF1.\"\"\"\n  global_step = jnp.minimum(global_step, max_steps)\n  cosine_decay_value = 0.5 * (1 + jnp.cos(jnp.pi * global_step / max_steps))\n  decayed_learning_rate = initial_value * cosine_decay_value\n  return decayed_learning_rate\n"
  },
  {
    "path": "cadl/README.md",
    "content": "# A dataset of CAD sketches\n\n<p align=\"center\">\n  <img width=\"75%\" src=\"media/sketch_data.gif\" />\n</p>\n\n## Overview\n\nThis repository contains the dataset used in [\"Computer-Aided Design as Language\"](https://arxiv.org/abs/2105.02769).\nWe provide the following splits:\n  * Training (`4,656,607` sketches)\n  * Validation (`50,000` sketches)\n  * Test (`50,000` sketches)\n\n## Quickstart\n\nFirst, download the dataset files:\n```shell\nbash download_dataset.sh\n```\nThis will place the splits under `data` subfolder.\n\nIn order to read the data, you will need [protocol buffer](https://developers.google.com/protocol-buffers)\ncompiler and [Tensorflow](https://www.tensorflow.org/):\n```shell\napt install -y protobuf-compiler\nvirtualenv --python=python3.6 \"${ENV}\"\n${ENV}/bin/activate\npip install tensorflow\n```\n\nNext, you need to compile `.proto` files that define the layout of entries in\nthe dataset:\n```shell\nprotoc --python_out=. *.proto\n```\n\nFinally, you can use the generated classes to access the examples. The following\n`python` snippet reads and prints the first 5 elements from the training split:\n```python\nimport tensorflow as tf\n\nimport example_pb2\n\ndataset = tf.data.TFRecordDataset(\"data/train.tfrecord\")\n\nfor raw_record in dataset.take(5).as_numpy_iterator():\n  example = example_pb2.Example()\n  example.ParseFromString(raw_record)\n  print(example, \"\\n\")\n```\n\nPlease refer to `example.proto` for details on the data layout.\n\n## Citation\n\nIf you use this dataset in your research, please cite:\n```\n@article{ganin2021computer,\n  title={Computer-aided design as language},\n  author={Ganin, Yaroslav and Bartunov, Sergey and Li, Yujia and Keller, Ethan and Saliceti, Stefano},\n  journal={arXiv preprint arXiv:2105.02769},\n  year={2021}\n}\n```\n\n## License\n\nThe code is licensed under the [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0).\nThe dataset is licensed under a [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/).\n\n## Disclaimer\n\nThis is not an official Google product.\n"
  },
  {
    "path": "cadl/common.proto",
    "content": "// Copyright 2021 Deepmind Technologies Limited.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nsyntax = \"proto3\";\n\npackage deepmind.cad.protos;\n\nimport \"google/protobuf/descriptor.proto\";\n\nmessage NCFieldOptions {\n  bool is_pointer = 1;\n  uint32 at_least = 2;\n}\n\nextend google.protobuf.FieldOptions {\n  NCFieldOptions nc_field_options = 50000;\n}\n"
  },
  {
    "path": "cadl/constraints.proto",
    "content": "// Copyright 2021 Deepmind Technologies Limited.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nsyntax = \"proto3\";\n\npackage deepmind.cad.protos;\n\nimport \"common.proto\";\n\nmessage FixConstraint {\n  repeated uint32 entities = 1\n      [(nc_field_options).is_pointer = true, (nc_field_options).at_least = 1];\n}\n\nmessage CoincidentConstraint {\n  repeated uint32 entities = 1\n      [(nc_field_options).is_pointer = true, (nc_field_options).at_least = 2];\n}\n\nmessage ConcentricConstraint {\n  repeated uint32 entities = 1\n      [(nc_field_options).is_pointer = true, (nc_field_options).at_least = 2];\n}\n\nmessage EqualConstraint {\n  repeated uint32 entities = 1\n      [(nc_field_options).is_pointer = true, (nc_field_options).at_least = 2];\n}\n\nmessage ParallelConstraint {\n  repeated uint32 entities = 1\n      [(nc_field_options).is_pointer = true, (nc_field_options).at_least = 2];\n}\n\nmessage TangentConstraint {\n  uint32 first = 1 [(nc_field_options).is_pointer = true];\n  uint32 second = 2 [(nc_field_options).is_pointer = true];\n}\n\nmessage PerpendicularConstraint {\n  uint32 first = 1 [(nc_field_options).is_pointer = true];\n  uint32 second = 2 [(nc_field_options).is_pointer = true];\n}\n\nmessage MirrorConstraint {\n  uint32 mirror = 1 [(nc_field_options).is_pointer = true];\n  message MirroredPair {\n    uint32 first = 1 [(nc_field_options).is_pointer = true];\n    uint32 second = 2 [(nc_field_options).is_pointer = true];\n  }\n  repeated MirroredPair mirrored_pairs = 2 [(nc_field_options).at_least = 1];\n}\n\nmessage DistanceConstraint {\n  uint32 first = 1 [(nc_field_options).is_pointer = true];\n  uint32 second = 2 [(nc_field_options).is_pointer = true];\n  enum Direction {\n    HORIZONTAL = 0;\n    VERTICAL = 1;\n    MINIMUM = 2;\n  }\n  Direction direction = 3;\n  double length = 4;\n  enum Alignment {\n    ALIGNED = 0;\n    ANTI_ALIGNED = 1;\n  }\n  enum HalfSpace {\n    NOT_AVAILABLE = 0;\n    LEFT = 1;\n    RIGHT = 2;\n  }\n  message HalfSpaceParams {\n    HalfSpace half_space_first = 1;\n    HalfSpace half_space_second = 2;\n  }\n  oneof additional_params {\n    Alignment alignment = 5;\n    HalfSpaceParams half_space_params = 6;\n  }\n}\n\nmessage LengthConstraint {\n  uint32 entity = 1 [(nc_field_options).is_pointer = true];\n  double length = 2;\n}\n\nmessage DiameterConstraint {\n  uint32 entity = 1 [(nc_field_options).is_pointer = true];\n  double length = 2;\n}\n\nmessage RadiusConstraint {\n  uint32 entity = 1 [(nc_field_options).is_pointer = true];\n  double length = 2;\n}\n\nmessage AngleConstraint {\n  uint32 first = 1 [(nc_field_options).is_pointer = true];\n  uint32 second = 2 [(nc_field_options).is_pointer = true];\n  double angle = 3;\n}\n\nmessage HorizontalConstraint {\n  repeated uint32 entities = 1\n      [(nc_field_options).is_pointer = true, (nc_field_options).at_least = 1];\n}\n\nmessage VerticalConstraint {\n  repeated uint32 entities = 2\n      [(nc_field_options).is_pointer = true, (nc_field_options).at_least = 1];\n}\n\nmessage MidpointConstraint {\n  uint32 midpoint = 1 [(nc_field_options).is_pointer = true];\n  message Endpoints {\n    uint32 first = 1 [(nc_field_options).is_pointer = true];\n    uint32 second = 2 [(nc_field_options).is_pointer = true];\n  }\n  oneof additional_params {\n    Endpoints endpoints = 2;\n    uint32 entity = 3 [(nc_field_options).is_pointer = true];\n  }\n}\n"
  },
  {
    "path": "cadl/download_dataset.sh",
    "content": "#!/bin/bash\n# Copyright 2021 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -e\n\nOUTPUT_DIR=\"data\"\nBASE_URL=\"https://storage.googleapis.com/cadl/\"\n\nmkdir -p ${OUTPUT_DIR}\nfor file in train.tfrecord valid.tfrecord test.tfrecord\ndo\nwget -O \"${OUTPUT_DIR}/${file}\" \"${BASE_URL}${file}\"\ndone\n"
  },
  {
    "path": "cadl/entities.proto",
    "content": "// Copyright 2021 Deepmind Technologies Limited.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nsyntax = \"proto3\";\n\npackage deepmind.cad.protos;\n\nimport \"google/protobuf/empty.proto\";\nimport \"common.proto\";\n\nmessage Vector {\n  double x = 1;\n  double y = 2;\n}\n\nmessage PointEntity {\n  bool is_construction = 1;\n  Vector point = 2;\n}\n\nmessage LineEntity {\n  bool is_construction = 1;\n  Vector start = 2;\n  Vector end = 3;\n}\n\nmessage CircleArcEntity {\n  bool is_construction = 1;\n  Vector center = 2;\n  double radius = 3;\n  message ArcParams {\n    Vector direction = 1;\n    bool is_clockwise = 2;\n    double start_angle = 3;\n    double end_angle = 4;\n  }\n  oneof additional_params {\n    google.protobuf.Empty circle_params = 4;\n    ArcParams arc_params = 5;\n  }\n}\n\nmessage CircleArcEntityV2 {\n  bool is_construction = 1;\n  Vector center = 2;\n  message CircleParams {\n    double radius = 1;\n  }\n  message ArcParams {\n    Vector start = 1;\n    Vector end = 2;\n    bool is_clockwise = 3;\n  }\n  oneof additional_params {\n    CircleParams circle_params = 3;\n    ArcParams arc_params = 4;\n  }\n}\n\nmessage InterpolatedSplineEntity {\n  bool is_construction = 1;\n  bool is_periodic = 2;\n  repeated Vector interpolation_points = 3 [(nc_field_options).at_least = 2];\n  Vector start_derivative = 4;\n  Vector end_derivative = 5;\n  message TrimmedParams {\n    double start_phi = 1;\n    double end_phi = 2;\n  }\n  oneof additional_params {\n    google.protobuf.Empty untrimmed_params = 6;\n    TrimmedParams trimmed_params = 7;\n  }\n}\n"
  },
  {
    "path": "cadl/example.proto",
    "content": "// Copyright 2021 Deepmind Technologies Limited.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nsyntax = \"proto3\";\n\npackage deepmind.cad.protos;\n\nimport \"constraints.proto\";\nimport \"entities.proto\";\n\nmessage Entity {\n  oneof kind {\n    PointEntity point_entity = 1;\n    LineEntity line_entity = 2;\n    CircleArcEntityV2 circle_arc_entity = 3;\n    InterpolatedSplineEntity interpolated_spline_entity = 4;\n  }\n}\n\nmessage Constraint {\n  oneof kind {\n    FixConstraint fix_constraint = 1;\n    CoincidentConstraint coincident_constraint = 2;\n    ConcentricConstraint concentric_constraint = 3;\n    EqualConstraint equal_constraint = 4;\n    ParallelConstraint parallel_constraint = 5;\n    TangentConstraint tangent_constraint = 6;\n    PerpendicularConstraint perpendicular_constraint = 7;\n    MirrorConstraint mirror_constraint = 8;\n    DistanceConstraint distance_constraint = 9;\n    LengthConstraint length_constraint = 10;\n    DiameterConstraint diameter_constraint = 11;\n    RadiusConstraint radius_constraint = 12;\n    AngleConstraint angle_constraint = 13;\n    HorizontalConstraint horizontal_constraint = 14;\n    VerticalConstraint vertical_constraint = 15;\n    MidpointConstraint midpoint_constraint = 16;\n  }\n}\n\nmessage EntitySequence {\n  repeated Entity entities = 1;\n}\n\nmessage ConstraintSequence {\n  repeated Constraint constraints = 1;\n}\n\nmessage Example {\n  EntitySequence entity_sequence = 1;\n  ConstraintSequence constraint_sequence = 2;\n}\n"
  },
  {
    "path": "catch_carry/README.md",
    "content": "# Catch & Carry: Reusable Neural Controllers for Vision-Guided Whole-Body Tasks\n\nThis package contains motion capture data and tasks associated with \"Catch &\nCarry: Reusable Neural Controllers for Vision-Guided Whole-Body Tasks\"\n(https://arxiv.org/abs/1911.06636), which was published at SIGGRAPH 2020.\nThis is research code, and has dependencies on more stable code that is\navailable as part of [`dm_control`], in particular upon components in\n[`dm_control.locomotion`].\n\nTo get access to preconfigured python environments for the \"warehouse\" and \"ball\ntoss\" tasks, see the `task_examples.py` file. To use the MuJoCo interactive\nviewer (from dm_control) to load the environments, see `explore.py`.\n\n<p float=\"left\">\n  <img src=\"tasks.png\" height=\"200\">\n</p>\n\n## Installation instructions\n\n1.  Download [MuJoCo Pro](https://mujoco.org/) and extract the zip archive as\n    `~/.mujoco/mujoco200_$PLATFORM` where `$PLATFORM` is one of `linux`,\n    `macos`, or `win64`.\n\n2.  Ensure that a valid MuJoCo license key file is located at\n    `~/.mujoco/mjkey.txt`.\n\n3.  Clone the `deepmind-research` repository:\n\n    ```shell\n       git clone https://github.com/deepmind/deepmind-research.git\n       cd deepmind-research\n    ```\n\n4.  Create and activate a Python virtual environment:\n\n    ```shell\n       python3 -m virtualenv catch_carry\n       source catch_carry/bin/activate\n    ```\n\n5.  Install the package:\n\n    ```shell\n       pip install ./catch_carry\n    ```\n\n## Quickstart\n\nTo instantiate and step through the warehouse task:\n\n```python\nfrom catch_carry import task_examples\nimport numpy as np\n\n# Build an example environment.\nenv = task_examples.build_vision_warehouse()\n\n# Get the `action_spec` describing the control inputs.\naction_spec = env.action_spec()\n\n# Step through the environment for one episode with random actions.\ntime_step = env.reset()\nwhile not time_step.last():\n  action = np.random.uniform(action_spec.minimum, action_spec.maximum,\n                             size=action_spec.shape)\n  time_step = env.step(action)\n  print(\"reward = {}, discount = {}, observations = {}.\".format(\n      time_step.reward, time_step.discount, time_step.observation))\n```\n\nThe above code snippet can also be used for the ball toss task by replacing\n`build_vision_warehouse` with `build_vision_toss`.\n\n## Visualization\n\n[`dm_control.viewer`] can be used to visualize and interact with the\nenvironment. We provide the `explore.py` script specifically for this. If you\nfollowed our installation instructions above, this can be launched for the\nwarehouse task via:\n\n```shell\npython3 -m catch_carry.explore --task=warehouse\n```\n\nand for the ball toss task via:\n\n```shell\npython3 -m catch_carry.explore --task=toss\n```\n\n## Citation\n\nIf you use the code or data in this package, please cite:\n\n```\n@article{merel2020catch,\n    title = {Catch \\& Carry: Reusable Neural Controllers for\n             Vision-Guided Whole-Body Tasks},\n    author = {Merel, Josh and\n              Tunyasuvunakool, Saran and\n              Ahuja, Arun and\n              Tassa, Yuval and\n              Hasenclever, Leonard and\n              Pham, Vu and\n              Erez, Tom and\n              Wayne, Greg and\n              Heess, Nicolas},\n    journal = {ACM Trans. Graph.},\n    issue_date = {July 2020},\n    publisher = {Association for Computing Machinery},\n    address = {New York, NY, USA},\n    volume = {39},\n    number = {4},\n    articleno = {39},\n    numpages = {14},\n    issn = {0730-0301},\n    year = {2020},\n    month = jul,\n    url = {https://doi.org/10.1145/3386569.3392474},\n    doi = {10.1145/3386569.3392474},\n}\n```\n\n[`dm_control`]: https://github.com/deepmind/dm_control\n[`dm_control.locomotion`]: https://github.com/deepmind/dm_control/tree/master/dm_control/locomotion\n[`dm_control.viewer`]: https://github.com/deepmind/dm_control/tree/master/dm_control/viewer\n"
  },
  {
    "path": "catch_carry/__init__.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n"
  },
  {
    "path": "catch_carry/arm_opener.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Utility for opening arms until they are not in contact with a prop.\"\"\"\n\nimport contextlib\n\nfrom dm_control.mujoco.wrapper import mjbindings\nimport numpy as np\n\n_MAX_IK_ATTEMPTS = 100\n_IK_MAX_CORRECTION_WEIGHT = 0.1\n_JOINT_LIMIT_TOLERANCE = 1e-4\n_GAP_TOLERANCE = 0.1\n\n\nclass _ArmPropContactRemover(object):\n  \"\"\"Helper class for removing contacts between an arm and a prop via IK.\"\"\"\n\n  def __init__(self, physics, arm_root, prop, gap):\n    arm_geoms = arm_root.find_all('geom')\n    self._arm_geom_ids = set(physics.bind(arm_geoms).element_id)\n    arm_joints = arm_root.find_all('joint')\n    self._arm_joint_ids = list(physics.bind(arm_joints).element_id)\n    self._arm_qpos_indices = physics.model.jnt_qposadr[self._arm_joint_ids]\n    self._arm_dof_indices = physics.model.jnt_dofadr[self._arm_joint_ids]\n\n    self._prop_geoms = prop.find_all('geom')\n    self._prop_geom_ids = set(physics.bind(self._prop_geoms).element_id)\n\n    self._arm_joint_min = np.full(len(self._arm_joint_ids), float('-inf'),\n                                  dtype=physics.model.jnt_range.dtype)\n    self._arm_joint_max = np.full(len(self._arm_joint_ids), float('inf'),\n                                  dtype=physics.model.jnt_range.dtype)\n    for i, joint_id in enumerate(self._arm_joint_ids):\n      if physics.model.jnt_limited[joint_id]:\n        self._arm_joint_min[i], self._arm_joint_max[i] = (\n            physics.model.jnt_range[joint_id])\n\n    self._gap = gap\n\n  def _contact_pair_is_relevant(self, contact):\n    set1 = self._arm_geom_ids\n    set2 = self._prop_geom_ids\n    return ((contact.geom1 in set1 and contact.geom2 in set2) or\n            (contact.geom2 in set1 and contact.geom1 in set2))\n\n  def _forward_and_find_next_contact(self, physics):\n    \"\"\"Forwards the physics and finds the next contact to handle.\"\"\"\n    physics.forward()\n    next_contact = None\n    for contact in physics.data.contact:\n      if (self._contact_pair_is_relevant(contact) and\n          (next_contact is None or contact.dist < next_contact.dist)):\n        next_contact = contact\n    return next_contact\n\n  def _remove_contact_ik_iteration(self, physics, contact):\n    \"\"\"Performs one linearized IK iteration to remove the specified contact.\"\"\"\n    if contact.geom1 in self._arm_geom_ids:\n      sign = -1\n      geom_id = contact.geom1\n    else:\n      sign = 1\n      geom_id = contact.geom2\n\n    body_id = physics.model.geom_bodyid[geom_id]\n    normal = sign * contact.frame[:3]\n\n    jac_dtype = physics.data.qpos.dtype\n    jac = np.empty((6, physics.model.nv), dtype=jac_dtype)\n    jac_pos, jac_rot = jac[:3], jac[3:]\n    mjbindings.mjlib.mj_jacPointAxis(\n        physics.model.ptr, physics.data.ptr,\n        jac_pos, jac_rot,\n        contact.pos + (contact.dist / 2) * normal, normal, body_id)\n\n    # Calculate corrections w.r.t. all joints, disregarding joint limits.\n    delta_xpos = normal * max(0, self._gap - contact.dist)\n    jac_all_joints = jac_pos[:, self._arm_dof_indices]\n    update_unfiltered = np.linalg.lstsq(\n        jac_all_joints, delta_xpos, rcond=None)[0]\n\n    # Filter out joints at limit that are corrected in the \"wrong\" direction.\n    initial_qpos = np.array(physics.data.qpos[self._arm_qpos_indices])\n    min_filter = np.logical_and(\n        initial_qpos - self._arm_joint_min < _JOINT_LIMIT_TOLERANCE,\n        update_unfiltered < 0)\n    max_filter = np.logical_and(\n        self._arm_joint_max - initial_qpos < _JOINT_LIMIT_TOLERANCE,\n        update_unfiltered > 0)\n    active_joints = np.where(\n        np.logical_not(np.logical_or(min_filter, max_filter)))[0]\n\n    # Calculate corrections w.r.t. valid joints only.\n    active_dof_indices = self._arm_dof_indices[active_joints]\n    jac_joints = jac_pos[:, active_dof_indices]\n    update_filtered = np.linalg.lstsq(jac_joints, delta_xpos, rcond=None)[0]\n    update_nv = np.zeros(physics.model.nv, dtype=jac_dtype)\n    update_nv[active_dof_indices] = update_filtered\n\n    # Calculate maximum correction weight that does not violate joint limits.\n    weights = np.full_like(update_filtered, _IK_MAX_CORRECTION_WEIGHT)\n    active_initial_qpos = initial_qpos[active_joints]\n    active_joint_min = self._arm_joint_min[active_joints]\n    active_joint_max = self._arm_joint_max[active_joints]\n    for i in range(len(weights)):\n      proposed_update = update_filtered[i]\n      if proposed_update > 0:\n        max_allowed_update = active_joint_max[i] - active_initial_qpos[i]\n        weights[i] = min(max_allowed_update / proposed_update, weights[i])\n      elif proposed_update < 0:\n        min_allowed_update = active_joint_min[i] - active_initial_qpos[i]\n        weights[i] = min(min_allowed_update / proposed_update, weights[i])\n    weight = min(weights)\n\n    # Integrate the correction into `qpos`.\n    mjbindings.mjlib.mj_integratePos(\n        physics.model.ptr, physics.data.qpos, update_nv, weight)\n\n    # \"Paranoid\" clip the modified joint `qpos` to within joint limits.\n    active_qpos_indices = self._arm_qpos_indices[active_joints]\n    physics.data.qpos[active_qpos_indices] = np.clip(\n        physics.data.qpos[active_qpos_indices],\n        active_joint_min, active_joint_max)\n\n  @contextlib.contextmanager\n  def _override_margins_and_gaps(self, physics):\n    \"\"\"Context manager that overrides geom margins and gaps to `self._gap`.\"\"\"\n    prop_geom_bindings = physics.bind(self._prop_geoms)\n    original_margins = np.array(prop_geom_bindings.margin)\n    original_gaps = np.array(prop_geom_bindings.gap)\n    prop_geom_bindings.margin = self._gap * (1 - _GAP_TOLERANCE)\n    prop_geom_bindings.gap = self._gap * (1 - _GAP_TOLERANCE)\n    yield\n    prop_geom_bindings.margin = original_margins\n    prop_geom_bindings.gap = original_gaps\n    physics.forward()\n\n  def remove_contacts(self, physics):\n    with self._override_margins_and_gaps(physics):\n      for _ in range(_MAX_IK_ATTEMPTS):\n        contact = self._forward_and_find_next_contact(physics)\n        if contact is None:\n          return\n        self._remove_contact_ik_iteration(physics, contact)\n      contact = self._forward_and_find_next_contact(physics)\n      if contact and contact.dist < 0:\n        raise RuntimeError(\n            'Failed to remove contact with prop after {} iterations. '\n            'Final contact distance is {}.'.format(\n                _MAX_IK_ATTEMPTS, contact.dist))\n\n\ndef open_arms_for_prop(physics, left_arm_root, right_arm_root, prop, gap):\n  \"\"\"Opens left and right arms so as to leave a specified gap with the prop.\"\"\"\n  left_arm_opener = _ArmPropContactRemover(physics, left_arm_root, prop, gap)\n  left_arm_opener.remove_contacts(physics)\n  right_arm_opener = _ArmPropContactRemover(physics, right_arm_root, prop, gap)\n  right_arm_opener.remove_contacts(physics)\n"
  },
  {
    "path": "catch_carry/ball_toss.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"A ball-tossing task.\"\"\"\n\nimport collections\n\nfrom dm_control import composer\nfrom dm_control import mjcf\nfrom dm_control.composer import variation\nfrom dm_control.composer.observation import observable\nfrom dm_control.locomotion.arenas import floors\nfrom dm_control.locomotion.mocap import loader as mocap_loader\nimport numpy as np\n\nfrom catch_carry import mocap_data\nfrom catch_carry import props\nfrom catch_carry import trajectories\n\n_PHYSICS_TIMESTEP = 0.005\n\n_BUCKET_SIZE = (0.2, 0.2, 0.02)\n\n# Magnitude of the sparse reward.\n_SPARSE_REWARD = 1.0\n\n\nclass BallToss(composer.Task):\n  \"\"\"A task involving catching and throwing a ball.\"\"\"\n\n  def __init__(self, walker,\n               proto_modifier=None,\n               negative_reward_on_failure_termination=True,\n               priority_friction=False,\n               bucket_offset=1.,\n               y_range=0.5,\n               toss_delay=0.5,\n               randomize_init=False,\n              ):\n    \"\"\"Initialize ball tossing task.\n\n    Args:\n      walker: the walker to be used in this task.\n      proto_modifier: function to modify trajectory proto.\n      negative_reward_on_failure_termination: flag to provide negative reward\n        as task fails.\n      priority_friction: sets friction priority thereby making prop objects have\n        higher friction.\n      bucket_offset: distance in meters to push bucket (away from walker)\n      y_range: range (uniformly sampled) of distance in meters the ball is\n        thrown left/right of the walker.\n      toss_delay: time in seconds to delay after catching before changing reward\n        to encourage throwing the ball.\n      randomize_init: flag to randomize initial pose.\n    \"\"\"\n    self._proto_modifier = proto_modifier\n    self._negative_reward_on_failure_termination = (\n        negative_reward_on_failure_termination)\n    self._priority_friction = priority_friction\n    self._bucket_rewarded = False\n    self._bucket_offset = bucket_offset\n    self._y_range = y_range\n    self._toss_delay = toss_delay\n    self._randomize_init = randomize_init\n\n    # load a clip to grab a ball prop and initializations\n    loader = mocap_loader.HDF5TrajectoryLoader(\n        mocap_data.H5_PATH, trajectories.WarehouseTrajectory)\n    clip_number = 54\n    self._trajectory = loader.get_trajectory(\n        mocap_data.IDENTIFIER_TEMPLATE.format(clip_number))\n\n    # create the floor arena\n    self._arena = floors.Floor()\n\n    self._walker = walker\n    self._walker_geoms = tuple(self._walker.mjcf_model.find_all('geom'))\n    self._feet_geoms = (\n        walker.mjcf_model.find('body', 'lfoot').find_all('geom') +\n        walker.mjcf_model.find('body', 'rfoot').find_all('geom'))\n    self._lhand_geoms = (\n        walker.mjcf_model.find('body', 'lhand').find_all('geom'))\n    self._rhand_geoms = (\n        walker.mjcf_model.find('body', 'rhand').find_all('geom'))\n\n    # resize the humanoid based on the motion capture data subject\n    self._trajectory.configure_walkers([self._walker])\n    walker.create_root_joints(self._arena.attach(walker))\n\n    control_timestep = self._trajectory.dt\n    self.set_timesteps(control_timestep, _PHYSICS_TIMESTEP)\n\n    # build and attach the bucket to the arena\n    self._bucket = props.Bucket(_BUCKET_SIZE)\n    self._arena.attach(self._bucket)\n\n    self._prop = self._trajectory.create_props(\n        priority_friction=self._priority_friction)[0]\n    self._arena.add_free_entity(self._prop)\n\n    self._task_observables = collections.OrderedDict()\n\n    # define feature based observations (agent may or may not use these)\n    def ego_prop_xpos(physics):\n      prop_xpos, _ = self._prop.get_pose(physics)\n      walker_xpos = physics.bind(self._walker.root_body).xpos\n      return self._walker.transform_vec_to_egocentric_frame(\n          physics, prop_xpos - walker_xpos)\n    self._task_observables['prop_{}/xpos'.format(0)] = (\n        observable.Generic(ego_prop_xpos))\n\n    def prop_zaxis(physics):\n      prop_xmat = physics.bind(\n          mjcf.get_attachment_frame(self._prop.mjcf_model)).xmat\n      return prop_xmat[[2, 5, 8]]\n    self._task_observables['prop_{}/zaxis'.format(0)] = (\n        observable.Generic(prop_zaxis))\n\n    def ego_bucket_xpos(physics):\n      bucket_xpos, _ = self._bucket.get_pose(physics)\n      walker_xpos = physics.bind(self._walker.root_body).xpos\n      return self._walker.transform_vec_to_egocentric_frame(\n          physics, bucket_xpos - walker_xpos)\n    self._task_observables['bucket_{}/xpos'.format(0)] = (\n        observable.Generic(ego_bucket_xpos))\n\n    for obs in (self._walker.observables.proprioception +\n                self._walker.observables.kinematic_sensors +\n                self._walker.observables.dynamic_sensors +\n                list(self._task_observables.values())):\n      obs.enabled = True\n\n  @property\n  def root_entity(self):\n    return self._arena\n\n  @property\n  def task_observables(self):\n    return self._task_observables\n\n  @property\n  def name(self):\n    return 'ball_toss'\n\n  def initialize_episode_mjcf(self, random_state):\n    self._reward = 0.0\n    self._discount = 1.0\n    self._should_terminate = False\n\n    self._prop.detach()\n\n    if self._proto_modifier:\n      trajectory = self._trajectory.get_modified_trajectory(\n          self._proto_modifier)\n\n    self._prop = trajectory.create_props(\n        priority_friction=self._priority_friction)[0]\n    self._arena.add_free_entity(self._prop)\n\n    # set the bucket position for this episode\n    bucket_distance = 1.*random_state.rand()+self._bucket_offset\n    mjcf.get_attachment_frame(self._bucket.mjcf_model).pos = [bucket_distance,\n                                                              0, 0]\n\n  def initialize_episode(self, physics, random_state):\n    self._ground_geomid = physics.bind(\n        self._arena.mjcf_model.worldbody.geom[0]).element_id\n    self._feet_geomids = set(physics.bind(self._feet_geoms).element_id)\n    self._lhand_geomids = set(physics.bind(self._lhand_geoms).element_id)\n    self._rhand_geomids = set(physics.bind(self._rhand_geoms).element_id)\n    self._walker_geomids = set(physics.bind(self._walker_geoms).element_id)\n    self._bucket_rewarded = False\n\n    if self._randomize_init:\n      timestep_ind = random_state.randint(\n          len(self._trajectory._proto.timesteps))  # pylint: disable=protected-access\n    else:\n      timestep_ind = 0\n    walker_init_timestep = self._trajectory._proto.timesteps[timestep_ind]  # pylint: disable=protected-access\n    prop_init_timestep = self._trajectory._proto.timesteps[0]  # pylint: disable=protected-access\n\n    self._walker.set_pose(\n        physics,\n        position=walker_init_timestep.walkers[0].position,\n        quaternion=walker_init_timestep.walkers[0].quaternion)\n    self._walker.set_velocity(\n        physics, velocity=walker_init_timestep.walkers[0].velocity,\n        angular_velocity=walker_init_timestep.walkers[0].angular_velocity)\n    physics.bind(self._walker.mocap_joints).qpos = (\n        walker_init_timestep.walkers[0].joints)\n    physics.bind(self._walker.mocap_joints).qvel = (\n        walker_init_timestep.walkers[0].joints_velocity)\n\n    initial_prop_pos = np.copy(prop_init_timestep.props[0].position)\n    initial_prop_pos[0] += 1.  # move ball (from mocap) relative to origin\n    initial_prop_pos[1] = 0  # align ball with walker along y-axis\n    self._prop.set_pose(\n        physics,\n        position=initial_prop_pos,\n        quaternion=prop_init_timestep.props[0].quaternion)\n\n    # specify the distributions of ball velocity componentwise\n    x_vel_mag = 4.5*random_state.rand()+1.5  # m/s\n    x_dist = 3  # approximate initial distance from walker to ball\n    self._t_dist = x_dist/x_vel_mag  # target time at which to hit the humanoid\n    z_offset = .4*random_state.rand()+.1  # height at which to hit person\n    # compute velocity to satisfy desired projectile trajectory\n    z_vel_mag = (4.9*(self._t_dist**2) + z_offset)/self._t_dist\n\n    y_range = variation.evaluate(self._y_range, random_state=random_state)\n    y_vel_mag = y_range*random_state.rand()-y_range/2\n    trans_vel = [-x_vel_mag, y_vel_mag, z_vel_mag]\n    ang_vel = 1.5*random_state.rand(3)-0.75\n    self._prop.set_velocity(\n        physics,\n        velocity=trans_vel,\n        angular_velocity=ang_vel)\n\n  def after_step(self, physics, random_state):\n    # First we check for failure termination (walker or ball touches ground).\n    ground_failure = False\n    for contact in physics.data.contact:\n      if ((contact.geom1 == self._ground_geomid and\n           contact.geom2 not in self._feet_geomids) or\n          (contact.geom2 == self._ground_geomid and\n           contact.geom1 not in self._feet_geomids)):\n        ground_failure = True\n        break\n\n    contact_features = self._evaluate_contacts(physics)\n    prop_lhand, prop_rhand, bucket_prop, bucket_walker, walker_prop = contact_features\n\n    # or also fail if walker hits bucket\n    if ground_failure or bucket_walker:\n      if self._negative_reward_on_failure_termination:\n        self._reward = -_SPARSE_REWARD\n      else:\n        self._reward = 0.0\n      self._should_terminate = True\n      self._discount = 0.0\n      return\n\n    self._reward = 0.0\n    # give reward if prop is in bucket (prop touching bottom surface of bucket)\n    if bucket_prop:\n      self._reward += _SPARSE_REWARD/10\n\n    # shaping reward for being closer to bucket\n    if physics.data.time > (self._t_dist + self._toss_delay):\n      bucket_xy = physics.bind(self._bucket.geom).xpos[0][:2]\n      prop_xy = self._prop.get_pose(physics)[0][:2]\n      xy_dist = np.sum(np.array(np.abs(bucket_xy - prop_xy)))\n      self._reward += np.exp(-xy_dist/3.)*_SPARSE_REWARD/50\n    else:\n      # bonus for hands touching ball\n      if prop_lhand:\n        self._reward += _SPARSE_REWARD/100\n      if prop_rhand:\n        self._reward += _SPARSE_REWARD/100\n      # combined with penalty for other body parts touching the ball\n      if walker_prop:\n        self._reward -= _SPARSE_REWARD/100\n\n  def get_reward(self, physics):\n    return self._reward\n\n  def get_discount(self, physics):\n    return self._discount\n\n  def should_terminate_episode(self, physics):\n    return self._should_terminate\n\n  def _evaluate_contacts(self, physics):\n    prop_elem_id = physics.bind(self._prop.geom).element_id\n    bucket_bottom_elem_id = physics.bind(self._bucket.geom[0]).element_id\n    bucket_any_elem_id = set(physics.bind(self._bucket.geom).element_id)\n    prop_lhand_contact = False\n    prop_rhand_contact = False\n    bucket_prop_contact = False\n    bucket_walker_contact = False\n    walker_prop_contact = False\n\n    for contact in physics.data.contact:\n      has_prop = (contact.geom1 == prop_elem_id or\n                  contact.geom2 == prop_elem_id)\n      has_bucket_bottom = (contact.geom1 == bucket_bottom_elem_id or\n                           contact.geom2 == bucket_bottom_elem_id)\n      has_bucket_any = (contact.geom1 in bucket_any_elem_id or\n                        contact.geom2 in bucket_any_elem_id)\n      has_lhand = (contact.geom1 in self._lhand_geomids or\n                   contact.geom2 in self._lhand_geomids)\n      has_rhand = (contact.geom1 in self._rhand_geomids or\n                   contact.geom2 in self._rhand_geomids)\n      has_walker = (contact.geom1 in self._walker_geomids or\n                    contact.geom2 in self._walker_geomids)\n      if has_prop and has_bucket_bottom:\n        bucket_prop_contact = True\n      if has_walker and has_bucket_any:\n        bucket_walker_contact = True\n      if has_walker and has_prop:\n        walker_prop_contact = True\n      if has_prop and has_lhand:\n        prop_lhand_contact = True\n      if has_prop and has_rhand:\n        prop_rhand_contact = True\n\n    return (prop_lhand_contact, prop_rhand_contact, bucket_prop_contact,\n            bucket_walker_contact, walker_prop_contact)\n"
  },
  {
    "path": "catch_carry/explore.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Simple script to launch viewer with an example environment.\"\"\"\n\nfrom absl import app\nfrom absl import flags\nfrom dm_control import viewer\nfrom catch_carry import task_examples\n\nFLAGS = flags.FLAGS\nflags.DEFINE_enum('task', 'warehouse', ['warehouse', 'toss'],\n                  'The task to visualize.')\n\nTASKS = {\n    'warehouse': task_examples.build_vision_warehouse,\n    'toss': task_examples.build_vision_toss,\n}\n\n\ndef main(unused_argv):\n  viewer.launch(environment_loader=TASKS[FLAGS.task])\n\nif __name__ == '__main__':\n  app.run(main)\n\n"
  },
  {
    "path": "catch_carry/mocap_data.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Metadata for mocap clips that correspond to a walker carrying a prop.\"\"\"\n\nimport collections\nimport enum\nimport os\n\nfrom dm_control.locomotion.mocap import loader as mocap_loader\n\n\nfrom catch_carry import trajectories\n\nH5_DIR = os.path.dirname(__file__)\nH5_PATH = os.path.join(H5_DIR, 'mocap_data.h5')\n\nIDENTIFIER_PREFIX = 'DeepMindCatchCarry'\nIDENTIFIER_TEMPLATE = IDENTIFIER_PREFIX + '-{:03d}'\n\nClipInfo = collections.namedtuple(\n    'ClipInfo', ('clip_identifier', 'num_steps', 'dt', 'flags'))\n\n\nclass Flag(enum.IntEnum):\n  BOX = 1 << 0\n  BALL = 1 << 1\n  LIGHT_PROP = 1 << 2\n  HEAVY_PROP = 1 << 3\n  SMALL_PROP = 1 << 4\n  LARGE_PROP = 1 << 5\n  FLOOR_LEVEL = 1 << 6\n  MEDIUM_PEDESTAL = 1 << 7\n  HIGH_PEDESTAL = 1 << 8\n\n\n_ALL_CLIPS = None\n\n\ndef _get_clip_info(loader, clip_number, flags):\n  clip = loader.get_trajectory(IDENTIFIER_TEMPLATE.format(clip_number))\n  return ClipInfo(\n      clip_identifier=clip.identifier,\n      num_steps=clip.num_steps,\n      dt=clip.dt,\n      flags=flags)\n\n\ndef _get_all_clip_infos_if_necessary():\n  \"\"\"Creates the global _ALL_CLIPS list if it has not already been created.\"\"\"\n  global _ALL_CLIPS\n  if _ALL_CLIPS is None:\n    loader = mocap_loader.HDF5TrajectoryLoader(\n        H5_PATH, trajectories.WarehouseTrajectory)\n    clip_numbers = (1, 2, 3, 4, 5, 6, 9, 10,\n                    11, 12, 15, 16, 17, 18, 19, 20,\n                    21, 22, 23, 24, 25, 26, 27, 28,\n                    29, 30, 31, 32, 33, 34, 35, 36,\n                    37, 38, 39, 40, 42, 43, 44, 45,\n                    46, 47, 48, 49, 50, 51, 52, 53)\n\n    clip_infos = []\n    for i, clip_number in enumerate(clip_numbers):\n      flags = 0\n\n      if i in _FLOOR_LEVEL:\n        flags |= Flag.FLOOR_LEVEL\n      elif i in _MEDIUM_PEDESTAL:\n        flags |= Flag.MEDIUM_PEDESTAL\n      elif i in _HIGH_PEDESTAL:\n        flags |= Flag.HIGH_PEDESTAL\n\n      if i in _LIGHT_PROP:\n        flags |= Flag.LIGHT_PROP\n      elif i in _HEAVY_PROP:\n        flags |= Flag.HEAVY_PROP\n\n      if i in _SMALL_BOX:\n        flags |= Flag.SMALL_PROP\n        flags |= Flag.BOX\n      elif i in _LARGE_BOX:\n        flags |= Flag.LARGE_PROP\n        flags |= Flag.BOX\n      elif i in _SMALL_BALL:\n        flags |= Flag.SMALL_PROP\n        flags |= Flag.BALL\n      elif i in _LARGE_BALL:\n        flags |= Flag.LARGE_PROP\n        flags |= Flag.BALL\n      clip_infos.append(_get_clip_info(loader, clip_number, flags))\n\n    _ALL_CLIPS = tuple(clip_infos)\n\n\ndef _assert_partitions_all_clips(*args):\n  \"\"\"Asserts that a given set of subcollections partitions ALL_CLIPS.\"\"\"\n  sets = tuple(set(arg) for arg in args)\n\n  # Check that the union of all the sets is ALL_CLIPS.\n  union = set()\n  for subset in sets:\n    union = union | set(subset)\n  assert union == set(range(48))\n\n  # Check that the sets are pairwise disjoint.\n  for i in range(len(sets)):\n    for j in range(i + 1, len(sets)):\n      assert sets[i] & sets[j] == set()\n\n\n_FLOOR_LEVEL = tuple(range(0, 16))\n_MEDIUM_PEDESTAL = tuple(range(16, 32))\n_HIGH_PEDESTAL = tuple(range(32, 48))\n_assert_partitions_all_clips(_FLOOR_LEVEL, _MEDIUM_PEDESTAL, _HIGH_PEDESTAL)\n\n_LIGHT_PROP = (0, 1, 2, 3, 8, 9, 12, 13, 16, 17, 18, 19, 24,\n               25, 26, 27, 34, 35, 38, 39, 42, 43, 46, 47)\n_HEAVY_PROP = (4, 5, 6, 7, 10, 11, 14, 15, 20, 21, 22, 23, 28,\n               29, 30, 31, 32, 33, 36, 37, 40, 41, 44, 45)\n_assert_partitions_all_clips(_LIGHT_PROP, _HEAVY_PROP)\n\n_SMALL_BOX = (0, 1, 4, 5, 16, 17, 20, 21, 34, 35, 36, 37)\n_LARGE_BOX = (2, 3, 6, 7, 18, 19, 22, 23, 32, 33, 38, 39)\n_SMALL_BALL = (8, 9, 10, 11, 24, 25, 30, 31, 40, 41, 46, 47)\n_LARGE_BALL = (12, 13, 14, 15, 26, 27, 28, 29, 42, 43, 44, 45)\n_assert_partitions_all_clips(_SMALL_BOX, _LARGE_BOX, _SMALL_BALL, _LARGE_BALL)\n\n\ndef all_clips():\n  _get_all_clip_infos_if_necessary()\n  return _ALL_CLIPS\n\n\ndef floor_level():\n  clips = all_clips()\n  return tuple(clips[i] for i in _FLOOR_LEVEL)\n\n\ndef medium_pedestal():\n  clips = all_clips()\n  return tuple(clips[i] for i in _MEDIUM_PEDESTAL)\n\n\ndef high_pedestal():\n  clips = all_clips()\n  return tuple(clips[i] for i in _HIGH_PEDESTAL)\n\n\ndef light_prop():\n  clips = all_clips()\n  return tuple(clips[i] for i in _LIGHT_PROP)\n\n\ndef heavy_prop():\n  clips = all_clips()\n  return tuple(clips[i] for i in _HEAVY_PROP)\n\n\ndef small_box():\n  clips = all_clips()\n  return tuple(clips[i] for i in _SMALL_BOX)\n\n\ndef large_box():\n  clips = all_clips()\n  return tuple(clips[i] for i in _LARGE_BOX)\n\n\ndef small_ball():\n  clips = all_clips()\n  return tuple(clips[i] for i in _SMALL_BALL)\n\n\ndef large_ball():\n  clips = all_clips()\n  return tuple(clips[i] for i in _LARGE_BALL)\n"
  },
  {
    "path": "catch_carry/props.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"A rectangular pedestal.\"\"\"\n\nfrom dm_control import composer\nfrom dm_control import mjcf\n\n\nclass Pedestal(composer.Entity):\n  \"\"\"A rectangular pedestal.\"\"\"\n\n  def _build(self, size=(.2, .3, .05), rgba=(0, .5, 0, 1), name='pedestal'):\n    self._mjcf_root = mjcf.RootElement(model=name)\n    self._geom = self._mjcf_root.worldbody.add(\n        'geom', type='box', size=size, name='geom', rgba=rgba)\n\n  @property\n  def mjcf_model(self):\n    return self._mjcf_root\n\n  @property\n  def geom(self):\n    return self._geom\n\n  def after_compile(self, physics, unused_random_state):\n    super(Pedestal, self).after_compile(physics, unused_random_state)\n    self._body_geom_ids = set(\n        physics.bind(geom).element_id\n        for geom in self.mjcf_model.find_all('geom'))\n\n  @property\n  def body_geom_ids(self):\n    return self._body_geom_ids\n\n\nclass Bucket(composer.Entity):\n  \"\"\"A rectangular bucket.\"\"\"\n\n  def _build(self, size=(.2, .3, .05), rgba=(0, .5, 0, 1), name='pedestal'):\n    self._mjcf_root = mjcf.RootElement(model=name)\n    self._geoms = []\n    self._geoms.append(self._mjcf_root.worldbody.add(\n        'geom', type='box', size=size, name='geom_bottom', rgba=rgba))\n    self._geoms.append(self._mjcf_root.worldbody.add(\n        'geom', type='box', size=(size[2], size[1], size[0]), name='geom_s1',\n        rgba=rgba, pos=[size[0], 0, size[0]]))\n    self._geoms.append(self._mjcf_root.worldbody.add(\n        'geom', type='box', size=(size[2], size[1], size[0]), name='geom_s2',\n        rgba=rgba, pos=[-size[0], 0, size[0]]))\n    self._geoms.append(self._mjcf_root.worldbody.add(\n        'geom', type='box', size=(size[0], size[2], size[0]), name='geom_s3',\n        rgba=rgba, pos=[0, size[1], size[0]]))\n    self._geoms.append(self._mjcf_root.worldbody.add(\n        'geom', type='box', size=(size[0], size[2], size[0]), name='geom_s4',\n        rgba=rgba, pos=[0, -size[1], size[0]]))\n\n  @property\n  def mjcf_model(self):\n    return self._mjcf_root\n\n  @property\n  def geom(self):\n    return self._geoms\n\n  def after_compile(self, physics, unused_random_state):\n    super(Bucket, self).after_compile(physics, unused_random_state)\n    self._body_geom_ids = set(\n        physics.bind(geom).element_id\n        for geom in self.mjcf_model.find_all('geom'))\n\n  @property\n  def body_geom_ids(self):\n    return self._body_geom_ids\n\n"
  },
  {
    "path": "catch_carry/setup.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Setup for pip package.\"\"\"\n\nfrom setuptools import find_packages\nfrom setuptools import setup\n\n\nREQUIRED_PACKAGES = ['absl-py', 'dm_control', 'numpy']\n\nsetup(\n    name='catch_carry',\n    version='0.1',\n    description='Whole-body object manipulation tasks and motion capture data.',\n    url='https://github.com/deepmind/deepmind-research/catch_carry',\n    author='DeepMind',\n    author_email='stunya@google.com',\n    # Contained modules and scripts.\n    packages=find_packages(),\n    install_requires=REQUIRED_PACKAGES,\n    platforms=['any'],\n    license='Apache 2.0',\n)\n"
  },
  {
    "path": "catch_carry/task_examples.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Functions that build representative tasks.\"\"\"\n\nfrom dm_control import composer\nfrom dm_control.composer.variation import distributions\nfrom dm_control.locomotion.mocap import loader as mocap_loader\nfrom dm_control.locomotion.walkers import cmu_humanoid\n\nfrom catch_carry import ball_toss\nfrom catch_carry import warehouse\n\n\ndef build_vision_warehouse(random_state=None):\n  \"\"\"Build canonical 4-pedestal, 2-prop task.\"\"\"\n\n  # Build a position-controlled CMU humanoid walker.\n  walker = cmu_humanoid.CMUHumanoidPositionControlled(\n      observable_options={'egocentric_camera': dict(enabled=True)})\n\n  # Build the task.\n  size_distribution = distributions.Uniform(low=0.75, high=1.25)\n  mass_distribution = distributions.Uniform(low=2, high=7)\n  prop_resizer = mocap_loader.PropResizer(size_factor=size_distribution,\n                                          mass=mass_distribution)\n  task = warehouse.PhasedBoxCarry(\n      walker=walker,\n      num_props=2,\n      num_pedestals=4,\n      proto_modifier=prop_resizer,\n      negative_reward_on_failure_termination=True)\n\n  # return the environment\n  return composer.Environment(\n      time_limit=15,\n      task=task,\n      random_state=random_state,\n      strip_singleton_obs_buffer_dim=True,\n      max_reset_attempts=float('inf'))\n\n\ndef build_vision_toss(random_state=None):\n  \"\"\"Build canonical ball tossing task.\"\"\"\n\n  # Build a position-controlled CMU humanoid walker.\n  walker = cmu_humanoid.CMUHumanoidPositionControlled(\n      observable_options={'egocentric_camera': dict(enabled=True)})\n\n  # Build the task.\n  size_distribution = distributions.Uniform(low=0.95, high=1.5)\n  mass_distribution = distributions.Uniform(low=2, high=4)\n  prop_resizer = mocap_loader.PropResizer(size_factor=size_distribution,\n                                          mass=mass_distribution)\n  task = ball_toss.BallToss(\n      walker=walker,\n      proto_modifier=prop_resizer,\n      negative_reward_on_failure_termination=True,\n      priority_friction=True,\n      bucket_offset=3.,\n      y_range=0.5,\n      toss_delay=1.5,\n      randomize_init=True)\n\n  # return the environment\n  return composer.Environment(\n      time_limit=6,\n      task=task,\n      random_state=random_state,\n      strip_singleton_obs_buffer_dim=True,\n      max_reset_attempts=float('inf'))\n"
  },
  {
    "path": "catch_carry/trajectories.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Mocap trajectory that assumes props start stationary on pedestals.\"\"\"\n\nimport copy\nimport enum\nimport itertools\n\nfrom dm_control.locomotion.mocap import mocap_pb2\nfrom dm_control.locomotion.mocap import trajectory\nfrom dm_control.utils import transformations\nimport numpy as np\n\n_PEDESTAL_SIZE = (0.2, 0.2, 0.02)\n_MAX_SETTLE_STEPS = 100\n\n\n@enum.unique\nclass ClipSegment(enum.Enum):\n  \"\"\"Annotations for subsegments within a warehouse clips.\"\"\"\n\n  # Clip segment corresponding to a walker approaching an object\n  APPROACH = 1\n\n  # Clip segment corresponding to a walker picking up an object.\n  PICKUP = 2\n\n  # Clip segment corresponding to the \"first half\" of the walker carrying an\n  # object, beginning from the walker backing away from a pedestal with\n  # object in hand.\n  CARRY1 = 3\n\n  # Clip segment corresponding to the \"second half\" of the walker carrying an\n  # object, ending in the walker approaching a pedestal the object in hand.\n  CARRY2 = 4\n\n  # Clip segment corresponding to a walker putting down an object on a pedestal.\n  PUTDOWN = 5\n\n  # Clip segment corresponding to a walker backing off after successfully\n  # placing an object on a pedestal.\n  BACKOFF = 6\n\n\ndef _get_rotated_bounding_box(size, quaternion):\n  \"\"\"Calculates the bounding box of a rotated 3D box.\n\n  Args:\n    size: An array of length 3 specifying the half-lengths of a box.\n    quaternion: A unit quaternion specifying the box's orientation.\n\n  Returns:\n    An array of length 3 specifying the half-lengths of the bounding box of\n    the rotated box.\n  \"\"\"\n  corners = ((size[0], size[1], size[2]),\n             (size[0], size[1], -size[2]),\n             (size[0], -size[1], size[2]),\n             (-size[0], size[1], size[2]))\n  rotated_corners = tuple(\n      transformations.quat_rotate(quaternion, corner) for corner in corners)\n  return np.amax(np.abs(rotated_corners), axis=0)\n\n\ndef _get_prop_z_extent(prop_proto, quaternion):\n  \"\"\"Calculates the \"z-extent\" of the prop in given orientation.\n\n  This is the distance from the centre of the prop to its lowest point in the\n  world frame, taking into account the prop's orientation.\n\n  Args:\n    prop_proto: A `mocap_pb2.Prop` protocol buffer defining a prop.\n    quaternion: A unit quaternion specifying the prop's orientation.\n\n  Returns:\n    the distance from the centre of the prop to its lowest point in the\n    world frame in the specified orientation.\n  \"\"\"\n  if prop_proto.shape == mocap_pb2.Prop.BOX:\n    return _get_rotated_bounding_box(prop_proto.size, quaternion)[2]\n  elif prop_proto.shape == mocap_pb2.Prop.SPHERE:\n    return prop_proto.size[0]\n  else:\n    raise NotImplementedError(\n        'Unsupported prop shape: {}'.format(prop_proto.shape))\n\n\nclass WarehouseTrajectory(trajectory.Trajectory):\n  \"\"\"Mocap trajectory that assumes props start stationary on pedestals.\"\"\"\n\n  def infer_pedestal_positions(self, num_averaged_steps=30,\n                               ground_height_tolerance=0.1,\n                               proto_modifier=None):\n    proto = self._proto\n    if proto_modifier is not None:\n      proto = copy.copy(proto)\n      proto_modifier(proto)\n\n    if not proto.props:\n      return []\n\n    positions = []\n    for timestep in itertools.islice(proto.timesteps, num_averaged_steps):\n      positions_for_timestep = []\n      for prop_proto, prop_timestep in zip(proto.props, timestep.props):\n        z_extent = _get_prop_z_extent(prop_proto, prop_timestep.quaternion)\n        positions_for_timestep.append([prop_timestep.position[0],\n                                       prop_timestep.position[1],\n                                       prop_timestep.position[2] - z_extent])\n      positions.append(positions_for_timestep)\n\n    median_positions = np.median(positions, axis=0)\n    median_positions[:, 2][median_positions[:, 2] < ground_height_tolerance] = 0\n    return median_positions\n\n  def get_props_z_extent(self, physics):\n    timestep = self._proto.timesteps[self._get_step_id(physics.time())]\n    out = []\n    for prop_proto, prop_timestep in zip(self._proto.props, timestep.props):\n      z_extent = _get_prop_z_extent(prop_proto, prop_timestep.quaternion)\n      out.append(z_extent)\n    return out\n\n\nclass SinglePropCarrySegmentedTrajectory(WarehouseTrajectory):\n  \"\"\"A mocap trajectory class that automatically segments prop-carry clips.\n\n  The algorithm implemented in the class only works if the trajectory consists\n  of exactly one walker and one prop. The value of `pedestal_zone_distance`\n  the exact nature of zone crossings are determined empirically from the\n  DeepMindCatchCarry dataset, and are likely to not work well outside of this\n  setting.\n  \"\"\"\n\n  def __init__(self,\n               proto,\n               start_time=None,\n               end_time=None,\n               pedestal_zone_distance=0.65,\n               start_step=None,\n               end_step=None,\n               zero_out_velocities=True):\n    super(SinglePropCarrySegmentedTrajectory, self).__init__(\n        proto, start_time, end_time, start_step=start_step, end_step=end_step,\n        zero_out_velocities=zero_out_velocities)\n    self._pedestal_zone_distance = pedestal_zone_distance\n    self._generate_segments()\n\n  def _generate_segments(self):\n    pedestal_position = self.infer_pedestal_positions()[0]\n\n    # First we find the timesteps at which the walker cross the pedestal's\n    # vicinity zone. This should happen exactly 4 times: enter it to pick up,\n    # leave it, enter it again to put down, and leave it again.\n    was_in_pedestal_zone = False\n    crossings = []\n    for i, timestep in enumerate(self._proto.timesteps):\n      pedestal_dist = np.linalg.norm(\n          timestep.walkers[0].position[:2] - pedestal_position[:2])\n      if pedestal_dist > self._pedestal_zone_distance and was_in_pedestal_zone:\n        crossings.append(i)\n        was_in_pedestal_zone = False\n      elif (pedestal_dist <= self._pedestal_zone_distance and\n            not was_in_pedestal_zone):\n        crossings.append(i)\n        was_in_pedestal_zone = True\n    if len(crossings) < 3:\n      raise RuntimeError(\n          'Failed to segment the given trajectory: '\n          'walker should cross the pedestal zone\\'s boundary >= 3 times '\n          'but got {}'.format(len(crossings)))\n    elif len(crossings) == 3:\n      crossings.append(len(self._proto.timesteps) - 1)\n    elif len(crossings) > 4:\n      crossings = [crossings[0], crossings[1], crossings[-2], crossings[-1]]\n\n    # Identify the pick up event during the first in-zone interval.\n    start_position = np.array(self._proto.timesteps[0].props[0].position)\n    end_position = np.array(self._proto.timesteps[-1].props[0].position)\n    pick_up_step = crossings[1] - 1\n    while pick_up_step > crossings[0]:\n      prev_position = self._proto.timesteps[pick_up_step - 1].props[0].position\n      if np.linalg.norm(start_position[2] - prev_position[2]) < 0.001:\n        break\n      pick_up_step -= 1\n\n    # Identify the put down event during the second in-zone interval.\n    put_down_step = crossings[2]\n    while put_down_step <= crossings[3]:\n      next_position = self._proto.timesteps[put_down_step + 1].props[0].position\n      if np.linalg.norm(end_position[2] - next_position[2]) < 0.001:\n        break\n      put_down_step += 1\n\n    carry_halfway_step = int((crossings[1] + crossings[2]) / 2)\n\n    self._segment_intervals = {\n        ClipSegment.APPROACH: (0, crossings[0]),\n        ClipSegment.PICKUP: (crossings[0], pick_up_step),\n        ClipSegment.CARRY1: (pick_up_step, carry_halfway_step),\n        ClipSegment.CARRY2: (carry_halfway_step, crossings[2]),\n        ClipSegment.PUTDOWN: (crossings[2], put_down_step),\n        ClipSegment.BACKOFF: (put_down_step, len(self._proto.timesteps))\n    }\n\n  def segment_interval(self, segment):\n    start_step, end_step = self._segment_intervals[segment]\n    return (start_step * self._proto.dt, (end_step - 1) * self._proto.dt)\n\n  def get_random_timestep_in_segment(self, segment, random_step):\n    return self._proto.timesteps[\n        random_step.randint(*self._segment_intervals[segment])]\n\n"
  },
  {
    "path": "catch_carry/warehouse.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"A prop-carry task that transition between multiple phases.\"\"\"\n\nimport collections\nimport colorsys\nimport enum\n\nfrom absl import logging\nfrom dm_control import composer\nfrom dm_control import mjcf\nfrom dm_control.composer.observation import observable\nfrom dm_control.locomotion.arenas import floors\nfrom dm_control.locomotion.mocap import loader as mocap_loader\nfrom dm_control.mujoco.wrapper import mjbindings\nimport numpy as np\n\nfrom catch_carry import arm_opener\nfrom catch_carry import mocap_data\nfrom catch_carry import props\nfrom catch_carry import trajectories\n\n_PHYSICS_TIMESTEP = 0.005\n\n# Maximum number of physics steps to run when settling props onto pedestals\n# during episode initialization.\n_MAX_SETTLE_STEPS = 1000\n\n# Maximum velocity for prop to be considered settled.\n# Used during episode initialization only.\n_SETTLE_QVEL_TOL = 1e-5\n\n# Magnitude of the sparse reward.\n_SPARSE_REWARD = 1.0\n\n# Maximum distance for walkers to be considered to be \"near\" a pedestal/target.\n_TARGET_TOL = 0.65\n\n# Defines how pedestals are placed around the arena.\n# Pedestals are placed at constant angle intervals around the arena's center.\n_BASE_PEDESTAL_DIST = 3  # Base distance from center.\n_PEDESTAL_DIST_DELTA = 0.5  # Maximum variation on the base distance.\n\n# Base hue-luminosity-saturation of the pedestal colors.\n# We rotate through the hue for each pedestal created in the environment.\n_BASE_PEDESTAL_H = 0.1\n_BASE_PEDESTAL_L = 0.3\n_BASE_PEDESTAL_S = 0.7\n\n# Pedestal luminosity when active.\n_ACTIVATED_PEDESTAL_L = 0.8\n\n_PEDESTAL_SIZE = (0.2, 0.2, 0.02)\n\n_SINGLE_PEDESTAL_COLOR = colorsys.hls_to_rgb(.3, .15, .35) + (1.0,)\n\nWALKER_PEDESTAL = 'walker_pedestal'\nWALKER_PROP = 'walker_prop'\nPROP_PEDESTAL = 'prop_pedestal'\nTARGET_STATE = 'target_state/'\nCURRENT_STATE = 'meta/current_state/'\n\n\ndef _is_same_state(state_1, state_2):\n  if state_1.keys() != state_2.keys():\n    return False\n  for k in state_1:\n    if not np.all(state_1[k] == state_2[k]):\n      return False\n  return True\n\n\ndef _singleton_or_none(iterable):\n  iterator = iter(iterable)\n  try:\n    return next(iterator)\n  except StopIteration:\n    return None\n\n\ndef _generate_pedestal_colors(num_pedestals):\n  \"\"\"Function to get colors for pedestals.\"\"\"\n  colors = []\n  for i in range(num_pedestals):\n    h = _BASE_PEDESTAL_H + i / num_pedestals\n    while h > 1:\n      h -= 1\n    colors.append(\n        colorsys.hls_to_rgb(h, _BASE_PEDESTAL_L, _BASE_PEDESTAL_S) + (1.0,))\n  return colors\n\n\nInitializationParameters = collections.namedtuple(\n    'InitializationParameters', ('clip_segment', 'prop_id', 'pedestal_id'))\n\n\ndef _rotate_vector_by_quaternion(vec, quat):\n  result = np.empty(3)\n  mjbindings.mjlib.mju_rotVecQuat(result, np.asarray(vec), np.asarray(quat))\n  return result\n\n\n@enum.unique\nclass WarehousePhase(enum.Enum):\n  TERMINATED = 0\n  GOTOTARGET = 1\n  PICKUP = 2\n  CARRYTOTARGET = 3\n  PUTDOWN = 4\n\n\ndef _find_random_free_pedestal_id(target_state, random_state):\n  free_pedestals = (\n      np.where(np.logical_not(np.any(target_state, axis=0)))[0])\n  return random_state.choice(free_pedestals)\n\n\ndef _find_random_occupied_pedestal_id(target_state, random_state):\n  occupied_pedestals = (\n      np.where(np.any(target_state, axis=0))[0])\n  return random_state.choice(occupied_pedestals)\n\n\ndef one_hot(values, num_unique):\n  return np.squeeze(np.eye(num_unique)[np.array(values).reshape(-1)])\n\n\nclass SinglePropFourPhases(object):\n  \"\"\"A phase manager that transitions between four phases for a single prop.\"\"\"\n\n  def __init__(self, fixed_initialization_phase=None):\n    self._phase = WarehousePhase.TERMINATED\n    self._fixed_initialization_phase = fixed_initialization_phase\n\n  def initialize_episode(self, target_state, random_state):\n    \"\"\"Randomly initializes an episode into one of the four phases.\"\"\"\n\n    if self._fixed_initialization_phase is None:\n      self._phase = random_state.choice([\n          WarehousePhase.GOTOTARGET, WarehousePhase.PICKUP,\n          WarehousePhase.CARRYTOTARGET, WarehousePhase.PUTDOWN\n      ])\n    else:\n      self._phase = self._fixed_initialization_phase\n    self._prop_id = random_state.randint(len(target_state[PROP_PEDESTAL]))\n    self._pedestal_id = np.nonzero(\n        target_state[PROP_PEDESTAL][self._prop_id])[0][0]\n    pedestal_id_for_initialization = self._pedestal_id\n\n    if self._phase == WarehousePhase.GOTOTARGET:\n      clip_segment = trajectories.ClipSegment.APPROACH\n      target_state[WALKER_PROP][:] = 0\n      target_state[WALKER_PEDESTAL][self._pedestal_id] = 1\n    elif self._phase == WarehousePhase.PICKUP:\n      clip_segment = trajectories.ClipSegment.PICKUP\n      target_state[WALKER_PROP][self._prop_id] = 1\n      target_state[WALKER_PEDESTAL][self._pedestal_id] = 1\n      # Set self._pedestal_id to the next pedestal after pickup is successful.\n      self._pedestal_id = _find_random_free_pedestal_id(\n          target_state[PROP_PEDESTAL], random_state)\n      target_state[PROP_PEDESTAL][self._prop_id, :] = 0\n    elif self._phase == WarehousePhase.CARRYTOTARGET:\n      clip_segment = random_state.choice([\n          trajectories.ClipSegment.CARRY1, trajectories.ClipSegment.CARRY2])\n      self._pedestal_id = _find_random_free_pedestal_id(\n          target_state[PROP_PEDESTAL], random_state)\n      if clip_segment == trajectories.ClipSegment.CARRY2:\n        pedestal_id_for_initialization = self._pedestal_id\n      target_state[WALKER_PROP][self._prop_id] = 1\n      target_state[WALKER_PEDESTAL][self._pedestal_id] = 1\n      target_state[PROP_PEDESTAL][self._prop_id, :] = 0\n    elif self._phase == WarehousePhase.PUTDOWN:\n      clip_segment = trajectories.ClipSegment.PUTDOWN\n      target_state[WALKER_PROP][:] = 0\n      target_state[WALKER_PEDESTAL][self._pedestal_id] = 1\n\n    return InitializationParameters(\n        clip_segment, self._prop_id, pedestal_id_for_initialization)\n\n  def on_success(self, target_state, random_state):\n    \"\"\"Transitions into the next phase upon success of current phase.\"\"\"\n    if self._phase == WarehousePhase.GOTOTARGET:\n      if self._prop_id is not None:\n        self._phase = WarehousePhase.PICKUP\n        # Set self._pedestal_id to the next pedestal after pickup is successful.\n        self._pedestal_id = (\n            _find_random_free_pedestal_id(\n                target_state[PROP_PEDESTAL], random_state))\n        target_state[WALKER_PROP][self._prop_id] = 1\n        target_state[PROP_PEDESTAL][self._prop_id, :] = 0\n      else:\n        # If you go to an empty pedestal, go to pedestal with a prop.\n        self._pedestal_id = (\n            _find_random_occupied_pedestal_id(\n                target_state[PROP_PEDESTAL], random_state))\n        target_state[WALKER_PEDESTAL][:] = 0\n        target_state[WALKER_PEDESTAL][self._pedestal_id] = 1\n        self._prop_id = np.argwhere(\n            target_state[PROP_PEDESTAL][:, self._pedestal_id])[0, 0]\n    elif self._phase == WarehousePhase.PICKUP:\n      self._phase = WarehousePhase.CARRYTOTARGET\n      target_state[WALKER_PEDESTAL][:] = 0\n      target_state[WALKER_PEDESTAL][self._pedestal_id] = 1\n    elif self._phase == WarehousePhase.CARRYTOTARGET:\n      self._phase = WarehousePhase.PUTDOWN\n      target_state[WALKER_PROP][:] = 0\n      target_state[PROP_PEDESTAL][self._prop_id, self._pedestal_id] = 1\n    elif self._phase == WarehousePhase.PUTDOWN:\n      self._phase = WarehousePhase.GOTOTARGET\n      # Set self._pedestal_id to the next pedestal after putdown is successful.\n      self._pedestal_id = (\n          _find_random_free_pedestal_id(\n              target_state[PROP_PEDESTAL], random_state))\n      self._prop_id = None\n      target_state[WALKER_PEDESTAL][:] = 0\n      target_state[WALKER_PEDESTAL][self._pedestal_id] = 1\n    return self._phase\n\n  @property\n  def phase(self):\n    return self._phase\n\n  @property\n  def prop_id(self):\n    return self._prop_id\n\n  @property\n  def pedestal_id(self):\n    return self._pedestal_id\n\n\nclass PhasedBoxCarry(composer.Task):\n  \"\"\"A prop-carry task that transitions between multiple phases.\"\"\"\n\n  def __init__(\n      self,\n      walker,\n      num_props,\n      num_pedestals,\n      proto_modifier=None,\n      transition_class=SinglePropFourPhases,\n      min_prop_gap=0.05,\n      pedestal_height_range=(0.45, 0.75),\n      log_transitions=False,\n      negative_reward_on_failure_termination=True,\n      use_single_pedestal_color=True,\n      priority_friction=False,\n      fixed_initialization_phase=None):\n    \"\"\"Initialize phased/instructed box-carrying (\"warehouse\") task.\n\n    Args:\n      walker: the walker to be used in this task.\n      num_props: the number of props in the task scene.\n      num_pedestals: the number of floating shelves (pedestals) in the task\n        scene.\n      proto_modifier: function to modify trajectory proto.\n      transition_class: the object that handles the transition logic.\n      min_prop_gap: arms are automatically opened to leave a gap around the prop\n        to avoid problematic collisions upon initialization.\n      pedestal_height_range: range of heights for the pedestal.\n      log_transitions: logging/printing of transitions.\n      negative_reward_on_failure_termination: boolean for whether to provide\n        negative sparse rewards on failure termination.\n      use_single_pedestal_color: boolean option for pedestals being the same\n        color or different colors.\n      priority_friction: sets friction priority thereby making prop objects have\n        higher friction.\n      fixed_initialization_phase: an instance of the `WarehousePhase` enum that\n        specifies the phase in which to always initialize the task, or `None` if\n        the initial task phase should be chosen randomly for each episode.\n    \"\"\"\n    self._num_props = num_props\n    self._num_pedestals = num_pedestals\n    self._proto_modifier = proto_modifier\n    self._transition_manager = transition_class(\n        fixed_initialization_phase=fixed_initialization_phase)\n    self._min_prop_gap = min_prop_gap\n    self._pedestal_height_range = pedestal_height_range\n    self._log_transitions = log_transitions\n    self._target_state = collections.OrderedDict([\n        (WALKER_PEDESTAL, np.zeros(num_pedestals)),\n        (WALKER_PROP, np.zeros(num_props)),\n        (PROP_PEDESTAL, np.zeros([num_props, num_pedestals]))\n    ])\n    self._current_state = collections.OrderedDict([\n        (WALKER_PEDESTAL, np.zeros(num_pedestals)),\n        (WALKER_PROP, np.zeros(num_props)),\n        (PROP_PEDESTAL, np.zeros([num_props, num_pedestals]))\n    ])\n    self._negative_reward_on_failure_termination = (\n        negative_reward_on_failure_termination)\n    self._priority_friction = priority_friction\n\n    clips = sorted(\n        set(mocap_data.medium_pedestal())\n        & (set(mocap_data.small_box()) | set(mocap_data.large_box())))\n    loader = mocap_loader.HDF5TrajectoryLoader(\n        mocap_data.H5_PATH, trajectories.SinglePropCarrySegmentedTrajectory)\n    self._trajectories = [\n        loader.get_trajectory(clip.clip_identifier) for clip in clips]\n\n    self._arena = floors.Floor()\n\n    self._walker = walker\n    self._feet_geoms = (\n        walker.mjcf_model.find('body', 'lfoot').find_all('geom') +\n        walker.mjcf_model.find('body', 'rfoot').find_all('geom'))\n    self._lhand_geoms = (\n        walker.mjcf_model.find('body', 'lhand').find_all('geom'))\n    self._rhand_geoms = (\n        walker.mjcf_model.find('body', 'rhand').find_all('geom'))\n    self._trajectories[0].configure_walkers([self._walker])\n    walker.create_root_joints(self._arena.attach(walker))\n\n    control_timestep = self._trajectories[0].dt\n    for i, trajectory in enumerate(self._trajectories):\n      if trajectory.dt != control_timestep:\n        raise ValueError(\n            'Inconsistent control timestep: '\n            'trajectories[{}].dt == {} but trajectories[0].dt == {}'\n            .format(i, trajectory.dt, control_timestep))\n    self.set_timesteps(control_timestep, _PHYSICS_TIMESTEP)\n\n    if use_single_pedestal_color:\n      self._pedestal_colors = [_SINGLE_PEDESTAL_COLOR] * num_pedestals\n    else:\n      self._pedestal_colors = _generate_pedestal_colors(num_pedestals)\n    self._pedestals = [props.Pedestal(_PEDESTAL_SIZE, rgba)\n                       for rgba in self._pedestal_colors]\n    for pedestal in self._pedestals:\n      self._arena.attach(pedestal)\n\n    self._props = [\n        self._trajectories[0].create_props(\n            priority_friction=self._priority_friction)[0]\n        for _ in range(num_props)\n    ]\n    for prop in self._props:\n      self._arena.add_free_entity(prop)\n\n    self._task_observables = collections.OrderedDict()\n\n    self._task_observables['target_phase'] = observable.Generic(\n        lambda _: one_hot(self._transition_manager.phase.value, num_unique=5))\n\n    def ego_prop_xpos(physics):\n      prop_id = self._focal_prop_id\n      if prop_id is None:\n        return np.zeros((3,))\n      prop = self._props[prop_id]\n      prop_xpos, _ = prop.get_pose(physics)\n      walker_xpos = physics.bind(self._walker.root_body).xpos\n      return self._walker.transform_vec_to_egocentric_frame(\n          physics, prop_xpos - walker_xpos)\n    self._task_observables['target_prop/xpos'] = (\n        observable.Generic(ego_prop_xpos))\n\n    def prop_zaxis(physics):\n      prop_id = self._focal_prop_id\n      if prop_id is None:\n        return np.zeros((3,))\n      prop = self._props[prop_id]\n      prop_xmat = physics.bind(\n          mjcf.get_attachment_frame(prop.mjcf_model)).xmat\n      return prop_xmat[[2, 5, 8]]\n    self._task_observables['target_prop/zaxis'] = (\n        observable.Generic(prop_zaxis))\n\n    def ego_pedestal_xpos(physics):\n      pedestal_id = self._focal_pedestal_id\n      if pedestal_id is None:\n        return np.zeros((3,))\n      pedestal = self._pedestals[pedestal_id]\n      pedestal_xpos, _ = pedestal.get_pose(physics)\n      walker_xpos = physics.bind(self._walker.root_body).xpos\n      return self._walker.transform_vec_to_egocentric_frame(\n          physics, pedestal_xpos - walker_xpos)\n    self._task_observables['target_pedestal/xpos'] = (\n        observable.Generic(ego_pedestal_xpos))\n\n    for obs in (self._walker.observables.proprioception +\n                self._walker.observables.kinematic_sensors +\n                self._walker.observables.dynamic_sensors +\n                list(self._task_observables.values())):\n      obs.enabled = True\n\n    self._focal_prop_id = None\n    self._focal_pedestal_id = None\n\n  @property\n  def root_entity(self):\n    return self._arena\n\n  @property\n  def task_observables(self):\n    return self._task_observables\n\n  @property\n  def name(self):\n    return 'warehouse'\n\n  def initialize_episode_mjcf(self, random_state):\n    self._reward = 0.0\n    self._discount = 1.0\n    self._should_terminate = False\n    self._before_step_success = False\n    for target_value in self._target_state.values():\n      target_value[:] = 0\n    for pedestal_id, pedestal in enumerate(self._pedestals):\n      angle = 2 * np.pi * pedestal_id / len(self._pedestals)\n      dist = (_BASE_PEDESTAL_DIST +\n              _PEDESTAL_DIST_DELTA * random_state.uniform(-1, 1))\n\n      height = random_state.uniform(*self._pedestal_height_range)\n      pedestal_pos = [dist * np.cos(angle), dist * np.sin(angle),\n                      height - pedestal.geom.size[2]]\n      mjcf.get_attachment_frame(pedestal.mjcf_model).pos = pedestal_pos\n\n    for prop in self._props:\n      prop.detach()\n    self._props = []\n    self._trajectory_for_prop = []\n\n    for prop_id in range(self._num_props):\n      trajectory = random_state.choice(self._trajectories)\n      if self._proto_modifier:\n        trajectory = trajectory.get_modified_trajectory(\n            self._proto_modifier, random_state=random_state)\n      prop = trajectory.create_props(\n          priority_friction=self._priority_friction)[0]\n      prop.mjcf_model.model = 'prop_{}'.format(prop_id)\n      self._arena.add_free_entity(prop)\n      self._props.append(prop)\n      self._trajectory_for_prop.append(trajectory)\n\n  def _settle_props(self, physics):\n    prop_freejoints = [mjcf.get_attachment_frame(prop.mjcf_model).freejoint\n                       for prop in self._props]\n    physics.bind(prop_freejoints).qvel = 0\n    physics.forward()\n    for _ in range(_MAX_SETTLE_STEPS):\n      self._update_current_state(physics)\n      success = self._evaluate_target_state()\n      stopped = max(abs(physics.bind(prop_freejoints).qvel)) < _SETTLE_QVEL_TOL\n      if success and stopped:\n        break\n      else:\n        physics.step()\n    physics.data.time = 0\n\n  def initialize_episode(self, physics, random_state):\n    self._ground_geomid = physics.bind(\n        self._arena.mjcf_model.worldbody.geom[0]).element_id\n    self._feet_geomids = set(physics.bind(self._feet_geoms).element_id)\n    self._lhand_geomids = set(physics.bind(self._lhand_geoms).element_id)\n    self._rhand_geomids = set(physics.bind(self._rhand_geoms).element_id)\n\n    for prop_id in range(len(self._props)):\n      pedestal_id = _find_random_free_pedestal_id(\n          self._target_state[PROP_PEDESTAL], random_state)\n      pedestal = self._pedestals[pedestal_id]\n      self._target_state[PROP_PEDESTAL][prop_id, pedestal_id] = 1\n\n    for prop_id, prop in enumerate(self._props):\n      trajectory = self._trajectory_for_prop[prop_id]\n      pedestal_id = np.nonzero(\n          self._target_state[PROP_PEDESTAL][prop_id])[0][0]\n      pedestal = self._pedestals[pedestal_id]\n      pedestal_pos, _ = pedestal.get_pose(physics)\n      pedestal_delta = np.array(\n          pedestal_pos - trajectory.infer_pedestal_positions()[0])\n      pedestal_delta[2] += pedestal.geom.size[2]\n      prop_timestep = trajectory.get_timestep_data(0).props[0]\n      prop_pos = prop_timestep.position + np.array(pedestal_delta)\n      prop_quat = prop_timestep.quaternion\n      prop_pos[:2] += random_state.uniform(\n          -pedestal.geom.size[:2] / 2, pedestal.geom.size[:2] / 2)\n      prop.set_pose(physics, prop_pos, prop_quat)\n    self._settle_props(physics)\n\n    init_params = self._transition_manager.initialize_episode(\n        self._target_state, random_state)\n    if self._log_transitions:\n      logging.info(init_params)\n    self._on_transition(physics)\n\n    init_prop = self._props[init_params.prop_id]\n    init_pedestal = self._pedestals[init_params.pedestal_id]\n    self._init_prop_id = init_params.prop_id\n    self._init_pedestal_id = init_params.pedestal_id\n    init_trajectory = self._trajectory_for_prop[init_params.prop_id]\n    init_timestep = init_trajectory.get_random_timestep_in_segment(\n        init_params.clip_segment, random_state)\n\n    trajectory_pedestal_pos = init_trajectory.infer_pedestal_positions()[0]\n    init_pedestal_pos = np.array(init_pedestal.get_pose(physics)[0])\n    delta_pos = init_pedestal_pos - trajectory_pedestal_pos\n    delta_pos[2] = 0\n    delta_angle = np.pi + np.arctan2(init_pedestal_pos[1], init_pedestal_pos[0])\n    delta_quat = (np.cos(delta_angle / 2), 0, 0, np.sin(delta_angle / 2))\n\n    trajectory_pedestal_to_walker = (\n        init_timestep.walkers[0].position - trajectory_pedestal_pos)\n    rotated_pedestal_to_walker = _rotate_vector_by_quaternion(\n        trajectory_pedestal_to_walker, delta_quat)\n\n    self._walker.set_pose(\n        physics,\n        position=trajectory_pedestal_pos + rotated_pedestal_to_walker,\n        quaternion=init_timestep.walkers[0].quaternion)\n    self._walker.set_velocity(\n        physics, velocity=init_timestep.walkers[0].velocity,\n        angular_velocity=init_timestep.walkers[0].angular_velocity)\n    self._walker.shift_pose(\n        physics, position=delta_pos, quaternion=delta_quat,\n        rotate_velocity=True)\n    physics.bind(self._walker.mocap_joints).qpos = (\n        init_timestep.walkers[0].joints)\n    physics.bind(self._walker.mocap_joints).qvel = (\n        init_timestep.walkers[0].joints_velocity)\n\n    if init_params.clip_segment in (trajectories.ClipSegment.CARRY1,\n                                    trajectories.ClipSegment.CARRY2,\n                                    trajectories.ClipSegment.PUTDOWN):\n      trajectory_pedestal_to_prop = (\n          init_timestep.props[0].position - trajectory_pedestal_pos)\n      rotated_pedestal_to_prop = _rotate_vector_by_quaternion(\n          trajectory_pedestal_to_prop, delta_quat)\n      init_prop.set_pose(\n          physics,\n          position=trajectory_pedestal_pos + rotated_pedestal_to_prop,\n          quaternion=init_timestep.props[0].quaternion)\n      init_prop.set_velocity(\n          physics, velocity=init_timestep.props[0].velocity,\n          angular_velocity=init_timestep.props[0].angular_velocity)\n      init_prop.shift_pose(\n          physics, position=delta_pos,\n          quaternion=delta_quat, rotate_velocity=True)\n\n      # If we have moved the pedestal upwards during height initialization,\n      # the prop may now be lodged inside it. We fix that here.\n      if init_pedestal_pos[2] > trajectory_pedestal_pos[2]:\n        init_prop_geomid = physics.bind(init_prop.geom).element_id\n        init_pedestal_geomid = physics.bind(init_pedestal.geom).element_id\n        disallowed_contact = sorted((init_prop_geomid, init_pedestal_geomid))\n        def has_disallowed_contact():\n          physics.forward()\n          for contact in physics.data.contact:\n            if sorted((contact.geom1, contact.geom2)) == disallowed_contact:\n              return True\n          return False\n        while has_disallowed_contact():\n          init_prop.shift_pose(physics, (0, 0, 0.001))\n\n    self._move_arms_if_necessary(physics)\n    self._update_current_state(physics)\n    self._previous_step_success = self._evaluate_target_state()\n\n    self._focal_prop_id = self._init_prop_id\n    self._focal_pedestal_id = self._init_pedestal_id\n\n  def _move_arms_if_necessary(self, physics):\n    if self._min_prop_gap is not None:\n      for entity in self._props + self._pedestals:\n        try:\n          arm_opener.open_arms_for_prop(\n              physics, self._walker.left_arm_root, self._walker.right_arm_root,\n              entity.mjcf_model, self._min_prop_gap)\n        except RuntimeError as e:\n          raise composer.EpisodeInitializationError(e)\n\n  def after_step(self, physics, random_state):\n    # First we check for failure termination.\n    for contact in physics.data.contact:\n      if ((contact.geom1 == self._ground_geomid and\n           contact.geom2 not in self._feet_geomids) or\n          (contact.geom2 == self._ground_geomid and\n           contact.geom1 not in self._feet_geomids)):\n        if self._negative_reward_on_failure_termination:\n          self._reward = -_SPARSE_REWARD\n        else:\n          self._reward = 0.0\n        self._should_terminate = True\n        self._discount = 0.0\n        return\n\n    # Then check for normal reward and state transitions.\n    self._update_current_state(physics)\n    success = self._evaluate_target_state()\n    if success and not self._previous_step_success:\n      self._reward = _SPARSE_REWARD\n      new_phase = (\n          self._transition_manager.on_success(self._target_state, random_state))\n      self._should_terminate = (new_phase == WarehousePhase.TERMINATED)\n      self._on_transition(physics)\n      self._previous_step_success = self._evaluate_target_state()\n    else:\n      self._reward = 0.0\n\n  def _on_transition(self, physics):\n    self._focal_prop_id = self._transition_manager.prop_id\n    self._focal_pedestal_id = self._transition_manager.pedestal_id\n    if self._log_transitions:\n      logging.info('target_state:\\n%s', self._target_state)\n    for pedestal_id, pedestal_active in enumerate(\n        self._target_state[WALKER_PEDESTAL]):\n      r, g, b, a = self._pedestal_colors[pedestal_id]\n      if pedestal_active:\n        h, _, s = colorsys.rgb_to_hls(r, g, b)\n        r, g, b = colorsys.hls_to_rgb(h, _ACTIVATED_PEDESTAL_L, s)\n      physics.bind(self._pedestals[pedestal_id].geom).rgba = (r, g, b, a)\n\n  def get_reward(self, physics):\n    return self._reward\n\n  def get_discount(self, physics):\n    return self._discount\n\n  def should_terminate_episode(self, physics):\n    return self._should_terminate\n\n  def _update_current_state(self, physics):\n    for current_state_value in self._current_state.values():\n      current_state_value[:] = 0\n\n    # Check if the walker is near each pedestal.\n    walker_pos, _ = self._walker.get_pose(physics)\n    for pedestal_id, pedestal in enumerate(self._pedestals):\n      target_pos, _ = pedestal.get_pose(physics)\n      walker_to_target_dist = np.linalg.norm(walker_pos[:2] - target_pos[:2])\n      if walker_to_target_dist <= _TARGET_TOL:\n        self._current_state[WALKER_PEDESTAL][pedestal_id] = 1\n\n    prop_geomids = {\n        physics.bind(prop.geom).element_id: prop_id\n        for prop_id, prop in enumerate(self._props)}\n    pedestal_geomids = {\n        physics.bind(pedestal.geom).element_id: pedestal_id\n        for pedestal_id, pedestal in enumerate(self._pedestals)}\n\n    prop_pedestal_contact_counts = np.zeros(\n        [self._num_props, self._num_pedestals])\n    prop_lhand_contact = [False] * self._num_props\n    prop_rhand_contact = [False] * self._num_props\n    for contact in physics.data.contact:\n      prop_id = prop_geomids.get(contact.geom1, prop_geomids.get(contact.geom2))\n      pedestal_id = pedestal_geomids.get(\n          contact.geom1, pedestal_geomids.get(contact.geom2))\n      has_lhand = (contact.geom1 in self._lhand_geomids or\n                   contact.geom2 in self._lhand_geomids)\n      has_rhand = (contact.geom1 in self._rhand_geomids or\n                   contact.geom2 in self._rhand_geomids)\n      if prop_id is not None and pedestal_id is not None:\n        prop_pedestal_contact_counts[prop_id, pedestal_id] += 1\n      if prop_id is not None and has_lhand:\n        prop_lhand_contact[prop_id] = True\n      if prop_id is not None and has_rhand:\n        prop_rhand_contact[prop_id] = True\n\n    for prop_id in range(self._num_props):\n      if prop_lhand_contact[prop_id] and prop_rhand_contact[prop_id]:\n        self._current_state[WALKER_PROP][prop_id] = 1\n      pedestal_contact_counts = prop_pedestal_contact_counts[prop_id]\n      for pedestal_id in range(self._num_pedestals):\n        if pedestal_contact_counts[pedestal_id] >= 4:\n          self._current_state[PROP_PEDESTAL][prop_id, pedestal_id] = 1\n\n  def _evaluate_target_state(self):\n    return _is_same_state(self._current_state, self._target_state)\n"
  },
  {
    "path": "causal_reasoning/Causal_Reasoning_in_Probability_Trees.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"N1EHYIqxd80m\"\n      },\n      \"source\": [\n        \"\\u003e Copyright 2020 DeepMind Technologies Limited.\\n\",\n        \"\\u003e\\n\",\n        \"\\u003e Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"\\u003e you may not use this file except in compliance with the License.\\n\",\n        \"\\u003e \\n\",\n        \"\\u003e You may obtain a copy of the License at\\n\",\n        \"\\u003e https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\u003e \\n\",\n        \"\\u003e Unless required by applicable law or agreed to in writing, software\\n\",\n        \"\\u003e distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"\\u003e WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"\\u003e See the License for the specific language governing permissions and\\n\",\n        \"\\u003e limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"qHP8zlWs1OUN\"\n      },\n      \"source\": [\n        \"# **Tutorial: Causal Reasoning in Probability Trees**\\n\",\n        \"\\n\",\n        \"*By the AGI Safety Analysis Team @ DeepMind.*\\n\",\n        \"\\n\",\n        \"**Summary:** This is the companion tutorial for the paper [\\\"Algorithms\\n\",\n        \"for Causal Reasoning in Probability trees\\\"](https://arxiv.org/abs/2010.12237) by Genewein et al. (2020).\\n\",\n        \"\\n\",\n        \"Probability trees are one of the simplest models of causal\\n\",\n        \"generative processes.They possess clean semantics and are strictly more general\\n\",\n        \"than causal Bayesian networks, being able to e.g. represent causal relations\\n\",\n        \"that causal Bayesian networks can’t. Even so, they have received little\\n\",\n        \"attention from the AI and ML community.\\n\",\n        \"\\n\",\n        \"For instance, we can describe a scenario where the weather is the cause and the\\n\",\n        \"barometer reading the effect, or viceversa, depending on whether we're on Earth\\n\",\n        \"or on some alien planet with different physics:\\n\",\n        \"\\n\",\n        \"\\u003cimg src=\\\"http://www.adaptiveagents.org/_media/wiki/probtrees.png\\\" alt=\\\"Probability Trees\\\" width=\\\"700\\\"/\\u003e\\n\",\n        \"\\n\",\n        \"Causal dependencies like these are naturally represented as a tree.\\n\",\n        \"\\n\",\n        \"In this tutorial we present new algorithms for causal reasoning in discrete\\n\",\n        \"probability trees that cover the entire causal hierarchy (association,\\n\",\n        \"intervention, and counterfactuals), operating on arbitrary logical and causal\\n\",\n        \"events.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"XUQVMuc2_VlG\"\n      },\n      \"source\": [\n        \"\\n\",\n        \"# Part I: Basics\\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"P4cjtJaR_VlH\"\n      },\n      \"source\": [\n        \"### Setup\\n\",\n        \"\\n\",\n        \"First we install the `graphviz` package:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"JlbLG8sy_VlI\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!apt-get install graphviz\\n\",\n        \"!pip install graphviz\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"KxQFfJio_VlM\"\n      },\n      \"source\": [\n        \"### Imports and data structures\\n\",\n        \"\\n\",\n        \"We import Numpy and Pyplot, and then we define the basic data structures for\\n\",\n        \"this tutorial.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"HFs6Q37E_VlM\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Imports\\n\",\n        \"\\n\",\n        \"import numpy as np\\n\",\n        \"import matplotlib as mpl\\n\",\n        \"import matplotlib.pyplot as plt\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"yTTsE6f1_oIA\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Data structures\\n\",\n        \"\\n\",\n        \"import graphviz\\n\",\n        \"import copy\\n\",\n        \"from random import random\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class MinCut:\\n\",\n        \"  \\\"\\\"\\\"A representation of an event in a probability tree.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self, root, t=frozenset(), f=frozenset()):\\n\",\n        \"    self._root = root\\n\",\n        \"    self.t = t\\n\",\n        \"    self.f = f\\n\",\n        \"\\n\",\n        \"  def __str__(self):\\n\",\n        \"\\n\",\n        \"    true_elements = ', '.join([str(id) for id in sorted(self.t)])\\n\",\n        \"    false_elements = ', '.join([str(id) for id in sorted(self.f)])\\n\",\n        \"    return '{true: {' + true_elements + '}, false: {' + false_elements + '}}'\\n\",\n        \"\\n\",\n        \"  def __reptr__(self):\\n\",\n        \"    return self.__str__()\\n\",\n        \"\\n\",\n        \"  # Proposition\\n\",\n        \"  def prop(root, statement):\\n\",\n        \"    cond_lst = Node._parse_statements(statement)\\n\",\n        \"\\n\",\n        \"    # Complain if more than one statement.\\n\",\n        \"    if len(cond_lst) != 1:\\n\",\n        \"      raise Exception('\\\\'prop\\\\' takes one and only one statement.')\\n\",\n        \"      return None\\n\",\n        \"\\n\",\n        \"    # Remove list envelope.\\n\",\n        \"    cond = cond_lst[0]\\n\",\n        \"\\n\",\n        \"    # Recurse.\\n\",\n        \"    return MinCut._prop(root, root, cond)\\n\",\n        \"\\n\",\n        \"  def _prop(root, node, cond):\\n\",\n        \"    # Take var and val of condition.\\n\",\n        \"    condvar, condval = cond\\n\",\n        \"\\n\",\n        \"    # Search for variable.\\n\",\n        \"    for var, val in node.assign:\\n\",\n        \"      if condvar == var:\\n\",\n        \"        if condval == val:\\n\",\n        \"          return MinCut(root, frozenset([node.id]), frozenset())\\n\",\n        \"        else:\\n\",\n        \"          return MinCut(root, frozenset(), frozenset([node.id]))\\n\",\n        \"\\n\",\n        \"    # If we reach a leaf node and the variable isn't resolved,\\n\",\n        \"    # raise an exception.\\n\",\n        \"    if not node.children:\\n\",\n        \"      msg = 'Node ' + str(node.id) + ': ' \\\\\\n\",\n        \"          + 'min-cut for condition \\\"' + condvar + ' = ' \\\\\\n\",\n        \"          + condval + '\\\" is undefined.'\\n\",\n        \"      raise Exception(msg)\\n\",\n        \"\\n\",\n        \"    # Variable not found, recurse.\\n\",\n        \"    t_set = frozenset()\\n\",\n        \"    f_set = frozenset()\\n\",\n        \"    for child in node.children:\\n\",\n        \"      _, subnode = child\\n\",\n        \"      subcut = MinCut._prop(root, subnode, cond)\\n\",\n        \"      t_set = t_set.union(subcut.t)\\n\",\n        \"      f_set = f_set.union(subcut.f)\\n\",\n        \"\\n\",\n        \"    # Consolidate into node if children are either only true or false nodes.\\n\",\n        \"    cut = MinCut(root, t_set, f_set)\\n\",\n        \"    if not cut.f:\\n\",\n        \"      cut.t = frozenset([node.id])\\n\",\n        \"    elif not cut.t:\\n\",\n        \"      cut.f = frozenset([node.id])\\n\",\n        \"\\n\",\n        \"    return cut\\n\",\n        \"\\n\",\n        \"  # Negation\\n\",\n        \"  def neg(self):\\n\",\n        \"    return MinCut(self._root, t=self.f, f=self.t)\\n\",\n        \"\\n\",\n        \"  def __invert__(self):\\n\",\n        \"    return self.neg()\\n\",\n        \"\\n\",\n        \"  # Conjunction\\n\",\n        \"  def conj(root, cut1, cut2):\\n\",\n        \"    return MinCut._conj(root, root, cut1, cut2, False, False)\\n\",\n        \"\\n\",\n        \"  def _conj(root, node, cut1, cut2, end1=False, end2=False):\\n\",\n        \"    # Base case.\\n\",\n        \"    if (node.id in cut1.f) or (node.id in cut2.f):\\n\",\n        \"      return MinCut(root, frozenset(), frozenset([node.id]))\\n\",\n        \"    if node.id in cut1.t:\\n\",\n        \"      end1 = True\\n\",\n        \"    if node.id in cut2.t:\\n\",\n        \"      end2 = True\\n\",\n        \"    if end1 and end2:\\n\",\n        \"      return MinCut(root, frozenset([node.id]), frozenset())\\n\",\n        \"\\n\",\n        \"    # Recurse.\\n\",\n        \"    t_set = frozenset()\\n\",\n        \"    f_set = frozenset()\\n\",\n        \"    for _, subnode in node.children:\\n\",\n        \"      subcut = MinCut._conj(root, subnode, cut1, cut2, end1, end2)\\n\",\n        \"      t_set = t_set.union(subcut.t)\\n\",\n        \"      f_set = f_set.union(subcut.f)\\n\",\n        \"\\n\",\n        \"    # Consolidate into node if children are either only true or false nodes.\\n\",\n        \"    cut = MinCut(root, t_set, f_set)\\n\",\n        \"    if not cut.f:\\n\",\n        \"      cut.t = frozenset([node.id])\\n\",\n        \"    elif not cut.t:\\n\",\n        \"      cut.f = frozenset([node.id])\\n\",\n        \"    return cut\\n\",\n        \"\\n\",\n        \"  def __and__(self, operand):\\n\",\n        \"    return MinCut.conj(self._root, self, operand)\\n\",\n        \"\\n\",\n        \"  # Disjunction\\n\",\n        \"  def disj(root, cut1, cut2):\\n\",\n        \"    return MinCut.neg(MinCut.conj(root, MinCut.neg(cut1), MinCut.neg(cut2)))\\n\",\n        \"\\n\",\n        \"  def __or__(self, operand):\\n\",\n        \"    return MinCut.disj(self._root, self, operand)\\n\",\n        \"\\n\",\n        \"  # Causal dependence\\n\",\n        \"  def precedes(root, cut_c, cut_e):\\n\",\n        \"    return MinCut._precedes(root, root, cut_c, cut_e, False)\\n\",\n        \"\\n\",\n        \"  def _precedes(root, node, cut_c, cut_e, found_c):\\n\",\n        \"    # Base case.\\n\",\n        \"    if not found_c:\\n\",\n        \"      if (node.id in cut_e.t or node.id in cut_e.f or node.id in cut_c.f):\\n\",\n        \"        return MinCut(root, frozenset(), frozenset([node.id]))\\n\",\n        \"      if (node.id in cut_c.t):\\n\",\n        \"        found_c = True\\n\",\n        \"    if found_c:\\n\",\n        \"      if (node.id in cut_e.t):\\n\",\n        \"        return MinCut(root, frozenset([node.id]), frozenset())\\n\",\n        \"      if (node.id in cut_e.f):\\n\",\n        \"        return MinCut(root, frozenset(), frozenset([node.id]))\\n\",\n        \"\\n\",\n        \"    # Recursion.\\n\",\n        \"    t_set = frozenset()\\n\",\n        \"    f_set = frozenset()\\n\",\n        \"    for _, subnode in node.children:\\n\",\n        \"      subcut = MinCut._precedes(root, subnode, cut_c, cut_e, found_c)\\n\",\n        \"      t_set = t_set.union(subcut.t)\\n\",\n        \"      f_set = f_set.union(subcut.f)\\n\",\n        \"\\n\",\n        \"    # Consolidate into node if children are either only true or false nodes.\\n\",\n        \"    cut = MinCut(root, t_set, f_set)\\n\",\n        \"    if not cut.f:\\n\",\n        \"      cut.t = frozenset([node.id])\\n\",\n        \"    elif not cut.t:\\n\",\n        \"      cut.f = frozenset([node.id])\\n\",\n        \"    return cut\\n\",\n        \"\\n\",\n        \"  def __lt__(self, operand):\\n\",\n        \"    return MinCut.precedes(self._root, self, operand)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class Critical:\\n\",\n        \"  \\\"\\\"\\\"A representation of the critical set associated to an event.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  # Constructor\\n\",\n        \"  def __init__(self, s=frozenset()):\\n\",\n        \"    self.s = s\\n\",\n        \"\\n\",\n        \"  def __str__(self):\\n\",\n        \"    elements = ', '.join([str(id) for id in sorted(self.s)])\\n\",\n        \"    return '{' + elements + '}'\\n\",\n        \"\\n\",\n        \"  def __reptr__(self):\\n\",\n        \"    return self.__str__()\\n\",\n        \"\\n\",\n        \"  def critical(root, cut):\\n\",\n        \"    _, crit = Critical._critical(root, cut)\\n\",\n        \"    return crit\\n\",\n        \"\\n\",\n        \"  def _critical(node, cut):\\n\",\n        \"    # Base case.\\n\",\n        \"    if node.id in cut.t:\\n\",\n        \"      return (False, Critical(frozenset()))\\n\",\n        \"    if node.id in cut.f:\\n\",\n        \"      return (True, Critical(frozenset()))\\n\",\n        \"    # Recurse.\\n\",\n        \"    s = frozenset()\\n\",\n        \"    for _, subnode in node.children:\\n\",\n        \"      incut, subcrit = Critical._critical(subnode, cut)\\n\",\n        \"      if incut:\\n\",\n        \"        s = s.union(frozenset([node.id]))\\n\",\n        \"      else:\\n\",\n        \"        s = s.union(subcrit.s)\\n\",\n        \"\\n\",\n        \"    return (False, Critical(s))\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class Node:\\n\",\n        \"  \\\"\\\"\\\"A node in probability tree.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  # Constructor.\\n\",\n        \"  def __init__(self, uid, statements, children=None):\\n\",\n        \"    # Automatically assigned ID.\\n\",\n        \"    self.id = uid\\n\",\n        \"\\n\",\n        \"    # Assignments.\\n\",\n        \"    if isinstance(statements, str):\\n\",\n        \"      self.assign = Node._parse_statements(statements)\\n\",\n        \"    else:\\n\",\n        \"      self.assign = statements\\n\",\n        \"\\n\",\n        \"    # Children.\\n\",\n        \"    if children is None:\\n\",\n        \"      self.children = []\\n\",\n        \"    else:\\n\",\n        \"      self.children = children\\n\",\n        \"\\n\",\n        \"  # Parse statements.\\n\",\n        \"  def _parse_statements(statements):\\n\",\n        \"    statement_list = statements.split(',')\\n\",\n        \"    pair_list = [x.split('=') for x in statement_list]\\n\",\n        \"    assign = [(var.strip(), val.strip()) for var, val in pair_list]\\n\",\n        \"    return assign\\n\",\n        \"\\n\",\n        \"  # Sample.\\n\",\n        \"  def sample(self):\\n\",\n        \"    return self._sample(dict())\\n\",\n        \"\\n\",\n        \"  def _sample(self, smp):\\n\",\n        \"    # Add new assignments.\\n\",\n        \"    newsmp = {var: val for var, val in self.assign}\\n\",\n        \"    smp = dict(smp, **newsmp)\\n\",\n        \"\\n\",\n        \"    # Base case.\\n\",\n        \"    if not self.children:\\n\",\n        \"      return smp\\n\",\n        \"\\n\",\n        \"    # Recurse.\\n\",\n        \"    rnum = random()\\n\",\n        \"    for child in self.children:\\n\",\n        \"      subprob, subnode = child\\n\",\n        \"      rnum -= subprob\\n\",\n        \"      if rnum \\u003c= 0:\\n\",\n        \"        return subnode._sample(smp)\\n\",\n        \"\\n\",\n        \"    # Something went wrong: probabilities aren't normalized.\\n\",\n        \"    msg = 'Node ' + str(self.id) + ': ' \\\\\\n\",\n        \"      + 'probabilities of transitions do not add up to one.'\\n\",\n        \"    raise Exception(msg)\\n\",\n        \"\\n\",\n        \"  # Insert.\\n\",\n        \"  def insert(self, prob, node):\\n\",\n        \"    self.children.append((prob, node))\\n\",\n        \"\\n\",\n        \"  # Compute probability of cut.\\n\",\n        \"  def prob(self, cut):\\n\",\n        \"    return self._prob(cut, 1.0)\\n\",\n        \"\\n\",\n        \"  def _prob(self, cut, prob):\\n\",\n        \"    # Base case.\\n\",\n        \"    if self.id in cut.t:\\n\",\n        \"      return prob\\n\",\n        \"    if self.id in cut.f:\\n\",\n        \"      return 0.0\\n\",\n        \"\\n\",\n        \"    # Recurse.\\n\",\n        \"    probsum = 0.0\\n\",\n        \"    for child in self.children:\\n\",\n        \"      subprob, subnode = child\\n\",\n        \"      resprob = subnode._prob(cut, prob * subprob)\\n\",\n        \"      probsum += resprob\\n\",\n        \"\\n\",\n        \"    return probsum\\n\",\n        \"\\n\",\n        \"  # Return a dictionary with all the random variables and their values.\\n\",\n        \"  def rvs(self):\\n\",\n        \"    sts = dict()\\n\",\n        \"    return self._rvs(sts)\\n\",\n        \"\\n\",\n        \"  def _rvs(self, sts):\\n\",\n        \"    for var, val in self.assign:\\n\",\n        \"      if not (var in sts):\\n\",\n        \"        sts[var] = list()\\n\",\n        \"      if not (val in sts[var]):\\n\",\n        \"        sts[var].append(val)\\n\",\n        \"\\n\",\n        \"    for _, subnode in self.children:\\n\",\n        \"      sts = subnode._rvs(sts)\\n\",\n        \"\\n\",\n        \"    return sts\\n\",\n        \"\\n\",\n        \"  # Auxiliary function for computing the list of children.\\n\",\n        \"  def _normalize_children(children, probsum, logsum):\\n\",\n        \"    newchildren = None\\n\",\n        \"    if probsum \\u003e 0.0:\\n\",\n        \"      newchildren = [\\n\",\n        \"          (subprob / probsum, subnode) for _, subprob, subnode in children\\n\",\n        \"      ]\\n\",\n        \"    else:\\n\",\n        \"      newchildren = [\\n\",\n        \"          (sublog / logsum, subnode) for sublog, _, subnode in children\\n\",\n        \"      ]\\n\",\n        \"    return newchildren\\n\",\n        \"\\n\",\n        \"  # Conditioning\\n\",\n        \"  def see(self, cut):\\n\",\n        \"    root = copy.deepcopy(self)\\n\",\n        \"    root._see(cut, 1.0)\\n\",\n        \"    return root\\n\",\n        \"\\n\",\n        \"  def _see(self, cut, prob):\\n\",\n        \"    # Base case.\\n\",\n        \"    if self.id in cut.t:\\n\",\n        \"      newnode = Node(self.id, self.assign)\\n\",\n        \"      return (1.0, prob)\\n\",\n        \"    if self.id in cut.f:\\n\",\n        \"      newnode = Node(self.id, self.assign)\\n\",\n        \"      return (0.0, 0.0)\\n\",\n        \"\\n\",\n        \"    # Recurse.\\n\",\n        \"    newchildren = []\\n\",\n        \"    probsum = 0.0\\n\",\n        \"    logsum = 0.0\\n\",\n        \"    for subprob, subnode in self.children:\\n\",\n        \"      reslog, resprob = subnode._see(cut, prob * subprob)\\n\",\n        \"\\n\",\n        \"      newchildren.append((reslog, resprob, subnode))\\n\",\n        \"      logsum += reslog\\n\",\n        \"      probsum += resprob\\n\",\n        \"\\n\",\n        \"    # Normalize.\\n\",\n        \"    self.children = Node._normalize_children(newchildren, probsum, logsum)\\n\",\n        \"\\n\",\n        \"    return (1.0, probsum)\\n\",\n        \"\\n\",\n        \"  # Causal intervention\\n\",\n        \"  def do(self, cut):\\n\",\n        \"    root = copy.deepcopy(self)\\n\",\n        \"    root._do(cut)\\n\",\n        \"    return root\\n\",\n        \"\\n\",\n        \"  def _do(self, cut):\\n\",\n        \"    # Base case.\\n\",\n        \"    if self.id in cut.t:\\n\",\n        \"      return True\\n\",\n        \"    if self.id in cut.f:\\n\",\n        \"      return False\\n\",\n        \"\\n\",\n        \"    # Recurse.\\n\",\n        \"    newchildren = []\\n\",\n        \"    probsum = 0.0\\n\",\n        \"    logsum = 0.0\\n\",\n        \"    for subprob, subnode in self.children:\\n\",\n        \"      resdo = subnode._do(cut)\\n\",\n        \"\\n\",\n        \"      if resdo:\\n\",\n        \"        newchildren.append((1.0, subprob, subnode))\\n\",\n        \"        probsum += subprob\\n\",\n        \"        logsum += 1.0\\n\",\n        \"      else:\\n\",\n        \"        newchildren.append((0.0, 0.0, subnode))\\n\",\n        \"\\n\",\n        \"    # Normalize.\\n\",\n        \"    self.children = Node._normalize_children(newchildren, probsum, logsum)\\n\",\n        \"\\n\",\n        \"    return (1.0, probsum)\\n\",\n        \"\\n\",\n        \"  # Counterfactual/subjunctive conditional\\n\",\n        \"  def cf(self, root_prem, cut_subj):\\n\",\n        \"    root_prem_do = root_prem.do(cut_subj)\\n\",\n        \"    root_subj = copy.deepcopy(self)\\n\",\n        \"    root_subj._cf(root_prem_do, cut_subj)\\n\",\n        \"    return root_subj\\n\",\n        \"\\n\",\n        \"  def _cf(self, prem, cut):\\n\",\n        \"    # Base case.\\n\",\n        \"    if self.id in cut.t or self.id in cut.f:\\n\",\n        \"      return \\n\",\n        \"\\n\",\n        \"    # Recurse.\\n\",\n        \"    children = []\\n\",\n        \"    for child, child_prem in zip(self.children, prem.children):\\n\",\n        \"      (_, subnode) = child\\n\",\n        \"      (subprob, subnode_prem) = child_prem\\n\",\n        \"      subnode._cf(subnode_prem, cut)\\n\",\n        \"      children.append((subprob, subnode))\\n\",\n        \"\\n\",\n        \"    # Update children.\\n\",\n        \"    self.children = children\\n\",\n        \"\\n\",\n        \"    return\\n\",\n        \"\\n\",\n        \"  # Show probability tree.\\n\",\n        \"  def show(self, show_id=False, show_prob=False, cut=None, crit=None):\\n\",\n        \"    # Initialize Digraph.\\n\",\n        \"    graph_attr = {\\n\",\n        \"        'bgcolor': 'White',\\n\",\n        \"        'rankdir': 'LR',\\n\",\n        \"        'nodesep': '0.1',\\n\",\n        \"        'ranksep': '0.3',\\n\",\n        \"        'sep': '0'\\n\",\n        \"    }\\n\",\n        \"    node_attr = {\\n\",\n        \"        'style': 'rounded',\\n\",\n        \"        'shape': 'box',\\n\",\n        \"        'height': '0.1',\\n\",\n        \"        'width': '0.5',\\n\",\n        \"        'fontsize': '10',\\n\",\n        \"        'margin': '0.1, 0.02'\\n\",\n        \"    }\\n\",\n        \"    edge_attr = {'fontsize': '10'}\\n\",\n        \"    g = graphviz.Digraph(\\n\",\n        \"        'g',\\n\",\n        \"        format='svg',\\n\",\n        \"        graph_attr=graph_attr,\\n\",\n        \"        node_attr=node_attr,\\n\",\n        \"        edge_attr=edge_attr)\\n\",\n        \"\\n\",\n        \"    # Recursion.\\n\",\n        \"    return self._show(\\n\",\n        \"        g, 1.0, show_id=show_id, show_prob=show_prob, cut=cut, crit=crit)\\n\",\n        \"\\n\",\n        \"  def _show(self, g, prob, show_id=False, show_prob=False, cut=None, crit=None):\\n\",\n        \"    # Create label.\\n\",\n        \"    labels = [name + ' = ' + value for name, value in self.assign]\\n\",\n        \"    node_label = '\\\\n'.join(labels)\\n\",\n        \"    if show_id:\\n\",\n        \"      node_label = str(self.id) + '\\\\n' + node_label\\n\",\n        \"    if show_prob:\\n\",\n        \"      node_label = node_label + '\\\\np = ' + '{0:.3g}'.format(prob)\\n\",\n        \"\\n\",\n        \"    # Decorate node.\\n\",\n        \"    attr = {'style': 'filled, rounded', 'fillcolor': 'WhiteSmoke'}\\n\",\n        \"    if not (cut is None):\\n\",\n        \"      if self.id in cut.t:\\n\",\n        \"        attr = {'style': 'filled, rounded', 'fillcolor': 'AquaMarine'}\\n\",\n        \"      elif self.id in cut.f:\\n\",\n        \"        attr = {'style': 'filled, rounded', 'fillcolor': 'LightCoral'}\\n\",\n        \"    if not (crit is None):\\n\",\n        \"      if self.id in crit.s:\\n\",\n        \"        attr = {'style': 'filled, rounded', 'fillcolor': 'Plum'}\\n\",\n        \"    g.node(str(self.id), label=node_label, **attr)\\n\",\n        \"\\n\",\n        \"    # Recurse.\\n\",\n        \"    for child in self.children:\\n\",\n        \"      subprob, subnode = child\\n\",\n        \"      subnode._show(\\n\",\n        \"          g,\\n\",\n        \"          prob * subprob,\\n\",\n        \"          show_id=show_id,\\n\",\n        \"          show_prob=show_prob,\\n\",\n        \"          cut=cut,\\n\",\n        \"          crit=crit)\\n\",\n        \"      g.edge(str(self.id), str(subnode.id), label='{0:.3g}'.format(subprob))\\n\",\n        \"\\n\",\n        \"    return g\\n\",\n        \"\\n\",\n        \"  def find(self, uid):\\n\",\n        \"    if self.id == uid:\\n\",\n        \"      return self\\n\",\n        \"\\n\",\n        \"    for child in self.children:\\n\",\n        \"      subprob, subnode = child\\n\",\n        \"      found_node = subnode.find(uid)\\n\",\n        \"      if found_node is not None:\\n\",\n        \"        return found_node\\n\",\n        \"\\n\",\n        \"    return None\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class PTree:\\n\",\n        \"  \\\"\\\"\\\"A probability tree.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self):\\n\",\n        \"    \\\"\\\"\\\"Create a probability tree.\\\"\\\"\\\"\\n\",\n        \"    self._root = None\\n\",\n        \"    self._count = 0\\n\",\n        \"\\n\",\n        \"  def root(self, statements, children=None):\\n\",\n        \"    \\\"\\\"\\\"Sets the root node.\\n\",\n        \"\\n\",\n        \"        Parameters\\n\",\n        \"        ----------\\n\",\n        \"        statements : str\\n\",\n        \"            A string containing a comma-separated list of statements of\\n\",\n        \"            the form \\\"var = val\\\", such as \\\"X=1, Y=0\\\". These are the\\n\",\n        \"            values resolved by the root node.\\n\",\n        \"        children : list((float, Node)), (default: None)\\n\",\n        \"            A list of (probability, child node) pairs. These are the root\\n\",\n        \"            node's children and their transition probabilities.\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        Node\\n\",\n        \"            the root node of the probability tree.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    self._count += 1\\n\",\n        \"    self._root = Node(self._count, statements, children)\\n\",\n        \"    return self._root\\n\",\n        \"\\n\",\n        \"  def child(self, prob, statements, children=None):\\n\",\n        \"    \\\"\\\"\\\"Create a child node and its transition probability.\\n\",\n        \"\\n\",\n        \"        Parameters\\n\",\n        \"        ----------\\n\",\n        \"        prob : float\\n\",\n        \"            The probability of the transition\\n\",\n        \"        statements : str\\n\",\n        \"            A string containing a comma-separated list of statements of\\n\",\n        \"            the form \\\"var = val\\\", such as \\\"X=1, Y=0\\\". These are the\\n\",\n        \"            values resolved by the child node.\\n\",\n        \"        children : list((float, Node)), (default: None)\\n\",\n        \"            A list of (probability, child node) pairs to be set as the\\n\",\n        \"            children of the node.\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        Node\\n\",\n        \"            the created node.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    self._count += 1\\n\",\n        \"    return (prob, Node(self._count, statements, children))\\n\",\n        \"\\n\",\n        \"  def get_root(self):\\n\",\n        \"    \\\"\\\"\\\"Return the root node.\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        Node\\n\",\n        \"            the root node of the probability tree.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    return self._root\\n\",\n        \"\\n\",\n        \"  def show(self, show_id=False, show_prob=False, cut=None, crit=None):\\n\",\n        \"    \\\"\\\"\\\"Returns a graph of the probability tree.\\n\",\n        \"\\n\",\n        \"        Parameters\\n\",\n        \"        ----------\\n\",\n        \"        show_id: Bool (default: False)\\n\",\n        \"            If true, display the unique id's.\\n\",\n        \"        show_prob : Bool (default: False)\\n\",\n        \"            If true, display the node probabilities.\\n\",\n        \"        cut : MinCut (default: None)\\n\",\n        \"            If a MinCut is given, then display it.\\n\",\n        \"        crit : Critical (default: None)\\n\",\n        \"            If a Critical set is given, then show it.\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        Node\\n\",\n        \"            the created node.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    return self._root.show(\\n\",\n        \"        show_id=show_id, show_prob=show_prob, cut=cut, crit=crit)\\n\",\n        \"\\n\",\n        \"  def rvs(self):\\n\",\n        \"    \\\"\\\"\\\"Return a dictionary with all the random variables and their values.\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        dict(str: list)\\n\",\n        \"            A dictionary with all the random variables pointing at lists\\n\",\n        \"            containing their possible values.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    return self._root.rvs()\\n\",\n        \"\\n\",\n        \"  def rv(self, var):\\n\",\n        \"    \\\"\\\"\\\"Return a probability distribution for a given random variable.\\n\",\n        \"\\n\",\n        \"        Parameters\\n\",\n        \"        ----------\\n\",\n        \"        var: str\\n\",\n        \"            A string containing the name of the random variable.\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        list((float, str))\\n\",\n        \"            A list with pairs (prob, val), where prob and val are the\\n\",\n        \"            probability\\n\",\n        \"            and the value of the random variable.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    return [(self.prob(self.prop(var + ' = ' + val)), val)\\n\",\n        \"            for val in self.rvs()[var]]\\n\",\n        \"\\n\",\n        \"  def expect(self, var):\\n\",\n        \"    \\\"\\\"\\\"Return the expected value of a random variable.\\n\",\n        \"\\n\",\n        \"        Parameters\\n\",\n        \"        ----------\\n\",\n        \"        var: str\\n\",\n        \"            A string containing the name of the random variable.\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        float\\n\",\n        \"            The expected value of the random variable.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    e = 0.0\\n\",\n        \"    for prob, val in self.rv(var):\\n\",\n        \"      e += prob * float(val)\\n\",\n        \"    return e\\n\",\n        \"\\n\",\n        \"  def find(self, uid):\\n\",\n        \"    \\\"\\\"\\\"Return a node with given unique identifier.\\n\",\n        \"\\n\",\n        \"        Parameters\\n\",\n        \"        ----------\\n\",\n        \"        uid: int\\n\",\n        \"            Identifier of the node to be returned.\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        Node or None\\n\",\n        \"            Returns the node if found, otherwise None.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    return self._root.find(uid)\\n\",\n        \"\\n\",\n        \"  def prop(self, statement):\\n\",\n        \"    \\\"\\\"\\\"Returns min-cut of a statement.\\n\",\n        \"\\n\",\n        \"        Parameters\\n\",\n        \"        ----------\\n\",\n        \"        statement: str\\n\",\n        \"            A single statement of the form \\\"var = val\\\", such as \\\"X = 1\\\".\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        MinCut\\n\",\n        \"            the min-cut of the event corresponding to the statement.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    return MinCut.prop(self._root, statement)\\n\",\n        \"\\n\",\n        \"  def critical(self, cut):\\n\",\n        \"    \\\"\\\"\\\"Returns critical set of a min-cut.\\n\",\n        \"\\n\",\n        \"        Parameters\\n\",\n        \"        ----------\\n\",\n        \"        cut: MinCut\\n\",\n        \"            A min-cuts.\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        Critical\\n\",\n        \"            the critical set for the min-cut.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    return Critical.critical(self._root, cut)\\n\",\n        \"\\n\",\n        \"  def sample(self):\\n\",\n        \"    \\\"\\\"\\\"Sample a realization.\\n\",\n        \"    \\n\",\n        \"    Returns\\n\",\n        \"    -------\\n\",\n        \"    dict((str:str))\\n\",\n        \"        A dictionary of bound random variables such as\\n\",\n        \"\\n\",\n        \"            { 'X': '1', 'Y': '0' }.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    return self._root.sample()\\n\",\n        \"\\n\",\n        \"  def prob(self, cut):\\n\",\n        \"    \\\"\\\"\\\"Compute probability of a min-cut.\\n\",\n        \"\\n\",\n        \"        Parameters\\n\",\n        \"        ----------\\n\",\n        \"        cut: MinCut\\n\",\n        \"            A min-cut for an event.\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        float\\n\",\n        \"            The probability of the event of the min-cut.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    return self._root.prob(cut)\\n\",\n        \"\\n\",\n        \"  def see(self, cut):\\n\",\n        \"    \\\"\\\"\\\"Return a probability tree conditioned on a cut.\\n\",\n        \"\\n\",\n        \"        Parameters\\n\",\n        \"        ----------\\n\",\n        \"        cut: MinCut\\n\",\n        \"            A min-cut for an event.\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        PTree\\n\",\n        \"            A new probability tree.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    newptree = PTree()\\n\",\n        \"    newptree._root = self._root.see(cut)\\n\",\n        \"    return newptree\\n\",\n        \"\\n\",\n        \"  def do(self, cut):\\n\",\n        \"    \\\"\\\"\\\"Intervene on a cut.\\n\",\n        \"\\n\",\n        \"        Parameters\\n\",\n        \"        ----------\\n\",\n        \"        cut: MinCut\\n\",\n        \"            A min-cut for an event.\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        float\\n\",\n        \"            A new probability tree.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    newptree = PTree()\\n\",\n        \"    newptree._root = self._root.do(cut)\\n\",\n        \"    return newptree\\n\",\n        \"\\n\",\n        \"  def cf(self, tree_prem, cut_subj):\\n\",\n        \"    \\\"\\\"\\\"Return a subjunctive conditional tree.\\n\",\n        \"\\n\",\n        \"        Parameters\\n\",\n        \"        ----------\\n\",\n        \"        tree_prem: PTree\\n\",\n        \"            A probality tree representing the premises for the subjunctive\\n\",\n        \"            evaluation.\\n\",\n        \"            This probability tree must have been obtained through operations on\\n\",\n        \"            the\\n\",\n        \"            base probability tree.\\n\",\n        \"        cut_do: MinCut\\n\",\n        \"            A min-cut for an event. This min-cut is the subjunctive condition of\\n\",\n        \"            the\\n\",\n        \"            counterfactual.\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        float\\n\",\n        \"            A new probability tree.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    newptree = PTree()\\n\",\n        \"    newptree._root = self._root.cf(tree_prem._root, cut_subj)\\n\",\n        \"    return newptree\\n\",\n        \"\\n\",\n        \"  def fromFunc(func, root_statement=None):\\n\",\n        \"    \\\"\\\"\\\"Build a probability tree from a factory function.\\n\",\n        \"\\n\",\n        \"        Building probability trees can be difficult, especially when we have\\n\",\n        \"        to manually specify all its nodes. To simplify this, `fromFunc` allows\\n\",\n        \"        building a probability tree using a factory function. A factory\\n\",\n        \"        function is a function that:\\n\",\n        \"\\n\",\n        \"        - receives a dictionary of bound random variables, such as\\n\",\n        \"\\n\",\n        \"            { 'X': '1', 'Y': '0' }\\n\",\n        \"\\n\",\n        \"        - and returns either `None` if a leaf has been reached, or a list\\n\",\n        \"          of transitions and their statements, such as\\n\",\n        \"\\n\",\n        \"            [(0.3, 'Z = 0'), (0.2, 'Z = 1'), (0.5, 'Z = 2')].\\n\",\n        \"\\n\",\n        \"        Such a factory function contains all the necessary information for\\n\",\n        \"        building a probability tree.\\n\",\n        \"\\n\",\n        \"        The advantage of using a factory function is that we can exploit\\n\",\n        \"        symmetries (such as conditional independencies) to code a much\\n\",\n        \"        more compact description of the probability tree.\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"        Parameters\\n\",\n        \"        ----------\\n\",\n        \"        func: Function: dict((str: str)) -\\u003e list((float, str))\\n\",\n        \"            A probality tree factory function.\\n\",\n        \"\\n\",\n        \"        root_statement: str (default: None)\\n\",\n        \"            A string containing the statement (e.g. 'root = 0')\\n\",\n        \"            for the root node. If `None`, 'Ω = 1' is used.\\n\",\n        \"\\n\",\n        \"        Returns\\n\",\n        \"        -------\\n\",\n        \"        PTree\\n\",\n        \"            A new probability tree.\\n\",\n        \"        \\\"\\\"\\\"\\n\",\n        \"    if not root_statement:\\n\",\n        \"      root_statement = 'O = 1'\\n\",\n        \"\\n\",\n        \"    tree = PTree()\\n\",\n        \"    bvars = dict(Node._parse_statements(root_statement))\\n\",\n        \"    tree.root(root_statement, tree._fromFunc(func, bvars))\\n\",\n        \"    return tree\\n\",\n        \"\\n\",\n        \"  def _fromFunc(self, func, bvars):\\n\",\n        \"    \\\"\\\"\\\"Auxiliary method for PTree.fromFunc().\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"    transition_list = func(bvars)\\n\",\n        \"    if not transition_list:\\n\",\n        \"      return None\\n\",\n        \"    children = []\\n\",\n        \"    for prob, statement in transition_list:\\n\",\n        \"      add_vars = dict(Node._parse_statements(statement))\\n\",\n        \"      new_bvars = {**bvars, **add_vars}\\n\",\n        \"      res = self._fromFunc(func, new_bvars)\\n\",\n        \"      children.append(self.child(prob, statement, res))\\n\",\n        \"    return children\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"lcEgcO7C_VlQ\"\n      },\n      \"source\": [\n        \"## 1. Probability trees\\n\",\n        \"\\n\",\n        \"A **probability tree** is a representation of a random experiment or process.\\n\",\n        \"Starting from the **root node**, the process iteratively takes **random\\n\",\n        \"transitions** to **child nodes**, terminating at a **leaf node**. A path from\\n\",\n        \"the root node to a node is a **(partial) realization**, and a path from the root\\n\",\n        \"node to a leaf node is a **total realization**. Every node in the tree has one\\n\",\n        \"or more **statements** associated with it. When a realization reaches a node,\\n\",\n        \"the statements indicate which values are bound to random variables.\\n\",\n        \"\\n\",\n        \"Let's create our first probability tree. It shows a random variable $X$ where: -\\n\",\n        \"$X = 0$ with probability $0.5$; - $X = 1$ with probability $0.3$; - and $X = 2$\\n\",\n        \"with probability $0.2$.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"IKiO-SgJ_VlQ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Creata a blank probability tree.\\n\",\n        \"pt = PTree()\\n\",\n        \"\\n\",\n        \"# Add a root node and the children.\\n\",\n        \"pt.root(\\n\",\n        \"    'O = 1',\\n\",\n        \"    [pt.child(0.5, 'X = 1'),\\n\",\n        \"     pt.child(0.3, 'X = 2'),\\n\",\n        \"     pt.child(0.2, 'X = 3')])\\n\",\n        \"\\n\",\n        \"# Display it.\\n\",\n        \"display(pt.show())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"pU9B9TJf_VlV\"\n      },\n      \"source\": [\n        \"We'll typically call the root node $O$, standing for \\\"**O**mega\\\" ($\\\\Omega$),\\n\",\n        \"which is a common name for the sample space in the literature.\\n\",\n        \"\\n\",\n        \"**Note:** This way of explicitly nesting nodes is the standard method for creating probability trees. We will learn a more concise, programatic method (that mimicks a probabilistic programming language) later in the tutorial.\\n\",\n        \"\\n\",\n        \"After creating a probability tree, we can ask it to return: \\n\",\n        \"-   the list of random variables and their values using the method `rvs()`; \\n\",\n        \"-   the probability distribution for a given random variable using \\n\",\n        \"`rv(varname)`; \\n\",\n        \"- the expected value of a *numerical* random variable with \\n\",\n        \"`expected(varname)`;\\n\",\n        \"- and obtain a random sample from the tree with `sample()`.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"a-MsyV_d_VlV\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"rvs = pt.rvs()\\n\",\n        \"print('Random variables:', rvs)\\n\",\n        \"\\n\",\n        \"pdist = pt.rv('X')\\n\",\n        \"print('P(X) =', pdist)\\n\",\n        \"\\n\",\n        \"expect = pt.expect('X')\\n\",\n        \"print('E(X) =', expect)\\n\",\n        \"\\n\",\n        \"smp = pt.sample()\\n\",\n        \"print('Sample =', smp)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"BscAftLn_VlZ\"\n      },\n      \"source\": [\n        \"### Causal dependencies\\n\",\n        \"\\n\",\n        \"In a probability tree, a causal dependency $X \\\\rightarrow Y$ is expressed\\n\",\n        \"through a node $X$ having a descendent node $Y$. For instance, consider the next\\n\",\n        \"probability tree:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"0DDBKwNs_Vla\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create a blank probability tree.\\n\",\n        \"pt = PTree()\\n\",\n        \"\\n\",\n        \"# Add a root node and the children.\\n\",\n        \"pt.root('O = 1', [\\n\",\n        \"    pt.child(0.3, 'X = 0', [\\n\",\n        \"        pt.child(0.2, 'Y = 0'),\\n\",\n        \"        pt.child(0.8, 'Y = 1'),\\n\",\n        \"    ]),\\n\",\n        \"    pt.child(0.7, 'X = 1', [\\n\",\n        \"        pt.child(0.8, 'Y = 0'),\\n\",\n        \"        pt.child(0.2, 'Y = 1'),\\n\",\n        \"    ]),\\n\",\n        \"])\\n\",\n        \"\\n\",\n        \"# Display it.\\n\",\n        \"display(pt.show())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"YenMXlr6_Vld\"\n      },\n      \"source\": [\n        \"Here $Y$ is a descendant of $X$ and therefore $X \\\\rightarrow Y$. This means that\\n\",\n        \"we can affect the value of $Y$ by choosing $X$ but not viceversa. The exact\\n\",\n        \"semantics of this requires **interventions**, which we'll review later. Notice\\n\",\n        \"how the value of $X$ changes the distribution over $Y$: - $P(Y=1|X=0) \\u003e\\n\",\n        \"P(Y=0|X=0)$, - $P(Y=1|X=1) \\u003c P(Y=0|X=1)$.\\n\",\n        \"\\n\",\n        \"If we want to express that neither $X \\\\rightarrow Y$ nor $Y \\\\rightarrow X$ are\\n\",\n        \"the case, then we need to combine both random variables into the same nodes as\\n\",\n        \"follows:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Pot5uw-R_Vld\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Creata a blank probability tree.\\n\",\n        \"pt = PTree()\\n\",\n        \"\\n\",\n        \"# Add a root node and the children.\\n\",\n        \"pt.root('O = 1', [\\n\",\n        \"    pt.child(0.3 * 0.2, 'X = 0, Y = 0'),\\n\",\n        \"    pt.child(0.3 * 0.8, 'X = 0, Y = 1'),\\n\",\n        \"    pt.child(0.7 * 0.8, 'X = 1, Y = 0'),\\n\",\n        \"    pt.child(0.7 * 0.2, 'X = 1, Y = 1')\\n\",\n        \"])\\n\",\n        \"\\n\",\n        \"# Display it.\\n\",\n        \"display(pt.show())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"t9ntPBZd_Vlk\"\n      },\n      \"source\": [\n        \"### Another tree: drug testing\\n\",\n        \"\\n\",\n        \"Let's build another example. Here we have a drug testing situation:\\n\",\n        \"\\n\",\n        \"-   A patient has a probability of being ill ($D = 1$).\\n\",\n        \"-   If the patient takes the drug ($T = 1$) when she is ill, she will likely\\n\",\n        \"    feel better ($R = 1$), otherwise she will likely feel worse ($R = 0$).\\n\",\n        \"-   However, if she takes the drug when she is not ill, the situation is\\n\",\n        \"    inverted: the drug might make her feel worse ($R = 0$).\\n\",\n        \"\\n\",\n        \"![Drug Testing CBN](http://www.adaptiveagents.org/_media/wiki/drug-testing.png)\\n\",\n        \"\\n\",\n        \"This tree can also be represented as the above causal Bayesian graph. This is\\n\",\n        \"always the case when the causal ordering of the random variables is the same, no\\n\",\n        \"matter which realization path is taken in the tree.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"AxK8DRP3_Vlk\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"med = PTree()\\n\",\n        \"med.root('O = 1', [\\n\",\n        \"    med.child(0.4, 'D = 0', [\\n\",\n        \"        med.child(0.5, 'T = 0',\\n\",\n        \"                  [med.child(0.2, 'R = 0'),\\n\",\n        \"                   med.child(0.8, 'R = 1')]),\\n\",\n        \"        med.child(0.5, 'T = 1',\\n\",\n        \"                  [med.child(0.8, 'R = 0'),\\n\",\n        \"                   med.child(0.2, 'R = 1')])\\n\",\n        \"    ]),\\n\",\n        \"    med.child(0.6, 'D = 1', [\\n\",\n        \"        med.child(0.5, 'T = 0',\\n\",\n        \"                  [med.child(0.8, 'R = 0'),\\n\",\n        \"                   med.child(0.2, 'R = 1')]),\\n\",\n        \"        med.child(0.5, 'T = 1',\\n\",\n        \"                  [med.child(0.2, 'R = 0'),\\n\",\n        \"                   med.child(0.8, 'R = 1')])\\n\",\n        \"    ])\\n\",\n        \"])\\n\",\n        \"\\n\",\n        \"print('Random variables:', med.rvs())\\n\",\n        \"display(med.show())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"Fq63jb0u_Vln\"\n      },\n      \"source\": [\n        \"### A tree that cannot be represented as a Bayesian graph: Weather-Barometer Worlds\\n\",\n        \"\\n\",\n        \"We can also build a tree where the different realization paths have different\\n\",\n        \"causal dependencies. For instance, imagine we have two possible worlds: - Our\\n\",\n        \"world ($A = 0$) where the weather ($W$) influences the barometer reading\\n\",\n        \"($B$); - An alien world ($A = 1$) where the barometer influences the weather.\\n\",\n        \"\\n\",\n        \"Such a situation with multiple causal dependencies cannot be captured in a\\n\",\n        \"single graphical model:\\n\",\n        \"\\n\",\n        \"![Weather-Barometer Worlds](http://www.adaptiveagents.org/_media/wiki/weather-barometer-worlds.png)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"er74BN7n_Vlo\"\n      },\n      \"source\": [\n        \"However, we can represent it using a probability tree:\\n\",\n        \"\\n\",\n        \"![Weather-Barometer Worlds Probability Tree](http://www.adaptiveagents.org/_media/wiki/wb_tree.png)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"afVSi5xo_Vlo\"\n      },\n      \"source\": [\n        \"### Exercise 1\\n\",\n        \"\\n\",\n        \"Now it's your turn to create a probability tree. Create the \\\"weather-barometer\\n\",\n        \"worlds\\\" probability tree and name it `wb`.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"bCeTXeTe7WDM\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ehQ37yPg7Wil\"\n      },\n      \"source\": [\n        \"#### Solution\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Q7W7exq4_Vlp\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create blank tree.\\n\",\n        \"wb = PTree()\\n\",\n        \"\\n\",\n        \"# Set the root node and its sub-nodes.\\n\",\n        \"wb.root('O = 1', [\\n\",\n        \"    wb.child(0.5, 'A = 0', [\\n\",\n        \"        wb.child(0.5, 'W = 0',\\n\",\n        \"                 [wb.child(0.75, 'B = 0'),\\n\",\n        \"                  wb.child(0.25, 'B = 1')]),\\n\",\n        \"        wb.child(0.5, 'W = 1',\\n\",\n        \"                 [wb.child(0.25, 'B = 0'),\\n\",\n        \"                  wb.child(0.75, 'B = 1')])\\n\",\n        \"    ]),\\n\",\n        \"    wb.child(0.5, 'A = 1', [\\n\",\n        \"        wb.child(0.5, 'B = 0',\\n\",\n        \"                 [wb.child(0.75, 'W = 0'),\\n\",\n        \"                  wb.child(0.25, 'W = 1')]),\\n\",\n        \"        wb.child(0.5, 'B = 1',\\n\",\n        \"                 [wb.child(0.25, 'W = 0'),\\n\",\n        \"                  wb.child(0.75, 'W = 1')])\\n\",\n        \"    ])\\n\",\n        \"])\\n\",\n        \"\\n\",\n        \"# Display it.\\n\",\n        \"display(wb.show())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"9TvtFpta_Vls\"\n      },\n      \"source\": [\n        \"### Remember:\\n\",\n        \"\\n\",\n        \"-   A node can contain more than one statement.\\n\",\n        \"-   The tree doesn't have to be balanced.\\n\",\n        \"\\n\",\n        \"See the next example.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"e4RxAStn_Vls\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"pt = PTree()\\n\",\n        \"pt.root('O = 1', [\\n\",\n        \"    pt.child(0.2, 'X = 0, Y = 0'),\\n\",\n        \"    pt.child(0.8, 'X = 1', [pt.child(0.3, 'Y = 1'),\\n\",\n        \"                            pt.child(0.7, 'Y = 2')])\\n\",\n        \"])\\n\",\n        \"\\n\",\n        \"display(pt.show())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"tZijtGvW_Vlw\"\n      },\n      \"source\": [\n        \"### Displaying additional information\\n\",\n        \"\\n\",\n        \"We can display additional information about probability trees: \\n\",\n        \"- **Unique identifiers**: Each node has an automatically assigned \\n\",\n        \"unique identifier. Use `show_id = True` to display it. \\n\",\n        \"- **Probability**: Each node has a probability of being realized. \\n\",\n        \"Use `show_prob = True` to display this information.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"xZRlhlq__Vlw\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"display(med.show(show_prob=True, show_id=True))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"CRsPVDcg_Vlz\"\n      },\n      \"source\": [\n        \"### Exercise 2\\n\",\n        \"\\n\",\n        \"For the probability tree `wb`: \\n\",\n        \"- list all the random variables; \\n\",\n        \"- compute the probability distribution of the barometer ($B$); \\n\",\n        \"- display the probability tree with the unique ids and probabilities\\n\",\n        \"of every node.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"qBqyFExK7eor\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"HHmLu4w_7e-S\"\n      },\n      \"source\": [\n        \"#### Solution\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"cHoN3mQp_Vl0\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"print(wb.rvs())\\n\",\n        \"print(wb.rv('B'))\\n\",\n        \"display(wb.show(show_id=True, show_prob=True))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"rqcodRJr_Vl3\"\n      },\n      \"source\": [\n        \"## 2. Propositions and min-cuts\\n\",\n        \"\\n\",\n        \"We've seen that a probability tree is a simple way of representing all the\\n\",\n        \"possible realizations and their causal dependencies. We now investigate the\\n\",\n        \"possible **events** in a probability tree.\\n\",\n        \"\\n\",\n        \"An **event** is a collection of full realizations. We can **describe** events\\n\",\n        \"using propositions about random variables (e.g. $W = 0$, $B = 1$) and the\\n\",\n        \"logical connectives of negation, conjunction (AND), and disjunction (OR). The\\n\",\n        \"connectives allow us to state composite events, such as $\\\\neg(W = 1 \\\\wedge B =\\n\",\n        \"0)$. For instance, the event $B = 0$ is the set of all realizations, i.e. paths\\n\",\n        \"from the root to a leaf, that **pass through a node** with the statement $B=0$.\\n\",\n        \"\\n\",\n        \"We can **represent** events using cuts, and in particular, **min-cuts**. A\\n\",\n        \"**min-cut** is a minimal representation of an event in terms of the nodes of a\\n\",\n        \"probability tree. The min-cut of an event collects the smallest number of nodes\\n\",\n        \"in the probability tree that resolves whether an event has occurred or not. In\\n\",\n        \"other words, if a realization hits a node in the min-cut, then we know for sure\\n\",\n        \"whether the event has occurred or not. (In measure theory, a similar notion to\\n\",\n        \"min-cut would be the algebra that renders the event measurable.)\\n\",\n        \"\\n\",\n        \"Our implementation of min-cuts furthermore distinguishes between the nodes that\\n\",\n        \"render the event true from the nodes that render the event false.\\n\",\n        \"\\n\",\n        \"Let's start by constructing a min-cut for a setting of a random variable in our\\n\",\n        \"drug testing example. Verify that the min-cut is correct for the setting of the\\n\",\n        \"random variable.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"CmjmqUAW_Vl3\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Build a cut for the proposition 'R = 1'.\\n\",\n        \"cut = med.prop('R=1')\\n\",\n        \"\\n\",\n        \"# The result is of type MinCut:\\n\",\n        \"print('Type of a cut:', type(cut))\\n\",\n        \"\\n\",\n        \"# Print the min-cut. Note that the elements in the\\n\",\n        \"# true and false sets refer to the ids of the prob tree.\\n\",\n        \"print('Min-cut for \\\"R = 1\\\":', cut)\\n\",\n        \"\\n\",\n        \"# Render the probability tree with a cut.\\n\",\n        \"display(med.show(cut=cut, show_id=True))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"9Bb9yBqP_Vl6\"\n      },\n      \"source\": [\n        \"Let's do a min-cut for not taking the treatment ($T = 0$)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"6-zNSWmL_Vl7\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Build a cut for the proposition 'T = 0'.\\n\",\n        \"cut = med.prop('T=0')\\n\",\n        \"\\n\",\n        \"# Print the min-cut. Note that the elements in the\\n\",\n        \"# true and false sets refer to the ids of the prob tree.\\n\",\n        \"print('Min-cut for \\\"T = 0\\\":', cut)\\n\",\n        \"\\n\",\n        \"# Render the probability tree with a cut.\\n\",\n        \"display(med.show(cut=cut, show_id=True))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"IQxIGXeu_Vl-\"\n      },\n      \"source\": [\n        \"We can build negative events too using the `~` unary operator. As an example,\\n\",\n        \"let's negate the previous event. Compare the two cuts. Notice that a negation\\n\",\n        \"simply inverts the nodes that are true and false.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"hMApKX3O_Vl_\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"cut = ~med.prop('T = 0')\\n\",\n        \"print('Min-cut for \\\"T = 0\\\":', med.prop('T = 0'))\\n\",\n        \"print('Min-cut for \\\"not T = 0\\\":', ~med.prop('T = 0'))\\n\",\n        \"display(med.show(cut=cut, show_id=True))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"DGP5kr7K_VmC\"\n      },\n      \"source\": [\n        \"Now let's build more complex events using conjunctions (`\\u0026`) and disjunctions\\n\",\n        \"(`|`). Make sure these min-cuts make sense to you. Notice that the conjunction\\n\",\n        \"of two events pick out the earliest occurrence of false nodes and the last\\n\",\n        \"occurence of true nodes, whereas the disjunction does the opposite.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"vOrfMXyA_VmD\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Recovery\\n\",\n        \"cut1 = med.prop('R=1')\\n\",\n        \"print('Cut for \\\"R = 1\\\":')\\n\",\n        \"display(med.show(cut=cut1))\\n\",\n        \"\\n\",\n        \"# Taking the treatment\\n\",\n        \"cut2 = med.prop('T=1')\\n\",\n        \"print('Cut for \\\"T=1\\\":')\\n\",\n        \"display(med.show(cut=cut2))\\n\",\n        \"\\n\",\n        \"# Conjunction: taking the treatment and recovery\\n\",\n        \"cut_and = cut1 \\u0026 cut2\\n\",\n        \"print('Cut for \\\"T=1 and R=1\\\":')\\n\",\n        \"display(med.show(cut=cut_and))\\n\",\n        \"\\n\",\n        \"# Disjunction: taking the treatment or recovery\\n\",\n        \"cut_or = cut1 | cut2\\n\",\n        \"print('Cut for \\\"T=1 or R=1\\\":')\\n\",\n        \"display(med.show(cut=cut_or))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"1AxBz2Ml_VmG\"\n      },\n      \"source\": [\n        \"### The precedence relation\\n\",\n        \"\\n\",\n        \"In addition to the Boolean operators, we can also use a causal connective which\\n\",\n        \"cannot stated in logical terms: the **precedence relation** $\\\\prec$. This\\n\",\n        \"relation allows building min-cuts for events where one event $A$ precedes\\n\",\n        \"another event $B$, written $A \\\\prec B$, and thus requires the additional\\n\",\n        \"information provided by the probability tree's structure.\\n\",\n        \"\\n\",\n        \"Let's try one example. We want to build the min-cut where having the disease\\n\",\n        \"($D=1$) precedes feeling better ($R=1$), and vice-versa.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"2WvNpbQG_VmH\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Disease and recovery min-cuts.\\n\",\n        \"cut1 = med.prop('D=1') \\u003c med.prop('R=1')\\n\",\n        \"cut2 = med.prop('R=1') \\u003c med.prop('D=1')\\n\",\n        \"\\n\",\n        \"# Display.\\n\",\n        \"print('Cut for D=1 \\u003c R=1:')\\n\",\n        \"display(med.show(cut=cut1))\\n\",\n        \"\\n\",\n        \"print('Cut for R=1 \\u003c D=1:')\\n\",\n        \"display(med.show(cut=cut2))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"YbYnVRiM_VmJ\"\n      },\n      \"source\": [\n        \"### Requirement: random variables must be measurable\\n\",\n        \"\\n\",\n        \"If we try to build a min-cut using a variable that is not measurable, then an\\n\",\n        \"exception is raised. For instance, the random variable $X$ below is not\\n\",\n        \"measurable within the probability tree, because the realization starting at the\\n\",\n        \"root and reaching the leaf $Y = 2$ never sets the value for $X$.\\n\",\n        \"\\n\",\n        \"Attempting to build a min-cut for an event involving $X$ will throw an error.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"ujFLeAMN_VmK\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"pt = PTree()\\n\",\n        \"pt.root('O = 1', [\\n\",\n        \"    pt.child(0.1, 'X = 0, Y = 0'),\\n\",\n        \"    pt.child(0.2, 'X = 1, Y = 1'),\\n\",\n        \"    pt.child(0.7, 'Y = 2')\\n\",\n        \"])\\n\",\n        \"\\n\",\n        \"display(pt.show())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"zyP7gSPl_VmN\"\n      },\n      \"source\": [\n        \"### Special case: probabilistic truth versus logical truth\\n\",\n        \"\\n\",\n        \"Let's have a look at one special case. Our definitions make a distinction\\n\",\n        \"between **logical** and **probabilistic truth**. This is best seen in the\\n\",\n        \"example below.\\n\",\n        \"\\n\",\n        \"In this example, we have a probability tree with three outcomes: $X = 1, 2$, and\\n\",\n        \"$3$. - $X = 1$ occurs with probability one. \\n\",\n        \"- Hence, probabilistically, the event $X=1$ is resolved at the level of the\\n\",\n        \"root node. \\n\",\n        \"- However, it isn't resolved at the logical level, since $X = 2$ or $X = 3$ \\n\",\n        \"can happen logically, although with probability zero.\\n\",\n        \"\\n\",\n        \"Distinguishing between logical truth and probabilistic truth is important for\\n\",\n        \"stating counterfactuals. This will become clearer later.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"8IXq-jVl_VmN\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# First we add all the nodes.\\n\",\n        \"pt = PTree()\\n\",\n        \"pt.root('O = 1',\\n\",\n        \"        [pt.child(1, 'X = 1'),\\n\",\n        \"         pt.child(0, 'X = 2'),\\n\",\n        \"         pt.child(0, 'X = 3')])\\n\",\n        \"\\n\",\n        \"# Show the cut for 'X = 0'\\n\",\n        \"cut = pt.prop('X = 1')\\n\",\n        \"print('While the root node \\\"O=1\\\" does resolve the event \\\"X=1\\\"\\\\n' +\\n\",\n        \"      'probabilistically, it does not resolve the event logically.')\\n\",\n        \"display(pt.show(cut=cut))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"K7OJKlcZ_VmQ\"\n      },\n      \"source\": [\n        \"### Exercise 3\\n\",\n        \"\\n\",\n        \"For the `wb` probability tree, build the min-cuts for the following events:\\n\",\n        \"- the world is alien ($A = 1$); \\n\",\n        \"- the weather is sunny ($W = 1$); \\n\",\n        \"- the barometer goes down and the weather is sunny ($B = 0 \\\\wedge W = 1$); \\n\",\n        \"- the negation of \\\"barometer does not go down or weather is not sunny\\\", \\n\",\n        \"$\\\\neg(\\\\neg(B = 0) \\\\vee \\\\neg(W = 1))$.\\n\",\n        \"\\n\",\n        \"Display every min-cut. In particular, compare the last two. What do you observe?\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"HlKSQi1l7rDJ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"bD3LT8NV7rRV\"\n      },\n      \"source\": [\n        \"#### Solution\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"3ttu0mlR_VmQ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Exercise.\\n\",\n        \"\\n\",\n        \"# A = 1.\\n\",\n        \"cut = wb.prop('A=1')\\n\",\n        \"print('Cut for \\\"A=1\\\":')\\n\",\n        \"display(wb.show(cut=cut))\\n\",\n        \"\\n\",\n        \"# W = 1.\\n\",\n        \"cut = wb.prop('W=1')\\n\",\n        \"print('Cut for \\\"W=1\\\":')\\n\",\n        \"display(wb.show(cut=cut))\\n\",\n        \"\\n\",\n        \"# B = 0 and W = 1.\\n\",\n        \"cut = wb.prop('B=0') \\u0026 wb.prop('W=1')\\n\",\n        \"print('Cut for \\\"B=0 and W=1\\\":')\\n\",\n        \"display(wb.show(cut=cut))\\n\",\n        \"\\n\",\n        \"# not( not(B = 0) or not(W = 1) ).\\n\",\n        \"cut = ~(~wb.prop('B=0') | ~wb.prop('W=1'))\\n\",\n        \"print('Cut for \\\"not( not(B=0) or not(W=1) )\\\":')\\n\",\n        \"display(wb.show(cut=cut))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ehK-sadN_VmT\"\n      },\n      \"source\": [\n        \"### Exercise 4\\n\",\n        \"\\n\",\n        \"For the `wb` probability tree, determine the min-cut for whenever the weather\\n\",\n        \"($W$) affects the value of the barometer ($B$). This min-cut should coincide\\n\",\n        \"with the min-cut for the event ($A=0$).\\n\",\n        \"\\n\",\n        \"Hint: enumerate all the 4 cases (values for $W$ and $B$) and combine them using\\n\",\n        \"disjunctions.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"rZe9JCMB7wo9\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ZtQffc1P7wxk\"\n      },\n      \"source\": [\n        \"#### Solution\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"bX6AxxDk_VmT\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Build the min-cut.\\n\",\n        \"cut = (wb.prop('W=0') \\u003c wb.prop('B=0')) \\\\\\n\",\n        \"    | (wb.prop('W=0') \\u003c wb.prop('B=1')) \\\\\\n\",\n        \"    | (wb.prop('W=1') \\u003c wb.prop('B=0')) \\\\\\n\",\n        \"    | (wb.prop('W=1') \\u003c wb.prop('B=1'))\\n\",\n        \"\\n\",\n        \"# Display.\\n\",\n        \"display(wb.show(cut=cut))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"5PCmW5ol_VmX\"\n      },\n      \"source\": [\n        \"## 3. Critical sets\\n\",\n        \"\\n\",\n        \"Min-cuts correspond to the smallest set of nodes where it becomes clear whether\\n\",\n        \"an event has occurred or not. Every min-cut has an associated **critical set**:\\n\",\n        \"the set of nodes that **determines** whether an event won't occur. Given an\\n\",\n        \"event, the associated **critical set** is defined as the set of parents of the\\n\",\n        \"event's false set in the min-cut.\\n\",\n        \"\\n\",\n        \"Together, a critical set and a min-cut form the set of **mechanisms** that\\n\",\n        \"determine the occurrence of the event.\\n\",\n        \"\\n\",\n        \"Let's have a look at a simple example. Here, the critical set is the singleton\\n\",\n        \"containing the root node. Critical sets are computed using the function\\n\",\n        \"`PTree.critical(cut)`, where `cut` is an event's min-cut. We can display the\\n\",\n        \"critical set by providing the optional argument `crit` to the `PTree.show()`\\n\",\n        \"function.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"9g2F9NKF_VmX\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# First we add all the nodes.\\n\",\n        \"pt = PTree()\\n\",\n        \"pt.root('O = 1',\\n\",\n        \"        [pt.child(1, 'X = 1'),\\n\",\n        \"         pt.child(0, 'X = 2'),\\n\",\n        \"         pt.child(0, 'X = 3')])\\n\",\n        \"\\n\",\n        \"# Get the critical set for a min-cut.\\n\",\n        \"cut = pt.prop('X = 1')\\n\",\n        \"crit = pt.critical(cut)\\n\",\n        \"\\n\",\n        \"# Show the critical set.\\n\",\n        \"print('Min-cut for \\\"X=1\\\":', cut)\\n\",\n        \"print('Critical set for \\\"X=1\\\":', crit)\\n\",\n        \"display(pt.show(show_id=True, cut=cut, crit=crit))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"wE7voIju_Vma\"\n      },\n      \"source\": [\n        \"Let's work out another example. Consider the following probability tree.\\n\",\n        \"\\n\",\n        \"![Min-Cuts and Critical Sets](http://www.adaptiveagents.org/_media/wiki/mincut-critical.png)\\n\",\n        \"\\n\",\n        \"Try to predict the min-cut and the critical set of the events $X=1$, $Y=1$, and\\n\",\n        \"$Y=0$.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"4YvLDtzB_Vma\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"pt = PTree()\\n\",\n        \"pt.root('O = 1', [\\n\",\n        \"    pt.child(0.2, 'X = 0, Y = 0'),\\n\",\n        \"    pt.child(0.8, 'X = 1', [pt.child(0.3, 'Y = 1'),\\n\",\n        \"                            pt.child(0.7, 'Y = 0')])\\n\",\n        \"])\\n\",\n        \"\\n\",\n        \"# Original tree.\\n\",\n        \"print('Original tree:')\\n\",\n        \"display(pt.show(show_id=True))\\n\",\n        \"\\n\",\n        \"# 'X=1'\\n\",\n        \"cut = pt.prop('X=1')\\n\",\n        \"crit = pt.critical(cut)\\n\",\n        \"print('Min-cut and critical set for \\\"X=1\\\":')\\n\",\n        \"display(pt.show(show_id=True, cut=cut, crit=crit))\\n\",\n        \"\\n\",\n        \"# 'Y=1'\\n\",\n        \"cut = pt.prop('Y=1')\\n\",\n        \"crit = pt.critical(cut)\\n\",\n        \"print('Min-cut and critical set for \\\"Y=1\\\":')\\n\",\n        \"display(pt.show(show_id=True, cut=cut, crit=crit))\\n\",\n        \"\\n\",\n        \"# 'Y=0'\\n\",\n        \"cut = pt.prop('Y=0')\\n\",\n        \"crit = pt.critical(cut)\\n\",\n        \"print('Min-cut and critical set for \\\"Y=0\\\":')\\n\",\n        \"display(pt.show(show_id=True, cut=cut, crit=crit))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"CtfxGITj_Vmd\"\n      },\n      \"source\": [\n        \"### Exercise 5\\n\",\n        \"\\n\",\n        \"For the `wb` tree, compute and display the mechanisms (i.e. the min-cut and the\\n\",\n        \"critical set) for the following events: \\n\",\n        \"- the world is alien ($A = 1$); \\n\",\n        \"- the barometer goes down ($B = 0$); \\n\",\n        \"- the weather is sunny ($W = 1$); \\n\",\n        \"- the barometer goes down and weather is sunny ($B = 0 \\\\wedge W = 1$).\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"pw-AG0Ma76Al\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"-1fUlg1O76bp\"\n      },\n      \"source\": [\n        \"#### Solution\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Wqkni_k4_Vmd\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Exercise.\\n\",\n        \"\\n\",\n        \"# A = 1.\\n\",\n        \"cut = wb.prop('A=1')\\n\",\n        \"crit = wb.critical(cut)\\n\",\n        \"print('Mechanism for \\\"A=1\\\":')\\n\",\n        \"display(wb.show(cut=cut, crit=crit))\\n\",\n        \"\\n\",\n        \"# B = 0.\\n\",\n        \"cut = wb.prop('B=0')\\n\",\n        \"crit = wb.critical(cut)\\n\",\n        \"print('Mechanisms for \\\"B=0\\\":')\\n\",\n        \"display(wb.show(cut=cut, crit=crit))\\n\",\n        \"\\n\",\n        \"# W = 1.\\n\",\n        \"cut = wb.prop('W=1')\\n\",\n        \"crit = wb.critical(cut)\\n\",\n        \"print('Mechanisms for \\\"W=1\\\":')\\n\",\n        \"display(wb.show(cut=cut, crit=crit))\\n\",\n        \"\\n\",\n        \"# B = 0 and W = 1.\\n\",\n        \"cut = wb.prop('B=0') \\u0026 wb.prop('W=1')\\n\",\n        \"crit = wb.critical(cut)\\n\",\n        \"print('Mechanisms for \\\"B=0 and W=1\\\":')\\n\",\n        \"display(wb.show(cut=cut, crit=crit))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"FPMH5CQ-_Vmg\"\n      },\n      \"source\": [\n        \"We'll return later to critical sets, as they are important for determining the\\n\",\n        \"operations of conditioning and intervening on probability trees.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"9ggdcdjg_Vmg\"\n      },\n      \"source\": [\n        \"## 4. Evaluating probabilities\\n\",\n        \"\\n\",\n        \"We can also evaluate probabilities of events. For instance, you may ask:\\n\",\n        \"\\n\",\n        \"-   \\\"$P(R=1)$: What is the probability of recovery?\\\"\\n\",\n        \"-   \\\"$P(R=0)$: What is the probability of not recovering?\\\"\\n\",\n        \"-   \\\"$P(D=1)$: What is the probability of having the disease?\\\"\\n\",\n        \"-   \\\"$P(D=1 \\\\wedge R=0)$: What is the probability of taking the drug and not\\n\",\n        \"    recovering?\\\"\\n\",\n        \"-   \\\"$P(D=1 \\\\vee R=0)$: What is the probability of taking the drug or not\\n\",\n        \"    recovering?\\\"\\n\",\n        \"-   \\\"$P(D=1 \\\\prec R=1)$: What is the probability of taking the drug preceding\\n\",\n        \"    the recovery?\\\"\\n\",\n        \"\\n\",\n        \"To do so, we use the min-cut of the event.\\n\",\n        \"\\n\",\n        \"Let's have a look at some of them. Compare to the graph of the probability tree.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"lkH9LPzB_Vmh\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Min-cuts for some events\\n\",\n        \"cut1 = med.prop('R=1')\\n\",\n        \"cut2 = med.prop('D=1')\\n\",\n        \"cut1_neg = ~cut1\\n\",\n        \"cut_and = cut2 \\u0026 cut1_neg\\n\",\n        \"cut_or = cut2 | cut1_neg\\n\",\n        \"cut_prec = cut2 \\u003c cut1\\n\",\n        \"\\n\",\n        \"print('P(R=1) =', med.prob(cut1))\\n\",\n        \"print('P(R=0) =', med.prob(cut1_neg))\\n\",\n        \"print('P(D=1) =', med.prob(cut2))\\n\",\n        \"print('P(D=1 and R=0) =', med.prob(cut_and))\\n\",\n        \"print('P(D=1 or R=0) =', med.prob(cut_or))\\n\",\n        \"print('P(D=1 precedes R=1) =', med.prob(cut_prec))\\n\",\n        \"\\n\",\n        \"display(med.show(show_prob=True))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"Bwc00gKT_Vmj\"\n      },\n      \"source\": [\n        \"### Exercise 6\\n\",\n        \"\\n\",\n        \"For the `wb` tree, evaluate the probability of the following events: \\n\",\n        \"- the world is ours ($A = 0$) and the barometer goes down ($B = 0$); \\n\",\n        \"- it is not the case that the barometer goes down or the weather \\n\",\n        \"is sunny ($\\\\neg(B = 0 \\\\vee W = 1)$).\\n\",\n        \"\\n\",\n        \"Print the probabilities and display the probability trees.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"5NWdMrLW7_cj\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"NUy8SH-O7_jT\"\n      },\n      \"source\": [\n        \"#### Solution\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"xTbTw3Ky_Vmk\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Exercise.\\n\",\n        \"\\n\",\n        \"# A = 0 and B = 0\\n\",\n        \"cut = wb.prop('A=0') \\u0026 wb.prop('B=0')\\n\",\n        \"print('P(A=0 and B=0) =', wb.prob(cut))\\n\",\n        \"display(wb.show(cut=cut))\\n\",\n        \"\\n\",\n        \"# not(B = 0 or W = 1)\\n\",\n        \"cut = ~(wb.prop('B=0') | wb.prop('W=1'))\\n\",\n        \"print('P(not(B=0 or W=1)) =', wb.prob(cut))\\n\",\n        \"display(wb.show(cut=cut))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"6Y8wjMCi_Vmm\"\n      },\n      \"source\": [\n        \"## 5. Conditioning\\n\",\n        \"\\n\",\n        \"We have learned how to represent events using min-cuts. Now we can use min-cuts\\n\",\n        \"to **condition** probability trees **on events**. Conditioning allows asking\\n\",\n        \"questions after making **observations**, such as:\\n\",\n        \"\\n\",\n        \"-   \\\"$P(R=1|T=1)$: What is the probability of recovery given that a patient has\\n\",\n        \"    taken the treatment?\\\"\\n\",\n        \"-   \\\"$P(D=1|R=1)$: What is the probability of having had the disease given that\\n\",\n        \"    a patient has recovered/felt better?\\\"\\n\",\n        \"\\n\",\n        \"### How to compute conditions\\n\",\n        \"\\n\",\n        \"Conditioning takes a probability tree and produces a new probability tree with\\n\",\n        \"modified transition probabilities. These are obtained by removing all the total\\n\",\n        \"realizations that are **incompatible with the condition**, and then\\n\",\n        \"renormalizing, as illustrated below.\\n\",\n        \"\\n\",\n        \"\\u003cimg src=\\\"http://www.adaptiveagents.org/_media/wiki/see.png\\\" alt=\\\"Seeing\\\" width=\\\"700\\\"/\\u003e\\n\",\n        \"\\n\",\n        \"In the example, we compute the result of seeing $Y= 1$. \\n\",\n        \"Conditioning on an event proceeds in two steps: \\n\",\n        \"- first, we remove the probability mass of the realizations\\n\",\n        \"passing through the false set of the event’s min-cut \\n\",\n        \"(hihglighted in dark, bottom row); \\n\",\n        \"- then we renormalize the probabilities. \\n\",\n        \"\\n\",\n        \"We can do this recursively by aggregating the original probabilities \\n\",\n        \"of the true set. The top row shows the result of conditioning a\\n\",\n        \"probability tree on the event $Y= 1$, which also highlights the modified\\n\",\n        \"transition probabilities in red. The bottom row shows the same \\n\",\n        \"operation in a probability mass diagram, which is a representation of a\\n\",\n        \"probability tree that emphasizes the probabilities.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"USe_1o89_Vmn\"\n      },\n      \"source\": [\n        \"Let's have a look at the drug testing example. We will condition on $R=1$.\\n\",\n        \"Observe how the probabilities change.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"-Is4k0IR_Vmn\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Now we condition.\\n\",\n        \"cut = med.prop('R=1')\\n\",\n        \"med_see = med.see(cut)\\n\",\n        \"\\n\",\n        \"# Critical set.\\n\",\n        \"crit = med.critical(cut)\\n\",\n        \"\\n\",\n        \"# Compare probabilities of events.\\n\",\n        \"print('Before conditioning: P(R=1) =', med.prob(cut))\\n\",\n        \"print('After  conditioning: P(R=1 | R=1) =', med_see.prob(cut))\\n\",\n        \"\\n\",\n        \"# Display both trees for comparison.\\n\",\n        \"print('\\\\nOriginal tree:')\\n\",\n        \"display(med.show(show_prob=True))\\n\",\n        \"\\n\",\n        \"print('Tree after conditioning on \\\"R=1\\\":')\\n\",\n        \"display(med_see.show(cut=cut, crit=crit, show_prob=True))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"KF9E83_8_Vmq\"\n      },\n      \"source\": [\n        \"We can condition on composite events too and evaluate the probability of events.\\n\",\n        \"\\n\",\n        \"Assume you observe that the drug was taken and a recovery is observed. Then, it\\n\",\n        \"is very likely that the patient had the disease.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"L_ULii7K_Vmq\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Min-cuts.\\n\",\n        \"cut_r = med.prop('R=1')\\n\",\n        \"cut_tr = med.prop('T=1') \\u0026 med.prop('R=1')\\n\",\n        \"cut_disease = med.prop('D=1')\\n\",\n        \"\\n\",\n        \"# Critical set.\\n\",\n        \"crit = med.critical(cut_tr)\\n\",\n        \"\\n\",\n        \"# Condition.\\n\",\n        \"med_see_r = med.see(cut_r)\\n\",\n        \"med_see_tr = med.see(cut_tr)\\n\",\n        \"\\n\",\n        \"# Now we evaluate the posterior probability of having a disease.\\n\",\n        \"print('P(D = 1) =', med.prob(cut_disease))\\n\",\n        \"print('P(D = 1 | R = 1) =', med_see_r.prob(cut_disease))\\n\",\n        \"print('P(D = 1 | T = 1, R = 1) =', med_see_tr.prob(cut_disease))\\n\",\n        \"\\n\",\n        \"# Display prob tree.\\n\",\n        \"print('\\\\nProbability tree after conditioning on \\\"T=1 and R=1\\\":')\\n\",\n        \"display(med_see_tr.show(cut=cut_tr, show_id=True, crit=crit))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"RVtd_Pov_Vmt\"\n      },\n      \"source\": [\n        \"### Special case: conditioning on trivial events\\n\",\n        \"\\n\",\n        \"Let's have a look at a special case: conditioning on **trivial events**, namely\\n\",\n        \"the **sure event** and the **impossible event**.\\n\",\n        \"\\n\",\n        \"Observe that conditioning on trivial events does not change the probability\\n\",\n        \"tree.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"R9Zcg6lH_Vmt\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create a simple tree.\\n\",\n        \"pt = PTree()\\n\",\n        \"pt.root('O = 1', [\\n\",\n        \"    pt.child(0.6, 'X = 0, Y = 0'),\\n\",\n        \"    pt.child(0.6, 'X = 1', [pt.child(0.3, 'Y = 0'),\\n\",\n        \"                            pt.child(0.7, 'Y = 0')]),\\n\",\n        \"])\\n\",\n        \"\\n\",\n        \"# Show tree.\\n\",\n        \"print('Original tree:')\\n\",\n        \"display(pt.show())\\n\",\n        \"\\n\",\n        \"# Condition on Y = 0.\\n\",\n        \"cut = pt.prop('Y=0')\\n\",\n        \"pt_see_sure = pt.see(cut)\\n\",\n        \"print('Conditioning on \\\"Y = 0\\\":')\\n\",\n        \"display(pt_see_sure.show(cut=cut))\\n\",\n        \"\\n\",\n        \"# Condiiton on not Y = 0.\\n\",\n        \"neg_cut = ~cut\\n\",\n        \"pt_see_impossible = pt.see(neg_cut)\\n\",\n        \"print('Conditioning on \\\"not Y = 0\\\":')\\n\",\n        \"display(pt_see_impossible.show(cut=neg_cut))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"RLijoy-__Vmy\"\n      },\n      \"source\": [\n        \"### Special case: conditioning on an event with probability zero\\n\",\n        \"\\n\",\n        \"Let's return to our simple example with tree outcomes. Assume we're conditioning\\n\",\n        \"on an event with **probability zero**, which can happen **logically but not\\n\",\n        \"probabilistically**. Using the measure-theoretic definition of conditional\\n\",\n        \"probabilities, we are required to pick a so-called **version** of the\\n\",\n        \"conditional distribution. There are infinite choices.\\n\",\n        \"\\n\",\n        \"Here, we have settled on the following. If we condition on an event with\\n\",\n        \"probability zero, then we assign uniform probability over all the possible\\n\",\n        \"transitions. This is just one arbitrary way of solving this problem.\\n\",\n        \"\\n\",\n        \"See the example below.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"61sYhPTI_Vmz\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create a simple tree.\\n\",\n        \"pt = PTree()\\n\",\n        \"pt.root(\\n\",\n        \"    'O = 1',\\n\",\n        \"    [pt.child(1.0, 'X = 1'),\\n\",\n        \"     pt.child(0.0, 'X = 2'),\\n\",\n        \"     pt.child(0.0, 'X = 3')])\\n\",\n        \"\\n\",\n        \"# Let's pick the negative event for our minimal prob tree.\\n\",\n        \"cut = ~pt.prop('X = 1')\\n\",\n        \"display(pt.show(cut=cut))\\n\",\n        \"\\n\",\n        \"pt_see = pt.see(cut)\\n\",\n        \"display(pt_see.show(cut=cut))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"2fuYExoQ_Vm1\"\n      },\n      \"source\": [\n        \"### Exercise 7\\n\",\n        \"\\n\",\n        \"For the `wb` tree, print the probability distribution of \\n\",\n        \"- the weather $W$ \\n\",\n        \"- and the barometer $B$.\\n\",\n        \"\\n\",\n        \"Do this for the following probability trees: \\n\",\n        \"- the original tree \\n\",\n        \"- the probability tree conditioned on it being an alien world ($\\\\theta = 1$) \\n\",\n        \"- the probability tree conditioned on the weather being sunny ($W = 1$).\\n\",\n        \"\\n\",\n        \"What do you observe? Does observing (conditioning) give you any additional\\n\",\n        \"information? If no, why? If yes, why is that?\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"D3WqIjaK8FSA\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"13s9eGWF8FZA\"\n      },\n      \"source\": [\n        \"#### Solution\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"mMryXm_d_Vm2\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Exercise\\n\",\n        \"\\n\",\n        \"# No condition.\\n\",\n        \"print('P(W) =', wb.rv('W'))\\n\",\n        \"print('P(B) =', wb.rv('B'))\\n\",\n        \"\\n\",\n        \"# Condition on \\\"A = 1\\\"\\n\",\n        \"cut = wb.prop('A=1')\\n\",\n        \"print('P(W | A=1) =', wb.see(cut).rv('W'))\\n\",\n        \"print('P(B | A=1) =', wb.see(cut).rv('B'))\\n\",\n        \"\\n\",\n        \"# Condition on \\\"W = 1\\\"\\n\",\n        \"cut = wb.prop('W=1')\\n\",\n        \"print('P(W | W=1) =', wb.see(cut).rv('W'))\\n\",\n        \"print('P(B | W=1) =', wb.see(cut).rv('B'))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"9Dmexb79_Vm4\"\n      },\n      \"source\": [\n        \"## 6. Interventions\\n\",\n        \"\\n\",\n        \"Interventions are at the heart of causal reasoning.\\n\",\n        \"\\n\",\n        \"We have seen how to filter probability trees using observational data through\\n\",\n        \"the use of conditioning. Now we investigate how a probability tree transforms\\n\",\n        \"when it is intervened. An **intervention** is a change to the random process\\n\",\n        \"itself to make something happen, as opposed to a filtration. We can ask\\n\",\n        \"questions like:\\n\",\n        \"\\n\",\n        \"-   \\\"$P(R=1|T \\\\leftarrow 1)$: What is the probability of recovery given that **I\\n\",\n        \"    take the drug**?\\\"\\n\",\n        \"-   \\\"$P(D=1|T \\\\leftarrow 1 \\\\wedge R=1)$: What is the probability of having the\\n\",\n        \"    disease given **that I take the drug** and that I observe a recovery?\\\"\\n\",\n        \"\\n\",\n        \"Here, the notation $T \\\\leftarrow 1$ is a shorthand for the more common notation\\n\",\n        \"$\\\\mathrm{do}(T = 1)$.\\n\",\n        \"\\n\",\n        \"### How to compute interventions\\n\",\n        \"\\n\",\n        \"Interventions differ from conditioning in the following: \\n\",\n        \"- they change the transition probabilities **minimally**, \\n\",\n        \"so as to make a desired event happen; \\n\",\n        \"- they **do not filter** the total realizations of the probability tree; \\n\",\n        \"- they are **easier to execute** than conditions, because they only \\n\",\n        \"change the transition probabilities that leave the critical set, \\n\",\n        \"and they do not require the backward induction of probabilities. \\n\",\n        \"\\n\",\n        \"See the illustration below.\\n\",\n        \"\\n\",\n        \"\\u003cimg src=\\\"http://www.adaptiveagents.org/_media/wiki/do.png\\\" alt=\\\"Doing\\\" width=\\\"700\\\"/\\u003e\\n\",\n        \"\\n\",\n        \"Example intervention on $Y \\\\leftarrow 1$. An intervention proceeds in two steps:\\n\",\n        \"- first, it selects the partial realizations starting in a critical node \\n\",\n        \"and ending in a leaf that traverse the false set of the event’s min-cut; \\n\",\n        \"- then it removes their probability mass, renormalizing the probabilities\\n\",\n        \"from the transitions leaving the critical set. \\n\",\n        \"\\n\",\n        \"The top row shows the result of intervening a probability tree\\n\",\n        \"on $Y \\\\leftarrow 1$. The bottom row show the same procedure on \\n\",\n        \"the corresponding probability mass diagram.\\n\",\n        \"\\n\",\n        \"Let's start with a simple comparison to illustrate the difference.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"z4PLcgN5_Vm5\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"pt = PTree()\\n\",\n        \"pt.root('O = 1', [\\n\",\n        \"    pt.child(0.2, 'X = 0, Y = 0'),\\n\",\n        \"    pt.child(0.8, 'X = 1', [pt.child(0.3, 'Y = 1'),\\n\",\n        \"                            pt.child(0.7, 'Y = 0')])\\n\",\n        \"])\\n\",\n        \"\\n\",\n        \"print('Original:')\\n\",\n        \"display(pt.show(show_prob=True))\\n\",\n        \"\\n\",\n        \"# 'Y=1'\\n\",\n        \"cut = pt.prop('Y = 1')\\n\",\n        \"crit = pt.critical(cut)\\n\",\n        \"pt_see = pt.see(cut)\\n\",\n        \"pt_do = pt.do(cut)\\n\",\n        \"print('Condition on \\\"Y=1\\\":')\\n\",\n        \"display(pt_see.show(cut=cut, crit=crit))\\n\",\n        \"print('Intervention on \\\"Y\\u003c-1\\\":')\\n\",\n        \"display(pt_do.show(cut=cut, crit=crit))\\n\",\n        \"\\n\",\n        \"# 'Y=0'\\n\",\n        \"cut = pt.prop('Y = 0')\\n\",\n        \"crit = pt.critical(cut)\\n\",\n        \"pt_see = pt.see(cut)\\n\",\n        \"pt_do = pt.do(cut)\\n\",\n        \"print('Condition on \\\"Y = 0\\\":')\\n\",\n        \"display(pt_see.show(cut=cut, crit=crit))\\n\",\n        \"print('Intervention on \\\"Y \\u003c- 0\\\":')\\n\",\n        \"display(pt_do.show(cut=cut, crit=crit))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"xJ-_TtAY_Vm7\"\n      },\n      \"source\": [\n        \"Notice that the mechanisms for $Y=0$ and $Y=1$ are different. In general, a\\n\",\n        \"single random variable can have **multiple mechanism** for setting their\\n\",\n        \"individual values.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"LUvv_FNz_Vm8\"\n      },\n      \"source\": [\n        \"Let's return to our drug testing example. We investigate the effect of taking\\n\",\n        \"the treatment, that is, by intervening on $T \\\\leftarrow 1$. How do the\\n\",\n        \"probabilities of: \\n\",\n        \"- having the disease ($D = 1$); \\n\",\n        \"- taking the treatment ($T = 1$); \\n\",\n        \"- and recovering ($R = 1$)\\n\",\n        \"\\n\",\n        \"change after taking the treatment ($T \\\\leftarrow 1$)?\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"6iFDVc7Z_Vm8\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Min-Cuts.\\n\",\n        \"cut_dis = med.prop('D = 1')\\n\",\n        \"cut_arg = med.prop('R = 1')\\n\",\n        \"cut_do = med.prop('T = 1')\\n\",\n        \"\\n\",\n        \"# Critical set.\\n\",\n        \"crit_do = med.critical(cut_do)\\n\",\n        \"\\n\",\n        \"# Perform intervention.\\n\",\n        \"med_do = med.do(cut_do)\\n\",\n        \"\\n\",\n        \"# Display original tree.\\n\",\n        \"print('Original tree:')\\n\",\n        \"print('P(D = 1) =', med.prob(cut_dis))\\n\",\n        \"print('P(T = 1) =', med.prob(cut_do))\\n\",\n        \"print('P(R = 1) =', med.prob(cut_arg))\\n\",\n        \"display(med.show(cut=cut_do, show_prob=True, crit=crit_do))\\n\",\n        \"\\n\",\n        \"# Display tree after invervention.\\n\",\n        \"print('Tree after intervening on \\\"T \\u003c- 1\\\":')\\n\",\n        \"print('P(D = 1 | T \\u003c- 1) =', med_do.prob(cut_dis))\\n\",\n        \"print('P(T = 1 | T \\u003c- 1) =', med_do.prob(cut_do))\\n\",\n        \"print('P(R = 1 | T \\u003c- 1) =', med_do.prob(cut_arg))\\n\",\n        \"display(med_do.show(cut=cut_do, show_prob=True, crit=crit_do))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"9auv9QLe_Vm_\"\n      },\n      \"source\": [\n        \"In other words, for the example above, taking the treatment increases the\\n\",\n        \"chances of recovery. This is due to the base rates (i.e. the probability of\\n\",\n        \"having a disease). The base rates are not affected by the decision of taking the\\n\",\n        \"treatment.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"RXjEiNWa_VnA\"\n      },\n      \"source\": [\n        \"### Special case: intervening on an event with probability zero\\n\",\n        \"\\n\",\n        \"Assume we're intervening on an event with **probability zero**. Recall that this\\n\",\n        \"is possible **logically**, but **not probabilistically**. How do we set the\\n\",\n        \"transition probabilities leaving the critical set? Here again we settle on\\n\",\n        \"assigning uniform probabilities over all the transitions affected by the\\n\",\n        \"intervention.\\n\",\n        \"\\n\",\n        \"See the example below.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"NUgHl3mT_VnA\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create a simple tree.\\n\",\n        \"pt = PTree()\\n\",\n        \"pt.root(\\n\",\n        \"    'O = 1',\\n\",\n        \"    [pt.child(1.0, 'X = 1'),\\n\",\n        \"     pt.child(0.0, 'X = 2'),\\n\",\n        \"     pt.child(0.0, 'X = 3')])\\n\",\n        \"\\n\",\n        \"# Let's pick the negative event for our minimal prob tree.\\n\",\n        \"cut = ~pt.prop('X = 1')\\n\",\n        \"crit = pt.critical(cut)\\n\",\n        \"\\n\",\n        \"# Intervene.\\n\",\n        \"pt_do = pt.do(cut)\\n\",\n        \"\\n\",\n        \"# Show results.\\n\",\n        \"print('Before the intervention:')\\n\",\n        \"display(pt.show(cut=cut, crit=crit))\\n\",\n        \"print('After the invention on \\\"not X \\u003c- 1\\\":')\\n\",\n        \"display(pt_do.show(cut=cut, crit=crit))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"qNqHBq19_VnD\"\n      },\n      \"source\": [\n        \"### Exercise 8\\n\",\n        \"\\n\",\n        \"For the `wb` tree, print the probability distribution of \\n\",\n        \"- the weather $W$ \\n\",\n        \"- and the barometer $B$.\\n\",\n        \"\\n\",\n        \"Do this for the following probability trees: \\n\",\n        \"- the original tree \\n\",\n        \"- the probability tree resulting from enforcing it to being \\n\",\n        \"an alien world ($A \\\\leftarrow 1$) \\n\",\n        \"- the probability tree resulting from setting the weather to\\n\",\n        \"being sunny ($W \\\\leftarrow 1$).\\n\",\n        \"\\n\",\n        \"What do you observe? Compare these results with your previous exercise, where\\n\",\n        \"you conditioned on the same events. Why are the probabilities different when you\\n\",\n        \"condition and when you intervene? How is this related to the different causal\\n\",\n        \"dependencies in both worlds?\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"pgP-6OwU8LBq\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"9JFZjAra8LJd\"\n      },\n      \"source\": [\n        \"#### Solution\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"8Fui2W_l_VnE\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Exercise\\n\",\n        \"\\n\",\n        \"# No intervention.\\n\",\n        \"print('P(W) =', wb.rv('W'))\\n\",\n        \"print('P(B) =', wb.rv('B'))\\n\",\n        \"\\n\",\n        \"# Intervention on \\\"A \\u003c- 1\\\"\\n\",\n        \"cut = wb.prop('A=1')\\n\",\n        \"print('P(W|A \\u003c- 1) =', wb.do(cut).rv('W'))\\n\",\n        \"print('P(B|A \\u003c- 1) =', wb.do(cut).rv('B'))\\n\",\n        \"\\n\",\n        \"# Condition on \\\"W \\u003c- 1\\\"\\n\",\n        \"cut = wb.prop('W=1')\\n\",\n        \"print('P(W|W \\u003c- 1) =', wb.do(cut).rv('W'))\\n\",\n        \"print('P(B|W \\u003c- 1) =', wb.do(cut).rv('B'))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"SCZyxF5l_VnG\"\n      },\n      \"source\": [\n        \"### Exercise 9\\n\",\n        \"\\n\",\n        \"Next, evaluate the following probabilities:\\n\",\n        \"\\n\",\n        \"-   What is the probability of being in our world ($A=0$), given that you\\n\",\n        \"    observe a sunny weather ($W=1$) and the barometer going up ($B=1$)?\\n\",\n        \"-   What is the probability of being in our world ($A=0$), given that you first\\n\",\n        \"    observe a sunny weather ($W=1$) and then **you force** the barometer to go\\n\",\n        \"    up ($B\\\\leftarrow 1$)?\\n\",\n        \"-   What is the probability of being in our world ($A=0$), given that you first\\n\",\n        \"    **force** the barometer to go up ($B\\\\leftarrow 1$) and then observe a sunny\\n\",\n        \"    weather ($W=1$)?\\n\",\n        \"\\n\",\n        \"Answer the following questions:\\n\",\n        \"\\n\",\n        \"-   Does conditioning give different results from intervening? If so, why?\\n\",\n        \"-   When you mix conditions and interventions, does the order matter? If so,\\n\",\n        \"    why?\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"uB3igmF58OyH\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"k1vLg3F_8O7c\"\n      },\n      \"source\": [\n        \"#### Solution\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"i2B5UhDT_VnJ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Exercise\\n\",\n        \"cutw = wb.prop('W=1')\\n\",\n        \"cutb = wb.prop('B=1')\\n\",\n        \"cuttheta = wb.prop('A=0')\\n\",\n        \"\\n\",\n        \"# Question 1\\n\",\n        \"print('P(A = 0 | W = 1 and B = 1) =', wb.see(cutw).see(cutb).prob(cuttheta))\\n\",\n        \"\\n\",\n        \"# Question 2\\n\",\n        \"print('P(A = 0 | W = 1 then B \\u003c- 1) =', wb.see(cutw).do(cutb).prob(cuttheta))\\n\",\n        \"\\n\",\n        \"# Question 3\\n\",\n        \"print('P(A = 0 | B \\u003c- 1 then W = 1) =', wb.do(cutb).see(cutw).prob(cuttheta))\\n\",\n        \"\\n\",\n        \"display(wb.show())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"3OMlUFKF_VnM\"\n      },\n      \"source\": [\n        \"## 7. Counterfactuals\\n\",\n        \"\\n\",\n        \"Finally, we have counterfactuals. Counterfactuals are questions about how the\\n\",\n        \"experiment could have gone if something about it were different. For instance:\\n\",\n        \"\\n\",\n        \"-   \\\"What is the probability of having the disease **had I not recovered**,\\n\",\n        \"    given that I have recovered?\\\"\\n\",\n        \"-   \\\"Given that I have taken the treatment and recovered, what is the\\n\",\n        \"    probability of recovery **had I not taken the treatment**?\\\"\\n\",\n        \"\\n\",\n        \"These are tricky questions because they mix two moods:\\n\",\n        \"\\n\",\n        \"-   **indicative statements** - things that have actually happened;\\n\",\n        \"-   **subjunctive statements** - things that could have happened \\n\",\n        \"in an alternate reality/possible world.\\n\",\n        \"\\n\",\n        \"Because of this, counterfactuals spawn a new scope of random variables:\\n\",\n        \"\\n\",\n        \"\\u003cimg src=\\\"http://www.adaptiveagents.org/_media/wiki/counterfactual.png\\\" alt=\\\"Counterfactual\\\" width=\\\"400\\\"/\\u003e\\n\",\n        \"\\n\",\n        \"These two questions above are spelled as follows:\\n\",\n        \"\\n\",\n        \"-   $P(D^\\\\ast=1|R=1)$, where $D^\\\\ast=D_{R \\\\leftarrow 0}$\\n\",\n        \"-   $P(R^\\\\ast=1|T\\\\leftarrow 1; R=1)$, where $R^\\\\ast=R_{T\\\\leftarrow 0}$\\n\",\n        \"\\n\",\n        \"Here the random variables with an asterisk $D^\\\\ast, R^\\\\ast$ are copies of the\\n\",\n        \"original random variables $D, R$ that ocurr in an alternate reality. The\\n\",\n        \"notation $D_{T \\\\leftarrow 0}$ means that the random variable $D$ is in the new\\n\",\n        \"scope spawned by the intervention on $T\\\\leftarrow 0$.\\n\",\n        \"\\n\",\n        \"### Computing a counterfactual\\n\",\n        \"\\n\",\n        \"The next figure shows how to obtain a counterfactual:\\n\",\n        \"\\n\",\n        \"\\u003cimg src=\\\"http://www.adaptiveagents.org/_media/wiki/cf.png\\\" alt=\\\"Computing a counterfactual\\\" width=\\\"700\\\"/\\u003e\\n\",\n        \"\\n\",\n        \"The example shows a counterfactual probability tree generated by imposing $Y\\n\",\n        \"\\\\leftarrow 1$, given the factual premise $Z = 1$. Starting from a **reference\\n\",\n        \"probability tree** describing the original process, we first use the **factual premise** to derive a tree describing the current state of affairs and then modify it using the **counterfactual premise**. \\n\",\n        \"\\n\",\n        \"\\n\",\n        \"Then, we replace the nodes downstream of the counterfactual premise's min-cut with the nodes of the reference tree. The events downstream then span a new scope containing copies of the original random variables (marked with \\\"∗\\\"), ready to adopt new values. In other words, we restore the random variables downstream of the counterfactual intervention to their original state of uncertainty.\\n\",\n        \"\\n\",\n        \"In particular note that $Z^\\\\ast = 0$ can happen in our alternate \\n\",\n        \"reality, even though we know that $Z = 1$.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"4Xq_CBmU_VnM\"\n      },\n      \"source\": [\n        \"Let's have a look at a minimal example.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"wgfuKqZr_VnN\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"pt = PTree()\\n\",\n        \"pt.root('O = 1', [\\n\",\n        \"    pt.child(0.25, 'X = 0', [\\n\",\n        \"        pt.child(0.25, 'Y = 0',\\n\",\n        \"                 [pt.child(0.1, 'Z = 0'),\\n\",\n        \"                  pt.child(0.9, 'Z = 1')]),\\n\",\n        \"        pt.child(0.75, 'Y = 1',\\n\",\n        \"                 [pt.child(0.2, 'Z = 0'),\\n\",\n        \"                  pt.child(0.8, 'Z = 1')]),\\n\",\n        \"    ]),\\n\",\n        \"    pt.child(0.75, 'X = 1',\\n\",\n        \"             [pt.child(0.75, 'Y = 0, Z = 0'),\\n\",\n        \"              pt.child(0.25, 'Y = 1, Z = 0')])\\n\",\n        \"])\\n\",\n        \"\\n\",\n        \"print('Original:')\\n\",\n        \"display(pt.show())\\n\",\n        \"\\n\",\n        \"# Condition on 'Y=0', do 'Y=1'\\n\",\n        \"cut_see = pt.prop('Y=0')\\n\",\n        \"cut_do = pt.prop('Y=1')\\n\",\n        \"\\n\",\n        \"# Critical set.\\n\",\n        \"crit = pt.critical(cut_do)\\n\",\n        \"\\n\",\n        \"# Evaluate conditional, intervention, and counterfactual.\\n\",\n        \"pt_see = pt.see(cut_see)\\n\",\n        \"pt_do = pt.do(cut_do)\\n\",\n        \"pt_cf = pt.cf(pt_see, cut_do)\\n\",\n        \"\\n\",\n        \"# Display results.\\n\",\n        \"print('Condition on \\\"Y = 0\\\":')\\n\",\n        \"display(pt_see.show(cut=cut_see, crit=crit))\\n\",\n        \"print('Intervention on \\\"Y \\u003c- 1\\\":')\\n\",\n        \"display(pt_do.show(cut=cut_do, crit=crit))\\n\",\n        \"print('Counterfactual with premise \\\"Y = 0\\\" and subjunctive \\\"Y = 1\\\":')\\n\",\n        \"display(pt_cf.show(cut=cut_do, crit=crit))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"u6L7VDH9_VnP\"\n      },\n      \"source\": [\n        \"Now we return to our drug testing example. Let's ask the two questions we asked\\n\",\n        \"before. We start with the question: \\\"What is the probability of having the\\n\",\n        \"disease **had I not recovered**, given that I have recovered?\\\", that is\\n\",\n        \"$$P(D^\\\\ast=1|R=1), \\\\qquad D^\\\\ast=D_{R \\\\leftarrow 0}.$$\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"1_dAJkjj_VnQ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Cuts.\\n\",\n        \"cut_disease = med.prop('D = 1')\\n\",\n        \"cut_recovery = med.prop('R = 1')\\n\",\n        \"cut_not_recovery = ~cut_recovery\\n\",\n        \"\\n\",\n        \"# Critical.\\n\",\n        \"crit = med.critical(cut_not_recovery)\\n\",\n        \"\\n\",\n        \"# Compute counterfactual:\\n\",\n        \"# - compute factual premise,\\n\",\n        \"# - use factual premise and subjunctive premise to compute counterfactual.\\n\",\n        \"med_factual_prem = med.see(cut_recovery)\\n\",\n        \"med_cf = med.cf(med_factual_prem, cut_not_recovery)\\n\",\n        \"\\n\",\n        \"print('Baseline:')\\n\",\n        \"print('P(D = 1) =', med.prob(cut_disease))\\n\",\n        \"display(med.show())\\n\",\n        \"print('Premise:')\\n\",\n        \"print('P(D = 1 | R = 1) =', med_factual_prem.prob(cut_disease))\\n\",\n        \"display(med_factual_prem.show())\\n\",\n        \"print('Counterfactual:')\\n\",\n        \"print('P(D* = 1 | R = 1) =', med_cf.prob(cut_disease), ', D* = D[R \\u003c- 0]')\\n\",\n        \"display(med_cf.show(crit=crit, cut=cut_not_recovery))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"eAPyY5O8_VnS\"\n      },\n      \"source\": [\n        \"As we can see, the probability of the disease in the indicative and the\\n\",\n        \"counterfactual aren't different. This is because the recovery $R$ is independent\\n\",\n        \"of the disease $D$, and because the disease is upstream of the critical set.\\n\",\n        \"\\n\",\n        \"Let's have a look at the second question: $$P(R^\\\\ast=1|T\\\\leftarrow 1;\\n\",\n        \"R=1), \\\\qquad R^\\\\ast=R_{T\\\\leftarrow 0}$$\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Nm-h3YPh_VnS\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Cuts.\\n\",\n        \"cut_treatment = med.prop('T = 1')\\n\",\n        \"cut_not_treatment = ~cut_treatment\\n\",\n        \"cut_recovery = med.prop('R = 1')\\n\",\n        \"\\n\",\n        \"# Critical.\\n\",\n        \"crit = med.critical(cut_not_treatment)\\n\",\n        \"\\n\",\n        \"# Compute counterfactual:\\n\",\n        \"# - compute factual premise,\\n\",\n        \"# - use factual premise and counterfactual premise to compute counterfactual.\\n\",\n        \"med_factual_prem = med.do(cut_treatment).see(cut_recovery)\\n\",\n        \"med_cf = med.cf(med_factual_prem, cut_not_treatment)\\n\",\n        \"\\n\",\n        \"# Display results.\\n\",\n        \"print('Baseline:')\\n\",\n        \"print('P(R = 1) =', med.prob(cut_recovery))\\n\",\n        \"display(med.show())\\n\",\n        \"\\n\",\n        \"print('Premise:')\\n\",\n        \"print('P(R = 1 | T \\u003c- 1 and R = 1) =', med_factual_prem.prob(cut_recovery))\\n\",\n        \"display(med_factual_prem.show())\\n\",\n        \"\\n\",\n        \"print('Counterfactual:')\\n\",\n        \"print('P(R* = 1 | T \\u003c- 1 and R = 1) =', med_cf.prob(cut_recovery),\\n\",\n        \"      ', R* = R[T \\u003c- 0]')\\n\",\n        \"display(med_cf.show(cut=cut_not_treatment, crit=crit))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"bCsw7tTM_VnV\"\n      },\n      \"source\": [\n        \"Hence, if I had not taken the treatment, then the probability of recovery would\\n\",\n        \"have been lower. Why is that? \\n\",\n        \"-   In our premise, I have taken the treatment and\\n\",\n        \"then observed a recovery. \\n\",\n        \"-   This implies that, most likely, I had the disease,\\n\",\n        \"since taking the treatment when I don't have the disease is risky and can lead\\n\",\n        \"to illness. \\n\",\n        \"-   Thus, knowing that I probably have the disease, I know that, had I\\n\",\n        \"not taken the treatment, I would most likely not have recovered.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"B3DdaUXJ_VnV\"\n      },\n      \"source\": [\n        \"### Exercise 10\\n\",\n        \"\\n\",\n        \"Consider the drug testing probability tree `med`.\\n\",\n        \"\\n\",\n        \"-   Assume you take the drug ($T \\\\leftarrow 1$) and you feel bad afterwards\\n\",\n        \"    ($R = 0$).\\n\",\n        \"-   Given this information, what is the probability of recovery ($R = 1$) had\\n\",\n        \"    you not taken the drug ($T = 0$)?\\n\",\n        \"\\n\",\n        \"Compute the **regret**, i.e. the difference: $$ \\\\mathbb{E}[ R^\\\\ast | T\\n\",\n        \"\\\\leftarrow 1; R = 0 ] - \\\\mathbb{E}[ R | T \\\\leftarrow 1; R = 0 ], $$ where\\n\",\n        \"$R^\\\\ast = R_{T \\\\leftarrow 0}$.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"JAoYBJcn8gve\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"yxuqdgvA8g-J\"\n      },\n      \"source\": [\n        \"#### Solution\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"23ziOdxr_VnV\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Exercise\\n\",\n        \"\\n\",\n        \"med_prem = med.do(med.prop('T=1')).see(med.prop('R=0'))\\n\",\n        \"med_cf = med.cf(med_prem, med.prop('T=0'))\\n\",\n        \"\\n\",\n        \"print('P(R* = 1 | T \\u003c- 1, R = 0) =', med_cf.prob(med.prop('R=1')))\\n\",\n        \"\\n\",\n        \"regret = med_cf.expect('R') - med_prem.expect('R')\\n\",\n        \"print('Regret = ', regret)\\n\",\n        \"\\n\",\n        \"display(med_prem.show(cut=med.prop('R=0')))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ioUtMVOs_VnX\"\n      },\n      \"source\": [\n        \"### Exercise 11\\n\",\n        \"\\n\",\n        \"Take the probability tree `wb`. Evaluate the following counterfactuals:\\n\",\n        \"\\n\",\n        \"1.  Assume that you set the world to ours ($A \\\\leftarrow 0$) and the weather to\\n\",\n        \"    sunny ($W \\\\leftarrow 1$). What is the probability distribution of observing\\n\",\n        \"    a high barometer value ($B = 1$) had you set the weather to rainy ($W\\n\",\n        \"    \\\\leftarrow 0$)? Does the fact that you set the world and the weather affect\\n\",\n        \"    the value of the counterfactual?\\n\",\n        \"\\n\",\n        \"2.  Assume that you set the barometer to a high value ($B \\\\leftarrow 1$), and\\n\",\n        \"    you observe that the weather is sunny ($W=1$). What is the probability of\\n\",\n        \"    observing a sunny weather ($W=1$) had you set the barometer to a low value\\n\",\n        \"    ($B=0$)?\\n\",\n        \"\\n\",\n        \"These are highly non-trivial questions. What do you observe? Do the results make\\n\",\n        \"sense to you?\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"6dh5MySa8j83\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"jWpZ0riB8kG3\"\n      },\n      \"source\": [\n        \"#### Solution\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"KGzDgfzs_VnY\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Question 1.\\n\",\n        \"wb_prem = wb.do(wb.prop('A=0')).do(wb.prop('W=1'))\\n\",\n        \"wb_cf = wb.cf(wb_prem, wb.prop('W=0'))\\n\",\n        \"print('P(B*| A \\u003c- 0, W \\u003c- 1) =', wb_cf.rv('B'), ' where B* = B[W \\u003c- 0]')\\n\",\n        \"display(wb_cf.show(show_prob=True, cut=wb.prop('B=1')))\\n\",\n        \"\\n\",\n        \"# Question 2.\\n\",\n        \"wb_prem = wb.do(wb.prop('B=1')).see(wb.prop('W=1'))\\n\",\n        \"wb_cf = wb.cf(wb_prem, wb.prop('B=0'))\\n\",\n        \"print('P(W* | B \\u003c- 1 then W \\u003c- 1) =', wb_cf.rv('W'), ' where W* = W[B \\u003c- 0]')\\n\",\n        \"display(wb_cf.show(show_prob=True, cut=wb.prop('W=1')))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ZB-JZdum16ZJ\"\n      },\n      \"source\": [\n        \"# Part II: Examples\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"jw5OiWWC_Vna\"\n      },\n      \"source\": [\n        \"## Construction of probability trees using factory functions\\n\",\n        \"\\n\",\n        \"Building probability trees can be difficult, especially when we have to manually\\n\",\n        \"specify all its nodes. \\n\",\n        \"\\n\",\n        \"To simplify this, we could design a function `factory(bvar)` which: \\n\",\n        \"-   receives a dictionary `bvar` of bound random variables, such as \\n\",\n        \"`{ 'X': '1', 'Y': '0' }` \\n\",\n        \"-   and returns a list of transitions and their statements, such as \\n\",\n        \"`[(0.3, 'Z = 0'), (0.2, 'Z = 1'), (0.5, 'Z = 2')].` If all relevant\\n\",\n        \"events have been defined already, return `None`.\\n\",\n        \"\\n\",\n        \"Such a function contains all the necessary information for building a\\n\",\n        \"probability tree. We call this a **probability tree factory**. We can pass a\\n\",\n        \"description function to the method `PTree.fromFunc()` to build a probability\\n\",\n        \"tree.\\n\",\n        \"\\n\",\n        \"The advantage of using this method is that we can exploit symmetries (e.g.\\n\",\n        \"conditional independencies) to code a much more compact description of the\\n\",\n        \"probability tree. Essentially, it is like specifying a probabilistic program.\\n\",\n        \"\\n\",\n        \"Let's experiment with this.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ce_kzARO_Vna\"\n      },\n      \"source\": [\n        \"## Burglar, Earthquake, Alarm\\n\",\n        \"\\n\",\n        \"Let's start with a classical example: a burglar alarm. The alarm gets \\n\",\n        \"triggered by a burglar breaking into our home. However, the alarm can \\n\",\n        \"also be set off by an earthquake. \\n\",\n        \"\\n\",\n        \"Let's define the factory function.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"94KpJKbm_Vnb\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def alarm(bvar):\\n\",\n        \"  # Define the burglar and earthquake events.\\n\",\n        \"  if 'Burglar' not in bvar:\\n\",\n        \"    pb = 0.1   # Probability of burglar\\n\",\n        \"    pe = 0.001 # Probability of earthquake\\n\",\n        \"    return [((1 - pb) * (1 - pe), 'Burglar=0, Earthquake=0'),\\n\",\n        \"            ((1 - pb) * pe, 'Burglar=0, Earthquake=1'),\\n\",\n        \"            (pb * (1 - pe), 'Burglar=1, Earthquake=0'),\\n\",\n        \"            (pb * pe, 'Burglar=1, Earthquake=1')]\\n\",\n        \"\\n\",\n        \"  # Define the alarm event.\\n\",\n        \"  if 'Alarm' not in bvar:\\n\",\n        \"    if bvar['Burglar'] == '0' and bvar['Earthquake'] == '0':\\n\",\n        \"      return [(0.999, 'Alarm=0'), (0.001, 'Alarm=1')]\\n\",\n        \"    if bvar['Burglar'] == '0' and bvar['Earthquake'] == '1':\\n\",\n        \"      return [(0.01, 'Alarm=0'), (0.99, 'Alarm=1')]\\n\",\n        \"    if bvar['Burglar'] == '1' and bvar['Earthquake'] == '0':\\n\",\n        \"      return [(0.1, 'Alarm=0'), (0.9, 'Alarm=1')]\\n\",\n        \"    else:\\n\",\n        \"      return [(0.001, 'Alarm=0'), (0.999, 'Alarm=1')]\\n\",\n        \"\\n\",\n        \"  # All the events defined.\\n\",\n        \"  return None\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"HYjrsERo_Vnd\"\n      },\n      \"source\": [\n        \"Now, let's create the probability tree.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"JOvj1N5X_Vnd\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create the probability tree.\\n\",\n        \"al = PTree.fromFunc(alarm, 'Root = 1')\\n\",\n        \"\\n\",\n        \"# Print all the random variables.\\n\",\n        \"print('Random variables:', al.rvs())\\n\",\n        \"print('\\\\nP(Alarm) =', al.rv('Alarm'))\\n\",\n        \"\\n\",\n        \"print('\\\\nOriginal probability tree:')\\n\",\n        \"display(al.show())\\n\",\n        \"\\n\",\n        \"print('\\\\nSome samples from the probability tree:')\\n\",\n        \"for k in range(5):\\n\",\n        \"  print(al.sample())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"z6PQk0Du_Vnh\"\n      },\n      \"source\": [\n        \"Assume now you hear the alarm. Which explanation is more likely:\\n\",\n        \"did the earthquake or the burglar trigger the alarm?\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"bG3qSQz7_Vni\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Condition on the alarm going off.\\n\",\n        \"cut = al.prop('Alarm=1')\\n\",\n        \"crit = al.critical(cut)\\n\",\n        \"al_see = al.see(cut)\\n\",\n        \"\\n\",\n        \"# Compute probability distributions for earthquake and burglar.\\n\",\n        \"print('P(Earthquake = 1 | Alarm = 1) =', al_see.prob(al.prop('Earthquake=1')))\\n\",\n        \"print('P(Burglar = 1 | Alarm = 1) =', al_see.prob(al.prop('Burglar=1')))\\n\",\n        \"\\n\",\n        \"# Display the conditional probability tree.\\n\",\n        \"\\n\",\n        \"print('\\\\nConditional probability tree:')\\n\",\n        \"display(al_see.show(show_prob=True, cut=cut, crit=crit))\\n\",\n        \"\\n\",\n        \"print('\\\\nSome samples from the conditional probability tree:')\\n\",\n        \"for k in range(5):\\n\",\n        \"  print(al_see.sample())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"v8jmncNUF5kS\"\n      },\n      \"source\": [\n        \"As we can see, it is far more likely that the burglar set off the alarm.\\n\",\n        \"\\n\",\n        \"If we now tamper with the alarm, setting it off, then what is the probability\\n\",\n        \"that there was a burglar or an earthquake?\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"pl3Ps_PAJB89\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Intervene on the alarm going off.\\n\",\n        \"cut = al.prop('Alarm=1')\\n\",\n        \"crit = al.critical(cut)\\n\",\n        \"al_do = al.do(cut)\\n\",\n        \"\\n\",\n        \"# Compute probability distributions for earthquake and burglar.\\n\",\n        \"print('P(Earthquake = 1 | Alarm \\u003c- 1) =', al_do.prob(al.prop('Earthquake=1')))\\n\",\n        \"print('P(Burglar = 1 | Alarm \\u003c- 1) =', al_do.prob(al.prop('Burglar=1')))\\n\",\n        \"\\n\",\n        \"# Display the intervened probability tree.\\n\",\n        \"\\n\",\n        \"print('\\\\nIntervened probability tree:')\\n\",\n        \"display(al_do.show(show_prob=True, cut=cut, crit=crit))\\n\",\n        \"\\n\",\n        \"print('\\\\nSome samples from the intervened probability tree:')\\n\",\n        \"for k in range(5):\\n\",\n        \"  print(al_do.sample())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"xYUfpc-2KJ27\"\n      },\n      \"source\": [\n        \"Now we observe that the probabilities of the burglar and earthquake\\n\",\n        \"events are exactly as the base rates - we have severed the\\n\",\n        \"causal dependencies connecting those events with the alarm.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"uZ5o4hHxnUw0\"\n      },\n      \"source\": [\n        \"## Water Balloon Squad (a.k.a. Firing Squad)\\n\",\n        \"\\n\",\n        \"The following is a classical example used for illustrating counterfactual\\n\",\n        \"reasoning. There are two children (A and B) holding a water balloon, waiting\\n\",\n        \"for a signal from their friend (the \\\"captain\\\"). Upon the captain's signal,\\n\",\n        \"they both throw their water balloon at a single target simultaneously and\\n\",\n        \"accurately. The causal dependencies are as shown next:\\n\",\n        \"\\n\",\n        \"\\u003cimg src=\\\"http://www.adaptiveagents.org/_media/wiki/waterballoon.png\\\" alt=\\\"Water Balloon Squad\\\" width=\\\"200\\\"/\\u003e\\n\",\n        \"\\n\",\n        \"This situation can also be described using a probability tree constructed\\n\",\n        \"below. Note that in order to avoid problems due to conditioning on\\n\",\n        \"zero-probability transitions, we assign a tiny value (`eps`) to the\\n\",\n        \"nearly-impossible transitions.\\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"QMvQGn9KclPU\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Water Balloon Squad factory function.\\n\",\n        \"\\n\",\n        \"def waterballoon(bvar, eps=0.0001):\\n\",\n        \"  # Root: defined.\\n\",\n        \"  # Define the captain's signal.\\n\",\n        \"  if 'Captain' not in bvar:\\n\",\n        \"    if 'Captain' not in bvar:\\n\",\n        \"      return [(0.5, 'Captain = hold'), (0.5, 'Captain = throw')]\\n\",\n        \"\\n\",\n        \"  # Define the children's decisions.\\n\",\n        \"  if 'A' not in bvar:\\n\",\n        \"    if bvar['Captain'] == 'hold':\\n\",\n        \"      return [((1-eps)*(1-eps), 'A = hold, B = hold'), (eps*(1-eps), 'A = hold, B = throw'), \\n\",\n        \"              (eps*(1-eps), 'A = throw, B = hold'), (eps*eps, 'A = throw, B = throw')]\\n\",\n        \"    else:\\n\",\n        \"      return [(eps*eps, 'A = hold, B = hold'), (eps*(1-eps), 'A = hold, B = throw'), \\n\",\n        \"              (eps*(1-eps), 'A = throw, B = hold'), ((1-eps)*(1-eps), 'A = throw, B = throw')]\\n\",\n        \"\\n\",\n        \"  # Define target state.\\n\",\n        \"  if 'Target' not in bvar:\\n\",\n        \"    if bvar['A'] == 'throw' or bvar['B'] == 'throw':\\n\",\n        \"      return [(eps, 'Target = dry'), (1-eps, 'Target = wet')]\\n\",\n        \"    else:\\n\",\n        \"      return [(1-eps, 'Target = dry'), (eps, 'Target = wet')]\\n\",\n        \"\\n\",\n        \"  return None\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"lagYuHxMqeUM\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create and show the probability tree.\\n\",\n        \"wbs = PTree.fromFunc(waterballoon)\\n\",\n        \"wbs.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"9wgLrffyy40E\"\n      },\n      \"source\": [\n        \"Let's start by definining some simple events we'll use next.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"USYCB9uNqmoT\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# First we define some simple events.\\n\",\n        \"cut_C = wbs.prop('Captain=throw')\\n\",\n        \"cut_A = wbs.prop('A=throw')\\n\",\n        \"cut_B = wbs.prop('B=throw')\\n\",\n        \"cut_T = wbs.prop('Target=wet')\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"OfgAR3u0zASo\"\n      },\n      \"source\": [\n        \"Let's ask our first question. Assume A throws the water balloon.\\n\",\n        \"What is the probability of B having thrown the balloon too?\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"_VcVSPg0vKz1\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Condition on A throwing the water balloon.\\n\",\n        \"wbs_see = wbs.see(cut_A)\\n\",\n        \"\\n\",\n        \"# Print the probability of B throwing the water balloon.\\n\",\n        \"print('P(B = throw | A = throw) =', wbs_see.prob(cut_B))\\n\",\n        \"\\n\",\n        \"# Display the conditional probability tree.\\n\",\n        \"print('\\\\nConditional probability tree:')\\n\",\n        \"display(wbs_see.show(cut=cut_B))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"IALdewe2zWVy\"\n      },\n      \"source\": [\n        \"Notice how conditioning changed the transition probabilities, which then \\n\",\n        \"allow us to identify the pathways leading up to the event in which B throws\\n\",\n        \"the balloon. \\n\",\n        \"\\n\",\n        \"Assume now that A decides to act on their own and throws the balloon.\\n\",\n        \"What is the probability of B having thrown the balloon too?\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"POlCBkHKvtcA\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Intervene on having A throwing the water balloon.\\n\",\n        \"wbs_do = wbs.do(cut_A)\\n\",\n        \"\\n\",\n        \"# Print the probability of B throwing the water balloon.\\n\",\n        \"print('P(B = throw | do[A = throw]) =', wbs_do.prob(cut_B))\\n\",\n        \"\\n\",\n        \"# Display the conditional probability tree.\\n\",\n        \"print('\\\\nIntervened probability tree:')\\n\",\n        \"display(wbs_do.show(cut=cut_B))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"okJ6csZNz-C7\"\n      },\n      \"source\": [\n        \"Notice the difference between the two results above. If A acts on their own\\n\",\n        \"will, then this alters the conclusions we can draw.\\n\",\n        \"\\n\",\n        \"Let's ask a more complex question. **Assume A or B throw the balloon on their\\n\",\n        \"own will.** That is, we do not know precisely whether A acted by themself,\\n\",\n        \"B acted by themself, or both acted together. \\n\",\n        \"Intuitively, B (or A for that matter) is more likely to having thrown\\n\",\n        \"the water balloon in this situation than when they were waiting for\\n\",\n        \"the captain's signal. What is the probability?\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"J5_6PRhtwET6\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Intervene on having A throwing the water balloon.\\n\",\n        \"wbs_do = wbs.do(cut_A | cut_B)\\n\",\n        \"\\n\",\n        \"# Print the probability of B throwing the water balloon.\\n\",\n        \"print('P(B = throw | do[A = throw or B = throw]) =', wbs_do.prob(cut_B))\\n\",\n        \"\\n\",\n        \"# Display the conditional probability tree.\\n\",\n        \"print('\\\\nIntervened probability tree:')\\n\",\n        \"display(wbs_do.show(cut=cut_B))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"U6AUPwU8wSoc\"\n      },\n      \"source\": [\n        \"The above result shows that it is indeed more likely (%75) that B has \\n\",\n        \"thrown their balloon than when they were waiting for the signal (50%). \\n\",\n        \"\\n\",\n        \"Now we will ask counterfactual questions. Let's start with an easy one first. \\n\",\n        \"\\n\",\n        \"Assume you observe that the target is wet. Then, **had the captain not given\\n\",\n        \"the signal**, what is the probability that B would have thrown their water\\n\",\n        \"balloon at the target?\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"wJPAuhj7sKq8\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Condition on the target being wet.\\n\",\n        \"wbs_see = wbs.see(cut_T)\\n\",\n        \"\\n\",\n        \"# Compute counterfactual: given that the target is wet,\\n\",\n        \"# what is the probability of B throwing the water balloon\\n\",\n        \"# had the captain not given the signal?\\n\",\n        \"wbs_cf = wbs.cf(wbs_see, ~cut_C)\\n\",\n        \"print('P(B[C != throw] = throw | Target = wet) =', wbs_cf.prob(cut_B))\\n\",\n        \"display(wbs_cf.show(cut=cut_B))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"0gifSRkYxDMA\"\n      },\n      \"source\": [\n        \"The result shows that B would not have thrown the water balloon.\\n\",\n        \"This makes sense, as we assumed that B did not get the captain's signal.\\n\",\n        \"\\n\",\n        \"Now, assume again you observe that the target is wet. \\n\",\n        \"**Had A not thrown the water balloon, would B have thrown it?**\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Qj03sMAexj4e\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Condition on the target being wet.\\n\",\n        \"wbs_see = wbs.see(cut_T)\\n\",\n        \"\\n\",\n        \"# Compute counterfactual: given that the target is wet,\\n\",\n        \"# what is the probability of B throwing the water balloon\\n\",\n        \"# had A not done it?\\n\",\n        \"wbs_cf = wbs.cf(wbs_see, ~cut_A)\\n\",\n        \"print('P(B[A != throw] = throw | Target = wet) =', wbs_cf.prob(cut_B))\\n\",\n        \"display(wbs_cf.show(cut=cut_B))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"Jl6rVmjcxqUY\"\n      },\n      \"source\": [\n        \"As is shown above, the answer is yes. This is because from observing the wet\\n\",\n        \"target we can conclude that the captain has given the signal. \\n\",\n        \"Hence, had A not thrown the water balloon, B must have thrown it\\n\",\n        \"instead. You can verify the causal pathways by inspecting the tree.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"_UO1GC7T_Vnl\"\n      },\n      \"source\": [\n        \"## Coin toss prediction\\n\",\n        \"\\n\",\n        \"Let's build another probability tree. This is a discrete approximation to a\\n\",\n        \"process having a continuous random variable: a **Beta-Bernoulli process**. \\n\",\n        \"This problem was first studied by Rev. Thomas Bayes (\\\"An Essay towards\\n\",\n        \"solving a Problem in the Doctrine of Chances\\\", 1763) .\\n\",\n        \"\\n\",\n        \"The story goes as follows. Someone picks a coin with an unknown bias and then throws it repeatedly. Our goal is to infer the next outcome based only on the observed outcomes (and not on the latent bias). The unknown bias is drawn\\n\",\n        \"uniformly from the interval [0, 1].\\n\",\n        \"\\n\",\n        \"Let's start by coding the factory function for the discretized Beta-Bernoulli\\n\",\n        \"process. Here we assume that the prior distribution over the bias is uniform,\\n\",\n        \"and discretized into `divtheta = 40` bins. Then `T = 5` coin tosses follow. \"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"X00sYFKB_Vnm\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Beta-Bernoulli factory function.\\n\",\n        \"\\n\",\n        \"def betaBernoulli(bvar, divtheta=41, T=5):\\n\",\n        \"  # Root: defined.\\n\",\n        \"  # Define biases Bias=0, 1/divtheta, 2/divtheta, ... , 1\\n\",\n        \"  if 'Bias' not in bvar:\\n\",\n        \"    ptheta = 1.0 / divtheta\\n\",\n        \"    biases = [(ptheta, 'Bias=' + str(theta))\\n\",\n        \"              for theta in np.linspace(0.0, 1.0, divtheta, endpoint=True)]\\n\",\n        \"    return biases\\n\",\n        \"\\n\",\n        \"  # Biases: defined.\\n\",\n        \"  # Now create Bernoulli observations X_1, X_2, ... , X_T,\\n\",\n        \"  # where X_t=0 or X_t=1.\\n\",\n        \"  t = 1\\n\",\n        \"  for var in bvar:\\n\",\n        \"    if '_' not in var:\\n\",\n        \"      continue\\n\",\n        \"    t += 1\\n\",\n        \"  if t \\u003c= T:\\n\",\n        \"    theta = float(bvar['Bias'])\\n\",\n        \"    varstr = 'X_' + str(t)\\n\",\n        \"    return [(1 - theta, varstr + '=0'), (theta, varstr + '=1')]\\n\",\n        \"\\n\",\n        \"  # All the events defined.\\n\",\n        \"  return None\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"4e3ZM5Vl_Vnr\"\n      },\n      \"source\": [\n        \"We now build the probability tree. Let's also print the \\n\",\n        \"random variables and get a few samples.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"zN3TzCnQHoz6\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create tree.\\n\",\n        \"bb = PTree.fromFunc(betaBernoulli)\\n\",\n        \"\\n\",\n        \"# Show random variables.\\n\",\n        \"print('Random variables:')\\n\",\n        \"print(bb.rvs())\\n\",\n        \"\\n\",\n        \"# Get sample.\\n\",\n        \"print('\\\\nSamples from the process:')\\n\",\n        \"for n in range(10):\\n\",\n        \"  print(bb.sample())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"R4yVyNboW84N\"\n      },\n      \"source\": [\n        \"The tree itself is quite large (over 1000 nodes). \\n\",\n        \"Normally such trees are too large to\\n\",\n        \"display, for instance when `T` is large.\\n\",\n        \"\\n\",\n        \"Let's display it, just for fun.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"EvV6Gv4XaTxZ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"bb.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"JEuxhMkKHlUm\"\n      },\n      \"source\": [\n        \"\\n\",\n        \"### Exercise \\n\",\n        \"\\n\",\n        \"Let's do some inference now.\\n\",\n        \"\\n\",\n        \"Assume you observe the first four toin cosses. They are\\n\",\n        \"```\\n\",\n        \"observations = ['X_1=1', 'X_2=1', 'X_3=0', 'X_4=1']\\n\",\n        \"```\\n\",\n        \"\\n\",\n        \"Answer the following questions:\\n\",\n        \"1.  What is the prior distribution over the unknown bias?\\n\",\n        \"2.  What is the probability of the next outcome being Heads (`X_5=1`)?\\n\",\n        \"3.  Given the observations, what is the distribution over the\\n\",\n        \"latent bias?\\n\",\n        \"4.  Rather than observing the four outcomes, assume instead\\n\",\n        \"that you enforce the outcomes. What is the probability of\\n\",\n        \"the next outcome being Heads?\\n\",\n        \"5.  What is the distribution over the latent bias if you enforce\\n\",\n        \"the data?\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"cwdfiRj-bNBR\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"7fTawNEfbNZ1\"\n      },\n      \"source\": [\n        \"#### Solution\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"yPG6AbQo_Vnr\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Prepare the cut forthe data.\\n\",\n        \"observations = ['X_1=1', 'X_2=1', 'X_3=0', 'X_4=1']\\n\",\n        \"cut_data = None\\n\",\n        \"for s in observations:\\n\",\n        \"  if cut_data is None:\\n\",\n        \"    cut_data = bb.prop(s)\\n\",\n        \"  else:\\n\",\n        \"    cut_data \\u0026= bb.prop(s)\\n\",\n        \"\\n\",\n        \"# Prepare the cut for the query.\\n\",\n        \"cut_query = bb.prop('X_5=1')\\n\",\n        \"\\n\",\n        \"# Question 1\\n\",\n        \"bias = bb.rv('Bias')\\n\",\n        \"print('P(Bias) :\\\\n' + str(bias))\\n\",\n        \"\\n\",\n        \"# Question 2\\n\",\n        \"bb_cond = bb.see(cut_data)\\n\",\n        \"print('\\\\nP(X_5 = 1 | Data) = ' + str(bb_cond.prob(cut_query)))\\n\",\n        \"\\n\",\n        \"# Question 3\\n\",\n        \"bias_cond = bb_cond.rv('Bias')\\n\",\n        \"print('\\\\nP(Bias | Data) :\\\\n' + str(bias_cond))\\n\",\n        \"\\n\",\n        \"# Question 4\\n\",\n        \"bb_int = bb.do(cut_data)\\n\",\n        \"print('\\\\nP(X_5 = 1 | do(Data)) = ' + str(bb_int.prob(cut_query)))\\n\",\n        \"\\n\",\n        \"# Question 5\\n\",\n        \"bias_int = bb_int.rv('Bias')\\n\",\n        \"print('\\\\nP(Bias | do(Data)) :' + str(bias_int))\\n\",\n        \"\\n\",\n        \"# Display distribution over bias.\\n\",\n        \"print('\\\\nDistribution over biases for the three settings:')\\n\",\n        \"\\n\",\n        \"fig = plt.figure(figsize=(15, 5))\\n\",\n        \"\\n\",\n        \"# Show prior.\\n\",\n        \"plt.subplot(131)\\n\",\n        \"res = bb.rv('Bias')\\n\",\n        \"theta = np.array([theta for _, theta in res], dtype=np.float)\\n\",\n        \"prob = np.array([prob for prob, _ in res])\\n\",\n        \"plt.fill_between(theta, prob, 0)\\n\",\n        \"plt.title('P(Bias)')\\n\",\n        \"plt.ylim([-0.005, 0.1])\\n\",\n        \"plt.xlabel('Bias')\\n\",\n        \"\\n\",\n        \"# Show posterior after conditioning.\\n\",\n        \"plt.subplot(132)\\n\",\n        \"res = bb.see(cut).rv('Bias')\\n\",\n        \"theta = np.array([theta for _, theta in res], dtype=np.float)\\n\",\n        \"prob = np.array([prob for prob, _ in res])\\n\",\n        \"plt.fill_between(theta, prob, 0)\\n\",\n        \"plt.title('P(Bias|D)')\\n\",\n        \"plt.ylim([-0.005, 0.1])\\n\",\n        \"plt.xlabel('Bias')\\n\",\n        \"\\n\",\n        \"# Show posterior after intervening.\\n\",\n        \"plt.subplot(133)\\n\",\n        \"res = bb.do(cut).rv('Bias')\\n\",\n        \"theta = np.array([theta for _, theta in res], dtype=np.float)\\n\",\n        \"prob = np.array([prob for prob, _ in res])\\n\",\n        \"plt.fill_between(theta, prob, 0)\\n\",\n        \"plt.title('P(Bias|do(D))')\\n\",\n        \"plt.ylim([-0.005, 0.1])\\n\",\n        \"plt.xlabel('Bias')\\n\",\n        \"\\n\",\n        \"plt.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"eoNn0c5rj5U1\"\n      },\n      \"source\": [\n        \"## Who's in charge?\\n\",\n        \"\\n\",\n        \"In this problem we will look at causal induction. Alice and Bob play a game\\n\",\n        \"where both of them shout either 'chicken' or 'egg'.\\n\",\n        \"\\n\",\n        \"At the beginning of the game, one of them is chosen to be the leader, and\\n\",\n        \"the other, the follower. The follower will always attempt to match the\\n\",\n        \"leader: so if Alice is the leader and Bob the follower, and Alice\\n\",\n        \"shouts 'chicken', then Bob will attempt to shout 'chicken' too (with\\n\",\n        \"60% success rate).\\n\",\n        \"\\n\",\n        \"A typical game would look like this:\\n\",\n        \"\\n\",\n        \"-  Round 1: Alice shouts 'egg', Bob shouts 'chicken'.\\n\",\n        \"-  Round 2: Alice shouts 'chicken', Bob shouts 'chicken'.\\n\",\n        \"-  Round 3: Alice shouts 'chicken', Bob shouts 'chicken'.\\n\",\n        \"-  Round 4: Alice shouts 'egg', Bob shouts 'egg'.\\n\",\n        \"\\n\",\n        \"Note that you hear both of them shouting simultaneously.\\n\",\n        \"\\n\",\n        \"Our goal is to discover who's the leader. This is a **causal induction\\n\",\n        \"problem**, because we want to figure out whether:\\n\",\n        \"-  hypothesis `Leader = Alice`: Alice $\\\\rightarrow$ Bob;\\n\",\n        \"-  or hypothesis `Leader = Bob`: Bob $\\\\rightarrow$ Alice.\\n\",\n        \"\\n\",\n        \"Let's start by defining the factory function.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"pRDAaQwW_zuF\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Leader factory function.\\n\",\n        \"\\n\",\n        \"def leader(bvar, T=2):\\n\",\n        \"  p = 0.75 # Probability of match.\\n\",\n        \"\\n\",\n        \"  # Define leader.\\n\",\n        \"  if 'Leader' not in bvar:\\n\",\n        \"    return [(0.5, 'Leader=Alice'), (0.5, 'Leader=Bob')]\\n\",\n        \"\\n\",\n        \"  # Now create the shouts.\\n\",\n        \"\\n\",\n        \"  # Figure out the leader.\\n\",\n        \"  if bvar['Leader'] == 'Alice':\\n\",\n        \"    leader = 'Alice'\\n\",\n        \"    follower = 'Bob'\\n\",\n        \"  else:\\n\",\n        \"    leader = 'Bob'\\n\",\n        \"    follower = 'Alice'\\n\",\n        \"\\n\",\n        \"  # Define random variables of shouts.\\n\",\n        \"  for t in range(1, T+1):\\n\",\n        \"    leader_str = leader + '_' + str(t)\\n\",\n        \"    if leader_str not in bvar:\\n\",\n        \"      return [(0.5, leader_str + '=chicken'), (0.5, leader_str + '=egg')]\\n\",\n        \"\\n\",\n        \"    follower_str = follower + '_' + str(t)\\n\",\n        \"    if follower_str not in bvar:\\n\",\n        \"      if bvar[leader_str] == 'chicken':\\n\",\n        \"        return [(p, follower_str + '=chicken'), (1-p, follower_str + '=egg')]\\n\",\n        \"      else:\\n\",\n        \"        return [(1-p, follower_str + '=chicken'), (p, follower_str + '=egg')]\\n\",\n        \"\\n\",\n        \"  # We're done.\\n\",\n        \"  return None\\n\",\n        \"\\n\",\n        \"# Create true environment.\\n\",\n        \"class ChickenEggGame:\\n\",\n        \"\\n\",\n        \"  def __init__(self, T=2):\\n\",\n        \"    self.T = T\\n\",\n        \"    self.pt = PTree.fromFunc(lambda bvar:leader(bvar, T=T))\\n\",\n        \"    smp = self.pt.sample()\\n\",\n        \"    self.pt.do(self.pt.prop('Leader=' + smp['Leader']))\\n\",\n        \"    self.time = 0\\n\",\n        \"\\n\",\n        \"  def step(self, name, word):\\n\",\n        \"    # Check whether parameters are okay.\\n\",\n        \"    if name != 'Alice' and name != 'Bob':\\n\",\n        \"      raise Exception('\\\"name\\\" has to be either \\\"Alice\\\" or \\\"Bob\\\".')\\n\",\n        \"    if word != 'chicken' and word != 'egg':\\n\",\n        \"      raise Exception('\\\"word\\\" has to be either \\\"chicken\\\" or \\\"egg\\\".')\\n\",\n        \"    if self.time \\u003e self.T -1:\\n\",\n        \"      raise Exception('The game has only ' + str(self.T) + ' rounds.')\\n\",\n        \"\\n\",\n        \"    # Enforce instruction.\\n\",\n        \"    self.time = self.time + 1\\n\",\n        \"    cut_do = self.pt.prop(name + '_' + str(self.time) + '=' + word)\\n\",\n        \"    self.pt = self.pt.do(cut_do)\\n\",\n        \"\\n\",\n        \"    # Produce next sample.\\n\",\n        \"    smp = self.pt.sample()\\n\",\n        \"    if name == 'Alice':\\n\",\n        \"      varname = 'Bob_' + str(self.time)\\n\",\n        \"    else:\\n\",\n        \"      varname = 'Alice_' + str(self.time)\\n\",\n        \"    response = smp[varname]\\n\",\n        \"    cut_see = self.pt.prop(varname + '=' + response) \\n\",\n        \"    self.pt = self.pt.see(cut_see)\\n\",\n        \"\\n\",\n        \"    return varname + '=' + response\\n\",\n        \"\\n\",\n        \"  def reveal(self):\\n\",\n        \"    smp = self.pt.sample()\\n\",\n        \"    return smp['Leader']\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"0IwyuPLrsE0v\"\n      },\n      \"source\": [\n        \"The factory function is called `leader()`.\\n\",\n        \"\\n\",\n        \"Let's first have a look at how the probability tree would\\n\",\n        \"look like for `T = 2` rounds.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"gveaR8W2sSJv\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"ld = PTree.fromFunc(lambda bvar: leader(bvar, T=2), root_statement='Root = 1')\\n\",\n        \"display(ld.show())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"LU6ZQ0e1cUw3\"\n      },\n      \"source\": [\n        \"Notice how the transition probabilities of `Alice_n, Bob_n`,\\n\",\n        \"`n = 1, 2`, are identical within the subtree rooted at \\n\",\n        \"`Leader = Alice`. The same is true for the transitions probabilities\\n\",\n        \"within the subtree rooted at `Leader = Bob`.\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ZtXmvPbIsqBI\"\n      },\n      \"source\": [\n        \"Now, let's create a new probability tree for a slightly longer game,\\n\",\n        \"namely `T = 5`. **This tree is too big to display** (over 2K nodes)\\n\",\n        \"but we can still sample from it.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"lekPv0r1Egti\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"T = 5\\n\",\n        \"ld = PTree.fromFunc(lambda bvar: leader(bvar, T=T), root_statement='Root = 1')\\n\",\n        \"\\n\",\n        \"print('Samples from the probability tree:')\\n\",\n        \"for n in range(T):\\n\",\n        \"  print(ld.sample())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"dNdejpEjR6WI\"\n      },\n      \"source\": [\n        \"Let's first figure out the joint distribution over Alice's and Bob's shouts\\n\",\n        \"in the first round (remember, rounds are i.i.d.) when Alice is the leader,\\n\",\n        \"and compare this to the situation when Bob is the leader.\\n\",\n        \"\\n\",\n        \"We can do this by setting `Leader` to whoever we want to be the leader,\\n\",\n        \"and then enumerate the joint probabilities over the combinations of\\n\",\n        \"shouts.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"X1lMShnYEqDz\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"import itertools\\n\",\n        \"\\n\",\n        \"# Define cuts for both leaders.\\n\",\n        \"cut_leader_a = ld.prop('Leader = Alice')\\n\",\n        \"cut_leader_b = ld.prop('Leader = Bob')\\n\",\n        \"\\n\",\n        \"# The words they can say.\\n\",\n        \"words = ['chicken', 'egg']\\n\",\n        \"\\n\",\n        \"# Print the joint distribution over\\n\",\n        \"# shouts when Alice is the leader.\\n\",\n        \"print('Leader = Alice')\\n\",\n        \"for word_a, word_b in itertools.product(words, words):\\n\",\n        \"  cut = ld.prop('Alice_1 = ' + word_a) \\u0026 ld.prop('Bob_1 = ' + word_b)\\n\",\n        \"  prob = ld.do(cut_leader_a).prob(cut)\\n\",\n        \"  fmt = 'P( Alice_1 = {}, Bob_1 = {} | Leader \\u003c- Alice) = {:.2f}'\\n\",\n        \"  print(fmt.format(word_a, word_b, prob))\\n\",\n        \"\\n\",\n        \"# Print the joint distribution over\\n\",\n        \"# shouts when Bob is the leader.\\n\",\n        \"print('\\\\nLeader = Bob')\\n\",\n        \"for word_a, word_b in itertools.product(words, words):\\n\",\n        \"  cut = ld.prop('Alice_1 = ' + word_a) \\u0026 ld.prop('Bob_1 = ' + word_b)\\n\",\n        \"  prob = ld.do(cut_leader_b).prob(cut)\\n\",\n        \"  fmt = 'P( Alice_1 = {}, Bob_1 = {} | Leader \\u003c- Bob) = {:.2f}'\\n\",\n        \"  print(fmt.format(word_a, word_b, prob))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"IxkzXrhDawc1\"\n      },\n      \"source\": [\n        \"Looking at the joint probabilities, **we realize that they are identical**.\\n\",\n        \"This means that we cannot identify who's the leader by conditioning on\\n\",\n        \"our observations. Let's try this with the following observations:\\n\",\n        \"```\\n\",\n        \"obs = [\\n\",\n        \"  'Alice_1=chicken', 'Bob_1=egg', \\n\",\n        \"  'Alice_2=egg', 'Bob_2=egg', \\n\",\n        \"  'Alice_3=egg', 'Bob_3=egg'\\n\",\n        \"  ]\\n\",\n        \"```\\n\",\n        \"\\n\",\n        \"We now compare the prior and posterior probabilities of Bob being the leader.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"skor-95PGNpa\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"import functools \\n\",\n        \"\\n\",\n        \"obs = [\\n\",\n        \"  'Alice_1=chicken', 'Bob_1=egg', \\n\",\n        \"  'Alice_2=egg', 'Bob_2=egg', \\n\",\n        \"  'Alice_3=egg', 'Bob_3=egg'\\n\",\n        \"  ]\\n\",\n        \"cuts_data = [ld.prop(data) for data in obs]\\n\",\n        \"cut_data = functools.reduce(lambda x, y: x \\u0026 y, cuts_data)\\n\",\n        \"cut_query = ld.prop('Leader=Bob')\\n\",\n        \"\\n\",\n        \"prob_prior = ld.prob(cut_query)\\n\",\n        \"prob_post = ld.see(cut_data).prob(cut_query)\\n\",\n        \"print('Prior and posterior probabilities:')\\n\",\n        \"print('P( Leader = Bob ) = {:.2f}'.format(prob_prior))\\n\",\n        \"print('P( Leader = Bob | Data ) = {:.2f}'.format(prob_post))\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"dR2U7_0quNYm\"\n      },\n      \"source\": [\n        \"As you can see, this doesn't work - we can't disentangle the two hypotheses\\n\",\n        \"just by looking at the data.\\n\",\n        \"\\n\",\n        \"Intuitively, we could figure out whether Alice or Bob is the leader by\\n\",\n        \"intervening the game - for instance, by instructing Bob to say what\\n\",\n        \"we want and observe Alice's reaction:\\n\",\n        \"-  if Alice matches Bob many times, then she's probably the follower;\\n\",\n        \"-  instead if Alice does not attempt to match Bob, then we can conclude \\n\",\n        \"that Alice is the leader.\\n\",\n        \"\\n\",\n        \"Crucially, we need to **interact** in order to collect the data. \\n\",\n        \"It's not enough to passively observe. For this, we'll use\\n\",\n        \"an implementation of the game (`ChickenEggGame`) that allows\\n\",\n        \"us to instruct either Alice or Bob to shout the word we want. \"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"f7rPh-f6UKWM\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"T = 5\\n\",\n        \"game = ChickenEggGame(T=T)\\n\",\n        \"\\n\",\n        \"# Do T rounds.\\n\",\n        \"for n in range(T):\\n\",\n        \"  reply = game.step('Alice', 'chicken')\\n\",\n        \"  print(reply)\\n\",\n        \"\\n\",\n        \"# Reveal.\\n\",\n        \"print('The true leader is:' + game.reveal())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"po_krgRljGmp\"\n      },\n      \"source\": [\n        \"###  Exercise\\n\",\n        \"\\n\",\n        \"Using `ChickenEggGame`, play `T=5` rounds giving an instruction.\\n\",\n        \"Use a copy of the probability tree `ld` to record the results,\\n\",\n        \"appropriately distinguishing between conditions and interventions.\\n\",\n        \"Finally, compute the posterior probability of Alice being the\\n\",\n        \"leader and compare with ground truth (using the `reveal` method).\\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"5-5dNAcdk0Nz\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"z4icvktpk0v0\"\n      },\n      \"source\": [\n        \"#### Solution\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"m9DZhCjcVn4-\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"import copy\\n\",\n        \"\\n\",\n        \"T = 5\\n\",\n        \"game = ChickenEggGame(T=T)\\n\",\n        \"\\n\",\n        \"# Do T rounds.\\n\",\n        \"print('Game:')\\n\",\n        \"ldg = copy.deepcopy(ld)\\n\",\n        \"for t in range(1, T+1):\\n\",\n        \"  reply = game.step('Alice', 'chicken')\\n\",\n        \"  instruction = 'Alice_' + str(t) + '=chicken'\\n\",\n        \"  ldg = ldg.do(ldg.prop(instruction))\\n\",\n        \"  ldg = ldg.see(ldg.prop(reply))\\n\",\n        \"  print(instruction + ', ' + reply)\\n\",\n        \"\\n\",\n        \"# Prediction.\\n\",\n        \"print('\\\\nPrediction:')\\n\",\n        \"cut_query = ldg.prop('Leader=Alice')\\n\",\n        \"prob_post = ldg.prob(cut_query)\\n\",\n        \"print('P(Leader = Alice | Data) = {:.5f}'.format(prob_post))\\n\",\n        \"\\n\",\n        \"# Reveal ground truth.\\n\",\n        \"print('\\\\nGround truth:')\\n\",\n        \"print('Leader = ' + game.reveal())\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [\n        \"qHP8zlWs1OUN\",\n        \"XUQVMuc2_VlG\",\n        \"P4cjtJaR_VlH\",\n        \"KxQFfJio_VlM\",\n        \"lcEgcO7C_VlQ\",\n        \"BscAftLn_VlZ\",\n        \"t9ntPBZd_Vlk\",\n        \"Fq63jb0u_Vln\",\n        \"afVSi5xo_Vlo\",\n        \"ehQ37yPg7Wil\",\n        \"9TvtFpta_Vls\",\n        \"tZijtGvW_Vlw\",\n        \"CRsPVDcg_Vlz\",\n        \"HHmLu4w_7e-S\",\n        \"rqcodRJr_Vl3\",\n        \"1AxBz2Ml_VmG\",\n        \"YbYnVRiM_VmJ\",\n        \"zyP7gSPl_VmN\",\n        \"K7OJKlcZ_VmQ\",\n        \"bD3LT8NV7rRV\",\n        \"ehK-sadN_VmT\",\n        \"ZtQffc1P7wxk\",\n        \"5PCmW5ol_VmX\",\n        \"CtfxGITj_Vmd\",\n        \"-1fUlg1O76bp\",\n        \"9ggdcdjg_Vmg\",\n        \"Bwc00gKT_Vmj\",\n        \"NUy8SH-O7_jT\",\n        \"6Y8wjMCi_Vmm\",\n        \"RVtd_Pov_Vmt\",\n        \"RLijoy-__Vmy\",\n        \"2fuYExoQ_Vm1\",\n        \"13s9eGWF8FZA\",\n        \"9Dmexb79_Vm4\",\n        \"RXjEiNWa_VnA\",\n        \"qNqHBq19_VnD\",\n        \"9JFZjAra8LJd\",\n        \"SCZyxF5l_VnG\",\n        \"k1vLg3F_8O7c\",\n        \"3OMlUFKF_VnM\",\n        \"B3DdaUXJ_VnV\",\n        \"yxuqdgvA8g-J\",\n        \"ioUtMVOs_VnX\",\n        \"jWpZ0riB8kG3\",\n        \"ZB-JZdum16ZJ\",\n        \"jw5OiWWC_Vna\",\n        \"ce_kzARO_Vna\",\n        \"uZ5o4hHxnUw0\",\n        \"_UO1GC7T_Vnl\",\n        \"JEuxhMkKHlUm\",\n        \"7fTawNEfbNZ1\",\n        \"eoNn0c5rj5U1\",\n        \"po_krgRljGmp\",\n        \"z4icvktpk0v0\"\n      ],\n      \"name\": \"Causality Tutorial.ipynb\",\n      \"provenance\": [\n        {}\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"language\": \"python\",\n      \"name\": \"python3\"\n    },\n    \"language_info\": {\n      \"codemirror_mode\": {\n        \"name\": \"ipython\",\n        \"version\": 3\n      },\n      \"file_extension\": \".py\",\n      \"mimetype\": \"text/x-python\",\n      \"name\": \"python\",\n      \"nbconvert_exporter\": \"python\",\n      \"pygments_lexer\": \"ipython3\",\n      \"version\": \"3.7.3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "causal_reasoning/README.md",
    "content": "# Algorithms for Causal Reasoning in Probability Trees\n*By the AGI Safety Analysis Team @ DeepMind*\n\nProbability trees are one of the simplest models of causal generative processes.\nThey possess clean semantics and are strictly more general than causal Bayesian\nnetworks, as they are able to e.g. represent causal relations that causal Bayesian\nnetworks cannot. Yet, they have received little attention from the AI and ML\ncommunity. Here we present new algorithms for causal reasoning in discrete\nprobability trees that cover the entire causal hierarchy (association, intervention,\nand counterfactuals), and operate on arbitrary propositional and causal events. Our\nwork expands the domain of causal reasoning to a very general class of discrete\nstochastic processes.\n\nFor details, see our paper [Algorithms for Causal Reasoning in Probability Trees](https://arxiv.org/abs/2010.12237).\n\nThe accompanying colab is available here:\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/causal_reasoning/Causal_Reasoning_in_Probability_Trees.ipynb)\n\nIf you use the code here please cite this paper.\n\n> Tim Genewein*, Tom McGrath*, Grégoire Delétang*, Vladimir Mikulik*, Miljan Martic, Shane Legg, Pedro A. Ortega. [\\[arXiv\\]](https://arxiv.org/abs/2010.12237)\n\n"
  },
  {
    "path": "cmtouch/CMTouch_Dataset_Visulization.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"OYWMcJafmrfI\"\n      },\n      \"source\": [\n        \"Copyright 2020 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"uUVnn8AOBJOy\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"import tree\\n\",\n        \"import numpy as np\\n\",\n        \"from IPython import display\\n\",\n        \"import tensorflow.compat.v2 as tf\\n\",\n        \"from PIL import Image\\n\",\n        \"tf.enable_v2_behavior()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"vd4HZbkabm9R\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Download Dataset\\n\",\n        \"!wget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_props_all_im64_val.tfrecords -q\\n\",\n        \"!wget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_all_im64_val.tfrecords -q \"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"height\": 81\n        },\n        \"executionInfo\": {\n          \"elapsed\": 1307,\n          \"status\": \"ok\",\n          \"timestamp\": 1605647960110,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": 0\n        },\n        \"id\": \"aTghgnRyBNCr\",\n        \"outputId\": \"f0cd2f48-774d-4be9-d181-00fb1bb709d7\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAoAAAABACAIAAAAF2FHpAACbgklEQVR4nOz9eZhdx3HgC8aSec65\\ntxbsKOw7wU2iuO+USEqyZUnURq22Zavbbfd0z5uZfvN1j/sf//H8Zt7S3+v35r1ZeubrxW3Lbqtl\\nU7ZkybIokZJIijuJjdiBAlBA7VWo7d57lsyImD/OrSIoETJBQoTdgyS/wq1Tt279TpzIzIjIyEh8\\n8cUX4e9DM7Ol14h4BUneXrvKf2XbVf4r267yX9l2lf/Ktovx05WAeTsNL2hmhojMfKWhLqFd5b+y\\n7Sr/lW1X+a9su8p/ZdvF+P/eTMAXNkQUkSNHjvzVX/3VlWZ5O+0q/5VtV/mvbLvKf2XbVf4r2y7k\\nd1ca5q22C912RNy3b9/v/d7vEdEjjzxyBaneervKf2XbVf4r267yX9l2lf/KtovxO7xC8fQLY+Jv\\n/VeccyGEAwcO/O7v/u6SL/+LwHsrMG/jV67yX652lf8q/ztpV/mv8r+Tdrn4r5gHfKmCY+YYo4gQ\\n0b/4F/8CEYlIVX9BeH9ru8p/lf+dtKv8V/nfSbvK/18G/9+bEHSM0TlnZv/8n/9z772q1pH0K831\\nVttV/ivbrvJf2XaV/8q2q/xXtl2M/++NBwwAIrJv374DBw7U7n9VVc5d5X+b7Sr/Vf530q7yX+V/\\nJ+0qf81/xdaAL7UhonPuj/7oj+rXquqcq+2IK432ltpV/ivbrvJf2XaV/8q2q/xXtl2M/+/NNiQi\\nCiHs378fAOq1d1X9e7QV7Cr/lW1X+a9su8p/ZdtV/ivbLsb/98YDBgBEXLFihfe+3W4DQJ7nVzAL\\n7m20q/xXtl3lv7LtKv+VbVf5r2x7U/6/Nx6wmT322GMrVqwQkTRN64vLly+/olCX0K7yX9l2lf/K\\ntqv8V7Zd5b+y7WL87m3sZ3rb7WLWys9hIKLazCGiv/zLv3TOOeeIqCiK5cuX13llvzDen25X+a/y\\nv5N2lf8q/ztpV/n/y+P/OxGC/jkM9W7lgwcPfvvb3240GsycJEl9G3me53l+lf+dt6v8V7Zd5b+y\\n7Sr/lW3//8z/rk7AF7MUfg5DvX3q93//92tboV64VtUQQlmWP/93L3u7yn+V/520q/xX+d9Ju8r/\\nXx6/A/ipX373PPq/tdU39tWvfrXT6cBi8ljtzsNiSet3geJty+TvBv9Ptfpe3pLW/p3kv4R2lf/d\\nbfZTevV3jd8uoMM36dNX+d/N9rcPRH+3+f/29lb4XSJOEdQUmFQVCBFMzYgsxpgkSYwRFl1pACCi\\npTuPMWZZFkJwztXfJknyu7/7u1NTU/39/VVVmVme5xcC1UxmNjU11dPTk2VZHSVfwhWRT37yk0S0\\nc+fOVatW9fT0FEVRVRUipmla1x4TEe99VVUAQGBLeEsfXtsaiFhPn0QkIjWegZpZ/Z4liQCgGnY/\\nR7S+7JxTMwUEqwueGRGa1CZMVLBaFGb2rW99a2Fh4fHHH//4xz/++OOP33vvvbt27Zqent64ceN1\\n113X6XSqqiIi731dkKy2gNI0JaLLwm+A0RABEVFNzQABnPf1e8G6asoEaKaqAAjsVdXMmJmIvva1\\nr/X399d38eEPf9g5Nzs7m2XZRz/60fn5+RhjrTc1WP0IENF7/4vmR7W6r5opEgFo/acJsdZDNfTe\\nH3jt0MTExMTExA+f/MGHPvQhVW21Wrt27brlllsWFhaKonDOpWkaY6wrwP2d5X/yie9/+MMfFpF2\\nu71r1673ve99CwsLZVkyc5qm9e++m/xgVndPwy5/VEFAT77+HEIDsAMHDowOn5ubm//eD5687bbb\\nli1b1mq1rr/++htuuKHdbocQiOjd1x9TUzCrx3pTuED+DoiJAcA0mumhQ4eGzw4tLLT+5vtP3Hrr\\nrcuXL2+327t3737Pe97TarXKsiSiLMtEpO41tnii3JXiT8jDovxr/smJ8fGx8cef+GEt/3a7fc01\\n19x6663tdrvT6aRpyszMLCJmFkKoh6Mrpz/Y/RGSqhw8fOTcuXMLCwvf++7f3HHHHcuXL5+fn7/2\\n2mtvuummJflfEf3/Of3XORdjBGQAqPvv+Pj4D5/8wa233rpy5cpa/jfeeGM9f8UY+/v7a6oLx398\\n8ZVXmZ2ZgOp3vv1XZgpmaHj0+PETJ0+22+3f+73fO3jwYD1s1fuumLlWvsHBwaNHj8YY63GcmWdn\\nZy/0tRGxnr8vnIPr+19aP8fFqb3+yswhBDNrNBrnz5//8pe/vGPHjj179szOzvb29qZp+t73vvfs\\n2bN/8Ad/sLCwEGP87t98r/7tpdKgCKimzjlTU9Pu5xsgISGpBjMgqs2Q+k+bGdSiQURCNpHusxRB\\nt+QBk5oSsqoSUVQ5duzYd77znSNHjohIkiQhhCW7hoiuvfba7du3i8jIyEir1Vq7du0111yzYcOG\\nejfY97///YmJCTO7TPymKkQIiIQooogAgKrKxEtmpmqszR0iUusaYo899tg3v/nNJQOofsQDAwOr\\nVq3asmVLjHF8fHx2dnbDhg1Jktx9991lWe7bt++JJ56YnJwMIXzv8e//IvmNyGGXX1UVycCMGFWg\\n3sx+5Ojxv/iLv9izd3+t0KZxzZo1zrnz589/+MMfVtVa/gMDA1mW3XnnnVVV7d279+8sP5isWrUq\\nTdPR0dFf+ZVfQcSzZ8/meb569eqaP4TwLvN39QdVVRGttkRVjACR6MiRI4899tj+/fuzLFMFdm7Z\\nsmVZlq1cuXLr1q1JkgwODnY6nYGBgSulPxfyE3blL1GZnaoeO3bsscceO3DgQJIkZsDO1/yrVq3a\\nunUrEZ07d25ubm79+vW1/Muy3L9//+OPPz41NaWqv+D+e1F+jYbYlf83v/nNl19+Oc0y7xIk6u/v\\n7+npGR0d/chHPqKqo6Oj8/Pzq1evXrZs2S233HKh/sQYr5z+KAIQ0eEjxx577LH9rx1MksTMGmmW\\nZdmyZctGRkY+8pGPMPPQ0NDCwsJS/3339f9i/bee9Q4fOfatb33rlVf3JkmCiIS2atUq7/3atWs3\\nb95sZqdOnSrLctOmTWvWrNm9e3cIYc+ePUvjv3v18P7/5X/+1w2fSFkmjhmREc1srlXULuu/+lf/\\nKkkSERGReum4Hrhrk1ZElpzgsiyXL1++evXq6enp6enppal6afZtNBpLr+uJubZlasHVE3P9bZIk\\nnU4ny7I/+7M/K8vSey8iv/d7v3fNNdeIyPr16w8fPvyd73ynnk4cc4yiIsQsMRIzI4sIIRJS9xmA\\nmSo6WnK4TRUA1KzWAwBxzCpCJgA2eOLk0aOHPTOi+dQDchViXpQuTc0Qifbu3X/s2LGuNURUFMVS\\ntEBVa7//+9//vpnNz8/fcccd//Sf/tOqqmrbYvny5c8///z4+Hhtjb5zfiZkqxywiiAiG5w8cfLo\\n0aPOMSAnSYpI9aqDAnjne3p7lVynk//hH/5ho9Gon2M9B9fOyvz8/I4dOx5//HEiarfbzPzFL35x\\nx44dAJDn+cqVK5999tka/hfM7xR9mqSEEEJZViWYOse9vX3AWVT98Y9/fOz4SQDozr5mzDw5Obly\\n5cqPf/zjBw4cOHLkiHNOVT//+c9v27aNmTudzooVK/7u8hNNTEysXbv2kUceOXz48OHDh9M0DSE8\\n+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\\nX/z/P29eKu50F4yHAAAAAElFTkSuQmCC\\n\",\n            \"text/plain\": [\n              \"\\u003cPIL.Image.Image image mode=RGB size=640x64 at 0x7F8F7FBAB0B8\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"#@title Read CMTouch Props\\n\",\n        \"\\n\",\n        \"record_file = 'cmtouch_touch_props_all_im64_val.tfrecords' #@param\\n\",\n        \"dataset = tf.data.TFRecordDataset(record_file)\\n\",\n        \"\\n\",\n        \"# Create a dictionary describing the features.\\n\",\n        \"feature_description = {\\n\",\n        \"    'sequence_length': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'camera': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"    'camera/height': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'camera/width': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'camera/channel': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'shadowhand_motor/joints_vel': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"    'shadowhand_motor/joints_vel/dim': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'shadowhand_motor/joints_pos': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"    'shadowhand_motor/joints_pos/dim': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'shadowhand_motor/spatial_touch': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"    'shadowhand_motor/spatial_touch/dim': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'actions': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"    'actions/dim': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def _parse_tf_example(example_proto):\\n\",\n        \"  # Parse the input tf.train.Example proto using the dictionary above.\\n\",\n        \"  example = tf.io.parse_single_example(example_proto, feature_description)\\n\",\n        \"  data = {}\\n\",\n        \"  for scalar_data_key, dtype in [\\n\",\n        \"      ('shadowhand_motor/joints_vel', tf.float32),\\n\",\n        \"      ('shadowhand_motor/joints_pos', tf.float32),\\n\",\n        \"      ('shadowhand_motor/spatial_touch', tf.float32),\\n\",\n        \"      ('actions', tf.float32),\\n\",\n        \"  ]:\\n\",\n        \"    data[scalar_data_key] = tf.reshape(\\n\",\n        \"        tf.io.decode_raw(example[scalar_data_key], dtype),\\n\",\n        \"        [-1, example[f'{scalar_data_key}/dim']])\\n\",\n        \"\\n\",\n        \"  for image_data_key, dtype in [('camera', tf.uint8)]:\\n\",\n        \"    data[image_data_key] = tf.reshape(\\n\",\n        \"        tf.io.decode_raw(example[image_data_key], dtype), [\\n\",\n        \"            -1, example[f'{image_data_key}/height'],\\n\",\n        \"            example[f'{image_data_key}/width'],\\n\",\n        \"            example[f'{image_data_key}/channel']\\n\",\n        \"        ])\\n\",\n        \"\\n\",\n        \"  return data\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"parsed_dataset = dataset.map(_parse_tf_example)\\n\",\n        \"for data in parsed_dataset.take(1):\\n\",\n        \"  display.display(\\n\",\n        \"      Image.fromarray(np.concatenate(data['camera'].numpy()[::20], axis=1)))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"height\": 81\n        },\n        \"executionInfo\": {\n          \"elapsed\": 577,\n          \"status\": \"ok\",\n          \"timestamp\": 1605647961015,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": 0\n        },\n        \"id\": \"K7S3Vr_R4j6h\",\n        \"outputId\": \"66149fc1-5a45-454b-b225-ad32fcc45618\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"\\u003cPIL.Image.Image image mode=RGB size=640x64 at 0x7F8F83E0F860\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"#@title Read CMTouch YCB\\n\",\n        \"\\n\",\n        \"record_file = 'cmtouch_touch_objects_ycb_all_im64_val.tfrecords'  #@param \\n\",\n        \"dataset = tf.data.TFRecordDataset(record_file)\\n\",\n        \"\\n\",\n        \"# Create a dictionary describing the features.\\n\",\n        \"feature_description = {\\n\",\n        \"    'sequence_length': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'camera': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"    'camera/height': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'camera/width': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'camera/channel': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'object_id': tf.io.FixedLenFeature([], tf.string),  # for both\\n\",\n        \"    'object_id/dim': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'orientation_id': tf.io.FixedLenFeature([], tf.string),  # only for ycb\\n\",\n        \"    'orientation_id/dim': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'shadowhand_motor/joints_vel': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"    'shadowhand_motor/joints_vel/dim': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'shadowhand_motor/joints_pos': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"    'shadowhand_motor/joints_pos/dim': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'shadowhand_motor/spatial_touch': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"    'shadowhand_motor/spatial_touch/dim': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"    'actions': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"    'actions/dim': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def _parse_tf_example(example_proto):\\n\",\n        \"  # Parse the input tf.train.Example proto using the dictionary above.\\n\",\n        \"  example = tf.io.parse_single_example(example_proto, feature_description)\\n\",\n        \"  data = {}\\n\",\n        \"  for scalar_data_key, dtype in [\\n\",\n        \"      ('object_id', tf.float32),\\n\",\n        \"      ('orientation_id', tf.float32),\\n\",\n        \"      ('shadowhand_motor/joints_vel', tf.float32),\\n\",\n        \"      ('shadowhand_motor/joints_pos', tf.float32),\\n\",\n        \"      ('shadowhand_motor/spatial_touch', tf.float32),\\n\",\n        \"      ('actions', tf.float32),\\n\",\n        \"  ]:\\n\",\n        \"    data[scalar_data_key] = tf.reshape(\\n\",\n        \"        tf.io.decode_raw(example[scalar_data_key], dtype),\\n\",\n        \"        [-1, example[f'{scalar_data_key}/dim']])\\n\",\n        \"\\n\",\n        \"  for image_data_key, dtype in [('camera', tf.uint8)]:\\n\",\n        \"    data[image_data_key] = tf.reshape(\\n\",\n        \"        tf.io.decode_raw(example[image_data_key], dtype), [\\n\",\n        \"            -1, example[f'{image_data_key}/height'],\\n\",\n        \"            example[f'{image_data_key}/width'],\\n\",\n        \"            example[f'{image_data_key}/channel']\\n\",\n        \"        ])\\n\",\n        \"\\n\",\n        \"  return data\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"parsed_dataset = dataset.map(_parse_tf_example)\\n\",\n        \"for data in parsed_dataset.take(1):\\n\",\n        \"  display.display(\\n\",\n        \"      Image.fromarray(np.concatenate(data['camera'].numpy()[::20], axis=1)))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"ETqLBi4PEInt\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"last_runtime\": {\n        \"build_target\": \"//experimental/deepmind/yuxiangzhou/colab_kernels:mujoco\",\n        \"kind\": \"private\"\n      },\n      \"name\": \"CMTouch Dataset Visulization\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1dYBnbGthSPI59OX8SxCoy-JDanaobOXt\",\n          \"timestamp\": 1603209355798\n        }\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "cmtouch/README.md",
    "content": "--------------------------------------------------------------------------------\n\n# CMTouch Dataset\n\n<!-- ![downloads](https://img.shields.io/github/downloads/atom/atom/total.svg)\n![build](https://img.shields.io/appveyor/ci/:user/:repo.svg)\n![chat](https://img.shields.io/discord/:serverId.svg)\n -->\n\nThis repository contains datasets for cross-modal representation learning, used\nin developing rich touch representations in \"Learning rich touch representations\nthrough cross-modal self-supervision\" [1].\n\nThe datasets we provide are:\n\n1.  CMTouch-Props\n2.  CMTouch-YCB\n\nThe datasets consist of episodes collected by running a reinforcement learning\nagent on a simulated Shadow Dexterous Hand [2] interacting with different\nobjects. From this interactions, observations from different sensory modalities\nare collected at each time step, including vision, proprioception (joint\npositions and velocities), touch, actions, object IDs. We used these data to\nlearn rich touch representations using cross-modal self-supervision.\n\n## Bibtex\n\nIf you use one of these datasets in your work, please cite the reference paper\nas follows:\n\n```\n@InProceedings{zambelli20learning,\nauthor = \"Zambelli, Martina and Aytar, Yusuf and Visin, Francesco and Zhou, Yuxiang and Hadsell, Raia\",\ntitle = \"Learning rich touch representations through cross-modal self-supervision\",\nyear = \"2020\",\n}\n```\n\n<!--\n@misc{cmtouchdatasets}, title={CMTouch Datasets}, author={Zambelli, Martina and\nAytar, Yusuf and Visin, Francesco and Zhou, Yuxiang and Hadsell, Raia},\nhowpublished={https://github.com/deepmind/deepmind-research/tree/master/cmtouch},\nyear={2020} }\n-->\n\n## Descriptions\n\n### Experimental setup\n\nWe run experiments in simulation with MuJoCo [3] and we use the simulated Shadow\nDexterous Hand [2], with five fingers and 24 degrees of freedom, actuated by 20\nmotors. In simulation, each fingertip has a spatial touch sensor attached with a\nspatial resolution of 4×4 and three channels: one for normal force and two for\ntangential forces. We simplify this by summing across the spatial dimensions,\nto obtain a single force vector for each fingertip representing one normal force\nand two tangential forces. The state consists of proprioception (joint positions\nand joint velocities) and touch.\n\nVisual inputs are collected with a 64×64 resolution and are only used for\nrepresentation learning, but are not provided as observations to control the\nrobot’s actions. The action space is 20-dimensional. We use velocity control and\na control rate of 30 Hz. Each episode has 200 time steps, which correspond to\nabout 6 seconds. The environment consists of the Shadow Hand, facing down, and\ninteracting with different objects. These objects have different shapes, sizes\nand physical properties (e.g. rigid or soft). We develop two versions of the\ntask, the first using simple props and the second using YCB objects. In both\ncases, objects are fixed to their frame of reference, while their position and\norientation are randomized.\n\n### CMTouch-Props\n\nThis is a dataset based on simple geometric 3D shapes (referred to as \"props\").\nProps are simple 3D shaped objects that include cubes, spheres, cylinders and\nellipsoid of different sizes. We also generated the soft version of each prop,\nwhich can deform under the pressure of the touching fingers.\n\nSoft deformable objects are complex entities to simulate: they are defined\nthrough a composition of multiple bodies (capsules) that are tied together to\nform a shape, such as a cube or a sphere. The main characteristic of these\nobjects is their elastic behaviour, that is they change shape when touched. The\nmost difficult thing to simulate in this context is contacts, which grow\nexponentially with the increased number of colliding bodies.\n\nForty-eight different objects are generated by sampling from 6 different sizes,\n4 different shapes (i.e. sphere, cylinder, cube, ellipsoid), and they can either\nbe rigid or soft.\n\n![](https://i.imgur.com/Hps38z5.jpg)\n\n### CMTouch-YCB\n\nThis is a dataset based on YCB objects. The YCB objects dataset [4] consists of\neveryday objects with different shapes, sizes, textures, weight and rigidity.\n\nWe chose a set of ten objects: cracker box, sugar box, mustard bottle, potted\nmeat can, banana, pitcher base, bleach cleanser, mug, power drill, scissors.\nThese are generated in simulation at their standard size, which is also\nproportionate to the default dimension of the simulated Shadow Hand.\n\nThe pose of each object is randomly selected among a set of 60 different poses,\nwhere we vary the orientation of the object. These variations make the\nidentification of each object more complex than the CMTouch-Props and require a\nhigher generalization capability from the learning method applied.\n\n![](https://i.imgur.com/Mf3KYbn.jpg)\n\n## Download\n\nThe datasets can be downloaded from\n[Google Cloud Storage](https://console.cloud.google.com/storage/browser/dm_cmtouch).\nEach dataset is a single\n[TFRecord](https://www.tensorflow.org/tutorials/load_data/tfrecord) file.\n\nOn Linux, to download a particular dataset, use the web interface, or run `wget`\nwith the appropriate filename as follows:\n\n```\nwget https://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_props_all_test.tfrecords\nwget https://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_props_all_train.tfrecords\nwget https://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_props_all_val.tfrecords\nwget https://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_ycb_all_test.tfrecords\nwget https://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_ycb_all_train.tfrecords\nwget https://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_ycb_all_val.tfrecords\n```\n\n\n## Usage\n\nAfter downloading the dataset files, you can read them as `tf.data.Dataset`\ninstances with the readers provided. The example below shows how to read the\ncmtouch-props dataset:\n\n```\nrecord_file = 'test.tfrecords'\ndataset = tf.data.TFRecordDataset(record_file)\nparsed_dataset = dataset.map(_parse_tf_example)\n```\n\n(a complete example is provided in the Colab).\n\nAll dataset readers return the following set of observations:\n\n'camera': tf.io.FixedLenFeature([], tf.string),\n    'camera/height': tf.io.FixedLenFeature([], tf.int64),\n    'camera/width': tf.io.FixedLenFeature([], tf.int64),\n    'camera/channel': tf.io.FixedLenFeature([], tf.int64),\n    'object_id': tf.io.FixedLenFeature([], tf.string),  # for both\n    'object_id/dim': tf.io.FixedLenFeature([], tf.int64),\n    'orientation_id': tf.io.FixedLenFeature([], tf.string),  # only for ycb\n    'orientation_id/dim': tf.io.FixedLenFeature([], tf.int64),\n    'shadowhand_motor/joints_vel': tf.io.FixedLenFeature([], tf.string),\n    'shadowhand_motor/joints_vel/dim': tf.io.FixedLenFeature([], tf.int64),\n    'shadowhand_motor/joints_pos': tf.io.FixedLenFeature([], tf.string),\n    'shadowhand_motor/joints_pos/dim': tf.io.FixedLenFeature([], tf.int64),\n    'shadowhand_motor/spatial_touch': tf.io.FixedLenFeature([], tf.string),\n    'shadowhand_motor/spatial_touch/dim': tf.io.FixedLenFeature([], tf.int64),\n    'actions'\n\n*   'camera': `Tensor` of shape [sequence_length, height, width, channels] and type\n    uint8\n\n*   'shadowhand_motor/spatial_touch': `Tensor` of shape [sequence_length, num_fingers x 3] and type float32\n\n*   'shadowhand_motor/joints_pos': `Tensor` of shape [sequence_length, num_joint_positions] and type float32\n\n*   'shadowhand_motor/joints_vel': `Tensor` of shape [sequence_length,\n    num_joint_velocities] and type float32\n\n*   'actions': `Tensor` of shape [sequence_length, num_actuated_joints] and type\n    float32\n\n*   'object_id': `Scalar` indicating an object identification number\n\n*   'orientation_id': `Scalar` indicating a YCB object pose identification number\n    (CMTouch-YCB only)\n\nFew-shot evaluations can be made by creating subsets of data to train and\nevaluate the models.\n\n<!--\n```diff=\n- TODO\n```\n-->\n\n## References\n\n[1] M. Zambelli, Y. Aytar, F. Visin, Y. Zhou, R. Hadsell. Learning rich touch\nrepresentations through cross-modal self-supervision. Conference on Robot\nLearning (CoRL), 2020.\n\n[2] ShadowRobot, Shadow Dexterous Hand.\nhttps://www.shadowrobot.com/products/dexterous-hand/.\n\n[3] E. Todorov, T. Erez, and Y. Tassa. MuJoCo: A physics engine for model-based\ncontrol. In Proceedings of the International Conference on Intelligent Robots\nand Systems (IROS), 2012.\n\n[4] B. Calli, A. Singh, J. Bruce, A. Walsman, K. Konolige, S. Srinivasa, P.\nAbbeel, and A. M. Dollar. Yale-cmu-berkeley dataset for robotic manipulation\nresearch. The International Journal of RoboticsResearch, 36(3):261–268, 2017.\n\n## Disclaimers\n\nThis is not an official Google product.\n\n## Appendix and FAQ\n\n**Find this document incomplete?** Leave a comment!\n"
  },
  {
    "path": "cmtouch/download_datasets.sh",
    "content": "#!/bin/bash\n# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_all_im64_train.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_all_im64_train10.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_all_im64_train100.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_all_im64_train1000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_all_im64_train250.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_all_im64_train30.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_all_im64_train50.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_all_im64_train500.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_all_im64_val.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj0_im64_train.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj0_im64_train1500.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj0_im64_train180.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj0_im64_train300.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj0_im64_train3000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj0_im64_train60.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj0_im64_train600.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj0_im64_train6000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj0_im64_val.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj1_im64_train.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj1_im64_train1500.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj1_im64_train180.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj1_im64_train300.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj1_im64_train3000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj1_im64_train60.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj1_im64_train600.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj1_im64_train6000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj1_im64_val.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj2_im64_train.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj2_im64_train1500.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj2_im64_train180.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj2_im64_train300.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj2_im64_train3000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj2_im64_train60.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj2_im64_train600.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj2_im64_train6000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj2_im64_val.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj3_im64_train.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj3_im64_train1500.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj3_im64_train180.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj3_im64_train300.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj3_im64_train3000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj3_im64_train60.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj3_im64_train600.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj3_im64_train6000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj3_im64_val.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj4_im64_train.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj4_im64_train1500.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj4_im64_train180.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj4_im64_train300.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj4_im64_train3000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj4_im64_train60.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj4_im64_train600.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj4_im64_train6000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj4_im64_val.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj5_im64_train.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj5_im64_train1500.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj5_im64_train180.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj5_im64_train300.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj5_im64_train3000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj5_im64_train60.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj5_im64_train600.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj5_im64_train6000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj5_im64_val.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj6_im64_train.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj6_im64_train1500.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj6_im64_train180.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj6_im64_train300.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj6_im64_train3000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj6_im64_train60.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj6_im64_train600.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj6_im64_train6000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj6_im64_val.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj7_im64_train.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj7_im64_train1500.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj7_im64_train180.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj7_im64_train300.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj7_im64_train3000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj7_im64_train60.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj7_im64_train600.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj7_im64_train6000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj7_im64_val.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj8_im64_train.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj8_im64_train1500.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj8_im64_train180.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj8_im64_train300.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj8_im64_train3000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj8_im64_train60.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj8_im64_train600.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj8_im64_train6000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj8_im64_val.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj9_im64_train.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj9_im64_train1500.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj9_im64_train180.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj9_im64_train300.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj9_im64_train3000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj9_im64_train60.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj9_im64_train600.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj9_im64_train6000.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_objects_ycb_obj9_im64_val.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_props_all_im64_train.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_props_all_im64_train1200.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_props_all_im64_train144.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_props_all_im64_train240.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_props_all_im64_train2400.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_props_all_im64_train48.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_props_all_im64_train480.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_props_all_im64_train4800.tfrecords\nwget http://storage.googleapis.com/dm_cmtouch/datasets/cmtouch_touch_props_all_im64_val.tfrecords\n"
  },
  {
    "path": "continual_learning/README.md",
    "content": "# Continual learning with pre-trained encoders and ensembles of classifiers\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/continual_learning/encoders_and_ensembles.ipynb)\n\nThis repository contains a notebook implementation of a classifier ensemble memory model that mitigates catastrophic forgetting.\n\nThe code was written by Murray Shanahan.\n\nThe model comprises\n*   a pre-trained encoder, trained on a different dataset from the target dataset, and\n*   a memory with fixed randomised keys and k-nearest neighbour lookup, where\n*   each memory location stores the parameters of a trainable local classifier, and\n*   the ensemble's output is the mean output of the k selected classifiers weighted according to the distance of their keys from the encoded input\n\nThe model is demonstrated on MNIST, where the encoder is pre-trained on Omniglot. The continual learning setting is\n*   Task-free. The models doesn't know about task boundaries\n*   Online. The dataset is ony seen once, and there are no epochs\n*   Incremental class learning. Evaluation is always on 10-way classification\n\nThe code accompanies the paper:\n\nShanahan, M., Kaplanis, C. & Mitrovic, J. (2021). Encoders and Ensembles for Task-Free Continual Learning. ArXiv preprint: https://arxiv.org/abs/2105.13327\n\n## Running the experiments\n\nThe easiest way to run the code is using the publicly available [Colab](https://colab.research.google.com) kernel. Colaboratory is a free Jupyter notebook environment provided by Google that requires no setup and runs entirely in the cloud. (A GPU runtime is needed to train in a reasonable time.) The notebook is self-contained, and will load all necessary libraries automatically if run in Colaboratory.\n\nClick \"Run all\" in the \"Runtime\" menu to train on 5-way split MNIST (\"high data\" setting), as described in the paper. Adjusting the \"schedule_type\" in the config will allow you to try out different benchmarks, such as a 10-way split.\n\n## Contact\n\nIf you have any feedback, or would like to get in touch regarding the code or the architecture, you can reach out to mshanahan@deepmind.com.\n\n## Disclaimer\n\nThis is not an officially supported Google product.\n"
  },
  {
    "path": "continual_learning/encoders_and_ensembles.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"hoKLQnrnS73m\"\n      },\n      \"source\": [\n        \"Copyright 2021 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"you may not use this file except in compliance with the License.\\n\",\n        \"You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software\\n\",\n        \"distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"See the License for the specific language governing permissions and\\n\",\n        \"limitations under the License.\\n\",\n        \"\\n\",\n        \"# Continual learning with pre-trained encoders and ensembles of classifiers\\n\",\n        \"\\n\",\n        \"Murray Shanahan\\n\",\n        \"\\n\",\n        \"July 2021\\n\",\n        \"\\n\",\n        \"A classifier ensemble memory model that mitigates catastrophic forgetting. The model comprises\\n\",\n        \"*   a pre-trained encoder, trained on a different dataset from the target dataset, and\\n\",\n        \"*   a memory with fixed randomised keys and k-nearest neighbour lookup, where\\n\",\n        \"*   each memory location stores the parameters of a trainable local classifier, and\\n\",\n        \"*   the ensemble's output is the mean output of the k selected classifiers weighted according to the distance of their keys from the encoded input\\n\",\n        \"\\n\",\n        \"The model is demonstrated on MNIST, where the encoder is pre-trained on Omniglot. The continual learning setting is\\n\",\n        \"*   Task-free. The models doesn't know about task boundaries\\n\",\n        \"*   Online. The dataset is ony seen once, and there are no epochs\\n\",\n        \"*   Incremental class learning. Evaluation is always on 10-way classification\\n\",\n        \"\\n\",\n        \"This Colab accompanies the paper:\\n\",\n        \"\\n\",\n        \"Shanahan, M., Kaplanis, C. \\u0026 Mitrovic, J. (2021). Encoders and Ensembles for Task-Free Continual Learning. ArXiv preprint: https://arxiv.org/abs/2105.13327\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"kfWWLMG6wN5J\"\n      },\n      \"source\": [\n        \"# Preliminaries\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"thK1IH0gqT3V\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Dependencies that may require pip installation\\n\",\n        \"\\n\",\n        \"!pip install dm-haiku\\n\",\n        \"!pip install optax\\n\",\n        \"!pip install dm-tree\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"LcMFWHXtSYWn\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Imports\\n\",\n        \"\\n\",\n        \"import tensorflow.compat.v2 as tf\\n\",\n        \"tf.enable_v2_behavior()\\n\",\n        \"\\n\",\n        \"import jax\\n\",\n        \"import jax.numpy as jnp\\n\",\n        \"from jax import jit, grad, random\\n\",\n        \"import optax\\n\",\n        \"import haiku as hk\\n\",\n        \"import tree\\n\",\n        \"\\n\",\n        \"from matplotlib import pyplot as plt\\n\",\n        \"\\n\",\n        \"import tensorflow_datasets as tfds\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"JYq-m_tSuc-M\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Experiment parameters\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# MNIST config (high data) - for comparison with Lee, et al. (2020)\\n\",\n        \"\\n\",\n        \"config = {\\n\",\n        \"    'enc_size': 512,  # size of latent encoding\\n\",\n        \"    'mem_size': 1024,  # number of memory locations (classifiers)\\n\",\n        \"    'k': 32,  # k nearest neighbour lookup parameter\\n\",\n        \"    'vub': 250,  # upper bound for activation function - was 100\\n\",\n        \"    'res': 28,  # resolution - 28 for MNIST \\u0026 Omniglot\\n\",\n        \"    'col_dims': 1,  # 3 for RGB, 1 for greyscale\\n\",\n        \"    'num_classes': 10,  # number of classes\\n\",\n        \"    'pretrain_n_batches': 10000,  # number of batches in pre-training\\n\",\n        \"    'pretrain_dataset': 'omniglot',\\n\",\n        \"    'main_dataset': 'mnist',\\n\",\n        \"    'batch_size': 60,  # batch size for training main model\\n\",\n        \"    'learning_rate': 1e-4,  # learning rate for training main model\\n\",\n        \"    'weight_decay': 1e-4,  # optimiser weight decay\\n\",\n        \"    'init_scale': 0.1,  # baseline classifier initialiser variance scaling\\n\",\n        \"    'log_every': 10,  # interval for logging accuracies\\n\",\n        \"    'report_every': 500,  # interval for reporting accuracies\\n\",\n        \"    'schedule_type': '5way_split',  # training schedule (defining splits, etc)\\n\",\n        \"    'n_runs': 20,  # number of runs on the schedule\\n\",\n        \"}\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"a6JEJ1hYv-Um\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Optimisers\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class NaiveOptimiser():\\n\",\n        \"  \\\"\\\"\\\"Optimiser that discards magnitude of gradients and uses only their sign.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self, learning_rate, weight_decay):\\n\",\n        \"    self.learning_rate = learning_rate\\n\",\n        \"    self.weight_decay = weight_decay\\n\",\n        \"    self.state = None\\n\",\n        \"\\n\",\n        \"  def init(self, params):\\n\",\n        \"    return None\\n\",\n        \"\\n\",\n        \"  def update(self, grads, _, params=None):\\n\",\n        \"    step_size = self.learning_rate\\n\",\n        \"    weight_decay = self.weight_decay\\n\",\n        \"    updates = jax.tree_map(lambda g: -jnp.sign(g), grads)\\n\",\n        \"    updates = jax.tree_multimap(\\n\",\n        \"        lambda g, p: g + weight_decay * p, updates, params)\\n\",\n        \"    updates = jax.tree_map(lambda g: step_size * g, updates)\\n\",\n        \"    return (updates, self.state)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def make_encoder_optimiser():\\n\",\n        \"  opt = optax.adam(learning_rate=0.001)  # learning rate was 0.001\\n\",\n        \"  return opt\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def make_ensemble_optimiser():\\n\",\n        \"  opt = NaiveOptimiser(learning_rate=config['learning_rate'],\\n\",\n        \"                       weight_decay=config['weight_decay'])\\n\",\n        \"  return opt\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"2yojukFKuJYr\"\n      },\n      \"source\": [\n        \"# Datasets\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"gKLDMf_-NDPC\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Datasets: MNIST and Omniglot\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_dataset(dataset_name, train_or_test, batch_size, filter_labels=None):\\n\",\n        \"  filter_fn = lambda batch: tf.reduce_any(tf.equal(batch['label'],\\n\",\n        \"                                                   filter_labels))\\n\",\n        \"  dataset = tfds.load(dataset_name, split=train_or_test,\\n\",\n        \"                      as_supervised=False)\\n\",\n        \"  if filter_labels is not None:\\n\",\n        \"    dataset = dataset.filter(filter_fn)\\n\",\n        \"  dataset = dataset.shuffle(buffer_size=10000)\\n\",\n        \"  dataset = dataset.batch(batch_size)\\n\",\n        \"  dataset = dataset.repeat()\\n\",\n        \"  dataset = iter(dataset)\\n\",\n        \"  return dataset\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_batch(dataset, dataset_name):\\n\",\n        \"  batch = next(dataset)\\n\",\n        \"  batch_size = batch['image'].shape[0]\\n\",\n        \"  images = batch['image']\\n\",\n        \"  if dataset_name == 'omniglot':\\n\",\n        \"    images = tf.image.resize(images, [config['res'], config['res']])\\n\",\n        \"    images = images[:, :, :, 0]\\n\",\n        \"  images = tf.reshape(images, [batch_size, 28, 28, 1]) / 255\\n\",\n        \"  if dataset_name == 'omniglot':\\n\",\n        \"    images = 1 - images  # raw Omniglot characters are white (1) on black (0)\\n\",\n        \"  labels = batch['label']\\n\",\n        \"  one_hots = tf.one_hot(batch['label'], config['num_classes'])\\n\",\n        \"  return (images.numpy(), one_hots.numpy(), labels.numpy())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"uEtOt26W9O36\"\n      },\n      \"source\": [\n        \"# Plotting\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"HeUf0sJmT00v\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Plotting accuracies\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def smooth(data, degree=2):\\n\",\n        \"  \\\"\\\"\\\"Smooth out data for plotting.\\\"\\\"\\\"\\n\",\n        \"  triangle = jnp.array(list(range(degree)) + [degree] +\\n\",\n        \"                       list(range(degree)[::-1])) + 1\\n\",\n        \"  # Copy last data point 'degree' times\\n\",\n        \"  data = jnp.append(data, jnp.array([data[-1] for _ in range(len(triangle))]))\\n\",\n        \"  smoothed = [data[0]]\\n\",\n        \"  for i in range(1, len(data) - len(triangle)):\\n\",\n        \"    point = data[i:i + len(triangle)] * triangle\\n\",\n        \"    smoothed.append(sum(point)/sum(triangle))\\n\",\n        \"  return jnp.array(smoothed)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def plot_x_accuracies(x_accuracies1, x_accuracies2, x_accuracies3, final=False):\\n\",\n        \"  \\\"\\\"\\\"Plot experiment mean accuracies with error bounds.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  # Find means and stds\\n\",\n        \"  x_accuracies1 = jnp.array(x_accuracies1, dtype=jnp.float64)\\n\",\n        \"  x_accuracies2 = jnp.array(x_accuracies2, dtype=jnp.float64)\\n\",\n        \"  x_accuracies3 = jnp.array(x_accuracies3, dtype=jnp.float64)\\n\",\n        \"  c_vanilla_means = jnp.mean(x_accuracies1, axis=(0, 1))\\n\",\n        \"  c_vanilla_stds = jnp.std(jnp.mean(x_accuracies1, axis=1), axis=0)\\n\",\n        \"  c_tanh_means = jnp.mean(x_accuracies2, axis=(0, 1))\\n\",\n        \"  c_tanh_stds = jnp.std(jnp.mean(x_accuracies2, axis=1), axis=0)\\n\",\n        \"  e_means = jnp.mean(x_accuracies3, axis=(0, 1))\\n\",\n        \"  e_stds = jnp.std(jnp.mean(x_accuracies3, axis=1), axis=0)\\n\",\n        \"  final_c_vanilla_mean = c_vanilla_means[-1]\\n\",\n        \"  final_c_vanilla_std = c_vanilla_stds[-1]\\n\",\n        \"  final_c_tanh_mean = c_tanh_means[-1]\\n\",\n        \"  final_c_tanh_std = c_tanh_stds[-1]\\n\",\n        \"  final_e_mean = e_means[-1]\\n\",\n        \"  final_e_std = e_stds[-1]\\n\",\n        \"\\n\",\n        \"  # Smooth the data\\n\",\n        \"  c_vanilla_means = smooth(c_vanilla_means)\\n\",\n        \"  c_vanilla_stds = smooth(c_vanilla_stds)\\n\",\n        \"  c_tanh_means = smooth(c_tanh_means)\\n\",\n        \"  c_tanh_stds = smooth(c_tanh_stds)\\n\",\n        \"  e_means = smooth(e_means)\\n\",\n        \"  e_stds = smooth(e_stds)\\n\",\n        \"\\n\",\n        \"  plt.figure(figsize=(8, 4))\\n\",\n        \"\\n\",\n        \"  # Vanilla classifier accuracies\\n\",\n        \"  ax = plt.plot(range(len(c_vanilla_means)), c_vanilla_means)\\n\",\n        \"  colour = ax[-1].get_color()\\n\",\n        \"  plt.fill_between(range(len(c_vanilla_means)),\\n\",\n        \"                   c_vanilla_means-c_vanilla_stds,\\n\",\n        \"                   c_vanilla_means+c_vanilla_stds,\\n\",\n        \"                   facecolor=colour, alpha=0.2)\\n\",\n        \"  # Tanh classifier accuracies\\n\",\n        \"  ax = plt.plot(range(len(c_tanh_means)), c_tanh_means)\\n\",\n        \"  colour = ax[-1].get_color()\\n\",\n        \"  plt.fill_between(range(len(c_tanh_means)),\\n\",\n        \"                   c_tanh_means-c_tanh_stds,\\n\",\n        \"                   c_tanh_means+c_tanh_stds,\\n\",\n        \"                   facecolor=colour, alpha=0.2)\\n\",\n        \"  # Ensemble accuracies\\n\",\n        \"  ax = plt.plot(range(len(e_means)), e_means)\\n\",\n        \"  colour = ax[-1].get_color()\\n\",\n        \"  plt.fill_between(range(len(e_means)),\\n\",\n        \"                   e_means-e_stds,\\n\",\n        \"                   e_means+e_stds,\\n\",\n        \"                   facecolor=colour, alpha=0.2)\\n\",\n        \"\\n\",\n        \"  # Produce plots\\n\",\n        \"  plt.ylim([0.0, 1.0])\\n\",\n        \"  plt.xlabel('Batch x{}'.format(config['log_every']))\\n\",\n        \"  plt.ylabel('Accuracy')\\n\",\n        \"  plt.legend(['Vanilla classifier', 'Tanh classifier', 'Ensemble'])\\n\",\n        \"  plt.show()\\n\",\n        \"\\n\",\n        \"  # Report accuracies\\n\",\n        \"  print('Vanilla classifier accuracy: {:.4f} \\\\u00b1 {:.4f}'.format(\\n\",\n        \"      final_c_vanilla_mean, final_c_vanilla_std))\\n\",\n        \"  print('Tanh classifier accuracy: {:.4f} \\\\u00b1 {:.4f}'.format(\\n\",\n        \"      final_c_tanh_mean, final_c_tanh_std))\\n\",\n        \"  print('Ensemble accuracy: {:.4f} \\\\u00b1 {:.4f}'.format(\\n\",\n        \"      final_e_mean, final_e_std))\\n\",\n        \"  print()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"Qb3GLfh0waig\"\n      },\n      \"source\": [\n        \"# Models and losses\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"2bdSRg6jLxIz\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Autoencoder (for pretraining)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class Autoencoder(hk.Module):\\n\",\n        \"  \\\"\\\"\\\"Autoencoder module.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"  def encode(self, image):\\n\",\n        \"    cnn = hk.Sequential([\\n\",\n        \"        hk.Conv2D(output_channels=16, kernel_shape=4, name='enc1'), jax.nn.relu,\\n\",\n        \"        hk.Conv2D(output_channels=16, kernel_shape=4, name='enc2'), jax.nn.relu,\\n\",\n        \"        hk.Flatten(),\\n\",\n        \"    ])\\n\",\n        \"    mlp1 = hk.Sequential([\\n\",\n        \"        hk.Linear(128, name='enc3'), jax.nn.relu,\\n\",\n        \"        hk.Linear(config['enc_size'], name='enc4'),\\n\",\n        \"    ])\\n\",\n        \"    mlp2 = hk.Sequential([\\n\",\n        \"        hk.Linear(128, name='enc5'), jax.nn.relu,\\n\",\n        \"        hk.Linear(config['enc_size'], name='enc6'),\\n\",\n        \"    ])\\n\",\n        \"    feats = cnn(image.reshape([-1, config['res'], config['res'],\\n\",\n        \"                               config['col_dims']]))\\n\",\n        \"    enc_mean = jnp.tanh(mlp1(feats))\\n\",\n        \"    enc_sd = jax.nn.relu(mlp2(feats))\\n\",\n        \"    return (enc_mean, enc_sd)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"  def decode(self, latent):\\n\",\n        \"    dcnn = hk.Sequential(\\n\",\n        \"        [hk.Linear(128, name='dec1'), jax.nn.relu,\\n\",\n        \"        hk.Linear(config['res']*config['res']*16, name='dec2'), jax.nn.relu,\\n\",\n        \"        hk.Reshape((config['res'], config['res'], 16)),\\n\",\n        \"        hk.Conv2DTranspose(output_channels=16, kernel_shape=4, name='dec3'),\\n\",\n        \"        jax.nn.relu,\\n\",\n        \"        hk.Conv2DTranspose(output_channels=config['col_dims'],\\n\",\n        \"                           kernel_shape=4, name='dec4'),\\n\",\n        \"        jax.nn.sigmoid])\\n\",\n        \"    image = dcnn(latent).reshape([-1, config['res'], config['res'],\\n\",\n        \"                                  config['col_dims']])\\n\",\n        \"    return image\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"  def forward(self, rng, image):\\n\",\n        \"    (enc_mean, enc_sd) = self.encode(image)\\n\",\n        \"    # Sample\\n\",\n        \"    (rng2, rng) = random.split(rng)\\n\",\n        \"    eps = random.normal(rng2, jnp.shape(enc_mean))\\n\",\n        \"    enc = enc_mean + enc_sd * eps\\n\",\n        \"    image_dec = self.decode(enc)\\n\",\n        \"    out = {\\n\",\n        \"      'enc_mean': enc_mean,\\n\",\n        \"      'enc_sd': enc_sd,\\n\",\n        \"      'image_dec': image_dec,\\n\",\n        \"    }\\n\",\n        \"    return out\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def encoder(rng, image):\\n\",\n        \"  autoencoder = Autoencoder()\\n\",\n        \"  out = autoencoder.forward(rng, image)\\n\",\n        \"  return out\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Ao_JIdjYMLP_\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Autoencoder loss (for pretraining)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def kl_divergence(mean, sd):\\n\",\n        \"  kl = -0.5 * (1.0 + jnp.log(sd**2) - mean**2 - sd**2)\\n\",\n        \"  return kl\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def autoencoder_losses(enc_params, rng, images):\\n\",\n        \"  encoder_net = hk.transform(encoder)\\n\",\n        \"  (rng2, rng) = random.split(rng)\\n\",\n        \"  autoencoder_out = encoder_net.apply(enc_params, rng, rng2, images)\\n\",\n        \"  enc_means = autoencoder_out['enc_mean']\\n\",\n        \"  enc_sds = autoencoder_out['enc_sd']\\n\",\n        \"  image_decs = autoencoder_out['image_dec']\\n\",\n        \"  # Decoder reconstruction loss\\n\",\n        \"  decoder_loss = jnp.mean((images-image_decs)**2)\\n\",\n        \"  # Decoder KL loss\\n\",\n        \"  kld = kl_divergence(enc_means, enc_sds + 1e-10)  # add epsilon to avoid sd=0\\n\",\n        \"  kl_loss = jnp.mean(kld)\\n\",\n        \"  # Total loss\\n\",\n        \"  beta = 0.001  # weighting of KL term\\n\",\n        \"  tot_loss = decoder_loss + beta * kl_loss\\n\",\n        \"  losses = {\\n\",\n        \"    'tot_loss': tot_loss,\\n\",\n        \"    'decoder_loss': decoder_loss,\\n\",\n        \"    'kl_loss': kl_loss,\\n\",\n        \"  }\\n\",\n        \"  return losses\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def autoencoder_loss(enc_params, rng, images):\\n\",\n        \"  losses = autoencoder_losses(enc_params, rng, images)\\n\",\n        \"  return losses['tot_loss']\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"bawIEzugOiZG\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Update autoencoder parameters\\n\",\n        \"\\n\",\n        \"@jit\\n\",\n        \"def update_autoencoder(enc_params, rng, opt_state, images):\\n\",\n        \"  opt = make_encoder_optimiser()\\n\",\n        \"  grads = grad(autoencoder_loss)(enc_params, rng, images)\\n\",\n        \"  updates, opt_state = opt.update(grads, opt_state)\\n\",\n        \"  new_params = optax.apply_updates(enc_params, updates)\\n\",\n        \"  return new_params, opt_state\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"lKGZurl6fQBd\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Ensemble memory (main model)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def activation(values):\\n\",\n        \"  \\\"\\\"\\\"Activation function for ensemble (scaled tanh).\\\"\\\"\\\"\\n\",\n        \"  out = jnp.tanh(values / config['vub']) * config['vub']\\n\",\n        \"  return out\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def l2_normalize(x, axis=None, epsilon=1e-12):\\n\",\n        \"  \\\"\\\"\\\"l2 normalize a tensor on an axis with numerical stability.\\\"\\\"\\\"\\n\",\n        \"  square_sum = jnp.sum(jnp.square(x), axis=axis, keepdims=True)\\n\",\n        \"  x_inv_norm = jax.lax.rsqrt(jnp.maximum(square_sum, epsilon))\\n\",\n        \"  return x * x_inv_norm\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class Memory(hk.Module):\\n\",\n        \"  \\\"\\\"\\\"Memory module.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self, name=None):\\n\",\n        \"    super().__init__(name)\\n\",\n        \"    self.keys = hk.get_parameter('mem_keys', [config['mem_size'],\\n\",\n        \"                                              config['enc_size']],\\n\",\n        \"                                 init=hk.initializers.Constant(0))\\n\",\n        \"    self.weights = hk.get_parameter('mem_weights', [config['mem_size'],\\n\",\n        \"                                                    config['enc_size'],\\n\",\n        \"                                                    config['num_classes']],\\n\",\n        \"                                    init=hk.initializers.VarianceScaling())\\n\",\n        \"    self.biases = hk.get_parameter('mem_biases', [config['mem_size'], 1,\\n\",\n        \"                                                  config['num_classes']],\\n\",\n        \"                                   init=hk.initializers.Constant(0))\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"  def lookup(self, enc):\\n\",\n        \"    \\\"\\\"\\\"k-nearest neighbour lookup in ensemble memory.\\\"\\\"\\\"\\n\",\n        \"    enc = l2_normalize(enc, axis=1)\\n\",\n        \"    keys = l2_normalize(self.keys, axis=1)\\n\",\n        \"    sims = jnp.matmul(enc, jnp.transpose(keys))   # cosine similarities\\n\",\n        \"    (k_sims, idx) = jax.lax.top_k(sims, config['k'])  # k nearest neighbours\\n\",\n        \"    # Keys\\n\",\n        \"    k_keys = jnp.take(self.keys, idx, axis=0)\\n\",\n        \"    mean_key = jnp.mean(k_keys, axis=1)\\n\",\n        \"    # Values\\n\",\n        \"    k_encs = jnp.expand_dims(enc, axis=(1, 2))\\n\",\n        \"    k_encs = jnp.tile(k_encs, (1, config['k'], 1, 1))\\n\",\n        \"    k_weights = jnp.take(self.weights, idx, axis=0)\\n\",\n        \"    k_biases = jnp.take(self.biases, idx, axis=0)\\n\",\n        \"    k_values = jnp.matmul(k_encs, k_weights) + k_biases\\n\",\n        \"    k_values = jnp.squeeze(k_values)\\n\",\n        \"    k_values = activation(k_values)\\n\",\n        \"    # Mean of values weighted by key similarity\\n\",\n        \"    k_sims2 = jax.lax.stop_gradient(jnp.expand_dims(k_sims, axis=2))\\n\",\n        \"    mean_value = jnp.sum(k_values * k_sims2, axis=1) / jnp.sum(k_sims2, axis=1)\\n\",\n        \"    return (mean_key, mean_value, k_sims, k_keys, k_values, idx)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class EnsembleModel(hk.Module):\\n\",\n        \"  \\\"\\\"\\\"Ensemble memory model.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"  def __init__(self, name=None):\\n\",\n        \"    super().__init__(name)\\n\",\n        \"    self.memory = Memory()\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"  def enc_to_class_vanilla(self, enc_image):\\n\",\n        \"    mlp = hk.Sequential([\\n\",\n        \"        hk.Linear(config['num_classes'],\\n\",\n        \"                  w_init=hk.initializers.VarianceScaling(\\n\",\n        \"                      scale=config['init_scale']),\\n\",\n        \"                  name='classifier1'),\\n\",\n        \"        jax.nn.log_softmax,\\n\",\n        \"    ])\\n\",\n        \"    pred = mlp(enc_image)  # predicted class\\n\",\n        \"    return pred\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"  def enc_to_class_tanh(self, enc_image):\\n\",\n        \"    mlp = hk.Sequential([\\n\",\n        \"        hk.Linear(config['num_classes'],\\n\",\n        \"                  w_init=hk.initializers.VarianceScaling(\\n\",\n        \"                      scale=config['init_scale']),\\n\",\n        \"                  name='classifier2'),\\n\",\n        \"    ])\\n\",\n        \"    pred = activation(mlp(enc_image))  # predicted class\\n\",\n        \"    return pred\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"  def forward(self, enc_image):\\n\",\n        \"    \\\"\\\"\\\"Memory lookup and classifier.\\\"\\\"\\\"\\n\",\n        \"    (mean_key, mean_value,\\n\",\n        \"     k_sims, k_keys, k_values, idx) = self.memory.lookup(enc_image)\\n\",\n        \"    classifier_out_vanilla = self.enc_to_class_vanilla(enc_image)\\n\",\n        \"    classifier_out_tanh = self.enc_to_class_tanh(enc_image)\\n\",\n        \"    out = {\\n\",\n        \"      'classifier_out_vanilla': classifier_out_vanilla,\\n\",\n        \"      'classifier_out_tanh': classifier_out_tanh,\\n\",\n        \"      'k_sims': k_sims,\\n\",\n        \"      'k_keys': k_keys,\\n\",\n        \"      'k_values': k_values,\\n\",\n        \"      'mean_key': mean_key,\\n\",\n        \"      'mean_value': mean_value,\\n\",\n        \"      'idx': idx,\\n\",\n        \"    }\\n\",\n        \"    return out\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def model(enc_image):\\n\",\n        \"  ensemble = EnsembleModel()\\n\",\n        \"  out = ensemble.forward(enc_image)\\n\",\n        \"  return out\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"sjFE4ml3gVwK\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Loss and accuracy for ensemble memory (main model)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def model_loss(params, rng, enc_images, one_hots, labels):\\n\",\n        \"  model_net = hk.transform(model)\\n\",\n        \"  model_out = model_net.apply(params, rng, enc_images)\\n\",\n        \"  preds_vanilla = model_out['classifier_out_vanilla']\\n\",\n        \"  preds_tanh = model_out['classifier_out_tanh']\\n\",\n        \"  mean_values = model_out['mean_value']\\n\",\n        \"  # Classifier losses\\n\",\n        \"  classifier_loss_vanilla = -jnp.mean(jnp.sum(preds_vanilla * one_hots, axis=1))\\n\",\n        \"  classifier_loss_tanh = -jnp.mean(jnp.sum(preds_tanh * one_hots, axis=1))\\n\",\n        \"  # Memory loss\\n\",\n        \"  memory_loss = -jnp.mean(jnp.sum(mean_values * one_hots, axis=1))\\n\",\n        \"  # Total loss\\n\",\n        \"  loss = classifier_loss_vanilla + classifier_loss_tanh + memory_loss\\n\",\n        \"  return loss\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"@jit\\n\",\n        \"def accuracy(params, rng, enc_images, labels):\\n\",\n        \"  \\\"\\\"\\\"Accuracies for each type of model.\\\"\\\"\\\"\\n\",\n        \"  model_net = hk.transform(model)\\n\",\n        \"  model_out = model_net.apply(params, rng, enc_images)\\n\",\n        \"  classifier_classes_van = jnp.argmax(model_out['classifier_out_vanilla'], axis=1)\\n\",\n        \"  classifier_acc_van = jnp.mean(classifier_classes_van == labels)\\n\",\n        \"  classifier_classes_tanh = jnp.argmax(model_out['classifier_out_tanh'], axis=1)\\n\",\n        \"  classifier_acc_tanh = jnp.mean(classifier_classes_tanh == labels)\\n\",\n        \"  ensemble_classes = jnp.argmax(model_out['mean_value'], axis=1)\\n\",\n        \"  ensemble_acc = jnp.mean(ensemble_classes == labels)\\n\",\n        \"  return (classifier_acc_van, classifier_acc_tanh, ensemble_acc)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"7HPlrc-OsZHf\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Update ensemble memory parameters\\n\",\n        \"\\n\",\n        \"@jit\\n\",\n        \"def update_model(params, rng, opt_state,\\n\",\n        \"                 enc_images, one_hots, labels):\\n\",\n        \"  opt = make_ensemble_optimiser()\\n\",\n        \"  grads = grad(model_loss)(params, rng, enc_images, one_hots, labels)\\n\",\n        \"  updates, opt_state = opt.update(grads, opt_state, params)\\n\",\n        \"  new_params = optax.apply_updates(params, updates)\\n\",\n        \"  return new_params, opt_state\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"l6XB2jDcESyS\"\n      },\n      \"source\": [\n        \"# Training\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"bK8cobd9ctcg\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def get_encoder():\\n\",\n        \"  encoder_net = hk.transform(encoder)\\n\",\n        \"  return encoder_net\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def initialise_encoder(rng):\\n\",\n        \"  \\\"\\\"\\\"Initialise internal encoder for pre-training.\\\"\\\"\\\"\\n\",\n        \"  encoder_net = get_encoder()\\n\",\n        \"  # Get dummy batch\\n\",\n        \"  batch_size =  24\\n\",\n        \"  train_set = get_dataset(config['pretrain_dataset'], 'train', batch_size)\\n\",\n        \"  batch = get_batch(train_set, config['pretrain_dataset'])\\n\",\n        \"  (images, _, _) = batch\\n\",\n        \"  (rng2, rng) = random.split(rng)\\n\",\n        \"  (rng3, rng) = random.split(rng)\\n\",\n        \"  enc_params = encoder_net.init(rng2, rng3, images)\\n\",\n        \"  return enc_params\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"@jit\\n\",\n        \"def apply_encoder(enc_params, rng, images):\\n\",\n        \"  encoder_net = get_encoder()\\n\",\n        \"  (rng2, rng) = random.split(rng)\\n\",\n        \"  encoder_out = encoder_net.apply(enc_params, rng, rng2, images)\\n\",\n        \"  enc = encoder_out['enc_mean']\\n\",\n        \"  return enc\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"NshNbe3gPA31\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Autoencoder training\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def pretrain_encoder(rng, n_batches, filter_labels=None):\\n\",\n        \"\\n\",\n        \"  print('Encoder pre-training on {}'.format(config['pretrain_dataset']))\\n\",\n        \"  print()\\n\",\n        \"  # Get train and test data\\n\",\n        \"  train_batch_size = 48\\n\",\n        \"  test_batch_size = 256\\n\",\n        \"  train_set = get_dataset(config['pretrain_dataset'], 'train',\\n\",\n        \"                          train_batch_size, filter_labels=filter_labels)\\n\",\n        \"  test_set = get_dataset(config['pretrain_dataset'], 'test',\\n\",\n        \"                         test_batch_size, filter_labels=filter_labels)\\n\",\n        \"  test_batch = get_batch(test_set, config['pretrain_dataset'])\\n\",\n        \"  # Train encoders until a good enough one is found\\n\",\n        \"  success = False\\n\",\n        \"  loss_threshold = 0.025\\n\",\n        \"  while not success:\\n\",\n        \"    # Initialise parameters\\n\",\n        \"    (rng2, rng) = random.split(rng)\\n\",\n        \"    enc_params = initialise_encoder(rng2)\\n\",\n        \"    # Initialise optimiser\\n\",\n        \"    opt = make_encoder_optimiser()\\n\",\n        \"    opt_state = opt.init(enc_params)\\n\",\n        \"    # Training\\n\",\n        \"    for i in range(n_batches):\\n\",\n        \"      batch = get_batch(train_set, config['pretrain_dataset'])\\n\",\n        \"      (images, _, _) = batch\\n\",\n        \"      (rng2, rng) = random.split(rng)\\n\",\n        \"      (enc_params, opt_state) = update_autoencoder(enc_params, rng2,\\n\",\n        \"                                                   opt_state, images)\\n\",\n        \"    (images, _, _) = test_batch\\n\",\n        \"    (rng2, rng) = random.split(rng)\\n\",\n        \"    losses = autoencoder_losses(enc_params, rng2, images)\\n\",\n        \"    print('Batch {}'.format(i+1))\\n\",\n        \"    print('Reconstruction loss {:.8f}'.format(losses['decoder_loss']))\\n\",\n        \"    print('KL loss {:.4f}'.format(losses['kl_loss']))\\n\",\n        \"    print()\\n\",\n        \"    success = losses['decoder_loss'] \\u003c loss_threshold\\n\",\n        \"    if not success:\\n\",\n        \"      print('Reconstruction loss too high - retraining')\\n\",\n        \"      print()\\n\",\n        \"  (rng2, rng) = random.split(rng)\\n\",\n        \"\\n\",\n        \"  return enc_params\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"axY5rDzycJZP\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Model testing with recording of accuracies\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def test_model(model_params, enc_params, test_labels, test_batches,\\n\",\n        \"               accuracies, batch_number):\\n\",\n        \"  rng = random.PRNGKey(42)\\n\",\n        \"  for i in range(len(test_labels)):\\n\",\n        \"    (images, _, labels) = test_batches[i]\\n\",\n        \"    # Encode images\\n\",\n        \"    (rng2, rng) = random.split(rng)\\n\",\n        \"    enc_images = apply_encoder(enc_params, rng2, images)\\n\",\n        \"    # Get accuracies\\n\",\n        \"    (rng2, rng) = random.split(rng)\\n\",\n        \"    (classifier_acc_vanilla,\\n\",\n        \"     classifier_acc_tanh, ensemble_acc) = accuracy(model_params, rng2,\\n\",\n        \"                                                   enc_images, labels)\\n\",\n        \"    accuracies['accuracies_vanilla'][i].append(classifier_acc_vanilla)\\n\",\n        \"    accuracies['accuracies_tanh'][i].append(classifier_acc_tanh)\\n\",\n        \"    accuracies['accuracies_ensemble'][i].append(ensemble_acc)\\n\",\n        \"  return accuracies\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"LespFNYzv50c\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Model training with pre-trained encoder\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def initialise_model(rng, enc_params):\\n\",\n        \"  model_net = hk.transform(model)\\n\",\n        \"  # Get dummy batch\\n\",\n        \"  train_batch_size = 24\\n\",\n        \"  train_set = get_dataset(config['main_dataset'], 'train', train_batch_size)\\n\",\n        \"  batch = get_batch(train_set, config['main_dataset'])\\n\",\n        \"  (images, _, _) = batch\\n\",\n        \"  # Encode images\\n\",\n        \"  (rng2, rng) = random.split(rng)\\n\",\n        \"  enc_images = apply_encoder(enc_params, rng2, images)\\n\",\n        \"  # Initialise the model\\n\",\n        \"  (rng2, rng) = random.split(rng)\\n\",\n        \"  model_params = model_net.init(rng2, enc_images)\\n\",\n        \"  # Initialise memory keys according to encoding stats\\n\",\n        \"  (rng2, rng) = random.split(rng)\\n\",\n        \"  keys = jax.random.normal(rng2, [config['mem_size'], config['enc_size']])\\n\",\n        \"  new_key_params = {'ensemble_model/~/memory': {'mem_keys': keys}}\\n\",\n        \"  (old_key_params, rest_params) = hk.data_structures.partition(\\n\",\n        \"      lambda m, n, p: (m == 'ensemble_model/~/memory' and\\n\",\n        \"                       n == 'mem_keys'), model_params)\\n\",\n        \"  model_params = hk.data_structures.merge(new_key_params, rest_params)\\n\",\n        \"  return model_params\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def train_model(model_params, enc_params, rng,\\n\",\n        \"                label_set, test_labels, test_batch, accuracies, run,\\n\",\n        \"                n_batches=0, tot_batches=0):\\n\",\n        \"\\n\",\n        \"  # Get train and test data\\n\",\n        \"  train_batch_size = config['batch_size']\\n\",\n        \"  train_set = get_dataset(config['main_dataset'], 'train', train_batch_size,\\n\",\n        \"                          filter_labels=label_set)\\n\",\n        \"  # Training\\n\",\n        \"  for i in range(n_batches):\\n\",\n        \"    # Re-initialise optimiser\\n\",\n        \"    opt = make_ensemble_optimiser()\\n\",\n        \"    opt_state = opt.init(model_params)\\n\",\n        \"    tot_batches += 1\\n\",\n        \"    batch = get_batch(train_set, config['main_dataset'])\\n\",\n        \"    (images, one_hots, labels) = batch\\n\",\n        \"    # Encode images\\n\",\n        \"    (rng2, rng) = random.split(rng)\\n\",\n        \"    enc_images = apply_encoder(enc_params, rng2, images)\\n\",\n        \"    (rng2, rng) = random.split(rng)\\n\",\n        \"    (model_params, opt_state) = update_model(model_params, rng2,\\n\",\n        \"                                             opt_state, enc_images,\\n\",\n        \"                                             one_hots, labels)\\n\",\n        \"    # Log accuracies\\n\",\n        \"    if tot_batches % config['log_every'] == 0:\\n\",\n        \"      accuracies = test_model(model_params, enc_params, test_labels, test_batch,\\n\",\n        \"                              accuracies, tot_batches)\\n\",\n        \"  return (model_params, accuracies, tot_batches)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"byXZrXQ0ctwK\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def train_with_schedule(model_params, enc_params, rng,\\n\",\n        \"                        schedule, test_labels, test_batch, run):\\n\",\n        \"  \\\"\\\"\\\"Train the model with a given schedule of label sets (tasks).\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  # Initial accuracy\\n\",\n        \"  tot_batches = 0\\n\",\n        \"  accuracies = {\\n\",\n        \"      'accuracies_vanilla': [[] for _ in range(len(test_labels))],\\n\",\n        \"      'accuracies_tanh': [[] for _ in range(len(test_labels))],\\n\",\n        \"      'accuracies_ensemble': [[] for _ in range(len(test_labels))]}\\n\",\n        \"  accuracies = test_model(model_params, enc_params, test_labels, test_batch,\\n\",\n        \"                          accuracies, tot_batches)\\n\",\n        \"  # Go through the schedule\\n\",\n        \"  for ep_no in range(len(schedule)):\\n\",\n        \"    episode = schedule[ep_no]\\n\",\n        \"    label_set = episode['label_set']\\n\",\n        \"    n_batches = episode['n_batches']\\n\",\n        \"    (rng2, rng) = random.split(rng)\\n\",\n        \"    (model_params, accuracies, tot_batches) = train_model(\\n\",\n        \"        model_params, enc_params, rng2,\\n\",\n        \"        label_set, test_labels, test_batch, accuracies, run,\\n\",\n        \"        n_batches=n_batches, tot_batches=tot_batches)\\n\",\n        \"\\n\",\n        \"  return (model_params, accuracies)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"d7RFUpZjE3ua\"\n      },\n      \"source\": [\n        \"# Schedules\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"t8gecZXnvRuD\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def gaussian(peak, width, x):\\n\",\n        \"  out = jnp.exp(- ((x - peak)**2 / (2 * width**2)))\\n\",\n        \"  return out\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def gaussian_schedule(rng):\\n\",\n        \"  \\\"\\\"\\\"Returns a schedule where one task blends smoothly into the next.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  schedule_length = 1000  # schedule length in batches\\n\",\n        \"  episode_length = 5  # episode length in batches\\n\",\n        \"\\n\",\n        \"  # Each class label appears according to a Gaussian probability distribution\\n\",\n        \"  # with peaks spread evenly over the schedule\\n\",\n        \"  peak_every = schedule_length // config['num_classes']\\n\",\n        \"  width = 50  # width of Gaussian\\n\",\n        \"  peaks = range(peak_every // 2, schedule_length, peak_every)\\n\",\n        \"\\n\",\n        \"  schedule = []\\n\",\n        \"  labels = jnp.array(list(range(config['num_classes'])))\\n\",\n        \"  labels = random.permutation(rng, labels)  # labels in random order\\n\",\n        \"\\n\",\n        \"  for ep_no in range(0, schedule_length // episode_length):\\n\",\n        \"\\n\",\n        \"    lbls = []\\n\",\n        \"    while lbls == []:  # make sure lbls isn't empty\\n\",\n        \"      for j in range(len(peaks)):\\n\",\n        \"        peak = peaks[j]\\n\",\n        \"        # Sample from a Gaussian with peak in the right place\\n\",\n        \"        p = gaussian(peak, width, ep_no * episode_length)\\n\",\n        \"        (rng2, rng) = jax.random.split(rng)\\n\",\n        \"        add = jax.random.bernoulli(rng2, p=p)\\n\",\n        \"        if add:\\n\",\n        \"          lbls.append(int(labels[j]))\\n\",\n        \"\\n\",\n        \"    episode = {'label_set': lbls, 'n_batches': episode_length}\\n\",\n        \"    schedule.append(episode)\\n\",\n        \"\\n\",\n        \"  return schedule\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"B2hXtb2YhxUZ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def get_schedule(name, rng=None):\\n\",\n        \"\\n\",\n        \"  # Full set of labels\\n\",\n        \"  test_labels = [[x] for x in range(10)]\\n\",\n        \"\\n\",\n        \"  if name == '1way_split':\\n\",\n        \"    # 1-way split schedule (multi-task setting) (MNIST or CIFAR-10)\\n\",\n        \"    schedule = [{'label_set': list(range(10)),\\n\",\n        \"                'n_batches': 1000}]\\n\",\n        \"\\n\",\n        \"  elif name == '2way_split':\\n\",\n        \"    # Random 2-way split schedule (MNIST or CIFAR-10)\\n\",\n        \"    lbls = jnp.array(list(range(10)))\\n\",\n        \"    lbls = random.permutation(rng, lbls)\\n\",\n        \"    lbls = jnp.reshape(lbls, (2, 5))\\n\",\n        \"    schedule = [{'label_set': lbl.tolist(), 'n_batches': 500} for lbl in lbls]\\n\",\n        \"\\n\",\n        \"  elif name == '5way_split':\\n\",\n        \"    # Random 5-way split schedule (MNIST or CIFAR-10)\\n\",\n        \"    lbls = jnp.array(list(range(10)))\\n\",\n        \"    lbls = random.permutation(rng, lbls)\\n\",\n        \"    lbls = jnp.reshape(lbls, (5, 2))\\n\",\n        \"    schedule = [{'label_set': lbl.tolist(), 'n_batches': 200} for lbl in lbls]\\n\",\n        \"\\n\",\n        \"  elif name == '10way_split':\\n\",\n        \"    # Random 10-way split schedule (MNIST or CIFAR-10)\\n\",\n        \"    lbls = jnp.array(list(range(10)))\\n\",\n        \"    lbls = random.permutation(rng, lbls)\\n\",\n        \"    lbls = jnp.reshape(lbls, (10, 1))\\n\",\n        \"    schedule = [{'label_set': lbl.tolist(), 'n_batches': 100} for lbl in lbls]\\n\",\n        \"\\n\",\n        \"  elif name == 'gaussian_schedule':\\n\",\n        \"    # Gaussian schedule\\n\",\n        \"    schedule = gaussian_schedule(rng)\\n\",\n        \"\\n\",\n        \"  else:\\n\",\n        \"    print('Error: no such schedule')\\n\",\n        \"    print()\\n\",\n        \"\\n\",\n        \"  return (schedule, test_labels)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"PVembGzr_-Tc\"\n      },\n      \"source\": [\n        \"# Scripts\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Iocm19OgdiDJ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Training scripts\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_test_batches(test_labels):\\n\",\n        \"  \\\"\\\"\\\"Split test batch up into label-wise batches according to 'test_labels'.\\\"\\\"\\\"\\n\",\n        \"  batch_size = 10000 // len(test_labels)\\n\",\n        \"  test_batches = []\\n\",\n        \"  for labels in test_labels:\\n\",\n        \"    dataset = get_dataset(config['main_dataset'], 'test', batch_size,\\n\",\n        \"                          filter_labels=labels)\\n\",\n        \"    test_batch = get_batch(dataset, config['main_dataset'])\\n\",\n        \"    test_batches.append(test_batch)\\n\",\n        \"  return test_batches\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def main():\\n\",\n        \"  \\\"\\\"\\\"Main script - multiple runs.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  print('STARTING EXPERIMENT')\\n\",\n        \"  print()\\n\",\n        \"  schedule_name = config['schedule_type']\\n\",\n        \"  rng = random.PRNGKey(78)\\n\",\n        \"  n_runs = config['n_runs']\\n\",\n        \"  # Ensemble training\\n\",\n        \"  x_accuracies1 = []  # vanilla classifier accuracies\\n\",\n        \"  x_accuracies2 = []  # tanh classifier accuracies\\n\",\n        \"  x_accuracies3 = []  # ensemble accuracies\\n\",\n        \"  for run in range(n_runs):\\n\",\n        \"    print('RUN {} of {}'.format(run+1, n_runs))\\n\",\n        \"    print()\\n\",\n        \"    # Encoder pretraining - new encoder every run\\n\",\n        \"    (rng2, rng) = random.split(rng)\\n\",\n        \"    enc_params = pretrain_encoder(rng2, n_batches=config['pretrain_n_batches'])\\n\",\n        \"    # Get a schedule\\n\",\n        \"    (rng2, rng) = random.split(rng)\\n\",\n        \"    (schedule, test_labels) = get_schedule(schedule_name, rng2)\\n\",\n        \"    # Get batches for testing\\n\",\n        \"    test_batches = get_test_batches(test_labels)\\n\",\n        \"    # Train the model\\n\",\n        \"    (rng2, rng) = random.split(rng)\\n\",\n        \"    model_params = initialise_model(rng2, enc_params)\\n\",\n        \"    # Carry out schedule\\n\",\n        \"    print('Ensemble training on {}'.format(config['main_dataset']))\\n\",\n        \"    print()\\n\",\n        \"    (rng2, rng) = random.split(rng)\\n\",\n        \"    (model_params, accuracies) = train_with_schedule(model_params, enc_params,\\n\",\n        \"                                                     rng2, schedule,\\n\",\n        \"                                                     test_labels, test_batches,\\n\",\n        \"                                                     run)\\n\",\n        \"    # Record the results\\n\",\n        \"    x_accuracies1.append(accuracies['accuracies_vanilla'])\\n\",\n        \"    x_accuracies2.append(accuracies['accuracies_tanh'])\\n\",\n        \"    x_accuracies3.append(accuracies['accuracies_ensemble'])\\n\",\n        \"    plot_x_accuracies(x_accuracies1, x_accuracies2, x_accuracies3)\\n\",\n        \"  print('FINAL PLOT')\\n\",\n        \"  print()\\n\",\n        \"  plot_x_accuracies(x_accuracies1, x_accuracies2, x_accuracies3, final=True)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"arDSjo-nFFUO\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Main script\\n\",\n        \"\\n\",\n        \"main()\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"name\": \"Encoders and ensembles open source.ipynb\",\n      \"private_outputs\": true,\n      \"provenance\": [],\n      \"toc_visible\": true\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "counterfactual_fairness/README.md",
    "content": "# Path-Specific Counterfactual Fairness (AAAI 2019)\n\nPaper: [Path-Specific Counterfactual Fairness](https://ojs.aaai.org/index.php/AAAI/article/view/4777/4655)\n\nIf you use the code here please cite this paper:\n\n    @inproceedings{chiappa2019path,\n      title={Path-specific counterfactual fairness},\n      author={Chiappa, Silvia},\n      booktitle={Proceedings of the AAAI Conference on Artificial Intelligence},\n      volume={33},\n      number={01},\n      pages={7801--7808},\n      year={2019}\n    }\n\n### Overview\n\nThis release contains the path-specific counterfactual fairness method used\nin the paper, as well as utility functions for loading the *Adult* dataset.\n\nThe following gives a brief overview of the contents, more detailed\ndocumentation is available within each file:\n\n*   __causal_network.py__: Defines the `Node` class, instances of which can be\n    combined into a directed graph. Associated with each node is a\n    `distribution_module`, a haiku module which builds a tensorflow\n    `Distribution` instance as a function of the node's parents.\n*   __util.py__: Miscellaneous utility functions.\n*   __variational.py__: Class for performing variational\n    inference. The `Variational` haiku module is a general-purpose approximate\n        posterior, using an MLP to map from arbitrary inputs to the parameters\n        of a Gaussian distribution.\n*   __adult.py__: Utility functions for the *Adult* dataset.\n*   __adult_pscf.py__: Training and 'fair' prediction process (using\n    path-specific counterfactual fairness) on the *Adult* dataset.\n*   __adult_pscf_config.py__: Configuration file with default training\n        parameters.\n\n### Dataset\n\nThe *Adult* dataset can be downloaded from\n[https://archive.ics.uci.edu/ml/datasets/adult](https://archive.ics.uci.edu/ml/datasets/adult). You may use the following\ncommand to download both necessary files to run the training script:\n\n`sh download_dataset.sh ${OUTPUT_DIR}`\n\n### Experiments\n\nTo download the dataset and run the main experiment reported in the paper,\nyou may run:\n\n`sh run_adult_pscf.sh`\n\n### Acknowledgements\n\nCredits to Thomas P. S. Gillam for the original TF1 implementation.\n"
  },
  {
    "path": "counterfactual_fairness/adult.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Adult dataset.\n\nSee https://archive.ics.uci.edu/ml/datasets/adult.\n\"\"\"\n\nimport os\n\nfrom absl import logging\nimport pandas as pd\n\n\n\n\n_COLUMNS = ('age', 'workclass', 'final-weight', 'education', 'education-num',\n            'marital-status', 'occupation', 'relationship', 'race', 'sex',\n            'capital-gain', 'capital-loss', 'hours-per-week', 'native-country',\n            'income')\n_CATEGORICAL_COLUMNS = ('workclass', 'education', 'marital-status',\n                        'occupation', 'race', 'relationship', 'sex',\n                        'native-country', 'income')\n\n\ndef _read_data(\n    name,\n    data_path=''):\n  with os.path.join(data_path, name) as data_file:\n    data = pd.read_csv(data_file, header=None, index_col=False,\n                       names=_COLUMNS, skipinitialspace=True, na_values='?')\n    for categorical in _CATEGORICAL_COLUMNS:\n      data[categorical] = data[categorical].astype('category')\n  return data\n\n\ndef _combine_category_coding(df_1, df_2):\n  \"\"\"Combines the categories between dataframes df_1 and df_2.\n\n  This is used to ensure that training and test data use the same category\n  coding, so that the one-hot vectors representing the values are compatible\n  between training and test data.\n\n  Args:\n    df_1: Pandas DataFrame.\n    df_2: Pandas DataFrame. Must have the same columns as df_1.\n  \"\"\"\n  for column in df_1.columns:\n    if df_1[column].dtype.name == 'category':\n      categories_1 = set(df_1[column].cat.categories)\n      categories_2 = set(df_2[column].cat.categories)\n      categories = sorted(categories_1 | categories_2)\n      df_1[column].cat.set_categories(categories, inplace=True)\n      df_2[column].cat.set_categories(categories, inplace=True)\n\n\ndef read_all_data(root_dir, remove_missing=True):\n  \"\"\"Return (train, test) dataframes, optionally removing incomplete rows.\"\"\"\n  train_data = _read_data('adult.data', root_dir)\n  test_data = _read_data('adult.test', root_dir)\n  _combine_category_coding(train_data, test_data)\n  if remove_missing:\n    train_data = train_data.dropna()\n    test_data = test_data.dropna()\n\n  logging.info('Training data dtypes: %s', train_data.dtypes)\n  return train_data, test_data\n"
  },
  {
    "path": "counterfactual_fairness/adult_pscf.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Training script for causal model for Adult dataset, using PSCF.\"\"\"\n\nimport functools\nimport time\nfrom typing import Any, List, Mapping, NamedTuple, Sequence\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nfrom ml_collections.config_flags import config_flags\nimport numpy as np\nimport optax\nimport pandas as pd\nfrom sklearn import metrics\nimport tensorflow as tf\nimport tensorflow_datasets as tfds\nfrom tensorflow_probability.substrates import jax as tfp\nfrom counterfactual_fairness import adult\nfrom counterfactual_fairness import causal_network\nfrom counterfactual_fairness import utils\nfrom counterfactual_fairness import variational\n\nFLAGS = flags.FLAGS\nconfig_flags.DEFINE_config_file(\n    'config', 'adult_pscf_config.py', 'Training configuration.')\n\nLOG_EVERY = 100\n\n# These are all aliases to callables which will return instances of\n# particular distribution modules, or a Node itself. This is used to make\n# subsequent code more legible.\nNode = causal_network.Node\nGaussian = causal_network.Gaussian\nMLPMultinomial = causal_network.MLPMultinomial\n\n\ndef build_input(train_data: pd.DataFrame, batch_size: int,\n                training_steps: int, shuffle_size: int = 10000):\n  \"\"\"See base class.\"\"\"\n  num_epochs = (training_steps // batch_size) + 1\n  ds = utils.get_dataset(train_data, batch_size, shuffle_size,\n                         num_epochs=num_epochs)\n  ds = ds.prefetch(tf.data.AUTOTUNE)\n  return iter(tfds.as_numpy(ds))\n\n\nclass CausalNetOutput(NamedTuple):\n  q_hidden_obs: Sequence[tfp.distributions.Distribution]\n  p_hidden: Sequence[tfp.distributions.Distribution]\n  hidden_samples: Sequence[jnp.ndarray]\n  log_p_obs_hidden: jnp.ndarray\n  is_male: jnp.ndarray  # indicates which elements of the batch correspond to\n                        # male individuals\n\n\ndef build_causal_graph(train_data: pd.DataFrame, column_names: List[str],\n                       inputs: jnp.ndarray):\n  \"\"\"Build the causal graph of the model.\"\"\"\n  make_multinomial = functools.partial(\n      causal_network.MLPMultinomial.from_frame, hidden_shape=(100,))\n  make_gaussian = functools.partial(\n      causal_network.Gaussian, hidden_shape=(100,))\n\n  # Construct the graphical model. Each random variable is represented by an\n  # instance of the `Node` class, as discussed in that class's docstring.\n  # The following nodes have no parents, and thus the distribution modules\n  # will not be conditional on anything -- they simply represent priors.\n  node_a = Node(MLPMultinomial.from_frame(train_data, 'sex'))\n  node_c1 = Node(MLPMultinomial.from_frame(train_data, 'native-country'))\n  node_c2 = Node(Gaussian('age', column_names.index('age')))\n\n  # These are all hidden nodes, that do not correspond to any actual data in\n  # pandas dataframe loaded previously. We therefore are permitted to control\n  # the dimensionality of these nodes as we wish (with the `dim` argument).\n  # The distribution module here should be interpreted as saying that we are\n  # imposing a multi-modal prior (a mixture of Gaussians) on each latent\n  # variable.\n  node_hm = Node(causal_network.GaussianMixture('hm', 10, dim=2), hidden=True)\n  node_hl = Node(causal_network.GaussianMixture('hl', 10, dim=2), hidden=True)\n  node_hr1 = Node(\n      causal_network.GaussianMixture('hr1', 10, dim=2), hidden=True)\n  node_hr2 = Node(\n      causal_network.GaussianMixture('hr2', 10, dim=2), hidden=True)\n  node_hr3 = Node(\n      causal_network.GaussianMixture('hr3', 10, dim=2), hidden=True)\n\n  # The rest of the graph is now constructed; the order of construction is\n  # important, so we can inform each node of its parents.\n  # Note that in the paper we simply have one node called \"R\", but here it is\n  # separated into three separate `Node` instances. This is necessary since\n  # each node can only represent a single quantity in the dataframe.\n  node_m = Node(\n      make_multinomial(train_data, 'marital-status'),\n      [node_a, node_hm, node_c1, node_c2])\n  node_l = Node(\n      make_gaussian('education-num', column_names.index('education-num')),\n      [node_a, node_hl, node_c1, node_c2, node_m])\n  node_r1 = Node(\n      make_multinomial(train_data, 'occupation'),\n      [node_a, node_c1, node_c2, node_m, node_l])\n  node_r2 = Node(\n      make_gaussian('hours-per-week', column_names.index('hours-per-week')),\n      [node_a, node_c1, node_c2, node_m, node_l])\n  node_r3 = Node(\n      make_multinomial(train_data, 'workclass'),\n      [node_a, node_c1, node_c2, node_m, node_l])\n  node_y = Node(\n      MLPMultinomial.from_frame(train_data, 'income'),\n      [node_a, node_c1, node_c2, node_m, node_l, node_r1, node_r2, node_r3])\n\n  # We now construct several (self-explanatory) collections of nodes. These\n  # will be used at various points later in the code, and serve to provide\n  # greater semantic interpretability.\n  observable_nodes = (node_a, node_c1, node_c2, node_l, node_m, node_r1,\n                      node_r2, node_r3, node_y)\n\n  # The nodes on which each latent variable is conditionally dependent.\n  # Note that Y is not in this list, since all of its dependencies are\n  # included below, and further it does not depend directly on Hm.\n  nodes_on_which_hm_depends = (node_a, node_c1, node_c2, node_m)\n  nodes_on_which_hl_depends = (node_a, node_c1, node_c2, node_m, node_l)\n  nodes_on_which_hr1_depends = (node_a, node_c1, node_c2, node_m, node_l,\n                                node_r1)\n  nodes_on_which_hr2_depends = (node_a, node_c1, node_c2, node_m, node_l,\n                                node_r2)\n  nodes_on_which_hr3_depends = (node_a, node_c1, node_c2, node_m, node_l,\n                                node_r3)\n  hidden_nodes = (node_hm, node_hl, node_hr1, node_hr2, node_hr3)\n\n  # Function to create the distribution needed for variational inference. This\n  # is the same for each latent variable.\n  def make_q_x_obs_module(node):\n    \"\"\"Make a Variational module for the given hidden variable.\"\"\"\n    assert node.hidden\n    return variational.Variational(\n        common_layer_sizes=(20, 20), output_dim=node.dim)\n\n  # For each latent variable, we first construct a Haiku module (using the\n  # function above), and then connect it to the graph using the node's\n  # value. As described in more detail in the documentation for `Node`,\n  # these values represent actual observed data. Therefore we will later\n  # be connecting these same modules to the graph in different ways in order\n  # to perform fair inference.\n  q_hm_obs_module = make_q_x_obs_module(node_hm)\n  q_hl_obs_module = make_q_x_obs_module(node_hl)\n  q_hr1_obs_module = make_q_x_obs_module(node_hr1)\n  q_hr2_obs_module = make_q_x_obs_module(node_hr2)\n  q_hr3_obs_module = make_q_x_obs_module(node_hr3)\n\n  causal_network.populate(observable_nodes, inputs)\n\n  q_hm_obs = q_hm_obs_module(\n      *(node.observed_value for node in nodes_on_which_hm_depends))\n  q_hl_obs = q_hl_obs_module(\n      *(node.observed_value for node in nodes_on_which_hl_depends))\n  q_hr1_obs = q_hr1_obs_module(\n      *(node.observed_value for node in nodes_on_which_hr1_depends))\n  q_hr2_obs = q_hr2_obs_module(\n      *(node.observed_value for node in nodes_on_which_hr2_depends))\n  q_hr3_obs = q_hr3_obs_module(\n      *(node.observed_value for node in nodes_on_which_hr3_depends))\n  q_hidden_obs = (q_hm_obs, q_hl_obs, q_hr1_obs, q_hr2_obs, q_hr3_obs)\n\n  return observable_nodes, hidden_nodes, q_hidden_obs\n\n\ndef build_forward_fn(train_data: pd.DataFrame, column_names: List[str],\n                     likelihood_multiplier: float):\n  \"\"\"Create the model's forward pass.\"\"\"\n\n  def forward_fn(inputs: jnp.ndarray) -> CausalNetOutput:\n    \"\"\"Forward pass.\"\"\"\n    observable_nodes, hidden_nodes, q_hidden = build_causal_graph(\n        train_data, column_names, inputs)\n    (node_hm, node_hl, node_hr1, node_hr2, node_hr3) = hidden_nodes\n    (node_a, _, _, _, _, _, _, _, node_y) = observable_nodes\n\n    # Log-likelihood function.\n    def log_p_obs_h(hm_value, hl_value, hr1_value, hr2_value, hr3_value):\n      \"\"\"Compute log P(A, C, M, L, R, Y | H).\"\"\"\n      # In order to create distributions like P(M | H_m, A, C), we need\n      # the value of H_m that we've been provided as an argument, rather than\n      # the value stored on H_m (which, in fact, will never be populated\n      # since H_m is unobserved).\n      # For compactness, we first construct the complete list of replacements.\n      node_to_replacement = {\n          node_hm: hm_value,\n          node_hl: hl_value,\n          node_hr1: hr1_value,\n          node_hr2: hr2_value,\n          node_hr3: hr3_value,\n      }\n\n      def log_prob_for_node(node):\n        \"\"\"Given a node, compute it's log probability for the given latents.\"\"\"\n        log_prob = jnp.squeeze(\n            node.make_distribution(node_to_replacement).log_prob(\n                node.observed_value))\n        return log_prob\n\n      # We apply the likelihood multiplier to all likelihood terms except that\n      # for Y, the target. This is then added on separately in the line below.\n      sum_no_y = likelihood_multiplier * sum(\n          log_prob_for_node(node)\n          for node in observable_nodes\n          if node is not node_y)\n\n      return sum_no_y + log_prob_for_node(node_y)\n\n    q_hidden_obs = tuple(q_hidden)\n    p_hidden = tuple(node.distribution for node in hidden_nodes)\n    rnd_key = hk.next_rng_key()\n    hidden_samples = tuple(\n        q_hidden.sample(seed=rnd_key) for q_hidden in q_hidden_obs)\n    log_p_obs_hidden = log_p_obs_h(*hidden_samples)\n\n    # We need to split our batch of data into male and female parts.\n    is_male = jnp.equal(node_a.observed_value[:, 1], 1)\n\n    return CausalNetOutput(\n        q_hidden_obs=q_hidden_obs,\n        p_hidden=p_hidden,\n        hidden_samples=hidden_samples,\n        log_p_obs_hidden=log_p_obs_hidden,\n        is_male=is_male)\n\n  def fair_inference_fn(inputs: jnp.ndarray, batch_size: int,\n                        num_prediction_samples: int):\n    \"\"\"Get the fair and unfair predictions for the given input.\"\"\"\n    observable_nodes, hidden_nodes, q_hidden_obs = build_causal_graph(\n        train_data, column_names, inputs)\n    (node_hm, node_hl, node_hr1, node_hr2, node_hr3) = hidden_nodes\n    (node_a, node_c1, node_c2, node_l, node_m, node_r1, node_r2, node_r3,\n     node_y) = observable_nodes\n    (q_hm_obs, q_hl_obs, q_hr1_obs, q_hr2_obs, q_hr3_obs) = q_hidden_obs\n    rnd_key = hk.next_rng_key()\n\n    # *** FAIR INFERENCE ***\n\n    # To predict Y in a fair sense:\n    #    * Infer Hm given observations.\n    #    * Infer M using inferred Hm, baseline A, real C\n    #    * Infer L using inferred Hl, M, real A, C\n    #    * Infer Y using inferred M, baseline A, real C\n    # This is done by numerical integration, i.e. draw samples from\n    # p_fair(Y | A, C, M, L).\n    a_all_male = jnp.concatenate(\n        (jnp.zeros((batch_size, 1)), jnp.ones((batch_size, 1))),\n        axis=1)\n\n    # Here we take a num_samples per observation. This results to\n    # an array of shape:\n    #     (num_samples, batch_size, hm_dim).\n    # However, forward pass is easier by reshaping to:\n    #     (num_samples * batch_size, hm_dim).\n    hm_dim = 2\n    def expanded_sample(distribution):\n      return distribution.sample(\n          num_prediction_samples, seed=rnd_key).reshape(\n              (batch_size * num_prediction_samples, hm_dim))\n\n    hm_pred_sample = expanded_sample(q_hm_obs)\n    hl_pred_sample = expanded_sample(q_hl_obs)\n    hr1_pred_sample = expanded_sample(q_hr1_obs)\n    hr2_pred_sample = expanded_sample(q_hr2_obs)\n    hr3_pred_sample = expanded_sample(q_hr3_obs)\n\n    # The values of the observed nodes need to be tiled to match the dims\n    # of the above hidden samples. The `expand` function achieves this.\n    def expand(observed_value):\n      return jnp.tile(observed_value, (num_prediction_samples, 1))\n\n    expanded_a = expand(node_a.observed_value)\n    expanded_a_baseline = expand(a_all_male)\n    expanded_c1 = expand(node_c1.observed_value)\n    expanded_c2 = expand(node_c2.observed_value)\n\n    # For M, and all subsequent variables, we only generate one sample. This\n    # is because we already have *many* samples from the latent variables, and\n    # all we require is an independent sample from the distribution.\n    m_pred_sample = node_m.make_distribution({\n        node_a: expanded_a_baseline,\n        node_hm: hm_pred_sample,\n        node_c1: expanded_c1,\n        node_c2: expanded_c2}).sample(seed=rnd_key)\n\n    l_pred_sample = node_l.make_distribution({\n        node_a: expanded_a,\n        node_hl: hl_pred_sample,\n        node_c1: expanded_c1,\n        node_c2: expanded_c2,\n        node_m: m_pred_sample}).sample(seed=rnd_key)\n\n    r1_pred_sample = node_r1.make_distribution({\n        node_a: expanded_a,\n        node_hr1: hr1_pred_sample,\n        node_c1: expanded_c1,\n        node_c2: expanded_c2,\n        node_m: m_pred_sample,\n        node_l: l_pred_sample}).sample(seed=rnd_key)\n    r2_pred_sample = node_r2.make_distribution({\n        node_a: expanded_a,\n        node_hr2: hr2_pred_sample,\n        node_c1: expanded_c1,\n        node_c2: expanded_c2,\n        node_m: m_pred_sample,\n        node_l: l_pred_sample}).sample(seed=rnd_key)\n    r3_pred_sample = node_r3.make_distribution({\n        node_a: expanded_a,\n        node_hr3: hr3_pred_sample,\n        node_c1: expanded_c1,\n        node_c2: expanded_c2,\n        node_m: m_pred_sample,\n        node_l: l_pred_sample}).sample(seed=rnd_key)\n\n    # Finally, we sample from the distribution for Y. Like above, we only\n    # draw one sample per element in the array.\n    y_pred_sample = node_y.make_distribution({\n        node_a: expanded_a_baseline,\n        # node_a: expanded_a,\n        node_c1: expanded_c1,\n        node_c2: expanded_c2,\n        node_m: m_pred_sample,\n        node_l: l_pred_sample,\n        node_r1: r1_pred_sample,\n        node_r2: r2_pred_sample,\n        node_r3: r3_pred_sample}).sample(seed=rnd_key)\n\n    # Reshape back to (num_samples, batch_size, y_dim), undoing the expanding\n    # operation used for sampling.\n    y_pred_sample = y_pred_sample.reshape(\n        (num_prediction_samples, batch_size, -1))\n\n    # Now form an array of shape (batch_size, y_dim) by taking an expectation\n    # over the sample dimension. This represents the probability that the\n    # result is in each class.\n    y_pred_expectation = jnp.mean(y_pred_sample, axis=0)\n\n    # Find out the predicted y, for later use in a confusion matrix.\n    predicted_class_y_fair = utils.multinomial_class(y_pred_expectation)\n\n    # *** NAIVE INFERENCE ***\n    predicted_class_y_unfair = utils.multinomial_class(node_y.distribution)\n\n    return predicted_class_y_fair, predicted_class_y_unfair\n\n  return forward_fn, fair_inference_fn\n\n\ndef _loss_fn(\n    forward_fn,\n    beta: float,\n    mmd_sample_size: int,\n    constraint_multiplier: float,\n    constraint_ratio: float,\n    params: hk.Params,\n    rng: jnp.ndarray,\n    inputs: jnp.ndarray,\n) -> jnp.ndarray:\n  \"\"\"Loss function definition.\"\"\"\n  outputs = forward_fn(params, rng, inputs)\n  loss = _loss_klqp(outputs, beta)\n\n  # if (constraint_ratio * constraint_multiplier) > 0:\n  constraint_loss = 0.\n\n  # Create constraint penalty and add to overall loss term.\n  for distribution in outputs.q_hidden_obs:\n    constraint_loss += (constraint_ratio * constraint_multiplier *\n                        utils.mmd_loss(distribution,\n                                       outputs.is_male,\n                                       mmd_sample_size,\n                                       rng))\n\n  # Optimisation - don't do the computation if the multiplier is set to zero.\n  loss += constraint_loss\n\n  return loss\n\n\ndef _evaluate(\n    fair_inference_fn,\n    params: hk.Params,\n    rng: jnp.ndarray,\n    inputs: jnp.ndarray,\n    batch_size: int,\n    num_prediction_samples: int,\n):\n  \"\"\"Perform evaluation of fair inference.\"\"\"\n  output = fair_inference_fn(params, rng, inputs,\n                             batch_size, num_prediction_samples)\n\n  return output\n\n\ndef _loss_klqp(outputs: CausalNetOutput, beta: float) -> jnp.ndarray:\n  \"\"\"Compute the loss on data wrt params.\"\"\"\n\n  expected_log_q_hidden_obs = sum(\n      jnp.sum(q_hidden_obs.log_prob(hidden_sample), axis=1) for q_hidden_obs,\n      hidden_sample in zip(outputs.q_hidden_obs, outputs.hidden_samples))\n\n  assert expected_log_q_hidden_obs.ndim == 1\n\n  # For log probabilities computed from distributions, we need to sum along\n  # the last axis, which takes the product of distributions for\n  # multi-dimensional hidden variables.\n  log_p_hidden = sum(\n      jnp.sum(p_hidden.log_prob(hidden_sample), axis=1) for p_hidden,\n      hidden_sample in zip(outputs.p_hidden, outputs.hidden_samples))\n\n  assert outputs.log_p_obs_hidden.ndim == 1\n\n  kl_divergence = (\n      beta * (expected_log_q_hidden_obs - log_p_hidden) -\n      outputs.log_p_obs_hidden)\n  return jnp.mean(kl_divergence)\n\n\nclass Updater:\n  \"\"\"A stateless abstraction around an init_fn/update_fn pair.\n\n  This extracts some common boilerplate from the training loop.\n  \"\"\"\n\n  def __init__(self, net_init, loss_fn, eval_fn,\n               optimizer: optax.GradientTransformation,\n               constraint_turn_on_step):\n    self._net_init = net_init\n    self._loss_fn = loss_fn\n    self._eval_fn = eval_fn\n    self._opt = optimizer\n    self._constraint_turn_on_step = constraint_turn_on_step\n\n  @functools.partial(jax.jit, static_argnums=0)\n  def init(self, init_rng, data):\n    \"\"\"Initializes state of the updater.\"\"\"\n    params = self._net_init(init_rng, data)\n    opt_state = self._opt.init(params)\n    out = dict(\n        step=np.array(0),\n        rng=init_rng,\n        opt_state=opt_state,\n        params=params,\n    )\n    return out\n\n  @functools.partial(jax.jit, static_argnums=0)\n  def update(self, state: Mapping[str, Any], data: jnp.ndarray):\n    \"\"\"Updates the state using some data and returns metrics.\"\"\"\n    rng = state['rng']\n    params = state['params']\n\n    constraint_ratio = (state['step'] > self._constraint_turn_on_step).astype(\n        float)\n    loss, g = jax.value_and_grad(self._loss_fn, argnums=1)(\n        constraint_ratio, params, rng, data)\n    updates, opt_state = self._opt.update(g, state['opt_state'])\n    params = optax.apply_updates(params, updates)\n\n    new_state = {\n        'step': state['step'] + 1,\n        'rng': rng,\n        'opt_state': opt_state,\n        'params': params,\n    }\n\n    new_metrics = {\n        'step': state['step'],\n        'loss': loss,\n    }\n    return new_state, new_metrics\n\n  @functools.partial(jax.jit, static_argnums=(0, 3, 4))\n  def evaluate(self, state: Mapping[str, Any], inputs: jnp.ndarray,\n               batch_size: int, num_prediction_samples: int):\n    \"\"\"Evaluate fair inference.\"\"\"\n    rng = state['rng']\n    params = state['params']\n    fair_pred, unfair_pred = self._eval_fn(params, rng, inputs, batch_size,\n                                           num_prediction_samples)\n    return fair_pred, unfair_pred\n\n\ndef main(_):\n  flags_config = FLAGS.config\n  # Create the dataset.\n  train_data, test_data = adult.read_all_data(FLAGS.dataset_dir)\n  column_names = list(train_data.columns)\n  train_input = build_input(train_data, flags_config.batch_size,\n                            flags_config.num_steps)\n\n  # Set up the model, loss, and updater.\n  forward_fn, fair_inference_fn = build_forward_fn(\n      train_data, column_names, flags_config.likelihood_multiplier)\n  forward_fn = hk.transform(forward_fn)\n  fair_inference_fn = hk.transform(fair_inference_fn)\n\n  loss_fn = functools.partial(_loss_fn, forward_fn.apply,\n                              flags_config.beta,\n                              flags_config.mmd_sample_size,\n                              flags_config.constraint_multiplier)\n  eval_fn = functools.partial(_evaluate, fair_inference_fn.apply)\n\n  optimizer = optax.adam(flags_config.learning_rate)\n\n  updater = Updater(forward_fn.init, loss_fn, eval_fn,\n                    optimizer, flags_config.constraint_turn_on_step)\n\n  # Initialize parameters.\n  logging.info('Initializing parameters...')\n  rng = jax.random.PRNGKey(42)\n  train_data = next(train_input)\n  state = updater.init(rng, train_data)\n\n  # Training loop.\n  logging.info('Starting train loop...')\n  prev_time = time.time()\n  for step in range(flags_config.num_steps):\n    train_data = next(train_input)\n    state, stats = updater.update(state, train_data)\n    if step % LOG_EVERY == 0:\n      steps_per_sec = LOG_EVERY / (time.time() - prev_time)\n      prev_time = time.time()\n      stats.update({'steps_per_sec': steps_per_sec})\n      logging.info({k: float(v) for k, v in stats.items()})\n\n  # Evaluate.\n  logging.info('Starting evaluation...')\n  test_input = build_input(test_data, flags_config.batch_size,\n                           training_steps=0,\n                           shuffle_size=0)\n\n  predicted_test_y = []\n  corrected_test_y = []\n  while True:\n    try:\n      eval_data = next(test_input)\n      # Now run the fair prediction; this projects the input to the latent space\n      # and then performs sampling.\n      predicted_class_y_fair, predicted_class_y_unfair = updater.evaluate(\n          state, eval_data, flags_config.batch_size,\n          flags_config.num_prediction_samples)\n      predicted_test_y.append(predicted_class_y_unfair)\n      corrected_test_y.append(predicted_class_y_fair)\n      # logging.info('Completed evaluation step %d', step)\n    except StopIteration:\n      logging.info('Finished evaluation')\n      break\n\n  # Join together the predictions from each batch.\n  test_y = np.concatenate(predicted_test_y, axis=0)\n  tweaked_test_y = np.concatenate(corrected_test_y, axis=0)\n\n  # Note the true values for computing accuracy and confusion matrices.\n  y_true = test_data['income'].cat.codes\n  # Make sure y_true is the same size\n  y_true = y_true[:len(test_y)]\n\n  test_accuracy = metrics.accuracy_score(y_true, test_y)\n  tweaked_test_accuracy = metrics.accuracy_score(\n      y_true, tweaked_test_y)\n\n  # Print out accuracy and confusion matrices.\n  logging.info('Accuracy (full model):                %f', test_accuracy)\n  logging.info('Confusion matrix:')\n  logging.info(metrics.confusion_matrix(y_true, test_y))\n  logging.info('')\n\n  logging.info('Accuracy (tweaked with baseline: Male): %f',\n               tweaked_test_accuracy)\n  logging.info('Confusion matrix:')\n  logging.info(metrics.confusion_matrix(y_true, tweaked_test_y))\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "counterfactual_fairness/adult_pscf_config.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Config for adult PSCF experiment.\"\"\"\n\nimport ml_collections\n\n\ndef get_config():\n  \"\"\"Return the default configuration.\"\"\"\n  config = ml_collections.ConfigDict()\n\n  config.num_steps = 10000  # Number of training steps to perform.\n  config.batch_size = 128  # Batch size.\n  config.learning_rate = 0.01  # Learning rate\n\n  # Number of samples to draw for prediction.\n  config.num_prediction_samples = 500\n\n  # Batch size to use for prediction. Ideally as big as possible, but may need\n  # to be reduced for memory reasons depending on the value of\n  # `num_prediction_samples`.\n  config.prediction_batch_size = 500\n\n  # Multiplier for the likelihood term in the loss\n  config.likelihood_multiplier = 5.\n\n  # Multiplier for the MMD constraint term in the loss\n  config.constraint_multiplier = 0.\n\n  # Scaling factor to use in KL term.\n  config.beta = 1.0\n\n  # The number of samples we draw from each latent variable distribution.\n  config.mmd_sample_size = 100\n\n  # Directory into which results should be placed. By default it is the empty\n  # string, in which case no saving will occur. The directory specified will be\n  # created if it does not exist.\n  config.output_dir = ''\n\n  # The index of the step at which to turn on the constraint multiplier. For\n  # steps prior to this the multiplier will be zero.\n  config.constraint_turn_on_step = 0\n\n  # The random seed for tensorflow that is applied to the graph iff the value is\n  # non-negative. By default the seed is not constrained.\n  config.seed = -1\n\n  # When doing fair inference, don't sample when given a sample for the baseline\n  # gender.\n  config.baseline_passthrough = False\n\n  return config\n"
  },
  {
    "path": "counterfactual_fairness/causal_network.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Construct DAGs representing causal graphs, and perform inference on them.\"\"\"\n\nimport collections\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport pandas as pd\nfrom tensorflow_probability.substrates import jax as tfp\nimport tree\n\n\nclass Node:\n  \"\"\"A node in a graphical model.\n\n  Conceptually, this represents a random variable in a causal probabilistic\n  model. It knows about its 'parents', i.e. other Nodes upon which this Node\n  causally depends. The user is responsible for ensuring that any graph built\n  with this class is acyclic.\n\n  A node knows how to represent its probability density, conditional on the\n  values of its parents.\n\n  The node needs to have a 'name', corresponding to the series within the\n  dataframe that should be used to populate it.\n  \"\"\"\n\n  def __init__(self, distribution_module, parents=(), hidden=False):\n    \"\"\"Initialise a `Node` instance.\n\n    Args:\n      distribution_module: An instance of `DistributionModule`, a Haiku module\n        that is suitable for modelling the conditional distribution of this\n        node given any parents.\n      parents: `Iterable`, optional. A (potentially nested) collection of nodes\n        which are direct ancestors of `self`.\n      hidden: `bool`, optional. Whether this node is hidden. Hidden nodes are\n        permitted to not have corresponding observations.\n    \"\"\"\n    parents = tree.flatten(parents)\n\n    self._distribution_module = distribution_module\n    self._column = distribution_module.column\n    self._index = distribution_module.index\n    self._hidden = hidden\n    self._observed_value = None\n\n    # When implementing the path-specific counterfactual fairness algorithm,\n    # we need the concept of a distribution conditional on the 'corrected'\n    # values of the parents. This is achieved via the 'node_to_replacement'\n    # argument of make_distribution.\n\n    # However, in order to work with the `fix_categorical` and `fix_continuous`\n    # functions, we need to assign counterfactual values for parents at\n    # evaluation time.\n    self._parent_to_value = collections.OrderedDict(\n        (parent, None) for parent in parents)\n\n    # This is the conditional distribution using no replacements, i.e. it is\n    # conditioned on the observed values of parents.\n    self._distribution = None\n\n  def __repr__(self):\n    return 'Node<{}>'.format(self.name)\n\n  @property\n  def dim(self):\n    \"\"\"The dimensionality of this node.\"\"\"\n    return self._distribution_module.dim\n\n  @property\n  def name(self):\n    return self._column\n\n  @property\n  def hidden(self):\n    return self._hidden\n\n  @property\n  def observed_value(self):\n    return self._observed_value\n\n  def find_ancestor(self, name):\n    \"\"\"Returns an ancestor node with the given name.\"\"\"\n    if self.name == name:\n      return self\n    for parent in self.parents:\n      found = parent.find_ancestor(name)\n      if found is not None:\n        return found\n\n  @property\n  def parents(self):\n    return tuple(self._parent_to_value)\n\n  @property\n  def distribution_module(self):\n    return self._distribution_module\n\n  @property\n  def distribution(self):\n    self._distribution = self.make_distribution()\n    return self._distribution\n\n  def make_distribution(self, node_to_replacement=None):\n    \"\"\"Make a conditional distribution for this node | parents.\n\n    By default we use values (representing 'real data') from the parent\n    nodes as inputs to the distribution, however we can alternatively swap out\n    any of these for arbitrary arrays by specifying `node_to_replacement`.\n\n    Args:\n      node_to_replacement: `None`, `dict: Node -> DeviceArray`.\n        If specified, use the indicated array.\n\n    Returns:\n      `tfp.distributions.Distribution`\n    \"\"\"\n    cur_parent_to_value = self._parent_to_value\n    self._parent_to_value = collections.OrderedDict(\n        (parent, parent.observed_value) for parent in cur_parent_to_value.keys()\n    )\n\n    if node_to_replacement is None:\n      parent_values = self._parent_to_value.values()\n      return self._distribution_module(*parent_values)\n    args = []\n    for node, value in self._parent_to_value.items():\n      if node in node_to_replacement:\n        replacement = node_to_replacement[node]\n        args.append(replacement)\n      else:\n        args.append(value)\n    return self._distribution_module(*args)\n\n  def populate(self, data, node_to_replacement=None):\n    \"\"\"Given a dataframe, populate node data.\n\n    If the Node does not have data present, this is taken to be a sign of\n      a) An error if the node is not hidden.\n      b) Fine if the node is hidden.\n    In case a) an exception will be raised, and in case b) observed)v will\n    not be mutated.\n\n    Args:\n      data: tf.data.Dataset\n      node_to_replacement: None | dict(Node -> array). If not None, use the\n        given ndarray data rather than extracting data from the frame. This is\n        only considered when looking at the inputs to a distribution.\n\n    Raises:\n      RuntimeError: If `data` doesn't contain the necessary feature, and the\n        node is not hidden.\n    \"\"\"\n    column = self._column\n    hidden = self._hidden\n    replacement = None\n    if node_to_replacement is not None and self in node_to_replacement:\n      replacement = node_to_replacement[self]\n\n    if replacement is not None:\n      # If a replacement is present, this takes priority over any other\n      # consideration.\n      self._observed_value = replacement\n      return\n\n    if self._index < 0:\n      if not hidden:\n        raise RuntimeError(\n            'Node {} is not hidden, and column {} is not in the frame.'.format(\n                self, column))\n      # Nothing to do - there is no data, and the node is hidden.\n      return\n\n    # Produce the observed value for this node.\n    self._observed_value = self._distribution_module.prepare_data(data)\n\n\nclass DistributionModule(hk.Module):\n  \"\"\"Common base class for a Haiku module representing a distribution.\n\n  This provides some additional functionality common to all modules that would\n  be used as arguments to the `Node` class above.\n  \"\"\"\n\n  def __init__(self, column, index, dim):\n    \"\"\"Initialise a `DistributionModule` instance.\n\n    Args:\n      column: `string`. The name of the random variable to which this\n        distribution corresponds, and should match the name of the series in\n        the pandas dataframe.\n      index: `int`. The index of the corresponding feature in the dataset.\n      dim: `int`. The output dimensionality of the distribution.\n    \"\"\"\n    super().__init__(name=column.replace('-', '_'))\n    self._column = column\n    self._index = index\n    self._dim = dim\n\n  @property\n  def dim(self):\n    \"\"\"The output dimensionality of this distribution.\"\"\"\n    return self._dim\n\n  @property\n  def column(self):\n    return self._column\n\n  @property\n  def index(self):\n    return self._index\n\n  def prepare_data(self, data):\n    \"\"\"Given a general tensor, return an ndarray if required.\n\n    This method implements the functionality delegated from\n    `Node._prepare_data`, and it is expected that subclasses will override the\n    implementation appropriately.\n\n    Args:\n      data: A tf.data.Dataset.\n\n    Returns:\n      `np.ndarray` of appropriately converted values for this series.\n    \"\"\"\n    return data[:, [self._index]]\n\n  def _package_args(self, args):\n    \"\"\"Concatenate args into a single tensor.\n\n    Args:\n      args: `List[DeviceArray]`, length > 0.\n        Each array is of shape (batch_size, ?) or (batch_size,). The former\n        will occur if looking at e.g. a one-hot encoded categorical variable,\n        and the latter in the case of a continuous variable.\n\n    Returns:\n      `DeviceArray`, (batch_size, num_values).\n    \"\"\"\n    return jnp.concatenate(args, axis=1)\n\n\nclass Gaussian(DistributionModule):\n  \"\"\"A Haiku module that maps some inputs into a normal distribution.\"\"\"\n\n  def __init__(self, column, index, dim=1, hidden_shape=(),\n               hidden_activation=jnp.tanh, scale=None):\n    \"\"\"Initialise a `Gaussian` instance with some dimensionality.\"\"\"\n    super(Gaussian, self).__init__(column, index, dim)\n    self._hidden_shape = tuple(hidden_shape)\n    self._hidden_activation = hidden_activation\n    self._scale = scale\n\n    self._loc_net = hk.nets.MLP(self._hidden_shape + (self._dim,),\n                                activation=self._hidden_activation)\n\n  def __call__(self, *args):\n    if args:\n      # There are arguments - these represent the variables on which we are\n      # conditioning. We set the mean of the output distribution to be a\n      # function of these values, parameterised with an MLP.\n      concatenated_inputs = self._package_args(args)\n      loc = self._loc_net(concatenated_inputs)\n    else:\n      # There are no arguments, so instead have a learnable location parameter.\n      loc = hk.get_parameter('loc', shape=[self._dim], init=jnp.zeros)\n\n    if self._scale is None:\n      # The scale has not been explicitly specified, in which case it is left\n      # to be single value, i.e. not a function of the conditioning set.\n      log_var = hk.get_parameter('log_var', shape=[self._dim], init=jnp.ones)\n      scale = jnp.sqrt(jnp.exp(log_var))\n    else:\n      scale = jnp.float32(self._scale)\n\n    return tfp.distributions.Normal(loc=loc, scale=scale)\n\n  def prepare_data(self, data):\n    # For continuous data, we ensure the data is of dtype float32, and\n    # additionally that the resulant shape is (num_examples, 1)\n    # Note that this implementation only works for dim=1, however this is\n    # currently also enforced by the fact that pandas series cannot be\n    # multidimensional.\n    result = data[:, [self.index]].astype(jnp.float32)\n    if len(result.shape) == 1:\n      result = jnp.expand_dims(result, axis=1)\n    return result\n\n\nclass GaussianMixture(DistributionModule):\n  \"\"\"A Haiku module that maps some inputs into a mixture of normals.\"\"\"\n\n  def __init__(self, column, num_components, dim=1):\n    \"\"\"Initialise a `GaussianMixture` instance with some dimensionality.\n\n    Args:\n      column: `string`. The name of the column.\n      num_components: `int`. The number of gaussians in this mixture.\n      dim: `int`. The dimensionality of the variable.\n    \"\"\"\n    super().__init__(column, -1, dim)\n    self._num_components = num_components\n    self._loc_net = hk.nets.MLP([self._dim])\n    self._categorical_logits_module = hk.nets.MLP([self._num_components])\n\n  def __call__(self, *args):\n    # Define component Gaussians to be independent functions of args.\n    locs = []\n    scales = []\n    for _ in range(self._num_components):\n      loc = hk.get_parameter('loc', shape=[self._dim], init=jnp.zeros)\n      log_var = hk.get_parameter('log_var', shape=[self._dim], init=jnp.ones)\n      scale = jnp.sqrt(jnp.exp(log_var))\n      locs.extend(loc)\n      scales.extend(scale)\n\n    # Define the Categorical distribution which switches between these\n    categorical_logits = hk.get_parameter('categorical_logits',\n                                          shape=[self._num_components],\n                                          init=jnp.zeros)\n\n    # Enforce positivity in the logits\n    categorical_logits = jax.nn.sigmoid(categorical_logits)\n\n    # If we have a multidimensional node, then the normal distributions above\n    # have a batch shape of (dim,). We want to select between these using the\n    # categorical distribution, so tile the logits to match this shape\n    expanded_logits = jnp.repeat(categorical_logits, self._dim)\n\n    categorical = tfp.distributions.Categorical(logits=expanded_logits)\n\n    return tfp.distributions.MixtureSameFamily(\n        mixture_distribution=categorical,\n        components_distribution=tfp.distributions.Normal(\n            loc=locs, scale=scales))\n\n\nclass MLPMultinomial(DistributionModule):\n  \"\"\"A Haiku module that consists of an MLP + multinomial distribution.\"\"\"\n\n  def __init__(self, column, index, dim, hidden_shape=(),\n               hidden_activation=jnp.tanh):\n    \"\"\"Initialise an MLPMultinomial instance.\n\n    Args:\n      column: `string`. Name of the corresponding dataframe column.\n      index: `int`. The index of the input data for this feature.\n      dim: `int`. Number of categories.\n      hidden_shape: `Iterable`, optional. Shape of hidden layers.\n      hidden_activation: `Callable`, optional. Non-linearity for hidden\n        layers.\n    \"\"\"\n    super(MLPMultinomial, self).__init__(column, index, dim)\n    self._hidden_shape = tuple(hidden_shape)\n    self._hidden_activation = hidden_activation\n    self._logit_net = hk.nets.MLP(self._hidden_shape + (self.dim,),\n                                  activation=self._hidden_activation)\n\n  @classmethod\n  def from_frame(cls, data, column, hidden_shape=()):\n    \"\"\"Create an MLPMultinomial instance from a pandas dataframe and column.\"\"\"\n    # Helper method that uses the dataframe to work out how many categories\n    # are in the given column. The dataframe is not used for any other purpose.\n    if not isinstance(data[column].dtype, pd.api.types.CategoricalDtype):\n      raise ValueError('{} is not categorical.'.format(column))\n    index = list(data.columns).index(column)\n    num_categories = len(data[column].cat.categories)\n    return cls(column, index, num_categories, hidden_shape)\n\n  def __call__(self, *args):\n    if args:\n      concatenated_inputs = self._package_args(args)\n      logits = self._logit_net(concatenated_inputs)\n    else:\n      logits = hk.get_parameter('b', shape=[self.dim], init=jnp.zeros)\n    return tfp.distributions.Multinomial(logits=logits, total_count=1.0)\n\n  def prepare_data(self, data):\n    # For categorical data, we convert to a one-hot representation using the\n    # pandas category 'codes'. These are integers, and will have a definite\n    # ordering that is identical between runs.\n    codes = data[:, self.index]\n    codes = codes.astype(jnp.int32)\n    return jnp.eye(self.dim)[codes]\n\n\ndef populate(nodes, dataframe, node_to_replacement=None):\n  \"\"\"Populate observed values for nodes.\"\"\"\n  for node in nodes:\n    node.populate(dataframe, node_to_replacement=node_to_replacement)\n"
  },
  {
    "path": "counterfactual_fairness/download_dataset.sh",
    "content": "#!/bin/bash\n# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n# Usage:\n#     sh download_dataset.sh ${OUTPUT_DIR}\n# Example:\n#     sh download_dataset.sh uci_adult\n\nset -e\n\nOUTPUT_DIR=\"${1}\"\n\nBASE_URL=\"https://archive.ics.uci.edu/ml/machine-learning-databases/adult/\"\n\nmkdir -p ${OUTPUT_DIR}\nfor file in adult.data adult.test\ndo\nwget -O \"${OUTPUT_DIR}/${file}\" \"${BASE_URL}${file}\"\ndone\n"
  },
  {
    "path": "counterfactual_fairness/requirements.txt",
    "content": "wheel\nabsl-py>=0.12.0\ndm-haiku>=0.0.4\noptax>=0.0.8\nml_collections\nnumpy>=1.16.4\ntensorflow>=2.5.0\ntensorflow-datasets>=4.3.0\ntensorflow_probability\npandas\nsklearn\njaxlib>=0.1.67+cuda110\n"
  },
  {
    "path": "counterfactual_fairness/run_adult_pscf.sh",
    "content": "#!/bin/bash\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n# Fail on any error.\nset -e\n\n# Display commands being run.\nset -x\n\nTMP_DIR=`mktemp -d`\n\nvirtualenv --python=python3.6 \"${TMP_DIR}/env\"\nsource \"${TMP_DIR}/env/bin/activate\"\n\n# Install dependencies.\npip install --upgrade -r counterfactual_fairness/requirements.txt\n\n# Download minimal dataset\nDATA_DIR=\"${TMP_DIR}/adult\"\nbash counterfactual_fairness/download_dataset.sh ${TMP_DIR}\n\n# Train for a few steps.\npython -m counterfactual_fairness.adult_pscf --config=\"counterfactual_fairness/adult_pscf_config.py\" --dataset_dir=${DATA_DIR} --num_steps=10\n\n# Clean up.\nrm -r ${TMP_DIR}\necho \"Test run complete.\"\n"
  },
  {
    "path": "counterfactual_fairness/utils.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Common utilities.\"\"\"\n\nfrom typing import Optional, Union\n\nimport jax\nfrom jax import random\nimport jax.numpy as jnp\nimport pandas as pd\nimport tensorflow as tf\nfrom tensorflow_probability.substrates import jax as tfp\n\ntfd = tfp.distributions\n\n\ndef get_dataset(dataset: pd.DataFrame,\n                batch_size: int,\n                shuffle_size: int = 10000,\n                num_epochs: Optional[int] = None) -> tf.data.Dataset:\n  \"\"\"Makes a tf.Dataset with correct preprocessing.\"\"\"\n  dataset_copy = dataset.copy()\n  for column in dataset.columns:\n    if dataset[column].dtype.name == 'category':\n      dataset_copy.loc[:, column] = dataset[column].cat.codes\n  ds = tf.data.Dataset.from_tensor_slices(dataset_copy.values)\n  if shuffle_size > 0:\n    ds = ds.shuffle(shuffle_size, reshuffle_each_iteration=True)\n  ds = ds.repeat(num_epochs)\n  return ds.batch(batch_size, drop_remainder=True)\n\n\ndef multinomial_mode(\n    distribution_or_probs: Union[tfd.Distribution, jax.Array]\n    ) -> jax.Array:\n  \"\"\"Calculates the (one-hot) mode of a multinomial distribution.\n\n  Args:\n    distribution_or_probs:\n      `tfp.distributions.Distribution` | List[tensors].\n      If the former, it is assumed that it has a `probs` property, and\n      represents a distribution over categories. If the latter, these are\n      taken to be the probabilities of categories directly.\n      In either case, it is assumed that `probs` will be shape\n      (batch_size, dim).\n\n  Returns:\n    `DeviceArray`, float32, (batch_size, dim).\n    The mode of the distribution - this will be in one-hot form, but contain\n    multiple non-zero entries in the event that more than one probability is\n    joint-highest.\n  \"\"\"\n  if isinstance(distribution_or_probs, tfd.Distribution):\n    probs = distribution_or_probs.probs_parameter()  # pytype: disable=attribute-error  # jax-devicearray\n  else:\n    probs = distribution_or_probs\n  max_prob = jnp.max(probs, axis=1, keepdims=True)\n  mode = jnp.int32(jnp.equal(probs, max_prob))\n  return jnp.float32(mode / jnp.sum(mode, axis=1, keepdims=True))\n\n\ndef multinomial_class(\n    distribution_or_probs: Union[tfd.Distribution, jax.Array]\n) -> jax.Array:\n  \"\"\"Computes the mode class of a multinomial distribution.\n\n  Args:\n    distribution_or_probs:\n      `tfp.distributions.Distribution` | DeviceArray.\n      As for `multinomial_mode`.\n\n  Returns:\n    `DeviceArray`, float32, (batch_size,).\n    For each element in the batch, the index of the class with highest\n    probability.\n  \"\"\"\n  if isinstance(distribution_or_probs, tfd.Distribution):\n    return jnp.argmax(distribution_or_probs.logits_parameter(), axis=1)  # pytype: disable=attribute-error  # jax-devicearray\n  return jnp.argmax(distribution_or_probs, axis=1)\n\n\ndef multinomial_mode_ndarray(probs: jax.Array) -> jax.Array:\n  \"\"\"Calculates the (one-hot) mode from an ndarray of class probabilities.\n\n  Equivalent to `multinomial_mode` above, but implemented for numpy ndarrays\n  rather than Tensors.\n\n  Args:\n    probs: `DeviceArray`, (batch_size, dim). Probabilities for each class, for\n      each element in a batch.\n\n  Returns:\n    `DeviceArray`, (batch_size, dim).\n  \"\"\"\n  max_prob = jnp.amax(probs, axis=1, keepdims=True)\n  mode = jnp.equal(probs, max_prob).astype(jnp.int32)\n  return (mode / jnp.sum(mode, axis=1, keepdims=True)).astype(jnp.float32)\n\n\ndef multinomial_accuracy(distribution_or_probs: tfd.Distribution,\n                         data: jax.Array) -> jax.Array:\n  \"\"\"Compute the accuracy, averaged over a batch of data.\n\n  Args:\n    distribution_or_probs:\n      `tfp.distributions.Distribution` | List[tensors].\n      As for functions above.\n    data: `DeviceArray`. Reference data, of shape (batch_size, dim).\n\n  Returns:\n    `DeviceArray`, float32, ().\n    Overall scalar accuracy.\n  \"\"\"\n  return jnp.mean(\n      jnp.sum(multinomial_mode(distribution_or_probs) * data, axis=1))\n\n\ndef softmax_ndarray(logits: jax.Array) -> jax.Array:\n  \"\"\"Softmax function, implemented for numpy ndarrays.\"\"\"\n  assert len(logits.shape) == 2\n  # Normalise for better stability.\n  s = jnp.max(logits, axis=1, keepdims=True)\n  e_x = jnp.exp(logits - s)\n  return e_x / jnp.sum(e_x, axis=1, keepdims=True)\n\n\ndef get_samples(distribution, num_samples, seed=None):\n  \"\"\"Given a batched distribution, compute samples and reshape along batch.\n\n  That is, we have a distribution of shape (batch_size, ...), where each element\n  of the tensor is independent. We then draw num_samples from each component, to\n  give a tensor of shape:\n\n      (num_samples, batch_size, ...)\n\n  Args:\n    distribution: `tfp.distributions.Distribution`. The distribution from which\n      to sample.\n    num_samples: `Integral` | `DeviceArray`, int32, (). The number of samples.\n    seed: `Integral` | `None`. The seed that will be forwarded to the call to\n      distribution.sample. Defaults to `None`.\n\n  Returns:\n    `DeviceArray`, float32, (batch_size * num_samples, ...).\n    Samples for each element of the batch.\n  \"\"\"\n  # Obtain the sample from the distribution, which will be of shape\n  # [num_samples] + batch_shape + event_shape.\n  sample = distribution.sample(num_samples, seed=seed)\n  sample = sample.reshape((-1, sample.shape[-1]))\n\n  # Combine the first two dimensions through a reshape, so the result will\n  # be of shape (num_samples * batch_size,) + shape_tail.\n  return sample\n\n\ndef mmd_loss(distribution: tfd.Distribution,\n             is_a: jax.Array,\n             num_samples: int,\n             rng: jnp.ndarray,\n             num_random_features: int = 50,\n             gamma: float = 1.):\n  \"\"\"Given two distributions, compute the Maximum Mean Discrepancy (MMD).\n\n  More exactly, this uses the 'FastMMD' approximation, a.k.a. 'Random Fourier\n  Features'. See the description, for example, in sections 2.3.1 and 2.4 of\n  https://arxiv.org/pdf/1511.00830.pdf.\n\n  Args:\n    distribution: Distribution whose `sample()` method will return a\n      DeviceArray of shape (batch_size, dim).\n    is_a: A boolean array indicating which elements of the batch correspond\n      to class A (the remaining indices correspond to class B).\n    num_samples: The number of samples to draw from `distribution`.\n    rng: Random seed provided by the user.\n    num_random_features: The number of random fourier features\n      used in the expansion.\n    gamma: The value of gamma in the Gaussian MMD kernel.\n\n  Returns:\n    `DeviceArray`, shape ().\n    The scalar MMD value for samples taken from the given distributions.\n  \"\"\"\n  if distribution.event_shape == ():  # pylint: disable=g-explicit-bool-comparison\n    dim_x = distribution.batch_shape[1]\n  else:\n    dim_x, = distribution.event_shape\n\n  # Obtain samples from the distribution, which will be of shape\n  # [num_samples] + batch_shape + event_shape.\n  samples = distribution.sample(num_samples, seed=rng)\n\n  w = random.normal(rng, shape=((dim_x, num_random_features)))\n  b = random.uniform(rng, shape=(num_random_features,),\n                     minval=0, maxval=2*jnp.pi)\n\n  def features(x):\n    \"\"\"Compute the kitchen sink feature.\"\"\"\n    # We need to contract last axis of x with first of W - do this with\n    # tensordot. The result has shape:\n    #   (?, ?, num_random_features)\n    return jnp.sqrt(2 / num_random_features) * jnp.cos(\n        jnp.sqrt(2 / gamma) * jnp.tensordot(x, w, axes=1) + b)\n\n  # Compute the expected values of the given features.\n  # The first axis represents the samples from the distribution,\n  # second axis represents the batch_size.\n  # Each of these now has shape (num_random_features,)\n  exp_features = features(samples)\n  # Swap axes so that batch_size is the last dimension to be compatible\n  # with is_a and is_b shape at the next step\n  exp_features_reshaped = jnp.swapaxes(exp_features, 1, 2)\n  # Current dimensions [num_samples, num_random_features, batch_size]\n  exp_features_reshaped_a = jnp.where(is_a, exp_features_reshaped, 0)\n  exp_features_reshaped_b = jnp.where(is_a, 0, exp_features_reshaped)\n  exp_features_a = jnp.mean(exp_features_reshaped_a, axis=(0, 2))\n  exp_features_b = jnp.mean(exp_features_reshaped_b, axis=(0, 2))\n\n  assert exp_features_a.shape == (num_random_features,)\n  difference = exp_features_a - exp_features_b\n\n  # Compute the squared norm. Shape ().\n  return jnp.tensordot(difference, difference, axes=1)\n\n\ndef mmd_loss_exact(distribution_a, distribution_b, num_samples, gamma=1.):\n  \"\"\"Exact estimate of MMD.\"\"\"\n  assert distribution_a.event_shape == distribution_b.event_shape\n  assert distribution_a.batch_shape[1:] == distribution_b.batch_shape[1:]\n\n  # shape (num_samples * batch_size_a, dim_x)\n  samples_a = get_samples(distribution_a, num_samples)\n  # shape (num_samples * batch_size_b, dim_x)\n  samples_b = get_samples(distribution_b, num_samples)\n\n  # Make matrices of shape\n  #   (size_b, size_a, dim_x)\n  # where:\n  #   size_a = num_samples * batch_size_a\n  #   size_b = num_samples * batch_size_b\n  size_a = samples_a.shape[0]\n  size_b = samples_b.shape[0]\n  x_a = jnp.expand_dims(samples_a, axis=0)\n  x_a = jnp.tile(x_a, (size_b, 1, 1))\n  x_b = jnp.expand_dims(samples_b, axis=1)\n  x_b = jnp.tile(x_b, (1, size_a, 1))\n\n  def kernel_mean(x, y):\n    \"\"\"Gaussian kernel mean.\"\"\"\n\n    diff = x - y\n\n    # Contract over dim_x.\n    exponent = - jnp.einsum('ijk,ijk->ij', diff, diff) / gamma\n\n    # This has shape (size_b, size_a).\n    kernel_matrix = jnp.exp(exponent)\n\n    # Shape ().\n    return jnp.mean(kernel_matrix)\n\n  # Equation 7 from arxiv 1511.00830\n  return (\n      kernel_mean(x_a, x_a)\n      + kernel_mean(x_b, x_b)\n      - 2 * kernel_mean(x_a, x_b))\n\n\ndef scalar_log_prob(distribution, val):\n  \"\"\"Compute the log_prob per batch entry.\n\n  It is conceptually similar to:\n\n    jnp.sum(distribution.log_prob(val), axis=1)\n\n  However, classes like `tfp.distributions.Multinomial` have a log_prob which\n  returns a tensor of shape (batch_size,), which will cause the above\n  incantation to fail. In these cases we fall back to returning just:\n\n    distribution.log_prob(val)\n\n  Args:\n    distribution: `tfp.distributions.Distribution` which implements log_prob.\n    val: `DeviceArray`, (batch_size, dim).\n\n  Returns:\n    `DeviceArray`, (batch_size,).\n    If the result of log_prob has a trailing dimension, we perform a reduce_sum\n    over it.\n\n  Raises:\n    ValueError: If distribution.log_prob(val) has an unsupported shape.\n  \"\"\"\n  log_prob_val = distribution.log_prob(val)\n  if len(log_prob_val.shape) == 1:\n    return log_prob_val\n  elif len(log_prob_val.shape) > 2:\n    raise ValueError('log_prob_val has unexpected shape {}.'.format(\n        log_prob_val.shape))\n  return jnp.sum(log_prob_val, axis=1)\n"
  },
  {
    "path": "counterfactual_fairness/variational.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Functions and classes for performing variational inference.\"\"\"\n\nfrom typing import Callable, Iterable, Optional\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nfrom tensorflow_probability.substrates import jax as tfp\n\ntfd = tfp.distributions\n\n\nclass Variational(hk.Module):\n  \"\"\"A module representing the variational distribution q(H | *O).\n\n  H is assumed to be a continuous variable.\n  \"\"\"\n\n  def __init__(self,\n               common_layer_sizes: Iterable[int],\n               activation: Callable[[jax.Array], jax.Array] = jnp.tanh,\n               output_dim: int = 1,\n               name: Optional[str] = None):\n    \"\"\"Initialises a `Variational` instance.\n\n    Args:\n      common_layer_sizes: The number of hidden units in the shared dense\n        network layers.\n      activation: Nonlinearity function to apply to each of the\n        common layers.\n      output_dim: The dimensionality of `H`.\n      name: A name to assign to the module instance.\n    \"\"\"\n    super().__init__(name=name)\n    self._common_layer_sizes = common_layer_sizes\n    self._activation = activation\n    self._output_dim = output_dim\n\n    self._linear_layers = [\n        hk.Linear(layer_size)\n        for layer_size in self._common_layer_sizes\n    ]\n\n    self._mean_output = hk.Linear(self._output_dim)\n    self._log_var_output = hk.Linear(self._output_dim)\n\n  def __call__(self, *args) -> tfd.Distribution:\n    \"\"\"Create a distribution for q(H | *O).\n\n    Args:\n      *args: `List[DeviceArray]`. Corresponds to the values of whatever\n        variables are in the conditional set *O.\n\n    Returns:\n      `tfp.distributions.NormalDistribution` instance.\n    \"\"\"\n    # Stack all inputs, ensuring that shapes are consistent and that they are\n    # all of dtype float32.\n    input_ = [hk.Flatten()(arg) for arg in args]\n    input_ = jnp.concatenate(input_, axis=1)\n\n    # Create a common set of layers, then final layer separates mean & log_var\n    for layer in self._linear_layers:\n      input_ = layer(input_)\n      input_ = self._activation(input_)\n\n    # input_ now represents a tensor of shape (batch_size, final_layer_size).\n    # This is now put through two final layers, one for the computation of each\n    # of the mean and standard deviation of the resultant distribution.\n    mean = self._mean_output(input_)\n    log_var = self._log_var_output(input_)\n    std = jnp.sqrt(jnp.exp(log_var))\n    return tfd.Normal(mean, std)\n"
  },
  {
    "path": "cs_gan/README.md",
    "content": "# Deep Compressed Sensing\n\nThis is the example code for the following ICML 2019 paper.  If you use the code\nhere please cite this paper.\n\n> Yan Wu, Mihaela Rosca, Timothy Lillicrap\n  *Deep Compressed Sensing*.  ICML 2019.  [\\[arXiv\\]](https://arxiv.org/abs/1905.06723).\n\n\n## Running the code\n\nThe code contains:\n\n  * the implementation of the compressed sensing algorithm (`cs.py`).\n  * the implementation of the GAN algorithm (`gan.py`).\n  * a main file (`main_cs.py`) to reproduce the Compressed Sensing results in\n  the paper.\n  * a main file (`main_gan.py`) to reproduce the GAN results in the paper\n  (the improvement over the SN-GAN baseline via latent optimization).\n"
  },
  {
    "path": "cs_gan/cs.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"GAN modules.\"\"\"\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport math\n\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\nfrom cs_gan import utils\n\n\nclass CS(object):\n  \"\"\"Compressed Sensing Module.\"\"\"\n\n  def __init__(self, metric_net, generator,\n               num_z_iters, z_step_size, z_project_method):\n    \"\"\"Constructs the module.\n\n    Args:\n      metric_net: the measurement network.\n      generator: The generator network. A sonnet module. For examples, see\n        `nets.py`.\n      num_z_iters: an integer, the number of latent optimisation steps.\n      z_step_size: an integer, latent optimisation step size.\n      z_project_method: the method for projecting latent after optimisation,\n        a string from {'norm', 'clip'}.\n    \"\"\"\n\n    self._measure = metric_net\n    self.generator = generator\n    self.num_z_iters = num_z_iters\n    self.z_project_method = z_project_method\n    self._log_step_size_module = snt.TrainableVariable(\n        [],\n        initializers={'w': tf.constant_initializer(math.log(z_step_size))})\n    self.z_step_size = tf.exp(self._log_step_size_module())\n\n  def connect(self, data, generator_inputs):\n    \"\"\"Connects the components and returns the losses, outputs and debug ops.\n\n    Args:\n      data: a `tf.Tensor`: `[batch_size, ...]`. There are no constraints on the\n        rank\n        of this tensor, but it has to be compatible with the shapes expected\n        by the discriminator.\n      generator_inputs: a `tf.Tensor`: `[g_in_batch_size, ...]`. It does not\n        have to have the same batch size as the `data` tensor. There are not\n        constraints on the rank of this tensor, but it has to be compatible\n        with the shapes the generator network supports as inputs.\n\n    Returns:\n      An `ModelOutputs` instance.\n    \"\"\"\n\n    samples, optimised_z = utils.optimise_and_sample(\n        generator_inputs, self, data, is_training=True)\n    optimisation_cost = utils.get_optimisation_cost(generator_inputs,\n                                                    optimised_z)\n    debug_ops = {}\n\n    initial_samples = self.generator(generator_inputs, is_training=True)\n    generator_loss = tf.reduce_mean(self.gen_loss_fn(data, samples))\n    # compute the RIP loss\n    # (\\sqrt{F(x_1 - x_2)^2} - \\sqrt{(x_1 - x_2)^2})^2\n    # as a triplet loss for 3 pairs of images.\n\n    r1 = self._get_rip_loss(samples, initial_samples)\n    r2 = self._get_rip_loss(samples, data)\n    r3 = self._get_rip_loss(initial_samples, data)\n    rip_loss = tf.reduce_mean((r1 + r2 + r3) / 3.0)\n    total_loss = generator_loss + rip_loss\n    optimization_components = self._build_optimization_components(\n        generator_loss=total_loss)\n    debug_ops['rip_loss'] = rip_loss\n    debug_ops['recons_loss'] = tf.reduce_mean(\n        tf.norm(snt.BatchFlatten()(samples)\n                - snt.BatchFlatten()(data), axis=-1))\n\n    debug_ops['z_step_size'] = self.z_step_size\n    debug_ops['opt_cost'] = optimisation_cost\n    debug_ops['gen_loss'] = generator_loss\n\n    return utils.ModelOutputs(\n        optimization_components, debug_ops)\n\n  def _get_rip_loss(self, img1, img2):\n    r\"\"\"Compute the RIP loss from two images.\n\n      The RIP loss: (\\sqrt{F(x_1 - x_2)^2} - \\sqrt{(x_1 - x_2)^2})^2\n\n    Args:\n      img1: an image (x_1), 4D tensor of shape [batch_size, W, H, C].\n      img2: an other image (x_2), 4D tensor of shape [batch_size, W, H, C].\n    \"\"\"\n\n    m1 = self._measure(img1)\n    m2 = self._measure(img2)\n\n    img_diff_norm = tf.norm(snt.BatchFlatten()(img1)\n                            - snt.BatchFlatten()(img2), axis=-1)\n    m_diff_norm = tf.norm(m1 - m2, axis=-1)\n\n    return tf.square(img_diff_norm - m_diff_norm)\n\n  def _get_measurement_error(self, target_img, sample_img):\n    \"\"\"Compute the measurement error of sample images given the targets.\"\"\"\n\n    m_targets = self._measure(target_img)\n    m_samples = self._measure(sample_img)\n\n    return tf.reduce_sum(tf.square(m_targets - m_samples), -1)\n\n  def gen_loss_fn(self, data, samples):\n    \"\"\"Generator loss as latent optimisation's error function.\"\"\"\n    return self._get_measurement_error(data, samples)\n\n  def _build_optimization_components(\n      self, generator_loss=None, discriminator_loss=None):\n    \"\"\"Create the optimization components for this module.\"\"\"\n\n    metric_vars = _get_and_check_variables(self._measure)\n    generator_vars = _get_and_check_variables(self.generator)\n    step_vars = _get_and_check_variables(self._log_step_size_module)\n\n    assert discriminator_loss is None\n    optimization_components = utils.OptimizationComponent(\n        generator_loss, generator_vars + metric_vars + step_vars)\n    return optimization_components\n\n\ndef _get_and_check_variables(module):\n  module_variables = module.get_all_variables()\n  if not module_variables:\n    raise ValueError(\n        'Module {} has no variables! Variables needed for training.'.format(\n            module.module_name))\n\n  # TensorFlow optimizers require lists to be passed in.\n  return list(module_variables)\n"
  },
  {
    "path": "cs_gan/file_utils.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"File utilities.\"\"\"\n\nimport math\nimport os\nimport numpy as np\nfrom PIL import Image\n\n\nclass FileExporter(object):\n  \"\"\"File exporter utilities.\"\"\"\n\n  def __init__(self, path, grid_height=None, zoom=1):\n    \"\"\"Constructor.\n\n    Arguments:\n      path: The directory to save data to.\n      grid_height: How many data elements tall to make the grid, if appropriate.\n          The width will be chosen based on height. If None, automatically\n          determined.\n      zoom: How much to zoom in each data element by, if appropriate.\n    \"\"\"\n    if not os.path.exists(path):\n      os.makedirs(path)\n\n    self._path = path\n    self._zoom = zoom\n    self._grid_height = grid_height\n\n  def _reshape(self, data):\n    \"\"\"Reshape given data into image format.\"\"\"\n    batch_size, height, width, n_channels = data.shape\n    if self._grid_height:\n      grid_height = self._grid_height\n    else:\n      grid_height = int(math.floor(math.sqrt(batch_size)))\n\n    grid_width = int(math.ceil(batch_size/grid_height))\n\n    if n_channels == 1:\n      data = np.tile(data, (1, 1, 1, 3))\n      n_channels = 3\n\n    if n_channels != 3:\n      raise ValueError('Image batch must have either 1 or 3 channels, but '\n                       'was {}'.format(n_channels))\n\n    shape = (height * grid_height, width * grid_width, n_channels)\n    buf = np.full(shape, 255, dtype=np.uint8)\n    multiplier = 1 if data.dtype in (np.int32, np.int64) else 255\n\n    for k in range(batch_size):\n      i = k // grid_width\n      j = k % grid_width\n      arr = data[k]\n      x, y = i * height, j * width\n      buf[x:x + height, y:y + width, :] = np.clip(\n          multiplier * arr, 0, 255).astype(np.uint8)\n\n    if self._zoom > 1:\n      buf = buf.repeat(self._zoom, axis=0).repeat(self._zoom, axis=1)\n    return buf\n\n  def save(self, data, name):\n    data = self._reshape(data)\n    relative_name = '{}_last.png'.format(name)\n    target_file = os.path.join(self._path, relative_name)\n\n    img = Image.fromarray(data)\n    img.save(target_file, format='PNG')\n"
  },
  {
    "path": "cs_gan/gan.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"GAN modules.\"\"\"\nimport collections\nimport math\n\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\nfrom cs_gan import utils\n\n\nclass GAN(object):\n  \"\"\"Standard generative adversarial network setup.\n\n  The aim of the generator is to generate samples which fool a discriminator.\n  Does not make any assumptions about the discriminator and generator loss\n  functions.\n\n  Trained module components:\n\n    * discriminator\n    * generator\n\n\n  For the standard GAN algorithm, generator_inputs is a vector of noise (either\n  Gaussian or uniform).\n  \"\"\"\n\n  def __init__(self, discriminator, generator,\n               num_z_iters=None, z_step_size=None,\n               z_project_method=None, optimisation_cost_weight=None):\n    \"\"\"Constructs the module.\n\n    Args:\n      discriminator: The discriminator network. A sonnet module. See `nets.py`.\n      generator: The generator network. A sonnet module. For examples, see\n        `nets.py`.\n      num_z_iters: an integer, the number of latent optimisation steps.\n      z_step_size: an integer, latent optimisation step size.\n      z_project_method: the method for projecting latent after optimisation,\n        a string from {'norm', 'clip'}.\n      optimisation_cost_weight: a float, how much to penalise the distance of z\n        moved by latent optimisation.\n    \"\"\"\n    self._discriminator = discriminator\n    self.generator = generator\n    self.num_z_iters = num_z_iters\n    self.z_project_method = z_project_method\n    if z_step_size:\n      self._log_step_size_module = snt.TrainableVariable(\n          [],\n          initializers={'w': tf.constant_initializer(math.log(z_step_size))})\n      self.z_step_size = tf.exp(self._log_step_size_module())\n    self._optimisation_cost_weight = optimisation_cost_weight\n\n  def connect(self, data, generator_inputs):\n    \"\"\"Connects the components and returns the losses, outputs and debug ops.\n\n    Args:\n      data: a `tf.Tensor`: `[batch_size, ...]`. There are no constraints on the\n        rank\n        of this tensor, but it has to be compatible with the shapes expected\n        by the discriminator.\n      generator_inputs: a `tf.Tensor`: `[g_in_batch_size, ...]`. It does not\n        have to have the same batch size as the `data` tensor. There are not\n        constraints on the rank of this tensor, but it has to be compatible\n        with the shapes the generator network supports as inputs.\n\n    Returns:\n      An `ModelOutputs` instance.\n    \"\"\"\n    samples, optimised_z = utils.optimise_and_sample(\n        generator_inputs, self, data, is_training=True)\n    optimisation_cost = utils.get_optimisation_cost(generator_inputs,\n                                                    optimised_z)\n\n    # Pass in the labels to the discriminator in case we are using a\n    # discriminator which makes use of labels. The labels can be None.\n    disc_data_logits = self._discriminator(data)\n    disc_sample_logits = self._discriminator(samples)\n\n    disc_data_loss = utils.cross_entropy_loss(\n        disc_data_logits,\n        tf.ones(tf.shape(disc_data_logits[:, 0]), dtype=tf.int32))\n\n    disc_sample_loss = utils.cross_entropy_loss(\n        disc_sample_logits,\n        tf.zeros(tf.shape(disc_sample_logits[:, 0]), dtype=tf.int32))\n\n    disc_loss = disc_data_loss + disc_sample_loss\n\n    generator_loss = utils.cross_entropy_loss(\n        disc_sample_logits,\n        tf.ones(tf.shape(disc_sample_logits[:, 0]), dtype=tf.int32))\n\n    optimization_components = self._build_optimization_components(\n        discriminator_loss=disc_loss, generator_loss=generator_loss,\n        optimisation_cost=optimisation_cost)\n\n    debug_ops = {}\n    debug_ops['disc_data_loss'] = disc_data_loss\n    debug_ops['disc_sample_loss'] = disc_sample_loss\n    debug_ops['disc_loss'] = disc_loss\n    debug_ops['gen_loss'] = generator_loss\n    debug_ops['opt_cost'] = optimisation_cost\n    if hasattr(self, 'z_step_size'):\n      debug_ops['z_step_size'] = self.z_step_size\n\n    return utils.ModelOutputs(\n        optimization_components, debug_ops)\n\n  def gen_loss_fn(self, data, samples):\n    \"\"\"Generator loss as latent optimisation's error function.\"\"\"\n    del data\n    disc_sample_logits = self._discriminator(samples)\n    generator_loss = utils.cross_entropy_loss(\n        disc_sample_logits,\n        tf.ones(tf.shape(disc_sample_logits[:, 0]), dtype=tf.int32))\n    return generator_loss\n\n  def _build_optimization_components(\n      self, generator_loss=None, discriminator_loss=None,\n      optimisation_cost=None):\n    \"\"\"Create the optimization components for this module.\"\"\"\n\n    discriminator_vars = _get_and_check_variables(self._discriminator)\n    generator_vars = _get_and_check_variables(self.generator)\n    if hasattr(self, '_log_step_size_module'):\n      step_vars = _get_and_check_variables(self._log_step_size_module)\n      generator_vars += step_vars\n\n    optimization_components = collections.OrderedDict()\n    optimization_components['disc'] = utils.OptimizationComponent(\n        discriminator_loss, discriminator_vars)\n    if self._optimisation_cost_weight:\n      generator_loss += self._optimisation_cost_weight * optimisation_cost\n    optimization_components['gen'] = utils.OptimizationComponent(\n        generator_loss, generator_vars)\n    return optimization_components\n\n  def get_variables(self):\n    disc_vars = _get_and_check_variables(self._discriminator)\n    gen_vars = _get_and_check_variables(self.generator)\n    return disc_vars, gen_vars\n\n\ndef _get_and_check_variables(module):\n  module_variables = module.get_all_variables()\n  if not module_variables:\n    raise ValueError(\n        'Module {} has no variables! Variables needed for training.'.format(\n            module.module_name))\n\n  # TensorFlow optimizers require lists to be passed in.\n  return list(module_variables)\n\n"
  },
  {
    "path": "cs_gan/image_metrics.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Compute image metrics: IS, FID.\"\"\"\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tensorflow_gan as tfgan\n\n\ndef get_image_metrics_for_samples(\n    real_images, generator, prior, data_processor, num_eval_samples):\n  \"\"\"Compute inception score and FID.\"\"\"\n  max_classifier_batch = 10\n  num_batches = num_eval_samples //  max_classifier_batch\n\n  def sample_fn(arg):\n    del arg\n    samples = generator(prior.sample(max_classifier_batch))\n    # Samples must be in [-1, 1], as expected by TFGAN.\n    # Resizing to appropriate size is done by TFGAN.\n    return samples\n\n  fake_outputs = tfgan.eval.sample_and_run_inception(\n      sample_fn,\n      sample_inputs=[1.0] * num_batches)  # Dummy inputs.\n\n  fake_logits = fake_outputs['logits']\n  inception_score = tfgan.eval.classifier_score_from_logits(fake_logits)\n\n  real_outputs = tfgan.eval.run_inception(\n      data_processor.preprocess(real_images), num_batches=num_batches)\n  fid = tfgan.eval.frechet_classifier_distance_from_activations(\n      real_outputs['pool_3'], fake_outputs['pool_3'])\n\n  return {\n      'inception_score': inception_score,\n      'fid': fid}\n"
  },
  {
    "path": "cs_gan/main.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Training script.\"\"\"\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport os\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport tensorflow.compat.v1 as tf\n\nfrom cs_gan import file_utils\nfrom cs_gan import gan\nfrom cs_gan import image_metrics\nfrom cs_gan import utils\n\nflags.DEFINE_integer(\n    'num_training_iterations', 200000,\n    'Number of training iterations.')\nflags.DEFINE_integer(\n    'batch_size', 64, 'Training batch size.')\nflags.DEFINE_integer(\n    'num_latents', 128, 'The number of latents')\nflags.DEFINE_integer(\n    'summary_every_step', 1000,\n    'The interval at which to log debug ops.')\nflags.DEFINE_integer(\n    'image_metrics_every_step', 2000,\n    'The interval at which to log (expensive) image metrics.')\nflags.DEFINE_integer(\n    'export_every', 10,\n    'The interval at which to export samples.')\nflags.DEFINE_integer(\n    'num_eval_samples', 10000,\n    'The number of samples used to evaluate FID/IS')\nflags.DEFINE_string(\n    'dataset', 'cifar', 'The dataset used for learning (cifar|mnist.')\nflags.DEFINE_float(\n    'optimisation_cost_weight', 3., 'weight for latent optimisation cost.')\nflags.DEFINE_integer(\n    'num_z_iters', 3, 'The number of latent optimisation steps.'\n    'It falls back to vanilla GAN when num_z_iters is set to 0.')\nflags.DEFINE_float(\n    'z_step_size', 0.01, 'Step size for latent optimisation.')\nflags.DEFINE_string(\n    'z_project_method', 'norm', 'The method to project z.')\nflags.DEFINE_string(\n    'output_dir', '/tmp/cs_gan/gan', 'Location where to save output files.')\nflags.DEFINE_float('disc_lr', 2e-4, 'Discriminator Learning rate.')\nflags.DEFINE_float('gen_lr', 2e-4, 'Generator Learning rate.')\nflags.DEFINE_bool(\n    'run_real_data_metrics', False,\n    'Whether or not to run image metrics on real data.')\nflags.DEFINE_bool(\n    'run_sample_metrics', True,\n    'Whether or not to run image metrics on samples.')\n\n\nFLAGS = flags.FLAGS\n\n# Log info level (for Hooks).\ntf.logging.set_verbosity(tf.logging.INFO)\n\n\ndef main(argv):\n  del argv\n\n  utils.make_output_dir(FLAGS.output_dir)\n  data_processor = utils.DataProcessor()\n  images = utils.get_train_dataset(data_processor, FLAGS.dataset,\n                                   FLAGS.batch_size)\n\n  logging.info('Generator learning rate: %d', FLAGS.gen_lr)\n  logging.info('Discriminator learning rate: %d', FLAGS.disc_lr)\n\n  # Construct optimizers.\n  disc_optimizer = tf.train.AdamOptimizer(FLAGS.disc_lr, beta1=0.5, beta2=0.999)\n  gen_optimizer = tf.train.AdamOptimizer(FLAGS.gen_lr, beta1=0.5, beta2=0.999)\n\n  # Create the networks and models.\n  generator = utils.get_generator(FLAGS.dataset)\n  metric_net = utils.get_metric_net(FLAGS.dataset)\n  model = gan.GAN(metric_net, generator,\n                  FLAGS.num_z_iters, FLAGS.z_step_size,\n                  FLAGS.z_project_method, FLAGS.optimisation_cost_weight)\n  prior = utils.make_prior(FLAGS.num_latents)\n  generator_inputs = prior.sample(FLAGS.batch_size)\n\n  model_output = model.connect(images, generator_inputs)\n  optimization_components = model_output.optimization_components\n  debug_ops = model_output.debug_ops\n  samples = generator(generator_inputs, is_training=False)\n\n  global_step = tf.train.get_or_create_global_step()\n  # We pass the global step both to the disc and generator update ops.\n  # This means that the global step will not be the same as the number of\n  # iterations, but ensures that hooks which rely on global step work correctly.\n  disc_update_op = disc_optimizer.minimize(\n      optimization_components['disc'].loss,\n      var_list=optimization_components['disc'].vars,\n      global_step=global_step)\n\n  gen_update_op = gen_optimizer.minimize(\n      optimization_components['gen'].loss,\n      var_list=optimization_components['gen'].vars,\n      global_step=global_step)\n\n  # Get data needed to compute FID. We also compute metrics on\n  # real data as a sanity check and as a reference point.\n  eval_real_data = utils.get_real_data_for_eval(FLAGS.num_eval_samples,\n                                                FLAGS.dataset,\n                                                split='train')\n\n  def sample_fn(x):\n    return utils.optimise_and_sample(x, module=model,\n                                     data=None, is_training=False)[0]\n\n  if FLAGS.run_sample_metrics:\n    sample_metrics = image_metrics.get_image_metrics_for_samples(\n        eval_real_data, sample_fn,\n        prior, data_processor,\n        num_eval_samples=FLAGS.num_eval_samples)\n  else:\n    sample_metrics = {}\n\n  if FLAGS.run_real_data_metrics:\n    data_metrics = image_metrics.get_image_metrics(\n        eval_real_data, eval_real_data)\n  else:\n    data_metrics = {}\n\n  sample_exporter = file_utils.FileExporter(\n      os.path.join(FLAGS.output_dir, 'samples'))\n\n  # Hooks.\n  debug_ops['it'] = global_step\n  # Abort training on Nans.\n  nan_disc_hook = tf.train.NanTensorHook(optimization_components['disc'].loss)\n  nan_gen_hook = tf.train.NanTensorHook(optimization_components['gen'].loss)\n  # Step counter.\n  step_conter_hook = tf.train.StepCounterHook()\n\n  checkpoint_saver_hook = tf.train.CheckpointSaverHook(\n      checkpoint_dir=utils.get_ckpt_dir(FLAGS.output_dir), save_secs=10 * 60)\n\n  loss_summary_saver_hook = tf.train.SummarySaverHook(\n      save_steps=FLAGS.summary_every_step,\n      output_dir=os.path.join(FLAGS.output_dir, 'summaries'),\n      summary_op=utils.get_summaries(debug_ops))\n\n  metrics_summary_saver_hook = tf.train.SummarySaverHook(\n      save_steps=FLAGS.image_metrics_every_step,\n      output_dir=os.path.join(FLAGS.output_dir, 'summaries'),\n      summary_op=utils.get_summaries(sample_metrics))\n\n  hooks = [checkpoint_saver_hook, metrics_summary_saver_hook,\n           nan_disc_hook, nan_gen_hook, step_conter_hook,\n           loss_summary_saver_hook]\n\n  # Start training.\n  with tf.train.MonitoredSession(hooks=hooks) as sess:\n    logging.info('starting training')\n\n    for key, value in sess.run(data_metrics).items():\n      logging.info('%s: %d', key, value)\n\n    for i in range(FLAGS.num_training_iterations):\n      sess.run(disc_update_op)\n      sess.run(gen_update_op)\n\n      if i % FLAGS.export_every == 0:\n        samples_np, data_np = sess.run([samples, images])\n        # Create an object which gets data and does the processing.\n        data_np = data_processor.postprocess(data_np)\n        samples_np = data_processor.postprocess(samples_np)\n        sample_exporter.save(samples_np, 'samples')\n        sample_exporter.save(data_np, 'data')\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "cs_gan/main_cs.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Training script.\"\"\"\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport os\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\n\nimport tensorflow.compat.v1 as tf\nimport tensorflow_probability as tfp\n\nfrom cs_gan import cs\nfrom cs_gan import file_utils\nfrom cs_gan import utils\n\ntfd = tfp.distributions\n\nflags.DEFINE_string(\n    'mode', 'recons', 'Model mode.')\nflags.DEFINE_integer(\n    'num_training_iterations', 10000000,\n    'Number of training iterations.')\nflags.DEFINE_integer(\n    'batch_size', 64, 'Training batch size.')\nflags.DEFINE_integer(\n    'num_measurements', 25, 'The number of measurements')\nflags.DEFINE_integer(\n    'num_latents', 100, 'The number of latents')\nflags.DEFINE_integer(\n    'num_z_iters', 3, 'The number of latent optimisation steps.')\nflags.DEFINE_float(\n    'z_step_size', 0.01, 'Step size for latent optimisation.')\nflags.DEFINE_string(\n    'z_project_method', 'norm', 'The method to project z.')\nflags.DEFINE_integer(\n    'summary_every_step', 1000,\n    'The interval at which to log debug ops.')\nflags.DEFINE_integer(\n    'export_every', 10,\n    'The interval at which to export samples.')\nflags.DEFINE_string(\n    'dataset', 'mnist', 'The dataset used for learning (cifar|mnist.')\nflags.DEFINE_float('learning_rate', 1e-4, 'Learning rate.')\nflags.DEFINE_string(\n    'output_dir', '/tmp/cs_gan/cs', 'Location where to save output files.')\n\n\nFLAGS = flags.FLAGS\n\n# Log info level (for Hooks).\ntf.logging.set_verbosity(tf.logging.INFO)\n\n\ndef main(argv):\n  del argv\n\n  utils.make_output_dir(FLAGS.output_dir)\n  data_processor = utils.DataProcessor()\n  images = utils.get_train_dataset(data_processor, FLAGS.dataset,\n                                   FLAGS.batch_size)\n\n  logging.info('Learning rate: %d', FLAGS.learning_rate)\n\n  # Construct optimizers.\n  optimizer = tf.train.AdamOptimizer(FLAGS.learning_rate)\n\n  # Create the networks and models.\n  generator = utils.get_generator(FLAGS.dataset)\n  metric_net = utils.get_metric_net(FLAGS.dataset, FLAGS.num_measurements)\n  model = cs.CS(metric_net, generator,\n                FLAGS.num_z_iters, FLAGS.z_step_size, FLAGS.z_project_method)\n  prior = utils.make_prior(FLAGS.num_latents)\n  generator_inputs = prior.sample(FLAGS.batch_size)\n\n  model_output = model.connect(images, generator_inputs)\n  optimization_components = model_output.optimization_components\n  debug_ops = model_output.debug_ops\n  reconstructions, _ = utils.optimise_and_sample(\n      generator_inputs, model, images, is_training=False)\n\n  global_step = tf.train.get_or_create_global_step()\n  update_op = optimizer.minimize(\n      optimization_components.loss,\n      var_list=optimization_components.vars,\n      global_step=global_step)\n\n  sample_exporter = file_utils.FileExporter(\n      os.path.join(FLAGS.output_dir, 'reconstructions'))\n\n  # Hooks.\n  debug_ops['it'] = global_step\n  # Abort training on Nans.\n  nan_hook = tf.train.NanTensorHook(optimization_components.loss)\n  # Step counter.\n  step_conter_hook = tf.train.StepCounterHook()\n\n  checkpoint_saver_hook = tf.train.CheckpointSaverHook(\n      checkpoint_dir=utils.get_ckpt_dir(FLAGS.output_dir), save_secs=10 * 60)\n\n  loss_summary_saver_hook = tf.train.SummarySaverHook(\n      save_steps=FLAGS.summary_every_step,\n      output_dir=os.path.join(FLAGS.output_dir, 'summaries'),\n      summary_op=utils.get_summaries(debug_ops))\n\n  hooks = [checkpoint_saver_hook, nan_hook, step_conter_hook,\n           loss_summary_saver_hook]\n\n  # Start training.\n  with tf.train.MonitoredSession(hooks=hooks) as sess:\n    logging.info('starting training')\n\n    for i in range(FLAGS.num_training_iterations):\n      sess.run(update_op)\n\n      if i % FLAGS.export_every == 0:\n        reconstructions_np, data_np = sess.run([reconstructions, images])\n        # Create an object which gets data and does the processing.\n        data_np = data_processor.postprocess(data_np)\n        reconstructions_np = data_processor.postprocess(reconstructions_np)\n        sample_exporter.save(reconstructions_np, 'reconstructions')\n        sample_exporter.save(data_np, 'data')\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "cs_gan/main_ode.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Training script.\"\"\"\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport os\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport tensorflow.compat.v1 as tf\n\nfrom cs_gan import file_utils\nfrom cs_gan import gan\nfrom cs_gan import image_metrics\nfrom cs_gan import utils\n\nflags.DEFINE_integer(\n    'num_training_iterations', 1200000,\n    'Number of training iterations.')\nflags.DEFINE_string(\n    'ode_mode', 'rk4', 'Integration method.')\nflags.DEFINE_integer(\n    'batch_size', 64, 'Training batch size.')\nflags.DEFINE_float(\n    'grad_reg_weight', 0.02, 'Step size for latent optimisation.')\nflags.DEFINE_string(\n    'opt_name', 'gd', 'Name of the optimiser (gd|adam).')\nflags.DEFINE_bool(\n    'schedule_lr', True, 'The method to project z.')\nflags.DEFINE_bool(\n    'reg_first_grad_only', True, 'Whether only to regularise the first grad.')\nflags.DEFINE_integer(\n    'num_latents', 128, 'The number of latents')\nflags.DEFINE_integer(\n    'summary_every_step', 1000,\n    'The interval at which to log debug ops.')\nflags.DEFINE_integer(\n    'image_metrics_every_step', 1000,\n    'The interval at which to log (expensive) image metrics.')\nflags.DEFINE_integer(\n    'export_every', 10,\n    'The interval at which to export samples.')\n# Use 50k to reproduce scores from the paper. Default to 10k here to avoid the\n# runtime error caused by too large graph with 50k samples on some machines.\nflags.DEFINE_integer(\n    'num_eval_samples', 10000,\n    'The number of samples used to evaluate FID/IS.')\nflags.DEFINE_string(\n    'dataset', 'cifar', 'The dataset used for learning (cifar|mnist).')\nflags.DEFINE_string(\n    'output_dir', '/tmp/ode_gan/gan', 'Location where to save output files.')\nflags.DEFINE_float('disc_lr', 4e-2, 'Discriminator Learning rate.')\nflags.DEFINE_float('gen_lr', 4e-2, 'Generator Learning rate.')\nflags.DEFINE_bool(\n    'run_real_data_metrics', False,\n    'Whether or not to run image metrics on real data.')\nflags.DEFINE_bool(\n    'run_sample_metrics', True,\n    'Whether or not to run image metrics on samples.')\n\n\nFLAGS = flags.FLAGS\n\n# Log info level (for Hooks).\ntf.logging.set_verbosity(tf.logging.INFO)\n\n\ndef _copy_vars(v_list):\n  \"\"\"Copy variables in v_list.\"\"\"\n  t_list = []\n  for v in v_list:\n    t_list.append(tf.identity(v))\n  return t_list\n\n\ndef _restore_vars(v_list, t_list):\n  \"\"\"Restore variables in v_list from t_list.\"\"\"\n  ops = []\n  for v, t in zip(v_list, t_list):\n    ops.append(v.assign(t))\n  return ops\n\n\ndef _scale_vars(s, v_list):\n  \"\"\"Scale all variables in v_list by s.\"\"\"\n  return [s * v for v in v_list]\n\n\ndef _acc_grads(g_sum, g_w, g):\n  \"\"\"Accumulate gradients in g, weighted by g_w.\"\"\"\n  return [g_sum_i + g_w * g_i for g_sum_i, g_i in zip(g_sum, g)]\n\n\ndef _compute_reg_grads(gen_grads, disc_vars):\n  \"\"\"Compute gradients norm (this is an upper-bpund of the full-batch norm).\"\"\"\n  gen_norm = tf.accumulate_n([tf.reduce_sum(u * u) for u in gen_grads])\n  disc_reg_grads = tf.gradients(gen_norm, disc_vars)\n  return disc_reg_grads\n\n\ndef run_model(prior, images, model, disc_reg_weight):\n  \"\"\"Run the model with new data and samples.\n\n  Args:\n    prior: the noise source as the generator input.\n    images: images sampled from dataset.\n    model: a GAN model defined in gan.py.\n    disc_reg_weight: regularisation weight for discrmininator gradients.\n\n  Returns:\n    debug_ops: statistics from the model, see gan.py for more detials.\n    disc_grads: discriminator gradients.\n    gen_grads: generator gradients.\n  \"\"\"\n  generator_inputs = prior.sample(FLAGS.batch_size)\n  model_output = model.connect(images, generator_inputs)\n  optimization_components = model_output.optimization_components\n\n  disc_grads = tf.gradients(\n      optimization_components['disc'].loss,\n      optimization_components['disc'].vars)\n\n  gen_grads = tf.gradients(\n      optimization_components['gen'].loss,\n      optimization_components['gen'].vars)\n\n  if disc_reg_weight > 0.0:\n    reg_grads = _compute_reg_grads(gen_grads,\n                                   optimization_components['disc'].vars)\n    disc_grads = _acc_grads(disc_grads, disc_reg_weight, reg_grads)\n\n  debug_ops = model_output.debug_ops\n\n  return debug_ops, disc_grads, gen_grads\n\n\ndef update_model(model, disc_grads, gen_grads, disc_opt, gen_opt,\n                 global_step, update_scale):\n  \"\"\"Update model with gradients.\"\"\"\n\n  disc_vars, gen_vars = model.get_variables()\n\n  with tf.control_dependencies(gen_grads + disc_grads):\n    disc_update_op = disc_opt.apply_gradients(\n        zip(_scale_vars(update_scale, disc_grads),\n            disc_vars))\n\n    gen_update_op = gen_opt.apply_gradients(\n        zip(_scale_vars(update_scale, gen_grads),\n            gen_vars),\n        global_step=global_step)\n\n    update_op = tf.group([disc_update_op, gen_update_op])\n\n  return update_op\n\n\ndef main(argv):\n  del argv\n\n  utils.make_output_dir(FLAGS.output_dir)\n  data_processor = utils.DataProcessor()\n  # Compute the batch-size multiplier\n  if FLAGS.ode_mode == 'rk2':\n    batch_mul = 2\n  elif FLAGS.ode_mode == 'rk4':\n    batch_mul = 4\n  else:\n    batch_mul = 1\n  images = utils.get_train_dataset(data_processor, FLAGS.dataset,\n                                   int(FLAGS.batch_size * batch_mul))\n  image_splits = tf.split(images, batch_mul)\n\n  logging.info('Generator learning rate: %d', FLAGS.gen_lr)\n  logging.info('Discriminator learning rate: %d', FLAGS.disc_lr)\n\n  global_step = tf.train.get_or_create_global_step()\n  # Construct optimizers.\n  if FLAGS.opt_name == 'adam':\n    disc_opt = tf.train.AdamOptimizer(FLAGS.disc_lr, beta1=0.5, beta2=0.999)\n    gen_opt = tf.train.AdamOptimizer(FLAGS.gen_lr, beta1=0.5, beta2=0.999)\n  elif FLAGS.opt_name == 'gd':\n    if FLAGS.schedule_lr:\n      gd_disc_lr = tf.train.piecewise_constant(\n          global_step,\n          values=[FLAGS.disc_lr / 4., FLAGS.disc_lr, FLAGS.disc_lr / 2.],\n          boundaries=[500, 400000])\n      gd_gen_lr = tf.train.piecewise_constant(\n          global_step,\n          values=[FLAGS.gen_lr / 4., FLAGS.gen_lr, FLAGS.gen_lr / 2.],\n          boundaries=[500, 400000])\n    else:\n      gd_disc_lr = FLAGS.disc_lr\n      gd_gen_lr = FLAGS.gen_lr\n    disc_opt = tf.train.GradientDescentOptimizer(gd_disc_lr)\n    gen_opt = tf.train.GradientDescentOptimizer(gd_gen_lr)\n  else:\n    raise ValueError('Unknown ODE mode!')\n\n  # Create the networks and models.\n  generator = utils.get_generator(FLAGS.dataset)\n  metric_net = utils.get_metric_net(FLAGS.dataset, use_sn=False)\n  model = gan.GAN(metric_net, generator)\n  prior = utils.make_prior(FLAGS.num_latents)\n\n  # Setup ODE parameters.\n  if FLAGS.ode_mode == 'rk2':\n    ode_grad_weights = [0.5, 0.5]\n    step_scale = [1.0]\n  elif FLAGS.ode_mode == 'rk4':\n    ode_grad_weights = [1. / 6., 1. / 3., 1. / 3., 1. / 6.]\n    step_scale = [0.5, 0.5, 1.]\n  elif FLAGS.ode_mode == 'euler':\n    # Euler update\n    ode_grad_weights = [1.0]\n    step_scale = []\n  else:\n    raise ValueError('Unknown ODE mode!')\n\n  # Extra steps for RK updates.\n  num_extra_steps = len(step_scale)\n\n  if FLAGS.reg_first_grad_only:\n    first_reg_weight = FLAGS.grad_reg_weight / ode_grad_weights[0]\n    other_reg_weight = 0.0\n  else:\n    first_reg_weight = FLAGS.grad_reg_weight\n    other_reg_weight = FLAGS.grad_reg_weight\n\n  debug_ops, disc_grads, gen_grads = run_model(prior, image_splits[0],\n                                               model, first_reg_weight)\n\n  disc_vars, gen_vars = model.get_variables()\n\n  final_disc_grads = _scale_vars(ode_grad_weights[0], disc_grads)\n  final_gen_grads = _scale_vars(ode_grad_weights[0], gen_grads)\n\n  restore_ops = []\n  # Preparing for further RK steps.\n  if num_extra_steps > 0:\n    # copy the variables before they are changed by update_op\n    saved_disc_vars = _copy_vars(disc_vars)\n    saved_gen_vars = _copy_vars(gen_vars)\n\n    # Enter RK loop.\n    with tf.control_dependencies(saved_disc_vars + saved_gen_vars):\n      step_deps = []\n      for i_step in range(num_extra_steps):\n        with tf.control_dependencies(step_deps):\n        # Compute gradient steps for intermediate updates.\n          update_op = update_model(\n              model, disc_grads, gen_grads, disc_opt, gen_opt,\n              None, step_scale[i_step])\n          with tf.control_dependencies([update_op]):\n            _, disc_grads, gen_grads = run_model(\n                prior, image_splits[i_step + 1], model, other_reg_weight)\n\n            # Accumlate gradients for final update.\n            final_disc_grads = _acc_grads(final_disc_grads,\n                                          ode_grad_weights[i_step + 1],\n                                          disc_grads)\n            final_gen_grads = _acc_grads(final_gen_grads,\n                                         ode_grad_weights[i_step + 1],\n                                         gen_grads)\n\n            # Make new restore_op for each step.\n            restore_ops = []\n            restore_ops += _restore_vars(disc_vars, saved_disc_vars)\n            restore_ops += _restore_vars(gen_vars, saved_gen_vars)\n\n            step_deps = restore_ops\n\n  with tf.control_dependencies(restore_ops):\n    update_op = update_model(\n        model, final_disc_grads, final_gen_grads, disc_opt, gen_opt,\n        global_step, 1.0)\n\n  samples = generator(prior.sample(FLAGS.batch_size), is_training=False)\n\n  # Get data needed to compute FID. We also compute metrics on\n  # real data as a sanity check and as a reference point.\n  eval_real_data = utils.get_real_data_for_eval(FLAGS.num_eval_samples,\n                                                FLAGS.dataset,\n                                                split='train')\n\n  def sample_fn(x):\n    return utils.optimise_and_sample(x, module=model,\n                                     data=None, is_training=False)[0]\n\n  if FLAGS.run_sample_metrics:\n    sample_metrics = image_metrics.get_image_metrics_for_samples(\n        eval_real_data, sample_fn,\n        prior, data_processor,\n        num_eval_samples=FLAGS.num_eval_samples)\n  else:\n    sample_metrics = {}\n\n  if FLAGS.run_real_data_metrics:\n    data_metrics = image_metrics.get_image_metrics(\n        eval_real_data, eval_real_data)\n  else:\n    data_metrics = {}\n\n  sample_exporter = file_utils.FileExporter(\n      os.path.join(FLAGS.output_dir, 'samples'))\n\n  # Hooks.\n  debug_ops['it'] = global_step\n  # Abort training on Nans.\n  nan_disc_hook = tf.train.NanTensorHook(debug_ops['disc_loss'])\n  nan_gen_hook = tf.train.NanTensorHook(debug_ops['gen_loss'])\n  # Step counter.\n  step_conter_hook = tf.train.StepCounterHook()\n\n  checkpoint_saver_hook = tf.train.CheckpointSaverHook(\n      checkpoint_dir=utils.get_ckpt_dir(FLAGS.output_dir), save_secs=10 * 60)\n\n  loss_summary_saver_hook = tf.train.SummarySaverHook(\n      save_steps=FLAGS.summary_every_step,\n      output_dir=os.path.join(FLAGS.output_dir, 'summaries'),\n      summary_op=utils.get_summaries(debug_ops))\n\n  metrics_summary_saver_hook = tf.train.SummarySaverHook(\n      save_steps=FLAGS.image_metrics_every_step,\n      output_dir=os.path.join(FLAGS.output_dir, 'summaries'),\n      summary_op=utils.get_summaries(sample_metrics))\n\n  hooks = [checkpoint_saver_hook, metrics_summary_saver_hook,\n           nan_disc_hook, nan_gen_hook, step_conter_hook,\n           loss_summary_saver_hook]\n\n  # Start training.\n  with tf.train.MonitoredSession(hooks=hooks) as sess:\n    logging.info('starting training')\n\n    for key, value in sess.run(data_metrics).items():\n      logging.info('%s: %d', key, value)\n\n    for i in range(FLAGS.num_training_iterations):\n      sess.run(update_op)\n\n      if i % FLAGS.export_every == 0:\n        samples_np, data_np = sess.run([samples, image_splits[0]])\n        # Create an object which gets data and does the processing.\n        data_np = data_processor.postprocess(data_np)\n        samples_np = data_processor.postprocess(samples_np)\n        sample_exporter.save(samples_np, 'samples')\n        sample_exporter.save(data_np, 'data')\n\n\nif __name__ == '__main__':\n  tf.enable_resource_variables()\n  app.run(main)\n"
  },
  {
    "path": "cs_gan/nets.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Network utilities.\"\"\"\n\nimport functools\nimport re\nimport numpy as np\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\nimport tensorflow_gan as tfgan\n\n\ndef _sn_custom_getter():\n  def name_filter(name):\n    match = re.match(r'.*w(_.*)?$', name)\n    return match is not None\n\n  return tfgan.features.spectral_normalization_custom_getter(\n      name_filter=name_filter)\n\n\nclass ConvGenNet(snt.AbstractModule):\n  \"\"\"As in the SN paper.\"\"\"\n\n  def __init__(self, name='conv_gen'):\n    super(ConvGenNet, self).__init__(name=name)\n\n  def _build(self, inputs, is_training):\n    batch_size = inputs.get_shape().as_list()[0]\n    first_shape = [4, 4, 512]\n    norm_ctor = snt.BatchNormV2\n    norm_ctor_config = {'scale': True}\n    up_tensor = snt.Linear(np.prod(first_shape))(inputs)\n    first_tensor = tf.reshape(up_tensor, shape=[batch_size] + first_shape)\n\n    net = snt.nets.ConvNet2DTranspose(\n        output_channels=[256, 128, 64, 3],\n        output_shapes=[(8, 8), (16, 16), (32, 32), (32, 32)],\n        kernel_shapes=[(4, 4), (4, 4), (4, 4), (3, 3)],\n        strides=[2, 2, 2, 1],\n        normalization_ctor=norm_ctor,\n        normalization_kwargs=norm_ctor_config,\n        normalize_final=False,\n        paddings=[snt.SAME], activate_final=False, activation=tf.nn.relu)\n    output = net(first_tensor, is_training=is_training)\n    return tf.nn.tanh(output)\n\n\nclass ConvMetricNet(snt.AbstractModule):\n  \"\"\"Convolutional discriminator (metric) architecture.\"\"\"\n\n  def __init__(self, num_outputs=2, use_sn=True, name='sn_metric'):\n    super(ConvMetricNet, self).__init__(name=name)\n    self._num_outputs = num_outputs\n    self._use_sn = use_sn\n\n  def _build(self, inputs):\n\n    def build_net():\n      net = snt.nets.ConvNet2D(\n          output_channels=[64, 64, 128, 128, 256, 256, 512],\n          kernel_shapes=[\n              (3, 3), (4, 4), (3, 3), (4, 4), (3, 3), (4, 4), (3, 3)],\n          strides=[1, 2, 1, 2, 1, 2, 1],\n          paddings=[snt.SAME], activate_final=True,\n          activation=functools.partial(tf.nn.leaky_relu, alpha=0.1))\n      linear = snt.Linear(self._num_outputs)\n      output = linear(snt.BatchFlatten()(net(inputs)))\n      return output\n    if self._use_sn:\n      with tf.variable_scope('', custom_getter=_sn_custom_getter()):\n        output = build_net()\n    else:\n      output = build_net()\n\n    return output\n\n\nclass MLPGeneratorNet(snt.AbstractModule):\n  \"\"\"MNIST generator net.\"\"\"\n\n  def __init__(self, name='mlp_generator'):\n    super(MLPGeneratorNet, self).__init__(name=name)\n\n  def _build(self, inputs, is_training=True):\n    del is_training\n    net = snt.nets.MLP([500, 500, 784], activation=tf.nn.leaky_relu)\n    out = net(inputs)\n    out = tf.nn.tanh(out)\n    return snt.BatchReshape([28, 28, 1])(out)\n\n\nclass MLPMetricNet(snt.AbstractModule):\n  \"\"\"Same as in Grover and Ermon, ICLR workshop 2017.\"\"\"\n\n  def __init__(self, num_outputs=2, name='mlp_metric'):\n    super(MLPMetricNet, self).__init__(name=name)\n    self._layer_size = [500, 500, num_outputs]\n\n  def _build(self, inputs):\n    net = snt.nets.MLP(self._layer_size,\n                       activation=tf.nn.leaky_relu)\n    output = net(snt.BatchFlatten()(inputs))\n    return output\n"
  },
  {
    "path": "cs_gan/requirements.txt",
    "content": "absl-py==0.7.1\ndm-sonnet==1.34\nnumpy==1.16.4\nPillow\ntensorflow==1.15rc2\ntensorflow-probability==0.7.0\ntensorflow-gan==2.0.0\n"
  },
  {
    "path": "cs_gan/run.sh",
    "content": "#!/bin/sh\n# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# Install python3.5\nwhich python3.5\nif  [ $? -eq 1 ]; then\n  echo 'Installing python3.5'\n  (cd /usr/src/\n   sudo wget https://www.python.org/ftp/python/3.5.6/Python-3.5.6.tgz\n   tar -xvzf Python-3.5.6.tgz\n   sudo tar -xvzf Python-3.5.6.tgz\n   cd Python-3.5.6\n   ./configure --enable-loadable-sqlite-extensions --enable-optimizations\n   sudo make altinstall)\nfi\n# Fail on any error.\nset -e\npython3.5 -m venv cs_gan_venv\necho 'Created venv'\nsource cs_gan_venv/bin/activate\necho 'Installing pip'\ncurl https://bootstrap.pypa.io/get-pip.py -o get-pip.py\npython3.5 get-pip.py pip==20.2.3\n\necho 'Getting requirements.'\npip install -r cs_gan/requirements.txt\n\n\necho 'Starting training...'\npython3.5 -m cs_gan.main_cs\n# Gan code.\npython3.5 -m cs_gan.main\n"
  },
  {
    "path": "cs_gan/run_ode.sh",
    "content": "#!/bin/sh\n# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# Install python3.5\nwhich python3.5\nif  [ $? -eq 1 ]; then\n  echo 'Installing python3.5'\n  (cd /usr/src/\n   sudo wget https://www.python.org/ftp/python/3.5.6/Python-3.5.6.tgz\n   tar -xvzf Python-3.5.6.tgz\n   sudo tar -xvzf Python-3.5.6.tgz\n   cd Python-3.5.6\n   ./configure --enable-loadable-sqlite-extensions --enable-optimizations\n   sudo make altinstall)\nfi\n# Fail on any error.\nset -e\npython3.5 -m venv cs_gan_venv\necho 'Created venv'\nsource cs_gan_venv/bin/activate\necho 'Installing pip'\ncurl https://bootstrap.pypa.io/get-pip.py -o get-pip.py\npython3.5 get-pip.py pip==20.2.3\n\necho 'Getting requirements.'\npip install -r cs_gan/requirements.txt\n\n\necho 'Starting training...'\npython3.5 -m cs_gan.main_ode\n"
  },
  {
    "path": "cs_gan/tests/gan_test.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\nfrom cs_gan import gan\n\n\nclass DummyGenerator(snt.AbstractModule):\n\n  def __init__(self):\n    super(DummyGenerator, self).__init__(name='dummy_generator')\n\n  def _build(self, inputs, is_training):\n    return snt.Linear(10)(inputs)\n\n\nclass GanTest(tf.test.TestCase):\n\n  def testConnect(self):\n    discriminator = snt.Linear(2)\n    generator = DummyGenerator()\n    model = gan.GAN(\n        discriminator, generator,\n        num_z_iters=0, z_step_size=0.1,\n        z_project_method='none', optimisation_cost_weight=0.0)\n\n    generator_inputs = tf.ones((16, 3), dtype=tf.float32)\n    data = tf.ones((16, 10))\n    opt_compoments, _ = model.connect(data, generator_inputs)\n\n    self.assertIn('disc', opt_compoments)\n    self.assertIn('gen', opt_compoments)\n\n    self.assertCountEqual(\n        opt_compoments['disc'].vars,\n        discriminator.get_variables())\n    self.assertCountEqual(\n        opt_compoments['gen'].vars,\n        generator.get_variables() + model._log_step_size_module.get_variables())\n\n\nif __name__ == '__main__':\n  tf.test.main()\n"
  },
  {
    "path": "cs_gan/utils.py",
    "content": "\n# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Tools for latent optimisation.\"\"\"\nimport collections\nimport os\n\nfrom absl import logging\nimport numpy as np\nimport tensorflow.compat.v1 as tf\nimport tensorflow_probability as tfp\n\nfrom cs_gan import nets\n\ntfd = tfp.distributions\n\n\nclass ModelOutputs(\n    collections.namedtuple('AdversarialModelOutputs',\n                           ['optimization_components', 'debug_ops'])):\n  \"\"\"All the information produced by the adversarial module.\n\n  Fields:\n\n    * `optimization_components`: A dictionary. Each entry in this dictionary\n      corresponds to a module to train using their own optimizer. The keys are\n      names of the components, and the values are `common.OptimizationComponent`\n      instances. The keys of this dict can be made keys of the configuration\n      used by the main train loop, to define the configuration of the\n      optimization details for each module.\n    * `debug_ops`: A dictionary, from string to a scalar `tf.Tensor`. Quantities\n      used for tracking training.\n  \"\"\"\n\n\nclass OptimizationComponent(\n    collections.namedtuple('OptimizationComponent', ['loss', 'vars'])):\n  \"\"\"Information needed by the optimizer to train modules.\n\n  Usage:\n      `optimizer.minimize(\n          opt_compoment.loss, var_list=opt_component.vars)`\n\n  Fields:\n\n    * `loss`: A `tf.Tensor` the loss of the module.\n    * `vars`: A list of variables, the ones which will be used to minimize the\n      loss.\n  \"\"\"\n\n\ndef cross_entropy_loss(logits, expected):\n  \"\"\"The cross entropy classification loss between logits and expected values.\n\n  The loss proposed by the original GAN paper: https://arxiv.org/abs/1406.2661.\n\n  Args:\n    logits: a `tf.Tensor`, the model produced logits.\n    expected: a `tf.Tensor`, the expected output.\n\n  Returns:\n    A scalar `tf.Tensor`, the average loss obtained on the given inputs.\n\n  Raises:\n    ValueError: if the logits do not have shape [batch_size, 2].\n  \"\"\"\n\n  num_logits = logits.get_shape()[1]\n  if num_logits != 2:\n    raise ValueError(('Invalid number of logits for cross_entropy_loss! '\n                      'cross_entropy_loss supports only 2 output logits!'))\n  return tf.reduce_mean(\n      tf.nn.sparse_softmax_cross_entropy_with_logits(\n          logits=logits, labels=expected))\n\n\ndef optimise_and_sample(init_z, module, data, is_training):\n  \"\"\"Optimising generator latent variables and sample.\"\"\"\n\n  if module.num_z_iters is None or module.num_z_iters == 0:\n    z_final = init_z\n  else:\n    init_loop_vars = (0, _project_z(init_z, module.z_project_method))\n    loop_cond = lambda i, _: i < module.num_z_iters\n    def loop_body(i, z):\n      loop_samples = module.generator(z, is_training)\n      gen_loss = module.gen_loss_fn(data, loop_samples)\n      z_grad = tf.gradients(gen_loss, z)[0]\n      z -= module.z_step_size * z_grad\n      z = _project_z(z, module.z_project_method)\n      return i + 1, z\n\n    # Use the following static loop for debugging\n    # z = init_z\n    # for _ in xrange(num_z_iters):\n    #   _, z = loop_body(0, z)\n    # z_final = z\n\n    _, z_final = tf.while_loop(loop_cond,\n                               loop_body,\n                               init_loop_vars)\n\n  return module.generator(z_final, is_training), z_final\n\n\ndef get_optimisation_cost(initial_z, optimised_z):\n  optimisation_cost = tf.reduce_mean(\n      tf.reduce_sum((optimised_z - initial_z)**2, -1))\n  return optimisation_cost\n\n\ndef _project_z(z, project_method='clip'):\n  \"\"\"To be used for projected gradient descent over z.\"\"\"\n  if project_method == 'norm':\n    z_p = tf.nn.l2_normalize(z, axis=-1)\n  elif project_method == 'clip':\n    z_p = tf.clip_by_value(z, -1, 1)\n  else:\n    raise ValueError('Unknown project_method: {}'.format(project_method))\n  return z_p\n\n\nclass DataProcessor(object):\n\n  def preprocess(self, x):\n    return x * 2 - 1\n\n  def postprocess(self, x):\n    return (x + 1) / 2.\n\n\ndef _get_np_data(data_processor, dataset, split='train'):\n  \"\"\"Get the dataset as numpy arrays.\"\"\"\n  index = 0 if split == 'train' else 1\n  if dataset == 'mnist':\n    # Construct the dataset.\n    x, _ = tf.keras.datasets.mnist.load_data()[index]\n    # Note: tf dataset is binary so we convert it to float.\n    x = x.astype(np.float32)\n    x = x / 255.\n    x = x.reshape((-1, 28, 28, 1))\n\n  if dataset == 'cifar':\n    x, _ = tf.keras.datasets.cifar10.load_data()[index]\n    x = x.astype(np.float32)\n    x = x / 255.\n\n  if data_processor:\n    # Normalize data if a processor is given.\n    x = data_processor.preprocess(x)\n  return x\n\n\ndef make_output_dir(output_dir):\n  logging.info('Creating output dir %s', output_dir)\n  if not tf.gfile.IsDirectory(output_dir):\n    tf.gfile.MakeDirs(output_dir)\n\n\ndef get_ckpt_dir(output_dir):\n  ckpt_dir = os.path.join(output_dir, 'ckpt')\n  if not tf.gfile.IsDirectory(ckpt_dir):\n    tf.gfile.MakeDirs(ckpt_dir)\n  return ckpt_dir\n\n\ndef get_real_data_for_eval(num_eval_samples, dataset, split='valid'):\n  data = _get_np_data(data_processor=None, dataset=dataset, split=split)\n  data = data[:num_eval_samples]\n  return tf.constant(data)\n\n\ndef get_summaries(ops):\n  summaries = []\n  for name, op in ops.items():\n    # Ensure to log the value ops before writing them in the summary.\n    # We do this instead of a hook to ensure IS/FID are never computed twice.\n    print_op = tf.print(name, [op], output_stream=tf.logging.info)\n    with tf.control_dependencies([print_op]):\n      summary = tf.summary.scalar(name, op)\n      summaries.append(summary)\n  return summaries\n\n\ndef get_train_dataset(data_processor, dataset, batch_size):\n  \"\"\"Creates the training data tensors.\"\"\"\n  x_train = _get_np_data(data_processor, dataset, split='train')\n  # Create the TF dataset.\n  dataset = tf.data.Dataset.from_tensor_slices(x_train)\n\n  # Shuffle and repeat the dataset for training.\n  # This is required because we want to do multiple passes through the entire\n  # dataset when training.\n  dataset = dataset.shuffle(100000).repeat()\n\n  # Batch the data and return the data batch.\n  one_shot_iterator = dataset.batch(batch_size).make_one_shot_iterator()\n  data_batch = one_shot_iterator.get_next()\n  return data_batch\n\n\ndef get_generator(dataset):\n  if dataset == 'mnist':\n    return nets.MLPGeneratorNet()\n  if dataset == 'cifar':\n    return nets.ConvGenNet()\n\n\ndef get_metric_net(dataset, num_outputs=2, use_sn=True):\n  if dataset == 'mnist':\n    return nets.MLPMetricNet(num_outputs)\n  if dataset == 'cifar':\n    return nets.ConvMetricNet(num_outputs, use_sn)\n\n\ndef make_prior(num_latents):\n  # Zero mean, unit variance prior.\n  prior_mean = tf.zeros(shape=(num_latents), dtype=tf.float32)\n  prior_scale = tf.ones(shape=(num_latents), dtype=tf.float32)\n\n  return tfd.Normal(loc=prior_mean, scale=prior_scale)\n\n"
  },
  {
    "path": "curl/README.md",
    "content": "# Continual Unsupervised Representation Learning (CURL)\n\nThis repository contains code to accompany the NeurIPS 2019 submission on\nContinual Unsupervised Representation Learning (CURL).\n\nThe experiments in the paper can be reproduced by running one of the three\ndifferent training scripts:\n\n\n`train_sup.py`: to run the supervised continual learning benchmark\n\n`train_unsup.py`: to run the unsupervised i.i.d learning benchmark\n\n`train_main.py`: to run all other experiments in the paper (with details in the\nfile on what to change)\n\nIn each of these cases, the cluster accuracy / purity and k-NN error are logged\nto the terminal, and other quantities can be accessed from training.py\n(e.g. the confusion matrix can be found in `results['test_confusion']`).\n\nWe recommend running these scripts in a Python\n[virtual environment](https://docs.python.org/3/tutorial/venv.html):\n\n(Assuming python3-dev is installed in your system)\n\n```console\npython3 -m venv .curl_venv\nsource .curl_venv/bin/activate\npip install wheel\npip install -r requirements.txt\n\nPYTHONPATH=`pwd`/..:$PYTHONPATH python3 train_main.py --dataset='mnist'\n\nRun `deactivate` to exit the virtual environment.\n```\n"
  },
  {
    "path": "curl/layers.py",
    "content": "################################################################################\n# Copyright 2019 DeepMind Technologies Limited\n#\n#     Licensed under the Apache License, Version 2.0 (the \"License\");\n#     you may not use this file except in compliance with the License.\n#     You may obtain a copy of the License at\n#\n#         https://www.apache.org/licenses/LICENSE-2.0\n#\n#     Unless required by applicable law or agreed to in writing, software\n#     distributed under the License is distributed on an \"AS IS\" BASIS,\n#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n#     See the License for the specific language governing permissions and\n#     limitations under the License.\n################################################################################\n\"\"\"Custom layers for CURL.\"\"\"\n\nfrom absl import logging\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\ntfc = tf.compat.v1\n\n\nclass ResidualStack(snt.AbstractModule):\n  \"\"\"A stack of ResNet V2 blocks.\"\"\"\n\n  def __init__(self,\n               num_hiddens,\n               num_residual_layers,\n               num_residual_hiddens,\n               filter_size=3,\n               initializers=None,\n               data_format='NHWC',\n               activation=tf.nn.relu,\n               name='residual_stack'):\n    \"\"\"Instantiate a ResidualStack.\"\"\"\n    super(ResidualStack, self).__init__(name=name)\n    self._num_hiddens = num_hiddens\n    self._num_residual_layers = num_residual_layers\n    self._num_residual_hiddens = num_residual_hiddens\n    self._filter_size = filter_size\n    self._initializers = initializers\n    self._data_format = data_format\n    self._activation = activation\n\n  def _build(self, h):\n    for i in range(self._num_residual_layers):\n      h_i = self._activation(h)\n\n      h_i = snt.Conv2D(\n          output_channels=self._num_residual_hiddens,\n          kernel_shape=(self._filter_size, self._filter_size),\n          stride=(1, 1),\n          initializers=self._initializers,\n          data_format=self._data_format,\n          name='res_nxn_%d' % i)(\n              h_i)\n      h_i = self._activation(h_i)\n\n      h_i = snt.Conv2D(\n          output_channels=self._num_hiddens,\n          kernel_shape=(1, 1),\n          stride=(1, 1),\n          initializers=self._initializers,\n          data_format=self._data_format,\n          name='res_1x1_%d' % i)(\n              h_i)\n      h += h_i\n    return self._activation(h)\n\n\nclass SharedConvModule(snt.AbstractModule):\n  \"\"\"Convolutional decoder.\"\"\"\n\n  def __init__(self,\n               filters,\n               kernel_size,\n               activation,\n               strides,\n               name='shared_conv_encoder'):\n    super(SharedConvModule, self).__init__(name=name)\n\n    self._filters = filters\n    self._kernel_size = kernel_size\n    self._activation = activation\n    self.strides = strides\n    assert len(strides) == len(filters) - 1\n    self.conv_shapes = None\n\n  def _build(self, x, is_training=True):\n    with tf.control_dependencies([tfc.assert_rank(x, 4)]):\n\n      self.conv_shapes = [x.shape.as_list()]  # Needed by deconv module\n      conv = x\n    for i, (filter_i,\n            stride_i) in enumerate(zip(self._filters, self.strides), 1):\n      conv = tf.layers.Conv2D(\n          filters=filter_i,\n          kernel_size=self._kernel_size,\n          padding='same',\n          activation=self._activation,\n          strides=stride_i,\n          name='enc_conv_%d' % i)(\n              conv)\n      self.conv_shapes.append(conv.shape.as_list())\n    conv_flat = snt.BatchFlatten()(conv)\n\n    enc_mlp = snt.nets.MLP(\n        name='enc_mlp',\n        output_sizes=[self._filters[-1]],\n        activation=self._activation,\n        activate_final=True)\n    h = enc_mlp(conv_flat)\n\n    logging.info('Shared conv module layer shapes:')\n    logging.info('\\n'.join([str(el) for el in self.conv_shapes]))\n    logging.info(h.shape.as_list())\n\n    return h\n"
  },
  {
    "path": "curl/model.py",
    "content": "################################################################################\n# Copyright 2019 DeepMind Technologies Limited\n#\n#     Licensed under the Apache License, Version 2.0 (the \"License\");\n#     you may not use this file except in compliance with the License.\n#     You may obtain a copy of the License at\n#\n#         https://www.apache.org/licenses/LICENSE-2.0\n#\n#     Unless required by applicable law or agreed to in writing, software\n#     distributed under the License is distributed on an \"AS IS\" BASIS,\n#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n#     See the License for the specific language governing permissions and\n#     limitations under the License.\n################################################################################\n\"\"\"Implementation of Continual Unsupervised Representation Learning model.\"\"\"\n\nfrom absl import logging\nimport numpy as np\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\nimport tensorflow_probability as tfp\n\nfrom curl import layers\nfrom curl import utils\n\ntfc = tf.compat.v1\n\n# pylint: disable=g-long-lambda\n# pylint: disable=redefined-outer-name\n\n\nclass SharedEncoder(snt.AbstractModule):\n  \"\"\"The shared encoder module, mapping input x to hiddens.\"\"\"\n\n  def __init__(self, encoder_type, n_enc, enc_strides, name='shared_encoder'):\n    \"\"\"The shared encoder function, mapping input x to hiddens.\n\n    Args:\n      encoder_type: str, type of encoder, either 'conv' or 'multi'\n      n_enc: list, number of hidden units per layer in the encoder\n      enc_strides: list, stride in each layer (only for 'conv' encoder_type)\n      name: str, module name used for tf scope.\n    \"\"\"\n    super(SharedEncoder, self).__init__(name=name)\n    self._encoder_type = encoder_type\n\n    if encoder_type == 'conv':\n      self.shared_encoder = layers.SharedConvModule(\n          filters=n_enc,\n          strides=enc_strides,\n          kernel_size=3,\n          activation=tf.nn.relu)\n    elif encoder_type == 'multi':\n      self.shared_encoder = snt.nets.MLP(\n          name='mlp_shared_encoder',\n          output_sizes=n_enc,\n          activation=tf.nn.relu,\n          activate_final=True)\n    else:\n      raise ValueError('Unknown encoder_type {}'.format(encoder_type))\n\n  def _build(self, x, is_training):\n    if self._encoder_type == 'multi':\n      self.conv_shapes = None\n      x = snt.BatchFlatten()(x)\n      return self.shared_encoder(x)\n    else:\n      output = self.shared_encoder(x)\n      self.conv_shapes = self.shared_encoder.conv_shapes\n      return output\n\n\ndef cluster_encoder_fn(hiddens, n_y_active, n_y, is_training=True):\n  \"\"\"The cluster encoder function, modelling q(y | x).\n\n  Args:\n    hiddens: The shared encoder activations, 2D `Tensor` of size `[B, ...]`.\n    n_y_active: Tensor, the number of active components.\n    n_y: int, number of maximum components allowed (used for tensor size)\n    is_training: Boolean, whether to build the training graph or an evaluation\n      graph.\n\n  Returns:\n    The distribution `q(y | x)`.\n  \"\"\"\n  del is_training  # unused for now\n  with tf.control_dependencies([tfc.assert_rank(hiddens, 2)]):\n    lin = snt.Linear(n_y, name='mlp_cluster_encoder_final')\n    logits = lin(hiddens)\n\n  # Only use the first n_y_active components, and set the remaining to zero.\n  if n_y > 1:\n    probs = tf.nn.softmax(logits[:, :n_y_active])\n    logging.info('Cluster softmax active probs shape: %s', str(probs.shape))\n    paddings1 = tf.stack([tf.constant(0), tf.constant(0)], axis=0)\n    paddings2 = tf.stack([tf.constant(0), n_y - n_y_active], axis=0)\n    paddings = tf.stack([paddings1, paddings2], axis=1)\n    probs = tf.pad(probs, paddings) + 0.0 * logits + 1e-12\n  else:\n    probs = tf.ones_like(logits)\n  logging.info('Cluster softmax probs shape: %s', str(probs.shape))\n\n  return tfp.distributions.OneHotCategorical(probs=probs)\n\n\ndef latent_encoder_fn(hiddens, y, n_y, n_z, is_training=True):\n  \"\"\"The latent encoder function, modelling q(z | x, y).\n\n  Args:\n    hiddens: The shared encoder activations, 2D `Tensor` of size `[B, ...]`.\n    y: Categorical cluster variable, `Tensor` of size `[B, n_y]`.\n    n_y: int, number of dims of y.\n    n_z: int, number of dims of z.\n    is_training: Boolean, whether to build the training graph or an evaluation\n      graph.\n\n  Returns:\n    The Gaussian distribution `q(z | x, y)`.\n  \"\"\"\n  del is_training  # unused for now\n\n  with tf.control_dependencies([tfc.assert_rank(hiddens, 2)]):\n    # Logits for both mean and variance\n    n_logits = 2 * n_z\n\n    all_logits = []\n    for k in range(n_y):\n      lin = snt.Linear(n_logits, name='mlp_latent_encoder_' + str(k))\n      all_logits.append(lin(hiddens))\n\n  # Sum over cluster components.\n  all_logits = tf.stack(all_logits)  # [n_y, B, n_logits]\n  logits = tf.einsum('ij,jik->ik', y, all_logits)\n\n  # Compute distribution from logits.\n  return utils.generate_gaussian(\n      logits=logits, sigma_nonlin='softplus', sigma_param='var')\n\n\ndef data_decoder_fn(z,\n                    y,\n                    output_type,\n                    output_shape,\n                    decoder_type,\n                    n_dec,\n                    dec_up_strides,\n                    n_x,\n                    n_y,\n                    shared_encoder_conv_shapes=None,\n                    is_training=True,\n                    test_local_stats=True):\n  \"\"\"The data decoder function, modelling p(x | z).\n\n  Args:\n    z: Latent variables, `Tensor` of size `[B, n_z]`.\n    y: Categorical cluster variable, `Tensor` of size `[B, n_y]`.\n    output_type: str, output distribution ('bernoulli' or 'quantized_normal').\n    output_shape: list, shape of output (not including batch dimension).\n    decoder_type: str, 'single', 'multi', or 'deconv'.\n    n_dec: list, number of hidden units per layer in the decoder\n    dec_up_strides: list, stride in each layer (only for 'deconv' decoder_type).\n    n_x: int, number of dims of x.\n    n_y: int, number of dims of y.\n    shared_encoder_conv_shapes: the shapes of the activations of the\n      intermediate layers of the encoder,\n    is_training: Boolean, whether to build the training graph or an evaluation\n      graph.\n    test_local_stats: Boolean, whether to use the test batch statistics at test\n      time for batch norm (default) or the moving averages.\n\n  Returns:\n    The Bernoulli distribution `p(x | z)`.\n  \"\"\"\n\n  if output_type == 'bernoulli':\n    output_dist = lambda x: tfp.distributions.Bernoulli(logits=x)\n    n_out_factor = 1\n    out_shape = list(output_shape)\n  else:\n    raise NotImplementedError\n  if len(z.shape) != 2:\n    raise NotImplementedError('The data decoder function expects `z` to be '\n                              '2D, but its shape was %s instead.' %\n                              str(z.shape))\n  if len(y.shape) != 2:\n    raise NotImplementedError('The data decoder function expects `y` to be '\n                              '2D, but its shape was %s instead.' %\n                              str(y.shape))\n\n  # Upsample layer (deconvolutional, bilinear, ..).\n  if decoder_type == 'deconv':\n\n    # First, check that the encoder is convolutional too (needed for batchnorm)\n    if shared_encoder_conv_shapes is None:\n      raise ValueError('Shared encoder does not contain conv_shapes.')\n\n    num_output_channels = output_shape[-1]\n    conv_decoder = UpsampleModule(\n        filters=n_dec,\n        kernel_size=3,\n        activation=tf.nn.relu,\n        dec_up_strides=dec_up_strides,\n        enc_conv_shapes=shared_encoder_conv_shapes,\n        n_c=num_output_channels * n_out_factor,\n        method=decoder_type)\n    logits = conv_decoder(\n        z, is_training=is_training, test_local_stats=test_local_stats)\n    logits = tf.reshape(logits, [-1] + out_shape)  # n_out_factor in last dim\n\n  # Multiple MLP decoders, one for each component.\n  elif decoder_type == 'multi':\n    all_logits = []\n    for k in range(n_y):\n      mlp_decoding = snt.nets.MLP(\n          name='mlp_latent_decoder_' + str(k),\n          output_sizes=n_dec + [n_x * n_out_factor],\n          activation=tf.nn.relu,\n          activate_final=False)\n      logits = mlp_decoding(z)\n      all_logits.append(logits)\n\n    all_logits = tf.stack(all_logits)\n    logits = tf.einsum('ij,jik->ik', y, all_logits)\n    logits = tf.reshape(logits, [-1] + out_shape)  # Back to 4D\n\n  # Single (shared among components) MLP decoder.\n  elif decoder_type == 'single':\n    mlp_decoding = snt.nets.MLP(\n        name='mlp_latent_decoder',\n        output_sizes=n_dec + [n_x * n_out_factor],\n        activation=tf.nn.relu,\n        activate_final=False)\n    logits = mlp_decoding(z)\n    logits = tf.reshape(logits, [-1] + out_shape)  # Back to 4D\n  else:\n    raise ValueError('Unknown decoder_type {}'.format(decoder_type))\n\n  return output_dist(logits)\n\n\ndef latent_decoder_fn(y, n_z, is_training=True):\n  \"\"\"The latent decoder function, modelling p(z | y).\n\n  Args:\n    y: Categorical cluster variable, `Tensor` of size `[B, n_y]`.\n    n_z: int, number of dims of z.\n    is_training: Boolean, whether to build the training graph or an evaluation\n      graph.\n\n  Returns:\n    The Gaussian distribution `p(z | y)`.\n  \"\"\"\n  del is_training  # Unused for now.\n  if len(y.shape) != 2:\n    raise NotImplementedError('The latent decoder function expects `y` to be '\n                              '2D, but its shape was %s instead.' %\n                              str(y.shape))\n\n  lin_mu = snt.Linear(n_z, name='latent_prior_mu')\n  lin_sigma = snt.Linear(n_z, name='latent_prior_sigma')\n\n  mu = lin_mu(y)\n  sigma = lin_sigma(y)\n\n  logits = tf.concat([mu, sigma], axis=1)\n\n  return utils.generate_gaussian(\n      logits=logits, sigma_nonlin='softplus', sigma_param='var')\n\n\nclass Curl(object):\n  \"\"\"CURL model class.\"\"\"\n\n  def __init__(self,\n               prior,\n               latent_decoder,\n               data_decoder,\n               shared_encoder,\n               cluster_encoder,\n               latent_encoder,\n               n_y_active,\n               kly_over_batch=False,\n               is_training=True,\n               name='curl'):\n    self.scope_name = name\n    self._shared_encoder = shared_encoder\n    self._prior = prior\n    self._latent_decoder = latent_decoder\n    self._data_decoder = data_decoder\n    self._cluster_encoder = cluster_encoder\n    self._latent_encoder = latent_encoder\n    self._n_y_active = n_y_active\n    self._kly_over_batch = kly_over_batch\n    self._is_training = is_training\n    self._cache = {}\n\n  def sample(self, sample_shape=(), y=None, mean=False):\n    \"\"\"Draws a sample from the learnt distribution p(x).\n\n    Args:\n      sample_shape: `int` or 0D `Tensor` giving the number of samples to return.\n        If  empty tuple (default value), 1 sample will be returned.\n      y: Optional, the one hot label on which to condition the sample.\n      mean: Boolean, if True the expected value of the output distribution is\n        returned, otherwise samples from the output distribution.\n\n    Returns:\n      Sample tensor of shape `[B * N, ...]` where `B` is the batch size of\n      the prior, `N` is the number of samples requested, and `...` represents\n      the shape of the observations.\n\n    Raises:\n      ValueError: If both `sample_shape` and `n` are provided.\n      ValueError: If `sample_shape` has rank > 0 or if `sample_shape`\n      is an int that is < 1.\n    \"\"\"\n    with tf.name_scope('{}_sample'.format(self.scope_name)):\n      if y is None:\n        y = tf.to_float(self.compute_prior().sample(sample_shape))\n\n      if y.shape.ndims > 2:\n        y = snt.MergeDims(start=0, size=y.shape.ndims - 1, name='merge_y')(y)\n\n      z = self._latent_decoder(y, is_training=self._is_training)\n      if mean:\n        samples = self.predict(z.sample(), y).mean()\n      else:\n        samples = self.predict(z.sample(), y).sample()\n    return samples\n\n  def reconstruct(self, x, use_mode=True, use_mean=False):\n    \"\"\"Reconstructs the given observations.\n\n    Args:\n      x: Observed `Tensor`.\n      use_mode: Boolean, if true, take the argmax over q(y|x)\n      use_mean: Boolean, if true, use pixel-mean for reconstructions.\n\n    Returns:\n      The reconstructed samples x ~ p(x | y~q(y|x), z~q(z|x, y)).\n    \"\"\"\n\n    hiddens = self._shared_encoder(x, is_training=self._is_training)\n    qy = self.infer_cluster(hiddens)\n    y_sample = qy.mode() if use_mode else qy.sample()\n    y_sample = tf.to_float(y_sample)\n    qz = self.infer_latent(hiddens, y_sample)\n    p = self.predict(qz.sample(), y_sample)\n\n    if use_mean:\n      return p.mean()\n    else:\n      return p.sample()\n\n  def log_prob(self, x):\n    \"\"\"Redirects to log_prob_elbo with a warning.\"\"\"\n    logging.warn('log_prob is actually a lower bound')\n    return self.log_prob_elbo(x)\n\n  def log_prob_elbo(self, x):\n    \"\"\"Returns evidence lower bound.\"\"\"\n    log_p_x, kl_y, kl_z = self.log_prob_elbo_components(x)[:3]\n    return log_p_x - kl_y - kl_z\n\n  def log_prob_elbo_components(self, x, y=None, reduce_op=tf.reduce_sum):\n    \"\"\"Returns the components used in calculating the evidence lower bound.\n\n    Args:\n      x: Observed variables, `Tensor` of size `[B, I]` where `I` is the size of\n        a flattened input.\n      y: Optional labels, `Tensor` of size `[B, I]` where `I` is the size of a\n        flattened input.\n      reduce_op: The op to use for reducing across non-batch dimensions.\n        Typically either `tf.reduce_sum` or `tf.reduce_mean`.\n\n    Returns:\n      `log p(x|y,z)` of shape `[B]` where `B` is the batch size.\n      `KL[q(y|x) || p(y)]` of shape `[B]` where `B` is the batch size.\n      `KL[q(z|x,y) || p(z|y)]` of shape `[B]` where `B` is the batch size.\n    \"\"\"\n    cache_key = (x,)\n\n    # Checks if the output graph for this inputs has already been computed.\n    if cache_key in self._cache:\n      return self._cache[cache_key]\n\n    with tf.name_scope('{}_log_prob_elbo'.format(self.scope_name)):\n\n      hiddens = self._shared_encoder(x, is_training=self._is_training)\n      # 1) Compute KL[q(y|x) || p(y)] from x, and keep distribution q_y around\n      kl_y, q_y = self._kl_and_qy(hiddens)  # [B], distribution\n\n      # For the next two terms, we need to marginalise over all y.\n\n      # First, construct every possible y indexing (as a one hot) and repeat it\n      # for every element in the batch [n_y_active, B, n_y].\n      # Note that the onehot have dimension of all y, while only the codes\n      # corresponding to active components are instantiated\n      bs, n_y = q_y.probs.shape\n      all_y = tf.tile(\n          tf.expand_dims(tf.one_hot(tf.range(self._n_y_active),\n                                    n_y), axis=1),\n          multiples=[1, bs, 1])\n\n      # 2) Compute KL[q(z|x,y) || p(z|y)] (for all possible y), and keep z's\n      # around [n_y, B] and [n_y, B, n_z]\n      kl_z_all, z_all = tf.map_fn(\n          fn=lambda y: self._kl_and_z(hiddens, y),\n          elems=all_y,\n          dtype=(tf.float32, tf.float32),\n          name='elbo_components_z_map')\n      kl_z_all = tf.transpose(kl_z_all, name='kl_z_all')\n\n      # Now take the expectation over y (scale by q(y|x))\n      y_logits = q_y.logits[:, :self._n_y_active]  # [B, n_y]\n      y_probs = q_y.probs[:, :self._n_y_active]  # [B, n_y]\n      y_probs = y_probs / tf.reduce_sum(y_probs, axis=1, keepdims=True)\n      kl_z = tf.reduce_sum(y_probs * kl_z_all, axis=1)\n\n      # 3) Evaluate logp and recon, i.e., log and mean of p(x|z,[y])\n      # (conditioning on y only in the `multi` decoder_type case, when\n      # train_supervised is True). Here we take the reconstruction from each\n      # possible component y and take its log prob. [n_y, B, Ix, Iy, Iz]\n      log_p_x_all = tf.map_fn(\n          fn=lambda val: self.predict(val[0], val[1]).log_prob(x),\n          elems=(z_all, all_y),\n          dtype=tf.float32,\n          name='elbo_components_logpx_map')\n\n      # Sum log probs over all dimensions apart from the first two (n_y, B),\n      # i.e., over I. Use einsum to construct higher order multiplication.\n      log_p_x_all = snt.BatchFlatten(preserve_dims=2)(log_p_x_all)  # [n_y,B,I]\n      # Note, this is E_{q(y|x)} [ log p(x | z, y)], i.e., we scale log_p_x_all\n      # by q(y|x).\n      log_p_x = tf.einsum('ij,jik->ik', y_probs, log_p_x_all)  # [B, I]\n\n      # We may also use a supervised loss for some samples [B, n_y]\n      if y is not None:\n        self.y_label = tf.one_hot(y, n_y)\n      else:\n        self.y_label = tfc.placeholder(\n            shape=[bs, n_y], dtype=tf.float32, name='y_label')\n\n      # This is computing log p(x | z, y=true_y)], which is basically equivalent\n      # to indexing into the correct element of `log_p_x_all`.\n      log_p_x_sup = tf.einsum('ij,jik->ik',\n                              self.y_label[:, :self._n_y_active],\n                              log_p_x_all)  # [B, I]\n      kl_z_sup = tf.einsum('ij,ij->i',\n                           self.y_label[:, :self._n_y_active],\n                           kl_z_all)  # [B]\n      # -log q(y=y_true | x)\n      kl_y_sup = tf.nn.sparse_softmax_cross_entropy_with_logits(  # [B]\n          labels=tf.argmax(self.y_label[:, :self._n_y_active], axis=1),\n          logits=y_logits)\n\n      # Reduce over all dimension except batch.\n      dims_x = [k for k in range(1, log_p_x.shape.ndims)]\n      log_p_x = reduce_op(log_p_x, dims_x, name='log_p_x')\n      log_p_x_sup = reduce_op(log_p_x_sup, dims_x, name='log_p_x_sup')\n\n      # Store values needed externally\n      self.q_y = q_y\n      self.log_p_x_all = tf.transpose(\n          reduce_op(\n              log_p_x_all,\n              -1,  # [B, n_y]\n              name='log_p_x_all'))\n      self.kl_z_all = kl_z_all\n      self.y_probs = y_probs\n\n    self._cache[cache_key] = (log_p_x, kl_y, kl_z, log_p_x_sup, kl_y_sup,\n                              kl_z_sup)\n    return log_p_x, kl_y, kl_z, log_p_x_sup, kl_y_sup, kl_z_sup\n\n  def _kl_and_qy(self, hiddens):\n    \"\"\"Returns analytical or sampled KL div and the distribution q(y | x).\n\n    Args:\n      hiddens: The shared encoder activations, 2D `Tensor` of size `[B, ...]`.\n\n    Returns:\n      Pair `(kl, y)`, where `kl` is the KL divergence (a `Tensor` with shape\n      `[B]`, where `B` is the batch size), and `y` is a sample from the\n      categorical encoding distribution.\n    \"\"\"\n    with tf.control_dependencies([tfc.assert_rank(hiddens, 2)]):\n      q = self.infer_cluster(hiddens)  # q(y|x)\n    p = self.compute_prior()  # p(y)\n    try:\n      # Take the average proportions over whole batch then repeat it in each row\n      # before computing the KL\n      if self._kly_over_batch:\n        probs = tf.reduce_mean(\n            q.probs, axis=0, keepdims=True) * tf.ones_like(q.probs)\n        qmean = tfp.distributions.OneHotCategorical(probs=probs)\n        kl = tfp.distributions.kl_divergence(qmean, p)\n      else:\n        kl = tfp.distributions.kl_divergence(q, p)\n    except NotImplementedError:\n      y = q.sample(name='y_sample')\n      logging.warn('Using sampling KLD for y')\n      log_p_y = p.log_prob(y, name='log_p_y')\n      log_q_y = q.log_prob(y, name='log_q_y')\n\n      # Reduce over all dimension except batch.\n      sum_axis_p = [k for k in range(1, log_p_y.get_shape().ndims)]\n      log_p_y = tf.reduce_sum(log_p_y, sum_axis_p)\n      sum_axis_q = [k for k in range(1, log_q_y.get_shape().ndims)]\n      log_q_y = tf.reduce_sum(log_q_y, sum_axis_q)\n\n      kl = log_q_y - log_p_y\n\n    # Reduce over all dimension except batch.\n    sum_axis_kl = [k for k in range(1, kl.get_shape().ndims)]\n    kl = tf.reduce_sum(kl, sum_axis_kl, name='kl')\n    return kl, q\n\n  def _kl_and_z(self, hiddens, y):\n    \"\"\"Returns KL[q(z|y,x) || p(z|y)] and a sample for z from q(z|y,x).\n\n    Returns the analytical KL divergence KL[q(z|y,x) || p(z|y)] if one is\n    available (as registered with `kullback_leibler.RegisterKL`), or a sampled\n    KL divergence otherwise (in this case the returned sample is the one used\n    for the KL divergence).\n\n    Args:\n      hiddens: The shared encoder activations, 2D `Tensor` of size `[B, ...]`.\n      y: Categorical cluster random variable, `Tensor` of size `[B, n_y]`.\n\n    Returns:\n      Pair `(kl, z)`, where `kl` is the KL divergence (a `Tensor` with shape\n      `[B]`, where `B` is the batch size), and `z` is a sample from the encoding\n      distribution.\n    \"\"\"\n    with tf.control_dependencies([tfc.assert_rank(hiddens, 2)]):\n      q = self.infer_latent(hiddens, y)  # q(z|x,y)\n    p = self.generate_latent(y)  # p(z|y)\n    z = q.sample(name='z')\n    try:\n      kl = tfp.distributions.kl_divergence(q, p)\n    except NotImplementedError:\n      logging.warn('Using sampling KLD for z')\n      log_p_z = p.log_prob(z, name='log_p_z_y')\n      log_q_z = q.log_prob(z, name='log_q_z_xy')\n\n      # Reduce over all dimension except batch.\n      sum_axis_p = [k for k in range(1, log_p_z.get_shape().ndims)]\n      log_p_z = tf.reduce_sum(log_p_z, sum_axis_p)\n      sum_axis_q = [k for k in range(1, log_q_z.get_shape().ndims)]\n      log_q_z = tf.reduce_sum(log_q_z, sum_axis_q)\n\n      kl = log_q_z - log_p_z\n\n    # Reduce over all dimension except batch.\n    sum_axis_kl = [k for k in range(1, kl.get_shape().ndims)]\n    kl = tf.reduce_sum(kl, sum_axis_kl, name='kl')\n    return kl, z\n\n  def infer_latent(self, hiddens, y=None, use_mean_y=False):\n    \"\"\"Performs inference over the latent variable z.\n\n    Args:\n      hiddens: The shared encoder activations, 4D `Tensor` of size `[B, ...]`.\n      y: Categorical cluster variable, `Tensor` of size `[B, ...]`.\n      use_mean_y: Boolean, whether to take the mean encoding over all y.\n\n    Returns:\n      The distribution `q(z|x, y)`, which on sample produces tensors of size\n      `[N, B, ...]` where `B` is the batch size of `x` and `y`, and `N` is the\n      number of samples and `...` represents the shape of the latent variables.\n    \"\"\"\n    with tf.control_dependencies([tfc.assert_rank(hiddens, 2)]):\n      if y is None:\n        y = tf.to_float(self.infer_cluster(hiddens).mode())\n\n    if use_mean_y:\n      # If use_mean_y, then y must be probabilities\n      all_y = tf.tile(\n          tf.expand_dims(tf.one_hot(tf.range(y.shape[1]), y.shape[1]), axis=1),\n          multiples=[1, y.shape[0], 1])\n\n      # Compute z KL from x (for all possible y), and keep z's around\n      z_all = tf.map_fn(\n          fn=lambda y: self._latent_encoder(\n              hiddens, y, is_training=self._is_training).mean(),\n          elems=all_y,\n          dtype=tf.float32)\n      return tf.einsum('ij,jik->ik', y, z_all)\n    else:\n      return self._latent_encoder(hiddens, y, is_training=self._is_training)\n\n  def generate_latent(self, y):\n    \"\"\"Use the generative model to compute latent variable z, given a y.\n\n    Args:\n      y: Categorical cluster variable, `Tensor` of size `[B, ...]`.\n\n    Returns:\n      The distribution `p(z|y)`, which on sample produces tensors of size\n      `[N, B, ...]` where `B` is the batch size of `x`, and `N` is the number of\n      samples asked and `...` represents the shape of the latent variables.\n    \"\"\"\n    return self._latent_decoder(y, is_training=self._is_training)\n\n  def get_shared_rep(self, x, is_training):\n    \"\"\"Gets the shared representation from a given input x.\n\n    Args:\n      x: Observed variables, `Tensor` of size `[B, I]` where `I` is the size of\n        a flattened input.\n      is_training: bool, whether this constitutes training data or not.\n\n    Returns:\n      `log p(x|y,z)` of shape `[B]` where `B` is the batch size.\n      `KL[q(y|x) || p(y)]` of shape `[B]` where `B` is the batch size.\n      `KL[q(z|x,y) || p(z|y)]` of shape `[B]` where `B` is the batch size.\n    \"\"\"\n    return self._shared_encoder(x, is_training)\n\n  def infer_cluster(self, hiddens):\n    \"\"\"Performs inference over the categorical variable y.\n\n    Args:\n      hiddens: The shared encoder activations, 2D `Tensor` of size `[B, ...]`.\n\n    Returns:\n      The distribution `q(y|x)`, which on sample produces tensors of size\n      `[N, B, ...]` where `B` is the batch size of `x`, and `N` is the number of\n      samples asked and `...` represents the shape of the latent variables.\n    \"\"\"\n    with tf.control_dependencies([tfc.assert_rank(hiddens, 2)]):\n      return self._cluster_encoder(hiddens, is_training=self._is_training)\n\n  def predict(self, z, y):\n    \"\"\"Computes prediction over the observed variables.\n\n    Args:\n      z: Latent variables, `Tensor` of size `[B, ...]`.\n      y: Categorical cluster variable, `Tensor` of size `[B, ...]`.\n\n    Returns:\n      The distribution `p(x|z)`, which on sample produces tensors of size\n      `[N, B, ...]` where `N` is the number of samples asked.\n    \"\"\"\n    encoder_conv_shapes = getattr(self._shared_encoder, 'conv_shapes', None)\n    return self._data_decoder(\n        z,\n        y,\n        shared_encoder_conv_shapes=encoder_conv_shapes,\n        is_training=self._is_training)\n\n  def compute_prior(self):\n    \"\"\"Computes prior over the latent variables.\n\n    Returns:\n      The distribution `p(y)`, which on sample produces tensors of size\n      `[N, ...]` where `N` is the number of samples asked and `...` represents\n      the shape of the latent variables.\n    \"\"\"\n    return self._prior()\n\n\nclass UpsampleModule(snt.AbstractModule):\n  \"\"\"Convolutional decoder.\n\n  If `method` is 'deconv' apply transposed convolutions with stride 2,\n  otherwise apply the `method` upsampling function and then smooth with a\n  stride 1x1 convolution.\n\n  Params:\n  -------\n  filters: list, where the first element is the number of filters of the initial\n    MLP layer and the remaining elements are the number of filters of the\n    upsampling layers.\n  kernel_size: the size of the convolutional kernels. The same size will be\n    used in all convolutions.\n  activation: an activation function, applied to all layers but the last.\n  dec_up_strides: list, the upsampling factors of each upsampling convolutional\n    layer.\n  enc_conv_shapes: list, the shapes of the input and of all the intermediate\n    feature maps of the convolutional layers in the encoder.\n  n_c: the number of output channels.\n  \"\"\"\n\n  def __init__(self,\n               filters,\n               kernel_size,\n               activation,\n               dec_up_strides,\n               enc_conv_shapes,\n               n_c,\n               method='nn',\n               name='upsample_module'):\n    super(UpsampleModule, self).__init__(name=name)\n\n    assert len(filters) == len(dec_up_strides) + 1, (\n        'The decoder\\'s filters should contain one element more than the '\n        'decoder\\'s up stride list, but has %d elements instead of %d.\\n'\n        'Decoder filters: %s\\nDecoder up strides: %s' %\n        (len(filters), len(dec_up_strides) + 1, str(filters),\n         str(dec_up_strides)))\n\n    self._filters = filters\n    self._kernel_size = kernel_size\n    self._activation = activation\n\n    self._dec_up_strides = dec_up_strides\n    self._enc_conv_shapes = enc_conv_shapes\n    self._n_c = n_c\n    if method == 'deconv':\n      self._conv_layer = tf.layers.Conv2DTranspose\n      self._method = method\n    else:\n      self._conv_layer = tf.layers.Conv2D\n      self._method = getattr(tf.image.ResizeMethod, method.upper())\n    self._method_str = method.capitalize()\n\n  def _build(self, z, is_training=True, test_local_stats=True, use_bn=False):\n    batch_norm_args = {\n        'is_training': is_training,\n        'test_local_stats': test_local_stats\n    }\n\n    method = self._method\n    # Cycle over the encoder shapes backwards, to build a symmetrical decoder.\n    enc_conv_shapes = self._enc_conv_shapes[::-1]\n    strides = self._dec_up_strides\n    # We store the heights and widths of the encoder feature maps that are\n    # unique, i.e., the ones right after a layer with stride != 1. These will be\n    # used as a target to potentially crop the upsampled feature maps.\n    unique_hw = np.unique([(el[1], el[2]) for el in enc_conv_shapes], axis=0)\n    unique_hw = unique_hw.tolist()[::-1]\n    unique_hw.pop()  # Drop the initial shape\n\n    # The first filter is an MLP.\n    mlp_filter, conv_filters = self._filters[0], self._filters[1:]\n    # The first shape is used after the MLP to go to 4D.\n\n    layers = [z]\n    # The shape of the first enc is used after the MLP to go back to 4D.\n    dec_mlp = snt.nets.MLP(\n        name='dec_mlp_projection',\n        output_sizes=[mlp_filter, np.prod(enc_conv_shapes[0][1:])],\n        use_bias=not use_bn,\n        activation=self._activation,\n        activate_final=True)\n\n    upsample_mlp_flat = dec_mlp(z)\n    if use_bn:\n      upsample_mlp_flat = snt.BatchNorm(scale=True)(upsample_mlp_flat,\n                                                    **batch_norm_args)\n    layers.append(upsample_mlp_flat)\n    upsample = tf.reshape(upsample_mlp_flat, enc_conv_shapes[0])\n    layers.append(upsample)\n\n    for i, (filter_i, stride_i) in enumerate(zip(conv_filters, strides), 1):\n      if method != 'deconv' and stride_i > 1:\n        upsample = tf.image.resize_images(\n            upsample, [stride_i * el for el in upsample.shape.as_list()[1:3]],\n            method=method,\n            name='upsample_' + str(i))\n      upsample = self._conv_layer(\n          filters=filter_i,\n          kernel_size=self._kernel_size,\n          padding='same',\n          use_bias=not use_bn,\n          activation=self._activation,\n          strides=stride_i if method == 'deconv' else 1,\n          name='upsample_conv_' + str(i))(\n              upsample)\n      if use_bn:\n        upsample = snt.BatchNorm(scale=True)(upsample, **batch_norm_args)\n      if stride_i > 1:\n        hw = unique_hw.pop()\n        upsample = utils.maybe_center_crop(upsample, hw)\n      layers.append(upsample)\n\n    # Final layer, no upsampling.\n    x_logits = tf.layers.Conv2D(\n        filters=self._n_c,\n        kernel_size=self._kernel_size,\n        padding='same',\n        use_bias=not use_bn,\n        activation=None,\n        strides=1,\n        name='logits')(\n            upsample)\n    if use_bn:\n      x_logits = snt.BatchNorm(scale=True)(x_logits, **batch_norm_args)\n    layers.append(x_logits)\n\n    logging.info('%s upsampling module layer shapes', self._method_str)\n    logging.info('\\n'.join([str(v.shape.as_list()) for v in layers]))\n\n    return x_logits\n"
  },
  {
    "path": "curl/requirements.txt",
    "content": "absl-py==0.8.0\ndm-sonnet==1.35\ngast<0.3\nnumpy==1.16.4\nscikit-learn==0.20.4\nsetuptools>=41.0.0\nsix==1.12.0\ntensorflow==1.14.0\ntensorflow-datasets==1.2.0\ntensorflow-probability==0.7.0\n"
  },
  {
    "path": "curl/train_main.py",
    "content": "################################################################################\n# Copyright 2019 DeepMind Technologies Limited\n#\n#     Licensed under the Apache License, Version 2.0 (the \"License\");\n#     you may not use this file except in compliance with the License.\n#     You may obtain a copy of the License at\n#\n#         https://www.apache.org/licenses/LICENSE-2.0\n#\n#     Unless required by applicable law or agreed to in writing, software\n#     distributed under the License is distributed on an \"AS IS\" BASIS,\n#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n#     See the License for the specific language governing permissions and\n#     limitations under the License.\n################################################################################\n\"\"\"Training file to run most of the experiments in the paper.\n\nThe default parameters corresponding to the first set of experiments in Section\n4.2.\n\nFor the expansion ablation, run with different ll_thresh values as in the paper.\nNote that n_y_active represents the number of *active* components at the\nstart, and should be set to 1, while n_y represents the maximum number of\ncomponents allowed, and should be set sufficiently high (eg. n_y = 100).\n\nFor the MGR ablation, setting use_sup_replay = True switches to using SMGR,\nand the gen_replay_type flag can switch between fixed and dynamic replay. The\ngenerative snapshot period is set automatically in the train_curl.py file based\non these settings (ie. the data_period variable), so the 0.1T runs can be\nreproduced by dividing this value by 10.\n\"\"\"\n\nfrom absl import app\nfrom absl import flags\n\nfrom curl import training\n\nflags.DEFINE_enum('dataset', 'mnist', ['mnist', 'omniglot'], 'Dataset.')\n\nFLAGS = flags.FLAGS\n\n\ndef main(unused_argv):\n  training.run_training(\n      dataset=FLAGS.dataset,\n      output_type='bernoulli',\n      n_y=30,\n      n_y_active=1,\n      training_data_type='sequential',\n      n_concurrent_classes=1,\n      lr_init=1e-3,\n      lr_factor=1.,\n      lr_schedule=[1],\n      blend_classes=False,\n      train_supervised=False,\n      n_steps=100000,\n      report_interval=10000,\n      knn_values=[10],\n      random_seed=1,\n      encoder_kwargs={\n          'encoder_type': 'multi',\n          'n_enc': [1200, 600, 300, 150],\n          'enc_strides': [1],\n      },\n      decoder_kwargs={\n          'decoder_type': 'single',\n          'n_dec': [500, 500],\n          'dec_up_strides': None,\n      },\n      n_z=32,\n      dynamic_expansion=True,\n      ll_thresh=-200.0,\n      classify_with_samples=False,\n      gen_replay_type='fixed',\n      use_supervised_replay=False,\n      )\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "curl/train_sup.py",
    "content": "################################################################################\n# Copyright 2019 DeepMind Technologies Limited\n#\n#     Licensed under the Apache License, Version 2.0 (the \"License\");\n#     you may not use this file except in compliance with the License.\n#     You may obtain a copy of the License at\n#\n#         https://www.apache.org/licenses/LICENSE-2.0\n#\n#     Unless required by applicable law or agreed to in writing, software\n#     distributed under the License is distributed on an \"AS IS\" BASIS,\n#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n#     See the License for the specific language governing permissions and\n#     limitations under the License.\n################################################################################\n\"\"\"Runs the supervised CL benchmark experiments in the paper.\"\"\"\n\nfrom absl import app\nfrom absl import flags\n\nfrom curl import training\n\nflags.DEFINE_enum('dataset', 'mnist', ['mnist', 'omniglot'], 'Dataset.')\n\nFLAGS = flags.FLAGS\n\n\ndef main(unused_argv):\n  training.run_training(\n      dataset=FLAGS.dataset,\n      output_type='bernoulli',\n      n_y=10,\n      n_y_active=10,\n      training_data_type='sequential',\n      n_concurrent_classes=2,\n      lr_init=1e-3,\n      lr_factor=1.,\n      lr_schedule=[1],\n      train_supervised=True,\n      blend_classes=False,\n      n_steps=100000,\n      report_interval=10000,\n      knn_values=[],\n      random_seed=1,\n      encoder_kwargs={\n          'encoder_type': 'multi',\n          'n_enc': [400, 400],\n          'enc_strides': [1],\n      },\n      decoder_kwargs={\n          'decoder_type': 'single',\n          'n_dec': [400, 400],\n          'dec_up_strides': None,\n      },\n      n_z=32,\n      dynamic_expansion=False,\n      ll_thresh=-10000.0,\n      classify_with_samples=False,\n      gen_replay_type='fixed',\n      use_supervised_replay=False,\n      )\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "curl/train_unsup.py",
    "content": "################################################################################\n# Copyright 2019 DeepMind Technologies Limited\n#\n#     Licensed under the Apache License, Version 2.0 (the \"License\");\n#     you may not use this file except in compliance with the License.\n#     You may obtain a copy of the License at\n#\n#         https://www.apache.org/licenses/LICENSE-2.0\n#\n#     Unless required by applicable law or agreed to in writing, software\n#     distributed under the License is distributed on an \"AS IS\" BASIS,\n#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n#     See the License for the specific language governing permissions and\n#     limitations under the License.\n################################################################################\n\"\"\"Runs the unsupervised i.i.d benchmark experiments in the paper.\"\"\"\n\nfrom absl import app\nfrom absl import flags\n\nfrom curl import training\n\nflags.DEFINE_enum('dataset', 'mnist', ['mnist', 'omniglot'], 'Dataset.')\n\nFLAGS = flags.FLAGS\n\n\ndef main(unused_argv):\n  if FLAGS.dataset == 'mnist':\n    n_y = 25\n    n_y_active = 1\n    n_z = 50\n  else:  # omniglot\n    n_y = 100\n    n_y_active = 1\n    n_z = 100\n\n  training.run_training(\n      dataset=FLAGS.dataset,\n      n_y=n_y,\n      n_y_active=n_y_active,\n      n_z=n_z,\n      output_type='bernoulli',\n      training_data_type='iid',\n      n_concurrent_classes=1,\n      lr_init=5e-4,\n      lr_factor=1.,\n      lr_schedule=[1],\n      blend_classes=False,\n      train_supervised=False,\n      n_steps=100000,\n      report_interval=10000,\n      knn_values=[3],\n      random_seed=1,\n      encoder_kwargs={\n          'encoder_type': 'multi',\n          'n_enc': [500, 500],\n          'enc_strides': [1],\n      },\n      decoder_kwargs={\n          'decoder_type': 'single',\n          'n_dec': [500],\n          'dec_up_strides': None,\n      },\n      dynamic_expansion=True,\n      ll_thresh=-200.0,\n      classify_with_samples=True,\n      gen_replay_type=None,\n      use_supervised_replay=False,\n      )\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "curl/training.py",
    "content": "################################################################################\n# Copyright 2019 DeepMind Technologies Limited\n#\n#     Licensed under the Apache License, Version 2.0 (the \"License\");\n#     you may not use this file except in compliance with the License.\n#     You may obtain a copy of the License at\n#\n#         https://www.apache.org/licenses/LICENSE-2.0\n#\n#     Unless required by applicable law or agreed to in writing, software\n#     distributed under the License is distributed on an \"AS IS\" BASIS,\n#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n#     See the License for the specific language governing permissions and\n#     limitations under the License.\n################################################################################\n\"\"\"Script to train CURL.\"\"\"\n\nimport collections\nimport functools\nfrom absl import logging\n\nimport numpy as np\nfrom sklearn import neighbors\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\nimport tensorflow_datasets as tfds\nimport tensorflow_probability as tfp\n\nfrom curl import model\nfrom curl import utils\n\ntfc = tf.compat.v1\n\n# pylint: disable=g-long-lambda\n\nMainOps = collections.namedtuple('MainOps', [\n    'elbo', 'll', 'log_p_x', 'kl_y', 'kl_z', 'elbo_supervised', 'll_supervised',\n    'log_p_x_supervised', 'kl_y_supervised', 'kl_z_supervised',\n    'cat_probs', 'confusion', 'purity', 'latents'\n])\n\nDatasetTuple = collections.namedtuple('DatasetTuple', [\n    'train_data', 'train_iter_for_clf', 'train_data_for_clf',\n    'valid_iter', 'valid_data', 'test_iter', 'test_data', 'ds_info'\n])\n\n\ndef compute_purity(confusion):\n  return np.sum(np.max(confusion, axis=0)).astype(float) / np.sum(confusion)\n\n\ndef process_dataset(iterator,\n                    ops_to_run,\n                    sess,\n                    feed_dict=None,\n                    aggregation_ops=np.stack,\n                    processing_ops=None):\n  \"\"\"Process a dataset by computing ops and accumulating batch by batch.\n\n  Args:\n    iterator: iterator through the dataset.\n    ops_to_run: dict, tf ops to run as part of dataset processing.\n    sess: tf.Session to use.\n    feed_dict: dict, required placeholders.\n    aggregation_ops: fn or dict of fns, aggregation op to apply for each op.\n    processing_ops: fn or dict of fns, extra processing op to apply for each op.\n\n  Returns:\n    Results accumulated over dataset.\n  \"\"\"\n\n  if not isinstance(ops_to_run, dict):\n    raise TypeError('ops_to_run must be specified as a dict')\n\n  if not isinstance(aggregation_ops, dict):\n    aggregation_ops = {k: aggregation_ops for k in ops_to_run}\n  if not isinstance(processing_ops, dict):\n    processing_ops = {k: processing_ops for k in ops_to_run}\n\n  out_results = collections.OrderedDict()\n  sess.run(iterator.initializer)\n  while True:\n    # Iterate over the whole dataset and append the results to a per-key list.\n    try:\n      outs = sess.run(ops_to_run, feed_dict=feed_dict)\n      for key, value in outs.items():\n        out_results.setdefault(key, []).append(value)\n\n    except tf.errors.OutOfRangeError:  # end of dataset iterator\n      break\n\n  # Aggregate and process results.\n  for key, value in out_results.items():\n    if aggregation_ops[key]:\n      out_results[key] = aggregation_ops[key](value)\n    if processing_ops[key]:\n      out_results[key] = processing_ops[key](out_results[key], axis=0)\n\n  return out_results\n\n\ndef get_data_sources(dataset, dataset_kwargs, batch_size, test_batch_size,\n                     training_data_type, n_concurrent_classes, image_key,\n                     label_key):\n  \"\"\"Create and return data sources for training, validation, and testing.\n\n  Args:\n    dataset: str, name of dataset ('mnist', 'omniglot', etc).\n    dataset_kwargs: dict, kwargs used in tf dataset constructors.\n    batch_size: int, batch size used for training.\n    test_batch_size: int, batch size used for evaluation.\n    training_data_type: str, how training data is seen ('iid', or 'sequential').\n    n_concurrent_classes: int, # classes seen at a time (ignored for 'iid').\n    image_key: str, name if image key in dataset.\n    label_key: str, name of label key in dataset.\n\n  Returns:\n    A namedtuple containing all of the dataset iterators and batches.\n\n  \"\"\"\n\n  # Load training data sources\n  ds_train, ds_info = tfds.load(\n      name=dataset,\n      split=tfds.Split.TRAIN,\n      with_info=True,\n      as_dataset_kwargs={'shuffle_files': False},\n      **dataset_kwargs)\n\n  # Validate assumption that data is in [0, 255]\n  assert ds_info.features[image_key].dtype == tf.uint8\n\n  n_classes = ds_info.features[label_key].num_classes\n  num_train_examples = ds_info.splits['train'].num_examples\n\n  def preprocess_data(x):\n    \"\"\"Convert images from uint8 in [0, 255] to float in [0, 1].\"\"\"\n    x[image_key] = tf.image.convert_image_dtype(x[image_key], tf.float32)\n    return x\n\n  if training_data_type == 'sequential':\n    c = None  # The index of the class number, None for now and updated later\n    if n_concurrent_classes == 1:\n      filter_fn = lambda v: tf.equal(v[label_key], c)\n    else:\n      # Define the lowest and highest class number at each data period.\n      assert n_classes % n_concurrent_classes == 0, (\n          'Number of total classes must be divisible by '\n          'number of concurrent classes')\n      cmin = []\n      cmax = []\n      for i in range(int(n_classes / n_concurrent_classes)):\n        for _ in range(n_concurrent_classes):\n          cmin.append(i * n_concurrent_classes)\n          cmax.append((i + 1) * n_concurrent_classes)\n\n      filter_fn = lambda v: tf.logical_and(\n          tf.greater_equal(v[label_key], cmin[c]), tf.less(\n              v[label_key], cmax[c]))\n\n    # Set up data sources/queues (one for each class).\n    train_datasets = []\n    train_iterators = []\n    train_data = []\n\n    full_ds = ds_train.repeat().shuffle(num_train_examples, seed=0)\n    full_ds = full_ds.map(preprocess_data)\n    for c in range(n_classes):\n      filtered_ds = full_ds.filter(filter_fn).batch(\n          batch_size, drop_remainder=True)\n      train_datasets.append(filtered_ds)\n      train_iterators.append(train_datasets[-1].make_one_shot_iterator())\n      train_data.append(train_iterators[-1].get_next())\n\n  else:  # not sequential\n    full_ds = ds_train.repeat().shuffle(num_train_examples, seed=0)\n    full_ds = full_ds.map(preprocess_data)\n    train_datasets = full_ds.batch(batch_size, drop_remainder=True)\n    train_data = train_datasets.make_one_shot_iterator().get_next()\n\n  # Set up data source to get full training set for classifier training\n  full_ds = ds_train.repeat(1).shuffle(num_train_examples, seed=0)\n  full_ds = full_ds.map(preprocess_data)\n  train_datasets_for_classifier = full_ds.batch(\n      test_batch_size, drop_remainder=True)\n  train_iter_for_classifier = (\n      train_datasets_for_classifier.make_initializable_iterator())\n  train_data_for_classifier = train_iter_for_classifier.get_next()\n\n  # Load validation dataset.\n  try:\n    valid_dataset = tfds.load(\n        name=dataset, split=tfds.Split.VALIDATION, **dataset_kwargs)\n    num_valid_examples = ds_info.splits[tfds.Split.VALIDATION].num_examples\n    assert (num_valid_examples %\n            test_batch_size == 0), ('test_batch_size must be a divisor of %d' %\n                                    num_valid_examples)\n    valid_dataset = valid_dataset.repeat(1).batch(\n        test_batch_size, drop_remainder=True)\n    valid_dataset = valid_dataset.map(preprocess_data)\n    valid_iter = valid_dataset.make_initializable_iterator()\n    valid_data = valid_iter.get_next()\n  except (KeyError, ValueError):\n    logging.warning('No validation set!!')\n    valid_iter = None\n    valid_data = None\n\n  # Load test dataset.\n  test_dataset = tfds.load(\n      name=dataset, split=tfds.Split.TEST, **dataset_kwargs)\n  num_test_examples = ds_info.splits['test'].num_examples\n  assert (num_test_examples %\n          test_batch_size == 0), ('test_batch_size must be a divisor of %d' %\n                                  num_test_examples)\n  test_dataset = test_dataset.repeat(1).batch(\n      test_batch_size, drop_remainder=True)\n  test_dataset = test_dataset.map(preprocess_data)\n  test_iter = test_dataset.make_initializable_iterator()\n  test_data = test_iter.get_next()\n  logging.info('Loaded %s data', dataset)\n\n  return DatasetTuple(train_data, train_iter_for_classifier,\n                      train_data_for_classifier, valid_iter, valid_data,\n                      test_iter, test_data, ds_info)\n\n\ndef setup_training_and_eval_graphs(x, label, y, n_y, curl_model,\n                                   classify_with_samples, is_training, name):\n  \"\"\"Set up the graph and return ops for training or evaluation.\n\n  Args:\n    x: tf placeholder for image.\n    label: tf placeholder for ground truth label.\n    y: tf placeholder for some self-supervised label/prediction.\n    n_y: int, dimensionality of discrete latent variable y.\n    curl_model: snt.AbstractModule representing the CURL model.\n    classify_with_samples: bool, whether to *sample* latents for classification.\n    is_training: bool, whether this graph is the training graph.\n    name: str, graph name.\n\n  Returns:\n    A namedtuple with the required graph ops to perform training or evaluation.\n\n  \"\"\"\n  # kl_y_supervised is -log q(y=y_true | x)\n  (log_p_x, kl_y, kl_z, log_p_x_supervised, kl_y_supervised,\n   kl_z_supervised) = curl_model.log_prob_elbo_components(x, y)\n\n  ll = log_p_x - kl_y - kl_z\n  elbo = -tf.reduce_mean(ll)\n\n  # Supervised loss, either for SMGR, or adaptation to supervised benchmark.\n  ll_supervised = log_p_x_supervised - kl_y_supervised - kl_z_supervised\n  elbo_supervised = -tf.reduce_mean(ll_supervised)\n\n  # Summaries\n  kl_y = tf.reduce_mean(kl_y)\n  kl_z = tf.reduce_mean(kl_z)\n  log_p_x_supervised = tf.reduce_mean(log_p_x_supervised)\n  kl_y_supervised = tf.reduce_mean(kl_y_supervised)\n  kl_z_supervised = tf.reduce_mean(kl_z_supervised)\n\n  # Evaluation.\n  hiddens = curl_model.get_shared_rep(x, is_training=is_training)\n  cat = curl_model.infer_cluster(hiddens)\n  cat_probs = cat.probs\n\n  confusion = tf.confusion_matrix(label, tf.argmax(cat_probs, axis=1),\n                                  num_classes=n_y, name=name + '_confusion')\n  purity = (tf.reduce_sum(tf.reduce_max(confusion, axis=0))\n            / tf.reduce_sum(confusion))\n\n  if classify_with_samples:\n    latents = curl_model.infer_latent(\n        hiddens=hiddens, y=tf.to_float(cat.sample())).sample()\n  else:\n    latents = curl_model.infer_latent(\n        hiddens=hiddens, y=tf.to_float(cat.mode())).mean()\n\n  return MainOps(elbo, ll, log_p_x, kl_y, kl_z, elbo_supervised, ll_supervised,\n                 log_p_x_supervised, kl_y_supervised, kl_z_supervised,\n                 cat_probs, confusion, purity, latents)\n\n\ndef get_generated_data(sess, gen_op, y_input, gen_buffer_size,\n                       component_counts):\n  \"\"\"Get generated model data (in place of saving a model snapshot).\n\n  Args:\n    sess: tf.Session.\n    gen_op: tf op representing a batch of generated data.\n    y_input: tf placeholder for which mixture components to generate from.\n    gen_buffer_size: int, number of data points to generate.\n    component_counts: np.array, prior probabilities over components.\n\n  Returns:\n    A tuple of two numpy arrays\n      The generated data\n      The corresponding labels\n  \"\"\"\n\n  batch_size, n_y = y_input.shape.as_list()\n\n  # Sample based on the history of all components used.\n  cluster_sample_probs = component_counts.astype(float)\n  cluster_sample_probs = np.maximum(1e-12, cluster_sample_probs)\n  cluster_sample_probs = cluster_sample_probs / np.sum(cluster_sample_probs)\n\n  # Now generate the data based on the specified cluster prior.\n  gen_buffer_images = []\n  gen_buffer_labels = []\n  for _ in range(gen_buffer_size):\n    gen_label = np.random.choice(\n        np.arange(n_y),\n        size=(batch_size,),\n        replace=True,\n        p=cluster_sample_probs)\n    y_gen_posterior_vals = np.zeros((batch_size, n_y))\n    y_gen_posterior_vals[np.arange(batch_size), gen_label] = 1\n    gen_image = sess.run(gen_op, feed_dict={y_input: y_gen_posterior_vals})\n    gen_buffer_images.append(gen_image)\n    gen_buffer_labels.append(gen_label)\n\n  gen_buffer_images = np.vstack(gen_buffer_images)\n  gen_buffer_labels = np.concatenate(gen_buffer_labels)\n\n  return gen_buffer_images, gen_buffer_labels\n\n\ndef setup_dynamic_ops(n_y):\n  \"\"\"Set up ops to move / copy mixture component weights for dynamic expansion.\n\n  Args:\n    n_y: int, dimensionality of discrete latent variable y.\n\n  Returns:\n    A dict containing all of the ops required for dynamic updating.\n\n  \"\"\"\n  # Set up graph ops to dynamically modify component params.\n  graph = tf.get_default_graph()\n\n  # 1) Ops to get and set latent encoder params (entire tensors)\n  latent_enc_tensors = {}\n  for k in range(n_y):\n    latent_enc_tensors['latent_w_' + str(k)] = graph.get_tensor_by_name(\n        'latent_encoder/mlp_latent_encoder_{}/w:0'.format(k))\n    latent_enc_tensors['latent_b_' + str(k)] = graph.get_tensor_by_name(\n        'latent_encoder/mlp_latent_encoder_{}/b:0'.format(k))\n\n  latent_enc_assign_ops = {}\n  latent_enc_phs = {}\n  for key, tensor in latent_enc_tensors.items():\n    latent_enc_phs[key] = tfc.placeholder(tensor.dtype, tensor.shape)\n    latent_enc_assign_ops[key] = tf.assign(tensor, latent_enc_phs[key])\n\n  # 2) Ops to get and set cluster encoder params (columns of a tensor)\n  # We will be copying column ind_from to column ind_to.\n  cluster_w = graph.get_tensor_by_name(\n      'cluster_encoder/mlp_cluster_encoder_final/w:0')\n  cluster_b = graph.get_tensor_by_name(\n      'cluster_encoder/mlp_cluster_encoder_final/b:0')\n\n  ind_from = tfc.placeholder(dtype=tf.int32)\n  ind_to = tfc.placeholder(dtype=tf.int32)\n\n  # Determine indices of cluster encoder weights and biases to be updated\n  w_indices = tf.transpose(\n      tf.stack([\n          tf.range(cluster_w.shape[0], dtype=tf.int32),\n          ind_to * tf.ones(shape=(cluster_w.shape[0],), dtype=tf.int32)\n      ]))\n  b_indices = ind_to\n  # Determine updates themselves\n  cluster_w_updates = tf.squeeze(\n      tf.slice(cluster_w, begin=(0, ind_from), size=(cluster_w.shape[0], 1)))\n  cluster_b_updates = cluster_b[ind_from]\n  # Create update ops\n  cluster_w_update_op = tf.scatter_nd_update(cluster_w, w_indices,\n                                             cluster_w_updates)\n  cluster_b_update_op = tf.scatter_update(cluster_b, b_indices,\n                                          cluster_b_updates)\n\n  # 3) Ops to get and set latent prior params (columns of a tensor)\n  # We will be copying column ind_from to column ind_to.\n  latent_prior_mu_w = graph.get_tensor_by_name(\n      'latent_decoder/latent_prior_mu/w:0')\n  latent_prior_sigma_w = graph.get_tensor_by_name(\n      'latent_decoder/latent_prior_sigma/w:0')\n\n  mu_indices = tf.transpose(\n      tf.stack([\n          ind_to * tf.ones(shape=(latent_prior_mu_w.shape[1],), dtype=tf.int32),\n          tf.range(latent_prior_mu_w.shape[1], dtype=tf.int32)\n      ]))\n  mu_updates = tf.squeeze(\n      tf.slice(\n          latent_prior_mu_w,\n          begin=(ind_from, 0),\n          size=(1, latent_prior_mu_w.shape[1])))\n  mu_update_op = tf.scatter_nd_update(latent_prior_mu_w, mu_indices, mu_updates)\n  sigma_indices = tf.transpose(\n      tf.stack([\n          ind_to *\n          tf.ones(shape=(latent_prior_sigma_w.shape[1],), dtype=tf.int32),\n          tf.range(latent_prior_sigma_w.shape[1], dtype=tf.int32)\n      ]))\n  sigma_updates = tf.squeeze(\n      tf.slice(\n          latent_prior_sigma_w,\n          begin=(ind_from, 0),\n          size=(1, latent_prior_sigma_w.shape[1])))\n  sigma_update_op = tf.scatter_nd_update(latent_prior_sigma_w, sigma_indices,\n                                         sigma_updates)\n\n  dynamic_ops = {\n      'ind_from_ph': ind_from,\n      'ind_to_ph': ind_to,\n      'latent_enc_tensors': latent_enc_tensors,\n      'latent_enc_assign_ops': latent_enc_assign_ops,\n      'latent_enc_phs': latent_enc_phs,\n      'cluster_w_update_op': cluster_w_update_op,\n      'cluster_b_update_op': cluster_b_update_op,\n      'mu_update_op': mu_update_op,\n      'sigma_update_op': sigma_update_op\n  }\n\n  return dynamic_ops\n\n\ndef copy_component_params(ind_from, ind_to, sess, ind_from_ph, ind_to_ph,\n                          latent_enc_tensors, latent_enc_assign_ops,\n                          latent_enc_phs,\n                          cluster_w_update_op, cluster_b_update_op,\n                          mu_update_op, sigma_update_op):\n  \"\"\"Copy parameters from component i to component j.\n\n  Args:\n    ind_from: int, component index to copy from.\n    ind_to: int, component index to copy to.\n    sess: tf.Session.\n    ind_from_ph: tf placeholder for component to copy from.\n    ind_to_ph: tf placeholder for component to copy to.\n    latent_enc_tensors: dict, tensors in the latent posterior encoder.\n    latent_enc_assign_ops: dict, assignment ops for latent posterior encoder.\n    latent_enc_phs: dict, placeholders for assignment ops.\n    cluster_w_update_op: op for updating weights of cluster encoder.\n    cluster_b_update_op: op for updating biased of cluster encoder.\n    mu_update_op: op for updating mu weights of latent prior.\n    sigma_update_op: op for updating sigma weights of latent prior.\n\n  \"\"\"\n  update_ops = []\n  feed_dict = {}\n  # Copy for latent encoder.\n  new_w_val, new_b_val = sess.run([\n      latent_enc_tensors['latent_w_' + str(ind_from)],\n      latent_enc_tensors['latent_b_' + str(ind_from)]\n  ])\n  update_ops.extend([\n      latent_enc_assign_ops['latent_w_' + str(ind_to)],\n      latent_enc_assign_ops['latent_b_' + str(ind_to)]\n  ])\n  feed_dict.update({\n      latent_enc_phs['latent_w_' + str(ind_to)]: new_w_val,\n      latent_enc_phs['latent_b_' + str(ind_to)]: new_b_val\n  })\n\n  # Copy for cluster encoder softmax.\n  update_ops.extend([cluster_w_update_op, cluster_b_update_op])\n  feed_dict.update({ind_from_ph: ind_from, ind_to_ph: ind_to})\n\n  # Copy for latent prior.\n  update_ops.extend([mu_update_op, sigma_update_op])\n  feed_dict.update({ind_from_ph: ind_from, ind_to_ph: ind_to})\n  sess.run(update_ops, feed_dict)\n\n\ndef run_training(\n    dataset,\n    training_data_type,\n    n_concurrent_classes,\n    blend_classes,\n    train_supervised,\n    n_steps,\n    random_seed,\n    lr_init,\n    lr_factor,\n    lr_schedule,\n    output_type,\n    n_y,\n    n_y_active,\n    n_z,\n    encoder_kwargs,\n    decoder_kwargs,\n    dynamic_expansion,\n    ll_thresh,\n    classify_with_samples,\n    report_interval,\n    knn_values,\n    gen_replay_type,\n    use_supervised_replay):\n  \"\"\"Run training script.\n\n  Args:\n    dataset: str, name of the dataset.\n    training_data_type: str, type of training run ('iid' or 'sequential').\n    n_concurrent_classes: int, # of classes seen at a time (ignored for 'iid').\n    blend_classes: bool, whether to blend in samples from the next class.\n    train_supervised: bool, whether to use supervision during training.\n    n_steps: int, number of total training steps.\n    random_seed: int, seed for tf and numpy RNG.\n    lr_init: float, initial learning rate.\n    lr_factor: float, learning rate decay factor.\n    lr_schedule: float, epochs at which the decay should be applied.\n    output_type: str, output distribution (currently only 'bernoulli').\n    n_y: int, maximum possible dimensionality of discrete latent variable y.\n    n_y_active: int, starting dimensionality of discrete latent variable y.\n    n_z: int, dimensionality of continuous latent variable z.\n    encoder_kwargs: dict, parameters to specify encoder.\n    decoder_kwargs: dict, parameters to specify decoder.\n    dynamic_expansion: bool, whether to perform dynamic expansion.\n    ll_thresh: float, log-likelihood threshold below which to keep poor samples.\n    classify_with_samples: bool, whether to sample latents when classifying.\n    report_interval: int, number of steps after which to evaluate and report.\n    knn_values: list of ints, k values for different k-NN classifiers to run\n    (values of 3, 5, and 10 were used in different parts of the paper).\n    gen_replay_type: str, 'fixed', 'dynamic', or None.\n    use_supervised_replay: str, whether to use supervised replay (aka 'SMGR').\n  \"\"\"\n\n  # Set tf random seed.\n  tfc.set_random_seed(random_seed)\n  np.set_printoptions(precision=2, suppress=True)\n\n  # First set up the data source(s) and get dataset info.\n  if dataset == 'mnist':\n    batch_size = 100\n    test_batch_size = 1000\n    dataset_kwargs = {}\n    image_key = 'image'\n    label_key = 'label'\n  elif dataset == 'omniglot':\n    batch_size = 15\n    test_batch_size = 1318\n    dataset_kwargs = {}\n    image_key = 'image'\n    label_key = 'alphabet'\n  else:\n    raise NotImplementedError\n\n  dataset_ops = get_data_sources(dataset, dataset_kwargs, batch_size,\n                                 test_batch_size, training_data_type,\n                                 n_concurrent_classes, image_key, label_key)\n  train_data = dataset_ops.train_data\n  train_data_for_clf = dataset_ops.train_data_for_clf\n  valid_data = dataset_ops.valid_data\n  test_data = dataset_ops.test_data\n\n  output_shape = dataset_ops.ds_info.features[image_key].shape\n  n_x = np.prod(output_shape)\n  n_classes = dataset_ops.ds_info.features[label_key].num_classes\n  num_train_examples = dataset_ops.ds_info.splits['train'].num_examples\n\n  # Check that the number of classes is compatible with the training scenario\n  assert n_classes % n_concurrent_classes == 0\n  assert n_steps % (n_classes / n_concurrent_classes) == 0\n\n  # Set specific params depending on the type of gen replay\n  if gen_replay_type == 'fixed':\n    data_period = data_period = int(n_steps /\n                                    (n_classes / n_concurrent_classes))\n    gen_every_n = 2  # Blend in a gen replay batch every 2 steps\n    gen_refresh_period = data_period  # How often to refresh the batches of\n    # generated data (equivalent to snapshotting a generative model)\n    gen_refresh_on_expansion = False  # Don't refresh on dyn expansion\n  elif gen_replay_type == 'dynamic':\n    gen_every_n = 2  # Blend in a gen replay batch every 2 steps\n    gen_refresh_period = 1e8  # Never refresh generated data periodically\n    gen_refresh_on_expansion = True  # Refresh on dyn expansion instead\n  elif gen_replay_type is None:\n    gen_every_n = 0  # Don't use any gen replay batches\n    gen_refresh_period = 1e8  # Never refresh generated data periodically\n    gen_refresh_on_expansion = False  # Don't refresh on dyn expansion\n  else:\n    raise NotImplementedError\n\n  max_gen_batches = 5000  # Max num of gen batches (proxy for storing a model)\n\n  # Set dynamic expansion parameters\n  exp_wait_steps = 100  # Steps to wait after expansion before eligible again\n  exp_burn_in = 100  # Steps to wait at start of learning before eligible\n  exp_buffer_size = 100  # Size of the buffer of poorly explained data\n  num_buffer_train_steps = 10  # Num steps to train component on buffer\n\n  # Define a global tf variable for the number of active components.\n  n_y_active_np = n_y_active\n  n_y_active = tfc.get_variable(\n      initializer=tf.constant(n_y_active_np, dtype=tf.int32),\n      trainable=False,\n      name='n_y_active',\n      dtype=tf.int32)\n\n  logging.info('Starting CURL script on %s data.', dataset)\n\n  # Set up placeholders for training.\n\n  x_train_raw = tfc.placeholder(\n      dtype=tf.float32, shape=(batch_size,) + output_shape)\n  label_train = tfc.placeholder(dtype=tf.int32, shape=(batch_size,))\n\n  def binarize_fn(x):\n    \"\"\"Binarize a Bernoulli by rounding the probabilities.\n\n    Args:\n      x: tf tensor, input image.\n\n    Returns:\n      A tf tensor with the binarized image\n    \"\"\"\n    return tf.cast(tf.greater(x, 0.5 * tf.ones_like(x)), tf.float32)\n\n  if dataset == 'mnist':\n    x_train = binarize_fn(x_train_raw)\n    x_valid = binarize_fn(valid_data[image_key]) if valid_data else None\n    x_test = binarize_fn(test_data[image_key])\n    x_train_for_clf = binarize_fn(train_data_for_clf[image_key])\n  elif 'cifar' in dataset or dataset == 'omniglot':\n    x_train = x_train_raw\n    x_valid = valid_data[image_key] if valid_data else None\n    x_test = test_data[image_key]\n    x_train_for_clf = train_data_for_clf[image_key]\n  else:\n    raise ValueError('Unknown dataset {}'.format(dataset))\n\n  label_valid = valid_data[label_key] if valid_data else None\n  label_test = test_data[label_key]\n\n  # Set up CURL modules.\n  shared_encoder = model.SharedEncoder(name='shared_encoder', **encoder_kwargs)\n  latent_encoder = functools.partial(model.latent_encoder_fn, n_y=n_y, n_z=n_z)\n  latent_encoder = snt.Module(latent_encoder, name='latent_encoder')\n  latent_decoder = functools.partial(model.latent_decoder_fn, n_z=n_z)\n  latent_decoder = snt.Module(latent_decoder, name='latent_decoder')\n  cluster_encoder = functools.partial(\n      model.cluster_encoder_fn, n_y_active=n_y_active, n_y=n_y)\n  cluster_encoder = snt.Module(cluster_encoder, name='cluster_encoder')\n  data_decoder = functools.partial(\n      model.data_decoder_fn,\n      output_type=output_type,\n      output_shape=output_shape,\n      n_x=n_x,\n      n_y=n_y,\n      **decoder_kwargs)\n  data_decoder = snt.Module(data_decoder, name='data_decoder')\n\n  # Uniform prior over y.\n  prior_train_probs = utils.construct_prior_probs(batch_size, n_y, n_y_active)\n  prior_train = snt.Module(\n      lambda: tfp.distributions.OneHotCategorical(probs=prior_train_probs),\n      name='prior_unconditional_train')\n  prior_test_probs = utils.construct_prior_probs(test_batch_size, n_y,\n                                                 n_y_active)\n  prior_test = snt.Module(\n      lambda: tfp.distributions.OneHotCategorical(probs=prior_test_probs),\n      name='prior_unconditional_test')\n\n  model_train = model.Curl(\n      prior_train,\n      latent_decoder,\n      data_decoder,\n      shared_encoder,\n      cluster_encoder,\n      latent_encoder,\n      n_y_active,\n      is_training=True,\n      name='curl_train')\n  model_eval = model.Curl(\n      prior_test,\n      latent_decoder,\n      data_decoder,\n      shared_encoder,\n      cluster_encoder,\n      latent_encoder,\n      n_y_active,\n      is_training=False,\n      name='curl_test')\n\n  # Set up training graph\n  y_train = label_train if train_supervised else None\n  y_valid = label_valid if train_supervised else None\n  y_test = label_test if train_supervised else None\n\n  train_ops = setup_training_and_eval_graphs(\n      x_train,\n      label_train,\n      y_train,\n      n_y,\n      model_train,\n      classify_with_samples,\n      is_training=True,\n      name='train')\n\n  hiddens_for_clf = model_eval.get_shared_rep(x_train_for_clf,\n                                              is_training=False)\n  cat_for_clf = model_eval.infer_cluster(hiddens_for_clf)\n\n  if classify_with_samples:\n    latents_for_clf = model_eval.infer_latent(\n        hiddens=hiddens_for_clf, y=tf.to_float(cat_for_clf.sample())).sample()\n  else:\n    latents_for_clf = model_eval.infer_latent(\n        hiddens=hiddens_for_clf, y=tf.to_float(cat_for_clf.mode())).mean()\n\n  # Set up validation graph\n  if valid_data is not None:\n    valid_ops = setup_training_and_eval_graphs(\n        x_valid,\n        label_valid,\n        y_valid,\n        n_y,\n        model_eval,\n        classify_with_samples,\n        is_training=False,\n        name='valid')\n\n  # Set up test graph\n  test_ops = setup_training_and_eval_graphs(\n      x_test,\n      label_test,\n      y_test,\n      n_y,\n      model_eval,\n      classify_with_samples,\n      is_training=False,\n      name='test')\n\n  # Set up optimizer (with scheduler).\n  global_step = tf.train.get_or_create_global_step()\n  lr_schedule = [\n      tf.cast(el * num_train_examples / batch_size, tf.int64)\n      for el in lr_schedule\n  ]\n  num_schedule_steps = tf.reduce_sum(\n      tf.cast(global_step >= lr_schedule, tf.float32))\n  lr = float(lr_init) * float(lr_factor)**num_schedule_steps\n  optimizer = tf.train.AdamOptimizer(learning_rate=lr)\n  with tf.control_dependencies(tf.get_collection(tf.GraphKeys.UPDATE_OPS)):\n    train_step = optimizer.minimize(train_ops.elbo)\n    train_step_supervised = optimizer.minimize(train_ops.elbo_supervised)\n\n    # For dynamic expansion, we want to train only new-component-related params\n    cat_params = tf.get_collection(\n        tf.GraphKeys.TRAINABLE_VARIABLES,\n        'cluster_encoder/mlp_cluster_encoder_final')\n    component_params = tf.get_collection(\n        tf.GraphKeys.TRAINABLE_VARIABLES,\n        'latent_encoder/mlp_latent_encoder_*')\n    prior_params = tf.get_collection(\n        tf.GraphKeys.TRAINABLE_VARIABLES,\n        'latent_decoder/latent_prior*')\n\n    train_step_expansion = optimizer.minimize(\n        train_ops.elbo_supervised,\n        var_list=cat_params+component_params+prior_params)\n\n  # Set up ops for generative replay\n  if gen_every_n > 0:\n    # How many generative batches will we use each period?\n    gen_buffer_size = min(\n        int(gen_refresh_period / gen_every_n), max_gen_batches)\n\n    # Class each sample should be drawn from (default to uniform prior)\n    y_gen = tfp.distributions.OneHotCategorical(\n        probs=np.ones((batch_size, n_y)) / n_y,\n        dtype=tf.float32,\n        name='extra_train_classes').sample()\n\n    gen_samples = model_train.sample(y=y_gen, mean=True)\n    if dataset == 'mnist' or dataset == 'omniglot':\n      gen_samples = binarize_fn(gen_samples)\n\n  # Set up ops to dynamically modify parameters (for dynamic expansion)\n  dynamic_ops = setup_dynamic_ops(n_y)\n\n  logging.info('Created computation graph.')\n\n  n_steps_per_class = n_steps / n_classes  # pylint: disable=invalid-name\n\n  cumulative_component_counts = np.array([0] * n_y).astype(float)\n  recent_component_counts = np.array([0] * n_y).astype(float)\n\n  gen_buffer_ind = 0\n\n  # Buffer of poorly explained data (if we're doing dynamic expansion).\n  poor_data_buffer = []\n  poor_data_labels = []\n  all_full_poor_data_buffers = []\n  all_full_poor_data_labels = []\n  has_expanded = False\n  steps_since_expansion = 0\n  gen_buffer_ind = 0\n  eligible_for_expansion = False  # Flag to ensure we wait a bit after expansion\n\n  # Set up basic ops to run and quantities to log.\n  ops_to_run = {\n      'train_ELBO': train_ops.elbo,\n      'train_log_p_x': train_ops.log_p_x,\n      'train_kl_y': train_ops.kl_y,\n      'train_kl_z': train_ops.kl_z,\n      'train_ll': train_ops.ll,\n      'train_batch_purity': train_ops.purity,\n      'train_probs': train_ops.cat_probs,\n      'n_y_active': n_y_active\n  }\n  if valid_data is not None:\n    valid_ops_to_run = {\n        'valid_ELBO': valid_ops.elbo,\n        'valid_kl_y': valid_ops.kl_y,\n        'valid_kl_z': valid_ops.kl_z,\n        'valid_confusion': valid_ops.confusion\n    }\n  else:\n    valid_ops_to_run = {}\n  test_ops_to_run = {\n      'test_ELBO': test_ops.elbo,\n      'test_kl_y': test_ops.kl_y,\n      'test_kl_z': test_ops.kl_z,\n      'test_confusion': test_ops.confusion\n  }\n  to_log = ['train_batch_purity']\n  to_log_eval = ['test_purity', 'test_ELBO', 'test_kl_y', 'test_kl_z']\n  if valid_data is not None:\n    to_log_eval += ['valid_ELBO', 'valid_purity']\n\n  if train_supervised:\n    # Track supervised losses, train on supervised loss.\n    ops_to_run.update({\n        'train_ELBO_supervised': train_ops.elbo_supervised,\n        'train_log_p_x_supervised': train_ops.log_p_x_supervised,\n        'train_kl_y_supervised': train_ops.kl_y_supervised,\n        'train_kl_z_supervised': train_ops.kl_z_supervised,\n        'train_ll_supervised': train_ops.ll_supervised\n    })\n    default_train_step = train_step_supervised\n    to_log += [\n        'train_ELBO_supervised', 'train_log_p_x_supervised',\n        'train_kl_y_supervised', 'train_kl_z_supervised'\n    ]\n  else:\n    # Track unsupervised losses, train on unsupervised loss.\n    ops_to_run.update({\n        'train_ELBO': train_ops.elbo,\n        'train_kl_y': train_ops.kl_y,\n        'train_kl_z': train_ops.kl_z,\n        'train_ll': train_ops.ll\n    })\n    default_train_step = train_step\n    to_log += ['train_ELBO', 'train_kl_y', 'train_kl_z']\n\n  with tf.train.SingularMonitoredSession() as sess:\n\n    for step in range(n_steps):\n      feed_dict = {}\n\n      # Use the default training loss, but vary it each step depending on the\n      # training scenario (eg. for supervised gen replay, we alternate losses)\n      ops_to_run['train_step'] = default_train_step\n\n      ### 1) PERIODICALLY TAKE SNAPSHOTS FOR GENERATIVE REPLAY ###\n      if (gen_refresh_period and step % gen_refresh_period == 0 and\n          gen_every_n > 0):\n\n        # First, increment cumulative count and reset recent probs count.\n        cumulative_component_counts += recent_component_counts\n        recent_component_counts = np.zeros(n_y)\n\n        # Generate enough samples for the rest of the next period\n        # (Functionally equivalent to storing and sampling from the model).\n        gen_buffer_images, gen_buffer_labels = get_generated_data(\n            sess=sess,\n            gen_op=gen_samples,\n            y_input=y_gen,\n            gen_buffer_size=gen_buffer_size,\n            component_counts=cumulative_component_counts)\n\n      ### 2) DECIDE WHICH DATA SOURCE TO USE (GENERATIVE OR REAL DATA) ###\n      periodic_refresh_started = (\n          gen_refresh_period and step >= gen_refresh_period)\n      refresh_on_expansion_started = (gen_refresh_on_expansion and has_expanded)\n      if ((periodic_refresh_started or refresh_on_expansion_started) and\n          gen_every_n > 0 and step % gen_every_n == 1):\n        # Use generated data for the training batch\n        used_real_data = False\n\n        s = gen_buffer_ind * batch_size\n        e = (gen_buffer_ind + 1) * batch_size\n\n        gen_data_array = {\n            'image': gen_buffer_images[s:e],\n            'label': gen_buffer_labels[s:e]\n        }\n        gen_buffer_ind = (gen_buffer_ind + 1) % gen_buffer_size\n\n        # Feed it as x_train because it's already reshaped and binarized.\n        feed_dict.update({\n            x_train: gen_data_array['image'],\n            label_train: gen_data_array['label']\n        })\n\n        if use_supervised_replay:\n          # Convert label to one-hot before feeding in.\n          gen_label_onehot = np.eye(n_y)[gen_data_array['label']]\n          feed_dict.update({model_train.y_label: gen_label_onehot})\n          ops_to_run['train_step'] = train_step_supervised\n\n      else:\n        # Else use the standard training data sources.\n        used_real_data = True\n\n        # Select appropriate data source for iid or sequential setup.\n        if training_data_type == 'sequential':\n          current_data_period = int(\n              min(step / n_steps_per_class, len(train_data) - 1))\n\n          # If training supervised, set n_y_active directly based on how many\n          # classes have been seen\n          if train_supervised:\n            assert not dynamic_expansion\n            n_y_active_np = n_concurrent_classes * (\n                current_data_period // n_concurrent_classes +1)\n            n_y_active.load(n_y_active_np, sess)\n\n          train_data_array = sess.run(train_data[current_data_period])\n\n          # If we are blending classes, figure out where we are in the data\n          # period and add some fraction of other samples.\n          if blend_classes:\n            # If in the first quarter, blend in examples from the previous class\n            if (step % n_steps_per_class < n_steps_per_class / 4 and\n                current_data_period > 0):\n              other_train_data_array = sess.run(\n                  train_data[current_data_period - 1])\n\n              num_other = int(\n                  (n_steps_per_class / 2 - 2 *\n                   (step % n_steps_per_class)) * batch_size / n_steps_per_class)\n              other_inds = np.random.permutation(batch_size)[:num_other]\n\n              train_data_array[image_key][:num_other] = other_train_data_array[\n                  image_key][other_inds]\n              train_data_array[label_key][:num_other] = other_train_data_array[\n                  label_key][other_inds]\n\n            # If in the last quarter, blend in examples from the next class\n            elif (step % n_steps_per_class > 3 * n_steps_per_class / 4 and\n                  current_data_period < n_classes - 1):\n              other_train_data_array = sess.run(train_data[current_data_period +\n                                                           1])\n\n              num_other = int(\n                  (2 * (step % n_steps_per_class) - 3 * n_steps_per_class / 2) *\n                  batch_size / n_steps_per_class)\n              other_inds = np.random.permutation(batch_size)[:num_other]\n\n              train_data_array[image_key][:num_other] = other_train_data_array[\n                  image_key][other_inds]\n              train_data_array['label'][:num_other] = other_train_data_array[\n                  label_key][other_inds]\n\n            # Otherwise, just use the current class\n\n        else:\n          train_data_array = sess.run(train_data)\n\n        feed_dict.update({\n            x_train_raw: train_data_array[image_key],\n            label_train: train_data_array[label_key]\n        })\n\n      ### 3) PERFORM A GRADIENT STEP ###\n      results = sess.run(ops_to_run, feed_dict=feed_dict)\n      del results['train_step']\n\n      ### 4) COMPUTE ADDITIONAL DIAGNOSTIC OPS ON VALIDATION/TEST SETS. ###\n      if (step+1) % report_interval == 0:\n        if valid_data is not None:\n          logging.info('Evaluating on validation and test set!')\n          proc_ops = {\n              k: (np.sum if 'confusion' in k\n                  else np.mean) for k in valid_ops_to_run\n          }\n          results.update(\n              process_dataset(\n                  dataset_ops.valid_iter,\n                  valid_ops_to_run,\n                  sess,\n                  feed_dict=feed_dict,\n                  processing_ops=proc_ops))\n          results['valid_purity'] = compute_purity(results['valid_confusion'])\n        else:\n          logging.info('Evaluating on test set!')\n          proc_ops = {\n              k: (np.sum if 'confusion' in k\n                  else np.mean) for k in test_ops_to_run\n          }\n        results.update(process_dataset(dataset_ops.test_iter,\n                                       test_ops_to_run,\n                                       sess,\n                                       feed_dict=feed_dict,\n                                       processing_ops=proc_ops))\n        results['test_purity'] = compute_purity(results['test_confusion'])\n        curr_to_log = to_log + to_log_eval\n      else:\n        curr_to_log = list(to_log)  # copy to prevent in-place modifications\n\n      ### 5) DYNAMIC EXPANSION ###\n      if dynamic_expansion and used_real_data:\n        # If we're doing dynamic expansion and below max capacity then add\n        # poorly defined data points to a buffer.\n\n        # First check whether the model is eligible for expansion (the model\n        # becomes ineligible for a fixed time after each expansion, and when\n        # it has hit max capacity).\n        if (steps_since_expansion >= exp_wait_steps and step >= exp_burn_in and\n            n_y_active_np < n_y):\n          eligible_for_expansion = True\n\n        steps_since_expansion += 1\n\n        if eligible_for_expansion:\n          # Add poorly explained data samples to a buffer.\n          poor_inds = results['train_ll'] < ll_thresh\n          poor_data_buffer.extend(feed_dict[x_train_raw][poor_inds])\n          poor_data_labels.extend(feed_dict[label_train][poor_inds])\n\n          n_poor_data = len(poor_data_buffer)\n\n          # If buffer is big enough, then add a new component and train just the\n          # new component with several steps of gradient descent.\n          # (We just feed in a onehot cluster vector to indicate which\n          # component).\n          if n_poor_data >= exp_buffer_size:\n            # Dump the buffers so we can log them.\n            all_full_poor_data_buffers.append(poor_data_buffer)\n            all_full_poor_data_labels.append(poor_data_labels)\n\n            # Take a new generative snapshot if specified.\n            if gen_refresh_on_expansion and gen_every_n > 0:\n              # Increment cumulative count and reset recent probs count.\n              cumulative_component_counts += recent_component_counts\n              recent_component_counts = np.zeros(n_y)\n\n              gen_buffer_images, gen_buffer_labels = get_generated_data(\n                  sess=sess,\n                  gen_op=gen_samples,\n                  y_input=y_gen,\n                  gen_buffer_size=gen_buffer_size,\n                  component_counts=cumulative_component_counts)\n\n            # Cull to a multiple of batch_size (keep the later data samples).\n            n_poor_batches = int(n_poor_data / batch_size)\n            poor_data_buffer = poor_data_buffer[-(n_poor_batches * batch_size):]\n            poor_data_labels = poor_data_labels[-(n_poor_batches * batch_size):]\n\n            # Find most probable component (on poor batch).\n            poor_cprobs = []\n            for bs in range(n_poor_batches):\n              poor_cprobs.append(\n                  sess.run(\n                      train_ops.cat_probs,\n                      feed_dict={\n                          x_train_raw:\n                              poor_data_buffer[bs * batch_size:(bs + 1) *\n                                               batch_size]\n                      }))\n            best_cluster = np.argmax(np.sum(np.vstack(poor_cprobs), axis=0))\n\n            # Initialize parameters of the new component from most prob\n            # existing.\n            new_cluster = n_y_active_np\n\n            copy_component_params(best_cluster, new_cluster, sess,\n                                  **dynamic_ops)\n\n            # Increment mixture component count n_y_active.\n            n_y_active_np += 1\n            n_y_active.load(n_y_active_np, sess)\n\n            # Perform a number of steps of gradient descent on the data buffer,\n            # training only the new component (supervised loss).\n            for _ in range(num_buffer_train_steps):\n              for bs in range(n_poor_batches):\n                x_batch = poor_data_buffer[bs * batch_size:(bs + 1) *\n                                           batch_size]\n                label_batch = [new_cluster] * batch_size\n                label_onehot_batch = np.eye(n_y)[label_batch]\n                _ = sess.run(\n                    train_step_expansion,\n                    feed_dict={\n                        x_train_raw: x_batch,\n                        model_train.y_label: label_onehot_batch\n                    })\n\n            # Empty the buffer.\n            poor_data_buffer = []\n            poor_data_labels = []\n\n            # Reset the threshold flag so we have a burn in before the next\n            # component.\n            eligible_for_expansion = False\n            has_expanded = True\n            steps_since_expansion = 0\n\n      # Accumulate counts.\n      if used_real_data:\n        train_cat_probs_vals = results['train_probs']\n        recent_component_counts += np.sum(\n            train_cat_probs_vals, axis=0).astype(float)\n\n      ### 6) LOGGING AND EVALUATION ###\n      cleanup_for_print = lambda x: ', {}: %.{}f'.format(\n          x.capitalize().replace('_', ' '), 3)\n      log_str = 'Iteration %d'\n      log_str += ''.join([cleanup_for_print(el) for el in curr_to_log])\n      log_str += ' n_active: %d'\n      logging.info(\n          log_str,\n          *([step] + [results[el] for el in curr_to_log] + [n_y_active_np]))\n\n      # Periodically perform evaluation\n      if (step + 1) % report_interval == 0:\n\n        # Report test purity and related measures\n        logging.info(\n            'Iteration %d, Test purity: %.3f, Test ELBO: %.3f, Test '\n            'KLy: %.3f, Test KLz: %.3f', step, results['test_purity'],\n            results['test_ELBO'], results['test_kl_y'], results['test_kl_z'])\n        # Flush data only once in a while to allow buffering of data for more\n        # efficient writes.\n        results['all_full_poor_data_buffers'] = all_full_poor_data_buffers\n        results['all_full_poor_data_labels'] = all_full_poor_data_labels\n        logging.info('Also training a classifier in latent space')\n\n        # Perform knn classification from latents, to evaluate discriminability.\n\n        # Get and encode training and test datasets.\n        clf_train_vals = process_dataset(\n            dataset_ops.train_iter_for_clf, {\n                'latents': latents_for_clf,\n                'labels': train_data_for_clf[label_key]\n            },\n            sess,\n            feed_dict,\n            aggregation_ops=np.concatenate)\n        clf_test_vals = process_dataset(\n            dataset_ops.test_iter, {\n                'latents': test_ops.latents,\n                'labels': test_data[label_key]\n            },\n            sess,\n            aggregation_ops=np.concatenate)\n\n        # Perform knn classification.\n        knn_models = []\n        for nval in knn_values:\n          # Fit training dataset.\n          clf = neighbors.KNeighborsClassifier(n_neighbors=nval)\n          clf.fit(clf_train_vals['latents'], clf_train_vals['labels'])\n          knn_models.append(clf)\n\n          results['train_' + str(nval) + 'nn_acc'] = clf.score(\n              clf_train_vals['latents'], clf_train_vals['labels'])\n\n          # Get test performance.\n          results['test_' + str(nval) + 'nn_acc'] = clf.score(\n              clf_test_vals['latents'], clf_test_vals['labels'])\n\n          logging.info(\n              'Iteration %d %d-NN classifier accuracies, Training: '\n              '%.3f, Test: %.3f', step, nval,\n              results['train_' + str(nval) + 'nn_acc'],\n              results['test_' + str(nval) + 'nn_acc'])\n"
  },
  {
    "path": "curl/unit_test.py",
    "content": "################################################################################\n# Copyright 2019 DeepMind Technologies Limited\n#\n#     Licensed under the Apache License, Version 2.0 (the \"License\");\n#     you may not use this file except in compliance with the License.\n#     You may obtain a copy of the License at\n#\n#         https://www.apache.org/licenses/LICENSE-2.0\n#\n#     Unless required by applicable law or agreed to in writing, software\n#     distributed under the License is distributed on an \"AS IS\" BASIS,\n#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n#     See the License for the specific language governing permissions and\n#     limitations under the License.\n################################################################################\n\"\"\"Tests for curl.\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nfrom absl.testing import absltest\n\nfrom curl import training\n\n\nclass TrainingTest(absltest.TestCase):\n\n  def testRunTraining(self):\n\n    training.run_training(\n        dataset='mnist',\n        output_type='bernoulli',\n        n_y=10,\n        n_y_active=1,\n        training_data_type='sequential',\n        n_concurrent_classes=1,\n        lr_init=1e-3,\n        lr_factor=1.,\n        lr_schedule=[1],\n        blend_classes=False,\n        train_supervised=False,\n        n_steps=1000,\n        report_interval=1000,\n        knn_values=[3],\n        random_seed=1,\n        encoder_kwargs={\n            'encoder_type': 'multi',\n            'n_enc': [1200, 600, 300, 150],\n            'enc_strides': [1],\n        },\n        decoder_kwargs={\n            'decoder_type': 'single',\n            'n_dec': [500, 500],\n            'dec_up_strides': None,\n        },\n        n_z=32,\n        dynamic_expansion=True,\n        ll_thresh=-200.0,\n        classify_with_samples=False,\n        gen_replay_type='fixed',\n        use_supervised_replay=False,\n        )\n\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "curl/utils.py",
    "content": "################################################################################\n# Copyright 2019 DeepMind Technologies Limited\n#\n#     Licensed under the Apache License, Version 2.0 (the \"License\");\n#     you may not use this file except in compliance with the License.\n#     You may obtain a copy of the License at\n#\n#         https://www.apache.org/licenses/LICENSE-2.0\n#\n#     Unless required by applicable law or agreed to in writing, software\n#     distributed under the License is distributed on an \"AS IS\" BASIS,\n#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n#     See the License for the specific language governing permissions and\n#     limitations under the License.\n################################################################################\n\"\"\"Some common utils.\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nfrom absl import logging\nimport tensorflow.compat.v1 as tf\nimport tensorflow_probability as tfp\n\n\ndef generate_gaussian(logits, sigma_nonlin, sigma_param):\n  \"\"\"Generate a Gaussian distribution given a selected parameterisation.\"\"\"\n\n  mu, sigma = tf.split(value=logits, num_or_size_splits=2, axis=1)\n\n  if sigma_nonlin == 'exp':\n    sigma = tf.exp(sigma)\n  elif sigma_nonlin == 'softplus':\n    sigma = tf.nn.softplus(sigma)\n  else:\n    raise ValueError('Unknown sigma_nonlin {}'.format(sigma_nonlin))\n\n  if sigma_param == 'var':\n    sigma = tf.sqrt(sigma)\n  elif sigma_param != 'std':\n    raise ValueError('Unknown sigma_param {}'.format(sigma_param))\n\n  return tfp.distributions.Normal(loc=mu, scale=sigma)\n\n\ndef construct_prior_probs(batch_size, n_y, n_y_active):\n  \"\"\"Construct the uniform prior probabilities.\n\n  Args:\n    batch_size: int, the size of the batch.\n    n_y: int, the number of categorical cluster components.\n    n_y_active: tf.Variable, the number of components that are currently in use.\n\n  Returns:\n    Tensor representing the prior probability matrix, size of [batch_size, n_y].\n  \"\"\"\n  probs = tf.ones((batch_size, n_y_active)) / tf.cast(\n      n_y_active, dtype=tf.float32)\n  paddings1 = tf.stack([tf.constant(0), tf.constant(0)], axis=0)\n  paddings2 = tf.stack([tf.constant(0), n_y - n_y_active], axis=0)\n  paddings = tf.stack([paddings1, paddings2], axis=1)\n  probs = tf.pad(probs, paddings, constant_values=1e-12)\n  probs.set_shape((batch_size, n_y))\n  logging.info('Prior shape: %s', str(probs.shape))\n  return probs\n\n\ndef maybe_center_crop(layer, target_hw):\n  \"\"\"Center crop the layer to match a target shape.\"\"\"\n  l_height, l_width = layer.shape.as_list()[1:3]\n  t_height, t_width = target_hw\n  assert t_height <= l_height and t_width <= l_width\n\n  if (l_height - t_height) % 2 != 0 or (l_width - t_width) % 2 != 0:\n    logging.warn(\n        'It is impossible to center-crop [%d, %d] into [%d, %d].'\n        ' Crop will be uneven.', t_height, t_width, l_height, l_width)\n\n  border = int((l_height - t_height) / 2)\n  x_0, x_1 = border, l_height - border\n  border = int((l_width - t_width) / 2)\n  y_0, y_1 = border, l_width - border\n  layer_cropped = layer[:, x_0:x_1, y_0:y_1, :]\n  return layer_cropped\n"
  },
  {
    "path": "density_functional_approximation_dm21/.bazelrc",
    "content": "# The following configuration has been taken from the TensorFlow 2.11.0 release.\n#\n# TensorFlow Bazel configuration file.\n# This file tries to group and simplify build options for TensorFlow\n#\n# ----CONFIG OPTIONS----\n# Android options:\n#    android:\n#    android_arm:\n#    android_arm64:\n#    android_x86:\n#    android_x86_64:\n#\n# iOS options:\n#     ios:\n#     ios_armv7:\n#     ios_arm64:\n#     ios_i386:\n#     ios_x86_64:\n#     ios_fat:\n#\n# Macosx options\n#     darwin_arm64:\n#\n# Compiler options:\n#     cuda_clang:             Use clang when building CUDA code.\n#     avx_linux:              Build with avx instruction set on linux.\n#     avx2_linux:             Build with avx2 instruction set on linux.\n#     native_arch_linux:      Build with instruction sets available to the host machine on linux\n#     avx_win:                Build with avx instruction set on windows\n#     avx2_win:               Build with avx2 instruction set on windows\n#\n# Other build options:\n#     short_logs:       Only log errors during build, skip warnings.\n#     verbose_logs:     Show all compiler warnings during build.\n#     monolithic:       Build all TF C++ code into a single shared object.\n#     dynamic_kernels:  Try to link all kernels dynamically (experimental).\n#     libc++:           Link against libc++ instead of stdlibc++\n#     asan:             Build with the clang address sanitizer\n#     msan:             Build with the clang memory sanitizer\n#     ubsan:            Build with the clang undefined behavior sanitizer\n#     dbg:              Build with debug info\n#\n#\n# TF version options;\n#     v1: Build TF V1 (without contrib)\n#     v2: Build TF v2\n#\n# Feature and Third party library support options:\n#     xla:          Build TF with XLA\n#     tpu:          Build TF with TPU support\n#     cuda:         Build with full cuda support.\n#     rocm:         Build with AMD GPU support (rocm).\n#     mkl:          Enable full mkl support.\n#     tensorrt:     Enable Tensorrt support.\n#     numa:         Enable numa using hwloc.\n#     noaws:        Disable AWS S3 storage support\n#     nogcp:        Disable GCS support.\n#     nohdfs:       Disable hadoop hdfs support.\n#     nonccl:       Disable nccl support.\n#\n#\n# Remote build execution options (only configured to work with TF team projects for now.)\n#     rbe:       General RBE options shared by all flavors.\n#     rbe_linux: General RBE options used on all linux builds.\n#     rbe_win:   General RBE options used on all windows builds.\n#\n#     rbe_cpu_linux:                  RBE options to build with only CPU support.\n#     rbe_linux_cuda_nvcc_py*:        RBE options to build with GPU support using nvcc.\n#\n#     rbe_linux_py3:        Linux Python 3 RBE config\n#\n#     rbe_win_py37: Windows Python 3.7 RBE config\n#     rbe_win_py38: Windows Python 3.8 RBE config\n#     rbe_win_py39: Windows Python 3.9 RBE config\n#     rbe_win_py310: Windows Python 3.10 RBE config\n#\n#     tensorflow_testing_rbe_linux: RBE options to use RBE with tensorflow-testing project on linux\n#     tensorflow_testing_rbe_win:   RBE options to use RBE with tensorflow-testing project on windows\n#\n#     rbe_lite_linux: RBE options to build TF Lite.\n#\n# Embedded Linux options (experimental and only tested with TFLite build yet)\n#     elinux:          General Embedded Linux options shared by all flavors.\n#     elinux_aarch64:  Embedded Linux options for aarch64 (ARM64) CPU support.\n#     elinux_armhf:    Embedded Linux options for armhf (ARMv7) CPU support.\n#\n# Release build options (for all operating systems)\n#     release_base:                    Common options for all builds on all operating systems.\n#     release_gpu_base:                Common options for GPU builds on Linux and Windows.\n#     release_cpu_linux:               Toolchain and CUDA options for Linux CPU builds.\n#     release_cpu_macos:               Toolchain and CUDA options for MacOS CPU builds.\n#     release_gpu_linux:               Toolchain and CUDA options for Linux GPU builds.\n#     release_cpu_windows:             Toolchain and CUDA options for Windows CPU builds.\n#     release_gpu_windows:             Toolchain and CUDA options for Windows GPU builds.\n\n# Default build options. These are applied first and unconditionally.\n\n# For projects which use TensorFlow as part of a Bazel build process, putting\n# nothing in a bazelrc will default to a monolithic build. The following line\n# opts in to modular op registration support by default.\nbuild --define framework_shared_object=true\nbuild --define tsl_protobuf_header_only=true\n\nbuild --define=use_fast_cpp_protos=true\nbuild --define=allow_oversize_protos=true\n\nbuild --spawn_strategy=standalone\nbuild -c opt\n\n# Make Bazel print out all options from rc files.\nbuild --announce_rc\n\n# TODO(mihaimaruseac): Document this option or remove if no longer needed\nbuild --define=grpc_no_ares=true\n\n# See https://github.com/bazelbuild/bazel/issues/7362 for information on what\n# --incompatible_remove_legacy_whole_archive flag does.\n# This flag is set to true in Bazel 1.0 and newer versions. We tried to migrate\n# Tensorflow to the default, however test coverage wasn't enough to catch the\n# errors.\n# There is ongoing work on Bazel team's side to provide support for transitive\n# shared libraries. As part of migrating to transitive shared libraries, we\n# hope to provide a better mechanism for control over symbol exporting, and\n# then tackle this issue again.\n#\n# TODO: Remove this line once TF doesn't depend on Bazel wrapping all library\n# archives in -whole_archive -no_whole_archive.\nbuild --noincompatible_remove_legacy_whole_archive\n\n# TODO(mihaimaruseac): Document this option or remove if no longer needed\nbuild --enable_platform_specific_config\n\n# Enable XLA support by default.\nbuild --define=with_xla_support=true\n\n# TODO(mihaimaruseac): Document this option or remove if no longer needed\nbuild --config=short_logs\n\n# TODO(mihaimaruseac): Document this option or remove if no longer needed\nbuild --config=v2\n\n# Disable AWS/HDFS support by default\nbuild --define=no_aws_support=true\nbuild --define=no_hdfs_support=true\n\n# TF now has `cc_shared_library` targets, so it needs the experimental flag\n# TODO(rostam): Remove when `cc_shared_library` is enabled by default\nbuild --experimental_cc_shared_library\n\n# cc_shared_library ensures no library is linked statically more than once.\nbuild --experimental_link_static_libraries_once=false\n\n# Default options should come above this line.\n\n# Allow builds using libc++ as a linker library\n# This is mostly for OSSFuzz, so we also pass in the flags from environment to clean build file\nbuild:libc++ --action_env=CC\nbuild:libc++ --action_env=CXX\nbuild:libc++ --action_env=CXXFLAGS=-stdlib=libc++\nbuild:libc++ --action_env=PATH\nbuild:libc++ --define force_libcpp=enabled\nbuild:libc++ --linkopt -fuse-ld=lld\n\n# Android configs. Bazel needs to have --cpu and --fat_apk_cpu both set to the\n# target CPU to build transient dependencies correctly. See\n# https://docs.bazel.build/versions/master/user-manual.html#flag--fat_apk_cpu\nbuild:android --crosstool_top=//external:android/crosstool\nbuild:android --host_crosstool_top=@bazel_tools//tools/cpp:toolchain\nbuild:android_arm --config=android\nbuild:android_arm --cpu=armeabi-v7a\nbuild:android_arm --fat_apk_cpu=armeabi-v7a\nbuild:android_arm64 --config=android\nbuild:android_arm64 --cpu=arm64-v8a\nbuild:android_arm64 --fat_apk_cpu=arm64-v8a\nbuild:android_x86 --config=android\nbuild:android_x86 --cpu=x86\nbuild:android_x86 --fat_apk_cpu=x86\nbuild:android_x86_64 --config=android\nbuild:android_x86_64 --cpu=x86_64\nbuild:android_x86_64 --fat_apk_cpu=x86_64\n\n# Sets the default Apple platform to macOS.\nbuild:macos --apple_platform_type=macos\n\n# gRPC on MacOS requires this #define\nbuild:macos --copt=-DGRPC_BAZEL_BUILD\n\n# Settings for MacOS on ARM CPUs.\nbuild:macos_arm64 --cpu=darwin_arm64\nbuild:macos_arm64 --macos_minimum_os=11.0\n\n# iOS configs for each architecture and the fat binary builds.\nbuild:ios --apple_platform_type=ios\nbuild:ios --apple_bitcode=embedded --copt=-fembed-bitcode\nbuild:ios --copt=-Wno-c++11-narrowing\nbuild:ios_armv7 --config=ios\nbuild:ios_armv7 --cpu=ios_armv7\nbuild:ios_arm64 --config=ios\nbuild:ios_arm64 --cpu=ios_arm64\nbuild:ios_sim_arm64 --config=ios\nbuild:ios_sim_arm64 --cpu=ios_sim_arm64\nbuild:ios_i386 --config=ios\nbuild:ios_i386 --cpu=ios_i386\nbuild:ios_x86_64 --config=ios\nbuild:ios_x86_64 --cpu=ios_x86_64\nbuild:ios_fat --config=ios\nbuild:ios_fat --ios_multi_cpus=armv7,arm64,i386,x86_64\n\n# Config to use a mostly-static build and disable modular op registration\n# support (this will revert to loading TensorFlow with RTLD_GLOBAL in Python).\n# By default, TensorFlow will build with a dependence on\n# //tensorflow:libtensorflow_framework.so.\nbuild:monolithic --define framework_shared_object=false\nbuild:monolithic --define tsl_protobuf_header_only=false\nbuild:monolithic --experimental_link_static_libraries_once=false  # b/229868128\n\n# Please note that MKL on MacOS or windows is still not supported.\n# If you would like to use a local MKL instead of downloading, please set the\n# environment variable \"TF_MKL_ROOT\" every time before build.\nbuild:mkl --define=build_with_mkl=true --define=enable_mkl=true\nbuild:mkl --define=tensorflow_mkldnn_contraction_kernel=0\nbuild:mkl --define=build_with_openmp=true\nbuild:mkl -c opt\n\n# config to build OneDNN backend with a user specified threadpool.\nbuild:mkl_threadpool --define=build_with_mkl=true --define=enable_mkl=true\nbuild:mkl_threadpool --define=tensorflow_mkldnn_contraction_kernel=0\nbuild:mkl_threadpool --define=build_with_mkl_opensource=true\nbuild:mkl_threadpool -c opt\n\n# Config setting to build oneDNN with Compute Library for the Arm Architecture (ACL).\nbuild:mkl_aarch64 --define=build_with_mkl_aarch64=true\nbuild:mkl_aarch64 --define=build_with_openmp=true\nbuild:mkl_aarch64 --define=build_with_acl=true\nbuild:mkl_aarch64 -c opt\n\n# Config setting to build oneDNN with Compute Library for the Arm Architecture (ACL).\n# with Eigen threadpool support\nbuild:mkl_aarch64_threadpool --define=build_with_mkl_aarch64=true\nbuild:mkl_aarch64_threadpool -c opt\n\n# This config refers to building CUDA op kernels with nvcc.\nbuild:cuda --repo_env TF_NEED_CUDA=1\nbuild:cuda --crosstool_top=@local_config_cuda//crosstool:toolchain\nbuild:cuda --@local_config_cuda//:enable_cuda\n\n# This config refers to building CUDA op kernels with clang.\nbuild:cuda_clang --config=cuda\nbuild:cuda_clang --repo_env TF_CUDA_CLANG=1\nbuild:cuda_clang --@local_config_cuda//:cuda_compiler=clang\n\n# Debug config\nbuild:dbg -c dbg\n# Only include debug info for files under tensorflow/, excluding kernels, to\n# reduce the size of the debug info in the binary. This is because if the debug\n# sections in the ELF binary are too large, errors can occur. See\n# https://github.com/tensorflow/tensorflow/issues/48919.\n# Users can still include debug info for a specific kernel, e.g. with:\n#     --config=dbg --per_file_copt=+tensorflow/core/kernels/identity_op.*@-g\nbuild:dbg --per_file_copt=+.*,-tensorflow.*@-g0\nbuild:dbg --per_file_copt=+tensorflow/core/kernels.*@-g0\n# for now, disable arm_neon. see: https://github.com/tensorflow/tensorflow/issues/33360\nbuild:dbg --cxxopt -DTF_LITE_DISABLE_X86_NEON\n# AWS SDK must be compiled in release mode. see: https://github.com/tensorflow/tensorflow/issues/37498\nbuild:dbg --copt -DDEBUG_BUILD\n\n# Config to build TPU backend\nbuild:tpu --define=with_tpu_support=true\n\nbuild:tensorrt --repo_env TF_NEED_TENSORRT=1\n\nbuild:rocm --crosstool_top=@local_config_rocm//crosstool:toolchain\nbuild:rocm --define=using_rocm_hipcc=true\nbuild:rocm --define=tensorflow_mkldnn_contraction_kernel=0\nbuild:rocm --repo_env TF_NEED_ROCM=1\n# Disable unused-result on rocm builds.\nbuild:rocm --copt=\"-Wno-error=unused-result\"\n\n# Options extracted from configure script\nbuild:numa --define=with_numa_support=true\n\n# Options to disable default on features\nbuild:noaws --define=no_aws_support=true\nbuild:nogcp --define=no_gcp_support=true\nbuild:nohdfs --define=no_hdfs_support=true\nbuild:nonccl --define=no_nccl_support=true\n\nbuild:stackdriver_support --define=stackdriver_support=true\n\n# Modular TF build options\nbuild:dynamic_kernels --define=dynamic_loaded_kernels=true\nbuild:dynamic_kernels --copt=-DAUTOLOAD_DYNAMIC_KERNELS\n\n# Don't trigger --config=<host platform> when cross-compiling.\nbuild:android --noenable_platform_specific_config\nbuild:ios --noenable_platform_specific_config\n\n# Suppress all C++ compiler warnings, otherwise build logs become 10s of MBs.\nbuild:android --copt=-w\nbuild:ios --copt=-w\nbuild:linux --host_copt=-w\nbuild:macos --copt=-w\nbuild:windows --copt=/W0\nbuild:windows --host_copt=/W0\n\n# Suppress most C++ complier warnings to reduce log size but allow\n# for specific warnings to still be present.\nbuild:linux --copt=\"-Wno-all\"\nbuild:linux --copt=\"-Wno-extra\"\nbuild:linux --copt=\"-Wno-deprecated\"\nbuild:linux --copt=\"-Wno-deprecated-declarations\"\nbuild:linux --copt=\"-Wno-ignored-attributes\"\nbuild:linux --copt=\"-Wno-unknown-warning\"\nbuild:linux --copt=\"-Wno-array-parameter\"\nbuild:linux --copt=\"-Wno-stringop-overflow\"\nbuild:linux --copt=\"-Wno-array-bounds\"\n\n# Add unused-result as an error on Linux.\nbuild:linux --copt=\"-Wunused-result\"\nbuild:linux --copt=\"-Werror=unused-result\"\n\n# On Windows, `__cplusplus` is wrongly defined without this switch\n# See https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/\nbuild:windows --copt=/Zc:__cplusplus\nbuild:windows --host_copt=/Zc:__cplusplus\n\n# Tensorflow uses M_* math constants that only get defined by MSVC headers if\n# _USE_MATH_DEFINES is defined.\nbuild:windows --copt=/D_USE_MATH_DEFINES\nbuild:windows --host_copt=/D_USE_MATH_DEFINES\n\n# Windows has a relatively short command line limit, which TF has begun to hit.\n# See https://docs.bazel.build/versions/main/windows.html\nbuild:windows --features=compiler_param_file\n\n# Speed Windows compile times. Available in VS 16.4 (we are on 16.11). See\n# https://groups.google.com/a/tensorflow.org/d/topic/build/SsW98Eo7l3o/discussion\nbuild:windows --copt=/d2ReducedOptimizeHugeFunctions\nbuild:windows --host_copt=/d2ReducedOptimizeHugeFunctions\n\n# Default paths for TF_SYSTEM_LIBS\nbuild:linux --define=PREFIX=/usr\nbuild:linux --define=LIBDIR=$(PREFIX)/lib\nbuild:linux --define=INCLUDEDIR=$(PREFIX)/include\nbuild:linux --define=PROTOBUF_INCLUDE_PATH=$(PREFIX)/include\nbuild:macos --define=PREFIX=/usr\nbuild:macos --define=LIBDIR=$(PREFIX)/lib\nbuild:macos --define=INCLUDEDIR=$(PREFIX)/include\nbuild:macos --define=PROTOBUF_INCLUDE_PATH=$(PREFIX)/include\n# TF_SYSTEM_LIBS do not work on windows.\n\n# By default, build TF in C++ 17 mode.\nbuild:android --cxxopt=-std=c++17\nbuild:android --host_cxxopt=-std=c++17\nbuild:ios --cxxopt=-std=c++17\nbuild:ios --host_cxxopt=-std=c++17\nbuild:linux --cxxopt=-std=c++17\nbuild:linux --host_cxxopt=-std=c++17\nbuild:macos --cxxopt=-std=c++17\nbuild:macos --host_cxxopt=-std=c++17\nbuild:windows --cxxopt=/std:c++17\nbuild:windows --host_cxxopt=/std:c++17\n\n# On windows, we still link everything into a single DLL.\nbuild:windows --config=monolithic\n\n# On linux, we dynamically link small amount of kernels\nbuild:linux --config=dynamic_kernels\n\n# Make sure to include as little of windows.h as possible\nbuild:windows --copt=-DWIN32_LEAN_AND_MEAN\nbuild:windows --host_copt=-DWIN32_LEAN_AND_MEAN\nbuild:windows --copt=-DNOGDI\nbuild:windows --host_copt=-DNOGDI\n\n# MSVC (Windows): Standards-conformant preprocessor mode\n# See https://docs.microsoft.com/en-us/cpp/preprocessor/preprocessor-experimental-overview\nbuild:windows --copt=/experimental:preprocessor\nbuild:windows --host_copt=/experimental:preprocessor\n\n# Misc build options we need for windows.\nbuild:windows --linkopt=/DEBUG\nbuild:windows --host_linkopt=/DEBUG\nbuild:windows --linkopt=/OPT:REF\nbuild:windows --host_linkopt=/OPT:REF\nbuild:windows --linkopt=/OPT:ICF\nbuild:windows --host_linkopt=/OPT:ICF\n\n# Verbose failure logs when something goes wrong\nbuild:windows --verbose_failures\n\n# Work around potential issues with large command lines on windows.\n# See: https://github.com/bazelbuild/bazel/issues/5163\nbuild:windows --features=compiler_param_file\n\n# Do not risk cache corruption. See:\n# https://github.com/bazelbuild/bazel/issues/3360\nbuild:linux --experimental_guard_against_concurrent_changes\n\n# Configure short or long logs\nbuild:short_logs --output_filter=DONT_MATCH_ANYTHING\nbuild:verbose_logs --output_filter=\n\n# Instruction set optimizations\n# TODO(gunan): Create a feature in toolchains for avx/avx2 to\n#   avoid having to define linux/win separately.\nbuild:avx_linux --copt=-mavx\nbuild:avx_linux --host_copt=-mavx\nbuild:avx2_linux --copt=-mavx2\nbuild:native_arch_linux --copt=-march=native\nbuild:avx_win --copt=/arch=AVX\nbuild:avx2_win --copt=/arch=AVX2\n\n# Options to build TensorFlow 1.x or 2.x.\nbuild:v1 --define=tf_api_version=1 --action_env=TF2_BEHAVIOR=0\nbuild:v2 --define=tf_api_version=2 --action_env=TF2_BEHAVIOR=1\n\n# Disable XLA on mobile.\nbuild:xla     --define=with_xla_support=true # TODO: remove, it's on by default.\nbuild:android --define=with_xla_support=false\nbuild:ios     --define=with_xla_support=false\n\n# BEGIN TF REMOTE BUILD EXECUTION OPTIONS\n# Options when using remote execution\n# WARNING: THESE OPTIONS WONT WORK IF YOU DO NOT HAVE PROPER AUTHENTICATION AND PERMISSIONS\n\n# Flag to enable remote config\ncommon --experimental_repo_remote_exec\n\nbuild:rbe --repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1\nbuild:rbe --google_default_credentials\nbuild:rbe --bes_backend=buildeventservice.googleapis.com\nbuild:rbe --bes_results_url=\"https://source.cloud.google.com/results/invocations\"\nbuild:rbe --bes_timeout=600s\nbuild:rbe --define=EXECUTOR=remote\nbuild:rbe --flaky_test_attempts=3\nbuild:rbe --jobs=800\nbuild:rbe --remote_executor=grpcs://remotebuildexecution.googleapis.com\nbuild:rbe --remote_timeout=3600\nbuild:rbe --spawn_strategy=remote,worker,standalone,local\ntest:rbe --test_env=USER=anon\n# Attempt to minimize the amount of data transfer between bazel and the remote\n# workers:\nbuild:rbe --remote_download_toplevel\n\nbuild:rbe_linux_base --config=rbe\nbuild:rbe_linux_base --action_env=PATH=\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin\"\n\nbuild:rbe_linux --config=rbe_linux_base\n# Non-rbe settings we should include because we do not run configure\nbuild:rbe_linux --config=avx_linux\n# TODO(gunan): Check why we need this specified in rbe, but not in other builds.\nbuild:rbe_linux --linkopt=-lrt\nbuild:rbe_linux --host_linkopt=-lrt\nbuild:rbe_linux --linkopt=-lm\nbuild:rbe_linux --host_linkopt=-lm\n\n# Use the GPU toolchain until the CPU one is ready.\n# https://github.com/bazelbuild/bazel/issues/13623\nbuild:rbe_cpu_linux_base --host_crosstool_top=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_cuda//crosstool:toolchain\"\nbuild:rbe_cpu_linux_base --crosstool_top=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_cuda//crosstool:toolchain\"\nbuild:rbe_cpu_linux_base --extra_toolchains=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_cuda//crosstool:toolchain-linux-x86_64\"\nbuild:rbe_cpu_linux_base --extra_execution_platforms=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_platform//:platform\"\nbuild:rbe_cpu_linux_base --host_platform=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_platform//:platform\"\nbuild:rbe_cpu_linux_base --platforms=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_platform//:platform\"\n\nbuild:rbe_cpu_linux --config=rbe_linux\nbuild:rbe_cpu_linux --config=rbe_cpu_linux_base\n\nbuild:rbe_lite_linux --config=rbe_linux_base\nbuild:rbe_lite_linux --config=rbe_cpu_linux_base\nbuild:rbe_lite_linux --config=rbe_linux_py3_base\nbuild:rbe_lite_linux --noexperimental_check_desugar_deps\n\nbuild:rbe_linux_cuda_base --config=rbe_linux\nbuild:rbe_linux_cuda_base --config=cuda\nbuild:rbe_linux_cuda_base --config=tensorrt\nbuild:rbe_linux_cuda_base --action_env=TF_CUDA_VERSION=11\nbuild:rbe_linux_cuda_base --action_env=TF_CUDNN_VERSION=8\nbuild:rbe_linux_cuda_base --repo_env=REMOTE_GPU_TESTING=1\n# TensorRT 7 for CUDA 11.1 is compatible with CUDA 11.2, but requires\n# libnvrtc.so.11.1. See https://github.com/NVIDIA/TensorRT/issues/1064.\n# TODO(b/187962120): Remove when upgrading to TensorRT 8.\ntest:rbe_linux_cuda_base --test_env=LD_LIBRARY_PATH=\"/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda-11.1/lib64\"\n\nbuild:rbe_linux_cuda11.2_nvcc_base --config=rbe_linux_cuda_base\nbuild:rbe_linux_cuda11.2_nvcc_base --host_crosstool_top=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_cuda//crosstool:toolchain\"\nbuild:rbe_linux_cuda11.2_nvcc_base --crosstool_top=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_cuda//crosstool:toolchain\"\nbuild:rbe_linux_cuda11.2_nvcc_base --extra_toolchains=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_cuda//crosstool:toolchain-linux-x86_64\"\nbuild:rbe_linux_cuda11.2_nvcc_base --extra_execution_platforms=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_platform//:platform\"\nbuild:rbe_linux_cuda11.2_nvcc_base --host_platform=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_platform//:platform\"\nbuild:rbe_linux_cuda11.2_nvcc_base --platforms=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_platform//:platform\"\nbuild:rbe_linux_cuda11.2_nvcc_base --repo_env=TF_CUDA_CONFIG_REPO=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_cuda\"\nbuild:rbe_linux_cuda11.2_nvcc_base --repo_env=TF_TENSORRT_CONFIG_REPO=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_tensorrt\"\nbuild:rbe_linux_cuda11.2_nvcc_base --repo_env=TF_NCCL_CONFIG_REPO=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_nccl\"\nbuild:rbe_linux_cuda11.2_nvcc_py3.7 --config=rbe_linux_cuda11.2_nvcc_base --repo_env=TF_PYTHON_CONFIG_REPO=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_python3.7\"\nbuild:rbe_linux_cuda11.2_nvcc_py3.8 --config=rbe_linux_cuda11.2_nvcc_base --repo_env=TF_PYTHON_CONFIG_REPO=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_python3.8\"\nbuild:rbe_linux_cuda11.2_nvcc_py3.9 --config=rbe_linux_cuda11.2_nvcc_base --repo_env=TF_PYTHON_CONFIG_REPO=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_python3.9\"\nbuild:rbe_linux_cuda11.2_nvcc_py3.10 --config=rbe_linux_cuda11.2_nvcc_base --repo_env=TF_PYTHON_CONFIG_REPO=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_python3.10\"\n\n# Map default to CUDA 11.2.\nbuild:rbe_linux_cuda_nvcc_py37 --config=rbe_linux_cuda11.2_nvcc_py3.7\nbuild:rbe_linux_cuda_nvcc_py38 --config=rbe_linux_cuda11.2_nvcc_py3.8\nbuild:rbe_linux_cuda_nvcc_py39 --config=rbe_linux_cuda11.2_nvcc_py3.9\nbuild:rbe_linux_cuda_nvcc_py310 --config=rbe_linux_cuda11.2_nvcc_py3.10\n\n# Deprecated configs that people might still use.\nbuild:rbe_linux_cuda_nvcc --config=rbe_linux_cuda_nvcc_py39\nbuild:rbe_gpu_linux       --config=rbe_linux_cuda_nvcc\n\nbuild:rbe_linux_cuda_clang_base --config=rbe_linux_cuda_base\nbuild:rbe_linux_cuda_clang_base --repo_env TF_CUDA_CLANG=1\nbuild:rbe_linux_cuda_clang_base --@local_config_cuda//:cuda_compiler=clang\nbuild:rbe_linux_cuda_clang_base --crosstool_top=\"@ubuntu20.04-clang_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_cuda//crosstool:toolchain\"\nbuild:rbe_linux_cuda_clang_base --extra_toolchains=\"@ubuntu20.04-clang_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_cuda//crosstool:toolchain-linux-x86_64\"\nbuild:rbe_linux_cuda_clang_base --extra_execution_platforms=\"@ubuntu20.04-clang_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_platform//:platform\"\nbuild:rbe_linux_cuda_clang_base --host_platform=\"@ubuntu20.04-clang_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_platform//:platform\"\nbuild:rbe_linux_cuda_clang_base --platforms=\"@ubuntu20.04-clang_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_platform//:platform\"\nbuild:rbe_linux_cuda_clang_base --repo_env=TF_CUDA_CONFIG_REPO=\"@ubuntu20.04-clang_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_cuda\"\nbuild:rbe_linux_cuda_clang_base --repo_env=TF_TENSORRT_CONFIG_REPO=\"@ubuntu20.04-clang_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_tensorrt\"\nbuild:rbe_linux_cuda_clang_base --repo_env=TF_NCCL_CONFIG_REPO=\"@ubuntu20.04-clang_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_nccl\"\nbuild:rbe_linux_cuda_clang_py37 --config=rbe_linux_cuda_clang_base --repo_env=TF_PYTHON_CONFIG_REPO=\"@ubuntu20.04-clang_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_python3.7\"\nbuild:rbe_linux_cuda_clang_py38 --config=rbe_linux_cuda_clang_base --repo_env=TF_PYTHON_CONFIG_REPO=\"@ubuntu20.04-clang_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_python3.8\"\nbuild:rbe_linux_cuda_clang_py39 --config=rbe_linux_cuda_clang_base --repo_env=TF_PYTHON_CONFIG_REPO=\"@ubuntu20.04-clang_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_python3.9\"\nbuild:rbe_linux_cuda_clang_py310 --config=rbe_linux_cuda_clang_base --repo_env=TF_PYTHON_CONFIG_REPO=\"@ubuntu20.04-clang_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_python3.10\"\n\n# ROCm\nbuild:rbe_linux_rocm_base --config=rocm\nbuild:rbe_linux_rocm_base --config=rbe_linux\nbuild:rbe_linux_rocm_base --crosstool_top=\"@ubuntu20.04-gcc9_manylinux2014-rocm_config_rocm//crosstool:toolchain\"\nbuild:rbe_linux_rocm_base --extra_toolchains=\"@ubuntu20.04-gcc9_manylinux2014-rocm_config_rocm//crosstool:toolchain-linux-x86_64\"\nbuild:rbe_linux_rocm_base --extra_execution_platforms=\"@ubuntu20.04-gcc9_manylinux2014-rocm_config_platform//:platform\"\nbuild:rbe_linux_rocm_base --host_platform=\"@ubuntu20.04-gcc9_manylinux2014-rocm_config_platform//:platform\"\nbuild:rbe_linux_rocm_base --platforms=\"@ubuntu20.04-gcc9_manylinux2014-rocm_config_platform//:platform\"\nbuild:rbe_linux_rocm_base --action_env=TF_ROCM_CONFIG_REPO=\"@ubuntu20.04-gcc9_manylinux2014-rocm_config_rocm\"\nbuild:rbe_linux_rocm_py3.7 --config=rbe_linux_rocm_base --repo_env=TF_PYTHON_CONFIG_REPO=\"@ubuntu20.04-gcc9_manylinux2014-rocm_config_python3.7\"\nbuild:rbe_linux_rocm_py3.8 --config=rbe_linux_rocm_base --repo_env=TF_PYTHON_CONFIG_REPO=\"@ubuntu20.04-gcc9_manylinux2014-rocm_config_python3.8\"\nbuild:rbe_linux_rocm_py3.9 --config=rbe_linux_rocm_base --repo_env=TF_PYTHON_CONFIG_REPO=\"@ubuntu20.04-gcc9_manylinux2014-rocm_config_python3.9\"\nbuild:rbe_linux_rocm_py3.10 --config=rbe_linux_rocm_base --repo_env=TF_PYTHON_CONFIG_REPO=\"@ubuntu20.04-gcc9_manylinux2014-rocm_config_python3.10\"\n\n# Linux CPU\n\nbuild:rbe_linux_py3 --config=rbe_linux\nbuild:rbe_linux_py3 --config=rbe_linux_py3_base\nbuild:rbe_linux_py3_base --python_path=\"/usr/local/bin/python3.9\"\nbuild:rbe_linux_py3_base --repo_env=TF_PYTHON_CONFIG_REPO=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_python3.9\"\n\nbuild:rbe_win --config=rbe\nbuild:rbe_win --crosstool_top=\"//tensorflow/tools/toolchains/win/tf_win_06152022:toolchain\"\nbuild:rbe_win --extra_toolchains=\"//tensorflow/tools/toolchains/win/tf_win_06152022:cc-toolchain-x64_windows\"\nbuild:rbe_win --extra_execution_platforms=\"//tensorflow/tools/toolchains/win:rbe_windows_ltsc2019\"\nbuild:rbe_win --host_platform=\"//tensorflow/tools/toolchains/win:rbe_windows_ltsc2019\"\nbuild:rbe_win --platforms=\"//tensorflow/tools/toolchains/win:rbe_windows_ltsc2019\"\nbuild:rbe_win --shell_executable=C:\\\\tools\\\\msys64\\\\usr\\\\bin\\\\bash.exe\nbuild:rbe_win --experimental_strict_action_env=true\n\n# TODO(gunan): Remove once we use MSVC 2019 with latest patches.\nbuild:rbe_win --define=override_eigen_strong_inline=true\n\n# Don't build the python zip archive in the RBE build.\nbuild:rbe_win --remote_download_minimal\nbuild:rbe_win --enable_runfiles\nbuild:rbe_win --nobuild_python_zip\n\nbuild:rbe_win_py37 --config=rbe\nbuild:rbe_win_py37 --repo_env=TF_PYTHON_CONFIG_REPO=\"@windows_py37_config_python\"\nbuild:rbe_win_py37 --python_path=C:\\\\Python37\\\\python.exe\n\nbuild:rbe_win_py38 --config=rbe\nbuild:rbe_win_py38 --repo_env=PYTHON_BIN_PATH=C:\\\\Python38\\\\python.exe\nbuild:rbe_win_py38 --repo_env=PYTHON_LIB_PATH=C:\\\\Python38\\\\lib\\\\site-packages\nbuild:rbe_win_py38 --repo_env=TF_PYTHON_CONFIG_REPO=//tensorflow/tools/toolchains/win_1803/py38\nbuild:rbe_win_py38 --python_path=C:\\\\Python38\\\\python.exe\n\nbuild:rbe_win_py39 --config=rbe\nbuild:rbe_win_py39 --repo_env=PYTHON_BIN_PATH=C:\\\\Python39\\\\python.exe\nbuild:rbe_win_py39 --repo_env=PYTHON_LIB_PATH=C:\\\\Python39\\\\lib\\\\site-packages\nbuild:rbe_win_py39 --repo_env=TF_PYTHON_CONFIG_REPO=//tensorflow/tools/toolchains/win_1803/py39\nbuild:rbe_win_py39 --python_path=C:\\\\Python39\\\\python.exe\n\nbuild:rbe_win_py310 --config=rbe\nbuild:rbe_win_py310 --repo_env=PYTHON_BIN_PATH=C:\\\\Python310\\\\python.exe\nbuild:rbe_win_py310 --repo_env=PYTHON_LIB_PATH=C:\\\\Python310\\\\lib\\\\site-packages\nbuild:rbe_win_py310 --repo_env=TF_PYTHON_CONFIG_REPO=//tensorflow/tools/toolchains/win_1803/py310\nbuild:rbe_win_py310 --python_path=C:\\\\Python310\\\\python.exe\n\n# These you may need to change for your own GCP project.\nbuild:tensorflow_testing_rbe --project_id=tensorflow-testing\ncommon:tensorflow_testing_rbe_linux --remote_instance_name=projects/tensorflow-testing/instances/default_instance\nbuild:tensorflow_testing_rbe_linux --config=tensorflow_testing_rbe\n# Build GPU binaries for the RBE test machines (Tesla T4s).\nbuild:tensorflow_testing_rbe_linux --repo_env=TF_CUDA_COMPUTE_CAPABILITIES=sm_75\n\ncommon:tensorflow_testing_rbe_win --remote_instance_name=projects/tensorflow-testing/instances/windows\nbuild:tensorflow_testing_rbe_win --config=tensorflow_testing_rbe\n\n# TFLite build configs for generic embedded Linux\nbuild:elinux --crosstool_top=@local_config_embedded_arm//:toolchain\nbuild:elinux --host_crosstool_top=@bazel_tools//tools/cpp:toolchain\nbuild:elinux_aarch64 --config=elinux\nbuild:elinux_aarch64 --cpu=aarch64\nbuild:elinux_armhf --config=elinux\nbuild:elinux_armhf --cpu=armhf\nbuild:elinux_armhf --copt -mfp16-format=ieee\n# END TF REMOTE BUILD EXECUTION OPTIONS\n\n# Config-specific options should come above this line.\n\n# Load rc file written by ./configure.\ntry-import %workspace%/.tf_configure.bazelrc\n\n# Load rc file with user-specific options.\ntry-import %workspace%/.bazelrc.user\n\n# Here are bazelrc configs for release builds\nbuild:release_base --config=v2\ntest:release_base --flaky_test_attempts=3\ntest:release_base --test_size_filters=small,medium\n\nbuild:release_cpu_linux --config=release_base\nbuild:release_cpu_linux --config=avx_linux\nbuild:release_cpu_linux --crosstool_top=\"@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_cuda//crosstool:toolchain\"\ntest:release_cpu_linux --test_env=LD_LIBRARY_PATH\n\nbuild:release_cpu_macos --config=release_base\nbuild:release_cpu_macos --config=avx_linux\n\nbuild:release_gpu_base --config=cuda\nbuild:release_gpu_base --action_env=TF_CUDA_VERSION=\"11\"\nbuild:release_gpu_base --action_env=TF_CUDNN_VERSION=\"8\"\nbuild:release_gpu_base --repo_env=TF_CUDA_COMPUTE_CAPABILITIES=\"sm_35,sm_50,sm_60,sm_70,sm_75,compute_80\"\n\nbuild:release_gpu_linux --config=release_cpu_linux\nbuild:release_gpu_linux --config=release_gpu_base\nbuild:release_gpu_linux --config=tensorrt\nbuild:release_gpu_linux --action_env=CUDA_TOOLKIT_PATH=\"/usr/local/cuda-11.2\"\nbuild:release_gpu_linux --action_env=LD_LIBRARY_PATH=\"/usr/local/cuda:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda-11.1/lib64:/usr/local/tensorrt/lib\"\nbuild:release_gpu_linux --action_env=GCC_HOST_COMPILER_PATH=\"/dt9/usr/bin/gcc\"\nbuild:release_gpu_linux --crosstool_top=@ubuntu20.04-gcc9_manylinux2014-cuda11.2-cudnn8.1-tensorrt7.2_config_cuda//crosstool:toolchain\n\nbuild:release_cpu_windows --config=release_base\nbuild:release_cpu_windows --config=avx_win\nbuild:release_cpu_windows --define=no_tensorflow_py_deps=true\n\nbuild:release_gpu_windows --config=release_cpu_windows\nbuild:release_gpu_windows --config=release_gpu_base\n\n# Address sanitizer\n# CC=clang bazel build --config asan\nbuild:asan --strip=never\nbuild:asan --copt -fsanitize=address\nbuild:asan --copt -DADDRESS_SANITIZER\nbuild:asan --copt -g\nbuild:asan --copt -O3\nbuild:asan --copt -fno-omit-frame-pointer\nbuild:asan --linkopt -fsanitize=address\n\n# Memory sanitizer\n# CC=clang bazel build --config msan\nbuild:msan --strip=never\nbuild:msan --copt -fsanitize=memory\nbuild:msan --copt -DMEMORY_SANITIZER\nbuild:msan --copt -g\nbuild:msan --copt -O3\nbuild:msan --copt -fno-omit-frame-pointer\nbuild:msan --linkopt -fsanitize=memory\n\n# Undefined Behavior Sanitizer\n# CC=clang bazel build --config ubsan\nbuild:ubsan --strip=never\nbuild:ubsan --copt -fsanitize=undefined\nbuild:ubsan --copt -DUNDEFINED_BEHAVIOR_SANITIZER\nbuild:ubsan --copt -g\nbuild:ubsan --copt -O3\nbuild:ubsan --copt -fno-omit-frame-pointer\nbuild:ubsan --linkopt -fsanitize=undefined\nbuild:ubsan --linkopt -lubsan\n\n# Disable TFRT integration for now unless --config=tfrt is specified.\nbuild      --deleted_packages=tensorflow/compiler/mlir/tfrt,tensorflow/compiler/mlir/tfrt/benchmarks,tensorflow/compiler/mlir/tfrt/jit/python_binding,tensorflow/compiler/mlir/tfrt/jit/transforms,tensorflow/compiler/mlir/tfrt/python_tests,tensorflow/compiler/mlir/tfrt/tests,tensorflow/compiler/mlir/tfrt/tests/ir,tensorflow/compiler/mlir/tfrt/tests/analysis,tensorflow/compiler/mlir/tfrt/tests/jit,tensorflow/compiler/mlir/tfrt/tests/lhlo_to_tfrt,tensorflow/compiler/mlir/tfrt/tests/lhlo_to_jitrt,tensorflow/compiler/mlir/tfrt/tests/tf_to_corert,tensorflow/compiler/mlir/tfrt/tests/tf_to_tfrt_data,tensorflow/compiler/mlir/tfrt/tests/saved_model,tensorflow/compiler/mlir/tfrt/transforms/lhlo_gpu_to_tfrt_gpu,tensorflow/core/runtime_fallback,tensorflow/core/runtime_fallback/conversion,tensorflow/core/runtime_fallback/kernel,tensorflow/core/runtime_fallback/opdefs,tensorflow/core/runtime_fallback/runtime,tensorflow/core/runtime_fallback/util,tensorflow/core/tfrt/common,tensorflow/core/tfrt/eager,tensorflow/core/tfrt/eager/backends/cpu,tensorflow/core/tfrt/eager/backends/gpu,tensorflow/core/tfrt/eager/core_runtime,tensorflow/core/tfrt/eager/cpp_tests/core_runtime,tensorflow/core/tfrt/gpu,tensorflow/core/tfrt/run_handler_thread_pool,tensorflow/core/tfrt/runtime,tensorflow/core/tfrt/saved_model,tensorflow/core/tfrt/graph_executor,tensorflow/core/tfrt/saved_model/tests,tensorflow/core/tfrt/tpu,tensorflow/core/tfrt/utils\n# TODO(b/240450920): We are in the process of migrating JitRt backend to XLA\n# and while we are doing this we can't keep it buildable/testable in OSS.\nbuild:tfrt --deleted_packages=tensorflow/compiler/mlir/tfrt,tensorflow/compiler/mlir/tfrt/benchmarks,tensorflow/compiler/mlir/tfrt/jit/python_binding,tensorflow/compiler/mlir/tfrt/jit/transforms,tensorflow/compiler/mlir/tfrt/python_tests,tensorflow/compiler/mlir/tfrt/tests,tensorflow/compiler/mlir/tfrt/tests/ir,tensorflow/compiler/mlir/tfrt/tests/analysis,tensorflow/compiler/mlir/tfrt/tests/jit,tensorflow/compiler/mlir/tfrt/tests/lhlo_to_tfrt,tensorflow/compiler/mlir/tfrt/tests/lhlo_to_jitrt,tensorflow/compiler/mlir/tfrt/tests/tf_to_corert,tensorflow/compiler/mlir/tfrt/tests/tf_to_tfrt_data,tensorflow/compiler/mlir/tfrt/tests/saved_model,tensorflow/compiler/mlir/tfrt/transforms/lhlo_gpu_to_tfrt_gpu,tensorflow/core/runtime_fallback,tensorflow/core/runtime_fallback/conversion,tensorflow/core/runtime_fallback/kernel,tensorflow/core/runtime_fallback/opdefs,tensorflow/core/runtime_fallback/runtime,tensorflow/core/runtime_fallback/util,tensorflow/core/tfrt/common,tensorflow/core/tfrt/eager,tensorflow/core/tfrt/eager/backends/cpu,tensorflow/core/tfrt/eager/backends/gpu,tensorflow/core/tfrt/eager/core_runtime,tensorflow/core/tfrt/eager/cpp_tests/core_runtime,tensorflow/core/tfrt/gpu,tensorflow/core/tfrt/run_handler_thread_pool,tensorflow/core/tfrt/runtime,tensorflow/core/tfrt/saved_model,tensorflow/core/tfrt/graph_executor,tensorflow/core/tfrt/saved_model/tests,tensorflow/core/tfrt/tpu,tensorflow/core/tfrt/utils\n"
  },
  {
    "path": "density_functional_approximation_dm21/.bazelversion",
    "content": "5.3.0\n"
  },
  {
    "path": "density_functional_approximation_dm21/BUILD.bazel",
    "content": "\"\"\"DM21 functionals.\"\"\"\n\nload(\"@org_tensorflow//tensorflow/python/tools:tools.bzl\", \"saved_model_compile_aot\")\nload(\"@rules_python//python:defs.bzl\", \"py_binary\", \"py_library\")\nload(\"@external_py_deps//:requirements.bzl\", \"requirement\")\n\nlicenses([\"notice\"])\n\npy_library(\n    name = \"compute_hfx_density\",\n    srcs = [\"density_functional_approximation_dm21/compute_hfx_density.py\"],\n    srcs_version = \"PY3\",\n    deps = [\n        requirement(\"numpy\"),\n        requirement(\"pyscf\"),\n    ],\n)\n\npy_test(\n    name = \"compute_hfx_density_test\",\n    srcs = [\"density_functional_approximation_dm21/compute_hfx_density_test.py\"],\n    python_version = \"PY3\",\n    srcs_version = \"PY3\",\n    deps = [\n        \":compute_hfx_density\",\n        requirement(\"attrs\"),\n        requirement(\"numpy\"),\n        requirement(\"scipy\"),\n        requirement(\"pyscf\"),\n        \"@io_abseil_py//absl/testing:absltest\",\n        \"@io_abseil_py//absl/testing:parameterized\",\n    ],\n)\n\nfilegroup(\n    name = \"dm21_checkpoints\",\n    srcs = glob([\"density_functional_approximation_dm21/checkpoints/**\"]),\n)\n\npy_library(\n    name = \"neural_numint\",\n    srcs = [\"density_functional_approximation_dm21/neural_numint.py\"],\n    data = [\":dm21_checkpoints\"],\n    srcs_version = \"PY3\",\n    deps = [\n        \":compute_hfx_density\",\n        requirement(\"attrs\"),\n        requirement(\"keras\"),\n        requirement(\"numpy\"),\n        requirement(\"pyscf\"),\n        \"@org_tensorflow//tensorflow:tensorflow_py\",\n        requirement(\"tensorflow-hub\"),\n    ],\n)\n\npy_test(\n    name = \"neural_numint_test\",\n    srcs = [\"density_functional_approximation_dm21/neural_numint_test.py\"],\n    python_version = \"PY3\",\n    srcs_version = \"PY3\",\n    deps = [\n        \":neural_numint\",\n        requirement(\"attrs\"),\n        requirement(\"pyscf\"),\n        \"@io_abseil_py//absl/testing:parameterized\",\n        \"@org_tensorflow//tensorflow:tensorflow_py\",\n    ],\n)\n\npy_binary(\n    name = \"export_saved_model\",\n    srcs = [\"density_functional_approximation_dm21/export_saved_model.py\"],\n    data = [\":dm21_checkpoints\"],\n    python_version = \"PY3\",\n    srcs_version = \"PY3\",\n    deps = [\n        \":neural_numint\",\n    ],\n)\n\nEXPORTED_SAVED_MODEL_OBJECTS = [\n    \"DM21/saved_model.pb\",\n    \"DM21/variables/variables.index\",\n    \"DM21/variables/variables.data-00000-of-00001\",\n]\n\ngenrule(\n    name = \"create_model_for_aot_compile\",\n    outs = EXPORTED_SAVED_MODEL_OBJECTS,\n    # The functional used in dm21_aot_compiled_example can be changed by\n    # setting the --functional flag to the desired functional.\n    cmd = \"$(location :export_saved_model) --functional DM21 --batch_size 1000 --out_dir $(@D)/DM21\",\n    tools = [\":export_saved_model\"],\n)\n\nfilegroup(\n    name = \"dm21_exported_model\",\n    srcs = EXPORTED_SAVED_MODEL_OBJECTS,\n)\n\nsaved_model_compile_aot(\n    name = \"aot_compiled_dm21\",\n    cpp_class = \"dm21::functional\",\n    directory = \":DM21\",\n    filegroups = [\":dm21_exported_model\"],\n    force_without_xla_support_flag = False,\n    multithreading = False,\n    signature_def = \"default\",\n    tag_set = \"''\",\n    target_triple = \"x86_64-pc-linux\",\n)\n\ncc_library(\n    name = \"dm21_aot_compiled_example\",\n    srcs = [\"cc/dm21_aot_compiled_example.cc\"],\n    hdrs = [\"cc/dm21_aot_compiled_example.h\"],\n    deps = [\":aot_compiled_dm21\"],\n)\n\ncc_binary(\n    name = \"run_dm21_aot_compiled_example\",\n    srcs = [\"cc/run_dm21_aot_compiled_example.cc\"],\n    copts = [\"-DXLA_AVAILABLE\"],\n    deps = [\":dm21_aot_compiled_example\"],\n)\n"
  },
  {
    "path": "density_functional_approximation_dm21/README.md",
    "content": "# Pushing the Frontiers of Density Functionals by Solving the Fractional Electron Problem\n\nThis package provides a PySCF interface to the DM21 (DeepMind 21) family of\nexchange-correlation functionals described in the paper [\"Pushing the Frontiers\nof Density Functionals by Solving the Fractional Electron\nProblem\"](https://doi.org/10.1126/science.abj6511).\n\n## Installation\n\n`pip install .` installs the interfaces to the DM21 functionals and required\ndependencies. This is best done inside a\n[virtual environment](https://docs.python-guide.org/dev/virtualenvs/).\n\nNote: using PySCF 2.0 (or later) enables substantially more efficient\ncalculation of the local Hartree-Fock features, resulting in a large speed\nincrease.\n\n### Installing directly\n\nTo install without cloning or downloading the deepmind_research repository,\nexecute:\n\n```shell\npython3 -m venv ~/venv/DM21\nsource ~/venv/DM21/bin/activate\npip install git+git://github.com/deepmind/deepmind-research.git#subdirectory=density_functional_approximation_dm21\n```\n\n### Downloading and installing from a local git repository\n\nAlternatively, clone the deepmind_research repository and install from a local\nrepository:\n\n```shell\ngit clone https://github.com/deepmind/deepmind-research.git\ncd deepmind-research/density_functional_approximation_dm21\npython3 -m venv ~/venv/DM21\nsource ~/venv/DM21/bin/activate\npip install .\n```\n\nThe tests can be run either by running the test files directly or using\n`py.test`, again from the `density_functional_approximation_dm21` subdirectory:\n\n```shell\npip install '.[testing]'\npy.test\n```\n\n## PySCF interface\n\nA typical DFT calculation with PySCF is set up and run using:\n\n```python\nfrom pyscf import gto\nfrom pyscf import dft\n\n# Create the molecule of interest and select the basis set.\nmol = gto.Mole()\nmol.atom = 'Ne 0.0 0.0 0.0'\nmol.basis = 'cc-pVDZ'\nmol.build()\n\n# Create a DFT solver and select the exchange-correlation functional.\nmf = dft.RKS(mol)\nmf.xc = 'b3lyp'\n\n# Run the DFT calculation.\nmf.kernel()\n```\n\nThe DM21 functionals can be used in a very similar way, except we need to\ncompute local Hartree-Fock features, which does not fit in with the interface\nused by conventional functionals. Instead, this package supplies a lightweight\nwrapper around PySCF's numerical integration class which evaluates the\nexchange-correlation energy and potential over a real-space grid. To use the\nDM21 functional with PySCF, the above code needs to be changed to:\n\n```python\nimport density_functional_approximation_dm21 as dm21\nfrom pyscf import gto\nfrom pyscf import dft\n\n# Create the molecule of interest and select the basis set.\nmol = gto.Mole()\nmol.atom = 'Ne 0.0 0.0 0.0'\nmol.basis = 'cc-pVDZ'\nmol.build()\n\n# Create a DFT solver and insert the DM21 functional into the solver.\nmf = dft.RKS(mol)\nmf._numint = dm21.NeuralNumInt(dm21.Functional.DM21)\n\n# Run the DFT calculation.\nmf.kernel()\n```\n\ni.e. instead of specifying the functional with `mf.xc = <functional name>`, the\nfunctional is specified using `mf._numint = dm21.NeuralNumInt(<DM21\nfunctional>)`, where `<DM21 functional>` is the corresponding member of the\n`Functional` enum.\n\nAvailable functionals are:\n\n*   `DM21` - trained on molecules dataset, and fractional charge, and fractional\n    spin constraints.\n*   `DM21m` - trained on molecules dataset.\n*   `DM21mc` - trained on molecules dataset, and fractional charge constraints.\n*   `DM21mu` - trained on molecules dataset, and electron gas constraints.\n\nFull details of the network architecture, training method and datasets used can\nbe found in the paper (reference below). Note that the results in our paper also\ninclude D3 corrections, which must be\n[included separately](https://pyscf.org/user/dft.html#dispersion-corrections).\n\n### Best practices for using the neural functionals.\n\nIn this section, we suggest some tips for using the neural functionals in a way\nsimilar to how they were used for benchmarking in the paper. The tensorflow\nnetwork that we used is running at single precision, and as such it is very hard\nto converge calculations to the high convergence thresholds which are default in\npyscf. For example, the following script should allow users to run an\natomization energy calculation for methane.\n\n```python\nimport density_functional_approximation_dm21 as dm21\nfrom pyscf import gto\nfrom pyscf import dft\n\n# Create the molecule of interest and select the basis set.\nmethane = gto.Mole()\nmethane.atom = \"\"\"H 0.000000000000 0.000000000000 0.000000000000\n                  C 0.000000000000 0.000000000000 1.087900000000\n                  H 1.025681956337 0.000000000000 1.450533333333\n                  H -0.512840978169 0.888266630391 1.450533333333\n                  H -0.512840978169 -0.888266630391 1.450533333333\"\"\"\nmethane.basis = 'def2-qzvp'\nmethane.verbose = 4\nmethane.build()\n\ncarbon = gto.Mole()\ncarbon.atom = 'C 0.0 0.0 0.0'\ncarbon.basis = 'def2-qzvp'\ncarbon.spin = 2\ncarbon.verbose = 4\ncarbon.build()\n\nhydrogen = gto.Mole()\nhydrogen.atom = 'H 0.0 0.0 0.0'\nhydrogen.basis = 'def2-qzvp'\nhydrogen.spin = 1\nhydrogen.verbose = 4\nhydrogen.build()\n\nenergies = []\nfor mol in [methane, carbon, hydrogen]:\n  # Create a DFT solver and insert the DM21 functional into the solver.\n  if mol.spin == 0:\n    mf = dft.RKS(mol)\n  else:\n    mf = dft.UKS(mol)\n  # It will make SCF faster to start close to the solution with a cheaper\n  # functional.\n  mf.xc = 'B3LYP'\n  mf.run()\n  dm0 = mf.make_rdm1()\n\n  mf._numint = dm21.NeuralNumInt(dm21.Functional.DM21)\n  # It's wise to relax convergence tolerances.\n  mf.conv_tol = 1E-6\n  mf.conv_tol_grad = 1E-3\n  # Run the DFT calculation.\n  energy = mf.kernel(dm0=dm0)\n  energies.append(energy)\n\nprint({'CH4': energies[0], 'C': energies[1], 'H': energies[2]})\n```\n\nThis script should produce three energies (in Hartrees) for the water molecule\nand the two atoms of `{'CH4': -40.51785372584538, 'C': -37.84542045526023, 'H':\n-0.5011533955627797}` , this leads to an atomization energy of 419.06 kcal/mol,\nwhich is then corrected with the D3(BJ) correction for methane (1.20 kcal/mol)\nto yield a predicted atomization energy of 420.26 kcal/mol. Comparing this to\nthe literature value of 420.42, leads us to deduce an error of around 0.2\nkcal/mol.\n\nIt should also be noted that if a closed shell system is run unrestricted it can\ngive a small difference between spin densities and eigenvalues with a negligible\neffect on the energy.\n\n## Using DM21 from C++\n\nThere are two options for using the DM21 from C++.\n\n1.  Load the SavedModel using\n    [TensorFlow's C++ API](https://www.tensorflow.org/guide/saved_model#load_a_savedmodel_in_c).\n    This requires a run-time dependency on the TensorFlow library.\n2.  Compile the model ahead-of-time into a standalone library. This requires all\n    array dimensions to be fixed at compile time, which imposes a minor\n    limitation on the interface for using the functional. As the DM21\n    functionals act on grid points independently, this does not restrict the\n    system size.\n\nThe first option is more flexible but trickier to setup. Consequently we\ndemonstrate the second option: compiling the functional into a standalone\nlibrary. An example of running the DM21 functional using a standalone compiled\nlibrary is provided in `cc/dm21_aot_compiled_example.cc`. This requires a\nlink-time dependency on parts of the `xla_compiled_cpu_runtime_standalone`\nlibrary, which are not included in the compiled functional library. The easiest\nway to build this is to use [Bazel](https://bazel.build). The first step is to\n[install Bazel](https://docs.bazel.build/versions/5.3.0/install.html).\n[Bazelisk](https://docs.bazel.build/versions/main/install-bazelisk.html) is\nanother way to install Bazel if a native installer is not available. The\nfollowing has been tested with Bazel 5.3.0. It is best to continue working\ninside a virtual environment.\n\nAssuming the above installation steps using `git clone` have been followed, and\n`Bazel` has been installed, the example can be built and run using:\n\n```\npip install -r requirements_aot_compilation.txt\nbazel run --experimental_cc_shared_library --experimental_repo_remote_exec :run_dm21_aot_compiled_example\n```\n\nwhere the `pip install` command is only required if a fresh virtual environment\nis used, and installs required prerequisites for TensorFlow. See the\n[TensorFlow documentation](https://www.tensorflow.org/install/source) for more\ndetails.\n\nA static library, using the `cc_library` rule, can similarly be built and then\nlinked against from a separate program with no additional dependencies required,\nshown in `cc/dm21_aot_compiled_example.cc` and the `dm21_aot_compiled_example`\nbuild rule.\n\nFor calling from C, we recommend wrapping a C++ interface in `extern C { ... }`\nto create a C API. For calling from Fortran, the C API can be used via the\nFortran 2003 ISO_C_BINDING feature.\n\n### Detailed explanation\n\nThe supplied functionals in the `checkpoints` subdirectory are not easy to use\nfrom C++, as they only contain operations for the forward pass through the\nfunctional. This means they can only be used to evaluate the energy on a fixed\ndensity. Self-consistent calculations require various gradients of the\nfunctional, and it is easiest to create these using TensorFlow's Python API.\n`NeuralNumInt` contains a method for exporting the functional and functional\nderivatives. Assuming the above installation steps have been followed, a\nfunctional and its derivatives can be exported by:\n\n```shell\nexport_saved_model.py --functional=DM21 \\\n                      --out_dir=/path/to/export/DM21 \\\n                      --batch_size=1000\n```\n\nwhere `--out_dir` specifies the directory to save the model containing the\nfunctional and functional derivatives to, and `--batch_size` the number of grid\npoints the functional will be evaluated on at a time. The functional must be the\nname of a functional in the `neural_numint.Functional` enum. Note that the batch\nsize needs only be fixed for exporting models to be used with ahead-of-time\ncompilation.\n\nThe functional can now be compiled using the `saved_model_cli` tool supplied\nwith TensorFlow:\n\n```shell\n$ saved_model_cli aot_compile_cpu \\\n                  --dir /path/to/export/DM21 \\\n                  --output_prefix /path/to/compiled/DM21/dm21 \\\n                  --cpp_class dm21::functional \\\n                  --tag_set '' \\\n                  --signature_def_key default\n```\n\nThe output prefix and C++ class can be arbitrarily chosen. The `tag_set` and\n`signature_def_key` arguments must be as given above. This creates the following\nfiles in the output directory:\n\n-   dm21.h: header file defining the C++ interface to the DM21 functional.\n-   dm21_makefile.inc: a snippet to be included in a Makefile for setting\n    include, library and compilation flags.\n-   dm21_metadata.o, dm21.o: object files for running the DM21 functional.\n\n## Reference\n\nIf this repository is helpful for your research please cite the following\npublication:\n\nPushing the Frontiers of Density Functionals by Solving the Fractional Electron\nProblem, James Kirkpatrick, Brendan McMorrow, David H. P. Turban, Alexander L.\nGaunt, James S. Spencer, Alexander G. D. G. Matthews, Annette Obika, Louis\nThiry, Meire Fortunato, David Pfau, Lara Román Castellanos, Stig Petersen,\nAlexander W. R. Nelson, Pushmeet Kohli, Paula Mori-Sánchez, Demis Hassabis, Aron\nJ. Cohen, Science, DOI: https://doi.org/10.1126/science.abj6511\n\n## License\n\nAll code is made available under the Apache 2.0 License. Model parameters\n(contained in the `density_functional_approximation_dm21/checkpoints/`\nsubdirectory) are made available under the Creative Commons Attribution 4.0\nInternational (CC BY 4.0) License. See\nhttps://creativecommons.org/licenses/by/4.0/legalcode for more details.\n\n## Disclaimer\n\nThis is not an official Google product.\n"
  },
  {
    "path": "density_functional_approximation_dm21/WORKSPACE.bazel",
    "content": "workspace(name = \"org_density_functional_approximation_dm21\")\n\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\n\nhttp_archive(\n    name = \"rules_python\",\n    sha256 = \"934c9ceb552e84577b0faf1e5a2f0450314985b4d8712b2b70717dc679fdc01b\",\n    url = \"https://github.com/bazelbuild/rules_python/releases/download/0.3.0/rules_python-0.3.0.tar.gz\",\n)\n\nload(\"@rules_python//python:pip.bzl\", \"pip_install\")\n\n# Create a central external repo, @external_py_deps, that contains Bazel\n# targets for all the third-party packages specified in the requirements.txt\n# file.\npip_install(\n    name = \"external_py_deps\",\n    requirements = \"//:requirements.txt\",\n)\n\nhttp_archive(\n    name = \"io_abseil_py\",\n    strip_prefix = \"abseil-py-1.4.0\",\n    urls = [\"https://github.com/abseil/abseil-py/archive/refs/tags/v1.4.0.tar.gz\"],\n)\n\nhttp_archive(\n    name = \"org_tensorflow\",\n    patch_args = [\"-p1\"],\n    patches = [\"tf_bazel.patch\"],\n    strip_prefix = \"tensorflow-2.11.0\",\n    urls = [\"https://github.com/tensorflow/tensorflow/archive/refs/tags/v2.11.0.tar.gz\"],\n)\n\n# The cascade of load() statements and tf_workspace?() calls works around the\n# restriction that load() statements need to be at the top of .bzl files.\n# E.g. we can not retrieve a new repository with http_archive and then load()\n# a macro from that repository in the same file.\nload(\"@org_tensorflow//tensorflow:workspace3.bzl\", \"tf_workspace3\")\n\ntf_workspace3()\n\nload(\"@org_tensorflow//tensorflow:workspace2.bzl\", \"tf_workspace2\")\n\ntf_workspace2()\n\nload(\"@org_tensorflow//tensorflow:workspace1.bzl\", \"tf_workspace1\")\n\ntf_workspace1()\n\nload(\"@org_tensorflow//tensorflow:workspace0.bzl\", \"tf_workspace0\")\n\ntf_workspace0()\n"
  },
  {
    "path": "density_functional_approximation_dm21/cc/dm21_aot_compiled_example.cc",
    "content": "// Copyright 2021 DeepMind Technologies Limited.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n#include <cstdio>\n\n// Users should adjust header path to match generated location. The generated\n// location is determined by the -output_prefix flags passed to saved_model_cli\n// aot_compile_cpu.\n#include \"aot_compiled_dm21.h\"  // generated\n\nvoid run_dm21_compiled_functional() {\n  // The functional class name is set by a flag passed to saved_model_cli\n  // aot_compile_cpu.\n  dm21::functional dm21_xc;\n\n  // This assumes the functional was compiled using instructions given in the\n  // README.md, in particular that the model was exported with a batch size of\n  // 1000.  We will compute the functional just at a single point and pad the\n  // rest of the batch using grid_weight = 0.\n\n  constexpr int batch_dim = 1000;\n  // See docstring for neural_numint.FunctionalInputs for descriptions on each\n  // input feature.  Note that, due how the model is compiled, we don't need to\n  // pass any values for the grid coordinates.\n  float rho_a[6][batch_dim] = {\n      {1.238148615359934e-11},   {-5.4047671667795604e-11},\n      {-5.4047671667795604e-11}, {-7.2613887530595865e-12},\n      {4.436179569857956e-10},   {5.972594378309204e-11},\n  };\n  float hfx_a[batch_dim][2] = {{-4.33218591e-13, -4.32842821e-13}};\n  float grid_weights[batch_dim] = {1.7594189642339968};\n\n  // Use same values for both alpha and beta electrons (restricted calculation)\n  dm21_xc.set_arg_feed_rho_a_data(rho_a);\n  dm21_xc.set_arg_feed_rho_b_data(rho_a);\n  dm21_xc.set_arg_feed_hfx_a_data(hfx_a);\n  dm21_xc.set_arg_feed_hfx_b_data(hfx_a);\n  dm21_xc.set_arg_feed_grid_weights_data(grid_weights);\n\n  std::puts(\"Running functional...\");\n  bool status = dm21_xc.Run();\n\n  if (status) {\n    std::puts(\"Successfully ran functional.\");\n    // Fetch results.\n    // Other methods for fetching results exist which may be more convenient.\n    // Please see the generated header.\n    // See neural_numint.NeuralNumint._build_graph and\n    // See neural_numint.NeuralNumint.eval_xc for more details.\n    // XC potential at each grid point, shape (batch_dim).\n    const float* vxc = dm21_xc.result_fetch_vxc_data();\n    // Derivative of the energy wtih respect to the density.\n    // In python, this has shape (2, batch_dim), where the zeroth component is\n    // with respect to the alpha density and the first component with respect to\n    // the beta density. In C++, a flat 1D array is returned.\n    const float* vrho = dm21_xc.result_fetch_vrho_data();\n    // Derivative of the energy wtih respect to sigma.\n    // In python, this has shape (3, batch_dim), where the zeroth component is\n    // with respect to the alpha spin channel, the first component with respect\n    // to the spin channel and the third component with respect to the total. In\n    // C++, a flat 1D array is returned.\n    const float* vsigma = dm21_xc.result_fetch_vsigma_data();\n    // Derivative of the energy wtih respect to tau, the kinetic energy density.\n    // In python, this has shape (2, batch_dim), where the zeroth component is\n    // with respect to the alpha spin channel, and the first component with\n    // respect to the spin channel. In C++, a flat 1D array is returned.\n    const float* vtau = dm21_xc.result_fetch_vtau_data();\n    // Intermediates required for evaluating the contribution of local\n    // Hartree-Fock features to the derivative of the Fock matrix. See\n    // docstrings and comments in compute_hfx_density.py and neural_numint.py.\n    // In python, this has shape (2, batch_dim, nomega), where nomega is the\n    // number of omega values used for the Hartree-Fock kernels. The zeroth\n    // component is with respect to the Hartree-Fock energy density at each grid\n    // point for the alpha-spin density and the first component with respect to\n    // the beta-spin density. In C++, a flat 1D array is returned.\n    const float* vhf = dm21_xc.result_fetch_vhf_data();\n    std::printf(\"vxc[0] = %.6g\\n\", vxc[0]);\n    std::printf(\"vrho[0] = %.6g, %.6g\\n\", vrho[0], vrho[batch_dim]);\n    std::printf(\"vsigma[0] = %.6g, %.6g %.6g\\n\", vsigma[0], vsigma[batch_dim],\n                vsigma[2 * batch_dim]);\n    std::printf(\"vtau[0] = %.6g, %.6g\\n\", vtau[0], vtau[batch_dim]);\n    std::printf(\"vhf[0] = %.6g, %.6g\\n\", vhf[0], vhf[1]);\n  } else {\n    std::puts(\"Failed to run functional.\");\n  }\n}\n"
  },
  {
    "path": "density_functional_approximation_dm21/cc/dm21_aot_compiled_example.h",
    "content": "// Copyright 2021 DeepMind Technologies Limited.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n#ifndef THIRD_PARTY_DEEPMIND_DEEPMIND_RESEARCH_DENSITY_FUNCTIONAL_APPROXIMATION_DM21_CC_DM21_AOT_COMPILED_EXAMPLE_H_\n#define THIRD_PARTY_DEEPMIND_DEEPMIND_RESEARCH_DENSITY_FUNCTIONAL_APPROXIMATION_DM21_CC_DM21_AOT_COMPILED_EXAMPLE_H_\n\nvoid run_dm21_compiled_functional();\n\n\n#endif  // THIRD_PARTY_DEEPMIND_DEEPMIND_RESEARCH_DENSITY_FUNCTIONAL_APPROXIMATION_DM21_CC_DM21_AOT_COMPILED_EXAMPLE_H_\n"
  },
  {
    "path": "density_functional_approximation_dm21/cc/run_dm21_aot_compiled_example.cc",
    "content": "// Copyright 2021 DeepMind Technologies Limited.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n#include <cstdio>\n\n#ifdef XLA_AVAILABLE\n#include \"cc/dm21_aot_compiled_example.h\"\n#endif\n\nint main(int argc, char** argv) {\n#ifdef XLA_AVAILABLE\n  run_dm21_compiled_functional();\n  return 0;\n#else\n  std::puts(\"Built without XLA support. Cannot run functional!\");\n  return 1;\n#endif\n}\n\n"
  },
  {
    "path": "density_functional_approximation_dm21/density_functional_approximation_dm21/__init__.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"An interface to DM21 family of exchange-correlation functionals for PySCF.\"\"\"\n\nfrom density_functional_approximation_dm21.neural_numint import Functional\nfrom density_functional_approximation_dm21.neural_numint import NeuralNumInt\n"
  },
  {
    "path": "density_functional_approximation_dm21/density_functional_approximation_dm21/checkpoints/DM21/tfhub_module.pb",
    "content": "\b\u0003"
  },
  {
    "path": "density_functional_approximation_dm21/density_functional_approximation_dm21/checkpoints/DM21m/tfhub_module.pb",
    "content": "\b\u0003"
  },
  {
    "path": "density_functional_approximation_dm21/density_functional_approximation_dm21/checkpoints/DM21mc/tfhub_module.pb",
    "content": "\b\u0003"
  },
  {
    "path": "density_functional_approximation_dm21/density_functional_approximation_dm21/checkpoints/DM21mu/tfhub_module.pb",
    "content": "\b\u0003"
  },
  {
    "path": "density_functional_approximation_dm21/density_functional_approximation_dm21/compute_hfx_density.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nr\"\"\"Computation of the Hartree-Fock exchange density.\n\nWe consider two types of potential:\n\n  1. Coulomb potential v(r,r') = 1/|r-r'|, which results in the full HF exchange\n     density and energy.\n  2. Screened (long-range) Coulomb potential v(r,r') = erf(\\omega|r-r'|)/|r-r'|,\n     which results in the screened HF exchange density energy.\n\nNote that PySCF and libcint treat a value of omega=0 to correspond to the\nCoulomb potential. In the following, HF refers to full HF exchange if the\nCoulomb potential is used and to screened HF exchange if the screened Coulomb\npotential is used.\n\nThe Hartree-Fock (HF) exchange energy can be written as:\n\n-2 HF_x = \\sum_{a,b,c,d} D_{ab} D_{cd} \\int dr \\int dr'\n   [ \\chi_a(r) \\chi_c(r) v(r, r') \\chi_b(r') \\chi_d(r') ]\n\nwhere D is the density matrix, \\chi_a the atomic basis functions and r, r' are\ncoordinates. For clarity we have dropped the spin-channel label of the density\nmatrix.\n\nDefining the following intermediates:\n\n\\nu_{bd}(r) = \\int dr' (\\chi_b(r') v(r, r') \\chi_d(r'))\nE_b(r) = \\sum_a D_{ab} \\chi_a(r)\n\nwe get the following expression for HF:\n\n-2 HF_x = \\int dr \\sum_{bd} E_b(r) E_d(r) \\nu_{bd}(r)\n\nTherefore the quantity\n\nexx(r) = -0.5 sum_{bd} E_b(r) E_d(r) \\nu_{bd}(r)\n\nrepresents an energy density at location r which integrates to the HF exchange\nenergy.\n\nThe Fock matrix, F, is the derivative of the energy with respect to the density\nmatrix. If the energy depends upon the set of features {x}, then the Fock matrix\ncan be evaluated as \\sum_x dE/dx dx/dD_{ab}. The derivatives with respect to the\nfeatures can be easily evaluated using automatic differentiation. We hence\nrequire the derivative of exx with respect to the density matrix:\n\ndexx(r)/dD_{ab} = -D_{cd} \\chi_a(r) \\chi_c(r) \\nu_{bd}(r)\n\nThis is too large to store, so we instead compute the following intermediate,\nand evaluate the derivative as required on the fly:\n\nfxx_a(r) = D_{bd} \\chi_a(r) \\nu_{bd}(r)\n\nNote: we compute exx and fxx for each spin channel for both restricted and\nunrestricted calculations.\n\"\"\"\n\nfrom typing import Generator, Optional, Tuple, Union\n\nimport attr\nimport numpy as np\nfrom pyscf.dft import numint\nfrom pyscf.gto import mole\nfrom pyscf.lib import logger\nfrom pyscf.lib import numpy_helper\n\n\ndef _evaluate_nu_slow(mol: mole.Mole,\n                      coords: np.ndarray,\n                      omega: float,\n                      hermi: int = 1) -> np.ndarray:\n  \"\"\"Computes nu integrals for given coordinates using a slow loop.\"\"\"\n  nu = []\n  # Use the Gaussian nuclear model in int1e_rinv_sph to evaluate the screened\n  # integrals.\n  with mol.with_rinv_zeta(zeta=omega * omega):\n    # This is going to be slow...\n    for coord in coords:\n      with mol.with_rinv_origin(coord):\n        nu.append(mol.intor('int1e_rinv_sph', hermi=hermi))\n  return np.asarray(nu)\n\n\ndef _evaluate_nu(mol: mole.Mole,\n                 coords: np.ndarray,\n                 omega: float,\n                 hermi: int = 1) -> np.ndarray:\n  \"\"\"Computes nu integrals for given coordinates.\"\"\"\n  try:\n    with mol.with_range_coulomb(omega=omega):\n      # grids keyword argument supported in pyscf 2.0.0-alpha.\n      nu = mol.intor('int1e_grids_sph', hermi=hermi, grids=coords)  # pytype: disable=wrong-keyword-args\n  except TypeError:\n    logger.info(\n        mol, 'Support for int1e_grids not found (requires libcint 4.4.1 and '\n        'pyscf 2.0.0a or later. Falling back to slow loop over individual grid '\n        'points.')\n    nu = _evaluate_nu_slow(mol, coords, omega)\n  return nu\n\n\ndef _nu_chunk(mol: mole.Mole,\n              coords: np.ndarray,\n              omega: float,\n              chunk_size: int = 1000\n             ) -> Generator[Tuple[int, int, np.ndarray], None, None]:\n  r\"\"\"Yields chunks of nu integrals over the grid.\n\n  Args:\n    mol: pyscf Mole object.\n    coords: coordinates, r', at which to evaluate the nu integrals, shape (N,3).\n    omega: range separation parameter. A value of 0 disables range-separation\n      (i.e. uses the kernel v(r,r') = 1/|r-r'| instead of\n      v(r,r') = erf(\\omega |r-r'|) / |r-r'|)\n    chunk_size: number of coordinates to evaluate the integrals at a time.\n\n  Yields:\n    start_index, end_index, nu_{ab}(r) where\n      start_index, end_index are indices into coords,\n      nu is an array of shape (end_index-start_index, nao, nao), where nao is\n      the number of atomic orbitals and contains\n      nu_{ab}(r) = <a(r')|v(r,r')| b(r')>, where a,b are atomic\n      orbitals and r' are the grid coordinates in coords[start_index:end_index].\n\n  Raises:\n    ValueError: if omega is negative.\n  \"\"\"\n  if omega < 0:\n    raise ValueError('Range-separated parameter omega must be non-negative!')\n  ncoords = len(coords)\n  for chunk_index in range(0, ncoords, chunk_size):\n    end_index = min(chunk_index + chunk_size, ncoords)\n    coords_chunk = coords[chunk_index:end_index]\n    nu_chunk = _evaluate_nu(mol, coords_chunk, omega=omega)\n    yield chunk_index, end_index, nu_chunk\n\n\ndef _compute_exx_block(nu: np.ndarray,\n                       e: np.ndarray) -> Tuple[np.ndarray, np.ndarray]:\n  r\"\"\"Computes exx and fxx.\n\n  Args:\n    nu: batch of <i|v(r,r_k)|j> integrals, in format (k,i,j) where r_k is the\n      position of the k-th grid point, i and j label atomic orbitals.\n    e: density matrix in the AO basis at each grid point.\n\n  Returns:\n    exx and fxx, where\n    fxx_{gb} =\\sum_c nu_{gbc} e_{gc} and\n    exx_{g} = -0.5 \\sum_b e_{gb} fxx_{gb}.\n  \"\"\"\n  fxx = np.einsum('gbc,gc->gb', nu, e)\n  exx = -0.5 * np.einsum('gb,gb->g', e, fxx)\n  return exx, fxx\n\n\ndef _compute_jk_block(nu: np.ndarray, fxx: np.ndarray, dm: np.ndarray,\n                      ao_value: np.ndarray,\n                      weights: np.ndarray) -> Tuple[np.ndarray, np.ndarray]:\n  \"\"\"Computes J and K contributions from the given block of nu integrals.\"\"\"\n  batch_size = nu.shape[0]\n  vj = numpy_helper.dot(nu.reshape(batch_size, -1), dm.reshape(-1, 1))\n  vj = np.squeeze(vj)\n  vj_ao = np.einsum('g,gb->gb', vj * weights, ao_value)\n  j = numpy_helper.dot(ao_value.T, vj_ao)\n  w_ao = np.einsum('g,gb->gb', weights, ao_value)\n  k = numpy_helper.dot(fxx.T, w_ao)\n  return j, k\n\n\n@attr.s(auto_attribs=True)\nclass HFDensityResult:\n  r\"\"\"Container for results returned by get_hf_density.\n\n  Note that the kernel used in all integrals is defined by the omega input\n  argument.\n\n  Attributes:\n    exx: exchange energy density at position r on the grid for the alpha, beta\n      spin channels.  Each array is shape (N), where N is the number of grid\n      points.\n    fxx: intermediate for evaluating dexx/dD^{\\sigma}_{ab}, where D is the\n      density matrix and \\sigma is the spin coordinate. See top-level docstring\n      for details.  Each array is shape (N, nao), where nao is the number of\n      atomic orbitals.\n    coulomb: coulomb matrix (restricted calculations) or matrices (unrestricted\n      calculations). Each array is shape (nao, nao).\n      Restricted calculations: \\sum_{} D_{cd} (ab|cd)\n      Unrestricted calculations: \\sum_{} D^{\\sigma}_{cd} (ab|cd)\n    exchange: exchange matrix (restricted calculations) or matrices\n      (unrestricted calculations). Each array is shape (nao, nao).\n      Restricted calculations: \\sum_{} D_{cd} (ab|cd)\n      Unrestricted calculations: \\sum_{} D^{\\sigma}_{cd} (ac|bd).\n  \"\"\"\n  exx: Tuple[np.ndarray, np.ndarray]\n  fxx: Optional[Tuple[np.ndarray, np.ndarray]] = None\n  coulomb: Optional[Union[np.ndarray, Tuple[np.ndarray, np.ndarray]]] = None\n  exchange: Optional[Union[np.ndarray, Tuple[np.ndarray, np.ndarray]]] = None\n\n\ndef get_hf_density(\n    mol: mole.Mole,\n    dm: Union[Tuple[np.ndarray, np.ndarray], np.ndarray],\n    coords: np.ndarray,\n    omega: float = 0.,\n    deriv: int = 0,\n    ao: Optional[np.ndarray] = None,\n    chunk_size: int = 1000,\n    weights: Optional[np.ndarray] = None,\n) -> HFDensityResult:\n  r\"\"\"Computes the (range-separated) HF energy density.\n\n  Args:\n    mol: PySCF molecule.\n    dm: The density matrix. For restricted calculations, an array of shape\n      (M, M), where M is the number of atomic orbitals. For unrestricted\n      calculations, either an array of shape (2, M, M) or a tuple of arrays,\n      each of shape (M, M), where dm[0] is the density matrix for the alpha\n      electrons and dm[1] the density matrix for the beta electrons.\n    coords: The coordinates to compute the HF density at, shape (N, 3), where N\n      is the number of grid points.\n    omega: The inverse width of the error function. An omega of 0. means range\n      separation and a 1/|r-R| kernel is used in the nu integrals. Otherwise,\n      the kernel erf(\\omega|r-R|)/|r-R|) is used. Must be non-negative.\n    deriv: The derivative order. Only first derivatives (deriv=1) are currently\n      implemented. deriv=0 indicates no derivatives are required.\n    ao: The atomic orbitals evaluated on the grid, shape (N, M). These are\n      computed if not supplied.\n    chunk_size: The number of coordinates to compute the HF density for at once.\n      Reducing this saves memory since we don't have to keep as many Nus (nbasis\n      x nbasis) in memory at once.\n    weights: weight of each grid point, shape (N). If present, the Coulomb and\n      exchange matrices are also computed semi-numerically, otherwise only the\n      HF density and (if deriv=1) its first derivative are computed.\n\n  Returns:\n    HFDensityResult object with the HF density (exx), the derivative of the HF\n    density with respect to the density (fxx) if deriv is 1, and the Coulomb and\n    exchange matrices if the weights argument is provided.\n\n  Raises:\n    NotImplementedError: if a Cartesian basis set is used or if deriv is greater\n    than 1.\n    ValueError: if omega or deriv are negative.\n  \"\"\"\n  if mol.cart:\n    raise NotImplementedError('Local HF exchange is not implmented for basis '\n                              'sets with Cartesian functions!')\n  if deriv < 0:\n    raise ValueError(f'`deriv` must be non-negative, got {deriv}')\n  if omega < 0:\n    raise ValueError(f'`omega` must be non-negative, got {omega}')\n  if deriv > 1:\n    raise NotImplementedError('Higher order derivatives are not implemented.')\n\n  if isinstance(dm, tuple) or dm.ndim == 3:\n    dma, dmb = dm\n    restricted = False\n  else:\n    dma = dm / 2\n    dmb = dm / 2\n    restricted = True\n\n  logger.info(mol, 'Computing contracted density matrix ...')\n  if ao is None:\n    ao = numint.eval_ao(mol, coords, deriv=0)\n  e_a = np.dot(ao, dma)\n  e_b = np.dot(ao, dmb)\n\n  exxa = []\n  exxb = []\n  fxxa = []\n  fxxb = []\n  ja = np.zeros_like(dma)\n  jb = np.zeros_like(dmb)\n  ka = np.zeros_like(dma)\n  kb = np.zeros_like(dmb)\n\n  for start, end, nu in _nu_chunk(mol, coords, omega, chunk_size=chunk_size):\n    logger.info(mol, 'Computing exx %s / %s ...', end, len(e_a))\n    exxa_block, fxxa_block = _compute_exx_block(nu, e_a[start:end])\n    exxa.extend(exxa_block)\n    if not restricted:\n      exxb_block, fxxb_block = _compute_exx_block(nu, e_b[start:end])\n      exxb.extend(exxb_block)\n    if deriv == 1:\n      fxxa.extend(fxxa_block)\n      if not restricted:\n        fxxb.extend(fxxb_block)\n\n    if weights is not None:\n      ja_block, ka_block = _compute_jk_block(nu, fxxa_block, dma, ao[start:end],\n                                             weights[start:end])\n      ja += ja_block\n      ka += ka_block\n      if not restricted:\n        jb_block, kb_block = _compute_jk_block(nu, fxxb_block, dmb,\n                                               ao[start:end],\n                                               weights[start:end])\n        jb += jb_block\n        kb += kb_block\n\n  exxa = np.asarray(exxa)\n  fxxa = np.asarray(fxxa)\n  if restricted:\n    exxb = exxa\n    fxxb = fxxa\n  else:\n    exxb = np.asarray(exxb)\n    fxxb = np.asarray(fxxb)\n\n  result = HFDensityResult(exx=(exxa, exxb))\n  if deriv == 1:\n    result.fxx = (fxxa, fxxb)\n  if weights is not None:\n    if restricted:\n      result.coulomb = 2 * ja\n      result.exchange = 2 * ka\n    else:\n      result.coulomb = (ja, jb)\n      result.exchange = (ka, kb)\n  return result\n"
  },
  {
    "path": "density_functional_approximation_dm21/density_functional_approximation_dm21/compute_hfx_density_test.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Tests for compute_hfx_density.\"\"\"\n\nfrom absl.testing import absltest\nfrom absl.testing import parameterized\nimport numpy as np\nfrom pyscf import dft\nfrom pyscf import gto\nfrom pyscf import lib\nfrom pyscf import scf\nimport scipy\nfrom density_functional_approximation_dm21 import compute_hfx_density\n\n\nclass ComputeHfxDensityTest(parameterized.TestCase):\n\n  def setUp(self):\n    super().setUp()\n    lib.param.TMPDIR = None\n    lib.num_threads(1)\n\n  @parameterized.named_parameters(\n      {'testcase_name': 'local_hf', 'omega': 0.},\n      {'testcase_name': 'range_separated_local_hf_0.5', 'omega': 0.5},\n      {'testcase_name': 'range_separated_local_hf_1.0', 'omega': 1.0},\n      {'testcase_name': 'range_separated_local_hf_2.0', 'omega': 2.0},\n  )\n  def test_closed_shell(self, omega):\n    mol = gto.M(atom='He 0. 0. 0.', basis='3-21g')\n    solver = dft.RKS(mol)\n    solver.grids.level = 2\n    solver.grids.build()\n    solver.kernel()\n    dm = solver.make_rdm1()\n    with mol.with_range_coulomb(omega=omega):\n      target_j, target_k = scf.hf.get_jk(mol, dm)\n    target_hf = -0.25 * np.einsum('ij,ji', dm, target_k)\n    target_coulomb = np.einsum('ij,ji', dm, target_j)\n\n    coords = solver.grids.coords\n    weights = solver.grids.weights\n\n    results = compute_hfx_density.get_hf_density(\n        mol, dm, coords, omega=omega, weights=weights)\n    coulomb = np.einsum('ij,ji', dm, results.coulomb)\n    hf = -0.25 * np.einsum('ij,ji', dm, results.exchange)\n    predicted_hf = np.sum((results.exx[0] + results.exx[1]) * weights)\n\n    with self.subTest('test_hf_density'):\n      self.assertAlmostEqual(target_hf, predicted_hf)\n\n    with self.subTest('test_get_jk'):\n      np.testing.assert_allclose(results.coulomb, target_j)\n      np.testing.assert_allclose(results.exchange, target_k)\n      self.assertAlmostEqual(coulomb, target_coulomb)\n      self.assertAlmostEqual(hf, target_hf)\n\n  @parameterized.named_parameters(\n      {'testcase_name': 'local_hf', 'omega': 0.},\n      {'testcase_name': 'range_separated_local_hf_0.5', 'omega': 0.5},\n      {'testcase_name': 'range_separated_local_hf_1.0', 'omega': 1.0},\n      {'testcase_name': 'range_separated_local_hf_2.0', 'omega': 2.0},\n  )\n  def test_hf_density_on_open_shell(self, omega):\n    mol = gto.M(atom='He 0. 0. 0.', basis='3-21g', charge=1, spin=1)\n    solver = dft.UKS(mol)\n    solver.grids.level = 2\n    solver.grids.build()\n    solver.kernel()\n    dm = solver.make_rdm1()\n    with mol.with_range_coulomb(omega=omega):\n      target_j, target_k = scf.hf.get_jk(mol, dm)\n    target_hf = -0.5 * (\n        np.einsum('ij,ji', dm[0], target_k[0]) +\n        np.einsum('ij,ji', dm[1], target_k[1]))\n    target_coulomb = np.einsum('ij,ji', dm[0], target_j[0]) + np.einsum(\n        'ij,ji', dm[1], target_j[1])\n\n    coords = solver.grids.coords\n    weights = solver.grids.weights\n\n    results = compute_hfx_density.get_hf_density(\n        mol, dm, coords, omega=omega, weights=weights)\n\n    predicted_hf = np.sum((results.exx[0] + results.exx[1]) * weights)\n    coulomb = (\n        np.einsum('ij,ji', dm[0], results.coulomb[0]) +\n        np.einsum('ij,ji', dm[1], results.coulomb[1]))\n    hf = -0.5 * (\n        np.einsum('ij,ji', dm[0], results.exchange[0]) +\n        np.einsum('ij,ji', dm[1], results.exchange[1]))\n\n    with self.subTest('test_hf_density'):\n      self.assertAlmostEqual(target_hf, predicted_hf, places=3)\n\n    with self.subTest('test_get_jk'):\n      np.testing.assert_allclose(results.coulomb[0], target_j[0])\n      np.testing.assert_allclose(results.coulomb[1], target_j[1])\n      np.testing.assert_allclose(results.exchange[0], target_k[0])\n      np.testing.assert_allclose(results.exchange[1], target_k[1])\n      self.assertAlmostEqual(coulomb, target_coulomb)\n      self.assertAlmostEqual(hf, target_hf)\n\n\ndef _nu_test_systems():\n  systems = [\n      {\n          'atom': 'N 0 0 0; N 0 0 2.4',\n          'charge': 0,\n          'spin': 0,\n          'basis': 'cc-pVDZ',\n          'num_grids': -1\n      },\n      {\n          'atom': 'N 0 0 0; N 0 0 2.4',\n          'charge': 0,\n          'spin': 0,\n          'basis': 'cc-pVDZ',\n          'num_grids': 1\n      },\n      {\n          'atom': 'N 0 0 0; N 0 0 2.4',\n          'charge': 0,\n          'spin': 0,\n          'basis': 'cc-pVDZ',\n          'num_grids': 2\n      },\n      {\n          'atom': 'N 0 0 0; N 0 0 2.4',\n          'charge': 0,\n          'spin': 0,\n          'basis': 'cc-pVDZ',\n          'num_grids': 10\n      },\n      {\n          'atom': 'N 0 0 0; N 0 0 2.4',\n          'charge': 0,\n          'spin': 0,\n          'basis': 'cc-pVDZ',\n          'num_grids': 32\n      },\n      {\n          'atom': 'N 0 0 0; N 0 0 2.4',\n          'charge': 0,\n          'spin': 0,\n          'basis': 'cc-pVDZ',\n          'num_grids': 33\n      },\n      {\n          'atom': 'Li 0 0 0',\n          'charge': 0,\n          'spin': 1,\n          'basis': 'cc-pVTZ',\n          'num_grids': -1\n      },\n      {\n          'atom': 'H 0 0 0',\n          'charge': 0,\n          'spin': 1,\n          'basis': 'cc-pVQZ',\n          'num_grids': -1\n      },\n  ]\n  system_names = ['N2', 'N2_1', 'N2_2', 'N2_10', 'N2_32', 'N2_33', 'Li', 'H']\n  for name, system in zip(system_names, systems):\n    yield {'testcase_name': f'{name}_hermitian', 'hermi': 0, **system}\n    yield {'testcase_name': f'{name}_non_hermitian', 'hermi': 1, **system}\n\n\nclass NuTest(parameterized.TestCase):\n\n  def setUp(self):\n    super(NuTest, self).setUp()\n    lib.param.TMPDIR = None\n    lib.num_threads(1)\n\n  @parameterized.named_parameters(_nu_test_systems())\n  def test_nu_integrals(self, atom, charge, spin, basis, num_grids, hermi):\n    mol = gto.M(atom=atom, charge=charge, spin=spin, basis=basis)\n    mf = dft.UKS(mol)\n    mf.grids.build()\n    if num_grids == -1:\n      test_coords = mf.grids.coords\n    else:\n      test_coords = mf.grids.coords[0:num_grids]\n    nu_slow = compute_hfx_density._evaluate_nu_slow(\n        mol, test_coords, omega=0.0, hermi=hermi)\n    nu_fast = compute_hfx_density._evaluate_nu(\n        mol, test_coords, omega=0.0, hermi=hermi)\n    np.testing.assert_allclose(nu_slow, nu_fast, atol=1E-13)\n\n  def test_range_separated_nu(self):\n    mol = gto.M(atom='He 0 0 0', basis='cc-pVDZ')\n    r0 = np.array([[0.1, 0.2, 1.]])\n    omega = 1.\n    result = np.squeeze(compute_hfx_density._evaluate_nu(mol, r0, omega=omega))\n\n    solver = dft.RKS(mol)\n    solver.grids.level = 2\n    solver.grids.build()\n    coords = solver.grids.coords\n    weights = solver.grids.weights\n    ao_value = dft.numint.eval_ao(mol, coords, deriv=0)\n    dist = np.linalg.norm(coords - r0, axis=1)\n    erf = scipy.special.erf(omega * dist) / dist\n    expected_result = np.squeeze(\n        np.einsum('g,ga,gb->ab', weights * erf, ao_value, ao_value))\n\n    np.testing.assert_allclose(result, expected_result)\n\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "density_functional_approximation_dm21/density_functional_approximation_dm21/export_saved_model.py",
    "content": "#!/usr/bin/env python3\n# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Helper for exporting a functional and its derivatives to a saved_model.\"\"\"\n\nfrom typing import Sequence\n\nfrom absl import app\nfrom absl import flags\n\nfrom density_functional_approximation_dm21 import neural_numint\n\n_OUT_DIR = flags.DEFINE_string(\n    'out_dir', None, 'Output directory.', required=True)\n_BATCH_SIZE = flags.DEFINE_integer(\n    'batch_size',\n    1000,\n    'Number of grid points exported functional will process in a single call.',\n    lower_bound=0)\n_FUNCTIONAL = flags.DEFINE_enum_class('functional',\n                                      neural_numint.Functional.DM21,\n                                      neural_numint.Functional,\n                                      'Functional to export.')\n\n\ndef export(\n    functional: neural_numint.Functional,\n    export_path: str,\n    batch_dim: int,\n) -> None:\n  \"\"\"Export a functional and its derivatives to a single saved_model.\n\n  Args:\n    functional: functional to export.\n    export_path: path to saved the model to.\n    batch_dim: number of grid points to process in a single call.\n  \"\"\"\n  ni = neural_numint.NeuralNumInt(functional)\n  ni.export_functional_and_derivatives(\n      export_path=export_path, batch_dim=batch_dim)\n\n\ndef main(argv: Sequence[str]) -> None:\n  if len(argv) > 1:\n    raise app.UsageError('Too many command-line arguments.')\n  export(_FUNCTIONAL.value, _OUT_DIR.value, _BATCH_SIZE.value)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "density_functional_approximation_dm21/density_functional_approximation_dm21/neural_numint.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"An interface to DM21 family of exchange-correlation functionals for PySCF.\"\"\"\n\nimport enum\nimport os\nfrom typing import Generator, Optional, Sequence, Tuple, Union\n\nimport attr\nimport numpy as np\nfrom pyscf import dft\nfrom pyscf import gto\nfrom pyscf.dft import numint\nimport tensorflow.compat.v1 as tf\nimport tensorflow_hub as hub\n\nfrom density_functional_approximation_dm21 import compute_hfx_density\n\ntf.disable_v2_behavior()\n\n# TODO(b/196260242): avoid depending upon private function\n_dot_ao_ao = numint._dot_ao_ao  # pylint: disable=protected-access\n\n\n@enum.unique\nclass Functional(enum.Enum):\n  \"\"\"Enum for exchange-correlation functionals in the DM21 family.\n\n  Attributes:\n    DM21: trained on molecules dataset, and fractional charge, and fractional\n      spin constraints.\n    DM21m: trained on molecules dataset.\n    DM21mc: trained on molecules dataset, and fractional charge constraints.\n    DM21mu: trained on molecules dataset, and electron gas constraints.\n  \"\"\"\n  # Break pylint's preferred naming pattern to match the functional names used\n  # in the paper.\n  # pylint: disable=invalid-name\n  DM21 = enum.auto()\n  DM21m = enum.auto()\n  DM21mc = enum.auto()\n  DM21mu = enum.auto()\n  # pylint: enable=invalid-name\n\n\n# We use attr.s instead of here instead of dataclasses.dataclass as\n# dataclasses.asdict returns a deepcopy of the attributes. This is wasteful in\n# memory if they are large and breaks (as in the case of tf.Tensors) if they are\n# not serializable. attr.asdict does not perform this copy and so works with\n# both np.ndarrays and tf.Tensors.\n@attr.s(auto_attribs=True)\nclass FunctionalInputs:\n  r\"\"\"\"Inputs required for DM21 functionals.\n\n  Depending upon the context, this is either a set of numpy arrays (feature\n  construction) or TF tensors (constructing placeholders/running functionals).\n\n  Attributes:\n    rho_a: Density information for the alpha electrons.\n      PySCF for meta-GGAs supplies a single array for the total density\n      (restricted calculations) and a pair of arrays, one for each spin channel\n      (unrestricted calculations).\n      Each array/tensor is of shape (6, N) and contains the density and density\n      derivatives, where:\n       rho(0, :) - density at each grid point\n       rho(1, :) - norm of the derivative of the density at each grid point\n                   along x\n       rho(2, :) - norm of the derivative of the density at each grid point\n                   along y\n       rho(3, :) - norm of the derivative of the density at each grid point\n                   along z\n       rho(4, :) - \\nabla^2 \\rho [not used]\n       rho(5, :) - tau (1/2 (\\nabla \\rho)^2) at each grid point.\n      See pyscf.dft.numint.eval_rho for more details.\n      We require separate inputs for both alpha- and beta-spin densities, even\n      in restricted calculations (where rho_a = rho_b = rho/2, where rho is the\n      total density).\n    rho_b: as for rho_a for the beta electrons.\n    hfx_a: local Hartree-Fock energy density at each grid point for the alpha-\n      spin density for each value of omega.  Shape [N, len(omega_values)].\n      See compute_hfx_density for more details.\n    hfx_b: as for hfx_a for the beta-spin density.\n    grid_coords: grid coordinates at which to evaluate the density. Shape\n      (N, 3), where N is the number of grid points. Note that this is currently\n      unused by the functional, but is still a required input.\n    grid_weights: weight of each grid point. Shape (N).\n  \"\"\"\n  rho_a: Union[tf.Tensor, np.ndarray]\n  rho_b: Union[tf.Tensor, np.ndarray]\n  hfx_a: Union[tf.Tensor, np.ndarray]\n  hfx_b: Union[tf.Tensor, np.ndarray]\n  grid_coords: Union[tf.Tensor, np.ndarray]\n  grid_weights: Union[tf.Tensor, np.ndarray]\n\n\n@attr.s(auto_attribs=True)\nclass _GridState:\n  \"\"\"Internal state required for the numerical grid.\n\n  Attributes:\n    coords: coordinates of the grid. Shape (N, 3), where N is the number of grid\n      points.\n    weight: weight associated with each grid point. Shape (N).\n    mask: mask indicating whether a shell is zero at a grid point. Shape\n      (N, nbas) where nbas is the number of shells in the basis set. See\n      pyscf.dft.gen_grids.make_mask.\n    ao: atomic orbitals evaluated on the grid. Shape (N, nao), where nao is the\n      number of atomic orbitals, or shape (:, N, nao), where the 0-th element\n      contains the ao values, the next three elements contain the first\n      derivatives, and so on.\n  \"\"\"\n  coords: np.ndarray\n  weight: np.ndarray\n  mask: np.ndarray\n  ao: np.ndarray\n\n\n@attr.s(auto_attribs=True)\nclass _SystemState:\n  \"\"\"Internal state required for system of interest.\n\n  Attributes:\n    mol: PySCF molecule\n    dms: density matrix or matrices (unrestricted calculations only).\n      Restricted calculations: shape (nao, nao), where nao is the number of\n      atomic orbitals.\n      Unrestricted calculations: shape (2, nao, nao) or a sequence (length 2) of\n      arrays of shape (nao, nao), and dms[0] and dms[1] are the density matrices\n      of the alpha and beta electrons respectively.\n  \"\"\"\n  mol: gto.Mole\n  dms: Union[np.ndarray, Sequence[np.ndarray]]\n\n\ndef _get_number_of_density_matrices(dms):\n  \"\"\"Returns the number of density matrices in dms.\"\"\"\n  # See pyscf.numint.NumInt._gen_rho_evaluator\n  if isinstance(dms, np.ndarray) and dms.ndim == 2:\n    return 1\n  return len(dms)\n\n\nclass NeuralNumInt(numint.NumInt):\n  \"\"\"A wrapper around pyscf.dft.numint.NumInt for the DM21 functionals.\n\n  In order to supply the local Hartree-Fock features required for the DM21\n  functionals, we lightly wrap the NumInt class. The actual evaluation of the\n  exchange-correlation functional is performed in NeuralNumInt.eval_xc.\n\n  Usage:\n    mf = dft.RKS(...)  # dft.ROKS and dft.UKS are also supported.\n    # Specify the functional by monkey-patching mf._numint rather than using\n    # mf._xc or mf._define_xc_.\n    mf._numint = NeuralNumInt(Functional.DM21)\n    mf.kernel()\n  \"\"\"\n\n  def __init__(self,\n               functional: Functional,\n               *,\n               checkpoint_path: Optional[str] = None):\n    \"\"\"Constructs a NeuralNumInt object.\n\n    Args:\n      functional: member of Functional enum giving the name of the\n        functional.\n      checkpoint_path: Optional path to specify the directory containing the\n        checkpoints of the DM21 family of functionals. If not specified, attempt\n        to find the checkpoints using a path relative to the source code.\n    \"\"\"\n\n    self._functional_name = functional.name\n    if checkpoint_path:\n      self._model_path = os.path.join(checkpoint_path, self._functional_name)\n    else:\n      self._model_path = os.path.join(\n          os.path.dirname(__file__), 'checkpoints', self._functional_name)\n\n    # All DM21 functionals use local Hartree-Fock features with a non-range\n    # separated 1/r kernel and a range-seperated kernel with \\omega = 0.4.\n    # Note an omega of 0.0 is interpreted by PySCF and libcint to indicate no\n    # range-separation.\n    self._omega_values = [0.0, 0.4]\n    self._graph = tf.Graph()\n    with self._graph.as_default():\n      self._build_graph()\n      self._session = tf.Session()\n      self._session.run(tf.global_variables_initializer())\n\n    self._grid_state = None\n    self._system_state = None\n    self._vmat_hf = None\n    super().__init__()\n\n  def _build_graph(self, batch_dim: Optional[int] = None):\n    \"\"\"Builds the TensorFlow graph for evaluating the functional.\n\n    Args:\n      batch_dim: the batch dimension of the grid to use in the model. Default:\n        None (determine at runtime). This should only be set if building a model\n        in order to export and ahead-of-time compile it into a standalone\n        library.\n    \"\"\"\n\n    self._functional = hub.Module(spec=self._model_path)\n\n    grid_coords = tf.placeholder(\n        tf.float32, shape=[batch_dim, 3], name='grid_coords')\n    grid_weights = tf.placeholder(\n        tf.float32, shape=[batch_dim], name='grid_weights')\n\n    # Density information.\n    rho_a = tf.placeholder(tf.float32, shape=[6, batch_dim], name='rho_a')\n    rho_b = tf.placeholder(tf.float32, shape=[6, batch_dim], name='rho_b')\n\n    # Split into corresponding terms.\n    rho_only_a, grad_a_x, grad_a_y, grad_a_z, _, tau_a = tf.unstack(\n        rho_a, axis=0)\n    rho_only_b, grad_b_x, grad_b_y, grad_b_z, _, tau_b = tf.unstack(\n        rho_b, axis=0)\n\n    # Evaluate |\\del \\rho|^2 for each spin density and for the total density.\n    norm_grad_a = (grad_a_x**2 + grad_a_y**2 + grad_a_z**2)\n    norm_grad_b = (grad_b_x**2 + grad_b_y**2 + grad_b_z**2)\n    grad_x = grad_a_x + grad_b_x\n    grad_y = grad_a_y + grad_b_y\n    grad_z = grad_a_z + grad_b_z\n    norm_grad = (grad_x**2 + grad_y**2 + grad_z**2)\n\n    # The local Hartree-Fock energy densities at each grid point for the alpha-\n    # and beta-spin densities for each value of omega.\n    # Note an omega of 0 indicates no screening of the Coulomb potential.\n    hfxa = tf.placeholder(\n        tf.float32, shape=[batch_dim, len(self._omega_values)], name='hfxa')\n    hfxb = tf.placeholder(\n        tf.float32, shape=[batch_dim, len(self._omega_values)], name='hfxb')\n\n    # Make all features 2D arrays on input for ease of handling inside the\n    # functional.\n    features = {\n        'grid_coords': grid_coords,\n        'grid_weights': tf.expand_dims(grid_weights, 1),\n        'rho_a': tf.expand_dims(rho_only_a, 1),\n        'rho_b': tf.expand_dims(rho_only_b, 1),\n        'tau_a': tf.expand_dims(tau_a, 1),\n        'tau_b': tf.expand_dims(tau_b, 1),\n        'norm_grad_rho_a': tf.expand_dims(norm_grad_a, 1),\n        'norm_grad_rho_b': tf.expand_dims(norm_grad_b, 1),\n        'norm_grad_rho': tf.expand_dims(norm_grad, 1),\n        'hfxa': hfxa,\n        'hfxb': hfxb,\n    }\n    tensor_dict = {f'tensor_dict${k}': v for k, v in features.items()}\n\n    predictions = self._functional(tensor_dict, as_dict=True)\n    local_xc = predictions['grid_contribution']\n    weighted_local_xc = local_xc * grid_weights\n    unweighted_xc = tf.reduce_sum(local_xc, axis=0)\n    xc = tf.reduce_sum(weighted_local_xc, axis=0)\n\n    # The potential is the local exchange correlation divided by the\n    # total density. Add a small constant to deal with zero density.\n    self._vxc = local_xc / (rho_only_a + rho_only_b + 1E-12)\n\n    # The derivatives of the exchange-correlation (XC) energy with respect to\n    # input features.  PySCF weights the (standard) derivatives by the grid\n    # weights, so we need to compute this with respect to the unweighted sum\n    # over grid points.\n    self._vrho = tf.gradients(\n        unweighted_xc, [features['rho_a'], features['rho_b']],\n        name='GRAD_RHO',\n        unconnected_gradients=tf.UnconnectedGradients.ZERO)\n    self._vsigma = tf.gradients(\n        unweighted_xc, [\n            features['norm_grad_rho_a'], features['norm_grad_rho_b'],\n            features['norm_grad_rho']\n        ],\n        name='GRAD_SIGMA',\n        unconnected_gradients=tf.UnconnectedGradients.ZERO)\n    self._vtau = tf.gradients(\n        unweighted_xc, [features['tau_a'], features['tau_b']],\n        name='GRAD_TAU',\n        unconnected_gradients=tf.UnconnectedGradients.ZERO)\n    # Standard meta-GGAs do not have a dependency on local HF, so we need to\n    # compute the contribution to the Fock matrix ourselves. Just use the\n    # weighted XC energy to avoid having to weight this later.\n    self._vhf = tf.gradients(\n        xc, [features['hfxa'], features['hfxb']],\n        name='GRAD_HFX',\n        unconnected_gradients=tf.UnconnectedGradients.ZERO)\n\n    self._placeholders = FunctionalInputs(\n        rho_a=rho_a,\n        rho_b=rho_b,\n        hfx_a=hfxa,\n        hfx_b=hfxb,\n        grid_coords=grid_coords,\n        grid_weights=grid_weights)\n\n    outputs = {\n        'vxc': self._vxc,\n        'vrho': tf.stack(self._vrho),\n        'vsigma': tf.stack(self._vsigma),\n        'vtau': tf.stack(self._vtau),\n        'vhf': tf.stack(self._vhf),\n    }\n    # Create the signature for TF-Hub, including both the energy and functional\n    # derivatives.\n    # This is a no-op if _build_graph is called outside of\n    # hub.create_module_spec.\n    hub.add_signature(\n        inputs=attr.asdict(self._placeholders), outputs=outputs)\n\n  def export_functional_and_derivatives(\n      self,\n      export_path: str,\n      batch_dim: Optional[int] = None,\n  ):\n    \"\"\"Exports the TensorFlow graph containing the functional and derivatives.\n\n    The hub modules supplied contain the TensorFlow operations for the\n    evaluation of the exchange-correlation energy. Evaluation of the functional\n    derivatives, required for a self-consistent calculation, are added in\n    _build_graph. The module created by export_functional_and_derivatives\n    contains the evaluation of the functional and the functional derivatives.\n    This is much simpler to use from languages other than Python, e.g. using the\n    C or C++ TensorFlow API, or using tfcompile to create a standalone C++\n    library.\n\n    Args:\n      export_path: path to write the Hub model to. The exported model can be\n        loaded using either TF-Hub or SavedModel APIs.\n      batch_dim: the batch dimension of the grid to use in the model. Default:\n        None (determine at runtime). This should only be set if the exported\n        model is to be ahead-of-time compiled into a standalone library.\n    \"\"\"\n    with tf.Graph().as_default():\n      spec = hub.create_module_spec(\n          self._build_graph, tags_and_args=[(set(), {'batch_dim': batch_dim})])\n      functional_and_derivatives = hub.Module(spec=spec)\n      with tf.Session() as session:\n        session.run(tf.global_variables_initializer())\n        functional_and_derivatives.export(export_path, session)\n\n  # DM21* functionals include the hybrid term directly, so set the\n  # range-separated and hybrid parameters expected by PySCF to 0 so PySCF\n  # doesn't also add these contributions in separately.\n  def rsh_coeff(self, *args):\n    \"\"\"Returns the range separated parameters, omega, alpha, beta.\"\"\"\n    return [0.0, 0.0, 0.0]\n\n  def hybrid_coeff(self, *args, **kwargs):\n    \"\"\"Returns the fraction of Hartree-Fock exchange to include.\"\"\"\n    return 0.0\n\n  def _xc_type(self, *args, **kwargs):\n    return 'MGGA'\n\n  def nr_rks(self,\n             mol: gto.Mole,\n             grids: dft.Grids,\n             xc_code: str,\n             dms: Union[np.ndarray, Sequence[np.ndarray]],\n             relativity: int = 0,\n             hermi: int = 0,\n             max_memory: float = 20000,\n             verbose=None) -> Tuple[float, float, np.ndarray]:\n    \"\"\"Calculates RKS XC functional and potential matrix on a given grid.\n\n    Args:\n      mol: PySCF molecule.\n      grids: grid on which to evaluate the functional.\n      xc_code: XC code. Unused. NeuralNumInt hard codes the XC functional\n        based upon the functional argument given to the constructor.\n      dms: the density matrix or sequence of density matrices. Multiple density\n        matrices are not currently supported. Shape (nao, nao), where nao is the\n        number of atomic orbitals.\n      relativity: Unused. (pyscf.numint.NumInt.nr_rks does not currently use\n        this argument.)\n      hermi: 0 if the density matrix is Hermitian, 1 if the density matrix is\n        non-Hermitian.\n      max_memory: the maximum cache to use, in MB.\n      verbose: verbosity level. Unused. (PySCF currently does not handle the\n        verbosity level passed in here.)\n\n    Returns:\n      nelec, excsum, vmat, where\n        nelec is the number of electrons obtained by numerical integration of\n        the density matrix.\n        excsum is the functional's XC energy.\n        vmat is the functional's XC potential matrix, shape (nao, nao).\n\n    Raises:\n      NotImplementedError: if multiple density matrices are supplied.\n    \"\"\"\n    # Wrap nr_rks so we can store internal variables required to evaluate the\n    # contribution to the XC potential from local Hartree-Fock features.\n    # See pyscf.dft.numint.nr_rks for more details.\n    ndms = _get_number_of_density_matrices(dms)\n    if ndms > 1:\n      raise NotImplementedError(\n          'NeuralNumInt does not support multiple density matrices. '\n          'Only ground state DFT calculations are currently implemented.')\n    nao = mol.nao_nr()\n    self._vmat_hf = np.zeros((nao, nao))\n    self._system_state = _SystemState(mol=mol, dms=dms)\n    nelec, excsum, vmat = super().nr_rks(\n        mol=mol,\n        grids=grids,\n        xc_code=xc_code,\n        dms=dms,\n        relativity=relativity,\n        hermi=hermi,\n        max_memory=max_memory,\n        verbose=verbose)\n    vmat += self._vmat_hf + self._vmat_hf.T\n\n    # Clear internal state to prevent accidental re-use.\n    self._system_state = None\n    self._grid_state = None\n    return nelec, excsum, vmat\n\n  def nr_uks(self,\n             mol: gto.Mole,\n             grids: dft.Grids,\n             xc_code: str,\n             dms: Union[Sequence[np.ndarray], Sequence[Sequence[np.ndarray]]],\n             relativity: int = 0,\n             hermi: int = 0,\n             max_memory: float = 20000,\n             verbose=None) -> Tuple[np.ndarray, float, np.ndarray]:\n    \"\"\"Calculates UKS XC functional and potential matrix on a given grid.\n\n    Args:\n      mol: PySCF molecule.\n      grids: grid on which to evaluate the functional.\n      xc_code: XC code. Unused. NeuralNumInt hard codes the XC functional\n        based upon the functional argument given to the constructor.\n      dms: the density matrix or sequence of density matrices for each spin\n        channel. Multiple density matrices for each spin channel are not\n        currently supported. Each density matrix is shape (nao, nao), where nao\n        is the number of atomic orbitals.\n      relativity: Unused. (pyscf.dft.numint.NumInt.nr_rks does not currently use\n        this argument.)\n      hermi: 0 if the density matrix is Hermitian, 1 if the density matrix is\n        non-Hermitian.\n      max_memory: the maximum cache to use, in MB.\n      verbose: verbosity level. Unused. (PySCF currently does not handle the\n        verbosity level passed in here.)\n\n    Returns:\n      nelec, excsum, vmat, where\n        nelec is the number of alpha, beta electrons obtained by numerical\n        integration of the density matrix as an array of size 2.\n        excsum is the functional's XC energy.\n        vmat is the functional's XC potential matrix, shape (2, nao, nao), where\n        vmat[0] and vmat[1] are the potential matrices for the alpha and beta\n        spin channels respectively.\n\n    Raises:\n      NotImplementedError: if multiple density matrices for each spin channel\n      are supplied.\n    \"\"\"\n    # Wrap nr_uks so we can store internal variables required to evaluate the\n    # contribution to the XC potential from local Hartree-Fock features.\n    # See pyscf.dft.numint.nr_uks for more details.\n    if isinstance(dms, np.ndarray) and dms.ndim == 2:  # RHF DM\n      ndms = _get_number_of_density_matrices(dms)\n    else:\n      ndms = _get_number_of_density_matrices(dms[0])\n    if ndms > 1:\n      raise NotImplementedError(\n          'NeuralNumInt does not support multiple density matrices. '\n          'Only ground state DFT calculations are currently implemented.')\n\n    nao = mol.nao_nr()\n    self._vmat_hf = np.zeros((2, nao, nao))\n    self._system_state = _SystemState(mol=mol, dms=dms)\n    nelec, excsum, vmat = super().nr_uks(\n        mol=mol,\n        grids=grids,\n        xc_code=xc_code,\n        dms=dms,\n        relativity=relativity,\n        hermi=hermi,\n        max_memory=max_memory,\n        verbose=verbose)\n    vmat[0] += self._vmat_hf[0] + self._vmat_hf[0].T\n    vmat[1] += self._vmat_hf[1] + self._vmat_hf[1].T\n\n    # Clear internal state to prevent accidental re-use.\n    self._system_state = None\n    self._grid_state = None\n    self._vmat_hf = None\n    return nelec, excsum, vmat\n\n  def block_loop(\n      self,\n      mol: gto.Mole,\n      grids: dft.Grids,\n      nao: Optional[int] = None,\n      deriv: int = 0,\n      max_memory: float = 2000,\n      non0tab: Optional[np.ndarray] = None,\n      blksize: Optional[int] = None,\n      buf: Optional[np.ndarray] = None\n  ) -> Generator[Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray], None,\n                 None]:\n    \"\"\"Loops over the grid by blocks. See pyscf.dft.numint.NumInt.block_loop.\n\n    Args:\n      mol: PySCF molecule.\n      grids: grid on which to evaluate the functional.\n      nao: number of basis functions. If None, obtained from mol.\n      deriv: unused. The first functional derivatives are always computed.\n      max_memory: the maximum cache to use for the information on the grid, in\n        MB. Determines the size of each block if blksize is None.\n      non0tab: mask determining if a shell in the basis set is zero at a grid\n        point. Shape (N, nbas), where N is the number of grid points and nbas\n        the number of shells in the basis set. Obtained from grids if not\n        supplied.\n      blksize: size of each block. Calculated from max_memory if None.\n      buf: buffer to use for storing ao. If None, a new array for ao is created\n        for each block.\n\n    Yields:\n      ao, mask, weight, coords: information on a block of the grid containing N'\n      points, where\n        ao: atomic orbitals evaluated on the grid. Shape (N', nao), where nao is\n        the number of atomic orbitals.\n        mask: mask indicating whether a shell in the basis set is zero at a grid\n        point. Shape (N', nbas).\n        weight: weight associated with each grid point. Shape (N').\n        coords: coordinates of the grid. Shape (N', 3).\n    \"\"\"\n    # Wrap block_loop so we can store internal variables required to evaluate\n    # the contribution to the XC potential from local Hartree-Fock features.\n    for ao, mask, weight, coords in super().block_loop(\n        mol=mol,\n        grids=grids,\n        nao=nao,\n        deriv=deriv,\n        max_memory=max_memory,\n        non0tab=non0tab,\n        blksize=blksize,\n        buf=buf):\n      # Cache the curent block so we can access it in eval_xc.\n      self._grid_state = _GridState(\n          ao=ao, mask=mask, weight=weight, coords=coords)\n      yield ao, mask, weight, coords\n\n  def construct_functional_inputs(\n      self,\n      mol: gto.Mole,\n      dms: Union[np.ndarray, Sequence[np.ndarray]],\n      spin: int,\n      coords: np.ndarray,\n      weights: np.ndarray,\n      rho: Union[np.ndarray, Tuple[np.ndarray, np.ndarray]],\n      ao: Optional[np.ndarray] = None,\n  ) -> Tuple[FunctionalInputs, Tuple[np.ndarray, np.ndarray]]:\n    \"\"\"Constructs the input features required for the functional.\n\n    Args:\n      mol: PySCF molecule.\n      dms: density matrix of shape (nao, nao) (restricted calculations) or of\n        shape (2, nao, nao) (unrestricted calculations) or tuple of density\n        matrices for each spin channel, each of shape (nao, nao) (unrestricted\n        calculations).\n      spin: 0 for a spin-unpolarized (restricted Kohn-Sham) calculation, and\n        spin-polarized (unrestricted) otherwise.\n      coords: coordinates of the grid. Shape (N, 3), where N is the number of\n        grid points.\n      weights: weight associated with each grid point. Shape (N).\n      rho: density and density derivatives at each grid point. Single array\n        containing the total density for restricted calculations, tuple of\n        arrays for each spin channel for unrestricted calculations. Each array\n        has shape (6, N). See pyscf.dft.numint.eval_rho and comments in\n        FunctionalInputs for more details.\n      ao: The atomic orbitals evaluated on the grid, shape (N, nao). Computed if\n        not supplied.\n\n    Returns:\n      inputs, fxx, where\n        inputs: FunctionalInputs object containing the inputs (as np.ndarrays)\n        for the functional.\n        fxx: intermediates, shape (N, nao) for the alpha- and beta-spin\n        channels, required for computing the first derivative of the local\n        Hartree-Fock density with respect to the density matrices. See\n        compute_hfx_density for more details.\n    \"\"\"\n    if spin == 0:\n      # RKS\n      rhoa = rho / 2\n      rhob = rho / 2\n    else:\n      # UKS\n      rhoa, rhob = rho\n\n    # Local HF features.\n    exxa, exxb = [], []\n    fxxa, fxxb = [], []\n    for omega in sorted(self._omega_values):\n      hfx_results = compute_hfx_density.get_hf_density(\n          mol,\n          dms,\n          coords=coords,\n          omega=omega,\n          deriv=1,\n          ao=ao)\n      exxa.append(hfx_results.exx[0])\n      exxb.append(hfx_results.exx[1])\n      fxxa.append(hfx_results.fxx[0])\n      fxxb.append(hfx_results.fxx[1])\n    exxa = np.stack(exxa, axis=-1)\n    fxxa = np.stack(fxxa, axis=-1)\n    if spin == 0:\n      exx = (exxa, exxa)\n      fxx = (fxxa, fxxa)\n    else:\n      exxb = np.stack(exxb, axis=-1)\n      fxxb = np.stack(fxxb, axis=-1)\n      exx = (exxa, exxb)\n      fxx = (fxxa, fxxb)\n\n    return FunctionalInputs(\n        rho_a=rhoa,\n        rho_b=rhob,\n        hfx_a=exx[0],\n        hfx_b=exx[1],\n        grid_coords=coords,\n        grid_weights=weights), fxx\n\n  def eval_xc(\n      self,\n      xc_code: str,\n      rho: Union[np.ndarray, Tuple[np.ndarray, np.ndarray]],\n      spin: int = 0,\n      relativity: int = 0,\n      deriv: int = 1,\n      omega: Optional[float] = None,\n      verbose=None\n  ) -> Tuple[np.ndarray, Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray],\n             None, None]:\n    \"\"\"Evaluates the XC energy and functional derivatives.\n\n    See pyscf.dft.libxc.eval_xc for more details on the interface.\n\n    Note: this also sets self._vmat_extra, which contains the contribution the\n    the potential matrix from the local Hartree-Fock terms in the functional.\n\n    Args:\n      xc_code: unused.\n      rho: density and density derivatives at each grid point. Single array\n        containing the total density for restricted calculations, tuple of\n        arrays for each spin channel for unrestricted calculations. Each array\n        has shape (6, N), where N is the number of grid points. See\n        pyscf.dft.numint.eval_rho and comments in FunctionalInputs for more\n        details.\n      spin: 0 for a spin-unpolarized (restricted Kohn-Sham) calculation, and\n        spin-polarized (unrestricted) otherwise.\n      relativity: Not supported.\n      deriv: unused. The first functional derivatives are always computed.\n      omega: RSH parameter. Not supported.\n      verbose: unused.\n\n    Returns:\n      exc, vxc, fxc, kxc, where:\n        exc is the exchange-correlation potential matrix evaluated at each grid\n        point, shape (N).\n        vxc is (vrho, vgamma, vlapl, vtau), the first-order functional\n        derivatives evaluated at each grid point, each shape (N).\n        fxc is set to None. (The second-order functional derivatives are not\n        computed.)\n        kxc is set to None. (The third-order functional derivatives are not\n        computed.)\n    \"\"\"\n    del xc_code, verbose, deriv  # unused\n\n    if relativity != 0:\n      raise NotImplementedError('Relatistic calculations are not implemented '\n                                'for DM21 functionals.')\n    if omega is not None:\n      raise NotImplementedError('User-specifed range seperation parameters are '\n                                'not implemented for DM21 functionals.')\n\n    # Retrieve cached state.\n    ao = self._grid_state.ao\n    if ao.ndim == 3:\n      # Just need the AO values, not the gradients.\n      ao = ao[0]\n    if self._grid_state.weight is None:\n      weights = np.array([1.])\n    else:\n      weights = self._grid_state.weight\n    mask = self._grid_state.mask\n\n    inputs, (fxxa, fxxb) = self.construct_functional_inputs(\n        mol=self._system_state.mol,\n        dms=self._system_state.dms,\n        spin=spin,\n        rho=rho,\n        weights=weights,\n        coords=self._grid_state.coords,\n        ao=ao)\n\n    with self._graph.as_default():\n      feed_dict = dict(\n          zip(\n              attr.asdict(self._placeholders).values(),\n              attr.asdict(inputs).values(),\n          ))\n      tensor_list = [\n          self._vxc,\n          self._vrho,\n          self._vsigma,\n          self._vtau,\n          self._vhf,\n      ]\n      exc, vrho, vsigma, vtau, vhf = (\n          self._session.run(tensor_list, feed_dict=feed_dict))\n\n    mol = self._system_state.mol\n    shls_slice = (0, mol.nbas)\n    ao_loc_nr = mol.ao_loc_nr()\n    # Note: tf.gradients returns a list of gradients.\n    # vrho, vsigma, vtau are derivatives of objects that had\n    # tf.expand_dims(..., 1) applied. The [:, 0] indexing undoes this by\n    # selecting the 0-th (and only) element from the second dimension.\n    if spin == 0:\n      vxc_0 = (vrho[0][:, 0] + vrho[1][:, 0]) / 2.\n      # pyscf expects derivatives with respect to:\n      # grad_rho . grad_rho.\n      # The functional uses the first and last as inputs, but then has\n      # grad_(rho_a + rho_b) . grad_(rho_a + rho_b)\n      # as input. The following computes the correct total derivatives.\n      vxc_1 = (vsigma[0][:, 0] / 4. + vsigma[1][:, 0] / 4. + vsigma[2][:, 0])\n      vxc_3 = (vtau[0][:, 0] + vtau[1][:, 0]) / 2.\n      vxc_2 = np.zeros_like(vxc_3)\n      vhfs = (vhf[0] + vhf[1]) / 2.\n      # Local Hartree-Fock terms\n      for i in range(len(self._omega_values)):\n        # Factor of 1/2 is to account for adding vmat_hf + vmat_hf.T to vmat,\n        # which we do to match existing PySCF style. Unlike other terms, vmat_hf\n        # is already symmetric though.\n        aow = np.einsum('pi,p->pi', fxxa[:, :, i], -0.5 * vhfs[:, i])\n        self._vmat_hf += _dot_ao_ao(mol, ao, aow, mask, shls_slice,\n                                    ao_loc_nr)\n    else:\n      vxc_0 = np.stack([vrho[0][:, 0], vrho[1][:, 0]], axis=1)\n      # pyscf expects derivatives with respect to:\n      # grad_rho_a . grad_rho_a\n      # grad_rho_a . grad_rho_b\n      # grad_rho_b . grad_rho_b\n      # The functional uses the first and last as inputs, but then has\n      # grad_(rho_a + rho_b) . grad_(rho_a + rho_b)\n      # as input. The following computes the correct total derivatives.\n      vxc_1 = np.stack([\n          vsigma[0][:, 0] + vsigma[2][:, 0], 2. * vsigma[2][:, 0],\n          vsigma[1][:, 0] + vsigma[2][:, 0]\n      ],\n                       axis=1)\n      vxc_3 = np.stack([vtau[0][:, 0], vtau[1][:, 0]], axis=1)\n      vxc_2 = np.zeros_like(vxc_3)\n      vhfs = np.stack([vhf[0], vhf[1]], axis=2)\n      for i in range(len(self._omega_values)):\n        # Factors of 1/2 are due to the same reason as in the spin=0 case.\n        aow = np.einsum('pi,p->pi', fxxa[:, :, i], -0.5 * vhfs[:, i, 0])\n        self._vmat_hf[0] += _dot_ao_ao(mol, ao, aow, mask, shls_slice,\n                                       ao_loc_nr)\n        aow = np.einsum('pi,p->pi', fxxb[:, :, i], -0.5 * vhfs[:, i, 1])\n        self._vmat_hf[1] += _dot_ao_ao(mol, ao, aow, mask, shls_slice,\n                                       ao_loc_nr)\n\n    fxc = None  # Second derivative not implemented\n    kxc = None  # Second derivative not implemented\n    # PySCF C routines expect float64.\n    exc = exc.astype(np.float64)\n    vxc = tuple(v.astype(np.float64) for v in (vxc_0, vxc_1, vxc_2, vxc_3))\n    return exc, vxc, fxc, kxc\n"
  },
  {
    "path": "density_functional_approximation_dm21/density_functional_approximation_dm21/neural_numint_test.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Tests for neural_numint.\"\"\"\n\nimport os\n\n\nfrom absl.testing import parameterized\nimport attr\nfrom pyscf import dft\nfrom pyscf import gto\nfrom pyscf import lib\nimport tensorflow.compat.v1 as tf\n\nfrom density_functional_approximation_dm21 import neural_numint\n\n\nclass NeuralNumintTest(tf.test.TestCase, parameterized.TestCase):\n\n  def setUp(self):\n    super().setUp()\n    lib.param.TMPDIR = None\n    lib.num_threads(1)\n\n  # Golden values were obtained using the version of PySCF (including integral\n  # generation) reported in the DM21 paper.\n  @parameterized.parameters(\n      {\n          'functional': neural_numint.Functional.DM21,\n          'expected_energy': -126.898521\n      },\n      {\n          'functional': neural_numint.Functional.DM21m,\n          'expected_energy': -126.907332\n      },\n      {\n          'functional': neural_numint.Functional.DM21mc,\n          'expected_energy': -126.922127\n      },\n      {\n          'functional': neural_numint.Functional.DM21mu,\n          'expected_energy': -126.898178\n      },\n  )\n  def test_rks(self, functional, expected_energy):\n    ni = neural_numint.NeuralNumInt(functional)\n\n    mol = gto.Mole()\n    mol.atom = [['Ne', 0., 0., 0.]]\n    mol.basis = 'sto-3g'\n    mol.build()\n\n    mf = dft.RKS(mol)\n    mf.small_rho_cutoff = 1.e-20\n    mf._numint = ni\n    mf.run()\n    self.assertAlmostEqual(mf.e_tot, expected_energy, delta=2.e-4)\n\n  @parameterized.parameters(\n      {\n          'functional': neural_numint.Functional.DM21,\n          'expected_energy': -37.34184876\n      },\n      {\n          'functional': neural_numint.Functional.DM21m,\n          'expected_energy': -37.3377766\n      },\n      {\n          'functional': neural_numint.Functional.DM21mc,\n          'expected_energy': -37.33489173\n      },\n      {\n          'functional': neural_numint.Functional.DM21mu,\n          'expected_energy': -37.34015315\n      },\n  )\n  def test_uks(self, functional, expected_energy):\n    ni = neural_numint.NeuralNumInt(functional)\n\n    mol = gto.Mole()\n    mol.atom = [['C', 0., 0., 0.]]\n    mol.spin = 2\n    mol.basis = 'sto-3g'\n    mol.build()\n\n    mf = dft.UKS(mol)\n    mf.small_rho_cutoff = 1.e-20\n    mf._numint = ni\n    mf.run()\n    self.assertAlmostEqual(mf.e_tot, expected_energy, delta=2.e-4)\n\n  def test_exported_model(self):\n\n    mol = gto.Mole()\n    mol.atom = [['C', 0., 0., 0.]]\n    mol.spin = 2\n    mol.basis = 'sto-3g'\n    mol.build()\n\n    ni = neural_numint.NeuralNumInt(neural_numint.Functional.DM21)\n    mf = dft.UKS(mol)\n    mf.small_rho_cutoff = 1.e-20\n    mf._numint = ni\n    mf.run()\n\n    dms = mf.make_rdm1()\n    ao = ni.eval_ao(mol, mf.grids.coords, deriv=2)\n    rho_a = ni.eval_rho(mol, ao, dms[0], xctype='MGGA')\n    rho_b = ni.eval_rho(mol, ao, dms[1], xctype='MGGA')\n    inputs, _ = ni.construct_functional_inputs(\n        mol=mol,\n        dms=dms,\n        spin=1,\n        coords=mf.grids.coords,\n        weights=mf.grids.weights,\n        rho=(rho_a, rho_b),\n        ao=ao[0])\n\n    feed_dict = dict(\n        zip(\n            attr.asdict(ni._placeholders).values(),\n            attr.asdict(inputs).values(),\n        ))\n    with ni._graph.as_default():\n      outputs = ni._session.run(\n          {\n              'vxc': ni._vxc,\n              'vrho': ni._vrho,\n              'vsigma': ni._vsigma,\n              'vtau': ni._vtau,\n              'vhf': ni._vhf\n          },\n          feed_dict=feed_dict)\n\n    export_path = os.path.join(self.get_temp_dir(), 'export')\n    ni.export_functional_and_derivatives(export_path)\n    model = tf.saved_model.load_v2(export_path)\n    tensor_inputs = {\n        k: tf.constant(v, dtype=tf.float32)\n        for k, v in attr.asdict(inputs).items()\n    }\n    exported_output_tensors = model.signatures['default'](**tensor_inputs)\n    with tf.Session() as session:\n      session.run(tf.global_variables_initializer())\n      exported_outputs = session.run(exported_output_tensors)\n    self.assertAllClose(outputs, exported_outputs, atol=5.e-5, rtol=1.e-5)\n\n\nif __name__ == '__main__':\n  tf.test.main()\n"
  },
  {
    "path": "density_functional_approximation_dm21/external/tf_bazel.patch",
    "content": "From 76edcc2da8a754cb2b283d7de9a7b37f51f7f380 Mon Sep 17 00:00:00 2001\nFrom: James Spencer <jamessspencer@google.com>\nDate: Thu, 26 Aug 2021 10:00:53 +0100\nSubject: [PATCH] Set dependencies for saved_model_compile_aot rule,\n visibility for xla_compiled_cpu_runtime_standalone to work outside of\n tensorflow, and absl version.\n\n---\n tensorflow/compiler/tf2xla/BUILD              | 2 +-\n tensorflow/compiler/xla/mlir/ir/runtime/BUILD | 1 +\n tensorflow/python/tools/tools.bzl             | 4 ++--\n 3 files changed, 4 insertions(+), 3 deletions(-)\n\ndiff --git a/tensorflow/compiler/tf2xla/BUILD b/tensorflow/compiler/tf2xla/BUILD\nindex cfe63b16675..cd273aaf29e 100644\n--- a/tensorflow/compiler/tf2xla/BUILD\n+++ b/tensorflow/compiler/tf2xla/BUILD\n@@ -235,7 +235,7 @@ cc_library(\n         \"-parse_headers\",\n     ],\n     linkstatic = 1,\n-    visibility = [\":friends\"],\n+    visibility = [\"//visibility:public\"],\n     # Note, we specifically removed MKL and multithreaded dependencies so the\n     # standalone does not require the MKL binary blob or threading libraries.\n     #\ndiff --git a/tensorflow/compiler/xla/mlir/ir/runtime/BUILD b/tensorflow/compiler/xla/mlir/ir/runtime/BUILD\nindex 8c693fa5d49..bf95a3de622 100644\n--- a/tensorflow/compiler/xla/mlir/ir/runtime/BUILD\n+++ b/tensorflow/compiler/xla/mlir/ir/runtime/BUILD\n@@ -90,6 +90,7 @@ cc_library(\n         \"rt_ops.h\",\n     ],\n     compatible_with = get_compatible_with_cloud(),\n+    visibility = [\"//visibility:public\"],\n     deps = [\n         \":rt_inc_gen\",\n         \"//tensorflow/compiler/xla/runtime:constraints\",\ndiff --git a/tensorflow/python/tools/tools.bzl b/tensorflow/python/tools/tools.bzl\nindex db886746006..bc597e29de9 100644\n--- a/tensorflow/python/tools/tools.bzl\n+++ b/tensorflow/python/tools/tools.bzl\n@@ -148,7 +148,7 @@ def saved_model_compile_aot(\n         ),\n         tags = tags,\n         tools = [\n-            \"//tensorflow/python/tools:saved_model_cli\",\n+            \"@org_tensorflow//tensorflow/python/tools:saved_model_cli\",\n         ],\n     )\n \n@@ -170,7 +170,7 @@ def saved_model_compile_aot(\n         tags = tags,\n         deps = _maybe_force_compile(\n             [\n-                \"//tensorflow/compiler/tf2xla:xla_compiled_cpu_runtime_standalone\",\n+                \"@org_tensorflow//tensorflow/compiler/tf2xla:xla_compiled_cpu_runtime_standalone\",\n             ],\n             force_compile = force_without_xla_support_flag,\n         ),\n \n-- \n2.33.0.259.gc128427fd7-goog\n\n"
  },
  {
    "path": "density_functional_approximation_dm21/requirements.txt",
    "content": "absl-py==1.4.0\nattrs==22.2.0\nh5py==3.8.0\nnumpy==1.24.1\npyscf==2.1.1\npytest==6.2.4\nscipy==1.9.3\ntensorflow==2.11.0\ntensorflow-hub==0.12.0\n"
  },
  {
    "path": "density_functional_approximation_dm21/requirements_aot_compilation.txt",
    "content": "Keras-Preprocessing==1.1.2\nnumpy==1.24.1\ntensorflow-estimator==2.11.0\n"
  },
  {
    "path": "density_functional_approximation_dm21/run.sh",
    "content": "#!/bin/bash\n# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Install density_functional_approximation_dm21 in a clean virtualenv and run\n# the tests.  This assumes the working directory is the top-level directory of\n# the deepmind-research repository, i.e.:\n# git clone git@github.com:deepmind/deepmind-research.git\n# cd deepmind_research\n# density_functional_approximation_dm21/run.sh\n\npython3 -m venv /tmp/DM21\nsource /tmp/DM21/bin/activate\npip3 install -r density_functional_approximation_dm21/requirements.txt\npip install 'density_functional_approximation_dm21/[testing]'\npy.test density_functional_approximation_dm21/\n"
  },
  {
    "path": "density_functional_approximation_dm21/setup.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Setup for DM21 functionals interface to PySCF.\"\"\"\n\nfrom setuptools import setup\n\nREQUIRED_PACKAGES = [\n    'absl-py',\n    'attrs',\n    # Note PySCF 1.7.6 and older do not support h5py 3.3.0:\n    # https://github.com/pyscf/pyscf/issues/1016\n    'h5py',\n    'numpy',\n    # Note DM21 functionals are compatible with PySCF 1.7.6 if an older version\n    # of h5py is used.\n    'pyscf>=2.0',\n    'tensorflow',\n    'tensorflow_hub',\n]\nCHECKPOINT_DATA = ['checkpoints/DM21*/*.pb', 'checkpoints/DM21*/variables/*']\n\nsetup(\n    name='density_functional_approximation_dm21',\n    version='0.1',\n    description='An interface to PySCF for the DM21 functionals.',\n    url='https://github.com/deepmind/deepmind-research/density_functional_approximation_dm21',\n    author='DeepMind',\n    author_email='no-reply@google.com',\n    # Contained modules and scripts.\n    packages=['density_functional_approximation_dm21'],\n    package_data={\n        'density_functional_approximation_dm21': CHECKPOINT_DATA,\n    },\n    scripts=['density_functional_approximation_dm21/export_saved_model.py'],\n    install_requires=REQUIRED_PACKAGES,\n    platforms=['any'],\n    license='Apache 2.0',\n    extras_require={'testing': ['pytest', 'scipy']},\n)\n"
  },
  {
    "path": "enformer/README.md",
    "content": "# Enformer\n\nThis package provides an implementation of the Enformer model and examples on\nrunning the model.\n\nIf this source code or accompanying files are helpful for your research please\ncite the following publication:\n\n\"Effective gene expression prediction from sequence by integrating long-range\ninteractions\"\n\nŽiga Avsec, Vikram Agarwal, Daniel Visentin, Joseph R. Ledsam,\nAgnieszka Grabska-Barwinska, Kyle R. Taylor, Yannis Assael, John Jumper,\nPushmeet Kohli, David R. Kelley\n\n## Setup\n\nRequirements:\n\n*   dm-sonnet (2.0.0)\n*   kipoiseq (0.5.2)\n*   numpy (1.19.5)\n*   pandas (1.2.3)\n*   tensoflow (2.4.1)\n*   tensorflow-hub (0.11.0)\n\nSee `requirements.txt`.\n\nTo run the unit test:\n\n```shell\npython3.8 -m venv enformer_venv\nsource enformer_venv/bin/activate\npip install -r requirements.txt\npython -m enformer_test\n```\n\n## Pre-computed variant effect predictions\n\nWe precomputed variant effect scores for all frequent variants (MAF>0.5%, in any\npopulation) present in the 1000 genomes project. Variant scores in HDF5 file\nformat per chromosome for HG19 reference genome can be found\n[here](https://console.cloud.google.com/storage/browser/dm-enformer/variant-scores/1000-genomes/enformer).\nThe HDF5 file has the same format as the output of\n[this](https://github.com/calico/basenji/blob/738321c85f8925ae6ac318a6cd4901a42ea6bc3f/bin/basenji_sad.py#L264)\nscript and contains the following arrays:\n\n*   snp \\[num_snps](string) - snp id\n*   chr \\[num_snps](string) - chromosome name\n*   pos \\[num_snps](uint32) - position (1-based)\n*   ref \\[num_snps](string) - reference allele\n*   alt \\[num_snps](string) - alternative allele\n*   target_ids \\[num_targets](string) - target ids\n*   target_labels \\[num_targets](string) - target names\n*   SAD \\[num_snps, num_targets](float16) - SNP Activity Difference (SAD)\n    scores - main variant effect score computed as `model(alternate_sequence) -\n    model(reference_sequence)`.\n*   SAR \\[num_snps, num_targets](float16) - Same as SAD, by computing\n    `np.log2(1 + model(alternate_sequence)) - np.log2(1 +\n    model(reference_sequence))`\n\nFurthermore, we provide the top 20 principal components of variant-effect scores\nin the [PC20 folder](https://console.cloud.google.com/storage/browser/dm-enformer/variant-scores/1000-genomes/enformer/PC20)\nstored as a tabix-indexed TSV file per chromosome (HG19 reference\ngenome). The format of these files has the following columns:\n\n*   #CHROM - chromosome (chr1)\n*   POS - variant position (1-based)\n*   ID - dbSNP identifier\n*   REF - reference allele (e.g. A)\n*   ALT - alternate allele (e.g. T)\n*   PC{i} - i-th principal component of the variant effect prediction.\n\nAll model predictions are licensed under\n[CC-BY 4.0 license](https://creativecommons.org/licenses/by/4.0/).\n\n## Running Inference\n\nThe simplest way to perform inference is to load the model via tfhub.dev (TODO:\nLINK). The input sequence length is 393,216 with the prediction corresponding to\n128 base pair windows of the center 114,688 base pairs. The input sequence is\none hot encoded using the order of indices being 'ACGT' with N values being all\nzeros. Note that only the central 196,608 bp of the input sequence will be used\nby the Enformer model. The rest will be cropped within the model.\n\n```python\nimport tensorflow as tf\nimport tensorflow_hub as hub\n\nenformer = hub.Module('https://tfhub.dev/deepmind/enformer/1')\n\nSEQ_LENGTH = 393_216\n\n# Numpy array [batch_size, SEQ_LENGTH, 4] one hot encoded in order 'ACGT'. The\n# `one_hot_encode` function is available in `enformer.py` and outputs can be\n# stacked to form a batch.\ninputs = tf.zeros((1, SEQ_LENGTH, 4), dtype=tf.float32)\npredictions = enformer.predict_on_batch(inputs)\npredictions['human'].shape  # [batch_size, 896, 5313]\npredictions[mouse].shape  # [batch_size, 896, 1643]\n```\n\n## Outputs\n\nFor each 128 bp window, predictions are made for every track. The mapping from\ntrack idx to track name is found in the corresponding file in the basenji\n[dataset](https://github.com/calico/basenji/tree/master/manuscripts/cross2020)\nfolder (targets_{organism}.txt file).\n\nAs an example, to load track annotations for the human targets:\n\n```python\nimport pandas as pd\ntargets_txt = 'https://raw.githubusercontent.com/calico/basenji/0.5/manuscripts/cross2020/targets_human.txt'\ndf_targets = pd.read_csv(targets_txt, sep='\\t')\ndf_targets.shape  # (5313, 8) With rows match output shape above.\n```\n\n## Training Code\n\nThe model is implemented using [Sonnet](https://github.com/deepmind/sonnet). The\nfull sonnet module is defined in `enformer.py` called Enformer. See\n[enformer-training.ipynb](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/enformer/enformer-training.ipynb)\non how to train the model on Basenji2 data and how to load the pre-trained\nweights into the Enformer module for fine-tuning.\n\n## Colab\n\nFurther usage and training examples are given in the following colab notebooks:\n\n### `enformer-usage.ipynb` [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/enformer/enformer-usage.ipynb).\n\nThis shows how to:\n\n*   **Make predictions** with pre-trained Enformer and reproduce Fig. 1d\n*   **Compute contribution scores** and reproduce parts of Fig. 2a\n*   **Predict the effect of genetic variants** and reproduce parts of Fig. 3g\n*   Score multiple variants in a VCF\n\n### `enformer-training.ipynb` [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/enformer/enformer-training.ipynb).\n\nThis colab shows how to:\n\n* Setup training data by directly accessing the Basenji2 data on GCS\n* Train the model for a few steps on both human and mouse genomes\n* Evaluate the model on human and mouse genomes\n* Restore the model from a checkpoint for fine-tuning\n\n## Disclaimer\n\nThis is not an official Google product.\n\n"
  },
  {
    "path": "enformer/attention_module.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"TransformerBlock and MultiheadAttention modules used in the paper.\n\n\"Effective gene expression prediction from sequence by integrating long-range\ninteractions\"\n\nŽiga Avsec1, Vikram Agarwal2,4, Daniel Visentin1,4, Joseph R. Ledsam1,3,\nAgnieszka Grabska-Barwinska1, Kyle R. Taylor1, Yannis Assael1, John Jumper1,\nPushmeet Kohli1, David R. Kelley2*\n\n1 DeepMind, London, UK\n2 Calico Life Sciences, South San Francisco, CA, USA\n3 Google, Tokyo, Japan\n4 These authors contributed equally.\n* correspondence: avsec@google.com, pushmeet@google.com, drk@calicolabs.com\n\nExample:\n```\nmha = MultiheadAttention(\n    value_size=96,\n    key_size=64,\n    num_heads=8,\n    relative_position_functions=['positional_features_sin_cos'])\nmha(tf.ones((2, 1024, 96*8)), is_training=True)\n\n# Transformer block as used in the paper\ntransformer_block = TransformerBlock(\n    channels=96 * 8,\n    dropout_rate=0.4,\n    attention_kwargs=dict(\n        value_size=96,\n        key_size=64,\n        num_heads=8,\n        relative_positions=True,\n        relative_position_symmetric=False,\n        num_relative_position_features=None,\n        relative_position_functions=['positional_features_exponential',\n                                     'positional_features_central_mask',\n                                     'positional_features_gamma'],\n        positional_dropout_rate=0.01,\n        attention_dropout_rate=0.05,\n        )\n    )\ntransformer_block(tf.ones((2, 1024, 96*8)), is_training=True)\n```\n\"\"\"\nfrom typing import Any, Dict, List, Optional\n\nimport numpy as np\nimport sonnet as snt\nimport tensorflow as tf\n\n\nclass TransformerBlock(snt.Module):\n  \"\"\"Full transformer module block.\"\"\"\n\n  def __init__(\n      self,\n      channels: int,\n      dropout_rate: float,\n      attention_kwargs: Dict[str, Any],\n      name: str = 'transformer_block',\n  ):\n    super().__init__(name=name)\n    self.mha_ln = snt.LayerNorm(axis=-1, create_scale=True, create_offset=True)\n    self.mha = MultiheadAttention(**attention_kwargs)\n    self.mha_dropout = snt.Dropout(dropout_rate)\n\n    self.mlp_ln = snt.LayerNorm(axis=-1, create_scale=True, create_offset=True)\n    self.mlp_linear1 = snt.Linear(channels * 2)\n    self.mlp_dropout1 = snt.Dropout(dropout_rate)\n    self.mlp_linear2 = snt.Linear(channels)\n    self.mlp_dropout2 = snt.Dropout(dropout_rate)\n\n  def __call__(self, inputs: tf.Tensor, is_training: bool) -> tf.Tensor:\n    x = self.mha_ln(inputs)\n    x = self.mha(x, is_training=is_training)\n    x = self.mha_dropout(x, is_training=is_training)\n    x += inputs  # Residual\n    mha_output = x\n\n    # MLP.\n    x = self.mlp_ln(mha_output)\n    x = self.mlp_linear1(x)\n    x = self.mlp_dropout1(x, is_training=is_training)\n    x = tf.nn.relu(x)\n    x = self.mlp_linear2(x)\n    x = self.mlp_dropout2(x, is_training=is_training)\n    return x + mha_output\n\n\nclass MultiheadAttention(snt.Module):\n  \"\"\"Multi-head attention.\"\"\"\n\n  def __init__(self,\n               value_size: int,\n               key_size: int,\n               num_heads: int,\n               scaling: bool = True,\n               attention_dropout_rate: float = 0.1,\n               relative_positions: bool = False,\n               relative_position_symmetric: bool = False,\n               relative_position_functions: Optional[List[str]] = None,\n               num_relative_position_features: Optional[int] = None,\n               positional_dropout_rate: float = 0.1,\n               zero_initialize: bool = True,\n               initializer: Optional[snt.initializers.Initializer] = None,\n               name: str = None):\n    \"\"\"Creates a MultiheadAttention module.\n\n    Args:\n      value_size: The size of each value embedding per head.\n      key_size: The size of each key and query embedding per head.\n      num_heads: The number of independent queries per timestep.\n      scaling: Whether to scale the attention logits.\n      attention_dropout_rate: Dropout rate for attention logits.\n      relative_positions: Whether to use TransformerXL style relative attention.\n      relative_position_symmetric: If True, the symmetric version of basis\n        functions will be used. If False, a symmetric and asymmetric versions\n        will be use.\n      relative_position_functions: List of function names used for relative\n        positional biases.\n      num_relative_position_features: Number of relative positional features\n        to compute. If None, `value_size * num_heads` is used.\n      positional_dropout_rate: Dropout rate for the positional encodings if\n        relative positions are used.\n      zero_initialize: if True, the final linear layer will be 0 initialized.\n      initializer: Initializer for the projection layers. If unspecified,\n        VarianceScaling is used with scale = 2.0.\n      name: Name of module.\n    \"\"\"\n    super().__init__(name=name)\n    self._value_size = value_size\n    self._key_size = key_size\n    self._num_heads = num_heads\n    self._attention_dropout_rate = attention_dropout_rate\n    self._scaling = scaling\n    self._relative_positions = relative_positions\n    self._relative_position_symmetric = relative_position_symmetric\n    self._relative_position_functions = relative_position_functions\n    if num_relative_position_features is None:\n      # num_relative_position_features needs to be divisible by the number of\n      # relative positional functions *2 (for symmetric & asymmetric version).\n      divisible_by = 2 * len(self._relative_position_functions)\n      self._num_relative_position_features = (\n          (self._value_size // divisible_by) * divisible_by)\n    else:\n      self._num_relative_position_features = num_relative_position_features\n    self._positional_dropout_rate = positional_dropout_rate\n\n    self._initializer = initializer\n    if self._initializer is None:\n      self._initializer = snt.initializers.VarianceScaling(scale=2.0)\n\n    key_proj_size = self._key_size * self._num_heads\n    embedding_size = self._value_size * self._num_heads\n\n    self._q_layer = snt.Linear(\n        key_proj_size,\n        name='q_layer',\n        with_bias=False,\n        w_init=self._initializer)\n    self._k_layer = snt.Linear(\n        key_proj_size,\n        name='k_layer',\n        with_bias=False,\n        w_init=self._initializer)\n    self._v_layer = snt.Linear(\n        embedding_size,\n        name='v_layer',\n        with_bias=False,\n        w_init=self._initializer)\n    w_init = snt.initializers.Zeros() if zero_initialize else self._initializer\n    self._embedding_layer = snt.Linear(\n        embedding_size,\n        name='embedding_layer',\n        w_init=w_init)\n\n    # Create additional layers if using relative positions.\n    if self._relative_positions:\n      self._r_k_layer = snt.Linear(\n          key_proj_size,\n          name='r_k_layer',\n          with_bias=False,\n          w_init=self._initializer)\n      self._r_w_bias = tf.Variable(\n          self._initializer([1, self._num_heads, 1, self._key_size],\n                            dtype=tf.float32),\n          name='r_w_bias')\n      self._r_r_bias = tf.Variable(\n          self._initializer([1, self._num_heads, 1, self._key_size],\n                            dtype=tf.float32),\n          name='r_r_bias')\n\n  def _multihead_output(self, linear, inputs):\n    \"\"\"Applies a standard linear to inputs and returns multihead output.\"\"\"\n\n    output = snt.BatchApply(linear)(inputs)  # [B, T, H * KV]\n    num_kv_channels = output.shape[-1] // self._num_heads\n    # Split H * Channels into separate axes.\n    output = snt.reshape(output,\n                         output_shape=[-1, self._num_heads, num_kv_channels])\n    # [B, T, H, KV] -> [B, H, T, KV]\n    return tf.transpose(output, [0, 2, 1, 3])\n\n  def __call__(self,\n               inputs,\n               is_training=False):\n    # Initialise the projection layers.\n    embedding_size = self._value_size * self._num_heads\n    seq_len = inputs.shape[1]\n\n    # Compute q, k and v as multi-headed projections of the inputs.\n    q = self._multihead_output(self._q_layer, inputs)  # [B, H, T, K]\n    k = self._multihead_output(self._k_layer, inputs)  # [B, H, T, K]\n    v = self._multihead_output(self._v_layer, inputs)  # [B, H, T, V]\n\n    # Scale the query by the square-root of key size.\n    if self._scaling:\n      q *= self._key_size**-0.5\n\n    if self._relative_positions:\n      # For relative positions, we project positions to form relative keys.\n      distances = tf.range(-seq_len + 1, seq_len, dtype=tf.float32)[tf.newaxis]\n      positional_encodings = positional_features_all(\n          positions=distances,\n          feature_size=self._num_relative_position_features,\n          seq_length=seq_len,\n          feature_functions=self._relative_position_functions,\n          symmetric=self._relative_position_symmetric)\n      # [1, 2T-1, Cr]\n\n      if is_training:\n        positional_encodings = tf.nn.dropout(\n            positional_encodings, rate=self._positional_dropout_rate)\n\n      # [1, H, 2T-1, K]\n      r_k = self._multihead_output(self._r_k_layer, positional_encodings)\n\n      # Add shifted relative logits to content logits.\n      # [B, H, T', T]\n      content_logits = tf.matmul(q + self._r_w_bias, k, transpose_b=True)\n      # [B, H, T', 2T-1]\n      relative_logits = tf.matmul(\n          q + self._r_r_bias, r_k, transpose_b=True)\n      #  [B, H, T', T]\n      relative_logits = relative_shift(relative_logits)\n      logits = content_logits + relative_logits\n    else:\n      # [B, H, T', T]\n      logits = tf.matmul(q, k, transpose_b=True)\n\n    weights = tf.nn.softmax(logits)\n\n    # Dropout on the attention weights.\n    if is_training:\n      weights = tf.nn.dropout(weights, rate=self._attention_dropout_rate)\n\n    # Transpose and reshape the output.\n    output = tf.matmul(weights, v)  # [B, H, T', V]\n    output_transpose = tf.transpose(output, [0, 2, 1, 3])  # [B, T', H, V]\n\n    # Final linear layer.\n    attended_inputs = snt.reshape(\n        output_transpose, output_shape=[embedding_size], preserve_dims=2)\n    output = self._embedding_layer(attended_inputs)\n\n    return output\n\n\ndef relative_shift(x):\n  \"\"\"Shift the relative logits like in TransformerXL.\"\"\"\n  # We prepend zeros on the final timescale dimension.\n  to_pad = tf.zeros_like(x[..., :1])\n  x = tf.concat([to_pad, x], -1)\n  _, num_heads, t1, t2 = x.shape\n  x = tf.reshape(x, [-1, num_heads, t2, t1])\n  x = tf.slice(x, [0, 0, 1, 0], [-1, -1, -1, -1])\n  x = tf.reshape(x, [-1, num_heads, t1, t2 - 1])\n  x = tf.slice(x, [0, 0, 0, 0], [-1, -1, -1, (t2 + 1) // 2])\n  return x\n\n\n# Available feature functions:\ndef get_positional_feature_function(name):\n  \"\"\"Returns positional feature functions.\"\"\"\n  available = {\n      'positional_features_exponential': positional_features_exponential,\n      'positional_features_central_mask': positional_features_central_mask,\n      'positional_features_gamma': positional_features_gamma,\n      'positional_features_cosine': positional_features_cosine,\n      'positional_features_linear_masks': positional_features_linear_masks,\n      'positional_features_sin_cos': positional_features_sin_cos,\n  }\n  if name not in available:\n    raise ValueError(f'Function {name} not available in {available.keys()}')\n  return available[name]\n\n\ndef positional_features_all(positions: tf.Tensor,\n                            feature_size: int,\n                            seq_length: Optional[int] = None,\n                            bin_size: Optional[int] = None,\n                            feature_functions: Optional[List[str]] = None,\n                            symmetric=False):\n  \"\"\"Compute relative positional encodings/features.\n\n  Each positional feature function will compute/provide the same fraction of\n  features, making up the total of feature_size.\n\n  Args:\n    positions: Tensor of relative positions of arbitrary shape.\n    feature_size: Total number of basis functions.\n    seq_length: Sequence length denoting the characteristic length that\n      the individual positional features can use. This is required since the\n      parametrization of the input features should be independent of `positions`\n      while it could still require to use the total number of features.\n    bin_size: Bin sized used to partition the sequence. This can be used to\n      compute features on the absolute scale relative to the genome.\n    feature_functions: List of different feature functions to use. Each function\n      will take as argument: positions, sequence length and number of features\n      to compute.\n    symmetric: If True, the resulting features will be symmetric across the\n      relative position of 0 (i.e. only absolute value of positions will\n      matter). If false, then both the symmetric and asymmetric version\n      (symmetric multiplied by sign(positions)) of the features will be used.\n\n  Returns:\n    Tensor of shape: `positions.shape + (feature_size,)`.\n  \"\"\"\n  if feature_functions is None:\n    feature_functions = ['positional_features_exponential',\n                         'positional_features_central_mask',\n                         'positional_features_gamma']\n  num_components = len(feature_functions)  # 1 per each basis function\n  if not symmetric:\n    num_components = 2 * num_components\n\n  # For now, we do not allow odd sized embeddings.\n  if feature_size % num_components != 0:\n    raise ValueError(\n        f'feature_size has to be divisible by {num_components}')\n\n  feature_functions = [get_positional_feature_function(f)\n                       for f in feature_functions]\n  num_basis_per_class = feature_size // num_components\n  embeddings = tf.concat([f(tf.abs(positions), num_basis_per_class,\n                            seq_length, bin_size)\n                          for f in feature_functions],\n                         axis=-1)\n  if not symmetric:\n    embeddings = tf.concat([embeddings,\n                            tf.sign(positions)[..., tf.newaxis] * embeddings],\n                           axis=-1)\n  tf.TensorShape(embeddings.shape).assert_is_compatible_with(\n      positions.shape + [feature_size])\n  return embeddings\n\n\ndef _prepend_dims(x, num_dims):\n  return tf.reshape(x, shape=[1] * num_dims + x.shape)\n\n\ndef positional_features_exponential(positions: tf.Tensor,\n                                    feature_size: int,\n                                    seq_length: Optional[int] = None,\n                                    bin_size: Optional[int] = None,\n                                    min_half_life: Optional[float] = 3.0):\n  \"\"\"Create exponentially decaying positional weights.\n\n  Args:\n    positions: Position tensor (arbitrary shape).\n    feature_size: Number of basis functions to use.\n    seq_length: Sequence length.\n    bin_size: (unused). See `positional_features_all`.\n    min_half_life: Smallest exponential half life in the grid of half lives.\n\n  Returns:\n    A Tensor with shape [2 * seq_length - 1, feature_size].\n  \"\"\"\n  del bin_size  # Unused.\n  if seq_length is None:\n    seq_length = tf.reduce_max(tf.abs(positions)) + 1\n  # Grid of half lifes from [3, seq_length / 2] with feature_size\n  # distributed on the log scale.\n  seq_length = tf.cast(seq_length, dtype=tf.float32)\n  max_range = tf.math.log(seq_length) / tf.math.log(2.0)\n  half_life = tf.pow(2.0, tf.linspace(min_half_life, max_range, feature_size))\n  half_life = _prepend_dims(half_life, positions.shape.rank)\n  positions = tf.abs(positions)\n  outputs = tf.exp(-tf.math.log(2.0) / half_life * positions[..., tf.newaxis])\n  tf.TensorShape(outputs.shape).assert_is_compatible_with(\n      positions.shape + [feature_size])\n  return outputs\n\n\ndef positional_features_central_mask(positions: tf.Tensor,\n                                     feature_size: int,\n                                     seq_length: Optional[int] = None,\n                                     bin_size: Optional[int] = None):\n  \"\"\"Positional features using a central mask (allow only central features).\"\"\"\n  del seq_length  # Unused.\n  del bin_size  # Unused.\n  center_widths = tf.pow(2.0, tf.range(1, feature_size + 1, dtype=tf.float32))\n  center_widths = center_widths - 1\n  center_widths = _prepend_dims(center_widths, positions.shape.rank)\n  outputs = tf.cast(center_widths > tf.abs(positions)[..., tf.newaxis],\n                    tf.float32)\n  tf.TensorShape(outputs.shape).assert_is_compatible_with(\n      positions.shape + [feature_size])\n  return outputs\n\n\ndef gamma_pdf(x, concentration, rate):\n  \"\"\"Gamma probability distribution function: p(x|concentration, rate).\"\"\"\n  log_unnormalized_prob = tf.math.xlogy(concentration - 1., x) - rate * x\n  log_normalization = (tf.math.lgamma(concentration) -\n                       concentration * tf.math.log(rate))\n  return tf.exp(log_unnormalized_prob - log_normalization)\n\n\ndef positional_features_gamma(positions: tf.Tensor,\n                              feature_size: int,\n                              seq_length: Optional[int] = None,\n                              bin_size: Optional[int] = None,\n                              stddev=None,\n                              start_mean=None):\n  \"\"\"Positional features computed using the gamma distributions.\"\"\"\n  del bin_size  # Unused.\n  if seq_length is None:\n    seq_length = tf.reduce_max(tf.abs(positions)) + 1\n  if stddev is None:\n    stddev = seq_length / (2 * feature_size)\n  if start_mean is None:\n    start_mean = seq_length / feature_size\n  mean = tf.linspace(start_mean, seq_length, num=feature_size)\n  mean = _prepend_dims(mean, positions.shape.rank)\n  concentration = (mean / stddev)**2\n  rate = mean / stddev**2\n  probabilities = gamma_pdf(\n      tf.abs(tf.cast(positions, dtype=tf.float32))[..., tf.newaxis],\n      concentration, rate)\n  probabilities += 1e-8  # To ensure numerical stability.\n  outputs = probabilities / tf.reduce_max(probabilities,\n                                          axis=1, keepdims=True)\n  tf.TensorShape(outputs.shape).assert_is_compatible_with(\n      positions.shape + [feature_size])\n  return outputs\n\n\ndef positional_features_cosine(positions: tf.Tensor,\n                               feature_size: int,\n                               seq_length: Optional[int] = None,\n                               bin_size: Optional[int] = None):\n  \"\"\"Cosine positional features.\"\"\"\n  del bin_size  # Unused.\n  del seq_length  # Unused.\n  periodicity = 1.25 * tf.pow(2.0, tf.range(0, feature_size, dtype=tf.float32))\n  periodicity = _prepend_dims(periodicity, positions.shape.rank)\n\n  outputs = tf.math.cos(2 * np.pi * positions[..., tf.newaxis] / periodicity)\n  tf.TensorShape(outputs.shape).assert_is_compatible_with(\n      positions.shape + [feature_size])\n  return outputs\n\n\ndef positional_features_linear_masks(positions: tf.Tensor,\n                                     feature_size: int,\n                                     seq_length: Optional[int] = None,\n                                     bin_size: Optional[int] = None):\n  \"\"\"Exponentially increasing point focuses.\"\"\"\n  del bin_size  # Unused.\n  del seq_length  # Unused.\n  distances = tf.range(0, feature_size, dtype=tf.float32)\n  distances = _prepend_dims(distances, positions.shape.rank)\n  outputs = tf.cast(distances == tf.abs(positions[..., tf.newaxis]),\n                    dtype=tf.float32)\n\n  tf.TensorShape(outputs.shape).assert_is_compatible_with(\n      positions.shape + [feature_size])\n  return outputs\n\n\ndef positional_features_sin_cos(positions: tf.Tensor,\n                                feature_size: int,\n                                seq_length: Optional[int] = None,\n                                bin_size: Optional[int] = None,\n                                max_time=10000.0):\n  \"\"\"Sine/cosine positional encodings.\"\"\"\n  del bin_size  # Unused.\n  del seq_length  # Unused.\n  if feature_size % 2 != 0:\n    raise ValueError('feature_size needs to be divisible by 2.')\n  i = tf.range(0, feature_size, 2, dtype=tf.float32)\n  i = _prepend_dims(i, positions.shape.rank)\n\n  # Concat sines and cosines and return.\n  outputs = tf.concat([\n      tf.sin(positions[..., tf.newaxis] / max_time**(i / feature_size)),\n      tf.cos(positions[..., tf.newaxis] / max_time**(i / feature_size))], -1)\n\n  tf.TensorShape(outputs.shape).assert_is_compatible_with(\n      positions.shape + [feature_size])\n  return outputs\n"
  },
  {
    "path": "enformer/enformer-training.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"rb_ShvB9E8yM\"\n      },\n      \"source\": [\n        \"Copyright 2021 DeepMind Technologies Limited\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"you may not use this file except in compliance with the License.\\n\",\n        \"You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"     https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software\\n\",\n        \"distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"See the License for the specific language governing permissions and\\n\",\n        \"limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"kXQjDxgdwUmW\"\n      },\n      \"source\": [\n        \"This colab showcases training of the Enformer model published in\\n\",\n        \"\\n\",\n        \"**\\\"Effective gene expression prediction from sequence by integrating long-range interactions\\\"**\\n\",\n        \"\\n\",\n        \"Žiga Avsec, Vikram Agarwal, Daniel Visentin, Joseph R. Ledsam, Agnieszka Grabska-Barwinska, Kyle R. Taylor, Yannis Assael, John Jumper, Pushmeet Kohli, David R. Kelley\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"2AVkKjy3bh_A\"\n      },\n      \"source\": [\n        \"## Steps\\n\",\n        \"\\n\",\n        \"- Setup tf.data.Dataset by directly accessing the Basenji2 data on GCS: `gs://basenji_barnyard/data`\\n\",\n        \"- Train the model for a few steps, alternating training on human and mouse data batches\\n\",\n        \"- Evaluate the model on human and mouse genomes\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"sM_PMOT-2Xhi\"\n      },\n      \"source\": [\n        \"## Setup\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"NqR7ol3rxrtM\"\n      },\n      \"source\": [\n        \"**Start the colab kernel with GPU**: Runtime -\\u003e Change runtime type -\\u003e GPU\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"vhjR7StI1tZn\"\n      },\n      \"source\": [\n        \"### Install dependencies\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"id\": \"WiDFm-a41tKW\",\n        \"outputId\": \"8b889c6e-f113-4664-f2c9-91110808ad92\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Collecting dm-sonnet\\n\",\n            \"\\u001b[?25l  Downloading https://files.pythonhosted.org/packages/13/28/9185afffefb655ef1a29f4b84aa9f656826408ca2d1b9ffeba81fbfd40ec/dm_sonnet-2.0.0-py3-none-any.whl (254kB)\\n\",\n            \"\\r\\u001b[K     |█▎                              | 10kB 13.3MB/s eta 0:00:01\\r\\u001b[K     |██▋                             | 20kB 11.7MB/s eta 0:00:01\\r\\u001b[K     |███▉                            | 30kB 8.7MB/s eta 0:00:01\\r\\u001b[K     |█████▏                          | 40kB 7.7MB/s eta 0:00:01\\r\\u001b[K     |██████▍                         | 51kB 4.5MB/s eta 0:00:01\\r\\u001b[K     |███████▊                        | 61kB 5.1MB/s eta 0:00:01\\r\\u001b[K     |█████████                       | 71kB 5.1MB/s eta 0:00:01\\r\\u001b[K     |██████████▎                     | 81kB 5.5MB/s eta 0:00:01\\r\\u001b[K     |███████████▋                    | 92kB 5.5MB/s eta 0:00:01\\r\\u001b[K     |████████████▉                   | 102kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |██████████████▏                 | 112kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |███████████████▌                | 122kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |████████████████▊               | 133kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |██████████████████              | 143kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |███████████████████▎            | 153kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |████████████████████▋           | 163kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |██████████████████████          | 174kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |███████████████████████▏        | 184kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |████████████████████████▌       | 194kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |█████████████████████████▊      | 204kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |███████████████████████████     | 215kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |████████████████████████████▎   | 225kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |█████████████████████████████▋  | 235kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |███████████████████████████████ | 245kB 5.7MB/s eta 0:00:01\\r\\u001b[K     |████████████████████████████████| 256kB 5.7MB/s \\n\",\n            \"\\u001b[?25hRequirement already satisfied: tqdm in /usr/local/lib/python3.7/dist-packages (4.41.1)\\n\",\n            \"Requirement already satisfied: six\\u003e=1.12.0 in /usr/local/lib/python3.7/dist-packages (from dm-sonnet) (1.15.0)\\n\",\n            \"Requirement already satisfied: absl-py\\u003e=0.7.1 in /usr/local/lib/python3.7/dist-packages (from dm-sonnet) (0.12.0)\\n\",\n            \"Requirement already satisfied: numpy\\u003e=1.16.3 in /usr/local/lib/python3.7/dist-packages (from dm-sonnet) (1.19.5)\\n\",\n            \"Requirement already satisfied: wrapt\\u003e=1.11.1 in /usr/local/lib/python3.7/dist-packages (from dm-sonnet) (1.12.1)\\n\",\n            \"Requirement already satisfied: tabulate\\u003e=0.7.5 in /usr/local/lib/python3.7/dist-packages (from dm-sonnet) (0.8.9)\\n\",\n            \"Requirement already satisfied: dm-tree\\u003e=0.1.1 in /usr/local/lib/python3.7/dist-packages (from dm-sonnet) (0.1.5)\\n\",\n            \"Installing collected packages: dm-sonnet\\n\",\n            \"Successfully installed dm-sonnet-2.0.0\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"!pip install dm-sonnet tqdm\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"CokqDsb-fxme\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Get enformer source code\\n\",\n        \"!wget -q https://raw.githubusercontent.com/deepmind/deepmind-research/master/enformer/attention_module.py\\n\",\n        \"!wget -q https://raw.githubusercontent.com/deepmind/deepmind-research/master/enformer/enformer.py\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"xmffZS_306eb\"\n      },\n      \"source\": [\n        \"### Import\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"id\": \"hTGOLrbZxNHK\",\n        \"outputId\": \"f58b5c21-0764-4003-c794-aa89e5d336cc\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"env: TF_ENABLE_GPU_GARBAGE_COLLECTION=false\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"import tensorflow as tf\\n\",\n        \"# Make sure the GPU is enabled \\n\",\n        \"assert tf.config.list_physical_devices('GPU'), 'Start the colab kernel with GPU: Runtime -\\u003e Change runtime type -\\u003e GPU'\\n\",\n        \"\\n\",\n        \"# Easier debugging of OOM\\n\",\n        \"%env TF_ENABLE_GPU_GARBAGE_COLLECTION=false\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"S9ywsUmT05C1\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"import sonnet as snt\\n\",\n        \"from tqdm import tqdm\\n\",\n        \"from IPython.display import clear_output\\n\",\n        \"import numpy as np\\n\",\n        \"import pandas as pd\\n\",\n        \"import time\\n\",\n        \"import os\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"YUIbu0Xu1BnA\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"assert snt.__version__.startswith('2.0')\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 35\n        },\n        \"id\": \"PWzsyJddILcx\",\n        \"outputId\": \"3f1cac0f-6bce-430e-b3c0-9848d43e654c\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"application/vnd.google.colaboratory.intrinsic+json\": {\n              \"type\": \"string\"\n            },\n            \"text/plain\": [\n              \"'2.4.1'\"\n            ]\n          },\n          \"execution_count\": 7,\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"execute_result\"\n        }\n      ],\n      \"source\": [\n        \"tf.__version__\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"id\": \"xOhdaXG95eOl\",\n        \"outputId\": \"1e57ef49-254a-4050-89af-61bc0f8ea577\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Fri Mar 26 12:28:00 2021       \\n\",\n            \"+-----------------------------------------------------------------------------+\\n\",\n            \"| NVIDIA-SMI 460.67       Driver Version: 460.32.03    CUDA Version: 11.2     |\\n\",\n            \"|-------------------------------+----------------------+----------------------+\\n\",\n            \"| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\\n\",\n            \"| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |\\n\",\n            \"|                               |                      |               MIG M. |\\n\",\n            \"|===============================+======================+======================|\\n\",\n            \"|   0  Tesla T4            Off  | 00000000:00:04.0 Off |                    0 |\\n\",\n            \"| N/A   42C    P8    10W /  70W |      3MiB / 15109MiB |      0%      Default |\\n\",\n            \"|                               |                      |                  N/A |\\n\",\n            \"+-------------------------------+----------------------+----------------------+\\n\",\n            \"                                                                               \\n\",\n            \"+-----------------------------------------------------------------------------+\\n\",\n            \"| Processes:                                                                  |\\n\",\n            \"|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |\\n\",\n            \"|        ID   ID                                                   Usage      |\\n\",\n            \"|=============================================================================|\\n\",\n            \"|  No running processes found                                                 |\\n\",\n            \"+-----------------------------------------------------------------------------+\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"# GPU colab has T4 with 16 GiB of memory\\n\",\n        \"!nvidia-smi\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"0Xx--Nco09fN\"\n      },\n      \"source\": [\n        \"### Code\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"BbXyDdoShFzX\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"import enformer\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"MEb8OZli2Nbu\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title `get_targets(organism)`\\n\",\n        \"def get_targets(organism):\\n\",\n        \"  targets_txt = f'https://raw.githubusercontent.com/calico/basenji/master/manuscripts/cross2020/targets_{organism}.txt'\\n\",\n        \"  return pd.read_csv(targets_txt, sep='\\\\t')\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"2BuZ2gmUbpXZ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title `get_dataset(organism, subset, num_threads=8)`\\n\",\n        \"import glob\\n\",\n        \"import json\\n\",\n        \"import functools\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def organism_path(organism):\\n\",\n        \"  return os.path.join('gs://basenji_barnyard/data', organism)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_dataset(organism, subset, num_threads=8):\\n\",\n        \"  metadata = get_metadata(organism)\\n\",\n        \"  dataset = tf.data.TFRecordDataset(tfrecord_files(organism, subset),\\n\",\n        \"                                    compression_type='ZLIB',\\n\",\n        \"                                    num_parallel_reads=num_threads)\\n\",\n        \"  dataset = dataset.map(functools.partial(deserialize, metadata=metadata),\\n\",\n        \"                        num_parallel_calls=num_threads)\\n\",\n        \"  return dataset\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_metadata(organism):\\n\",\n        \"  # Keys:\\n\",\n        \"  # num_targets, train_seqs, valid_seqs, test_seqs, seq_length,\\n\",\n        \"  # pool_width, crop_bp, target_length\\n\",\n        \"  path = os.path.join(organism_path(organism), 'statistics.json')\\n\",\n        \"  with tf.io.gfile.GFile(path, 'r') as f:\\n\",\n        \"    return json.load(f)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def tfrecord_files(organism, subset):\\n\",\n        \"  # Sort the values by int(*).\\n\",\n        \"  return sorted(tf.io.gfile.glob(os.path.join(\\n\",\n        \"      organism_path(organism), 'tfrecords', f'{subset}-*.tfr'\\n\",\n        \"  )), key=lambda x: int(x.split('-')[-1].split('.')[0]))\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def deserialize(serialized_example, metadata):\\n\",\n        \"  \\\"\\\"\\\"Deserialize bytes stored in TFRecordFile.\\\"\\\"\\\"\\n\",\n        \"  feature_map = {\\n\",\n        \"      'sequence': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"      'target': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"  }\\n\",\n        \"  example = tf.io.parse_example(serialized_example, feature_map)\\n\",\n        \"  sequence = tf.io.decode_raw(example['sequence'], tf.bool)\\n\",\n        \"  sequence = tf.reshape(sequence, (metadata['seq_length'], 4))\\n\",\n        \"  sequence = tf.cast(sequence, tf.float32)\\n\",\n        \"\\n\",\n        \"  target = tf.io.decode_raw(example['target'], tf.float16)\\n\",\n        \"  target = tf.reshape(target,\\n\",\n        \"                      (metadata['target_length'], metadata['num_targets']))\\n\",\n        \"  target = tf.cast(target, tf.float32)\\n\",\n        \"\\n\",\n        \"  return {'sequence': sequence,\\n\",\n        \"          'target': target}\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"VzGRXfwV4tYH\"\n      },\n      \"source\": [\n        \"## Load dataset\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 203\n        },\n        \"id\": \"M_vr1mbl3jbD\",\n        \"outputId\": \"2de351ed-f43e-4469-a681-2a437d97c946\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"text/html\": [\n              \"\\u003cdiv\\u003e\\n\",\n              \"\\u003cstyle scoped\\u003e\\n\",\n              \"    .dataframe tbody tr th:only-of-type {\\n\",\n              \"        vertical-align: middle;\\n\",\n              \"    }\\n\",\n              \"\\n\",\n              \"    .dataframe tbody tr th {\\n\",\n              \"        vertical-align: top;\\n\",\n              \"    }\\n\",\n              \"\\n\",\n              \"    .dataframe thead th {\\n\",\n              \"        text-align: right;\\n\",\n              \"    }\\n\",\n              \"\\u003c/style\\u003e\\n\",\n              \"\\u003ctable border=\\\"1\\\" class=\\\"dataframe\\\"\\u003e\\n\",\n              \"  \\u003cthead\\u003e\\n\",\n              \"    \\u003ctr style=\\\"text-align: right;\\\"\\u003e\\n\",\n              \"      \\u003cth\\u003e\\u003c/th\\u003e\\n\",\n              \"      \\u003cth\\u003eindex\\u003c/th\\u003e\\n\",\n              \"      \\u003cth\\u003egenome\\u003c/th\\u003e\\n\",\n              \"      \\u003cth\\u003eidentifier\\u003c/th\\u003e\\n\",\n              \"      \\u003cth\\u003efile\\u003c/th\\u003e\\n\",\n              \"      \\u003cth\\u003eclip\\u003c/th\\u003e\\n\",\n              \"      \\u003cth\\u003escale\\u003c/th\\u003e\\n\",\n              \"      \\u003cth\\u003esum_stat\\u003c/th\\u003e\\n\",\n              \"      \\u003cth\\u003edescription\\u003c/th\\u003e\\n\",\n              \"    \\u003c/tr\\u003e\\n\",\n              \"  \\u003c/thead\\u003e\\n\",\n              \"  \\u003ctbody\\u003e\\n\",\n              \"    \\u003ctr\\u003e\\n\",\n              \"      \\u003cth\\u003e0\\u003c/th\\u003e\\n\",\n              \"      \\u003ctd\\u003e0\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e0\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003eENCFF833POA\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e/home/drk/tillage/datasets/human/dnase/encode/...\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e32\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e2\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003emean\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003eDNASE:cerebellum male adult (27 years) and mal...\\u003c/td\\u003e\\n\",\n              \"    \\u003c/tr\\u003e\\n\",\n              \"    \\u003ctr\\u003e\\n\",\n              \"      \\u003cth\\u003e1\\u003c/th\\u003e\\n\",\n              \"      \\u003ctd\\u003e1\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e0\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003eENCFF110QGM\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e/home/drk/tillage/datasets/human/dnase/encode/...\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e32\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e2\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003emean\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003eDNASE:frontal cortex male adult (27 years) and...\\u003c/td\\u003e\\n\",\n              \"    \\u003c/tr\\u003e\\n\",\n              \"    \\u003ctr\\u003e\\n\",\n              \"      \\u003cth\\u003e2\\u003c/th\\u003e\\n\",\n              \"      \\u003ctd\\u003e2\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e0\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003eENCFF880MKD\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e/home/drk/tillage/datasets/human/dnase/encode/...\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e32\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e2\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003emean\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003eDNASE:chorion\\u003c/td\\u003e\\n\",\n              \"    \\u003c/tr\\u003e\\n\",\n              \"    \\u003ctr\\u003e\\n\",\n              \"      \\u003cth\\u003e3\\u003c/th\\u003e\\n\",\n              \"      \\u003ctd\\u003e3\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e0\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003eENCFF463ZLQ\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e/home/drk/tillage/datasets/human/dnase/encode/...\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e32\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e2\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003emean\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003eDNASE:Ishikawa treated with 0.02% dimethyl sul...\\u003c/td\\u003e\\n\",\n              \"    \\u003c/tr\\u003e\\n\",\n              \"    \\u003ctr\\u003e\\n\",\n              \"      \\u003cth\\u003e4\\u003c/th\\u003e\\n\",\n              \"      \\u003ctd\\u003e4\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e0\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003eENCFF890OGQ\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e/home/drk/tillage/datasets/human/dnase/encode/...\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e32\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003e2\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003emean\\u003c/td\\u003e\\n\",\n              \"      \\u003ctd\\u003eDNASE:GM03348\\u003c/td\\u003e\\n\",\n              \"    \\u003c/tr\\u003e\\n\",\n              \"  \\u003c/tbody\\u003e\\n\",\n              \"\\u003c/table\\u003e\\n\",\n              \"\\u003c/div\\u003e\"\n            ],\n            \"text/plain\": [\n              \"   index  genome  ... sum_stat                                        description\\n\",\n              \"0      0       0  ...     mean  DNASE:cerebellum male adult (27 years) and mal...\\n\",\n              \"1      1       0  ...     mean  DNASE:frontal cortex male adult (27 years) and...\\n\",\n              \"2      2       0  ...     mean                                      DNASE:chorion\\n\",\n              \"3      3       0  ...     mean  DNASE:Ishikawa treated with 0.02% dimethyl sul...\\n\",\n              \"4      4       0  ...     mean                                      DNASE:GM03348\\n\",\n              \"\\n\",\n              \"[5 rows x 8 columns]\"\n            ]\n          },\n          \"execution_count\": 43,\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"execute_result\"\n        }\n      ],\n      \"source\": [\n        \"df_targets_human = get_targets('human')\\n\",\n        \"df_targets_human.head()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"YDSKttXI4hMT\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"human_dataset = get_dataset('human', 'train').batch(1).repeat()\\n\",\n        \"mouse_dataset = get_dataset('mouse', 'train').batch(1).repeat()\\n\",\n        \"human_mouse_dataset = tf.data.Dataset.zip((human_dataset, mouse_dataset)).prefetch(2)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"2vx3116C7oFW\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"it = iter(mouse_dataset)\\n\",\n        \"example = next(it)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"id\": \"XeztqJZ74ixT\",\n        \"outputId\": \"39dc4051-5a19-4443-b6b0-bf6869faf5ec\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"human\\n\",\n            \"{'sequence': (TensorShape([1, 131072, 4]), tf.float32), 'target': (TensorShape([1, 896, 5313]), tf.float32)}\\n\",\n            \"mouse\\n\",\n            \"{'sequence': (TensorShape([1, 131072, 4]), tf.float32), 'target': (TensorShape([1, 896, 1643]), tf.float32)}\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"# Example input\\n\",\n        \"it = iter(human_mouse_dataset)\\n\",\n        \"example = next(it)\\n\",\n        \"for i in range(len(example)):\\n\",\n        \"  print(['human', 'mouse'][i])\\n\",\n        \"  print({k: (v.shape, v.dtype) for k,v in example[i].items()})\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"SHHNHzFVbvTk\"\n      },\n      \"source\": [\n        \"## Model training\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"0U3hLJaUdZkG\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def create_step_function(model, optimizer):\\n\",\n        \"\\n\",\n        \"  @tf.function\\n\",\n        \"  def train_step(batch, head, optimizer_clip_norm_global=0.2):\\n\",\n        \"    with tf.GradientTape() as tape:\\n\",\n        \"      outputs = model(batch['sequence'], is_training=True)[head]\\n\",\n        \"      loss = tf.reduce_mean(\\n\",\n        \"          tf.keras.losses.poisson(batch['target'], outputs))\\n\",\n        \"\\n\",\n        \"    gradients = tape.gradient(loss, model.trainable_variables)\\n\",\n        \"    optimizer.apply(gradients, model.trainable_variables)\\n\",\n        \"\\n\",\n        \"    return loss\\n\",\n        \"  return train_step\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"ZXv5HU_242Ut\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"learning_rate = tf.Variable(0., trainable=False, name='learning_rate')\\n\",\n        \"optimizer = snt.optimizers.Adam(learning_rate=learning_rate)\\n\",\n        \"num_warmup_steps = 5000\\n\",\n        \"target_learning_rate = 0.0005\\n\",\n        \"\\n\",\n        \"model = enformer.Enformer(channels=1536 // 4,  # Use 4x fewer channels to train faster.\\n\",\n        \"                          num_heads=8,\\n\",\n        \"                          num_transformer_layers=11,\\n\",\n        \"                          pooling_type='max')\\n\",\n        \"\\n\",\n        \"train_step = create_step_function(model, optimizer)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"id\": \"FrbDaOMWcFUl\",\n        \"outputId\": \"6a42f69c-3003-47f2-a8d2-1b94c52eb57e\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stderr\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"100%|██████████| 20/20 [00:24\\u003c00:00,  1.25s/it]\\n\",\n            \"  0%|          | 0/20 [00:00\\u003c?, ?it/s]\"\n          ]\n        },\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"\\n\",\n            \"loss_human 1.774059 loss_mouse 0.94303024 learning_rate 2.0000002e-06\\n\"\n          ]\n        },\n        {\n          \"name\": \"stderr\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"100%|██████████| 20/20 [00:17\\u003c00:00,  1.13it/s]\\n\",\n            \"  0%|          | 0/20 [00:00\\u003c?, ?it/s]\"\n          ]\n        },\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"\\n\",\n            \"loss_human 1.0067647 loss_mouse 0.8752468 learning_rate 4.0000004e-06\\n\"\n          ]\n        },\n        {\n          \"name\": \"stderr\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"100%|██████████| 20/20 [00:17\\u003c00:00,  1.13it/s]\\n\",\n            \"  0%|          | 0/20 [00:00\\u003c?, ?it/s]\"\n          ]\n        },\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"\\n\",\n            \"loss_human 1.0471998 loss_mouse 0.89318746 learning_rate 6e-06\\n\"\n          ]\n        },\n        {\n          \"name\": \"stderr\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"100%|██████████| 20/20 [00:17\\u003c00:00,  1.14it/s]\\n\",\n            \"  0%|          | 0/20 [00:00\\u003c?, ?it/s]\"\n          ]\n        },\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"\\n\",\n            \"loss_human 1.010262 loss_mouse 1.02991 learning_rate 8.000001e-06\\n\"\n          ]\n        },\n        {\n          \"name\": \"stderr\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"100%|██████████| 20/20 [00:17\\u003c00:00,  1.14it/s]\"\n          ]\n        },\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"\\n\",\n            \"loss_human 1.111991 loss_mouse 0.84773445 learning_rate 1.0000001e-05\\n\"\n          ]\n        },\n        {\n          \"name\": \"stderr\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"# Train the model\\n\",\n        \"steps_per_epoch = 20\\n\",\n        \"num_epochs = 5\\n\",\n        \"\\n\",\n        \"data_it = iter(human_mouse_dataset)\\n\",\n        \"global_step = 0\\n\",\n        \"for epoch_i in range(num_epochs):\\n\",\n        \"  for i in tqdm(range(steps_per_epoch)):\\n\",\n        \"    global_step += 1\\n\",\n        \"\\n\",\n        \"    if global_step \\u003e 1:\\n\",\n        \"      learning_rate_frac = tf.math.minimum(\\n\",\n        \"          1.0, global_step / tf.math.maximum(1.0, num_warmup_steps))      \\n\",\n        \"      learning_rate.assign(target_learning_rate * learning_rate_frac)\\n\",\n        \"\\n\",\n        \"    batch_human, batch_mouse = next(data_it)\\n\",\n        \"\\n\",\n        \"    loss_human = train_step(batch=batch_human, head='human')\\n\",\n        \"    loss_mouse = train_step(batch=batch_mouse, head='mouse')\\n\",\n        \"\\n\",\n        \"  # End of epoch.\\n\",\n        \"  print('')\\n\",\n        \"  print('loss_human', loss_human.numpy(),\\n\",\n        \"        'loss_mouse', loss_mouse.numpy(),\\n\",\n        \"        'learning_rate', optimizer.learning_rate.numpy()\\n\",\n        \"        )\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"Cs0f0z0RcCfz\"\n      },\n      \"source\": [\n        \"## Evaluate\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"8c4lNQrHkXSC\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title `PearsonR` and `R2` metrics\\n\",\n        \"\\n\",\n        \"def _reduced_shape(shape, axis):\\n\",\n        \"  if axis is None:\\n\",\n        \"    return tf.TensorShape([])\\n\",\n        \"  return tf.TensorShape([d for i, d in enumerate(shape) if i not in axis])\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class CorrelationStats(tf.keras.metrics.Metric):\\n\",\n        \"  \\\"\\\"\\\"Contains shared code for PearsonR and R2.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self, reduce_axis=None, name='pearsonr'):\\n\",\n        \"    \\\"\\\"\\\"Pearson correlation coefficient.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      reduce_axis: Specifies over which axis to compute the correlation (say\\n\",\n        \"        (0, 1). If not specified, it will compute the correlation across the\\n\",\n        \"        whole tensor.\\n\",\n        \"      name: Metric name.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(CorrelationStats, self).__init__(name=name)\\n\",\n        \"    self._reduce_axis = reduce_axis\\n\",\n        \"    self._shape = None  # Specified in _initialize.\\n\",\n        \"\\n\",\n        \"  def _initialize(self, input_shape):\\n\",\n        \"    # Remaining dimensions after reducing over self._reduce_axis.\\n\",\n        \"    self._shape = _reduced_shape(input_shape, self._reduce_axis)\\n\",\n        \"\\n\",\n        \"    weight_kwargs = dict(shape=self._shape, initializer='zeros')\\n\",\n        \"    self._count = self.add_weight(name='count', **weight_kwargs)\\n\",\n        \"    self._product_sum = self.add_weight(name='product_sum', **weight_kwargs)\\n\",\n        \"    self._true_sum = self.add_weight(name='true_sum', **weight_kwargs)\\n\",\n        \"    self._true_squared_sum = self.add_weight(name='true_squared_sum',\\n\",\n        \"                                             **weight_kwargs)\\n\",\n        \"    self._pred_sum = self.add_weight(name='pred_sum', **weight_kwargs)\\n\",\n        \"    self._pred_squared_sum = self.add_weight(name='pred_squared_sum',\\n\",\n        \"                                             **weight_kwargs)\\n\",\n        \"\\n\",\n        \"  def update_state(self, y_true, y_pred, sample_weight=None):\\n\",\n        \"    \\\"\\\"\\\"Update the metric state.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      y_true: Multi-dimensional float tensor [batch, ...] containing the ground\\n\",\n        \"        truth values.\\n\",\n        \"      y_pred: float tensor with the same shape as y_true containing predicted\\n\",\n        \"        values.\\n\",\n        \"      sample_weight: 1D tensor aligned with y_true batch dimension specifying\\n\",\n        \"        the weight of individual observations.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    if self._shape is None:\\n\",\n        \"      # Explicit initialization check.\\n\",\n        \"      self._initialize(y_true.shape)\\n\",\n        \"    y_true.shape.assert_is_compatible_with(y_pred.shape)\\n\",\n        \"    y_true = tf.cast(y_true, 'float32')\\n\",\n        \"    y_pred = tf.cast(y_pred, 'float32')\\n\",\n        \"\\n\",\n        \"    self._product_sum.assign_add(\\n\",\n        \"        tf.reduce_sum(y_true * y_pred, axis=self._reduce_axis))\\n\",\n        \"\\n\",\n        \"    self._true_sum.assign_add(\\n\",\n        \"        tf.reduce_sum(y_true, axis=self._reduce_axis))\\n\",\n        \"\\n\",\n        \"    self._true_squared_sum.assign_add(\\n\",\n        \"        tf.reduce_sum(tf.math.square(y_true), axis=self._reduce_axis))\\n\",\n        \"\\n\",\n        \"    self._pred_sum.assign_add(\\n\",\n        \"        tf.reduce_sum(y_pred, axis=self._reduce_axis))\\n\",\n        \"\\n\",\n        \"    self._pred_squared_sum.assign_add(\\n\",\n        \"        tf.reduce_sum(tf.math.square(y_pred), axis=self._reduce_axis))\\n\",\n        \"\\n\",\n        \"    self._count.assign_add(\\n\",\n        \"        tf.reduce_sum(tf.ones_like(y_true), axis=self._reduce_axis))\\n\",\n        \"\\n\",\n        \"  def result(self):\\n\",\n        \"    raise NotImplementedError('Must be implemented in subclasses.')\\n\",\n        \"\\n\",\n        \"  def reset_states(self):\\n\",\n        \"    if self._shape is not None:\\n\",\n        \"      tf.keras.backend.batch_set_value([(v, np.zeros(self._shape))\\n\",\n        \"                                        for v in self.variables])\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class PearsonR(CorrelationStats):\\n\",\n        \"  \\\"\\\"\\\"Pearson correlation coefficient.\\n\",\n        \"\\n\",\n        \"  Computed as:\\n\",\n        \"  ((x - x_avg) * (y - y_avg) / sqrt(Var[x] * Var[y])\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self, reduce_axis=(0,), name='pearsonr'):\\n\",\n        \"    \\\"\\\"\\\"Pearson correlation coefficient.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      reduce_axis: Specifies over which axis to compute the correlation.\\n\",\n        \"      name: Metric name.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(PearsonR, self).__init__(reduce_axis=reduce_axis,\\n\",\n        \"                                   name=name)\\n\",\n        \"\\n\",\n        \"  def result(self):\\n\",\n        \"    true_mean = self._true_sum / self._count\\n\",\n        \"    pred_mean = self._pred_sum / self._count\\n\",\n        \"\\n\",\n        \"    covariance = (self._product_sum\\n\",\n        \"                  - true_mean * self._pred_sum\\n\",\n        \"                  - pred_mean * self._true_sum\\n\",\n        \"                  + self._count * true_mean * pred_mean)\\n\",\n        \"\\n\",\n        \"    true_var = self._true_squared_sum - self._count * tf.math.square(true_mean)\\n\",\n        \"    pred_var = self._pred_squared_sum - self._count * tf.math.square(pred_mean)\\n\",\n        \"    tp_var = tf.math.sqrt(true_var) * tf.math.sqrt(pred_var)\\n\",\n        \"    correlation = covariance / tp_var\\n\",\n        \"\\n\",\n        \"    return correlation\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class R2(CorrelationStats):\\n\",\n        \"  \\\"\\\"\\\"R-squared  (fraction of explained variance).\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self, reduce_axis=None, name='R2'):\\n\",\n        \"    \\\"\\\"\\\"R-squared metric.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      reduce_axis: Specifies over which axis to compute the correlation.\\n\",\n        \"      name: Metric name.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(R2, self).__init__(reduce_axis=reduce_axis,\\n\",\n        \"                             name=name)\\n\",\n        \"\\n\",\n        \"  def result(self):\\n\",\n        \"    true_mean = self._true_sum / self._count\\n\",\n        \"    total = self._true_squared_sum - self._count * tf.math.square(true_mean)\\n\",\n        \"    residuals = (self._pred_squared_sum - 2 * self._product_sum\\n\",\n        \"                 + self._true_squared_sum)\\n\",\n        \"\\n\",\n        \"    return tf.ones_like(residuals) - residuals / total\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class MetricDict:\\n\",\n        \"  def __init__(self, metrics):\\n\",\n        \"    self._metrics = metrics\\n\",\n        \"\\n\",\n        \"  def update_state(self, y_true, y_pred):\\n\",\n        \"    for k, metric in self._metrics.items():\\n\",\n        \"      metric.update_state(y_true, y_pred)\\n\",\n        \"\\n\",\n        \"  def result(self):\\n\",\n        \"    return {k: metric.result() for k, metric in self._metrics.items()}\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"x80gX9LrhBU-\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def evaluate_model(model, dataset, head, max_steps=None):\\n\",\n        \"  metric = MetricDict({'PearsonR': PearsonR(reduce_axis=(0,1))})\\n\",\n        \"  @tf.function\\n\",\n        \"  def predict(x):\\n\",\n        \"    return model(x, is_training=False)[head]\\n\",\n        \"\\n\",\n        \"  for i, batch in tqdm(enumerate(dataset)):\\n\",\n        \"    if max_steps is not None and i \\u003e max_steps:\\n\",\n        \"      break\\n\",\n        \"    metric.update_state(batch['target'], predict(batch['sequence']))\\n\",\n        \"\\n\",\n        \"  return metric.result()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"id\": \"57fNitK9hzwd\",\n        \"outputId\": \"947aaadb-dad2-4a00-ddac-d765f65d782f\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stderr\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"101it [00:23,  6.27it/s]\"\n          ]\n        },\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"\\n\",\n            \"{'PearsonR': 0.0028573992}\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"metrics_human = evaluate_model(model,\\n\",\n        \"                               dataset=get_dataset('human', 'valid').batch(1).prefetch(2),\\n\",\n        \"                               head='human',\\n\",\n        \"                               max_steps=100)\\n\",\n        \"print('')\\n\",\n        \"print({k: v.numpy().mean() for k, v in metrics_human.items()})\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"id\": \"HY_wj95xiDtE\",\n        \"outputId\": \"fea839f7-b6c9-46ed-aece-c56b02e9ea16\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stderr\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"101it [00:21,  6.54it/s]\"\n          ]\n        },\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"\\n\",\n            \"{'PearsonR': 0.005183698}\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"metrics_mouse = evaluate_model(model,\\n\",\n        \"                               dataset=get_dataset('mouse', 'valid').batch(1).prefetch(2),\\n\",\n        \"                               head='mouse',\\n\",\n        \"                               max_steps=100)\\n\",\n        \"print('')\\n\",\n        \"print({k: v.numpy().mean() for k, v in metrics_mouse.items()})\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"5k1yaJrNCgvw\"\n      },\n      \"source\": [\n        \"# Restore Checkpoint\\n\",\n        \"\\n\",\n        \"Note: For the TF-Hub Enformer model, the required input sequence length is 393,216 which actually gets cropped within the model to 196,608. The open source module does not internally crop the sequence. Therefore, the code below crops the central `196,608 bp` of the longer sequence to reproduce the output of the TF hub from the reloaded checkpoint.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"DB2cGdH8EGfn\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"np.random.seed(42)\\n\",\n        \"EXTENDED_SEQ_LENGTH = 393_216\\n\",\n        \"SEQ_LENGTH = 196_608\\n\",\n        \"inputs = np.array(np.random.random((1, EXTENDED_SEQ_LENGTH, 4)), dtype=np.float32)\\n\",\n        \"inputs_cropped = enformer.TargetLengthCrop1D(SEQ_LENGTH)(inputs)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"mdf35itsCjEY\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"checkpoint_gs_path = 'gs://dm-enformer/models/enformer/sonnet_weights/*'\\n\",\n        \"checkpoint_path = '/tmp/enformer_checkpoint'\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"executionInfo\": {\n          \"elapsed\": 280,\n          \"status\": \"ok\",\n          \"timestamp\": 1653476327690,\n          \"user\": {\n            \"displayName\": \"Kyle Taylor\",\n            \"userId\": \"14169907681771397124\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"G2P4IHqswLul\",\n        \"outputId\": \"180abe21-ba00-4031-d9d7-2326f1f742f2\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"mkdir: cannot create directory ‘/tmp/enformer_checkpoint’: File exists\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"!mkdir /tmp/enformer_checkpoint\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"executionInfo\": {\n          \"elapsed\": 19279,\n          \"status\": \"ok\",\n          \"timestamp\": 1653476347208,\n          \"user\": {\n            \"displayName\": \"Kyle Taylor\",\n            \"userId\": \"14169907681771397124\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"LTL8EISGCujC\",\n        \"outputId\": \"2b743b9b-480d-44dc-b08e-82d2bc089a47\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"gs://dm-enformer/models/enformer/sonnet_weights/checkpoint\\n\",\n            \"gs://dm-enformer/models/enformer/sonnet_weights/enformer-fine-tuned-human-1.data-00000-of-00001\\n\",\n            \"gs://dm-enformer/models/enformer/sonnet_weights/enformer-fine-tuned-human-1.index\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"# Copy checkpoints from GCS to temporary directory.\\n\",\n        \"# This will take a while as the checkpoint is ~ 1GB.\\n\",\n        \"for file_path in tf.io.gfile.glob(checkpoint_gs_path):\\n\",\n        \"  print(file_path)\\n\",\n        \"  file_name = os.path.basename(file_path)\\n\",\n        \"  tf.io.gfile.copy(file_path, f'{checkpoint_path}/{file_name}', overwrite=True)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"executionInfo\": {\n          \"elapsed\": 322,\n          \"status\": \"ok\",\n          \"timestamp\": 1653476347527,\n          \"user\": {\n            \"displayName\": \"Kyle Taylor\",\n            \"userId\": \"14169907681771397124\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"9VSeTx0sCvcw\",\n        \"outputId\": \"b52d7570-c355-4068-b932-3796b56e5586\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"total 959M\\n\",\n            \"-rw-r--r-- 1 root root  111 May 25 10:58 checkpoint\\n\",\n            \"-rw-r--r-- 1 root root 959M May 25 10:59 enformer-fine-tuned-human-1.data-00000-of-00001\\n\",\n            \"-rw-r--r-- 1 root root 5.7K May 25 10:59 enformer-fine-tuned-human-1.index\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"!ls -lh /tmp/enformer_checkpoint\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"00Y2GgRED3aI\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"enformer_model = enformer.Enformer()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"mFyIiGyiD5yh\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"checkpoint = tf.train.Checkpoint(module=enformer_model)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"executionInfo\": {\n          \"elapsed\": 6,\n          \"status\": \"ok\",\n          \"timestamp\": 1653476347529,\n          \"user\": {\n            \"displayName\": \"Kyle Taylor\",\n            \"userId\": \"14169907681771397124\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"VuyspnpOD9kA\",\n        \"outputId\": \"3b495138-be27-4459-af82-c5da2af5bd2d\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"/tmp/enformer_checkpoint/enformer-fine-tuned-human-1\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"latest = tf.train.latest_checkpoint(checkpoint_path)\\n\",\n        \"print(latest)\\n\",\n        \"status = checkpoint.restore(latest)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"MKkVOTyKEABJ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Using `is_training=False` to match TF-hub predict_on_batch function.\\n\",\n        \"restored_predictions = enformer_model(inputs_cropped, is_training=False)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"OX650jqCEQdv\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"import tensorflow_hub as hub\\n\",\n        \"enformer_tf_hub_model = hub.load(\\\"https://tfhub.dev/deepmind/enformer/1\\\").model\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"yiOTFTSdE5H1\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"hub_predictions = enformer_tf_hub_model.predict_on_batch(inputs)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"executionInfo\": {\n          \"elapsed\": 15,\n          \"status\": \"ok\",\n          \"timestamp\": 1653476357260,\n          \"user\": {\n            \"displayName\": \"Kyle Taylor\",\n            \"userId\": \"14169907681771397124\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"uYrWgfaGFbpL\",\n        \"outputId\": \"cb9d3ad0-ee14-46ac-b188-a4b6a697a159\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"text/plain\": [\n              \"True\"\n            ]\n          },\n          \"execution_count\": 41,\n          \"metadata\": {},\n          \"output_type\": \"execute_result\"\n        }\n      ],\n      \"source\": [\n        \"np.allclose(hub_predictions['human'], restored_predictions['human'], atol=1e-5)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"4wEOUMeNzK8q\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Can run with 'is_training=True' but note that this will\\n\",\n        \"# change the predictions as the batch statistics will be updated\\n\",\n        \"# and the outputs will likley not match the TF-hub model.\\n\",\n        \"# enformer(inputs_cropped, is_training=True)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"jyVHRPAN5w6J\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"accelerator\": \"GPU\",\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"last_runtime\": {\n        \"build_target\": \"//learning/deepmind/research/genomics/dna_to_rna:colab\",\n        \"kind\": \"private\"\n      },\n      \"name\": \"enformer-training.ipynb\",\n      \"provenance\": [],\n      \"toc_visible\": true\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    },\n    \"language_info\": {\n      \"name\": \"python\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "enformer/enformer-usage.ipynb",
    "content": "{\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0,\n  \"metadata\": {\n    \"colab\": {\n      \"name\": \"enformer-usage.ipynb\",\n      \"provenance\": [],\n      \"collapsed_sections\": []\n    },\n    \"kernelspec\": {\n      \"name\": \"python3\",\n      \"display_name\": \"Python 3\"\n    },\n    \"accelerator\": \"GPU\"\n  },\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"rb_ShvB9E8yM\"\n      },\n      \"source\": [\n        \"Copyright 2021 DeepMind Technologies Limited\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"you may not use this file except in compliance with the License.\\n\",\n        \"You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"     https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software\\n\",\n        \"distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"See the License for the specific language governing permissions and\\n\",\n        \"limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"kXQjDxgdwUmW\"\n      },\n      \"source\": [\n        \"This colab showcases the usage of the Enformer model published in\\n\",\n        \"\\n\",\n        \"**\\\"Effective gene expression prediction from sequence by integrating long-range interactions\\\"**\\n\",\n        \"\\n\",\n        \"Žiga Avsec, Vikram Agarwal, Daniel Visentin, Joseph R. Ledsam, Agnieszka Grabska-Barwinska, Kyle R. Taylor, Yannis Assael, John Jumper, Pushmeet Kohli, David R. Kelley\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"tFnAHhx-ze9X\"\n      },\n      \"source\": [\n        \"**Note:** This colab will not yet work since the model isn't yet publicly available. We are working on enabling this and will update the colab accordingly.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"si-w2NPretDg\"\n      },\n      \"source\": [\n        \"### Steps\\n\",\n        \"\\n\",\n        \"This colab demonstrates how to\\n\",\n        \"- Make predictions with Enformer and reproduce Fig. 1d\\n\",\n        \"- Compute contribution scores and reproduce parts of Fig. 2a\\n\",\n        \"- Predict the effect of a genetic variant and reproduce parts of Fig. 3g\\n\",\n        \"- Score multiple variants in a VCF \"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"wCCJsjaHwTYC\"\n      },\n      \"source\": [\n        \"## Setup\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"NqR7ol3rxrtM\"\n      },\n      \"source\": [\n        \"**Start the colab kernel with GPU**: Runtime -> Change runtime type -> GPU\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"hTGOLrbZxNHK\"\n      },\n      \"source\": [\n        \"import tensorflow as tf\\n\",\n        \"# Make sure the GPU is enabled \\n\",\n        \"assert tf.config.list_physical_devices('GPU'), 'Start the colab kernel with GPU: Runtime -> Change runtime type -> GPU'\"\n      ],\n      \"execution_count\": 1,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"Eg8hcb45wqMM\"\n      },\n      \"source\": [\n        \"!pip install kipoiseq==0.5.2 --quiet > /dev/null\\n\",\n        \"# You can ignore the pyYAML error\"\n      ],\n      \"execution_count\": 5,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"MCDk7UQPG0Lr\"\n      },\n      \"source\": [\n        \"### Imports\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"NRI9KisU11bM\"\n      },\n      \"source\": [\n        \"import tensorflow_hub as hub\\n\",\n        \"import joblib\\n\",\n        \"import gzip\\n\",\n        \"import kipoiseq\\n\",\n        \"from kipoiseq import Interval\\n\",\n        \"import pyfaidx\\n\",\n        \"import pandas as pd\\n\",\n        \"import numpy as np\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"import matplotlib as mpl\\n\",\n        \"import seaborn as sns\\n\",\n        \"\\n\",\n        \"%matplotlib inline\\n\",\n        \"%config InlineBackend.figure_format = 'retina'\"\n      ],\n      \"execution_count\": 6,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"g0F1A9AaCrkQ\"\n      },\n      \"source\": [\n        \"transform_path = 'gs://dm-enformer/models/enformer.finetuned.SAD.robustscaler-PCA500-robustscaler.transform.pkl'\\n\",\n        \"model_path = 'https://tfhub.dev/deepmind/enformer/1'\\n\",\n        \"fasta_file = '/root/data/genome.fa'\\n\",\n        \"clinvar_vcf = '/root/data/clinvar.vcf.gz'\"\n      ],\n      \"execution_count\": 47,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 141\n        },\n        \"id\": \"OlE6JAVfI08a\",\n        \"outputId\": \"25e8b4c7-b2ef-4e8a-a81f-a032a3490bd9\"\n      },\n      \"source\": [\n        \"# Download targets from Basenji2 dataset \\n\",\n        \"# Cite: Kelley et al Cross-species regulatory sequence activity prediction. PLoS Comput. Biol. 16, e1008050 (2020).\\n\",\n        \"targets_txt = 'https://raw.githubusercontent.com/calico/basenji/master/manuscripts/cross2020/targets_human.txt'\\n\",\n        \"df_targets = pd.read_csv(targets_txt, sep='\\\\t')\\n\",\n        \"df_targets.head(3)\"\n      ],\n      \"execution_count\": 16,\n      \"outputs\": [\n        {\n          \"output_type\": \"execute_result\",\n          \"data\": {\n            \"text/html\": [\n              \"<div>\\n\",\n              \"<style scoped>\\n\",\n              \"    .dataframe tbody tr th:only-of-type {\\n\",\n              \"        vertical-align: middle;\\n\",\n              \"    }\\n\",\n              \"\\n\",\n              \"    .dataframe tbody tr th {\\n\",\n              \"        vertical-align: top;\\n\",\n              \"    }\\n\",\n              \"\\n\",\n              \"    .dataframe thead th {\\n\",\n              \"        text-align: right;\\n\",\n              \"    }\\n\",\n              \"</style>\\n\",\n              \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n              \"  <thead>\\n\",\n              \"    <tr style=\\\"text-align: right;\\\">\\n\",\n              \"      <th></th>\\n\",\n              \"      <th>index</th>\\n\",\n              \"      <th>genome</th>\\n\",\n              \"      <th>identifier</th>\\n\",\n              \"      <th>file</th>\\n\",\n              \"      <th>clip</th>\\n\",\n              \"      <th>scale</th>\\n\",\n              \"      <th>sum_stat</th>\\n\",\n              \"      <th>description</th>\\n\",\n              \"    </tr>\\n\",\n              \"  </thead>\\n\",\n              \"  <tbody>\\n\",\n              \"    <tr>\\n\",\n              \"      <th>0</th>\\n\",\n              \"      <td>0</td>\\n\",\n              \"      <td>0</td>\\n\",\n              \"      <td>ENCFF833POA</td>\\n\",\n              \"      <td>/home/drk/tillage/datasets/human/dnase/encode/...</td>\\n\",\n              \"      <td>32</td>\\n\",\n              \"      <td>2</td>\\n\",\n              \"      <td>mean</td>\\n\",\n              \"      <td>DNASE:cerebellum male adult (27 years) and mal...</td>\\n\",\n              \"    </tr>\\n\",\n              \"    <tr>\\n\",\n              \"      <th>1</th>\\n\",\n              \"      <td>1</td>\\n\",\n              \"      <td>0</td>\\n\",\n              \"      <td>ENCFF110QGM</td>\\n\",\n              \"      <td>/home/drk/tillage/datasets/human/dnase/encode/...</td>\\n\",\n              \"      <td>32</td>\\n\",\n              \"      <td>2</td>\\n\",\n              \"      <td>mean</td>\\n\",\n              \"      <td>DNASE:frontal cortex male adult (27 years) and...</td>\\n\",\n              \"    </tr>\\n\",\n              \"    <tr>\\n\",\n              \"      <th>2</th>\\n\",\n              \"      <td>2</td>\\n\",\n              \"      <td>0</td>\\n\",\n              \"      <td>ENCFF880MKD</td>\\n\",\n              \"      <td>/home/drk/tillage/datasets/human/dnase/encode/...</td>\\n\",\n              \"      <td>32</td>\\n\",\n              \"      <td>2</td>\\n\",\n              \"      <td>mean</td>\\n\",\n              \"      <td>DNASE:chorion</td>\\n\",\n              \"    </tr>\\n\",\n              \"  </tbody>\\n\",\n              \"</table>\\n\",\n              \"</div>\"\n            ],\n            \"text/plain\": [\n              \"   index  genome  ... sum_stat                                        description\\n\",\n              \"0      0       0  ...     mean  DNASE:cerebellum male adult (27 years) and mal...\\n\",\n              \"1      1       0  ...     mean  DNASE:frontal cortex male adult (27 years) and...\\n\",\n              \"2      2       0  ...     mean                                      DNASE:chorion\\n\",\n              \"\\n\",\n              \"[3 rows x 8 columns]\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"execution_count\": 16\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"Q8ZhswycGux3\"\n      },\n      \"source\": [\n        \"### Download files\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"dowTJknFJOHu\"\n      },\n      \"source\": [\n        \"Download and index the reference genome fasta file\\n\",\n        \"\\n\",\n        \"Credit to Genome Reference Consortium: https://www.ncbi.nlm.nih.gov/grc\\n\",\n        \"\\n\",\n        \"Schneider et al 2017 http://dx.doi.org/10.1101/gr.213611.116: Evaluation of GRCh38 and de novo haploid genome assemblies demonstrates the enduring quality of the reference assembly\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"id\": \"flOUYxP7Fjvh\",\n        \"outputId\": \"bc48adb1-393c-408e-d699-5e70b183e2e9\"\n      },\n      \"source\": [\n        \"!mkdir -p /root/data\\n\",\n        \"!wget -O - http://hgdownload.cse.ucsc.edu/goldenPath/hg38/bigZips/hg38.fa.gz | gunzip -c > {fasta_file}\\n\",\n        \"pyfaidx.Faidx(fasta_file)\\n\",\n        \"!ls /root/data\"\n      ],\n      \"execution_count\": 18,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"--2021-03-26 11:38:38--  http://hgdownload.cse.ucsc.edu/goldenPath/hg38/bigZips/hg38.fa.gz\\n\",\n            \"Resolving hgdownload.cse.ucsc.edu (hgdownload.cse.ucsc.edu)... 128.114.119.163\\n\",\n            \"Connecting to hgdownload.cse.ucsc.edu (hgdownload.cse.ucsc.edu)|128.114.119.163|:80... connected.\\n\",\n            \"HTTP request sent, awaiting response... 200 OK\\n\",\n            \"Length: 983659424 (938M) [application/x-gzip]\\n\",\n            \"Saving to: ‘STDOUT’\\n\",\n            \"\\n\",\n            \"-                   100%[===================>] 938.09M  17.4MB/s    in 54s     \\n\",\n            \"\\n\",\n            \"2021-03-26 11:39:33 (17.3 MB/s) - written to stdout [983659424/983659424]\\n\",\n            \"\\n\",\n            \"genome.fa  genome.fa.fai\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"VwMZhF42JH18\"\n      },\n      \"source\": [\n        \"Download the clinvar file. Reference:\\n\",\n        \"\\n\",\n        \"Landrum MJ, Lee JM, Benson M, Brown GR, Chao C, Chitipiralla S, Gu B, Hart J, Hoffman D, Jang W, Karapetyan K, Katz K, Liu C, Maddipatla Z, Malheiro A, McDaniel K, Ovetsky M, Riley G, Zhou G, Holmes JB, Kattman BL, Maglott DR. ClinVar: improving access to variant interpretations and supporting evidence. Nucleic Acids Res . 2018 Jan 4. PubMed PMID: 29165669 .\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"id\": \"4PjXFN5OcGbH\",\n        \"outputId\": \"ca4e8ca5-d388-4ba9-afb9-414f30e83f4a\"\n      },\n      \"source\": [\n        \"!wget https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/clinvar.vcf.gz -O /root/data/clinvar.vcf.gz\"\n      ],\n      \"execution_count\": 19,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"--2021-03-26 11:40:32--  https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/clinvar.vcf.gz\\n\",\n            \"Resolving ftp.ncbi.nlm.nih.gov (ftp.ncbi.nlm.nih.gov)... 130.14.250.7, 165.112.9.229, 2607:f220:41e:250::7, ...\\n\",\n            \"Connecting to ftp.ncbi.nlm.nih.gov (ftp.ncbi.nlm.nih.gov)|130.14.250.7|:443... connected.\\n\",\n            \"HTTP request sent, awaiting response... 200 OK\\n\",\n            \"Length: 36564426 (35M) [application/x-gzip]\\n\",\n            \"Saving to: ‘/root/data/clinvar.vcf.gz’\\n\",\n            \"\\n\",\n            \"/root/data/clinvar. 100%[===================>]  34.87M  22.0MB/s    in 1.6s    \\n\",\n            \"\\n\",\n            \"2021-03-26 11:40:34 (22.0 MB/s) - ‘/root/data/clinvar.vcf.gz’ saved [36564426/36564426]\\n\",\n            \"\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"Omj-KERcwSdB\"\n      },\n      \"source\": [\n        \"### Code (double click on the title to show the code)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"47E4AEgLx1VT\",\n        \"cellView\": \"form\"\n      },\n      \"source\": [\n        \"# @title `Enformer`, `EnformerScoreVariantsNormalized`, `EnformerScoreVariantsPCANormalized`,\\n\",\n        \"SEQUENCE_LENGTH = 393216\\n\",\n        \"\\n\",\n        \"class Enformer:\\n\",\n        \"\\n\",\n        \"  def __init__(self, tfhub_url):\\n\",\n        \"    self._model = hub.load(tfhub_url).model\\n\",\n        \"\\n\",\n        \"  def predict_on_batch(self, inputs):\\n\",\n        \"    predictions = self._model.predict_on_batch(inputs)\\n\",\n        \"    return {k: v.numpy() for k, v in predictions.items()}\\n\",\n        \"\\n\",\n        \"  @tf.function\\n\",\n        \"  def contribution_input_grad(self, input_sequence,\\n\",\n        \"                              target_mask, output_head='human'):\\n\",\n        \"    input_sequence = input_sequence[tf.newaxis]\\n\",\n        \"\\n\",\n        \"    target_mask_mass = tf.reduce_sum(target_mask)\\n\",\n        \"    with tf.GradientTape() as tape:\\n\",\n        \"      tape.watch(input_sequence)\\n\",\n        \"      prediction = tf.reduce_sum(\\n\",\n        \"          target_mask[tf.newaxis] *\\n\",\n        \"          self._model.predict_on_batch(input_sequence)[output_head]) / target_mask_mass\\n\",\n        \"\\n\",\n        \"    input_grad = tape.gradient(prediction, input_sequence) * input_sequence\\n\",\n        \"    input_grad = tf.squeeze(input_grad, axis=0)\\n\",\n        \"    return tf.reduce_sum(input_grad, axis=-1)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class EnformerScoreVariantsRaw:\\n\",\n        \"\\n\",\n        \"  def __init__(self, tfhub_url, organism='human'):\\n\",\n        \"    self._model = Enformer(tfhub_url)\\n\",\n        \"    self._organism = organism\\n\",\n        \"  \\n\",\n        \"  def predict_on_batch(self, inputs):\\n\",\n        \"    ref_prediction = self._model.predict_on_batch(inputs['ref'])[self._organism]\\n\",\n        \"    alt_prediction = self._model.predict_on_batch(inputs['alt'])[self._organism]\\n\",\n        \"\\n\",\n        \"    return alt_prediction.mean(axis=1) - ref_prediction.mean(axis=1)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class EnformerScoreVariantsNormalized:\\n\",\n        \"\\n\",\n        \"  def __init__(self, tfhub_url, transform_pkl_path,\\n\",\n        \"               organism='human'):\\n\",\n        \"    assert organism == 'human', 'Transforms only compatible with organism=human'\\n\",\n        \"    self._model = EnformerScoreVariantsRaw(tfhub_url, organism)\\n\",\n        \"    with tf.io.gfile.GFile(transform_pkl_path, 'rb') as f:\\n\",\n        \"      transform_pipeline = joblib.load(f)\\n\",\n        \"    self._transform = transform_pipeline.steps[0][1]  # StandardScaler.\\n\",\n        \"    \\n\",\n        \"  def predict_on_batch(self, inputs):\\n\",\n        \"    scores = self._model.predict_on_batch(inputs)\\n\",\n        \"    return self._transform.transform(scores)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class EnformerScoreVariantsPCANormalized:\\n\",\n        \"\\n\",\n        \"  def __init__(self, tfhub_url, transform_pkl_path,\\n\",\n        \"               organism='human', num_top_features=500):\\n\",\n        \"    self._model = EnformerScoreVariantsRaw(tfhub_url, organism)\\n\",\n        \"    with tf.io.gfile.GFile(transform_pkl_path, 'rb') as f:\\n\",\n        \"      self._transform = joblib.load(f)\\n\",\n        \"    self._num_top_features = num_top_features\\n\",\n        \"    \\n\",\n        \"  def predict_on_batch(self, inputs):\\n\",\n        \"    scores = self._model.predict_on_batch(inputs)\\n\",\n        \"    return self._transform.transform(scores)[:, :self._num_top_features]\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# TODO(avsec): Add feature description: Either PCX, or full names.\"\n      ],\n      \"execution_count\": 35,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"uLYRbOXDyA36\",\n        \"cellView\": \"form\"\n      },\n      \"source\": [\n        \"# @title `variant_centered_sequences`\\n\",\n        \"\\n\",\n        \"class FastaStringExtractor:\\n\",\n        \"    \\n\",\n        \"    def __init__(self, fasta_file):\\n\",\n        \"        self.fasta = pyfaidx.Fasta(fasta_file)\\n\",\n        \"        self._chromosome_sizes = {k: len(v) for k, v in self.fasta.items()}\\n\",\n        \"\\n\",\n        \"    def extract(self, interval: Interval, **kwargs) -> str:\\n\",\n        \"        # Truncate interval if it extends beyond the chromosome lengths.\\n\",\n        \"        chromosome_length = self._chromosome_sizes[interval.chrom]\\n\",\n        \"        trimmed_interval = Interval(interval.chrom,\\n\",\n        \"                                    max(interval.start, 0),\\n\",\n        \"                                    min(interval.end, chromosome_length),\\n\",\n        \"                                    )\\n\",\n        \"        # pyfaidx wants a 1-based interval\\n\",\n        \"        sequence = str(self.fasta.get_seq(trimmed_interval.chrom,\\n\",\n        \"                                          trimmed_interval.start + 1,\\n\",\n        \"                                          trimmed_interval.stop).seq).upper()\\n\",\n        \"        # Fill truncated values with N's.\\n\",\n        \"        pad_upstream = 'N' * max(-interval.start, 0)\\n\",\n        \"        pad_downstream = 'N' * max(interval.end - chromosome_length, 0)\\n\",\n        \"        return pad_upstream + sequence + pad_downstream\\n\",\n        \"\\n\",\n        \"    def close(self):\\n\",\n        \"        return self.fasta.close()\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def variant_generator(vcf_file, gzipped=False):\\n\",\n        \"  \\\"\\\"\\\"Yields a kipoiseq.dataclasses.Variant for each row in VCF file.\\\"\\\"\\\"\\n\",\n        \"  def _open(file):\\n\",\n        \"    return gzip.open(vcf_file, 'rt') if gzipped else open(vcf_file)\\n\",\n        \"    \\n\",\n        \"  with _open(vcf_file) as f:\\n\",\n        \"    for line in f:\\n\",\n        \"      if line.startswith('#'):\\n\",\n        \"        continue\\n\",\n        \"      chrom, pos, id, ref, alt_list = line.split('\\\\t')[:5]\\n\",\n        \"      # Split ALT alleles and return individual variants as output.\\n\",\n        \"      for alt in alt_list.split(','):\\n\",\n        \"        yield kipoiseq.dataclasses.Variant(chrom=chrom, pos=pos,\\n\",\n        \"                                           ref=ref, alt=alt, id=id)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def one_hot_encode(sequence):\\n\",\n        \"  return kipoiseq.transforms.functional.one_hot_dna(sequence).astype(np.float32)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def variant_centered_sequences(vcf_file, sequence_length, gzipped=False,\\n\",\n        \"                               chr_prefix=''):\\n\",\n        \"  seq_extractor = kipoiseq.extractors.VariantSeqExtractor(\\n\",\n        \"    reference_sequence=FastaStringExtractor(fasta_file))\\n\",\n        \"\\n\",\n        \"  for variant in variant_generator(vcf_file, gzipped=gzipped):\\n\",\n        \"    interval = Interval(chr_prefix + variant.chrom,\\n\",\n        \"                        variant.pos, variant.pos)\\n\",\n        \"    interval = interval.resize(sequence_length)\\n\",\n        \"    center = interval.center() - interval.start\\n\",\n        \"\\n\",\n        \"    reference = seq_extractor.extract(interval, [], anchor=center)\\n\",\n        \"    alternate = seq_extractor.extract(interval, [variant], anchor=center)\\n\",\n        \"\\n\",\n        \"    yield {'inputs': {'ref': one_hot_encode(reference),\\n\",\n        \"                      'alt': one_hot_encode(alternate)},\\n\",\n        \"           'metadata': {'chrom': chr_prefix + variant.chrom,\\n\",\n        \"                        'pos': variant.pos,\\n\",\n        \"                        'id': variant.id,\\n\",\n        \"                        'ref': variant.ref,\\n\",\n        \"                        'alt': variant.alt}}\"\n      ],\n      \"execution_count\": 21,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"Up1oCMFiPucp\",\n        \"cellView\": \"form\"\n      },\n      \"source\": [\n        \"# @title `plot_tracks`\\n\",\n        \"\\n\",\n        \"def plot_tracks(tracks, interval, height=1.5):\\n\",\n        \"  fig, axes = plt.subplots(len(tracks), 1, figsize=(20, height * len(tracks)), sharex=True)\\n\",\n        \"  for ax, (title, y) in zip(axes, tracks.items()):\\n\",\n        \"    ax.fill_between(np.linspace(interval.start, interval.end, num=len(y)), y)\\n\",\n        \"    ax.set_title(title)\\n\",\n        \"    sns.despine(top=True, right=True, bottom=True)\\n\",\n        \"  ax.set_xlabel(str(interval))\\n\",\n        \"  plt.tight_layout()\"\n      ],\n      \"execution_count\": 23,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"zEwfoz3cwOzt\"\n      },\n      \"source\": [\n        \"## Make predictions for a genetic sequenece\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"WC-pgC35DgnL\"\n      },\n      \"source\": [\n        \"model = Enformer(model_path)\\n\",\n        \"\\n\",\n        \"fasta_extractor = FastaStringExtractor(fasta_file)\"\n      ],\n      \"execution_count\": 36,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"8u8Gt8WWyG53\"\n      },\n      \"source\": [\n        \"# @title Make predictions for an genomic example interval\\n\",\n        \"target_interval = kipoiseq.Interval('chr11', 35_082_742, 35_197_430)  # @param\\n\",\n        \"\\n\",\n        \"sequence_one_hot = one_hot_encode(fasta_extractor.extract(target_interval.resize(SEQUENCE_LENGTH)))\\n\",\n        \"predictions = model.predict_on_batch(sequence_one_hot[np.newaxis])['human'][0]\"\n      ],\n      \"execution_count\": 37,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 440\n        },\n        \"id\": \"_wL4c66ZXK0k\",\n        \"outputId\": \"3538b7f3-ebb0-48c8-f23a-1e8734253e81\"\n      },\n      \"source\": [\n        \"# @title Plot tracks\\n\",\n        \"tracks = {'DNASE:CD14-positive monocyte female': predictions[:, 41],\\n\",\n        \"          'DNASE:keratinocyte female': predictions[:, 42],\\n\",\n        \"          'CHIP:H3K27ac:keratinocyte female': predictions[:, 706],\\n\",\n        \"          'CAGE:Keratinocyte - epidermal': np.log10(1 + predictions[:, 4799])}\\n\",\n        \"plot_tracks(tracks, target_interval)\"\n      ],\n      \"execution_count\": 38,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAACzEAAANOCAYAAACbIWPRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd5ykeV0n8M9vWfICApLOwHIqioJ6eIYzIEEERRBRQMEjKIcnJyieegoiQVQwgKIvJbMiOcdlCcImdllYYGFzmNnZnZxT98xUp9/98Ty1U9NTVV3d29PV0/N+v171qn7y9wnV01P1qe9Taq0BAAAAAAAAAAAAAFgpp427AAAAAAAAAAAAAADg1CLEDAAAAAAAAAAAAACsKCFmAAAAAAAAAAAAAGBFCTEDAAAAAAAAAAAAACtKiBkAAAAAAAAAAAAAWFFCzAAAAAAAAAAAAADAihJiBgAAAAAAAAAAAABWlBAzAAAAAAAAAAAAALCihJgBAAAAAAAAAAAAgBUlxAwAAAAAAAAAAAAArCghZgAAAAAAAAAAAABgRQkxAwAAAAAAAAAAAAArSogZAAAAAAAAAAAAAFhRQswAAAAAAPRVSnlWKaWWUs5d4vIPb5ffsLyVwfIrpdyllPKaUsq6UsrUWr92Sylntfv4snHXAgAAAMCpSYgZAAAAgDWtJ6TV+5gupewupdxQSvlIKeVFpZQHLLCeM+et4wlD5v3unvnOHKHGy3rm/6kR9+tOpZQXlFK+UErZ2QbudpVSriilfLiU8gellB/os9yzyvHHY9DjI6PUMqTGR5ZS3lBKuaqUsretcUcp5bxSykv7HfNSysv61DHTLn9jKeXsUsorSikPGWH731NK+a1Syr+WUr5SSum06/vSEvfnjFLKxp66nrWU9awV7bX0slLKD4+7Fk5+pZQnttfTw8dYxoeSvDDJf01yOMn2JDvHWA8AAAAArGmnj7sAAAAAAFgh00n2tD+XJHdNco8k35Xkl5O8spTygSTPq7XuGmF9ryilfLzWWm9NUaWUH0ryQz2jnpHkiwss891JzklTe9dkktsl+YH28cQk30gyLGC6fYHy9i4wfVB9903yjiSP6hk9k+RgknsmeVj7eEkp5bW11j/us5q5HBsevEuSM9vHL7TLfj7Jc2qtNw4o5e/SnNvl8sok376M6zsZ7E9ybZKb+0x7VpKfTbIhyWUDlj/ULr/5BNTG2vLEJM9sfz53pTfefunj59L8W/GwWuuSvuwAAAAAAIxOJ2YAAAAAThUX1Vrv2z7uU2u9Y5K7pwnEvjdJTfLkJJeVUkYJqv5QkqcsQ13d0N5b0gR3n1JKucOgmUsppyf5SJoA87Ykv5vkHrXWM2qtd00TEn5Ckren6SQ6UM/xGPR49mJ3pj12l6QJMB9O8jdJHpzkdrXWe6QJWv9Ekn9KExZ88oBVbZxXy52TnJHk4UnelGQqySPTnK8fHLCO2SRXpzkWL0jyH4vdn579emiS32v37ZRRa/1wrfX7aq3PWOLyX26Xf9TCc8NYdTvXf1OAGQAAAABWhhAzAAAAAKesWuu+Wus5tdZfT/K4JEeSfFuSDyyw6Kfa55eXUm6z1O23geSnt4N/m+S8JN+S4d2Dfy5Hw3aPr7W+vtZ6S8fkWuueWuvHa63PTPKIpda2FKWU09IEwr8zye4kP1VrfVGt9cpux+pa62yt9ZJa6x8k+b4kXx51/bXWyVrrebXW5yb5qTSdmu+a5GMDgt9PqbV+f631mbXWf06y/lbs1xvawd9dyjqAVe+O7fPEWKsAAAAAgFOIEDMAAAAAJKm1npPkj9rBHy+lPH7I7H+TJuj2vUmW1KG29dgk905yaa31uiTvbMc/c/AieUj7vL3Weumwlddaj9yK2pbiV5L8ZPvz79Ravz5s5lrrTUmeupQNtfve7RR9/yT/q888s0tZdx/PT/Lfk/zbQvs0qlJKbR9nllIeXEp5TyllWynlSCnlmlLKS0opt19gHY8opXyoXW6qff5wKeWRQ5a5S7vur5ZSDrbLbSmlXFpK+btSyoPnzf+sts5z549L8rPtqLf17E8tpWzomffhfcbdoZRyoB3/Swvs4zXtfL/fZ9oZpZQXlVK+UkrZ3x6760spryulfMew9Q7Y1pndfWiHf6yU8tFSys72WF1USvnFnvlvV0r5f6WUK0oph0op20spbyil3GOB7TyplHJOu95OKWVTKeWdbbfvUeoadL3cbsg2Tyul/HYp5bxSyp52uRtLKW8spXz3AvWWUspTSymfbLfZKaVsLqWcX0p5YSnlnu18D2vr7HTHDVjffy2lzLXzfm/3GsnR33svnXc91QH78z9LKZ9tj2P3On5vKeXHh+1Pn3W9rN3GWe2on523/YfPm3/R110p5dx2Xc8qpdy1lPK3pZR1pZTDpZT1pZRXlJ4vYpRSHlVK+XQpZVcpZbI91j8zYN23KaX8QnvtfbW9DrvHY+jvgxGPz+Pb10H398yOUsrHSymPuTXrBQAAAIBEiBkAAAAAer0pyY7256cNmW9nkte1P/9FKeW2S9xeN7T3rvb5g0k6SX6+lHLfBZa9R+nfffiEKqVsaMN4Z/WZ/Dvt81W11g+Osr5uh+alqLV+Msll7eCw87VkpZRvS/KXSbYn+fMTsImfTPKlNGHuOyYpacLxr0hybinljAF1vTLJ59MEx++dZLJ9fmKS/yyl/E2fZe7WbusVSR6a5E5pwvj3SfIjaUL8vzlCzYfTHI/pdvhAO9x97By2cBuu/3A7OPC8taHe700ym6bDd++0ByW5IslfpQmY3ynJTJLvThM6/0Yp5adG2JdB2/7lJBcmeXyS2yY5I8n/SPLxUsqT29fep5O8Ksl3tYvdO8lzk3yuX6C4Dd7+e5rX+WOS3D3JoTTd35+W5CullKGdvkspP5+me/lTk9yhra17vbxvwDJ3StM9/s1JHtbuy5EkZ6YJ/1/e7m+/Ze+W5DNJ3pPkF3P0WrtHkp9J8pr2GKXWen6S65LcLsNfj89Oc51/sdZ6bZKpNNdN90sXkzn2eto+r6a7pDn2b0/Tmf6eaa7J+yV5SpKLSim/N2T780202zjQDk/P2/ZUz7Zv7XV39zTn74/TvO5uk+QBSV6S9vyVUp6X5LPtvt223cbPpLmu+q37QUnOTnPtPTTNdTGV5nh0fx/82agHo2dfb1tKeUeSjyV5Qlvv4ST3SvJLSc4ppbx6sesFAAAAgF5CzAAAAADQqrVOJfnPdrBv18sef5dkX44GARellHL3NOG/uTQBwdRa9yX5ZJpg26Awabf78m2TvL4N9I1dG+TuBuw+voKb/lT7/COllDuegPX/c5K7JPmjWuv+E7D+f01yVZIfrLXerd3Ws9OEBX8iTUj0GKWUX0/y4nbwX5Lcu9Z69zThwn9ux/9pKWX+NfT7Sb4/Tcj4l5LcvtZ6jzShxwcm+dMk6xYquNb63lrrfZNc1F1vrfW+PY8fHWG/u8H9J7Qh235+o33+Qq11W3dkG6w9O00H7vcn+aEkd6i1npEmUPyuNGHRD5ZSvmWEWvr59zQh2fvVWr8lTXj3o2neU39tkr9P8n1pjuMZac7bLyc5mOS/JXlOn3X+SZrO7TVNaPXu7Xn79nY/TkvyL6WUhw2p671pXl8PaOu6a5I/a9f5y6WnU3SP1yT5+TRfkPjfSe7SLvu9Sc5Nc/7fVUp5YJ9l35kmTHs4zfVzj/aauVOaa+kVSfb2zP+W9vnZ6aOUclqOfnnjrUlSa72ovZ66QfW/n3c9zf9CRze8/LU0YfA7ta+de6T5osFskn8aNcRea/37dhvdbt8Xzdv+RW3ty3HdvbR9/pl2uTPS/Psxk+TxpZSXJPnHNOH4e7b7dWaSi9OEw1/bZ51TaY7lY5LcrdZ6t3bd90lznc0m+avFdqhO8rdJnp7khjTh8DPaeu6a5HlprvU/KaX8xuBVAAAAAMBwQswAAAAAcKzL2+dvG9ZhuQ0c/0M7+OdLCND+epLbpwlobu0Z/872+ZnHL5KkCR2e1zPP1lLKJ0opLymlPHYxoc1SyrYFHo9dxP7cP02wMUm+sYjlbq3u+bptmjDosimlPD5Np+Nza63vWM519+gkeWyt9fKkCdLXWs9KExJMkt8upXxnT00lTWfoJHlPrfX5tdZd7bK7a60vSPLudvpftqHRrp9on/+h1vrJWutMu9x0rfX6Wuura61vOhE72cfn0nQ9v3Oa8O8x2v18ajv4rnmT/zhNsPPdtdan1Fq/WWudTZJa6/pa69OTnJMmxNkvTDyKr9Van1Nr3d6ud2eaQOeBNJ2T/0+Sp7bHcbZ9fCzNlxuS5Nfm7c8ZacLGSfLqWusra60H23VvThPYvjDNe/avHFLXV5L8eq11Q7vsZK31VWm+/NBvu2fm6Jcsfr/W+oZaa6dd9rokj0sTXL9T5nUabwPRj0sTkH5SrfV17e+91MbVtdaX1lo/2rPYWWk6Gf+3UsoP9an/55J8R5rux307Rw9TSvm5NN2Fr03yyFrrZ9rO3qm17q21/lWSv0hzHBfdfXgBy3Hd3TnJL9VaL2yXm6q1vjlNMDtpQuHvqLW+qOdY35Tm+qhJfrT390E7/bpa62+3x+JAz/gdtdZXJnl5ms7X/3vUHS2lfE+aUPfONMf5/bXWyXa9B2ut/5am83Ny9AsVAAAAALBoQswAAAAAcKzerqL3WGDef0wT8rpfmlDjYnRDyu+cN/6TSfYneXAp5aHzF6q11iRPSBN6m0sTintcmvDbp5LsLqV8YUBH1vnus8DjDn22f2attdRanzVv0j17ft4zwraXy2LO18hKKXdO0+V4Oos/t4vx+lprv+P19iSb0ryH+6Se8T+c5LvbnweFXV/ePp+Z5Md6xncDjvdbUqXLqA1/dkOs/Tq5/nSasOuRJB+aN6372vmHDNYNPj96iSW+av6INsT5pXbwolrr+X2W63Zyf/C88Y9O08F2Kk2H2/nrns3RcPrPlFLmdx++pa72d8B8Hxmw3V9Jcw1tS/LmPts91FPPk0opt+mZ/Iz2+dO11nMG1DN/fTtytBP7b/WZpduh+f211olR1jlP99y/aUhn9O7v1EfM259bazmuu/fXWm/oM/5zPT//zfyJbZC5u9z8c7yQ7vkYqTN16xlpgs/vrbVuHDDPB9J8CeMHSilj/50CAAAAwMlJiBkAAAAAlqgN4b26Hfx/pZS7jLJcKeX7kvx4+gQ02y6pH2gH+3ZjrrUeqLU+M8kDkrywXcdN7eTTkjw8ySdLKcPCdmnDyMMeHxm2/Br3iiTfmeS1tdarTuB2zu03stY6l+SCdrA3zN79eWet9coBy16bZHOfZc9un19QSvmPUsovjHrNniDdwOdjSinzA+hPa5/P7g2rllK+I0c7bp89qIt4kn9q5/mOJdZ2+YDxO9rnKwZM394+333e+O55+EatdW/6Oz/J7Lz55/vKgPHd8z1ouxd0uwb38fn2+c5JvrdnfLdz99lZnG5Y+umllNt1R5ZS7p6mi3KSvGWR6+z6yfb5z4ec++4xulOO/XLFki3jdbfQdXUkR8PK8w26tlJKuWMp5YWllHNLKTtKKdOllFpKqUm+3s72XwbtXx/d4/zMIfu6KU0H/GTprzMAAAAATnFCzAAAAABwrN6A2Cgdhf81yZYk35rkD0bcRjecfPaAbqLdTqK/UUq5bZ/pSZJa68211n+stf5qrfXMJPdP8oc9df9hKeWXR6zp1trd8/OydUQewWLP14JKKT+c5PeTbEwTZl7Msv80IPQ3v5tw1+YB43un3atn3L3mTRtk0/xla61vT/LGNB1WfzNNOHVfKeXrpZRXrHQ31VrrxUluTHK7JL/aHV9KOT3Jr7WD75q3WG+N987gLuLd6+JOS6xt64BJ3SDwQtNPnzd+wfNWaz2SZNe8+efPc3DA4kfa5/m/L0a5Xjb1/Ny73fu0zzcPWbafT6d57dwzyeN7xj8tTXf3a2utX1zkOru65/9bMryLfNeSzv+Q7Sa37rpb6LrZPqDTdu88x5zj9nV7WZLXJPnZNOewk+YuAdtz9Jq684D19tPd37tk+HHufsa0XMcZAAAAgFOMEDMAAAAAHOsh7fOmWuv0QjPXWg8n+at28P+23UYHKqWcliZAmiRP6nbL7H3kaGfUeyX5hVELb0PNr03yP5Icakf/1qjL30o39Wzzh1Zom8nR8zWdY8OYt8Y/JblNkhcnKaWUM3ofPfPdvh3XG+C7W/qH/ZY72H2HpSxUa/2dJA9OE84+N03Y8YeTvCTJ9aWURy9XgSN6d/v8tJ5xj07zpYADST45b/7e97TvPkI38TNPXOlLsqTzdjJtt+0i/tZ28Nk9k7o/v+1WrL57/n9lhHNfaq0bbsW2+m03WX3X3T8meWCS9Wm+DHCPWusZtdZ711rvm6MdtReju78vHPE4n7s8uwIAAADAqUaIGQAAAABapZTbJXlUO3jBIhZ9c5INaQKsf7LAvI9K8u2LWPczF57lWLXW65Jc2A4+cLHLL0Ub+O52V338sHmXWTfkfWkbKF8O92+f357kYJ9H1+vb4au6I2qtzxoQ8nv4gG39lyF1dKft7BnX/fk7FtiH7jW2c/6EWuuVtdaX1lofkaaj7eOTXJ6mU+u/D+v+fQJ0Oy0/rJTS3d/faJ8/1HYn7rW95+fvPKGVLa/ueRhYcynlDmm6F/fOf8K3m2N/H/Vut3us75/Fe2uSuSSPLaXcr5Tyg0l+JE034bcvYX3za1rpc78qr7v236xut/2n11o/VGvdO2+2+2TxxnWcAQAAADjFCDEDAAAAwFH/K8m925/fOepCtdapNJ1tk+T5GR4a64aS353k7kMeP9XO90ullKV08Z1sn6eWsOxSvbF9/v5SypNGWaCUUpa6sVLK49J0EU4Wcb5WmZ/tN7I9Lg9rB7/WM6n7851LKT82YNkHJvm2Pssep9Y6VWv9RJInt6Pul+R7Rqg7aUKqSbLkc1hrvTLJN9O8V/3rbZD3ie3kd/WZ/8YcDViO3KV8Feieh+8ppXzbgHkeluT0efMv13Z/fF7H8F6PbJ8nk1zbM/5L7fMvLnajtdabk3w2TUfzZ+RoF+ZP1Vq3DlhslOvp4vZ5Rc/9Kr7uvjXJ7dufvz5gnp9bwnq7x/mxS1gWAAAAAEYmxAwAAAAASUopj0nyd+3gxbXWTy5yFW9PEwC8c5I/G7CNuyT5lXbwfbXWfUMeFyVZn+R2OdqZNqWUB5dS7rvAvtwnR4OJly1yP26ND+Vo8PGNpZT/NmzmUsr9k7x3KRsqpfxIkre1gzcmectS1tNPrfXMAd2US621N2D57Hbcmbdic79bSvmWPuN/M02H3Lk0x7XrsiQ3tD+/aMA6X9Y+b0jy5e7ItmvrIL1drG8/cK5jHWif+9W/GN2w8m+k6Qp9lyTbknx+wPxntc9/NCQQnNK4tbUtl8+kOV63TfLH8yeWUm6T5CXt4AW11m3LtN0PpbmG7pnkuX22e6eeej5Ua53tmdztmPzzpZSlhFnf1D7/VpKntz8Pe52Ocj2d1T4/ZqGaSil3X6jARepuezVddweT1Pbnh/Sp5X5pvlizWG9v1/ugUsrvDJvxBBxnAAAAAE4hQswAAAAAnLJKKXcrpTymlPLuJGcnuWOSjUl+bbHrasN/L2sHHzdgticnuVOajqefHmG13fDqM3vGPTzJjaWU/yilPL63S3Mp5a6llKcnuTDJ3dKEF/9l1H0YRSllQymlllLOmj+t1jqX5ClJNqUJTV5YSvmrUsqDepa/TSnlx0opr01yTZK+3YQHbPtOpZSHlVLekOSLSe6VZH+SJ9Raj/SZ//allG/tPtIc+yQ5vXd8KeVuIx+A5XeHJOeUUh6cJKWU25ZSnpnk9e30t7RdbZMktdaa5M/bwV8upfxzKeWe7bL3LKW8LkdD73/enpOuz5VSXtcewzt2R5ZSfiBHA5pbk1w+Yu1Xts9PupXH8N1pApP/PUe/APC+eYHaXq9KE/D/1iQXlVKeMm9/vrOU8tw0XYifOGAdK6rWOpnkr9vBF5RSXlxKOSNJ2kDsu5P8dJrX7J/3X8uStntTjnZIf1Up5bmllNu3231gkk8m+e4kh5K8ct7in2ofJckHSynP74Zz26Du95dS/qGUMugYfyzJjiQPTPNa3ZHkE0PK7V5Pj23Dt/3255w0vxdLkg+XUv64lHKv7vRSyj1KKU8spXwsyWuGbGspVt11V2s9mKNfHHlrKeWH21pOK6U8Ksl5WUKn9FrrVUle2w7+aynlb0op396dXkq5Synl50sp70jy/lu1EwAAAACc0k5feBYAAAAAWBN+spTS7W5a0nR7vWPP9JrkfUn+T6111xK38d40IcwfHDC9G0b+VK318IB5en0wyR8l+dFSyoNqrVcnmU4TfP3N9pFSykRb/116lj2S5H/XWr8yaOU9x2OQjbXWHx2hzlvUWjeWUn4sTXfdh6fpFvyiUsp0mq6h35KjzRWmk7xjwKq+Y159Z6Tpct3rc0me0wY1+/mNHO3W3OtHkuzsGT6vrXUcnpemY+3lpZT9aa7JbsfkLyX5w/kL1FrfW0p5SJIXJ/m9JM9rl71bjh7bV9Va3zlv0bum6cr6/CRzPdu7Qzv9UJL/WWudGbH2/0hzff50kl2llB1pzummWutPj7iO1FpvLqV8sV1Pt3v3u4bMv6/tnP6xJA9K87qbLaXsSxNUn/+6Xi3+Psn3J3lGmsDwy0spB9K8JkqaAPPza63nL/N2/2+S70ry6CRvSPIvpZTJHO143EnytFrrdb0L1VprKeVpST6S5GeTvC7JP/Yc5+510zf0XmudLqW8Pc01kiT/scC19eE0QeEHJtnUXk+ddl1n9sz3jDTX+ROT/G2SV7fX8m1y7O/As4Zsa9FW8XX3wiRfSNOJ+evtuT2trWdPmk7YH1nCev+kXcfvJvnTJH/aXq81ze+Sbjj63FtTPAAAAACnNp2YAQAAADhV3DbJfdrHPdOEfNenCaS9OMl/rbU+9VYEmLtdcl/Sb1op5QFJfqYd/FC/efq4JMnm9udnttt4Q5KHtjV/KslNafbtjkl2pwm+/nWSB9Va/32B9d9ngce9Bi86WK11a631EWlCk29O03H5UJrg2+40oeGXJPmuWuugrrOnzatjpt3Xc5L8ZZKH1FofPSTAfLK4KMmPpwnQd9IEBK9N8hdJHl5rnei3UHvcHpXko0l2pQl5705zPf9crfXP+iz2nCQvTRN4vDlHQ5fXpOnY/eBa63+OWnit9Zo05/icNB2x75vk/km+fdhyA/SGltfVWi9ZYNs3pAk8Py/N/uxNE+KeSfLNNN2HH5fBIfkVV2udrbU+M02n988k2ZfmvG1N04n5x2qt/3oCtnsoyS+kOf8XpHkt3inN6+nNaV5LHx2w7L4kj0zz++dzaUKxd8nR1/EfpLnmBun9XffWBercleQR7TI707zu798+euebrLX+SpJfaufd0u7PbZPckOa19Ow0Yf1ltRqvu/a18j/SBJX3pjkOO9IE1n84yTeWuN7ZWuvz0ny54B1prpfbpwmv35zmvP9elnDnAgAAAADoKs3nKgAAAAAArJRSSveN2QfUWjeMsxY4UUopL07TdfqSWutPjLseAAAAAGB10YkZAAAAAABYVqWU26Tp/pw0HYoBAAAAAI4hxAwAAAAAACybUsppSf4iyZlJtid591gLAgAAAABWpdPHXQAAAAAAAHDyK6X8RJL3JLl7kru2o19Uaz08vqoAAAAAgNVKJ2YAAAAAAGA53CHJ/ZPcMck1SZ5ba33reEsCAAAAAFarUmsddw0AAAAAAAAAAAAAwClEJ2YAAAAAAAAAAAAAYEUJMQMAAAAAAAAAAAAAK0qIGQAAAAAAAAAAAABYUULMAAAAAAAAAAAAAMCKEmIGAAAAAAAAAAAAAFbUmgwxl1LeWUp557jrAAAAAAAAAAAAAACOd/q4CzhBvu+hD33oQ5M8bdyFAAAAAAAAAAAAAMAaVxa7wJrsxAwAAAAAAAAAAAAArF5CzAAAAAAAAAAAAADAihJiBgAAAAAAAAAAAABWlBAzAAAAAAAAAAAAALCihJgBAAAAAAAAAAAAgBUlxAwAAAAAwEg+d9X2XLphz7jLAAAAAABgDRBiBgAAAABgJNsPHsnT33xJzrli27hLAQAAAADgJCfEDAAAAADASI5Mz6UzM5fffedXc84VW8ddDgAAAAAAJzEhZgAAAAAARtKZmU2S1Jp8feO+MVcDAAAAAMDJTIgZAAAAAICRdKbnbvn5UGd2jJUAAAAAAHCyE2IGAAAAAGAknZmjIebJzswYKwEAAAAA4GQnxAwAAAAAwEg6M0e7L09OCTEDAAAAALB0QswAAAAAAIzk2E7Ms0PmBAAAAACA4YSYAQAAAAAYSWf6aIh5oqMTMwAAAAAASyfEDAAAAADASI7MHO2+fGhKiBkAAAAAgKUTYgYAAAAAYCS9nZgnO7ND5gQAAAAAgOGEmAEAAAAAGEmnpxPzREcnZgAAAAAAlk6IGQAAAACAkXRmjnZiPjQlxAwAAAAAwNIJMQMAAAAAMJLeEPP0bD2mMzMAAAAAACyGEDMAAAAAACPpTB8bWp7sCDEDAAAAALA0QswAAAAAAIyktxNzkkx2ZsZUCQAAAAAAJzshZgAAAAAARnJcJ+YpIWYAAAAAAJZGiBkAAAAAgJEc34l5dsCcAAAAAAAwnBAzAAAAAAAjOT7ErBMzAAAAAABLI8QMAAAAAMBIOjPHdl4WYgYAAAAAYKmEmAEAAAAAWNDsXM30bD1m3OTU7IC5AQAAAABgOCFmAAAAAAAWNDUzd9w4nZgBAAAAAFgqIWYAAAAAABZ0ZPr4rssTQswAAAAAACyREDMAAAAAAAvq9OnEfGhKiBkAAAAAgKURYgYAAAAAYEGdmeM7MU92jh8HAAAAAACjEGIGAAAAAGBB/ToxT3R0YgYAAAAAYGmEmAEAAAAAWFBn+vgQ86EpIWYAAAAAAJZGiBkAAAAAgAV1ZmaPGzfROX4cAAAAAACMQogZAAAAAIAFdWb6dGLu6MQMAAAAAMDSCDEDAAAAALCgI9P9OjELMQMAAAAAsDRCzAAAAAAALKhfJ+bJKSFmAFLwmzMAACAASURBVAAAAACWRogZAAAAAIAFdWaO78R8qHP8OAAAAAAAGIUQMwAAAAAAC+pMH9+JeaKjEzMAAAAAAEsjxAwAAAAAwII6M8eHmDszc5mZPX48AAAAAAAsRIgZAAAAAIAFdWZm+46fnOo/HgAAAAAAhhFiBgAAAABgQZ3p/h2XJzszK1wJAAAAAABrgRAzAAAAAAALOjKoE7MQMwAAAAAASyDEDAAAAADAggZ2Yp7qH24GAAAAAIBhhJgBAAAAAFhQZ2ZAiFknZgAAAAAAlkCIGQAAAACABXVm+ndcFmIGAAAAAGApxhJiLqXcs5TynFLKh0spN5RSDpdS9pdSLiyl/HYpRbgaAAAAAGAVGdiJeUqIGQAAAACAxTt9TNt9cpJ/S7I1yReS3JzkPkmelOTNSX6hlPLkWmsdU30AAAAAAPToTPcPMU90+ndoBgAAAACAYcYVYr4uyROSfLLWess736WUFyX5cpJfTRNo/uB4ygMAAAAAoFdnpn9Y+VBHJ2YAAAAAABbvtHFstNb6+Vrrx3sDzO34bUle3w4+fMULAwAAAACgryMDOjFPCjEDAAAAALAEYwkxL2C6ffbONwAAAADAKjGoE/NEp/94AAAAAAAY5vRxF9CrlHJ6kme0g+eMMP9XB0z6vmUrCgAAAACAdGb6d2I+NKUfBQAAAAAAi7faOjG/KsmDk5xda/30uIsBAAAAAKAxKMQ80RFiBgAAAABg8VZNJ+ZSyguS/N8k1yT5n6MsU2v9kQHr+mqShy5fdQAAAAAAp7bOzGzf8Yem+o8HAAAAAIBhVkUn5lLK7yX5pyRXJXlErXXPmEsCAAAAAKBHZ1onZgAAAAAAls/YQ8yllD9I8s9JrkgTYN425pIAAAAAAJjnyHT/jsuTQswAAAAAACzBWEPMpZT/l+S1SS5LE2DeMc56AAAAAADorzPTvxPzoan+4WYAAAAAABhmbCHmUspLkrwqyVeTPKrWumtctQAAAAAAMFitdWCIeUInZgAAAAAAluD0cWy0lPLMJK9IMpvkgiQvKKXMn21DrfWsFS4NAAAAAIB5pmb7B5iTZFKIGQAAAACAJRhLiDnJA9rn2yT5gwHznJfkrBWpBgAAAACAgQZ1YU6SQ1OzmZurOe204xpVAAAAAADAQKeNY6O11pfVWssCj4ePozYAAAAAAI7VmR4cYk6SQ9OzK1QJAAAAAABrxVhCzAAAAAAAnDw6M8NDypOdmRWqBAAAAACAtUKIGQAAAACAoY4s0IlZiBkAAAAAgMUSYgYAAAAAYKiFOzEPnw4AAAAAAPMJMQMAAAAAMFRnZoFOzFM6MQMAAAAAsDhCzAAAAAAADNWZXiDE3BFiBgAAAABgcYSYAQAAAAAYqjMzO3T63kPTK1QJAAAAAABrhRAzAAAAAABDdWaGd2LefuDIClUCAAAAAMBaIcQMAAAAAMBQC4WYt+0XYgYAAAAAYHGEmAEAAAAAGOrI9OzQ6dt0YgYAAAAAYJGEmAEAAAAAGGqhTszbhZgBAAAAAFgkIWYAAAAAAIbqLNCJeet+IWYAAAAAABZHiBkAAAAAgKEW6sS8a6KT6dnh8wAAAAAAQC8hZgAAAAAAhlooxFxrsvNgZ4WqAQAAAABgLRBiBgAAAABgqM7M7ILzbDtwZAUqAQAAAABgrRBiBgAAAABgqM708E7MSbJ9vxAzAAAAAACjE2IGAAAAAGCoUToxbxViBgAAAABgEYSYAQAAAAAYaqROzAeEmAEAAAAAGJ0QMwAAAAAAQ3VmFg4xbxNiBgAAAABgEYSYoY89k1PjLgEAAAAAVo3OzOyC82zbL8QMAAAAAMDohJihjw99bdO4SwAAAACAVUMnZgAAAAAAlpsQM8xzZHo2H/za5nGXAQAAAACrRmd6hBDz/iOpta5ANSynw1MLd9kGAAAAADgRhJhhni37DufqrQeyQ+cYAAAAAEiSHJlZOOjamZnL/sPTK1DNeMzNrc2A9tmXbx13CQAAAADAKUqIGebZvO9wkuSC63eNuRIAAAAAWB1G6cScJNvWaGOA/Yemc9mmfeMuY9lNz87lQ1/fNO4yAAAAAIBTlBAzzLN5bzfEvHPMlQAAAADA6tAZoRNzkmzbvzZDzOdetyMb9xwadxnLbu/kVC5ZvycHjqzdDtoAAAAAwOolxAzzdDsxX3jDrjV7i0gAAAAAWIzOzIidmNdoiPmzV22/5X3DtWTXxFRm5mrOu1ZDBwAAAABg5Qkxwzyb2k7MuyamcvW2A2OuBgAAAADGb+QQ84G1F2KempnLedfuzNZ9a2/f9kxOJUk+d/X2MVcCAAAAAJyKhJhhns17j3ZUOf+6XWOsBAAAAABWh8707EjzbV+DIeYv37gnBzsz2bIGOzHvnuwkSc69dmdmZkcLqgMAAAAALBchZpin97aQF1zvNooAAAAAMHIn5v1rL8T82au2JUm2rMF92zXRdGLef3g6l960d8zVAAAAAACnGiFm6DEzO3fMLS8v3bA3h6dG6zIDAAAAAGvRzOxcZubqSPNuO9A5wdWsrFprPnf1jiRZk52Y90wePV//efX2MVYCAAAAAJyKhJihx7YDRzLb84HM1OxcNu49NMaKAAAAAGC8Ru3CnCTb9q+toO/VWw/ecue2/YenM9mZGXNFy2t324k5Sf6zDWsDAAAAAKwUIWbosXnv8R+ybF6DHVYAAAAAYFSLCTHvPTSdI9Nr585mn5vXnXjrGgtp7548GmJev2syE2sspA0AAAAArG5CzNCjX2B5Ld4mEgAAAABG1ZlZXCh5+4Ejx43btPdQ9h+aXq6SVsxXNuw5ZnjzvuP37WS2e6JzzPBa66QNAAAAAKxuQszQo28n5j7jAAAAAOBU0ZkevRNzkty859Bx4765aX9e/elrlqukFbN1/7Gh5a1rrOHBnp5OzMnx+wsAAAAAcCIJMUMPnZgBAAAA4FidmcWFmNftmDhu3PqdE3nXJTfnqzftXa6yTrha63Gh5bX2XuHuCSFmAAAAAGB8hJihR/8QszfuAQAAADh1HTgyvaj51+2cPG7c+nbciz98eaZnFxeKHpeDnZlMTs0eM27zGnqvsDMzm4OdmWPGbV1D+wcAAAAArH5CzNBj897jQ8z9gs0AAAAAcKq4afehRc2/bmefTsy7mhDzNdsO5m1fvHFZ6jrR+gV6t+5fO+8V7pmcOm7ctgNrZ/8AAAAAgNVPiBlac3M1m/oElrcdOJKZk6Q7DAAAAAAst5t2H99ZeZj5IeZaa9b3jDvnim3LUteJtqVPYHnLGmp4sHvi+BDz1v06MQMAAAAAK0eIGVq7JjuZmjk+rDw7V7PjYGcMFQEAAADA+G1YZCfm7Qc6OXhk+pbh3ZNTOXBk5pbhjX3uhrYa9evEvGX/kdRax1DN8tvdpxNzv30GAAAAADhRhJihtXnIhyeb11CHFQAAAABYjMV2Yk6SG3cdXWb9zmOX33mwkyPTs7e6rhNtW59OzFMzc33Dvyej3RPHN27Y2mefAQAAAABOFCFmaA0LKq+l20QCAAAAwKhqrccEkke1bufELT/fuGviuOmb9i6uu/M4bNnfvyvxWulWvKdPGPvAkZlMdmb6zA0Ay6PWmh0H1sa/pQAAANx6QsysObNzS7udo07MAAAAAHCsfYemc/DI4kOt63YM7sScJBv3rP732wZ1JV4r7xXumujfUXqbYBkAJ9COg5088h/Oy1lfvHHJn+kBAACwdggxs+Ys9U12nZgBAAAA4Fgbdi++C3NybCfmdf1CzCdBJ+atAzoxr5X3CvdMdvqOXyudpgFYnW7cNZmJzkxe9vGr8vQ3f2nc5QAAADBmQsysOTct8YOVYbfFHNalGQAAAADWqpt2Ly1s3BtiXr9r4rjpG/es7hBzrXVgmHdQh+aTze4BnZjXyv4BsDpt6Pk87isb9urGDAAAcIoTYmbNuXmJH6zcsOP4D1O6tug+AgAAAMApaKmdmDfsOpSZ2blMz871fb9u457VHZTdf3g6h6dn+05bK+8V7prsH2LeNqADNQAshxt7/raYnavZcdC/OwAAAKey08ddACy3DUsIMU90ZgbeHjJZO7eIBAAAAIDFWGon5qnZuWzaezg1yUyfDosb967uTsxD3ytcI52K90x2+o7fIsQMwAm0Yd6dUbfsO5z73e2OY6oGAACAcdOJmTXn5j2L7w6zbkgX5iQ52JnJ/sPTSy0JAAAAAE5KS+3EnCTrdk5k/c7+77tt3LPaQ8yDg8prpeHB7olBnZjXxv4BsDpt2HXs3wCb18gdDgAAAFgaIWbWnE17D2dmdm5Ry9ywQIg5WTsfTgAAAADAqJbaiTnphpj7h6APHFndTQO2DAlU7TjYyZHp2RWsZvkdnprNoan++zCsCzUA3Bpzc/W4L0j5/A0AAODUJsTMmjM9Wxf9RvsNAzrC9PImCgAAAACnkv2Hp7Nnsn+33lGs3zmZ9bsGv++2mrsxbxvy/mKtozVFWM12T3YGThNiBuBE2X7wSDozxzYi8vkbrC77D01n18TgvxUBAGC5CTGzJi32Npc6MQMAAADAsW6+FV2Yk+GdmJNk097VG2Lesn/4e4FXbT2wQpWcGMPC6fsPT+fQ1MwKVgPAqeLGXcf/XeDzN1hdLrlxd67ddnDcZQAAcAoRYmZNWuxtLteNEGLe5E0UAAAAAE4hi20UMN+6nZNZ3yes1LVxz+p9v23rvuHdiK/ZenIHO3ZPDO+wPawTNQAs1YZdx39+t3mBf3OBlXXxeiFmYG3ZccDfGgCrnRAza9LNi7gV5dTMXG4aYf4t3kQBAFhR07NzOTw1O+4yAABOWTfdyhDznsmp7Dw4+FbUG1dxJ+atC3Rivvok78S80C3Ct67REPMVm/dnbq6OuwyAU1a/L0jpxAyry8Xrdue67ULMwNrxmau2Z9b/AwFWNSFm1qTFfMCyYffkSH+weBMFAGBlfeGaHXn7xRvGXQYAwClrwyLvdrZYGxfRiGAl1VoXDPFes+1Aaj15PwTdMzm8E/NaDTG/85Kbc/W2kzuADnAyu7HPHRr2H57ORGdmDNWsXSfz3yiM157JqVyz7WCuFWIG1pArt+xfVCNEAFaeEDNr0k2L+IDlhh0TI823cc8h/+kHAFhB7//qprz+vHU+yAIAGJNb24l5IRv3rs6mAXsPTaczM7fgPNsPDO9mvJrtXiDEvG2BTtQno9m5ms9etS0XXL9r3KUAnLI29AkxJ8lWjYSWzfqdE7nwBv/WsTSXrN+dJLlu20GfiwNrxvXbJ3SYB1jlhJhZk25eROB43Ygh5h0HO7l+xHkBALh1dk108oVrdmTvoem87cIbx10OAMAp6UR3Yt60d3U2DRj1jmxXbz15O/runjj1OjFfumFPdk1M5fzrdo67FIBT0txczU0DuiBuFmJeNv967rp89LIt4y6Dk9TFbYh5cmrW6xJYE2qtuX7HRK4XYgZY1YSYWZMOTc1m58RonVBu2Dl6MPnsy7cutSQAABbhI1/fnJm5JtDyxgvWZ/+h6TFXtHac9cUb8+pzrslfn321N+4AgIFu2j2ZnQdPbKfhI9NzI7+Ht5K2jRjgvXrb4kLMtdZs2rs6bmG7boH3RNdiiPmcK7clSS7dsDeHptztBWClbdl/OFMD7nSwZd/a+3dnHDbuOZQPf31zPn3ltoHHGoa5eN3uW37WtRRYC3ZNTGX/4WkNCwFWOSFm1qybRuwUc8Mi/lg554ptSy2HRVi/cyI7DnjDCgBOVbXWvP/STbcMHzwykzdfuH6MFa0dm/cdzss/cVX+7dx1eeP56/OC91yWzszsuMsCAFaZI9Oz+d13fG1FtrVxz+rr8LZ1/6idmBcX7Lh88/6865Kbl1LSsrphx0Qu27hv6DwbB3TKPFnVWvPp9r3dqdm5XLJ+z5grAjj1bNg1+N+WUe+CcCq5csv+7JkcfueE+V5/3rrMztUcPDKTC29w5wEWZ+e8uxJfu03gDzj5Xb+j+X/7ddv9TgNYzYSYWbNGCTHPzdUFu470umbbwaxfxPws3uxczQvfe1l+8XUX5KIbdo27HABOQXNzq+921qeayzfvz7XzOn286YL1+drNe8dU0drxka9vTu8d26/eeiCv+ex14ysIAFiV/uKjV+SqrYvrMrxUq6UzcVetNV+9abS/O69Z5DH64Fc35dxrxx8oev9XNy44z/U7JvKNBYLOJ5PLN+/Plp7u0uddN/7zAHCquXH35MBpQszH+/g3tuYDI/yb3bVt/5FjmgJ84hvuLsvifGn97mOGdWIG1oJ17Zcz1u2cyKzP/wBWLSFm1qybh7wZ0rV53+EcmV7c7ZQ+pRvzCfW2L96Yb2zan10TU/nNt1ySt1x447hLAuAU8ycf/Gb+8hNXZf+h6XGXcsr6wFc3HTfuyPRcnvXWL+fKLfvHUNHaUGvNB/sc2zeevz6XzPuQYphL1u/ORy/bvJylAQCryHu+fHPed+nxfzOcKKPeTW0l1Frz8o9flY9ctmWk+dfvmsyR6dHuatGZmc1Hv7ElV209MNY7kE3PzuWDXx3tb7nXn7fuBFezcubfYe+C64WYAVbahl2DP7fbLMR8jFprzrlia951yc0jN1x4w/nrMjV79DPPz161feS/UyBJLhZiBtagbof5qZm53LzG7jgEsJYIMbNm3TTCHyA3LKGr8vw3vFk+N+2ezN9/5tpbhudq8rfnXJO9i7xdFgAs1aGpmZx9+da85cIb8/C//0K+cO2OcZd0ytl/aDof/lr/UMWBIzN5xlu+nBt2TGTzvsN54/nr8utvvDjP+fev5KUfvSIXXu8uDsNctnFf1vf5wLDW5A/f940cPDI8uH9oaiYv+9iVeeobv5S/PefazMwu7suAAMDqd8OOg/mLj125ott8zWevy0Ne9uk85rXn57lvvzRv++KNuX77wdS6sh2SZudq/uxDl+esizYsapkbdoz2/uIXrtmRfe0XJc8dYxfg867dmV0TnZHmPefKbSfkrnRLPbff3LQvE52ZJW1v/nu663ZOCswBrLBhIeYt+/1O7nXNtoPZsPtQNuw+lIvWLfzF8x0HjuRdl9x8zLiDnZlc4L0yRjQ7V3PevDuGXL9D11Lg5Hf99qP/p/XlDIDVS4iZNWtDny4uh6Zm8tWb9uST39yad15yU97z5Zv7LDnc5Zv3Z6NvaC27ubmaP/3g5cd1xu7MzI10i0sAWA6fu3pHDk01HUr2HprOX33y6pG7nbA83nLh+hwcEkzYPTmVJ/zLhfmpV30+f332NfnS+j353NU78u8X35Tf+Y9Lc9MId+M4VX3wa4M7Km7edzivPueagdO/fvPePO51F94S6tm873A+feX25S4RABij2bmaP3r/NzM1s/JfVDp4ZCbXbj+Yz1y1PS//+FV59GvPz4s/csWK1vCaz16b93xl8e9BXbX1wEjzfaCn+/H8gMhKet+lo+9jrcmbLli/rNvftv9InvHWL2d6kV+Im52r+ZMPfDPPf9fXFv1luiu3HOj7Zb4LxhgmBzjVzM7VXLll8L+Z2/YfOeXCkluHBLd77wr7zktuWnBdrz9vfTp9/ob7xDdHu7sEfP6aHcd9wWtqZs57rcBJr7ex4ahfQmZhuyY6clPAshJiZs26efdk5uZqLt2wJy/72JV5zGvPz4Nf+un86r9dnP/zrq/lxR++YsnBC92Yl98bL1h/3G2Kut7xpcG3y9q6/3A+8vXx3858+4Ej+Zuzrx53GQDcSh+77Nh/U27YMZFzr9ONeaXsOzSVt35xw4LzdYPm801OzeYF77ls0YGIU0FnZjYf/8bWofO840s35+J53X1mZufy2s9el197/cW5cV7w480XLk+gZXau5os37Mr/Z+++w+uq7nSPf9ep6r1Zxb0XbIxNMT0Q6kCYhEA6IWWYIZNkcm8mk2RSuSkkBEJIIwkkEAKhgyHEFBs3MLjbuFuyLduSrN7L0Wnr/nGOhWR1WcWY9/M8eiSdsvc6de+99rt+q6rp3YqA1loa2vquDC0iIiLD64G1B9l2tH6sm9HhsfVHBhW4PRkHq5r545qh7dvsPdZ/Jafq5nZWdZrlZW1hVa9B3JK6kTsJWNXUzut7B3d888zmUiobfcOy/roWP59+cD1rC6sHXVzimS0l7C1vYuW+Ku74x+5BVXN+fGPP61q+R4PyRERGy9rCKsr72J4EQnbAMwWcDnaXNfKJP63vdfDYyzvf7cN5dXcFFX08d5WNvl6Dzst3V9DYz8xbIgB/efNQj5eraqmIvJfVt/q7nHfQd9rw+dmyvdz+6Bbagz2frxMRGSyFmOW0VdcaYMmdr3Pj/W/x0Lpi9lU0MVyDuJ/afJS2XsIzMngbDtVy1yv7er3+SG0rq3uojFLZ5OOTf1rP157cxrN9VBYcaaGw5WtPbOMPaw7y2m6d/BDpSThs2XCodkRPxoqcrLoWP6t6qIj2pzU9d+DK8Htg7aEhTQ/d2faj9dzz2v5hatHp4/U9lQMKBf/PM+/Q6o+8Bu+U1HPD797kVysKe6yGtPVIPZsP151Uu/zBMF95fCuffGA9i3+8nHN+spzL7l7FnO+/wvwfvsr9qw+c1PJF3u8OVDXzhYc3sXRbKb7AyB3DDiZIJiKnpqLKZu4+BfehvvP8TnaWNozoOqy13PGP3QRCQ/su2zOASsxLt5UR7LQ/1egLsrWHwPiBqmau+/UbA1rmUDy+4UiXdgyEPxQe0EDD/jS3B/nsXzZQGK189asVhQPe92/zh7j71Xf7Dv/61mEefGNgx2mt/iBLt/ZchXLF3kqKKnUSW0RkNDy+of+BSSdWgT3udBusbq3lBy/u4lB1C4/1ED4+UNXM/op3K0WGwpYn+5gtorcqzBAZ8P/QMGzH5fS2r7yJdQd6LjS1r1xVS0XkvevEysudt68ydJsP1/HU5hJ2lDZwx4u7x7o5InKaUIhZTmt9jeo+GfsrmvnK41sHPXVhT9r8If6w+gC/XVnEi9vL3ncd59XN7Xz571v6nSbsr28Vd/m/tsXPpx5Yz8HqFqyFrz+1nWU7+q4uOFLuX32g4+D+W8++Q837qFqASH+stfzm9UIuumslN/3hLT7z4AZqW/xj3SyRHi3bWd7jCf23DtaMeHBCIiHy3ip+DNb9qw/w5KajCtVFWWv58wCf2yO1rfzopT18b+lOPvTbN9lZ2neA5oEBTC9uraWqqZ11B6p5ZnMJB6qasdbiC4T4j79t5qV33t2Hq2hs50BVS0e17TuX7eWx9YOr0iciEc3tQW57ZDPL91Tw1ce3sfhHy/nZy3uHvcr55sO1XHbPam76w1s8s7lEA35F3qO+8/yOXisBjiV/MMxtj2ymsmlk+vgAVuyp7HEw40BtPlzX7xSqT2/uPvi+c2VmiPSR3fqXjdS1BvjdquEfyPXIW8Xcs3xoQfW/vX2Y+taTO5b/4Qu72F7y7nFVdbN/QPuSAA++cZCKxq79bT/55x7WFvb/uv1zRzlNvYSlrYXfrdSgOZH3GmsjxRK+8fR2/jzAAQ0ytiqbfAOqfl/WKcS8cm8lX3tiG+ff+Tof/t26U3I/Zahe2nGMDYdqAbjv9SKaTqiU3NNssH9ae7DHgeR9VWE+7sE3DnVbh0hnD63r/btUVUvfX8LhSD+u+tXldHFiiPlAVXO/uRTpWyhs+f4LOzv+f3T9EZ7bOnYFB0Xk9KEQs8gQvba7gu+9sGvIO/HWWv654xiX37Oany7by12v7OPLf9/K5fes4VMPrGddUfVpf4DQ0Brgy49t7XYSoier9ldxpKaV9mCIpzeXcOPv13UZKRe28JXHt/JGYfVINrmbzYfrulR7rG72853nd572r52cvnyBEG8f7HnE/VAs21nOL17dT0ldpAP6YHULtz60saPK51iraW7XwAPpsHRbaa/X/WmAJ9elb8FQmIfXFfP2wZou20pfIMSvVhTSMkzBN2vhG0+/wy1/2dhvoKQ3pfVt/Ob1Qo7UvPcryP9zRzkbiwdeMfmx9Uf461uHGcjuzCu7ytld1nvQuc0f4tMPbmDxj5fziT+t5/8+tZ3L7l7NBT9byQ2/fZMVA5jO/H+f38GL23uunifDbySr9crosdbyjae3d+mob2oP8vtVB7jo5yv545oDA5rqLxAKU1TZxFsHathb3khlk4+GtgCVjT6O1LTyk3/u4cb73+JgVQsbDtXyf5/aznW/eeO0ChiIvB9sP1rP2wdrx7oZvSqtb+PG37/F4ZqWYV+2LxDijn+cXNUgfyjML17tfYaxnaUNPVZW7jzrWEWjj88/vIkj0X3Xl94p41D10B5vMBRm65E6DlQ1Ew5brLXc89p+vrt014D273rS3B7kLydRxXFdUTVP9RDk/uOag12m9u3J1iN13L+6+/FY2MJ/Pra13/31Jzb2PSBu6fayXpdR2+J/3xWcEDmVWWt5eWd5xwC6JzeV8NNle/o8Jh2qjcW1/NfjW/nYH9/iyl+uYd2B0T3vcLp5enPJgGYCOB5ifmVXOZ9/eCPPbS2ltL6NHaUN/OzlvSPdzFHR5g/xk5f2dPxf2+LnT2vfDZCGw5Fzhydq9AX55ANv8/red8Pgxxra+P4Lu3qtwnxcQ1uAh9cVn3zj5bRU1+Lnua2994vvLGsYlqJecuo6XNPC95bu5Pw7X2f6d5ax+MfL+cELuwgr6CmngcITQsz+YLjjuFuG5u8bjnQrfvOtZ3eMek5HRE4/ZiyDdsaYfOAO4CogHTgGPA/80Fo75HmJjTGbFy5cuHDz5s3D01B5T7n6V2tHbMrFnnzu/ElcOSebiRnxZCV6Mcb0e5/1B2u465V9bOpn+u25eUncct5ErpufS4zbOVxNHnOhsOXvG45w96v7qGsd+OjvheNTOFLbSnVz75VfErwunrztPGbnJgHQ5Avw1ce30ewLcu6UdC6flcUZ+Skn/RgAth2t59a/bOjxMZw7OY25ucnMHJfEpTMySU/wDss6w0LmbgAAIABJREFURUbS/oomvvzYVvZVNPHFCyfxP1fNxOUc+nin5vYgl9+9useq+BdPz+T+T51FrKfrd9ueY43kJMWQGu8Z8noHwlrLM1tK+dFLu3Eaw08+PI8r5+SM6DpPZe3BEIdrWjlY1cy45FjmFwzP9+RwsNbSFggR53GN6HrK6ts4/2ev93pS3+kw/P2L55Ia58YYyEuJ6/b+lb4drGrma09uZ3t02uwpmfFcNTeHnaWNrD9Ugy8wMp3hMW4H375mFp8+d0K3/TRrLav2V/HwumIumZ7JRxcVEO918c8dx/jmM+/Q6IsMuLhgagaXzMgkOymGnOQYFhSk4D6J78fR5AuEuOzu1b1OyTocUuPcPPL5c5ibl9xt3V94eBNvFJ1855Xbafjr587hvCnpJ70s6d2a/VV87YltXD0vh29dPYt478h+98rwCYUtZfVttPpDBEJhXt1dwX0rCvu8z6SMeL5/3WwumZHV7brDNS185e9b2VXWOKCwwYn++8oZfOnSqYO+36msqqmdzMSRP64LhS1OR//9CtK7woom7l1RSILHxfScRCakxRG2lmDY4nE6mJgRz/i0ODyu7tvyDYdq2V3WgAXivS7+9cy8Xrf5q/dX8buVRRgDLoeDcckxzC9IYX5+CtnJXhK9bmLcjgH1E/WlqLKZI7UtxHtcJMe5mZgeP+x9RF99fCtLt536A4YyErw8/LnFzMlNxh8MU1bfxvi0OByD/My8vLOcX7y6j2ZfkEZfoGMGiJP1/JfOZ0EPx1LfX7qTh9/quULihdMy2HOsieoeBtfetCifn984f0DrDoctr+2p4Lktpbx5oJqm6H5sotdFflrcsPSVJsa4ePObHyApxt3j9b19f/kCIa66dw3FvQSFp2TGc/msbM6dks7c3GTivU5iXE52H2vkntf283o/g95m5iTy7O1LejxmLKps5vJ7Vvf72D5xznh+8q/zgEgI/PltZSzdVsq6AzWEwpb5+cnctLiAD5+Zf1LHgYFQmGDI6lhSZAgKK5r4/gu7OmZE7GxmTiJL//N8vK7h+Wy9sL2Mrz+5HX+n0J7H6eCXNy/g2jPGDcs63k/CYcslv1g1oMDQZ5dM5Mo5Odzylw09Dox88JZFXDYreySaOWrueHF3t9my4jxOfnnzAt4squaVXeV9Fv5xOgz/ddk0dh9r5NXdFQOuJpkS5+aN//kACYM4zq9v9dPkC9LkC5IW7yEnOWbA95X3jt+tKuLnL/c+IA/g8lnZ/OYTZw75OOR4HuVkj41keFU2+fjBC7tYtrO8x/MiH1mYz88+Mu+kzhOKjLXP/HkDa/Z3ncHnD58+66TPCbf6gyN+3vJE/mCY2hY/NS3tzMxJGpP+w5V7K/nK37f2ONuRx+Xg959c+J7fVxORYTPoL6kxCzEbY6YA64AsYCmwFzgbuBTYB5xvrR1SKUiFmN/fRjvE3Fl+aiz33LSAsyeldbm8vtXPgaoWDlY188L2MtYOchRSapybb149k5sXjx90m6qb21m1r4rX91ZwrMHH1XNzuGbeOPJT4wiEwjS0BaKdEAFa2kNMyYonK3FkOiKCoTDLdpbz25VF7C0fuSom2Ulenrv9fAA+99DGLutyOgx3f3Q+N5yZd1LrWFtYxW2PbB7Qia5Yt5NPnTueL144mawkdfLI8AuH7aBP2p7o6c0l/O9zO7pUbTh3chrfuXY2kzLihxRi+sk/9/DHNb1Xr52alcB9HzuT2blJBEJhfvnafn6/OjKN6/z8FM6ZlEa814Xb6SA/NZYr5mQPy8kIXyDEF/+6qdt38YcW5HLe5HQcxuByGiZmxDMrJ4lYj5PyBh9rC6sorGzmnElpnDs5fUjPSXswREldG5PS4wf9mgVDYVraQ7T4gxgD45JjB71+iBzkLtt5jMc3HKWsoY361gCNvkBHJ5XLYfjm1TP5/AWTxrxTsaSule88v5M3CqtZOCGVi6dnctmsLGZkJ3a0raa5nVd3V3Dm+BRm5iQNavnWWnaVNfLc1lKWbivrMTjQm8xEL1+5bBo3LyrA43JQ3dzO2wdryE+N44y85JP+TI6mkQ5LNfki1V5+s7JoxILKA3HZzCx+fuMZpCd4qWzy8daBGh5aV8zWI/Udt0mOdXPm+JR+pxOfm5fE3R9dwIycxJFu9kn77coi7nql7xMRwyHR6+Ivty5m0cTIfnCjL8CXHt0y6P3eviTFuHj29vOZmpXQ7braFj8v7yyn1R+kPRgmOymGD8zMIm2YBsU0tAV4p6Sed0oamDUukYunZ3X73FhrqW8NcKS2leKaFg5UtYC1XDozi/n5Kaf090IobPnV8v38emVRx/ZgfFoc99w0v+M1ldG3cm8lK/dVcub4FM4an0ZbIMSbRdWsO1BDc3uAOI8Lj9PB0bpWiiqb+62+1ZvLZ2XzH5dMYeH4FIwxbDlSxxce3kRtS++DR/vjdTlY/n8upiAtbsjL6EtDW4B1RdUcqmnhcHUrbYEQqXFuUuI8XHvGOKZnD9/3s7WWh9YVc+eyvTx069kjNpjCWstvVxbx+1UHWBIdPHPB1AzGp8V12yeL9DE0c6S2lXiPi/QED1mJMeSlxPb6XdPkC+B2Ok6rAdInavQF+NXyQh5eV9xv+N5h4Lwp6fzbRVO4aFoGda0BfvzSHp7Z0rVS7Bn5ydxz04Iu255w2PLr14u4d8X+fqvaxnuc3H7pVL5w4aRej2Wstb3ud6/aV8ntj27p0vfgMDAhPZ5JGfEkeF3EeZzMGpfEzYsLenx9d5c18uvXC5mXn8xnzpvYLbhS3uDjgp+9PqQBC2MhwesiK9HL4dpWQmHLlMx4brt4CjcsyOsxmH6i7UfrufmPb43IfunZE9N44rZzu7yevkCIc36ygoa2wU/h7nIYVn/jUvJSuh/7ldW30RYIEQxZ3imp5/7VByL7HiPs61dM5z8/MK3LZdZa7l1eyOMbj/ClS6dy8+KCLu/3n7+8l9+tOjCi7bpwWga//eTCbgHrH7+0u0t1y954nA7WfONSSuvb+O7zO9ndS9/yxPQ47vzIGZw7eXDbAn8wzDNbSvhtdF/rjg/NOS1O7LYHQ7y+p5JntpQS73Xyv9fM6rXvs7bFjy8QIt7jwut2EAxbgqEwXpez11D38cEK6QkeEnsJz0vE4ZoWkmLcI14UYKxUNbVzzX1r+6zcfttFk/nWNbM6/vcHwxRVNlNY2cR5k9MH1C8fClvuX32g12NoY+B/rprJJ84Z3+uADunuzaJqPvnA+gHddkZ2IqX1bTT3EIyByLmyJ247r9v+fihscZhTPyD55zcOnfQMECdjoINNiyqbuXPZXpbvqehyeVail/kFKdy8qIDLZmWd8s+39O1obSv3Li/kua0lDORQ4KwJqTx4yyJS4iLbmv7OS1U0+li6rZQNh+rYfLgWXyBMbkoME9Lj+fY1M5mader3q/anoTUAJtKnfKoY6PfhhkO1fOmxLf3OivLB2dn84Po5PR6TiLwXLPnpCsoauhbbGmrxha1H6njk7cNsPlxHSV0b37hyBv920eQR3x5aa/njmoP8dNm7s1LceFY+P//IGaN2zuH4+YP7Xi/q83Yuh+GXNy/guvm5w96GhrYAT206SnmDjyZfkFnjErllyUTtj4icut5TIeZXgCuAr1hrf93p8nuArwF/sNb++xCXrRDz+9hYhpghcjLp9kumcsuSiby88xhPbyntqDh4sr544SS+efWsPoNGvkCI1furWFdUzfpDtb2GheM8zl4DuJMz4jlvSjqfOW/isIRzqpvbeXF7GX95s3jUpueYmpVAky/Q44h1Y+DOD88bUig8HLY8seko31u6k0BocN+fHpeDC6dmcPnsbC6ZkUlq3Ludysc77v3RiizBkMWYyOsU73XhdZ189SY5fYTClqO1razYW8nLO49R2dTOk7edR/YQQ/L/eKeML/99a58n4DMTvczJTeLsSWmcMymN+fkpfY6+3lfexDX3re23EoTH6eCrl09j+Z6KLkHCnqTHe7h5cQHnTk7HEvk8VjT62HOskX0VTcwel8wNZ+YyLy+5z8/Lj/6xmwfe6P8kJkS+07MSY7pVk/Y4HUzKiCdsLSFrSYpxMzUrgSmZCeSmxJAW7yE1zkOTL0hFo4+SulY2FNex8VAtbYEQGQkeLp6exaKJqaTGeUiJc5OTFENBWly37/gjNa088nYxT2w82lEVFmB6dgJXzclhfkEKxxp8HK1tJTsphk+eO77LCWNrLUdqW9lZ2sg7JfU8t7WUyn46pgCunpvD5y6YRKw78j1UkBrb62vuC4TYVdZIky+ALxAi1uPirAmpvVb2qGj04Q+GSYp1kxi9jT8Upj0QpqalnZoWP1sO1/GrFYU9bqsmZcRzxZxsjtS0snxPRcf38YKCFG5YkEt2UgwJMS7S4j1MyUzoCHOEw5bimha2Hqnn7YM1vH2ohqO1J1edtiAtlgSvu8u+R1q8h4unZ3LtvHFcND1zQGGKsfKXNw/x02V7mZQez6xxiUzPSWRKZuS93LlCYXN7kBe2lfHMlhJa2oN43U68LgexbmfHeyQt3k1avJfUODdJsW6SYtxsOlzLn9841OW9O5YyEjwkx7qHJeDhcTr48gemcv60DFJi3aTHe0mOG54Oa38wzOMbj5CV6OWsCWndKn82twfZVFxLUWUzTb4gze1BshK9nJGfwrz85I7PXmWjj0t+sWrYqgv2J9btZOa4RI72M3PGyShIi+W5288nIzrLRW2LnwfWHuThdcW0nPA4HQYWTUwjJykmUmWxPcSSqel8bPH4AVcP2lnawL3L97N8T9cKgOOSY/jQgjzC1nK4poUjtW0crW3t9URrRoKHSRnxBEKWYDhMmz9ES3sIXzDEkinp/OuZ+Vw8wO+LikYfP/3nHkIWPnf+RM4cnwpEthdvH6rB43SQmeglKcZNXaufqqZ2mnwBEmPcJMe6yUz0Mj4tjpQ4N1VN7Ty1uYQnNx3lcA/VET1OB/d9fAFXzR2damPtwUgYK87jxBhDQ1uAtw/W8E5JPZfOyOKsCam9buNb2iOfhSZfgMrGdoprWjlc24LX5SQ3ObKNXTQxddiqs42kYw1t3PHibpbtLB/V9c7PT+aSGVncv/rAkAPRnX1gZhYP3rKo22vW6AtwqKqFuXnJgx5Es6m4lsfWH+GlHcf6bOMVs7P5ymXTulWI7421llDYdtvX8QVC/O9zOzuCrSlxbl740gWMTx94ODsctljo8yRiOGz54Yu7eqzUmpMUw6KJkc/50bo2SmpbqeklYJ7gdTEjJ5HclNjIfmrIUtvq51B1C1VN7RgDucmxTM6MZ0FBCmdPSmPh+NQug/MafQG2HK5j29F6dpc1sqe8kVi3k+vn53L9/LxBPfaTVVTZzF/fKua8yelcPCOz1wo3hRVN/PWtwzy7paTbtmAgZuYkUtnU3mtw3+ty8NnzJxLndtEeDLHtaH2PVSD7MjE9jq99cDpTMhPISopsw5btKGfptlJa/SG+dc0sLp6e2eU+T206yjef3THg6nq5yTF85bJpLJmSEdmnbvbz4jtlvLC9rONYLyXOzb9fPIV/u3Byx4mun728l9+PcMB0NEzKiOehWxczIT2+19uU1LVyw2/XDWrw4mDd/6mzuGruuxWd/vFOGf/52NYhL++ymVl8/sJJLByfitflYPX+Kn67soiNxUOexPCknFjF0RcI8fWntvOPd96d9j4vJZYlU9Jxuxw4jeHvG46MSkh+alYCD96yiAnp8fgCIZ7ZUsKdy/Z2VKXuz+SMeA5WD+w44VPnjh/wrBV7jjXyxb9uoqSu67HnFbOzue3iyZxZkNrlxHMwFB61anehsGXb0Toa2gLMyEkiNzlmQP2Prf4gD60r5k9rDnaZoS7B6+K/Lp/GTYsLOgKebf4Qv19VxP1rDvZYVdXtNCyemMalM7LISvKy51gTe441UlTZTFlDW8f31+TMeObmJjMhPY7clFjS4z3UtwaoaPRR0eSjuslPVXM7YWuZFB3okZcaS1ZiDFlJXvzBMNXN7VQ3+zlW30ZpfRtVTe0UpMUxIyeR6dkJTM5I6DUE7A+GcTlMnyEBay0Hqpp560ANVc1+rp03bsQHvvoCIX61opA/rTlIyFrm5iZzwbQMLp+VzYKClGEfsBwIhbvNUNDQFqChNYAx4HY6yE4a2GyVAxUKWz7z5/W8WdT3ttcYmJeXjC8QwhcIU97g66ik7HYarp+fx8fOLsAXCEVme2zyk53kJS81FmvhlV3lvLKrfEDHsh6ng/OnpnPV3BwumZE14D5Zay0Hq1uiMz9E+jMrG31cPW8cH188flT3s0ZDMBRmy5F67npl77Bvt2bmJHLFnBxSYt2sO1DD+kM1pMS5uWpODlfMyWFeXvKIDd4LhS3ljT58gRCTM+IH/H5/YXsZX/n70PcJhkOC18VjXzynx9lKw2HLtpJ6ntoU6SPobx90Zk4iX7p0KlfPzTktqrQGQ2GO1rVRXNPCsXofl87MHHIRkVNdfaufe5cX8uj6w4M+z5mXEktavIdjDW00tAVYNCGND87O5vypGaTFe0iKdVHZ2M79qw/w1KaSLhXtO0vwurj35gVcPrv7oC5fIMTmw3Ucqm7hSG0rbqfhkhlZnFnQ9zmp0RQMhXlswxHueW0/re0hLpqeybVn5JAdLRIW63GyoCBl2M/rhsOWquZ2UuM8eFwOAqEwGw/V8uruCrYerae8IbJ/k5Hg5czxKSwcn8p5U9KZkxvpf7HWcrimlRe2l/GrFYUDPtZ0OQwfXpjHZ5dMwuEg2tcYJC8llokZ8XicDtYfquGNwmqcTsOtSyb12fcaCltW7avk5Z3lpMZ7mJAex4KCFObkDqwPZ6y1+oNUNLZT2ejD6TCkxLmJ9bjYeqSOVfuq2FXWyAdnZ/PRs/JHbHC/DExNcztn/Wh5t8snpMdx06ICLpqWyZzcpAEFgZfvruA//76l24Doa88Yx103njFiVZnDYctP/rmnx/PaHz+7gB/fMK+j/f5gmLC1uBwGY0zH7FNet2NIRQzbgyH2HGti25E6/rmznA2Hagd83w/OzuabV89kSmb3gjQD0bmCvy8Q4uF1xfxu1YFuA8Q/fnYBd3xo7ntm5tTeNLQFOFrbSml9G4leF+dNSX/PZ4N8gRC1LX5yNQjm/ey9EWKOVmEuAoqBKdbacKfrEoFjRB5MlrV20AkDhZjf38Y6xDzSLpuZxafOnUCLP0irPxSp2IMhbC1vHazhtd0VwxpUuXRGJl+8cHKXDeXxqddf2FZGbYufulY/WYlezpmUzuJJaTiNobzRR1l9G8v3VHRMvXiq+ebVM7ucuOusPRjiO8/t5HBtK59dMpErZmezq6yR77+wi23DFEofjEkZ8Vw7bxzXnjGOmTmJ7/mdFhk8XyDEfSsKWb6nguKa1m4nfqZnJ/Dkbed1jIIfqHVF1Xz2Lxt77UzqTWqcm8tnZXPFnBwmpseRGu8hzuNk+9EG3jpQzdLtZT2GoUbDzJxEfv3xM5nWQwW+wVT+GAsel4PJGfEkxrjwhyztgRD7Kpr6rfDWWX5qLP995QxykmJYtrOcZTuP9TkF4UBlJHi4am4OV87JwekwVDT6KK1rY/2hWjYcqu0WJHI6DPPzk5mRk0isO1IhrqyhjY3FtScdHB4Mp8MwOSOepFg3e481DinYcjKSY91cOiOTcdGTrAVpcZw7Ob2jOkM4bNlb3kQgFGZ6dmKPFaistVjLsI6oDoUt/+8fu3loXXGvt3EYyE2JJT81lp2ljb2GMyXCGLhkeia3LJnIRdMye329mtuDvL63kmAozCUzulcK3lfexNee2Nal+ltOUgwpcZFgeHswxM6yxj73reI8TuI8TkJh2yVUcLrISYohzuOkvi1Afat/QNViOnM6DBdNy2DWuCTyU+PIS418PtMTPLidDg5Vt1BY0czKfZW8trui/wUOk+RYN0umpLNkSjoXT8/qdgK71R/kkbcOc9+Kwi7fZfPykmn0BQa93U2McdHqD/W7n+4wcOeHz+CmxQVA5D1cF+18GkooIhw94VtaH5kNoL7VT3FNCxsP1bGtpB5/MEyM20FqnIeKRl+X13dmTiI3Ly7gnEnpHYGQ5Xsq+PMbh1g/gE7UpBgX154xjg/OzibO48JAx+ekttVPky8QHVAYxuNykBrvIS3Ow+zcpI5quNZadpQ2sLawmrMmpLJ4YtpJh0OstWwvaeCNwqpet6vvVd/9l9lcPz+XzEQvwVCYJzYd5Z5X91PT4icpJtIh+9XLpjM7t+/ZFIYS7HYY+P51c7hlycReb3O0tpXntpby7JYSSuraKEiLY2J6HMHooMGyel+3/eTp2Qk88x9Leq0Iaa3lyU1HeWJjpDJIRVN7x+fM43SQkxzD+LQ4clNiiI9W0d17rIkVeyt7XN5oSPS6SI334HYaDla39LnvmZHgJT81sn+QFu8hKcZNSpyb6dmJzMlNIj3B2/udBygUtvxp7UHueW1/x3GP1+XgvCnpnDs58mOtZeW+Klbvq2R7ScNJr/NUcOG0DM6akMqR2laO1LSy6fDIhVQvm5nFLz+2ALfDwbk/HVqV4FNRRoKHh249u8cBDBWNPj794Hr2VzSPaBsyE708eMuijnDQLX/ewOr9fc/yMRAeVyQYOJrHUr258ax8ClLjONbQxubDdRRWjuxzOhgpcW4+elY+z24p7XXAx3CZmB7HL29e0DGgrCdvFlXz749s7nGq3eNyk2O4Yk4Orf4g247Wc7CqhQumZfCxxQVcND2TbUfrWbWviu1H66MV9R2kxXuYlpXI1OwEQiHL/somiiqbmZAWzyUzMpnXx+xAJXWtrCuqYW1RNWv2V3X5/Cd6XSRFj1UdDshOjGyz8lJjSYpxE+d10uQL8sDaQ30OBnAYmJObzMLxKby2u6Jb5bNTWVq8h6mZCczISWTmuEQCwTBrCqt5+2ANXpeDJVMyOHdKOm6HoS66L1vWEBm8frimtduAmJk5iSyZkkFeaix5KbEEQmGKq1sormmlLrr/6Q9Zrp2Xw82Lxvc4MLalPUhDW4BQ2BK2lsa2IKXRIPYjbxVT3MtxQEaCh7MnpRHjduJ2OMhNieXqeTkdFWyPDxgsrm6hMTpLY0qcm/zUyH7K8aIare0h1hZWsXxPBQerWzoGRLkchn3lTd1e39njkvjskolcvyC31xBpSV0rf3v7CP5gmK9fOb3P0Me9y/dz7/LCvl62MTd7XBLnTk5ncmZ8Rx9UTYuf2pZ2KhrbKatvo7SujXdKG/qseLloQioLJ6RyRn4ykzMSiHE78LqdeJwOPC4HXpcDj9Mx5P6hyiYfu8oa2R392VPeSKLXxZTMBCZG+yO9LifxXmd0vzie1Dh3l/NCB6tbWFdUzcHqlsjgXH8It8MQ540Mcg+GLb5AmMa2AOsOVI9Zn8TxmSumZiUwIS2O/NRY8lLjSE/wkBEdhB7nceJ2OgiFLVVN7ZQ3+shM9HarNuoLhFh/qJaVeytZW1jFkdrWjuBndpKXC6MBqJjogP/GtgCFlc0UVTbjcTkYnxZHapyHP6w5MOjA6EhIjnXz6BfO6dhfqm/1c//qgyzdVsqxIXxf56XEcuv5E/noogICocgAguPfhQ5jqG/zs/FQLesP1VLT4o8eS8SRneglI9HbMSh/Sua7gfAmX4BD1ZEK85mJ3n4HDQVCYUJh260YUF8znhy/3/qDtby0o4yXd5Z3eb+6HIZ/OWMcNy0uIN7jIhiOFOA43n+Q6HVx+ezsXot4nIpCYctjG45w96v7qD9F+gu/eOEkZuQk4Y0Gclfuq+L1PRU99uEnxbjISoqhpT1yfnzRhFQ+vDCfy2ZljdqMQ+Gw5bU9Fdzz6n72VfQ94/DcvCT+67LpXaqWh8ORAU8bi+s4UNVMezCEPxjGFwjT6g/SFp21IjsphsxEb0d/ky8Q4p2SBrYcqesYoJce7yEQCg+oeEhKnJsz8lPYV944LOeKTuQwdOm/Oz546PoFuSyaEBk4fXygxPLdFTy3tefvm/OnpnP7JVNZ0kN4r9UfZMvhejYU17L1SB3tgUjfXazHyYS0OKZkJTAzJ5F5eckjEnavbm7n+a2lPL25ZFCzTc/JTSI3JZacpBgWTkjhmnnj+iywEA5bNhTXsmpfFZMz4lk4IZXJGYOf2dVaS9hC2Eb2H53GDPp5qWj0sbO0gbL6Niqb2js+d0umZAy4mEuTL8C2o/WUN/hoaIsUQcpLjWVSRgJTMuOHPNtKTXM7q/dXcbCqhY+dXUB+aveweJs/xKceXM/mfvpWUuLcLJqQyqLowMqeBiE+ufEo33qu90Hm45JjuHJODpfOzOLcyWkDLqIRDIVp8kU++63+UEeBjpb2yGyT7cEwq/dX8VKnQcMn+uhZ+YxLjmHdgRq2l9T3uq8xLy+ZD87OZtGEVLKSYshO8mKJDEqobmonOc7NxPR4YtxOdpQ08NiGI7ywrfSkzqk6HYaPLMzjyjk5XWY4bm6PFABr9gVpaQ9iiZyrSIxxU1TZzCu7ylmxp4K61kBHUYi+zmFcOC2Dr142LVo00NIWCNHSHqTFH2RaViILClKGvdhUf/sYbf4QxxraOooQJXhdHX2pJ95v2Y5j/J8nt9MWePe5PmtCKv/3g9NZMjVjWNs9Gpp8AR5df4QH1h7iq5dN5dPnTRzrJsnYec+EmL8A/An4o7X2th6uP16l+XJr7YohLF8h5vex0z3EPFYmZ8bzyXMmMC0rgV+/XjhmFV+G2/lT0/nFR+d3GVFd2ejjtr9t7lIVNiPBQ02Lf1BBwpGSEudmbm4y8/KT+cDMLM4an3pKT08uJ29naQP/58lt/Z5sXVCQwqNfOKfXTr2KRh+r91XR6g+SGt1J/vazO07LYGK8x8ndN83vUjmyoTXAlfeu6VZVWWS0OQyckZ9CeryHjcW1HR2NxhCpfux0RA+wQ/gCIfyhME5jOHO9VEHOAAAgAElEQVR8CkumZHDOpDSmZSeSkRAJvx6qbuHtg7VUNPpIi49U9q5t8bOvvIn9FU2ELR1TjbtdDtwOw9G6tn47b2TospO8TEiLJzs5hvRoSNlaS2m9j7WFVR3hRIeBM8enkp8ai8fpwAIvbCsb9MASOT2dNSGVDy/MY0pmAs9vLeXF7WWjPhCjs8tnZXO4poWiqmasfXfgzRn5yZw3JZ3zJmeQkeAhZCOdhcU1Lewua2RveROVTe3UNLdT2dTO0drWYQnoJnhdJMa4hnSSdShyk2M4c0IqO0sbugTGMxI8fHB2DpfNzOL8qRm9TodurWXVvir+uOYg45JjuG5+LudNSef1vZX8YfWB0yaE2Zv81NiOQQIn8roc/PD6Ody8uKBbJ25Da4BHNxzmN68XDXmw7qfPncD3rpvdpSJHZaOPu17Zx9NbSoZ0jDc3L4kf3TCPBQVdK5g1twf53+d2sHRb2ZDaejrISPDgcTpwOk000DCJy2dld1R9Kq1vY2dpA0WVzRyoauk4vp2encjh2hY2FdextrBqWGZNkL5NyYzn8lnZ/GHNwbFuyrBK8Lr4xUfP4IOzczpO+m8sruU//rZlRCswd+Z1Ofj5jWdw9qQ0ltz5+inRlyQjw+kwfOmSKXzhoskdlYchcjL66c0lfHcIM7l1ZgxDev8kx7pxOw0t7ZHjyXiPk6RYN9ZCaf3YB+GlZzFuBx+YmYU/aKlticwQcDwwMpymZiWQGONi+9H6QQ8IHYzUODefOW8ityyZSFq8h/ZgiFX7qnhmcwnL91R0rHtiehx3fXQ+iyemdbm/LxBi6bZSvvnsDn2PnsDlMHhdDqZlJ7JwfCqzc5NoaAtQWtdGRaOvowBOezBMKByZ+bG62T+k7WCs20lyrJvEGBdNvuBp16/qcphowOvdyyZnxnP+lIyOmecKK5tOifDxcEqJc/PI585hQ3Et960oPCUGtGUkeJmfn8yR2taOfod3r/OwZEoGF0zNYOa4RBJj3MR7nRRWNLN0Wykv7yyn0RfEGIhxOQlbSyA6s8HC8SmcOzmdmTlJ+ENhWtuDlDX42FRcy9Yj9V0CQ4PldTm4fFY2M3MSaQ9GZlo9PktUsy/yOWwLRPp3Q+HI7D9up4M5eUmcWZDC+PR4mnwB6loDBENh4r0uErwuPNFjV0ukqmZbIBJ0HZcc0zEjQXsgTFN7AF8gjNtp8EQHOXhcDtxOB8bQMevr9pJ6VuypYPmeytNyPyA51s2/XTSZW8+f2DEopri6hVX7KqlvC9DkC+J1OZiXFzmvmpcSO+hCUe3BEC/vLOe3K4sGPSgyNzkGr9tJMBymoTVwysxYOFqcDsOc3CRK69oGPMgwLyWWBeNTOLMgBX8ozNr91Ww6XDug7+KkGBcXTMtgenYijW1B6tv8xLidzMhOZEZOJMw40NC7tZZ1B2p4dP1hXt1VMSyzy6THe/j42eOZnZsUOQd0fGa59iD1LQHWFFZ16+uMDGCK/B3jdkYGg6REZnU9WtdKSV0bzb4glkgxnBO3axA5DzE5M4FZ45IoSI1kIsI2MpjDF3j3u8oXiMwgeKCqudcZXR0mUnwtxh0ZDDQjO5HPXTCpI/x7tLaVxzceYeXeKvaWN/a6v2kMzMhOZOGEVGbmJJIU4yYp1oUhMjtfoy/y+W2N7tc0RAeRVDS2s7e8sWM74XIYrl+QyxcumNxRJCEQCvPFv25i1b7BDyi+aHom/37RZKZmJfDyrnJeeufYgIpnHJcc6+YjC/P5xDkFTM3qeVaWsvo2Hnn7MI9vOHLKFaFJj/eMyIBgt9MwKSOeqqb2UX/McR4nZ09K46zxqSwYn8KkjHg2FdexYm8l75TUR2ZaTYgMrMpJjmFccgypcR7ivS5iPU6O1ray4VAtmw/XUdXUTnM0ZJ6R4CU3JYasRC8uhwOnw9DqD1JU1UxJXVuPxzAJXhfXzMvhU+dOYG5uMvcu3899rxf12va8lFjm5iUxJzeZQCjMOyUN7CprJCnWxaycJKZmJeByGNqD4ei+j8HjdOJymsh+QDhMqz8UnZWonXCYjvPIYWtp9AVp8kWK1tQ0Rx7bzJwkzhyfwpTMBBp9gY6ilrUtkZ9g2JLgdZEU48bjcuAwBoeB8kYfxTUtlNa1dXzu/9+H5ijE/P72ngkx3wV8Hfi6tfbuHq7/DfAl4HZr7e/7WE5vKeWZCxcujFOI+f3p0w+up3CEq6rI6SU51s1NiwtoD4Zo8gVZV1Q9IiNRR0p2kpfLZ2UzJSuBvJRYspK8BEMWfyhyoNHYFqC+LUAwbEmKcZEc68bpMARCYfxBS4zbQXKsu6PSSjhsuxyIOYwhxu3oOBgJR6daPv77+E/YgsUSDkcOkCyRA6sYtwOvy9llpFyrPxLOa/MHafNHOmGOV9xLjY+e9HYYDOAPRUYatkcPnnzRkclAxzSF8V4X8R4n1tLRSXt8uhSHMbidDlxOE33cFn8wjLW2o1Oo8wj9YPj4+iKdToHoTh9EqqC6HIZYt5MYT6SywvHN6ImbU2Miz93x352nj7Y28hyHos91MBQmGLa0tocob/RxrCHS4VzTHJkKc8OhWoID7CiN8zqZl5fM/PwUspK81Lb4qW72s6u0gd3HGt9Xnf7GRCpEjUuOxe00bDhUy9rC6rFulsiwSYmLHCBWvoe2WSIipzOv28GiCWksGJ/CgvwUkmPdlNS3UlrXxrKd5ewu6zrY9nhnokR8aEEuF03P7OgAXbbzGEu3ldE2DMGdOblJzMlLJjc5hkAozF/WFdPafnLLdRi4aXEBH1s8viPg/+L2Moqrx2Y2klPZpIx45uQmsflIHcfqT6/gi5y6xqXE8OEz80iKdXPXK/vG5Pt2Tm4Su8pUaOH9IM7r5CML87l+fi5vFFV3VOMXkUho4IJpGWw4VNtr5U+HgTl5yczKSWRGThL7KppYtuNYR7VJERGR/mQkevjwmflsOFTb54y649PjuGJ2NlfOyelWeR3eDY+3ByOhr5feKeefO46dEmF/OXmxHicXTsvgAzMjMyRaG3nNj/MHwxTXtHCwqoVtR+vUxzMIF0zLwGkMawurRnSgXF/m5iVz41n5bD1ax9KtJ1dgYKgDSjubNS4y4GzhhFRcDsOO0gZ2lDawqbjulJzFXEZXdnIMFad5v8HXr5zBjWflj3UzZOy8Z0LMfwS+CHzRWvtAD9f/GPg28G1r7U/7WI5CzCIiIiIiIiIiIiIiIiIiIiIiIiIiImNr0CHmnuebf4+w1p7V0+XRcPPCUW6OiIiIiIiIiIiIiIiIiIiIiIiIiIiIDIBjjNbbEP2d3Mv1xy/vfa4PEREREREREREREREREREREREREREReU8aqxDzvujv6b1cPy36e/8otEVERERERERERERERERERERERERERERG0ViFmFdGf19hjOnSBmNMInA+0Aq8PdoNExERERERERERERERERERERERERERkZE1JiFma+0B4FVgIvClE67+IRAPPGKtbRnlpomIiIiIiIiIiIiIiIiIiIiIiIiIiMgIM9basVmxMVOAdUAWsBTYA5wDXArsB5ZYa2uGuOxHAay1nxye1r43GWM2A1hrzxrrtoiIiIwUbe9EROR0p22diIi8H2h7JyIipztt60RE5P1A2zsRETndaVs3/FxjtWJr7QFjzCLgDuAq4BrgGPAr4IfW2rqTWPb7OrwsIiIiIiIiIiIiIiIiIiIiIiIiIiJyKhuzEDOAtfYocOtYtkFERERERERERERERERERERERERERERGl2OsGyAiIiIiIiIiIiIiIiIiIiIiIiIiIiLvLwoxi4iIiIiIiIiIiIiIiIiIiIiIiIiIyKhSiFlERERERERERERERERERERERERERERGlULMIiIiIiIiIiIiIiIiIiIiIiIiIiIiMqqMtXas2yAiIiIiIiIiIiIiIiIiIiIiIiIiIiLvI6rELCIiIiIiIiIiIiIiIiIiIiIiIiIiIqNKIWYREREREREREREREREREREREREREREZVQoxi4iIiIiIiIiIiIiIiIiIiIiIiIiIyKhSiFlERERERERERERERERERERERERERERGlULMIiIiIiIiIiIiIiIiIiIiIiIiIiIiMqoUYhYREREREREREREREREREREREREREZFRpRCziIiIiIiIiIiIiIiIiIiIiIiIiIiIjCqFmEVERERERERERERERERERERERERERGRUKcQsIiIiIiIiIiIiIiIiIiIiIiIiIiIio0ohZhERERERERERERERERERERERERERERlVCjGLiIiIiIiIiIiIiIiIiIiIiIiIiIjIqFKIWUREREREREREREREREREREREREREREaVQswiIiIiIiIiIiIiIiIiIiIiIiIiIiIyqhRiFhERERERERERERERERERERERERERkVGlELOIiIiIiIiIiIiIiIiIiIiIiIiIiIiMKoWYRUREREREREREREREREREREREREREZFQpxCwiIiIiIiIiIiIiIiIiIiIiIiIiIiKjSiFmERERERERERERERERERERERERERERGVUKMYuIiIiIiIiIiIiIiIiIiIiIiIiIiMioUohZRERERERERERERERERERERERERERERpVCzCIiIiIiIiIiIiIiIiIiIiIiIiIiIjKqFGIWERERERERERERGSXGmB8YY6wx5qGxbstoMsY8FH3cPxjrtrxfGWMSjTH3GGMOGGP80dejeKzbNVL0nhMRERERERERETn1KcQsIiIiIiIiIiLyPtcp7Nf5J2CMqTHGFBljnjfGfNsYM6mf5Uw8YRnX93HbqZ1uN3EAbdzW6fbnD/BxxRljvmKMWWmMqYoGN6uNMTuNMc8ZY/7LGDOnh/t9tofno7ef5wfSltOVMSYlGsz+wVi35VRmjLkh+jxdMobNeBb4GjAZaAMqgKoxbI+IiIiIiIiIiIi8z7nGugEiIiIiIiIiIiJyyggAtdG/DZAEpAFTgA8BPzLGPA3cbq2tHsDy7jDGvGittSfTKGPMfGB+p4s+A7zZz32mAi8TaftxLYAHmBP9uQHYDizoY1EV/TSvrp/rT3cpwPejf/+gj9sdA/YBA3nfnI5uAG6J/r1qtFceDetfTuQzfpG19u3RboOIiIiIiIiIiIjIiVSJWURERERERERERI5bZ63Nif5kW2tjgVTgauAJwAIfBbYZY/IHsLz5wE3D0K7j4c8HgTBwkzEmprcbG2NcwPNEAszlwH8AadbaBGttEpAOXA/8lUhF2l51ej56+7n15B/e6c9a+y1r7Uxr7W/Gui3vU8crjr+jALOIiIiIiIiIiIicKhRiFhERERERERERkV5Za+uttS9baz8GXAv4gDzg6X7uuiz6+4fGGOdQ1x8NJH8y+u/PgdVEqv9+qI+7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s2YpxCwiIiIiIiIiIiIiIiIiIiIiIiIiInLE9TnE3P0YGUdOTfQ6tYvbW6d3PdaHiIiIiIiIiIiIiIiIiIiIiIiIiIiIHJMGK8S8KXo9rovbx0avNw9AW0RERERERERERERERERERERERERERGQADVaI+bXo9dnGmA5tMMYkAwuARuCdgW6YiIiIiIiIiIiIiIiIiIiIiIiIiIiIHFmDEmK21m4DXgRGALcedPMPgETgb9bahgFumoiIiIiIiIiIiIiIiIiIiIiIiIiIiBxhnkFc9y3AMuD3xpgzgA3AScBiYDPwnUFsm4iIiIiIiIiIiIiIiIiIiIiIiIiIiBwhxlo7eCs3ZijwQ+AcIBPYCzwO/MBaW3UYy30YwFp7bX+081hljPkAwFo7e7DbIiIicqTo+05ERI53+q4TEZETgb7vRETkeKfvOhERORHo+05ERI53+q7rf4NZiRlr7W7gpiOw3BM6vCwiIiIiIiIiIiIiIiIiIiIiIiIiInI0cw12A0REREREREREREREREREREREREREROTEohCziIiIiIiIiIiIiIiIiIiIiIiIiIiIDCiFmEVERERERERERERERERERERERERERGRAKcQsIiIiIiIiIiIiIiIiIiIiIiIiIiIiA0ohZhERERERERERERERERERERERERERERlQxlo72G0QERERERERERERERERERERERERERGRE4gqMYuIiIiIiIiIiIiIiIiIiIiIiIiIiMiAUohZREREREREREREREREREREREREREREBpRCzCIiIiIiIiIiIiIiIiIiIiIiIiIiIjKgFGIWERERERERERERERERERERERERERGRAaUQs4iIiIiIiIiIiIiIiIiIiIiIiIiIiAwohZhFRERERERERERERERERERERERERERkQCnELCIiIiIiIiIiIiIiIiIiIiIiIiIiIgNKIWYREREREREREREREREREREREREREREZUAoxi4iIiIiIiIiIiIiIiIiIiIiIiIiIyIBSiFlEREREREREREREREREREREREREREQGlELMIiIiIiIiIiIiIiIiIiIiIiIiIiIiMqAUYhYREREREREREREREREREREREREREZEBpRCziIiIiIiIiIiIiIiIiIiIiIiIiIiIDCiFmEVERERERERERERERERERERERERERGRAKcQsIiIiIiIiIiIiIiIiIiIiIiIiIiIiA0ohZhERERERERERERERERERERERERERERlQCjGLiIiIiIiIiIiIiIiIiIiIiIiIiIjIgFKIWURERERERERERERERERERERERERERAaUQswiIiIiIiIiIiIiIiIiIiIiIiIiIiIyoBRiFhERERERERERERERERERERERERERkQGlELOIiIiIiIiIiIiIdMkYs8QYY40xNw52WwaSMWZH9HEvGuy2nKiMMWONMY8aY/YZY8LR5+OBwW7XkaLXnIiIiIiIiIiInGgUYhYRERERERERETmCjDEJxpjPG2P+Y4zZZYxpNMY0GGOKjDH/MsZcZ4zxx7hfa5jt+71YR5fztgugPhDjtgeitx18qTXGrDTG/NIYU3gIj3lEu2UtOpx5jTGfMMb8yRjzrjGm2BjTbIypN8asM8b83hgztptld/nY280zNvq82Oh2HBWdbowxp0W3wdvGmEpjTNAYU2qMeckYc6MxJubx1YMeU28uw7vbRtK/jDEzjDHfP9FC2X1ljPlKdDuNGKT1ZwBLgauAHKAK2A/UDEZ7REREREREREREpP95BrsBIiIiIiIiIiIixytjzIXA3cCQdpMbgAgwInq5DPiFMeZ6a+2rA93GqCBQGf3bANnA9OjlZmPMhdbaNwepbXcDcdG/IzgBxlRgUvTyGWPMTdbav/d1wcaYicArQB6wFTjDWrsrevO3gR+3mz0M1ONsmzOjl08aYy6w1tYetOgwTtiyO+mALzpfSV/bLodlBnA78DrwQDfzbQOagcYBaNPR6CvAcGAJsGMQ1n81kAtsBhZZa/cOQhtERERERERERETkCFIlZhERERERERERkSMgWuX1CZwA8ybgeiDLWptkrU0B0oDLcQKC+cBpg9NSAJZZa4dEL7lAEvAJoBqnnf+MVS16gNwFXIMT+I6z1mbghJoXAu9E/77fGDOmLws1xkzDCbHmARuA09sFmAG8OMHu3wKnAPHW2jQgE/gBTlB5IXDPwcu21u5utz07XYChQGvw+WFrbagvbZeBYa09w1o7wVq7fLDbcoKaHL3+jwLMIiIiIiIiIiIixyeFmEVERERERERERPqZMWY68Gec42/PAjOttQ9Zayta57HW1lhr/22tXQx8HKgbnNZ2Zq1ttNb+DfhSdNIQ4OJBasuXrbV/t9bubA37WmtD0crQ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BJwCtALLRjswERERERERERERERERERERERERERERGVlZSWJ2zm0EHgHmAV/o8fS1QAFws3MuOsqhiYiIiIiIiIiIiIiIiIiIiIiIiIiIyAgz51x2Vmw2H1gKTAXuBd4CTgDeAawDTnbO1Q5x2bcCOOcuG55oxyYzWwHgnDs227GIiIiMFH3fiYjIeKfvOhERmQj0fSciIuOdvutERGQi0PediIiMd/quG36hbK3YObfRzI4DvgecC7wH2A1cB1zrnKvfj2VP6ORlERERERERERERERERERERERERERGRA1nWkpgBnHPbgSuyGYOIiIiIiIiIiIiIiIiIiIiIiIiIiIiMrkC2AxAREREREREREREREREREREREREREZGJRUnMIiIiIiIiIiIiIiIiIiIiIiIiIiIiMqqUxCwiIiIiIiIiIiIiIiIiIiIiIiIiIiKjSknMIiIiIiIiIiIiIiIiIiIiIiIiIiIiMqrMOZftGERERERERERERERERERERERERERERGQCUSVmERERERERERERERERERERERERERERGVVKYhYREREREREREREREREREREREREREZFRpSRmERERERERERERERERERERERERERERGVVKYhYREREREREREREREREREREREREREZFRpSRmERERERERERERERERERERERERERERGVVKYhYREREREREREREREREREREREREREZFRpSRmERERERERERERERERERERERERERERGVVKYhYREREREREREREREREREREREREREZFRpSRmERERERERERERERERERERERERERERGVVKYhYREREREREREREREREREREREREREZFRpSRmERERERERERERERERERERERERERERGVVKYhYREREREREREREREREREREREREREZFRpSRmERERERERERERERERERERERERERERGVVKYhYREREREREREREREREREREREREREZFRpSRmERERERERERERERERERERERERERERGVVKYhYREREREREREREREREREREREREREZFRpSRmERERERERERERERERERERERERERERGVVKYhYREREREREREREREREREREREREREZFRpSRmERERERERERERERERERERERERERERGVVKYhYREREREREREREREREREREREREREZFR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JSPPtIoCplUUDHc1RERERqTIMJXbkY6g9+1N3efv2gd1ERERERERERERERERERERERERERERkX1ouIKYXwuns7MsnxVOl++DuoiIiIiIiIiIiIiIiIiIiIiIiIiIiMg+NFxBzA+H0zebWbc6mFkRcALQBDy1rysmIiIiIiIiIiIiIiIiIiIiIiIiIiIie9ewBDG7+yrgb8BU4Moei68FCoDb3L1xH1dNRERERERERERERERERERERERERERE9rLYMJb9UeAJ4IdmdjqwFDgWOA1YDnxhGOsmIiIiIiIiIiIiIiIiIiIiIiIiIiIie4m5+/AVbjYJ+CpwJjAK2ALcBVzr7jV7sN9fA7j7e4aingcqM3sOwN2PHu66iIiI7C1q70RE5GCntk5EREYCtXciInKwU1snIiIjgdo7ERE52KmtG3rDmYkZd98AXLIX9juig5dFRERERERERERERERERERERERERET2Z5HhroCIiIiIiIiIiIiIiIiIiIiIiIiIiIiMLApiFhERERERERERERERERERERERERERkX1KQcwiIiIiIiIiIiIiIiIiIiIiIiIiIiKyTymIWURERERERERERERERERERERERERERPYpBTGLiIiIiIiIiIiIiIiIiIiIiIiIiIjIPmXuPtx1EBERERERERERERERERERERERERERkRFEmZhFRERERERERERERERERERERERERERkn1IQs4iIiIiIiIiIiIiIiIiIiIiIiIiIiOxTCmIWERERERERERERERERERERERERERGRfUpBzCIiIiIiIiIiIiIiIiIiIiIiIiIiIrJPKYhZRERERERERERERERERERERERERERE9ikFMYuIiIiIiIiIiIiIiIiIiIiIiIiIiMg+pSBmERERERERERERERERERERERERERER2acUxDxMzOxbZvagmW0ws2YzqzazF8zsK2Y2ahD7WWtmnuVvax/bvcHM/hqW22xmL5vZJ80smmX9YjO72sxeNLNdZlZrZq+Y2dfMrHJ3joGIiBz8hqu9M7O4mX3CzG4K265kuO5lAyjrA2b2tJk1hO3dI2Z29mCfu4iIjAwHUltnZieY2bfN7Bkz22FmrWa2xsxuNLOZu3sMRETk4HcgtXcZ9pFjZovD7TYOdDsRERlZDsS2zsxKzOyr4TW+BjOrC9u8n5lZfLDHQERE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LCIiMqxtnZndBFxMEEf5EyBTUO4j7v5IjzorRoXgriXZ9x4AZgInAkcCpUAjsBy4Dfihu1cPYD8PEwQeHwmcABQAuwjeiLcBt3UNRu7g7v9nZqcAXwAuIHhzrSR4Q/yw5zbu/oqZHQl8DngT8GGCN9oGgrsLvunumwZzAEREZEQY1vaOYMiNU3rMe0P416Fb57+7f8bMXiG4q+1DBBlNnge+4+7Zgr1ERGTkOtDauqnh9OjwL5NHgLUDqLOIiIwcB1p7JyIiMlgHXFvn7l81s8XAJwkucCeAVQSZKb/r7q0DqK+IiIwsB1R75+4PmNki4LPhdh8D2oHVBAFq33b3XQOor4iIjBzD2dZNC6cVwJf72PcjXR8oRiWgTMwiIiIiIiIiIiIiIiIiIiIiIiIiIiKyT0WGuwIiIiIiIiIiIiIiIiIiIiIiIiIiIiIysiiIWURERERERERERERERERERERERERERPYpBTGLiIiIiIiIiIiIiIiIiIiIiIiIiIjIPqUgZhEREREREREREREREREREREREREREdmnFMQsIiIiIiIiIiIiIiIiIiIiIiIiIiIi+5SCmEVERERERERERERERERERERERERERGSfUhCziIiIiIiIiIiIiIiIiIiIiIiIiIiI7FMKYhYREREREREREREREREREREREREREZF9SkHMIiIiIiIiIiIiIiIiIiIiIiIiIiIisk8piFlERERERERERERERERERERERERERET2KQUxi4iIiIiIiIiIiIiIiIiIiIiIiIiIHEDM7EIz+5GZ/dPM6szMzexXQ7TvU8P99fc3aU/KiQ1FZUVERERERERERER2h5lNBdYAt7j7xcNaGRERERERERERERGRA8cXgflAA7ARmDuE+14LXJtl2TzgfGCxu2/Yk0KUiVlEREREREREREQOOmb2JjP7npk9aGY7w4wQj/WzzQfN7Gdm9i8zawq3+a/dLP88M7vDzJaZWY2ZNZvZCjP7rZktzLLNI/1ktMjNst2hZnanmW03sxYze83MrjWzvCzr55jZlWb2tJlVmVmDmS01sx+a2ZQM659gZt82s2fMbIeZtZrZGjO70cxmZlh/6gAzdJzUzzF8b5d1L8uwfIGZXWNmj5vZFjNLmtmm8Bgf1de+s5Q3L3xOL3R5nhvM7AEzO9/MLMM21/TzHM/MsM3unJsJM/t/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\\n\",\n            \"text/plain\": [\n              \"<Figure size 1440x432 with 4 Axes>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": [],\n            \"image/png\": {\n              \"width\": 1432,\n              \"height\": 423\n            },\n            \"needs_background\": \"light\"\n          }\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"gM2KwV8gwMNj\"\n      },\n      \"source\": [\n        \"## Contribution scores example\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"o4c2W_MjNBzp\"\n      },\n      \"source\": [\n        \"# @title Compute contribution scores\\n\",\n        \"target_interval = kipoiseq.Interval('chr12', 54_223_589, 54_338_277)  # @param\\n\",\n        \"\\n\",\n        \"sequence_one_hot = one_hot_encode(fasta_extractor.extract(target_interval.resize(SEQUENCE_LENGTH)))\\n\",\n        \"predictions = model.predict_on_batch(sequence_one_hot[np.newaxis])['human'][0]\\n\",\n        \"\\n\",\n        \"target_mask = np.zeros_like(predictions)\\n\",\n        \"for idx in [447, 448, 449]:\\n\",\n        \"  target_mask[idx, 4828] = 1\\n\",\n        \"  target_mask[idx, 5111] = 1\\n\",\n        \"# This will take some time since tf.function needs to get compiled.\\n\",\n        \"contribution_scores = model.contribution_input_grad(sequence_one_hot.astype(np.float32), target_mask).numpy()\\n\",\n        \"pooled_contribution_scores = tf.nn.avg_pool1d(np.abs(contribution_scores)[np.newaxis, :, np.newaxis], 128, 128, 'VALID')[0, :, 0].numpy()[1088:-1088]\"\n      ],\n      \"execution_count\": 39,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 224\n        },\n        \"id\": \"y-s0yQMOXO7x\",\n        \"outputId\": \"a5cc620e-2680-4780-d546-845e9ca02740\"\n      },\n      \"source\": [\n        \"tracks = {'CAGE predictions': predictions[:, 4828],\\n\",\n        \"          'Enformer gradient*input': np.minimum(pooled_contribution_scores, 0.03)}\\n\",\n        \"plot_tracks(tracks, target_interval);\"\n      ],\n      \"execution_count\": 40,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAACzIAAAGeCAYAAAD1t9XUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeZhkaV0n+u+bW23d1d00zY4sjgI6KrZ65XpnxH0bUUcdHRdA74zjOCo66B0VRmUcuTouyIyKjitXwRkQEUWQRWkQFZodaZFGeqG7qpfa11xie+8fcSIrMioyKzOqMrOy6vN5nnwiI872xokTJ87yPb9Taq0BAAAAAAAAAAAAANhKU9vdAAAAAAAAAAAAAADg6iPIDAAAAAAAAAAAAABsOUFmAAAAAAAAAAAAAGDLCTIDAAAAAAAAAAAAAFtOkBkAAAAAAAAAAAAA2HKCzAAAAAAAAAAAAADAlhNkBgAAAAAAAAAAAAC2nCAzAAAAAAAAAAAAALDlBJkBAAAAAAAAAAAAgC0nyAwAAAAAAAAAAAAAbDlBZgAAAAAAAAAAAABgywkyAwAAAAAAAAAAAABbTpAZAAAAAAAAAAAAANhygswAAAAAAFz1SikvKKXUUspLx3Srzd/jt7A9L22m+YKtmiYAAAAAwFYTZAYAAAAAWKdSyt5SyveUUl5bSrmnlDJfSjlbSrmrlPKqUsq3l1L2rGM8Lx4Kxz5/g214RCnleaWUt5RSDpZSFps2fLyU8qellB8spTxqlWG/YGi6F/r7wEbaxfqUUq5vQtMv2O62AAAAAABst5ntbgAAAAAAwE5QSnlGkt9I8oihl88m6SV5fPP3DUn+WynlmbXWt6wyntkk3zr00rOSvHAd0y9JnpfkPyfZPdTpTNOGT2j+npHk50op/7PW+v1rjPJIku4FutN3e/PYvgTjuj7JTzb/v2CN/u5vputzAAAAAACuWCoyAwAAAABcQCnlO5K8Jv0Q8+1JnpnkobXWa2qt+9MPp35jkrcmeVSSz19jdF+Z5KYkb0vy0SSfXEp52jqa8btJfjr9EPNfJPnqJPtrrdfWWq9LsjfJFyd5SfqB22deYHyfU2t9xBp/X7KONl0Vaq1Pbv4ObuE0f6yZ5q9s1TQBAAAAALaaIDMAAAAAwBpKKZ+R5NfTP576+iSfWWt9Wa316KCfWuvJWusf1Vq/MMm/TnJ6jVE+u3n8gyQvH3lttTZ871A/z6u1fmmt9XW11uXp1FoXaq1vqbV+b5InJvmj9b9LAAAAAADYeoLMAAAAAABr++kku5IcTPKttdaFtXqutb4iyYvGdSulPCT9SsqtJH+Yfpg5Sb65lLJrlWH2JnlB8/SPaq0/c6EG11ofrLX+mwv1dymVUt5aSqmllO8opdxQSvmlUsqdpZTFUsqBUspvlFIeucqwL2iGfWkpZaqU8n2llHeVUk40rz91pP9nlFL+pJTyQCmlVUo5VEp5bSnlyy/QxieVUv5X0/9CKeUjpZSfXG3eDw1Xm7/Hr9J9Xynlh0spf1tKOda85ztLKX9aSvm2UsrsYB4luWvMeAd/Lxjq9tLR10amuauU8txSyq2llJPN+7m9lPKiUsojVhnmO5pxvrV5/oxSyi3NfD5TSnlnKeVb1pgPTyil/Fop5aPN9OZLKR9vPvsfK6U8dK35CAAAAAAwama7GwAAAAAAcLkqpTw6yb9onv6PWuvJ9QxXa62rdPqWJHNJ/rTWejzJ8VLKrUk+N8nXpB9uHvX1SQYB0Reut+3b6MYk707yiUkWknSSPDrJdyX5ulLK02ut/7DKsCXJq5N8bZJuRipbN4Hg303ybUMvn0pyU/oB8a8upfxcrfVHzhtxKZ+f5M+T7B0a7gnph8S/PMlbN/g+B+P9lCSvS/L45qVOM+7HNuN/RpK/SXJ3kmNJjuTc5/ngyOjOrHOaNyV5Y5LPbF5aSj8c/8nN33eUUr6q1vrONcbx40l+Kkkv/fm8L/3l8A9KKQ+vtb54pP+b059H1zYvtZOcTfIJzd/Tk7w/yRvW8x4AAAAAABIVmQEAAAAA1vIF6Ydrk+RPL8H4nt08vnzotZePdBvXhiS5v9b6/kvQhs324+mHXZ+R5Jpa6zXpv4e70g8c/+GgQvEYX5/kK5L8hyT7a603JHl4kjub7j+Xfoj5Y0m+qRn/dUn2N8OcTvKfRqsKl1JuSD8kvjfJ+5I8tRnumvTn+2c0w29IU2H7DemHmO9K8nVJ9tVab2ym9c/SD153kqTW+vVJPmcwfK31ESN/v7DOSf9e+iHm48182Fdr3d+M+0NJbkjymjUqJD81yU+m/1ndWGu9Pskjkryq6f4zzXsb9gvpf663Jrm51jrXfD77mum+OMm6gv4AAAAAAAOCzAAAAAAAq3tK87iU5PaLGVEp5SnpBz5PJ3ntUKdXpF99+MtLKQ9fow1/dzHTH+PdpZQH1vj7rgnHuz/JN9Ra/6zW2kuSWuvbknxl+lWDPzXJN68y7DVJnlNr/bVa63wz7KFa66lSyicl+YEkh5N8Ua31D2utZ5t+Ttdafy3Jv2vG8/yR8X5fkoclOZrky2utH2yGa9dafy/Jdye5boL3+qPpV14+kuSf11r/pNbaGhr339Ra/+9a64EJxj1WKeWfpx/2TpJvaeZDt5nme5J8afoB54cnec4qo7kuyU/WWn+61nqiGfbBJM9Kf/7uTr/C9bCnNY8/MByor7XO11rfU2v9j7XWd1z8OwQAAAAAriaCzAAAAAAAq7uxeTxea60XOa5BxeU/rrUuDF6stR5K8uYkM+lXGx41qIx7fLURl1Jet0oYebXAcJI8NP2w62p/+9b5vka9vdb616Mv1lpvz7mKv9+4yrBHk/zOKt2elX517FfUWu9dpZ9XpR86/9RSyiOHXh9M7zdrrUfGDPfyJB9fZZxreVbz+Au11oMTDD+JwXt5T631jaMdm0DyrzdPv2mVcSymX0F5dNiFJINx/tORzqeax0cGAAAAAOASEWQGAAAAANhkpZTpJM9snv7BmF5e3jw+e0y39bgx48PIe9YY5gm11rLG33lB13V66xrd3tY83rxK9/fUWjurdPu85vHZq1WRTnIgyWzT32OTpJQyl34V6OHpr9CE1P9qjXafp5Ty+PTncZK8fiPDXqTBvLtljX7e0jx+cillXCD9w4Nq1mMMAtk3jLw+eI+/V0r52VLK00opswEAAAAAuAiCzAAAAAAAqzvaPN5QSikXMZ4vSfKoJIeS/MWY7q9JMp/k00spnzHS7digDauNvNb6tOEQcs6FUbfDWtMedLtple6H1xh2UAn42qxdSXpw3Htv8/iQJNPN//eto23r9fCh/+/Z4LAXYzDv1mrvgeaxpF95e9TpNYZdbB5HQ8r/T5K/TX/+/0iSdyQ5VUp5Synle0opa4XmAQAAAADGEmQGAAAAAFjdPzSPu5I86SLGM6i0/LAknVJKHf5LP1i6d6Tf0TZ82kVMf6fortFtcDz7P16gkvTg761b0N7ttHsrJ1ZrPZrknyX50iT/I8n7k8wl+cIkL0lyWynlMVvZJgAAAABg5xNkBgAAAABY3duS1Ob/r5lkBKWU/Um+bgODfFspZWbo+Vubx0eVUj5zkjZssUeto9talZdX82Dz+AkbHO5YzgWk19O2jbYnSR63wWEvxmDerTUfBoHimuTIpZpw7fuLWusP1FpvTr/a83enP4+fmOSXLtW0AAAAAICrgyAzAAAAAMAqaq0Hkry+efr9TSj5gkopZejpNyXZk+TeJDes8XdjkqPpV23+iqHhX51zYdTnT/RGttbT19HtfROM9x3N41es2deIWmsryd83Tz9/XD/N5zW22xrjvTvJA83Tr9rAoL2R6W7UYN49fY3hv6h5/Git9ewE01iXWuvxWutvJHneoE2bNS0AAAAA4MokyAwAAAAAsLb/nGQp/Sq3f1BK2b1Wz6WUb0ry3KGXnt08vrrWemKNv2NJ/mRkmNRa55O8oHn6DaWUH7sE72kzPb2U8nmjL5ZSPinJNzZP/3CC8f5e+hWGn1JK+e61eiyl3DDy0mB631VKeciYQf51ksdP0Kbfbx5/qJTy6HUOc2ro/+snmOarmsdPTfK1ox1LKQ9P8u+bp6+cYPznKaVMjVQJH7XQPO66FNMDAAAAAK4egswAAAAAAGuotX4gyfemH6L9F0neX0r59uFAbCnlulLK15dSbknyiiTXNq9/YpJ/1vT26nVMbtDPM4bDuLXWX03y/zVP/99SyptLKf+ilHLtUBtmSymfXUr570kePtGbvTROJXl1KeWrBhWDSyn/PMmfpx90/ftMELCttX44yS81T19SSvmZUspjBt1LKdeWUr6slPKynB+U/tUkh5I8NMkbSymf3gwzW0r59iS/meTkRtuU5L8lOdiM9+2llK8ppcwNjfvppZT/PdzOWuuJJPc1T79zoxOstb49yRuap79TSvnGUsp0M83PSvKm9Ct8P5jkv0/wnsbZn+RjpZTnl1I+bWh6U6WUL07ywqa/N16i6QEAAAAAV4m1KigAAAAAAJCk1vrbpZSjSf5nkienqcRbSjmTfsD52qHeP57kLc3/z2oeH0zy1+uY1JvTDwLvT79K8K8NdfvOJP+YfoXoL2n+Uko5naSd5Lok002/7SS/nOQ1a0zr3aWU7lqNqbU+Yh1tHvVfk3xPktclWWimcU3T7XCSb6q1ticYb5L8pyR7mvH/aJIfLaWcSv8z2J+kNP29dXigWuvxplL2nyf57CQfLKWcTLI7/XD1O5K8rRnnutVaj5ZSvjLJ65M8If2K2u2mTdfl3DH40fH+VpKfSPKLpZSfSnKkef3FtdYXr2PSz0o/sPzU9EPbi6WUds4th8eT/Mta69GNvJ8LeFySn27+2s1yN7zM3ZmVlcgBAAAAAC5IRWYAAAAAgHWotb4myRPTr878+iQH0g+qziS5O8mrknxrkifVWv+qqUY8CDL/Sa21t45ptJL8WfP02SPdaq31hU0b/nOSW5Lcn34Qd3f6lYFfm36Y9DG11uc01X9X89D0Kzev9TeJo0n+jyQvTj/APZd+BeLfTPLUprLyRGqt3Vrrf0i/yvXL0g+ND97/PUn+NMn3JfnGMcO+Lclnpl8x+3Az3N1JXpDki5IsTdimDyX51PQ/k/ckWUiyr2nPa5J8S/rLyrCfSvIjSf4u/fD145q/69c5zcNJ/s8kP9xMs53+fP7H9Of7p9Za3zHJ+1nFqSRf3Yz7XenPv2uTnE3y7iTPT/+zHX2fAAAAAABrKrXW7W4DAAAAAAA7XCnlrUmenuQ7a60v3d7WAAAAAACwE6jIDAAAAAAAAAAAAABsOUFmAAAAAAAAAAAAAGDLCTIDAAAAAAAAAAAAAFtOkBkAAAAAAAAAAAAA2HKl1rrdbQAAAAAAAAAAAAAArjIqMgMAAAAAAAAAAAAAW06QGQAAAAAAAAAAAADYcoLMAAAAAAAAAAAAAMCWE2QGAAAAAAAAAAAAALacIDMAAAAAAAAAAAAAsOUEmS+glPLyUsrLt7sdAAAAAAAAAAAAAHAlmdnuBuwAT7755ptvTvKt290QAAAAAAAAAAAAALgMlUkGUpEZAAAAAAAAAAAAANhygswAAAAAAAAAAAAAwJYTZAYAAAAAAAAAAAAAtpwgMwAAAAAAAAAAAACw5QSZAQAAAAC4rLW7ve1uAgAAAAAAm0CQGQAAAACAy9rZpc52NwEAAAAAgE0gyAwAAAAAwGXt9KIgMwAAAADAlUiQGQAAAACAy9oZFZkBAAAAAK5IgswAAAAAAGyJWutEw50VZAYAAAAAuCIJMgMAAAAAsCWWOr2JhlORGQAAAADgyiTIDAAAAADAlpg0kCzIDAAAABvT6U52MTEAbDVBZgAAAAAAtsSZxQmDzBMOBwAAAFers0vd7W4CAKyLIDMAAAAAAFvi9KRBZhWZAQAAYENOLba3uwkAsC6CzAAAAAAAbInTS5OdRBVkBgAAgI2xLw3ATiHIDAAAAADAljgzaUXmCYcDAACAq5UgMwA7hSAzAAAAAABb4vSEgeSzLSdfAQAAYCNcFAzATiHIDAAAAADApuv16kSB5G6vZr7V3YQWAQAAwJXr1GJ7u5sAAOsiyAwAAAAAwKZrdXtpdXobH64z2XAAAABwNZv0rkgAsNUEmQEAAAAA2HRLnV6WBJkBAABgS5xZEmQGYGcQZAYAAAAAYNO1JgwyL3W7aXUFmQEAAGAjzqjIDMAOIcgMAAAAAMCma3Unq6zc7lYVmQEAAGCDVGQGYKcQZAYAAAAAYNO1OpMFmVudnorMAAAAsEGnVWQGYIcQZAYAAAAAYNP1A8ndyYZTkRkAAAA25PRiO7XW7W4GAFyQIDMAAAAAAJvuoioyCzIDAADAhiy0u+n0BJkBuPwJMgMAAAAAsOla3W6WJgkyd3tpdQWZAQAAYCNcGAzATiHIDAAAAADApltqT16Rue3EKwAAAGxIq9ub6IJiANhqgswAAAAAAGy6pe6EQWYVmQEAAGDDVGQGYKcQZAYAAAAAYNO1OpMFklsdFaQAAABgowSZAdgpBJkBAAAAANh0kwaS2xNWcgYAAICr2VKnl1a3u93NAIALEmQGAAAAAGDTTVoJalDJuda6Ca0CAACAK5M7HAGwUwgyAwAAAACw6VrdyU6gtjq91Jp0eoLMAAAAsF4tdzgCYIcQZAYAAAAAYNP1KzJv/Ja2S93+Sdd218lXAAAAWC8VmQHYKQSZAQAAAADYdK1OL60Jwsjt5qSrKlIAAACwfv0Liu1LA3D5E2QGAAAAAGDTTXpL20H42clXAAAAWJ9er068Hw4AW02QGQAAAACATbfU7k4WZG6GcTtcAAAAWJ/li4InuDMSAGw1QWYAAAAAADbdUrc3URh5EGR28hUAAADWx92NANhJNi3IXEq5sZTyb0spf1xK+VgpZaGUcrKU8tellH9TSpka6f/xpZS6xt//XmNazy6lvKuUcqaZxltLKV+9We8NAAAAAICNaXUmu6Xt4ORrW5AZAAAA1mX5omBBZgB2gJlNHPe/SvJrSe5PckuSe5I8PMnXJ/mtJF9ZSvlXtdY6MtwHk7xmzPhuGzeRUsovJPmhJAeS/GaSuST/OslrSynfX2v9lUvwXgAAAAAAuAitTi+dXk2vVzM1VTY03PAjAAAAsLbBPvRSp7vNLQGAC9vMIPNHk3xNktfVWpePMJdSnpfkXUm+If1Q8x+NDPeBWusL1jOBUsrnpR9iviPJ59Rajzev/3yS9yb5hVLKn9Va7764twIAAAAAwMVYDiR3e9k9Nb3+4dwOFwAAADbkXJDZvjQAl7+pzRpxrfUttdbXDoeYm9cfSPLrzdMvuMjJ/Pvm8YWDEHMzjbuT/GqSXUm+8yKnAQAAAADARRoEkjd6ElVFZgAAANiYpaGLiQHgcrdpQeYLaDePnTHdHlVK+e5SyvOax09fYzxf1Dy+YUy3Px/pBwAAAACAbTJpIHm5ipSTrwAAALAuLgoGYCeZ2eoJllJmkjyreTougPylzd/wMG9N8uxa6z1Dr+1L8ugkZ2qt948Zzz82j5+8zna9d5VOT17P8AAAAAAArO7cbW27Gxqu3XXyFQAAADai1e3ve9uXBmAn2I6KzD+b5J8meX2t9Y1Dr88n+a9JPivJDc3f05PckuQLkvxlE14euK55PLnKdAavX39pmg0AAAAAwKRaEwaSB/23VWQGAACAdVlSkRmAHWRLKzKXUp6T5IeSfCTJM4e71VoPJfmJkUH+qpTyZUn+OsnnJvm3Sf77ZrSt1vpZ415vKjXfvBnTBAAAAAC4WiyfRN1gIHnSADQAAABcrVoT7oMDwHbYsorMpZTvSz+E/OEkX1hrPbae4WqtnSS/1Tz9/KFOg4rL12W8wesnNthUAAAAAAAusUmrQakiBQAAABsz2JdeatuXBuDytyVB5lLKDyb55SS3pR9ifmCDozjcPO4bvFBrPZvkYJJrSimPHDPMJzWPH93gtAAAAAAAuMRaEwaS211VpAAAAGAjVGQGYCfZ9CBzKeVHkvxSkg+kH2I+NMFontY83jny+luax68YM8xXjvQDAAAAAMA2aXW6Sc5VhVr/cCoyAwAAwEbYlwZgJ9nUIHMp5ceT/GyS9yb54lrrkTX6vbmUcl57SilfnOQ/Nk9fNtL515vH55dSbhga5vFJvjfJUpLfnbT9AAAAAABcGoMqUBs9iaqKFAAAAGzMYB96oxcTA8B2mNmsEZdSnp3kp5J0k7w9yXNKKaO93V1rfWnz/4uSfFIp5W+THGhe+/QkX9T8/+O11r8dHrjW+rellBcleW6SvyulvCrJXJJvTvKQJN9fa737Ur4vAAAAAAA2bhBI3nBF5gkD0AAAAHC1clEwADvJpgWZkzyheZxO8oOr9PO2JC9t/v/9JP8yyeck+coks0keTPLKJL9Sa337uBHUWn+olPKh9Csw/7skvSTvS/LztdY/u/i3AQAAAADAxZr0JGrb7XABAABgQ5Y63SRJq3kEgMvZpgWZa60vSPKCDfT/20l+e8JpvTTnAtEAAAAAAFxmWhMGklVkBgAAgI2Z9K5IALAdpra7AQAAAAAAXPkGgeSlDVaDWnI7XAAAANiQSS8mBoDtIMgMAAAAAMCm6vVq2t2aZIKKzE6+AgAAwIYsubsRADuIIDMAAAAAAJtquJryRk+itrsqMgMAAMBGtNzdCIAdRJAZAAAAAIBNtdSZLMjc6fbSqxsfDgAAAK5m7m4EwE4iyAwAAAAAwKYaPnG6kWpQF1PJGQAAAK5WS4LMAOwggswAAAAAAGyqSQPJkwagAQAA4GqmIjMAO4kgMwAAAAAAm2r4xOnSRoLMKjIDAADAhg32oTeyDw4A20WQGQAAAACATTVxkHmo37aKzAAAALAugwuDW91eaq3b3BoAWJsgMwAAAAAAm2o4kLyRysqTDgcAO9nJ+fZ2NwEA2OFW7E+7MBiAy5wgMwAAAAAAm6rV7Q79v4Egc3eySs4AsJO9++5j290EAGCHW+oM7YfbnwbgMifIDAAAAADAplpaUVm5u0afK6kgBcDVZr7VyYcOntzuZgAAO5w7HAGwkwgyAwAAAACwqYaDzBuprNzuOvEKwNXl4PGF3HdiYbubAQDscEsuDAZgBxFkBgAAAABgU01aCWpJBSkArjIHTizkvpOCzADAxRkOLy+17U8DcHkTZAYAAAAAYFNNGmQe7retghQAV4EDxxdy34nF7W4GALDDtVRkBmAHEWQGAAAAAGBTTXoCddIANADsVAePL+TgiYXUWre7KQDADmZ/GoCdRJAZAAAAAIBNNRxe3sgJ1Hb3XIhLBSkArgYHjs+n1enlyJnWdjcFANjBlob2vZcEmQG4zAkyAwAAAACwqSatBNXqdpf/b3drej3VKQG4sh08sZAkua95BACYhIrMAOwkgswAAAAAAGyq1oSVoEZPtqrKDMCV7sBxQWYA4OKtuDOSfWkALnOCzAAAAAAAbKrhk6YXE2RuO/kKwBVssd3N4dNLSc5VZgYA2Khur6Y7dEejpXZ3jb4BYPsJMgMAAAAAsKmWVtzSdv0nUFvduvK52+ECcAUbrsJ834nFbWwJALCTubsRADuNIDMAAAAAAJtqaSi8vJETqE6+AnA1ObgiyKwiMwAwmaWRC4hdFAzA5U6QGQAAAACATdVaUZG5l1rrGn2PH27ccwC4khw4PhRkPinIDABMxr40ADuNIDMAAAAAAJtq+KRpryad3jqDzF1VpAC4ehw8riIzAHDxltzdCIAdRpAZAAAAAIBNNWk1qHZ3ZeB59GQsAFxJDhyfX/7/yJlWFtvdNfoGABhvNLjsomAALneCzAAAAAAAbKpJT6KO9tdWRQqAK9jBkSrMqjIDAJMY3Zd2UTAAlztBZgAAAAAANtV5FZnXGUg+73a4Tr4CcAU7cHw0yLy4TS0BAHay0X1pQWYALneCzAAAAAAAbKrzgswTVmRebwAaAHaaVqeXB0+tDC6ryAwATGLSfXAA2C6CzAAAAAAAbKrRAPJSp7uu4dpdJ18BuDo8cHIxvbrytYOCzADABASZAdhpBJkBAAAAANhUk97W1slXAK4WB07Mn/eaiswAwCRa3e6azwHgciPIDAAAAADAphoNLq83kDxayXn0OQBcKQ4ePz+0fN9JQWYAYONcFAzATiPIDAAAAADAppr0JKqTrwBcLQ6MCzKfWNyGlgAAO92kFxMDwHYRZAYAAAAAYFO1OqO3tZ0wyKwiMwBXqPvHVF8+eGIhtdZtaA0AsJONBplHnwPA5UaQGQAAAACATTUaQF53ReYJhwOAnebBU0vnvdbq9HLkTGsbWgMA7GTubgTATiPIDAAAAADApho9abrealBOvgJwtTh8+vwgc9KvygwAsBHubgTATiPIDAAAAADAppo0kKwiMwBXi0OrBJkPHJ/f4pYAADvd6L70ei8mBoDtIsgMAAAAAMCmmjjIPNJfWxUpAK5AnW4vR8+uUpH5uIrMAMDGuLsRADuNIDMAAAAAAJvqvGpQ6wwkjwaX1zscAOwkR8+2Uuv4bgdPCDIDABuz1OmueC7IDMDlTpAZAAAAAIBN0+vVtLsr01mTVmR28hWAK9GhU+OrMScqMgMAGze67zwabAaAy40gMwAAAAAAm2a0GnOy/pOogswAXA0OnV5ctdsBQWYAYIPO25d2dyMALnOCzAAAAAAAbJqlMeHj9QaSl7qCzABc+Q6dXqMi84mF1FpX7Q4AMGo0uGxfGoDLnSAzAAAAAACbZtwJ0/WcRK21pj168lUVKQCuQIdOrR5kPrPUyamFzha2BgDY6UYvKBZkBuByJ8gMAAAAAMCmGRc+Xs9J1E6vZrQA5WiwGYC+bk/F3p3s8JnFNbsfODG/RS0BAK4EgswA7DSCzAAAAAAAbJqxFZnXEUietJIzwNXoV2/5WB48tXYYlsvXWhWZk+TA8YUtagkAcCUY3Xd2dyMALneCzAAAAAAAbJpJA8nj+hmtKgVA3613Hc33/8H70xFS2ZEOnV47yHxQkBkA2IDR/el2t6bnDh4AXMYEmQEAAAAA2DSTBpLbY8J4KjIDjHfn4bN5193H8gtv+uh2N4UJHL5QkPmEIDMAsH6T3hkJABiyNxgAACAASURBVLaLIDMAAAAAAJum1e2e/9o6Asnjws5OvAKc78xSJ/efXEyS/Prb7sg77ji6zS1iI2qtFwwyHzg+v0WtAQCuBOP2nd3hCIDLmSAzAAAAAACbZtzJ0vWcQB134nVclWaAq91dh8+ueP62jx7eppYwiRPz7QteqKMiMwCwEWMrMgsyA3AZE2QGAAAAAGDTTHpLWydeAdbnziNnVjy/7eDJbWoJkzh0gWrMSXLwuCAzALB+S50xd0ZyYTAAlzFBZgAAAAAANs246sutMSdVR42rvizIDFwpLmWF+TsOjQSZ7zuZWuslGz+b69DpxQv2c3y+nbNLnS1oDQBwJXBhMAA7jSAzAAAAAACbZtzJ0nHh5vUM58QrcKX40w/cl84lCjPfceTsiucn5ts5oILvjnHo1IUrMifJwRM+UwBgfexPA7DTCDIDAAAAALBpJj2BOnY4t8IFrhB/8Q8P5u/vO3VJxjVakTlJbjt48pKMm813+Mw6g8zC6QDAOo3bd15ax52RAGC7CDIDAADAFnjnnUe3uwkAsC3GnUBdT5B5aeyJV0FmYOertebWu47lHZdgH6HXq7lrpCJzktx2nyDzTrHeiswHVGQGANZp3L6ziswAXM4EmQEAAGCTtbu9/NArP5iT8+3tbgoAbLlJKyuPG66tIjNwkY6eWUq3V7e1Df946EyOnW1d8GLHe4/NX3BcB08sjA2qfOjgpan2zOY7dHpxXf2pyAwArJcgMwA7jSAzAAAAbLK//IdDOXhiIbfcfmi7mwIAW25skHkdJ1DHhZadeAUu1i+++aP5q48e3tY2DALM777rWDqrXKBxz9H5fOtvvTOnF9e+GPKOw2fGvn7bwZOpdXsD26zPodPrrMh8/MLBdgCAWuvYfedxdz0CgMuFIDMAAABsspff+vEkyZs//OA2twQAtt646svrCSSP66dXs2roD+BC7jpyNq949735/Xd+fFvbMQgyn211c9t94ysn//H7D+beYwv5L6/98JrjuuPw2bGvHzvbyn0n11fpl+11eJ1B5oMnVGQGAC6s3R1/MZsLgwG4nF0xQeZSymNKKb9TSrmvlLJUSrm7lPLiUsoN2902AAAArl53Hzmbt//jkSTJ2z56OEud7ja3CAC21rhb2o57bdRqJ1nHBaMB1uNFb/5our2aW24/lHuPbU9121pr3nnnseXn77jj6Nh+/vj9B5Ikr3rvgfz5h+5fdXx3rlKROelXZebyd+jU+gLnH3vwTE7Or12hGwBgtX1mQWYALmdXRJC5lPKJSd6b5DuTvCvJLyW5M8kPJHlHKeXGbWweAJfQ++85nr9ugkAAADvBH7zrnuX/zyx1VoQWAOBqMO5k6boqMl/hJ18fPLWYU4sCabBV/v6+k3ntB+9LktSavOzW7anK/I+HzuTY2dby80F15mHvu+dE7j56Lmj9Y3/8odx/cnw13juugCBzr1fzi2+6/aqsuH92qZOzrfVd7Hp6qZOffcNHNrlFAMBOt+pFwVfIvjQAV6YrIsic5CVJHpbkObXWr6u1/mit9YvSDzQ/KckLt7V1AFwS861OnvvKD+Z7XvbefOSB8bdcBAC4nCy2u/nD99y74rU3f/iBbWoNAGyPcXcjaHV7qXX87W6X+7mCKzKfXmzn2b/zrvy733tPFtsbu1tDrTXd3trzDlip1pqff+PtK1575bvv3fD371IYDS6/5+5jaY+s1wbVmAdOzLfz71/2vrHr0zsPn111Wh/aIUHm33z7nfnlt3wsL3rzR7e7KVvu0OmlDfX/v951T951l4tjAYDVrbYvvZ47IwHAdtnxQeamGvOXJbk7ya+OdP7JJGeTPLOUsm+LmwbAJfbC1/1D7jpyNqeXOvnO3313Hji5vlvuwWaqtebkfDv3Hps/76QTAJtjsd3N77/z47nryOon7C8HB47P57t+7z05PnLr37/48KELBrcAYCc6udAeu1+02knUv/nY+VVIVww3QUXmOw6fyY+9+u8u6wugW51evudl78tHHjidd955LM995QfWHUxebHfzg6/4QL7mV/4677vn+Ca3FK4MB08s5Dtf+u689fbDK14/Pt/O6/7u/i1vz2iQ+Wyru6Jy8lKnm9d+8Px2ffDeE/mJ1/z9in2JU4vtNYOwtx08ednve9x28GR+4U39kPlL3npHbrn90Da3aGsdOrXxY9w/9uq/Ww61n1nq5A233T825A4AXJ1W2y5o2V4A4DI2s90NuAS+sHl8U611xRHsWuvpUsrfpB90flqSv1xtJKWU967S6cmXpJUAE6i15oFTi/n7g6dy230nc9vBk9k1M52vfeqj8gVPeljmZrbvepRer2ax081iu5dTC+0cn2/l9GInN127K4+5YU+u3T2bXq/m9FIn861OWp1eWp1eSim5dvdMrtk1k6lS0u710u3W7N01nV0z06tO75aPHMrLbz13W/b7Ty7mmb99a/6vf/LQLDXjnpsp2TUznd2z05meSqZKye7Z6Tzuxr15/I37cv3e2Sy0ullod3PkzFIOHl/IwROLmZkquX7vbK7fO7f83nbNTuWzHndDHnPD3rHtObPUyYn5Vrq9mk6vZmaqZG5mKjNTU5kq/X5q+reprOmfLCgpmSr9dk2VkqmpZL7VXZ53+3fP5mHX7sp1e2ZzfL6Vw2eWstju5bE37MlD9s2llHLBz2Wh1c3Rs0s5u9TNDftm85C9c5mZnkqtNUudXkpJ5qanLjiubq/myJmlLLS6Wer0stTpLs/n04udHDvbyvH5VkpJ9s5OZ++umezfPZvr987m2t3nNi9q7f/1as18qz/fj5xZSkly3d7ZXLdnNvvmZrJv10z2zE2n061pdXrp1prr9szm+j2zmZuZyunFTk4tttPq9DI7PZXpqbJiPi+0ujm92Mlip5uH7J3LTdfuyg175zI30+/37FIndx05mzsOn8mZpU7mpqcyNzOVbq8OLT9T2TM7ndnpqbS7/dc6vZrZ6ZLZ6alMNROstebA8YV86MDJ3HbfyTxwcjGd5oTz9FTJJzxkbz7lUfvz1Z/2yHzhkx+W3bOrL9dceodPL+XgiYU85ZHXrrlO4cp177H5vOzWj+dvP3Y0rU4v7W4vn/HY6/Otn/sJ+ezH3bCudSmXtw/eeyLPfeUHckdTdexzn/CQfMPNj8kXPOmmPGz/7m1uXd/ZpU5e9d4D+W9v+Ejmx9wi+IFTi/nQwZP59Mdcvw2tA4CLV2tNu1tTSlKSvOfjx/PyW+/JG267PzNTU3nqY6/PUz/h+ty4by7X7JrJxw6dGTueb//tW/O1T31Unv9VTxn7O77YHh9Y/v7/9f489bHX51MeuT+Pvn5P9u6aya6Zqfzhew7k995xdzq9mle990B+8Es+Od/9+U/MzPT21/OotebkQjtHzrTykls+lr/+2JHlbq//0AO5Ztff5es+89G5fs9crts7m31z/eMbu2bO7cMfPLGQ7/799+S2g/2Q9te/5G/zzZ/92HzNUx+Vpzxyfx6yb27i9nV7Ne+++1hu+cihfNpjrssXPflh2Tu3eacPFptjM0fPtNLp9TIz1d9Pf9T1e3LdntlVh6u1rtimr7XmxHw79x6fz11Hzua+E4v5tEdfl89+/A32x7dYp9tbPjbT3xfrryOmSsk1u2by0GvWd2xrcMxxvtXNYrubbq9fgfzMUicfPzqfe47NZ256Kp/08GvySQ+/Nr3mGNbx+VZK+sfnZptjYb2afPj+U3nRm27P2THb5Uny4r/8aI7Pt/J5n/jQPPkR1y4f/7mUaq2pNZmaKqm15tY7z6+m+447j+YzP+GGJMktHzmckwvt8/pJkle85958+mOvy7d97uOSrF2NOUmOnGnl/feeyKc8cv+Wfyd6zXHTtY5hL7S6ec7/fn/a3XNh6+e+4gP5g+96Wm7YO5epkuzb1T92eKnNtzr9Y39TU5mdLhv+rTg5387Hj53N7PRUrm+Oc+6emd7wMnT4zMYqMifJHYfP5ufecHvmZqby8nd+PKcWO3nCQ/flJ57xKfnCJz1sw+PbiVqdXu4+ejZHz7RyarGdxXY31+6eyXV75pY/j/27Z7f1HMql1u728sa/fyCvePe9+eSHX5tv/KzH5CmP3L/dzQLgMtPr1dxzbH5styvh7kYAXLnK5X4l9oWUUn4+yQ8n+eFa6y+O6f4rSb43yX+otf7aGuNZNch88803733ve1frzJWq26vpDX0/SrJ8oHX4MNRax177AcbxRgdb7zdxMFw/IDnUvlJW7TZ2PEPvZT1tHO5ncBB4EM4chDLHvadBv73mYO1gfvVPdJXlE16j76GUc+HHwbSHP4Ph91fTvw3KfKuTxVZ/43tqKplpDkDOzkxldmpq3dM+N4/6j73aXx5q6orhRk+ajBp9ZXhag/4HQddzw/RDlYvtbs4sdnL7A6dz9GzrvHEnyfV7Z/P4G/dl79x09sxNp9b0Q6Dd/vBLnW4WWr2cWerk7FIn3Vqzf/ds9u+Zye7Z6eX3MDNVsmtmavmAXv/99rLY7o9nsd0PsbY6vbS6vXS6NZ1eb8XB5XH2zk1nsd1b8T26kL1z07l29+zy9Hu15iH75vLQa3bl7qNnc2J+/AH8zfSYG/bkUx65P7tmpjM7U3JqoZOPPHAqB08sZLN+QgfL/7Brds1k/56ZzLe6WWhOvAxOaPZq/yDmYNkZ1g9zT634LGanS/bOzWT/ntnc0BzU3TUznZnpklqTe471T/5tx601N8NUKampm/Z5reXa3TP59Mdcn33N93R26IRIKcl0KZleDkivXG8O2jxYF3ZrTa9XMzVVMjfdPym3HOau6Xev597nauu65Pz1+7h12GC9uJHM5+A9jPv9rCPr86nhdeiYca027dU+x8VONx+450TubKqz7prphyee8NCVN+UY976G5/3oenkw/wa/ZSvHdf48Hp7O8PsY9/s17r2tmHdNW3vNMjGuPb1az10cUVb+Ng2/z149/7fz3Hs/t9yM/vYOltHBuAfbDcOf5/AFGwNTpWS6lNT010+DqnyzY5bd3tAyP7xNUUb66dZz2x0rt3nOTffBU4t5+z8eWfW35xNvuiaPuG53U+2uZtdM/7s5OJk7CEXMTPX/ejVZaPdPntea5ROby/Ok+fzPfTYrl4Spcu6z6vRqpkr/goeZqanzlplRg+/S6FtZnl7O3/4bvIcLGf4edJpQwHAFwEHYYPA4PL3z2tksC4N5vtp3YnjaY18fHueYaQxen2918+cfun/5ApKV406e8sj9/fBBKSs+k5r+e2x3azrd3vKFSJ1uPySx1PxOXrN7Jtfumsnuuemh5b8sj390eS8p6fZqTiy0cuxs/+/Imf4FRRfyaY++Lk+8ad/yNEbXS8vfjeaxlGSm6bf/vappd3sr1hFz01OZm57K1FR/2UtNylQyOzWVmelz72X4OzyY/8PLxcrt05w3zPC6Y/D/8Hxa8bk0y8Ty+mVk23d4X2Fmqj/Ph/ufaj6H6aF5NPjdG+yzDdYdvVqz1O5lsdNNSbJrdjq7Z/sXmg3eZ825bfvh9l3oOzk8fwb7B72mDd1aU3v9fZDhZWY1w/OgV/vLYbvXX0/umpnKrpnpFeuP4XXzdCmZme7Pj+F5MLyeH16mxs3/4e/4+euQlb8Lg36nV1lGx82fc+NZ+f0dt3oaXqf158fK9zx431PNunlcu8etJwfbGqO/WeM+i8F02t3av3iv3b/4b7CtPdPsSw62KQfD9dchvfRqln8nB78PK7ZzRrcrmm3A4e/98DbU6Gdw7rVzpoY+w3Hzdfh9nZv2uc9x9LNczeD7d67fc/OyV2t6vf53sda6Ytkf3Z5Izn0mq23fdWt/fnZ6NSXJzPTU8jph8Dg83tH5NNrmqTHL4mrbeTVZ8T0c3kYf/t4M/+6Ptn/5/2a91u321w2D9z1YP5xbn43fZhse33C7l5eDoXmw1nJwbhwr13WrWW2ZGf6u9Zp13UK7mwPH53Pg+ELOLHVWH+kGXbNrJk+8aV/2zE5nbmYqR8+2cvD4wqpBvo145HW7s3/P7PL8Hyy3SbNvNdO/eHWwn9Xq9DLf7mSp3cu+XTP9C3B3TS//xiy1e+n0+strr3fuuz3Y1mg32xqDAN9Sp5eFdjcLrc4Fj6WMMzNVsn9Pf9/92NnWmvPk4ft354a9s9k929/GHb4AuNO0rZRk39xM9u6azuzU4FhQzfvuOZEHh6qC7pmdzuc+8SG5ZtdMpptt4xPz/e2dhXY3c9NTmZmeWrGPMDs9ld2zU5mbnl6eL8O/Ea1OLw+eWsoDpxZzao33ceO+uTz2IXuze7b/mfRqv2LpA6cWs9DqZn8TTmt3ezl8emnsyfg9s9P5jMdelz1zM5mdKucFCwffz8H8GWcwxGB/e8VObc5taw6297vdmunpktnp/rJV0l/RLG9HDv3G9dcR5343Br/rnd5g+Ux6zXfubKu/PA62C9u9XhabC/Wnp/rHePbNTS/vqwzWnYPtv063rjjWPVVKZmdK9sz294cG21GD7bHZmanl/aHBvsLggu8kmZvpf18WO90cPdNfJk4stHN6sb3m78r1e2fzTx52TW66ZldmpqYyPV2y2O5fmH5qoZ2Tzd/pxc6GjideSvv3zOaR1+3Ojfvmcv3eueb3ri7vNw0+n9npc9vXJUlK0u7W5lhqP4R9ZqnTL6jQFAno1f7F8nMzU6vuL1y3ZzY3Xbsrpxc7K76Po2amSm7YN5da+9X2Ti9eeH1cSnLTNbua9cRcrt/XFKFY7OTMUn+eD34vhj/3+Va3X6Si2+zTNstrq9M/Trx7bjrX75nN/j2zy8UAau1fvPlgc/H/Y27Ykyc8dF9uvGZu+XtzeqmdI6dbue/EQh5YR0XiwXrhxmvmsqdZx9XaD+O0Or3led/q9rJrZjp75/rbcoNzA0n/AorFTjdHTrdy7/H5HBs57r5v13T2757NNbv6x893zU5lqpT+PFjqh55nmvd45PTS2OP2pWT5t2zwfZ+eKsuFHHY1RReGj40cOr10Se82NHxx/1Qp2TM3nT2z08uFJhbb3cxOT+Xa3ecC4r1mv2ZwfKlX+0HvhVZ3OYw+Nz3V3z6e7p93GWz/TU+NO7dy/v5BZ3nfZcz+fPoFTwbrq4GpkuX1RR3ad7r32ELuOHRmXWGs6/bM5jE37Gl+V6b7y0mnl5nmGPnumanzjlOOa+PK450rzxMNfgtXvqfBvDi3TTpYFw+2ZVeMa8xxpcF0B9vLt955NPeP3KXyiTfty66Z6bSa9czu2f7yv6dZhnfNTC/vZw9++wa/FaPHAlaz1ip5+JjBakaPBa01veV97Jrl5fFC+9gZGd/o/tNgmuOGGd32XnsaZcW41tp+GP7c1zoGM9r+sft3a7RpsG2wsp3n739d6Gd1HbP4os6vrLYfNTzfL7Qsjj0/fAne1+i4xy0/Sc5bp63HYBtx+Ljw8Pnq1cZz7nzQueMyw9+Fccvr6PmIgdH5POh3vd/7cd+ltdZ367XafO53O3//ffj8xPJ01zm9lfvsa8+7la+vbOu4c1wrjrmNDp/zv4fDx/KGDZ/jGR3P8PGPbq8un6/v79v158lg22JmuuTI6aV86ODJVbcPn/SIa/PEh+5bXnfMTJVMT587n1Ob7bzBNsPczFSuaS4qm5kqay4/vZp0ev394cF6fFx/g/k22Mfu1bq8bzIzNXXecehz8+n85WB5PmX8eny1Y94r231umVt5XKT/2zx6/Gnc6+e+q+eWp0GbRs/5Dv/uj86f1Y53jfZ/3vGakXaMjmv4OPpgG250fg5Pcr2/68PLwnAGZi2j38nh7cPBPvK4ddqFRr3WNslom8+9vnrbskp/62nHWschB20ZnFsYdFtre2dlm8t5693R7Zlx66rh9g/OJwwv78PLy6A9w9uno2u51XJTo0bPXXNVmeiDvxKCzL+R5LuSfFet9bfGdH9hkucleV6t9WcmGP97b7755psFmQEAAAAAAAAAAABgrImCzFfO/XQAAAAAAAAAAAAAgB3jSggyn2wer1ul++D1E1vQFgAAAAAAAAAAAABgHa6EIPPtzeMnr9L9k5rHj25BWwAAAAAAAAAAAACAdbgSgsy3NI9fVkpZ8X5KKdcm+b+SzCd551Y3DAAAAAAAAAAAAAAYb2a7G3Cxaq13lFLelOTLknxvkl8e6vxfkuxL8j9rrWcnnMRH3ve+930k+f/Zu+8wV/LCzPfvb2bIAzMkA75kTPLCGhNsX+KMMdFrY7BZe5cHPOza3l3DBS5cG5xgcMDsmiXaLAYWxsCsgYeBYTAwgCeHcyafM3NSn9Ddp3NQzvl3/6hSt7qkUmiVVFLp+3meftSSSlU/lbL01lt6y3AjDYcx5i5Jsta+IOyxAAAQFF7fAABRxWscACCKeH0DAEQRr28AgKjiNQ4AEEW8vk22qQ8yu/5Q0q2SPm2MeaWk45J+UdLFkk5K+rP9zthaO5UBZgAAAAAAAAAAAAAAAAAAAGCSnRP2AIJgrT0j6YWSLpMTYH6fpKdJ+pSkX7LWxsMbHQAAAAAAAAAAAAAAAAAAAACvqDQyy1q7LOntYY8DAAAAAAAAAAAAAAAAAAAAQG+RaGQGAAAAAAAAAAAAAAAAAAAAMF0IMgMAAAAAAAAAAAAAAAAAAAAYO4LMAAAAAAAAAAAAAAAAAAAAAMbOWGvDHgMAAAAAAAAAAAAAAAAAAACAGUMjMwAAAAAAAAAAAAAAAAAAAICxI8gMAAAAAAAAAAAAAAAAAAAAYOwIMgMAAAAAAAAAAAAAAAAAAAAYO4LMAAAAAAAAAAAAAAAAAAAAAMaOIDMAAAAAAAAAAAAAAAAAAACAsSPIDAAAAAAAAAAAAAAAAAAAAGDsCDIDAAAAAAAAAAAAAAAAAAAAGDuCzAAAAAAAAAAAAAAAAAAAAADGjiAzAAAAAAAAAAAAAAAAAAAAgLEjyAwAAAAAAAAAAAAAAAAAAABg7AgyAwAAAAAAAAAAAAAAAAAAABg7gswAAAAAAAAAAAAAAAAAAAAAxo4gMwAAAAAAAAAAAAAAAAAAAICxI8gMAAAAAAAAAAAAAAAAAAAAYOwIMgMAAAAAAAAAAAAAAAAAAAAYO4LMAAAAAAAAAAAAAAAAAAAAAMaOIDMAAAAAAAAAAAAAAAAAAACAsSPIDAAAAAAAAAAAAAAAAAAAAGDsCDIDAAAAAAAAAAAAAAAAAAAAGDuCzAAAAAAAAAAAAAAAAAAAAADGjiAzAAAAAAAAgJliHO80xhwyxhSMMdb9e3LYY0P4jDHXu/eHSzynX+SevhjOyMbDGPPk5mMi7LEAAAAAAAAAiD6CzAAAAAAAAADGzhhzWUuAuNffewJe/J9K+oykn5NkJG26f/WAlwOMlDHmEmPMpcaY5/U5fTOkfNGIhzZR3HV0qTHmwrDHAgAAAAAAAGCv88IeAAAAAAAAAICZVpWU6DFNPuBlvts9fK+kT1praZ5FPwqS5iSthj2QFpdIeoWkRUmHAppnVc71jJIPuYeXSUqFOA4AAAAAAAAAHgSZAQAAAAAAAITpVmvtReNamDHmpyQ92j36BULM6Je19nZJzwp7HIMwxrxR0q9Ker+1Nt7h/IdI+gtJ69baT0mStXZVU3Y9AQAAAAAAAEyvc8IeAAAAAAAAAACM0YOa/1hrc2EOBBiDiqSLJc0ZY35PkmmeYYx5k6Tjkt4uKRvO8AAAAAAAAADMOoLMAAAAAAAAAKaKMeZ6Y4w1xlxijHmQMeZSY8ycMaZojNkyxnzdGPN0z2UuMsZYSYstp9mWv0s90z/Mne9hY0zO/bvXGPNhY8wFPuO61J3XZcaYc4wx7zTG3G6MSbmnP8+z3CcbY55pjLncGLNujCkYY+4xxry1ZZ7GGPMHxpg7jTFZY0zCvX5P7LGOnmyM+Yy7XgruZe8yxrzfbeHtdJnWcT3bGPNPxphlY0zVGHNlj5vFO6+XGGO+7443767H97jr5TKfdX6Re/qie/x1xpgfurdpwxjznpZpX26M+ZQx5jZjzJoxpuJOd7Ux5rf6GN9rjTHXGmPSxpiMMeZg63r3ucye8flMM+x6f6Ix5gvGmBVjTNkYs2CM+Zgx5mGey1zi3p9f4Z70Zc/9eVGSrLXfl/RsSX8l6W8l/cCd/n9J+idJX5b0NGvtlzzXwbrz945157Yzxpzr3qaH3euaMMb8izHmhT7X0/v4+H/dy+aNMXFjzFXGmF/wuewl7mWv77Lud+bvHW/LZAue9XRZ24wAAAAAAAAAjNV5YQ8AAAAAAAAAAPbpYZJukfTzksqSGpIeLem3Jb3KGPML1toz7rQVSZuSzpX0KPe0zZZ57bQzG2N+RtK/SnqSe1LBPXyu+3eJMeZXrLWnfMZlJH1b0hsk1eXfdvsLkr4o6aGS0pIeKOl5kr5ijPkpSR+XdLmk/yCp6l6Hh7vX78XGmJ+31sbbFu407V7uzq85/gdIer779xZjzKustZvey7peJulzkh7sjr3mM11Hxpi3yQnINos0UpJ+VtInJL1cUqaPebxP0sckWTnrptFy3vmSbmiZPCupKOe2f42k1xhjPm+t/S8+8/4jSf/DPdqc/4vkrPfn9XctO8532PX+c5K+JOkR7nU6R9KTJb1P0iuMMS+21lbdaYty7r+PkHQ/Oeu02DKv7eY/1tqKpE8ZY66Q83iRpMdKeom19t59Xt3zJH1fzvquynn8PVzSr0p6pTHml621B3wuayR9S9Ib5dy38u71+DVJrzfGvMVa+419jssrLWc9PcY9HpPzmGw9HwAAAAAAAECIaGQGAAAAAAAAMK0+LCc8+VpJD5F0vpyg7IqcYOTfNie01t5qrX2snMBq87THtvx9TJKMMfeXdIWcEPOypFe78z1f0q9IWpL0REnfMcY8wGdcb3LH9IeSHmatfbicIOW8Z7rPywnkPtVae6GkC+UEiCXpL92/X5P0Vnf5D5UTMt6QyZRocQAAIABJREFU9ARJ7/cu2BjzIklflxM0/RtJj7fWPkTSgyS9WNKdcsLYX/EZuyR9VtIdkp5rrX2YnEDz+7pM37r8Z0n6gpzvnn8g6Snu9X+YpHe51+cNPWbzGEn/3R3H49zLny8n/Co5oeZmEPaR1tqHWWsvkHNfeKecUPofGGPe3GF8L3XnLUlfk/TT7vwfKSfc/F45YfKBBLTeL5N0SLvr/XxJ/1lOSPiFkn6/OaG19hvu/flW96R3e+7PO/dzY8z9jDHvlHS3dkP5G5JuMcZ80K8puod3yHks/bak8621D5UTxD4iJ8j9qS6XfYOkX5ezrh/m3vd/RtJP5Gxo8GVjzNP2MaY21tp3u+up6UWe9fTuIJYDAAAAAAAAYP8IMgMAAAAAAAAI04uNMRs9/h7mc9kHSHqVtfZH1tq6tbZhrb1J0nvc83/dDSYP4rcl/Vs5LbOvt9b+xO66RtLr3fP+jaS3+MzjfEnvstb+L2ttQZKstVvWWm8T8ZakN1prF9xpMnICoqflhIf/XNI7rLVfs9ZW3DHcLOmP3cv/Vodlf0JOQ+87rbV/bq1ddedddxtyXyNpXdKrjTEv9Bn/lqTXWWuPuJe1Lc3WvfyJpPvLCbS+0Vq76M6jaK39jKQ/kxPY7uaBkr5prX1Hs73YWluy1q64/xestW+21l5prU00L2StTVlr/0FOgFwth60+LKcR+DpJb7PWbrRc9v2S/rekC/q8rq2CWO+rcu5zzfVettZ+SU4wXOp8e3dljHmtpGOSLpWz7l/vnvXfJF0i6fcknTbG/O6As75Q0hustd90G5/ltjtf4p7/ImPME30ue4GkD1lrP2GtLbqXPSMn3DwnJ/z9JwOOBwAAAAAAAMCUIsgMAAAAAAAAIEz3k9PA2+3P73vMb1lrT3c4/SpJVk7Q+WcGHE8zLPrdZqC0lbX2qHabgf+9zzzikr7Ux7I+Zq2teebfkHSte3RFTmuw1zXu4VNa23TdFtuXSErJCeS2cYO/P3SPvspnXH/fDJgOwhhzjqTfcI9+shlw9c5bUr6P2f3doMtv8T338JeMMee2jO8Rki52j/53a63tcNmPDLqwANf7x6215Q6nX+kePmfQsckJxN8o6ZnW2i/IeVw0x3SFpGfLaYl++IDzvckN1e9hrb1Lzv2223gLkj7Z4bIlSf/TPfqbxhgz4JgAAAAAAAAATKHzwh4AAAAAAAAAgJl2g7X2on1e9o5OJ1prq8aYLTkh6EEDms93D6/rMs21kv5Dy7Red3oDyj7u8zl9yz085gabvTZb/r9Qu8HgF7uH50ta6ZIDPd89fILP+Qf8LtjDUyU127PbQq6S06ZsjLlL0su7zKco6XC3BRljzpP0u5LeLOnnJD1CThN0qwfKuf1j7vGfl9PG3OgyvnljzLL8100nQa33jvdnOU3N0uD3ZVlrvy3p213Oz0t6/6Dzlf9YJWe8j5f/eO90l9vJDe7hhZKeIml+H2MDAAAAAAAAMEUIMgMAAAAAAACYVtku55Xcw/sNOM9Hu4erXaZpNs4+0hhjOjT7bve5rHWf0+vdzrfW1lvCsq3X73Hu4XlyQty9PNjn9H7H7/Wolv/9rpskrfWYT9wnwC1JMsacL+lH2g0QS074eVtOSFnavf4P0W6QuXnbprsEaSXnth8kyBzUeve7Pzfvy5P0ff4wj71uj63W8x4tgswAAAAAAABA5E3SF58AAAAAAAAAMCkeOMRl670nGYlz3MPD1trnDTGfsMbf7/L/Qk6IOSbpfZKuttY2W6xljDlXUrMR27ceOUBBrfeRs9YuajzrBAAAAAAAAAD6ck7vSQAAAAAAAABgZjTbiJ/YZZrHu4fxDm3MYdp0DwdpEw5SrOX/x/lO1f28frzZPfx/rLVfaQ0xu/xakZu37QXGGL9WZEn66QHHE/Z6nzbd1m/rea3N4M1gercNDC7Y94gAAAAAAAAAhIYgMwAAAAAAAADsuts9vLjLNL/smXZSHHAPH2GM+cUQlj8vKeP+/9JOExhjHiTpBUMupxkkv8fn/F/xOf0eSVbO9+J+43uKuofYOwlzvTfcw2lqWX5hlyD5K9zDlKSFltNT7uHj5e9FXc5rbnAwTesJAAAAAAAAmAkEmQEAAAAAAABg17fcw9cZY37ee6Yx5t9I+i336DfHNqo+WGtPSDroHv0fxpj7+U1rjHmQMeYBAS+/Iem77tF3+yz/DyWdP+Si0u7hc71nGGPOl/RnPuNLSLrWPfrHxphOodYPDDqYkNd7Mzh+YYDzHLWHSHq390R3vbzXPfotT9v5fe7h/2WMaQvCG2NeJuklXZY5jesJAAAAAAAAmAkEmQEAAAAAAABg1zck3ev+f6Ux5leagVdjzCsl/UDS/SQdlXR5OEPs6l2SypJeLukaY8xLjTHnSJIx5lxjzHONMR+U0578uBEs/28lVeSEjK8wxjzJXfYDjTHvkPRR7bbr7tdP3MOPG2Ne0XL7vEjSNZIe2eWyl8pp532lpMuMMY9xL3uBMeYjkv5Au0HpQYS13o+6h28yxlwQ4HxHKS3pr4wx73YbumWMeaqcEPyzJZXk3E92WGvPSrrdPXqZMea57uXuZ4x5s6QrJSW7LLO5nt5mjDk3sGsCAAAAAAAAYGgEmQEAAAAAAACE6cXGmI0ef58a12CstRVJvynprKQnygnN5owxeUn/6p62JOlN1tryuMbVL2vtHZLeKCcs+jJJN0kqGGNikopyQtoflvRYOYHeoJd/XNJ/def9a5IWjTEJOY24fy/pO5Kuciff7/r7c0kxSU+QdL2c65eTE3R9rqT/2GV8N0t6v3v0bZLW3fHFJf2JpI9LOjTogEJc71+VExx/qaSYMWbVGLNojLk5wGUE7bty7gOflJQ2xiQlnZH0Gkl1SW+31p7pcLl3yVmXz5F0rzEmKyknpxn9Dkmf7bLML7qH75HzeD7rrqePBXGFAAAAAAAAAOwfQWYAAAAAAAAAYbqfpMf0+Btr06y19rSkn5P0l5KOtJx1RNJfSfq31tqT4xzTIKy1P5T0DEl/LeluOYHhC+WEiW+V03b7ArfldhTL/7KcZuKr5QR7HyDpmJwg6u9o9/bcVzOztXZe0i9I+pqkLUnnuvO6XNKLrLU/7nH5v5P0OknXyQnCnifpTklvs9a+bz9jcuc79vVurT0h6VXaXdePlfQkSY8PahkjYCW9WdJ7JR2XdH85bcr/IunF1tqvd7yQtbfJCWx/T87tfZ6kk5L+SNKvSqr5LtC5T/6+nLB7TU4I/kmSHhXINQIAAAAAAACwb8bawEs3AAAAAAAAAABoY4wxctqunyDpYmvt9eGOCONijLlU0ock/ZO19pJwRwMAAAAAAABgUtDIDAAAAAAAAAAYl9+RE2LOSLot5LEAAAAAAAAAAEJ2XtgDAAAAAAAAAABEhzHmTyVlJV0padVa2zDGPFzS2yT9rTvZZ621xbDGCAAAAAAAAACYDASZAQAAAAAAAABB+llJb5H0aUkVY0xe0oWSjHv+v0r6cEhjAwAAAAAAAABMEILMAAAAAAAAAIAgfVZSRtJLJT1OTog5IeleSV+T9BVrbS284QEAAAAAAAAAJoWx1oY9BgAAAAAAAAAAAAAAAAAAAAAz5pywBwAAAAAAAAAAAAAAAAAAAABg9hBkBgAAAAAAAAAAAAAAAAAAADB2BJkBAAAAAAAAAAAAAAAAAAAAjB1BZgAAAAAAAAAAAAAAAAAAAABjR5AZAAAAAAAAAAAAAAAAAAAAwNgRZO7BGHO5MebysMcBAAAAAAAAAAAAAAAAAAAARMl5YQ9gCjzr+c9//vMl/cewBwIAAAAAAAAAAAAAAAAAAABMILOfC9HIDAAAAAAAAAAAAAAAAAAAAGDsCDIDAAAAAAAAAAAAAAAAAAAAGDuCzAAAAAAAAAAAAAAAAAAAAADG7rywBwAAAAAAAAAAiBZrrYwxbac3Gnbnf2PUNo21VtZ6LxWMTssDAACIGr/3YQAAAAAwqQgyAwAAAAAAAAACtZIs6gmPeHDb6Rf/z+t1Nl6QJN30xxe3TXPZrYv68PeOjWRM77z4Z/T/veaZI5k3AADAJKjUGlqM5/WMxzw07KEAAAAAQN/OCXsAAAAAAAAAAIBoOTAfbzut0bBaSxV3jh9dy7RN0+m0oHzplgXFcuWRzR8AACBsdy4mdjYaAwAAAIBpQZAZAAAAAAAAABCog2fag8xb2bKqdbtz/Nhaum2aUQaZC5W6PnvdmZHNHwAAYJyOdngvdd3clhJ5NtwCAAAAMF0IMgMAAAAAAAAAAnXbQkK1emPPaSvJve2A3tByuVbXqc3sSMf1tdvO7mmFBgAAmFY/OrKhuGdvE9fPbSuWq4Q0IgAAAADYH4LMAAAAAAAAAIDAlKp1raaK2szuDdasJPcGiL1B5lObOdUaVqNUqTX0mWtPjXQZAAAA45At1/S9w2s7x1eSBZ3ayilOkBkAAADAlCHIDAAAAAAAAAAIzKrbeLzqCS6vepqQNzKlPS2CnXaPPgrfvHNFyTwBHwAAMN1K1Ya+c2g3yHz93LYkKZ4v+10EAAAAACYSQWYAAAAAAAAAQGCazcsryYLn9ELbtK2tzN6G5lGpN6wW4vmxLAsAAGBUStW6Di+ndGY7J6klyEwjMwAAAIApQ5AZAAAAAAAAABCY5YQTWF7xNDJ7j0vhBJml3TECAABMq1K1Lkm68p5VlWt13XomJkmK5WhkBgAAADBdzgt7AAAAAAAAAACA6Fh2m5dXPcFl73FJOrqWluS0JB9fJ8gMAADQr6IbZP7OPat60ZMfoULFOZ7I08gMAAAAYLrQyAwAAAAAAAAACMxKwgksr6R2w8KNhtVKqj3IfMxtYV6M53fCN+OwnGgfCwAAwDRpNjKvJIv6+E9O7pyeyFfUaNiwhgUAAAAAAyPIDAAAAAAAAAAITLOReaWlgTmWK6tSa7RNuxDPK1+u7QSax2WJRmYAADDlStXd91aHllM7/9caVplSNYwhAQAAAMC+EGQGAAAAAAAAAARm2Q0Jr6WKO22AndqYJcla6fh6RkcJMgMAAAyk2cjcSSxXGeNIAAAAAGA4BJkBAAAAAAAAAIHIlWtKFpwGwGrdaitblrS3ndnr6FpGR9fSYxlf03q6qGq9vSEaAABgWnQLMsdz5TGOBAAAAACGQ5AZAAAAAAAAABCIlWSh43Hv6a2OrqV1bMyNzA3rNEYDAABMq2K3IHOeRmYAAAAA04MgMwAAAAAAAAAgEMuJveHgVTcsvNqlkfn6ue1QwjbesQIAAEyTUtV/7xI0MgMAAACYJgSZAQAAAAAAAACBWE54G5mLew472cqGE7RZSvi3RAMAAEy6Eo3MAAAAACKCIDMAAAAAAAAAIBDLSW+QubDncJIQZAYAANOq0bAq17o1MhNkBgAAADA9CDIDAAAAAAAAAALhbV5eSRZlrdVqyr+ROSze0DUAAMC06BZilqR4Ppw9XgAAAADAfhBkBgAAAAAAAAAEYtnTcryaLCqer6hU7R62CYN3rAAAANOiWK13PT9GIzMAAACAKUKQGQAAAAAAAAAwNGtteyNzqqilCQ0ME2QGAADTqtQjyBzP0cgMAAAAYHoQZAYAAAAAAAAADC1VqCpXru05rVJr6PByKqQRdZcsVJUpVcMeBgAAwMB6NTLH8zQyAwAAAJgeBJkBAAAAAAiAtTbsIQAAEKrlZOeG49vmE2MeSf9oZQYAANOoVyNzqlBVtd4Y02gAAAAAYDgEmQEAAAAACMBGphT2EAAACFXMZxfmty3ExzyS/i0nimEPAQAAYGClau+QcrJAKzMAAACA6UCQGQAAAACAAJzazIU9BAAAQpUt1TqenixUxzyS/tHIDAAAplGvRmZJiucIMgMAAACYDgSZAQAAAAAIwMnNbNhDAAAgVLly5yDzJFtOEmQGAADThyAzAAAAgCghyAwAAAAAQABOb9HIDACYbX6NzJNsyaeRud6wYx4JAABA/4r9BJnz5TGMBAAAAACGR5AZAAAAAIAhVWoNLcbzYQ8DAIBQ5aYxyBzvHGS+4eTWmEcSHYTAAQAYvVK10XOaGI3MAAAAAKYEQWYAAAAAAIZUrNa1kiyGPQwAAEKVK09fkHkhnlcivzfkY63V5QeXQhrR9NvMlMIeAgAAkVfqp5E5RyMzAAAAgOlAkBkAAAAAgCEVK3Wtp0uq1Xs3IgEAEFXZKWxktla6+XRsz2kLsbwOzsdlLc3C+7GU6NxyDQAAgtNfkJlGZgAAAADTgSAzAAAAAABDKlbrqjesNmggBADMsGypGvYQ9uWGue09xw/OJ5Sv1LWZocVwPwgyAwAwen0FmfMEmQEAAABMh8CCzMaYxxtjvmSMWTPGlI0xi8aYTxpjHj7gfB7hXm7Rnc+aO9/Hd5j2kcaY3zPGfMcYc9oYUzTGpI0xNxtj/rMxhqA2AAAAAGDkChWngXI1WQx5JAAAhCdXnr5GZkm68dT2nvblA/NxSdJ8LBfWkKbaCkFmIHRbWTawBKKu2FeQmY2yAAAAAEyHQIK+xpinSbpL0tsl3S7pE5LmJb1b0gFjzCP7nM8jJR1wL3fGnc/t7nzvMsY81XORN0v6gqRflHSbpE9KukLScyR9UdI3jTFmqCsHAAAAAEAPzSakFYLMAIAZNq1B5u1sWcfXs5Ika60ONoPM2/kwhzW1aGQGwjW3kdVVh9bCHgaAEStVGz2niedoZAYAAAAwHYJqLP6spJ+S9C5r7W9Yaz9grf1lOUHkZ0r6mz7n8xFJz5D0cWvtK935/IacYPNPuctpdVLSr0t6vLX2LdbaP7HW/idJz5K0LOk3Jb1p2CsHAAAAAEA3hQpBZgAAcqXpDDJLTiuzJM3H8trOOu2FBJn3Z5n3Q0CoPnfDGW1laWEFoq7UTyNzjucCAAAAANNh6CCz28b8akmLkv7Bc/aHJOUlvdUY85Ae8zlf0lvd6S/1nP33ks5Kek1rK7O19lpr7festXs2ObXWbkj6nHv0ogGuDgAAAAAAAyvuBJlpIAQAzK7MFAeZb5hzgswHzsR3TpuP5cIazlQ7G+f9EBCW5URBVx1e29kgA0B0FfsIMucrdSXztDIDAAAAmHxBNDJf7B7+uEOgOCvpFkkPlvRLPebzS5IeJOkW93Kt82lI+pFneb1U3cPp/fYcAAAAADAVmj8grqb8GwjzZT6eAgCiLVeu9p5oQt15NqF8uaaD87tB5oUYjcyDKlXriuXKqjds2EMBZtLnb5xXvWG1lS2FPRQAI1auNnpPJGluM9t7IgAAAAAIWRBB5me6hyd9zj/lHj5jTPORMeY8SW9zj17da3r3Mnd1+pP0rH4uDwAAAACYXbuNzP5B5rUuIWcAAKZdtd5Qqc9AzSSq1q0OnInr4Hxi57TlREHlWu+2Q+xKFZwwe26K27mBabWdLeubdy7v/A8g2vppZJakkwSZAQAAAEyBIILMF7iHaZ/zm6dfOKb5SNJHJT1H0g+stT/qNTEAAAAAAMNo/oC4lir6NhCuEGQGAERYFIKrX751QbHcbvivYaWleCHEEU2fZMHZfX12itu5gWl15T2rKtecDUoIMgPRV+ozyDy3QZAZAAAAwOQ7L+wBBM0Y8y5J75N0QtJb+72ctfYFPvO7S9LzgxkdAAAAACCKCm4jc83djfPjLnhQ2zQ0MgMAoixXnv4g8y2n422nndnO6+mPeWgIo5lOO0HmCATbgWkTy++Gl5OFqiq1hu5/XhB9RgAmUb+NzASZAQAAAEyDIL7BaDYlX+BzfvP01KjnY4x5p6RPSTom6WJrbcJvWgAAAAAAgtLahLSS7BxYXvU5HQCAKIhqcHUhlg97CFMlVXCamKMQbAemTaG8N9TY2jAPIHpK1UZf081tZmVt5z1HAQAAAMCkCCLIPOcePsPn/Ke7hydHOR9jzHskfUbSETkh5o0eywMAAAAAIBDNRmZJWkl23gX9Ko3MAIAIi2pwdX47F/YQpkoi32xkroY8EmD25D3Pw9tZgsxAlJX7bGTOlmrayJRGPBoAAAAAGE4QQebr3MNXG2P2zM8Y81BJL5FUkHSwx3wOSipKeol7udb5nCPp1Z7ltZ7/fkmfkHRIToh5a9ArAQAAAADAfrXu0nUl4d/ITAsSACCqohpcnaeReSCpQjPIHM1gOzDJ8pW9j7stgsyIuFn/fF3sM8gsSXMb2RGOBAAAAACGN3SQ2Vp7RtKPJT1Z0js8Z39Y0kMkfdVau/ONrzHmWcaYZ3nmk5P0VXf6Sz3zeac7/x9Za+dbzzDG/IWkj0q6S9IrrbWx4a4RAAAAAACDKbY0Mvs1L8dyZZVr/e36FQCAaUMj83RaThT0X756p0oDhKG6SRacQDtBZmD88uW9j2MamRF1962mwx5CqAZ57SbIDAAAAGDSnRfQfP5Q0q2SPm2MeaWk45J+UdLFkk5K+jPP9MfdQ+M5/U8lXSTpvcaY50m6XdKzJb1B0pY8QWljzO9K+ktJdUk3SXqXMd5ZatFae9k+rxcAAAAAAD21BplXkp2DzOliVblyTQ+837njGhYAAGMT1eBqslBVMl/Rwx9y/7CHEihrrS6/bUkf+cFxFSp1XT+3rdc+57FDzzfpNjJHNdgOTDLv444gM6LumuNbetqjz9dDHhDUz93TZaBG5k2CzAAAAAAmWyCf7Ky1Z4wxL5QTKn6tpNdLWpf0KUkfttYm+5xP3Bjzf0v6kKTfkPQySXFJX5b0QWvtiuciT3EPz5X0Hp/Z3iDpsv6vDQAAAAAAgylUW4PMhbbzrbXKlGrKl2t61PkPGOfQAAAYiygHV+djeb0gYkHm9XRJf37lkZ3jVx1ebQsyNxpW55zTVhzSVWqnkbk6/CABDKRQ2fs8vJUthTQSYDw2MyXdeTapVzzj0WEPZeystSpV+9/j00mCzAAAAAAm3DlBzchau2ytfbu19nHW2vtba59krX1PpxCztdZYazt+A2qtTVhr3+1e/v7u/P5ThxCzrLWXNufV5e+ioK4jAAAAAACdlFoamVdTRTUads/5uXJN9YaNbFslAABRDq4uxPJhDyFw3kDTvx7f2nMbVmoNfeba0wPPd6eRmfc8wNjly3vbWWlkRtTFchUdOBMPexihKNf6DzFL0qnNnOqe7ykAAAAAYJIEFmQGAAAAAGBWFaq7YZ1q3SrjCXOli87xKLdVAgBmW5SDq2upYthDCNypzdye45VaQ1cf2dg5fvltZ/WVA4ttG2f1ksw7QWY23gLGL+9pZN7OEWRGtCXyZR2Yn80gc6la7z1Ri3KtobPx6G2YBQAAACA6CDIDAAAAADCkYmXvj4gxT2hgJ8hMqAcAEFHZCG+sM+1B5kKl/bbptIv5qw6vSZIypao+fc0pxfMV3buaHmhZyULVnUd07w/ApMp7noe3MgSZEW3xfEVHVtOR3iuEn1J1sEZmqfNrPwAAAABMCoLMAAAAAAAMqT3IXNlzvBlk9rakAQAQFVHeWGd1yoPMt80n2k47tZVrO+2W0zFtZUv6xxvO7ASSrzux1fdy6o3dvVLkyrMXKgPCVK7VVa3vbVDfzpVl7WCt6sA0SeQqqjes7lhsf52LuuKAjcySdGKDIDMAzIrr5rZ4HwgAmDoEmQEAAAAAGJL3R0RvI3PGDTKzm3UAQFRF+TVu2huZbzi5vee4tVanOwSZG1b63zct6Is3Leycdt1c/0HmdLGq5m/lUb4/IFzpQnUm21d7KZTbQ42VWoN2dERWqVrf2RvEgTPxkEczfqV9BJlpZAaA2VCtN/Sh7x7VSnK6P8cCAGYPQWYAAAAAAIZU8DYyZ/cGmZuNzLkyQQIAQDRF+TVuLVWa6jarA2fiqtZ3d0G/li753l7/eOO8yrXdae9dSWvb877GT7Kwu0eKUd0fyrXuwa0o3w/hmNvMzmRosRe/+/52tjTmkQDjkcjvvuYcmN99TliKF3R0LR3GkMZqP0HmOxaTO3tOAABE1xV3rWgpUdDdS8mwhwIAwEAIMgMAAAAAMIRGw+4J/EhSvOVHVaklyEwjGgDAlSpUek80RaIcIC1W60oVpjf4s5Utaa5ld/KDNjJ6G539tN6nR9HI3GhYfeHG+a7TdGqaRrSc2srqxlP93SdniXfDyqatPjdEAKZNa5D56FpG6UJVZ+N5/c7nD8zEa4F3r1D92M6W9YEr7p3qjbPGodFg/QCYXpVaQ5+59rQk6dByKuTRAAAwGILMAAAAAAAModMPiLEcjcwAAH+pQkUnN6MVshlFcHWSrKamc7e81lplSrU9P2KfGjDIfN2Jrb6mS+R3w96j2HhrLV3U52+c7/p+atCQNqbPqc2cbji5TRDPw7+RmSAzoqn1M7e10jfuXNJv/+NBraVLO5+/o6xcbfSeqIMf3Lehrxw4G/BoomU5WQh7CACwb9+4c3nnsytBZgDAtCHIDAAAAADAEDoHmX0amQkyAwAknY0XtJkphT2MQGUjvqvytSkNMhcqddUbds+P2IOG6G88ta1q3QlMLcTyKvo0vyZbGpkr9ca+dnvfzWKsoEyppv9zm38AaxZaOGfdyc2slhNFLcYJmrUqVAgyY7YkPHtB+sgPTmjDfW81zXtR6Nd+Gpmb/vr7x3TvCuE2P8fWMmEPAQD2pdGw+ge3jVmSjq5mVK4F+5kMAIBRIsgMAAAAAMAQOoV52huZnWDBKNoJAQDTZzGej1SQuVJrqFzbXzPgtFhPT+ft1dyY6vAQjczZUk0f/O4Rve5TN+nij13v23qcKuwNlQW9AddCzAkpf/GmBd8f5Glkjr5mEP/Gk9shj2Sy5GlkxoyJezYebjULQeZhNhaq1q3++vvHAxxNtBxfJ8gMYDptZcs7G/VIzsalx9f5fAQAmB4EmQEAAAAAGEKnJiTvj6o0MgMAWp2NF7QVoXCZX4AuSqa1kTnjNmWf3s4pW6qq0bA6tY/W4n++fXkn2LOU6NyEm/QEx7IBb8C1EHNVo8UeAAAgAElEQVSWu5Ut69t3r3ac5tRmTo2GDXS5mBzJfGVng8EbCDLvkSt3DjUSZEZUxfL+9+1U0T/kHBWl6nAbkN11Nqn0DAS+B1Wq1nUmlg97GACwLyvJ9s9p9ywlQxgJAAD7Q5AZAAAAAIAhFPpqZHZ+IMzOQNALANDbYjyvrQg1MgcdWJ1Eq9MaZHb3CmGtdN9qWqupYsf3LoPwCzK3NTIHfL9YjO8Giz5/43zb+dZabWVLvN+KsNYQ/oEzcXaV3aJQ8WlkzhFkRjQlujQyZ4rRD+h22qB6EPWG1U2n2SDEK1uqaSU5ne/5AGC5Q5D5UMueeQAAmHQEmQEAAAAAGEKxQxioUKnvCRM0f0idhcZKAEBvS/GCNjPRCZdly9EPDI2ikTmRrwy1a/h+pFvCXIeWUzq9jzZmr2W/Rua8t5E52PvFYktD4kIsv9M23ZQuVlWtWxomI+zk5u6usYvVuu5cpGGuyW/PL1sReq0BWsXz/kHm1Ay8DgTx/uHaE1sBjCRaMqWqVjsEAQFgGiwn2j+zEmQGAEwTgswAAAAAAAyhWO0cGoi3NEQ1Q0RBNxMCAKbTYrygzWx0Gpln4fVtLRX87bWUKOjoWibw+bZqbaU8vJzaEwTdr7PxzgGfhKeRORPg/aJWb7Q1QXvD5dtZJ7CZLPiH2zDdTnnuvzeepE20qVDuHGqkkRlR1TXIPAONzEEEmW+Y21ajYQMYTXRkSzXFcqPf0AwARqHTBqdn4wXFeT8IAJgSBJkBAAAAABhCsdLoeHozNGCt3Q0y08gMADMvV64plitHqiVzFl7fNrMlVeudX/P3ay1VHHlDVmtr8eHltE5uDt/I7A0UN6U8AeIg7xerqaJqnrCVX5B5FgJss+qUp1H8wHy878taa7WeDr5ZfVL4Pd4S+Urgz13AJOgWyqKRuT/xfEX3rqYDGE10NDcAW0lG9/UCQHT5PXcdXqGVGQAwHQgyAwAAAAAwhEKleyNzvlJX3Q3e5Mo1Go8AYMadjeclOa8J+YgEgLMz0MhsrbSRDraVeS1V1OERB5nTLaHejUxJt56JDT3P9XRRlVp7MDLpCY5lS8EFyRZi+bbTVj0/1Dc3IvMGqhEd3iD+IEGzWK6if759OeghTYxurycxWvgQQa17QPJKFyuyNtqfu4sBNQZfe2IrkPlERfM97WqKIDOA6bOc7LzB6aElgswAgOlAkBkAAAAAgCH4NSE1AwNpTytggV2UAsBMOxvf/XFxKxuNcFk2IoHsXrwNwMPPr9Sxkfmus4nAlpEp7r1t1gMIYzds+7qw1rY3MgcYcF/sFGRO7b0uO43MM9DEOYuS+UpbIDeRr/TdSno2ntcVd61EdqPCQsV/PcSyhPsRLYVKrWuQt1q3XR8TUVCqBtO0fv0cQeZWzT1ZrPiEAQFgUtXqDd/PenOb2TGPBgCA/SHIDAAAAADAEPx+II25YZq0J0wTZKgHADB9FuO7gczNTLANv2GZlde2tXTQQeailhIFxT3hzEuvOqYDZ+KBLCMTYCtyq6XE3oBPvlJXtb43IBpkwH0x3h4o8oapm0HmJI3MkXRqK9fx9H43MFiI5bWaKurgQjCPrUmT6/J44zGBqOnWxtyUKkZ7o5Z+N+Lo5d6VtLay0Xg/GoTsTpC5fYMtAJhk6+nSzh4Bvfp53ezFb94AAASJIDMAAAAAAEPwa4KK550vib2NzLlytH9QBQB0dza2G8iMTJB5Rl7b1lLB3l7rbjD68MpuK/Naqqj7VtP66NUn+grN/PC+9a7ne9+HBMUbZE7m238czwYYcF/o2MjsCTLn+mtkLtei3dIZVSd9muT6bRlvtuF/666VwMY0SQoVgsxoF9XQUaLDa46Xd4PiqAkqyCxJN8xtBzavadfck8WqJ8h870o6jOEAQN+WuzTJx/t43ezF+/kPAIBRIMgMAAAAAMAQij6NzM0wjTdAFGSoBwAwfVobmbcy5S5TTo9ZeW3zBmeHn58TwDy0tBtk/smxTUnS4eWUrj6y0XM8f/Ste7uGtTIjCjIve4PMHYKS2QDboDsFmf0amVNdQpuFSo0w0pQ65RNk7vdxueA+9/7wvo2u7cXTKlf2DzV22tAAs+HQcjLsIYxEPN/7/VOqGO37fanaCGxep30a72fRbiPz3vc5PzyyoUZENwwAEA0rCf/3xLHc8N87+G1UCABAkAgyAwAAAAAwBN9GZvdLYm+AKIrBCQBA/5qtoFKEGplnJMjsDc52Uqn1Fywq1+o7Pyjfs9weZJakv/vRnGr1zvOz1uoDV9yrXLnWtR0rM6LbxrvM5Q4/nAf1nqdSa7QFiiTn8VNtWT87QeYu4e21VFHH1jKBjAvjdXKzc9Buvc+m9LNukLlYresHPZrMp1G+y+MtGfFmWnSWL9d0cD4R9jBGIpajkdnve4j92IjI+9EgNN83rXgamQ+ciXV9fwEAYev0eakpW6oNvVcav40KAQAIEkFmAAAAAACGUPBpZG7+uOptZO4WMgAARFuxUt8TFtnMRqSReUZe2/oJMt9yJtbXvDbSu/eDw8spNRpW6UJVB+fjO6fPx/L6l3s7By6/fseybjrlLOtsor2tuGlUjczeIPP1c1tt0wTV1L2cLKhTCWLD7t0YoBkM7xbaXEkWdWKDIPO0aTSsjvvcbv08Lq21Wozt3me/dddKYGObFIVKtyBztJtp0dlqqhjZ0FGij5bxqIdOSwEGmdfTBJmbmo3MW9nyTugvX67pyFomkEZTABiV5WT398T9vHZ247dRIQAAQSLIDAAAAADAEHo1MnuDzEGFegAA08cb/tyKSAPerDQyryaLsrb7bsWvvm+jv3m1hC8zpZoW43ldN7elmiexe3y9PbzZaFh95AfHd463tnx7jSzIHC/srItGw+q6DkHmoO4XizH/oPaq+4N9rd5Q3P1xPt0ltLmSLOrYejSDfVE2t5lVyiegvpbuHWSO5Sp7GsLvWEzsNHhHRbcGdBqZZ9Nqsqi5iIaO4n0ESv2eM6IiyCBzVPYQEoRMcfe5dM1t/L97Kal6wyoWsdcNANGy3GUvPZIU72NvBt2cjOjGUQCAyUKQGQAAAACAIRR9GpmThaqq9UZbkDmo3awDAKbPYnxvIHMrIoGIbDnaYaGmfKW+s8txPzefjrW99neyntobGjq0nNJPjm22TdcppLyRKe3ZMGrJJ8hcb9iRtWVny7WdkNh9q+mdPVHsmaYUzP1ioUuQuRliTeQrambMu4U2V1NFzW1kVO9U8YyJdVtLU7lXP43MZz3PvdZ2bhGfVvWGVana8D0/OWQDH6bTSrKgM1s51er+941p1U8YK1WM9v2+22N+UOvpUs8NtWZFpuW9S3NjqdsXEpKkbRqZAUywlR6NzMO0yjcaVvPbeT5DAQBGjiAzAAAAIqUawR9oAEw2vyCz5IRq2oLMM9JaCQBo5w3TbWaiERyZpde2M9v+7ZbpQlWrqaJvsLiVN3x5+0KiY7DS2+IttQfiO00jjf52aS73mhOdA6FBhai917dVsy2xdaOATKnq+yP7arKoUrXRdZ6YPAfnE77nraV6P492CsNf63O/nUb5SvfHWrJLSzmiayVVVKXe0GIfr0nTJt5HOD9NI3PfKrVG5Bus+9W6odhK0nnsNIPMnTbaAoBJUK7VtZnt3q4/TCNzslBRpd4IbENVtIvihmcAsB8EmQEAABApJ9hNMIAxK3b5ATGWK7cHmXsEDQAA0eUNExUq9Ug09UfhOvTr8oNLvucd38hI6h68bWo2CTd9+55V5TtsHLWUKLSFNL0tzX5B5n6aoYfRXO61J9qbpCXnftEIoLWrWyNzs3mstWHMWinjc91X3QD58fXM0OPCeDQaVrcv+geZi9V6z/t6p2bzm07FVKlFIzBQKHcPNNLIPJuabbJR3BV8PN+7VTLqwdxu30Psx0amewBuVrQ2Mq8kiyrX6rpnOSVpuDZTABil1WRRvbaP7ue1009zo9Gov7aGpVJr6N7VdNjDAICJQJAZAAAAkXL3UjLsIQCYMd0amWM5GpkBALsWOwQyNzPTH4rIztBr21WHV7WR7hz2aYZjvc3bnTSbhJv8ApW5ck0JTwjRG5ReSztBG6/MiBuzlhIFbaRLOrLaORRsbe+m2H6c3PRvwW42W29n9z6OUj7B1ma7IkHm6XFqK9f2GPBaTXXflfZCh8dkrlzTHV0C0qMyir1I9dqYJEnoZCY1HxdRDDIn+miVHPXGPGGy1gbayCzJ973NLGk07J7n09VUUfetpHfeo8Wy0/+eHUA0NTfu7GaYRuadIHOEX1vDtJkp6dgan08BQCLIDAAAgAipN6wOuS0ZADAu3ZqQ4rlyWyPgLLVWAgD26hQm2uqxC9hJV6k1VI5Iq2k/qnWrL9+60PG8ZjjW27zdyVqP4GUrb+Py2dje49Z2/vHar5U4KMuJgq6b2+o6zbDve1KFSltIudVOkNnTkpgstP9QX6k1dn6EZ08+0+O2hXjPadZT3Z9H/TYuuOZ49/vvKCwlCoF/Hsj3mF+xWg889IjJtxLRRmZrrWJ9tIxHOWxVrVsFsMODPWhkdvae1dpoupIs6LaF3Q1eaGQGMKmWk70/f8aGCTK7rxGpDp+xMLz1dEknNggyA4BEkBkAAAARkshX+mo/A4AgFbo2MpdpZAYASHJeEzr9eLg1pY3Mdy4mdOPJbf3wyHrYQxm7/3NwSdkObcfH3XBsr88k1tqhgszeRuZO00ijb6NcShR6BkGHbes+veXfxiw5bYnW2rawc7pDA+16eneXy8M0MlfrDf3k2KZsr/03IxAH53sHmdfS/o8na60WY53DHdee2Nz3uPZrI10a6PHfj36azzuF+xFdpWp953lxbiNaQeZcuea7F4NW6Qjf57ttTL1fNDK3bwC2mizuae4fJgQIAKO0nOijkTm//+8dmhuDRnlvB2FaTxd3vksAgFl3XtgDAAAAAIKylS313KUsAAStW7tZLFdp+5I3SyMzAMwkv0bEzQlpwJvfzumnL3yQHni/c3tOe2Ijo9/63IExjGoyZcs1ff32Zf3+y5+6c1qt3tCcexsv+IQmmzKlmvJdNoTyOtvS8Gyt3XO8aanDaZkOYesgnd7K9QwqDxtkPrnZPchcqNSVLlbbgsydQpurLa3Va+mSUoWKLnzw/Qce02ampN//yp162dMfpQ/+u5/V0x/z0IHngf5Ya3XbfKLndGtdGpnj+YpvA/JivKD57Zye+ujz9z3GQW2kS6rUGnpGgPebfLn380kiX9HjLnhQYMvEZFtvCaUuxgsqVet9vb5Pg0QfbcxStBuZywSZR8L7nmU9U1Km5bQ4jcwAJtRKH43M8SE2xmh+1kp12FgUw1tLlTS3kVWjYXXOOSbs4QBAqGhkBgAAQGRsZcvaypb7amYBgCBYa1Xo0oC2FC+o5tnna69dPwMAoumkTyPi5oQ0Mt96Jq4v3bLQ17TfuXt1xKOZfF+6ZWHP546FWH7neCxX9g1OShq4jbW1bXk7W+7YxNgp3JwpjvY9x5bPWFp1aq4exKmt3s1Uq6liW5C504/sK8m9632/rVfNgOBNp2L69/94gGbmETq9lVO8j9Bit8fUYqx7Q/q1J7q3igdtIxP8BtjdPo80ETyZLa0bbtQbVvPb0dl72XqfgdtCpa5yLfjA7yQYSSPzhGxYFyZvI7O12vN+Lpar8JoPYCItd9g7j9cwG2M0P2uxh4/R2EgXlSvX2j6vAsAsIsgMAACAyNjKlGStsysmABiHSr2hRpffseZj7S2C3YJNAIDomvNplt3MTkZwZG4jq89ed6bnD5z1htWVhwgyr6dL+vodSzvHj61n9px/Nu4fGhv080pr2/Jih8CyJC0l2pc3Cbv+7fW+52w8r2rdf0PU01vdG5klJ7C37bnfdmriXEl5g8yZtmn60RqaTRaqfe3KGftzcKF3G7PU/TG1MGlB5nTwQeZ+Pl/022I7KU757MUA/fE2M/azUci0mPPZMKyTSXgdHIVSNfgCBxqZe+9FolJv7GloBoBJUK03dKKP18ZYfv8bY2y531mwYdxorLmvwcc39vf5FACihCAzAAAAImPLbbNjy2UA41LssVv4xQ67ls/xwxcAzKSTPqGsrQlpwJvbyCpXrunT15zqOt2tZ2IT0yIdtk9fc3pnTwvedt9ODclNq6nBbvPWRuZFn4B0x0bmIduQg/DdQ2t7gtheN5+O6ZbTMd/zT/lsANBqLVVUrK2RuT20uer5nHhinz8Ue9tAD6+k9jUf9HZ7n0HmtS6PqW6PRUm6czHZV6NxUDYypYFb2XvpZ48vnR4Tk+yfDiyGPYSp5g3LDxL+nXSDbISSjmjgqkQj80j0874pNkSjKQCMwtxGVuU+9lBaqTX2Xa6x5X7WiuoGQmFrbpR5Yp97DAKAKCHIDAAAgMhofqHi/YEaAEal1y5dKx0aBrM0MgPAzLHW6qRPiGgrG34gwlqrOTdoffltSzqz7R8e/fbdtDE3xXJlfenmBUntwSq/wLEkrQ8YYtzIlHZCS35Nz0uJQlvDlncX6WH4ybFNXfSx6/Suf75nZ5fEre5bSet7h9c7XjZdrPYVrFqI5dsaEju1hXkbSr3h8355Q6iHlwkyj8rR1XRf021kSqr77CZloctjUXLerx+cjw88tv3azJQC/84iX+4dakzkw38+6Fe9YfXtu1dnck82fvfjQXnvY34bU02jQYLMndr5o6DX9xD7kS5We26oHXW9GpkltW04BQBhOzTAZ5H97KHDWrtTIDRtG8ZNi+ZeEfa7xyAAiBKCzAAAAIiM5i6uvLsMBoBRKezjh75KraFKH00ZAIDoWE+XfDdkWUsV+2rTHKXNTHmnXanWsPqMTytzvlzT1Uc2xjm0iff5G+eVyFfa2n3PdtgrQ9N+2liX3VbmRZ922XKt0RaKn5TGrIaVrjq8ph8dbb/v3LuS1o+PbnRslzy91buNWZIOrbSHXZOdGpm9DaWbWVU7bHTWi7f9994Oy8fwCpVazxByU71hd74PaHXzqZhumNvuefkbT/q3ggdtPR1OI3Onx8Sk2siUVKjUdfOp8d0ukyKoUL13T2VzEQky1xt2oOsS1UbmUQSZJVqZ+9kALJabnudSICijaIFHcAYJMu/nOSxXru287kR1A6EwlWv1ndtlv3sMAoAoIcgMAACAyKCRGcC47bexKOzAWli8TYgAMCu6hW6qdaubTvUO2o2S9weznxzb7PiD9dVHNkYWnplW2XJNf/P949rM7A0Rd2tk9gZh+7HkBpn9Gpmd8/a+znpbisN220Jiz/FSta6Tm1llyzXdcLL9MXB6q7+w2vG19h98vSHuesPuNF01VWqNvsPSrZq7/m06spYOrEUVu05u5mQHWK3ex9XXb1/SJV++va9W3xvH9BxcrTcUy5W1kSntK0TvJ9/HZ5JpCjIvuc9l157YDHkk43flPcHs9cC74cZyohiJINpiPK9Stf/HTlQDV97Xs0mf77ToZ+9ZsRyNzJg9153Y4r3uBBskyBzfx3NY6151orqBUJg207vr92yiMLO/GQBAE0FmAAAAREZzF1cE5QCMy37DXLO4m2TJaWMEgFl0cqN7IPPHx8INa3l3OZ+v1HXrmfYmzCvuXhnXkKZKp/XiDRU31RtWZxP9tcx652et7dr07A0599MsOE63zcdlW5Kpx9czqrmhiO91eI9warO/kHGlQyDUG9rczJR2ltXqaIcQdC/rnqBXoVLfVyAa3Q26a+Vmy3GjYfXRH57QB759X8fbvJP57fxYvkfYzpZlrdNSvhlg82l/jcyT9XzQTbOB/rq5bTVmKDhVrTd09ZEN1YYMudfqjY7NulEIqQ76vJCaogD/IBZjg7+P6EeQz0vTqL9GZoLMmD1H1zJtnxcxGTKlqs5s9/85JJ4f/HWxda8/Ud1AKExrLRvJWhudvWgAwH4RZAYAAEAkWGt3tg73Ns8AwKjst5E5O2ENieNQqzf0vcPrYQ8DAELR68eo605sDR1cGsaJDkHrHx3ZG64+vZXTrWeC2eX9LNjIlDq+T7ji7pW29uZ+LCUKSuQrXdsCm+G/Jm8rcdi2smUttgS871tN7/x/zfEtFSp7r9vJIcLBKU9oc8Vnrz1H19IdT/dTrNSV6BAAODxAExr6s58gc65c0x989U597oYzAy/vplPtG28ErTUEH+SepPoKMu8juBKWZgP9dra8r40NptVyoqBsuabTAwSSOtnIlDo2Z66lp/+7skGfFybtdTAo3fb6MAzvhjqzpp/vaQgyYxYtxPMDtf5ifO5d/v/ZO+/AtsqrjT9eibP3DhAChB1mKDOsQpllz48yWlahZYQy2lJ2IIEQyCY7ZO+9HDvee+8tWbaGtSxrWVv3/f6QrWhcbcmW7ff3VyJLV1fSve845znPUQXUwSQYR2YnIbPONKiKzHoD124/9e1UyEyhUAY3VMhMoVAoFAqFQhkQqPRmuxOXWMWetKFQKJRwowtSyNxlGnxC5gaJBk0STZ8K9SgUCqWv8OVg1akzo7St75LDbOeXXCdxGrO357f25ikNCFydl7uMFixJagjqWG0KnZMImA3Xv6sN0SfgKuCeE8NXCs6JiPVmK1LqpE7PbQ7BjUpjsDhdv0Il+3dXIwxMFOeaaO6hQkDFHeEmUMFicWsnnlqd63Yd+Utmoyyo1wWCo9tpOEWl/uwtXF3Ko5k2h6KMs/V927GgN2npdtmt5AdWYOGKp8KNdmX/F6kGKu5xLWoZKHjq+hAqg96R2Y91k0zTf8ZSCiVctHZ0oayts69Pg8JCOT+w30WuDcKR2WFuYAigHYQx7UjiWkQU6B6IQqFQBhpUyEyhUCgUCoVCGRA4uppZGDLog+8UCqV3MJiDEzJrB6Ejc2mbEhaGDHqXJwqFMviwMgRNEt/uism14l44G3c8nZ+iy4TiVltiVGey4ECJoLdPrd/DkzsLjdZmcJwcrQKhtaMLrT4cGHM5crt412ixwmCOvuKhghaF/d9VAmex3rY8HkwW2zlrDGaIQlwzODpxenK/rW1XB+Qq5mkdUykITXhIcYYQErBgMblWElIr5pxmecQL7iLnyOx7T9KfHJn5nefGzrT64ITp/RGurFvILPSvMMJoYf/dPV1bogHQvSxQcY9yADoyE0Ii6Mjc/6+RUFBTR2YKxQ1CCFrlOurIHKWUB1j81BHEelDmsn9Vdg28ubUvcS00qxerYbIwSKuX4teUxj46KwqFQuk7qJCZQqFQKBQKhTIgkGqcN/zCAZCgoVAo7si1RixJasArmwqjwnk9WEdmb23hBypl3WK4NkVk3KMoFAolWmlT6GC0+BbHJddKQALpCxsmeB1dHs8vqcYmrj5SLhqUc1eopNVL7WJakVKPdVncoI/F79Tb3To9IdeakNUsBwCo9dH5exVwO0AIgc5kQZPUWXRaxOvEOztKYLIw4MhCF2l1Ojhxetofao0WtAawNvEkBKwXq+0FbiYLg33F/ADOlOKKoFPf62OO2mBBRYQF6Y4F18IwuuP648jcZbJ6FL5GG3yHe7JCoBo0wkFu9xjvWuThic05PNbf1NN4F2pxSF+j1JkC/gzKfuRE7i8StTFihUpi9eC41zyh8UP4PljGIwqlh44uEzRGC5qkWmiisNvLYIYQErDAvMOPMcxosToVeroW4ir1A29u7UtcC2Ur+Crc+F0yXttShF9TmiDu5+s3CoVCCRQqZKZQKBQKhUKhDAikLsF2QScVylEoA420eiluW5SKlWnNyGiU4fdcXl+fEvTUkdlvyrqD65Fqg0uhDFSaQnCXpEQHjX7+hrwOHTgy387NbJhDcBFtFHs+vzM1NnH11rzWoI8/mNlTzMe8hSl4d0cpPj1QGZLwyGRhnNyMPXG4TAjAv/bofYFIZYCgU49akRpsNWkpdVK8s6MENaLQBaWq7iQ7Id5d0QN5L0+OzGYrQV27GoQQ/O9wNb45Xht05w5K37VUzmqSRfT4jkKEcLrjdvkp+lbqonNccKTLaHFre14tHByO59zuNUBdu8buTu+No+UiZDfJ3R73FA/r7267dQG6tAPOzvwDhUi5MQOAZJCLpfx1ZO6LwkMKpa/o6QhDCO1AEm0IlfqAiys6tL5FyKeqxEipk9j/7+bI3A/Wk/0J1/WZyco4zUd91bmLQqFQ+goqZKZQKBQKhUKhDAhcK8PD2aaVQqFEB9nNcifHyJ+SGpzcuvoCvR/uZ2x0DkBnKG8oukx2F0nqyEyh+I9ca8QHe8r7+jQoIRKIIC+5Vhrw8a0MwTs7St06lPhLvRchs1Cpx++5vD4TFQ4ETBYGJ6rakcUiNguU0u7uBt5IqhFDa7RAHcXirXxuB6q8CBNT6qT47nhdyO/T2WWGxcrg0wOVKPby3VUL/b++vYlPKwUqbM7hYU8xHxqDBWdqJR6fGyhFPN8i9oGEt3EpktSIQh/rvAnYHYXM4ewipTP6J5rvD3sQPosI11shwkCiZ79ksjI+i6DEKgNq29U4UdXu9LjBbMXZOva1RDjF831BvTjw+3MgCplbIyhklmoMsIRQHNff8acIzGBmgu7MRaH0R1rk5+blQN1/KZElmN+jo8u38Hl/iQCr0zn2og3XOINyAM6tfYmnQtkewrmnpFAolP4AFTJTKBQKhUKhhJlm6eBIsEQbrgGVcCYFKRRKdOCauNSbrfj3wao+dcMJ1pHZ0dliMFDWdk481KaIXOKVQhlorExtRo1I7dSKvr9CCIlah9hIotKZsS0AN+P9JXxIffzejIuN7XcnapFcK0FykAmuBh+Cwe9P1gd1XEr4sbBZGLtgMDNIqhZHtXiroEWBKh+ObsGusRwRqw34+45S7C0WeH1eII7MIi+J5p0FbfjuRK39//tLvL+vv6j0Zry/q2xQOTz3VfGEvw76ntCZLHj6t1w357oexGpnR+Zw7GMIIejys7hS0RX9QuY2lu4tDYOgO4XGYHYq0PflesB0ESQAACAASURBVJnRaBMrJ9dKnNybj5QL0eHhd25X9u/1ZDDjwkB0jeRFsMMRQ+DmiD5YMJitfjmhAwjYAZVC6c84Fk84xvYofU95W+BCZkWXCVYve0qhUo8cjhzlfCXyubZCSlcDIVU/KIzrLxjMVp/r8zxOB1QDcD1DoVAonqBCZgqFEvX4SuBRKBRKNCHVGPDx/oq+Po1BiWtARUAdmSmUAQUhhLWVbHazHCkeHKd6g2CdeMralODI+m/hC1emDUhMU+okZKaOzBSKP/AVOuwosAlgC1r6txOnoFOH138vxo+nB58gdsmZBo+CIjY4si48sCwLZx0KXrgyLX7L4OCtbcW4+fuzuOn7s/j5TANESj225vGwOYcHAEiqCU7I7Eu4ZxrEznz9lUNlQr/ao/cVBS0dqPTiyBwuvj9Z55fAv0akdhKUenMtbffytwaJBo66gOwmmZMDLxtmK4MDJQLsLeajrl3N6oRZwVdCpDJgSy7P6fGlyY393mHVE30lZG5T6KALsuMKAKzPbEG1UI1/7atwKzohhDgJmXUma1hElnqzFX7UOADoH6JOtr1C0yAQMvPkzp+7SnhOnNQi73LbO6bVywAAGoMFOc02x39CCDZmt3h8D43R0q+LytjiAb5QG8xeBVv9EZ48soXB4kGaj9MEsG6iQmbKYKLFYcwp5yv71EyC4oy3DjeeYAig9CJEPlgiQM9PvDq9GUaL+3q1P6wn+wu+9oqArZg5raHvch8UCoXS21AhM4VCiXq25/vvXNSbKHUm/JrSSDdtFArFiaPlIpS1KVHdC0lZijMytXMQWUiFzBTKgEKqMXp0KMhukvXy2ZwjFGe8A2Fy6esLPtlfiXnfpWDBnnKnpIYnyhxcQlo7dHQNTaH4wS8pjTBbbfdKYUtHH5+Nb1Q6s5toCwBOV7fjvqWZOFsvRXqDbFDd/1UCFbYXBB7TUHSZ8Lffi/HuzlI88Gsm7vk5A4tO1SOpRgKx2gC51ogVqc24fXEqvjpaY39dbrM8YBfedpUevAi2KKf0DTkcOZqjWPjHV+h7pZORvwVnii6TXbjFkWnx1Jpc6FleSwgJSDjMEOBAKft6z8oQHCoT4L6lGfhoXwU+2V+JB5dl4a+/F7s9t6cgbHVas114cKRciOVnm9zEzdGCycJgV2FbUK/tMlrQ2keFb4QATZLgrk2J2oDfMjgAgIxGGTa7/DadOrOb22c4Okl1Gf3fj/QHR2a2ovQmqZZ1jTGQ4Mqdr7sKvi2u2KE14tXNhfjBoTuCycIgu1u8DAAnqtoB2Ip8G31cv/3VldlsZYJyTCdk4IlOI+nIDABnasQRPX60oglA5C/TRP9YSqGEi1aHMUeuNVHzmADpiNAcxDAEtaLgCv88FVoTQrDfYe+S1SS3F045oozizj/9DZHKv/spaZDOzRQKZXBChcwUCiWqkWoMOFoh6uvTcIIQgrUZHMz/MQ2/pjRBoh5YgTAKhRIaB0uFAIAdBcEl7CjBI9E4J2OEYWrT2l/w1LqWQhko1HpxZesrp1JCCDpCaLt6sFTYL92hDGYrKgRKaIwWHCwTYtGpOq/PtzIEFfxzQmaNwRLV7e4plGigWarFoTKh/f8F3Oh3ZD5eJUIRz/0812Zyoe8u+hB06v0qfuhPCDp1WJ/JtYmIHZyJGIbg8yPVCGU5eqKyHfViz6IdhsDJhdPCEKTVn3PqIYTg430VyPJQ8GO2MvjHzjK/nTwp/QdCgF1F/L4+jX5FjdDmhrxgTznaVQZWAbLaYEFXgN04DpQI3PalKr0Zf/u9CB/uqXATpOVzO9xE1KXdBWFqgwVr0jmoEqjwyf5KAMCugjZojdHnvr01j4cVZ5uCEp82SDQhjZ2h0hBkEcCSpAb7fAcAi0/Vo158bg/D5rgWHiGz/7+/Nwe+aIHNkVlnsoblu4pmuDLn9VGjRAOVzow3thajtUOHlDoJCri2wrbiVoXTfX+mRgyThfHqxtyDv4KZaCOlVgKjJbgOET8lNYT5bPoOQghaI1yAtiaDg+wmue8nDjAC6WQx0MTxFIonCCFuLvBlDvE9incaJRo8sCzL3jkhnPA7ddAEuQfwNIYV8TqdhOsAWGO+feHI3Jd5PnMEO1T548gM2IokQzFToVBChRAS0L6TQgkFKmSmUChRTZVABV6HLqrEWSWtnfjhVL09sEFdVykUSg/1YrVdaHe0XBiVycSBCiEEUpfCEqOFYU2ADVTWdjs/UWzXQ39ul0php95LG9kGiabXk/J5nA48/VsezvjRrtwTYrUBuZz+lyAsa1PaXWIBIKlG4tUdq0GscRP9DKbxmUIJhjO1YicRV5NUGzEnn3BxulpsdwTsQdCpc3JkB2wJmP6EykuSrstoweu/F2PhyTq8uKEA13xzBvMWpuC5tXl4fWuxUxFHb+Ho1HO0QoR9JQL8ZWMhPtlf4fZZFp+qR0lrZ2+fIqWXiKZYWn+gWqTC6nQOKgS2ON+mnBY3EW57EAJArrwL+0sE9t+jSaLB46tykN7APhaaLAzyuedc+BmGoLzt3H26OZeH17cW2QV9GqMFe0IQrXdGwKG3Q2vEsrNNEKkMKGkLfIyp81LA2Bs0eikg8UQFX+nkYAcAJiuDFanN9v9L1O5ChUAcvj3RZfI/9qToiv59sqd9QjBuvP0JrotQzMIQvLgh317IAADfn6oHIcRt/FAbLNiax/M4rjjSXx2ZQzGM2F8iwNk6//btlgiKlcKBTGP0u9tAsBACfLCnHFJN/7xWgiUQR2YqZKYMFhRdJjexbAE3+rtFRQPVQhWeW5sHmcaIr4/VhF0MWxOkGzMAj6Yc+4rd9xRsXQBU+t6NwVsZgkWn630/MUT4Cp1bcb7FyuC1zUWs6/hw0O6nkFlnsg7KIiNK39Mi78J3x2sx/6c0vLq5cFCZh1H6DipkplAoUU1ld/KgpDV63Kf2u7QArxZRITOFEimMFmu/amd3qPSca16XyYqj5dHlKD+Q0RotTs5HPTy7Ni+q5pBIIdcasbOwDUYLrcoGgJQ6KRV2D0C8CRoIsblGRJJingKf7q/E29tK8OeV2XhhfX5YxF+Oa8u6djX4LIn7MzXiqAoSFbS4Jy1WpTWzPNPmOPjZwUq3x10dPii9j6urDiW6yG12v8/Y3I6jBZXOjDxOB05WiZ2c5k+6CJuB/iVkJoTgn7vLWNdYDEPw4Z5yN8dkmcaIghYFUh2ckXuT9AabU49Kb8a3x8+5J+0tFuD2xalYeKIWgk4dTle3Y4Mfzo0UymDheGU7lp9tsv+fK+tCeqPzfRysAPDj/ZWYtzAFN3ybjD+vzPHpTJ/ecO59uXKtk0ukycK4dYfblN0StPjuQKkg7CYNv6Q0QtN9zscC7LTHV+iwLpMb1vMJlEAcmRmGYEtOC55bl8fqIn2qqt2+vmcTKgjD0J69y+h/HCDaHZkZhrDuh4DgnbL7Cy1yrdtjriKlCr4SJ6vETt0Xelh0yj+BTzjE871Ni7wL2SG6Wf77YJXX4rQeXlifjyu/OI07f0rD8+vy8PnhKvyey4uaYnk2QVkkkGuN+GB3eb/sIBUsaj11ZI42VDozdX/sY3gsDvD7SgQe52qKDanGgBfW56Oze95plGixPb81rO9RE4I2ga1InivT4lilf+v2zl52ZF6R2oR1mdyIFGA68ktyI97ZUQqpg2h5VRoH2c1yLI6QkDqQQtkN2VyYguxOQeldBtLvtDK1GRuyW8BX6FHE6/SrcJJCCRUqZKZQKFFNVXcgvTjCwhR/0ZksOF7pnIitFvatSwiFMpBJq5di4cm6qHfDAGxVwY7tvwFgZ2F4gxMUz0g9uI1J1EY8tzYfm3MGtkijrE0JncmKopbomC/7EkIIlp9twta81oDcVCjRjy9ntkIWcW0wlLV1sopLVqU1Y08xH6drxPZiu3BwuloMscqA747X4pEV2fj5jHPbW4PZiv8ervYpeOlNClvcxZTHKkRuwliV3oy/bCxg/b6oI3PfUsxT4KWNBYO+LWG1UIV9xXz8lFTPel33FQazlVW0XBBF5+hKSp0EFoZArjU6FTucqHQXMudzO6Lm2iOEeHWtrRCokNkow/EK98+xNLkxJFf+SKE3W5HZKMPPZxrcRBYaowXrs1pw50/peH93eR+dIYUSnTRLtbC4CLY2ZDnvI0VBODI70tFlYi3AdcWx4KO01bezu1CpR1JNcONRLqcDu4uCdzp1pV6sxk4H59STVe1+x3TqxWo8tSa3zwve/HX+7ewy4cUN+fjqWC0MZvbPyBBgSy4PgK0biyuhXlNAYC6iiigXMsu0RrvbuCtNEneh70CBEIIWmX/7va+P1aBJ6v5duI5fngjlmiOEwGixQmu09Kqwd2dB6PFVqcaIr47VeH2OwWxFBV+FLpMVrR065HMV2J7fhi+P1uDNrcVRsX5lExVGilxOB5Jr3Q1GBqqwNJCxVBCGIhSKb5JqxUjx002dEhl4cvc1mcnC+F08M1g5WCq0F/X18EtyY1i7bIXiyLy7iO9U3Ga0WPHPXWUe17Ou9GZhXD63A8vPNoEQICvEoiZv1IrUOFQuhExjxDs7SmGyMChr68TyVFuh68FSIcqC6DTji0AKZfO5Cnx2oDKqzE4o7ByvFA2Ijs0MQ9zMKH5ManDrXEWhhBsqZKZQKE7oPbSlEnT2fgCZEGIXPRRFSavT09Vit4VHKFWPFMpAIVIV2AdLhWjt0OFIP3A2zmmWu4lpq4Vq2u6nl5CqPQeBLAzB18dqURtEcEeiNgTVPri3Ke0Oojg6dw1W0htkqBKqoDFYnBLolP6NwWx1a7XrSjhEiEU8Bf6ysdCt+EGsMkTMQdRoYXDXkjRsyG6BlSE4UiFCg4O7554iPmQaI9J8VLv3VhDTZGHsY44jDAF+63ZCJ4SAK9PiZQ8iZgBoo47MfQYhBN+dqIOgU48NWX3reNiXyDRGPLk6Fx/vr8SqNA7+srEAyVEiSi1t62QV8UST2NqVU9XnRA494uW2Dh0qWMYAg5mJms9SIVDh4eVZHhNSuwtta4kN2S1O42xOsxwrPTjRRwOr0jnY5sXxycoQj0IxCoVyjlxOh1PcL1hH5kDhdejsBWJs6y421mdxA14Pmq0MCrgdOFIm8hgTDgSLlcFnB6rgmNeUa03I5/oe80taFXj2tzyPRcq9iURt9Eugcbyq3a/PtqeID7XBDDFLbKGY1+l3bPlMjZi14xRb0ZAnettBL1C8FTs2iAeuI7NUY0SXn/dgqPdIKOPY8rPNuPTz07jqyyRc8/UZrDjbFHEhg8FsxT6XDpnBcqhM6HVMLecrYfJQeJHPVWDB3r53KG7tRSEzANb15DfHalHO911k098IRJxfwFVEhbB9oHO8sj3gzg6U8OKpeOJEVXtUd4zqSwgh2FfMd3tcbbDgi6M1YXNqDUXIXC/W4NXNRXa9w6JT9QEdT6WP/HqyJ7b8we5y+94iI4JOsD8m1du7qxS3duKLI9X4cI/zvP/1sdqwrnsYhqBCENh8erBMiB+TzpmgdGiNATlV/5RUj0/2V+DnMw1+F29SAqewRYHspv7vXFzbrnYzSKhrV/vt3k6hBAsVMlMoFCeWsDj2NIg1WLCnotfPRaw22M+lRqgKS0A9VPYVuwfN2lUG2kqKMqixWBn8Y1dZ2APXSp0Jad2izBWpTb3uymwwW/HQsiw8uCwLz67NQ7PU+6ZuVyG7YHLB3vKwVlpT2JFqfCditgfh4PLdiTpWB75oo7S74Kc/tWoPF6er2+1uMIQQ/OrQDnpDdgtNLAwQmqVanwnDapE6oEp3K0PQ2WVCl9EChiHIbZbj5Y2F0Bot2F8icArKHigVIJL5SkfHC0Jgd2U2WqxYk24TB3srVJCoDdgfpuSuL6qEKo8OHQdKBViwpxy3LkrFPT9nsAoYe6COzH3Hscp2e+J5dToHEhZ3wMHAzoI2J6GC0cLg7e0l2MuScOptcpvZHeZr29W9kjAKlC6jBZkOAfrT1WJYrAxOVHleQ2VGyZrlRKUIUo2tg4frb681WnC0O3Fe165GHtf2u6gNZny8r/djJIFQwVeCmvRQKOHhr1uK7OJRkbL3ilx71n5lbf4lt8v5SpQEaARRKVCiy2SFxmjBSYcxW6U34/uTdQEdCwBWpjWzitt8iZCOVYjwwvoCqA3R41rV6If771k/XSK1Rgt2F7ZBzFKALdUY8fiqHKz0EfdKq5fi3Z2lWJHqXETTrtLb5yp/iHRL7lDxZpTAkfneE/ZXuH66MYeDYIv1T1S245eURvv/CQF+Tm7E29tLItoN62RVO5RhFOAvSWrw+LcCH4UJJ6vE+PpYTZ86IbK5o0aSnOYONDs4gItVBhwsE+Db47UDzhHS1T3VG3qz1b43oESGzi4TcprlyGiU9ar7K8UZnhcTgm/CLOocKJTxleB4mNdPVLbj6d9yQy5KkaoNXjtL+UM5X4k3txbjRGU7NufwAnqtUmcOyxzAltOTqg3425YizFuYgnt+znDqaJLRKIvINZfLkSPdRSS9u4jvdv2X85X4LZODXI4ceZyOkH/HcoEScm3g49uadA7e2FqMPy7NwA3fpeCpNbkQq3zHdrOaZFiVxsHeYgFWpDZjdRQX5/d3ytqUOFvX/02nPOWblyY3wtwPOmlT+i9UyEyhUOxYGYIj5SJszHZ2oFubyUEhT9HrVdaO7m0WhvR5lTdfofMYnAil8pFC6e+crBajgq9EdZjdyY9XtsNstW1KeR26gBIz4WBfiQC17WrUtatR2KLAmnTPjoVtHTok1bi32gNsSamP9lX0+6COwWyNugD13mI+Vpxtglxr9Ctwc7hMGJC7RnaTHMcqRDge5dWlFitjnzObpFoIezG53tdI1Qa8t7scDy/PQmlbJzKb5KhwWC/INEYcKhOyvnYwfU8Dgdp232stK0N8ijc6tEb8Y2cpbluUiks/P4Xrvk3GlV8mYfZ/TuLFDQX2Vt86kxV7i2yCNk9OGpHkTK0E5Xwl9pcI7AHbAq7CYwvXDVncXpsnvbmomq0EB8uEaPcjeEqFzH2DwWzFYocWoDqTFYtPD76WoCYLw1rgZGUIPjtQCY6sb1uXZ3tol0kIkFIrQWajDKvTm7G3iB8V67O0BqmTq1BHl81909saKhqKrwghOFllW8ObrAw+2V+JdZkc+9+PVYigcyio3tQdK/nmWC1EfoxzFAplYCBR24odfs/lQdSL3XrSG2VQG8xo9FFU7ci6zMA6LTgWzuxxWPt+sr8C67O4AXXQKGvrdBPZ9nCqup3VfY4QgpWpTfjnrrKwudOFiwYfDmU6kwW5HP9FbJtzeB47HpqtBEvONOKBZVl4/fcivLerDF8drcGRciGESj2ym+R4a3sJzFaC9AYZqoXn4m9bcniwBBBv6oxyMZi3791oYQbsHqLOj/1uuBCpDAGvH6uFKny0r5z1b2dqJXhpY2FExAwmC4Pfc3lhPWYupwM5HtbahTzf9/TWvFa/xlorY4sj5IdZ7OrJHTWS7HDYN23OaYHZaou9HA/ADb4/oA6wYDR1AAiUopmkGjGsDIHZSjzmXSiRh+elO16VUIXFp+tR1tZJjUQc8BVDrhSo8PDybGSF4NYaLk1CLqcD7+4sDfh1Fob43UnCEyWtnfjrliK3vOnqdA7O1ktZBb5yrdGvHEGgeCtycuXH0w14cX0BXlifj7uWpOPDPeVe7xNv+FsUyUZyrcReaMSVd+H5dXlei9UMZiv+d7ja6bGkGonHXAMleHr28GkNkRHe9yaejHX6SydtSv+FCpkpFIqd0rZOyLVGbMtrhaq7yl2k1ONo90S0vpfbDle5OLgV93GbGm8ud44BZAA+nVsd2Zbfitd/L8LBUkFAAjsKJRoghNiT/an14Q3euYoPV6Q295rzipUhWO8SlO5JILGxObfFq1NneoOs18fQcKIzWfDa5iKU+ukE1VvsLeLj5+RG3PpDql9V4zqTFYdK2UWtrhgtVnxxxLaxrxCoer11YyDUizV28SXg3bV1oLEhuwUmCwNehw7P/JaHT/a7uyOuzeA4OadZGYKlZxpwz5J0cPtYqEbxH38Tu4UtnpOEmY0yPLAsC8cr2yFU6n0m/Lfk8mCxMihsUXh1IIkUi0/VY3XaOUGdycogj0UsodSZsKOgDXmcDvsaPpJ4+44DoV2ljzrBSl/AlvAXKvXQmcIfSLZYGSxJanBbzxwsFSK7iT2ZH82EEgw+USXyWATFEGCVByFWb6A2mFHppbXkR/sq8PKmQvx4ugGfHKjE37eX9rlD1elq98TyqrRmr8m1JqkWafVSpNZLcKBEgORaidNvItMYkd0kx5p0Dv6+vQR/+iUT/9hZik3ZLUE7CbpSIVC53Q/fn6y37wN2u3RcOVsvxfpMbq854FMolOjBwhB8ebQGBV4KusJNPrcDhVxFQO7qyXUStASQSM/hnJv/C3kKcGRabMrhIalGAkJssQ5/6DJa3FovO6I2WLDwRK3T2k9vsuKDPeVYcqaR9TV9TYPY+/4ju0ke0Fq2XWXw6brbLNUipU6KoxUibMnl4f3d5bhtUSpe2ljg9F6rut3TNAYzdhawdwfzhMZg8SioDgSD2drt6tYctqIqvcnK2g3RkQbxwGuBzTAEOz10eYsEJguDjgCcuRslGrz+e7HHrjyArRPEL8nhvZflWiNe2lDgtctPsPyU1OB23ZosjN+u9j+cqscJLyLejEYZHlyWiY/3V+I/B6tgtIRH4EcIQWsfxCb2lwigM1mg0puxw2HMWXSqfkCJFwON+6TWS6OiqHSg4tjdp7cNbig2CCE+iyfWZnLxxOpcXPVlUlR0t+pr9CYrjvnR3VNrtGDRqfqgx5CaMJtKBUMocSiLlcF/D1WhWqjGyepz35dYZfC5Jgp3UXylQBl03pMQWx773qUZ2JYfeDfYlNrw5fF4HTo8tzYf6Q1S1j3ZmnSO2zynN1tZ43mU0Kjkq0CIbS0bbgO43kSlN3u9N7YHcc1TKP5ChcwUCsVOz2JFa7Tg9zweAGBjdotd5HGqqt1rezdvmK0M/rqlCI+tysHDy7P8SpRXuCRviwNsjxhOePIup8pzVxw3DV1GC17eWOiXkERrtODX5Eak1EmxYG8Fnl6TG3XBj0ASIJTBRx63A9VCW3InrSF8G8jWji634HGLvMvnpipcop/T1WI3lxcLi7gZsC3me1w7vfFTUgPqfSTCohGNwYxXNhUij9uBQ2XRI9qQaYwoabNdIyYr47e77rb8Vr/G2fWZXHAdxr9odhlxvVdc22BFA8cqREGvITzR2WVy2ixbGQIJS6teXocOty9OxZtbi5FSK8GrmwuxPLUZRguDzw9XR928S2HHfyEzu7hkbQYHL28qDKjtnlCpR3KtBHv6KBCfx+1wG9vSWAoVtuTyoDNZYWEIztZ7dnLYXdgGbYguC1aGoJgXnjU5QwaOMzohJKjPUsRT4IM97s5mi0/VY0e+58C9wWzFU2ty8cOpOr+dg8v5Sjy2KgcbstkFSX/fXtKv1ilaowWvbSnymjgvbetEaVunm8iIEOKzAOpwuTBoR5VQKeAqvBbIuXK6RoyHlmVhW34rpOrAXIIJISHPz4JOHWu7RH9aLb+2pQh/3VKMj/ZV4I2txZi3MAW3LUrFDd8mY97CFLy0sQCLT9fjVLUYDRINjle245vjtfhkf2VI59zDySr29d3Ck3X4z6EqN+EMIba/USiUwUtvbh0MZga/ZXB8P9EBQoCN2f4VURvMVpS2Osdevz5Wix8cxrm9RXy/TBe+PFrjUwD2e16rvZV2W4cOT6zOiWoXp0ax9zVWX7YKPl0jRrNUgz1FfGiCWN/7W+DNBsMQ/JrSiGu+PoO/bCzET0kNYRNA7CvhQ+FDYNvkwym7P5LRKLM76vUW7Ur/1oxJNWI8sSrHqa27J9ZkcFgLb4OhRqTCYytzUBghY5tyvhIpLvdwlVDlVaztyod7y1HS6n5+Uo0Bb20rRqPknEviuozwmFsIlfqQ9/TBoDFYcLRchJ0FzjEFoVLPGivvj/DkXcgM0B1VqNT7dO+nBEeH1ujU9SCP0wGphnbE6W2apFpoDP6NORaGYFVaMywRcOfvT5yuafd7nK4RqYMW0EZDl2hlCGYaW3J5qO8uTlt6ptF+3axOb/ZZKBhuIXM4xJhWhuCLI9UBFV3wFbqwzyFtCh1e3VyEOxanYukZ2xq9pFXR3XGYfV/pqZspJXjK2s7lTsJtAOcJQojPPGeguYucZrlXc7lyvtLN6JFCCRdUyEyhUADYJjjHoOOmnBaIlHrscqh8Ywj8crxk41CpEKn1UlTwlagRqfGfQ1XQe2k7QghBlcvkV9raGTE31sxGGSQeAnJtHTq8sD6ftY1JDz1CTgDYW8yHSGVgbVXsysasFicHhEaJFvncvnWediS1XoK7l6TjhXX5yON09JnYS2Mw93pAl+Ifjq30KgVKyLX+C8S84WnztC6T4/E6lGoM+L8NBSGPE44u067sLmpzS6rsKWrzq42ShSH46mhNvxJNWqwMXt1chKJu0drxyvawuYiESmq9JKgkcrNU69NFK6lGjF9TmpweOxbFzg+lbc6iwtzmwJyhwoG3FqIWK4OfzzRgU45/bl7+srlbvOkPDLG1O319azGyHIqpcjkdOFwe3mCN1mhBPrejX7WNEir1fjsP9QWEENS1+xfYq+Cr3ISNazM4+OFUfVDvvSaD41Ho1hekN8ic5pEuowVbHFrtemq3KdUY8PWxWnx3vDak969rVwcllvBENLvdB8KWXB7++HMGdhe2+T3PK7pM+OfOMpyobHcKwlcKlDhaIcLaTI7H/dKK1CaUtHZibQYX9/6cgY/3VbCO+2Yrg/QGKd7fXYYnVud4TXRojBa8uqkoLE63Ja2KiCfYd+S3IqNRho/3V7p9500SDV7/vQhPrs7Fk6tzcdVXSXhubR52FrRBbbC5SVT6cHZjyDm3w97GU6trZISflgAAIABJREFUb4hUBvzvcDX+8MNZPPtbHjr8XJMn10rw8PKsoFteWxmCBXsqnDpDhIpQqffpEpjVJEdmiMkrQohXJ71AHS4pFAolEgRj6rC/RIBOP9xWi3mdMLns4zIbZU5dS7pMVuwp9F7Ud6BE4LdTfU8r7UdXZtvFC9FKg0TjcV3HMARneykpzQYhwPKzzUHH6Q+UCoKKTakNZryxtRi/pjTB6LD2XJrcGHIszmJl/OpkFo2iQV/fJSEE1UIV5Foj63PX9YEQ1JOQIb1Bin3FfBwpF2LRqXq8ta3E79bxhAAL9pYH1SWIYQieXZuHOf89hdn/PoGHl2dHvOh18el6pxinp6JoT5gsDN5m6YyyOo3jJohemdaMtgDdfl3NOvQmK/6xsyygY4STLbk81rjemgzOgBCYbs5pCSrO7E9Ri1xr7BMBeiQ4WycJuHjWEbOVceqa54mkGonTvMIQeN27DQQsVibofXkkIITg88PVAb2mtUOHk/3I3bVJosGHe8qx+HQ9DpUJQs5tEkKw28e62ZVtebyg3isahMwqfXBCZpFSj6UOXRy48i4cLBVCpNT79f2VtnaGrbu1SmcOW2ElIcCCPeV+d0tNqfNsRhIqIpUBy1Ob8fb2Ejy1Jg/Prs1z2/f1kMORQ6zq//O4N6wMwQe7y1DO752Ow2UO75PWS3vGdZlczFuYgnd2lGBLTouTmY/JwuB/h6vx8PIsv+PFgH+df6krMyVSUCEzhUIBYBPiOgaHlDozXtpY4CYQ2lPU5lHw6wmLlcFKlyRwm0KHX886txtLq5faJ1ZBp96tmk9jtOCHk3XYXdiG9AapV9FUIJi6HRlfWJfvtgnnK2wi5nYfi7g2hQ4qnRlWhtgDOltyeV4dwjq0RtYA7e8OYhR/OVYhCnv7aanagH/tszld5XE78ML6fGzN87wgsTIEW/N4WJvBwZEwOpjJtUa8sD4fb24rjkiLbQo7Fivj01GlSqBycn4lBCELCgBbUGp1GruQuEKg8ij2/+poDcralDheGdrGM5+r8Ni20GBmsMUhaGuxMtgSQOIon6twaosW7RwsEzqJG5U6M9Lqo8PtN7k2+I3+1jyex7+dqRHj3R2lTslbAKgXa6K2oMJVyNxlsnoUM0aCE5XteHh5lsdk1cFSIXgdOuwt4nsMcBnMVqzN4GBrHg+nq8U+E+8ag9npXgyF747XhdQKzZG6djX+vCIbz6/Lx51L0rDibFNQQVCt0YJ1mRyUtCoiKkrnyrT4aG8F7vwxDa9uKgzL3N0k0eDfB6tCvgYNZitym+Uo5imQ2ST3OzhqsjK4/5dMrE5vhkxjxPpMbtAiZsAmtgjElSnSCJV6NHWPRYQQ/J7Hc1ozZzTKWNdLy1KaoDdbsbuIj7NBBEplGiP2FvPxTYhCaFdWpDajWeosRpCoDUEHw/uCGpEKP5ysh95sxWcHq/D29hJUC1VOxQwMY3O97XEYYRiCBXvL7c5mXx+tgdFiBSEEC0/YXBDlWhNrR5gGsQZrXRy99pUI8JeNBfaxTNCpw8ITtfjD92fx6uYiHCkX+ZWUFasNeG1zETQhJAQqBUq8sqkobGM0GwazFeuzbMc/ViHC8rPNYBiCjEYZ/r69BH/6NdPJYc1kYVDQosB/DlVh3ncpeG+XfwKAg2XCsHcT8IdcTuBC5h4IAQp5Cny0r8JnQY2VIfj5TCPUBgv+srEAh4NwYfktgxMxpzxf/HCqnvUzEmJzwnl2bR5WpTV7dG6sEKgGjCs8hUKhOGIwM1h4sg5VApXX2GmOn/PNllyeR3e9ZqkmYJGL1mjpF2s9ld4MqYduLpXdotS+5GiFKOh5jNehC7iQVaU34/GVOawC7iapFkcrQisQPlktBl/h+/M0SQKLy0TaTEBnsuC5tfl4eVMhDpYKWMWK+0sEeGRFNm78LgWXf3Eae4rOFUtVC1V+dbEIN2zFi8m1Ery2pQgf76/E+7vLA3aEtx3XgPd2lwXsyLmvhI/CFgVMViagziSh0CzVYvnZcyYGhS2B/w4yjdFpjyxS6lmL4YwWBl8e9a8jmC1XVYU7f0q37wusDMH7vSjAYaNerGHtcKUzWbH0TCPLK/oPKr0Z+/wsyHHFm9MiwxDsKWrDvT9n4JHlWagU9N3vFw5kGiMW7K3AixsKWOdARZcJ3xyrxSf73feiRytEeHBZFq744jTm/5iGCh/XMpuhyL5iQdhywtHIllwe3thaHDV71H0lgoALPABgTbpnI6JowWJlsDq9GQ8vz8ahMiHWpHPw4Z4KPBzifboitdmngY4rJ6raA+oeCNjGLNdusn1BMI7MFiuDj/dXuGlPfk1pxC/JjR7Ftk7HYAhygzAAYGNfCd+pOC9ULAzB29tLkOJH7rIvu7s4QghwJMxGP+Fmd2FbSPvHNenNOFwuwrNr83CwNLJdhwkhTo7MFQJVxAu+jpQL8cOpesi1JpysEuOrY7W4bVEqFuwpR2ajDM+vy8O2/FYodWa/u8wRQvxyPz9SLuoXe3tK/yNsQuaYmJiZMTExm2JiYkQxMTHGmJgYXkxMzK8xMTHjAjzO+O7X8bqPI+o+7sxIvzeF0l8xWxlI1QY0STRehbPeOF3jLqzjytzFLF0mK+5eko7Fp+v9cvcAgMPlItZF9YasFlQLba55/z5Yhde2FOGeJenYlN3iJsqyvya7BZ8drMKrm4uw0UNb5EDZU9SGNoUOXHkXnl+fD6nGgGqhCt8cq8Vjq3L83jjWtKuQVHMu6CrTGL0mg1enc1iDm2dqxQFtVo+UC/HPXWX49ECV3xvEnhbCSTViVqECwxB8uLfczXl20al6VpFTu0qPF9fn44sjNfjhVD3e312OJ1bnoMWLIEpjMPs8X0GnDs/+lodqoRpcWRe+ORZe8QzFM+uyuHhnR4lHYbJUbWuT50paA/vzz9ZJcMYPUduWnBb8Y1ep1w0rm1tyUo0YJ6tsx1+R2hy0E4ygU4evj9V4fc7G7Ba8/nsR3t9dhnd2lEIUYLXqwhN1fonyQxEROUIIwZFyYcBJKoPZil+T3QPRh8oiu9HzB53J4uSqGygnq8Sswf+zdRK8u9NdxNxDj0ieENLrQcUqgQqbslsg6HSeT2UaI2uy7+tjtX7P08FCCMFvGRy8u7MUjRItPthT5haoNlkYLOtODHWZrE6dHnpQdJnwl40F+OFUPb44UoO3t5fg7e0lXhNfvyQ3Qe1naztfdHSZ8MWR0N3S9xXz8fiqHHC75z6+Qo+fkxtxx+I0LDxRG1BQcumZRnx/sh5PrcnD3K+TQhLueyKnWY5HV2TjQKkAFoZAY7Tg7e0lXjtmeKNJosGrmwtx3y+Z2FXYhv8eqmJtC2wwW7Ehi4t7lqR7dFMxWxm8u6MUL24owNO/5eGVTYUBnUubQocfTzfglh/O+h2c6U8cKBFgbQYHD/yahR9PNzj9zWBm3OZujkyL3UXnHC0+PcD+2wDOiX6jxYoj5UI8tzYPN32fgk/2VwaVxPBGSWsnHlyWhSVJDShsUeCfu8pw26JUPLEqJ2qLRxzRmSx4b1eZ07olqUZiEyosTMG7O0rx8qZCXPvNGdzxYxqu+zYZb28rwcf7K52KwbjyLmzK5uFsndQp6bE2k+u0v2MYgv8cqmKdpwpaFHhidS7e3VmKO39Kx/qsFp+tudmoF2vwj52Biw8AoFGiwSubCruLMbgeA5lWhqCkVRF0keK+EmennF9SGnHb4lS8sqkQp6rFXsUPRgvj9xxuZQh+SmoIeo/tilJnwtJkW3Jmax4PBVznjjcMQ3C4TGhvQx0K6Q0ybMh2Fry77j2PV4rsroZmK8EHe8px8/dn8eCyLPxlYwF2FLR6nRPK+Ur8wrJW7C3q2tWsXRW25bdia14rClsU+CmpAY+syGZd90WT2z6FQqGEm/0lAjy6MhtzvzqD93aVsTovObZs94ZQqcd/DlWhRnSu4LtnT/zujrKwuvJHGw0eXKODKQyMNvx10e7hh5N19r0uG7+mNNkFZmqDGWfrJOjy04GUEIK1fopmOTItDpYKnOJ+hBDUitRO6xalzoQvjlTjGR+dKjgyrdt6R6I2YPHpepysavcaV+lx5C3kKZDZKMOCvRV4cFmmk6tdu0rvFM82mBl8eqDKXvTnjwt1JHA1bakVqfH+7rKgHGldyWiU4fPD/ol2AVtMKJTi41D4LYOLSoESVoagmBdcl6qDpUK7YGllWrPHmHZagwzPr8sHV3Zurc9X6PBTUj12FLSCI9NCqjbgxfX52J7fBpnGiJc2FODXlEZ8e7wWZyIQFwoXe4r5qA3BHdTX3jOlVoLt+a1+XVOEEJ+FJq7vt6eoze+Ob66UtnWy7rtrRCo8vy4fnx6ogkpvBq9Dh6fW5GJVWjOOlAuxLKUJS5Mbwyr4jLTI9+tjNVDpbZ1TX9pgK6Q2WqwoaVXg5zMNmP9jGjbltGBvsQBfOnSl3F8iwPu7y1DXrobZSmBhbHtPT/GAw2VC1gKP2nY1PmPJgQZqvBWN9DjUagwWfLi7PGKdif1F0WXCD0HGU+va1UgPg9mRI0qdKeB7pSd/6SrEY7qFpj+ebnAbryVqI575LQ9Hg+jMuT2/1cll2F/MVuJU4OQPoYy34aRSqAz4d/n2eC1ymt3vb5HKEFBByb/2VeK747Ws8b2eIpKTVe1ez49hCHZEoBOXwczgjW3F+C3DWdTv+G+1wYyCIAqoIsXBUqHH74oQgmapFofLhEHFiv2FEIJfUxrddDUlrTZjir9tKQoqjlzSqsAv3d13TRYGC/ZWYOmZhogVXPA6dOh0Efmne9BNuBoYGS1WLDxRC47M/7hwbrMc/9pX4X5sK4ODZUK8vKkQpW3nYqIHS4U+DTQIIThbJ4VE7TufqTdbPYrDm6WaqCnOofQ/YsJxk8bExFwEIBfAZABHANQDuAnA3QAaANxGCPE5GsfExEzoPs4cAKkAigBcBuAxAFIAtxBCuC6vCct7ezmnkuuvv/76kpKSYA9BoQSMlSGIi43x+TxCCL45XuvURi4hLgbXzByLWy6agD9fMx2XTBnl13ve+3M6OCzCZW+MHBqP1++4EK/fMRsjh8azPsdiZXDfL5keBa2XTxsNwLa5cWRIfKxPB8Kh8bE4/cF8XDhxREDn7YjOZMH8H9OdghtD42ODqsD770OX42R1O8ocFgSzJ41Ayod3Itbh99QaLThYKsB3x+s8Brb+ftdF+PSBy3y+Z0ajDH/bUmQXM3z+8OV4/Y7ZXl+T2SjD+7vL7AupCyYMx/Lnr8M1540FYNukrkht8tiecN6scdjz5i2IjY0BIQQnq8T47+Eq1urLCyYMx8G/34oJI4faH2MYgv0lAiw6XY+P7p+D//vDBazvc7ZOgs8OVrkJv1b/3/V46OppXj9jtKA3WTFsSFxfn0bANEo0eGR5NkxWBqMT43H0H7djlsN9pjNZ8Py6fNaW3GOGJaDk8z8iPs5WK8UwBCvTmvFLSiMSYmOx5bV5uPXiiU6vMVsZFPM6cahMgL3F/m1Wz3w4H3O6xze1wYz7lmY4LapXvngdHpk7PaDPndUkw3u7ytw2GZHgH3dfjH/96VLWvxFCsOhUPUrbOu33mr+o9GbUtasxcmg8JowcAmGnHgtP1qGsTYlRQ+Ox7fU/4Nrue90XG7Nb8C2L82ZCXAyK/vtHjB0+xO/zCjenq8V4e3toa7NrzhuLQ3+/1f79Nku1+PPKbK+B6/PGD8OdcyYhtU6KdrUBm16Zh7svmxzSefhDh9aIR1dk20XzV80YjbvmTMb8OZMg1xrxzo5S1tc9fu10/Pr8dWE7j3qxGrsL+RB02jafaoPZTdT4wR8vwQd/nGP//7b8VvzPwaFr6uhEZH16NxK6xwiOTIu/bSkCj6XF5lt3zsa/H7zc7fG9xXx8sr8yLJ/JkcVPXY3n5p0f1GvzuR14cX2+V/FcYkIs3r3rYrwxfzYSEzzPDdVCFf68MtvpWEPiY7H51Xm4rXv87NAasS2/Fa/deiHGDE9gPY7FysBoYTCCZY12sqodH+wuZ12HPH3DTPz09Fx06syoEalwxbTRTvO4K3qTFStSm7Auk+smrnxk7jSsfPF6ALax7XhlOxadqncKYDx53Qx89diVGJ1o+xw9TkPHB3jLyEjyxHUz8Mtz19r///a2Epx2KSa66cLxWPN/19t/W0II1mZysfRMIyaOHIIpYxLR1qFDR4QLIrwxamg8fnnuWkwcNRRn6yTI5XTg9osn4v9uPh+TRyUCsLUAbFV0YcywBIwfMQQjh8YjJsb/eTNQrAzBytRmKPUmjBmWgGqhOmytAIcPicPkUUPdxsP/PXIFXrzpfNSIVDhR1R50C/FAefXWWfjqz1fa/08IgdHCQK03IzY2BhNdxoU8Tgfe213mtHZ/756LseB+5/VOLkeOb4/Xoa5djSFxsZh34Tg8ed1MPHHdDL/WPGYrg7uXpNvnot5gzLAEPH2D7RyHxsfCYGYwZlgCzp8w3P4cK0OwKbsFRosVr9/hPM4TQnC0QoRvj9dCrnW+p+bOHIO35l+E0cPisfh0PaqF4UtIxcfGYN/btwCwFdFmNMrw5aO268nCENy3NIN1/nVk7PAEPHHdDIwbPgQWhsBsZaDUmdHZZUJJW2fAzkHhZvqYRJxZcKc9HpHTLMfLmwrdEr8TRw7F4Xdvxcxxtt/seKUI/z5QBc0AafFMoVAovpg4cgh+eHIu7rlsMqqEKmQ2yvBrSmPAzqeXTR2F88cPRzlf6dGteCBxxbTR2PTqPEwdk+j0+IPLstxi2f2NUUPjUfjfP/oVt8zlyPHi+gKfz3v/3ktszqbFfHSZrBiWEIc/XTkFd1wyCVNGJ2LSqKG4aNIIe8ywh2BiPJdMHon37r0EYpUBu4vawJF1YVhCHO6+bBIunzoam3Ja7PG9WROGY8trNznFNgFbUeUrmwoxZlgCvnj0Ctx/xRQcr2zH54er7QV5MTHAQ1dPw3ePXYVxI87FwbztWy+aNAJ73roFE0YMwSubizyaRLx++4XYnMvrE8Haw3OnYVX3Xl2qMeDxlTkBGzX44uM/XYp3777Y5/M+2V/hdzw4Elw6ZRS+f/JqPLUmN+hjTB41FJtenYfHV+V4NEfoYUh8LN6aPxttCh2OV7Y7/f5xsTF9LmAMltsunoDtf/sDYmJi0Nahg0Cpwy2zJzjtzzu7TBiZGG+PCQK2Lq0f7i3H9eePw/PzzsM9l012GiOqhSo8uzYPOpMVT10/EwufuApD4mJRyFMguVaCx6+dgatnjgFgEzv+a18lyvmd2PLaTbhqxhi381TqTHhpYwGunjEG/37ocgxPiMOdP6WHJLRZ+MRVePK6mUhMiIVEbcSSMw04UCrwqzDgx6fn4tkbzwv4PQkhEKkMKGntRB5HjpzmDowbnoA9b93iNeYYLCm1Ery+1dnUZuLIoVAbzB7zuO/efRFmjhuO/xyqYv0uXvzD+fj+iaudHuPItHh0hff4/Dt3XYRPHrgMOpMF3x6vxe4iPt64YzYW3DfH/tnVBjMECj0mjhyC8SOGuM070cZb24qRVHMutvSv++fgH/dcEtSxGIYElE9yhRCCj/ZV4GBp8A6tN80aj73dsQjH49aLNbhs6iiPcTuLlUFtuxpTRydi4sih4Mi02JDVgkNlQsyfMwk/PT3XaS72dP6HyoT4+lgtVHozxo8YgpPv3WFfyy0/2+SX4PiVWy7AZw9e7tc66ViFCO+FUAw0bUwisj652+/rdPHpeqxJD7xrQiR47NrpWPjE1R41Io5sz28NuJOLL+JiY3DPZZNx3+VTcNdlk6DoMuG/h6rtpk7Xnz8W/3noctxwwTi36y67SY6XNvpe34bCo9dMx5RRQ1Hc2olGiQYPXT0Nb82fjQaJzUQimvjPQ5fhr7ddaL8OjRYr1mVwsaf4XD7wtosnYMUL12O8j/swUMxWBv8+WIX9JQIMiYvFzjf+gBtnjYfOZMFDy7Lsscs7LpmIDa/ciKHx/s1zSp0JDy/PZp3j37v3Eiy4bw7Lq0LjYKkAC/Y6C4svmTwSS5+91r5eMZitWHSqHgdKBfi/P1yAv94+C11GK/65qxTVQjVunj0eu9642WeOo0GswdNrcgOObc6eOAKnPrjD7XuUqA3YksvDsQpRQHH3iyaNQMqCO53O90i5EB/vr4TJwuCiSSOw4L5L8fDc/qHtoYSdoBYl4RIyJwG4H8B7hJAVDo8vBfAhgLWEkLf9OM5aAG8CWEoI+cjh8fcALAOQRAh5IBLv7eWcqJCZEnEIIUipkyKpRowqgQqtii68Of8ivHPXRR43nYQQfHW0Br/nubcbdmTuzDF46vqZeOza6ayiM0GnDkk1Elaxmr+MHzEE79x1EZ6dd55dhNLDoTIBPtzjXgkULjxN5gxD0KbQQdCph1Cpg0hpgFRjgFhlwPnjh+Ptuy7CtDHDsCqtGT8lNXg4emDMnjSC1cX61VtnYea4YYiNiUFrRxcOlApZnZgdGTc8AXn/vhdxsTE4VCrEmVox5kwZhatnjMHoYQloU+jQ2qHD1jye06Y+LjYGW/96k13o5EqjRIOnVrsvauJjY/DWnbPB69AhuUbis33L/x65An+6cgq+OFLjtX0WYNsobHhlHlrkWtS2a3CoVGCv/kpMiMXxf96OiyefE9yr9GZ8e7zWozPI6MR4rHv5Rtw8e4LX93VFqjEgpVYKQafturhgwvCAxP49AoRtea3o6DKhQ2vEzbMn4K07L8INFzg3AChp7cSK1CZkNMpw1fQxmD9nIiaPSkQ5X4nStk5cf/44/Pfhy90EIMFS167GniI+jle2Iy4WGD9iKC6cOBzP3HAe5s+Z5FdhRA8WK4Mn1+Q6iZQvnjwSy56/FiOGxCMxIQ5fHq12Cqy4sv/tWzBr4giUtHZibxHfqe3k8CFx2PnGzbhq+mhkNctxpEyIs/VSaAJ0Vn3iuhl4bt55SGuQIrlG4uYKM2fKSJx+f75fQZvOLhPWZ3HxWwan19oXxsYAH91/Kf5+50VO52ixMvise8MGAF88cgX+evuFXo/FV+iwr0SAjAYpqoQqr59hVGI8drz+B1w4cQROV4uR1iDFu3dfjCunOwd2tUYL5v+Y5tHJ8bvHr8JLN7MXIYSDLqMFm7JbkNogxWVTR+HyaaPxwFVT7cK1j/ZW4EAYWgD99PRcPHPjedCbrHh8VY7dldBfRiXG45iL0B+wbbyPlosg0Rjwt9svZN1Ymyy2wNz0sYn2z8WGxcrglc2FrJXq/rD+5Rtx3xVTvD6Hr9Bh2phEj8GyzEYZlp1t8svVOyYGePnmCzBiaDxiY2Kwt5jvluD+9blr8YfZ47EqrRl7ivgwWz1ftL+9dAMeuGqq/f+FLQr834Z8r68JlsSEWBx593ZcOtW/eaEHRZcJDy7L9KtCGbAlUT9/+Arcc9lktzHKyhA8sTqHtVBkWEIctr9+EziyLnx/sg5KnRkXThyB9S/f4DSPArYgzT93laG0tROPXjMdz9x4HhITYtEk0aKcr8TWPJ7XsWLSqKF2cdqkUUPx8zPXYP6cSSCE4FhlOxafqodSZ8KwIXEwWRiv7thr/u96XH/BOHx+uNqjs/TQ+FjMmzUet1w0Ac1SLQ556WhB8c2oxHgseeYatHXowJVrsauQz/q8aWMSsfLF63HNzDH46lgNtueH34UiEiTExeCWiyaCr9C5FUvecclE/PzMNZg82vO46orRYoXBxGBkYrzTmslosWJIXKx9n2GyMPhwTzlO9LKL65D4WFgZ0icJ7S8euQIXThqBU1XtSK6V2MUgcbExeOza6Xj37osxdXQiFp2qx7Z8933pyKHxyPrkbowbMQQt8i78cLLOo5PYVTNG4/OHr/C5xt9T1IZPD1SF/uHCwD2XTcab82dj7PAEfLq/EhXdY/d544fhPw9ejsSEOBS0KJDdLAurQDkQhiXEuTllPnn9DFw9Ywy+HiDdbuJiY3DJ5JG4esYYnKmVeHQCnzNlJLa8dhOWJDXgIJ1nKBTKIGVUYnzA8ZfBztTRidj06jxcMX006sVqrEht9thZpr+x7Plr8di1M7w+R2+y4oFlmWj1UfzkLzfPHo8VL1yPSaNsMdFDZQJ8sr8yInt8R8aPGIIF983Bg1dNxYSRQ1HEU+DVTYXocoirz544wqPr9ORRQ/Hj03Nx6dRROFwmwoFSgdcOMldMG43Hr5uO70/2jdOwL66cPhpvzp+N09VipDfIIuas/uR1NpHpZVNHY9bE4Zg0ciji42z7mzaFDgXcDnx2sO/X9uePH87aUTQQhg+JC9rVd6Dw97suQnmb0u6me/m00Xhr/myMGZ6AvUV8pNRJMGV0It6562I8dcMMbMxuwU9JDU7iv5njhuHDP87B49fNgExjxOOrciB2cNy9ZPJI6M1WJ4HNw3On4dG50/Dt8Tq7WGnk0His+8sNToYqKp0ZL20sQJXQtm+bNiYRD109LWydX2NibEqNQLbuI4fG4/QHd9gLLgmx3RtTRiey5oabJBqsz+IivUHGWlD0/LzzsOipucF+BDcIIahtV+NvW4qdfodwsez5a/Ho3OmIjY2BwWyLz9d76IbgyJvzZyO5VuIUE5ozZSSevfE8ZDbJkceR2+eVmBjgswcuw5vzZwdd+G62MpBrjejQmqAxWHDjrHFOgnxCCLRGC0YlsptNqA1mvL+rDNPGDsP7916CKQ4xq+RaCd5wEYnHxcbgX/dfipdvuYDVoIINu0FBciNmTRiOS6aMwp1zJuHRudP9Nlvq0Brx+eFqnKr23VnVF9ecNxY3zRqHGy4YB668C/uKBWiRd+GZG2Zi4RNXY0i8cx6iXaXH+7vKUcizmaYMiYt1y1NPHZ2In5+9xmP+22C24osj1W7FMfNmjcOuN25GDqcDr24u9FtwPHvSCPzy7LV2EzBHVHozjlaIsK+YzxrHD5SH507DnXMm4cYLxmHE0HhUC1WoFqoJFU5QAAAgAElEQVRx7fljMf+SiYiJiYHJwuCb49EXv501YTgWPzUXf3CJ57XIu1AjUkFvskKmNeLnM40Rj23GxrCPwbMmDMf9V07FbRdPhKLLCI60C0k1YjT1UTfACSOG9Kl5iCeunD4a3z9xNTQGC/53pJrVpHDG2GFY9vy1uHHW+KDegxCCfcUCLDnTgPPHD8cV00ejSaJ1cuIfP2IIDr9zGzZmc910UDfPHo/vHr8aF08eyXp8rdGCMzVinKmRIKPR+xp3wX1z8N69notGmiQaLD5dj3aVAYkJcTh//HB87WDIw8bnh6tY79GYGODZG87DUzfMxJdHa5yKYofExyI+NsZpHemr0EmqNuCJ1blBF2LdfvFE/OtPl9qNz45WiPA/h2LOQLl0yig8MncaHp47DQdKBViV5lxs4a+BI2VA0jdC5m5H5GYAPAAXEUIYh7+NAtDefXKTCSEe7V5jYmJGwua6zACYRgjROPwtFgAXwAXd78EN53v7+HxUyDxIaZZqUCNSIz42FgQEYpUBQqUeI4fG44Wbzsf0scOCOq7aYIZKZ6sCHD4kDqVtSvxwsg7FLOKgWROG45/3XILEhDiYrFYQYnNEGjt8CA6UCAJqeTEkPhZ/unIqrj9/LCRqI9pVetSI1GFt2ZyYEIuHrpqGh66ehgaJBmfrJCjjK8PSkswbi568Gn++djoKuApkN8tRKVCiVqR2CkS6MiQuFk/fOBPHKkRRG8B/+oaZKOIpggoUX3PeWDx01VTcf+VUzJowHDExMZBrbYGfcLiXDY2PRZzLoipYrpg2GofevRVD4mJxtEKEhSfq/HJ1efXWWfjkgUsRFxuDs3VSHKsQYcroRNw4axyumTkWI4faRLcyjRHrsjjYWyxgrQ6/ZPJITB87DAlxsRg5NA53XzYZ914+xamCVKkz4b+Hqz0mKq6ZOQaTRg2F2UrQqTP5tXEdOzwBn/zpMlxz3hgkxMViaHwsZo4b7rfo2GC24nhlO7blt6KCpVVyDzPGDsONs8ZBqjZCojbgqhlj8NH9c3DBhBH29iBLkxsRFxuDS6eOgtnK4Eh54K2THPGVGBudGI8h8bFujnTh5uGrpyEhLgYagwXTxibimRvOw9yZYxATY3O3aJZqsbuoDbsL+X3WCvXuSydh6bPXwmhhkNEoxYFSoZPDbWJCLE697+48bzBbkVYvxe4iPjKbZAGNsyOGxMHCELvz/ND4WHz3+FV4pntTZLYyWJrc6LWq+9Ipo7D6petx0ST2zaLjeW7MbkFhiwI3XDAON14wDueNH46xwxNYXTMVXSYcLBXgtwyO2/UxYkgc3rn7Yrx66yzcvjg1LM7ZE0cOReq/7sR3x2uDdn+ZM2UkDr1zG4YPiQNfoUdGoxTrsrjgK2xj7YUTR+DrP1+JK6ePRpVQhWqhCoW8ThS1KOzX3bQxibh6xhhcNnUU5kwdhVkTRmDMsASMTkzA6oxmrM0IvtXopFFD8f69l4AhBAxDcPm00bjhgnGIj4uFUKnHolP1OFYhwphhCbj9kom4/eKJmDtzDOZMGQWpxojvjteGJXjpyMSRQ6DWW3wWzQA2l6hn552HiSOHYuzwBPyU1OBRYB8OLp48Ekf/cRuGD/E/SPy334t9FvWwMX1MIh67bgYeuHIqJo4ailGJ8ThYIsBXXoRlbMG4kUPj8emDl+HGC8bhokkj0abowuu/F/t02QyUl24+H41irT2g7C9jhyeAYYhXsTOl74iPjcGV00fbBZgDgQkjhmDJM9e4OeY3iDVIqhGjRd6FdpUeUrURMq3RvmaJiQFGJyYgPta2djBZGVw6ZRSeumEG/nTlVPzvSI1HN7XByv+3d99xdtVl4sc/zySTSgqEhCAlgdCRpUtXQERFEWVRcAUFxbKigsouu/5QsK3u2sVVXFiqlV0RXHoXaSJKMdJDh1ACCRDSk+f3x/cMXC73ztxMpmQyn/frNa8z95xvO/fcm2/mnOc8py1g9VGdn3w/bOcpDBvaxlk3PtRSgMrYEUMZNWwoo4YNYacNJ3DQ9uuw3fqrc/tjz3PSlfe96gY5aXkNbYsus+RJklRv9LAhvGGDNbi6yWOBB6odp67OCftvybqrj2TcyHYigmXLkgVLlvLC/CW8sGAxZ9/4cMMb1lbE5LEj+M8PbMeNM2bx7cuW/zHsK6ItYOcNJ3Dbo3O6dV47gl6/1rEqa4tXsrguWNx7jyfXym+14UM7Tfaz8aTVaItY7qQTtYYNaeOdW6/NtImrMW3iaH5yzYyV8tzHrtNKNuv7np7Ll86fzh+rawOTx45gyoRRbLDm6JeTxjRLEFDr396zFf+wU3ni3Mzn57Ng8TKmrDGq5Sy9s+Yu5KYHnuX6+2dx9d3P9EoAc60Jo4fxxk0m8tLCJU1vfO4JH9xlCifsv+VrbmD/xR8f4dy/PM4eG6/JO/6ufF7unPkCdzw6h+lPvMBdM1/gvqfmvuo89pTq2v3+W6/NFXc+zX9dO4N7n5rLJ940jY+9ccNXBQ4/+tw8PnLmn7j3qXItfkR7G+/dfj3mzF/MHY/N6fT67xqjh/HRPTbkH3Zan3EjXx049+zchYwfNYwhbcHipcv44nnT+dWfXpvIYMyIobxn23XYYM3yRIThQ9uYNnE0m00ey+jhQ8lMZs9bzI0znuWE303v9Wt2ALtsOIGTD92e1UYM5dmXFnLzg89x/HnTGz71t5EtXzeWQ3Zcj/23fiWB21MvLODjZ/+Z25pcK33v9uty+V1PtdxHhyFtwWE7T+GYfTZm/KhhLFm6jJ/d9DDfuezePnvC09brjecju2/A6dc/+KonQq9sdt5wDT6z98aMGdHOT35/PxdPf9L/Mw1Arf5fd5v1xvPBXaaw31ZrN03KuGxZctmd5XOwyeQxjB/Z3vLNEq8bN6Lp00KGtgWH7zqVj79pGmuuNoyI4Pn5iznzhoc47foHl+t7vvdmk9hr04nssfFE1h4/gufnL2bOvMX88uZHOOvGh18TfL/xpNU47fAdWW+NcgPSMy8u5JkXF7L52iXb/Dt++Af+9sSKJ7MYN7KdKz//poYJ8Tp7avby2nPTiYwaNoSL/tqz14DrGcg8qPVbIPORwCnAf2Xmxxts78iYvE9mXtlJO/sAlwOXZeZbG2zvyNZ8ZGb+d0/23cX+Gcg8SJ1x/YNNA0mGtAVv23IyW64zlufnlQlt6JBgjdHlMTXjR7UzfuQwhre38eCsl7hr5gvc8+SLPDjrpVf9ETB8aNvLgWTqvmFD28jMXs/cMFBNHDOcHaeuziPPzeu3TGBdOXC7dXh89vyXT9K0ap3xI5m3aEmPBDTWGj60je2nrE5bBIuWLuOBZ+b2yR/wo4cNYev1xrPt+uPZdr3V2Wb98Ywd0c7tj83h+vtncf/Tc1m8dBmLlizj1kfnLPcf3R2GtgXv23E97n967quCZgeDTdZajdWGD+XOmS+sNCfMRw8b0umNFztOXZ2fHrYDj80umdhvmDGLC++Y2eNBgXtsvCaz5y3i3ifnthRgCrDP5mvxoV2nsOlaY5iw2nCGtJWLXs/NW8QtDz3Hv110d9OMJu1Dgo0mjeHv1hnH1DVHc8OMWdww49ku78pefVR7j37nt1533AqfxN5o0mrMmbeYWXMHxqN1x41sZ8epq3Pd/bOafg+GDW0jYFD+P2X8qHb23nQS+2yxFpusNebljCpz5i/msdnzeWLOfJYsXUZbW/DwrHn8+pbG2W77Q/uQoC1iUB43qd7rxo1g3TVGse74kfz18ef7LcuGVlxtlnhJkiT1vBHtbSxLGiaB6A0GBEvSK3bfaE1ufKDr8+KtaB8SHLDNOvz54dkvZ9McNWwIm04ew6Qxw1lteDujh5cnrM1btJR5i5aycMlSFi1ZxrMvLerR5FcrmzduMpGdN1yD4UOHsGTpMs668eHXZLNcnvmp0TX+yWNH8NYt13o5gcsFdzyxwtcWR7YP4d3brsP7dliXe596kf+55TFueXg2I9rb2HStMSxLXs403qoIWGvMCGbPW9Qv55FHDRvCwiXLVvgzP6K9jTVGDWPuwiW9mkRj3Mh2PrL7Blwy/UnunLlyXmeX+sPI9nLD5+4brclW645jyoRRrDVmBNfPmMU3L767R4J6OzN8aBtrjR3B7JcW9dnNBWuuVm4yufa+Z7hxxrMsy/Jv/16bTeScWx7rsczje282id02WpNnXlzIcy+V8+LtQ9q458kXGybIXJkZyDyo9Vsg87eAY4FjM/M7Dbb/CDgK+GRm/qSTdo4CfgT8KDM/3WD7scC3gP/IzON6su+qbLNI5c222267UQYyDz6dBTJLUl9p9AglaWU0tC0YN7KdOfMX9/ojoiRJkiRJkiRJkiRJK4f2IWHyQb2KgcyDWrcCmVt7ZnLnxlXLZrd6dawf3wvt9FTf0mu8fau12eJ147ouKEmSJEmSJEmSJEmSJEmSWHvciP4eggaYnghkXiVk5vaN1leZmrfr4+FoJbDW2BGsNdZ/VCVJkiRJkiRJkiRJkiRJknpDWw+00ZH1uFnq2o71c3qhnZ7qW5IkSZIkSZIkSZIkSZIkSVIf6olA5nuq5SZNtm9cLe/thXZ6qm9JkiRJkiRJkiRJkiRJkiRJfagnApmvrpb7RsSr2ouIMcBuwDzgpi7auQmYD+xW1attpw3Yt66/nuxbkiRJkiRJkiRJkiRJkiRJUh9a4UDmzJwBXAZMBY6q2/xlYDRwdma+1LEyIjaLiM3q2pkLnF2VP7GunU9V7V+amQ+sSN+SJEmSJEmSJEmSJEmSJEmS+l9k5oo3EjENuAGYBJwP3AXsBOwF3AvsmpnP1pRPgMyMunYmVO1sAlwF3AxsDhwAPF21M2NF+u7Gvv28GusHuttGf4qIPwNk5vb9PRZJknqK85skaVXlHCdJWhU5v0mSVkXOb5KkVZVznCRpVeT8tnJb4YzM8HJm5B2AMyhBxJ8HpgE/AHZuNZC4KrcL8ENgo6qdnYDTge3rg5h7su9OxvSBgRrELEmSJEmSJEmSJEmSJEmSJK2shvZUQ5n5KHBEi2Wjk23PAUdXPz3etyRJkiRJkiRJkiRJkiRJkqT+1yMZmSVJkiRJkiRJkiRJkiRJkiRpeRjILEmSJEmSJEmSJEmSJEmSJKnPGcgsSZIkSZIkSZIkSZIkSZIkqc8ZyCxJkiRJkiRJkiRJkiRJkiSpz0Vm9vcYJEmSJEmSJEmSJEmSJEmSJA0yZmSWJEmSJEmSJEmSJEmSJEmS1OcMZJYkSZIkSZIkSZIkSZIkSZLU5wxkliRJkiRJkiRJkiRJkiRJktTnDGSWJEmSJEmSJEmSJEmSJEmS1OcMZJYkSZIkSZIkSZIkSZIkSZLU5wxkliRJkiRJkiRJkiRJkiRJktTnDGSWJEmSJEmSJEmSJEmSJEmS1OcMZO4nEfFQRGSTnydXoN1Da9o5ssH2bSLixIi4PiJmRsSiiHg8In4ZEds1KB8R8baIOCkibouI2RGxICLuiYjvR8Ra3R2rJGnVNFDmuCZ9rFnVzYi4rrtjlSStegbi/BYRkyPie9Xfb/Orv+f+EhHf7O54JUmrnoE2x0XEBhFxckTcHRHzIuKpiLgxIj4WEcO6O15J0qqlH+e3rSLi1Ii4NSKeiYiFEfFoRFwREQdGRDRpd0hEfDYi7qj+fnsuIi6KiF27O1ZJ0qppoMxxURhrIklqyUCZ35r0YZxJDxja3wMY5J4Hvt9g/dzuNBYR6wE/quqv1qTYycBOwJ+Bc6uy2wCHAAdFxMGZeW5N+eHAxcAi4FrgCmAIsDdwNHBIROyRmfd1Z8ySpFXWQJjjGvlpJ+1LkjRg5reI2A24ABgFXAT8FhgJbFTV/ZfujFmStMoaEHNcROwIXE2Z0y4BzgfGAvtT/p77+4h4W2Zmd8YtSVrl9Mf8tj3wbuAm4IZqDJMpc9VvgLOBD9a1G8CvgIOAe6o+1gAOBq6NiL/PzPO7M2ZJ0iprIMxxxppIkpbXQJjfGjHOpAeE53T7R0Q8BJCZU3uovQAuBzagnPg/FvhoZp5aV+7TwMWZeX/d+g8APwOeBV6XmYuq9e3APwM/zszZNeXbgB8DHwcuyMz9e2I/JEkD30CZ4xr080HgTOCTlDnu+szcvSf2QZI08A2k+S0iJgPTKSdm9s3Me+vqtmfm4p7YD0nSwDfA5rgLgf2AwzPzzJr1o4GbgS2AN2XmtT2xL5Kkgasf57fhmbmwQf2xlAvjmwM7ZebNNdveD/yCctH8zZm5oFq/I3Ad5UL6tMx8sSf2RZI0sA2UOc5YE0nS8hgo81uDcsaZ9JC2/h6AesxnKHeuHQG81KxQZp5Uf3GgWv9z4D5gArBVzfrFmfn12v9YVuuXAV+pXu65wqOXJKm5XpnjakXE+sAPgf+m3B0uSVJv68357QvV+k/UBzFXdQ1iliT1pt6c4zaslr+rq/MScGX1cmL3hi1JUqdand9ecwG8Wv8CcGn1cuO6zf9YLY/vCGKu6vwJ+DVlbjuoe8OWJKlLvTLHGWsiSepnvfk3HGCcSU8b2t8DGOSGR8ShwPqUL8wdwLWZuXR5GomIzYFvAj/IzGsjYu9ujqfjYvaSXiovSRo8BswcV92JdwYls8nnKI9tlCSpkYEyv70fmA1cGhFbAG8GRgEzgEsys1uP4JIkrdIGyhz3N2Az4B2UrM0d/Y6iXJiYB9zYzT4lSauelWZ+q5mrAP5as34EsCtlDvtDg6oXA4dVdU9f3n4lSauslX6O64KxJpKkRgbM/GacSc8zkLl/TQbOrlv3YEQckZm/b6WBiBhatfEIJetWt0TEzpRHLz5OeQRxKz5cLS/pbr+SpFXWQJrjjqHc8b1vZr4QEf4HU5LUzEo/v0XEBsCawJ+A7wFH11V9NiI+mJkXdbdvSdIqaaWf4yrHU4K9zoiI9wF3AmOBd1LOdR+UmU90t29J0iqn3+a3iNgIOBQYAqxFuQnndcA3MvOOmqLTqjIPZGajYK77quUmrfYtSRoUBsIc1xljTSRJjQyk+c04kx5mIHP/OZ1yZ/XfgBcpj0X8FPAx4OKI2CUzb2+hnS8B2wK7Z+b87gyk+iKdVb38bCt3MUTEjsAJ1diP706/kqRV1oCZ46oslf8GnJyZV3SnD0nSoDFQ5rdJ1XI74PXVGM+h/P1/KGXe+01EbJeZd3Wnf0nSKmegzHFk5t3VeclfAvtXP1CyeX0fuKk7/UqSVkn9Pb9tRLmO1mER8E/Ad+rKjauWzzdpp2P9+OXoW5K0ahsoc1xDxppIkpoYMPObcSa9o62/BzBYZeaXM/OqzHwqM+dl5vTM/ATwXWAkcGJXbUTETpQ7B76Tmd16ZGJEjAbOBzYG/iMz/6eFOpsA/we0A4dm5ozu9C1JWjUNlDkuItopd+LNBP65O31IkgaPgTK/8crf+UOAr2Tmf2bmM5k5MzO/BfwQGEG5U1ySpIE0xxER2wI3VOPaAxgDrEe5QPE54I8RMa6+niRp8Onv+S0zL8nMAIZRLoh/nXKh+3cRMWw5d0eSpJcN5DnOWBNJUjMDZX4zzqT3GMi88jm5Wr6xs0JVGvSzgHuBL3ano+riwIXA7sB3M/O4FupsAlwNrAEckpm/607fkqRBaWWb4/6VcifeEZk5tzv9SJLEyje/zan5/bcNtnese0N3xiBJGlRWqjmu6uccYCKwf2Zel5lzM/OxzPwmcBIlCPqz3RmDJGnQ6LP5DSAzF2fmjMz8CuXGm3cCn6kp0pFxudmNOB3r5zTZLklSh5Vtjqvv11gTSVJ3rGzzm3EmvSQys7/HoBpVxpA5wMLMHNFJufHA7Bab/UFmvirbVkSMoVwc2IOS4aSVIObNgSuBCcD7MvP8FvuXJGmlm+Mi4jzggBb6eD4zfXSjJKmhlXB+Gwa8BAwFJmfmU3XbtwSmA/dk5mYtjkeSNAithHPc64G/An/JzO0bbH8XJaPzBZm5f4vjkSQNMn01vzVpc2vgNuDCzHxntW4EMBdYCIzLzCV1dd4P/AL4WWYe1uJ4JEmD0Mo2x9VtN9ZEktQtK9v8ZpxJ7xna3wPQa+xcLR/ootxC4L+bbNuOEvl/HXAP8KpU6dUX/JKqr69n5vFdDSoitgKuoNz5fWBmXthVHUmS6qxsc9zlwKwG61cDDgaeAi4A5nUxXknS4LZSzW+ZuSgi/gDsBbyeMp/Ven21fLCL8UqStFLNccDwarlmk+0Tq+WiLsYrSRrcen1+68Q61fLlYOXMXBARN1Bu6NmDkqmy1tur5VUt9iFJGrxWqjmug7EmkqQVtLLNb8aZ9BIDmftBdbfZI5n5Ut36qcCPqpc/q1nfDkwDFmfmDIDMnA8c2aT9EylfvjMz89S6basDlwE7ACdUadC7Gu82lP9YjgIOyMxLu9xJSdKgNJDmuMz8zyZ9TKX8B/P+zGw4DknS4DKQ5rfKSZRA5q9ExE0d467uRu94nNYvW2hHkrSKG2Bz3HRK9pX1I+LI2vaqOe7Y6uWVXbQjSVrF9fP8tkNm3tKgzkTgm9XL+gCun1CCmL8WEW/OzAVVnR0p5ymfAX7T6U5LkgaFgTbHGWsiSWrFQJrfjDPpPQYy94+Dgc9HxLXAw8CLlC/XO4ARwEXAt2vKrwPcVZWduoJ9n0u5ODADaKu+qPXOy8zb4OULClcCa1TLXSJilwZ1vp+Zc1ZwbJKkgW/AzHGSJC2HATW/ZeZvI+J04AjgrxFxMTAEeGc1tt9Qc8JHkjSoDZg5LjMXRsQxwOnAKRFxCHArsDrwLkpG5ptonnlFkjR49Of8dmpETABuBh4BllZt7geMBM4DTqur8yvgQOAg4NaI+D9gQrUfQ4CPZuYLKzguSdKqYcDMccaaSJKWw4CZ39R7DGTuH1cDm1Ii/XcDRlOyiVwHnA2cnZnZS31vUC2nASc0KfMQ0HERfBzlP5YAb65+GjmDsg+SpMFtIM1xkiS1aiDObx8BbgA+DhwOBHAn8A3gJ5m5rKcHKkkakAbUHJeZZ0bEg8AxwC7AmyiPjbwH+C7lAvjCXhqvJGng6M/57dvAuymPLn4rMIzy2OGrqr7Pqe87MzMi3k/5G+7DwKeBBcC1wNcy84ZeGqskaeAZSHOcsSaSpFYNpPlNvSR8nyVJkiRJkiRJkiRJkiRJkiT1tbb+HoAkSZIkSZIkSZIkSZIkSZKkwcdAZkmSJEmSJEmSJEmSJEmSJEl9zkBmSZIkSZIkSZIkSZIkSZIkSX3OQGZJkiRJkiRJkiRJkiRJkiRJfc5AZkmSJEmSJEmSJEmSJEmSJEl9zkBmSZIkSZIkSZIkSZIkSZIkSX3OQGZJkiRJkiRJkiRJkiRJkiRJfc5AZkmSJEmSJEmSJEmSJEmSJEl9zkBmSZIkSZIkSZIkSZIkSZIkSX3OQGZJkiRJkiRJkiRJkiRJkiRJfc5AZkmSJEmSJEmSJEmSJEmSJGkAiYiDIuKkiPhDRLwQERkRP+uhtves2uvqZ70V7WtoTwxYkiRJkiRJknpTREwFHgTOzMzD+3UwkiRJkiRJkiT1v+OBrYG5wGPAZj3Y9kPAl5ts2wo4EJiemY+uaEdmZJYkSZIkSZI0aEXEWyLiOxFxZUQ8W2WQuK6T8utExKcj4uKIeCgiFlb1Lo+IA7vR/4ldZLN4WwttvDEillblv9Zg+8YRcVxEXBURj0bEooh4KiLOj4i9mrS5W0T8R0T8KSKeqfbzwYg4NSI2alLnwxFxXkTcX2X/eCki7oqIUyJi0yZ1Hupk359sUmd4RBwVETdHxKyImFv188OImNKkzkYRcXpEPFbt/8yIODsipjV/Zxvro2O2XkT8OCL+GBFPVu//E1VmlSMior1Jm2dHxPTqM7mgOma/i4g3dzKWrSLi59Vxmx8Rj0fE1RFxcES01ZWdEBFHRsRva8o/HxHXRcRH6stXdc7o4v3KiLiyrk5nn4uOny929T5LkiRJkiRJq7jPApsAY4F/7MmGM/OhzDyx0Q+wqCp2Sk/0ZUZmSZIkSZIkSYPZUcABwALgfmCNLsp/GjiOkh36auBJYAol+8Q+EfG9zPxcN8ZxJiXDRb37O6sUEWOquvOA1ZoU+ypwMHAncBHwHLAp8C7gXRFxdGb+sK7Ob4CJwA3Az4ElwC7AR4BDIuItmXljXZ1DgbWBP1Lel2XAlsARwAcj4t2ZeXGD8T0PfL/B+rkN9ncocCWwG3A38EtgIbAj5dh8MCJ2zcw7a+rsAFwFjKnq/pJyzA6p9n/PzLy1Qf9d6c1jNg34AOW9PI9yzCYAbwdOAw6LiH0zc0lNnb2rnz9S9vclYH3Kcd4/Ir6Wma8K/o2I/YFzKcfqd8D/AmsC7wF+BewDfLSmynuBnwAzKZ//R4C1KJ//U4G3R8R7MzNr6pxH4/cJ4DBgQ6D+c/F9YHyD8gF8gXJto9FnSZIkSZIkSRo0MvPqjt8joqU6EfF+4GPAtsAIyrnunwPfysyFLdTvOH84Hzhr+UfdoM1Xn0+UJEmSJEmSpJVPREylnFA9MzMP78F2dwFeoATFrlf1cX1m7t6k/IHAs5n5+7r1mwM3UTJf7JCZf26x/xOBE4C9MvOaboz/NODdwLeBrwNfz8zj68ocDtxeH6wbEW8CLgcSmJqZM2u2HQecnZlP1NX5QtXP9Mzcqm7biMxc0GCMbwEuA+7KzC3qtj0EkJlTW9zf9wLnUAKS983MZTXbvgx8CTg9Mz9cs/524O+Az2Xm92rW7w5cA0wHts0WT5b30TEbBiyp3b9qfTvlvdwTODgzz6nZ1uz9Xwf4CyVAed264/w3YAtgz9rPdERMBm4HJgFTMvORav3ewGjgwrr3fjJwM+U7dFBm/qaF92E88AQwBFgnM2e1UOetwCXArZm5XVflJUmSJEmSpMEiIvakJB/4eWYe2qTMaZTEE49RzjPOAXYGdqWcK31LXfKERm18nnJu86zM/FBPjP01j3mTJEmSJEmSpL4WEW+IiF9HxOMRsdhF09oAAA59SURBVDAiZkbEZRHxvgZlp0bEryJiVkQsiIhbIuKdDcodHhFZLd8WEddExPMR8XLAambemJl/y8ylrYwzM8+tD2Ku1t8F/Lp6uWfLO74CIuIAyknnz1ACQhvKzDMaZRyu9uMaYBjlRHXttn+vD2Ku/Dsl08brI2JCXZ3XBNFW6y+nnBDfqLP9adGG1fLC+iBf4PxqObFjRURsSAlifhr4Qd24rgMuALYG9uiBsXVpOY7Zogb7R2YupmQ4Bti4bluz9/9xSmbtNl55/zpsCLxQ/5nOzCcpmZ2h5v3MzKsy8//qx1aVP7l6uWez/apzGDASOLeVIObKx6rlT1ssL0mSJEmSJImXE14cAfwW2CQzP5KZn8/M3YAvU87rHdVCUx1PcOuxc3QGMkuSJEmSJEnqVxHxUUqg5bur5XeACynZYD9ZV3wKJfPrVOBsSvDw64HzI2KvJl0cRAlYfZESbPnrJuVW1OJq+ZqMFVVAdWcZf3ePiGMj4riIOLh6PF9TETEJOAU4LzN/1v0hNx9zE1lTtqXg7yrz8Xjgr02KDI+IQyPiCxFxdETsFRFDmpT9W7V8e0TUn9/uCGa/ombd5Gr5UKPAYOCBavnmTnahmT4/ZtX7sl/18o4W60wCdgIWAvfUbf4bMLY6RvV13gDMBO5scXjL+1nquODxX60Ujoi1gP2BucAvGmzvuHHhjBb7lyRJkiRJkgaToynn7j6cmfPrtn0VeBb4QGcNVE/525TyxL4bempgQ3uqIUmSJEmSJElaXhGxBfBj4AVgj8z8W932deuq7AmcmJlfrinzC+AS4J8oj86rtx+wX2Ze0oNDf5WIGAv8PSXQ97JuNPHVutcLI+JbwJcys1EA9CmURBWf6EZfAETEFEoA7zzg2harvRcYA9yUmXOatHsQJbh8JLAJ5f1/DvhUkzYnU4LSaz0YEUc0yH59IXAucCDw14i4AlgEbA/sDpwE/GdN+Y5Mv1MiIhq8lx0ZijdtMrbO9Poxq4KjPwUEJTPyWyiZrX+Rmf/XpM4OlKDuocC6lODfccCnG2Q+/iwlyP+KiDifEti9JuWmgjnAPzS4qNGoz6HAB6uXXX7PImIXYCvg3sxs9J1t5MNAO3BGZr7YYh1JkiRJkiRp0IuIUZQn080CjomIRsUWApt30VTHE9NaSk7QKgOZJUmSJEmSJPWnf6Scp/xqfRAzQGY+VrfqYeBrdWUujYhHKBlkGzm/l4OYAzgVWAv4cWbe1aBYsxPAt1MCNK+hZL+dBOxL2cfjgSHAF+r6+zDwLuDgzHyqm2MeDvwcGA78c2bObqHOBpRA4SXA5zopehBwcM3r+ygBsbc0KHs68AdKZuAXKYHFn6KcEL84InbJzNs7CmdmVoHSJ1Deny1q2rqSEuC7pKb8vRFxH7Ax8BngBzX7syuvZHFevZP9qdeXx2xNyr52SODb9e3X2aGuzovAEZlZHyxOZv6hCio+B3hfXZ3TaZ5Fu943KcHrF2XmpS2U77jgcUorjVffsSOrl80ukvwWuAl4vpU2JUmSJEmSpEFkdV5JlnBCF2Ubiog1KMk85vPaxBQrpP7Re5IkSZIkSZLUl3aulhe3WP62zFzaYP2jNA9GvXm5R7V8vkPJVPwHmgT4ZubdmXl3g/W/zczTM/PBzFyQmY9k5qmULMaLgWOrrLwARMRU4PvA/2TmOd0ZbEQMoZxo3g34NSUwtqs6kyjHaCJwdGbe2KxsZh6SmUHJArwb8CBwfUQc3qDslzPzqsx8KjPnZeb0zPwE8F1KRucT68Yxohrz54GjgLWrfvYDpgDXRsQBdd18gpK1+fsRcXlEfCsifkUJRO4I1F1W08cxEXFi3c82NWPus2NWfW6CEuw/hZJB+WPVfq7RpM7JVZ2RlEDv04GzIuLk+rIR8RbK5/ZxSlbr0cA0SmD+14Erq2zLTUXEZyjH427gsK72KSLGUYKmFwFndFW+sg8lyP0vTQLiycznq/drZottSpIkSZIkSYNFx83/t2ZmdPbTSRsfoiTGOKfZ0/q6y0BmSZIkSZIkSf1pfLV8vMXyzU6QLqH5+c4nl2tEyyEi/oMSXHotsF9mLuyJdjPzL5QA7HZgl5pNp1EyXnyyO+1WQcw/owRenwMcmpnZRZ1JwFXAppQg5h+30ldmvpCZNwD7A/cAP4mIdVscakfQ7Rvr1v9LNfb/l5k/zcwnq34upmSCbqcm63I1jqsoAfPnAtsAR1fL44BvVMWerqlyDCUrSe3PNnSht45Z1fbSKmD6B8DHq/35Shd1FmTmXZl5NPBT4ONVNmvg5Qwqv67G9p7M/EsVTP5AZn4OOA/YFTi0WR8R8SnK+30nsFdmPtfC7hwKjALOzcxZLZSHXnpkpSRJkiRJkjQYZOZcylPxtmyWIKEFH62WPX6OzkBmSZIkSZIkSf2pIzB5nV7so9NA3e6KiO8B/wRcDby9Ohnck56plqNr1m0HTAKeiYjs+KFk3QX4f9W68xqMtx34JXAI8AvgHzJzSWcDiIi1KZmLtwCOyswfLu9OZOYi4EpgBK9k4O5Ko30HeGe1vLpBP7cDs4EpETGhbtutmfn3mTkxM4dl5maZ+T3g9VWRP9WUndogE8kZKzDubh+zJjqyl+/ZYvlmdXalZDH/Y2bOa1Cn4z3evlGDEXEMcBIwnRLE3OoNAx0XPH7aSuEqkP4AYC7lcytJkiRJkiRp+X0XGAacFhHj6zdGxOoRsV2jihGxB7A5ML1KXtGjOn0knCRJkiRJkiT1spuAHYC3A3f381haEhEB/IiSYfdy4IDMnN/DfbRTAmABHqjZdBYlm229jSnZi28D/gzcWtfeMEoG5gOqNo7IzGVdjGFdSibmjYBPZOaKZNroCFTvNHC6RkfA8wN164dXy4n1FSJiODCmermoqw6q9/j9wGLgf1scV1ft9dgx68TyvpfN6jR9L+vWv+a9jIjjgG9Sxv6WVjMrR8ROwNbAvZl5TSt1gCMoWa7PyMwXW6wjSZIkSZIkrfIi4t3Au6uXk6vlLhFxRvX7rMw8FiAzT4uI7SnntWdExKXAI8AawAaUc5WnA59o0FWvPjHNQGZJkiRJkiRJ/eknlBOjX4yISzPzztqNEbFuZj7WP0N7rSqI+b+AIylZbg/MzAUt1NsMIDPvrlk3BnhdZt5TV3YY8D1gfUpw9y0d2zLzM03aP5xyovnCzDy+bttw4FxgP+C/gY+1EMQ8hZKRdwrw4a4yElcZkMdlZn3gMRHxTuA9lIy6v69ZvznwSGa+VFd+KiVQHOBndc39gZJF+QsRcX1mLqzZdiLlnPefagNeI2I0sCAzl9asGwr8kBKk/e+tZhPuw2O2HXB77Zir9asBP6heXli37Q2ZeXODfqYBX2hQ50ZKYPNuEbFvZl5WU2c94OPVyyvr2vsi8BVK8PW+mflco/1rYrkueFTftyOrl51mcI6IccDawPOZObNu2zRKMPSMzFy8HOOVJEmSJEmSVmbbAB+qW7dh9QPwMHBsx4bMPCoiLqack98HGA88Rwlo/havPR9LRKwOHATMB87u4fEDBjJLkiRJkiRJ6keZeWdEfBI4Gbg1Is4H7gMmADsCLwB79Vb/EbE7rwRKrlYtN67JWEFmHl5T5UtV+fmUbLT/UmItX+W2zDyvbt1dHV3WrJsA3BURt1TbZ1Ky4O5FyYAxC3h/V0HHLTiZEsQ8C3gc+FKDMV9TlyH3GmAqJVh1akSc2KDdMzLzoer39YA/V/tyT9XPeMqJ9J0pWY+PzMzZNfUPBj4fEddSTqi/CEwD3gGMAC4Cvl3X59eB/YE3A3dHxCWUY7Eb8Ibq96Pr6uwFnBoRVwCPUY7z26q+/hf4YoN9a6avjtmXKAHGN1AuIsyjvMdvp7yvNwDfqKtzWUQ8Tcns/Cjl/P80yr4OBU7KzMs7CmfmExHxVeDLwMURcQElCHsycCDlffptZl7UUSciPkQJYl5KCSr/TIPP0kONAt8jYizlmC8EzmzxfdibEmz+l8z8cxdl30PJGHMmcHjdtispQfkbAA+12LckSZIkSZK0UsvMEykJHpanzgXABctRfjYwcrkGtpwMZJYkSZIkSZLUrzLzlIiYTskMsSflUXizgDuAU3u5+414bcaKSXXrDq/5fYNqORL41yZtngnUBzI38hwl8/AbgLdSHuG3CJgB/Dvw3cx8uoV2utIx5jUpAbLNXFPz+9RquX3106z8Q9XvD1MCa98EvIUS8LuYEoT7U+AHmXlXXf2rgU2BbSmByKOBOcB1lMweZ2dm1lbIzMerbMXHUQKejwDaKAHFZ1CyK9/Nq90LXF+NbRIlKPg24ATgF/V9dKGvjtkplAzWb6B8J0YBsymB5ecAp2Xmkro6XwL2pQSO7w8MAZ6ifBZPzcxL6zvJzK9ExO2UDCy7Ut7TecBfKcegPnNyx2dpCHBMk7H/nnIs6n2Acox/lZmzmtSt16uPrJQkSZIkSZLU/2L5ztFKkiRJkiRJkiRJkiRJkiRJ0opr6+8BSJIkSZIkSZIkSZIkSZIkSRp8DGSWJEmSJEmSJEmSJEmSJEmS1OcMZJYkSZIkSZIkSZIkSZIkSZLU5wxkliRJkiRJkiRJkiRJkiRJktTnDGSWJEmSJEmSJEmSJEmSJEmS1OcMZJYkSZIkSZIkSZIkSZIkSZLU5wxkliRJkiRJkiRJkiRJkiRJktTnDGSWJEmSJEmSJEmSJEmSJEmS1OcMZJYkSZIkSZIkSZIkSZIkSZLU5wxkliRJkiRJkiRJkiRJkiRJktTnDGSWJEmSJEmSJEmSJEmSJEmS1OcMZJYkSZIkSZIkSZIkSZIkSZLU5wxkliRJkiRJkiRJkiRJkiRJktTnDGSWJEmSJEmSJEmSJEmSJEmS1OcMZJYkSZIkSZIkSZIkSZIkSZLU5wxkliRJkiRJkiRJkiRJkiRJktTnDGSWJEmSJEmSJEmSJEmSJEmS1Of+P0MsKAnfVBQYAAAAAElFTkSuQmCC\\n\",\n            \"text/plain\": [\n              \"<Figure size 1440x216 with 2 Axes>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": [],\n            \"image/png\": {\n              \"width\": 1433,\n              \"height\": 207\n            },\n            \"needs_background\": \"light\"\n          }\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"iiDN_ScSv3sI\"\n      },\n      \"source\": [\n        \"## Variant scoring example\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"hIaN9GKDVwLK\"\n      },\n      \"source\": [\n        \"# @title Score the variant\\n\",\n        \"variant = kipoiseq.Variant('chr16', 57025062, 'C', 'T', id='rs11644125')  # @param\\n\",\n        \"\\n\",\n        \"# Center the interval at the variant\\n\",\n        \"interval = kipoiseq.Interval(variant.chrom, variant.start, variant.start).resize(SEQUENCE_LENGTH)\\n\",\n        \"seq_extractor = kipoiseq.extractors.VariantSeqExtractor(reference_sequence=fasta_extractor)\\n\",\n        \"center = interval.center() - interval.start\\n\",\n        \"\\n\",\n        \"reference = seq_extractor.extract(interval, [], anchor=center)\\n\",\n        \"alternate = seq_extractor.extract(interval, [variant], anchor=center)\\n\",\n        \"\\n\",\n        \"# Make predictions for the refernece and alternate allele\\n\",\n        \"reference_prediction = model.predict_on_batch(one_hot_encode(reference)[np.newaxis])['human'][0]\\n\",\n        \"alternate_prediction = model.predict_on_batch(one_hot_encode(alternate)[np.newaxis])['human'][0]\"\n      ],\n      \"execution_count\": 41,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 368\n        },\n        \"id\": \"in1PyiWoXXjc\",\n        \"outputId\": \"664617ba-97c1-4ed3-8d4d-e5e8879ce474\"\n      },\n      \"source\": [\n        \"# @title Visualize some tracks\\n\",\n        \"variant_track = np.zeros_like(reference_prediction[:, 0], dtype=bool)\\n\",\n        \"variant_track[variant_track.shape[0] // 2] = True\\n\",\n        \"tracks = {'variant': variant_track,\\n\",\n        \"          'CAGE/neutrofils ref': reference_prediction[:, 4767],\\n\",\n        \"          'CAGE/neutrofils alt-ref': alternate_prediction[:, 4767] - reference_prediction[:, 4767],\\n\",\n        \"          'CHIP:H3K27ac:neutrophil ref': reference_prediction[:, 2280],\\n\",\n        \"          'CHIP:H3K27ac:neutrophil alt-ref': alternate_prediction[:, 2280] - reference_prediction[:, 2280],\\n\",\n        \"          }\\n\",\n        \"\\n\",\n        \"plot_tracks(tracks, interval.resize(reference_prediction.shape[0] * 128), height=1)\"\n      ],\n      \"execution_count\": 42,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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XajrCUxpc4XZjgHnOW1SAefpM0draixLfq4Z4/5aaAHnpQDOGnAWQoyVYF4+udJopruwPBupHA4gAW26oOQB++DUEunksBhQmm1N6zaIiIiIiIiIiIiIiIiIiGjmuWxhXqZLoDnCbNDjqiX5mS6DaM6JKSocZm0W6Mp8e6bLmREuWZCb6RJmlTxHerNxNPvMtoBzVvKzd4z7B2/PnoJaaJb56nVLMl0CEREREREREREREREREREREREREdGsN9sCzikjpbx4tNuTnZ3XTXE5REREREREREREREREREREREREREREc4Iu0wWk2GCH5qwx7h+83TMFtRAREREREREREREREREREREREREREdEEzbYOztXJz0vHuH9J8nPNeWzj9KFDh04D+LvzWAcREc0Bya7/Y84KQERENFPxNY6IiGYrvsYREdFsxdc4IiKajfj6RkREsxVf44g0sy3gvCX5+QNCCJ2UUh28QwjhBHAlgBCAvZPdgJSSwWYiIiIiIiIiIiIiIiIiIiIiIiIiIqI00WW6gFSSUtYDeAPAAgBffs/d3wdgB/AbKWVwiksjIiIiIiIiIiIiIiIiIiIiIiIiIiKicZhtHZwB4B8B7AZwnxDiWgCnALwPwCYANQDuzmBtREREREREREREREREREREREREREREdBazqoMzMNTF+RIAj0MLNv8LgEUA7gVwmZSyL3PVERERERERERERERERERERERERERER0dnMxg7OkFK2AvhcpusgIiIiIiIiIiIiIiIiIiIiIiIiIiKiiZl1HZyJiIiIiIiIiIiIiIiIiIiIiIiIiIho5hJSykzXQERERERERERERERERERERERERERERASAHZyJiIiIiIiIiIiIiIiIiIiIiIiIiIhoGmHAmYiIiIiIiIiIiIiIiIiIiIiIiIiIiKYNBpyJiIiIiIiIiIiIiIiIiIiIiIiIiIho2mDAmYiIiIiIiIiIiIiIiIiIiIiIiIiIiKYNBpyJiIiIiIiIiIiIiIiIiIiIiIiIiIho2mDAmYiIiIiIiIiIiIiIiIiIiIiIiIiIiKYNBpyJiIiIiIiIiIiIiIiIiIiIiIiIiIho2mDAmYiIiIiIiIiIiIiIiIiIiIiIiIiIiKYNBpyJiIiIiIiIiIiIiIiIiIiIiIiIiIho2mDAmYiIiIiIiIiIiIiIiIiIiIiIiIiIiKYN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\\n\",\n            \"text/plain\": [\n              \"<Figure size 1440x360 with 5 Axes>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": [],\n            \"image/png\": {\n              \"width\": 1436,\n              \"height\": 351\n            },\n            \"needs_background\": \"light\"\n          }\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ZMCU9woQv6Ea\"\n      },\n      \"source\": [\n        \"## Score variants in a VCF file\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"c1nJwFS-4P8g\"\n      },\n      \"source\": [\n        \"### Report top 20 PCs\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"-vmj1MA3chRQ\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"outputId\": \"0e004c93-a817-4e87-842d-1ea04a26b649\"\n      },\n      \"source\": [\n        \"enformer_score_variants = EnformerScoreVariantsPCANormalized(model_path, transform_path, num_top_features=20)\"\n      ],\n      \"execution_count\": 48,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"/usr/local/lib/python3.7/dist-packages/sklearn/base.py:318: UserWarning: Trying to unpickle estimator RobustScaler from version 0.23.2 when using version 0.22.2.post1. This might lead to breaking code or invalid results. Use at your own risk.\\n\",\n            \"  UserWarning)\\n\",\n            \"/usr/local/lib/python3.7/dist-packages/sklearn/base.py:318: UserWarning: Trying to unpickle estimator TruncatedSVD from version 0.23.2 when using version 0.22.2.post1. This might lead to breaking code or invalid results. Use at your own risk.\\n\",\n            \"  UserWarning)\\n\",\n            \"/usr/local/lib/python3.7/dist-packages/sklearn/base.py:318: UserWarning: Trying to unpickle estimator RobustScaler from version 0.23.2 when using version 0.22.2.post1. This might lead to breaking code or invalid results. Use at your own risk.\\n\",\n            \"  UserWarning)\\n\",\n            \"/usr/local/lib/python3.7/dist-packages/sklearn/base.py:318: UserWarning: Trying to unpickle estimator Pipeline from version 0.23.2 when using version 0.22.2.post1. This might lead to breaking code or invalid results. Use at your own risk.\\n\",\n            \"  UserWarning)\\n\"\n          ],\n          \"name\": \"stderr\"\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 275\n        },\n        \"id\": \"1oGEYix3dRex\",\n        \"outputId\": \"c7e89a9e-faa6-4f8d-f018-db6bfa303283\"\n      },\n      \"source\": [\n        \"# Score the first 5 variants from ClinVar\\n\",\n        \"# Lower-dimensional scores (20 PCs)\\n\",\n        \"it = variant_centered_sequences(clinvar_vcf, sequence_length=SEQUENCE_LENGTH,\\n\",\n        \"                                gzipped=True, chr_prefix='chr')\\n\",\n        \"example_list = []\\n\",\n        \"for i, example in enumerate(it):\\n\",\n        \"  if i >= 5:\\n\",\n        \"    break\\n\",\n        \"  variant_scores = enformer_score_variants.predict_on_batch(\\n\",\n        \"      {k: v[tf.newaxis] for k,v in example['inputs'].items()})[0]\\n\",\n        \"  variant_scores = {f'PC{i}': score for i, score in enumerate(variant_scores)}\\n\",\n        \"  example_list.append({**example['metadata'],\\n\",\n        \"                       **variant_scores})\\n\",\n        \"  if i % 2 == 0:\\n\",\n        \"    print(f'Done {i}')\\n\",\n        \"df = pd.DataFrame(example_list)\\n\",\n        \"df\"\n      ],\n      \"execution_count\": 49,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Done 0\\n\",\n            \"Done 2\\n\",\n            \"Done 4\\n\"\n          ],\n          \"name\": \"stdout\"\n        },\n        {\n          \"output_type\": \"execute_result\",\n          \"data\": {\n            \"text/html\": [\n              \"<div>\\n\",\n              \"<style scoped>\\n\",\n              \"    .dataframe tbody tr th:only-of-type {\\n\",\n              \"        vertical-align: middle;\\n\",\n              \"    }\\n\",\n              \"\\n\",\n              \"    .dataframe tbody tr th {\\n\",\n              \"        vertical-align: top;\\n\",\n              \"    }\\n\",\n              \"\\n\",\n              \"    .dataframe thead th {\\n\",\n              \"        text-align: right;\\n\",\n              \"    }\\n\",\n              \"</style>\\n\",\n              \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n              \"  <thead>\\n\",\n              \"    <tr style=\\\"text-align: right;\\\">\\n\",\n              \"      <th></th>\\n\",\n              \"      <th>chrom</th>\\n\",\n              \"      <th>pos</th>\\n\",\n              \"      <th>id</th>\\n\",\n              \"      <th>ref</th>\\n\",\n              \"      <th>alt</th>\\n\",\n              \"      <th>PC0</th>\\n\",\n              \"      <th>PC1</th>\\n\",\n              \"      <th>PC2</th>\\n\",\n              \"      <th>PC3</th>\\n\",\n              \"      <th>PC4</th>\\n\",\n              \"      <th>PC5</th>\\n\",\n              \"      <th>PC6</th>\\n\",\n              \"      <th>PC7</th>\\n\",\n              \"      <th>PC8</th>\\n\",\n              \"      <th>PC9</th>\\n\",\n              \"      <th>PC10</th>\\n\",\n              \"      <th>PC11</th>\\n\",\n              \"      <th>PC12</th>\\n\",\n              \"      <th>PC13</th>\\n\",\n              \"      <th>PC14</th>\\n\",\n              \"      <th>PC15</th>\\n\",\n              \"      <th>PC16</th>\\n\",\n              \"      <th>PC17</th>\\n\",\n              \"      <th>PC18</th>\\n\",\n              \"      <th>PC19</th>\\n\",\n              \"    </tr>\\n\",\n              \"  </thead>\\n\",\n              \"  <tbody>\\n\",\n              \"    <tr>\\n\",\n              \"      <th>0</th>\\n\",\n              \"      <td>chr1</td>\\n\",\n              \"      <td>925952</td>\\n\",\n              \"      <td>1019397</td>\\n\",\n              \"      <td>G</td>\\n\",\n              \"      <td>A</td>\\n\",\n              \"      <td>13.865371</td>\\n\",\n              \"      <td>9.379375</td>\\n\",\n              \"      <td>1.322473</td>\\n\",\n              \"      <td>7.198019</td>\\n\",\n              \"      <td>11.926774</td>\\n\",\n              \"      <td>-4.407538</td>\\n\",\n              \"      <td>-5.878580</td>\\n\",\n              \"      <td>-10.701156</td>\\n\",\n              \"      <td>-3.140507</td>\\n\",\n              \"      <td>2.994015</td>\\n\",\n              \"      <td>4.716916</td>\\n\",\n              \"      <td>1.098637</td>\\n\",\n              \"      <td>2.569388</td>\\n\",\n              \"      <td>13.693736</td>\\n\",\n              \"      <td>8.564518</td>\\n\",\n              \"      <td>9.383035</td>\\n\",\n              \"      <td>-2.159512</td>\\n\",\n              \"      <td>-9.733231</td>\\n\",\n              \"      <td>7.727090</td>\\n\",\n              \"      <td>-0.669298</td>\\n\",\n              \"    </tr>\\n\",\n              \"    <tr>\\n\",\n              \"      <th>1</th>\\n\",\n              \"      <td>chr1</td>\\n\",\n              \"      <td>930188</td>\\n\",\n              \"      <td>846933</td>\\n\",\n              \"      <td>G</td>\\n\",\n              \"      <td>A</td>\\n\",\n              \"      <td>-61.468933</td>\\n\",\n              \"      <td>-5.653942</td>\\n\",\n              \"      <td>-2.758731</td>\\n\",\n              \"      <td>6.289482</td>\\n\",\n              \"      <td>1.844845</td>\\n\",\n              \"      <td>3.446712</td>\\n\",\n              \"      <td>6.052454</td>\\n\",\n              \"      <td>0.632046</td>\\n\",\n              \"      <td>2.584915</td>\\n\",\n              \"      <td>1.117951</td>\\n\",\n              \"      <td>1.942497</td>\\n\",\n              \"      <td>-6.513691</td>\\n\",\n              \"      <td>-4.948788</td>\\n\",\n              \"      <td>-1.172066</td>\\n\",\n              \"      <td>-2.903700</td>\\n\",\n              \"      <td>0.482835</td>\\n\",\n              \"      <td>2.896945</td>\\n\",\n              \"      <td>1.757883</td>\\n\",\n              \"      <td>3.686084</td>\\n\",\n              \"      <td>-6.673547</td>\\n\",\n              \"    </tr>\\n\",\n              \"    <tr>\\n\",\n              \"      <th>2</th>\\n\",\n              \"      <td>chr1</td>\\n\",\n              \"      <td>930200</td>\\n\",\n              \"      <td>1043045</td>\\n\",\n              \"      <td>G</td>\\n\",\n              \"      <td>A</td>\\n\",\n              \"      <td>-61.995975</td>\\n\",\n              \"      <td>-10.007704</td>\\n\",\n              \"      <td>-0.312641</td>\\n\",\n              \"      <td>10.605079</td>\\n\",\n              \"      <td>-5.349404</td>\\n\",\n              \"      <td>-2.555728</td>\\n\",\n              \"      <td>7.008485</td>\\n\",\n              \"      <td>9.793589</td>\\n\",\n              \"      <td>-14.216670</td>\\n\",\n              \"      <td>4.411201</td>\\n\",\n              \"      <td>0.295830</td>\\n\",\n              \"      <td>-4.968991</td>\\n\",\n              \"      <td>-10.770261</td>\\n\",\n              \"      <td>-1.512434</td>\\n\",\n              \"      <td>0.186349</td>\\n\",\n              \"      <td>7.461446</td>\\n\",\n              \"      <td>5.153117</td>\\n\",\n              \"      <td>4.041459</td>\\n\",\n              \"      <td>0.512155</td>\\n\",\n              \"      <td>-2.865725</td>\\n\",\n              \"    </tr>\\n\",\n              \"    <tr>\\n\",\n              \"      <th>3</th>\\n\",\n              \"      <td>chr1</td>\\n\",\n              \"      <td>930203</td>\\n\",\n              \"      <td>972363</td>\\n\",\n              \"      <td>C</td>\\n\",\n              \"      <td>T</td>\\n\",\n              \"      <td>21.486368</td>\\n\",\n              \"      <td>-9.248886</td>\\n\",\n              \"      <td>3.684767</td>\\n\",\n              \"      <td>9.606424</td>\\n\",\n              \"      <td>0.538447</td>\\n\",\n              \"      <td>5.264496</td>\\n\",\n              \"      <td>1.418155</td>\\n\",\n              \"      <td>-14.005326</td>\\n\",\n              \"      <td>12.898662</td>\\n\",\n              \"      <td>9.391730</td>\\n\",\n              \"      <td>-5.201692</td>\\n\",\n              \"      <td>-3.091272</td>\\n\",\n              \"      <td>1.975370</td>\\n\",\n              \"      <td>-5.240757</td>\\n\",\n              \"      <td>-14.367105</td>\\n\",\n              \"      <td>-7.802942</td>\\n\",\n              \"      <td>0.138479</td>\\n\",\n              \"      <td>12.087408</td>\\n\",\n              \"      <td>-5.559704</td>\\n\",\n              \"      <td>9.171222</td>\\n\",\n              \"    </tr>\\n\",\n              \"    <tr>\\n\",\n              \"      <th>4</th>\\n\",\n              \"      <td>chr1</td>\\n\",\n              \"      <td>930222</td>\\n\",\n              \"      <td>998906</td>\\n\",\n              \"      <td>GAACTC</td>\\n\",\n              \"      <td>TTCTTCTG</td>\\n\",\n              \"      <td>13.672197</td>\\n\",\n              \"      <td>181.645172</td>\\n\",\n              \"      <td>-302.586548</td>\\n\",\n              \"      <td>184.414001</td>\\n\",\n              \"      <td>146.373199</td>\\n\",\n              \"      <td>284.204163</td>\\n\",\n              \"      <td>-108.902489</td>\\n\",\n              \"      <td>100.794731</td>\\n\",\n              \"      <td>-205.568008</td>\\n\",\n              \"      <td>302.769409</td>\\n\",\n              \"      <td>203.416458</td>\\n\",\n              \"      <td>111.947685</td>\\n\",\n              \"      <td>-61.380695</td>\\n\",\n              \"      <td>222.271515</td>\\n\",\n              \"      <td>152.539993</td>\\n\",\n              \"      <td>114.129166</td>\\n\",\n              \"      <td>-26.604349</td>\\n\",\n              \"      <td>-68.656372</td>\\n\",\n              \"      <td>-36.595196</td>\\n\",\n              \"      <td>38.175354</td>\\n\",\n              \"    </tr>\\n\",\n              \"  </tbody>\\n\",\n              \"</table>\\n\",\n              \"</div>\"\n            ],\n            \"text/plain\": [\n              \"  chrom     pos       id     ref  ...       PC16       PC17       PC18       PC19\\n\",\n              \"0  chr1  925952  1019397       G  ...  -2.159512  -9.733231   7.727090  -0.669298\\n\",\n              \"1  chr1  930188   846933       G  ...   2.896945   1.757883   3.686084  -6.673547\\n\",\n              \"2  chr1  930200  1043045       G  ...   5.153117   4.041459   0.512155  -2.865725\\n\",\n              \"3  chr1  930203   972363       C  ...   0.138479  12.087408  -5.559704   9.171222\\n\",\n              \"4  chr1  930222   998906  GAACTC  ... -26.604349 -68.656372 -36.595196  38.175354\\n\",\n              \"\\n\",\n              \"[5 rows x 25 columns]\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"execution_count\": 49\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"_G5cANX34SLw\"\n      },\n      \"source\": [\n        \"### Report all 5,313 features (z-score normalized)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"id\": \"get8hogCySnt\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"outputId\": \"efe3d5fd-faf5-4589-de79-b022a5c28ab2\"\n      },\n      \"source\": [\n        \"enformer_score_variants_all = EnformerScoreVariantsNormalized(model_path, transform_path)\"\n      ],\n      \"execution_count\": 50,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"/usr/local/lib/python3.7/dist-packages/sklearn/base.py:318: UserWarning: Trying to unpickle estimator RobustScaler from version 0.23.2 when using version 0.22.2.post1. This might lead to breaking code or invalid results. Use at your own risk.\\n\",\n            \"  UserWarning)\\n\",\n            \"/usr/local/lib/python3.7/dist-packages/sklearn/base.py:318: UserWarning: Trying to unpickle estimator TruncatedSVD from version 0.23.2 when using version 0.22.2.post1. This might lead to breaking code or invalid results. Use at your own risk.\\n\",\n            \"  UserWarning)\\n\",\n            \"/usr/local/lib/python3.7/dist-packages/sklearn/base.py:318: UserWarning: Trying to unpickle estimator Pipeline from version 0.23.2 when using version 0.22.2.post1. This might lead to breaking code or invalid results. Use at your own risk.\\n\",\n            \"  UserWarning)\\n\"\n          ],\n          \"name\": \"stderr\"\n        }\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 339\n        },\n        \"id\": \"Q48earqRyFa6\",\n        \"outputId\": \"fb26f901-7d3e-4305-9fb8-141046e56210\"\n      },\n      \"source\": [\n        \"# Score the first 5 variants from ClinVar\\n\",\n        \"# All Scores\\n\",\n        \"it = variant_centered_sequences(clinvar_vcf, sequence_length=SEQUENCE_LENGTH,\\n\",\n        \"                                gzipped=True, chr_prefix='chr')\\n\",\n        \"example_list = []\\n\",\n        \"for i, example in enumerate(it):\\n\",\n        \"  if i >= 5:\\n\",\n        \"    break\\n\",\n        \"  variant_scores = enformer_score_variants_all.predict_on_batch(\\n\",\n        \"      {k: v[tf.newaxis] for k,v in example['inputs'].items()})[0]\\n\",\n        \"  variant_scores = {f'{i}_{name[:20]}': score for i, (name, score) in enumerate(zip(df_targets.description, variant_scores))}\\n\",\n        \"  example_list.append({**example['metadata'],\\n\",\n        \"                       **variant_scores})\\n\",\n        \"  if i % 2 == 0:\\n\",\n        \"    print(f'Done {i}')\\n\",\n        \"df = pd.DataFrame(example_list)\\n\",\n        \"df\"\n      ],\n      \"execution_count\": 51,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Done 0\\n\",\n            \"Done 2\\n\",\n            \"Done 4\\n\"\n          ],\n          \"name\": \"stdout\"\n        },\n        {\n          \"output_type\": \"execute_result\",\n          \"data\": {\n            \"text/html\": [\n              \"<div>\\n\",\n              \"<style scoped>\\n\",\n              \"    .dataframe tbody tr th:only-of-type {\\n\",\n              \"        vertical-align: middle;\\n\",\n              \"    }\\n\",\n              \"\\n\",\n              \"    .dataframe tbody tr th {\\n\",\n              \"        vertical-align: top;\\n\",\n              \"    }\\n\",\n              \"\\n\",\n              \"    .dataframe thead th {\\n\",\n              \"        text-align: right;\\n\",\n              \"    }\\n\",\n              \"</style>\\n\",\n              \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n              \"  <thead>\\n\",\n              \"    <tr style=\\\"text-align: right;\\\">\\n\",\n              \"      <th></th>\\n\",\n              \"      <th>chrom</th>\\n\",\n              \"      <th>pos</th>\\n\",\n              \"      <th>id</th>\\n\",\n              \"      <th>ref</th>\\n\",\n              \"      <th>alt</th>\\n\",\n              \"      <th>DNASE:cerebellum mal</th>\\n\",\n              \"      <th>DNASE:frontal cortex</th>\\n\",\n              \"      <th>DNASE:chorion</th>\\n\",\n              \"      <th>DNASE:Ishikawa treat</th>\\n\",\n              \"      <th>DNASE:GM03348</th>\\n\",\n              \"      <th>DNASE:GM03348 geneti</th>\\n\",\n              \"      <th>DNASE:AG08395</th>\\n\",\n              \"      <th>DNASE:AG08396</th>\\n\",\n              \"      <th>DNASE:AG20443</th>\\n\",\n              \"      <th>DNASE:H54</th>\\n\",\n              \"      <th>DNASE:GM10248</th>\\n\",\n              \"      <th>DNASE:GM12878</th>\\n\",\n              \"      <th>DNASE:GM12891</th>\\n\",\n              \"      <th>DNASE:GM12892</th>\\n\",\n              \"      <th>DNASE:GM18507</th>\\n\",\n              \"      <th>DNASE:GM19238</th>\\n\",\n              \"      <th>DNASE:GM19239</th>\\n\",\n              \"      <th>DNASE:GM19240</th>\\n\",\n              \"      <th>DNASE:H1-hESC</th>\\n\",\n              \"      <th>DNASE:H7-hESC</th>\\n\",\n              \"      <th>DNASE:H9</th>\\n\",\n              \"      <th>DNASE:heart male adu</th>\\n\",\n              \"      <th>DNASE:HEK293T</th>\\n\",\n              \"      <th>DNASE:HeLa-S3 treate</th>\\n\",\n              \"      <th>DNASE:HeLa-S3</th>\\n\",\n              \"      <th>DNASE:hepatocyte</th>\\n\",\n              \"      <th>DNASE:HepG2</th>\\n\",\n              \"      <th>DNASE:HTR-8/SVneo</th>\\n\",\n              \"      <th>DNASE:endothelial ce</th>\\n\",\n              \"      <th>DNASE:CWRU1 male</th>\\n\",\n              \"      <th>DNASE:iPS-NIHi11 mal</th>\\n\",\n              \"      <th>DNASE:iPS-NIHi7 fema</th>\\n\",\n              \"      <th>DNASE:K562 treated w</th>\\n\",\n              \"      <th>DNASE:K562 G2 phase</th>\\n\",\n              \"      <th>DNASE:K562 G1 phase</th>\\n\",\n              \"      <th>...</th>\\n\",\n              \"      <th>CAGE:CD14+CD16- Mono</th>\\n\",\n              \"      <th>CAGE:achilles tendon</th>\\n\",\n              \"      <th>CAGE:cerebrospinal f</th>\\n\",\n              \"      <th>CAGE:cruciate ligame</th>\\n\",\n              \"      <th>CAGE:eye - vitreous</th>\\n\",\n              \"      <th>CAGE:eye - muscle su</th>\\n\",\n              \"      <th>CAGE:eye - muscle la</th>\\n\",\n              \"      <th>CAGE:eye - muscle me</th>\\n\",\n              \"      <th>CAGE:eye - muscle in</th>\\n\",\n              \"      <th>CAGE:Fingernail (inc</th>\\n\",\n              \"      <th>CAGE:optic nerve,</th>\\n\",\n              \"      <th>CAGE:Skin - palm,</th>\\n\",\n              \"      <th>CAGE:tongue epidermi</th>\\n\",\n              \"      <th>CAGE:Urethra,</th>\\n\",\n              \"      <th>CAGE:CD14+ monocytes</th>\\n\",\n              \"      <th>CAGE:Hep-2 cells tre</th>\\n\",\n              \"      <th>CAGE:Hep-2 cells moc</th>\\n\",\n              \"      <th>CAGE:immature langer</th>\\n\",\n              \"      <th>CAGE:migratory lange</th>\\n\",\n              \"      <th>CAGE:CD34 cells diff</th>\\n\",\n              \"      <th>CAGE:amygdala - adul</th>\\n\",\n              \"      <th>CAGE:thalamus - adul</th>\\n\",\n              \"      <th>CAGE:hippocampus - a</th>\\n\",\n              \"      <th>CAGE:parietal lobe -</th>\\n\",\n              \"      <th>CAGE:cerebellum - ad</th>\\n\",\n              \"      <th>CAGE:pineal gland -</th>\\n\",\n              \"      <th>CAGE:spinal cord - a</th>\\n\",\n              \"      <th>CAGE:Olfactory epith</th>\\n\",\n              \"      <th>CAGE:gamma delta pos</th>\\n\",\n              \"      <th>CAGE:Mast cell, expa</th>\\n\",\n              \"      <th>CAGE:adipose,</th>\\n\",\n              \"      <th>CAGE:cerebellum, new</th>\\n\",\n              \"      <th>CAGE:spinal cord, ne</th>\\n\",\n              \"      <th>CAGE:amygdala, newbo</th>\\n\",\n              \"      <th>CAGE:hippocampus, ne</th>\\n\",\n              \"      <th>CAGE:putamen, newbor</th>\\n\",\n              \"      <th>CAGE:thalamus, newbo</th>\\n\",\n              \"      <th>CAGE:thymic carcinom</th>\\n\",\n              \"      <th>CAGE:Smooth muscle c</th>\\n\",\n              \"      <th>CAGE:parietal cortex</th>\\n\",\n              \"    </tr>\\n\",\n              \"  </thead>\\n\",\n              \"  <tbody>\\n\",\n              \"    <tr>\\n\",\n              \"      <th>0</th>\\n\",\n              \"      <td>chr1</td>\\n\",\n              \"      <td>925952</td>\\n\",\n              \"      <td>1019397</td>\\n\",\n              \"      <td>G</td>\\n\",\n              \"      <td>A</td>\\n\",\n              \"      <td>-3.953313</td>\\n\",\n              \"      <td>-2.132398</td>\\n\",\n              \"      <td>-1.133056</td>\\n\",\n              \"      <td>-0.018265</td>\\n\",\n              \"      <td>-7.324341</td>\\n\",\n              \"      <td>-5.928950</td>\\n\",\n              \"      <td>-2.696301</td>\\n\",\n              \"      <td>-2.234811</td>\\n\",\n              \"      <td>-1.869620</td>\\n\",\n              \"      <td>16.743450</td>\\n\",\n              \"      <td>2.218565</td>\\n\",\n              \"      <td>3.167206</td>\\n\",\n              \"      <td>1.084149</td>\\n\",\n              \"      <td>0.671318</td>\\n\",\n              \"      <td>6.513158</td>\\n\",\n              \"      <td>0.971147</td>\\n\",\n              \"      <td>6.255165</td>\\n\",\n              \"      <td>5.352125</td>\\n\",\n              \"      <td>1.729454</td>\\n\",\n              \"      <td>-3.350782</td>\\n\",\n              \"      <td>1.896389</td>\\n\",\n              \"      <td>-1.563089</td>\\n\",\n              \"      <td>-2.268677</td>\\n\",\n              \"      <td>11.647644</td>\\n\",\n              \"      <td>14.272476</td>\\n\",\n              \"      <td>-7.074303</td>\\n\",\n              \"      <td>1.850793</td>\\n\",\n              \"      <td>5.803924</td>\\n\",\n              \"      <td>0.381484</td>\\n\",\n              \"      <td>-0.443644</td>\\n\",\n              \"      <td>-0.299062</td>\\n\",\n              \"      <td>-0.139204</td>\\n\",\n              \"      <td>-8.861604</td>\\n\",\n              \"      <td>-8.072408</td>\\n\",\n              \"      <td>-6.212577</td>\\n\",\n              \"      <td>...</td>\\n\",\n              \"      <td>-0.046439</td>\\n\",\n              \"      <td>4.083508</td>\\n\",\n              \"      <td>3.535412</td>\\n\",\n              \"      <td>11.717014</td>\\n\",\n              \"      <td>-5.239547</td>\\n\",\n              \"      <td>1.081644</td>\\n\",\n              \"      <td>2.213174</td>\\n\",\n              \"      <td>0.853902</td>\\n\",\n              \"      <td>-0.216257</td>\\n\",\n              \"      <td>2.654844</td>\\n\",\n              \"      <td>0.402727</td>\\n\",\n              \"      <td>1.567667</td>\\n\",\n              \"      <td>3.049335</td>\\n\",\n              \"      <td>1.010953</td>\\n\",\n              \"      <td>-0.800231</td>\\n\",\n              \"      <td>157.583069</td>\\n\",\n              \"      <td>172.648773</td>\\n\",\n              \"      <td>0.576450</td>\\n\",\n              \"      <td>5.026437</td>\\n\",\n              \"      <td>0.464598</td>\\n\",\n              \"      <td>2.133233</td>\\n\",\n              \"      <td>1.689052</td>\\n\",\n              \"      <td>2.324542</td>\\n\",\n              \"      <td>1.849092</td>\\n\",\n              \"      <td>-1.319847</td>\\n\",\n              \"      <td>-25.130344</td>\\n\",\n              \"      <td>2.456997</td>\\n\",\n              \"      <td>11.093707</td>\\n\",\n              \"      <td>-4.529293</td>\\n\",\n              \"      <td>5.072914</td>\\n\",\n              \"      <td>-6.317924</td>\\n\",\n              \"      <td>-2.482907</td>\\n\",\n              \"      <td>1.591787</td>\\n\",\n              \"      <td>-5.362659</td>\\n\",\n              \"      <td>0.643638</td>\\n\",\n              \"      <td>-1.936050</td>\\n\",\n              \"      <td>2.499822</td>\\n\",\n              \"      <td>12.372701</td>\\n\",\n              \"      <td>23.365688</td>\\n\",\n              \"      <td>2.915666</td>\\n\",\n              \"    </tr>\\n\",\n              \"    <tr>\\n\",\n              \"      <th>1</th>\\n\",\n              \"      <td>chr1</td>\\n\",\n              \"      <td>930188</td>\\n\",\n              \"      <td>846933</td>\\n\",\n              \"      <td>G</td>\\n\",\n              \"      <td>A</td>\\n\",\n              \"      <td>-1.791559</td>\\n\",\n              \"      <td>-15.679683</td>\\n\",\n              \"      <td>-22.533566</td>\\n\",\n              \"      <td>0.523771</td>\\n\",\n              \"      <td>-3.826311</td>\\n\",\n              \"      <td>-3.219894</td>\\n\",\n              \"      <td>-2.668196</td>\\n\",\n              \"      <td>-9.468966</td>\\n\",\n              \"      <td>-3.158970</td>\\n\",\n              \"      <td>-7.704255</td>\\n\",\n              \"      <td>-3.150757</td>\\n\",\n              \"      <td>-0.523286</td>\\n\",\n              \"      <td>-11.126574</td>\\n\",\n              \"      <td>-11.116987</td>\\n\",\n              \"      <td>-3.674609</td>\\n\",\n              \"      <td>-8.464477</td>\\n\",\n              \"      <td>-11.757355</td>\\n\",\n              \"      <td>-8.595486</td>\\n\",\n              \"      <td>-0.536293</td>\\n\",\n              \"      <td>0.227047</td>\\n\",\n              \"      <td>-0.779173</td>\\n\",\n              \"      <td>-15.736004</td>\\n\",\n              \"      <td>0.879350</td>\\n\",\n              \"      <td>-6.572251</td>\\n\",\n              \"      <td>-4.200795</td>\\n\",\n              \"      <td>-8.630462</td>\\n\",\n              \"      <td>-0.465244</td>\\n\",\n              \"      <td>-3.442806</td>\\n\",\n              \"      <td>-0.311721</td>\\n\",\n              \"      <td>-4.801476</td>\\n\",\n              \"      <td>-5.145035</td>\\n\",\n              \"      <td>-1.415882</td>\\n\",\n              \"      <td>0.362791</td>\\n\",\n              \"      <td>-1.997213</td>\\n\",\n              \"      <td>-2.307346</td>\\n\",\n              \"      <td>...</td>\\n\",\n              \"      <td>-33.052082</td>\\n\",\n              \"      <td>-2.994223</td>\\n\",\n              \"      <td>-8.416894</td>\\n\",\n              \"      <td>-5.190420</td>\\n\",\n              \"      <td>-4.534584</td>\\n\",\n              \"      <td>-5.453042</td>\\n\",\n              \"      <td>-3.034095</td>\\n\",\n              \"      <td>-7.163062</td>\\n\",\n              \"      <td>-2.291493</td>\\n\",\n              \"      <td>-8.985706</td>\\n\",\n              \"      <td>-4.789318</td>\\n\",\n              \"      <td>-4.794244</td>\\n\",\n              \"      <td>-1.449592</td>\\n\",\n              \"      <td>-1.989321</td>\\n\",\n              \"      <td>-22.916094</td>\\n\",\n              \"      <td>-35.752350</td>\\n\",\n              \"      <td>-35.275730</td>\\n\",\n              \"      <td>-13.375345</td>\\n\",\n              \"      <td>-28.358622</td>\\n\",\n              \"      <td>-31.596754</td>\\n\",\n              \"      <td>-11.371334</td>\\n\",\n              \"      <td>-9.254264</td>\\n\",\n              \"      <td>-9.006978</td>\\n\",\n              \"      <td>-9.230368</td>\\n\",\n              \"      <td>-3.783889</td>\\n\",\n              \"      <td>-0.283448</td>\\n\",\n              \"      <td>-12.094806</td>\\n\",\n              \"      <td>-59.170837</td>\\n\",\n              \"      <td>-66.303123</td>\\n\",\n              \"      <td>-34.475914</td>\\n\",\n              \"      <td>-21.272675</td>\\n\",\n              \"      <td>-4.328580</td>\\n\",\n              \"      <td>-16.075752</td>\\n\",\n              \"      <td>-6.281566</td>\\n\",\n              \"      <td>-10.389462</td>\\n\",\n              \"      <td>-6.422119</td>\\n\",\n              \"      <td>-9.181828</td>\\n\",\n              \"      <td>-14.224935</td>\\n\",\n              \"      <td>-46.487968</td>\\n\",\n              \"      <td>-11.499000</td>\\n\",\n              \"    </tr>\\n\",\n              \"    <tr>\\n\",\n              \"      <th>2</th>\\n\",\n              \"      <td>chr1</td>\\n\",\n              \"      <td>930200</td>\\n\",\n              \"      <td>1043045</td>\\n\",\n              \"      <td>G</td>\\n\",\n              \"      <td>A</td>\\n\",\n              \"      <td>-0.526763</td>\\n\",\n              \"      <td>-14.688834</td>\\n\",\n              \"      <td>-17.484657</td>\\n\",\n              \"      <td>2.908407</td>\\n\",\n              \"      <td>2.734465</td>\\n\",\n              \"      <td>3.514852</td>\\n\",\n              \"      <td>0.294236</td>\\n\",\n              \"      <td>-4.154023</td>\\n\",\n              \"      <td>1.062205</td>\\n\",\n              \"      <td>-7.452735</td>\\n\",\n              \"      <td>-2.387097</td>\\n\",\n              \"      <td>-0.988034</td>\\n\",\n              \"      <td>-7.148329</td>\\n\",\n              \"      <td>-7.479169</td>\\n\",\n              \"      <td>-3.070057</td>\\n\",\n              \"      <td>-9.537191</td>\\n\",\n              \"      <td>-12.243765</td>\\n\",\n              \"      <td>-10.340226</td>\\n\",\n              \"      <td>0.070186</td>\\n\",\n              \"      <td>0.338647</td>\\n\",\n              \"      <td>-0.706960</td>\\n\",\n              \"      <td>-13.103579</td>\\n\",\n              \"      <td>3.004640</td>\\n\",\n              \"      <td>-8.224607</td>\\n\",\n              \"      <td>-7.412826</td>\\n\",\n              \"      <td>-9.011602</td>\\n\",\n              \"      <td>0.814177</td>\\n\",\n              \"      <td>-2.572933</td>\\n\",\n              \"      <td>0.154302</td>\\n\",\n              \"      <td>-4.661432</td>\\n\",\n              \"      <td>-3.152854</td>\\n\",\n              \"      <td>-1.105172</td>\\n\",\n              \"      <td>-2.336678</td>\\n\",\n              \"      <td>-4.403462</td>\\n\",\n              \"      <td>-4.830977</td>\\n\",\n              \"      <td>...</td>\\n\",\n              \"      <td>-26.200890</td>\\n\",\n              \"      <td>-4.082983</td>\\n\",\n              \"      <td>-11.688838</td>\\n\",\n              \"      <td>-5.358507</td>\\n\",\n              \"      <td>-5.728800</td>\\n\",\n              \"      <td>-6.592316</td>\\n\",\n              \"      <td>-5.169149</td>\\n\",\n              \"      <td>-8.596480</td>\\n\",\n              \"      <td>-3.361437</td>\\n\",\n              \"      <td>-6.800953</td>\\n\",\n              \"      <td>-4.874091</td>\\n\",\n              \"      <td>-4.676669</td>\\n\",\n              \"      <td>-2.054912</td>\\n\",\n              \"      <td>-2.659639</td>\\n\",\n              \"      <td>-19.059345</td>\\n\",\n              \"      <td>-86.237938</td>\\n\",\n              \"      <td>-90.280151</td>\\n\",\n              \"      <td>-13.633442</td>\\n\",\n              \"      <td>-32.443680</td>\\n\",\n              \"      <td>-19.412699</td>\\n\",\n              \"      <td>-7.266642</td>\\n\",\n              \"      <td>-7.957299</td>\\n\",\n              \"      <td>-6.725488</td>\\n\",\n              \"      <td>-6.803071</td>\\n\",\n              \"      <td>-6.814243</td>\\n\",\n              \"      <td>1.440345</td>\\n\",\n              \"      <td>-8.739142</td>\\n\",\n              \"      <td>-70.331505</td>\\n\",\n              \"      <td>-39.735146</td>\\n\",\n              \"      <td>-31.107134</td>\\n\",\n              \"      <td>-18.125492</td>\\n\",\n              \"      <td>-3.016214</td>\\n\",\n              \"      <td>-8.161813</td>\\n\",\n              \"      <td>-12.665734</td>\\n\",\n              \"      <td>-9.362435</td>\\n\",\n              \"      <td>-5.167178</td>\\n\",\n              \"      <td>-3.976753</td>\\n\",\n              \"      <td>-12.334543</td>\\n\",\n              \"      <td>-38.066742</td>\\n\",\n              \"      <td>-8.078856</td>\\n\",\n              \"    </tr>\\n\",\n              \"    <tr>\\n\",\n              \"      <th>3</th>\\n\",\n              \"      <td>chr1</td>\\n\",\n              \"      <td>930203</td>\\n\",\n              \"      <td>972363</td>\\n\",\n              \"      <td>C</td>\\n\",\n              \"      <td>T</td>\\n\",\n              \"      <td>3.887291</td>\\n\",\n              \"      <td>-0.802319</td>\\n\",\n              \"      <td>-1.669034</td>\\n\",\n              \"      <td>4.747784</td>\\n\",\n              \"      <td>1.695362</td>\\n\",\n              \"      <td>2.217486</td>\\n\",\n              \"      <td>-0.282765</td>\\n\",\n              \"      <td>-1.139245</td>\\n\",\n              \"      <td>0.368520</td>\\n\",\n              \"      <td>-3.772724</td>\\n\",\n              \"      <td>3.466754</td>\\n\",\n              \"      <td>1.096701</td>\\n\",\n              \"      <td>2.536208</td>\\n\",\n              \"      <td>5.108255</td>\\n\",\n              \"      <td>1.874467</td>\\n\",\n              \"      <td>3.965143</td>\\n\",\n              \"      <td>1.232345</td>\\n\",\n              \"      <td>3.818713</td>\\n\",\n              \"      <td>0.651470</td>\\n\",\n              \"      <td>2.554193</td>\\n\",\n              \"      <td>0.991104</td>\\n\",\n              \"      <td>1.639103</td>\\n\",\n              \"      <td>5.514153</td>\\n\",\n              \"      <td>-6.208551</td>\\n\",\n              \"      <td>-13.487192</td>\\n\",\n              \"      <td>6.362380</td>\\n\",\n              \"      <td>0.164872</td>\\n\",\n              \"      <td>-4.553425</td>\\n\",\n              \"      <td>-0.160736</td>\\n\",\n              \"      <td>-1.997855</td>\\n\",\n              \"      <td>-2.654027</td>\\n\",\n              \"      <td>0.416074</td>\\n\",\n              \"      <td>7.220230</td>\\n\",\n              \"      <td>4.069194</td>\\n\",\n              \"      <td>2.957357</td>\\n\",\n              \"      <td>...</td>\\n\",\n              \"      <td>33.843147</td>\\n\",\n              \"      <td>-0.583508</td>\\n\",\n              \"      <td>0.264617</td>\\n\",\n              \"      <td>-3.204525</td>\\n\",\n              \"      <td>5.382181</td>\\n\",\n              \"      <td>1.291355</td>\\n\",\n              \"      <td>0.997021</td>\\n\",\n              \"      <td>2.093935</td>\\n\",\n              \"      <td>-0.294896</td>\\n\",\n              \"      <td>4.008999</td>\\n\",\n              \"      <td>-0.024318</td>\\n\",\n              \"      <td>-0.550827</td>\\n\",\n              \"      <td>-1.001716</td>\\n\",\n              \"      <td>0.569551</td>\\n\",\n              \"      <td>27.447952</td>\\n\",\n              \"      <td>-22.858391</td>\\n\",\n              \"      <td>-32.015335</td>\\n\",\n              \"      <td>12.032137</td>\\n\",\n              \"      <td>15.755173</td>\\n\",\n              \"      <td>19.405922</td>\\n\",\n              \"      <td>2.799939</td>\\n\",\n              \"      <td>3.406132</td>\\n\",\n              \"      <td>1.644471</td>\\n\",\n              \"      <td>2.383641</td>\\n\",\n              \"      <td>-1.271341</td>\\n\",\n              \"      <td>35.166897</td>\\n\",\n              \"      <td>-0.529095</td>\\n\",\n              \"      <td>-15.446460</td>\\n\",\n              \"      <td>42.712193</td>\\n\",\n              \"      <td>22.990261</td>\\n\",\n              \"      <td>-2.007191</td>\\n\",\n              \"      <td>1.718304</td>\\n\",\n              \"      <td>1.981185</td>\\n\",\n              \"      <td>5.209938</td>\\n\",\n              \"      <td>6.387944</td>\\n\",\n              \"      <td>3.160304</td>\\n\",\n              \"      <td>0.638121</td>\\n\",\n              \"      <td>-0.786704</td>\\n\",\n              \"      <td>-4.402274</td>\\n\",\n              \"      <td>3.053887</td>\\n\",\n              \"    </tr>\\n\",\n              \"    <tr>\\n\",\n              \"      <th>4</th>\\n\",\n              \"      <td>chr1</td>\\n\",\n              \"      <td>930222</td>\\n\",\n              \"      <td>998906</td>\\n\",\n              \"      <td>GAACTC</td>\\n\",\n              \"      <td>TTCTTCTG</td>\\n\",\n              \"      <td>-6.190521</td>\\n\",\n              \"      <td>-137.378281</td>\\n\",\n              \"      <td>34.811737</td>\\n\",\n              \"      <td>-1.299490</td>\\n\",\n              \"      <td>-44.415581</td>\\n\",\n              \"      <td>-15.935372</td>\\n\",\n              \"      <td>-6.835675</td>\\n\",\n              \"      <td>-44.718884</td>\\n\",\n              \"      <td>12.754320</td>\\n\",\n              \"      <td>71.546776</td>\\n\",\n              \"      <td>-100.758392</td>\\n\",\n              \"      <td>-128.016174</td>\\n\",\n              \"      <td>-168.724716</td>\\n\",\n              \"      <td>-330.777496</td>\\n\",\n              \"      <td>-142.454132</td>\\n\",\n              \"      <td>-350.230988</td>\\n\",\n              \"      <td>-131.790482</td>\\n\",\n              \"      <td>-207.531921</td>\\n\",\n              \"      <td>-7.376725</td>\\n\",\n              \"      <td>-45.294678</td>\\n\",\n              \"      <td>-16.531658</td>\\n\",\n              \"      <td>-183.512756</td>\\n\",\n              \"      <td>10.864501</td>\\n\",\n              \"      <td>18.745724</td>\\n\",\n              \"      <td>9.173240</td>\\n\",\n              \"      <td>15.418909</td>\\n\",\n              \"      <td>13.582534</td>\\n\",\n              \"      <td>24.021170</td>\\n\",\n              \"      <td>-13.055187</td>\\n\",\n              \"      <td>41.811131</td>\\n\",\n              \"      <td>57.707191</td>\\n\",\n              \"      <td>46.170353</td>\\n\",\n              \"      <td>-125.677353</td>\\n\",\n              \"      <td>-66.172997</td>\\n\",\n              \"      <td>-53.709393</td>\\n\",\n              \"      <td>...</td>\\n\",\n              \"      <td>45.992233</td>\\n\",\n              \"      <td>1.093487</td>\\n\",\n              \"      <td>-150.802185</td>\\n\",\n              \"      <td>16.499266</td>\\n\",\n              \"      <td>24.087925</td>\\n\",\n              \"      <td>-66.276947</td>\\n\",\n              \"      <td>-92.977158</td>\\n\",\n              \"      <td>-139.676208</td>\\n\",\n              \"      <td>-51.160301</td>\\n\",\n              \"      <td>-36.617786</td>\\n\",\n              \"      <td>-4.993864</td>\\n\",\n              \"      <td>5.801898</td>\\n\",\n              \"      <td>-10.315315</td>\\n\",\n              \"      <td>-5.569825</td>\\n\",\n              \"      <td>353.592102</td>\\n\",\n              \"      <td>544.979797</td>\\n\",\n              \"      <td>542.144470</td>\\n\",\n              \"      <td>44.670349</td>\\n\",\n              \"      <td>-91.620117</td>\\n\",\n              \"      <td>-66.408241</td>\\n\",\n              \"      <td>65.320213</td>\\n\",\n              \"      <td>27.775331</td>\\n\",\n              \"      <td>36.321232</td>\\n\",\n              \"      <td>27.018156</td>\\n\",\n              \"      <td>-37.838741</td>\\n\",\n              \"      <td>-20.264828</td>\\n\",\n              \"      <td>-15.695430</td>\\n\",\n              \"      <td>-72.608513</td>\\n\",\n              \"      <td>-119.713341</td>\\n\",\n              \"      <td>-22.978678</td>\\n\",\n              \"      <td>20.147364</td>\\n\",\n              \"      <td>3.596015</td>\\n\",\n              \"      <td>20.581316</td>\\n\",\n              \"      <td>-82.511292</td>\\n\",\n              \"      <td>10.583510</td>\\n\",\n              \"      <td>99.163254</td>\\n\",\n              \"      <td>87.440636</td>\\n\",\n              \"      <td>28.396255</td>\\n\",\n              \"      <td>26.421061</td>\\n\",\n              \"      <td>27.204330</td>\\n\",\n              \"    </tr>\\n\",\n              \"  </tbody>\\n\",\n              \"</table>\\n\",\n              \"<p>5 rows × 3378 columns</p>\\n\",\n              \"</div>\"\n            ],\n            \"text/plain\": [\n              \"  chrom     pos  ... CAGE:Smooth muscle c CAGE:parietal cortex\\n\",\n              \"0  chr1  925952  ...            23.365688             2.915666\\n\",\n              \"1  chr1  930188  ...           -46.487968           -11.499000\\n\",\n              \"2  chr1  930200  ...           -38.066742            -8.078856\\n\",\n              \"3  chr1  930203  ...            -4.402274             3.053887\\n\",\n              \"4  chr1  930222  ...            26.421061            27.204330\\n\",\n              \"\\n\",\n              \"[5 rows x 3378 columns]\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"execution_count\": 51\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "enformer/enformer.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Tensorflow implementation of Enformer model.\n\n\"Effective gene expression prediction from sequence by integrating long-range\ninteractions\"\n\nŽiga Avsec1, Vikram Agarwal2,4, Daniel Visentin1,4, Joseph R. Ledsam1,3,\nAgnieszka Grabska-Barwinska1, Kyle R. Taylor1, Yannis Assael1, John Jumper1,\nPushmeet Kohli1, David R. Kelley2*\n\n1 DeepMind, London, UK\n2 Calico Life Sciences, South San Francisco, CA, USA\n3 Google, Tokyo, Japan\n4 These authors contributed equally.\n* correspondence: avsec@google.com, pushmeet@google.com, drk@calicolabs.com\n\"\"\"\nimport inspect\nfrom typing import Any, Callable, Dict, Optional, Text, Union, Iterable\n\nimport attention_module\nimport numpy as np\nimport sonnet as snt\nimport tensorflow as tf\n\nSEQUENCE_LENGTH = 196_608\nBIN_SIZE = 128\nTARGET_LENGTH = 896\n\n\nclass Enformer(snt.Module):\n  \"\"\"Main model.\"\"\"\n\n  def __init__(self,\n               channels: int = 1536,\n               num_transformer_layers: int = 11,\n               num_heads: int = 8,\n               pooling_type: str = 'attention',\n               name: str = 'enformer'):\n    \"\"\"Enformer model.\n\n    Args:\n      channels: Number of convolutional filters and the overall 'width' of the\n        model.\n      num_transformer_layers: Number of transformer layers.\n      num_heads: Number of attention heads.\n      pooling_type: Which pooling function to use. Options: 'attention' or max'.\n      name: Name of sonnet module.\n    \"\"\"\n    super().__init__(name=name)\n    # pylint: disable=g-complex-comprehension,g-long-lambda,cell-var-from-loop\n    heads_channels = {'human': 5313, 'mouse': 1643}\n    dropout_rate = 0.4\n    assert channels % num_heads == 0, ('channels needs to be divisible '\n                                       f'by {num_heads}')\n    whole_attention_kwargs = {\n        'attention_dropout_rate': 0.05,\n        'initializer': None,\n        'key_size': 64,\n        'num_heads': num_heads,\n        'num_relative_position_features': channels // num_heads,\n        'positional_dropout_rate': 0.01,\n        'relative_position_functions': [\n            'positional_features_exponential',\n            'positional_features_central_mask',\n            'positional_features_gamma'\n        ],\n        'relative_positions': True,\n        'scaling': True,\n        'value_size': channels // num_heads,\n        'zero_initialize': True\n    }\n\n    trunk_name_scope = tf.name_scope('trunk')\n    trunk_name_scope.__enter__()\n    # lambda is used in Sequential to construct the module under tf.name_scope.\n    def conv_block(filters, width=1, w_init=None, name='conv_block', **kwargs):\n      return Sequential(lambda: [\n          snt.distribute.CrossReplicaBatchNorm(\n              create_scale=True,\n              create_offset=True,\n              scale_init=snt.initializers.Ones(),\n              moving_mean=snt.ExponentialMovingAverage(0.9),\n              moving_variance=snt.ExponentialMovingAverage(0.9)),\n          gelu,\n          snt.Conv1D(filters, width, w_init=w_init, **kwargs)\n      ], name=name)\n\n    stem = Sequential(lambda: [\n        snt.Conv1D(channels // 2, 15),\n        Residual(conv_block(channels // 2, 1, name='pointwise_conv_block')),\n        pooling_module(pooling_type, pool_size=2),\n    ], name='stem')\n\n    filter_list = exponential_linspace_int(start=channels // 2, end=channels,\n                                           num=6, divisible_by=128)\n    conv_tower = Sequential(lambda: [\n        Sequential(lambda: [\n            conv_block(num_filters, 5),\n            Residual(conv_block(num_filters, 1, name='pointwise_conv_block')),\n            pooling_module(pooling_type, pool_size=2),\n            ],\n                   name=f'conv_tower_block_{i}')\n        for i, num_filters in enumerate(filter_list)], name='conv_tower')\n\n    # Transformer.\n    def transformer_mlp():\n      return Sequential(lambda: [\n          snt.LayerNorm(axis=-1, create_scale=True, create_offset=True),\n          snt.Linear(channels * 2),\n          snt.Dropout(dropout_rate),\n          tf.nn.relu,\n          snt.Linear(channels),\n          snt.Dropout(dropout_rate)], name='mlp')\n\n    transformer = Sequential(lambda: [\n        Sequential(lambda: [\n            Residual(Sequential(lambda: [\n                snt.LayerNorm(axis=-1,\n                              create_scale=True, create_offset=True,\n                              scale_init=snt.initializers.Ones()),\n                attention_module.MultiheadAttention(**whole_attention_kwargs,\n                                                    name=f'attention_{i}'),\n                snt.Dropout(dropout_rate)], name='mha')),\n            Residual(transformer_mlp())], name=f'transformer_block_{i}')\n        for i in range(num_transformer_layers)], name='transformer')\n\n    crop_final = TargetLengthCrop1D(TARGET_LENGTH, name='target_input')\n\n    final_pointwise = Sequential(lambda: [\n        conv_block(channels * 2, 1),\n        snt.Dropout(dropout_rate / 8),\n        gelu], name='final_pointwise')\n\n    self._trunk = Sequential([stem,\n                              conv_tower,\n                              transformer,\n                              crop_final,\n                              final_pointwise],\n                             name='trunk')\n    trunk_name_scope.__exit__(None, None, None)\n\n    with tf.name_scope('heads'):\n      self._heads = {\n          head: Sequential(\n              lambda: [snt.Linear(num_channels), tf.nn.softplus],\n              name=f'head_{head}')\n          for head, num_channels in heads_channels.items()\n      }\n    # pylint: enable=g-complex-comprehension,g-long-lambda,cell-var-from-loop\n\n  @property\n  def trunk(self):\n    return self._trunk\n\n  @property\n  def heads(self):\n    return self._heads\n\n  def __call__(self, inputs: tf.Tensor,\n               is_training: bool) -> Dict[str, tf.Tensor]:\n    trunk_embedding = self.trunk(inputs, is_training=is_training)\n    return {\n        head: head_module(trunk_embedding, is_training=is_training)\n        for head, head_module in self.heads.items()\n    }\n\n  @tf.function(input_signature=[\n      tf.TensorSpec([None, SEQUENCE_LENGTH, 4], tf.float32)])\n  def predict_on_batch(self, x):\n    \"\"\"Method for SavedModel.\"\"\"\n    return self(x, is_training=False)\n\n\nclass TargetLengthCrop1D(snt.Module):\n  \"\"\"Crop sequence to match the desired target length.\"\"\"\n\n  def __init__(self,\n               target_length: Optional[int],\n               name: str = 'target_length_crop'):\n    super().__init__(name=name)\n    self._target_length = target_length\n\n  def __call__(self, inputs):\n    if self._target_length is None:\n      return inputs\n    trim = (inputs.shape[-2] - self._target_length) // 2\n    if trim < 0:\n      raise ValueError('inputs longer than target length')\n    elif trim == 0:\n      return inputs\n    else:\n      return inputs[..., trim:-trim, :]\n\n\nclass Sequential(snt.Module):\n  \"\"\"snt.Sequential automatically passing is_training where it exists.\"\"\"\n\n  def __init__(self,\n               layers: Optional[Union[Callable[[], Iterable[snt.Module]],\n                                      Iterable[Callable[..., Any]]]] = None,\n               name: Optional[Text] = None):\n    super().__init__(name=name)\n    if layers is None:\n      self._layers = []\n    else:\n      # layers wrapped in a lambda function to have a common namespace.\n      if hasattr(layers, '__call__'):\n        layers = layers()\n      self._layers = [layer for layer in layers if layer is not None]\n\n  def __call__(self, inputs: tf.Tensor, is_training: bool, **kwargs):\n    outputs = inputs\n    for _, mod in enumerate(self._layers):\n      if accepts_is_training(mod):\n        outputs = mod(outputs, is_training=is_training, **kwargs)\n      else:\n        outputs = mod(outputs, **kwargs)\n    return outputs\n\n\ndef pooling_module(kind, pool_size):\n  \"\"\"Pooling module wrapper.\"\"\"\n  if kind == 'attention':\n    return SoftmaxPooling1D(pool_size=pool_size, per_channel=True,\n                            w_init_scale=2.0)\n  elif kind == 'max':\n    return tf.keras.layers.MaxPool1D(pool_size=pool_size, padding='same')\n  else:\n    raise ValueError(f'Invalid pooling kind: {kind}.')\n\n\nclass SoftmaxPooling1D(snt.Module):\n  \"\"\"Pooling operation with optional weights.\"\"\"\n\n  def __init__(self,\n               pool_size: int = 2,\n               per_channel: bool = False,\n               w_init_scale: float = 0.0,\n               name: str = 'softmax_pooling'):\n    \"\"\"Softmax pooling.\n\n    Args:\n      pool_size: Pooling size, same as in Max/AvgPooling.\n      per_channel: If True, the logits/softmax weights will be computed for\n        each channel separately. If False, same weights will be used across all\n        channels.\n      w_init_scale: When 0.0 is equivalent to avg pooling, and when\n        ~2.0 and `per_channel=False` it's equivalent to max pooling.\n      name: Module name.\n    \"\"\"\n    super().__init__(name=name)\n    self._pool_size = pool_size\n    self._per_channel = per_channel\n    self._w_init_scale = w_init_scale\n    self._logit_linear = None\n\n  @snt.once\n  def _initialize(self, num_features):\n    self._logit_linear = snt.Linear(\n        output_size=num_features if self._per_channel else 1,\n        with_bias=False,  # Softmax is agnostic to shifts.\n        w_init=snt.initializers.Identity(self._w_init_scale))\n\n  def __call__(self, inputs):\n    _, length, num_features = inputs.shape\n    self._initialize(num_features)\n    inputs = tf.reshape(\n        inputs,\n        (-1, length // self._pool_size, self._pool_size, num_features))\n    return tf.reduce_sum(\n        inputs * tf.nn.softmax(self._logit_linear(inputs), axis=-2),\n        axis=-2)\n\n\nclass Residual(snt.Module):\n  \"\"\"Residual block.\"\"\"\n\n  def __init__(self, module: snt.Module, name='residual'):\n    super().__init__(name=name)\n    self._module = module\n\n  def __call__(self, inputs: tf.Tensor, is_training: bool, *args,\n               **kwargs) -> tf.Tensor:\n    return inputs + self._module(inputs, is_training, *args, **kwargs)\n\n\ndef gelu(x: tf.Tensor) -> tf.Tensor:\n  \"\"\"Applies the Gaussian error linear unit (GELU) activation function.\n\n  Using approximiation in section 2 of the original paper:\n  https://arxiv.org/abs/1606.08415\n\n  Args:\n    x: Input tensor to apply gelu activation.\n  Returns:\n    Tensor with gelu activation applied to it.\n  \"\"\"\n  return tf.nn.sigmoid(1.702 * x) * x\n\n\ndef one_hot_encode(sequence: str,\n                   alphabet: str = 'ACGT',\n                   neutral_alphabet: str = 'N',\n                   neutral_value: Any = 0,\n                   dtype=np.float32) -> np.ndarray:\n  \"\"\"One-hot encode sequence.\"\"\"\n  def to_uint8(string):\n    return np.frombuffer(string.encode('ascii'), dtype=np.uint8)\n  hash_table = np.zeros((np.iinfo(np.uint8).max, len(alphabet)), dtype=dtype)\n  hash_table[to_uint8(alphabet)] = np.eye(len(alphabet), dtype=dtype)\n  hash_table[to_uint8(neutral_alphabet)] = neutral_value\n  hash_table = hash_table.astype(dtype)\n  return hash_table[to_uint8(sequence)]\n\n\ndef exponential_linspace_int(start, end, num, divisible_by=1):\n  \"\"\"Exponentially increasing values of integers.\"\"\"\n  def _round(x):\n    return int(np.round(x / divisible_by) * divisible_by)\n\n  base = np.exp(np.log(end / start) / (num - 1))\n  return [_round(start * base**i) for i in range(num)]\n\n\ndef accepts_is_training(module):\n  return 'is_training' in list(inspect.signature(module.__call__).parameters)\n"
  },
  {
    "path": "enformer/enformer_test.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Test enformer model by applying random sequence as input.\n\nTest:\n\n$ python enformer_test.py\n\"\"\"\n\nimport random\nimport unittest\n\nimport enformer\nimport numpy as np\n\n\nclass TestEnformer(unittest.TestCase):\n\n  def test_enformer(self):\n    model = enformer.Enformer(channels=1536, num_transformer_layers=11)\n    inputs = _get_random_input()\n    outputs = model(inputs, is_training=True)\n    self.assertEqual(outputs['human'].shape, (1, enformer.TARGET_LENGTH, 5313))\n    self.assertEqual(outputs['mouse'].shape, (1, enformer.TARGET_LENGTH, 1643))\n\n\ndef _get_random_input():\n  seq = ''.join(\n      [random.choice('ACGT') for _ in range(enformer.SEQUENCE_LENGTH)])\n  return np.expand_dims(enformer.one_hot_encode(seq), 0).astype(np.float32)\n\n\nif __name__ == '__main__':\n  unittest.main()\n"
  },
  {
    "path": "enformer/requirements.txt",
    "content": "dm-sonnet==2.0.0\nkipoiseq==0.5.2\nnumpy==1.19.5\npandas==1.2.3\ntensorflow==2.5.0\ntensorflow-hub==0.11.0\n"
  },
  {
    "path": "ensemble_loss_landscape/README.md",
    "content": "# Accompanying code for Deep Ensemble: A Loss Landscape Perspective\n\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/ensemble_loss_landscape/cifar10_medium_cnn_experiments.ipynb)\n\nThe Colab notebook `cifar10_medium_cnn_experiments.ipynb` illustrates the CIFAR-10\nexperiments in the paper:\n\n[Deep Ensembles: A Loss Landscape Perspective](https://arxiv.org/abs/1912.02757)\nby Stanislav Fort, Huiyi Hu and Balaji Lakshminarayanan\n\nThese experiments investigate the effects of ensembling and variational Bayesian\nmethods, please see the paper for more details.\n"
  },
  {
    "path": "ensemble_loss_landscape/cifar10_medium_cnn_experiments.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"WU--cjOphQKk\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"  # Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\\n\",\n        \"\\n\",\n        \"  #  Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"  #  you may not use this file except in compliance with the License.\\n\",\n        \"  #  You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"  #      http://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"  #  Unless required by applicable law or agreed to in writing, software\\n\",\n        \"  #  distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"  #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"  #  See the License for the specific language governing permissions and\\n\",\n        \"  #  limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"MGjUZ2Q55OWM\"\n      },\n      \"source\": [\n        \"#Ensemble and Subspace Sampling Experiments on CIFAR10\\n\",\n        \"\\n\",\n        \"   \\u003c!-- Copyright 2020 Stanislav Fořt, Huiyi Hu, Balaji Lakshminarayanan\\n\",\n        \"\\n\",\n        \"   Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"   you may not use this file except in compliance with the License.\\n\",\n        \"   You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"       http://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"   Unless required by applicable law or agreed to in writing, software\\n\",\n        \"   distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"   See the License for the specific language governing permissions and\\n\",\n        \"   limitations under the License. --\\u003e\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"This notebook illustrates the CIFAR-10 experiments in the paper: \\n\",\n        \"\\n\",\n        \"[Deep Ensembles: A Loss Landscape Perspective](https://arxiv.org/abs/1912.02757) by Stanislav Fort, Huiyi Hu and Balaji Lakshminarayanan\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"These experiments investigate the effects of ensembling and variational Bayesian methods, please see the paper for more details.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"U5sMeD_4pTe2\"\n      },\n      \"source\": [\n        \"# Setting up\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"code\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"bUXPnWQIEKJh\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"%tensorflow_version 1.x\\n\",\n        \"\\n\",\n        \"import numpy as np\\n\",\n        \"import matplotlib as mpl\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"import tensorflow as tf\\n\",\n        \"from tensorflow.contrib import layers\\n\",\n        \"import tensorflow_datasets as tfds\\n\",\n        \"\\n\",\n        \"from scipy.special import softmax\\n\",\n        \"from matplotlib import patches as mpatch\\n\",\n        \"\\n\",\n        \"# Plot Style\\n\",\n        \"mpl.style.use('seaborn-colorblind')\\n\",\n        \"mpl.rcParams.update({\\n\",\n        \"    'font.size': 14,\\n\",\n        \"    'lines.linewidth': 2,\\n\",\n        \"    'figure.figsize': (6, 6 / 1.61)\\n\",\n        \"})\\n\",\n        \"mpl.rcParams['grid.color'] = 'k'\\n\",\n        \"mpl.rcParams['grid.linestyle'] = ':'\\n\",\n        \"mpl.rcParams['grid.linewidth'] = 0.5\\n\",\n        \"mpl.rcParams['lines.markersize'] = 6\\n\",\n        \"mpl.rcParams['lines.marker'] = None\\n\",\n        \"mpl.rcParams['axes.grid'] = True\\n\",\n        \"\\n\",\n        \"DEFAULT_FONTSIZE = 13\\n\",\n        \"mpl.rcParams.update({\\n\",\n        \"    'font.size': DEFAULT_FONTSIZE,\\n\",\n        \"    'lines.linewidth': 2,\\n\",\n        \"    'legend.fontsize': DEFAULT_FONTSIZE,\\n\",\n        \"    'axes.labelsize': DEFAULT_FONTSIZE,\\n\",\n        \"    'xtick.labelsize': DEFAULT_FONTSIZE,\\n\",\n        \"    'ytick.labelsize': DEFAULT_FONTSIZE,\\n\",\n        \"    'figure.figsize': (7, 7.0 / 1.4)\\n\",\n        \"})\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"8_a0OnCQrkFu\"\n      },\n      \"source\": [\n        \"#Getting the datasets\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"AlG96jyJr8cW\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def give_me_data():\\n\",\n        \"  print(\\\"Reading CIFAR10\\\")\\n\",\n        \"  cifar_data = {}\\n\",\n        \"  N_val = 500\\n\",\n        \"\\n\",\n        \"  # Construct a tf.data.Dataset\\n\",\n        \"  ds_train, ds_test = tfds.load(\\n\",\n        \"      name=\\\"cifar10\\\", split=[\\\"train\\\", \\\"test\\\"], batch_size=-1)\\n\",\n        \"\\n\",\n        \"  numpy_train = tfds.as_numpy(ds_train)\\n\",\n        \"  x_train_raw, y_train_raw = numpy_train[\\\"image\\\"], numpy_train[\\\"label\\\"]\\n\",\n        \"\\n\",\n        \"  numpy_test = tfds.as_numpy(ds_test)\\n\",\n        \"  x_test_raw, y_test_raw = numpy_test[\\\"image\\\"], numpy_test[\\\"label\\\"]\\n\",\n        \"\\n\",\n        \"  N_train = x_train_raw.shape[0] - N_val\\n\",\n        \"\\n\",\n        \"  X_train = x_train_raw[:N_train]\\n\",\n        \"  y_train = y_train_raw[:N_train]\\n\",\n        \"  X_val = x_train_raw[N_train:N_train + N_val]\\n\",\n        \"  y_val = y_train_raw[N_train:N_train + N_val]\\n\",\n        \"  X_test = x_test_raw\\n\",\n        \"  y_test = y_test_raw\\n\",\n        \"\\n\",\n        \"  Hn = 32\\n\",\n        \"  Wn = 32\\n\",\n        \"  Cn = 3\\n\",\n        \"  cifar_data['Hn'] = Hn\\n\",\n        \"  cifar_data['Wn'] = Wn\\n\",\n        \"  cifar_data['Cn'] = Cn\\n\",\n        \"  cifar_data['classes'] = 10\\n\",\n        \"\\n\",\n        \"  cifar_data['X_train'] = X_train.reshape([-1, Hn, Wn, Cn])\\n\",\n        \"  cifar_data['X_val'] = X_val.reshape([-1, Hn, Wn, Cn])\\n\",\n        \"  cifar_data['X_test'] = X_test.reshape([-1, Hn, Wn, Cn])\\n\",\n        \"\\n\",\n        \"  cifar_data['y_train'] = y_train.reshape([-1])\\n\",\n        \"  cifar_data['y_val'] = y_val.reshape([-1])\\n\",\n        \"  cifar_data['y_test'] = y_test.reshape([-1])\\n\",\n        \"  return cifar_data\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 35\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 16490,\n          \"status\": \"ok\",\n          \"timestamp\": 1596259193156,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": 420\n        },\n        \"id\": \"P9ius35wN76P\",\n        \"outputId\": \"2f9f551f-b17c-4e0d-8442-b4749f18f33c\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Reading CIFAR10\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"cifar_ds = give_me_data()\\n\",\n        \"X_train = cifar_ds['X_train']\\n\",\n        \"y_train = cifar_ds['y_train']\\n\",\n        \"X_val = cifar_ds['X_val']\\n\",\n        \"y_val = cifar_ds['y_val']\\n\",\n        \"X_test = cifar_ds['X_test']\\n\",\n        \"y_test = cifar_ds['y_test']\\n\",\n        \"Hn = cifar_ds['Hn']\\n\",\n        \"Wn = cifar_ds['Wn']\\n\",\n        \"Cn = cifar_ds['Cn']\\n\",\n        \"classes = cifar_ds['classes']\\n\",\n        \"\\n\",\n        \"N_train = X_train.shape[0]\\n\",\n        \"N_val = X_val.shape[0]\\n\",\n        \"N_test = X_test.shape[0]\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"DsEjVGc_pqAL\"\n      },\n      \"source\": [\n        \"# Defining a CNN\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"fWU-qKjRvvKV\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Builds a CNN network and returns various graph nodes for training and\\n\",\n        \"# evaluation.\\n\",\n        \"# In the 'eval' part of the graph, placeholders for network weights (Ws \\u0026 bs)\\n\",\n        \"# are created to facilitate inferencing at given weights (e.g. from subspace\\n\",\n        \"# sampling).\\n\",\n        \"def multilayer_CNN(X_ph_in,\\n\",\n        \"                   y_ph_in,\\n\",\n        \"                   dropout_rate_ph_in=None,\\n\",\n        \"                   filter_sizes=(3, 3, 3, 3),\\n\",\n        \"                   pools=(2, 2, 2, 2),\\n\",\n        \"                   channels=(32, 64, 128, 256),\\n\",\n        \"                   classes=10):\\n\",\n        \"  net_hooks = {\\n\",\n        \"      'weights': {},\\n\",\n        \"      'placeholder': {},\\n\",\n        \"      'train_hook': {},\\n\",\n        \"      'train_output': {},\\n\",\n        \"      'eval_output': {}\\n\",\n        \"  }\\n\",\n        \"  f_nonlin = tf.nn.relu\\n\",\n        \"  with tf.variable_scope('train'):\\n\",\n        \"    a = X_ph_in\\n\",\n        \"    Ws = []\\n\",\n        \"    bs = []\\n\",\n        \"    for i in range(len(filter_sizes)):\\n\",\n        \"      _, _, _, Cnow = a.get_shape().as_list()\\n\",\n        \"      W = tf.get_variable(\\n\",\n        \"          'Wconv' + str(i),\\n\",\n        \"          shape=[filter_sizes[i], filter_sizes[i], Cnow, channels[i]],\\n\",\n        \"          initializer=layers.xavier_initializer(),\\n\",\n        \"          trainable=True)\\n\",\n        \"      b = tf.get_variable(\\n\",\n        \"          'bconv' + str(i),\\n\",\n        \"          shape=[1, 1, channels[i]],\\n\",\n        \"          initializer=layers.xavier_initializer(),\\n\",\n        \"          trainable=True)\\n\",\n        \"      Ws.append(W)\\n\",\n        \"      bs.append(b)\\n\",\n        \"\\n\",\n        \"      h = tf.nn.conv2d(a, W, strides=[1, 1, 1, 1], padding='SAME') + b\\n\",\n        \"      h = tf.nn.dropout(h, rate=dropout_rate_ph_in)\\n\",\n        \"      h = tf.nn.max_pool(\\n\",\n        \"          h,\\n\",\n        \"          ksize=[1, pools[i], pools[i], 1],\\n\",\n        \"          strides=[1, pools[i], pools[i], 1],\\n\",\n        \"          padding='SAME')\\n\",\n        \"      if i \\u003c len(filter_sizes) - 1:\\n\",\n        \"        a = f_nonlin(h)\\n\",\n        \"      else:\\n\",\n        \"        a = h\\n\",\n        \"      _, H_out, W_out, C_out = a.get_shape().as_list()\\n\",\n        \"    _, height_final, width_final, channels_final = a.get_shape().as_list()\\n\",\n        \"\\n\",\n        \"    # Final fully connected layer.\\n\",\n        \"    W_final = tf.get_variable(\\n\",\n        \"        'Wfinal',\\n\",\n        \"        shape=[height_final * width_final * channels_final, classes],\\n\",\n        \"        initializer=layers.xavier_initializer(),\\n\",\n        \"        trainable=True)\\n\",\n        \"    b_final = tf.get_variable(\\n\",\n        \"        'bfinal',\\n\",\n        \"        shape=[1, classes],\\n\",\n        \"        initializer=layers.xavier_initializer(),\\n\",\n        \"        trainable=True)\\n\",\n        \"\\n\",\n        \"    Ws.append(W_final)\\n\",\n        \"    bs.append(b_final)\\n\",\n        \"    net_hooks['weights']['Ws'] = Ws\\n\",\n        \"    net_hooks['weights']['bs'] = bs\\n\",\n        \"\\n\",\n        \"    a = tf.matmul(\\n\",\n        \"        tf.reshape(a, [-1, height_final * width_final * channels_final]),\\n\",\n        \"        W_final) + b_final\\n\",\n        \"    y = a\\n\",\n        \"    net_hooks['train_output']['y'] = y\\n\",\n        \"    y_ph_onehot = tf.one_hot(y_ph_in, classes, dtype=tf.int32)\\n\",\n        \"\\n\",\n        \"    # Weights and biases for regularization.\\n\",\n        \"    net_hooks['train_hook']['L2_reg_Ws'] = tf.reduce_sum(\\n\",\n        \"        [tf.reduce_sum(W_now**2.0) for W_now in Ws])\\n\",\n        \"    net_hooks['train_hook']['L2_reg_bs'] = tf.reduce_sum(\\n\",\n        \"        [tf.reduce_sum(b_now**2.0) for b_now in bs])\\n\",\n        \"\\n\",\n        \"    loss = tf.nn.softmax_cross_entropy_with_logits(labels=y_ph_onehot, logits=y)\\n\",\n        \"    net_hooks['train_hook']['loss'] = tf.reduce_mean(loss)\\n\",\n        \"  \\n\",\n        \"  # Defining all weights and biases as placeholders so that inference can be\\n\",\n        \"  # performed at given weight values.\\n\",\n        \"  with tf.variable_scope('eval'):\\n\",\n        \"    \\n\",\n        \"    Ws_ph = []\\n\",\n        \"    for W in Ws:\\n\",\n        \"      W_ph_now = tf.placeholder(tf.float32, W.get_shape())\\n\",\n        \"      Ws_ph.append(W_ph_now)\\n\",\n        \"    bs_ph = []\\n\",\n        \"    for b in bs:\\n\",\n        \"      b_ph_now = tf.placeholder(tf.float32, b.get_shape())\\n\",\n        \"      bs_ph.append(b_ph_now)\\n\",\n        \"\\n\",\n        \"    a = X_ph_in\\n\",\n        \"\\n\",\n        \"    for i in range(len(filter_sizes)):\\n\",\n        \"      _, _, _, Cnow = a.get_shape().as_list()\\n\",\n        \"\\n\",\n        \"      h = tf.nn.conv2d(\\n\",\n        \"          a, Ws_ph[i], strides=[1, 1, 1, 1], padding='SAME') + bs_ph[i]\\n\",\n        \"      h = tf.nn.dropout(h, rate=dropout_rate_ph_in)\\n\",\n        \"\\n\",\n        \"      h = tf.nn.max_pool(\\n\",\n        \"          h,\\n\",\n        \"          ksize=[1, pools[i], pools[i], 1],\\n\",\n        \"          strides=[1, pools[i], pools[i], 1],\\n\",\n        \"          padding='SAME')\\n\",\n        \"\\n\",\n        \"      if i \\u003c len(filter_sizes) - 1:\\n\",\n        \"        a = f_nonlin(h)\\n\",\n        \"      else:\\n\",\n        \"        a = h\\n\",\n        \"      _, H_out, W_out, C_out = a.get_shape().as_list()\\n\",\n        \"    _, height_final, width_final, channels_final = a.get_shape().as_list()\\n\",\n        \"\\n\",\n        \"    last_layer = tf.reshape(a,\\n\",\n        \"                            [-1, height_final * width_final * channels_final])\\n\",\n        \"    net_hooks['train_hook']['last_layer'] = last_layer\\n\",\n        \"\\n\",\n        \"    a = tf.matmul(last_layer, Ws_ph[-1]) + bs_ph[-1]\\n\",\n        \"    y_eval = a\\n\",\n        \"    net_hooks['eval_output']['pred_eval'] = tf.nn.softmax(y_eval, axis=-1)\\n\",\n        \"    y_ph_onehot = tf.one_hot(y_ph_in, classes, dtype=tf.int32)\\n\",\n        \"    loss_eval = tf.nn.softmax_cross_entropy_with_logits(\\n\",\n        \"        labels=y_ph_onehot, logits=y_eval)\\n\",\n        \"    net_hooks['eval_output']['loss_eval'] = tf.reduce_mean(loss_eval)\\n\",\n        \"    net_hooks['eval_output']['y_eval'] = y_eval\\n\",\n        \"    net_hooks['placeholder']['Ws_ph'] = Ws_ph\\n\",\n        \"    net_hooks['placeholder']['bs_ph'] = bs_ph\\n\",\n        \"  return net_hooks\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"xebqAIwmq9ia\"\n      },\n      \"source\": [\n        \"# Build model graph\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 35\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 971,\n          \"status\": \"ok\",\n          \"timestamp\": 1596259216214,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": 420\n        },\n        \"id\": \"-WWIxPS1q5B6\",\n        \"outputId\": \"7098c352-b897-434b-fc79-1972dbf29243\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Number of free parameters=971146\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"tf.reset_default_graph()\\n\",\n        \"\\n\",\n        \"X_ph = tf.placeholder(tf.float32, [None, Hn, Wn, Cn])\\n\",\n        \"y_ph = tf.placeholder(tf.int32, [None])\\n\",\n        \"lr_ph = tf.placeholder(tf.float32)\\n\",\n        \"dropout_rate_ph = tf.placeholder(tf.float32, [])\\n\",\n        \"L2_reg_constant_ph = tf.placeholder(tf.float32, [])\\n\",\n        \"\\n\",\n        \"architecture = 'CNN'\\n\",\n        \"\\n\",\n        \"if architecture == 'CNN':\\n\",\n        \"  with tf.variable_scope('to_get_shape'):\\n\",\n        \"    # Medium CNN\\n\",\n        \"    filter_sizes = (3, 3, 3, 3)\\n\",\n        \"    pools = (2, 2, 2, 2)\\n\",\n        \"    channels = (64, 128, 256, 256)\\n\",\n        \"\\n\",\n        \"    dummy_cnn_hooks = multilayer_CNN(\\n\",\n        \"        X_ph,\\n\",\n        \"        y_ph,\\n\",\n        \"        dropout_rate_ph_in=dropout_rate_ph,\\n\",\n        \"        filter_sizes=filter_sizes,\\n\",\n        \"        pools=pools,\\n\",\n        \"        channels=channels,\\n\",\n        \"        classes=classes)\\n\",\n        \"  # Number of parameters.\\n\",\n        \"  params = dummy_cnn_hooks['weights']['Ws'] + dummy_cnn_hooks['weights']['bs']\\n\",\n        \"  flat_params = tf.concat([tf.reshape(v, [-1]) for v in params], axis=0)\\n\",\n        \"  number_of_params = flat_params.get_shape().as_list()[0]\\n\",\n        \"  print('Number of free parameters=' + str(number_of_params))\\n\",\n        \"\\n\",\n        \"  cnn_hooks = multilayer_CNN(\\n\",\n        \"      X_ph,\\n\",\n        \"      y_ph,\\n\",\n        \"      dropout_rate_ph_in=dropout_rate_ph,\\n\",\n        \"      filter_sizes=filter_sizes,\\n\",\n        \"      pools=pools,\\n\",\n        \"      channels=channels,\\n\",\n        \"      classes=classes)\\n\",\n        \"  y = cnn_hooks['train_output']['y']\\n\",\n        \"  loss = cnn_hooks['train_hook']['loss']\\n\",\n        \"  y_eval = cnn_hooks['eval_output']['y_eval']\\n\",\n        \"  pred_eval = cnn_hooks['eval_output']['pred_eval']\\n\",\n        \"  loss_eval = cnn_hooks['eval_output']['loss_eval']\\n\",\n        \"  Ws_ph = cnn_hooks['placeholder']['Ws_ph']\\n\",\n        \"  bs_ph = cnn_hooks['placeholder']['bs_ph']\\n\",\n        \"  Ws = cnn_hooks['weights']['Ws']\\n\",\n        \"  bs = cnn_hooks['weights']['bs']\\n\",\n        \"  L2_reg_Ws = cnn_hooks['train_hook']['L2_reg_Ws']\\n\",\n        \"  L2_reg_bs = cnn_hooks['train_hook']['L2_reg_bs']\\n\",\n        \"\\n\",\n        \"loss_to_be_optimized = loss + L2_reg_constant_ph * (L2_reg_Ws + L2_reg_bs)\\n\",\n        \"\\n\",\n        \"train_step = tf.train.AdamOptimizer(lr_ph).minimize(loss_to_be_optimized)\\n\",\n        \"\\n\",\n        \"correct_prediction = tf.equal(tf.cast(tf.argmax(y, 1), dtype=tf.int32), y_ph)\\n\",\n        \"accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))\\n\",\n        \"\\n\",\n        \"correct_prediction_eval = tf.equal(\\n\",\n        \"    tf.cast(tf.argmax(y_eval, 1), dtype=tf.int32), y_ph)\\n\",\n        \"accuracy_eval = tf.reduce_mean(tf.cast(correct_prediction_eval, tf.float32))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"8PHJJ59SuMAo\"\n      },\n      \"source\": [\n        \"## Helper Functions\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"eL52WPi6uPDD\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Helper functions to flatten weights to a vector, and reform a flattened vector\\n\",\n        \"# to weights.\\n\",\n        \"def flatten(Ws1, bs1):\\n\",\n        \"  lists_now = []\\n\",\n        \"  for W_now in Ws1:\\n\",\n        \"    lists_now.append(W_now.reshape([-1]))\\n\",\n        \"  for b_now in bs1:\\n\",\n        \"    lists_now.append(b_now.reshape([-1]))\\n\",\n        \"  return np.concatenate(lists_now, axis=0)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_flat_name(Ws_tf, bs_tf):\\n\",\n        \"  names = []\\n\",\n        \"  for W in Ws_tf:\\n\",\n        \"    names = names + [W.name] * np.prod(W.get_shape().as_list())\\n\",\n        \"  for b in bs_tf:\\n\",\n        \"    names = names + [b.name] * np.prod(b.get_shape().as_list())\\n\",\n        \"  return names\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def reform(flat1):\\n\",\n        \"  sofar = 0\\n\",\n        \"  Ws_out_now = []\\n\",\n        \"  bs_out_now = []\\n\",\n        \"  for W in Ws:\\n\",\n        \"    shape_now = W.get_shape().as_list()\\n\",\n        \"    size_now = np.prod(shape_now)\\n\",\n        \"    elements = flat1[sofar:sofar + size_now]\\n\",\n        \"    sofar = sofar + size_now\\n\",\n        \"    Ws_out_now.append(np.array(elements).reshape(shape_now))\\n\",\n        \"  for b in bs:\\n\",\n        \"    shape_now = b.get_shape().as_list()\\n\",\n        \"    size_now = np.prod(shape_now)\\n\",\n        \"    elements = flat1[sofar:sofar + size_now]\\n\",\n        \"    sofar = sofar + size_now\\n\",\n        \"    bs_out_now.append(np.array(elements).reshape(shape_now))\\n\",\n        \"  return Ws_out_now, bs_out_now\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# Brier score for evaluating uncertainty performance.\\n\",\n        \"def brier_scores(labels, probs=None, logits=None):\\n\",\n        \"  \\\"\\\"\\\"Compute elementwise Brier score.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    labels: Tensor of integer labels shape [N1, N2, ...]\\n\",\n        \"    probs: Tensor of categorical probabilities of shape [N1, N2, ..., M].\\n\",\n        \"    logits: If `probs` is None, class probabilities are computed as a softmax\\n\",\n        \"      over these logits, otherwise, this argument is ignored.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    Tensor of shape [N1, N2, ...] consisting of Brier score contribution from\\n\",\n        \"    each element. The full-dataset Brier score is an average of these values.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  assert (probs is None) != (\\n\",\n        \"      logits is None), \\\"Exactly one of probs and logits should be None.\\\"\\n\",\n        \"  if probs is None:\\n\",\n        \"    probs = softmax(logits, axis=-1)\\n\",\n        \"  nlabels = probs.shape[-1]\\n\",\n        \"  flat_probs = probs.reshape([-1, nlabels])\\n\",\n        \"  flat_labels = labels.reshape([len(flat_probs)])\\n\",\n        \"\\n\",\n        \"  plabel = flat_probs[np.arange(len(flat_labels)), flat_labels]\\n\",\n        \"  out = np.square(flat_probs).sum(axis=-1) - 2 * plabel\\n\",\n        \"  return out.reshape(labels.shape) + 1\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"W2OrJv2tvdLv\"\n      },\n      \"source\": [\n        \"# The root training loop (Independent solutions)\\n\",\n        \"This section could be time-consuming depending on the size of 'points_to_collect' .\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"T6T6KJVWvNVP\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Choosing a subset of the train data for faster eval.\\n\",\n        \"N_train_subset = N_val\\n\",\n        \"train_chosen_indices = np.random.choice(\\n\",\n        \"    range(N_train), N_train_subset, replace=False)\\n\",\n        \"X_train_subset = X_train[train_chosen_indices]\\n\",\n        \"y_train_subset = y_train[train_chosen_indices]\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"Ls0ziO7ivQo4\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Number of independent solutions to collect.\\n\",\n        \"points_to_collect = 5\\n\",\n        \"# Number of ensemble models to use.\\n\",\n        \"max_ens_size = 4\\n\",\n        \"# Number of full training trajectory to collect for analysis such as T-SNE.\\n\",\n        \"num_trajectory_record = 3\\n\",\n        \"# Collect checkpoints along trajectory for subspace sampling or SWA.\\n\",\n        \"collect_solution_after_epoch = 30\\n\",\n        \"\\n\",\n        \"# Training hyperparams for each of the runs.\\n\",\n        \"epochs = 40\\n\",\n        \"batch_size = 128\\n\",\n        \"dropout = 0.1\\n\",\n        \"L2_constant = 0.0\\n\",\n        \"\\n\",\n        \"learning_rate = 1.6e-3\\n\",\n        \"# Defining the LR schedule\\n\",\n        \"lr_halving_epoch = 10\\n\",\n        \"lr_halving_maxcount = 1000\\n\",\n        \"lr_halving_power = 2.0\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"Fw6WhPz-slnf\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"print(\\\"train_step\\\", train_step)\\n\",\n        \"\\n\",\n        \"Ws_many = []\\n\",\n        \"bs_many = []\\n\",\n        \"\\n\",\n        \"losses_many = []\\n\",\n        \"accs_many = []\\n\",\n        \"\\n\",\n        \"# Collecting last epochs from each trajectory.\\n\",\n        \"Ws_by_epochs_many = [[] for _ in range(points_to_collect)]\\n\",\n        \"bs_by_epochs_many = [[] for _ in range(points_to_collect)]\\n\",\n        \"\\n\",\n        \"# Collecting whole trajectory.\\n\",\n        \"Ws_trajectory = [[] for _ in range(num_trajectory_record)]\\n\",\n        \"bs_trajectory = [[] for _ in range(num_trajectory_record)]\\n\",\n        \"\\n\",\n        \"global_init_op = tf.global_variables_initializer()\\n\",\n        \"with tf.Session() as sess:\\n\",\n        \"  for point_id in range(points_to_collect):\\n\",\n        \"    print(\\\"Optimization \\\" + str(point_id) + \\\" with starting lr=\\\" +\\n\",\n        \"          str(learning_rate) + \\\" dropout rate=\\\" + str(dropout) + \\\" batch=\\\" +\\n\",\n        \"          str(batch_size) + \\\" L2const=\\\" + str(L2_constant))\\n\",\n        \"    sess.run(global_init_op)\\n\",\n        \"    for e in range(epochs):\\n\",\n        \"      iterations = int(np.floor(float(N_train) / float(batch_size)))\\n\",\n        \"\\n\",\n        \"      losses_train_list = []\\n\",\n        \"      accs_train_list = []\\n\",\n        \"\\n\",\n        \"      halvings_count_now = np.floor(float(e) / lr_halving_epoch)\\n\",\n        \"      halvings_to_be_used = np.min([halvings_count_now, lr_halving_maxcount])\\n\",\n        \"      learning_rate_now = learning_rate / (\\n\",\n        \"          (lr_halving_power)**halvings_to_be_used)\\n\",\n        \"\\n\",\n        \"      for it in range(iterations):\\n\",\n        \"        indices = np.random.choice(range(N_train), batch_size)\\n\",\n        \"        X_batch = X_train[indices]\\n\",\n        \"        y_batch = y_train[indices]\\n\",\n        \"\\n\",\n        \"        feed_dict = {\\n\",\n        \"            X_ph: X_batch,\\n\",\n        \"            y_ph: y_batch,\\n\",\n        \"            lr_ph: learning_rate_now,\\n\",\n        \"            dropout_rate_ph: dropout,\\n\",\n        \"            L2_reg_constant_ph: L2_constant,\\n\",\n        \"        }\\n\",\n        \"\\n\",\n        \"        variables = [train_step, loss, accuracy]\\n\",\n        \"\\n\",\n        \"        _, loss_out, acc_out = sess.run(variables, feed_dict=feed_dict)\\n\",\n        \"\\n\",\n        \"        losses_train_list.append(loss_out)\\n\",\n        \"        accs_train_list.append(acc_out)\\n\",\n        \"\\n\",\n        \"      # Evaluating current epoch.\\n\",\n        \"      feed_dict = {\\n\",\n        \"          X_ph: X_val,\\n\",\n        \"          y_ph: y_val,\\n\",\n        \"          dropout_rate_ph: 0.0,\\n\",\n        \"          L2_reg_constant_ph: 0.0,\\n\",\n        \"      }\\n\",\n        \"\\n\",\n        \"      loss_val_out, acc_val_out, Ws_opt_out_now, bs_opt_out_now = sess.run(\\n\",\n        \"          [loss, accuracy, Ws, bs], feed_dict=feed_dict)\\n\",\n        \"\\n\",\n        \"      feed_dict[X_ph] = X_train_subset\\n\",\n        \"      feed_dict[y_ph] = y_train_subset\\n\",\n        \"\\n\",\n        \"      loss_train_out, acc_train_out = sess.run([loss, accuracy],\\n\",\n        \"                                               feed_dict=feed_dict)\\n\",\n        \"\\n\",\n        \"      feed_dict[X_ph] = X_test\\n\",\n        \"      feed_dict[y_ph] = y_test\\n\",\n        \"\\n\",\n        \"      loss_test_out, acc_test_out = sess.run([loss, accuracy],\\n\",\n        \"                                             feed_dict=feed_dict)\\n\",\n        \"\\n\",\n        \"      print(\\\"e=\\\" + str(e) + \\\" train loss=\\\" + f\\\"{loss_train_out:.4f}\\\" +\\n\",\n        \"            \\\" train acc=\\\" + f\\\"{acc_train_out:.4f}\\\" + \\\" val loss=\\\" +\\n\",\n        \"            f\\\"{loss_val_out:.4f}\\\" + \\\" val acc=\\\" + f\\\"{acc_val_out:.4f}\\\" +\\n\",\n        \"            \\\" test loss=\\\" + f\\\"{loss_test_out:.4f}\\\" + \\\" test acc=\\\" +\\n\",\n        \"            f\\\"{acc_test_out:.4f}\\\")\\n\",\n        \"      if e \\u003e= collect_solution_after_epoch:\\n\",\n        \"        Ws_by_epochs_many[point_id].append(Ws_opt_out_now)\\n\",\n        \"        bs_by_epochs_many[point_id].append(bs_opt_out_now)\\n\",\n        \"      if point_id \\u003c num_trajectory_record:\\n\",\n        \"        Ws_trajectory[point_id].append(Ws_opt_out_now)\\n\",\n        \"        bs_trajectory[point_id].append(bs_opt_out_now)\\n\",\n        \"\\n\",\n        \"    # Saving model weights of the last checkpoint.\\n\",\n        \"    Ws_opt_out_now, bs_opt_out_now = sess.run([Ws, bs])\\n\",\n        \"\\n\",\n        \"    Ws_many.append(Ws_opt_out_now)\\n\",\n        \"    bs_many.append(bs_opt_out_now)\\n\",\n        \"    losses_many.append(loss_val_out)\\n\",\n        \"    accs_many.append(acc_val_out)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"KapGgJupd9SZ\"\n      },\n      \"source\": [\n        \"###Collecting Validation Predictions\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"8SJntXp5U2Ir\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"trajectory_preds_test = np.zeros(\\n\",\n        \"    (num_trajectory_record, epochs, N_val, classes))\\n\",\n        \"independent_preds_test = np.zeros((points_to_collect, N_val, classes))\\n\",\n        \"\\n\",\n        \"with tf.Session() as sess:\\n\",\n        \"  for id_now in range(points_to_collect):\\n\",\n        \"    for j, W in enumerate(Ws_many[id_now]):\\n\",\n        \"      feed_dict[Ws_ph[j]] = W\\n\",\n        \"    for j, b in enumerate(bs_many[id_now]):\\n\",\n        \"      feed_dict[bs_ph[j]] = b\\n\",\n        \"\\n\",\n        \"    feed_dict[dropout_rate_ph] = 0.0\\n\",\n        \"\\n\",\n        \"    feed_dict[X_ph] = X_val\\n\",\n        \"    feed_dict[y_ph] = y_val\\n\",\n        \"    pred_eval_out = sess.run(pred_eval, feed_dict=feed_dict)\\n\",\n        \"    independent_preds_test[id_now] = pred_eval_out\\n\",\n        \"\\n\",\n        \"  for id_now in range(num_trajectory_record):\\n\",\n        \"    for e in range(epochs):\\n\",\n        \"      for j, W in enumerate(Ws_trajectory[id_now][e]):\\n\",\n        \"        feed_dict[Ws_ph[j]] = W\\n\",\n        \"      for j, b in enumerate(bs_trajectory[id_now][e]):\\n\",\n        \"        feed_dict[bs_ph[j]] = b\\n\",\n        \"      pred_eval_out = sess.run(pred_eval, feed_dict=feed_dict)\\n\",\n        \"      trajectory_preds_test[id_now][e] = pred_eval_out\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"MSyiWg_W9b4F\"\n      },\n      \"source\": [\n        \"#Cosine and Fraction of Disagreement\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"wVnTmgAD9l9Y\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def cos_between(v1, v2):\\n\",\n        \"  \\\"\\\"\\\" Returns the angle in radians between vectors 'v1' and 'v2'\\\"\\\"\\\"\\n\",\n        \"  v1_u = v1 / np.linalg.norm(v1)\\n\",\n        \"  v2_u = v2 / np.linalg.norm(v2)\\n\",\n        \"  return np.dot(v1_u, v2_u)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"FV_a7LZ6BROc\"\n      },\n      \"source\": [\n        \"### Within Trajectory\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"HLjL_tcXGAZp\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"trajectory_id = 0\\n\",\n        \"flat_p_list = []\\n\",\n        \"num_epochs = len(Ws_trajectory[trajectory_id])\\n\",\n        \"cos_matrix = np.zeros((num_epochs, num_epochs))\\n\",\n        \"\\n\",\n        \"for e in range(num_epochs):\\n\",\n        \"  flat_p_list.append(\\n\",\n        \"      flatten(Ws_trajectory[trajectory_id][e], bs_trajectory[trajectory_id][e]))\\n\",\n        \"for i in range(num_epochs):\\n\",\n        \"  for j in range(i, num_epochs):\\n\",\n        \"    cos_matrix[i][j] = cos_between(flat_p_list[i], flat_p_list[j])\\n\",\n        \"    cos_matrix[j][i] = cos_matrix[i][j]\\n\",\n        \"\\n\",\n        \"plt.imshow(cos_matrix, interpolation=\\\"nearest\\\", cmap=\\\"bwr\\\", origin=\\\"lower\\\")\\n\",\n        \"plt.colorbar()\\n\",\n        \"plt.grid(\\\"off\\\")\\n\",\n        \"\\n\",\n        \"title = \\\"Cosine Along Train Trajectory\\\"\\n\",\n        \"plt.title(title)\\n\",\n        \"\\n\",\n        \"plt.xlabel(\\\"Checkpoint id\\\")\\n\",\n        \"plt.ylabel(\\\"Checkpoint id\\\")\\n\",\n        \"plt.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"gprmfsa2n8a_\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"preds_now = trajectory_preds_test[trajectory_id]\\n\",\n        \"targets_now = y_val\\n\",\n        \"\\n\",\n        \"classes_predicted = np.argmax(preds_now, axis=-1)\\n\",\n        \"fractional_differences = np.mean(\\n\",\n        \"    classes_predicted.reshape([1, epochs, len(targets_now)]) !=\\n\",\n        \"    classes_predicted.reshape([epochs, 1, len(targets_now)]),\\n\",\n        \"    axis=-1)\\n\",\n        \"\\n\",\n        \"plt.imshow(\\n\",\n        \"    fractional_differences, interpolation=\\\"nearest\\\", cmap=\\\"bwr\\\", origin=\\\"lower\\\")\\n\",\n        \"plt.colorbar()\\n\",\n        \"plt.grid(\\\"off\\\")\\n\",\n        \"\\n\",\n        \"title = \\\"Disagreement Fraction Along Train Trajectory\\\"\\n\",\n        \"plt.title(title)\\n\",\n        \"\\n\",\n        \"plt.xlabel(\\\"Checkpoint id\\\")\\n\",\n        \"plt.ylabel(\\\"Checkpoint id\\\")\\n\",\n        \"plt.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"-FEPT3_OBT-Y\"\n      },\n      \"source\": [\n        \"###Between Independent Runs\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"Wta3MB2tH4jB\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"flat_p_list = []\\n\",\n        \"cos_matrix = np.zeros((points_to_collect, points_to_collect))\\n\",\n        \"for i in range(points_to_collect):\\n\",\n        \"  flat_p_list.append(flatten(Ws_many[i], bs_many[i]))\\n\",\n        \"\\n\",\n        \"for i in range(points_to_collect):\\n\",\n        \"  for j in range(i, points_to_collect):\\n\",\n        \"    cos_matrix[i][j] = cos_between(flat_p_list[i], flat_p_list[j])\\n\",\n        \"    cos_matrix[j][i] = cos_matrix[i][j]\\n\",\n        \"\\n\",\n        \"plt.imshow(cos_matrix, cmap=\\\"bwr\\\", origin=\\\"lower\\\")\\n\",\n        \"plt.colorbar()\\n\",\n        \"plt.grid(\\\"off\\\")\\n\",\n        \"\\n\",\n        \"title = \\\"Cosine Between Independent Solutions\\\"\\n\",\n        \"plt.title(title)\\n\",\n        \"\\n\",\n        \"plt.xlabel(\\\"Independent Solution\\\")\\n\",\n        \"plt.ylabel(\\\"Independent Solution\\\")\\n\",\n        \"plt.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"Cglsoi44tCnL\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"preds_now = independent_preds_test\\n\",\n        \"targets_now = y_val\\n\",\n        \"\\n\",\n        \"classes_predicted = np.argmax(preds_now, axis=-1)\\n\",\n        \"fractional_differences = np.mean(\\n\",\n        \"    classes_predicted.reshape(\\n\",\n        \"        [1, points_to_collect, len(targets_now)]) != classes_predicted.reshape(\\n\",\n        \"            [points_to_collect, 1, len(targets_now)]),\\n\",\n        \"    axis=-1)\\n\",\n        \"\\n\",\n        \"plt.imshow(\\n\",\n        \"    fractional_differences, interpolation=\\\"nearest\\\", cmap=\\\"bwr\\\", origin=\\\"lower\\\")\\n\",\n        \"plt.colorbar()\\n\",\n        \"plt.grid(\\\"off\\\")\\n\",\n        \"\\n\",\n        \"title = \\\"Disagreement Fraction Btw Independent Solutions\\\"\\n\",\n        \"plt.title(title)\\n\",\n        \"\\n\",\n        \"plt.xlabel(\\\"Independent Solution\\\")\\n\",\n        \"plt.ylabel(\\\"Independent Solution\\\")\\n\",\n        \"plt.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"8hgROgxil29I\"\n      },\n      \"source\": [\n        \"#T-SNE Visualization\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"W6aVhQ5Yl7A6\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"from sklearn.manifold import TSNE\\n\",\n        \"\\n\",\n        \"reshaped_prediction = trajectory_preds_test.reshape([-1, N_val * classes])\\n\",\n        \"\\n\",\n        \"prediction_embed = TSNE(n_components=2).fit_transform(reshaped_prediction)\\n\",\n        \"traj_embed = prediction_embed.reshape([num_trajectory_record, epochs, 2])\\n\",\n        \"\\n\",\n        \"colors_list = [\\\"r\\\", \\\"b\\\", \\\"g\\\"]\\n\",\n        \"labels_list = [\\\"traj_{}\\\".format(i) for i in range(num_trajectory_record)]\\n\",\n        \"for i in range(num_trajectory_record):\\n\",\n        \"  plt.plot(\\n\",\n        \"      traj_embed[i, :, 0],\\n\",\n        \"      traj_embed[i, :, 1],\\n\",\n        \"      color=colors_list[i],\\n\",\n        \"      alpha=0.8,\\n\",\n        \"      linestyle=\\\"\\\",\\n\",\n        \"      marker=\\\"o\\\",\\n\",\n        \"      label=labels_list[i])\\n\",\n        \"  plt.plot(\\n\",\n        \"      traj_embed[i, :, 0],\\n\",\n        \"      traj_embed[i, :, 1],\\n\",\n        \"      color=colors_list[i],\\n\",\n        \"      alpha=0.3,\\n\",\n        \"      linestyle=\\\"-\\\",\\n\",\n        \"      marker=\\\"\\\")\\n\",\n        \"  plt.plot(\\n\",\n        \"      traj_embed[i, 0, 0],\\n\",\n        \"      traj_embed[i, 0, 1],\\n\",\n        \"      color=colors_list[i],\\n\",\n        \"      alpha=1.0,\\n\",\n        \"      linestyle=\\\"\\\",\\n\",\n        \"      marker=\\\"*\\\",\\n\",\n        \"      markersize=20)\\n\",\n        \"plt.legend(loc=1)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"ewL6qSnHlNEy\"\n      },\n      \"source\": [\n        \"#Effects of Ensemble + Subspace Sampling\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"FN3eJMBc55hG\"\n      },\n      \"source\": [\n        \"## Gaussian Sampling\\n\",\n        \"Sample from model weight space according to a Gaussian distribution formed by last epoch checkpoints along a training trajectory.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"d5TWmKrc53kK\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"from sklearn.decomposition import PCA\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_gaussian_sample(var_mean, var_std, scale=1.0):\\n\",\n        \"  var_sample = np.random.normal(var_mean, scale * var_std)\\n\",\n        \"  return var_sample\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_pca_gaussian_flat_sampling(pca, means, rank, scale=1.0):\\n\",\n        \"  standard_normals = np.random.normal(loc=0.0, scale=scale, size=(rank))\\n\",\n        \"  shifts = pca.inverse_transform(standard_normals)\\n\",\n        \"  return shifts + means\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_rand_norm_direction(shape):\\n\",\n        \"  random_direction = np.random.normal(loc=0.0, scale=1.0, size=shape)\\n\",\n        \"  random_direction_normed = random_direction / np.linalg.norm(random_direction)\\n\",\n        \"  return random_direction_normed\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"mtGq9Qkj7iEG\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# PCA rank.\\n\",\n        \"rank = 5\\n\",\n        \"num_sample = 30\\n\",\n        \"\\n\",\n        \"dial_gaussian_whole_Ws = [[] for _ in range(points_to_collect)]\\n\",\n        \"dial_gaussian_whole_bs = [[] for _ in range(points_to_collect)]\\n\",\n        \"\\n\",\n        \"pca_gaussian_whole_Ws = [[] for _ in range(points_to_collect)]\\n\",\n        \"pca_gaussian_whole_bs = [[] for _ in range(points_to_collect)]\\n\",\n        \"\\n\",\n        \"for mid in range(points_to_collect):\\n\",\n        \"  Ws_traj = Ws_by_epochs_many[mid]\\n\",\n        \"  bs_traj = bs_by_epochs_many[mid]\\n\",\n        \"\\n\",\n        \"  vs_list = []\\n\",\n        \"  for i in range(len(Ws_traj)):\\n\",\n        \"    vs_list.append(flatten(Ws_traj[i], bs_traj[i]))\\n\",\n        \"\\n\",\n        \"  vs_np = np.stack(vs_list, axis=0)\\n\",\n        \"\\n\",\n        \"  means = np.mean(vs_np, axis=0)\\n\",\n        \"  stds = np.std(vs_np, axis=0)\\n\",\n        \"  vs_np_centered = vs_np - means.reshape([1, -1])\\n\",\n        \"\\n\",\n        \"  pca = PCA(n_components=rank)\\n\",\n        \"  pca.fit(vs_np_centered)\\n\",\n        \"  for i in range(num_sample):\\n\",\n        \"    v_sample = get_gaussian_sample(means, stds, scale=1.0)\\n\",\n        \"    w_sample, b_sample = reform(v_sample)\\n\",\n        \"    dial_gaussian_whole_Ws[mid].append(w_sample)\\n\",\n        \"    dial_gaussian_whole_bs[mid].append(b_sample)\\n\",\n        \"\\n\",\n        \"    v_sample = get_pca_gaussian_flat_sampling(pca, means, rank, scale=1.0)\\n\",\n        \"    w_sample, b_sample = reform(v_sample)\\n\",\n        \"\\n\",\n        \"    pca_gaussian_whole_Ws[mid].append(w_sample)\\n\",\n        \"    pca_gaussian_whole_bs[mid].append(b_sample)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"U_kvSzLKzBSW\"\n      },\n      \"source\": [\n        \"## Random Sampling\\n\",\n        \"Randomly sample from model weight space around the final checkpoint.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"PGILtMX7zUHp\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Random samples need to meet this accuracy threshold to be included.\\n\",\n        \"acc_threshold = 0.70\\n\",\n        \"\\n\",\n        \"rand_Ws = [[] for _ in range(points_to_collect)]\\n\",\n        \"rand_bs = [[] for _ in range(points_to_collect)]\\n\",\n        \"\\n\",\n        \"with tf.Session() as sess:\\n\",\n        \"  feed_dict = {\\n\",\n        \"    X_ph: X_val,\\n\",\n        \"    y_ph: y_val,\\n\",\n        \"    lr_ph: 0.0,\\n\",\n        \"    dropout_rate_ph: 0.0,\\n\",\n        \"    L2_reg_constant_ph: 0.0,\\n\",\n        \"    }\\n\",\n        \"  for mid in range(points_to_collect):\\n\",\n        \"    for i in range(num_sample):\\n\",\n        \"      vs = flatten(Ws_many[mid], bs_many[mid])  \\n\",\n        \"      for trial in range(5):\\n\",\n        \"        scale = 10*np.random.uniform()   \\n\",\n        \"        v_sample = vs + scale * get_rand_norm_direction(vs.shape)\\n\",\n        \"        w_sample, b_sample = reform(v_sample)\\n\",\n        \"\\n\",\n        \"        for j,W in enumerate(w_sample):\\n\",\n        \"          feed_dict[Ws_ph[j]] = w_sample[j]\\n\",\n        \"        for j,b in enumerate(b_sample):\\n\",\n        \"          feed_dict[bs_ph[j]] = b_sample[j]  \\n\",\n        \"      \\n\",\n        \"        val_acc = sess.run(accuracy_eval,feed_dict = feed_dict)\\n\",\n        \"        if val_acc \\u003e= acc_threshold:\\n\",\n        \"          rand_Ws[mid].append(w_sample)\\n\",\n        \"          rand_bs[mid].append(b_sample)\\n\",\n        \"          print('Obtaining 1 rand sample at scale {} with validation acc {} at {}th try'.format(scale, val_acc,trial))\\n\",\n        \"          break\\n\",\n        \"        if trial ==4:\\n\",\n        \"          print('No luck -------------------')\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"NJ5_RCriP-p5\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# PCA low-rank approximation of the random samplings\\n\",\n        \"pca_gaussian_rand_Ws = [[] for _ in range(points_to_collect)]\\n\",\n        \"pca_gaussian_rand_bs = [[] for _ in range(points_to_collect)]\\n\",\n        \"\\n\",\n        \"for mid in range(points_to_collect):\\n\",\n        \"  Ws_traj = rand_Ws[mid]\\n\",\n        \"  bs_traj = rand_bs[mid]\\n\",\n        \"\\n\",\n        \"  vs_list = []\\n\",\n        \"  for i in range(len(Ws_traj)):\\n\",\n        \"    vs_list.append(flatten(Ws_traj[i], bs_traj[i]))\\n\",\n        \"\\n\",\n        \"  vs_np = np.stack(vs_list, axis=0)\\n\",\n        \"\\n\",\n        \"  means = np.mean(vs_np, axis=0)\\n\",\n        \"  stds = np.std(vs_np, axis=0)\\n\",\n        \"  vs_np_centered = vs_np - means.reshape([1, -1])\\n\",\n        \"\\n\",\n        \"  pca = PCA(n_components=rank)\\n\",\n        \"  pca.fit(vs_np_centered)\\n\",\n        \"  for i in range(num_sample):\\n\",\n        \"    v_sample = get_pca_gaussian_flat_sampling(pca, means, rank, scale=1.0)\\n\",\n        \"    w_sample, b_sample = reform(v_sample)\\n\",\n        \"\\n\",\n        \"    pca_gaussian_rand_Ws[mid].append(w_sample)\\n\",\n        \"    pca_gaussian_rand_bs[mid].append(b_sample)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"nEQ96SeTdnkZ\"\n      },\n      \"source\": [\n        \"## Collecting predictions from Original and Subspace\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"gKnPAilsoSNB\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Average a list of weights.\\n\",\n        \"def average_var(w_list):\\n\",\n        \"  avg = [[] for _ in w_list[0]]\\n\",\n        \"  for w_now in w_list:\\n\",\n        \"    for i, w in enumerate(w_now):\\n\",\n        \"      avg[i].append(w)\\n\",\n        \"\\n\",\n        \"  for i, v in enumerate(avg):\\n\",\n        \"    avg[i] = np.mean(np.stack(v, axis=0), axis=0)\\n\",\n        \"\\n\",\n        \"  return avg\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# Given a list of model weights, feed_dict and a session, returns the model\\n\",\n        \"# predictions as a list.\\n\",\n        \"def get_pred_list(Ws_list, bs_list, feed_dict, sess):\\n\",\n        \"  pred_list = []\\n\",\n        \"  for id in range(len(Ws_list)):\\n\",\n        \"    Ws_now = Ws_list[id]\\n\",\n        \"    bs_now = bs_list[id]\\n\",\n        \"    for j, W in enumerate(Ws):\\n\",\n        \"      feed_dict[Ws_ph[j]] = Ws_now[j]\\n\",\n        \"    for j, b in enumerate(bs):\\n\",\n        \"      feed_dict[bs_ph[j]] = bs_now[j]\\n\",\n        \"\\n\",\n        \"    pred_eval_out = sess.run(pred_eval, feed_dict=feed_dict)\\n\",\n        \"    pred_list.append(pred_eval_out)\\n\",\n        \"  return pred_list\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# Consider a list of subspaces, each has a list of sampled weights. This\\n\",\n        \"# function computes model predictions, ensembles the predictions within each\\n\",\n        \"# subspace, and returns the list of ensembled predictions.\\n\",\n        \"def get_subspace_pred_list(Ws_subspace_list, bs_subspace_list, feed_dict, sess):\\n\",\n        \"  subspace_pred = []\\n\",\n        \"  num_subspace = len(Ws_subspace_list)\\n\",\n        \"  for mid in range(num_subspace):\\n\",\n        \"    pred_list_now = get_pred_list(Ws_subspace_list[mid], bs_subspace_list[mid],\\n\",\n        \"                                  feed_dict, sess)\\n\",\n        \"    subspace_pred.append(np.mean(np.stack(pred_list_now, axis=0), axis=0))\\n\",\n        \"  return subspace_pred\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"xeAuHy2xQ39g\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Returns a list of all possible k-subset from [1, ..., n]\\n\",\n        \"# Don't scale well for large n. Use with caution.\\n\",\n        \"def choose_k_from_n(n, k):\\n\",\n        \"  if k\\u003en or k \\u003c1 or n \\u003c 1:\\n\",\n        \"    return []\\n\",\n        \"  if k == n :\\n\",\n        \"    return [list(range(1, n+1))]\\n\",\n        \"  if k == 1:\\n\",\n        \"    return [[i] for i in range(1, n+1)]\\n\",\n        \"  a = choose_k_from_n(n-1,k)\\n\",\n        \"  b = choose_k_from_n(n-1, k-1)\\n\",\n        \"  b_new = []\\n\",\n        \"  for g in b:\\n\",\n        \"    b_new.append(g+[n])\\n\",\n        \"  return a+b_new\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_acc_brier(y, pred, is_logits=False):\\n\",\n        \"  acc = np.mean(np.argmax(pred,axis=-1)==y)\\n\",\n        \"  if is_logits:\\n\",\n        \"    brier = brier_scores(y,logits=pred)\\n\",\n        \"  else:\\n\",\n        \"    brier = brier_scores(y,probs=pred)\\n\",\n        \"  return acc, np.mean(brier)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# Given a list of model predictions, compute the accuracy and brier score for \\n\",\n        \"# each individual model as well as the ensemble of them.\\n\",\n        \"def get_all_models_metrics(pred_list,y_test,max_ens_size=5, ens_size_list=None):\\n\",\n        \"  acc_list = []\\n\",\n        \"  acc_list_ensemble = []\\n\",\n        \"  b_list = []\\n\",\n        \"  b_list_ensemble = []\\n\",\n        \"  num_models = len(pred_list)\\n\",\n        \"  for i in range(num_models):\\n\",\n        \"    acc,brier = get_acc_brier(y_test, pred_list[i])\\n\",\n        \"    acc_list.append(acc)\\n\",\n        \"    b_list.append(brier)\\n\",\n        \"\\n\",\n        \"  max_ens_size = np.min([max_ens_size, num_models])\\n\",\n        \"  if ens_size_list is None:\\n\",\n        \"    ens_size_list = range(1, max_ens_size+1)\\n\",\n        \"  for ens_size in ens_size_list:\\n\",\n        \"    # Pick all possible subset with size of ens_size from available models.\\n\",\n        \"    # Compute ensemble for each such subset.\\n\",\n        \"    ens_index_list = choose_k_from_n(num_models,ens_size)\\n\",\n        \"    ens_acc = []\\n\",\n        \"    ens_brier=[]\\n\",\n        \"    for ens_ind in ens_index_list:\\n\",\n        \"      ens_pred_list = []\\n\",\n        \"      for ind in ens_ind:\\n\",\n        \"        ens_pred_list.append(pred_list[ind-1])\\n\",\n        \"      ens_np = np.mean(np.stack(ens_pred_list,axis=0), axis=0)\\n\",\n        \"      acc,brier = get_acc_brier(y_test, ens_np)\\n\",\n        \"      ens_acc.append(acc)\\n\",\n        \"      ens_brier.append(brier)\\n\",\n        \"    acc_list_ensemble.append(np.mean(ens_acc))\\n\",\n        \"    b_list_ensemble.append(np.mean(ens_brier))\\n\",\n        \"  metrics = {'accuracy': {},\\n\",\n        \"             'brier':{},}\\n\",\n        \"  metrics['accuracy']['individual'] = acc_list\\n\",\n        \"  metrics['accuracy']['ensemble'] = acc_list_ensemble\\n\",\n        \"  metrics['brier']['individual'] = b_list\\n\",\n        \"  metrics['brier']['ensemble'] = b_list_ensemble\\n\",\n        \"  return metrics\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"RR2UKvMcdpJm\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Get predictions on test data.\\n\",\n        \"orig_pred = []\\n\",\n        \"wa_pred = []\\n\",\n        \"\\n\",\n        \"# Compute averaged weights.\\n\",\n        \"wa_Ws = [[] for _ in range(points_to_collect)]\\n\",\n        \"wa_bs = [[] for _ in range(points_to_collect)]\\n\",\n        \"for i in range(points_to_collect):\\n\",\n        \"  wa_Ws[i] = average_var(Ws_by_epochs_many[i])\\n\",\n        \"  wa_bs[i] = average_var(bs_by_epochs_many[i])\\n\",\n        \"\\n\",\n        \"with tf.Session() as sess:\\n\",\n        \"  feed_dict[X_ph] = X_test\\n\",\n        \"  feed_dict[y_ph] = y_test\\n\",\n        \"  orig_pred = get_pred_list(Ws_many, bs_many, feed_dict, sess)\\n\",\n        \"  wa_pred = get_pred_list(wa_Ws, wa_bs, feed_dict, sess)\\n\",\n        \"  diag_gaus_pred = get_subspace_pred_list(dial_gaussian_whole_Ws,\\n\",\n        \"                                          dial_gaussian_whole_bs, feed_dict,\\n\",\n        \"                                          sess)\\n\",\n        \"  pca_gaus_pred = get_subspace_pred_list(pca_gaussian_whole_Ws,\\n\",\n        \"                                         pca_gaussian_whole_bs, feed_dict, sess)\\n\",\n        \"  pca_rand_pred = get_subspace_pred_list(pca_gaussian_rand_Ws,\\n\",\n        \"                                         pca_gaussian_rand_bs, feed_dict, sess)\\n\",\n        \"  rand_pred = get_subspace_pred_list(rand_Ws, rand_bs, feed_dict, sess)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"sCSsNdA06lm1\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"max_ens_size = points_to_collect - 1\\n\",\n        \"\\n\",\n        \"orig_metrics = get_all_models_metrics(\\n\",\n        \"    orig_pred, y_test, max_ens_size=max_ens_size)\\n\",\n        \"wa_metrics = get_all_models_metrics(wa_pred, y_test, max_ens_size=max_ens_size)\\n\",\n        \"\\n\",\n        \"diag_metrics = get_all_models_metrics(\\n\",\n        \"    diag_gaus_pred, y_test, max_ens_size=max_ens_size)\\n\",\n        \"pca_metrics = get_all_models_metrics(\\n\",\n        \"    pca_gaus_pred, y_test, max_ens_size=max_ens_size)\\n\",\n        \"\\n\",\n        \"rand_metrics = get_all_models_metrics(\\n\",\n        \"    rand_pred, y_test, max_ens_size=max_ens_size)\\n\",\n        \"pca_rand_metrics = get_all_models_metrics(\\n\",\n        \"    pca_rand_pred, y_test, max_ens_size=max_ens_size)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"yQtoJGx817vV\"\n      },\n      \"source\": [\n        \"##Plot Metrics for Ensembles + Subspace\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"utAi4c29CvgO\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"title = \\\"Ensemble ACC test\\\"\\n\",\n        \"\\n\",\n        \"plt.xlabel(\\\"Ensemble size\\\")\\n\",\n        \"plt.ylabel(\\\"Test Acc\\\")\\n\",\n        \"\\n\",\n        \"ensemble_sizes = np.asarray(range(max_ens_size)) + 1\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    orig_metrics[\\\"accuracy\\\"][\\\"ensemble\\\"],\\n\",\n        \"    marker=\\\"s\\\",\\n\",\n        \"    label=\\\"probs ensembling\\\",\\n\",\n        \"    color=\\\"navy\\\")\\n\",\n        \"\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    [np.mean(orig_metrics[\\\"accuracy\\\"][\\\"individual\\\"])] * len(ensemble_sizes),\\n\",\n        \"    label=\\\"original\\\",\\n\",\n        \"    color=\\\"blue\\\")\\n\",\n        \"\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    [np.mean(diag_metrics[\\\"accuracy\\\"][\\\"individual\\\"])] * len(ensemble_sizes),\\n\",\n        \"    label=\\\"Diag\\\",\\n\",\n        \"    color=\\\"pink\\\")\\n\",\n        \"\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    [np.mean(pca_metrics[\\\"accuracy\\\"][\\\"individual\\\"])] * len(ensemble_sizes),\\n\",\n        \"    label=\\\"PCA\\\",\\n\",\n        \"    color=\\\"green\\\")\\n\",\n        \"\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    diag_metrics[\\\"accuracy\\\"][\\\"ensemble\\\"],\\n\",\n        \"    marker=\\\"s\\\",\\n\",\n        \"    label=\\\"Diag+Ensemble\\\",\\n\",\n        \"    color=\\\"red\\\")\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    wa_metrics[\\\"accuracy\\\"][\\\"ensemble\\\"],\\n\",\n        \"    marker=\\\"s\\\",\\n\",\n        \"    label=\\\"WA+ensembling\\\",\\n\",\n        \"    color=\\\"grey\\\")\\n\",\n        \"\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    pca_metrics[\\\"accuracy\\\"][\\\"ensemble\\\"],\\n\",\n        \"    marker=\\\"s\\\",\\n\",\n        \"    label=\\\"PCA+Ensemble\\\",\\n\",\n        \"    color=\\\"green\\\")\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    rand_metrics[\\\"accuracy\\\"][\\\"ensemble\\\"],\\n\",\n        \"    marker=\\\"s\\\",\\n\",\n        \"    label=\\\"Rand+Ensemble\\\",\\n\",\n        \"    color=\\\"yellow\\\")\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    pca_rand_metrics[\\\"accuracy\\\"][\\\"ensemble\\\"],\\n\",\n        \"    marker=\\\"s\\\",\\n\",\n        \"    label=\\\"PCA Rand+Ensemble\\\",\\n\",\n        \"    color=\\\"m\\\")\\n\",\n        \"\\n\",\n        \"plt.legend()\\n\",\n        \"plt.xlim(1, max_ens_size)\\n\",\n        \"plt.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"8vLQoHba6eXt\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"title = \\\"Ensemble Brier test\\\"\\n\",\n        \"\\n\",\n        \"plt.xlabel(\\\"Ensemble size\\\")\\n\",\n        \"plt.ylabel(\\\"Test Brier\\\")\\n\",\n        \"\\n\",\n        \"ensemble_sizes = np.asarray(range(max_ens_size)) + 1\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    orig_metrics[\\\"brier\\\"][\\\"ensemble\\\"],\\n\",\n        \"    marker=\\\"s\\\",\\n\",\n        \"    label=\\\"probs ensembling\\\",\\n\",\n        \"    color=\\\"navy\\\")\\n\",\n        \"\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    [np.mean(orig_metrics[\\\"brier\\\"][\\\"individual\\\"])] * len(ensemble_sizes),\\n\",\n        \"    label=\\\"original\\\",\\n\",\n        \"    color=\\\"blue\\\")\\n\",\n        \"\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    [np.mean(diag_metrics[\\\"brier\\\"][\\\"individual\\\"])] * len(ensemble_sizes),\\n\",\n        \"    label=\\\"Diag\\\",\\n\",\n        \"    color=\\\"pink\\\")\\n\",\n        \"\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    [np.mean(pca_metrics[\\\"brier\\\"][\\\"individual\\\"])] * len(ensemble_sizes),\\n\",\n        \"    label=\\\"PCA\\\",\\n\",\n        \"    color=\\\"green\\\")\\n\",\n        \"\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    diag_metrics[\\\"brier\\\"][\\\"ensemble\\\"],\\n\",\n        \"    marker=\\\"s\\\",\\n\",\n        \"    label=\\\"Diag Ensemble\\\",\\n\",\n        \"    color=\\\"red\\\")\\n\",\n        \"\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    pca_metrics[\\\"brier\\\"][\\\"ensemble\\\"],\\n\",\n        \"    marker=\\\"s\\\",\\n\",\n        \"    label=\\\"PCA Ensemble\\\",\\n\",\n        \"    color=\\\"green\\\")\\n\",\n        \"\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    wa_metrics[\\\"brier\\\"][\\\"ensemble\\\"],\\n\",\n        \"    marker=\\\"s\\\",\\n\",\n        \"    label=\\\"WA ensembling\\\",\\n\",\n        \"    color=\\\"grey\\\")\\n\",\n        \"\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    rand_metrics[\\\"brier\\\"][\\\"ensemble\\\"],\\n\",\n        \"    marker=\\\"s\\\",\\n\",\n        \"    label=\\\"Rand Ensemble\\\",\\n\",\n        \"    color=\\\"yellow\\\")\\n\",\n        \"plt.plot(\\n\",\n        \"    ensemble_sizes,\\n\",\n        \"    pca_rand_metrics[\\\"brier\\\"][\\\"ensemble\\\"],\\n\",\n        \"    marker=\\\"s\\\",\\n\",\n        \"    label=\\\"PCA Rand Ensemble\\\",\\n\",\n        \"    color=\\\"m\\\")\\n\",\n        \"\\n\",\n        \"plt.xlim(1, max_ens_size)\\n\",\n        \"plt.legend()\\n\",\n        \"plt.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"bGelr5_KBL-O\"\n      },\n      \"source\": [\n        \"## Evaluating on Corrupted CIFAR10\\n\",\n        \"See [paper](https://arxiv.org/pdf/1906.02530.pdf) for data description.\\n\",\n        \"\\n\",\n        \"CAUTION: This section will be very time-consuming. If one wants to test the code quickly, consider only run a small portion of CIFAR10-C -- reducing 'ALL_CORRUPTIONS' to containing only one type, and 'intensity_range' to [0, 1].\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"K2jeOP8AERPn\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"ALL_CORRUPTIONS = [\\n\",\n        \"    'gaussian_noise',\\n\",\n        \"    'shot_noise',\\n\",\n        \"    # 'impulse_noise',\\n\",\n        \"    # 'defocus_blur',\\n\",\n        \"    # 'frosted_glass_blur',\\n\",\n        \"    # 'motion_blur',\\n\",\n        \"    # 'zoom_blur',\\n\",\n        \"    # 'snow',\\n\",\n        \"    # 'frost',\\n\",\n        \"    # 'fog',\\n\",\n        \"    # 'brightness',\\n\",\n        \"    # 'contrast',\\n\",\n        \"    # 'elastic',\\n\",\n        \"    # 'pixelate',\\n\",\n        \"    # 'jpeg_compression',\\n\",\n        \"    # 'gaussian_blur',\\n\",\n        \"    # 'saturate',\\n\",\n        \"    # 'spatter',\\n\",\n        \"    # 'speckle_noise',\\n\",\n        \"]\\n\",\n        \"\\n\",\n        \"num_models_to_use = 5\\n\",\n        \"ens_size_list = [2, 4]\\n\",\n        \"\\n\",\n        \"model_names = ['original', 'wa', 'diag', 'pca', 'rand', 'pca_rand']\\n\",\n        \"model_names_plus_ens = []\\n\",\n        \"for i in ens_size_list:\\n\",\n        \"  model_names_plus_ens = model_names_plus_ens + [\\n\",\n        \"      name + '_ens_{}'.format(i) for name in model_names\\n\",\n        \"  ]\\n\",\n        \"\\n\",\n        \"all_model_names = model_names + model_names_plus_ens\\n\",\n        \"\\n\",\n        \"model_to_acc_every_level = {name: [] for name in all_model_names}\\n\",\n        \"model_to_brier_every_level = {name: [] for name in all_model_names}\\n\",\n        \"\\n\",\n        \"intensity_range = range(6)\\n\",\n        \"for level in intensity_range:\\n\",\n        \"  print('========= Level {} ======='.format(level))\\n\",\n        \"  model_to_acc_this_level = {name: [] for name in all_model_names}\\n\",\n        \"  model_to_brier_this_level = {name: [] for name in all_model_names}\\n\",\n        \"  if level == 0:\\n\",\n        \"    corruptions = ['no_corruption']\\n\",\n        \"  else:\\n\",\n        \"    corruptions = ALL_CORRUPTIONS\\n\",\n        \"  for corruption_type in corruptions:\\n\",\n        \"    if corruption_type is 'no_corruption':\\n\",\n        \"      ds_test = tfds.load(name='cifar10', split=['test'], batch_size=-1)\\n\",\n        \"    else:\\n\",\n        \"      # Load corrupted data.\\n\",\n        \"      corruption_config_name = corruption_type + '_{}'.format(level)\\n\",\n        \"      ds_test = tfds.load(\\n\",\n        \"          name='cifar10_corrupted',\\n\",\n        \"          split=['test'],\\n\",\n        \"          builder_kwargs={'config': corruption_config_name},\\n\",\n        \"          batch_size=-1)\\n\",\n        \"    numpy_ds = tfds.as_numpy(ds_test)\\n\",\n        \"    x_test, y_test = numpy_ds[0]['image'], numpy_ds[0]['label']\\n\",\n        \"    x_test = x_test.reshape([-1, Hn, Wn, Cn])\\n\",\n        \"    y_test = y_test.reshape([-1])\\n\",\n        \"    N_test = len(y_test)\\n\",\n        \"    # Run inference\\n\",\n        \"    with tf.Session() as sess:\\n\",\n        \"      feed_dict[X_ph] = x_test\\n\",\n        \"      feed_dict[y_ph] = y_test\\n\",\n        \"      #Get predictions\\n\",\n        \"      for name in model_names:\\n\",\n        \"        if name is 'original':\\n\",\n        \"          pred_list = get_pred_list(Ws_many[0:num_models_to_use],\\n\",\n        \"                                    bs_many[0:num_models_to_use], feed_dict,\\n\",\n        \"                                    sess)\\n\",\n        \"        elif name is 'wa':\\n\",\n        \"          # Weight Averaged\\n\",\n        \"          pred_list = get_pred_list(wa_Ws[0:num_models_to_use],\\n\",\n        \"                                    wa_bs[0:num_models_to_use], feed_dict, sess)\\n\",\n        \"        elif name is 'diag':\\n\",\n        \"          # Subspacesampling\\n\",\n        \"          pred_list = get_subspace_pred_list(\\n\",\n        \"              dial_gaussian_whole_Ws[0:num_models_to_use],\\n\",\n        \"              dial_gaussian_whole_bs[0:num_models_to_use], feed_dict, sess)\\n\",\n        \"        elif name is 'pca':\\n\",\n        \"          pred_list = get_subspace_pred_list(\\n\",\n        \"              pca_gaussian_whole_Ws[0:num_models_to_use],\\n\",\n        \"              pca_gaussian_whole_bs[0:num_models_to_use], feed_dict, sess)\\n\",\n        \"        elif name is 'pca_rand':\\n\",\n        \"          pred_list = get_subspace_pred_list(\\n\",\n        \"              pca_gaussian_rand_Ws[0:num_models_to_use],\\n\",\n        \"              pca_gaussian_rand_bs[0:num_models_to_use], feed_dict, sess)\\n\",\n        \"        elif name is 'rand':\\n\",\n        \"          pred_list = get_subspace_pred_list(rand_Ws[0:num_models_to_use],\\n\",\n        \"                                             rand_bs[0:num_models_to_use],\\n\",\n        \"                                             feed_dict, sess)\\n\",\n        \"        corrupt_metrics = get_all_models_metrics(\\n\",\n        \"            pred_list, y_test, ens_size_list=ens_size_list)\\n\",\n        \"        model_to_acc_this_level[name].append(\\n\",\n        \"            np.mean(corrupt_metrics['accuracy']['individual']))\\n\",\n        \"        model_to_brier_this_level[name].append(\\n\",\n        \"            np.mean(corrupt_metrics['brier']['individual']))\\n\",\n        \"        for i, ens_size in enumerate(ens_size_list):\\n\",\n        \"          model_to_acc_this_level[name + '_ens_{}'.format(ens_size)].append(\\n\",\n        \"              corrupt_metrics['accuracy']['ensemble'][i])\\n\",\n        \"          model_to_brier_this_level[name + '_ens_{}'.format(ens_size)].append(\\n\",\n        \"              corrupt_metrics['brier']['ensemble'][i])\\n\",\n        \"\\n\",\n        \"  for name in all_model_names:\\n\",\n        \"    model_to_acc_every_level[name].append(model_to_acc_this_level[name])\\n\",\n        \"    model_to_brier_every_level[name].append(model_to_brier_this_level[name])\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"rGS9GPU2mo5j\"\n      },\n      \"source\": [\n        \"## Plot the metrics across corruption intensity\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"b5cAs29LkPYu\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"ens_size_list = [2, 4]\\n\",\n        \"model_names = ['original', 'wa', 'diag', 'pca', 'rand', 'pca_rand']\\n\",\n        \"model_names_plus_ens = []\\n\",\n        \"for i in ens_size_list:\\n\",\n        \"  model_names_plus_ens = model_names_plus_ens + [\\n\",\n        \"      name + '_ens_{}'.format(i) for name in model_names\\n\",\n        \"  ]\\n\",\n        \"\\n\",\n        \"all_model_names = model_names + model_names_plus_ens\\n\",\n        \"\\n\",\n        \"# Model names used by Jensen Shannon plots.\\n\",\n        \"js_model_names = ['inde', 'traj', 'diag', 'pca', 'rand', 'pca_rand']\\n\",\n        \"\\n\",\n        \"model_name_to_color = {\\n\",\n        \"    'original': 'indianred',\\n\",\n        \"    'wa': 'dimgray',\\n\",\n        \"    'diag': 'gold',\\n\",\n        \"    'pca': 'blue',\\n\",\n        \"    'rand': 'mediumseagreen',\\n\",\n        \"    'pca_rand': 'fuchsia',\\n\",\n        \"    'inde': 'red',\\n\",\n        \"    'traj': 'grey'\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"for name in model_names:\\n\",\n        \"  for i in ens_size_list:\\n\",\n        \"    model_name_to_color[name + '_ens_{}'.format(i)] = model_name_to_color[name]\\n\",\n        \"\\n\",\n        \"model_name_to_label = {\\n\",\n        \"    'original': 'Original',\\n\",\n        \"    'wa': 'Weight Avg',\\n\",\n        \"    'diag': 'Diag Gaus',\\n\",\n        \"    'pca': 'PCA Gaus',\\n\",\n        \"    'rand': 'Random',\\n\",\n        \"    'pca_rand': 'PCA Random',\\n\",\n        \"    'inde': 'Independent',\\n\",\n        \"    'traj': 'Train Trajectory'\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"for name in model_names:\\n\",\n        \"  model_name_to_label[name + '_ens'] = model_name_to_label[name] + '+Ens'\\n\",\n        \"  for i in ens_size_list:\\n\",\n        \"    model_name_to_label[\\n\",\n        \"        name +\\n\",\n        \"        '_ens_{}'.format(i)] = model_name_to_label[name] + '+Ens {}'.format(i)\\n\",\n        \"\\n\",\n        \"# Line style, currently can only support 2 ensemble sizes. Beyond that, solid\\n\",\n        \"# line will be used for all.\\n\",\n        \"model_name_to_ls = {}\\n\",\n        \"for name in model_names:\\n\",\n        \"  model_name_to_ls[name] = 'dashed'\\n\",\n        \"  model_name_to_ls[name + '_ens_{}'.format(ens_size_list[0])] = 'dotted'\\n\",\n        \"  for i in range(1, len(ens_size_list)):\\n\",\n        \"    model_name_to_ls[name + '_ens_{}'.format(ens_size_list[i])] = 'solid'\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def plot_metric_over_corrupted_data(metric_name, intensity_range,\\n\",\n        \"                                    all_model_names, base_model_names,\\n\",\n        \"                                    color_map, ls_map):\\n\",\n        \"  plt.figure(figsize=(10, 9))\\n\",\n        \"\\n\",\n        \"  ylabel = {\\n\",\n        \"      'acc': 'Accuracy',\\n\",\n        \"      'brier': 'Brier',\\n\",\n        \"  }\\n\",\n        \"  plt.xlabel('Corruption Intensity', fontsize=16)\\n\",\n        \"  plt.ylabel(ylabel[metric_name], fontsize=16)\\n\",\n        \"  label_map = {'original': 'Single'}\\n\",\n        \"  for ens_size in ens_size_list:\\n\",\n        \"    label_map['original_ens_{}'.format(ens_size)] = '{}-Ensemble'.format(\\n\",\n        \"        ens_size)\\n\",\n        \"  model_to_mean = {name: [] for name in all_model_names}\\n\",\n        \"  for name in all_model_names:\\n\",\n        \"    if metric_name is 'acc':\\n\",\n        \"      model_to_metric_every_level = model_to_acc_every_level[name]\\n\",\n        \"    elif metric_name is 'brier':\\n\",\n        \"      model_to_metric_every_level = model_to_brier_every_level[name]\\n\",\n        \"    for t in intensity_range:\\n\",\n        \"      model_to_mean[name].append(np.mean(model_to_metric_every_level[t]))\\n\",\n        \"\\n\",\n        \"    if name in label_map:\\n\",\n        \"      label = label_map[name]\\n\",\n        \"    else:\\n\",\n        \"      label = None\\n\",\n        \"    plt.plot(\\n\",\n        \"        intensity_range,\\n\",\n        \"        model_to_mean[name],\\n\",\n        \"        marker='s',\\n\",\n        \"        label=label,\\n\",\n        \"        color=color_map[name],\\n\",\n        \"        ls=ls_map[name])\\n\",\n        \"\\n\",\n        \"  legend0 = plt.legend(loc=3, fontsize=12)\\n\",\n        \"\\n\",\n        \"  patch_list = []\\n\",\n        \"  for name in base_model_names:\\n\",\n        \"    patch_list.append(\\n\",\n        \"        mpatch.Patch(\\n\",\n        \"            color=model_name_to_color[name],\\n\",\n        \"            label=model_name_to_label[name]))\\n\",\n        \"  legend1 = plt.legend(handles=patch_list)\\n\",\n        \"  ax = plt.gca().add_artist(legend0)\\n\",\n        \"\\n\",\n        \"  plt.xlim(np.min(intensity_range), np.max(intensity_range))\\n\",\n        \"  plt.tight_layout()\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def plot_js_over_corrupted_data(intensity_range, all_model_names, color_map,\\n\",\n        \"                                label_map):\\n\",\n        \"  plt.figure(figsize=(10, 9))\\n\",\n        \"  plt.xlabel('Corruption Intensity', fontsize=16)\\n\",\n        \"  plt.ylabel('Jensen Shannon', fontsize=16)\\n\",\n        \"\\n\",\n        \"  model_to_mean = {name: [] for name in all_model_names}\\n\",\n        \"\\n\",\n        \"  for name in all_model_names:\\n\",\n        \"    model_to_metric_every_level = model_to_js_every_level[name]\\n\",\n        \"    for t in intensity_range:\\n\",\n        \"      model_to_mean[name].append(np.mean(model_to_metric_every_level[t]))\\n\",\n        \"    plt.plot(\\n\",\n        \"        intensity_range,\\n\",\n        \"        model_to_mean[name],\\n\",\n        \"        marker='s',\\n\",\n        \"        label=label_map[name],\\n\",\n        \"        color=color_map[name])\\n\",\n        \"\\n\",\n        \"  plt.xlim(np.min(intensity_range), np.max(intensity_range))\\n\",\n        \"  plt.tight_layout()\\n\",\n        \"  plt.legend()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"cszvIYjZkHLi\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"intensity_range = range(6)\\n\",\n        \"plot_metric_over_corrupted_data('acc', intensity_range, all_model_names,\\n\",\n        \"                                model_names, model_name_to_color,\\n\",\n        \"                                model_name_to_ls)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"aLsVQu1SYzaX\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"intensity_range = range(6)\\n\",\n        \"plot_metric_over_corrupted_data('brier', intensity_range, all_model_names,\\n\",\n        \"                                model_names, model_name_to_color,\\n\",\n        \"                                model_name_to_ls)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"ZwOzmfhn3Z4l\"\n      },\n      \"source\": [\n        \"##Jensen Shannon\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"tqiAL-z73cPe\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def get_entropy(p):\\n\",\n        \"  return np.sum(-p * np.log(p + 1e-5), axis=1)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# Compute the Jensen Shannon score given a list of model predictions.\\n\",\n        \"def get_jensen_shannon(pred_list, is_logit=False):\\n\",\n        \"  n = len(pred_list)\\n\",\n        \"  if is_logit:\\n\",\n        \"    p_list = []\\n\",\n        \"    for i in range(n):\\n\",\n        \"      p_list.append(softmax(pred_list[i], axis=1))\\n\",\n        \"  else:\\n\",\n        \"    p_list = pred_list\\n\",\n        \"  p_np = np.stack(p_list, axis=0)\\n\",\n        \"  ensemble_pred = np.mean(p_np, axis=0)\\n\",\n        \"  ensemble_entropy = np.mean(get_entropy(ensemble_pred))\\n\",\n        \"\\n\",\n        \"  mean_entropy = np.mean(np.sum(-p_np * np.log(p_np + 1e-5), axis=2))\\n\",\n        \"  return ensemble_entropy - mean_entropy\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"mCgvOt_gbRYG\"\n      },\n      \"source\": [\n        \"### Eval on SVHN\\n\",\n        \"JS on OOD data\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"4WralaRlbVOW\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"_, ds_test = tfds.load(\\n\",\n        \"    name=\\\"svhn_cropped\\\", split=[\\\"train\\\", \\\"test\\\"], batch_size=-1)\\n\",\n        \"\\n\",\n        \"numpy_ds = tfds.as_numpy(ds_test)\\n\",\n        \"X_test_raw, y_test_fine_raw = numpy_ds[\\\"image\\\"], numpy_ds[\\\"label\\\"]\\n\",\n        \"\\n\",\n        \"X_test_svhn = X_test_raw\\n\",\n        \"y_test_svhn = y_test_fine_raw\\n\",\n        \"\\n\",\n        \"subsample = np.random.choice(len(y_test_svhn), 10000, replace=False)\\n\",\n        \"X_svhn = X_test_svhn[subsample, :, :, :]\\n\",\n        \"y_svhn = y_test_svhn[subsample]\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"ICYLKUto1mrv\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"traj_svhn_js = []\\n\",\n        \"pca_svhn_js = []\\n\",\n        \"diag_svhn_js = []\\n\",\n        \"rand_svhn_js = []\\n\",\n        \"pca_rand_svhn_js = []\\n\",\n        \"\\n\",\n        \"with tf.Session() as sess:\\n\",\n        \"  feed_dict[X_ph] = X_svhn\\n\",\n        \"  feed_dict[y_ph] = y_svhn\\n\",\n        \"  feed_dict[lr_ph] = 0.0\\n\",\n        \"  feed_dict[dropout_rate_ph] = 0.0\\n\",\n        \"  indi_svhn_pred = get_pred_list(Ws_many[0:10], bs_many[0:10], feed_dict, sess)\\n\",\n        \"  for traj_id in range(points_to_collect):\\n\",\n        \"    trajectory_svhn_pred = get_pred_list(Ws_by_epochs_many[traj_id],\\n\",\n        \"                                         bs_by_epochs_many[traj_id], feed_dict,\\n\",\n        \"                                         sess)\\n\",\n        \"    traj_svhn_js.append(get_jensen_shannon(trajectory_svhn_pred))\\n\",\n        \"\\n\",\n        \"    diag_gaus_whole_svhn_pred = get_pred_list(dial_gaussian_whole_Ws[traj_id],\\n\",\n        \"                                              dial_gaussian_whole_bs[traj_id],\\n\",\n        \"                                              feed_dict, sess)\\n\",\n        \"    diag_svhn_js.append(get_jensen_shannon(diag_gaus_whole_svhn_pred))\\n\",\n        \"\\n\",\n        \"    pca_gaus_whole_svhn_pred = get_pred_list(pca_gaussian_whole_Ws[traj_id],\\n\",\n        \"                                             pca_gaussian_whole_bs[traj_id],\\n\",\n        \"                                             feed_dict, sess)\\n\",\n        \"    pca_svhn_js.append(get_jensen_shannon(pca_gaus_whole_svhn_pred))\\n\",\n        \"\\n\",\n        \"    pca_rand_svhn_pred = get_pred_list(pca_gaussian_rand_Ws[traj_id],\\n\",\n        \"                                       pca_gaussian_rand_bs[traj_id], feed_dict,\\n\",\n        \"                                       sess)\\n\",\n        \"    pca_rand_svhn_js.append(get_jensen_shannon(pca_rand_svhn_pred))\\n\",\n        \"\\n\",\n        \"    rand_svhn_pred = get_pred_list(rand_Ws[traj_id], rand_bs[traj_id],\\n\",\n        \"                                   feed_dict, sess)\\n\",\n        \"    rand_svhn_js.append(get_jensen_shannon(rand_svhn_pred))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"-1j-4_KhAZEg\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"print(\\\"Jensen-Shannon for Independent run is {:.4f}\\\".format(\\n\",\n        \"    get_jensen_shannon(indi_svhn_pred)))\\n\",\n        \"print(\\\"Jensen-Shannon for within-trajectory is {:.4f}\\\".format(\\n\",\n        \"    np.mean(traj_svhn_js)))\\n\",\n        \"\\n\",\n        \"print(\\\"Jensen-Shannon for Diag Gaussian is {:.4f}\\\".format(\\n\",\n        \"    np.mean(diag_svhn_js)))\\n\",\n        \"print(\\\"Jensen-Shannon for PCA Gaussian is {:.4f}\\\".format(np.mean(pca_svhn_js)))\\n\",\n        \"\\n\",\n        \"print(\\\"Jensen-Shannon for Rand is {:.4f}\\\".format(np.mean(rand_svhn_js)))\\n\",\n        \"print(\\\"Jensen-Shannon for PCA Rand is {:.4f}\\\".format(np.mean(pca_rand_svhn_js)))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"FLCIw3GwQeaa\"\n      },\n      \"source\": [\n        \"###Eval on Cifar-10-C\\n\",\n        \"\\n\",\n        \"CAUTION: This section will be very time-consuming. If one wants to test the code quickly, consider only run a small portion of CIFAR10-C -- reducing 'ALL_CORRUPTIONS' to containing only one type, and 'intensity_range' to [0, 1].\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"UNM4VieiQjAp\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Choose any training trajectory to study the JS of subspace samplings.\\n\",\n        \"traj_id = 3\\n\",\n        \"\\n\",\n        \"model_to_js_every_level = {name: [] for name in js_model_names}\\n\",\n        \"\\n\",\n        \"intensity_range = range(6)\\n\",\n        \"for level in intensity_range:\\n\",\n        \"  print(\\\"========= Level {} =======\\\".format(level))\\n\",\n        \"  model_to_js_this_level = {name: [] for name in js_model_names}\\n\",\n        \"  if level == 0:\\n\",\n        \"    corruptions = [\\\"no_corruption\\\"]\\n\",\n        \"  else:\\n\",\n        \"    corruptions = ALL_CORRUPTIONS\\n\",\n        \"  for corruption_type in corruptions:\\n\",\n        \"    if corruption_type is \\\"no_corruption\\\":\\n\",\n        \"      ds_test = tfds.load(name=\\\"cifar10\\\", split=[\\\"test\\\"], batch_size=-1)\\n\",\n        \"    else:\\n\",\n        \"      # Load corrupted data.\\n\",\n        \"      corruption_config_name = corruption_type + \\\"_{}\\\".format(level)\\n\",\n        \"      ds_test = tfds.load(\\n\",\n        \"          name=\\\"cifar10_corrupted\\\",\\n\",\n        \"          split=[\\\"test\\\"],\\n\",\n        \"          builder_kwargs={\\\"config\\\": corruption_config_name},\\n\",\n        \"          batch_size=-1)\\n\",\n        \"    numpy_ds = tfds.as_numpy(ds_test)\\n\",\n        \"    x_test, y_test = numpy_ds[0][\\\"image\\\"], numpy_ds[0][\\\"label\\\"]\\n\",\n        \"    x_test = x_test.reshape([-1, Hn, Wn, Cn])\\n\",\n        \"    y_test = y_test.reshape([-1])\\n\",\n        \"    N_test = len(y_test)\\n\",\n        \"    # Run inference\\n\",\n        \"    with tf.Session() as sess:\\n\",\n        \"      feed_dict[X_ph] = x_test\\n\",\n        \"      feed_dict[y_ph] = y_test\\n\",\n        \"      #Get predictions\\n\",\n        \"      for name in js_model_names:\\n\",\n        \"        if name is \\\"inde\\\":\\n\",\n        \"          pred_list = get_pred_list(Ws_many, bs_many, feed_dict,\\n\",\n        \"                                    sess)\\n\",\n        \"        elif name is \\\"traj\\\":\\n\",\n        \"          # Weight Averaged\\n\",\n        \"          pred_list = get_pred_list(Ws_by_epochs_many[traj_id],\\n\",\n        \"                                    bs_by_epochs_many[traj_id], feed_dict, sess)\\n\",\n        \"        elif name is \\\"diag\\\":\\n\",\n        \"          pred_list = get_pred_list(dial_gaussian_whole_Ws[traj_id],\\n\",\n        \"                                    dial_gaussian_whole_bs[traj_id], feed_dict,\\n\",\n        \"                                    sess)\\n\",\n        \"        elif name is \\\"pca\\\":\\n\",\n        \"          pred_list = get_pred_list(pca_gaussian_whole_Ws[traj_id],\\n\",\n        \"                                    pca_gaussian_whole_bs[traj_id], feed_dict,\\n\",\n        \"                                    sess)\\n\",\n        \"        elif name is \\\"pca_rand\\\":\\n\",\n        \"          pred_list = get_pred_list(pca_gaussian_rand_Ws[traj_id],\\n\",\n        \"                                    pca_gaussian_rand_bs[traj_id], feed_dict,\\n\",\n        \"                                    sess)\\n\",\n        \"        elif name is \\\"rand\\\":\\n\",\n        \"          pred_list = get_pred_list(rand_Ws[traj_id], rand_bs[traj_id],\\n\",\n        \"                                    feed_dict, sess)\\n\",\n        \"\\n\",\n        \"        model_to_js_this_level[name].append(get_jensen_shannon(pred_list))\\n\",\n        \"\\n\",\n        \"  for name in js_model_names:\\n\",\n        \"    model_to_js_every_level[name].append(model_to_js_this_level[name])\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"2mcbo-46d4s2\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"plot_js_over_corrupted_data(intensity_range, js_model_names,\\n\",\n        \"                            model_name_to_color, model_name_to_label)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"zCZUtnjKljz-\"\n      },\n      \"source\": [\n        \"#Diversity vs Accuracy\\n\",\n        \"This section plots the Diversiy vs Accuracy plane for different subspace sampling methods, compared to independent solutions:\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"*   Random\\n\",\n        \"*   Gaussian Diag\\n\",\n        \"*   Gaussian Low rank (PCA)\\n\",\n        \"*   Dropout\\n\",\n        \"\\n\",\n        \"Note that unlike the previous section \\\"Effects of Ensemble + Subspace Sampling\\\" where we only keep samples with good accuracy performance, in this section we include samples that sacrifices accuracy to explore the full spectrum of function diversity\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"D3eKK8UPz-UB\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"base_id = 0\\n\",\n        \"base_v = flatten(Ws_many[base_id], bs_many[base_id])\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_acc_and_diff(pred_class, base_pred, y_label):\\n\",\n        \"  diff = np.mean(pred_class != base_pred)\\n\",\n        \"  acc = np.mean(pred_class == y_label)\\n\",\n        \"  return acc, diff\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# Given a list of weights, compute their accuracy and their difference to the\\n\",\n        \"# base prediction.\\n\",\n        \"def get_acc_and_diff_from_weights(Ws_list, bs_list, feed_dict, base_pred):\\n\",\n        \"  assert len(Ws_list) == len(bs_list)\\n\",\n        \"  with tf.Session() as sess:\\n\",\n        \"    pred_list = get_pred_list(Ws_list, bs_list, feed_dict, sess)\\n\",\n        \"\\n\",\n        \"  acc_list = []\\n\",\n        \"  diff_list = []\\n\",\n        \"  for i in range(len(Ws_list)):\\n\",\n        \"    acc, diff = get_acc_and_diff(\\n\",\n        \"        np.argmax(pred_list[i], axis=-1), base_pred, feed_dict[y_ph])\\n\",\n        \"    acc_list.append(acc)\\n\",\n        \"    diff_list.append(diff)\\n\",\n        \"  return acc_list, diff_list\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"0oScJ4X09-F9\"\n      },\n      \"source\": [\n        \"##Independent Solutions\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"TkwIdoOJvgz2\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"feed_dict = {\\n\",\n        \"    X_ph: X_test,\\n\",\n        \"    y_ph: y_test,\\n\",\n        \"    lr_ph: 0.0,\\n\",\n        \"    dropout_rate_ph: 0.0,\\n\",\n        \"    L2_reg_constant_ph: 0.0,\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"with tf.Session() as sess:\\n\",\n        \"  orig_pred_list = get_pred_list(Ws_many, bs_many, feed_dict, sess)\\n\",\n        \"\\n\",\n        \"base_pred = np.argmax(orig_pred_list[base_id], axis=-1)\\n\",\n        \"\\n\",\n        \"independent_acc = []\\n\",\n        \"independent_diff = []\\n\",\n        \"for i in range(points_to_collect):\\n\",\n        \"  class_pred = np.argmax(orig_pred_list[i], axis=-1)\\n\",\n        \"  acc, diff = get_acc_and_diff(class_pred, base_pred, y_test)\\n\",\n        \"  independent_acc.append(acc)\\n\",\n        \"  independent_diff.append(diff)\\n\",\n        \"\\n\",\n        \"data_to_show = [\\n\",\n        \"    (\\\"independent optima\\\", \\\"red\\\", 300, \\\"*\\\", 1.0, independent_acc,\\n\",\n        \"     independent_diff),\\n\",\n        \"]\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"cotIEVchK3Vh\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"data_to_show = [\\n\",\n        \"    (\\\"independent optima\\\", \\\"red\\\", 300, \\\"*\\\", 1.0, independent_acc,\\n\",\n        \"     independent_diff),\\n\",\n        \"]\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"hT1pKG9W-BTZ\"\n      },\n      \"source\": [\n        \"##Gaussian Sampling\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"czoWhgyGAFoC\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"num_sample = 50\\n\",\n        \"rank = 5  # for PCA\\n\",\n        \"\\n\",\n        \"Ws_traj = Ws_by_epochs_many[base_id]\\n\",\n        \"bs_traj = bs_by_epochs_many[base_id]\\n\",\n        \"\\n\",\n        \"dial_gaussian_whole_Ws = []\\n\",\n        \"dial_gaussian_whole_bs = []\\n\",\n        \"\\n\",\n        \"pca_gaussian_whole_Ws = []\\n\",\n        \"pca_gaussian_whole_bs = []\\n\",\n        \"\\n\",\n        \"vs_list = []\\n\",\n        \"for i in range(len(Ws_traj)):\\n\",\n        \"  vs_list.append(flatten(Ws_traj[i], bs_traj[i]))\\n\",\n        \"\\n\",\n        \"vs_np = np.stack(vs_list, axis=0)\\n\",\n        \"\\n\",\n        \"means = np.mean(vs_np, axis=0)\\n\",\n        \"stds = np.std(vs_np, axis=0)\\n\",\n        \"vs_np_centered = vs_np - means.reshape([1, -1])\\n\",\n        \"\\n\",\n        \"pca = PCA(n_components=rank)\\n\",\n        \"pca.fit(vs_np_centered)\\n\",\n        \"for i in range(num_sample):\\n\",\n        \"  scale = np.random.uniform()\\n\",\n        \"  # One can adjust the constant in front of scale to get a fuller range in\\n\",\n        \"  # diversity-acc plane.\\n\",\n        \"  v_sample = get_gaussian_sample(means, stds, scale=10.0 * scale)\\n\",\n        \"  w_sample, b_sample = reform(v_sample)\\n\",\n        \"  dial_gaussian_whole_Ws.append(w_sample)\\n\",\n        \"  dial_gaussian_whole_bs.append(b_sample)\\n\",\n        \"  # One can adjust the scale value to get a fuller range in diversity-acc plane.\\n\",\n        \"  v_sample = get_pca_gaussian_flat_sampling(pca, means, rank, scale=6.0)\\n\",\n        \"  w_sample, b_sample = reform(v_sample)\\n\",\n        \"\\n\",\n        \"  pca_gaussian_whole_Ws.append(w_sample)\\n\",\n        \"  pca_gaussian_whole_bs.append(b_sample)\\n\",\n        \"\\n\",\n        \"pca_acc, pca_diff = get_acc_and_diff_from_weights(pca_gaussian_whole_Ws,\\n\",\n        \"                                                  pca_gaussian_whole_bs,\\n\",\n        \"                                                  feed_dict, base_pred)\\n\",\n        \"diag_acc, diag_diff = get_acc_and_diff_from_weights(dial_gaussian_whole_Ws,\\n\",\n        \"                                                    dial_gaussian_whole_bs,\\n\",\n        \"                                                    feed_dict, base_pred)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"mfnrhHSa5Xiw\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"data_to_show = data_to_show + [\\n\",\n        \"    (\\\"diag gaussian\\\", \\\"purple\\\", 10, \\\"o\\\", 0.6, diag_acc, diag_diff),\\n\",\n        \"    (\\\"pca gaussian\\\", \\\"fuchsia\\\", 10, \\\"o\\\", 0.3, pca_acc, pca_diff),\\n\",\n        \"]\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"Jn-g6-GZZ5tc\"\n      },\n      \"source\": [\n        \"##Random Sampling\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"uJpRJaDLaFRa\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"rand_Ws = []\\n\",\n        \"rand_bs = []\\n\",\n        \"for i in range(num_sample):\\n\",\n        \"  # One can adjust the constant in front of scale to get a fuller range in\\n\",\n        \"  # diversity-acc plane. \\n\",\n        \"  scale = 70.0 * np.random.uniform()\\n\",\n        \"  v_sample = base_v + scale * get_rand_norm_direction(base_v.shape)\\n\",\n        \"  w_sample, b_sample = reform(v_sample)\\n\",\n        \"  rand_Ws.append(w_sample)\\n\",\n        \"  rand_bs.append(b_sample)\\n\",\n        \"\\n\",\n        \"rand_acc, rand_diff = get_acc_and_diff_from_weights(rand_Ws, rand_bs, feed_dict,\\n\",\n        \"                                                    base_pred)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"h1my3OECbzEi\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"data_to_show = data_to_show + [\\n\",\n        \"    (\\\"random subspace\\\", \\\"blue\\\", 3, \\\"o\\\", 0.3, rand_acc, rand_diff),\\n\",\n        \"]\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"JJWIEJZBZ9Jf\"\n      },\n      \"source\": [\n        \"##Dropout Sampling\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"MBiCleCgb8r1\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def apply_dropout_to_array(anchor_array, dropout_to_use):\\n\",\n        \"  shape_now = anchor_array.shape\\n\",\n        \"  random_mask = np.random.rand(*shape_now)\\n\",\n        \"  mask = (random_mask \\u003c (1.0 - dropout_to_use))\\n\",\n        \"  array_dropped = (anchor_array * mask) / (1.0 - dropout_to_use)\\n\",\n        \"  return array_dropped\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"dropout_Ws = []\\n\",\n        \"dropout_bs = []\\n\",\n        \"for i in range(num_sample):\\n\",\n        \"  # One can adjust the constant to get a fuller range in diversity-acc plane.\\n\",\n        \"  dropout = 0.1 * np.random.uniform()\\n\",\n        \"  v_sample = apply_dropout_to_array(base_v, dropout)\\n\",\n        \"  w_sample, b_sample = reform(v_sample)\\n\",\n        \"  dropout_Ws.append(w_sample)\\n\",\n        \"  dropout_bs.append(b_sample)\\n\",\n        \"\\n\",\n        \"dropout_acc, dropout_diff = get_acc_and_diff_from_weights(\\n\",\n        \"    dropout_Ws, dropout_bs, feed_dict, base_pred)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"E5qdldWHb9c4\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"data_to_show = data_to_show + [\\n\",\n        \"    (\\\"dropout subspace\\\", \\\"orange\\\", 10, \\\"o\\\", 1.0, dropout_acc, dropout_diff),\\n\",\n        \"]\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"VwNL8PPM7DrM\"\n      },\n      \"source\": [\n        \"##Plotting Figure\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"AqhcI78L52hM\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Functions for computing the analytic limit curves (see paper).\\n\",\n        \"\\n\",\n        \"def perturbed_reference_analytic(desired_accuracy, reference_accuracy, classes):\\n\",\n        \"  return (reference_accuracy - desired_accuracy) / (\\n\",\n        \"      reference_accuracy + (reference_accuracy - 1.0) / (classes - 1.0))\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def random_average_case(desired_accuracy, reference_accuracy, classes):\\n\",\n        \"  part1 = reference_accuracy * (1.0 - desired_accuracy)\\n\",\n        \"  part2 = desired_accuracy * (1.0 - reference_accuracy)\\n\",\n        \"  part3 = (1.0 - reference_accuracy) * (1.0 -\\n\",\n        \"                                        desired_accuracy) * (classes - 2.0) / (\\n\",\n        \"                                            classes - 1.0)\\n\",\n        \"  return part1 + part2 + part3\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"DjOAuW3F56qu\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"plt.figure(figsize=(7, 5))\\n\",\n        \"accs_fit_random = np.linspace(0.1, 0.71, 100)\\n\",\n        \"diffs_fit_random = random_average_case(accs_fit_random, 0.71, 10)\\n\",\n        \"plt.plot(\\n\",\n        \"    accs_fit_random,\\n\",\n        \"    diffs_fit_random / (1.0 - accs_fit_random),\\n\",\n        \"    color=\\\"black\\\",\\n\",\n        \"    linestyle=\\\"-.\\\",\\n\",\n        \"    label=\\\"Upper limit\\\")\\n\",\n        \"\\n\",\n        \"# Analytic limits curve.\\n\",\n        \"accs_fit_perturbed = np.linspace(0.1, 0.71, 100)\\n\",\n        \"diffs_fit_perturbed = perturbed_reference_analytic(accs_fit_perturbed, 0.71, 10)\\n\",\n        \"plt.plot(\\n\",\n        \"    accs_fit_perturbed,\\n\",\n        \"    diffs_fit_perturbed / (1.0 - accs_fit_perturbed),\\n\",\n        \"    color=\\\"black\\\",\\n\",\n        \"    linestyle=\\\"--\\\",\\n\",\n        \"    label=\\\"Lower limit\\\")\\n\",\n        \"\\n\",\n        \"for (name_now, color_now, size_now, marker_now, alpha_now, accs_now,\\n\",\n        \"     diffs_now) in data_to_show:\\n\",\n        \"\\n\",\n        \"  metric_now = np.asarray(diffs_now) / (1.0 - np.asarray(accs_now))\\n\",\n        \"\\n\",\n        \"  if name_now != \\\"independent optima\\\":\\n\",\n        \"    plt.scatter(\\n\",\n        \"        accs_now,\\n\",\n        \"        metric_now,\\n\",\n        \"        color=color_now,\\n\",\n        \"        s=size_now,\\n\",\n        \"        marker=marker_now,\\n\",\n        \"        alpha=alpha_now)\\n\",\n        \"    plt.scatter([], [],\\n\",\n        \"                color=color_now,\\n\",\n        \"                label=name_now,\\n\",\n        \"                s=10,\\n\",\n        \"                marker=marker_now,\\n\",\n        \"                alpha=1.0)\\n\",\n        \"  else:\\n\",\n        \"    plt.scatter(\\n\",\n        \"        accs_now,\\n\",\n        \"        metric_now,\\n\",\n        \"        color=color_now,\\n\",\n        \"        s=size_now,\\n\",\n        \"        marker=marker_now,\\n\",\n        \"        alpha=alpha_now,\\n\",\n        \"        label=name_now)\\n\",\n        \"\\n\",\n        \"  if name_now == \\\"independent optima\\\":\\n\",\n        \"    base_star_color = \\\"green\\\"\\n\",\n        \"    plt.scatter([accs_now[base_id]], [metric_now[base_id]],\\n\",\n        \"                color=base_star_color,\\n\",\n        \"                label=\\\"baseline optimum\\\",\\n\",\n        \"                s=size_now,\\n\",\n        \"                marker=marker_now,\\n\",\n        \"                alpha=alpha_now)\\n\",\n        \"\\n\",\n        \"plt.xlabel(\\\"Validation accuracy\\\", fontsize=14)\\n\",\n        \"plt.ylabel(\\\"Fraction of labels changes / (1.0-accuracy)\\\", fontsize=14)\\n\",\n        \"\\n\",\n        \"plt.title(\\\"MediumCNN on Cifar10\\\", fontsize=18)\\n\",\n        \"plt.legend(loc=3, fancybox=True, framealpha=0.5, fontsize=16)\\n\",\n        \"plt.ylim([-0.1, 1.2])\\n\",\n        \"plt.xlim([0, 0.78])\\n\",\n        \"\\n\",\n        \"plt.show()\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [\n        \"8PHJJ59SuMAo\"\n      ],\n      \"name\": \"Release cifar10 medium cnn experiments.ipynb\",\n      \"toc_visible\": true\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "functional_regularisation_for_continual_learning/README.md",
    "content": "# Functional Regularisation for Continual Learning (FRCL) with Gaussian Processes\n\nThis notebook contains code to accompany the ICLR 2020 paper on\nFunctional Regularisation for Continual Learning (FRCL). [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/functional_regularisation_for_continual_learning/frcl.ipynb)\n\nThe experiments in the paper can be reproduced by choosing the respective\nexperimental protocol detailed in the publication. Default values are set to\nreplicate results on Permuted MNIST.\n\nIf you find this code useful, please consider citing this paper:\n\n```\n@article{titsias2019functional,\n  title={Functional regularisation for continual learning using gaussian processes},\n  author={Titsias, Michalis K and Schwarz, Jonathan and Matthews, AG de G and Pascanu, Razvan and Teh, Yee Whye},\n  journal={ICLR 2020},\n  year={2020}\n}\n```\n"
  },
  {
    "path": "functional_regularisation_for_continual_learning/frcl.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ksftVXR8lUeP\"\n      },\n      \"source\": [\n        \"Copyright 2020 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"you may not use this file except in compliance with the License.\\n\",\n        \"You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software\\n\",\n        \"distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"See the License for the specific language governing permissions and\\n\",\n        \"limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"TEf5_rHhlXmd\"\n      },\n      \"source\": [\n        \"# [Functional Regluarisation for Continual Learning with Gaussian Processes](https://arxiv.org/abs/1901.11356) (Published at ICLR 2020)\\n\",\n        \"\\n\",\n        \"![Screen Shot 2020-09-29 at 7.59.29 AM.png](data:image/png;base64,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AQQQQAABBBBAAAEEEEAAAQQQ8EmAIKpPbKyEAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIEAQlc8AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIBPAgRRfWJjJQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABgqh8BhBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEfBIgiOoTGyshgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCBBE5TOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIOCTAEFUn9hYCQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAICqfAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABnwQIovrExkoIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgRR+QwggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCPgkQBDVJzZWQgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAgiMpnAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAJwGCqD6xsRICCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAEFUPgMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAj4JEET1iY2VEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQIovIZQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBDwSYAgqk9srIQAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggQBCVzwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgE8CBFF9YmMlBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCqHwGEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQR8EiCI6hMbKyGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIEETlM4AAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg4JMAQVSf2FgJAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAgKp8BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGfBAii+sTGSggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACBFH5DCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAII+CRAENUnNlZCAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEECCIymcAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQMAnAYKoPrGxEgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAQVQ+AwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACPgkQRPWJjZUQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBAii8hlAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE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U6tWrUTf92eo13EfOq/3jEqWLOkUdL755ptFA6q1atVytdqNtq1bt5oh1UOHDt1o0xdRUVGydu1ajwK+disygwACCISJAEHUMDkRdAMBBBBAAAEEEPCXQM+ePeXw4cP+2pxX29GA5vz5871ax3HhIUOGmE/cOraPGDFC9CJNMCb941+PQ//g14skyQ2bkzFjRrnzzjulQoUK0qJFC/MpYn261Zfp119/lf79+zutOm3aNMmRI4dTuy8N3333ndsnavPlyyejR482n372Zdv+Wuf8+fNSp04dOXPmjLnJAQMGiF5AYkIAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBOBUAdRjx49KgUKFJDr16/f6K5WyezSpYtUqVLlRpu+qFevnlkt067RxxkNQeq9Ddspb968ogHV0qVL2zZ79FqrpDZt2tSskuq4wiuvvCL9+vVzbLab92cQNbkQaocOHWT69OkSjMIhgwcPlpEjR9od50033STr16+XMmXK2LW7m9GquNWqVZPff//dbhE9f3qumBBAAAErChBEteJZo88IIIAAAggggEAyAnfccYfs3r07mSUC95YO33Lp0iWfd6BD5eiFmYSEBKdtPP/88zJx4kSndn826PA6L730knz44Yfi6mlaT/alVVJ1+JR27dqJBnO9mb7//nupVKmS0yoajNXheVI7aQhVn4R2HI5It6vDAenFDe1/qKeBAwfKqFGjbnRDn9J+7rnnbszzAgEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACB5ARCHUTVog+OhSfeeOMN0cCk3gfR+yG20y+//CJFixa1bfL69cmTJyV37tx24VfdiA5l/9RTT3m9vaQVLl68KEWKFJHjx48nNZm/dQj6bdu22bU5zvgriPr222+b1Vld3bvp2rWrWe3V1yIhjn1Obl7vgWlRj7///ttuMe1f27Zt7dpSmlm2bJnLSrh6j69UqVIprc77CCCAQNgJEEQNu1NChxBAAAEEEEAAgdQJWDmI6urCTJJGtmzZzCdDtQJpICa9SNC5c2e5fPmyXzZfs2ZNcwiWXLlyeby9QAZRkwuh3nbbbfLFF1+YQ+l43NkALbh48WLz6WrbzRNEtdXgNQIIIIAAAggggAACCCCAAAIIIIAAAggggEBKAqEMompYUodu/+mnn+y6mRQ21ZHtJkyYYPde3759zRHL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AAEEEEAAAQQQQAABBBDwoQCBqD7E59QIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAPwsQiOrPs0ffEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAR8KEIjqQ3xOjQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCPizAIGo/jx79B0BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBDwoQCBqD7E59QIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAPwsQiOrPs0ffEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAR8KEIjqQ3xOjQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCPizAIGo/jx79B0BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBDwoQCBqD7E59QIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAPwsQiOrPs0ffEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAR8KEIjqQ3xOjQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCPizAIGo/jx79B0BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBDwoQCBqD7E59QIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAPwsQiOrPs0ffEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAR8KEIjqQ3xOjQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCPizAIGo/jx79B0BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBDwoQCBqD7E59QIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAPwsQiOrPs0ffEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAR8KEIjqQ3xOjQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCPizAIGo/jx79B0BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBDwoQCBqD7E59QIIIAAAgggZDRbywAAAVNJREFUgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAPwsQiOrPs0ffEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAR8KEIjqQ3xOjQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCPizAIGo/jx79B0BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBDwoQCBqD7E59QIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAPwsQiOrPs0ffEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAR8K/B/EgJo00pP+3wAAAABJRU5ErkJggg==)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"pqifXRtRPcGw\"\n      },\n      \"source\": [\n        \"**Functional Regluarisation for Continual Learning (FRCL)** is a method designed to tackle the Continual Learning (CL) problem, combining recent ideas and advances in Bayesian methods, Functional Regularisation and Experience Replay. FRCL is one of the few CL algorithms that provide a principled criterion to choose representative training points for replay. In addition, the Bayesian formulation provides uncertainty estimates that can be used in the task-agonstic setting.\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"This code implements training and replicates published results presented for the Permuted MNIST and Sequential Omniglot datasets. If you find this code useful, please cite the paper:\\n\",\n        \"\\n\",\n        \"```\\n\",\n        \"@article{titsias2019functional,\\n\",\n        \"  title={Functional regularisation for continual learning using gaussian processes},\\n\",\n        \"  author={Titsias, Michalis K and Schwarz, Jonathan and Matthews, AG de G and Pascanu, Razvan and Teh, Yee Whye},\\n\",\n        \"  journal={ICLR 2020},\\n\",\n        \"  year={2020}\\n\",\n        \"}\\n\",\n        \"```\\n\",\n        \"If you have any questions, please do not hestiate to reach out to the\\n\",\n        \"code authors:\\n\",\n        \"\\n\",\n        \"*   Jonathan Schwarz (schwarzjn@google.com)\\n\",\n        \"*   Michalis Titsias (mtitsias@google.com)\\n\",\n        \"*   Alex Matthews (alexmatthews@google.com)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"kDn_lVxg3Z2G\"\n      },\n      \"source\": [\n        \"# Installation and Setup\\n\",\n        \"\\n\",\n        \"We begin by installing and importing all necessary dependencies.\\n\",\n        \"\\n\",\n        \"In order to allow efficient training, please ensure to use a colab kernel with a GPU by doing the following:\\n\",\n        \"\\n\",\n        \" \\u003e `Edit` -\\u003e `Notebook settings` -\\u003e select GPU under `Hardware accelerator` -\\u003e `Save`\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"GQ18Kd5F3uKe\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Installing and Importing Dependencies\\n\",\n        \"\\n\",\n        \"print('Installing necessary libraries...')\\n\",\n        \"\\n\",\n        \"def install_libraries():\\n\",\n        \"  !pip install gpflow\\n\",\n        \"  !pip install dm-sonnet\\n\",\n        \"  !pip install tfa-nightly\\n\",\n        \"\\n\",\n        \"import IPython\\n\",\n        \"  \\n\",\n        \"with IPython.utils.io.capture_output() as captured:\\n\",\n        \"  install_libraries()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"__3eqm3q3sr-\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Imports\\n\",\n        \"\\n\",\n        \"import collections\\n\",\n        \"import matplotlib\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"import numpy as np\\n\",\n        \"import seaborn as sns\\n\",\n        \"\\n\",\n        \"import tensorflow as tf\\n\",\n        \"import tensorflow_addons as tfa\\n\",\n        \"import tensorflow_datasets as tfds\\n\",\n        \"\\n\",\n        \"# Python 3 type annotations\\n\",\n        \"from typing import Optional, Sequence, Text, Tuple\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ZhCA3yCJVWxA\"\n      },\n      \"source\": [\n        \"Let's define a few useful contants and set some global properties related to plotting and logging.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"WY9arMfM1as2\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Setup\\n\",\n        \"\\n\",\n        \"# TF logging level (disables some gpflow internal warnings we can safely ignore)\\n\",\n        \"tf.get_logger().setLevel('ERROR')\\n\",\n        \"\\n\",\n        \"# Plotting options\\n\",\n        \"sns.set_style(\\\"white\\\")\\n\",\n        \"matplotlib.use('Agg') \\n\",\n        \"%matplotlib inline\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"4LAxYQ5gVtIX\"\n      },\n      \"source\": [\n        \"Run the code below to check that you chose the correct colab runtime.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"H-ogeIN5QV8X\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Test for GPU\\n\",\n        \"\\n\",\n        \"device_name = tf.test.gpu_device_name()\\n\",\n        \"if device_name != '/device:GPU:0':\\n\",\n        \"  print('NOT using a GPU. Please follow the instructions above.')\\n\",\n        \"else:\\n\",\n        \"  print(\\\"Using a GPU. You're good to go.\\\")\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"CdtWhHZvjz7S\"\n      },\n      \"source\": [\n        \"# Setting up Data\\n\",\n        \"\\n\",\n        \"As a first step, we will setup the CL problems to be used in the code below. Specifically, the code below implements the following experiments:\\n\",\n        \"\\n\",\n        \"* Permuted MNIST (Proposed as a CL benchmark in [3])\\n\",\n        \"* Sequential Omniglot (Proposed as a CL benchmark in [2])\\n\",\n        \"\\n\",\n        \"We start by defining a few useful objects that hold data at various stages throughout the training pipeline:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"QYOn2oR-k0Of\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Data utility objects\\n\",\n        \"\\n\",\n        \"# Holds underlying data source for all tasks. `task_metadata` contains all\\n\",\n        \"# metadata necessary to split this data into a sequence of tasks.\\n\",\n        \"RawData = collections.namedtuple(\\n\",\n        \"    'RawData', ['inputs', 'outputs', 'task_metadata'])\\n\",\n        \"\\n\",\n        \"# `RawData` split into train/valid \\u0026 test sets for a specific task.\\n\",\n        \"DatasetSplit = collections.namedtuple(\\n\",\n        \"    'DatasetSplit', ['train', 'valid', 'test',\\n\",\n        \"                     'num_train', 'num_valid', 'num_test'])\\n\",\n        \"\\n\",\n        \"# TF iterators used to fetch data in the training pipeline.\\n\",\n        \"# `train`: Training dataset. Possibly augmented.\\n\",\n        \"# `discr_search`: Dataset to choose replay/inducing points from. Not augmented.\\n\",\n        \"# `discr_search_eval`: Dataset to evaluate inducing point approximation on.\\n\",\n        \"#  Either training or validation set. Not augmented.\\n\",\n        \"# `test`: Test dataset. Not augmented.\\n\",\n        \"Iterators = collections.namedtuple(\\n\",\n        \"    'Iterators', ['train', 'discr_search', 'discr_search_eval', 'test'])\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"AaTKGUDXWr3T\"\n      },\n      \"source\": [\n        \"And next define a few functions to operate on those objects, performing converstions along with the necessary processing of those objects.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"OQS5wddJWr-T\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Data utility functions\\n\",\n        \"\\n\",\n        \"def make_tf_dataset(inputs: tf.Tensor,\\n\",\n        \"                    outputs: tf.Tensor,\\n\",\n        \"                    num_datapoints: int) -\\u003e tf.data.Dataset:\\n\",\n        \"  \\\"\\\"\\\"Create a dataset for supervised learning.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    inputs: A tensor of shape `[num_datapoitns, ...]`.\\n\",\n        \"    outputs: Associated outputs. A tensor of shape `[num_datapoitns, ...]`.\\n\",\n        \"    num_datapoints: Number of expected datapoints.\\n\",\n        \"  Returns:\\n\",\n        \"    dataset: A tf.data.Dataset instance. Implements shuffling and repetition.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  dataset = tf.data.Dataset.from_tensor_slices((inputs, outputs))\\n\",\n        \"  return dataset.shuffle(num_datapoints).repeat()\\n\",\n        \"\\n\",\n        \"def create_iterators(data: RawData) -\\u003e Iterators:\\n\",\n        \"  \\\"\\\"\\\"Create dataset tensorflow dataset iterators.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    data: A RawData object.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    tensorflow Dataset iterators.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  # Setup dataset iterators\\n\",\n        \"  train_iterator = iter(data.train.batch(train_batch_size))\\n\",\n        \"  test_iterator = iter(data.test.batch(data.num_test))\\n\",\n        \"\\n\",\n        \"  # Dataset to choose inducing points from\\n\",\n        \"  discr_search_iterator = iter(data.train.batch(data.num_train))\\n\",\n        \"  if data.valid is not None:\\n\",\n        \"    # Dataset to evaluate the quality of the inducing approximation on\\n\",\n        \"    discr_search_eval_iterator = iter(data.valid.batch(data.num_valid))\\n\",\n        \"  else:\\n\",\n        \"    # Use only a quarter fo the train dataset to avoid long training times\\n\",\n        \"    discr_search_eval_iterator = iter(data.train.batch(data.num_train // 4))\\n\",\n        \"\\n\",\n        \"  return Iterators(\\n\",\n        \"      train_iterator,\\n\",\n        \"      discr_search_iterator,\\n\",\n        \"      discr_search_eval_iterator,\\n\",\n        \"      test_iterator)\\n\",\n        \"\\n\",\n        \"def concat(x: tf.Tensor, y: tf.Tensor) -\\u003e tf.Tensor:\\n\",\n        \"  \\\"\\\"\\\"Concatenates two tensors along first dimension.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    x: A tensor of shape `[N, ...]`.\\n\",\n        \"    y: A tensor of shape `[M, ...]`.\\n\",\n        \"  Returns:\\n\",\n        \"    A tensor of shape `[N+M, ...]`.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  return tf.concat([x, y], axis=0)\\n\",\n        \"\\n\",\n        \"def select_datapoints(\\n\",\n        \"    data: tf.Tensor,\\n\",\n        \"    select_idx: np.array) -\\u003e tf.Tensor:\\n\",\n        \"  \\\"\\\"\\\"Select subset of datapoints provided by `select_idx` from `data`.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    data: A tensor of shape `[num_datapoints, ...]`.\\n\",\n        \"    select_idx: Indices of data to be returned. Shape (N \\u003c= num_datapoints, ...)\\n\",\n        \"  Returns:\\n\",\n        \"    A tensor of shape `[N, ...]`.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  return tf.gather(data, select_idx, axis=0)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"6hgLRArrYpdU\"\n      },\n      \"source\": [\n        \"Let's define all functions necessary to generate the Permuted MNIST benchmark. This includes a function to fetch the data and apply some elimentary preprocessing (returning a `RawData` object) as well as one to split the data into tasks based on different random permuations (returning a `DatasetSplit` object).\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"2upl5WdRpP5c\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Permuted MNIST\\n\",\n        \"\\n\",\n        \"def generate_permutation(num_idx: int) -\\u003e Tuple[np.array, np.array]:\\n\",\n        \"  \\\"\\\"\\\"Create a permuation of `num_idx` indices.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    num_idx: Number of indices to be permuted\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    perm: Permuted indices.\\n\",\n        \"    inv_perm: Inverse of `perm`. Needed to invert permuation.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  perm = np.random.permutation(range(num_idx))\\n\",\n        \"  inv_perm = np.argsort(perm)\\n\",\n        \"  return perm, inv_perm\\n\",\n        \"\\n\",\n        \"def prepare_mnist(num_mnist_tasks: int) -\\u003e RawData:\\n\",\n        \"  \\\"\\\"\\\"Download MNIST data and create permutations.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    num_mnist_tasks: How many tasks to use.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    Data re-organised with permutation masks to distinguish between tasks.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  mnist = tf.keras.datasets.mnist.load_data()\\n\",\n        \"\\n\",\n        \"  x_train, y_train = mnist[0]\\n\",\n        \"  x_test, y_test = mnist[1]\\n\",\n        \"\\n\",\n        \"  all_images = concat(x_train, x_test)\\n\",\n        \"  all_labels = concat(y_train, y_test)\\n\",\n        \"\\n\",\n        \"  # Safe scalling and casting\\n\",\n        \"  all_images = tf.image.convert_image_dtype(all_images, tf.float64)\\n\",\n        \"  # Reshape\\n\",\n        \"  all_images = snt.Flatten()(all_images)\\n\",\n        \"  num_indicies = all_images.shape[1]\\n\",\n        \"\\n\",\n        \"  # Define permutations\\n\",\n        \"  task_perms, task_inv_perms = zip(*[generate_permutation(num_indicies)\\n\",\n        \"                                     for _ in range(num_mnist_tasks)])\\n\",\n        \"\\n\",\n        \"  return RawData(all_images.numpy(), all_labels.numpy(), (task_perms, task_inv_perms))\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def load_mnist_permutation(\\n\",\n        \"    full_mnist: RawData,\\n\",\n        \"    task_id: int,\\n\",\n        \"    construct_valid: bool,\\n\",\n        \"    use_data_augmentationt: bool) -\\u003e DatasetSplit:\\n\",\n        \"  \\\"\\\"\\\"Extract data for a single task by premuting and create a train/valid/test split.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    full_mnist: Contains original MNIST data. Unpermuted.\\n\",\n        \"    task_id: Id of task requested.\\n\",\n        \"    construct_valid: Whether to construct a validation dataset.\\n\",\n        \"    use_data_augmentationt: Unused.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    Data re-organised with alphabet ids to distinguish between tasks.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  del use_data_augmentationt  # Unused\\n\",\n        \"  # Apply permutation for task given by `task_id`\\n\",\n        \"  permuted_inputs = full_mnist.inputs[:, full_mnist.task_metadata[0][task_id]]\\n\",\n        \"\\n\",\n        \"  num_train = 60000\\n\",\n        \"  num_test = 10000\\n\",\n        \"\\n\",\n        \"  # Choose a random permutation\\n\",\n        \"  x_test = permuted_inputs[-num_test:]\\n\",\n        \"  y_test = full_mnist.outputs[-num_test:]\\n\",\n        \"  x_train = permuted_inputs[:-num_test]\\n\",\n        \"  y_train = full_mnist.outputs[:-num_test]\\n\",\n        \"\\n\",\n        \"  # Construct an optional validation set\\n\",\n        \"  if construct_valid:\\n\",\n        \"    perm = np.random.permutation(num_train)\\n\",\n        \"\\n\",\n        \"    num_valid = 10000\\n\",\n        \"    num_train -= num_valid\\n\",\n        \"\\n\",\n        \"    x_valid = x_train[perm[:num_valid]]\\n\",\n        \"    y_valid = y_train[perm[:num_valid]]\\n\",\n        \"    x_train = x_train[perm[num_valid:]]\\n\",\n        \"    y_train = y_train[perm[num_valid:]]\\n\",\n        \"    valid_dataset = make_tf_dataset(x_valid, y_valid, num_valid)\\n\",\n        \"  else:\\n\",\n        \"    num_valid = 0\\n\",\n        \"    valid_dataset = None\\n\",\n        \"\\n\",\n        \"  train_dataset = make_tf_dataset(x_train, y_train, num_train)\\n\",\n        \"  test_dataset = make_tf_dataset(x_test, y_test, num_test)\\n\",\n        \"\\n\",\n        \"  return DatasetSplit(train_dataset, valid_dataset, test_dataset,\\n\",\n        \"                      num_train, num_valid, num_test)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"__Bhwg5qWDH4\"\n      },\n      \"source\": [\n        \"The Omiglot setup is fairly similar with the exception of the additional data augmentation (growing the size of the datset for each task 20-fold) proposed in [2]. This augmentation consists of random rotations and shifts of images which we implement below:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"KGlT7BF9XgXa\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Data augmentation functions\\n\",\n        \"\\n\",\n        \"def random_img_shift_and_rotation(\\n\",\n        \"    imgs: tf.Tensor,\\n\",\n        \"    degree_range: Sequence[float] = None,\\n\",\n        \"    shift_range: Sequence[float] = None) -\\u003e tf.Tensor:\\n\",\n        \"  \\\"\\\"\\\"Augments image tensor by random shifts and rotations.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    imgs: A tensor of shape (num_images, num_rows, num_columns, num_channels).\\n\",\n        \"    degree_range: Min./Max. degrees by which each image is rotated.\\n\",\n        \"    shift_range: Min./Max. diff (in both x/y) by which each image is shifted.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    Augmented Image(s) with the same type and shape as images.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  if degree_range is None:\\n\",\n        \"    degree_range = [-30.0, 30.0]\\n\",\n        \"\\n\",\n        \"  if shift_range is None:\\n\",\n        \"    shift_range = [-5.0, 5.0]\\n\",\n        \"\\n\",\n        \"  num_datapoints = imgs.shape[0]\\n\",\n        \"\\n\",\n        \"  # Random rotation\\n\",\n        \"  angles = np.random.uniform(\\n\",\n        \"      degree_range[0], degree_range[1], size=num_datapoints)\\n\",\n        \"  imgs = tfa.image.rotate(imgs, np.radians(angles))\\n\",\n        \"\\n\",\n        \"  # Random shift (https://stackoverflow.com/questions/42252040/how-to-translateor-shift-images-in-tensorflow/45662771)\\n\",\n        \"  diff = np.random.uniform(shift_range[0], shift_range[1],\\n\",\n        \"                           size=num_datapoints*2).reshape(num_datapoints, 2)\\n\",\n        \"  transforms = np.tile([[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]],\\n\",\n        \"                       [num_datapoints, 1]).astype(np.float32)\\n\",\n        \"  transforms[:, 2] = -diff[:, 0]\\n\",\n        \"  transforms[:, 5] = -diff[:, 1]\\n\",\n        \"\\n\",\n        \"  return tfa.image.transform(imgs, transforms)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"qQG-BsEHaowB\"\n      },\n      \"source\": [\n        \"Setting up the rest of the functions for Seq. Omniglot:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"SEh1pp6LhnBX\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Sequential Omniglot\\n\",\n        \"\\n\",\n        \"def prepare_omniglot(num_alphabets: int) -\\u003e RawData:\\n\",\n        \"  \\\"\\\"\\\"Download Omniglot data and merge original train/test sets.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    num_alphabets: How many alphabets to use. Must be \\u003c= 50.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    Data re-organised with alphabet ids to distinguish between tasks.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  # The original train/test split is designed for few-shot learning. As this\\n\",\n        \"  # split no longer applies to us, we will merge this data and perform a manual\\n\",\n        \"  # train/test split later on.\\n\",\n        \"  omniglot_train_ds = tfds.load(\\n\",\n        \"      'omniglot', batch_size=-1, split='train',\\n\",\n        \"      as_supervised=False, shuffle_files=False)\\n\",\n        \"  omniglot_test_ds = tfds.load(\\n\",\n        \"      'omniglot', batch_size=-1, split='test',\\n\",\n        \"      as_supervised=False, shuffle_files=False)\\n\",\n        \"\\n\",\n        \"  # The provided train/test split does not apply, so we'll merge and re-organise\\n\",\n        \"  all_images = concat(\\n\",\n        \"      omniglot_train_ds['image'], omniglot_test_ds['image'])\\n\",\n        \"  all_labels = concat(\\n\",\n        \"      omniglot_train_ds['alphabet_char_id'],\\n\",\n        \"      omniglot_test_ds['alphabet_char_id'])\\n\",\n        \"\\n\",\n        \"  # Allows us to distinguish between tasks (i.e. alphabets)\\n\",\n        \"  all_alphabet_ids = concat(\\n\",\n        \"      omniglot_train_ds['alphabet'],\\n\",\n        \"      omniglot_test_ds['alphabet']).numpy()\\n\",\n        \"\\n\",\n        \"  # To determine the size of a prediction vector.\\n\",\n        \"  num_chars_per_alphabet = [tf.reduce_max(select_datapoints(all_labels, np.argwhere(all_alphabet_ids == t))).numpy()\\n\",\n        \"                            for t in range(num_alphabets)]\\n\",\n        \"\\n\",\n        \"  # Discard all data not needed\\n\",\n        \"  idx = np.argwhere(all_alphabet_ids \\u003c num_alphabets).flatten()\\n\",\n        \"  all_alphabet_ids = all_alphabet_ids[idx]\\n\",\n        \"  all_images = select_datapoints(all_images, idx)\\n\",\n        \"  all_labels = select_datapoints(all_labels, idx)\\n\",\n        \"\\n\",\n        \"  return RawData(all_images, all_labels, (all_alphabet_ids, num_chars_per_alphabet))\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def load_omniglot_alphabet(\\n\",\n        \"    full_omniglot: RawData,\\n\",\n        \"    alphabet_id: int,\\n\",\n        \"    construct_valid: bool,\\n\",\n        \"    use_data_augmentationt: bool) -\\u003e DatasetSplit:\\n\",\n        \"  \\\"\\\"\\\"Extract a single alphabet, preprocess and create a train/valid/test split.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    full_omniglot: Contains Omniglot data of all alphabets.\\n\",\n        \"    alphabet_id: Id of alphabet requested. Must be \\u003c= 50.\\n\",\n        \"    construct_valid: Whether to construct a validation dataset.\\n\",\n        \"    use_data_augmentationt: Whether to augment the dataset.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    Data re-organised with alphabet ids to distinguish between tasks.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  # Selecting an alphabet\\n\",\n        \"  idx = np.argwhere(full_omniglot.task_metadata[0] == alphabet_id).flatten()\\n\",\n        \"  alphabet_images = select_datapoints(full_omniglot.inputs, idx)\\n\",\n        \"  alphabet_labels = select_datapoints(full_omniglot.outputs, idx)\\n\",\n        \"\\n\",\n        \"  # Pre-processing\\n\",\n        \"  alphabet_images = tf.image.convert_image_dtype(alphabet_images, tf.float32)\\n\",\n        \"  alphabet_images = tf.image.rgb_to_grayscale(alphabet_images)\\n\",\n        \"  # Resize and invert colour (from black on white background to white on black).\\n\",\n        \"  alphabet_images = 1.0 - tf.image.resize(alphabet_images, [28, 28])\\n\",\n        \"  alphabet_images = tf.cast(alphabet_images, tf.float64)\\n\",\n        \"\\n\",\n        \"  num_datapoints = alphabet_labels.shape[0]\\n\",\n        \"\\n\",\n        \"  # Let's shuffle the datapoints randomnly.\\n\",\n        \"  perm = np.random.permutation(num_datapoints)\\n\",\n        \"  alphabet_images = select_datapoints(alphabet_images, perm)\\n\",\n        \"  alphabet_labels = select_datapoints(alphabet_labels, perm)\\n\",\n        \"\\n\",\n        \"  # Number of datapoints in alphabet\\n\",\n        \"  num_datapoints = alphabet_images.shape[0]\\n\",\n        \"  num_test = int(np.ceil(0.2 * num_datapoints))\\n\",\n        \"\\n\",\n        \"  # Choose a test set (20% of all data).\\n\",\n        \"  x_test = alphabet_images[:num_test]\\n\",\n        \"  y_test = alphabet_labels[:num_test]\\n\",\n        \"\\n\",\n        \"  # Construct an optional validation set (20% of all data).\\n\",\n        \"  if construct_valid:\\n\",\n        \"    num_valid = num_test\\n\",\n        \"\\n\",\n        \"    x_valid = alphabet_images[num_test:num_test+num_valid]\\n\",\n        \"    y_valid = alphabet_labels[num_test:num_test+num_valid]\\n\",\n        \"    valid_dataset = make_tf_dataset(x_valid, y_valid, num_valid)\\n\",\n        \"  else:\\n\",\n        \"    num_valid = 0\\n\",\n        \"    valid_dataset = None\\n\",\n        \"\\n\",\n        \"  # Use the remaining data for the training set.\\n\",\n        \"  num_train = num_datapoints - num_valid - num_test\\n\",\n        \"  x_train = alphabet_images[-num_train:]\\n\",\n        \"  y_train = alphabet_labels[-num_train:]\\n\",\n        \"\\n\",\n        \"  # Dataset Augmentation proposed in [2].\\n\",\n        \"  if use_data_augmentationt:\\n\",\n        \"    num_train *= 20\\n\",\n        \"    x_train = tf.concat([x_train] + [random_img_shift_and_rotation(x_train)\\n\",\n        \"                                     for _ in range(19)], axis=0)\\n\",\n        \"    y_train = tf.tile(y_train, [20])\\n\",\n        \"\\n\",\n        \"  train_dataset = make_tf_dataset(x_train, y_train, num_train)\\n\",\n        \"  test_dataset = make_tf_dataset(x_test, y_test, num_test)\\n\",\n        \"\\n\",\n        \"  return DatasetSplit(train_dataset, valid_dataset, test_dataset,\\n\",\n        \"                      num_train, num_valid, num_test)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ViGySN-Yq5Td\"\n      },\n      \"source\": [\n        \"# Implementing FRCL\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"lp-jvHiTElFs\"\n      },\n      \"source\": [\n        \"There are two key architectural components: \\n\",\n        \"- (i) A neural network defining the feature mapping $\\\\phi(x)$.\\n\",\n        \"- (ii) A Sparse Variational Gaussian Process operating on the feature mapping. \\n\",\n        \"\\n\",\n        \"We will use standard networks for (i) and focus our attention primarily on the implementation of (ii). The code below uses Sonnet to build Neural Network Architectures and GPFlow to implement sparse GPs:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"J9e-hWJ_r5IH\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Import Sonnet \\u0026 GPFlow\\n\",\n        \"\\n\",\n        \"import gpflow\\n\",\n        \"import sonnet as snt\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"I-OFqE1gbxws\"\n      },\n      \"source\": [\n        \"For Permuted MNIST, we use a standard Sonnet Multi-Layer Perceptron (MLP) which we augment by concatenating a bias term for the GP:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"03HfC6x0SaIO\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Define an MLP Network to provide the feature mapping for MNIST\\n\",\n        \"\\n\",\n        \"class MLPNetworkWithBias(snt.nets.MLP):\\n\",\n        \"  \\\"\\\"\\\"Fully connected MLP base network using Sonnet.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __call__(self, inputs: tf.Tensor, *args, **kwargs) -\\u003e tf.Tensor:\\n\",\n        \"    \\\"\\\"\\\"Applies MLP to `inputs` and adds a column of ones to the feature matrix.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      inputs: A Tensor of shape `[batch_size, num_input_dimensions]`.\\n\",\n        \"      *args: Arguments to snt.nets.MLP. See Sonnet documentation.\\n\",\n        \"      **kwargs: Named arguments to snt.nets.MLP. See Sonnet documentation.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      outputs: Model output and bias term of shape `[batch_size, output_size+1]`.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    outputs = super(MLPNetworkWithBias, self).__call__(inputs, *args, **kwargs)\\n\",\n        \"\\n\",\n        \"    # Add a column of ones to the feature vector to account for the bias\\n\",\n        \"    outputs = tf.concat(\\n\",\n        \"        [outputs, tf.ones((outputs.shape[0], 1), dtype=outputs.dtype)], axis=1)\\n\",\n        \"\\n\",\n        \"    return outputs\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"h5j5lOSib7cE\"\n      },\n      \"source\": [\n        \"For Sequential Omniglot, we use a good old-fashioned ConvNet with MaxPooling which we define below:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"9_QDJa5kj5_o\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Define a Conv. Network to provide the feature mapping for Omniglot\\n\",\n        \"\\n\",\n        \"class ConvNetworkWithBias(snt.Module):\\n\",\n        \"  \\\"\\\"\\\"Builds a module out of a sequence of callables.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               output_sizes: Sequence[int],\\n\",\n        \"               data_format: Text = 'NHWC',\\n\",\n        \"               conv_padding: Text = 'SAME',\\n\",\n        \"               conv_kernel_shape: Sequence[int] = None,\\n\",\n        \"               conv_kernel_stride: Sequence[int] = None,\\n\",\n        \"               maxpool_padding: Text = 'VALID',\\n\",\n        \"               maxpool_kernel_shape: Sequence[int] = None,\\n\",\n        \"               maxpool_kernel_stride: Sequence[int] = None,\\n\",\n        \"               name: Optional[Text] = None):\\n\",\n        \"    \\\"\\\"\\\"Constructor for ConvNetworkWithBias.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      output_sizes: Defines the number of output channels for each ConvLayer.\\n\",\n        \"      data_format: Specifies semantics for each input batch dimension.\\n\",\n        \"      conv_padding: Either `SAME` or `VALID`.\\n\",\n        \"      conv_kernel_shape: Size of the convolutional kernel.\\n\",\n        \"      conv_kernel_stride: Convolution stride.\\n\",\n        \"      maxpool_padding: Either `SAME` or `VALID`.\\n\",\n        \"      maxpool_kernel_shape: Size of the maxpool kernel.\\n\",\n        \"      maxpool_kernel_stride: MaxPool stride.\\n\",\n        \"      name: Optional model name.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(ConvNetworkWithBias, self).__init__(name=name)\\n\",\n        \"\\n\",\n        \"    if conv_kernel_shape is None:\\n\",\n        \"      conv_kernel_shape = [3, 3]\\n\",\n        \"    if conv_kernel_stride is None:\\n\",\n        \"      conv_kernel_stride = [1, 1]\\n\",\n        \"    if maxpool_padding is None:\\n\",\n        \"      maxpool_padding = 'VALID'\\n\",\n        \"    if maxpool_kernel_shape is None:\\n\",\n        \"      maxpool_kernel_shape = [1, 2, 2, 1]\\n\",\n        \"    if maxpool_kernel_stride is None:\\n\",\n        \"      maxpool_kernel_stride = [1, 2, 2, 1]\\n\",\n        \"\\n\",\n        \"    self._output_sizes = output_sizes\\n\",\n        \"    self._num_layers = len(self._output_sizes)\\n\",\n        \"    self._conv_kernel_shapes = [conv_kernel_shape] * self._num_layers\\n\",\n        \"    self._conv_strides = [conv_kernel_stride] * self._num_layers\\n\",\n        \"    self._maxpool_kernel_shapes = [maxpool_kernel_shape] * self._num_layers\\n\",\n        \"    self._maxpool_kernel_strides = [maxpool_kernel_stride] * self._num_layers\\n\",\n        \"\\n\",\n        \"    # Instantiate modules\\n\",\n        \"    self._conv_modules = list(\\n\",\n        \"        snt.Conv2D(  # pylint: disable=g-complex-comprehension\\n\",\n        \"            output_channels=self._output_sizes[i],\\n\",\n        \"            kernel_shape=self._conv_kernel_shapes[i],\\n\",\n        \"            stride=self._conv_strides[i],\\n\",\n        \"            padding=conv_padding,\\n\",\n        \"            data_format=data_format,\\n\",\n        \"            name='conv_2d_{}'.format(i))\\n\",\n        \"        for i in range(self._num_layers))\\n\",\n        \"    \\n\",\n        \"    self._maxpool_modules = list(\\n\",\n        \"        lambda x: tf.nn.max_pool(x, \\n\",\n        \"                                 ksize=self._maxpool_kernel_shapes[i],\\n\",\n        \"                                 strides=self._maxpool_kernel_strides[i],\\n\",\n        \"                                 padding=maxpool_padding,\\n\",\n        \"                                 data_format=data_format,\\n\",\n        \"                                 name='maxpool_2d_{}'.format(i)) \\n\",\n        \"        for i in range(self._num_layers))\\n\",\n        \"    self._flatten = snt.Flatten(name='Flatten')\\n\",\n        \"\\n\",\n        \"  def __call__(self, inputs: tf.Tensor) -\\u003e tf.Tensor:\\n\",\n        \"    \\\"\\\"\\\"Applies ConvNet to `inputs` and adds a column of ones to the feature matrix.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      inputs: A Tensor of shape `[batch_size, height, width, num_channels]`.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      outputs: Model output and bias term `[batch_size, output_size+1]`.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"    # Ensure correct data type\\n\",\n        \"    original_dtype = inputs.dtype\\n\",\n        \"    outputs = tf.cast(inputs, tf.float32)\\n\",\n        \"\\n\",\n        \"    for conv_layer, maxpool_layer in zip(\\n\",\n        \"        self._conv_modules, self._maxpool_modules):\\n\",\n        \"      outputs = conv_layer(outputs)\\n\",\n        \"      outputs = maxpool_layer(outputs)\\n\",\n        \"      outputs = tf.nn.relu(outputs)\\n\",\n        \"\\n\",\n        \"    outputs = self._flatten(outputs)\\n\",\n        \"    # Add a column of ones to the feature vector to account for the bias\\n\",\n        \"    outputs = tf.concat(\\n\",\n        \"        [outputs, tf.ones((outputs.shape[0], 1), dtype=outputs.dtype)], axis=1)\\n\",\n        \"\\n\",\n        \"    return tf.cast(outputs, original_dtype)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"h5UQZKq-HGV2\"\n      },\n      \"source\": [\n        \"Let's turn our attention to (ii) Implementing the GP to work on the feature embedding. This is the heart of FRCL:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"wYuUL3P-3el8\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Implementing FRCL\\n\",\n        \"\\n\",\n        \"class BaseInducingApproximation(object):\\n\",\n        \"  \\\"\\\"\\\"Holds the parameters of a posterior approximation.\\\"\\\"\\\"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               q_z: tf.Tensor,\\n\",\n        \"               q_mean: tf.Variable,\\n\",\n        \"               q_sqrt: tf.Variable,\\n\",\n        \"               q_z_init: tf.Tensor):\\n\",\n        \"    \\\"\\\"\\\"Constructor for BaseInducingApproximation.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      q_z: Inducing points. A Tensor of shape `[num_inducing_points, num_input_features]`.\\n\",\n        \"      q_mean: Mean of the variational distribution of shape `[num_inducing_points, num_classes]`.\\n\",\n        \"      q_sqrt: Cholesky (sqrt) matrices of the variational distribution `[]`.\\n\",\n        \"      q_z_init: Initial inducing points. A Tensor of shape `[num_inducing_points, num_input_features]`.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    self.q_z = q_z\\n\",\n        \"    self.q_mean = q_mean\\n\",\n        \"    self.q_sqrt = q_sqrt\\n\",\n        \"    self.q_z_init = q_z_init\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class InducingApproximation(BaseInducingApproximation):\\n\",\n        \"  \\\"\\\"\\\"Creates a variational approximation in function/GP space.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               num_inducing_points: int,\\n\",\n        \"               num_classes: int,\\n\",\n        \"               inducing_init_value: tf.Tensor):\\n\",\n        \"    \\\"\\\"\\\"Constructor for InducingApproximation.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      num_inducing_points: Number of inducing points to use.\\n\",\n        \"      num_classes: Number of classes in classification problem.\\n\",\n        \"      inducing_init_value: Initial value. A Tensor of shape `[num_inducing_points, num_input_features]`.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    q_mean = tf.Variable(np.zeros(\\n\",\n        \"        (num_inducing_points, num_classes)).astype(np.float64))\\n\",\n        \"    q_sqrt = tf.Variable(np.array(\\n\",\n        \"        [np.eye(num_inducing_points).astype(np.float64)\\n\",\n        \"         for _ in range(num_classes)]).T)\\n\",\n        \"\\n\",\n        \"    q_z = tf.constant(inducing_init_value)\\n\",\n        \"    q_z_init = tf.constant(inducing_init_value)\\n\",\n        \"    super(InducingApproximation, self).__init__(q_z, q_mean, q_sqrt, q_z_init)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class WeightSpaceApproximation(object):\\n\",\n        \"  \\\"\\\"\\\"Creates a variational approximation in weight space.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               num_features: int,\\n\",\n        \"               num_classes: int,\\n\",\n        \"               rng: np.random.RandomState):\\n\",\n        \"    \\\"\\\"\\\"Constructor for WeightSpaceApproximation.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      num_features: Number of inducing points to use.\\n\",\n        \"      num_classes: Number of classes in classification problem.\\n\",\n        \"      rng: Random number generator.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    scalar = 1.0/np.sqrt(num_features)\\n\",\n        \"    self.q_w_mean = tf.Variable(scalar*rng.randn(\\n\",\n        \"        num_features, num_classes).astype(np.float64))\\n\",\n        \"    self.q_w_sqrt = tf.Variable(np.array(\\n\",\n        \"        [np.eye(num_features).astype(np.float64)\\n\",\n        \"         for _ in range(num_classes)]).T)\\n\",\n        \"\\n\",\n        \"class ContinualGPmodel(object):\\n\",\n        \"  \\\"\\\"\\\"Continual learning GP-based model tha uses variational inducing points.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               num_input_dimensions: int,\\n\",\n        \"               num_features: int,\\n\",\n        \"               num_classes: int,\\n\",\n        \"               base_network: snt.Module,\\n\",\n        \"               likelihood: gpflow.likelihoods,\\n\",\n        \"               noise_variance: float = 1e-3):\\n\",\n        \"    \\\"\\\"\\\"Constructor for continual GP model.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      num_input_dimensions: Dimensionality of the input space.\\n\",\n        \"      num_features: Size of the feature including the bias term.\\n\",\n        \"      num_classes: Number of classes in classification problem.\\n\",\n        \"      base_network: Provides the feature mappping.\\n\",\n        \"      likelihood: Likelihood for the datatype at hand.\\n\",\n        \"      noise_variance: Added to diagonal of covariance matrix.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"    self.num_input_dimensions = num_input_dimensions\\n\",\n        \"    self.num_features = num_features\\n\",\n        \"    self.num_classes = num_classes\\n\",\n        \"    self.past_inducing_approxs = []\\n\",\n        \"    self.current_inducing_approx = None\\n\",\n        \"    self.current_weight_space_approx = None\\n\",\n        \"    self.base_network = base_network\\n\",\n        \"    self.likelihood = likelihood\\n\",\n        \"    # Constant noise/jitter to be added only to the inducing point covariances\\n\",\n        \"    self.noise_variance = tf.constant(noise_variance, dtype=tf.float64)\\n\",\n        \"\\n\",\n        \"  def get_weight_space_approx(self, rng):\\n\",\n        \"    \\\"\\\"\\\"Initialise a new weight space approximation.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      rng: Random number generator.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    self.current_weight_space_approx = WeightSpaceApproximation(\\n\",\n        \"        self.num_features, self.num_classes, rng)\\n\",\n        \"\\n\",\n        \"  def covariance_self(self, matrix_a: tf.Tensor) -\\u003e tf.Tensor:\\n\",\n        \"    \\\"\\\"\\\"Compute linear kernel plus noise for features with themself.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      matrix_a: Matrix of shape `[batch, num_features]`.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      Covariance matrix of shape `[batch, batch]`.\\n\",\n        \"\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    return tf.matmul(\\n\",\n        \"        matrix_a, matrix_a, transpose_b=True) + self.noise_variance * tf.eye(\\n\",\n        \"            tf.cast(matrix_a.shape[0], tf.int32), dtype=tf.float64)\\n\",\n        \"\\n\",\n        \"  def covariance_cross(self,\\n\",\n        \"                       matrix_a: tf.Tensor,\\n\",\n        \"                       matrix_b: tf.Tensor) -\\u003e tf.Tensor:\\n\",\n        \"    \\\"\\\"\\\"Compute linear kernel for features with other features.\\n\",\n        \"\\n\",\n        \"    No noise in these case because features are assumed distinct.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      matrix_a: Tensor of shape `[batch_a, num_features]`.\\n\",\n        \"      matrix_b: Tensor of shape  `[batch_b, num_features]`.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      Covariance matrix of shape `[batch_a, batch_b]`.\\n\",\n        \"\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    return tf.matmul(matrix_a, matrix_b, transpose_b=True)\\n\",\n        \"\\n\",\n        \"  def covariance_diag(self, matrix: tf.Tensor) -\\u003e tf.Tensor:\\n\",\n        \"    \\\"\\\"\\\"Compute diagonal of linear kernel matrix for features with themself.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      matrix: Tensor of shape `[batch, num_features]`.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      Diagonal covariance vector of shape `[batch]`.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"    # We do not add noise_variance/jitter to this diagonal, but only to the\\n\",\n        \"    # inducing matrix, so inducing variables are noisy function values and\\n\",\n        \"    # through them we approximate the exact noise-free GP model.\\n\",\n        \"    return tf.reduce_sum(matrix * matrix, axis=1)\\n\",\n        \"\\n\",\n        \"  def objective_weight_space(self,\\n\",\n        \"                             inputs: tf.Tensor,\\n\",\n        \"                             outputs: tf.Tensor,\\n\",\n        \"                             num_task_points: int):\\n\",\n        \"    \\\"\\\"\\\"Compute the variational objective for the model.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      inputs: A Tensor of shape `[batch_size, num_input_dimensions]`.\\n\",\n        \"      outputs: Class labels. Shape (batch, num_classes).\\n\",\n        \"      num_task_points: Total number of data points in task.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      variational objective for the bound.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    batch_size = tf.cast(inputs.shape[0], tf.int32)\\n\",\n        \"\\n\",\n        \"    # Add KL divergences for the all previous tasks.\\n\",\n        \"    # Rightmost term of Eq. (4) in the paper.\\n\",\n        \"    kl_historical = 0\\n\",\n        \"    for inducing_approx in self.past_inducing_approxs:\\n\",\n        \"      # z_features shape (num_inducing_points, num_features)\\n\",\n        \"      z_features = self.base_network(inducing_approx.q_z)\\n\",\n        \"      # p_cov shape (num_inducing_points, num_inducing_points)\\n\",\n        \"      p_cov = self.covariance_self(z_features)\\n\",\n        \"      kl_historical += gpflow.kullback_leiblers.gauss_kl(\\n\",\n        \"          inducing_approx.q_mean,\\n\",\n        \"          tf.transpose(inducing_approx.q_sqrt, (2, 0, 1)),\\n\",\n        \"          K=p_cov)\\n\",\n        \"\\n\",\n        \"    # For the current task we do inference in the weight space\\n\",\n        \"    data_features = self.base_network(inputs)\\n\",\n        \"    data_mean = tf.matmul(data_features,\\n\",\n        \"                          self.current_weight_space_approx.q_w_mean)\\n\",\n        \"\\n\",\n        \"    tr_q_w_sqrt = tf.compat.v1.matrix_band_part(tf.transpose(\\n\",\n        \"        self.current_weight_space_approx.q_w_sqrt, (2, 0, 1)), -1, 0)\\n\",\n        \"    expand_data_features = tf.tile(\\n\",\n        \"        tf.expand_dims(data_features, 0), [self.num_classes, 1, 1])\\n\",\n        \"    feat_w_sqrt = tf.matmul(expand_data_features, tr_q_w_sqrt)\\n\",\n        \"    data_var = tf.transpose(tf.reduce_sum(tf.square(feat_w_sqrt), axis=2))\\n\",\n        \"\\n\",\n        \"    # Middle term of Eq. (4) in the paper.\\n\",\n        \"    kl_current = gpflow.kullback_leiblers.gauss_kl(\\n\",\n        \"        self.current_weight_space_approx.q_w_mean,\\n\",\n        \"        tf.transpose(self.current_weight_space_approx.q_w_sqrt, (2, 0, 1)),\\n\",\n        \"        K=None)\\n\",\n        \"\\n\",\n        \"    # Left term of Eq. (4) in the paper.\\n\",\n        \"    exp_likes = self.likelihood.variational_expectations(\\n\",\n        \"        data_mean, data_var, outputs)\\n\",\n        \"    # Scale this correclty by the total number of datapoints in the task.\\n\",\n        \"    ratio = tf.cast(\\n\",\n        \"        num_task_points, tf.float64) / tf.cast(batch_size, tf.float64)\\n\",\n        \"    reconstruction_cost = tf.reduce_sum(exp_likes) * ratio\\n\",\n        \"\\n\",\n        \"    # Full objective. Eq. (4) in the paper.\\n\",\n        \"    objective = kl_historical + kl_current - reconstruction_cost\\n\",\n        \"    return objective, reconstruction_cost, kl_current\\n\",\n        \"\\n\",\n        \"  def trace_term(self,\\n\",\n        \"                 inputs: tf.Tensor,\\n\",\n        \"                 q_z: tf.Tensor) -\\u003e tf.Tensor:\\n\",\n        \"    \\\"\\\"\\\"Compute the trace term. Useful for search over inducing points.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      inputs: A Tensor of shape `[batch_size, num_input_dimensions]`.\\n\",\n        \"      q_z: Inducing points of shape `[num_inducing_points, num_input_dimensions]`.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      variational objective for the bound.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"    # Shape [num_inducing_points, num_features]\\n\",\n        \"    inducing_features = self.base_network(q_z)\\n\",\n        \"    # Shape [batch_size, num_features]\\n\",\n        \"    data_features = self.base_network(inputs)\\n\",\n        \"\\n\",\n        \"    # Compute covariance\\n\",\n        \"    kmn = self.covariance_cross(inducing_features, data_features)\\n\",\n        \"    kmm = self.covariance_self(inducing_features)\\n\",\n        \"    knn = self.covariance_diag(data_features)\\n\",\n        \"\\n\",\n        \"    # Implements Equation (6) in the paper and speeds up computations by\\n\",\n        \"    # applying the matrix inversion formula if needed.\\n\",\n        \"    if q_z.shape[0] \\u003c= self.num_features:\\n\",\n        \"      lm = tf.compat.v1.cholesky(kmm)\\n\",\n        \"      v = tf.compat.v1.matrix_triangular_solve(lm, kmn, lower=True)\\n\",\n        \"      fvar = knn - tf.reduce_sum(tf.square(v), 0)\\n\",\n        \"    else:\\n\",\n        \"      phimphim = tf.matmul(inducing_features, inducing_features,\\n\",\n        \"                           transpose_a=True)\\n\",\n        \"      phimphim_noise = phimphim + self.noise_variance * tf.eye(\\n\",\n        \"          tf.cast(self.num_features, tf.int32), dtype=tf.float64)\\n\",\n        \"\\n\",\n        \"      sqrt_phimphin_noise = tf.compat.v1.cholesky(phimphim_noise)\\n\",\n        \"\\n\",\n        \"      inv_sqrt_phimphin_noise_phim = tf.compat.v1.matrix_triangular_solve(\\n\",\n        \"          sqrt_phimphin_noise, tf.transpose(inducing_features),\\n\",\n        \"          lower=True)\\n\",\n        \"      v = tf.matmul(inv_sqrt_phimphin_noise_phim, kmn)\\n\",\n        \"\\n\",\n        \"      fvar = knn - (1.0/self.noise_variance)*(\\n\",\n        \"          tf.reduce_sum(tf.square(kmn), 0) - tf.reduce_sum(tf.square(v), 0))\\n\",\n        \"\\n\",\n        \"    return tf.reduce_sum(fvar)\\n\",\n        \"\\n\",\n        \"  def function_space_prediction(self,\\n\",\n        \"                                inputs: tf.Tensor,\\n\",\n        \"                                q_z: tf.Tensor,\\n\",\n        \"                                q_mean: tf.Variable,\\n\",\n        \"                                q_sqrt: tf.Variable,\\n\",\n        \"                                outputs: tf.Tensor = None):\\n\",\n        \"    \\\"\\\"\\\"Compute predictions from the model in function/GP space.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      inputs: Tensor of shape `[batch, num_input_dimensions]`.\\n\",\n        \"      q_z: Inducing points of shape `[num_inducing_points, input_dimensions]`.\\n\",\n        \"      q_mean: Mean of the variational distribution of shape `[num_inducing_points, num_classes]`.\\n\",\n        \"      q_sqrt: Cholesky (sqrt) matrices of the variational distribution `[]`.\\n\",\n        \"      outputs: Class labels. Optional tensor of Shape `[batch, num_clsses]`.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      When outputs=None, it returns predictive mean and variance from model\\n\",\n        \"      otherwise it returns the log predictive density for the outputs.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"    inducing_features = self.base_network(q_z)\\n\",\n        \"    data_features = self.base_network(inputs)\\n\",\n        \"\\n\",\n        \"    # Compute covariance\\n\",\n        \"    kmn = self.covariance_cross(inducing_features, data_features)\\n\",\n        \"    kmm = self.covariance_self(inducing_features)\\n\",\n        \"    knn = self.covariance_diag(data_features)\\n\",\n        \"\\n\",\n        \"    func_mean, func_var = gpflow.conditionals.base_conditional(\\n\",\n        \"        kmn, kmm, knn, f=q_mean, q_sqrt=tf.transpose(q_sqrt, (2, 0, 1)),\\n\",\n        \"        full_cov=False, white=False)\\n\",\n        \"\\n\",\n        \"    if outputs is None:\\n\",\n        \"      return self.likelihood.predict_mean_and_var(func_mean, func_var)\\n\",\n        \"    else:\\n\",\n        \"      return self.likelihood.predict_density(func_mean, func_var, outputs)\\n\",\n        \"\\n\",\n        \"  def complete_task_weight_space(self,\\n\",\n        \"                                 z: tf.Tensor,\\n\",\n        \"                                 z_init: tf.Tensor):\\n\",\n        \"    \\\"\\\"\\\"Completes training of current task in weight space.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      z: Final inducing points for current task of shape `[num_inducing_points, num_features]`.\\n\",\n        \"      z_init: Initial inducing points for current task of shape  `[num_inducing_points, num_features]`.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"    current_inducing_features = self.base_network(z)\\n\",\n        \"    current_q_mean = tf.matmul(\\n\",\n        \"        current_inducing_features, self.current_weight_space_approx.q_w_mean)\\n\",\n        \"    noise_matrix = self.noise_variance * tf.eye(\\n\",\n        \"        tf.cast(tf.shape(z)[0], tf.int32), dtype=tf.float64)\\n\",\n        \"    noise_matrix = tf.tile(\\n\",\n        \"        tf.expand_dims(noise_matrix, 0), [self.num_classes, 1, 1])\\n\",\n        \"    tr_q_w_sqrt = tf.linalg.band_part(tf.transpose(\\n\",\n        \"        self.current_weight_space_approx.q_w_sqrt, (2, 0, 1)), -1, 0)\\n\",\n        \"    expand_current_inducing_features = tf.tile(\\n\",\n        \"        tf.expand_dims(current_inducing_features, 0), [self.num_classes, 1, 1])\\n\",\n        \"    feat_w_sqrt = tf.matmul(expand_current_inducing_features, tr_q_w_sqrt)\\n\",\n        \"    q_cov = tf.matmul(feat_w_sqrt, feat_w_sqrt, transpose_b=True)\\n\",\n        \"    q_cov = q_cov + noise_matrix\\n\",\n        \"    current_q_sqrt = tf.transpose(tf.compat.v1.cholesky(q_cov), (1, 2, 0))\\n\",\n        \"\\n\",\n        \"    self.past_inducing_approxs.append(\\n\",\n        \"        BaseInducingApproximation(z, tf.identity(current_q_mean),\\n\",\n        \"                                  tf.identity(current_q_sqrt), z_init))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"QGRQ3-vmpVOu\"\n      },\n      \"source\": [\n        \"The only remaning bit is to define the evaluation functions that allow us to measure model performance:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"iDfyq2E8pUha\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Evaluation utility functions\\n\",\n        \"\\n\",\n        \"def get_accuracy_rate(\\n\",\n        \"    predictions: np.array,\\n\",\n        \"    labels: np.array) -\\u003e float:\\n\",\n        \"  \\\"\\\"\\\"Compute mean classification accuracy.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    predictions: A numpy array of shape `[batch_size, input_size]`.\\n\",\n        \"    labels: Ground truth labels of shape `[batch_size, input_size]`.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    outputs: Model output and bias term `[batch_size, output_size+1]`.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  return np.mean(np.equal(np.argmax(predictions, axis=1), labels))\\n\",\n        \"\\n\",\n        \"def evaluate_on_all_tasks(\\n\",\n        \"    eval_iterators: Sequence[Iterators],\\n\",\n        \"    model: ContinualGPmodel) -\\u003e Sequence[float]:\\n\",\n        \"  \\\"\\\"\\\"Evaluates models on all tasks. Assumes iterators provide entire dataset.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    eval_iterators: Provides entire data to evaluate model on. One per task.\\n\",\n        \"    model: A ContinualGPmodel to be evaluated.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    List of accuracies achieved on each task.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  # Evaluate test accuracies for all tasks\\n\",\n        \"  eval_accuracies = []\\n\",\n        \"  for task, eval_iterator in enumerate(eval_iterators):\\n\",\n        \"    # Fetch the whole eval dataset\\n\",\n        \"    eval_input, eval_output = next(eval_iterator)\\n\",\n        \"\\n\",\n        \"    # Model prediction\\n\",\n        \"    pred_prob = model.function_space_prediction(\\n\",\n        \"        eval_input,\\n\",\n        \"        model.past_inducing_approxs[task].q_z,\\n\",\n        \"        model.past_inducing_approxs[task].q_mean,\\n\",\n        \"        model.past_inducing_approxs[task].q_sqrt)[0]\\n\",\n        \"\\n\",\n        \"    test_accuracy_rate = get_accuracy_rate(pred_prob, eval_output)\\n\",\n        \"    eval_accuracies.append(test_accuracy_rate)\\n\",\n        \"\\n\",\n        \"  return eval_accuracies\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"Nnl_sw4cqrfN\"\n      },\n      \"source\": [\n        \"# Training\\n\",\n        \"\\n\",\n        \"Now that we've set up the model, let's define a basic Continual Learning Setup. The next code block allows you to choose between the two data sources and vary some of the fundamental CL experimental parameters. The values suggested below are those used in the paper to report result.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"DfBnBfSYDhqK\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Defining the training protocol\\n\",\n        \"\\n\",\n        \"exp_name = 'Permuted MNIST'  #@param [\\\"Permuted MNIST\\\", \\\"Sequential Omniglot\\\"] {allow-input: false}\\n\",\n        \"\\n\",\n        \"# Random number generator\\n\",\n        \"rng_seed = 42  #@param\\n\",\n        \"rng_state = np.random.RandomState(rng_seed)\\n\",\n        \"\\n\",\n        \"#@markdown P-MNIST: 10 Omniglot: 50\\n\",\n        \"num_tasks = 11  #@param {type:\\\"slider\\\", min:1, max:1000, step:1}\\n\",\n        \"\\n\",\n        \"# General training settings (Default: Permuted MNIST)\\n\",\n        \"learning_rate = 1e-3  #@param\\n\",\n        \"#@markdown P-MNIST: 128 Omniglot: 32\\n\",\n        \"train_batch_size = 128  #@param {type:\\\"slider\\\", min:1, max:1000, step:1}\\n\",\n        \"#@markdown P-MNIST: 2000 Omniglot: 2500\\n\",\n        \"num_train_iters = 2000  #@param {type:\\\"slider\\\", min:1, max:5000, step:1}\\n\",\n        \"use_validation_dataset = False  #@param {type:\\\"boolean\\\"}\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# FRCL settings\\n\",\n        \"which_discrete_loss = 'trace_term'  #@param [\\\"trace_term\\\", \\\"random\\\"] {allow-input: false}\\n\",\n        \"num_optim_steps_discrete_search = 1000  #@param {type:\\\"slider\\\", min:1, max:5000, step:1}\\n\",\n        \"\\n\",\n        \"#@markdown Only used for Omniglot\\n\",\n        \"use_data_augmentation = False  #@param {type:\\\"boolean\\\"}\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"if exp_name == 'Permuted MNIST':\\n\",\n        \"  tasks = list(range(num_tasks))\\n\",\n        \"  download_data = prepare_mnist\\n\",\n        \"  load_task_data = load_mnist_permutation\\n\",\n        \"\\n\",\n        \"  # MLP Size. Based on the experimental protocol in [1].\\n\",\n        \"  hidden_units = [100, 100]\\n\",\n        \"\\n\",\n        \"  num_output_dim = 10\\n\",\n        \"\\n\",\n        \"  # Instantiate network that defines the feature mapping\\n\",\n        \"  BaseNetwork = MLPNetworkWithBias\\n\",\n        \"\\n\",\n        \"  if use_data_augmentation:\\n\",\n        \"    print('Data augmentation is non-standard with Permuted MNIST. Ignoring option.')\\n\",\n        \"    use_data_augmentation = False\\n\",\n        \"elif exp_name == 'Sequential Omniglot':\\n\",\n        \"  tasks = list(range(num_tasks))\\n\",\n        \"  assert num_tasks \\u003c= 50, 'Only 50 tasks are available'\\n\",\n        \"\\n\",\n        \"  download_data = prepare_omniglot\\n\",\n        \"  load_task_data = load_omniglot_alphabet\\n\",\n        \"\\n\",\n        \"  # ConvNet output channels. Based on the experimental protocol in [2].\\n\",\n        \"  hidden_units = [64, 64, 64, 64]\\n\",\n        \"\\n\",\n        \"  # This is the maximum number of characters in any Omniglot alphabet\\n\",\n        \"  num_output_dim = 54\\n\",\n        \"\\n\",\n        \"  # Instantiate network that defines the feature mapping\\n\",\n        \"  BaseNetwork = ConvNetworkWithBias\\n\",\n        \"else:\\n\",\n        \"  print('unknown dataset')\\n\",\n        \"\\n\",\n        \"print('\\\\nDownloading dataset...')\\n\",\n        \"with IPython.utils.io.capture_output() as captured:\\n\",\n        \"  raw_data = download_data(num_tasks)\\n\",\n        \"\\n\",\n        \"#@markdown P-MNIST: 200 Omniglot: 2 (to be multiplied by the #characters/alphabet)\\n\",\n        \"num_inducing_points_per_task = 200  #@param {type:\\\"slider\\\", min:1, max:1000, step:1}\\n\",\n        \"\\n\",\n        \"# The specification of inducing points is absolute for P-MNIST and relative to the number of characters/alphabet for Omniglot\\n\",\n        \"if exp_name == 'Permuted MNIST':\\n\",\n        \"  num_inducing_points_per_task = [num_inducing_points_per_task] * num_tasks\\n\",\n        \"else:\\n\",\n        \"  num_inducing_points_per_task = [num_inducing_points_per_task * t for t in\\n\",\n        \"                                  raw_data.task_metadata[1]]\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"7Sz-EzPNDxum\"\n      },\n      \"source\": [\n        \"Let's setup data iterators and instatiate an FRCL model:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"V-6cBCCfDu8u\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Instantiate model\\n\",\n        \"\\n\",\n        \"num_pixels = 784\\n\",\n        \"num_gp_features = hidden_units[-1] + 1  # Add one to account for the bias\\n\",\n        \"\\n\",\n        \"# Instantiate Continal Learning Gaussian Process Model\\n\",\n        \"model_likelihood = gpflow.likelihoods.MultiClass(num_output_dim)\\n\",\n        \"network = BaseNetwork(output_sizes=hidden_units)\\n\",\n        \"FRCL = ContinualGPmodel(num_pixels, num_gp_features,\\n\",\n        \"                        num_output_dim, network, model_likelihood)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"GOIN529ADhLP\"\n      },\n      \"source\": [\n        \"Let's start training. The code below runs the main training loop:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"eQiqr9a10skX\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Main training loop\\n\",\n        \"\\n\",\n        \"discr_search_losses = []\\n\",\n        \"test_accuracies = []\\n\",\n        \"test_iterators = []\\n\",\n        \"\\n\",\n        \"for t in range(num_tasks):\\n\",\n        \"  print('Learning task {}'.format(t+1))\\n\",\n        \"  discr_search_loss = []\\n\",\n        \"\\n\",\n        \"  task_data = load_task_data(raw_data, t,\\n\",\n        \"                             use_validation_dataset,\\n\",\n        \"                             use_data_augmentation)\\n\",\n        \"  iterators = create_iterators(task_data)\\n\",\n        \"\\n\",\n        \"  # Get a weight space approximation for the current task\\n\",\n        \"  FRCL.get_weight_space_approx(rng_state)\\n\",\n        \"  # Set up a task-specific optimiser\\n\",\n        \"  optimizer = tf.compat.v1.train.AdamOptimizer(learning_rate=learning_rate)\\n\",\n        \"\\n\",\n        \"  # --- Task Training ---\\n\",\n        \"  print('\\\\tStarting optimisation')\\n\",\n        \"  for training_index in range(num_train_iters):\\n\",\n        \"    train_inputs, train_outputs = next(iterators.train)\\n\",\n        \"\\n\",\n        \"    def loss_fn():\\n\",\n        \"      train_loss, _, _ = FRCL.objective_weight_space(\\n\",\n        \"          train_inputs, train_outputs, task_data.num_train)\\n\",\n        \"\\n\",\n        \"      return train_loss\\n\",\n        \"\\n\",\n        \"    optimizer.minimize(loss_fn)\\n\",\n        \"\\n\",\n        \"  print('\\\\tFinished training')\\n\",\n        \"\\n\",\n        \"  # --- Discrete inducing point Optimisation ---\\n\",\n        \"  num_inducing_points_for_task = num_inducing_points_per_task[t]\\n\",\n        \"\\n\",\n        \"  # Select a random set of inducing inputs from the discrete search set\\n\",\n        \"  x_discr = next(iterators.discr_search)[0]\\n\",\n        \"  perm_train = np.random.permutation(task_data.num_train)\\n\",\n        \"\\n\",\n        \"  z_idx = perm_train[-num_inducing_points_for_task:]\\n\",\n        \"  z_ = select_datapoints(x_discr, z_idx)\\n\",\n        \"\\n\",\n        \"  if 'random' == which_discrete_loss:\\n\",\n        \"    print('\\\\tUsing random inducing points')\\n\",\n        \"  elif 'trace_term' == which_discrete_loss:\\n\",\n        \"    # Indicates a candidate training point to replace the inducing point with\\n\",\n        \"    train_set_id = 0\\n\",\n        \"\\n\",\n        \"    # Data to evaluate inducing set on\\n\",\n        \"    discr_search_input, _ = next(iterators.discr_search_eval)\\n\",\n        \"    current_loss = -FRCL.trace_term(discr_search_input, z_)\\n\",\n        \"    discr_search_loss.append((0, current_loss, z_))\\n\",\n        \"\\n\",\n        \"    accepted_moves = 0\\n\",\n        \"    print('\\\\tOptimising inducing points using discrete search.')\\n\",\n        \"    for disr_search_iter in range(num_optim_steps_discrete_search):\\n\",\n        \"      inducing_set_id = disr_search_iter % num_inducing_points_for_task\\n\",\n        \"      z_idx_proposed = z_idx.copy()\\n\",\n        \"\\n\",\n        \"      # Replace inducing point and re-evaluate\\n\",\n        \"      z_idx_proposed[inducing_set_id] = perm_train[train_set_id]\\n\",\n        \"      proposed_loss = -FRCL.trace_term(\\n\",\n        \"          discr_search_input, select_datapoints(x_discr, z_idx_proposed))\\n\",\n        \"\\n\",\n        \"      if proposed_loss \\u003e current_loss:\\n\",\n        \"        z_idx = z_idx_proposed.copy()\\n\",\n        \"        current_loss = proposed_loss\\n\",\n        \"        accepted_moves += 1\\n\",\n        \"\\n\",\n        \"        discr_search_loss.append(\\n\",\n        \"            (disr_search_iter, current_loss, z_))\\n\",\n        \"\\n\",\n        \"      if train_set_id == task_data.num_train-1:\\n\",\n        \"        perm_train = np.random.permutation(task_data.num_train)\\n\",\n        \"        train_set_id = 0\\n\",\n        \"      else:\\n\",\n        \"        train_set_id += 1\\n\",\n        \"\\n\",\n        \"    print('\\\\tAccepted moves: {}'.format(accepted_moves))\\n\",\n        \"  discr_search_losses.append(discr_search_loss)\\n\",\n        \"\\n\",\n        \"  # --- Complete the task ---\\n\",\n        \"  FRCL.complete_task_weight_space(z_, discr_search_loss[0][2])\\n\",\n        \"\\n\",\n        \"  # --- Evaluation on all tasks thus far ---\\n\",\n        \"  test_iterators.append(iterators.test)\\n\",\n        \"  test_accuracies.append(\\n\",\n        \"      evaluate_on_all_tasks(test_iterators, FRCL))\\n\",\n        \"\\n\",\n        \"print('Done.')\\n\",\n        \"\\n\",\n        \"mean_test_accuracy = list(map(np.mean, test_accuracies))\\n\",\n        \"\\n\",\n        \"print('\\\\n---\\\\nFinal accuracy: {}\\\\n---'.format(mean_test_accuracy[-1]))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"1UmeQb-3bOW7\"\n      },\n      \"source\": [\n        \"Let's visualise overall (first column) along with task-specific performance that allows us to visualise forward/backward transfer:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"BmZwTixhRv67\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Visualising overall and per-task accuracies\\n\",\n        \"\\n\",\n        \"from matplotlib.ticker import MaxNLocator\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def _format_axis(axis: matplotlib.pyplot.axis,\\n\",\n        \"                 y_limit: Sequence[float],\\n\",\n        \"                 title_str: Text = None):\\n\",\n        \"  \\\"\\\"\\\"Format axis.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    axis: Axis to format.\\n\",\n        \"    y_limit: Limit to apply on the y-axis.\\n\",\n        \"    title_str: String to use for axis title.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  axis.set_xlim((0.5, num_tasks + 0.5))\\n\",\n        \"  axis.set_ylim(y_limit)\\n\",\n        \"  # Force only integer tirkcs\\n\",\n        \"  axis.xaxis.set_major_locator(MaxNLocator(integer=True))\\n\",\n        \"\\n\",\n        \"  if title_str is not None:\\n\",\n        \"    axis.set_title(title_str)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"colours = sns.color_palette()\\n\",\n        \"\\n\",\n        \"fig = plt.figure(figsize=(10, 10))\\n\",\n        \"layout = (int(np.ceil(num_tasks / 2) + 1), 2)\\n\",\n        \"ylim = (np.min([np.min(t) for t in test_accuracies]) * 0.975, 1.0)\\n\",\n        \"\\n\",\n        \"# Plot the overall mean accuracy\\n\",\n        \"ax = plt.subplot2grid(layout, (0, 0), colspan=2)\\n\",\n        \"ax.plot(range(1, num_tasks + 1), mean_test_accuracy, marker='o', c='k')\\n\",\n        \"ax.set_xlabel('Evaluated after learning task')\\n\",\n        \"ax.set_ylabel('Test accuracy (%)')\\n\",\n        \"_format_axis(\\n\",\n        \"    ax, ylim,\\n\",\n        \"    'Overall mean test accuracy: FRCL ({})'.format(which_discrete_loss))\\n\",\n        \"\\n\",\n        \"# Plot results for each task\\n\",\n        \"for t in range(num_tasks):\\n\",\n        \"  ax = plt.subplot2grid(layout, (t // 2 + 1, t % 2))\\n\",\n        \"  ax.plot(\\n\",\n        \"      range(t + 1, num_tasks + 1),\\n\",\n        \"      test_accuracies[-t - 1],\\n\",\n        \"      marker='o',\\n\",\n        \"      c=colours[t])\\n\",\n        \"\\n\",\n        \"  _format_axis(ax, ylim, 'Test accuracy for task: {}'.format(t + 1))\\n\",\n        \"\\n\",\n        \"sns.despine()\\n\",\n        \"plt.tight_layout()\\n\",\n        \"plt.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"bR0yr75Bbfgh\"\n      },\n      \"source\": [\n        \"The code below allows us to look at some of the inducing points we optimised for. Each row shows inducing points for a different task:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"61mZYuu9MTH6\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Visualising inducing points\\n\",\n        \"\\n\",\n        \"num_inducing_points_per_task_to_show = 20  #@param\\n\",\n        \"max_number_of_tasks = 5  #@param\\n\",\n        \"\\n\",\n        \"max_number_of_tasks = min(max_number_of_tasks, num_tasks)\\n\",\n        \"num_inducing_points_per_task_to_show = min(\\n\",\n        \"    num_inducing_points_per_task_to_show, max(num_inducing_points_per_task))\\n\",\n        \"\\n\",\n        \"fig, axarr = plt.subplots(\\n\",\n        \"    max_number_of_tasks,\\n\",\n        \"    num_inducing_points_per_task_to_show,\\n\",\n        \"    figsize=(10, 10))\\n\",\n        \"\\n\",\n        \"for i in range(max_number_of_tasks):\\n\",\n        \"  task_inducing_points = FRCL.past_inducing_approxs[i].q_z.numpy()\\n\",\n        \"\\n\",\n        \"  if 'Permuted MNIST' == exp_name:\\n\",\n        \"    task_inv_perm = raw_data.task_metadata[1][i]\\n\",\n        \"    # Apply inverse permutation to allow visualisation\\n\",\n        \"    task_inducing_points = task_inducing_points[:, task_inv_perm]\\n\",\n        \"  task_inducing_points = task_inducing_points.reshape([-1, 28, 28])\\n\",\n        \"  for j in range(num_inducing_points_per_task_to_show):\\n\",\n        \"    axarr[i, j].imshow(task_inducing_points[j], cmap='gray')\\n\",\n        \"    axarr[i, j].axis('off')\\n\",\n        \"\\n\",\n        \"plt.subplots_adjust(wspace=0, hspace=0)\\n\",\n        \"plt.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"VhaEvkSdhYWQ\"\n      },\n      \"source\": [\n        \"# References\\n\",\n        \"\\n\",\n        \"[1] Zenke, Friedemann, Ben Poole, and Surya Ganguli. \\\"Continual learning through synaptic intelligence.\\\" Proceedings of machine learning research 70 (2017): 3987.\\n\",\n        \"\\n\",\n        \"[2] Schwarz, J., Luketina, J., Czarnecki, W. M., Grabska-Barwinska, A., Teh, Y. W., Pascanu, R., \\u0026 Hadsell, R. (2018). Progress \\u0026 compress: A scalable framework for continual learning. arXiv preprint arXiv:1805.06370.\\n\",\n        \"\\n\",\n        \"[3] Goodfellow, Ian J., et al. \\\"An empirical investigation of catastrophic forgetting in gradient-based neural networks.\\\" arXiv preprint arXiv:1312.6211 (2013).\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"accelerator\": \"GPU\",\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"last_runtime\": {},\n      \"name\": \"Functional Regularisation for Continual Learning\",\n      \"provenance\": []\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "fusion_tcv/README.md",
    "content": "# TCV Fusion Control Objectives\n\nThis code release contains the rewards, control targets, noise model and\nparameter variation for the paper *Magnetic control of tokamak plasmas through\ndeep reinforcement learning*, published in Nature in ... 2021.\n\n## Disclaimer\n\nThis release is useful for understanding the details of specific elements of the\nlearning architecture, however it does not contain the simulator\n([FGE](https://infoscience.epfl.ch/record/283775), part of\n[LIUQE](https://www.epfl.ch/research/domains/swiss-plasma-center/liuqe-suite/)),\nthe trained/exported control policies, nor the agent training infrastructure.\nThis release is useful for replicating our results which can be done by\nassembling all the components, many of which are open source elsewhere. Please\nsee the \"Code Availability\" statement in the paper for more information.\n\nThe learning algorithm we used is\n[MPO](https://arxiv.org/abs/1812.02256), which has an open source\n[reference implementation](https://github.com/deepmind/acme) in\n[Acme](https://arxiv.org/abs/2006.00979). Additionally, the open source software\nlibraries [launchpad](https://arxiv.org/abs/2106.04516)\n([code](https://github.com/deepmind/launchpad)),\n[dm_env](https://github.com/deepmind/dm_env),\n[sonnet](https://github.com/deepmind/sonnet),\n[tensorflow](https://arxiv.org/abs/1603.04467)\n([code](https://www.tensorflow.org/)) and\n[reverb](https://arxiv.org/pdf/2102.04736.pdf)\n([code](https://github.com/deepmind/reverb)) were used.\nFGE and LIUQE are available on request from the\n[Swiss Plasma Center](https://www.epfl.ch/research/domains/swiss-plasma-center/)\nat [EPFL](https://www.epfl.ch/en/)\n(email [Federico Felici](mailto:federico.felici@epfl.ch)), subject to agreement.\n\n## Objectives used in published TCV experiments\n\nTake a look at `rewards_used.py` and `references.py` for the rewards and control\ntargets used in the paper.\n\nTo print the actual control targets, run:\n\n```sh\n$ python3 -m fusion_tcv.references_main --refs=snowflake\n```\n\nMake sure to install the dependencies:\n`pip install -r fusion_tcv/requirements.txt`.\n\n## Overview of files\n\n* `agent.py`: An interface for what a real agent might look like. This mainly\n  exists so the run loop builds.\n* `combiners.py`: Defined combiners that combine multiple values into one.\n  Useful for creating a scalar reward from a set of reward components.\n* `environment.py`: Augments the FGE simulator to make it an RL environment\n  (parameter variation, reward computation, etc.).\n* `experiments.py`: The environment definitions published in the paper.\n* `fge_octave.py`: An interface for the simulator. Given that FGE isn't open\n  source, this is a just a sketch of how you might use it.\n* `fge_state.py`: A python interface to the simulator state. Given that FGE\n  isn't open source, this is a sketch and returns fake data.\n* `named_array.py`: Makes it easier to interact with numpy arrays by name.\n  Useful for referring to parts of the control targets/references.\n* `noise.py`: Adds action and observation noise.\n* `param_variation.py`: Defines the physics parameters used by the simulation.\n* `ref_gen.py`: The tools to generate control targets per time step.\n* `references.py`: The control targets used in the experiments.\n* `references_main.py`: Runnable script to output the references to the command\n  line.\n* `rewards.py`: Computes all of the reward components and combines them together\n  to create a single scalar reward for the environment.\n* `rewards_used.py`: The actual reward definitions used in the experiments.\n* `run_loop.py`: An example of interacting with the environment to generate a\n  trajectory to send to the replay buffer. This code is notional as a complete\n  version would require an Agent and a Simulator implementation.\n* `targets.py`: The reward components that pull data from the control targets\n  and the simulator state for generating rewards. This depends on FGE, so\n  cannot be run.\n* `tcv_common.py`: Defines the physical attributes of the TCV fusion reactor,\n  and how to interact with it.\n* `terminations.py`: Defines when the simulation should stop.\n* `trajectory.py`: Stores the history of the episode.\n* `transforms.py`: Turns error values into normalized values.\n"
  },
  {
    "path": "fusion_tcv/agent.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"An agent interface for interacting with the environment.\"\"\"\n\nimport abc\n\nimport dm_env\nimport numpy as np\n\nfrom fusion_tcv import tcv_common\n\n\nclass AbstractAgent(abc.ABC):\n  \"\"\"Agent base class.\"\"\"\n\n  def reset(self):\n    \"\"\"Reset to the initial state.\"\"\"\n\n  @abc.abstractmethod\n  def step(self, timestep: dm_env.TimeStep) -> np.ndarray:\n    \"\"\"Return the action given the current observations.\"\"\"\n\n\nclass ZeroAgent(AbstractAgent):\n  \"\"\"An agent that always returns \"zero\" actions.\"\"\"\n\n  def step(self, timestep: dm_env.TimeStep) -> np.ndarray:\n    del timestep\n    return np.zeros(tcv_common.action_spec().shape,\n                    tcv_common.action_spec().dtype)\n"
  },
  {
    "path": "fusion_tcv/combiners.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Reward combiners.\"\"\"\n\nimport abc\nimport math\nfrom typing import List, Optional, Tuple\n\nimport dataclasses\nimport numpy as np\nfrom scipy import special\n\nfrom fusion_tcv import targets\n\n\nclass AbstractCombiner(targets.AbstractTarget):\n  \"\"\"Combines a set of rewards, possibly weighted.\"\"\"\n\n  @abc.abstractmethod\n  def __call__(self, values: List[float],  # pytype: disable=signature-mismatch  # overriding-return-type-checks\n               weights: Optional[List[float]] = None) -> List[float]:\n    \"\"\"Combines a set of rewards, possibly weighted.\"\"\"\n\n  @property\n  def outputs(self) -> int:\n    \"\"\"All combiners return exactly one value, even if it's NaN.\"\"\"\n    return 1\n\n  @staticmethod\n  def _clean_values_weights(\n      values: List[float],\n      weights: Optional[List[float]] = None) -> Tuple[List[float], List[float]]:\n    \"\"\"Validate the values and weights, and if no weights, return equal.\"\"\"\n    if weights is None:\n      weights = [1] * len(values)\n    else:\n      if len(values) != len(weights):\n        raise ValueError(\"Number of weights don't match values. \"\n                         f\"values: {len(values)}, weights: {len(weights)}\")\n      for w in weights:\n        if w < 0:\n          raise ValueError(f\"Weights must be >=0: {w}\")\n\n    new_values_weights = [(v, w) for v, w in zip(values, weights)\n                          if not np.isnan(v) and w > 0]\n    return tuple(zip(*new_values_weights)) if new_values_weights else ([], [])\n\n\nclass Mean(AbstractCombiner):\n  \"\"\"Take the weighted mean of the values.\n\n  Ignores NaNs and values with weight 0.\n  \"\"\"\n\n  def __call__(self, values: List[float],\n               weights: Optional[List[float]] = None) -> List[float]:\n    values, weights = self._clean_values_weights(values, weights)\n    if not values:\n      return [float(\"nan\")]\n    return [sum(r * w for r, w in zip(values, weights)) / sum(weights)]\n\n\ndef _multiply(values, weights, mean):\n  \"\"\"Multiplies the values taking care to validate the weights.\n\n  Defines 0^0 = 1 so a reward with no weight is \"off\" even if the value is 0.\n\n  Args:\n    values: The reward values.\n    weights: The reward weights.\n    mean: If true, divides by the sum of the weights (computes the geometric\n      mean).\n\n  Returns:\n    Product of v^w across the components.\n  \"\"\"\n  # If weight and value are both zero, set the value to 1 so that 0^0 = 1.\n  values = [1 if (v == 0 and w == 0) else v for (v, w) in zip(values, weights)]\n  if any(v == 0 for v in values):\n    return [0]\n  den = sum(weights) if mean else 1\n  return [math.exp(sum(np.log(values) * weights) / den)]\n\n\nclass Multiply(AbstractCombiner):\n  \"\"\"Combine by multiplying the (weighted) values together.\n\n  This is the same as Geometric mean, but without the n^th root taken at the\n  end. This means doing poorly on several rewards compounds, rather than\n  averages. As such it likely only makes sense after the non-linearities, ie\n  where the values are in the 0-1 range, otherwise it'll cause them to increase.\n  This is even harsher than Min or SmoothMax(-inf).\n\n  Ignores NaNs and values with weight 0.\n  \"\"\"\n\n  def __call__(self, values: List[float],\n               weights: Optional[List[float]] = None) -> List[float]:\n    values, weights = self._clean_values_weights(values, weights)\n    if not values:\n      return [float(\"nan\")]\n    return _multiply(values, weights, mean=False)\n\n\nclass GeometricMean(AbstractCombiner):\n  \"\"\"Take the weighted geometric mean of the values.\n\n  Pushes values towards 0, so likely only makes sense after the non-linear\n  transforms.\n\n  Ignores NaNs and values with weight 0.\n  \"\"\"\n\n  def __call__(self, values: List[float],\n               weights: Optional[List[float]] = None) -> List[float]:\n    values, weights = self._clean_values_weights(values, weights)\n    if not values:\n      return [float(\"nan\")]\n    return _multiply(values, weights, mean=True)\n\n\nclass Min(AbstractCombiner):\n  \"\"\"Take the min of the values. Ignores NaNs and values with weight 0.\"\"\"\n\n  def __call__(self, values: List[float],\n               weights: Optional[List[float]] = None) -> List[float]:\n    values, _ = self._clean_values_weights(values, weights)\n    if not values:\n      return [float(\"nan\")]\n    return [min(values)]\n\n\nclass Max(AbstractCombiner):\n  \"\"\"Take the max of the values. Ignores NaNs and values with weight 0.\"\"\"\n\n  def __call__(self, values: List[float],\n               weights: Optional[List[float]] = None) -> List[float]:\n    values, _ = self._clean_values_weights(values, weights)\n    if not values:\n      return [float(\"nan\")]\n    return [max(values)]\n\n\n@dataclasses.dataclass(frozen=True)\nclass LNorm(AbstractCombiner):\n  \"\"\"Take the l-norm of the values.\n\n  Reasonable norm values (assuming normalized):\n  - 1: avg of the values\n  - 2: euclidean distance metric\n  - inf: max value\n\n  Values in between go between the average and max. As the l-norm goes up, the\n  result gets closer to the max.\n\n  Normalized means dividing by the max possible distance, such that the units\n  still make sense.\n\n  This likely only makes sense before the non-linear transforms. SmoothMax is\n  similar but more flexible and understandable.\n\n  Ignores NaNs and values with weight 0.\n  \"\"\"\n  norm: float\n  normalized: bool = True\n\n  def __call__(self, values: List[float],\n               weights: Optional[List[float]] = None) -> List[float]:\n    values, _ = self._clean_values_weights(values, weights)\n    if not values:\n      return [float(\"nan\")]\n    lnorm = np.linalg.norm(values, ord=self.norm)\n    if self.normalized:\n      lnorm /= np.linalg.norm(np.ones(len(values)), ord=self.norm)\n    return [float(lnorm)]\n\n\n@dataclasses.dataclass(frozen=True)\nclass SmoothMax(AbstractCombiner):\n  \"\"\"Combines component rewards using a smooth maximum.\n\n  https://en.wikipedia.org/wiki/Smooth_maximum\n  alpha is the exponent for the smooth max.\n  - alpha -> inf: returns the maximum\n  - alpha == 0: returns the weighted average\n  - alpha -> -inf: returns the minimum\n  alpha in between returns values in between.\n\n  Since this varies between min, mean and max, it keeps the existing scale.\n\n  Alpha >= 0 make sense before converting to 0-1, alpha <= 0 make sense after.\n\n  Ignores NaNs and values with weight 0.\n  \"\"\"\n  alpha: float\n\n  def __call__(self, values: List[float],\n               weights: Optional[List[float]] = None) -> List[float]:\n    values, weights = self._clean_values_weights(values, weights)\n    if not values:\n      return [float(\"nan\")]\n    if math.isinf(self.alpha):\n      return [max(values) if self.alpha > 0 else min(values)]\n    # Compute weights in a numerically-friendly way.\n    log_soft_weights = [np.log(w) + c * self.alpha\n                        for w, c in zip(weights, values)]\n    log_soft_weights -= special.logsumexp(log_soft_weights)\n    soft_weights = np.exp(log_soft_weights)\n    return Mean()(values, soft_weights)  # weighted mean\n"
  },
  {
    "path": "fusion_tcv/combiners_test.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Tests for combiners.\"\"\"\n\nimport math\n\nfrom absl.testing import absltest\nfrom fusion_tcv import combiners\n\n\nNAN = float(\"nan\")\n\n\nclass CombinersTest(absltest.TestCase):\n\n  def assertNan(self, value):\n    self.assertLen(value, 1)\n    self.assertTrue(math.isnan(value[0]))\n\n  def test_errors(self):\n    c = combiners.Mean()\n    with self.assertRaises(ValueError):\n      c([0, 1], [1])\n    with self.assertRaises(ValueError):\n      c([0, 1], [1, 2, 3])\n    with self.assertRaises(ValueError):\n      c([0, 1], [-1, 2])\n\n  def test_mean(self):\n    c = combiners.Mean()\n    self.assertEqual(c([0, 2, 4]), [2])\n    self.assertEqual(c([0, 0.5, 1]), [0.5])\n    self.assertEqual(c([0, 0.5, 1], [0, 0, 1]), [1])\n    self.assertEqual(c([0, 1], [1, 3]), [0.75])\n    self.assertEqual(c([0, NAN], [1, 3]), [0])\n    self.assertNan(c([NAN, NAN], [1, 3]))\n\n  def test_geometric_mean(self):\n    c = combiners.GeometricMean()\n    self.assertEqual(c([0.5, 0]), [0])\n    self.assertEqual(c([0.3]), [0.3])\n    self.assertEqual(c([4, 4]), [4])\n    self.assertEqual(c([0.5, 0.5]), [0.5])\n    self.assertEqual(c([0.5, 0.5], [1, 3]), [0.5])\n    self.assertEqual(c([0.5, 1], [1, 2]), [0.5**(1/3)])\n    self.assertEqual(c([0.5, 1], [2, 1]), [0.5**(2/3)])\n    self.assertEqual(c([0.5, 0], [2, 0]), [0.5])\n    self.assertEqual(c([0.5, 0, 0], [2, 1, 0]), [0])\n    self.assertEqual(c([0.5, NAN, 0], [2, 1, 0]), [0.5])\n    self.assertNan(c([NAN, NAN], [1, 3]))\n\n  def test_multiply(self):\n    c = combiners.Multiply()\n    self.assertEqual(c([0.5, 0]), [0])\n    self.assertEqual(c([0.3]), [0.3])\n    self.assertEqual(c([0.5, 0.5]), [0.25])\n    self.assertEqual(c([0.5, 0.5], [1, 3]), [0.0625])\n    self.assertEqual(c([0.5, 1], [1, 2]), [0.5])\n    self.assertEqual(c([0.5, 1], [2, 1]), [0.25])\n    self.assertEqual(c([0.5, 0], [2, 0]), [0.25])\n    self.assertEqual(c([0.5, 0, 0], [2, 1, 0]), [0])\n    self.assertEqual(c([0.5, NAN], [1, 1]), [0.5])\n    self.assertNan(c([NAN, NAN], [1, 3]))\n\n  def test_min(self):\n    c = combiners.Min()\n    self.assertEqual(c([0, 1]), [0])\n    self.assertEqual(c([0.5, 1]), [0.5])\n    self.assertEqual(c([1, 0.75]), [0.75])\n    self.assertEqual(c([1, 3]), [1])\n    self.assertEqual(c([1, 1, 3], [0, 1, 1]), [1])\n    self.assertEqual(c([NAN, 3]), [3])\n    self.assertNan(c([NAN, NAN], [1, 3]))\n\n  def test_max(self):\n    c = combiners.Max()\n    self.assertEqual(c([0, 1]), [1])\n    self.assertEqual(c([0.5, 1]), [1])\n    self.assertEqual(c([1, 0.75]), [1])\n    self.assertEqual(c([1, 3]), [3])\n    self.assertEqual(c([1, 1, 3], [0, 1, 1]), [3])\n    self.assertEqual(c([NAN, 3]), [3])\n    self.assertNan(c([NAN, NAN], [1, 3]))\n\n  def test_lnorm(self):\n    c = combiners.LNorm(1)\n    self.assertEqual(c([0, 2, 4]), [2])\n    self.assertEqual(c([0, 0.5, 1]), [0.5])\n    self.assertEqual(c([3, 4]), [7 / 2])\n    self.assertEqual(c([0, 2, 4], [1, 1, 0]), [1])\n    self.assertEqual(c([0, 2, NAN]), [1])\n    self.assertNan(c([NAN, NAN], [1, 3]))\n\n    c = combiners.LNorm(1, normalized=False)\n    self.assertEqual(c([0, 2, 4]), [6])\n    self.assertEqual(c([0, 0.5, 1]), [1.5])\n    self.assertEqual(c([3, 4]), [7])\n\n    c = combiners.LNorm(2)\n    self.assertEqual(c([3, 4]), [5 / 2**0.5])\n\n    c = combiners.LNorm(2, normalized=False)\n    self.assertEqual(c([3, 4]), [5])\n\n    c = combiners.LNorm(math.inf)\n    self.assertAlmostEqual(c([3, 4])[0], 4)\n\n    c = combiners.LNorm(math.inf, normalized=False)\n    self.assertAlmostEqual(c([3, 4])[0], 4)\n\n  def test_smoothmax(self):\n    # Max\n    c = combiners.SmoothMax(math.inf)\n    self.assertEqual(c([0, 1]), [1])\n    self.assertEqual(c([0.5, 1]), [1])\n    self.assertEqual(c([1, 0.75]), [1])\n    self.assertEqual(c([1, 3]), [3])\n\n    # Smooth Max\n    c = combiners.SmoothMax(1)\n    self.assertAlmostEqual(c([0, 1])[0], 0.7310585786300049)\n\n    # Mean\n    c = combiners.SmoothMax(0)\n    self.assertEqual(c([0, 2, 4]), [2])\n    self.assertEqual(c([0, 0.5, 1]), [0.5])\n    self.assertEqual(c([0, 0.5, 1], [0, 0, 1]), [1])\n    self.assertEqual(c([0, 2, NAN]), [1])\n    self.assertEqual(c([0, 2, NAN], [0, 1, 1]), [2])\n    self.assertAlmostEqual(c([0, 1], [1, 3])[0], 0.75)\n    self.assertNan(c([NAN, NAN], [1, 3]))\n\n    # Smooth Min\n    c = combiners.SmoothMax(-1)\n    self.assertEqual(c([0, 1])[0], 0.2689414213699951)\n\n    # Min\n    c = combiners.SmoothMax(-math.inf)\n    self.assertEqual(c([0, 1]), [0])\n    self.assertEqual(c([0.5, 1]), [0.5])\n    self.assertEqual(c([1, 0.75]), [0.75])\n    self.assertEqual(c([1, 3]), [1])\n\n\nif __name__ == \"__main__\":\n  absltest.main()\n"
  },
  {
    "path": "fusion_tcv/environment.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Environment API for FGE simulator.\"\"\"\n\nfrom typing import Dict, List, Optional\n\nimport dm_env\nfrom dm_env import auto_reset_environment\nfrom dm_env import specs\nimport numpy as np\n\nfrom fusion_tcv import fge_octave\nfrom fusion_tcv import fge_state\nfrom fusion_tcv import named_array\nfrom fusion_tcv import noise\nfrom fusion_tcv import param_variation\nfrom fusion_tcv import ref_gen\nfrom fusion_tcv import rewards\nfrom fusion_tcv import tcv_common\nfrom fusion_tcv import terminations\n\n\n# Re-export as fge_octave should be an implementation detail.\nShotCondition = fge_octave.ShotCondition\n\n\nclass Environment(auto_reset_environment.AutoResetEnvironment):\n  \"\"\"An environment using the FGE Solver.\n\n  The simulator will return a flux map, which is the environment's hidden state,\n  and some flux measurements, which will be used as observations. The actions\n  represent current levels that are passed to the simulator for the next\n  flux calculation.\n  \"\"\"\n\n  def __init__(\n      self,\n      shot_condition: ShotCondition,\n      reward: rewards.AbstractReward,\n      reference_generator: ref_gen.AbstractReferenceGenerator,\n      max_episode_length: int = 10000,\n      termination: Optional[terminations.Abstract] = None,\n      obs_act_noise: Optional[noise.Noise] = None,\n      power_supply_delays: Optional[Dict[str, List[float]]] = None,\n      param_generator: Optional[param_variation.ParamGenerator] = None):\n    \"\"\"Initializes an Environment instance.\n\n    Args:\n      shot_condition: A ShotCondition, specifying shot number and time. This\n        specifies the machine geometry (eg with or without the baffles), and the\n        initial measurements, voltages, current and plasma state.\n      reward: Function to generate a reward term.\n      reference_generator: Generator for the signal to send to references.\n      max_episode_length: Maximum number of steps before episode is truncated\n        and restarted.\n      termination: Decide if the state should be considered a termination.\n      obs_act_noise: Type for setting the observation and action noise. If noise\n        is set to None then the default noise level is used.\n      power_supply_delays: A dict with power supply delays (in seconds), keys\n        are coil type labels ('E', 'F', 'G', 'OH'). `None` means default delays.\n      param_generator: Generator for Liuqe parameter settings. If None then\n        the default settings are used.\n    \"\"\"\n    super().__init__()\n    if power_supply_delays is None:\n      power_supply_delays = tcv_common.TCV_ACTION_DELAYS\n    self._simulator = fge_octave.FGESimulatorOctave(\n        shot_condition=shot_condition,\n        power_supply_delays=power_supply_delays)\n    self._reward = reward\n    self._reference_generator = reference_generator\n    self._max_episode_length = max_episode_length\n    self._termination = (termination if termination is not None else\n                         terminations.CURRENT_OH_IP)\n    self._noise = (obs_act_noise if obs_act_noise is not None else\n                   noise.Noise.use_default_noise())\n    self._param_generator = (param_generator if param_generator is not None else\n                             param_variation.ParamGenerator())\n    self._params = None\n    self._step_counter = 0\n    self._last_observation = None\n\n  def observation_spec(self):\n    \"\"\"Defines the observations provided by the environment.\"\"\"\n    return tcv_common.observation_spec()\n\n  def action_spec(self) -> specs.BoundedArray:\n    \"\"\"Defines the actions that should be provided to `step`.\"\"\"\n    return tcv_common.action_spec()\n\n  def _reset(self) -> dm_env.TimeStep:\n    \"\"\"Starts a new episode.\"\"\"\n    self._step_counter = 0\n    self._params = self._param_generator.generate()\n    state = self._simulator.reset(self._params)\n    references = self._reference_generator.reset()\n    zero_act = np.zeros(self.action_spec().shape,\n                        dtype=self.action_spec().dtype)\n    self._last_observation = self._extract_observation(\n        state, references, zero_act)\n    return dm_env.restart(self._last_observation)\n\n  def _simulator_voltages_from_voltages(self, voltages):\n    voltage_simulator = np.copy(voltages)\n    if self._params.psu_voltage_offset is not None:\n      for coil, offset in self._params.psu_voltage_offset.items():\n        voltage_simulator[tcv_common.TCV_ACTION_INDICES[coil]] += offset\n    voltage_simulator = np.clip(\n        voltage_simulator,\n        self.action_spec().minimum,\n        self.action_spec().maximum)\n    g_coil = tcv_common.TCV_ACTION_RANGES.index(\"G\")\n    if abs(voltage_simulator[g_coil]) < tcv_common.ENV_G_COIL_DEADBAND:\n      voltage_simulator[g_coil] = 0\n    return voltage_simulator\n\n  def _step(self, action: np.ndarray) -> dm_env.TimeStep:\n    \"\"\"Does one step within TCV.\"\"\"\n    voltages = self._noise.add_action_noise(action)\n    voltage_simulator = self._simulator_voltages_from_voltages(voltages)\n    try:\n      state = self._simulator.step(voltage_simulator)\n    except (fge_state.InvalidSolutionError,\n            fge_state.StopSignalException):\n      return dm_env.termination(\n          self._reward.terminal_reward(), self._last_observation)\n    references = self._reference_generator.step()\n    self._last_observation = self._extract_observation(\n        state, references, action)\n    term = self._termination.terminate(state)\n    if term:\n      return dm_env.termination(\n          self._reward.terminal_reward(), self._last_observation)\n    reward, _ = self._reward.reward(voltages, state, references)\n    self._step_counter += 1\n    if self._step_counter >= self._max_episode_length:\n      return dm_env.truncation(reward, self._last_observation)\n    return dm_env.transition(reward, self._last_observation)\n\n  def _extract_observation(\n      self, state: fge_state.FGEState,\n      references: named_array.NamedArray,\n      action: np.ndarray) -> Dict[str, np.ndarray]:\n    return {\n        \"references\": references.array,\n        \"measurements\": self._noise.add_measurement_noise(\n            state.get_observation_vector()),\n        \"last_action\": action,\n    }\n"
  },
  {
    "path": "fusion_tcv/experiments.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"The environment definitions used for our experiments.\"\"\"\n\nfrom fusion_tcv import environment\nfrom fusion_tcv import references\nfrom fusion_tcv import rewards_used\n\n\n# Used in TCV#70915\ndef fundamental_capability() -> environment.Environment:\n  return environment.Environment(\n      shot_condition=environment.ShotCondition(70166, 0.0872),\n      reward=rewards_used.FUNDAMENTAL_CAPABILITY,\n      reference_generator=references.fundamental_capability(),\n      max_episode_length=10000)\n\n\n# Used in TCV#70920\ndef elongation() -> environment.Environment:\n  return environment.Environment(\n      shot_condition=environment.ShotCondition(70166, 0.45),\n      reward=rewards_used.ELONGATION,\n      reference_generator=references.elongation(),\n      max_episode_length=5000)\n\n\n# Used in TCV#70600\ndef iter() -> environment.Environment:  # pylint: disable=redefined-builtin\n  return environment.Environment(\n      shot_condition=environment.ShotCondition(70392, 0.0872),\n      reward=rewards_used.ITER,\n      reference_generator=references.iter(),\n      max_episode_length=1000)\n\n\n# Used in TCV#70457\ndef negative_triangularity() -> environment.Environment:\n  return environment.Environment(\n      shot_condition=environment.ShotCondition(70166, 0.45),\n      reward=rewards_used.NEGATIVE_TRIANGULARITY,\n      reference_generator=references.negative_triangularity(),\n      max_episode_length=5000)\n\n\n# Used in TCV#70755\ndef snowflake() -> environment.Environment:\n  return environment.Environment(\n      shot_condition=environment.ShotCondition(70166, 0.0872),\n      reward=rewards_used.SNOWFLAKE,\n      reference_generator=references.snowflake(),\n      max_episode_length=10000)\n\n\n# Used in TCV#69545\ndef droplet() -> environment.Environment:\n  return environment.Environment(\n      shot_condition=environment.ShotCondition(69198, 0.418),\n      reward=rewards_used.DROPLETS,\n      reference_generator=references.droplet(),\n      max_episode_length=2000)\n"
  },
  {
    "path": "fusion_tcv/experiments_test.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Tests for experiments.\"\"\"\n\nfrom absl.testing import absltest\nfrom absl.testing import parameterized\nfrom dm_env import test_utils\n\nfrom fusion_tcv import agent\nfrom fusion_tcv import experiments\nfrom fusion_tcv import run_loop\n\n\nclass FundamentalCapabilityTest(test_utils.EnvironmentTestMixin,\n                                absltest.TestCase):\n\n  def make_object_under_test(self):\n    return experiments.fundamental_capability()\n\n\nclass ElongationTest(test_utils.EnvironmentTestMixin, absltest.TestCase):\n\n  def make_object_under_test(self):\n    return experiments.elongation()\n\n\nclass IterTest(test_utils.EnvironmentTestMixin, absltest.TestCase):\n\n  def make_object_under_test(self):\n    return experiments.iter()\n\n\nclass NegativeTriangularityTest(test_utils.EnvironmentTestMixin,\n                                absltest.TestCase):\n\n  def make_object_under_test(self):\n    return experiments.negative_triangularity()\n\n\nclass SnowflakeTest(test_utils.EnvironmentTestMixin, absltest.TestCase):\n\n  def make_object_under_test(self):\n    return experiments.snowflake()\n\n\nclass DropletTest(test_utils.EnvironmentTestMixin, absltest.TestCase):\n\n  def make_object_under_test(self):\n    return experiments.droplet()\n\n\nclass ExperimentsTest(parameterized.TestCase):\n\n  @parameterized.named_parameters(\n      (\"fundamental_capability\", experiments.fundamental_capability),\n      (\"elongation\", experiments.elongation),\n      (\"iter\", experiments.iter),\n      (\"negative_triangularity\", experiments.negative_triangularity),\n      (\"snowflake\", experiments.snowflake),\n      (\"droplet\", experiments.droplet),\n  )\n  def test_env(self, env_fn):\n    traj = run_loop.run_loop(env_fn(), agent.ZeroAgent(), max_steps=10)\n    self.assertGreaterEqual(len(traj.reward), 1)\n\n\nif __name__ == \"__main__\":\n  absltest.main()\n"
  },
  {
    "path": "fusion_tcv/fge_octave.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Actually interact with FGE via octave.\"\"\"\n\nfrom typing import Dict, List\n\nimport dataclasses\nimport numpy as np\n\nfrom fusion_tcv import fge_state\nfrom fusion_tcv import param_variation\n\nSUBSTEPS = 5\n\n\n@dataclasses.dataclass\nclass ShotCondition:\n  \"\"\"Represents a shot and time from a real shot.\"\"\"\n  shot: int\n  time: float\n\n\nclass FGESimulatorOctave:\n  \"\"\"Would interact with the FGE solver via Octave.\n\n  Given that FGE isn't open source, this is just a sketch.\n  \"\"\"\n\n  def __init__(\n      self,\n      shot_condition: ShotCondition,\n      power_supply_delays: Dict[str, List[float]]):\n    \"\"\"Initialize the simulator.\n\n    Args:\n      shot_condition: A ShotCondition, specifying shot number and time. This\n        specifies the machine geometry (eg with or without the baffles), and the\n        initial measurements, voltages, current and plasma shape.\n      power_supply_delays: A dict with power supply delays (in seconds), keys\n        are coil type labels ('E', 'F', 'G', 'OH'). `None` means default delays.\n    \"\"\"\n    del power_supply_delays\n    # Initialize the simulator:\n    # - Use oct2py to load FGE through Octave.\n    # - Load the data for the shot_condition.\n    # - Set up the reactor geometry from the shot_condition.\n    # - Set the timestep to `tcv_common.DT / SUBSTEPS`.\n    # - Set up the solver for singlets or droplets based on the shot_condition.\n    self._num_plasmas = 2 if shot_condition.shot == 69198 else 1\n    # - Set up the power supply, including the limits, initial data, and delays.\n\n  def reset(self, variation: param_variation.Settings) -> fge_state.FGEState:\n    \"\"\"Restarts the simulator with parameters.\"\"\"\n    del variation\n    # Update the simulator with the current physics parameters.\n    # Reset to the initial state from the shot_condition.\n    return fge_state.FGEState(self._num_plasmas)  # Filled with the real state.\n\n  def step(self, voltages: np.ndarray) -> fge_state.FGEState:\n    \"\"\"Run the simulator with `voltages`, returns the state.\"\"\"\n    del voltages\n    # for _ in range(SUBSTEPS):\n    #   Step the simulator with `voltages`.\n    #   raise fge_state.InvalidSolutionError if the solver doesn't converge.\n    #   raise fge_state.StopSignalException if an internal termination triggered\n    return fge_state.FGEState(self._num_plasmas)  # Filled with the real state.\n"
  },
  {
    "path": "fusion_tcv/fge_state.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"A nice python representation of the underlying FGE state.\"\"\"\n\nfrom typing import List, Tuple\n\nimport numpy as np\n\nfrom fusion_tcv import shape\nfrom fusion_tcv import shapes_known\nfrom fusion_tcv import tcv_common\n\n\nclass StopSignalException(Exception):  # pylint: disable=g-bad-exception-name\n  \"\"\"This is raised if the FGE environment raises the Stop/Alarm signal.\"\"\"\n  pass\n\n\nclass InvalidSolutionError(RuntimeError):\n  \"\"\"This is raised if returned solution is invalid.\"\"\"\n  pass\n\n\nclass UnhandledOctaveError(Exception):\n  \"\"\"This is raised if some Octave code raises an unhandled error.\"\"\"\n  pass\n\n\nclass FGEState:\n  \"\"\"A nice python representation of the underlying FGE State.\n\n  Given that FGE isn't open source, all of these numbers are made up, and only\n  a sketch of what it could look like.\n  \"\"\"\n\n  def __init__(self, num_plasmas):\n    self._num_plasmas = num_plasmas\n\n  @property\n  def num_plasmas(self) -> int:\n    return self._num_plasmas  # Return 1 for singlet, 2 for droplets.\n\n  @property\n  def rzip_d(self) -> Tuple[List[float], List[float], List[float]]:\n    \"\"\"Returns the R, Z, and Ip for each plasma domain.\"\"\"\n    if self.num_plasmas == 1:\n      return [0.9], [0], [-120000]\n    else:\n      return [0.9, 0.88], [0.4, -0.4], [-60000, -65000]\n\n  def get_coil_currents_by_type(self, coil_type) -> np.ndarray:\n    currents = tcv_common.TCV_ACTION_RANGES.new_random_named_array()\n    return currents[coil_type] * tcv_common.ENV_COIL_MAX_CURRENTS[coil_type] / 5\n\n  def get_lcfs_points(self, domain: int) -> shape.ShapePoints:\n    del domain  # Should be plasma domain specific\n    return shapes_known.SHAPE_70166_0872.canonical().points\n\n  def get_observation_vector(self) -> np.ndarray:\n    return tcv_common.TCV_MEASUREMENT_RANGES.new_random_named_array().array\n\n  @property\n  def elongation(self) -> List[float]:\n    return [1.4] * self.num_plasmas\n\n  @property\n  def triangularity(self) -> List[float]:\n    return [0.25] * self.num_plasmas\n\n  @property\n  def radius(self) -> List[float]:\n    return [0.23] * self.num_plasmas\n\n  @property\n  def limit_point_d(self) -> List[shape.Point]:\n    return [shape.Point(tcv_common.INNER_LIMITER_R, 0.2)] * self.num_plasmas\n\n  @property\n  def is_diverted_d(self) -> List[bool]:\n    return [False] * self.num_plasmas\n\n  @property\n  def x_points(self) -> shape.ShapePoints:\n    return []\n\n  @property\n  def flux(self) -> np.ndarray:\n    \"\"\"Return the flux at the grid coordinates.\"\"\"\n    return np.random.random((len(self.z_coordinates), len(self.r_coordinates)))\n\n  @property\n  def magnetic_axis_flux_strength(self) -> float:\n    \"\"\"The magnetic flux at the center of the plasma.\"\"\"\n    return 2\n\n  @property\n  def lcfs_flux_strength(self) -> float:\n    \"\"\"The flux at the LCFS.\"\"\"\n    return 1\n\n  @property\n  def r_coordinates(self) -> np.ndarray:\n    \"\"\"The radial coordinates of the simulation.\"\"\"\n    return np.arange(tcv_common.INNER_LIMITER_R, tcv_common.OUTER_LIMITER_R,\n                     tcv_common.LIMITER_WIDTH / 10)  # Made up grid resolution.\n\n  @property\n  def z_coordinates(self):\n    \"\"\"The vertical coordinates of the simulation.\"\"\"\n    return np.arange(-0.75, 0.75, 1.5 / 30)  # Made up numbers.\n"
  },
  {
    "path": "fusion_tcv/named_array.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Give names to parts of a numpy array.\"\"\"\n\nfrom typing import Iterable, List, Mapping, MutableMapping, Tuple, Union\n\nimport numpy as np\n\n\ndef lengths_to_ranges(\n    lengths: Mapping[str, int]) -> MutableMapping[str, List[int]]:\n  \"\"\"Eg: {a: 2, b: 3} -> {a: [0, 1], b: [2, 3, 4]} .\"\"\"\n  ranges = {}\n  start = 0\n  for key, length in lengths.items():\n    ranges[key] = list(range(start, start + length))\n    start += length\n  return ranges\n\n\nclass NamedRanges:\n  \"\"\"Given a map of {key: count}, give various views into it.\"\"\"\n\n  def __init__(self, counts: Mapping[str, int]):\n    self._ranges = lengths_to_ranges(counts)\n    self._size = sum(counts.values())\n\n  def __getitem__(self, name) -> List[int]:\n    return self._ranges[name]\n\n  def __contains__(self, name) -> bool:\n    return name in self._ranges\n\n  def set_range(self, name: str, value: List[int]):\n    \"\"\"Overwrite or create a custom range, which may intersect with others.\"\"\"\n    self._ranges[name] = value\n\n  def range(self, name: str) -> List[int]:\n    return self[name]\n\n  def index(self, name: str) -> int:\n    rng = self[name]\n    if len(rng) != 1:\n      raise ValueError(f\"{name} has multiple values\")\n    return rng[0]\n\n  def count(self, name: str) -> int:\n    return len(self[name])\n\n  def names(self) -> Iterable[str]:\n    return self._ranges.keys()\n\n  def ranges(self) -> Iterable[Tuple[str, List[int]]]:\n    return self._ranges.items()\n\n  def counts(self) -> Mapping[str, int]:\n    return {k: len(v) for k, v in self._ranges.items()}\n\n  @property\n  def size(self) -> int:\n    return self._size\n\n  def named_array(self, array: np.ndarray) -> \"NamedArray\":\n    return NamedArray(array, self)\n\n  def new_named_array(self) -> \"NamedArray\":\n    return NamedArray(np.zeros((self.size,)), self)\n\n  def new_random_named_array(self) -> \"NamedArray\":\n    return NamedArray(np.random.uniform(size=(self.size,)), self)\n\n\nclass NamedArray:\n  \"\"\"Given a numpy array and a NamedRange, access slices by name.\"\"\"\n\n  def __init__(self, array: np.ndarray, names: NamedRanges):\n    if array.shape != (names.size,):\n      raise ValueError(f\"Wrong sizes: {array.shape} != ({names.size},)\")\n    self._array = array\n    self._names = names\n\n  def __getitem__(\n      self, name: Union[str, Tuple[str, Union[int, List[int],\n                                              slice]]]) -> np.ndarray:\n    \"\"\"Return a read-only view into the array by name.\"\"\"\n    if isinstance(name, str):\n      arr = self._array[self._names[name]]\n    else:\n      name, i = name\n      arr = self._array[np.array(self._names[name])[i]]\n    if not np.isscalar(arr):\n      # Read-only because it's indexed by an array of potentially non-contiguous\n      # indices, which isn't representable as a normal tensor, which forces a\n      # copy and therefore writes don't modify the underlying array as expected.\n      arr.flags.writeable = False\n    return arr\n\n  def __setitem__(\n      self, name: Union[str, Tuple[str, Union[int, List[int], slice]]], value):\n    \"\"\"Set one or more values of a range to a value.\"\"\"\n    if isinstance(name, str):\n      self._array[self._names[name]] = value\n    else:\n      name, i = name\n      self._array[np.array(self._names[name])[i]] = value\n\n  @property\n  def array(self) -> np.ndarray:\n    return self._array\n\n  @property\n  def names(self) -> NamedRanges:\n    return self._names\n\n  def to_dict(self) -> Mapping[str, np.ndarray]:\n    return {k: self[k] for k in self._names.names()}\n"
  },
  {
    "path": "fusion_tcv/named_array_test.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Tests for named_array.\"\"\"\n\nfrom absl.testing import absltest\nimport numpy as np\n\nfrom fusion_tcv import named_array\n\n\nclass NamedRangesTest(absltest.TestCase):\n\n  def test_lengths_to_ranges(self):\n    self.assertEqual(named_array.lengths_to_ranges({\"a\": 2, \"b\": 3}),\n                     {\"a\": [0, 1], \"b\": [2, 3, 4]})\n\n  def test_named_ranges(self):\n    action_counts = {\"E\": 8, \"F\": 8, \"OH\": 2, \"DUMMY\": 1, \"G\": 1}\n    actions = named_array.NamedRanges(action_counts)\n    self.assertEqual(actions.range(\"E\"), list(range(8)))\n    self.assertEqual(actions[\"F\"], list(range(8, 16)))\n    self.assertEqual(actions.range(\"G\"), [19])\n    self.assertEqual(actions.index(\"G\"), 19)\n    with self.assertRaises(ValueError):\n      actions.index(\"F\")\n    for k, v in action_counts.items():\n      self.assertEqual(actions.count(k), v)\n    self.assertEqual(actions.counts(), action_counts)\n    self.assertEqual(list(actions.names()), list(action_counts.keys()))\n    self.assertEqual(actions.size, sum(action_counts.values()))\n\n    refs = actions.new_named_array()\n    self.assertEqual(refs.array.shape, (actions.size,))\n    np.testing.assert_array_equal(refs.array, np.zeros((actions.size,)))\n\n    refs = actions.new_random_named_array()\n    self.assertEqual(refs.array.shape, (actions.size,))\n    self.assertFalse(np.array_equal(refs.array, np.zeros((actions.size,))))\n\n\nclass NamedArrayTest(absltest.TestCase):\n\n  def test_name_array(self):\n    action_counts = {\"E\": 8, \"F\": 8, \"OH\": 2, \"DUMMY\": 1, \"G\": 1}\n    actions_ranges = named_array.NamedRanges(action_counts)\n    actions_array = np.arange(actions_ranges.size) + 100\n    actions = named_array.NamedArray(actions_array, actions_ranges)\n    for k in action_counts:\n      self.assertEqual(list(actions[k]), [v + 100 for v in actions_ranges[k]])\n    actions[\"G\"] = -5\n    self.assertEqual(list(actions[\"G\"]), [-5])\n    self.assertEqual(actions_array[19], -5)\n\n    for i in range(action_counts[\"E\"]):\n      actions.names.set_range(f\"E_{i}\", [i])\n\n    actions[\"E_3\"] = 53\n    self.assertEqual(list(actions[\"E_1\"]), [101])\n    self.assertEqual(list(actions[\"E_3\"]), [53])\n    self.assertEqual(actions_array[3], 53)\n\n    actions[\"F\", 2] = 72\n    self.assertEqual(actions_array[10], 72)\n\n    actions[\"F\", [4, 5]] = 74\n    self.assertEqual(actions_array[12], 74)\n    self.assertEqual(actions_array[13], 74)\n\n    actions[\"F\", 0:2] = 78\n    self.assertEqual(actions_array[8], 78)\n    self.assertEqual(actions_array[9], 78)\n\n    self.assertEqual(list(actions[\"F\"]), [78, 78, 72, 111, 74, 74, 114, 115])\n\n    with self.assertRaises(ValueError):\n      actions[\"F\"][5] = 85\n\n\nif __name__ == \"__main__\":\n  absltest.main()\n"
  },
  {
    "path": "fusion_tcv/noise.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Settings for adding noise to the action and measurements.\"\"\"\n\nimport numpy as np\nfrom numpy import random\n\nfrom fusion_tcv import tcv_common\n\n\nclass Noise:\n  \"\"\"Class for adding noise to the action and measurements.\"\"\"\n\n  def __init__(self,\n               action_mean=None,\n               action_std=None,\n               measurements_mean=None,\n               measurements_std=None,\n               seed=None):\n    \"\"\"Initializes the class.\n\n    Args:\n      action_mean: mean of the Gaussian noise (action bias).\n      action_std: std of the Gaussian action noise.\n      measurements_mean: mean of the Gaussian noise (measurement bias).\n      measurements_std: Dictionary mapping the tcv measurement names to noise.\n      seed: seed for the random number generator. If none seed is unset.\n    \"\"\"\n    # Check all of the shapes are present and correct.\n    assert action_std.shape == (tcv_common.NUM_ACTIONS,)\n    assert action_mean.shape == (tcv_common.NUM_ACTIONS,)\n    for name, num in tcv_common.TCV_MEASUREMENTS.items():\n      assert name in measurements_std\n      assert measurements_mean[name].shape == (num,)\n      assert measurements_std[name].shape == (num,)\n    self._action_mean = action_mean\n    self._action_std = action_std\n    self._meas_mean = measurements_mean\n    self._meas_std = measurements_std\n    self._meas_mean_vec = tcv_common.dict_to_measurement(self._meas_mean)\n    self._meas_std_vec = tcv_common.dict_to_measurement(self._meas_std)\n    self._gen = random.RandomState(seed)\n\n  @classmethod\n  def use_zero_noise(cls):\n    no_noise_mean = dict()\n    no_noise_std = dict()\n    for name, num in tcv_common.TCV_MEASUREMENTS.items():\n      no_noise_mean[name] = np.zeros((num,))\n      no_noise_std[name] = np.zeros((num,))\n    return cls(\n        action_mean=np.zeros((tcv_common.NUM_ACTIONS)),\n        action_std=np.zeros((tcv_common.NUM_ACTIONS)),\n        measurements_mean=no_noise_mean,\n        measurements_std=no_noise_std)\n\n  @classmethod\n  def use_default_noise(cls, scale=1):\n    \"\"\"Returns the default observation noise parameters.\"\"\"\n\n    # There is no noise added to the actions, because the noise should be added\n    # to the action after/as part of the power supply model as opposed to the\n    # input to the power supply model.\n    action_noise_mean = np.zeros((tcv_common.NUM_ACTIONS))\n    action_noise_std = np.zeros((tcv_common.NUM_ACTIONS))\n\n    meas_noise_mean = dict()\n    for key, l in tcv_common.TCV_MEASUREMENTS.items():\n      meas_noise_mean[key] = np.zeros((l,))\n    meas_noise_std = dict(\n        clint_vloop=np.array([0]),\n        clint_rvloop=np.array([scale * 1e-4] * 37),\n        bm=np.array([scale * 1e-4] * 38),\n        IE=np.array([scale * 20] * 8),\n        IF=np.array([scale * 5] * 8),\n        IOH=np.array([scale * 20] *2),\n        Bdot=np.array([scale * 0.05] * 20),\n        DIOH=np.array([scale * 30]),\n        FIR_FRINGE=np.array([0]),\n        IG=np.array([scale * 2.5]),\n        ONEMM=np.array([0]),\n        vloop=np.array([scale * 0.3]),\n        IPHI=np.array([0]),\n        )\n    return cls(\n        action_mean=action_noise_mean,\n        action_std=action_noise_std,\n        measurements_mean=meas_noise_mean,\n        measurements_std=meas_noise_std)\n\n  def add_action_noise(self, action):\n    errs = self._gen.normal(size=action.shape,\n                            loc=self._action_mean,\n                            scale=self._action_std)\n    return action + errs\n\n  def add_measurement_noise(self, measurement_vec):\n    errs = self._gen.normal(size=measurement_vec.shape,\n                            loc=self._meas_mean_vec,\n                            scale=self._meas_std_vec)\n    # Make the IOH measurements consistent. The \"real\" measurements are IOH\n    # and DIOH, so use those.\n    errs = tcv_common.measurements_to_dict(errs)\n    errs[\"IOH\"][1] = errs[\"IOH\"][0] + errs[\"DIOH\"][0]\n    errs = tcv_common.dict_to_measurement(errs)\n    return measurement_vec + errs\n"
  },
  {
    "path": "fusion_tcv/param_variation.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Tools for varying parameters from simulation to simulation.\"\"\"\n\nfrom typing import Dict, Optional, Tuple\n\nimport dataclasses\nimport numpy as np\n\nfrom fusion_tcv import tcv_common\n\n# Pylint does not like variable names like `qA`.\n# pylint: disable=invalid-name\n\nRP_DEFAULT = 5e-6\nLP_DEFAULT = 2.05e-6\nBP_DEFAULT = 0.25\nQA_DEFAULT = 1.3\n\n\n@dataclasses.dataclass\nclass Settings:\n  \"\"\"Settings to modify solver/plasma model.\"\"\"\n  # Inverse of the resistivity.\n  # Plasma circuit equation is roughly\n  #  k * dIoh/dt = L * dIp/dt + R * I = Vloop\n  # where R is roughly (1 / signeo) or rp.\n  # Value is multiplier on the default value.\n  # This parameter does not apply to the OhmTor diffusion.\n  signeo: Tuple[float, float] = (1, 1)\n  # Rp Plasma resistivity. The value is an absolute value.\n  rp: float = RP_DEFAULT\n  # Plasma self-inductance. The value is an absolute value.\n  lp: float = LP_DEFAULT\n  # Proportional to the plasma pressure. The value is an absolute value.\n  bp: float = BP_DEFAULT\n  # Plasma current profile. Value is absolute.\n  qA: float = QA_DEFAULT\n  # Initial OH coil current. Applied to both coils.\n  ioh: Optional[float] = None\n  # The voltage offsets for the various coils.\n  psu_voltage_offset: Optional[Dict[str, float]] = None\n\n  def _psu_voltage_offset_string(self) -> str:\n    \"\"\"Return a short-ish, readable string of the psu voltage offsets.\"\"\"\n    if not self.psu_voltage_offset:\n      return \"None\"\n    if len(self.psu_voltage_offset) < 8:  # Only a few, output individually.\n      return \", \".join(\n          f\"{coil.replace('_00', '')}: {offset:.0f}\"\n          for coil, offset in self.psu_voltage_offset.items())\n    # Otherwise, too long, so output in groups.\n    groups = []\n    for coil, action_range in tcv_common.TCV_ACTION_RANGES.ranges():\n      offsets = [self.psu_voltage_offset.get(tcv_common.TCV_ACTIONS[i], 0)\n                 for i in action_range]\n      if any(offsets):\n        groups.append(f\"{coil}: \" + \",\".join(f\"{offset:.0f}\"\n                                             for offset in offsets))\n    return \", \".join(groups)\n\n\nclass ParamGenerator:\n  \"\"\"Varies parameters using uniform/loguniform distributions.\n\n  Absolute parameters are varied using uniform distributions while scaling\n  parameters use a loguniform distribution.\n  \"\"\"\n\n  def __init__(self,\n               rp_bounds: Optional[Tuple[float, float]] = None,\n               lp_bounds: Optional[Tuple[float, float]] = None,\n               qA_bounds: Optional[Tuple[float, float]] = None,\n               bp_bounds: Optional[Tuple[float, float]] = None,\n               rp_mean: float = RP_DEFAULT,\n               lp_mean: float = LP_DEFAULT,\n               bp_mean: float = BP_DEFAULT,\n               qA_mean: float = QA_DEFAULT,\n               ioh_bounds: Optional[Tuple[float, float]] = None,\n               psu_voltage_offset_bounds: Optional[\n                   Dict[str, Tuple[float, float]]] = None):\n    # Do not allow Signeo variation as this does not work with OhmTor current\n    # diffusion.\n    no_scaling = (1, 1)\n    self._rp_bounds = rp_bounds if rp_bounds else no_scaling\n    self._lp_bounds = lp_bounds if lp_bounds else no_scaling\n    self._bp_bounds = bp_bounds if bp_bounds else no_scaling\n    self._qA_bounds = qA_bounds if qA_bounds else no_scaling\n    self._rp_mean = rp_mean\n    self._lp_mean = lp_mean\n    self._bp_mean = bp_mean\n    self._qA_mean = qA_mean\n    self._ioh_bounds = ioh_bounds\n    self._psu_voltage_offset_bounds = psu_voltage_offset_bounds\n\n  def generate(self) -> Settings:\n    return Settings(\n        signeo=(1, 1),\n        rp=loguniform_rv(*self._rp_bounds) * self._rp_mean,\n        lp=loguniform_rv(*self._lp_bounds) * self._lp_mean,\n        bp=loguniform_rv(*self._bp_bounds) * self._bp_mean,\n        qA=loguniform_rv(*self._qA_bounds) * self._qA_mean,\n        ioh=np.random.uniform(*self._ioh_bounds) if self._ioh_bounds else None,\n        psu_voltage_offset=(\n            {coil: np.random.uniform(*bounds)\n             for coil, bounds in self._psu_voltage_offset_bounds.items()}\n            if self._psu_voltage_offset_bounds else None))\n\n\ndef loguniform_rv(lower, upper):\n  \"\"\"Generate loguniform random variable between min and max.\"\"\"\n  if lower == upper:\n    return lower\n  assert lower < upper\n  return np.exp(np.random.uniform(np.log(lower), np.log(upper)))\n"
  },
  {
    "path": "fusion_tcv/ref_gen.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Generators for References vector.\"\"\"\n\nimport abc\nimport copy\nfrom typing import List, Optional\n\nimport dataclasses\n\nfrom fusion_tcv import named_array\nfrom fusion_tcv import shape as shape_lib\nfrom fusion_tcv import tcv_common\n\n\nclass AbstractReferenceGenerator(abc.ABC):\n  \"\"\"Abstract class for generating the reference signal.\"\"\"\n\n  @abc.abstractmethod\n  def reset(self) -> named_array.NamedArray:\n    \"\"\"Resets the class for a new episode and returns the first reference.\"\"\"\n\n  @abc.abstractmethod\n  def step(self) -> named_array.NamedArray:\n    \"\"\"Returns the reference signal.\"\"\"\n\n\n@dataclasses.dataclass\nclass LinearTransition:\n  reference: named_array.NamedArray  # Reference at which to end the transition.\n  transition_steps: int  # Number of intermediate steps between the shapes.\n  steady_steps: int  # Number of steps in the steady state.\n\n\nclass LinearTransitionReferenceGenerator(AbstractReferenceGenerator):\n  \"\"\"A base class for generating references that are a series of transitions.\"\"\"\n\n  def __init__(self, start_offset: int = 0):\n    self._last_ref = None\n    self._reset_counters()\n    self._start_offset = start_offset\n\n  @abc.abstractmethod\n  def _next_transition(self) -> LinearTransition:\n    \"\"\"Override this in the subclass.\"\"\"\n\n  def reset(self) -> named_array.NamedArray:\n    self._last_ref = None\n    self._reset_counters()\n    for _ in range(self._start_offset):\n      self.step()\n    return self.step()\n\n  def _reset_counters(self):\n    self._steady_step = 0\n    self._transition_step = 0\n    self._transition = None\n\n  def step(self) -> named_array.NamedArray:\n    if (self._transition is None or\n        self._steady_step == self._transition.steady_steps):\n      if self._transition is not None:\n        self._last_ref = self._transition.reference\n      self._reset_counters()\n      self._transition = self._next_transition()\n      # Ensure at least one steady step in middle transitions.\n      # If we would like this to not have to be true, we need to change the\n      # logic below which assumes there is at least one step in the steady\n      # phase.\n      assert self._transition.steady_steps > 0\n\n    assert self._transition is not None  # to make pytype happy\n    transition_steps = self._transition.transition_steps\n    if self._last_ref is None:  # No transition at beginning of episode.\n      transition_steps = 0\n\n    if self._transition_step < transition_steps:  # In transition phase.\n      self._transition_step += 1\n      a = self._transition_step / (self._transition.transition_steps + 1)  # pytype: disable=attribute-error\n      return self._last_ref.names.named_array(\n          self._last_ref.array * (1 - a) + self._transition.reference.array * a)  # pytype: disable=attribute-error\n    else:  # In steady phase.\n      self._steady_step += 1\n      return copy.deepcopy(self._transition.reference)\n\n\nclass FixedReferenceGenerator(LinearTransitionReferenceGenerator):\n  \"\"\"Generates linear transitions from a fixed set of references.\"\"\"\n\n  def __init__(self, transitions: List[LinearTransition],\n               start_offset: int = 0):\n    self._transitions = transitions\n    self._current_transition = 0\n    super().__init__(start_offset=start_offset)\n\n  def reset(self) -> named_array.NamedArray:\n    self._current_transition = 0\n    return super().reset()\n\n  def _next_transition(self) -> LinearTransition:\n    if self._current_transition == len(self._transitions):\n      # Have gone through all of the transitions. Return the final reference\n      # for a very long time.\n      return LinearTransition(steady_steps=50000, transition_steps=0,\n                              reference=self._transitions[-1].reference)\n    self._current_transition += 1\n    return copy.deepcopy(self._transitions[self._current_transition - 1])\n\n\n@dataclasses.dataclass\nclass TimedTransition:\n  steady_steps: int  # Number of steps to hold the shape.\n  transition_steps: int  # Number of steps to transition.\n\n\n@dataclasses.dataclass\nclass ParametrizedShapeTimedTarget:\n  \"\"\"RZIP condition with a timestep attached.\"\"\"\n  shape: shape_lib.Shape\n  timing: TimedTransition\n\n\nclass PresetShapePointsReferenceGenerator(FixedReferenceGenerator):\n  \"\"\"Generates a fixed set of shape points.\"\"\"\n\n  def __init__(\n      self, targets: List[ParametrizedShapeTimedTarget], start_offset: int = 0):\n    if targets[0].timing.transition_steps != 0:\n      raise ValueError(\"Invalid first timing, transition must be 0, not \"\n                       f\"{targets[0].timing.transition_steps}\")\n    transitions = []\n    for target in targets:\n      transitions.append(LinearTransition(\n          steady_steps=target.timing.steady_steps,\n          transition_steps=target.timing.transition_steps,\n          reference=target.shape.canonical().gen_references()))\n    super().__init__(transitions, start_offset=start_offset)\n\n\nclass ShapeFromShot(PresetShapePointsReferenceGenerator):\n  \"\"\"Generate shapes from EPFL references.\"\"\"\n\n  def __init__(\n      self, time_slices: List[shape_lib.ReferenceTimeSlice],\n      start: Optional[float] = None):\n    \"\"\"Given a series of time slices, start from time_slice.time==start.\"\"\"\n    if start is None:\n      start = time_slices[0].time\n    dt = 1e-4\n    targets = []\n    time_slices = shape_lib.canonicalize_reference_series(time_slices)\n    prev = None\n    for i, ref in enumerate(time_slices):\n      assert prev is None or prev.hold < ref.time\n      if ref.time < start:\n        continue\n      if prev is None and start != ref.time:\n        raise ValueError(\"start must be one of the time slice times.\")\n\n      steady = (max(1, int((ref.hold - ref.time) / dt))\n                if i < len(time_slices) - 1 else 100000)\n      transition = (0 if prev is None else\n                    (int((ref.time - prev.time) / dt) -\n                     max(1, int((prev.hold - prev.time) / dt))))\n\n      targets.append(ParametrizedShapeTimedTarget(\n          shape=ref.shape,\n          timing=TimedTransition(\n              steady_steps=steady, transition_steps=transition)))\n      prev = ref\n\n    assert targets\n    super().__init__(targets)\n\n\n@dataclasses.dataclass\nclass RZIpTarget:\n  r: float\n  z: float\n  ip: float\n\n\ndef make_symmetric_multidomain_rzip_reference(\n    target: RZIpTarget) -> named_array.NamedArray:\n  \"\"\"Generate multi-domain rzip references.\"\"\"\n  refs = tcv_common.REF_RANGES.new_named_array()\n  refs[\"R\"] = (target.r, target.r)\n  refs[\"Z\"] = (target.z, -target.z)\n  refs[\"Ip\"] = (target.ip, target.ip)\n  return refs\n\n"
  },
  {
    "path": "fusion_tcv/references.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"References used in the experiments.\"\"\"\n\nfrom fusion_tcv import ref_gen\nfrom fusion_tcv import shape\nfrom fusion_tcv import shapes_known\nfrom fusion_tcv import tcv_common\n\n# pylint: disable=bad-whitespace\n\n\n# Used in TCV#70915\ndef fundamental_capability() -> ref_gen.AbstractReferenceGenerator:\n  return ref_gen.ShapeFromShot([\n      # Start at the handover state and hold for ~50ms.\n      shape.ReferenceTimeSlice(\n          time=0.0872,\n          hold=0.15,\n          shape=shape.Shape(\n              ip=-110000,\n              params=shapes_known.SHAPE_70166_0872.params,\n              points=shapes_known.SHAPE_70166_0872.points,\n              limit_point=shapes_known.SHAPE_70166_0872.limit_point,\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      # Ramp the Ip over 50ms then hold for 50ms.\n      shape.ReferenceTimeSlice(\n          time=0.2,\n          hold=0.25,\n          shape=shape.Shape(\n              ip=-150000,\n              params=shape.ParametrizedShape(\n                  r0=0.8796,\n                  z0=0.2339,\n                  kappa=1.2441,\n                  delta=0.2567,\n                  radius=0.2390,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 20 points\n                  shape.Point( 0.6299,  0.1413),\n                  shape.Point( 0.6481,  0.0577),\n                  shape.Point( 0.6804, -0.0087),\n                  shape.Point( 0.7286, -0.0513),\n                  shape.Point( 0.7931, -0.0660),\n                  shape.Point( 0.8709, -0.0513),\n                  shape.Point( 0.9543, -0.0087),\n                  shape.Point( 1.0304,  0.0577),\n                  shape.Point( 1.0844,  0.1413),\n                  shape.Point( 1.1040,  0.2340),\n                  shape.Point( 1.0844,  0.3267),\n                  shape.Point( 1.0304,  0.4103),\n                  shape.Point( 0.9543,  0.4767),\n                  shape.Point( 0.8709,  0.5193),\n                  shape.Point( 0.7931,  0.5340),\n                  shape.Point( 0.7286,  0.5193),\n                  shape.Point( 0.6804,  0.4767),\n                  shape.Point( 0.6481,  0.4103),\n                  shape.Point( 0.6299,  0.3267),\n                  shape.Point( 0.6240,  0.2340),\n              ],\n              limit_point=shape.Point( 0.6240,  0.2340),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      # Transform the shape to the DM handover shape and hold for 50ms.\n      shape.ReferenceTimeSlice(\n          time=0.3,\n          hold=0.35,\n          shape=shape.Shape(\n              ip=-150000,\n              params=shape.ParametrizedShape(\n                  r0=0.8822,\n                  z0=0.2340,\n                  kappa=1.4396,\n                  delta=0.2760,\n                  radius=0.2388,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 20 points\n                  shape.Point( 0.6299,  0.1265),\n                  shape.Point( 0.6481,  0.0295),\n                  shape.Point( 0.6804, -0.0475),\n                  shape.Point( 0.7286, -0.0970),\n                  shape.Point( 0.7931, -0.1140),\n                  shape.Point( 0.8709, -0.0970),\n                  shape.Point( 0.9543, -0.0475),\n                  shape.Point( 1.0304,  0.0295),\n                  shape.Point( 1.0844,  0.1265),\n                  shape.Point( 1.1040,  0.2340),\n                  shape.Point( 1.0844,  0.3415),\n                  shape.Point( 1.0304,  0.4385),\n                  shape.Point( 0.9543,  0.5155),\n                  shape.Point( 0.8709,  0.5650),\n                  shape.Point( 0.7931,  0.5820),\n                  shape.Point( 0.7286,  0.5650),\n                  shape.Point( 0.6804,  0.5155),\n                  shape.Point( 0.6481,  0.4385),\n                  shape.Point( 0.6299,  0.3415),\n                  shape.Point( 0.6240,  0.2340),\n              ],\n              limit_point=shape.Point( 0.6240,  0.2340),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      # Shift down by 20cm and hold for 50ms.\n      shape.ReferenceTimeSlice(\n          time=0.4,\n          hold=0.45,\n          shape=shape.Shape(\n              ip=-150000,\n              params=shape.ParametrizedShape(\n                  r0=0.8822,\n                  z0=0.0340,\n                  kappa=1.4396,\n                  delta=0.2760,\n                  radius=0.2388,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 20 points\n                  shape.Point( 0.6299, -0.0735),\n                  shape.Point( 0.6481, -0.1705),\n                  shape.Point( 0.6804, -0.2475),\n                  shape.Point( 0.7286, -0.2970),\n                  shape.Point( 0.7931, -0.3140),\n                  shape.Point( 0.8709, -0.2970),\n                  shape.Point( 0.9543, -0.2475),\n                  shape.Point( 1.0304, -0.1705),\n                  shape.Point( 1.0844, -0.0735),\n                  shape.Point( 1.1040,  0.0340),\n                  shape.Point( 1.0844,  0.1415),\n                  shape.Point( 1.0304,  0.2385),\n                  shape.Point( 0.9543,  0.3155),\n                  shape.Point( 0.8709,  0.3650),\n                  shape.Point( 0.7931,  0.3820),\n                  shape.Point( 0.7286,  0.3650),\n                  shape.Point( 0.6804,  0.3155),\n                  shape.Point( 0.6481,  0.2385),\n                  shape.Point( 0.6299,  0.1415),\n                  shape.Point( 0.6240,  0.0340),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0340),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      # Add an X-point and allow to be ANY.\n      shape.ReferenceTimeSlice(\n          time=0.451,\n          shape=shape.Shape(\n              ip=-150000,\n              params=shape.ParametrizedShape(\n                  r0=0.8822,\n                  z0=0.0340,\n                  kappa=1.4396,\n                  delta=0.2760,\n                  radius=0.2388,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 20 points\n                  shape.Point( 0.6299, -0.0735),\n                  shape.Point( 0.6481, -0.1705),\n                  shape.Point( 0.6804, -0.2475),\n                  shape.Point( 0.7286, -0.2970),\n                  shape.Point( 0.7931, -0.3140),\n                  shape.Point( 0.8709, -0.2970),\n                  shape.Point( 0.9543, -0.2475),\n                  shape.Point( 1.0304, -0.1705),\n                  shape.Point( 1.0844, -0.0735),\n                  shape.Point( 1.1040,  0.0340),\n                  shape.Point( 1.0844,  0.1415),\n                  shape.Point( 1.0304,  0.2385),\n                  shape.Point( 0.9543,  0.3155),\n                  shape.Point( 0.8709,  0.3650),\n                  shape.Point( 0.7931,  0.3820),\n                  shape.Point( 0.7286,  0.3650),\n                  shape.Point( 0.6804,  0.3155),\n                  shape.Point( 0.6481,  0.2385),\n                  shape.Point( 0.6299,  0.1415),\n                  shape.Point( 0.6240,  0.0340),\n              ],\n              x_points=[shape.Point( 0.6240, -0.7)],\n              diverted=shape.Diverted.ANY,\n          ),\n      ),\n      # Make diverted and hold for 350ms.\n      shape.ReferenceTimeSlice(\n          time=0.50,\n          hold=0.85,\n          shape=shape.Shape(  # based on 70519 @ 0.840\n              ip=-150000,\n              params=shape.ParametrizedShape(\n                  r0=0.8618,\n                  z0=0.0130,\n                  kappa=1.5585,\n                  delta=0.3175,\n                  radius=0.232,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[\n                  shape.Point(0.8286, -0.3612),\n                  shape.Point(0.7722, -0.3807),\n                  shape.Point(0.7512, -0.3375),\n                  shape.Point(0.7246, -0.2900),\n                  shape.Point(0.6995, -0.2425),\n                  shape.Point(0.6783, -0.1950),\n                  shape.Point(0.6627, -0.1475),\n                  shape.Point(0.6531, -0.1000),\n                  shape.Point(0.6469, -0.0288),\n                  shape.Point(0.6461, 0.0425),\n                  shape.Point(0.6509, 0.1137),\n                  shape.Point(0.6594, 0.1612),\n                  shape.Point(0.6738, 0.2087),\n                  shape.Point(0.6970, 0.2562),\n                  shape.Point(0.7327, 0.2991),\n                  shape.Point(0.7722, 0.3243),\n                  shape.Point(0.8117, 0.3348),\n                  shape.Point(0.8709, 0.3290),\n                  shape.Point(0.9104, 0.3143),\n                  shape.Point(0.9499, 0.2912),\n                  shape.Point(0.9893, 0.2597),\n                  shape.Point(1.0164, 0.2325),\n                  shape.Point(1.0486, 0.1932),\n                  shape.Point(1.0696, 0.1612),\n                  shape.Point(1.0938, 0.1137),\n                  shape.Point(1.1084, 0.0662),\n                  shape.Point(1.1078, -0.0050),\n                  shape.Point(1.0937, -0.0525),\n                  shape.Point(1.0721, -0.1000),\n                  shape.Point(1.0486, -0.1416),\n                  shape.Point(1.0288, -0.1720),\n                  shape.Point(0.9935, -0.2187),\n                  shape.Point(0.9696, -0.2464),\n                  shape.Point(0.9301, -0.2856),\n                  shape.Point(0.8961, -0.3137),\n                  shape.Point(0.8641, -0.3375),\n              ],\n              x_points=[shape.Point(0.7722, -0.3807)],\n              limit_point=shape.Point(0.7722, -0.3807),\n              diverted=shape.Diverted.DIVERTED,\n          ),\n      ),\n      # Remove the X-point and let be ANY.\n      shape.ReferenceTimeSlice(  # based on 70519 @ 0.840\n          time=0.851,\n          shape=shape.Shape(\n              ip=-150000,\n              params=shape.ParametrizedShape(\n                  r0=0.8618,\n                  z0=0.0130,\n                  kappa=1.5585,\n                  delta=0.3175,\n                  radius=0.232,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[\n                  shape.Point(0.8286, -0.3612),\n                  shape.Point(0.7722, -0.3807),\n                  shape.Point(0.7512, -0.3375),\n                  shape.Point(0.7246, -0.2900),\n                  shape.Point(0.6995, -0.2425),\n                  shape.Point(0.6783, -0.1950),\n                  shape.Point(0.6627, -0.1475),\n                  shape.Point(0.6531, -0.1000),\n                  shape.Point(0.6469, -0.0288),\n                  shape.Point(0.6461, 0.0425),\n                  shape.Point(0.6509, 0.1137),\n                  shape.Point(0.6594, 0.1612),\n                  shape.Point(0.6738, 0.2087),\n                  shape.Point(0.6970, 0.2562),\n                  shape.Point(0.7327, 0.2991),\n                  shape.Point(0.7722, 0.3243),\n                  shape.Point(0.8117, 0.3348),\n                  shape.Point(0.8709, 0.3290),\n                  shape.Point(0.9104, 0.3143),\n                  shape.Point(0.9499, 0.2912),\n                  shape.Point(0.9893, 0.2597),\n                  shape.Point(1.0164, 0.2325),\n                  shape.Point(1.0486, 0.1932),\n                  shape.Point(1.0696, 0.1612),\n                  shape.Point(1.0938, 0.1137),\n                  shape.Point(1.1084, 0.0662),\n                  shape.Point(1.1078, -0.0050),\n                  shape.Point(1.0937, -0.0525),\n                  shape.Point(1.0721, -0.1000),\n                  shape.Point(1.0486, -0.1416),\n                  shape.Point(1.0288, -0.1720),\n                  shape.Point(0.9935, -0.2187),\n                  shape.Point(0.9696, -0.2464),\n                  shape.Point(0.9301, -0.2856),\n                  shape.Point(0.8961, -0.3137),\n                  shape.Point(0.8641, -0.3375),\n              ],\n              diverted=shape.Diverted.ANY,\n          ),\n      ),\n      # Shift back to round shape.\n      shape.ReferenceTimeSlice(\n          time=0.90,\n          shape=shape.Shape(\n              ip=-150000,\n              params=shapes_known.SHAPE_70166_0872.params,\n              points=shapes_known.SHAPE_70166_0872.points,\n              limit_point=shapes_known.SHAPE_70166_0872.limit_point,\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      # Ramp the Ip down.\n      shape.ReferenceTimeSlice(\n          time=1.00,\n          shape=shape.Shape(\n              ip=-70000,\n              params=shapes_known.SHAPE_70166_0872.params,\n              points=shapes_known.SHAPE_70166_0872.points,\n              limit_point=shapes_known.SHAPE_70166_0872.limit_point,\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n  ])\n\n\n# Used in TCV#70920\ndef elongation() -> ref_gen.AbstractReferenceGenerator:\n  return ref_gen.ShapeFromShot([\n      shape.ReferenceTimeSlice(\n          time=0.45,\n          hold=0.475,\n          shape=shape.Shape(\n              params=shapes_known.SHAPE_70166_0450.params,\n              diverted=shapes_known.SHAPE_70166_0450.diverted,\n              limit_point=shape.Point(tcv_common.INNER_LIMITER_R, 0.25),\n              ip=shapes_known.SHAPE_70166_0450.ip)\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.55,\n          shape=shape.Shape(\n              params=shape.ParametrizedShape(\n                  r0=0.875, z0=0.2, kappa=1.9, delta=0.3, radius=0.235,\n                  lambda_=0, side=shape.ShapeSide.LEFT),\n              ip=-190000,\n              limit_point=shape.Point(tcv_common.INNER_LIMITER_R, 0.2),\n              diverted=shape.Diverted.LIMITED)\n      ),\n  ])\n\n\n# Used in TCV#70457\ndef negative_triangularity() -> ref_gen.AbstractReferenceGenerator:\n  return ref_gen.ShapeFromShot([\n      shape.ReferenceTimeSlice(\n          time=0.45,\n          shape=shape.Shape(\n              ip=-120000,\n              params=shape.ParametrizedShape(\n                  r0=0.89, z0=0.15, kappa=1.4, delta=-0.8, radius=0.25,\n                  lambda_=0, side=shape.ShapeSide.LEFT),\n              x_points=[\n                  shape.Point(tcv_common.OUTER_LIMITER_R - 0.03, 0.50),\n                  shape.Point(tcv_common.OUTER_LIMITER_R - 0.03, -0.2),\n              ],\n              diverted=shape.Diverted.DIVERTED,\n          ),\n      ),\n  ])\n\n\n# Used in TCV#70755\ndef snowflake() -> ref_gen.AbstractReferenceGenerator:\n  return ref_gen.ShapeFromShot([\n      shape.ReferenceTimeSlice(\n          time=0.0872,\n          shape=shape.Shape(\n              ip=-110000,\n              params=shapes_known.SHAPE_70166_0872.params,\n              points=shapes_known.SHAPE_70166_0872.points,\n              limit_point=shapes_known.SHAPE_70166_0872.limit_point,\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.15,  # 0.2680,\n          shape=shape.Shape(\n              ip=-120000,\n              params=shape.ParametrizedShape(\n                  r0=0.8713,\n                  z0=0.0662,\n                  kappa=1.6059,\n                  delta=0.3814,\n                  radius=0.2378,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 13 points\n                  shape.Point( 0.6270,  0.0660),\n                  shape.Point( 0.6290, -0.0840),\n                  shape.Point( 0.6530, -0.2170),\n                  shape.Point( 0.7500, -0.3114),\n                  shape.Point( 0.9260, -0.2270),\n                  shape.Point( 1.0530, -0.0930),\n                  shape.Point( 1.1020,  0.0660),\n                  shape.Point( 1.0530,  0.2250),\n                  shape.Point( 0.9460,  0.3590),\n                  shape.Point( 0.8100,  0.4340),\n                  shape.Point( 0.7000,  0.4240),\n                  shape.Point( 0.6500,  0.3490),\n                  shape.Point( 0.6290,  0.2160),\n              ],\n              x_points=[\n                  shape.Point( 0.7000, -0.4700),\n              ],\n              diverted=shape.Diverted.ANY,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.2,  # 0.4280,\n          shape=shape.Shape(\n              ip=-120000,\n              params=shape.ParametrizedShape(\n                  r0=0.8884,\n                  z0=0.0319,\n                  kappa=1.6229,\n                  delta=0.3875,\n                  radius=0.2261,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 13 points\n                  shape.Point( 0.6550,  0.0080),\n                  shape.Point( 0.6650, -0.1260),\n                  shape.Point( 0.6840, -0.2600),\n                  shape.Point( 0.7600, -0.3750),\n                  shape.Point( 0.9400, -0.2790),\n                  shape.Point( 1.0500, -0.1450),\n                  shape.Point( 1.1060,  0.0080),\n                  shape.Point( 1.0760,  0.1620),\n                  shape.Point( 0.9780,  0.2960),\n                  shape.Point( 0.8410,  0.3530),\n                  shape.Point( 0.7300,  0.3380),\n                  shape.Point( 0.6750,  0.2670),\n                  shape.Point( 0.6550,  0.1430),\n              ],\n              x_points=[\n                  shape.Point( 0.7600, -0.3750),\n              ],\n              limit_point=shape.Point( 0.7600, -0.3750),\n              diverted=shape.Diverted.DIVERTED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.25,  # 0.5000,\n          shape=shape.Shape(\n              ip=-120000,\n              params=shape.ParametrizedShape(\n                  r0=0.8886,\n                  z0=0.0044,\n                  kappa=1.5419,\n                  delta=0.2430,\n                  radius=0.2137,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 14 points\n                  shape.Point( 0.6780, -0.1200),\n                  shape.Point( 0.7200, -0.2360),\n                  shape.Point( 0.7840, -0.3754),\n                  shape.Point( 0.9090, -0.3040),\n                  shape.Point( 1.0040, -0.2110),\n                  shape.Point( 1.0660, -0.1110),\n                  shape.Point( 1.0950, -0.0030),\n                  shape.Point( 1.0800,  0.1070),\n                  shape.Point( 1.0210,  0.2070),\n                  shape.Point( 0.9250,  0.2740),\n                  shape.Point( 0.8090,  0.2730),\n                  shape.Point( 0.7170,  0.2040),\n                  shape.Point( 0.6660,  0.1010),\n                  shape.Point( 0.6570, -0.0100),\n              ],\n              x_points=[\n                  shape.Point( 0.7840, -0.3754),\n                  shape.Point( 0.8600, -0.7500),\n              ],\n              legs=[\n                  shape.Point( 0.8220, -0.5627),\n              ],\n              limit_point=shape.Point( 0.7840, -0.3754),\n              diverted=shape.Diverted.DIVERTED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.4,  # 0.6000,\n          hold=0.8,\n          shape=shape.Shape(\n              ip=-120000,\n              params=shape.ParametrizedShape(\n                  r0=0.8886,\n                  z0=0.0044,\n                  kappa=1.5419,\n                  delta=0.2430,\n                  radius=0.2137,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 14 points\n                  shape.Point( 0.6780, -0.1200),\n                  shape.Point( 0.7200, -0.2360),\n                  shape.Point( 0.7840, -0.3754),\n                  shape.Point( 0.9090, -0.3040),\n                  shape.Point( 1.0040, -0.2110),\n                  shape.Point( 1.0660, -0.1110),\n                  shape.Point( 1.0950, -0.0030),\n                  shape.Point( 1.0800,  0.1070),\n                  shape.Point( 1.0210,  0.2070),\n                  shape.Point( 0.9250,  0.2740),\n                  shape.Point( 0.8090,  0.2730),\n                  shape.Point( 0.7170,  0.2040),\n                  shape.Point( 0.6660,  0.1010),\n                  shape.Point( 0.6570, -0.0100),\n              ],\n              x_points=[\n                  shape.Point( 0.7840, -0.3754),\n                  shape.Point( 0.8028, -0.4153),\n              ],\n              legs=[\n                  shape.Point( 0.7934, -0.3953),\n              ],\n              limit_point=shape.Point( 0.7840, -0.3754),\n              diverted=shape.Diverted.DIVERTED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.9,  # 0.5000,\n          shape=shape.Shape(\n              ip=-120000,\n              params=shape.ParametrizedShape(\n                  r0=0.8886,\n                  z0=0.0044,\n                  kappa=1.5419,\n                  delta=0.2430,\n                  radius=0.2137,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 14 points\n                  shape.Point( 0.6780, -0.1200),\n                  shape.Point( 0.7200, -0.2360),\n                  shape.Point( 0.7840, -0.3754),\n                  shape.Point( 0.9090, -0.3040),\n                  shape.Point( 1.0040, -0.2110),\n                  shape.Point( 1.0660, -0.1110),\n                  shape.Point( 1.0950, -0.0030),\n                  shape.Point( 1.0800,  0.1070),\n                  shape.Point( 1.0210,  0.2070),\n                  shape.Point( 0.9250,  0.2740),\n                  shape.Point( 0.8090,  0.2730),\n                  shape.Point( 0.7170,  0.2040),\n                  shape.Point( 0.6660,  0.1010),\n                  shape.Point( 0.6570, -0.0100),\n              ],\n              x_points=[\n                  shape.Point( 0.7840, -0.3754),\n                  shape.Point( 0.8600, -0.7500),\n              ],\n              legs=[\n                  shape.Point( 0.8220, -0.5627),\n              ],\n              limit_point=shape.Point( 0.7840, -0.3754),\n              diverted=shape.Diverted.DIVERTED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.95,  # 0.4280,\n          shape=shape.Shape(\n              ip=-120000,\n              params=shape.ParametrizedShape(\n                  r0=0.8884,\n                  z0=0.0319,\n                  kappa=1.6229,\n                  delta=0.3875,\n                  radius=0.2261,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 13 points\n                  shape.Point( 0.6550,  0.0080),\n                  shape.Point( 0.6650, -0.1260),\n                  shape.Point( 0.6840, -0.2600),\n                  shape.Point( 0.7600, -0.3750),\n                  shape.Point( 0.9400, -0.2790),\n                  shape.Point( 1.0500, -0.1450),\n                  shape.Point( 1.1060,  0.0080),\n                  shape.Point( 1.0760,  0.1620),\n                  shape.Point( 0.9780,  0.2960),\n                  shape.Point( 0.8410,  0.3530),\n                  shape.Point( 0.7300,  0.3380),\n                  shape.Point( 0.6750,  0.2670),\n                  shape.Point( 0.6550,  0.1430),\n              ],\n              x_points=[\n                  shape.Point( 0.7600, -0.3750),\n              ],\n              diverted=shape.Diverted.ANY,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=1.0,  # 0.2680,\n          shape=shape.Shape(\n              ip=-120000,\n              params=shape.ParametrizedShape(\n                  r0=0.8713,\n                  z0=0.0662,\n                  kappa=1.6059,\n                  delta=0.3814,\n                  radius=0.2378,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 13 points\n                  shape.Point( 0.6270,  0.0660),\n                  shape.Point( 0.6290, -0.0840),\n                  shape.Point( 0.6530, -0.2170),\n                  shape.Point( 0.7500, -0.3114),\n                  shape.Point( 0.9260, -0.2270),\n                  shape.Point( 1.0530, -0.0930),\n                  shape.Point( 1.1020,  0.0660),\n                  shape.Point( 1.0530,  0.2250),\n                  shape.Point( 0.9460,  0.3590),\n                  shape.Point( 0.8100,  0.4340),\n                  shape.Point( 0.7000,  0.4240),\n                  shape.Point( 0.6500,  0.3490),\n                  shape.Point( 0.6290,  0.2160),\n              ],\n              x_points=[\n                  shape.Point( 0.7000, -0.4700),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0660),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=1.05,  # 0.0872,\n          shape=shape.Shape(\n              ip=-70000,\n              params=shape.ParametrizedShape(\n                  r0=0.8703,\n                  z0=0.0547,\n                  kappa=1.2459,\n                  delta=0.2431,\n                  radius=0.2395,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 20 points\n                  shape.Point( 0.6299, -0.0377),\n                  shape.Point( 0.6481, -0.1213),\n                  shape.Point( 0.6804, -0.1877),\n                  shape.Point( 0.7286, -0.2303),\n                  shape.Point( 0.7931, -0.2450),\n                  shape.Point( 0.8709, -0.2303),\n                  shape.Point( 0.9543, -0.1877),\n                  shape.Point( 1.0304, -0.1213),\n                  shape.Point( 1.0844, -0.0377),\n                  shape.Point( 1.1040,  0.0550),\n                  shape.Point( 1.0844,  0.1477),\n                  shape.Point( 1.0304,  0.2313),\n                  shape.Point( 0.9543,  0.2977),\n                  shape.Point( 0.8709,  0.3403),\n                  shape.Point( 0.7931,  0.3550),\n                  shape.Point( 0.7286,  0.3403),\n                  shape.Point( 0.6804,  0.2977),\n                  shape.Point( 0.6481,  0.2313),\n                  shape.Point( 0.6299,  0.1477),\n                  shape.Point( 0.6240,  0.0550),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0550),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n  ])\n\n\n# Used in TCV#70600\ndef iter() -> ref_gen.AbstractReferenceGenerator:  # pylint: disable=redefined-builtin\n  return ref_gen.ShapeFromShot([\n      # Taken from TCV#70392.\n      shape.ReferenceTimeSlice(\n          time=0.0872,\n          shape=shape.Shape(\n              ip=-135000,\n              params=shape.ParametrizedShape(\n                  r0=0.8831,\n                  z0=0.0501,\n                  kappa=1.2500,\n                  delta=0.1083,\n                  radius=0.2400,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 20 points\n                  shape.Point( 0.6330, -0.0427),\n                  shape.Point( 0.6596, -0.1263),\n                  shape.Point( 0.7033, -0.1927),\n                  shape.Point( 0.7623, -0.2353),\n                  shape.Point( 0.8329, -0.2500),\n                  shape.Point( 0.9094, -0.2353),\n                  shape.Point( 0.9839, -0.1927),\n                  shape.Point( 1.0468, -0.1263),\n                  shape.Point( 1.0891, -0.0427),\n                  shape.Point( 1.1040,  0.0500),\n                  shape.Point( 1.0891,  0.1427),\n                  shape.Point( 1.0468,  0.2263),\n                  shape.Point( 0.9839,  0.2927),\n                  shape.Point( 0.9094,  0.3353),\n                  shape.Point( 0.8329,  0.3500),\n                  shape.Point( 0.7623,  0.3353),\n                  shape.Point( 0.7033,  0.2927),\n                  shape.Point( 0.6596,  0.2263),\n                  shape.Point( 0.6330,  0.1427),\n                  shape.Point( 0.6240,  0.0500),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0500),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.1328,\n          shape=shape.Shape(\n              ip=-140000,\n              params=shape.ParametrizedShape(\n                  r0=0.8885,\n                  z0=0.0503,\n                  kappa=1.4887,\n                  delta=0.2421,\n                  radius=0.2448,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 20 points\n                  shape.Point( 0.6305, -0.0636),\n                  shape.Point( 0.6505, -0.1660),\n                  shape.Point( 0.6855, -0.2473),\n                  shape.Point( 0.7366, -0.2995),\n                  shape.Point( 0.8037, -0.3175),\n                  shape.Point( 0.8830, -0.2995),\n                  shape.Point( 0.9666, -0.2473),\n                  shape.Point( 1.0420, -0.1660),\n                  shape.Point( 1.0949, -0.0636),\n                  shape.Point( 1.1140,  0.0500),\n                  shape.Point( 1.0949,  0.1636),\n                  shape.Point( 1.0420,  0.2660),\n                  shape.Point( 0.9666,  0.3473),\n                  shape.Point( 0.8830,  0.3995),\n                  shape.Point( 0.8037,  0.4175),\n                  shape.Point( 0.7366,  0.3995),\n                  shape.Point( 0.6855,  0.3473),\n                  shape.Point( 0.6505,  0.2660),\n                  shape.Point( 0.6305,  0.1636),\n                  shape.Point( 0.6240,  0.0500),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0500),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.1880,\n          shape=shape.Shape(\n              ip=-140000,\n              params=shape.ParametrizedShape(\n                  r0=0.8858,\n                  z0=0.0502,\n                  kappa=1.4899,\n                  delta=0.3813,\n                  radius=0.2443,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 20 points\n                  shape.Point( 0.6284, -0.0636),\n                  shape.Point( 0.6427, -0.1660),\n                  shape.Point( 0.6694, -0.2473),\n                  shape.Point( 0.7122, -0.2995),\n                  shape.Point( 0.7736, -0.3175),\n                  shape.Point( 0.8528, -0.2995),\n                  shape.Point( 0.9425, -0.2473),\n                  shape.Point( 1.0282, -0.1660),\n                  shape.Point( 1.0909, -0.0636),\n                  shape.Point( 1.1140,  0.0500),\n                  shape.Point( 1.0909,  0.1636),\n                  shape.Point( 1.0282,  0.2660),\n                  shape.Point( 0.9425,  0.3473),\n                  shape.Point( 0.8528,  0.3995),\n                  shape.Point( 0.7736,  0.4175),\n                  shape.Point( 0.7122,  0.3995),\n                  shape.Point( 0.6694,  0.3473),\n                  shape.Point( 0.6427,  0.2660),\n                  shape.Point( 0.6284,  0.1636),\n                  shape.Point( 0.6240,  0.0500),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0500),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.2280,\n          shape=shape.Shape(\n              ip=-140000,\n              params=shape.ParametrizedShape(\n                  r0=0.8820,\n                  z0=0.0501,\n                  kappa=1.4817,\n                  delta=0.4028,\n                  radius=0.2386,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 14 points\n                  shape.Point( 0.6317, -0.1062),\n                  shape.Point( 0.6589, -0.2315),\n                  shape.Point( 0.7163, -0.3010),\n                  shape.Point( 0.8130, -0.3010),\n                  shape.Point( 0.9398, -0.2315),\n                  shape.Point( 1.0559, -0.1062),\n                  shape.Point( 1.1040,  0.0500),\n                  shape.Point( 1.0559,  0.2062),\n                  shape.Point( 0.9398,  0.3315),\n                  shape.Point( 0.8130,  0.4010),\n                  shape.Point( 0.7163,  0.4010),\n                  shape.Point( 0.6589,  0.3315),\n                  shape.Point( 0.6317,  0.2062),\n                  shape.Point( 0.6240,  0.0500),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0500),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.2680,\n          shape=shape.Shape(\n              ip=-140000,\n              params=shape.ParametrizedShape(\n                  r0=0.8780,\n                  z0=0.0664,\n                  kappa=1.6140,\n                  delta=0.3943,\n                  radius=0.2376,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 13 points\n                  shape.Point( 0.6270,  0.0660),\n                  shape.Point( 0.6290, -0.0840),\n                  shape.Point( 0.6530, -0.2170),\n                  shape.Point( 0.7500, -0.3114),\n                  shape.Point( 0.9260, -0.2270),\n                  shape.Point( 1.0530, -0.0930),\n                  shape.Point( 1.1020,  0.0660),\n                  shape.Point( 1.0530,  0.2250),\n                  shape.Point( 0.9460,  0.3590),\n                  shape.Point( 0.8100,  0.4340),\n                  shape.Point( 0.7000,  0.4240),\n                  shape.Point( 0.6500,  0.3490),\n                  shape.Point( 0.6290,  0.2160),\n              ],\n              x_points=[\n                  shape.Point( 0.7000, -0.4700),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0660),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.3080,\n          shape=shape.Shape(\n              ip=-140000,\n              params=shape.ParametrizedShape(\n                  r0=0.8670,\n                  z0=0.0394,\n                  kappa=1.5594,\n                  delta=0.2588,\n                  radius=0.2252,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 13 points\n                  shape.Point( 0.6250,  0.0404),\n                  shape.Point( 0.6250, -0.0868),\n                  shape.Point( 0.6550, -0.2151),\n                  shape.Point( 0.7500, -0.3244),\n                  shape.Point( 0.9290, -0.2331),\n                  shape.Point( 1.0460, -0.1058),\n                  shape.Point( 1.0760,  0.0404),\n                  shape.Point( 1.0460,  0.1867),\n                  shape.Point( 0.9480,  0.3141),\n                  shape.Point( 0.8110,  0.3777),\n                  shape.Point( 0.7000,  0.3692),\n                  shape.Point( 0.6450,  0.2960),\n                  shape.Point( 0.6250,  0.1677),\n              ],\n              x_points=[\n                  shape.Point( 0.7200, -0.4355),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0404),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.3480,\n          shape=shape.Shape(\n              ip=-140000,\n              params=shape.ParametrizedShape(\n                  r0=0.8771,\n                  z0=0.0286,\n                  kappa=1.6824,\n                  delta=0.4348,\n                  radius=0.2310,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 13 points\n                  shape.Point( 0.6350,  0.0263),\n                  shape.Point( 0.6350, -0.1045),\n                  shape.Point( 0.6550, -0.2344),\n                  shape.Point( 0.7400, -0.3462),\n                  shape.Point( 0.9390, -0.2528),\n                  shape.Point( 1.0560, -0.1229),\n                  shape.Point( 1.0860,  0.0263),\n                  shape.Point( 1.0560,  0.1745),\n                  shape.Point( 0.9580,  0.3054),\n                  shape.Point( 0.8210,  0.3703),\n                  shape.Point( 0.7100,  0.3606),\n                  shape.Point( 0.6550,  0.2860),\n                  shape.Point( 0.6350,  0.1561),\n              ],\n              x_points=[\n                  shape.Point( 0.7300, -0.3943),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0260),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.3880,\n          shape=shape.Shape(\n              ip=-140000,\n              params=shape.ParametrizedShape(\n                  r0=0.8878,\n                  z0=0.0130,\n                  kappa=1.6511,\n                  delta=0.4385,\n                  radius=0.2291,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 13 points\n                  shape.Point( 0.6450,  0.0060),\n                  shape.Point( 0.6500, -0.1230),\n                  shape.Point( 0.6650, -0.2540),\n                  shape.Point( 0.7500, -0.3660),\n                  shape.Point( 0.9490, -0.2730),\n                  shape.Point( 1.0660, -0.1420),\n                  shape.Point( 1.0960,  0.0060),\n                  shape.Point( 1.0660,  0.1560),\n                  shape.Point( 0.9680,  0.2860),\n                  shape.Point( 0.8310,  0.3510),\n                  shape.Point( 0.7200,  0.3430),\n                  shape.Point( 0.6650,  0.2680),\n                  shape.Point( 0.6450,  0.1370),\n              ],\n              x_points=[\n                  shape.Point( 0.7400, -0.3960),\n              ],\n              diverted=shape.Diverted.ANY,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.5000,\n          shape=shape.Shape(\n              ip=-175000,\n              params=shape.ParametrizedShape(\n                  r0=0.9069,\n                  z0=0.0099,\n                  kappa=1.6399,\n                  delta=0.4400,\n                  radius=0.2255,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 13 points\n                  shape.Point( 0.6690, -0.1340),\n                  shape.Point( 0.6880, -0.2690),\n                  shape.Point( 0.7377, -0.3840),\n                  shape.Point( 0.8150, -0.3650),\n                  shape.Point( 0.9600, -0.2880),\n                  shape.Point( 1.0760, -0.1540),\n                  shape.Point( 1.1060,  0.0000),\n                  shape.Point( 1.0760,  0.1540),\n                  shape.Point( 0.9790,  0.2880),\n                  shape.Point( 0.8440,  0.3550),\n                  shape.Point( 0.6890,  0.2690),\n                  shape.Point( 0.6600,  0.1340),\n                  shape.Point( 0.6600,  0.0000),\n              ],\n              x_points=[\n                  shape.Point( 0.7377, -0.3840),\n              ],\n              legs=[\n                  shape.Point( 0.7930, -0.5700),\n              ],\n              limit_point=shape.Point( 0.7377, -0.3840),\n              diverted=shape.Diverted.DIVERTED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.6200,\n          shape=shape.Shape(\n              ip=-200000,\n              params=shape.ParametrizedShape(\n                  r0=0.9044,\n                  z0=0.0142,\n                  kappa=1.7484,\n                  delta=0.4440,\n                  radius=0.2257,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 13 points\n                  shape.Point( 0.6690, -0.1490),\n                  shape.Point( 0.7080, -0.2840),  # concave: 181.6 degrees\n                  shape.Point( 0.7377, -0.3990),\n                  shape.Point( 0.8150, -0.3800),\n                  shape.Point( 0.9600, -0.3030),\n                  shape.Point( 1.0760, -0.1690),\n                  shape.Point( 1.1060, -0.0066),\n                  shape.Point( 1.0760,  0.1659),\n                  shape.Point( 0.9790,  0.3160),\n                  shape.Point( 0.8440,  0.3910),\n                  shape.Point( 0.6890,  0.2947),\n                  shape.Point( 0.6600,  0.1435),\n                  shape.Point( 0.6600, -0.0066),\n              ],\n              x_points=[\n                  shape.Point( 0.7377, -0.3990),\n              ],\n              legs=[\n                  shape.Point( 0.7930, -0.5850),\n              ],\n              limit_point=shape.Point( 0.7377, -0.3990),\n              diverted=shape.Diverted.DIVERTED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.9000,\n          shape=shape.Shape(\n              ip=-240000,\n              params=shape.ParametrizedShape(\n                  r0=0.9010,\n                  z0=0.0152,\n                  kappa=1.7482,\n                  delta=0.4427,\n                  radius=0.2257,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 13 points\n                  shape.Point( 0.6690, -0.1490),\n                  shape.Point( 0.7080, -0.2840),  # concave: 181.6 degrees\n                  shape.Point( 0.7377, -0.3990),\n                  shape.Point( 0.8150, -0.3800),\n                  shape.Point( 0.9600, -0.3030),\n                  shape.Point( 1.0760, -0.1690),\n                  shape.Point( 1.1060, -0.0066),\n                  shape.Point( 1.0760,  0.1659),\n                  shape.Point( 0.9790,  0.3160),\n                  shape.Point( 0.8440,  0.3910),\n                  shape.Point( 0.6890,  0.2947),\n                  shape.Point( 0.6600,  0.1435),\n                  shape.Point( 0.6600, -0.0066),\n              ],\n              x_points=[\n                  shape.Point( 0.7377, -0.3990),\n              ],\n              legs=[\n                  shape.Point( 0.7930, -0.5850),\n              ],\n              limit_point=shape.Point( 0.7377, -0.3990),\n              diverted=shape.Diverted.DIVERTED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=0.9500,\n          shape=shape.Shape(\n              ip=-245000,\n              params=shape.ParametrizedShape(\n                  r0=0.8985,\n                  z0=0.0173,\n                  kappa=1.7213,\n                  delta=0.4905,\n                  radius=0.2261,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 14 points\n                  shape.Point( 0.6690, -0.1490),\n                  shape.Point( 0.7200, -0.2840),\n                  shape.Point( 0.7600, -0.3890),\n                  shape.Point( 0.8500, -0.3700),\n                  shape.Point( 0.9600, -0.2850),\n                  shape.Point( 1.0760, -0.1590),\n                  shape.Point( 1.1060,  0.0030),\n                  shape.Point( 1.0660,  0.1760),\n                  shape.Point( 1.0000,  0.2650),\n                  shape.Point( 0.9200,  0.3360),\n                  shape.Point( 0.7500,  0.3850),\n                  shape.Point( 0.6650,  0.2850),\n                  shape.Point( 0.6600,  0.1430),\n                  shape.Point( 0.6600, -0.0070),\n              ],\n              x_points=[\n                  shape.Point( 0.7600, -0.3890),\n              ],\n              legs=[\n                  shape.Point( 0.8430, -0.5850),\n              ],\n              limit_point=shape.Point( 0.7600, -0.3890),\n              diverted=shape.Diverted.DIVERTED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=1.1500,\n          shape=shape.Shape(\n              ip=-260000,\n              params=shape.ParametrizedShape(\n                  r0=0.8970,\n                  z0=0.0180,\n                  kappa=1.7142,\n                  delta=0.4877,\n                  radius=0.2262,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 14 points\n                  shape.Point( 0.6690, -0.1490),\n                  shape.Point( 0.7200, -0.2840),\n                  shape.Point( 0.7600, -0.3890),\n                  shape.Point( 0.8500, -0.3700),\n                  shape.Point( 0.9600, -0.2850),\n                  shape.Point( 1.0760, -0.1590),\n                  shape.Point( 1.1060,  0.0030),\n                  shape.Point( 1.0660,  0.1760),\n                  shape.Point( 1.0000,  0.2650),\n                  shape.Point( 0.9200,  0.3360),\n                  shape.Point( 0.7500,  0.3850),\n                  shape.Point( 0.6650,  0.2850),\n                  shape.Point( 0.6600,  0.1430),\n                  shape.Point( 0.6600, -0.0070),\n              ],\n              x_points=[\n                  shape.Point( 0.7600, -0.3890),\n              ],\n              legs=[\n                  shape.Point( 0.8430, -0.5850),\n              ],\n              limit_point=shape.Point( 0.7600, -0.3890),\n              diverted=shape.Diverted.DIVERTED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=1.4500,\n          shape=shape.Shape(\n              ip=-280000,\n              params=shape.ParametrizedShape(\n                  r0=0.8955,\n                  z0=0.0186,\n                  kappa=1.7143,\n                  delta=0.4841,\n                  radius=0.2262,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 14 points\n                  shape.Point( 0.6690, -0.1490),\n                  shape.Point( 0.7200, -0.2840),\n                  shape.Point( 0.7600, -0.3890),\n                  shape.Point( 0.8500, -0.3700),\n                  shape.Point( 0.9600, -0.2850),\n                  shape.Point( 1.0760, -0.1590),\n                  shape.Point( 1.1060,  0.0030),\n                  shape.Point( 1.0660,  0.1760),\n                  shape.Point( 1.0000,  0.2650),\n                  shape.Point( 0.9200,  0.3360),\n                  shape.Point( 0.7500,  0.3850),\n                  shape.Point( 0.6650,  0.2850),\n                  shape.Point( 0.6600,  0.1430),\n                  shape.Point( 0.6600, -0.0070),\n              ],\n              x_points=[\n                  shape.Point( 0.7600, -0.3890),\n              ],\n              legs=[\n                  shape.Point( 0.8430, -0.5850),\n              ],\n              limit_point=shape.Point( 0.7600, -0.3890),\n              diverted=shape.Diverted.DIVERTED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=1.7000,\n          shape=shape.Shape(\n              ip=-280000,\n              params=shape.ParametrizedShape(\n                  r0=0.8955,\n                  z0=0.0186,\n                  kappa=1.7143,\n                  delta=0.4841,\n                  radius=0.2262,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 14 points\n                  shape.Point( 0.6690, -0.1490),\n                  shape.Point( 0.7200, -0.2840),\n                  shape.Point( 0.7600, -0.3890),\n                  shape.Point( 0.8500, -0.3700),\n                  shape.Point( 0.9600, -0.2850),\n                  shape.Point( 1.0760, -0.1590),\n                  shape.Point( 1.1060,  0.0030),\n                  shape.Point( 1.0660,  0.1760),\n                  shape.Point( 1.0000,  0.2650),\n                  shape.Point( 0.9200,  0.3360),\n                  shape.Point( 0.7500,  0.3850),\n                  shape.Point( 0.6650,  0.2850),\n                  shape.Point( 0.6600,  0.1430),\n                  shape.Point( 0.6600, -0.0070),\n              ],\n              x_points=[\n                  shape.Point( 0.7600, -0.3890),\n              ],\n              legs=[\n                  shape.Point( 0.8430, -0.5850),\n              ],\n              limit_point=shape.Point( 0.7600, -0.3890),\n              diverted=shape.Diverted.DIVERTED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=1.7600,\n          shape=shape.Shape(\n              ip=-140000,\n              params=shape.ParametrizedShape(\n                  r0=0.8873,\n                  z0=0.0281,\n                  kappa=1.6534,\n                  delta=0.4388,\n                  radius=0.2288,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 13 points\n                  shape.Point( 0.6450,  0.0210),\n                  shape.Point( 0.6500, -0.1080),\n                  shape.Point( 0.6650, -0.2390),\n                  shape.Point( 0.7500, -0.3510),\n                  shape.Point( 0.9490, -0.2580),\n                  shape.Point( 1.0660, -0.1270),\n                  shape.Point( 1.0960,  0.0210),\n                  shape.Point( 1.0660,  0.1710),\n                  shape.Point( 0.9680,  0.3010),\n                  shape.Point( 0.8310,  0.3660),\n                  shape.Point( 0.7200,  0.3580),\n                  shape.Point( 0.6650,  0.2830),\n                  shape.Point( 0.6450,  0.1520),\n              ],\n              x_points=[\n                  shape.Point( 0.7400, -0.3810),\n              ],\n              diverted=shape.Diverted.ANY,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=1.7800,\n          shape=shape.Shape(\n              ip=-140000,\n              params=shape.ParametrizedShape(\n                  r0=0.8770,\n                  z0=0.0436,\n                  kappa=1.6840,\n                  delta=0.4370,\n                  radius=0.2306,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 13 points\n                  shape.Point( 0.6350,  0.0413),\n                  shape.Point( 0.6350, -0.0895),\n                  shape.Point( 0.6550, -0.2194),\n                  shape.Point( 0.7400, -0.3312),\n                  shape.Point( 0.9390, -0.2378),\n                  shape.Point( 1.0560, -0.1079),\n                  shape.Point( 1.0860,  0.0413),\n                  shape.Point( 1.0560,  0.1895),\n                  shape.Point( 0.9580,  0.3204),\n                  shape.Point( 0.8210,  0.3853),\n                  shape.Point( 0.7100,  0.3756),\n                  shape.Point( 0.6550,  0.3010),\n                  shape.Point( 0.6350,  0.1711),\n              ],\n              x_points=[\n                  shape.Point( 0.7300, -0.3793),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0410),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=1.8000,\n          shape=shape.Shape(\n              ip=-140000,\n              params=shape.ParametrizedShape(\n                  r0=0.8784,\n                  z0=0.0865,\n                  kappa=1.6166,\n                  delta=0.3958,\n                  radius=0.2378,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 13 points\n                  shape.Point( 0.6270,  0.0860),\n                  shape.Point( 0.6290, -0.0640),\n                  shape.Point( 0.6530, -0.1970),\n                  shape.Point( 0.7500, -0.2914),\n                  shape.Point( 0.9260, -0.2070),\n                  shape.Point( 1.0530, -0.0730),\n                  shape.Point( 1.1020,  0.0860),\n                  shape.Point( 1.0530,  0.2450),\n                  shape.Point( 0.9460,  0.3790),\n                  shape.Point( 0.8100,  0.4540),\n                  shape.Point( 0.7000,  0.4440),\n                  shape.Point( 0.6500,  0.3690),\n                  shape.Point( 0.6290,  0.2360),\n              ],\n              x_points=[\n                  shape.Point( 0.7000, -0.4500),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0860),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=1.8100,\n          shape=shape.Shape(\n              ip=-120000,\n              params=shape.ParametrizedShape(\n                  r0=0.8865,\n                  z0=0.0501,\n                  kappa=1.3991,\n                  delta=0.1188,\n                  radius=0.2402,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 20 points\n                  shape.Point( 0.6330, -0.0538),\n                  shape.Point( 0.6596, -0.1475),\n                  shape.Point( 0.7033, -0.2218),\n                  shape.Point( 0.7623, -0.2696),\n                  shape.Point( 0.8329, -0.2860),\n                  shape.Point( 0.9094, -0.2696),\n                  shape.Point( 0.9839, -0.2218),\n                  shape.Point( 1.0468, -0.1475),\n                  shape.Point( 1.0891, -0.0538),\n                  shape.Point( 1.1040,  0.0500),\n                  shape.Point( 1.0891,  0.1538),\n                  shape.Point( 1.0468,  0.2475),\n                  shape.Point( 0.9839,  0.3218),\n                  shape.Point( 0.9094,  0.3696),\n                  shape.Point( 0.8329,  0.3860),\n                  shape.Point( 0.7623,  0.3696),\n                  shape.Point( 0.7033,  0.3218),\n                  shape.Point( 0.6596,  0.2475),\n                  shape.Point( 0.6330,  0.1538),\n                  shape.Point( 0.6240,  0.0500),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0500),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=1.8200,\n          shape=shape.Shape(\n              ip=-94000,\n              params=shape.ParametrizedShape(\n                  r0=0.8523,\n                  z0=0.0500,\n                  kappa=1.0904,\n                  delta=0.0128,\n                  radius=0.2106,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 20 points\n                  shape.Point( 0.6339, -0.0207),\n                  shape.Point( 0.6627, -0.0845),\n                  shape.Point( 0.7078, -0.1352),\n                  shape.Point( 0.7653, -0.1677),\n                  shape.Point( 0.8298, -0.1789),\n                  shape.Point( 0.8951, -0.1677),\n                  shape.Point( 0.9547, -0.1352),\n                  shape.Point( 1.0024, -0.0845),\n                  shape.Point( 1.0333, -0.0207),\n                  shape.Point( 1.0440,  0.0500),\n                  shape.Point( 1.0333,  0.1207),\n                  shape.Point( 1.0024,  0.1845),\n                  shape.Point( 0.9547,  0.2352),\n                  shape.Point( 0.8951,  0.2677),\n                  shape.Point( 0.8298,  0.2789),\n                  shape.Point( 0.7653,  0.2677),\n                  shape.Point( 0.7078,  0.2352),\n                  shape.Point( 0.6627,  0.1845),\n                  shape.Point( 0.6339,  0.1207),\n                  shape.Point( 0.6240,  0.0500),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0500),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=1.8300,\n          shape=shape.Shape(\n              ip=-53000,\n              params=shape.ParametrizedShape(\n                  r0=0.8048,\n                  z0=0.0501,\n                  kappa=1.0631,\n                  delta=0.0036,\n                  radius=0.1680,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 20 points\n                  shape.Point( 0.6322, -0.0050),\n                  shape.Point( 0.6559, -0.0545),\n                  shape.Point( 0.6928, -0.0939),\n                  shape.Point( 0.7394, -0.1192),\n                  shape.Point( 0.7910, -0.1279),\n                  shape.Point( 0.8426, -0.1192),\n                  shape.Point( 0.8892, -0.0939),\n                  shape.Point( 0.9261, -0.0545),\n                  shape.Point( 0.9498, -0.0050),\n                  shape.Point( 0.9580,  0.0500),\n                  shape.Point( 0.9498,  0.1050),\n                  shape.Point( 0.9261,  0.1545),\n                  shape.Point( 0.8892,  0.1939),\n                  shape.Point( 0.8426,  0.2192),\n                  shape.Point( 0.7910,  0.2279),\n                  shape.Point( 0.7394,  0.2192),\n                  shape.Point( 0.6928,  0.1939),\n                  shape.Point( 0.6559,  0.1545),\n                  shape.Point( 0.6322,  0.1050),\n                  shape.Point( 0.6240,  0.0500),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0500),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=1.8400,\n          shape=shape.Shape(\n              ip=-22000,\n              params=shape.ParametrizedShape(\n                  r0=0.7484,\n                  z0=0.0489,\n                  kappa=1.0666,\n                  delta=0.0258,\n                  radius=0.1176,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 20 points\n                  shape.Point( 0.6297,  0.0109),\n                  shape.Point( 0.6462, -0.0243),\n                  shape.Point( 0.6718, -0.0523),\n                  shape.Point( 0.7042, -0.0703),\n                  shape.Point( 0.7400, -0.0764),\n                  shape.Point( 0.7758, -0.0703),\n                  shape.Point( 0.8082, -0.0523),\n                  shape.Point( 0.8338, -0.0243),\n                  shape.Point( 0.8503,  0.0109),\n                  shape.Point( 0.8560,  0.0500),\n                  shape.Point( 0.8503,  0.0891),\n                  shape.Point( 0.8338,  0.1243),\n                  shape.Point( 0.8082,  0.1523),\n                  shape.Point( 0.7758,  0.1703),\n                  shape.Point( 0.7400,  0.1764),\n                  shape.Point( 0.7042,  0.1703),\n                  shape.Point( 0.6718,  0.1523),\n                  shape.Point( 0.6462,  0.1243),\n                  shape.Point( 0.6297,  0.0891),\n                  shape.Point( 0.6240,  0.0500),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0500),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n      shape.ReferenceTimeSlice(\n          time=1.8500,\n          shape=shape.Shape(\n              ip=-12000,\n              params=shape.ParametrizedShape(\n                  r0=0.7149,\n                  z0=0.0494,\n                  kappa=1.0830,\n                  delta=0.0382,\n                  radius=0.0871,\n                  lambda_=0,\n                  side=shape.ShapeSide.NOSHIFT,\n              ),\n              points=[  # 20 points\n                  shape.Point( 0.6282,  0.0198),\n                  shape.Point( 0.6402, -0.0075),\n                  shape.Point( 0.6590, -0.0291),\n                  shape.Point( 0.6827, -0.0430),\n                  shape.Point( 0.7090, -0.0477),\n                  shape.Point( 0.7353, -0.0430),\n                  shape.Point( 0.7590, -0.0291),\n                  shape.Point( 0.7778, -0.0075),\n                  shape.Point( 0.7898,  0.0198),\n                  shape.Point( 0.7940,  0.0500),\n                  shape.Point( 0.7898,  0.0802),\n                  shape.Point( 0.7778,  0.1075),\n                  shape.Point( 0.7590,  0.1291),\n                  shape.Point( 0.7353,  0.1430),\n                  shape.Point( 0.7090,  0.1478),\n                  shape.Point( 0.6827,  0.1430),\n                  shape.Point( 0.6590,  0.1291),\n                  shape.Point( 0.6402,  0.1075),\n                  shape.Point( 0.6282,  0.0802),\n                  shape.Point( 0.6240,  0.0500),\n              ],\n              limit_point=shape.Point( 0.6240,  0.0500),\n              diverted=shape.Diverted.LIMITED,\n          ),\n      ),\n  ])\n\n\n# Used in TCV#69545\ndef droplet() -> ref_gen.AbstractReferenceGenerator:\n  \"\"\"Hold the droplet at handover for TCV#69198 then ramp the Ip.\"\"\"\n  init = ref_gen.RZIpTarget(r=0.875, z=0.55, ip=-72500)\n  final = ref_gen.RZIpTarget(r=0.875, z=0.47, ip=-110000)\n  return ref_gen.FixedReferenceGenerator([\n      ref_gen.LinearTransition(\n          transition_steps=0,\n          steady_steps=350,  # Intentionally short. Mostly want to ramp.\n          reference=ref_gen.make_symmetric_multidomain_rzip_reference(init)),\n      ref_gen.LinearTransition(\n          transition_steps=400,\n          steady_steps=100000,  # Hold forever.\n          reference=ref_gen.make_symmetric_multidomain_rzip_reference(final)),\n  ])\n\n\n_REFERENCES = [\n    fundamental_capability,\n    elongation,\n    iter,\n    negative_triangularity,\n    snowflake,\n    droplet,\n]\nREFERENCES = {f.__name__: f for f in _REFERENCES}\n"
  },
  {
    "path": "fusion_tcv/references_main.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Print the values of references.\"\"\"\n\nfrom typing import Sequence\n\nfrom absl import app\nfrom absl import flags\n\nfrom fusion_tcv import named_array\nfrom fusion_tcv import references\nfrom fusion_tcv import tcv_common\n\n\n_refs = flags.DEFINE_enum(\"refs\", None, references.REFERENCES.keys(),\n                          \"Which references to print\")\n_count = flags.DEFINE_integer(\"count\", 100, \"How many timesteps to print.\")\n_freq = flags.DEFINE_integer(\"freq\", 1, \"Print only every so often.\")\n_fields = flags.DEFINE_multi_enum(\n    \"field\", None, tcv_common.REF_RANGES.names(),\n    \"Which reference fields to print, default of all.\")\nflags.mark_flag_as_required(\"refs\")\n\n\ndef print_ref(step: int, ref: named_array.NamedArray):\n  print(f\"Step: {step}\")\n  for k in (_fields.value or ref.names.names()):\n    print(f\"  {k}: [{', '.join(f'{v:.3f}' for v in ref[k])}]\")\n\n\ndef main(argv: Sequence[str]) -> None:\n  if len(argv) > 1:\n    raise app.UsageError(\"Too many command-line arguments.\")\n  if _freq.value <= 0:\n    raise app.UsageError(\"`freq` must be >0.\")\n\n  ref = references.REFERENCES[_refs.value]()\n  print_ref(0, ref.reset())\n  for i in range(1, _count.value + 1):\n    for _ in range(_freq.value - 1):\n      ref.step()\n    print_ref(i * _freq.value, ref.step())\n  print(f\"Stopped after {_count.value * _freq.value} steps.\")\n\n\nif __name__ == \"__main__\":\n  app.run(main)\n"
  },
  {
    "path": "fusion_tcv/requirements.txt",
    "content": "absl-py>=0.13.0\ndm-env>=1.5\nnumpy>=1.21.0\nscipy>=1.7.0\n"
  },
  {
    "path": "fusion_tcv/rewards.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Reward function for the fusion environment.\"\"\"\n\nimport abc\nimport collections\nimport functools\nfrom typing import Callable, Dict, List, Optional, Text, Tuple, Union\n\nfrom absl import logging\nimport dataclasses\nimport numpy as np\n\nfrom fusion_tcv import combiners\nfrom fusion_tcv import fge_state\nfrom fusion_tcv import named_array\nfrom fusion_tcv import targets as targets_lib\nfrom fusion_tcv import transforms\n\n\nclass AbstractMeasure(abc.ABC):\n\n  @abc.abstractmethod\n  def __call__(self, targets: List[targets_lib.Target]) -> List[float]:\n    \"\"\"Returns a list of error measures.\"\"\"\n\n\nclass AbsDist(AbstractMeasure):\n  \"\"\"Return the absolute distance between the actual and target.\"\"\"\n\n  @staticmethod\n  def __call__(targets: List[targets_lib.Target]) -> List[float]:\n    return [abs(t.actual - t.target) for t in targets]\n\n\n@dataclasses.dataclass(frozen=True)\nclass MeasureDetails:\n  min: float\n  mean: float\n  max: float\n\n\n@dataclasses.dataclass\nclass RewardDetails:\n  reward: float  # 0-1 reward value.\n  weighted: float  # Should sum to < 0-1.\n  weight: float\n  measure: Optional[MeasureDetails] = None\n\n\nclass AbstractReward(abc.ABC):\n  \"\"\"Abstract reward class.\"\"\"\n\n  @abc.abstractmethod\n  def reward(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray,\n      ) -> Tuple[float, Dict[Text, List[RewardDetails]]]:\n    \"\"\"Returns the reward and log dict as a function of the penalty term.\"\"\"\n\n  @abc.abstractmethod\n  def terminal_reward(self) -> float:\n    \"\"\"Returns the reward if the simulator crashed.\"\"\"\n\n\nWeightFn = Callable[[named_array.NamedArray], float]\nWeightOrFn = Union[float, WeightFn]\n\n\n@dataclasses.dataclass\nclass Component:\n  target: targets_lib.AbstractTarget\n  transforms: List[transforms.AbstractTransform]\n  measure: AbstractMeasure = dataclasses.field(default_factory=AbsDist)\n  weight: Union[WeightOrFn, List[WeightOrFn]] = 1\n  name: Optional[str] = None\n\n\nclass Reward(AbstractReward):\n  \"\"\"Combines a bunch of reward components into a single reward.\n\n  The component parts are applied in the order: target, measure, transform.\n  - Targets represent some error value as one or more pair of values\n    (target, actual), usually with some meaningful physical unit (eg distance,\n    volts, etc).\n  - Measures combine the (target, actual) into a single float, for example\n    absolute distance, for each error value.\n  - Transforms can make arbitrary conversions, but one of them must change from\n    the arbitrary (often meaningful) scale to a reward in the 0-1 range.\n  - Combiners are a special type of transform that reduces a vector of values\n    down to a single value. The combiner can be skipped if the target only\n    outputs a single value, or if you want a vector of outputs for the final\n    combiner.\n  - The component weights are passed to the final combiner, and must match the\n    number of outputs for that component.\n  \"\"\"\n\n  def __init__(self,\n               components: List[Component],\n               combiner: combiners.AbstractCombiner,\n               terminal_reward: float = -5,\n               reward_scale: float = 0.01):\n    self._components = components\n    self._combiner = combiner\n    self._terminal_reward = terminal_reward\n    self._reward_scale = reward_scale\n\n    self._weights = []\n    component_count = collections.Counter()\n    for component in self._components:\n      num_outputs = component.target.outputs\n      for transform in component.transforms:\n        if transform.outputs is not None:\n          num_outputs = transform.outputs\n      if not isinstance(component.weight, list):\n        component.weight = [component.weight]\n      if len(component.weight) != num_outputs:\n        name = component.name or component.target.name\n        raise ValueError(f\"Wrong number of weights for '{name}': got:\"\n                         f\" {len(component.weight)}, expected: {num_outputs}\")\n      self._weights.extend(component.weight)\n\n  def terminal_reward(self) -> float:\n    return self._terminal_reward * self._reward_scale\n\n  def reward(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray,\n      ) -> Tuple[float, Dict[Text, List[RewardDetails]]]:\n    values = []\n    weights = [weight(references) if callable(weight) else weight\n               for weight in self._weights]\n    reward_dict = collections.defaultdict(list)\n    for component in self._components:\n      name = component.name or component.target.name\n      num_outputs = len(component.weight)\n      component_weights = weights[len(values):(len(values) + num_outputs)]\n      try:\n        target = component.target(voltages, state, references)\n      except targets_lib.TargetError:\n        logging.exception(\"Target failed.\")\n        # Failed turns into minimum reward.\n        measure = [987654321] * num_outputs\n        transformed = [0] * num_outputs\n      else:\n        measure = component.measure(target)\n        transformed = functools.reduce(\n            (lambda e, fn: fn(e)), component.transforms, measure)\n      assert len(transformed) == num_outputs\n      for v in transformed:\n        if not np.isnan(v) and not 0 <= v <= 1:\n          raise ValueError(f\"The transformed value in {name} is invalid: {v}\")\n      values.extend(transformed)\n      for weight, value in zip(component_weights, transformed):\n        measure = [m for m in measure if not np.isnan(m)] or [float(\"nan\")]\n        reward_dict[name].append(RewardDetails(\n            value, weight * value * self._reward_scale,\n            weight if not np.isnan(value) else 0,\n            MeasureDetails(\n                min(measure), sum(measure) / len(measure), max(measure))))\n\n    sum_weights = sum(sum(d.weight for d in detail)\n                      for detail in reward_dict.values())\n    for reward_details in reward_dict.values():\n      for detail in reward_details:\n        detail.weighted /= sum_weights\n\n    final_combined = self._combiner(values, weights)\n    assert len(final_combined) == 1\n    return final_combined[0] * self._reward_scale, reward_dict\n"
  },
  {
    "path": "fusion_tcv/rewards_used.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"The rewards used in our experiments.\"\"\"\n\nfrom fusion_tcv import combiners\nfrom fusion_tcv import rewards\nfrom fusion_tcv import targets\nfrom fusion_tcv import transforms\n\n\n# Used in TCV#70915\nFUNDAMENTAL_CAPABILITY = rewards.Reward([\n    rewards.Component(\n        target=targets.ShapeLCFSDistance(),\n        transforms=[transforms.SoftPlus(good=0.005, bad=0.05),\n                    combiners.SmoothMax(-1)]),\n    rewards.Component(\n        target=targets.XPointFar(),\n        transforms=[transforms.Sigmoid(good=0.3, bad=0.1),\n                    combiners.SmoothMax(-5)]),\n    rewards.Component(\n        target=targets.LimitPoint(),\n        transforms=[transforms.Sigmoid(bad=0.2, good=0.1)]),\n    rewards.Component(\n        target=targets.XPointNormalizedFlux(num_points=1),\n        transforms=[transforms.SoftPlus(bad=0.08)]),\n    rewards.Component(\n        target=targets.XPointDistance(num_points=1),\n        transforms=[transforms.Sigmoid(good=0.01, bad=0.15)]),\n    rewards.Component(\n        target=targets.XPointFluxGradient(num_points=1),\n        transforms=[transforms.SoftPlus(bad=3)],\n        weight=0.5),\n    rewards.Component(\n        target=targets.Ip(),\n        transforms=[transforms.SoftPlus(good=500, bad=20000)]),\n    rewards.Component(\n        target=targets.OHCurrentsClose(),\n        transforms=[transforms.SoftPlus(good=50, bad=1050)]),\n], combiners.SmoothMax(-0.5))\n\n\n# Used in TCV#70920\nELONGATION = rewards.Reward([\n    rewards.Component(\n        target=targets.ShapeLCFSDistance(),\n        transforms=[transforms.SoftPlus(good=0.003, bad=0.03),\n                    combiners.SmoothMax(-1)],\n        weight=3),\n    rewards.Component(\n        target=targets.ShapeRadius(),\n        transforms=[transforms.SoftPlus(good=0.002, bad=0.02)]),\n    rewards.Component(\n        target=targets.ShapeElongation(),\n        transforms=[transforms.SoftPlus(good=0.005, bad=0.2)]),\n    rewards.Component(\n        target=targets.ShapeTriangularity(),\n        transforms=[transforms.SoftPlus(good=0.005, bad=0.2)]),\n    rewards.Component(\n        target=targets.XPointCount(),\n        transforms=[transforms.Equal()]),\n    rewards.Component(\n        target=targets.LimitPoint(),  # Stay away from the top/baffles.\n        transforms=[transforms.Sigmoid(bad=0.3, good=0.2)]),\n    rewards.Component(\n        target=targets.Ip(),\n        transforms=[transforms.SoftPlus(good=500, bad=30000)]),\n    rewards.Component(\n        target=targets.VoltageOOB(),\n        transforms=[combiners.Mean(), transforms.SoftPlus(bad=1)]),\n    rewards.Component(\n        target=targets.OHCurrentsClose(),\n        transforms=[transforms.ClippedLinear(good=50, bad=1050)]),\n    rewards.Component(\n        name=\"CurrentsFarFromZero\",\n        target=targets.EFCurrents(),\n        transforms=[transforms.Abs(),\n                    transforms.SoftPlus(good=100, bad=50),\n                    combiners.GeometricMean()]),\n], combiner=combiners.SmoothMax(-5))\n\n\n# Used in TCV#70600\nITER = rewards.Reward([\n    rewards.Component(\n        target=targets.ShapeLCFSDistance(),\n        transforms=[transforms.SoftPlus(good=0.005, bad=0.05),\n                    combiners.SmoothMax(-1)],\n        weight=3),\n    rewards.Component(\n        target=targets.Diverted(),\n        transforms=[transforms.Equal()]),\n    rewards.Component(\n        target=targets.XPointNormalizedFlux(num_points=2),\n        transforms=[transforms.SoftPlus(bad=0.08)],\n        weight=[1] * 2),\n    rewards.Component(\n        target=targets.XPointDistance(num_points=2),\n        transforms=[transforms.Sigmoid(good=0.01, bad=0.15)],\n        weight=[0.5] * 2),\n    rewards.Component(\n        target=targets.XPointFluxGradient(num_points=2),\n        transforms=[transforms.SoftPlus(bad=3)],\n        weight=[0.5] * 2),\n    rewards.Component(\n        target=targets.LegsNormalizedFlux(),\n        transforms=[transforms.Sigmoid(good=0.1, bad=0.3),\n                    combiners.SmoothMax(-5)],\n        weight=2),\n    rewards.Component(\n        target=targets.Ip(),\n        transforms=[transforms.SoftPlus(good=500, bad=20000)],\n        weight=2),\n    rewards.Component(\n        target=targets.VoltageOOB(),\n        transforms=[combiners.Mean(), transforms.SoftPlus(bad=1)]),\n    rewards.Component(\n        target=targets.OHCurrentsClose(),\n        transforms=[transforms.ClippedLinear(good=50, bad=1050)]),\n    rewards.Component(\n        name=\"CurrentsFarFromZero\",\n        target=targets.EFCurrents(),\n        transforms=[transforms.Abs(),\n                    transforms.SoftPlus(good=100, bad=50),\n                    combiners.GeometricMean()]),\n], combiner=combiners.SmoothMax(-5))\n\n\n# Used in TCV#70755\nSNOWFLAKE = rewards.Reward([\n    rewards.Component(\n        target=targets.ShapeLCFSDistance(),\n        transforms=[transforms.SoftPlus(good=0.005, bad=0.05),\n                    combiners.SmoothMax(-1)],\n        weight=3),\n    rewards.Component(\n        target=targets.LimitPoint(),\n        transforms=[transforms.Sigmoid(bad=0.2, good=0.1)]),\n    rewards.Component(\n        target=targets.XPointNormalizedFlux(num_points=2),\n        transforms=[transforms.SoftPlus(bad=0.08)],\n        weight=[1] * 2),\n    rewards.Component(\n        target=targets.XPointDistance(num_points=2),\n        transforms=[transforms.Sigmoid(good=0.01, bad=0.15)],\n        weight=[0.5] * 2),\n    rewards.Component(\n        target=targets.XPointFluxGradient(num_points=2),\n        transforms=[transforms.SoftPlus(bad=3)],\n        weight=[0.5] * 2),\n    rewards.Component(\n        target=targets.LegsNormalizedFlux(),\n        transforms=[transforms.Sigmoid(good=0.1, bad=0.3),\n                    combiners.SmoothMax(-5)],\n        weight=2),\n    rewards.Component(\n        target=targets.Ip(),\n        transforms=[transforms.SoftPlus(good=500, bad=20000)],\n        weight=2),\n    rewards.Component(\n        target=targets.VoltageOOB(),\n        transforms=[combiners.Mean(), transforms.SoftPlus(bad=1)]),\n    rewards.Component(\n        target=targets.OHCurrentsClose(),\n        transforms=[transforms.ClippedLinear(good=50, bad=1050)]),\n    rewards.Component(\n        name=\"CurrentsFarFromZero\",\n        target=targets.EFCurrents(),\n        transforms=[transforms.Abs(),\n                    transforms.SoftPlus(good=100, bad=50),\n                    combiners.GeometricMean()]),\n], combiner=combiners.SmoothMax(-5))\n\n\n# Used in TCV#70457\nNEGATIVE_TRIANGULARITY = rewards.Reward([\n    rewards.Component(\n        target=targets.ShapeLCFSDistance(),\n        transforms=[transforms.SoftPlus(good=0.005, bad=0.05),\n                    combiners.SmoothMax(-1)],\n        weight=3),\n    rewards.Component(\n        target=targets.ShapeRadius(),\n        transforms=[transforms.SoftPlus(bad=0.04)]),\n    rewards.Component(\n        target=targets.ShapeElongation(),\n        transforms=[transforms.SoftPlus(bad=0.5)]),\n    rewards.Component(\n        target=targets.ShapeTriangularity(),\n        transforms=[transforms.SoftPlus(bad=0.5)]),\n    rewards.Component(\n        target=targets.Diverted(),\n        transforms=[transforms.Equal()]),\n    rewards.Component(\n        target=targets.XPointNormalizedFlux(num_points=2),\n        transforms=[transforms.SoftPlus(bad=0.08)],\n        weight=[1] * 2),\n    rewards.Component(\n        target=targets.XPointDistance(num_points=2),\n        transforms=[transforms.Sigmoid(good=0.02, bad=0.15)],\n        weight=[0.5] * 2),\n    rewards.Component(\n        target=targets.XPointFluxGradient(num_points=2),\n        transforms=[transforms.SoftPlus(bad=3)],\n        weight=[0.5] * 2),\n    rewards.Component(\n        target=targets.Ip(),\n        transforms=[transforms.SoftPlus(good=500, bad=20000)],\n        weight=2),\n    rewards.Component(\n        target=targets.VoltageOOB(),\n        transforms=[combiners.Mean(), transforms.SoftPlus(bad=1)]),\n    rewards.Component(\n        target=targets.OHCurrentsClose(),\n        transforms=[transforms.ClippedLinear(good=50, bad=1050)]),\n    rewards.Component(\n        name=\"CurrentsFarFromZero\",\n        target=targets.EFCurrents(),\n        transforms=[transforms.Abs(),\n                    transforms.SoftPlus(good=100, bad=50),\n                    combiners.GeometricMean()]),\n], combiner=combiners.SmoothMax(-0.5))\n\n\n# Used in TCV#69545\nDROPLETS = rewards.Reward([\n    rewards.Component(\n        target=targets.R(indices=[0, 1]),\n        transforms=[transforms.Sigmoid(good=0.02, bad=0.5)],\n        weight=[1, 1]),\n    rewards.Component(\n        target=targets.Z(indices=[0, 1]),\n        transforms=[transforms.Sigmoid(good=0.02, bad=0.2)],\n        weight=[1, 1]),\n    rewards.Component(\n        target=targets.Ip(indices=[0, 1]),\n        transforms=[transforms.Sigmoid(good=2000, bad=20000)],\n        weight=[1, 1]),\n    rewards.Component(\n        target=targets.OHCurrentsClose(),\n        transforms=[transforms.ClippedLinear(good=50, bad=1050)]),\n], combiner=combiners.GeometricMean())\n"
  },
  {
    "path": "fusion_tcv/run_loop.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Run an agent on the environment.\"\"\"\n\nimport numpy as np\n\nfrom fusion_tcv import environment\nfrom fusion_tcv import trajectory\n\n\ndef run_loop(env: environment.Environment, agent,\n             max_steps: int = 100000) -> trajectory.Trajectory:\n  \"\"\"Run an agent.\"\"\"\n  results = []\n  agent.reset()\n  ts = env.reset()\n  for _ in range(max_steps):\n    obs = ts.observation\n    action = agent.step(ts)\n    ts = env.step(action)\n    results.append(trajectory.Trajectory(\n        measurements=obs[\"measurements\"],\n        references=obs[\"references\"],\n        actions=action,\n        reward=np.array(ts.reward)))\n    if ts.last():\n      break\n\n  return trajectory.Trajectory.stack(results)\n"
  },
  {
    "path": "fusion_tcv/shape.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Utilities for time varying shape control.\"\"\"\n\nimport copy\nimport enum\nimport random\nfrom typing import List, Optional, NamedTuple, Tuple, Union\n\nimport dataclasses\nimport numpy as np\nfrom scipy import interpolate\n\nfrom fusion_tcv import named_array\nfrom fusion_tcv import tcv_common\n\n\nclass Point(NamedTuple):\n  \"\"\"A point in r,z coordinates.\"\"\"\n  r: float\n  z: float\n\n  def to_polar(self) -> \"PolarPoint\":\n    return PolarPoint(np.arctan2(self.z, self.r),\n                      np.sqrt(self.r**2 + self.z**2))\n\n  def __neg__(self):\n    return Point(-self.r, -self.z)\n\n  def __add__(self, pt_or_val: Union[\"Point\", float]):\n    if isinstance(pt_or_val, Point):\n      return Point(self.r + pt_or_val.r, self.z + pt_or_val.z)\n    else:\n      return Point(self.r + pt_or_val, self.z + pt_or_val)\n\n  def __sub__(self, pt_or_val: Union[\"Point\", float]):\n    if isinstance(pt_or_val, Point):\n      return Point(self.r - pt_or_val.r, self.z - pt_or_val.z)\n    else:\n      return Point(self.r - pt_or_val, self.z - pt_or_val)\n\n  def __mul__(self, pt_or_val: Union[\"Point\", float]):\n    if isinstance(pt_or_val, Point):\n      return Point(self.r * pt_or_val.r, self.z * pt_or_val.z)\n    else:\n      return Point(self.r * pt_or_val, self.z * pt_or_val)\n\n  def __truediv__(self, pt_or_val: Union[\"Point\", float]):\n    if isinstance(pt_or_val, Point):\n      return Point(self.r / pt_or_val.r, self.z / pt_or_val.z)\n    else:\n      return Point(self.r / pt_or_val, self.z / pt_or_val)\n\n  __div__ = __truediv__\n\n\ndef dist(p1: Union[Point, np.ndarray], p2: Union[Point, np.ndarray]) -> float:\n  return np.hypot(*(p1 - p2))\n\n\nShapePoints = List[Point]\n\n\ndef to_shape_points(array: np.ndarray) -> ShapePoints:\n  return [Point(r, z) for r, z in array]\n\n\ndef center_point(points: ShapePoints) -> Point:\n  return sum(points, Point(0, 0)) / len(points)\n\n\nclass ShapeSide(enum.Enum):\n  LEFT = 0\n  RIGHT = 1\n  NOSHIFT = 2\n\n\nclass PolarPoint(NamedTuple):\n  angle: float\n  dist: float\n\n  def to_point(self) -> Point:\n    return Point(np.cos(self.angle) * self.dist, np.sin(self.angle) * self.dist)\n\n\ndef evenly_spaced_angles(num: int):\n  return np.arange(num) * 2 * np.pi / num\n\n\ndef angle_aligned_dists(points: np.ndarray, angles: np.ndarray) -> np.ndarray:\n  \"\"\"Return a new set of points along angles that intersect with the shape.\"\"\"\n  # TODO(tewalds): Walk the two arrays together for an O(n+m) algorithm instead\n  # of the current O(n*m). This would work as long as they are both sorted\n  # around the radial direction, so the next intersection will be near the last.\n  return np.array([dist_angle_to_surface(points, a) for a in angles])\n\n\ndef angle_aligned_points(points: np.ndarray, num_points: int,\n                         origin: Point) -> np.ndarray:\n  \"\"\"Given a set of points, return a new space centered at origin.\"\"\"\n  angles = evenly_spaced_angles(num_points)\n  dists = angle_aligned_dists(points - origin, angles)\n  return np.stack((np.cos(angles) * dists,\n                   np.sin(angles) * dists), axis=-1) + origin\n\n\ndef dist_angle_to_surface(points: np.ndarray, angle: float) -> float:\n  \"\"\"Distance along a ray to the surface defined by a list of points.\"\"\"\n  for p1, p2 in zip(points, np.roll(points, 1, axis=0)):\n    d = dist_angle_to_segment(p1, p2, angle)\n    if d is not None:\n      return d\n  raise ValueError(f\"Intersecting edge not found for angle: {angle}\")\n\n\ndef dist_angle_to_segment(p1, p2, angle: float) -> Optional[float]:\n  \"\"\"Distance along a ray from the origin to a segment defined by two points.\"\"\"\n  x0, y0 = p1[0], p1[1]\n  x1, y1 = p2[0], p2[1]\n  a0, b0 = np.cos(angle), np.sin(angle)\n  a1, b1 = 0, 0\n  # Segment/segment algorithm inspired by https://stackoverflow.com/q/563198\n  denom = (b0 - b1) * (x0 - x1) - (y0 - y1) * (a0 - a1)\n  if denom == 0:\n    return None  # Angle parallel to the segment, so can't intersect.\n  xy = (a0 * (y1 - b1) + a1 * (b0 - y1) + x1 * (b1 - b0)) / denom\n  eps = 0.00001  # Allow intersecting slightly beyond the endpoints.\n  if -eps <= xy <= 1 + eps:  # Check it hit the segment, not just the line.\n    ab = (y1 * (x0 - a1) + b1 * (x1 - x0) + y0 * (a1 - x1)) / denom\n    if ab > 0:  # Otherwise it hit in the reverse direction.\n      # If ab <= 1 then it's within the segment defined above, but given it's\n      # a unit vector with one end at the origin this tells us the distance to\n      # the intersection of an infinite ray out from the origin.\n      return ab\n  return None\n\n\ndef dist_point_to_surface(points: np.ndarray, point: np.ndarray) -> float:\n  \"\"\"Distance from a point to the surface defined by a list of points.\"\"\"\n  return min(dist_point_to_segment(p1, p2, point)\n             for p1, p2 in zip(points, np.roll(points, 1, axis=0)))\n\n\ndef dist_point_to_segment(v: np.ndarray, w: np.ndarray, p: np.ndarray) -> float:\n  \"\"\"Return minimum distance between line segment vw and point p.\"\"\"\n  # Inspired by: https://stackoverflow.com/a/1501725\n  l2 = dist(v, w)**2\n  if l2 == 0.0:\n    return dist(p, v)  # v == w case\n  # Consider the line extending the segment, parameterized as v + t (w - v).\n  # We find projection of point p onto the line.\n  # It falls where t = [(p-v) . (w-v)] / |w-v|^2\n  # We clamp t from [0,1] to handle points outside the segment vw.\n  t = max(0, min(1, np.dot(p - v, w - v) / l2))\n  projection = v + t * (w - v)  # Projection falls on the segment\n  return dist(p, projection)\n\n\ndef sort_by_angle(points: ShapePoints) -> ShapePoints:\n  center = sum(points, Point(0, 0)) / len(points)\n  return sorted(points, key=lambda p: (p - center).to_polar().angle)\n\n\ndef spline_interpolate_points(\n    points: ShapePoints, num_points: int,\n    x_points: Optional[ShapePoints] = None) -> ShapePoints:\n  \"\"\"Interpolate along a spline to give a smooth evenly spaced shape.\"\"\"\n  ends = []\n  if x_points:\n    # Find the shape points that must allow sharp corners.\n    for xp in x_points:\n      for i, p in enumerate(points):\n        if np.hypot(*(p - xp)) < 0.01:\n          ends.append(i)\n\n  if not ends:\n    # No x-points forcing sharp corners, so use a periodic spline.\n    tck, _ = interpolate.splprep(np.array(points + [points[0]]).T, s=0, per=1)\n    unew = np.arange(num_points) / num_points\n    out = interpolate.splev(unew, tck)\n    assert len(out[0]) == num_points\n    return sort_by_angle(to_shape_points(np.array(out).T))\n\n  # Generate a spline with an shape==x-point at each end.\n  new_pts = []\n  for i, j in zip(ends, ends[1:] + [ends[0]]):\n    pts = points[i:j+1] if i < j else points[i:] + points[:j+1]\n    num_segment_points = np.round((len(pts) - 1) / len(points) * num_points)\n    unew = np.arange(num_segment_points + 1) / num_segment_points\n    tck, _ = interpolate.splprep(np.array(pts).T, s=0)\n    out = interpolate.splev(unew, tck)\n    new_pts += to_shape_points(np.array(out).T)[:-1]\n  if len(new_pts) != num_points:\n    raise AssertionError(\n        f\"Generated the wrong number of points: {len(new_pts)} != {num_points}\")\n  return sort_by_angle(new_pts)\n\n\n@dataclasses.dataclass\nclass ParametrizedShape:\n  \"\"\"Describes a target shape from the parameter set.\"\"\"\n  r0: float  # Where to put the center along the radial axis.\n  z0: float  # Where to put the center along the vertical axis.\n  kappa: float  # Elongation of the shape. (0.8, 3)\n  delta: float  # Triangulation of the shape. (-1, 1)\n  radius: float  # Radius of the shape (0.22, 2.58)\n  lambda_: float  # Squareness of the shape. Recommend (0, 0)\n  side: ShapeSide  # Whether and which side to shift the shape to.\n\n  @classmethod\n  def uniform_random_shape(\n      cls,\n      r_bounds=(0.8, 0.9),\n      z_bounds=(0, 0.2),\n      kappa_bounds=(1.0, 1.8),  # elongation\n      delta_bounds=(-0.5, 0.6),  # triangulation\n      radius_bounds=(tcv_common.LIMITER_WIDTH / 2 - 0.04,\n                     tcv_common.LIMITER_WIDTH / 2),\n      lambda_bounds=(0, 0),  # squareness\n      side=(ShapeSide.LEFT, ShapeSide.RIGHT)):\n    \"\"\"Return a random shape.\"\"\"\n    return cls(\n        r0=np.random.uniform(*r_bounds),\n        z0=np.random.uniform(*z_bounds),\n        kappa=np.random.uniform(*kappa_bounds),\n        delta=np.random.uniform(*delta_bounds),\n        radius=np.random.uniform(*radius_bounds),\n        lambda_=np.random.uniform(*lambda_bounds),\n        side=side if isinstance(side, ShapeSide) else random.choice(side))\n\n  def gen_points(self, num_points: int) -> Tuple[ShapePoints, Point]:\n    \"\"\"Generates a set of shape points, return (points, modified (r0, z0)).\"\"\"\n    r0 = self.r0\n    z0 = self.z0\n    num_warped_points = 32\n    points = np.zeros((num_warped_points, 2))\n    theta = evenly_spaced_angles(num_warped_points)\n    points[:, 0] = r0 + self.radius * np.cos(theta + self.delta * np.sin(theta)\n                                             - self.lambda_ * np.sin(2 * theta))\n    points[:, 1] = z0 + self.radius * self.kappa * np.sin(theta)\n    if self.side == ShapeSide.LEFT:\n      wall_shift = np.min(points[:, 0]) - tcv_common.INNER_LIMITER_R\n      points[:, 0] -= wall_shift\n      r0 -= wall_shift\n    elif self.side == ShapeSide.RIGHT:\n      wall_shift = np.max(points[:, 0]) - tcv_common.OUTER_LIMITER_R\n      points[:, 0] -= wall_shift\n      r0 -= wall_shift\n    return (spline_interpolate_points(to_shape_points(points), num_points),\n            Point(r0, z0))\n\n\ndef trim_zero_points(points: ShapePoints) -> Optional[ShapePoints]:\n  trimmed = [p for p in points if p.r != 0]\n  return trimmed if trimmed else None\n\n\nclass Diverted(enum.Enum):\n  \"\"\"Whether a shape is diverted or not.\"\"\"\n  ANY = 0\n  LIMITED = 1\n  DIVERTED = 2\n\n  @classmethod\n  def from_refs(cls, references: named_array.NamedArray) -> \"Diverted\":\n    diverted = (references[\"diverted\", 0] == 1)\n    limited = (references[\"limited\", 0] == 1)\n    if diverted and limited:\n      raise ValueError(\"Diverted and limited doesn't make sense.\")\n    if diverted:\n      return cls.DIVERTED\n    if limited:\n      return cls.LIMITED\n    return cls.ANY\n\n\n@dataclasses.dataclass\nclass Shape:\n  \"\"\"Full specification of a shape.\"\"\"\n  params: Optional[ParametrizedShape] = None\n  points: Optional[ShapePoints] = None\n  x_points: Optional[ShapePoints] = None\n  legs: Optional[ShapePoints] = None\n  diverted: Diverted = Diverted.ANY\n  ip: Optional[float] = None\n  limit_point: Optional[Point] = None\n\n  @classmethod\n  def from_references(cls, references: named_array.NamedArray) -> \"Shape\":\n    \"\"\"Extract a Shape from the references.\"\"\"\n    if any(np.any(references[name] != 0)\n           for name in (\"R\", \"Z\", \"kappa\", \"delta\", \"radius\", \"lambda\")):\n      params = ParametrizedShape(\n          r0=references[\"R\"][0],\n          z0=references[\"Z\"][0],\n          kappa=references[\"kappa\"][0],\n          delta=references[\"delta\"][0],\n          radius=references[\"radius\"][0],\n          lambda_=references[\"lambda\"][0],\n          side=ShapeSide.NOSHIFT)\n    else:\n      params = None\n\n    ip = references[\"Ip\", 0]\n    return cls(\n        params,\n        points=trim_zero_points(points_from_references(references, \"shape1\")),\n        x_points=trim_zero_points(points_from_references(references,\n                                                         \"x_points\")),\n        legs=trim_zero_points(points_from_references(references, \"legs\")),\n        limit_point=trim_zero_points(points_from_references(\n            references, \"limit_point\")[0:1]),\n        diverted=Diverted.from_refs(references),\n        ip=float(ip) if ip != 0 else None)\n\n  def gen_references(self) -> named_array.NamedArray:\n    \"\"\"Return the references for the parametrized shape.\"\"\"\n    refs = tcv_common.REF_RANGES.new_named_array()\n\n    if self.ip is not None:\n      refs[\"Ip\", 0] = self.ip\n\n    refs[\"diverted\", 0] = 1 if self.diverted == Diverted.DIVERTED else 0\n    refs[\"limited\", 0] = 1 if self.diverted == Diverted.LIMITED else 0\n\n    if self.params is not None:\n      refs[\"R\", 0] = self.params.r0\n      refs[\"Z\", 0] = self.params.z0\n      refs[\"kappa\", 0] = self.params.kappa\n      refs[\"delta\", 0] = self.params.delta\n      refs[\"radius\", 0] = self.params.radius\n      refs[\"lambda\", 0] = self.params.lambda_\n\n    if self.points is not None:\n      points = np.array(self.points)\n      assert refs.names.count(\"shape_r\") >= points.shape[0]\n      refs[\"shape_r\", :points.shape[0]] = points[:, 0]\n      refs[\"shape_z\", :points.shape[0]] = points[:, 1]\n\n    if self.x_points is not None:\n      x_points = np.array(self.x_points)\n      assert refs.names.count(\"x_points_r\") >= x_points.shape[0]\n      refs[\"x_points_r\", :x_points.shape[0]] = x_points[:, 0]\n      refs[\"x_points_z\", :x_points.shape[0]] = x_points[:, 1]\n\n    if self.legs is not None:\n      legs = np.array(self.legs)\n      assert refs.names.count(\"legs_r\") >= legs.shape[0]\n      refs[\"legs_r\", :legs.shape[0]] = legs[:, 0]\n      refs[\"legs_z\", :legs.shape[0]] = legs[:, 1]\n\n    if self.limit_point is not None:\n      refs[\"limit_point_r\", 0] = self.limit_point.r\n      refs[\"limit_point_z\", 0] = self.limit_point.z\n\n    return refs\n\n  def canonical(self) -> \"Shape\":\n    \"\"\"Return a canonical shape with a fixed number of points and params.\"\"\"\n    num_points = tcv_common.REF_RANGES.count(\"shape_r\")\n    out = copy.deepcopy(self)\n\n    if out.points is None:\n      if out.params is None:\n        raise ValueError(\"Can't canonicalize with no params or points.\")\n      out.points, center = out.params.gen_points(num_points)\n      out.params.r0 = center.r\n      out.params.z0 = center.z\n      out.params.side = ShapeSide.NOSHIFT\n    else:\n      out.points = spline_interpolate_points(\n          out.points, num_points, out.x_points or [])\n      if out.params:\n        out.params.side = ShapeSide.NOSHIFT\n      else:\n        # Copied from FGE. Details: https://doi.org/10.1017/S0022377815001270\n        top = max(out.points, key=lambda p: p.z)\n        left = min(out.points, key=lambda p: p.r)\n        right = max(out.points, key=lambda p: p.r)\n        bottom = min(out.points, key=lambda p: p.z)\n        center = Point((left.r + right.r) / 2,\n                       (top.z + bottom.z) / 2)\n\n        radius = (right.r - left.r) / 2\n        kappa = (top.z - bottom.z) / (right.r - left.r)\n        delta_lower = (center.r - bottom.r) / radius  # upper triangularitiy\n        delta_upper = (center.r - top.r) / radius  # lower triangularity\n        delta = (delta_lower + delta_upper) / 2\n\n        out.params = ParametrizedShape(\n            r0=center.r, z0=center.z, radius=radius, kappa=kappa, delta=delta,\n            lambda_=0, side=ShapeSide.NOSHIFT)\n\n    return out\n\n\ndef points_from_references(\n    references: named_array.NamedArray, key: str = \"shape1\",\n    num: Optional[int] = None) -> ShapePoints:\n  points = np.array([references[f\"{key}_r\"], references[f\"{key}_z\"]]).T\n  if num is not None:\n    points = points[:num]\n  return to_shape_points(points)\n\n\n@dataclasses.dataclass\nclass ReferenceTimeSlice:\n  shape: Shape\n  time: float\n  hold: Optional[float] = None  # Absolute time.\n\n  def __post_init__(self):\n    if self.hold is None:\n      self.hold = self.time\n\n\ndef canonicalize_reference_series(\n    time_slices: List[ReferenceTimeSlice]) -> List[ReferenceTimeSlice]:\n  \"\"\"Canonicalize a full sequence of time slices.\"\"\"\n  outputs = []\n  for ref in time_slices:\n    ref_shape = ref.shape.canonical()\n\n    prev = outputs[-1] if outputs else None\n    if prev is not None and prev.hold + tcv_common.DT < ref.time:\n      leg_diff = len(ref_shape.legs or []) != len(prev.shape.legs or [])\n      xp_diff = len(ref_shape.x_points or []) != len(prev.shape.x_points or [])\n      div_diff = ref_shape.diverted != prev.shape.diverted\n      limit_diff = (\n          bool(ref_shape.limit_point and ref_shape.limit_point.r > 0) !=\n          bool(prev.shape.limit_point and prev.shape.limit_point.r > 0))\n      if leg_diff or xp_diff or div_diff or limit_diff:\n        # Try not to interpolate between a real x-point and a non-existent\n        # x-point. Non-existent x-points are represented as being at the\n        # origin, i.e. out to the left of the vessel, and could be interpolated\n        # into place, but that's weird, so better to pop it into existence by\n        # adding an extra frame one before with the new shape targets.\n        # This doesn't handle the case of multiple points appearing/disappearing\n        # out of order, or of one moving while the other disappears.\n        outputs.append(\n            ReferenceTimeSlice(\n                time=ref.time - tcv_common.DT,\n                shape=Shape(\n                    ip=ref_shape.ip,\n                    params=ref_shape.params,\n                    points=ref_shape.points,\n                    x_points=(prev.shape.x_points\n                              if xp_diff else ref_shape.x_points),\n                    legs=(prev.shape.legs if leg_diff else ref_shape.legs),\n                    limit_point=(prev.shape.limit_point\n                                 if limit_diff else ref_shape.limit_point),\n                    diverted=(prev.shape.diverted\n                              if div_diff else ref_shape.diverted))))\n\n    outputs.append(ReferenceTimeSlice(ref_shape, ref.time, ref.hold))\n\n  return outputs\n"
  },
  {
    "path": "fusion_tcv/shapes_known.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"A set of known shapes.\"\"\"\n\nfrom fusion_tcv import shape\nfrom fusion_tcv import tcv_common\n\n\nSHAPE_70166_0450 = shape.Shape(\n    ip=-120000,\n    params=shape.ParametrizedShape(\n        r0=0.89,\n        z0=0.25,\n        kappa=1.4,\n        delta=0.25,\n        radius=0.25,\n        lambda_=0,\n        side=shape.ShapeSide.NOSHIFT),\n    limit_point=shape.Point(tcv_common.INNER_LIMITER_R, 0.25),\n    diverted=shape.Diverted.LIMITED)\n\n\nSHAPE_70166_0872 = shape.Shape(\n    ip=-110000,\n    params=shape.ParametrizedShape(\n        r0=0.8796,\n        z0=0.2339,\n        kappa=1.2441,\n        delta=0.2567,\n        radius=0.2390,\n        lambda_=0,\n        side=shape.ShapeSide.NOSHIFT,\n    ),\n    points=[  # 20 points\n        shape.Point(0.6299, 0.1413),\n        shape.Point(0.6481, 0.0577),\n        shape.Point(0.6804, -0.0087),\n        shape.Point(0.7286, -0.0513),\n        shape.Point(0.7931, -0.0660),\n        shape.Point(0.8709, -0.0513),\n        shape.Point(0.9543, -0.0087),\n        shape.Point(1.0304, 0.0577),\n        shape.Point(1.0844, 0.1413),\n        shape.Point(1.1040, 0.2340),\n        shape.Point(1.0844, 0.3267),\n        shape.Point(1.0304, 0.4103),\n        shape.Point(0.9543, 0.4767),\n        shape.Point(0.8709, 0.5193),\n        shape.Point(0.7931, 0.5340),\n        shape.Point(0.7286, 0.5193),\n        shape.Point(0.6804, 0.4767),\n        shape.Point(0.6481, 0.4103),\n        shape.Point(0.6299, 0.3267),\n        shape.Point(0.6240, 0.2340),\n    ],\n    limit_point=shape.Point(tcv_common.INNER_LIMITER_R, 0.2339),\n    diverted=shape.Diverted.LIMITED)\n"
  },
  {
    "path": "fusion_tcv/targets.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Reward targets that return target+actual.\"\"\"\n\nimport abc\nimport math\nfrom typing import List, Optional, Sequence, Tuple\n\nimport dataclasses\nimport numpy as np\nimport scipy\n\nfrom fusion_tcv import fge_state\nfrom fusion_tcv import named_array\nfrom fusion_tcv import shape\nfrom fusion_tcv import tcv_common\n\n\nclass TargetError(Exception):\n  \"\"\"For when a target can't be computed.\"\"\"\n\n\n@dataclasses.dataclass(frozen=True)\nclass Target:\n  actual: float\n  target: float\n\n  @classmethod\n  def invalid(cls):\n    \"\"\"This target is invalid and should be ignored. Equivalent to weight=0.\"\"\"\n    return cls(float(\"nan\"), float(\"nan\"))\n\n\nclass AbstractTarget(abc.ABC):\n  \"\"\"Measure something about the simulation, with a target and actual value.\"\"\"\n\n  @property\n  def name(self) -> str:\n    \"\"\"Returns a name for the target.\"\"\"\n    return self.__class__.__name__\n\n  @abc.abstractproperty\n  def outputs(self) -> int:\n    \"\"\"Return the number of outputs this produces.\"\"\"\n\n  @abc.abstractmethod\n  def __call__(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray) -> List[Target]:\n    \"\"\"Returns a list of targets.\"\"\"\n\n\n@dataclasses.dataclass(frozen=True)\nclass AbstractSingleValuePerDomainTarget(AbstractTarget):\n  \"\"\"Base class for single value per plasma domain targets.\"\"\"\n  target: Optional[Sequence[float]] = None\n  indices: List[int] = dataclasses.field(default_factory=lambda: [0])\n\n  def __post_init__(self):\n    if self.indices not in ([0], [1], [0, 1]):\n      raise ValueError(\n          f\"Invalid indices: {self.indices}, must be [0], [1] or [0, 1].\")\n    if self.target and len(self.target) != len(self.indices):\n      raise ValueError(\"Wrong number of targets.\")\n\n  @property\n  def outputs(self) -> int:\n    return len(self.indices)\n\n  @property\n  def name(self) -> str:\n    return f\"{super().name}: \" + \",\".join(str(i) for i in self.indices)\n\n\n@dataclasses.dataclass(frozen=True)\nclass R(AbstractSingleValuePerDomainTarget):\n  \"\"\"Target for R.\"\"\"\n\n  def __call__(self,\n               voltages: np.ndarray,\n               state: fge_state.FGEState,\n               references: named_array.NamedArray) -> List[Target]:\n    r_d, _, _ = state.rzip_d\n    if self.target is None:\n      return [Target(r_d[idx], references[\"R\"][idx]) for idx in self.indices]\n    else:\n      return [Target(r_d[idx], target)\n              for idx, target in zip(self.indices, self.target)]\n\n\n@dataclasses.dataclass(frozen=True)\nclass Z(AbstractSingleValuePerDomainTarget):\n  \"\"\"Target for Z.\"\"\"\n\n  def __call__(self,\n               voltages: np.ndarray,\n               state: fge_state.FGEState,\n               references: named_array.NamedArray) -> List[Target]:\n    _, z_d, _ = state.rzip_d\n    if self.target is None:\n      return [Target(z_d[idx], references[\"Z\"][idx]) for idx in self.indices]\n    else:\n      return [Target(z_d[idx], target)\n              for idx, target in zip(self.indices, self.target)]\n\n\n@dataclasses.dataclass(frozen=True)\nclass Ip(AbstractSingleValuePerDomainTarget):\n  \"\"\"Target for Ip.\"\"\"\n\n  def __call__(self,\n               voltages: np.ndarray,\n               state: fge_state.FGEState,\n               references: named_array.NamedArray) -> List[Target]:\n    _, _, ip_d = state.rzip_d\n    if self.target is None:\n      return [Target(ip_d[idx], references[\"Ip\"][idx]) for idx in self.indices]\n    else:\n      return [Target(ip_d[idx], target)\n              for idx, target in zip(self.indices, self.target)]\n\n\nclass OHCurrentsClose(AbstractTarget):\n  \"\"\"Target for keeping OH currents close.\"\"\"\n\n  @property\n  def outputs(self) -> int:\n    return 1\n\n  def __call__(self,\n               voltages: np.ndarray,\n               state: fge_state.FGEState,\n               references: named_array.NamedArray) -> List[Target]:\n    oh_coil_currents = state.get_coil_currents_by_type(\"OH\")\n    diff = abs(oh_coil_currents[0] - oh_coil_currents[1])\n    return [Target(diff, 0)]\n\n\nclass EFCurrents(AbstractTarget):\n  \"\"\"EFCurrents, useful for avoiding stuck coils.\"\"\"\n\n  @property\n  def outputs(self) -> int:\n    return 16\n\n  def __call__(self,\n               voltages: np.ndarray,\n               state: fge_state.FGEState,\n               references: named_array.NamedArray) -> List[Target]:\n    currents = np.concatenate([state.get_coil_currents_by_type(\"E\"),\n                               state.get_coil_currents_by_type(\"F\")])\n    return [Target(c, 0) for c in currents]\n\n\n@dataclasses.dataclass(frozen=True)\nclass VoltageOOB(AbstractTarget):\n  \"\"\"Target for how much the voltages exceed the bounds.\"\"\"\n  relative: bool = True\n\n  @property\n  def outputs(self) -> int:\n    return tcv_common.NUM_ACTIONS\n\n  def __call__(self,\n               voltages: np.ndarray,\n               state: fge_state.FGEState,\n               references: named_array.NamedArray) -> List[Target]:\n    bounds = tcv_common.action_spec()\n    excess = (np.maximum(bounds.minimum - voltages, 0) +\n              np.maximum(voltages - bounds.maximum, 0))\n    if self.relative:\n      excess /= (bounds.maximum - bounds.minimum)\n    return [Target(v, 0) for v in excess]\n\n\n@dataclasses.dataclass(frozen=True)\nclass ShapeElongation(AbstractSingleValuePerDomainTarget):\n  \"\"\"Try to keep the elongation close to the references.\"\"\"\n\n  def __call__(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray) -> List[Target]:\n    if self.target is not None:\n      targets = self.target\n    else:\n      targets = references[\"kappa\"][self.indices]\n    return [Target(state.elongation[i], target)\n            for i, target in zip(self.indices, targets)]\n\n\n@dataclasses.dataclass(frozen=True)\nclass ShapeTriangularity(AbstractSingleValuePerDomainTarget):\n  \"\"\"Try to keep the triangularity close to the references.\"\"\"\n\n  def __call__(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray) -> List[Target]:\n    if self.target is not None:\n      targets = self.target\n    else:\n      targets = references[\"delta\"][self.indices]\n    return [Target(state.triangularity[i], target)\n            for i, target in zip(self.indices, targets)]\n\n\n@dataclasses.dataclass(frozen=True)\nclass ShapeRadius(AbstractSingleValuePerDomainTarget):\n  \"\"\"Try to keep the shape radius close to the references.\"\"\"\n\n  def __call__(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray) -> List[Target]:\n    if self.target is not None:\n      targets = self.target\n    else:\n      targets = references[\"radius\"][self.indices]\n    return [Target(state.radius[i], target)\n            for i, target in zip(self.indices, targets)]\n\n\n@dataclasses.dataclass(frozen=True)\nclass AbstractPointsTarget(AbstractTarget):\n  \"\"\"Base class for shape point targets.\"\"\"\n  points: Optional[shape.ShapePoints] = None\n  ref_name: Optional[str] = None\n  num_points: Optional[int] = None\n\n  def __post_init__(self):\n    if self.points is not None:\n      return\n    elif self.ref_name is None:\n      raise ValueError(\"Must specify points or ref_name\")\n    else:\n      ref_name = f\"{self.ref_name}_r\"\n      if ref_name not in tcv_common.REF_RANGES:\n        raise ValueError(f\"{self.ref_name} is invalid.\")\n      elif (self.num_points is not None and\n            self.num_points > tcv_common.REF_RANGES.count(ref_name)):\n        raise ValueError(\n            (f\"Requesting more points ({self.num_points}) than {self.ref_name} \"\n             \"provides.\"))\n\n  @property\n  def outputs(self) -> int:\n    return len(self.points) if self.points is not None else self.num_points\n\n  def _target_points(\n      self, references: named_array.NamedArray) -> shape.ShapePoints:\n    if self.points is not None:\n      return self.points\n    else:\n      return shape.points_from_references(\n          references, self.ref_name, self.num_points)\n\n\ndef splined_lcfs_points(\n    state: fge_state.FGEState,\n    num_points: int,\n    domain: int = 0) -> shape.ShapePoints:\n  \"\"\"Return a smooth lcfs, cleaning FGE x-point artifacts.\"\"\"\n  points = state.get_lcfs_points(domain)\n  x_point = (shape.Point(*state.limit_point_d[domain])\n             if state.is_diverted_d[domain] else None)\n\n  if x_point is not None:\n    x_points = [x_point]\n    # Drop points near the x-point due to noise in the shape projection near\n    # the x-point.\n    points = [p for p in points if shape.dist(p, x_point) > 0.1]\n    points.append(x_point)\n    points = shape.sort_by_angle(points)\n  else:\n    x_points = []\n  return shape.spline_interpolate_points(points, num_points, x_points)\n\n\n@dataclasses.dataclass(frozen=True)\nclass ShapeLCFSDistance(AbstractPointsTarget):\n  \"\"\"Try to keep the shape close to the references.\n\n  Check the distance from the target shape points to the smooth LCFS.\n  \"\"\"\n  ref_name: str = dataclasses.field(default=\"shape\", init=False)\n  domain: int = dataclasses.field(default=0, init=False)\n\n  def __call__(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray) -> List[Target]:\n    lcfs = splined_lcfs_points(state, 90, self.domain)\n    outputs = []\n    for p in self._target_points(references):\n      if p.r == 0:  # For invalid/changing number of points.\n        outputs.append(Target.invalid())\n        continue\n      dist = shape.dist_point_to_surface(np.array(lcfs), np.array(p))\n      outputs.append(Target(dist, 0))\n    return outputs\n\n\ndef flux_at_points(state: fge_state.FGEState, points: np.ndarray) -> np.ndarray:\n  \"\"\"Return the normalized interpolated flux values at a set of points.\"\"\"\n  # Normalized flux such that the LCFS has a value of 1, 0 in the middle,\n  # and bigger than 1 farther out.\n  normalized_flux = (  # (LY.Fx - LY.FA) / (LY.FB - LY.FA)\n      (state.flux - state.magnetic_axis_flux_strength) /\n      (state.lcfs_flux_strength - state.magnetic_axis_flux_strength)).T\n  smooth_flux = scipy.interpolate.RectBivariateSpline(\n      np.squeeze(state.r_coordinates),\n      np.squeeze(state.z_coordinates),\n      normalized_flux)\n  return smooth_flux(points[:, 0], points[:, 1], grid=False)\n\n\n@dataclasses.dataclass(frozen=True)\nclass ShapeNormalizedLCFSFlux(AbstractPointsTarget):\n  \"\"\"Try to keep the shape close to the references using flux.\n\n  Check the normalized flux values at points along the target shape. This works\n  in flux space, not linear distance, so may encourage smaller plasmas than the\n  distance based shape rewards.\n  \"\"\"\n  ref_name: str = dataclasses.field(default=\"shape1\", init=False)\n\n  def __call__(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray) -> List[Target]:\n    outputs = []\n    for p in self._target_points(references):\n      if p.r == 0:  # For invalid/changing number of points.\n        outputs.append(Target.invalid())\n      else:\n        outputs.append(Target(\n            flux_at_points(state, np.array([p]))[0], 1))\n    return outputs\n\n\n@dataclasses.dataclass(frozen=True)\nclass LegsNormalizedFlux(ShapeNormalizedLCFSFlux):\n  \"\"\"Try to keep the legs references close to the LCFS.\"\"\"\n  ref_name: str = dataclasses.field(default=\"legs\", init=False)\n\n\n@dataclasses.dataclass(frozen=True)\nclass AbstractXPointTarget(AbstractPointsTarget):\n  \"\"\"Base class for x-point targets.\"\"\"\n  ref_name: str = dataclasses.field(default=\"x_points\", init=False)\n\n\n@dataclasses.dataclass(frozen=True)\nclass XPointFluxGradient(AbstractXPointTarget):\n  \"\"\"Keep target points as an X point by attempting 0 flux gradient.\"\"\"\n\n  def __call__(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray) -> List[Target]:\n    eps = 0.01\n    targets = []\n    for point in self._target_points(references):\n      if point.r == 0:  # For invalid/changing number of points.\n        targets.append(Target.invalid())\n        continue\n      diff_points = np.array([\n          [point.r - eps, point.z],\n          [point.r + eps, point.z],\n          [point.r, point.z - eps],\n          [point.r, point.z + eps],\n      ])\n      flux_values = flux_at_points(state, diff_points)\n      diff = ((np.abs(flux_values[0] - flux_values[1]) / (2 * eps)) +\n              (np.abs(flux_values[2] - flux_values[3]) / (2 * eps)))\n      targets.append(Target(diff, 0))\n    return targets\n\n\ndef _dist(p1: shape.Point, p2: shape.Point):\n  return math.hypot(p1.r - p2.r, p1.z - p2.z)\n\n\ndef _min_dist(pt: shape.Point, points: shape.ShapePoints,\n              min_dist: float) -> Tuple[Optional[int], float]:\n  index = None\n  for i, point in enumerate(points):\n    dist = _dist(pt, point)\n    if dist < min_dist:\n      index = i\n      min_dist = dist\n  return index, min_dist\n\n\n@dataclasses.dataclass(frozen=True)\nclass XPointDistance(AbstractXPointTarget):\n  \"\"\"Keep target points as an X point by attempting to minimize distance.\n\n  This assigns the x-points to targets without replacement. The first target\n  will get the distance to the nearest x-point. The second target will get the\n  closest, but ignoring the one assigned to the first target point. If none are\n  within `max_dist`, then no x-point is assigned and that distance will be\n  returned.\n\n  It may be worth switching to a fancier algorithm that tries to minimize the\n  total distance between targets and x-points, but that's slower, and we may\n  actually care about some x-points more (eg a diverted point is more\n  important than one farther away).\n  \"\"\"\n  max_dist: float = 0.2\n\n  def __call__(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray) -> List[Target]:\n    x_points = state.x_points\n    targets = []\n    for target_point in self._target_points(references):\n      if target_point.r == 0:  # For invalid/changing number of points.\n        targets.append(Target.invalid())\n        continue\n      index, min_dist = _min_dist(target_point, x_points, self.max_dist)\n      if index is not None:\n        x_points.pop(index)\n      targets.append(Target(min_dist, 0))\n    return targets\n\n\n@dataclasses.dataclass(frozen=True)\nclass XPointFar(AbstractXPointTarget):\n  \"\"\"Keep extraneous x-points far away from the LCFS.\n\n  Returns the distance from the LCFS to any true x-point that is far from a\n  target x-point.\n\n  This assigns the x-points to targets without replacement. The first target\n  will get the distance to the nearest x-point. The second target will get the\n  closest, but ignoring the one assigned to the first target point. If none are\n  within `max_dist`, then no x-point is assigned and that distance will be\n  returned.\n\n  It may be worth switching to a fancier algorithm that tries to minimize the\n  total distance between targets and x-points, but that's slower, and we may\n  actually care about some x-points more (eg a diverted point is more\n  important than one farther away).\n  \"\"\"\n  max_dist: float = 0.2\n  domain: int = 0\n  diverted: Optional[shape.Diverted] = None\n\n  def __call__(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray) -> List[Target]:\n    if self.diverted is not None:\n      target = self.diverted\n    else:\n      target = shape.Diverted.from_refs(references)\n    if target == shape.Diverted.ANY:\n      return []  # Don't care.\n\n    x_points = state.x_points\n\n    # Filter out x-points that are near target x-points.\n    for target_point in self._target_points(references):\n      if target_point.r == 0:  # For invalid/changing number of points.\n        continue\n      index, _ = _min_dist(target_point, x_points, self.max_dist)\n      if index is not None:\n        x_points.pop(index)\n    if not x_points:\n      return [Target(100, 0)]  # No x-point gives full reward, not weight=0.\n\n    lcfs = state.get_lcfs_points(self.domain)\n    return [Target(shape.dist_point_to_surface(np.array(lcfs), np.array(p)), 0)\n            for p in x_points]\n\n\n@dataclasses.dataclass(frozen=True)\nclass XPointNormalizedFlux(AbstractXPointTarget):\n  \"\"\"Keep the actual X points close to the LCFS.\n\n  Choose the x-points based on their distance to the target x-points.\n  \"\"\"\n  max_dist: float = 0.2\n  diverted: Optional[shape.Diverted] = None\n\n  def __call__(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray) -> List[Target]:\n    if self.diverted is not None:\n      diverted = self.diverted\n    else:\n      diverted = shape.Diverted.from_refs(references)\n\n    x_points = state.x_points\n    fluxes = list(flux_at_points(state, np.array(x_points).reshape((-1, 2))))\n    targets = []\n    # We should probably minimize the overall distance between targets and\n    # x-points, but the algorithm is complicated, so instead be greedy and\n    # assume they're given in priority order, or farther apart than max_dist.\n    for target_point in self._target_points(references):\n      if target_point.r == 0 or diverted != shape.Diverted.DIVERTED:\n        # For invalid/changing number of points.\n        targets.append(Target.invalid())\n        continue\n      index, _ = _min_dist(target_point, x_points, self.max_dist)\n      if index is not None:\n        targets.append(Target(fluxes[index], 1))\n        x_points.pop(index)\n        fluxes.pop(index)\n      else:\n        targets.append(Target(0, 1))\n    return targets\n\n\n@dataclasses.dataclass(frozen=True)\nclass XPointCount(AbstractTarget):\n  \"\"\"Target for number of x-points. Useful to avoid more than you want.\"\"\"\n  target: Optional[int] = None\n\n  @property\n  def outputs(self) -> int:\n    return 1\n\n  def __call__(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray) -> List[Target]:\n    if self.target is not None:\n      target = self.target\n    else:\n      target_points = shape.points_from_references(\n          references, \"x_points\", tcv_common.REF_RANGES.count(\"x_points_r\"))\n      target = sum(1 for p in target_points if p.r != 0)\n    return [Target(len(state.x_points), target)]\n\n\n@dataclasses.dataclass(frozen=True)\nclass Diverted(AbstractTarget):\n  \"\"\"Target for whether the plasma is diverted by an x-point.\"\"\"\n  diverted: Optional[shape.Diverted] = None\n\n  @property\n  def outputs(self) -> int:\n    return 1\n\n  def __call__(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray) -> List[Target]:\n    if self.diverted is not None:\n      target = self.diverted\n    else:\n      target = shape.Diverted.from_refs(references)\n\n    actual = 1 if state.is_diverted_d[0] else 0\n    if target == shape.Diverted.ANY:\n      return [Target.invalid()]  # Don't care.\n    elif target == shape.Diverted.DIVERTED:\n      return [Target(actual, 1)]\n    return [Target(actual, 0)]\n\n\n@dataclasses.dataclass(frozen=True)\nclass LimitPoint(AbstractPointsTarget):\n  \"\"\"Target for where the plasma is limited, either on the wall or x-point.\"\"\"\n  ref_name: str = dataclasses.field(default=\"limit_point\", init=False)\n  num_points: int = dataclasses.field(default=1, init=False)\n  diverted: Optional[shape.Diverted] = None\n  max_dist: float = 1\n\n  def __call__(\n      self,\n      voltages: np.ndarray,\n      state: fge_state.FGEState,\n      references: named_array.NamedArray) -> List[Target]:\n    if self.diverted is not None:\n      diverted_target = self.diverted\n    else:\n      diverted_target = shape.Diverted.from_refs(references)\n\n    if diverted_target == shape.Diverted.ANY:\n      return [Target.invalid()]\n\n    target_point = self._target_points(references)[0]\n    if target_point.r == 0:\n      return [Target.invalid()]\n\n    limit_point = shape.Point(*state.limit_point_d[0])\n    dist = np.hypot(*(target_point - limit_point))\n\n    is_diverted = state.is_diverted_d[0]\n    if diverted_target == shape.Diverted.DIVERTED:\n      return [Target((dist if is_diverted else self.max_dist), 0)]\n    return [Target((dist if not is_diverted else self.max_dist), 0)]\n"
  },
  {
    "path": "fusion_tcv/tcv_common.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Constants and general tooling for TCV plant.\"\"\"\n\nimport collections\nfrom typing import Sequence, Text\nfrom dm_env import specs\nimport numpy as np\n\nfrom fusion_tcv import named_array\n\n\nDT = 1e-4  # ie 10kHz\n\n\n# Below are general input/output specifications used for controllers that are\n# run on hardware. This interface corresponds to the so called \"KH hybrid\"\n# controller specification that is used in various experiments by EPFL. Hence,\n# this interface definition contains measurements and actions not used in our\n# tasks.\n\n# Number of actions the environment is exposing. Includes dummy (FAST) action.\nNUM_ACTIONS = 20\n\n# Number of actuated coils in sim (without the dummy action coil).\nNUM_COILS_ACTUATED = 19\n\n# Current and voltage limits by coil type\n# Note this are the limits used in the environments and are different\n# from the 'machine engineering limits' (as used/exposed by FGE).\n# We apply a safety factor (=< 1.0) to the engineering limits.\nCURRENT_SAFETY_FACTOR = 0.8\nENV_COIL_MAX_CURRENTS = collections.OrderedDict(\n    E=7500*CURRENT_SAFETY_FACTOR,\n    F=7500*CURRENT_SAFETY_FACTOR,\n    OH=26000*CURRENT_SAFETY_FACTOR,\n    DUMMY=2000*CURRENT_SAFETY_FACTOR,\n    G=2000*CURRENT_SAFETY_FACTOR)\n\n\n# The g-coil has a saturation voltage that is tunable on a shot-by-shot basis.\n# There is a deadband, where an action with absolute value of less than 8% of\n# the saturation voltage is treated as zero.\nENV_G_COIL_SATURATION_VOLTAGE = 300\nENV_G_COIL_DEADBAND = ENV_G_COIL_SATURATION_VOLTAGE * 0.08\n\nVOLTAGE_SAFETY_FACTOR = 1.0\nENV_COIL_MAX_VOLTAGE = collections.OrderedDict(\n    E=1400*VOLTAGE_SAFETY_FACTOR,\n    F=2200*VOLTAGE_SAFETY_FACTOR,\n    OH=1400*VOLTAGE_SAFETY_FACTOR,\n    DUMMY=400*VOLTAGE_SAFETY_FACTOR,\n    # This value is also used to clip values for the internal controller,\n    # and also to set the deadband voltage.\n    G=ENV_G_COIL_SATURATION_VOLTAGE)\n\n\n# Ordered actions send by a controller to the TCV.\nTCV_ACTIONS = (\n    'E_001', 'E_002', 'E_003', 'E_004', 'E_005', 'E_006', 'E_007', 'E_008',\n    'F_001', 'F_002', 'F_003', 'F_004', 'F_005', 'F_006', 'F_007', 'F_008',\n    'OH_001', 'OH_002',\n    'DUMMY_001',  # GAS, ignored by TCV.\n    'G_001'  # FAST\n)\nTCV_ACTION_INDICES = {n: i for i, n in enumerate(TCV_ACTIONS)}\n\nTCV_ACTION_TYPES = collections.OrderedDict(\n    E=8,\n    F=8,\n    OH=2,\n    DUMMY=1,\n    G=1,\n)\n\n# Map the TCV actions to ranges of indices in the array.\nTCV_ACTION_RANGES = named_array.NamedRanges(TCV_ACTION_TYPES)\n\n# The voltages seem not to be centered at 0, but instead near these values:\nTCV_ACTION_OFFSETS = {\n    'E_001': 6.79,\n    'E_002': -10.40,\n    'E_003': -1.45,\n    'E_004': 0.18,\n    'E_005': 11.36,\n    'E_006': -0.95,\n    'E_007': -4.28,\n    'E_008': 44.22,\n    'F_001': 38.49,\n    'F_002': -2.94,\n    'F_003': 5.58,\n    'F_004': 1.09,\n    'F_005': -36.63,\n    'F_006': -9.18,\n    'F_007': 5.34,\n    'F_008': 10.53,\n    'OH_001': -53.63,\n    'OH_002': -14.76,\n}\n\nTCV_ACTION_DELAYS = {\n    'E': [0.0005] * 8,\n    'F': [0.0005] * 8,\n    'OH': [0.0005] * 2,\n    'G': [0.0001],\n}\n\n\n# Ordered measurements and their dimensions from to the TCV controller specs.\nTCV_MEASUREMENTS = collections.OrderedDict(\n    clint_vloop=1,  # Flux loop 1\n    clint_rvloop=37,  # Difference of flux between loops 2-38 and flux loop 1\n    bm=38,  # Magnetic field probes\n    IE=8,  # E-coil currents\n    IF=8,  # F-coil currents\n    IOH=2,  # OH-coil currents\n    Bdot=20,  # Selection of 20 time-derivatives of magnetic field probes (bm).\n    DIOH=1,  # OH-coil currents difference: OH(0) - OH(1).\n    FIR_FRINGE=1,  # Not used, ignore.\n    IG=1,  # G-coil current\n    ONEMM=1,  # Not used, ignore\n    vloop=1,  # Flux loop 1 derivative\n    IPHI=1,  # Current through the Toroidal Field coils. Constant. Ignore.\n)\n\nNUM_MEASUREMENTS = sum(TCV_MEASUREMENTS.values())\n# map the TCV measurements to ranges of indices in the array\nTCV_MEASUREMENT_RANGES = named_array.NamedRanges(TCV_MEASUREMENTS)\n\n# Several of the measurement probes for the rvloops are broken. Add an extra key\n# that allows us to only grab the usable ones\nBROKEN_RVLOOP_IDXS = [9, 10, 11]\n\nTCV_MEASUREMENT_RANGES.set_range('clint_rvloop_usable', [\n    idx for i, idx in enumerate(TCV_MEASUREMENT_RANGES['clint_rvloop'])\n    if i not in BROKEN_RVLOOP_IDXS])\n\nTCV_COIL_CURRENTS_INDEX = [\n    *TCV_MEASUREMENT_RANGES['IE'],\n    *TCV_MEASUREMENT_RANGES['IF'],\n    *TCV_MEASUREMENT_RANGES['IOH'],\n    *TCV_MEASUREMENT_RANGES['IPHI'],  # In place of DUMMY.\n    *TCV_MEASUREMENT_RANGES['IG'],\n]\n\n\n# References for what we want the agent to accomplish.\nREF_RANGES = named_array.NamedRanges({\n    'R': 2,\n    'Z': 2,\n    'Ip': 2,\n    'kappa': 2,\n    'delta': 2,\n    'radius': 2,\n    'lambda': 2,\n    'diverted': 2,  # bool, must be diverted\n    'limited': 2,  # bool, must be limited\n    'shape_r': 32,\n    'shape_z': 32,\n    'x_points_r': 8,\n    'x_points_z': 8,\n    'legs_r': 16,  # Use for diverted/snowflake\n    'legs_z': 16,\n    'limit_point_r': 2,\n    'limit_point_z': 2,\n})\n\n# Environments should use a consistent datatype for interacting with agents.\nENVIRONMENT_DATA_TYPE = np.float64\n\n\ndef observation_spec():\n  \"\"\"Observation spec for all TCV environments.\"\"\"\n  return {\n      'references':\n          specs.Array(\n              shape=(REF_RANGES.size,),\n              dtype=ENVIRONMENT_DATA_TYPE,\n              name='references'),\n      'measurements':\n          specs.Array(\n              shape=(TCV_MEASUREMENT_RANGES.size,),\n              dtype=ENVIRONMENT_DATA_TYPE,\n              name='measurements'),\n      'last_action':\n          specs.Array(\n              shape=(TCV_ACTION_RANGES.size,),\n              dtype=ENVIRONMENT_DATA_TYPE,\n              name='last_action'),\n  }\n\n\ndef measurements_to_dict(measurements):\n  \"\"\"Converts a single measurement vector or a time series to a dict.\n\n  Args:\n    measurements: A single measurement of size `NUM_MEASUREMENTS` or a time\n      series, where the batch dimension is last, shape: (NUM_MEASUREMENTS, t).\n\n  Returns:\n    A dict mapping keys `TCV_MEASUREMENTS` to the corresponding measurements.\n\n  \"\"\"\n  assert measurements.shape[0] == NUM_MEASUREMENTS\n  measurements_dict = collections.OrderedDict()\n  index = 0\n  for key, dim in TCV_MEASUREMENTS.items():\n    measurements_dict[key] = measurements[index:index + dim, ...]\n    index += dim\n  return measurements_dict\n\n\ndef dict_to_measurement(measurement_dict):\n  \"\"\"Converts a single measurement dict to a vector or time series.\n\n  Args:\n    measurement_dict: A dict with the measurement keys containing np arrays of\n        size (meas_size, ...). The inner sizes all have to be the same.\n\n  Returns:\n    An array of size (num_measurements, ...)\n\n  \"\"\"\n  assert len(measurement_dict) == len(TCV_MEASUREMENTS)\n  # Grab the shape of the first array.\n  shape = measurement_dict['clint_vloop'].shape\n\n  out_shape = list(shape)\n  out_shape[0] = NUM_MEASUREMENTS\n  out_shape = tuple(out_shape)\n  measurements = np.zeros((out_shape))\n  index = 0\n  for key, dim in TCV_MEASUREMENTS.items():\n    dim = TCV_MEASUREMENTS[key]\n    measurements[index:index + dim, ...] = measurement_dict[key]\n    index += dim\n  return measurements\n\n\ndef action_spec():\n  return get_coil_spec(TCV_ACTIONS, ENV_COIL_MAX_VOLTAGE, ENVIRONMENT_DATA_TYPE)\n\n\ndef get_coil_spec(coil_names: Sequence[Text],\n                  spec_mapping,\n                  dtype=ENVIRONMENT_DATA_TYPE) -> specs.BoundedArray:\n  \"\"\"Maps specs indexed by coil type to coils given their type.\"\"\"\n  coil_max, coil_min = [], []\n  for name in coil_names:\n    # Coils names are <coil_type>_<coil_number>\n    coil_type, _ = name.split('_')\n    coil_max.append(spec_mapping[coil_type])\n    coil_min.append(-spec_mapping[coil_type])\n  return specs.BoundedArray(\n      shape=(len(coil_names),), dtype=dtype, minimum=coil_min, maximum=coil_max)\n\n\nINNER_LIMITER_R = 0.62400001\nOUTER_LIMITER_R = 1.14179182\nLIMITER_WIDTH = OUTER_LIMITER_R - INNER_LIMITER_R\nLIMITER_RADIUS = LIMITER_WIDTH / 2\nVESSEL_CENTER_R = INNER_LIMITER_R + LIMITER_RADIUS\n"
  },
  {
    "path": "fusion_tcv/terminations.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Terminations for the fusion environment.\"\"\"\n\nimport abc\nfrom typing import List, Optional\n\nimport numpy as np\n\nfrom fusion_tcv import fge_state\nfrom fusion_tcv import tcv_common\n\n\nclass Abstract(abc.ABC):\n  \"\"\"Abstract reward class.\"\"\"\n\n  @abc.abstractmethod\n  def terminate(self, state: fge_state.FGEState) -> Optional[str]:\n    \"\"\"Returns a reason if the situation should be considered a termination.\"\"\"\n\n\nclass CoilCurrentSaturation(Abstract):\n  \"\"\"Terminates if the coils have saturated their current.\"\"\"\n\n  def terminate(self, state: fge_state.FGEState) -> Optional[str]:\n    # Coil currents are checked by type, independent of the order.\n    for coil_type, max_current in tcv_common.ENV_COIL_MAX_CURRENTS.items():\n      if coil_type == \"DUMMY\":\n        continue\n      currents = state.get_coil_currents_by_type(coil_type)\n      if (np.abs(currents) > max_current).any():\n        return (f\"CoilCurrentSaturation: {coil_type}, max: {max_current}, \"\n                \"real: \" + \", \".join(f\"{c:.1f}\" for c in currents))\n    return None\n\n\nclass OHTooDifferent(Abstract):\n  \"\"\"Terminates if the coil currents are too far apart from one another.\"\"\"\n\n  def __init__(self, max_diff: float):\n    self._max_diff = max_diff\n\n  def terminate(self, state: fge_state.FGEState) -> Optional[str]:\n    oh_coil_currents = state.get_coil_currents_by_type(\"OH\")\n    assert len(oh_coil_currents) == 2\n    oh_current_abs = abs(oh_coil_currents[0] - oh_coil_currents[1])\n    if oh_current_abs > self._max_diff:\n      return (\"OHTooDifferent: currents: \"\n              f\"({oh_coil_currents[0]:.0f}, {oh_coil_currents[1]:.0f}), \"\n              f\"diff: {oh_current_abs:.0f}, max: {self._max_diff}\")\n    return None\n\n\nclass IPTooLow(Abstract):\n  \"\"\"Terminates if the magnitude of Ip in any component is too low.\"\"\"\n\n  def __init__(self, singlet_threshold: float, droplet_threshold: float):\n    self._singlet_threshold = singlet_threshold\n    self._droplet_threshold = droplet_threshold\n\n  def terminate(self, state: fge_state.FGEState) -> Optional[str]:\n    _, _, ip_d = state.rzip_d\n    if len(ip_d) == 1:\n      if ip_d[0] > self._singlet_threshold:  # Sign due to negative Ip.\n        return f\"IPTooLow: Singlet, {ip_d[0]:.0f}\"\n      return None\n    else:\n      if max(ip_d) > self._droplet_threshold:  # Sign due to negative Ip.\n        return f\"IPTooLow: Components: {ip_d[0]:.0f}, {ip_d[1]:.0f}\"\n      return None\n\n\nclass AnyTermination(Abstract):\n  \"\"\"Terminates if any of conditions are met.\"\"\"\n\n  def __init__(self, terminators: List[Abstract]):\n    self._terminators = terminators\n\n  def terminate(self, state: fge_state.FGEState) -> Optional[str]:\n    for terminator in self._terminators:\n      term = terminator.terminate(state)\n      if term:\n        return term\n    return None\n\n\nCURRENT_OH_IP = AnyTermination([\n    CoilCurrentSaturation(),\n    OHTooDifferent(max_diff=4000),\n    IPTooLow(singlet_threshold=-60000, droplet_threshold=-25000),\n])\n"
  },
  {
    "path": "fusion_tcv/trajectory.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"A trajectory for an episode.\"\"\"\n\nfrom typing import List\n\nimport dataclasses\nimport numpy as np\n\n\n@dataclasses.dataclass\nclass Trajectory:\n  \"\"\"A trajectory of actions/obs for an episode.\"\"\"\n  measurements: np.ndarray\n  references: np.ndarray\n  reward: np.ndarray\n  actions: np.ndarray\n\n  @classmethod\n  def stack(cls, series: List[\"Trajectory\"]) -> \"Trajectory\":\n    \"\"\"Stack a series of trajectories, adding a trailing time dimension.\"\"\"\n    values = {k: np.empty(v.shape + (len(series),))\n              for k, v in dataclasses.asdict(series[0]).items()\n              if v is not None}\n    for i, ts in enumerate(series):\n      for k, v in values.items():\n        v[..., i] = getattr(ts, k)\n    out = cls(**values)\n    return out\n"
  },
  {
    "path": "fusion_tcv/transforms.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Transforms from actual/target to rewards.\"\"\"\n\nimport abc\nimport math\nfrom typing import List, Optional\n\nimport dataclasses\n\n\n# Comparison of some of the transforms:\n# Order is NegExp, SoftPlus, Sigmoid.\n# Over range of good to bad:\n# https://www.wolframalpha.com/input/?i=plot+e%5E%28x*ln%280.1%29%29%2C2%2F%281%2Be%5E%28x*ln%2819%29%29%29%2C1%2F%281%2Be%5E%28-+%28-ln%2819%29+-+%28x-1%29*%282*ln%2819%29%29%29%29%29+from+x%3D0+to+2\n# When close to good:\n# https://www.wolframalpha.com/input/?i=plot+e%5E%28x*ln%280.1%29%29%2C2%2F%281%2Be%5E%28x*ln%2819%29%29%29%2C1%2F%281%2Be%5E%28-+%28-ln%2819%29+-+%28x-1%29*%282*ln%2819%29%29%29%29%29+from+x%3D0+to+0.2\n\n\nclass AbstractTransform(abc.ABC):\n\n  @abc.abstractmethod\n  def __call__(self, errors: List[float]) -> List[float]:\n    \"\"\"Transforms target errors into rewards.\"\"\"\n\n  @property\n  def outputs(self) -> Optional[int]:\n    return None\n\n\ndef clip(value: float, low: float, high: float) -> float:\n  \"\"\"Clip a value to the range of low - high.\"\"\"\n  if math.isnan(value):\n    return value\n  assert low <= high\n  return max(low, min(high, value))\n\n\ndef scale(v: float, a: float, b: float, c: float, d: float) -> float:\n  \"\"\"Scale a value, v on a line with anchor points a,b to new anchors c,d.\"\"\"\n  v01 = (v - a) / (b - a)\n  return c - v01 * (c - d)\n\n\ndef logistic(v: float) -> float:\n  \"\"\"Standard logistic, asymptoting to 0 and 1.\"\"\"\n  v = clip(v, -50, 50)  # Improve numerical stability.\n  return 1 / (1 + math.exp(-v))\n\n\n@dataclasses.dataclass(frozen=True)\nclass Equal(AbstractTransform):\n  \"\"\"Returns 1 if the error is 0 and not_equal_val otherwise.\"\"\"\n  not_equal_val: float = 0\n\n  def __call__(self, errors: List[float]) -> List[float]:\n    out = []\n    for err in errors:\n      if math.isnan(err):\n        out.append(err)\n      elif err == 0:\n        out.append(1)\n      else:\n        out.append(self.not_equal_val)\n    return out\n\n\nclass Abs(AbstractTransform):\n  \"\"\"Take the absolue value of the error. Does not guarantee 0-1.\"\"\"\n\n  @staticmethod\n  def __call__(errors: List[float]) -> List[float]:\n    return [abs(err) for err in errors]\n\n\nclass Neg(AbstractTransform):\n  \"\"\"Negate the error. Does not guarantee 0-1.\"\"\"\n\n  @staticmethod\n  def __call__(errors: List[float]) -> List[float]:\n    return [-err for err in errors]\n\n\n@dataclasses.dataclass(frozen=True)\nclass Pow(AbstractTransform):\n  \"\"\"Return a power of the error. Does not guarantee 0-1.\"\"\"\n  pow: float\n\n  def __call__(self, errors: List[float]) -> List[float]:\n    return [err**self.pow for err in errors]\n\n\n@dataclasses.dataclass(frozen=True)\nclass Log(AbstractTransform):\n  \"\"\"Return a log of the error. Does not guarantee 0-1.\"\"\"\n  eps: float = 1e-4\n\n  def __call__(self, errors: List[float]) -> List[float]:\n    return [math.log(err + self.eps) for err in errors]\n\n\n@dataclasses.dataclass(frozen=True)\nclass ClippedLinear(AbstractTransform):\n  \"\"\"Scales and clips errors, bad to 0, good to 1. If good=0, this is a relu.\"\"\"\n  bad: float\n  good: float = 0\n\n  def __call__(self, errors: List[float]) -> List[float]:\n    return [clip(scale(err, self.bad, self.good, 0, 1), 0, 1)\n            for err in errors]\n\n\n@dataclasses.dataclass(frozen=True)\nclass SoftPlus(AbstractTransform):\n  \"\"\"Scales and clips errors, bad to 0.1, good to 1, asymptoting to 0.\n\n  Based on the lower half of the logistic instead of the standard softplus as\n  we want it to be bounded from 0 to 1, with the good value being exactly 1.\n  Various constants can be chosen to get the softplus to give the desired\n  properties, but this is much simpler.\n  \"\"\"\n  bad: float\n  good: float = 0\n\n  # Constant to set the sharpness/slope of the softplus.\n  # Default was chosen such that the good/bad have 1 and 0.1 reward:\n  # https://www.wolframalpha.com/input/?i=plot+2%2F%281%2Be%5E%28x*ln%2819%29%29%29+from+x%3D0+to+2\n  low: float = -math.log(19)  # -2.9444389791664403\n\n  def __call__(self, errors: List[float]) -> List[float]:\n    return [clip(2 * logistic(scale(e, self.bad, self.good, self.low, 0)), 0, 1)\n            for e in errors]\n\n\n@dataclasses.dataclass(frozen=True)\nclass NegExp(AbstractTransform):\n  \"\"\"Scales and clips errors, bad to 0.1, good to 1, asymptoting to 0.\n\n  This scales the reward in an exponential space. This means there is a sharp\n  gradient toward reaching the value of good, flattening out at the value of\n  bad. This can be useful for a reward that gives meaningful signal far away,\n  but still have a sharp gradient near the true target.\n  \"\"\"\n  bad: float\n  good: float = 0\n\n  # Constant to set the sharpness/slope of the exponential.\n  # Default was chosen such that the good/bad have 1 and 0.1 reward:\n  # https://www.wolframalpha.com/input/?i=plot+e%5E%28x*ln%280.1%29%29+from+x%3D0+to+2\n  low: float = -math.log(0.1)\n\n  def __call__(self, errors: List[float]) -> List[float]:\n    return [clip(math.exp(-scale(e, self.bad, self.good, self.low, 0)), 0, 1)\n            for e in errors]\n\n\n@dataclasses.dataclass(frozen=True)\nclass Sigmoid(AbstractTransform):\n  \"\"\"Scales and clips errors, bad to 0.05, good to 0.95, asymptoting to 0-1.\"\"\"\n  good: float\n  bad: float\n\n  # Constants to set the sharpness/slope of the sigmoid.\n  # Defaults were chosen such that the good/bad have 0.95 and 0.05 reward:\n  # https://www.wolframalpha.com/input/?i=plot+1%2F%281%2Be%5E%28-+%28-ln%2819%29+-+%28x-1%29*%282*ln%2819%29%29%29%29%29+from+x%3D0+to+2\n  high: float = math.log(19)  # +2.9444389791664403\n  low: float = -math.log(19)  # -2.9444389791664403\n\n  def __call__(self, errors: List[float]) -> List[float]:\n    return [logistic(scale(err, self.bad, self.good, self.low, self.high))\n            for err in errors]\n\n"
  },
  {
    "path": "fusion_tcv/transforms_test.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Tests for transforms.\"\"\"\n\nimport math\n\nfrom absl.testing import absltest\nfrom fusion_tcv import transforms\n\n\nNAN = float(\"nan\")\n\n\nclass TransformsTest(absltest.TestCase):\n\n  def assertNan(self, value: float):\n    self.assertTrue(math.isnan(value))\n\n  def test_clip(self):\n    self.assertEqual(transforms.clip(-1, 0, 1), 0)\n    self.assertEqual(transforms.clip(5, 0, 1), 1)\n    self.assertEqual(transforms.clip(0.5, 0, 1), 0.5)\n    self.assertNan(transforms.clip(NAN, 0, 1))\n\n  def test_scale(self):\n    self.assertEqual(transforms.scale(0, 0, 0.5, 0, 1), 0)\n    self.assertEqual(transforms.scale(0.125, 0, 0.5, 0, 1), 0.25)\n    self.assertEqual(transforms.scale(0.25, 0, 0.5, 0, 1), 0.5)\n    self.assertEqual(transforms.scale(0.5, 0, 0.5, 0, 1), 1)\n    self.assertEqual(transforms.scale(1, 0, 0.5, 0, 1), 2)\n    self.assertEqual(transforms.scale(-1, 0, 0.5, 0, 1), -2)\n    self.assertEqual(transforms.scale(0.5, 1, 0, 0, 1), 0.5)\n    self.assertEqual(transforms.scale(0.25, 1, 0, 0, 1), 0.75)\n\n    self.assertEqual(transforms.scale(0, 0, 1, -4, 4), -4)\n    self.assertEqual(transforms.scale(0.25, 0, 1, -4, 4), -2)\n    self.assertEqual(transforms.scale(0.5, 0, 1, -4, 4), 0)\n    self.assertEqual(transforms.scale(0.75, 0, 1, -4, 4), 2)\n    self.assertEqual(transforms.scale(1, 0, 1, -4, 4), 4)\n\n    self.assertNan(transforms.scale(NAN, 0, 1, -4, 4))\n\n  def test_logistic(self):\n    self.assertLess(transforms.logistic(-50), 0.000001)\n    self.assertLess(transforms.logistic(-5), 0.01)\n    self.assertEqual(transforms.logistic(0), 0.5)\n    self.assertGreater(transforms.logistic(5), 0.99)\n    self.assertGreater(transforms.logistic(50), 0.999999)\n    self.assertAlmostEqual(transforms.logistic(0.8), math.tanh(0.4) / 2 + 0.5)\n    self.assertNan(transforms.logistic(NAN))\n\n  def test_exp_scaled(self):\n    t = transforms.NegExp(good=0, bad=1)\n    self.assertNan(t([NAN])[0])\n    self.assertAlmostEqual(t([0])[0], 1)\n    self.assertAlmostEqual(t([1])[0], 0.1)\n    self.assertLess(t([50])[0], 0.000001)\n\n    t = transforms.NegExp(good=10, bad=30)\n    self.assertAlmostEqual(t([0])[0], 1)\n    self.assertAlmostEqual(t([10])[0], 1)\n    self.assertLess(t([3000])[0], 0.000001)\n\n    t = transforms.NegExp(good=30, bad=10)\n    self.assertAlmostEqual(t([50])[0], 1)\n    self.assertAlmostEqual(t([30])[0], 1)\n    self.assertAlmostEqual(t([10])[0], 0.1)\n    self.assertLess(t([-90])[0], 0.00001)\n\n  def test_neg(self):\n    t = transforms.Neg()\n    self.assertEqual(t([-5, -3, 0, 1, 4]), [5, 3, 0, -1, -4])\n    self.assertNan(t([NAN])[0])\n\n  def test_abs(self):\n    t = transforms.Abs()\n    self.assertEqual(t([-5, -3, 0, 1, 4]), [5, 3, 0, 1, 4])\n    self.assertNan(t([NAN])[0])\n\n  def test_pow(self):\n    t = transforms.Pow(2)\n    self.assertEqual(t([-5, -3, 0, 1, 4]), [25, 9, 0, 1, 16])\n    self.assertNan(t([NAN])[0])\n\n  def test_log(self):\n    t = transforms.Log()\n    self.assertAlmostEqual(t([math.exp(2)])[0], 2, 4)  # Low precision from eps.\n    self.assertNan(t([NAN])[0])\n\n  def test_clipped_linear(self):\n    t = transforms.ClippedLinear(good=0.1, bad=0.3)\n    self.assertAlmostEqual(t([0])[0], 1)\n    self.assertAlmostEqual(t([0.05])[0], 1)\n    self.assertAlmostEqual(t([0.1])[0], 1)\n    self.assertAlmostEqual(t([0.15])[0], 0.75)\n    self.assertAlmostEqual(t([0.2])[0], 0.5)\n    self.assertAlmostEqual(t([0.25])[0], 0.25)\n    self.assertAlmostEqual(t([0.3])[0], 0)\n    self.assertAlmostEqual(t([0.4])[0], 0)\n    self.assertNan(t([NAN])[0])\n\n    t = transforms.ClippedLinear(good=1, bad=0.5)\n    self.assertAlmostEqual(t([1.5])[0], 1)\n    self.assertAlmostEqual(t([1])[0], 1)\n    self.assertAlmostEqual(t([0.75])[0], 0.5)\n    self.assertAlmostEqual(t([0.5])[0], 0)\n    self.assertAlmostEqual(t([0.25])[0], 0)\n\n  def test_softplus(self):\n    t = transforms.SoftPlus(good=0.1, bad=0.3)\n    self.assertEqual(t([0])[0], 1)\n    self.assertEqual(t([0.1])[0], 1)\n    self.assertAlmostEqual(t([0.3])[0], 0.1)\n    self.assertLess(t([0.5])[0], 0.01)\n    self.assertNan(t([NAN])[0])\n\n    t = transforms.SoftPlus(good=1, bad=0.5)\n    self.assertEqual(t([1.5])[0], 1)\n    self.assertEqual(t([1])[0], 1)\n    self.assertAlmostEqual(t([0.5])[0], 0.1)\n    self.assertLess(t([0.1])[0], 0.01)\n\n  def test_sigmoid(self):\n    t = transforms.Sigmoid(good=0.1, bad=0.3)\n    self.assertGreater(t([0])[0], 0.99)\n    self.assertAlmostEqual(t([0.1])[0], 0.95)\n    self.assertAlmostEqual(t([0.2])[0], 0.5)\n    self.assertAlmostEqual(t([0.3])[0], 0.05)\n    self.assertLess(t([0.4])[0], 0.01)\n    self.assertNan(t([NAN])[0])\n\n    t = transforms.Sigmoid(good=1, bad=0.5)\n    self.assertGreater(t([1.5])[0], 0.99)\n    self.assertAlmostEqual(t([1])[0], 0.95)\n    self.assertAlmostEqual(t([0.75])[0], 0.5)\n    self.assertAlmostEqual(t([0.5])[0], 0.05)\n    self.assertLess(t([0.25])[0], 0.01)\n\n  def test_equal(self):\n    t = transforms.Equal()\n    self.assertEqual(t([0])[0], 1)\n    self.assertEqual(t([0.001])[0], 0)\n    self.assertNan(t([NAN])[0])\n\n    t = transforms.Equal(not_equal_val=0.5)\n    self.assertEqual(t([0])[0], 1)\n    self.assertEqual(t([0.001])[0], 0.5)\n\n\nif __name__ == \"__main__\":\n  absltest.main()\n"
  },
  {
    "path": "galaxy_mergers/README.md",
    "content": "# A Deep Learning Approach for Characterizing Major Galaxy Mergers\n\nThis repository contains evaluation code and checkpoints to reproduce\nfigures in https://arxiv.org/abs/2102.05182.\n\nThe main evaluation module is `main.py`. It uses the provided checkpoint path\nand dataset path to run evaluation.\n\n\n## Setup\n\nTo set up a Python virtual environment with the required dependencies, run:\n\n```shell\npython3 -m venv galaxy_mergers_env\nsource galaxy_mergers_env/bin/activate\npip install --upgrade pip setuptools wheel\npip install -r requirements.txt\n```\n\n### License\n\nWhile the code is licensed under the Apache 2.0 License, the checkpoints weights\nare made available for non-commercial use only under the terms of the\nCreative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)\nlicense. You can find details at:\nhttps://creativecommons.org/licenses/by-nc/4.0/legalcode.\n\n\n### Citing our work\n\nIf you use this work, consider citing our paper:\n\n```bibtex\n@article{koppula2021deep,\n  title={A Deep Learning Approach for Characterizing Major Galaxy Mergers},\n  author={Koppula, Skanda and Bapst, Victor and Huertas-Company, Marc and Blackwell, Sam and Grabska-Barwinska, Agnieszka and Dieleman,   Sander and Huber, Andrea and Antropova, Natasha and Binkowski, Mikolaj and Openshaw, Hannah and others},\n  journal={Workshop for Machine Learning and the Physical Sciences @ NeurIPS 2020},\n  year={2021}\n}\n```\n"
  },
  {
    "path": "galaxy_mergers/antennae_helpers.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Helpers to pre-process Antennae galaxy images.\"\"\"\n\nimport collections\nimport os\n\nfrom astropy.io import fits\nimport numpy as np\nfrom scipy import ndimage\nimport tensorflow.compat.v2 as tf\n\n\ndef norm_antennae_images(images, scale=1000):\n  return tf.math.asinh(images/scale)\n\n\ndef renorm_antennae(images):\n  median = np.percentile(images.numpy().flatten(), 50)\n  img_range = np.ptp(images.numpy().flatten())\n  return (images - median) / (img_range / 2)\n\n\ndef get_antennae_images(antennae_fits_dir):\n  \"\"\"Load the raw Antennae galaxy images.\"\"\"\n  all_fits_files = [\n      os.path.join(antennae_fits_dir, f)\n      for f in os.listdir(antennae_fits_dir)\n  ]\n  freq_mapping = {'red': 160, 'blue': 850}\n\n  paired_fits_files = collections.defaultdict(list)\n  for f in all_fits_files:\n    redshift = float(f[-8:-5])\n    paired_fits_files[redshift].append(f)\n\n  for redshift, files in paired_fits_files.items():\n    paired_fits_files[redshift] = sorted(\n        files, key=lambda f: freq_mapping[f.split('/')[-1].split('_')[0]])\n\n  print('Reading files:', paired_fits_files)\n  print('Redshifts:', sorted(paired_fits_files.keys()))\n\n  galaxy_views = collections.defaultdict(list)\n  for redshift in paired_fits_files:\n    for view_path in paired_fits_files[redshift]:\n      with open(view_path, 'rb') as f:\n        fits_data = fits.open(f)\n        galaxy_views[redshift].append(np.array(fits_data[0].data))\n\n  batched_images = []\n  for redshift in paired_fits_files:\n    img = tf.constant(np.array(galaxy_views[redshift]))\n    img = tf.transpose(img, (1, 2, 0))\n    img = tf.image.resize(img, size=(60, 60))\n    batched_images.append(img)\n\n  return tf.stack(batched_images)\n\n\ndef preprocess_antennae_images(antennae_images):\n  \"\"\"Pre-process the Antennae galaxy images into a reasonable range.\"\"\"\n  rotated_antennae_images = [\n      ndimage.rotate(img, 10, reshape=True, cval=-1)[10:-10, 10:-10]\n      for img in antennae_images\n  ]\n  rotated_antennae_images = [\n      np.clip(img, 0, 1e9) for img in rotated_antennae_images\n  ]\n  rotated_antennae_images = tf.stack(rotated_antennae_images)\n  normed_antennae_images = norm_antennae_images(rotated_antennae_images)\n  normed_antennae_images = tf.clip_by_value(normed_antennae_images, 1, 4.5)\n  renormed_antennae_images = renorm_antennae(normed_antennae_images)\n  return renormed_antennae_images\n"
  },
  {
    "path": "galaxy_mergers/config.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Default config, focused on model evaluation.\"\"\"\n\nfrom ml_collections import config_dict\n\n\ndef get_config(filter_time_intervals=None):\n  \"\"\"Return config object for training.\"\"\"\n  config = config_dict.ConfigDict()\n  config.eval_strategy = config_dict.ConfigDict()\n  config.eval_strategy.class_name = 'OneDeviceConfig'\n  config.eval_strategy.kwargs = config_dict.ConfigDict(\n      dict(device_type='v100'))\n\n  ## Experiment config.\n  config.experiment_kwargs = config_dict.ConfigDict(dict(\n      resnet_kwargs=dict(\n          blocks_per_group_list=[3, 4, 6, 3],  # This choice is ResNet50.\n          bn_config=dict(\n              decay_rate=0.9,\n              eps=1e-5),\n          resnet_v2=False,\n          additional_features_mode='mlp',\n      ),\n      optimizer_config=dict(\n          class_name='Momentum',\n          kwargs={'momentum': 0.9},\n          # Set up the learning rate schedule.\n          lr_init=0.025,\n          lr_factor=0.1,\n          lr_schedule=(50e3, 100e3, 150e3),\n          gradient_clip=5.,\n      ),\n      l2_regularization=1e-4,\n      total_train_batch_size=128,\n      train_net_args={'is_training': True},\n      eval_batch_size=128,\n      eval_net_args={'is_training': True},\n      data_config=dict(\n          # dataset loading\n          dataset_path=None,\n          num_val_splits=10,\n          val_split=0,\n\n          # image cropping\n          image_size=(80, 80, 7),\n          train_crop_type='crop_fixed',\n          test_crop_type='crop_fixed',\n          n_crop_repeat=1,\n\n          train_augmentations=dict(\n              rotation_and_flip=True,\n              rescaling=True,\n              translation=True,\n          ),\n\n          test_augmentations=dict(\n              rotation_and_flip=False,\n              rescaling=False,\n              translation=False,\n          ),\n          test_time_ensembling='sum',\n\n          num_eval_buckets=5,\n          eval_confidence_interval=95,\n\n          task='grounded_unnormalized_regression',\n          loss_config=dict(\n              loss='mse',\n              mse_normalize=False,\n          ),\n          model_uncertainty=True,\n          additional_features='',\n          time_filter_intervals=filter_time_intervals,\n          class_boundaries={\n              '0': [[-1., 0]],\n              '1': [[0, 1.]]\n          },\n          frequencies_to_use='all',\n      ),\n      n_train_epochs=100\n      ))\n\n  return config\n"
  },
  {
    "path": "galaxy_mergers/evaluator.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\n\"\"\"Evaluation runner.\"\"\"\n\nimport collections\nfrom absl import logging\nimport tensorflow.compat.v2 as tf\n\nfrom galaxy_mergers import config as tp_config\nfrom galaxy_mergers import helpers\nfrom galaxy_mergers import losses\nfrom galaxy_mergers import model\nfrom galaxy_mergers import preprocessing\n\n\nclass GalaxyMergeClassifierEvaluator():\n  \"\"\"Galaxy Merge Rate Prediction Evaluation Runner.\"\"\"\n\n  def __init__(self, strategy, optimizer_config, total_train_batch_size,\n               train_net_args, eval_batch_size, eval_net_args,\n               l2_regularization, data_config, resnet_kwargs, n_train_epochs):\n    \"\"\"Initializes evaluator/experiment.\"\"\"\n    logging.info('Initializing evaluator...')\n    self._strategy = strategy\n    self._data_config = data_config\n    self._use_additional_features = bool(data_config['additional_features'])\n    self._eval_batch_size = eval_batch_size\n    self._eval_net_args = eval_net_args\n    self._num_buckets = data_config['num_eval_buckets']\n    self._n_repeats = data_config['n_crop_repeat']\n    self._image_size = data_config['image_size']\n    self._task_type = data_config['task']\n    self._loss_config = data_config['loss_config']\n    self._model_uncertainty = data_config['model_uncertainty']\n    del l2_regularization, optimizer_config, train_net_args\n    del total_train_batch_size, n_train_epochs\n\n    logging.info('Creating model...')\n    num_classes = 2 if self._model_uncertainty else 1\n    if self._task_type == losses.TASK_CLASSIFICATION:\n      num_classes = len(self._data_config['class_boundaries'])\n    self.model = model.ResNet(\n        n_repeats=self._data_config['n_crop_repeat'], num_classes=num_classes,\n        use_additional_features=self._use_additional_features, **resnet_kwargs)\n\n    self._eval_input = None\n\n  def build_eval_input(self, additional_lambdas=None):\n    \"\"\"Create the galaxy merger evaluation dataset.\"\"\"\n\n    def decode_fn(record_bytes):\n      parsed_example = tf.io.parse_single_example(\n          record_bytes,\n          {\n              'image':\n                  tf.io.VarLenFeature(tf.float32),\n              'image_shape':\n                  tf.io.FixedLenFeature([3], dtype=tf.int64),\n              'axis':\n                  tf.io.FixedLenFeature([], dtype=tf.int64),\n              'proposed_crop':\n                  tf.io.FixedLenFeature([2, 2], dtype=tf.int64),\n              'normalized_time':\n                  tf.io.FixedLenFeature([], dtype=tf.float32),\n              'unnormalized_time':\n                  tf.io.FixedLenFeature([], dtype=tf.float32),\n              'grounded_normalized_time':\n                  tf.io.FixedLenFeature([], dtype=tf.float32),\n              'redshift':\n                  tf.io.FixedLenFeature([], dtype=tf.float32),\n              'sequence_average_redshift':\n                  tf.io.FixedLenFeature([], dtype=tf.float32),\n              'mass':\n                  tf.io.FixedLenFeature([], dtype=tf.float32),\n              'time_index':\n                  tf.io.FixedLenFeature([], dtype=tf.int64),\n              'sequence_id':\n                  tf.io.FixedLenFeature([], dtype=tf.string),\n          })\n      parsed_example['image'] = tf.sparse.to_dense(\n          parsed_example['image'], default_value=0)\n      dataset_row = parsed_example\n      return dataset_row\n\n    def build_eval_pipeline(_):\n      \"\"\"Generate the processed input evaluation data.\"\"\"\n\n      logging.info('Building evaluation input pipeline...')\n      ds_path = self._data_config['dataset_path']\n      ds = tf.data.TFRecordDataset([ds_path]).map(decode_fn)\n\n      augmentations = dict(\n          rotation_and_flip=False,\n          rescaling=False,\n          translation=False\n          )\n      ds = preprocessing.prepare_dataset(\n          ds=ds, target_size=self._image_size,\n          crop_type=self._data_config['test_crop_type'],\n          n_repeats=self._n_repeats,\n          augmentations=augmentations,\n          task_type=self._task_type,\n          additional_features=self._data_config['additional_features'],\n          class_boundaries=self._data_config['class_boundaries'],\n          time_intervals=self._data_config['time_filter_intervals'],\n          frequencies_to_use=self._data_config['frequencies_to_use'],\n          additional_lambdas=additional_lambdas)\n\n      batched_ds = ds.cache().batch(self._eval_batch_size).prefetch(128)\n      logging.info('Finished building input pipeline...')\n      return batched_ds\n\n    return self._strategy.experimental_distribute_datasets_from_function(\n        build_eval_pipeline)\n\n  def run_test_model_ensemble(self, images, physical_features, augmentations):\n    \"\"\"Run evaluation on input images.\"\"\"\n    image_variations = [images]\n    image_shape = images.shape.as_list()\n\n    if augmentations['rotation_and_flip']:\n      image_variations = preprocessing.get_all_rotations_and_flips(\n          image_variations)\n\n    if augmentations['rescaling']:\n      image_variations = preprocessing.get_all_rescalings(\n          image_variations, image_shape[1], augmentations['translation'])\n\n    # Put all augmented images into the batch: batch * num_augmented\n    augmented_images = tf.stack(image_variations, axis=0)\n    augmented_images = tf.reshape(augmented_images, [-1] + image_shape[1:])\n    if self._use_additional_features:\n      physical_features = tf.concat(\n          [physical_features] * len(image_variations), axis=0)\n\n    n_reps = self._data_config['n_crop_repeat']\n    augmented_images = preprocessing.move_repeats_to_batch(augmented_images,\n                                                           n_reps)\n\n    logits_or_times = self.model(augmented_images, physical_features,\n                                 **self._eval_net_args)\n    if self._task_type == losses.TASK_CLASSIFICATION:\n      mu, log_sigma_sq = helpers.aggregate_classification_ensemble(\n          logits_or_times, len(image_variations),\n          self._data_config['test_time_ensembling'])\n    else:\n      assert self._task_type in losses.REGRESSION_TASKS\n      mu, log_sigma_sq = helpers.aggregate_regression_ensemble(\n          logits_or_times, len(image_variations),\n          self._model_uncertainty,\n          self._data_config['test_time_ensembling'])\n\n    return mu, log_sigma_sq\n\n  @property\n  def checkpoint_items(self):\n    return {'model': self.model}\n\n\ndef run_model_on_dataset(evaluator, dataset, config, n_batches=16):\n  \"\"\"Runs the model against a dataset, aggregates model output.\"\"\"\n\n  scalar_metrics_to_log = collections.defaultdict(list)\n  model_outputs_to_log = collections.defaultdict(list)\n  dataset_features_to_log = collections.defaultdict(list)\n\n  batch_count = 1\n  for all_inputs in dataset:\n    if config.experiment_kwargs.data_config['additional_features']:\n      images = all_inputs[0]\n      physical_features = all_inputs[1]\n      labels, regression_targets, _ = all_inputs[2:5]\n      other_dataset_features = all_inputs[5:]\n    else:\n      images, physical_features = all_inputs[0], None\n      labels, regression_targets, _ = all_inputs[1:4]\n      other_dataset_features = all_inputs[4:]\n\n    mu, log_sigma_sq = evaluator.run_test_model_ensemble(\n        images, physical_features,\n        config.experiment_kwargs.data_config['test_augmentations'])\n\n    loss_config = config.experiment_kwargs.data_config['loss_config']\n    task_type = config.experiment_kwargs.data_config['task']\n    uncertainty = config.experiment_kwargs.data_config['model_uncertainty']\n    conf = config.experiment_kwargs.data_config['eval_confidence_interval']\n    scalar_metrics, vector_metrics = losses.compute_loss_and_metrics(\n        mu, log_sigma_sq, regression_targets, labels,\n        task_type, uncertainty, loss_config, 0, conf, mode='eval')\n\n    for i, dataset_feature in enumerate(other_dataset_features):\n      dataset_features_to_log[i].append(dataset_feature.numpy())\n\n    for scalar_metric in scalar_metrics:\n      v = scalar_metrics[scalar_metric]\n      val = v if isinstance(v, int) or isinstance(v, float) else v.numpy()\n      scalar_metrics_to_log[scalar_metric].append(val)\n\n    for vector_metric in vector_metrics:\n      val = vector_metrics[vector_metric].numpy()\n      model_outputs_to_log[vector_metric].append(val)\n\n    regression_targets_np = regression_targets.numpy()\n    labels_np = labels.numpy()\n    model_outputs_to_log['regression_targets'].append(regression_targets_np)\n    model_outputs_to_log['labels'].append(labels_np)\n    model_outputs_to_log['model_input_images'].append(images.numpy())\n\n    if n_batches and batch_count >= n_batches:\n      break\n    batch_count += 1\n\n  return scalar_metrics_to_log, model_outputs_to_log, dataset_features_to_log\n\n\ndef get_config_dataset_evaluator(filter_time_intervals,\n                                 ckpt_path,\n                                 config_override=None,\n                                 setup_dataset=True):\n  \"\"\"Set-up a default config, evaluation dataset, and evaluator.\"\"\"\n  config = tp_config.get_config(filter_time_intervals=filter_time_intervals)\n\n  if config_override:\n    with config.ignore_type():\n      config.update_from_flattened_dict(config_override)\n\n  strategy = tf.distribute.OneDeviceStrategy(device='/gpu:0')\n  experiment = GalaxyMergeClassifierEvaluator(\n      strategy=strategy, **config.experiment_kwargs)\n\n  helpers.restore_checkpoint(ckpt_path, experiment)\n\n  if setup_dataset:\n    additional_lambdas = [\n        lambda ds: ds['sequence_id'],\n        lambda ds: ds['time_index'],\n        lambda ds: ds['axis'],\n        lambda ds: ds['normalized_time'],\n        lambda ds: ds['grounded_normalized_time'],\n        lambda ds: ds['unnormalized_time'],\n        lambda ds: ds['redshift'],\n        lambda ds: ds['mass']\n    ]\n\n    ds = experiment.build_eval_input(additional_lambdas=additional_lambdas)\n  else:\n    ds = None\n  return config, ds, experiment\n"
  },
  {
    "path": "galaxy_mergers/helpers.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Helpers for a galaxy merger model evaluation.\"\"\"\n\nimport glob\nimport os\nfrom astropy import cosmology\nfrom astropy.io import fits\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom PIL import Image\nimport tensorflow.compat.v2 as tf\n\n\ndef restore_checkpoint(checkpoint_dir, experiment):\n  checkpoint_path = tf.train.latest_checkpoint(checkpoint_dir)\n  global_step = tf.Variable(\n      0, dtype=tf.int32, trainable=False, name='global_step')\n  checkpoint = tf.train.Checkpoint(\n      _global_step_=global_step, **experiment.checkpoint_items)\n  checkpoint.restore(checkpoint_path)\n\n\ndef sum_average_transformed_mu_and_sigma(mu, log_sigma_sq):\n  \"\"\"Computes <mu>, var(mu) + <var> in transformed representation.\n\n  This corresponds to assuming that the output distribution is a sum of\n  Gaussian and computing the mean and variance of the resulting (non-Gaussian)\n  distribution.\n\n  Args:\n    mu: Tensor of shape [B, ...] representing the means of the input\n      distributions.\n    log_sigma_sq: Tensor of shape [B, ...] representing log(sigma**2) of the\n      input distributions. Can be None, in which case the variance is assumed\n      to be zero.\n\n  Returns:\n    mu: Tensor of shape [...] representing the means of the output\n      distributions.\n    log_sigma_sq: Tensor of shape [...] representing log(sigma**2) of the\n      output distributions.\n  \"\"\"\n  av_mu = tf.reduce_mean(mu, axis=0)\n  var_mu = tf.math.reduce_std(mu, axis=0)**2\n  if log_sigma_sq is None:\n    return av_mu, tf.math.log(var_mu)\n  max_log_sigma_sq = tf.reduce_max(log_sigma_sq, axis=0)\n  log_sigma_sq -= max_log_sigma_sq\n  # (sigma/sigma_0)**2\n  sigma_sq = tf.math.exp(log_sigma_sq)\n  # (<sigma**2>)/sigma_0**2 (<1)\n  av_sigma_sq = tf.reduce_mean(sigma_sq, axis=0)\n  # (<sigma**2> + var(mu))/sigma_0**2\n  av_sigma_sq += var_mu * tf.math.exp(-max_log_sigma_sq)\n  # log(<sigma**2> + var(mu))\n  log_av_sigma_sq = tf.math.log(av_sigma_sq) + max_log_sigma_sq\n  return av_mu, log_av_sigma_sq\n\n\ndef aggregate_regression_ensemble(logits_or_times, ensemble_size,\n                                  use_uncertainty, test_time_ensembling):\n  \"\"\"Aggregate output of model ensemble.\"\"\"\n  out_shape = logits_or_times.shape.as_list()[1:]\n  logits_or_times = tf.reshape(logits_or_times, [ensemble_size, -1] + out_shape)\n  mus = logits_or_times[..., 0]\n  log_sigma_sqs = logits_or_times[..., -1] if use_uncertainty else None\n\n  if test_time_ensembling == 'sum':\n    mu, log_sigma_sq = sum_average_transformed_mu_and_sigma(mus, log_sigma_sqs)\n  elif test_time_ensembling == 'none':\n    mu = mus[0]\n    log_sigma_sq = log_sigma_sqs[0] if use_uncertainty else None\n  else:\n    raise ValueError('Unexpected test_time_ensembling')\n  return mu, log_sigma_sq\n\n\ndef aggregate_classification_ensemble(logits_or_times, ensemble_size,\n                                      test_time_ensembling):\n  \"\"\"Averages the output logits across models in the ensemble.\"\"\"\n  out_shape = logits_or_times.shape.as_list()[1:]\n  logits = tf.reshape(logits_or_times, [ensemble_size, -1] + out_shape)\n\n  if test_time_ensembling == 'sum':\n    logits = tf.reduce_mean(logits, axis=0)\n    return logits, None\n  elif test_time_ensembling == 'none':\n    return logits, None\n  else:\n    raise ValueError('Unexpected test_time_ensembling')\n\n\ndef unpack_evaluator_output(data, return_seq_info=False, return_redshift=False):\n  \"\"\"Unpack evaluator.run_model_on_dataset output.\"\"\"\n  mus = np.array(data[1]['mu']).flatten()\n  sigmas = np.array(data[1]['sigma']).flatten()\n  regression_targets = np.array(data[1]['regression_targets']).flatten()\n  outputs = [mus, sigmas, regression_targets]\n\n  if return_seq_info:\n    seq_ids = np.array(data[2][0]).flatten()\n    seq_ids = np.array([seq_id.decode('UTF-8') for seq_id in seq_ids])\n    time_idxs = np.array(data[2][1]).flatten()\n    axes = np.array(data[2][2]).flatten()\n    outputs += [seq_ids, axes, time_idxs]\n\n  if return_redshift:\n    redshifts = np.array(data[2][6]).flatten()\n    outputs += [redshifts]\n\n  return outputs\n\n\ndef process_data_into_myrs(redshifts, *data_lists):\n  \"\"\"Converts normalized time to virial time using Planck cosmology.\"\"\"\n  # small hack to avoid build tools not recognizing non-standard trickery\n  #   done in the astropy library:\n  #   https://github.com/astropy/astropy/blob/master/astropy/cosmology/core.py#L3290\n  #   that dynamically generates and imports new classes.\n  planck13 = getattr(cosmology, 'Plank13')\n  hubble_constants = planck13.H(redshifts)  # (km/s)/megaparsec\n  inv_hubble_constants = 1/hubble_constants  # (megaparsec*s) / km\n  megaparsec_to_km = 1e19*3.1\n  seconds_to_gigayears = 1e-15/31.556\n  conversion_factor = megaparsec_to_km * seconds_to_gigayears\n  hubble_time_gigayears = conversion_factor * inv_hubble_constants\n\n  hubble_to_virial_time = 0.14  # approximate simulation-based conversion factor\n  virial_dyn_time = hubble_to_virial_time*hubble_time_gigayears.value\n  return [data_list*virial_dyn_time for data_list in data_lists]\n\n\ndef print_rmse_and_class_accuracy(mus, regression_targets, redshifts):\n  \"\"\"Convert to virial dynamical time and print stats.\"\"\"\n  time_pred, time_gt = process_data_into_myrs(\n      redshifts, mus, regression_targets)\n  time_sq_errors = (time_pred-time_gt)**2\n  rmse = np.sqrt(np.mean(time_sq_errors))\n  labels = regression_targets > 0\n  class_preds = mus > 0\n  accuracy = sum((labels == class_preds).astype(np.int8)) / len(class_preds)\n\n  print(f'95% Error: {np.percentile(np.sqrt(time_sq_errors), 95)}')\n  print(f'RMSE: {rmse}')\n  print(f'Classification Accuracy: {accuracy}')\n\n\ndef print_stats(vec, do_print=True):\n  fvec = vec.flatten()\n  if do_print:\n    print(len(fvec), min(fvec), np.mean(fvec), np.median(fvec), max(fvec))\n  return (len(fvec), min(fvec), np.mean(fvec), np.median(fvec), max(fvec))\n\n\ndef get_image_from_fits(base_dir, seq='475_31271', time='497', axis=2):\n  \"\"\"Read *.fits galaxy image from directory.\"\"\"\n  axis_map = {0: 'x', 1: 'y', 2: 'z'}\n  fits_glob = f'{base_dir}/{seq}/fits_of_flux_psf/{time}/*_{axis_map[axis]}_*.fits'\n\n  def get_freq_from_path(p):\n    return int(p.split('/')[-1].split('_')[2][1:])\n\n  fits_image_paths = sorted(glob.glob(fits_glob), key=get_freq_from_path)\n  assert len(fits_image_paths) == 7\n  combined_frequencies = []\n  for fit_path in fits_image_paths:\n    with open(fit_path, 'rb') as f:\n      fits_data = np.array(fits.open(f)[0].data.astype(np.float32))\n      combined_frequencies.append(fits_data)\n  fits_image = np.transpose(np.array(combined_frequencies), (1, 2, 0))\n  return fits_image\n\n\ndef stack_desired_galaxy_images(base_dir, seq, n_time_slices):\n  \"\"\"Searth through galaxy image directory gathering images.\"\"\"\n  fits_sequence_dir = os.path.join(base_dir, seq, 'fits_of_flux_psf')\n  all_times_for_seq = os.listdir(fits_sequence_dir)\n  hop = (len(all_times_for_seq)-1)//(n_time_slices-1)\n  desired_time_idxs = [k*hop for k in range(n_time_slices)]\n\n  all_imgs = []\n  for j in desired_time_idxs:\n    time = all_times_for_seq[j]\n    img = get_image_from_fits(base_dir=base_dir, seq=seq, time=time, axis=2)\n    all_imgs.append(img)\n\n  min_img_size = min([img.shape[0] for img in all_imgs])\n  return all_imgs, min_img_size\n\n\ndef draw_galaxy_image(image, target_size=None, color_map='viridis'):\n  normalized_image = image / max(image.flatten())\n  color_map = plt.get_cmap(color_map)\n  colored_image = color_map(normalized_image)[:, :, :3]\n  colored_image = (colored_image * 255).astype(np.uint8)\n  colored_image = Image.fromarray(colored_image, mode='RGB')\n  if target_size:\n    colored_image = colored_image.resize(target_size, Image.ANTIALIAS)\n  return colored_image\n\n\ndef collect_merger_sequence(ds, seq=b'370_11071', n_examples_to_sift=5000):\n  images, targets, redshifts = [], [], []\n  for i, all_inputs in enumerate(ds):\n    if all_inputs[4][0].numpy() == seq:\n      images.append(all_inputs[0][0].numpy())\n      targets.append(all_inputs[2][0].numpy())\n      redshifts.append(all_inputs[10][0].numpy())\n    if i > n_examples_to_sift: break\n  return np.squeeze(images), np.squeeze(targets), np.squeeze(redshifts)\n\n\ndef take_samples(sample_idxs, *data_lists):\n  return [np.take(l, sample_idxs, axis=0) for l in data_lists]\n"
  },
  {
    "path": "galaxy_mergers/interpretability_helpers.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Helpers to visualize gradients and other interpretability analysis.\"\"\"\n\nimport numpy as np\nimport tensorflow.compat.v2 as tf\n\n\ndef rotate_by_right_angle_multiple(image, rot=90):\n  \"\"\"Rotate an image by right angles.\"\"\"\n  if rot not in [0, 90, 180, 270]:\n    raise ValueError(f\"Cannot rotate by non-90 degree angle {rot}\")\n\n  if rot in [90, -270]:\n    image = np.transpose(image, (1, 0, 2))\n    image = image[::-1]\n  elif rot in [180, -180]:\n    image = image[::-1, ::-1]\n  elif rot in [270, -90]:\n    image = np.transpose(image, (1, 0, 2))\n    image = image[:, ::-1]\n\n  return image\n\n\ndef compute_gradient(images, evaluator, is_training=False):\n  inputs = tf.Variable(images[None], dtype=tf.float32)\n  with tf.GradientTape() as tape:\n    tape.watch(inputs)\n    time_sigma = evaluator.model(inputs, None, is_training)\n    grad_time = tape.gradient(time_sigma[:, 0], inputs)\n  return grad_time, time_sigma\n\n\ndef compute_grads_for_rotations(images, evaluator, is_training=False):\n  test_gradients, test_outputs = [], []\n  for rotation in np.arange(0, 360, 90):\n    images_rot = rotate_by_right_angle_multiple(images, rotation)\n    grads, time_sigma = compute_gradient(images_rot, evaluator, is_training)\n    grads = np.squeeze(grads.numpy())\n    inv_grads = rotate_by_right_angle_multiple(grads, -rotation)\n    test_gradients.append(inv_grads)\n    test_outputs.append(time_sigma.numpy())\n  return np.squeeze(test_gradients), np.squeeze(test_outputs)\n\n\ndef compute_grads_for_rotations_and_flips(images, evaluator):\n  grads, time_sigma = compute_grads_for_rotations(images, evaluator)\n  grads_f, time_sigma_f = compute_grads_for_rotations(images[::-1], evaluator)\n  grads_f = grads_f[:, ::-1]\n  all_grads = np.concatenate([grads, grads_f], 0)\n  model_outputs = np.concatenate((time_sigma, time_sigma_f), 0)\n  return all_grads, model_outputs\n\n\n"
  },
  {
    "path": "galaxy_mergers/losses.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Helpers to compute loss metrics.\"\"\"\n\nimport scipy.stats\nimport tensorflow.compat.v2 as tf\nimport tensorflow_probability as tfp\n\n\nTASK_CLASSIFICATION = 'classification'\nTASK_NORMALIZED_REGRESSION = 'normalized_regression'\nTASK_UNNORMALIZED_REGRESSION = 'unnormalized_regression'\nTASK_GROUNDED_UNNORMALIZED_REGRESSION = 'grounded_unnormalized_regression'\nREGRESSION_TASKS = [TASK_NORMALIZED_REGRESSION, TASK_UNNORMALIZED_REGRESSION,\n                    TASK_GROUNDED_UNNORMALIZED_REGRESSION]\nALL_TASKS = [TASK_CLASSIFICATION] + REGRESSION_TASKS\n\nLOSS_MSE = 'mse'\nLOSS_SOFTMAX_CROSS_ENTROPY = 'softmax_cross_entropy'\nALL_LOSSES = [LOSS_SOFTMAX_CROSS_ENTROPY, LOSS_MSE]\n\n\ndef normalize_regression_loss(regression_loss, predictions):\n  # Normalize loss such that:\n  # 1) E_{x uniform}[loss(x, prediction)] does not depend on prediction\n  # 2) E_{x uniform, prediction uniform}[loss(x, prediction)] is as before.\n  # Divides MSE regression loss by E[(prediction-x)^2]; assumes x=[-1,1]\n  normalization = 2./3.\n  normalized_loss = regression_loss / ((1./3 + predictions**2) / normalization)\n  return normalized_loss\n\n\ndef equal32(x, y):\n  return tf.cast(tf.equal(x, y), tf.float32)\n\n\ndef mse_loss(predicted, targets):\n  return (predicted - targets) ** 2\n\n\ndef get_std_factor_from_confidence_percent(percent):\n  dec = percent/100.\n  inv_dec = 1 - dec\n  return scipy.stats.norm.ppf(dec+inv_dec/2)\n\n\ndef get_all_metric_names(task_type, model_uncertainty, loss_config,  # pylint: disable=unused-argument\n                         mode='eval', return_dict=True):\n  \"\"\"Get all the scalar fields produced by compute_loss_and_metrics.\"\"\"\n  names = ['regularization_loss', 'prediction_accuracy', str(mode)+'_loss']\n  if task_type == TASK_CLASSIFICATION:\n    names += ['classification_loss']\n  else:\n    names += ['regression_loss', 'avg_mu', 'var_mu']\n    if model_uncertainty:\n      names += ['uncertainty_loss', 'scaled_regression_loss',\n                'uncertainty_plus_scaled_regression',\n                'avg_sigma', 'var_sigma',\n                'percent_in_conf_interval', 'error_sigma_correlation',\n                'avg_prob']\n  if return_dict:\n    return {name: 0. for name in names}\n  else:\n    return names\n\n\ndef compute_loss_and_metrics(mu, log_sigma_sq,\n                             regression_targets, labels,\n                             task_type, model_uncertainty, loss_config,\n                             regularization_loss=0., confidence_interval=95,\n                             mode='train'):\n  \"\"\"Computes loss statistics and other metrics.\"\"\"\n\n  scalars_to_log = dict()\n  vectors_to_log = dict()\n  scalars_to_log['regularization_loss'] = regularization_loss\n  vectors_to_log['mu'] = mu\n\n  if task_type == TASK_CLASSIFICATION:\n    cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(\n        logits=mu, labels=labels, name='cross_entropy')\n    classification_loss = tf.reduce_mean(cross_entropy, name='class_loss')\n    total_loss = classification_loss\n    sigma = None\n    scalars_to_log['classification_loss'] = classification_loss\n\n    predicted_labels = tf.argmax(mu, axis=1)\n    correct_predictions = equal32(predicted_labels, labels)\n\n  else:\n    regression_loss = mse_loss(mu, regression_targets)\n    if 'mse_normalize' in loss_config and loss_config['mse_normalize']:\n      assert task_type in [TASK_GROUNDED_UNNORMALIZED_REGRESSION,\n                           TASK_NORMALIZED_REGRESSION]\n      regression_loss = normalize_regression_loss(regression_loss, mu)\n\n    avg_regression_loss = tf.reduce_mean(regression_loss)\n    vectors_to_log['regression_loss'] = regression_loss\n    scalars_to_log['regression_loss'] = avg_regression_loss\n\n    scalars_to_log['avg_mu'] = tf.reduce_mean(mu)\n    scalars_to_log['var_mu'] = tf.reduce_mean(mse_loss(mu, tf.reduce_mean(mu)))\n\n    predicted_labels = tf.cast(mu > 0, tf.int64)\n    correct_predictions = equal32(predicted_labels, labels)\n\n    if model_uncertainty:\n      # This implements Eq. (1) in https://arxiv.org/pdf/1612.01474.pdf\n      inv_sigma_sq = tf.math.exp(-log_sigma_sq)\n      scaled_regression_loss = regression_loss * inv_sigma_sq\n      scaled_regression_loss = tf.reduce_mean(scaled_regression_loss)\n      uncertainty_loss = tf.reduce_mean(log_sigma_sq)\n      total_loss = uncertainty_loss + scaled_regression_loss\n\n      scalars_to_log['uncertainty_loss'] = uncertainty_loss\n      scalars_to_log['scaled_regression_loss'] = scaled_regression_loss\n      scalars_to_log['uncertainty_plus_scaled_regression'] = total_loss\n\n      sigma = tf.math.exp(log_sigma_sq / 2.)\n      vectors_to_log['sigma'] = sigma\n      scalars_to_log['avg_sigma'] = tf.reduce_mean(sigma)\n      var_sigma = tf.reduce_mean(mse_loss(sigma, tf.reduce_mean(sigma)))\n      scalars_to_log['var_sigma'] = var_sigma\n\n      # Compute # of labels that fall into the confidence interval.\n      std_factor = get_std_factor_from_confidence_percent(confidence_interval)\n      lower_bound = mu - std_factor *  sigma\n      upper_bound = mu + std_factor *  sigma\n      preds = tf.logical_and(tf.greater(regression_targets, lower_bound),\n                             tf.less(regression_targets, upper_bound))\n      percent_in_conf_interval = tf.reduce_mean(tf.cast(preds, tf.float32))\n      scalars_to_log['percent_in_conf_interval'] = percent_in_conf_interval*100\n\n      error_sigma_corr = tfp.stats.correlation(x=regression_loss,\n                                               y=sigma, event_axis=None)\n      scalars_to_log['error_sigma_correlation'] = error_sigma_corr\n\n      dists = tfp.distributions.Normal(mu, sigma)\n      probs = dists.prob(regression_targets)\n      scalars_to_log['avg_prob'] = tf.reduce_mean(probs)\n\n    else:\n      total_loss = avg_regression_loss\n\n  loss_name = str(mode)+'_loss'\n  total_loss = tf.add(total_loss, regularization_loss, name=loss_name)\n  scalars_to_log[loss_name] = total_loss\n  vectors_to_log['correct_predictions'] = correct_predictions\n  scalars_to_log['prediction_accuracy'] = tf.reduce_mean(correct_predictions)\n\n  # Validate that metrics outputted are exactly what is expected\n  expected = get_all_metric_names(task_type, model_uncertainty,\n                                  loss_config, mode, False)\n  assert set(expected) == set(scalars_to_log.keys())\n\n  return scalars_to_log, vectors_to_log\n"
  },
  {
    "path": "galaxy_mergers/main.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Simple script to model evaluation on a checkpoint and dataset.\"\"\"\n\nimport ast\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\n\nfrom galaxy_mergers import evaluator\n\nflags.DEFINE_string('checkpoint_path', '', 'Path to TF2 checkpoint to eval.')\nflags.DEFINE_string('data_path', '', 'Path to TFRecord(s) with data.')\nflags.DEFINE_string('filter_time_intervals', None,\n                    'Merger time intervals on which to perform regression.'\n                    'Specify None for the default time interval [-1,1], or'\n                    ' a custom list of intervals, e.g. [[-0.2,0], [0.5,1]].')\n\nFLAGS = flags.FLAGS\n\n\ndef main(_) -> None:\n  if FLAGS.filter_time_intervals is not None:\n    filter_time_intervals = ast.literal_eval(FLAGS.filter_time_intervals)\n  else:\n    filter_time_intervals = None\n  config, ds, experiment = evaluator.get_config_dataset_evaluator(\n      filter_time_intervals,\n      FLAGS.checkpoint_path,\n      config_override={\n          'experiment_kwargs.data_config.dataset_path': FLAGS.data_path,\n      })\n  metrics, _, _ = evaluator.run_model_on_dataset(experiment, ds, config)\n  logging.info('Evaluation complete. Metrics: %s', metrics)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "galaxy_mergers/model.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Fork of a generic ResNet to incorporate additional cosmological features.\"\"\"\n\nfrom typing import Mapping, Optional, Sequence, Text\n\nimport sonnet.v2 as snt\nimport tensorflow.compat.v2 as tf\n\n\nclass ResNet(snt.Module):\n  \"\"\"ResNet model.\"\"\"\n\n  def __init__(self,\n               n_repeats: int,\n               blocks_per_group_list: Sequence[int],\n               num_classes: int,\n               bn_config: Optional[Mapping[Text, float]] = None,\n               resnet_v2: bool = False,\n               channels_per_group_list: Sequence[int] = (256, 512, 1024, 2048),\n               use_additional_features: bool = False,\n               additional_features_mode: Optional[Text] = \"per_block\",\n               name: Optional[Text] = None):\n    \"\"\"Constructs a ResNet model.\n\n    Args:\n      n_repeats: The batch dimension for the input is expected to have the form\n        `B = b * n_repeats`. After the conv stack, the logits for the\n        `n_repeats` replicas are reduced, leading to an output batch dimension\n        of `b`.\n      blocks_per_group_list: A sequence of length 4 that indicates the number of\n        blocks created in each group.\n      num_classes: The number of classes to classify the inputs into.\n      bn_config: A dictionary of two elements, `decay_rate` and `eps` to be\n        passed on to the `BatchNorm` layers. By default the `decay_rate` is\n        `0.9` and `eps` is `1e-5`.\n      resnet_v2: Whether to use the v1 or v2 ResNet implementation. Defaults to\n        False.\n      channels_per_group_list: A sequence of length 4 that indicates the number\n        of channels used for each block in each group.\n      use_additional_features: If true, additional vector features will be\n        concatenated to the residual stack before logits are computed.\n      additional_features_mode: Mode for processing additional features.\n        Supported modes: 'mlp' and 'per_block'.\n      name: Name of the module.\n    \"\"\"\n    super(ResNet, self).__init__(name=name)\n    self._n_repeats = n_repeats\n    if bn_config is None:\n      bn_config = {\"decay_rate\": 0.9, \"eps\": 1e-5}\n    self._bn_config = bn_config\n    self._resnet_v2 = resnet_v2\n\n    # Number of blocks in each group for ResNet.\n    if len(blocks_per_group_list) != 4:\n      raise ValueError(\n          \"`blocks_per_group_list` must be of length 4 not {}\".format(\n              len(blocks_per_group_list)))\n    self._blocks_per_group_list = blocks_per_group_list\n\n    # Number of channels in each group for ResNet.\n    if len(channels_per_group_list) != 4:\n      raise ValueError(\n          \"`channels_per_group_list` must be of length 4 not {}\".format(\n              len(channels_per_group_list)))\n    self._channels_per_group_list = channels_per_group_list\n    self._use_additional_features = use_additional_features\n    self._additional_features_mode = additional_features_mode\n\n    self._initial_conv = snt.Conv2D(\n        output_channels=64,\n        kernel_shape=7,\n        stride=2,\n        with_bias=False,\n        padding=\"SAME\",\n        name=\"initial_conv\")\n    if not self._resnet_v2:\n      self._initial_batchnorm = snt.BatchNorm(\n          create_scale=True,\n          create_offset=True,\n          name=\"initial_batchnorm\",\n          **bn_config)\n\n    self._block_groups = []\n    strides = [1, 2, 2, 2]\n    for i in range(4):\n      self._block_groups.append(\n          snt.nets.resnet.BlockGroup(\n              channels=self._channels_per_group_list[i],\n              num_blocks=self._blocks_per_group_list[i],\n              stride=strides[i],\n              bn_config=bn_config,\n              resnet_v2=resnet_v2,\n              name=\"block_group_%d\" % (i)))\n\n    if self._resnet_v2:\n      self._final_batchnorm = snt.BatchNorm(\n          create_scale=True,\n          create_offset=True,\n          name=\"final_batchnorm\",\n          **bn_config)\n\n    self._logits = snt.Linear(\n        output_size=num_classes,\n        w_init=snt.initializers.VarianceScaling(scale=2.0), name=\"logits\")\n\n    if self._use_additional_features:\n      self._embedding = LinearBNReLU(output_size=16, name=\"embedding\",\n                                     **bn_config)\n\n      if self._additional_features_mode == \"mlp\":\n        self._feature_repr = LinearBNReLU(\n            output_size=self._channels_per_group_list[-1], name=\"features_repr\",\n            **bn_config)\n      elif self._additional_features_mode == \"per_block\":\n        self._feature_repr = []\n        for i, ch in enumerate(self._channels_per_group_list):\n          self._feature_repr.append(\n              LinearBNReLU(output_size=ch, name=f\"features_{i}\", **bn_config))\n      else:\n        raise ValueError(f\"Unsupported addiitonal features mode: \"\n                         f\"{additional_features_mode}\")\n\n  def __call__(self, inputs, features, is_training):\n    net = inputs\n    net = self._initial_conv(net)\n    if not self._resnet_v2:\n      net = self._initial_batchnorm(net, is_training=is_training)\n      net = tf.nn.relu(net)\n\n    net = tf.nn.max_pool2d(\n        net, ksize=3, strides=2, padding=\"SAME\", name=\"initial_max_pool\")\n\n    if self._use_additional_features:\n      assert features is not None\n      features = self._embedding(features, is_training=is_training)\n\n    for i, block_group in enumerate(self._block_groups):\n      net = block_group(net, is_training)\n\n      if (self._use_additional_features and\n          self._additional_features_mode == \"per_block\"):\n        features_i = self._feature_repr[i](features, is_training=is_training)\n        # support for n_repeats > 1\n        features_i = tf.repeat(features_i, self._n_repeats, axis=0)\n        net += features_i[:, None, None, :]  # expand to spacial resolution\n\n    if self._resnet_v2:\n      net = self._final_batchnorm(net, is_training=is_training)\n      net = tf.nn.relu(net)\n    net = tf.reduce_mean(net, axis=[1, 2], name=\"final_avg_pool\")\n    # Re-split the batch dimension\n    net = tf.reshape(net, [-1, self._n_repeats] + net.shape.as_list()[1:])\n    # Average over the various repeats of the input (e.g. those could have\n    # corresponded to different crops).\n    net = tf.reduce_mean(net, axis=1)\n\n    if (self._use_additional_features and\n        self._additional_features_mode == \"mlp\"):\n      net += self._feature_repr(features, is_training=is_training)\n\n    return self._logits(net)\n\n\nclass LinearBNReLU(snt.Module):\n  \"\"\"Wrapper class for Linear layer with Batch Norm and ReLU activation.\"\"\"\n\n  def __init__(self, output_size=64,\n               w_init=snt.initializers.VarianceScaling(scale=2.0),\n               name=\"linear\", **bn_config):\n    \"\"\"Constructs a LinearBNReLU module.\n\n    Args:\n      output_size: Output dimension.\n      w_init: weight Initializer for snt.Linear.\n      name: Name of the module.\n      **bn_config: Optional parameters to be passed to snt.BatchNorm.\n    \"\"\"\n    super(LinearBNReLU, self).__init__(name=name)\n    self._linear = snt.Linear(output_size=output_size, w_init=w_init,\n                              name=f\"{name}_linear\")\n    self._bn = snt.BatchNorm(create_scale=True, create_offset=True,\n                             name=f\"{name}_bn\", **bn_config)\n\n  def __call__(self, x, is_training):\n    x = self._linear(x)\n    x = self._bn(x, is_training=is_training)\n    return tf.nn.relu(x)\n"
  },
  {
    "path": "galaxy_mergers/preprocessing.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Pre-processing functions for input data.\"\"\"\n\nimport functools\nfrom absl import logging\nimport tensorflow.compat.v2 as tf\nfrom galaxy_mergers import losses\n\n\nCROP_TYPE_NONE = 'crop_none'\nCROP_TYPE_FIXED = 'crop_fixed'\nCROP_TYPE_RANDOM = 'crop_random'\n\nDATASET_FREQUENCY_MEAN = 4.0\nDATASET_FREQUENCY_RANGE = 8.0\n\nPHYSICAL_FEATURES_MIN_MAX = {\n    'redshift': (0.572788, 2.112304),\n    'mass': (9.823963, 10.951282)\n}\n\nALL_FREQUENCIES = [105, 125, 160, 435, 606, 775, 850]\n\nVALID_ADDITIONAL_FEATURES = ['redshift', 'sequence_average_redshift', 'mass']\n\n\ndef _make_padding_sizes(pad_size, random_centering):\n  if random_centering:\n    pad_size_left = tf.random.uniform(\n        shape=[], minval=0, maxval=pad_size+1, dtype=tf.int32)\n  else:\n    pad_size_left = pad_size // 2\n  pad_size_right = pad_size - pad_size_left\n  return pad_size_left, pad_size_right\n\n\ndef resize_and_pad(image, target_size, random_centering):\n  \"\"\"Resize image to target_size (<= image.size) and pad to original size.\"\"\"\n  original_shape = image.shape\n  size = tf.reshape(target_size, [1])\n  size = tf.concat([size, size], axis=0)\n  image = tf.image.resize(image, size=size)\n  pad_size = original_shape[1] - target_size\n  pad_size_left, pad_size_right = _make_padding_sizes(\n      pad_size, random_centering)\n  padding = [[pad_size_left, pad_size_right],\n             [pad_size_left, pad_size_right], [0, 0]]\n  if len(original_shape) == 4:\n    padding = [[0, 0]] + padding\n  image = tf.pad(image, padding)\n  image.set_shape(original_shape)\n  return image\n\n\ndef resize_and_extract(image, target_size, random_centering):\n  \"\"\"Upscale image to target_size (>image.size), extract original size crop.\"\"\"\n  original_shape = image.shape\n  size = tf.reshape(target_size, [1])\n  size = tf.concat([size, size], axis=0)\n  image = tf.image.resize(image, size=size)\n  pad_size = target_size - original_shape[1]\n  pad_size_left, pad_size_right = _make_padding_sizes(\n      pad_size, random_centering)\n  if len(original_shape) == 3:\n    image = tf.expand_dims(image, 0)\n  image = tf.cond(pad_size_right > 0,\n                  lambda: image[:, pad_size_left:-pad_size_right, :, :],\n                  lambda: image[:, pad_size_left:, :, :])\n  image = tf.cond(pad_size_right > 0,\n                  lambda: image[:, :, pad_size_left:-pad_size_right, :],\n                  lambda: image[:, :, pad_size_left:, :])\n  if len(original_shape) == 3:\n    image = tf.squeeze(image, 0)\n  image.set_shape(original_shape)\n  return image\n\n\ndef resize_and_center(image, target_size, random_centering):\n  return tf.cond(\n      tf.math.less_equal(target_size, image.shape[1]),\n      lambda: resize_and_pad(image, target_size, random_centering),\n      lambda: resize_and_extract(image, target_size, random_centering))\n\n\ndef random_rotation_and_flip(image):\n  angle = tf.random.uniform(shape=[], minval=0, maxval=4, dtype=tf.int32)\n  return tf.image.random_flip_left_right(tf.image.rot90(image, angle))\n\n\ndef get_all_rotations_and_flips(images):\n  assert isinstance(images, list)\n  new_images = []\n  for image in images:\n    for rotation in range(4):\n      new_images.append(tf.image.rot90(image, rotation))\n      flipped_image = tf.image.flip_left_right(image)\n      new_images.append(tf.image.rot90(flipped_image, rotation))\n  return new_images\n\n\ndef random_rescaling(image, random_centering):\n  assert image.shape.as_list()[0] == image.shape.as_list()[1]\n  original_size = image.shape.as_list()[1]\n  min_size = 2 * (original_size // 4)\n  max_size = original_size * 2\n  target_size = tf.random.uniform(\n      shape=[], minval=min_size, maxval=max_size // 2,\n      dtype=tf.int32) * 2\n  return resize_and_center(image, target_size, random_centering)\n\n\ndef get_all_rescalings(images, image_width, random_centering):\n  \"\"\"Get a uniform sample of rescalings of all images in input.\"\"\"\n  assert isinstance(images, list)\n  min_size = 2 * (image_width // 4)\n  max_size = image_width * 2\n  delta_size = (max_size + 2 - min_size) // 5\n  sizes = range(min_size, max_size + 2, delta_size)\n  new_images = []\n  for image in images:\n    for size in sizes:\n      new_images.append(resize_and_center(image, size, random_centering))\n  return new_images\n\n\ndef move_repeats_to_batch(image, n_repeats):\n  width, height, n_channels = image.shape.as_list()[1:]\n  image = tf.reshape(image, [-1, width, height, n_channels, n_repeats])\n  image = tf.transpose(image, [0, 4, 1, 2, 3])  # [B, repeats, x, y, c]\n  return tf.reshape(image, [-1, width, height, n_channels])\n\n\ndef get_classification_label(dataset_row, class_boundaries):\n  merge_time = dataset_row['grounded_normalized_time']\n  label = tf.dtypes.cast(0, tf.int64)\n  for category, intervals in class_boundaries.items():\n    for interval in intervals:\n      if merge_time > interval[0] and merge_time < interval[1]:\n        label = tf.dtypes.cast(int(category), tf.int64)\n  return label\n\n\ndef get_regression_label(dataset_row, task_type):\n  \"\"\"Returns time-until-merger regression target given desired modeling task.\"\"\"\n  if task_type == losses.TASK_NORMALIZED_REGRESSION:\n    return tf.dtypes.cast(dataset_row['normalized_time'], tf.float32)\n  elif task_type == losses.TASK_GROUNDED_UNNORMALIZED_REGRESSION:\n    return tf.dtypes.cast(dataset_row['grounded_normalized_time'], tf.float32)\n  elif task_type == losses.TASK_UNNORMALIZED_REGRESSION:\n    return tf.dtypes.cast(dataset_row['unnormalized_time'], tf.float32)\n  elif task_type == losses.TASK_CLASSIFICATION:\n    return tf.dtypes.cast(dataset_row['grounded_normalized_time'], tf.float32)\n  else:\n    raise ValueError\n\n\ndef get_normalized_time_target(dataset_row):\n  return tf.dtypes.cast(dataset_row['normalized_time'], tf.float32)\n\n\ndef apply_time_filter(dataset_row, time_interval):\n  \"\"\"Returns True if data is within the given time intervals.\"\"\"\n  merge_time = dataset_row['grounded_normalized_time']\n  lower_time, upper_time = time_interval\n  return merge_time > lower_time and merge_time < upper_time\n\n\ndef normalize_physical_feature(name, dataset_row):\n  min_feat, max_feat = PHYSICAL_FEATURES_MIN_MAX[name]\n  value = getattr(dataset_row, name)\n  return 2 * (value - min_feat) / (max_feat - min_feat) - 1\n\n\ndef prepare_dataset(ds, target_size, crop_type, n_repeats, augmentations,\n                    task_type, additional_features, class_boundaries,\n                    time_intervals=None, frequencies_to_use='all',\n                    additional_lambdas=None):\n  \"\"\"Prepare a zipped dataset of image, classification/regression labels.\"\"\"\n  def _prepare_image(dataset_row):\n    \"\"\"Transpose, crop and cast an image.\"\"\"\n    image = tf.dtypes.cast(dataset_row['image'], tf.float32)\n    image = tf.reshape(image, tf.cast(dataset_row['image_shape'], tf.int32))\n    image = tf.transpose(image, perm=[1, 2, 0])  # Convert to NHWC\n\n    freqs = ALL_FREQUENCIES if frequencies_to_use == 'all' else frequencies_to_use\n    idxs_to_keep = [ALL_FREQUENCIES.index(f) for f in freqs]\n    image = tf.gather(params=image, indices=idxs_to_keep, axis=-1)\n\n    # Based on offline computation on the empirical frequency range:\n    # Converts [0, 8.] ~~> [-1, 1]\n    image = (image - DATASET_FREQUENCY_MEAN)/(DATASET_FREQUENCY_RANGE/2.0)\n\n    def crop(image):\n      if crop_type == CROP_TYPE_FIXED:\n        crop_loc = tf.cast(dataset_row['proposed_crop'][0], tf.int32)\n        crop_size = tf.cast(dataset_row['proposed_crop'][1], tf.int32)\n        image = image[\n            crop_loc[0]:crop_loc[0] + crop_size[0],\n            crop_loc[1]:crop_loc[1] + crop_size[1], :]\n        image = tf.image.resize(image, target_size[0:2])\n        image.set_shape([target_size[0], target_size[1], target_size[2]])\n\n      elif crop_type == CROP_TYPE_RANDOM:\n        image = tf.image.random_crop(image, target_size)\n        image.set_shape([target_size[0], target_size[1], target_size[2]])\n\n      elif crop_type != CROP_TYPE_NONE:\n        raise NotImplementedError\n\n      return image\n\n    repeated_images = []\n    for _ in range(n_repeats):\n      repeated_images.append(crop(image))\n    image = tf.concat(repeated_images, axis=-1)\n\n    if augmentations['rotation_and_flip']:\n      image = random_rotation_and_flip(image)\n    if augmentations['rescaling']:\n      image = random_rescaling(image, augmentations['translation'])\n\n    return image\n\n  def get_regression_label_wrapper(dataset_row):\n    return get_regression_label(dataset_row, task_type=task_type)\n\n  def get_classification_label_wrapper(dataset_row):\n    return get_classification_label(dataset_row,\n                                    class_boundaries=class_boundaries)\n\n  if time_intervals:\n    for time_interval in time_intervals:\n      filter_fn = functools.partial(apply_time_filter,\n                                    time_interval=time_interval)\n      ds = ds.filter(filter_fn)\n\n  datasets = [ds.map(_prepare_image)]\n\n  if additional_features:\n    additional_features = additional_features.split(',')\n    assert all([f in VALID_ADDITIONAL_FEATURES for f in additional_features])\n    logging.info('Running with additional features: %s.',\n                 ', '.join(additional_features))\n\n    def _prepare_additional_features(dataset_row):\n      features = []\n      for f in additional_features:\n        features.append(normalize_physical_feature(f, dataset_row))\n      features = tf.convert_to_tensor(features, dtype=tf.float32)\n      features.set_shape([len(additional_features)])\n      return features\n\n    datasets += [ds.map(_prepare_additional_features)]\n\n  datasets += [\n      ds.map(get_classification_label_wrapper),\n      ds.map(get_regression_label_wrapper),\n      ds.map(get_normalized_time_target)]\n\n  if additional_lambdas:\n    for process_fn in additional_lambdas:\n      datasets += [ds.map(process_fn)]\n\n  return tf.data.Dataset.zip(tuple(datasets))\n\n"
  },
  {
    "path": "galaxy_mergers/requirements.txt",
    "content": "absl-py==0.11.0\nastropy==4.2\nastunparse==1.6.3\ncachetools==4.2.1\ncertifi==2020.12.5\nchardet==4.0.0\ncloudpickle==1.6.0\ncontextlib2==0.6.0.post1\ncycler==0.10.0\ndecorator==4.4.2\ndm-sonnet==2.0.0\ndm-tree==0.1.5\nflatbuffers==1.12\ngast==0.3.3\ngoogle-auth==1.27.0\ngoogle-auth-oauthlib==0.4.2\ngoogle-pasta==0.2.0\ngrpcio==1.32.0\nh5py==2.10.0\nidna==2.10\nKeras-Preprocessing==1.1.2\nkiwisolver==1.3.1\nMarkdown==3.3.4\nmatplotlib==3.3.4\nml-collections==0.1.0\nnumpy==1.19.5\noauthlib==3.1.0\nopt-einsum==3.3.0\nPillow==8.1.0\npkg-resources==0.0.0\nprotobuf==3.15.3\npyasn1==0.4.8\npyasn1-modules==0.2.8\npyerfa==1.7.2\npyparsing==2.4.7\npython-dateutil==2.8.1\nPyYAML==5.4.1\nrequests==2.25.1\nrequests-oauthlib==1.3.0\nrsa==4.7.2\nscipy==1.6.1\nsix==1.15.0\ntabulate==0.8.9\ntensorboard==2.4.1\ntensorboard-plugin-wit==1.8.0\ntensorflow==2.4.1\ntensorflow-estimator==2.4.0\ntensorflow-probability==0.12.1\ntermcolor==1.1.0\ntyping-extensions==3.7.4.3\nurllib3==1.26.3\nWerkzeug==1.0.1\nwrapt==1.12.1\n"
  },
  {
    "path": "gated_linear_networks/README.md",
    "content": "# Gated Linear Networks\n\nGated Linear Networks (GLNs) are a family of backpropation-free neural networks.\nEach neuron in a GLN predicts the target density (or probability mass) based on\nthe outputs of the previous layer and is trained under a logarthmic loss.\n\n## GLN variants\n\nNeurons have probabilistic \"activation functions\". Implementations are provided\nfor the following distributions:\n\n-   Gaussian, for regression.\n\n-   Bernoulli, for binary classification and multi-class classification using a\n    one-vs-all scheme.\n\n## Examples\n\nUsage examples are provided in [`examples`](examples).\n\n## Implementation details\n\n### Constraint satisfaction\n\nBecause each neuron implements a probability density/mass function we need to\nensure that they are well defined. For example, the scale parameter for a\nGaussian density needs to be positive. We implement these constraints using\nlinear projections and clipping.\n\n### Aggregation\n\nBecause each neuron predicts the target, we can use any neuron output as the\n\"network output\", and are not bound to the last layer. Typically last layer\nneuron(s) are the best predictors, but they might take longer to converge in\ntheory. In this implementation, we use a single neuron at the last layer, which\nthen forms the network output.\n\nThere are alternative ways of aggregating, e.g. see Switching Aggregation in\nAppendix D of *Gaussian Gated Linear Networks* (link:\nhttps://arxiv.org/pdf/2006.05964.pdf).\n\n## References\n\nComing soon.\n"
  },
  {
    "path": "gated_linear_networks/base.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Base classes for Gated Linear Networks.\"\"\"\n\nimport abc\nimport collections\nimport functools\nimport inspect\nfrom typing import Any, Callable, Optional, Sequence, Tuple\n\nimport chex\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\n\n\nArray = chex.Array\nDType = Any\nInitializer = hk.initializers.Initializer\nShape = Sequence[int]\n\nEPS = 1e-12\nMIN_ALPHA = 1e-5\n\n\ndef _l2_normalize(x: Array, axis: int) -> Array:\n  return x / jnp.sqrt(jnp.maximum(jnp.sum(x**2, axis, keepdims=True), EPS))\n\n\ndef _wrapped_fn_argnames(fun):\n  \"\"\"Returns list of argnames of a (possibly wrapped) function.\"\"\"\n  return tuple(inspect.signature(fun).parameters)\n\n\ndef _vmap(fun, in_axes=0, out_axes=0, parameters=None):\n  \"\"\"JAX vmap with human-friendly axes.\"\"\"\n\n  def _axes(fun, d):\n    \"\"\"Maps dict {kwarg_i, : val_i} to [None, ..., val_i, ..., None].\"\"\"\n    argnames = _wrapped_fn_argnames(fun) if not parameters else parameters\n    for key in d:\n      if key not in argnames:\n        raise ValueError(f\"{key} is not a valid axis.\")\n    return tuple(d.get(key, None) for key in argnames)\n\n  in_axes = _axes(fun, in_axes) if isinstance(in_axes, dict) else in_axes\n  return jax.vmap(fun, in_axes, out_axes)\n\n# Map a neuron-level function across a layer.\n_layer_vmap = functools.partial(\n    _vmap,\n    in_axes=({\n        \"weights\": 0,\n        \"hyperplanes\": 0,\n        \"hyperplane_bias\": 0,\n    }))\n\n\nclass NormalizedRandomNormal(hk.initializers.RandomNormal):\n  \"\"\"Random normal initializer with l2-normalization.\"\"\"\n\n  def __init__(self,\n               stddev: float = 1.,\n               mean: float = 0.,\n               normalize_axis: int = 0):\n    super(NormalizedRandomNormal, self).__init__(stddev, mean)\n    self._normalize_axis = normalize_axis\n\n  def __call__(self, shape: Shape, dtype: DType) -> Array:\n    if self._normalize_axis >= len(shape):\n      raise ValueError(\"Cannot normalize axis {} for ndim = {}.\".format(\n          self._normalize_axis, len(shape)))\n    weights = super(NormalizedRandomNormal, self).__call__(shape, dtype)\n    return _l2_normalize(weights, axis=self._normalize_axis)\n\n\nclass ShapeScaledConstant(hk.initializers.Initializer):\n  \"\"\"Initializes with a constant dependent on last dimension of input shape.\"\"\"\n\n  def __call__(self, shape: Shape, dtype: DType) -> jnp.ndarray:\n    constant = 1. / shape[-1]\n    return jnp.broadcast_to(constant, shape).astype(dtype)\n\n\nclass LocalUpdateModule(hk.Module):\n  \"\"\"Abstract base class for GLN variants and utils.\"\"\"\n\n  def __init__(self, name: Optional[str] = None):\n    if hasattr(self, \"__call__\"):\n      raise ValueError(\"Do not implement `__call__` for a LocalUpdateModule.\" +\n                       \" Implement `inference` and `update` instead.\")\n    super(LocalUpdateModule, self).__init__(name)\n\n  @abc.abstractmethod\n  def inference(self, *args, **kwargs):\n    \"\"\"Module inference step.\"\"\"\n\n  @abc.abstractmethod\n  def update(self, *args, **kwargs):\n    \"\"\"Module update step.\"\"\"\n\n  @property\n  @abc.abstractmethod\n  def output_sizes(self) -> Shape:\n    \"\"\"Returns network output sizes.\"\"\"\n\n\nclass GatedLinearNetwork(LocalUpdateModule):\n  \"\"\"Abstract base class for a multi-layer Gated Linear Network.\"\"\"\n\n  def __init__(self,\n               output_sizes: Shape,\n               context_dim: int,\n               inference_fn: Callable[..., Array],\n               update_fn: Callable[..., Array],\n               init: Initializer,\n               hyp_w_init: Optional[Initializer] = None,\n               hyp_b_init: Optional[Initializer] = None,\n               dtype: DType = jnp.float32,\n               name: str = \"gated_linear_network\"):\n    \"\"\"Initialize a GatedLinearNetwork as a sequence of GatedLinearLayers.\"\"\"\n    super(GatedLinearNetwork, self).__init__(name=name)\n\n    self._layers = []\n    self._output_sizes = output_sizes\n    for i, output_size in enumerate(self._output_sizes):\n      layer = _GatedLinearLayer(\n          output_size=output_size,\n          context_dim=context_dim,\n          update_fn=update_fn,\n          inference_fn=inference_fn,\n          init=init,\n          hyp_w_init=hyp_w_init,\n          hyp_b_init=hyp_b_init,\n          dtype=dtype,\n          name=name + \"_layer_{}\".format(i))\n      self._layers.append(layer)\n      self._name = name\n\n  @abc.abstractmethod\n  def _add_bias(self, inputs):\n    pass\n\n  def inference(self, inputs: Array, side_info: Array, *args,\n                **kwargs) -> Array:\n    \"\"\"GatedLinearNetwork inference.\"\"\"\n    predictions_per_layer = []\n    predictions = inputs\n    for layer in self._layers:\n      predictions = self._add_bias(predictions)\n      predictions = layer.inference(predictions, side_info, *args, **kwargs)\n      predictions_per_layer.append(predictions)\n\n    return jnp.concatenate(predictions_per_layer, axis=0)\n\n  def update(self, inputs, side_info, target, learning_rate, *args, **kwargs):\n    \"\"\"GatedLinearNetwork update.\"\"\"\n    all_params = []\n    all_predictions = []\n    all_losses = []\n    predictions = inputs\n    for layer in self._layers:\n      predictions = self._add_bias(predictions)\n\n      # Note: This is correct because returned predictions are pre-update.\n      params, predictions, log_loss = layer.update(predictions, side_info,\n                                                   target, learning_rate, *args,\n                                                   **kwargs)\n      all_params.append(params)\n      all_predictions.append(predictions)\n      all_losses.append(log_loss)\n\n    new_params = dict(collections.ChainMap(*all_params))\n    predictions = jnp.concatenate(all_predictions, axis=0)\n    log_loss = jnp.concatenate(all_losses, axis=0)\n\n    return new_params, predictions, log_loss\n\n  @property\n  def output_sizes(self):\n    return self._output_sizes\n\n  @staticmethod\n  def _compute_context(\n      side_info: Array,        # [side_info_size]\n      hyperplanes: Array,      # [context_dim, side_info_size]\n      hyperplane_bias: Array,  # [context_dim]\n  ) -> Array:\n    # Index weights by side information.\n    context_dim = hyperplane_bias.shape[0]\n    proj = jnp.dot(hyperplanes, side_info)\n    bits = (proj > hyperplane_bias).astype(jnp.int32)\n    weight_index = jnp.sum(\n        bits *\n        jnp.array([2**i for i in range(context_dim)])) if context_dim else 0\n    return weight_index\n\n\nclass _GatedLinearLayer(LocalUpdateModule):\n  \"\"\"A single layer of a Gated Linear Network.\"\"\"\n\n  def __init__(self,\n               output_size: int,\n               context_dim: int,\n               inference_fn: Callable[..., Array],\n               update_fn: Callable[..., Array],\n               init: Initializer,\n               hyp_w_init: Optional[Initializer] = None,\n               hyp_b_init: Optional[Initializer] = None,\n               dtype: DType = jnp.float32,\n               name: str = \"gated_linear_layer\"):\n    \"\"\"Initialize a GatedLinearLayer.\"\"\"\n    super(_GatedLinearLayer, self).__init__(name=name)\n    self._output_size = output_size\n    self._context_dim = context_dim\n    self._inference_fn = inference_fn\n    self._update_fn = update_fn\n    self._init = init\n    self._hyp_w_init = hyp_w_init\n    self._hyp_b_init = hyp_b_init\n    self._dtype = dtype\n    self._name = name\n\n  def _get_weights(self, input_size):\n    \"\"\"Get (or initialize) weight parameters.\"\"\"\n    weights = hk.get_parameter(\n        \"weights\",\n        shape=(self._output_size, 2**self._context_dim, input_size),\n        dtype=self._dtype,\n        init=self._init,\n    )\n\n    return weights\n\n  def _get_hyperplanes(self, side_info_size):\n    \"\"\"Get (or initialize) hyperplane weights and bias.\"\"\"\n\n    hyp_w_init = self._hyp_w_init or NormalizedRandomNormal(\n        stddev=1., normalize_axis=1)\n    hyperplanes = hk.get_state(\n        \"hyperplanes\",\n        shape=(self._output_size, self._context_dim, side_info_size),\n        init=hyp_w_init)\n\n    hyp_b_init = self._hyp_b_init or hk.initializers.RandomNormal(stddev=0.05)\n    hyperplane_bias = hk.get_state(\n        \"hyperplane_bias\",\n        shape=(self._output_size, self._context_dim),\n        init=hyp_b_init)\n\n    return hyperplanes, hyperplane_bias\n\n  def inference(self, inputs: Array, side_info: Array, *args,\n                **kwargs) -> Array:\n    \"\"\"GatedLinearLayer inference.\"\"\"\n    # Initialize layer weights.\n    weights = self._get_weights(inputs.shape[0])\n\n    # Initialize fixed random hyperplanes.\n    side_info_size = side_info.shape[0]\n    hyperplanes, hyperplane_bias = self._get_hyperplanes(side_info_size)\n\n    # Perform layer-wise inference by mapping along output_size (num_neurons).\n    layer_inference = _layer_vmap(self._inference_fn)\n    predictions = layer_inference(inputs, side_info, weights, hyperplanes,\n                                  hyperplane_bias, *args, **kwargs)\n\n    return predictions\n\n  def update(self, inputs: Array, side_info: Array, target: Array,\n             learning_rate: float, *args,\n             **kwargs) -> Tuple[Array, Array, Array]:\n    \"\"\"GatedLinearLayer update.\"\"\"\n    # Fetch layer weights.\n    weights = self._get_weights(inputs.shape[0])\n\n    # Fetch fixed random hyperplanes.\n    side_info_size = side_info.shape[0]\n    hyperplanes, hyperplane_bias = self._get_hyperplanes(side_info_size)\n\n    # Perform layer-wise update by mapping along output_size (num_neurons).\n    layer_update = _layer_vmap(self._update_fn)\n    new_weights, predictions, log_loss = layer_update(inputs, side_info,\n                                                      weights, hyperplanes,\n                                                      hyperplane_bias, target,\n                                                      learning_rate, *args,\n                                                      **kwargs)\n\n    assert new_weights.shape == weights.shape\n    params = {self.module_name: {\"weights\": new_weights}}\n    return params, predictions, log_loss\n\n  @property\n  def output_sizes(self):\n    return self._output_size\n\n\nclass Mutator(LocalUpdateModule):\n  \"\"\"Abstract base class for GLN Mutators.\"\"\"\n\n  def __init__(\n      self,\n      network_factory: Callable[..., LocalUpdateModule],\n      name: str,\n  ):\n    super(Mutator, self).__init__(name=name)\n    self._network = network_factory()\n    self._name = name\n\n  @property\n  def output_sizes(self):\n    return self._network.output_sizes\n\n\nclass LastNeuronAggregator(Mutator):\n  \"\"\"Last neuron aggregator: network output is read from the last neuron.\"\"\"\n\n  def __init__(\n      self,\n      network_factory: Callable[..., LocalUpdateModule],\n      name: str = \"last_neuron\",\n  ):\n    super(LastNeuronAggregator, self).__init__(network_factory, name)\n    if self._network.output_sizes[-1] != 1:\n      raise ValueError(\n          \"LastNeuronAggregator requires the last GLN layer to have\"\n          \" output_size = 1.\")\n\n  def inference(self, *args, **kwargs) -> Array:\n    predictions = self._network.inference(*args, **kwargs)\n    return predictions[-1]\n\n  def update(self, *args, **kwargs) -> Tuple[Array, Array, Array]:\n    params_t, predictions_tm1, loss_tm1 = self._network.update(*args, **kwargs)\n    return params_t, predictions_tm1[-1], loss_tm1[-1]\n"
  },
  {
    "path": "gated_linear_networks/bernoulli.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Bernoulli Gated Linear Network.\"\"\"\n\nfrom typing import List, Text, Tuple\n\nimport chex\nimport jax\nimport jax.numpy as jnp\nimport rlax\nimport tensorflow_probability as tfp\n\nfrom gated_linear_networks import base\n\ntfp = tfp.experimental.substrates.jax\ntfd = tfp.distributions\n\nArray = chex.Array\n\nGLN_EPS = 0.01\nMAX_WEIGHT = 200.\n\n\nclass GatedLinearNetwork(base.GatedLinearNetwork):\n  \"\"\"Bernoulli Gated Linear Network.\"\"\"\n\n  def __init__(self,\n               output_sizes: List[int],\n               context_dim: int,\n               name: Text = \"bernoulli_gln\"):\n    \"\"\"Initialize a Bernoulli GLN.\"\"\"\n    super(GatedLinearNetwork, self).__init__(\n        output_sizes,\n        context_dim,\n        inference_fn=GatedLinearNetwork._inference_fn,\n        update_fn=GatedLinearNetwork._update_fn,\n        init=jnp.zeros,\n        dtype=jnp.float32,\n        name=name)\n\n  def _add_bias(self, inputs):\n    return jnp.append(inputs, rlax.sigmoid(1.))\n\n  @staticmethod\n  def _inference_fn(\n      inputs: Array,           # [input_size]\n      side_info: Array,        # [side_info_size]\n      weights: Array,          # [2**context_dim, input_size]\n      hyperplanes: Array,      # [context_dim, side_info_size]\n      hyperplane_bias: Array,  # [context_dim]\n  ) -> Array:\n    \"\"\"Inference step for a single Beurnolli neuron.\"\"\"\n\n    weight_index = GatedLinearNetwork._compute_context(side_info, hyperplanes,\n                                                       hyperplane_bias)\n    used_weights = weights[weight_index]\n    inputs = rlax.logit(jnp.clip(inputs, GLN_EPS, 1. - GLN_EPS))\n    prediction = rlax.sigmoid(jnp.dot(used_weights, inputs))\n\n    return prediction\n\n  @staticmethod\n  def _update_fn(\n      inputs: Array,           # [input_size]\n      side_info: Array,        # [side_info_size]\n      weights: Array,          # [2**context_dim, num_features]\n      hyperplanes: Array,      # [context_dim, side_info_size]\n      hyperplane_bias: Array,  # [context_dim]\n      target: Array,           # []\n      learning_rate: float,\n  ) -> Tuple[Array, Array, Array]:\n    \"\"\"Update step for a single Bernoulli neuron.\"\"\"\n\n    def log_loss_fn(inputs, side_info, weights, hyperplanes, hyperplane_bias,\n                    target):\n      \"\"\"Log loss for a single Bernoulli neuron.\"\"\"\n      prediction = GatedLinearNetwork._inference_fn(inputs, side_info, weights,\n                                                    hyperplanes,\n                                                    hyperplane_bias)\n      prediction = jnp.clip(prediction, GLN_EPS, 1. - GLN_EPS)\n      return rlax.log_loss(prediction, target), prediction\n\n    grad_log_loss = jax.value_and_grad(log_loss_fn, argnums=2, has_aux=True)\n    ((log_loss, prediction),\n     dloss_dweights) = grad_log_loss(inputs, side_info, weights, hyperplanes,\n                                     hyperplane_bias, target)\n\n    delta_weights = learning_rate * dloss_dweights\n    new_weights = jnp.clip(weights - delta_weights, -MAX_WEIGHT, MAX_WEIGHT)\n    return new_weights, prediction, log_loss\n\n\nclass LastNeuronAggregator(base.LastNeuronAggregator):\n  \"\"\"Bernoulli last neuron aggregator, implemented by the super class.\"\"\"\n  pass\n"
  },
  {
    "path": "gated_linear_networks/bernoulli_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Tests for `bernoulli.py`.\"\"\"\n\nfrom absl.testing import absltest\nfrom absl.testing import parameterized\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\nimport tree\n\nfrom gated_linear_networks import bernoulli\n\n\ndef _get_dataset(input_size, batch_size=None):\n  \"\"\"Get mock dataset.\"\"\"\n  if batch_size:\n    inputs = jnp.ones([batch_size, input_size])\n    side_info = jnp.ones([batch_size, input_size])\n    targets = jnp.ones([batch_size])\n  else:\n    inputs = jnp.ones([input_size])\n    side_info = jnp.ones([input_size])\n    targets = jnp.ones([])\n\n  return inputs, side_info, targets\n\n\nclass GatedLinearNetworkTest(parameterized.TestCase):\n\n  # TODO(b/170843789): Factor out common test utilities.\n  def setUp(self):\n    super(GatedLinearNetworkTest, self).setUp()\n    self._name = \"test_network\"\n    self._rng = hk.PRNGSequence(jax.random.PRNGKey(42))\n\n    self._output_sizes = (4, 5, 6)\n    self._context_dim = 2\n\n    def gln_factory():\n      return bernoulli.GatedLinearNetwork(\n          output_sizes=self._output_sizes,\n          context_dim=self._context_dim,\n          name=self._name)\n\n    def inference_fn(inputs, side_info):\n      return gln_factory().inference(inputs, side_info)\n\n    def batch_inference_fn(inputs, side_info):\n      return jax.vmap(inference_fn, in_axes=(0, 0))(inputs, side_info)\n\n    def update_fn(inputs, side_info, label, learning_rate):\n      params, predictions, unused_loss = gln_factory().update(\n          inputs, side_info, label, learning_rate)\n      return predictions, params\n\n    def batch_update_fn(inputs, side_info, label, learning_rate):\n      predictions, params = jax.vmap(\n          update_fn, in_axes=(0, 0, 0, None))(inputs, side_info, label,\n                                              learning_rate)\n      avg_params = tree.map_structure(lambda x: jnp.mean(x, axis=0), params)\n      return predictions, avg_params\n\n    # Haiku transform functions.\n    self._init_fn, inference_fn_ = hk.without_apply_rng(\n        hk.transform_with_state(inference_fn))\n    self._batch_init_fn, batch_inference_fn_ = hk.without_apply_rng(\n        hk.transform_with_state(batch_inference_fn))\n    _, update_fn_ = hk.without_apply_rng(hk.transform_with_state(update_fn))\n    _, batch_update_fn_ = hk.without_apply_rng(\n        hk.transform_with_state(batch_update_fn))\n\n    self._inference_fn = jax.jit(inference_fn_)\n    self._batch_inference_fn = jax.jit(batch_inference_fn_)\n    self._update_fn = jax.jit(update_fn_)\n    self._batch_update_fn = jax.jit(batch_update_fn_)\n\n  @parameterized.named_parameters((\"Online mode\", None), (\"Batch mode\", 3))\n  def test_shapes(self, batch_size):\n    \"\"\"Test shapes in online and batch regimes.\"\"\"\n    if batch_size is None:\n      init_fn = self._init_fn\n      inference_fn = self._inference_fn\n    else:\n      init_fn = self._batch_init_fn\n      inference_fn = self._batch_inference_fn\n\n    input_size = 10\n    inputs, side_info, _ = _get_dataset(input_size, batch_size)\n    input_size = inputs.shape[-1]\n\n    # Initialize network.\n    gln_params, gln_state = init_fn(next(self._rng), inputs, side_info)\n\n    # Test shapes of parameters layer-wise.\n    layer_input_size = input_size\n    for layer_idx, output_size in enumerate(self._output_sizes):\n      name = \"{}/~/{}_layer_{}\".format(self._name, self._name, layer_idx)\n      weights = gln_params[name][\"weights\"]\n      expected_shape = (output_size, 2**self._context_dim, layer_input_size + 1)\n      self.assertEqual(weights.shape, expected_shape)\n\n      layer_input_size = output_size\n\n    # Test shape of output.\n    output_size = sum(self._output_sizes)\n    predictions, _ = inference_fn(gln_params, gln_state, inputs, side_info)\n    expected_shape = (batch_size, output_size) if batch_size else (output_size,)\n    self.assertEqual(predictions.shape, expected_shape)\n\n  @parameterized.named_parameters((\"Online mode\", None), (\"Batch mode\", 3))\n  def test_update(self, batch_size):\n    \"\"\"Test network updates in online and batch regimes.\"\"\"\n    if batch_size is None:\n      init_fn = self._init_fn\n      inference_fn = self._inference_fn\n      update_fn = self._update_fn\n    else:\n      init_fn = self._batch_init_fn\n      inference_fn = self._batch_inference_fn\n      update_fn = self._batch_update_fn\n\n    input_size = 10\n    inputs, side_info, targets = _get_dataset(input_size, batch_size)\n\n    # Initialize network.\n    initial_params, gln_state = init_fn(next(self._rng), inputs, side_info)\n\n    # Initial predictions.\n    initial_predictions, _ = inference_fn(initial_params, gln_state, inputs,\n                                          side_info)\n\n    # Test that params remain valid after consecutive updates.\n    gln_params = initial_params\n\n    for _ in range(3):\n      (_, gln_params), gln_state = update_fn(\n          gln_params, gln_state, inputs, side_info, targets, learning_rate=1e-4)\n\n      # Check updated weights layer-wise.\n      for layer_idx in range(len(self._output_sizes)):\n        name = \"{}/~/{}_layer_{}\".format(self._name, self._name, layer_idx)\n\n        initial_weights = initial_params[name][\"weights\"]\n        new_weights = gln_params[name][\"weights\"]\n\n        # Shape consistency.\n        self.assertEqual(new_weights.shape, initial_weights.shape)\n\n      # Check that different weights yield different predictions.\n      new_predictions, _ = inference_fn(gln_params, gln_state, inputs,\n                                        side_info)\n      self.assertFalse(np.array_equal(new_predictions, initial_predictions))\n\n  def test_batch_consistency(self):\n    \"\"\"Test consistency between online and batch updates.\"\"\"\n\n    input_size = 10\n    batch_size = 3\n    inputs, side_info, targets = _get_dataset(input_size, batch_size)\n\n    # Initialize network.\n    gln_params, gln_state = self._batch_init_fn(\n        next(self._rng), inputs, side_info)\n    test_layer = \"{}/~/{}_layer_0\".format(self._name, self._name)\n\n    for _ in range(10):\n\n      # Update on full batch.\n      (expected_predictions, expected_params), _ = self._batch_update_fn(\n          gln_params, gln_state, inputs, side_info, targets, learning_rate=1e-3)\n\n      # Average updates across batch and check equivalence.\n      accum_predictions = []\n      accum_weights = []\n      for inputs_, side_info_, targets_ in zip(inputs, side_info, targets):\n        (predictions, params), _ = self._update_fn(\n            gln_params,\n            gln_state,\n            inputs_,\n            side_info_,\n            targets_,\n            learning_rate=1e-3)\n        accum_predictions.append(predictions)\n        accum_weights.append(params[test_layer][\"weights\"])\n\n      # Check prediction equivalence.\n      actual_predictions = np.stack(accum_predictions, axis=0)\n      np.testing.assert_array_almost_equal(actual_predictions,\n                                           expected_predictions)\n\n      # Check weight equivalence.\n      actual_weights = np.mean(np.stack(accum_weights, axis=0), axis=0)\n      expected_weights = expected_params[test_layer][\"weights\"]\n      np.testing.assert_array_almost_equal(actual_weights, expected_weights)\n\n      gln_params = expected_params\n\n\nif __name__ == \"__main__\":\n  absltest.main()\n"
  },
  {
    "path": "gated_linear_networks/colabs/README.md",
    "content": "# Colabs\n\n## Dendritic Gated Networks\n\n`dendritic_gated_network.ipynb` implements a Dendritic Gated Network (DGN) solving a regression (using quadratic loss) or a binary classification problem (using Bernoulli log loss).\n\nSee our paper titled [\"A rapid and efficient learning rule for biological neural circuits\"](https://www.biorxiv.org/content/10.1101/2021.03.10.434756v1) for details of the DGN model.\n\n### Instructions for running the `dendritic_gated_network.ipynb` colab/notebook.\n\nWe suggest running the [dendritic_gated_network.ipynb](https://github.com/deepmind/deepmind-research/blob/master/gated_linear_networks/colabs/dendritic_gated_network.ipynb) notebook using Google Colaboratory (or Colab). All the dependencies are included by default in Colab cloud runtimes (last tested on the 8th of March, 2021). See https://research.google.com/colaboratory/faq.html for web browser requirements. The notebook runs for about a minute using the free tier runtimes.\n\nThe code also runs in JupyterLab/JupyterNotebook (tested on Version 1.02).\n\n1. Visit https://colab.research.google.com/\n2. Sign in with your Google account.\n3. Click on \"File\" and select \"Open notebook\".\n\n4. Then you can\n * either open the notebook directly from GitHub:\n     * Click on the GitHub tab\n     * Paste https://github.com/deepmind/deepmind-research/blob/master/gated_linear_networks/colabs/dendritic_gated_network.ipynb into the URL section and click the search button. If the notebook does not open automatically, then select the correct notebook from the list provided.\n * or upload the provided notebook manually:\n     * Click on the Upload tab\n     * Choose or drag dendritic_gated_network.ipynb\n5. Click Connect (top right corner) to connect to a run time\n6. Click on the \"Runtime\" tab and select \"Run all\" to run all the cells.\n\n### Expected outputs\nWe provide the expected outputs below.\n\nClassification (do_classification = True):\n\n```\nepoch: 0, test loss: 0.693 (train: 0.693), test accuracy: 0.412 (train: 0.363)\nepoch: 1, test loss: 0.099 (train: 0.196), test accuracy: 0.974 (train: 0.963)\nepoch: 2, test loss: 0.095 (train: 0.079), test accuracy: 0.974 (train: 0.978)\nepoch: 3, test loss: 0.099 (train: 0.070), test accuracy: 0.974 (train: 0.982)\n```\nRegression (do_classification = False):\n\n```\nepoch: 0, test loss: 0.419 (train: 0.500)\nepoch: 1, test loss: 0.388 (train: 0.486)\nepoch: 2, test loss: 0.354 (train: 0.439)\nepoch: 3, test loss: 0.328 (train: 0.400)\nepoch: 4, test loss: 0.310 (train: 0.369)\nepoch: 5, test loss: 0.297 (train: 0.344)\nepoch: 6, test loss: 0.287 (train: 0.324)\nepoch: 7, test loss: 0.281 (train: 0.308)\nepoch: 8, test loss: 0.277 (train: 0.296)\nepoch: 9, test loss: 0.275 (train: 0.285)\nepoch: 10, test loss: 0.273 (train: 0.277)\n```\n"
  },
  {
    "path": "gated_linear_networks/colabs/dendritic_gated_network.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"s54x-Gq4AiYb\"\n      },\n      \"source\": [\n        \"## Simple Dendritic Gated Networks in numpy\\n\",\n        \"\\n\",\n        \"This colab implements a Dendritic Gated Network (DGN) solving a regression (using quadratic loss) or a binary classification problem (using Bernoulli log loss).\\n\",\n        \"\\n\",\n        \"See our paper titled [\\\"A rapid and efficient learning rule for biological neural circuits\\\"](https://www.biorxiv.org/content/10.1101/2021.03.10.434756v1) for details of the DGN model.\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"Some implementation details:\\n\",\n        \"- We utilize `sklearn.datasets.load_breast_cancer` for binary classification and `sklearn.datasets.load_diabetes` for regression.\\n\",\n        \"- This code is meant for educational purposes only. It is not optimized for high-performance, both in terms of computational efficiency and quality of fit.\\n\",\n        \"- Network is trained on 80% of the dataset and tested on the rest. For classification, we report log loss (negative log likelihood) and accuracy (percentage of correctly identified labels). For regression, we report MSE expressed in units of target variance.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"jhiajfn0EAxE\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Copyright 2021 DeepMind Technologies Limited. All rights reserved.\\n\",\n        \"#\\n\",\n        \"#\\n\",\n        \"# Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"# you may not use this file except in compliance with the License.\\n\",\n        \"# You may obtain a copy of the License at\\n\",\n        \"#\\n\",\n        \"# https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"#\\n\",\n        \"# Unless required by applicable law or agreed to in writing, software\\n\",\n        \"# distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"# See the License for the specific language governing permissions and\\n\",\n        \"# limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"nm-F_uZA0_T2\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"import numpy as np\\n\",\n        \"from sklearn import datasets\\n\",\n        \"from sklearn import preprocessing\\n\",\n        \"from sklearn import model_selection\\n\",\n        \"from typing import List, Optional\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"LOoiBATk1AgQ\"\n      },\n      \"source\": [\n        \"## Choose classification or regression\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"FCjzwzwh0ycl\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"do_classification = True  # if False, does regression\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"TA5VmSeV-GTc\"\n      },\n      \"source\": [\n        \"### Load dataset\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"qnzNZrzNk3Pl\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"if do_classification:\\n\",\n        \"  features, targets = datasets.load_breast_cancer(return_X_y=True)\\n\",\n        \"else:\\n\",\n        \"  features, targets = datasets.load_diabetes(return_X_y=True)\\n\",\n        \"\\n\",\n        \"x_train, x_test, y_train, y_test = model_selection.train_test_split(\\n\",\n        \"    features, targets, test_size=0.2, random_state=0)\\n\",\n        \"n_features = x_train.shape[-1]\\n\",\n        \"\\n\",\n        \"# Input features are centered and scaled to unit variance:\\n\",\n        \"feature_encoder = preprocessing.StandardScaler()\\n\",\n        \"x_train = feature_encoder.fit_transform(x_train)\\n\",\n        \"x_test = feature_encoder.transform(x_test)\\n\",\n        \"\\n\",\n        \"if not do_classification:\\n\",\n        \"  # Continuous targets are centered and scaled to unit variance:\\n\",\n        \"  target_encoder = preprocessing.StandardScaler()\\n\",\n        \"  y_train = np.squeeze(target_encoder.fit_transform(y_train[:, np.newaxis]))\\n\",\n        \"  y_test = np.squeeze(target_encoder.transform(y_test[:, np.newaxis]))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"LTQxvDcok86S\"\n      },\n      \"source\": [\n        \"## DGN inference/update\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"F6Yt_tw0lmf1\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def step_square_loss(inputs: np.ndarray,\\n\",\n        \"                     weights: List[np.ndarray],\\n\",\n        \"                     hyperplanes: List[np.ndarray],\\n\",\n        \"                     hyperplane_bias_magnitude: Optional[float] = 1.,\\n\",\n        \"                     learning_rate: Optional[float] = 1e-5,\\n\",\n        \"                     target: Optional[float] = None,\\n\",\n        \"                     update: bool = False,\\n\",\n        \"                     ):\\n\",\n        \"  \\\"\\\"\\\"Implements a DGN inference/update using square loss.\\\"\\\"\\\"\\n\",\n        \"  r_in = inputs\\n\",\n        \"  side_info = np.hstack([hyperplane_bias_magnitude, inputs])\\n\",\n        \"\\n\",\n        \"  for w, h in zip(weights, hyperplanes):  # loop over layers\\n\",\n        \"    r_in = np.hstack([1., r_in])  # add biases\\n\",\n        \"    gate_values = np.heaviside(h.dot(side_info), 0).astype(bool)\\n\",\n        \"    effective_weights = gate_values.dot(w).sum(axis=1)\\n\",\n        \"    r_out = effective_weights.dot(r_in)\\n\",\n        \"\\n\",\n        \"    if update:\\n\",\n        \"      grad = (r_out[:, None] - target) * r_in[None]\\n\",\n        \"      w -= learning_rate * gate_values[:, :, None] * grad[:, None]\\n\",\n        \"\\n\",\n        \"    r_in = r_out\\n\",\n        \"  loss = (target - r_out)**2 / 2\\n\",\n        \"  return r_out, loss\\n\",\n        \"\\n\",\n        \"def sigmoid(x):  # numerically stable sigmoid\\n\",\n        \"  return np.exp(-np.logaddexp(0, -x))\\n\",\n        \"\\n\",\n        \"def inverse_sigmoid(x):\\n\",\n        \"  return np.log(x/(1-x))\\n\",\n        \"\\n\",\n        \"def step_bernoulli(inputs: np.ndarray,\\n\",\n        \"                   weights: List[np.ndarray],\\n\",\n        \"                   hyperplanes: List[np.ndarray],\\n\",\n        \"                   hyperplane_bias_magnitude: Optional[float] = 1.,\\n\",\n        \"                   learning_rate: Optional[float] = 1e-5,\\n\",\n        \"                   epsilon: float = 0.01,\\n\",\n        \"                   target: Optional[float] = None,\\n\",\n        \"                   update: bool = False,\\n\",\n        \"                   ):\\n\",\n        \"  \\\"\\\"\\\"Implements a DGN inference/update using Bernoulli log loss.\\\"\\\"\\\"\\n\",\n        \"  r_in = np.clip(sigmoid(inputs), epsilon, 1-epsilon)\\n\",\n        \"  side_info = np.hstack([hyperplane_bias_magnitude, inputs])\\n\",\n        \"\\n\",\n        \"  for w, h in zip(weights, hyperplanes):  # loop over layers\\n\",\n        \"    r_in = np.hstack([sigmoid(1.), r_in])  # add biases\\n\",\n        \"    h_in = inverse_sigmoid(r_in)\\n\",\n        \"    gate_values = np.heaviside(h.dot(side_info), 0).astype(bool)\\n\",\n        \"    effective_weights = gate_values.dot(w).sum(axis=1)\\n\",\n        \"    h_out = effective_weights.dot(h_in)\\n\",\n        \"    r_out_unclipped = sigmoid(h_out)\\n\",\n        \"    r_out = np.clip(r_out_unclipped, epsilon, 1 - epsilon)\\n\",\n        \"    if update:\\n\",\n        \"      update_indicator = np.abs(target - r_out_unclipped) \\u003e epsilon\\n\",\n        \"      grad = (r_out[:, None] - target) * h_in[None]  * update_indicator[:, None]\\n\",\n        \"      w -= learning_rate * gate_values[:, :, None] * grad[:, None]\\n\",\n        \"    r_in = r_out\\n\",\n        \"  loss = - (target * np.log(r_out) + (1 - target) * np.log(1 - r_out))\\n\",\n        \"  return r_out, loss\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"0B7wSn3Azcfb\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def forward_pass(step_fn, x, y, weights, hyperplanes, learning_rate, update):\\n\",\n        \"  losses, outputs = np.zeros(len(y)), np.zeros(len(y))\\n\",\n        \"  for i, (x_i, y_i) in enumerate(zip(x, y)):\\n\",\n        \"    outputs[i], losses[i] = step_fn(x_i, weights, hyperplanes, target=y_i,\\n\",\n        \"                                    learning_rate=learning_rate, update=update)\\n\",\n        \"  return np.mean(losses), outputs\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"41aHT8G0lsuu\"\n      },\n      \"source\": [\n        \"## Define architecture\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"WSbPuwzFvV2N\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# number of neurons per layer, the last element must be 1\\n\",\n        \"n_neurons = np.array([100, 10, 1])\\n\",\n        \"n_branches = 20  # number of dendritic brancher per neuron\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"gTk1YDXV-xoD\"\n      },\n      \"source\": [\n        \"## Initialise weights and gating parameters\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Uek-2I5IlyN3\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"n_inputs = np.hstack([n_features + 1, n_neurons[:-1] + 1])  # 1 for the bias\\n\",\n        \"dgn_weights = [np.zeros((n_neuron, n_branches, n_input))\\n\",\n        \"               for n_neuron, n_input in zip(n_neurons, n_inputs)]\\n\",\n        \"\\n\",\n        \"# Fixing random seed for reproducibility:\\n\",\n        \"np.random.seed(12345)\\n\",\n        \"dgn_hyperplanes = [\\n\",\n        \"    np.random.normal(0, 1, size=(n_neuron, n_branches, n_features + 1))\\n\",\n        \"    for n_neuron in n_neurons]\\n\",\n        \"# By default, the weight parameters are drawn from a normalised Gaussian:\\n\",\n        \"dgn_hyperplanes = [\\n\",\n        \"    h_ / np.linalg.norm(h_[:, :, :-1], axis=(1, 2))[:, None, None]\\n\",\n        \"    for h_ in dgn_hyperplanes]\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"Dy1XUdaSm0ID\"\n      },\n      \"source\": [\n        \"## Train\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"wublBSqiucQ-\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"if do_classification:\\n\",\n        \"  eta = 1e-4\\n\",\n        \"  n_epochs = 3\\n\",\n        \"  step = step_bernoulli\\n\",\n        \"else:\\n\",\n        \"  eta = 1e-5\\n\",\n        \"  n_epochs = 10\\n\",\n        \"  step = step_square_loss\\n\",\n        \"\\n\",\n        \"if do_classification:\\n\",\n        \"  step = step_bernoulli\\n\",\n        \"else:\\n\",\n        \"  step = step_square_loss\\n\",\n        \"\\n\",\n        \"print('Training on {} problem for {} epochs with learning rate {}.'.format(\\n\",\n        \"    ['regression', 'classification'][do_classification], n_epochs, eta))\\n\",\n        \"print('This may take a minute. Please be patient...')\\n\",\n        \"\\n\",\n        \"for epoch in range(0, n_epochs + 1):\\n\",\n        \"  train_loss, train_pred = forward_pass(\\n\",\n        \"      step, x_train, y_train, dgn_weights,\\n\",\n        \"      dgn_hyperplanes, eta, update=(epoch \\u003e 0))\\n\",\n        \"\\n\",\n        \"  test_loss, test_pred = forward_pass(\\n\",\n        \"      step, x_test, y_test, dgn_weights,\\n\",\n        \"      dgn_hyperplanes, eta, update=False)\\n\",\n        \"  to_print = 'epoch: {}, test loss: {:.3f} (train: {:.3f})'.format(\\n\",\n        \"      epoch, test_loss, train_loss)\\n\",\n        \"\\n\",\n        \"  if do_classification:\\n\",\n        \"    accuracy_train = np.mean(np.round(train_pred) == y_train)\\n\",\n        \"    accuracy = np.mean(np.round(test_pred) == y_test)\\n\",\n        \"    to_print += ', test accuracy: {:.3f} (train: {:.3f})'.format(\\n\",\n        \"        accuracy, accuracy_train)\\n\",\n        \"  print(to_print)\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"last_runtime\": {\n        \"build_target\": \"//learning/deepmind/dm_python:dm_notebook3\",\n        \"kind\": \"private\"\n      },\n      \"name\": \"dendritic_gated_network.ipynb\",\n      \"private_outputs\": true,\n      \"provenance\": [\n        {\n          \"file_id\": \"1lzQUssVJpeziFs1fdBHueD7DqNp6lkVK\",\n          \"timestamp\": 1614705435731\n        }\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "gated_linear_networks/examples/bernoulli_mnist.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Online MNIST classification example with Bernoulli GLN.\"\"\"\n\nfrom absl import app\nfrom absl import flags\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport rlax\n\nfrom gated_linear_networks import bernoulli\nfrom gated_linear_networks.examples import utils\n\nMAX_TRAIN_STEPS = flags.DEFINE_integer(\n    name='max_train_steps',\n    default=None,\n    help='Maximum number of training steps to perform (None=no limit)',\n)\n\n# Small example network, achieves ~95% test set accuracy =======================\n# Network parameters.\nNUM_LAYERS = flags.DEFINE_integer(\n    name='num_layers',\n    default=2,\n    help='Number of network layers',\n)\nNEURONS_PER_LAYER = flags.DEFINE_integer(\n    name='neurons_per_layer',\n    default=100,\n    help='Number of neurons per layer',\n)\nCONTEXT_DIM = flags.DEFINE_integer(\n    name='context_dim',\n    default=1,\n    help='Context vector size',\n)\n\n# Learning rate schedule.\nMAX_LR = flags.DEFINE_float(\n    name='max_lr',\n    default=0.003,\n    help='Maximum learning rate',\n)\nLR_CONSTANT = flags.DEFINE_float(\n    name='lr_constant',\n    default=1.0,\n    help='Learning rate constant parameter',\n)\nLR_DECAY = flags.DEFINE_float(\n    name='lr_decay',\n    default=0.1,\n    help='Learning rate decay parameter',\n)\n\n# Logging parameters.\nEVALUATE_EVERY = flags.DEFINE_integer(\n    name='evaluate_every',\n    default=1000,\n    help='Number of training steps per evaluation epoch',\n)\n\n\ndef main(unused_argv):\n  # Load MNIST dataset =========================================================\n  mnist_data, info = utils.load_deskewed_mnist(\n      name='mnist', batch_size=-1, with_info=True)\n  num_classes = info.features['label'].num_classes\n\n  (train_images, train_labels) = (mnist_data['train']['image'],\n                                  mnist_data['train']['label'])\n\n  (test_images, test_labels) = (mnist_data['test']['image'],\n                                mnist_data['test']['label'])\n\n  # Build a (binary) GLN classifier ============================================\n  def network_factory():\n\n    def gln_factory():\n      output_sizes = [NEURONS_PER_LAYER.value] * NUM_LAYERS.value + [1]\n      return bernoulli.GatedLinearNetwork(\n          output_sizes=output_sizes, context_dim=CONTEXT_DIM.value)\n\n    return bernoulli.LastNeuronAggregator(gln_factory)\n\n  def extract_features(image):\n    mean, stddev = utils.MeanStdEstimator()(image)\n    standardized_img = (image - mean) / (stddev + 1.)\n    inputs = rlax.sigmoid(standardized_img)\n    side_info = standardized_img\n    return inputs, side_info\n\n  def inference_fn(image, *args, **kwargs):\n    inputs, side_info = extract_features(image)\n    return network_factory().inference(inputs, side_info, *args, **kwargs)\n\n  def update_fn(image, *args, **kwargs):\n    inputs, side_info = extract_features(image)\n    return network_factory().update(inputs, side_info, *args, **kwargs)\n\n  init_, inference_ = hk.without_apply_rng(\n      hk.transform_with_state(inference_fn))\n  _, update_ = hk.without_apply_rng(hk.transform_with_state(update_fn))\n\n  # Map along class dimension to create a one-vs-all classifier ================\n  @jax.jit\n  def init(dummy_image, key):\n    \"\"\"One-vs-all classifier init fn.\"\"\"\n    dummy_images = jnp.stack([dummy_image] * num_classes, axis=0)\n    keys = jax.random.split(key, num_classes)\n    return jax.vmap(init_, in_axes=(0, 0))(keys, dummy_images)\n\n  @jax.jit\n  def accuracy(params, state, image, label):\n    \"\"\"One-vs-all classifier inference fn.\"\"\"\n    fn = jax.vmap(inference_, in_axes=(0, 0, None))\n    predictions, unused_state = fn(params, state, image)\n    return (jnp.argmax(predictions) == label).astype(jnp.float32)\n\n  @jax.jit\n  def update(params, state, step, image, label):\n    \"\"\"One-vs-all classifier update fn.\"\"\"\n\n    # Learning rate schedules.\n    learning_rate = jnp.minimum(\n        MAX_LR.value, LR_CONSTANT.value / (1. + LR_DECAY.value * step))\n\n    # Update weights and report log-loss.\n    targets = hk.one_hot(jnp.asarray(label), num_classes)\n\n    fn = jax.vmap(update_, in_axes=(0, 0, None, 0, None))\n    out = fn(params, state, image, targets, learning_rate)\n    (params, unused_predictions, log_loss), state = out\n    return (jnp.mean(log_loss), params), state\n\n  # Train on train split =======================================================\n  dummy_image = train_images[0]\n  params, state = init(dummy_image, jax.random.PRNGKey(42))\n\n  for step, (image, label) in enumerate(zip(train_images, train_labels), 1):\n    (unused_loss, params), state = update(\n        params,\n        state,\n        step,\n        image,\n        label,\n    )\n\n    # Evaluate on test split ===================================================\n    if not step % EVALUATE_EVERY.value:\n      batch_accuracy = jax.vmap(accuracy, in_axes=(None, None, 0, 0))\n      accuracies = batch_accuracy(params, state, test_images, test_labels)\n      total_accuracy = float(jnp.mean(accuracies))\n\n      # Report statistics.\n      print({\n          'step': step,\n          'accuracy': float(total_accuracy),\n      })\n\n    if MAX_TRAIN_STEPS.value is not None and step >= MAX_TRAIN_STEPS.value:\n      return\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "gated_linear_networks/examples/utils.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Haiku modules for feature processing.\"\"\"\n\nimport copy\nfrom typing import Tuple\n\nimport chex\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\nfrom scipy.ndimage import interpolation\nimport tensorflow_datasets as tfds\n\nArray = chex.Array\n\n\ndef _moments(image):\n  \"\"\"Compute the first and second moments of a given image.\"\"\"\n  c0, c1 = np.mgrid[:image.shape[0], :image.shape[1]]\n  total_image = np.sum(image)\n  m0 = np.sum(c0 * image) / total_image\n  m1 = np.sum(c1 * image) / total_image\n  m00 = np.sum((c0 - m0)**2 * image) / total_image\n  m11 = np.sum((c1 - m1)**2 * image) / total_image\n  m01 = np.sum((c0 - m0) * (c1 - m1) * image) / total_image\n  mu_vector = np.array([m0, m1])\n  covariance_matrix = np.array([[m00, m01], [m01, m11]])\n  return mu_vector, covariance_matrix\n\n\ndef _deskew(image):\n  \"\"\"Image deskew.\"\"\"\n  c, v = _moments(image)\n  alpha = v[0, 1] / v[0, 0]\n  affine = np.array([[1, 0], [alpha, 1]])\n  ocenter = np.array(image.shape) / 2.0\n  offset = c - np.dot(affine, ocenter)\n  return interpolation.affine_transform(image, affine, offset=offset)\n\n\ndef _deskew_dataset(dataset):\n  \"\"\"Dataset deskew.\"\"\"\n  deskewed = copy.deepcopy(dataset)\n  for k, before in dataset.items():\n    images = before[\"image\"]\n    num_images = images.shape[0]\n    after = np.stack([_deskew(i) for i in np.squeeze(images, axis=-1)], axis=0)\n    deskewed[k][\"image\"] = np.reshape(after, (num_images, -1))\n  return deskewed\n\n\ndef load_deskewed_mnist(*a, **k):\n  \"\"\"Returns deskewed MNIST numpy dataset.\"\"\"\n  mnist_data, info = tfds.load(*a, **k)\n  mnist_data = tfds.as_numpy(mnist_data)\n  deskewed_data = _deskew_dataset(mnist_data)\n  return deskewed_data, info\n\n\nclass MeanStdEstimator(hk.Module):\n  \"\"\"Online mean and standard deviation estimator using Welford's algorithm.\"\"\"\n\n  def __call__(self, sample: jax.Array) -> Tuple[Array, Array]:\n    if len(sample.shape) > 1:\n      raise ValueError(\"sample must be a rank 0 or 1 DeviceArray.\")\n\n    count = hk.get_state(\"count\", shape=(), dtype=jnp.int32, init=jnp.zeros)\n    mean = hk.get_state(\n        \"mean\", shape=sample.shape, dtype=jnp.float32, init=jnp.zeros)\n    m2 = hk.get_state(\n        \"m2\", shape=sample.shape, dtype=jnp.float32, init=jnp.zeros)\n\n    count += 1\n    delta = sample - mean\n    mean += delta / count\n    delta_2 = sample - mean\n    m2 += delta * delta_2\n\n    hk.set_state(\"count\", count)\n    hk.set_state(\"mean\", mean)\n    hk.set_state(\"m2\", m2)\n\n    stddev = jnp.sqrt(m2 / count)\n    return mean, stddev\n"
  },
  {
    "path": "gated_linear_networks/examples/utils_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Tests for `utils.py`.\"\"\"\n\nfrom absl.testing import absltest\n\nimport haiku as hk\nimport jax\nimport numpy as np\n\nfrom gated_linear_networks.examples import utils\n\n\nclass MeanStdEstimator(absltest.TestCase):\n\n  def test_statistics(self):\n    num_features = 100\n    feature_size = 3\n    samples = np.random.normal(\n        loc=5., scale=2., size=(num_features, feature_size))\n    true_mean = np.mean(samples, axis=0)\n    true_std = np.std(samples, axis=0)\n\n    def tick_(sample):\n      return utils.MeanStdEstimator()(sample)\n\n    init_fn, apply_fn = hk.without_apply_rng(hk.transform_with_state(tick_))\n    tick = jax.jit(apply_fn)\n\n    params, state = init_fn(rng=None, sample=samples[0])\n\n    for sample in samples:\n      (mean, std), state = tick(params, state, sample)\n\n    np.testing.assert_array_almost_equal(mean, true_mean, decimal=5)\n    np.testing.assert_array_almost_equal(std, true_std, decimal=5)\n\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "gated_linear_networks/gaussian.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Gaussian Gated Linear Network.\"\"\"\n\nfrom typing import Callable, List, Text, Tuple\n\nimport chex\nimport jax\nimport jax.numpy as jnp\nimport tensorflow_probability as tfp\n\nfrom gated_linear_networks import base\n\ntfp = tfp.experimental.substrates.jax\ntfd = tfp.distributions\n\nArray = chex.Array\n\nMIN_SIGMA_SQ_AGGREGATOR = 0.5\nMAX_SIGMA_SQ = 1e5\nMAX_WEIGHT = 1e3\nMIN_WEIGHT = -1e3\n\n\ndef _unpack_inputs(inputs: Array) -> Tuple[Array, Array]:\n  inputs = jnp.atleast_2d(inputs)\n  chex.assert_rank(inputs, 2)\n  (mu, sigma_sq) = [jnp.squeeze(x, 1) for x in jnp.hsplit(inputs, 2)]\n  return mu, sigma_sq\n\n\ndef _pack_inputs(mu: Array, sigma_sq: Array) -> Array:\n  mu = jnp.atleast_1d(mu)\n  sigma_sq = jnp.atleast_1d(sigma_sq)\n  chex.assert_rank([mu, sigma_sq], 1)\n  return jnp.vstack([mu, sigma_sq]).T\n\n\nclass GatedLinearNetwork(base.GatedLinearNetwork):\n  \"\"\"Gaussian Gated Linear Network.\"\"\"\n\n  def __init__(\n      self,\n      output_sizes: List[int],\n      context_dim: int,\n      bias_len: int = 3,\n      bias_max_mu: float = 1.,\n      bias_sigma_sq: float = 1.,\n      name: Text = \"gaussian_gln\"):\n    \"\"\"Initialize a Gaussian GLN.\"\"\"\n    super(GatedLinearNetwork, self).__init__(\n        output_sizes,\n        context_dim,\n        inference_fn=GatedLinearNetwork._inference_fn,\n        update_fn=GatedLinearNetwork._update_fn,\n        init=base.ShapeScaledConstant(),\n        dtype=jnp.float64,\n        name=name)\n\n    self._bias_len = bias_len\n    self._bias_max_mu = bias_max_mu\n    self._bias_sigma_sq = bias_sigma_sq\n\n  def _add_bias(self, inputs):\n    mu = jnp.linspace(-1. * self._bias_max_mu, self._bias_max_mu,\n                      self._bias_len)\n    sigma_sq = self._bias_sigma_sq * jnp.ones_like(mu)\n    bias = _pack_inputs(mu, sigma_sq)\n    return jnp.concatenate([inputs, bias], axis=0)\n\n  @staticmethod\n  def _inference_fn(\n      inputs: Array,           # [input_size, 2]\n      side_info: Array,        # [side_info_size]\n      weights: Array,          # [2**context_dim, input_size]\n      hyperplanes: Array,      # [context_dim, side_info_size]\n      hyperplane_bias: Array,  # [context_dim]\n      min_sigma_sq: float,\n  ) -> Array:\n    \"\"\"Inference step for a single Gaussian neuron.\"\"\"\n\n    mu_in, sigma_sq_in = _unpack_inputs(inputs)\n    weight_index = GatedLinearNetwork._compute_context(side_info, hyperplanes,\n                                                       hyperplane_bias)\n    used_weights = weights[weight_index]\n\n    # This projection operation is differentiable and affects the gradients.\n    used_weights = GatedLinearNetwork._project_weights(inputs, used_weights,\n                                                       min_sigma_sq)\n\n    sigma_sq_out = 1. / jnp.sum(used_weights / sigma_sq_in)\n    mu_out = sigma_sq_out * jnp.sum((used_weights * mu_in) / sigma_sq_in)\n    prediction = jnp.hstack((mu_out, sigma_sq_out))\n    return prediction\n\n  @staticmethod\n  def _project_weights(inputs: Array,     # [input_size]\n                       weights: Array,    # [2**context_dim, num_features]\n                       min_sigma_sq: float) -> Array:\n    \"\"\"Implements hard projection.\"\"\"\n\n    # This projection should be performed before the sigma related ones.\n    weights = jnp.minimum(jnp.maximum(MIN_WEIGHT, weights), MAX_WEIGHT)\n    _, sigma_sq_in = _unpack_inputs(inputs)\n\n    lambda_in = 1. / sigma_sq_in\n    sigma_sq_out = 1. / weights.dot(lambda_in)\n\n    # If w.dot(x) < U, linearly project w such that w.dot(x) = U.\n    weights = jnp.where(\n        sigma_sq_out < min_sigma_sq, weights - lambda_in *\n        (1. / sigma_sq_out - 1. / min_sigma_sq) / jnp.sum(lambda_in**2),\n        weights)\n\n    # If w.dot(x) > U, linearly project w such that w.dot(x) = U.\n    weights = jnp.where(\n        sigma_sq_out > MAX_SIGMA_SQ, weights - lambda_in *\n        (1. / sigma_sq_out - 1. / MAX_SIGMA_SQ) / jnp.sum(lambda_in**2),\n        weights)\n\n    return weights\n\n  @staticmethod\n  def _update_fn(\n      inputs: Array,           # [input_size]\n      side_info: Array,        # [side_info_size]\n      weights: Array,          # [2**context_dim, num_features]\n      hyperplanes: Array,      # [context_dim, side_info_size]\n      hyperplane_bias: Array,  # [context_dim]\n      target: Array,           # []\n      learning_rate: float,\n      min_sigma_sq: float,     # needed for inference (weight projection)\n      ) -> Tuple[Array, Array, Array]:\n    \"\"\"Update step for a single Gaussian neuron.\"\"\"\n\n    def log_loss_fn(inputs, side_info, weights, hyperplanes, hyperplane_bias,\n                    target):\n      \"\"\"Log loss for a single Gaussian neuron.\"\"\"\n      prediction = GatedLinearNetwork._inference_fn(inputs, side_info, weights,\n                                                    hyperplanes,\n                                                    hyperplane_bias,\n                                                    min_sigma_sq)\n      mu, sigma_sq = prediction.T\n      loss = -tfd.Normal(mu, jnp.sqrt(sigma_sq)).log_prob(target)\n      return loss, prediction\n\n    grad_log_loss = jax.value_and_grad(log_loss_fn, argnums=2, has_aux=True)\n    (log_loss,\n     prediction), dloss_dweights = grad_log_loss(inputs, side_info, weights,\n                                                 hyperplanes, hyperplane_bias,\n                                                 target)\n\n    delta_weights = learning_rate * dloss_dweights\n    return weights - delta_weights, prediction, log_loss\n\n\nclass ConstantInputSigma(base.Mutator):\n  \"\"\"Input pre-processing by concatenating a constant sigma^2.\"\"\"\n\n  def __init__(\n      self,\n      network_factory: Callable[..., GatedLinearNetwork],\n      input_sigma_sq: float,\n      name: Text = \"constant_input_sigma\",\n  ):\n    super(ConstantInputSigma, self).__init__(network_factory, name)\n    self._input_sigma_sq = input_sigma_sq\n\n  def inference(self, inputs, *args, **kwargs):\n    \"\"\"ConstantInputSigma inference.\"\"\"\n    chex.assert_rank(inputs, 1)\n    sigma_sq = self._input_sigma_sq * jnp.ones_like(inputs)\n    return self._network.inference(_pack_inputs(inputs, sigma_sq), *args,\n                                   **kwargs)\n\n  def update(self, inputs, *args, **kwargs):\n    \"\"\"ConstantInputSigma update.\"\"\"\n    chex.assert_rank(inputs, 1)\n    sigma_sq = self._input_sigma_sq * jnp.ones_like(inputs)\n    return self._network.update(_pack_inputs(inputs, sigma_sq), *args, **kwargs)\n\n\nclass LastNeuronAggregator(base.LastNeuronAggregator):\n  \"\"\"Gaussian last neuron aggregator, implemented by the super class.\"\"\"\n  pass\n"
  },
  {
    "path": "gated_linear_networks/gaussian_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Tests for `gaussian.py`.\"\"\"\n\nfrom absl.testing import absltest\nfrom absl.testing import parameterized\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\nimport tree\n\nfrom gated_linear_networks import gaussian\n\n\ndef _get_dataset(input_size, batch_size=None):\n  \"\"\"Get mock dataset.\"\"\"\n  if batch_size:\n    inputs = jnp.ones([batch_size, input_size, 2])\n    side_info = jnp.ones([batch_size, input_size])\n    targets = 0.8 * jnp.ones([batch_size])\n  else:\n    inputs = jnp.ones([input_size, 2])\n    side_info = jnp.ones([input_size])\n    targets = jnp.ones([])\n\n  return inputs, side_info, targets\n\n\nclass UtilsTest(absltest.TestCase):\n\n  def test_packing_identity(self):\n    mu = jnp.array([1., 2., 3., 4., 5.])\n    sigma_sq = jnp.array([6., 7., 8., 9., 10.])\n\n    mu_2, sigma_sq_2 = gaussian._unpack_inputs(\n        gaussian._pack_inputs(mu, sigma_sq))\n\n    np.testing.assert_array_equal(mu, mu_2)\n    np.testing.assert_array_equal(sigma_sq, sigma_sq_2)\n\n\nclass GatedLinearNetworkTest(parameterized.TestCase):\n\n  # TODO(b/170843789): Factor out common test utilities.\n  def setUp(self):\n    super(GatedLinearNetworkTest, self).setUp()\n    self._name = \"test_network\"\n    self._rng = hk.PRNGSequence(jax.random.PRNGKey(42))\n\n    self._output_sizes = (4, 5, 6)\n    self._context_dim = 2\n    self._bias_len = 3\n\n    def gln_factory():\n      return gaussian.GatedLinearNetwork(\n          output_sizes=self._output_sizes,\n          context_dim=self._context_dim,\n          bias_len=self._bias_len,\n          name=self._name,\n      )\n\n    def inference_fn(inputs, side_info):\n      return gln_factory().inference(inputs, side_info, 0.5)\n\n    def batch_inference_fn(inputs, side_info):\n      return jax.vmap(inference_fn, in_axes=(0, 0))(inputs, side_info)\n\n    def update_fn(inputs, side_info, label, learning_rate):\n      params, predictions, unused_loss = gln_factory().update(\n          inputs, side_info, label, learning_rate, 0.5)\n      return predictions, params\n\n    def batch_update_fn(inputs, side_info, label, learning_rate):\n      predictions, params = jax.vmap(\n          update_fn, in_axes=(0, 0, 0, None))(\n              inputs,\n              side_info,\n              label,\n              learning_rate)\n      avg_params = tree.map_structure(lambda x: jnp.mean(x, axis=0), params)\n      return predictions, avg_params\n\n    # Haiku transform functions.\n    self._init_fn, inference_fn_ = hk.without_apply_rng(\n        hk.transform_with_state(inference_fn))\n    self._batch_init_fn, batch_inference_fn_ = hk.without_apply_rng(\n        hk.transform_with_state(batch_inference_fn))\n    _, update_fn_ = hk.without_apply_rng(hk.transform_with_state(update_fn))\n    _, batch_update_fn_ = hk.without_apply_rng(\n        hk.transform_with_state(batch_update_fn))\n\n    self._inference_fn = jax.jit(inference_fn_)\n    self._batch_inference_fn = jax.jit(batch_inference_fn_)\n    self._update_fn = jax.jit(update_fn_)\n    self._batch_update_fn = jax.jit(batch_update_fn_)\n\n  @parameterized.named_parameters((\"Online mode\", None), (\"Batch mode\", 3))\n  def test_shapes(self, batch_size):\n    \"\"\"Test shapes in online and batch regimes.\"\"\"\n    if batch_size is None:\n      init_fn = self._init_fn\n      inference_fn = self._inference_fn\n    else:\n      init_fn = self._batch_init_fn\n      inference_fn = self._batch_inference_fn\n\n    input_size = 10\n    inputs, side_info, _ = _get_dataset(input_size, batch_size)\n\n    # Initialize network.\n    gln_params, gln_state = init_fn(next(self._rng), inputs, side_info)\n\n    # Test shapes of parameters layer-wise.\n    layer_input_size = input_size\n    for layer_idx, output_size in enumerate(self._output_sizes):\n      name = \"{}/~/{}_layer_{}\".format(self._name, self._name, layer_idx)\n      weights = gln_params[name][\"weights\"]\n      expected_shape = (output_size, 2**self._context_dim,\n                        layer_input_size + self._bias_len)\n      self.assertEqual(weights.shape, expected_shape)\n\n      layer_input_size = output_size\n\n    # Test shape of output.\n    output_size = sum(self._output_sizes)\n    predictions, _ = inference_fn(gln_params, gln_state, inputs, side_info)\n    expected_shape = (batch_size, output_size,\n                      2) if batch_size else (output_size, 2)\n    self.assertEqual(predictions.shape, expected_shape)\n\n  @parameterized.named_parameters((\"Online mode\", None), (\"Batch mode\", 3))\n  def test_update(self, batch_size):\n    \"\"\"Test network updates in online and batch regimes.\"\"\"\n    if batch_size is None:\n      init_fn = self._init_fn\n      inference_fn = self._inference_fn\n      update_fn = self._update_fn\n    else:\n      init_fn = self._batch_init_fn\n      inference_fn = self._batch_inference_fn\n      update_fn = self._batch_update_fn\n\n    inputs, side_info, targets = _get_dataset(10, batch_size)\n\n    # Initialize network.\n    initial_params, gln_state = init_fn(next(self._rng), inputs, side_info)\n\n    # Initial predictions.\n    initial_predictions, _ = inference_fn(initial_params, gln_state, inputs,\n                                          side_info)\n\n    # Test that params remain valid after consecutive updates.\n    gln_params = initial_params\n\n    for _ in range(3):\n      (_, gln_params), _ = update_fn(\n          gln_params, gln_state, inputs, side_info, targets, learning_rate=1e-4)\n\n      # Check updated weights layer-wise.\n      for layer_idx in range(len(self._output_sizes)):\n        name = \"{}/~/{}_layer_{}\".format(self._name, self._name, layer_idx)\n\n        initial_weights = initial_params[name][\"weights\"]\n        new_weights = gln_params[name][\"weights\"]\n\n        # Shape consistency.\n        self.assertEqual(new_weights.shape, initial_weights.shape)\n\n      # Check that different weights yield different predictions.\n      new_predictions, _ = inference_fn(gln_params, gln_state, inputs,\n                                        side_info)\n      self.assertFalse(np.array_equal(new_predictions, initial_predictions))\n\n  def test_batch_consistency(self):\n    \"\"\"Test consistency between online and batch updates.\"\"\"\n\n    batch_size = 3\n    inputs, side_info, targets = _get_dataset(10, batch_size)\n\n    # Initialize network.\n    gln_params, gln_state = self._batch_init_fn(\n        next(self._rng), inputs, side_info)\n    test_layer = \"{}/~/{}_layer_0\".format(self._name, self._name)\n\n    for _ in range(10):\n\n      # Update on full batch.\n      (expected_predictions, expected_params), _ = self._batch_update_fn(\n          gln_params, gln_state, inputs, side_info, targets, learning_rate=1e-3)\n\n      # Average updates across batch and check equivalence.\n      accum_predictions = []\n      accum_weights = []\n      for inputs_, side_info_, targets_ in zip(inputs, side_info, targets):\n        (predictions, params), _ = self._update_fn(\n            gln_params,\n            gln_state,\n            inputs_,\n            side_info_,\n            targets_,\n            learning_rate=1e-3)\n        accum_predictions.append(predictions)\n        accum_weights.append(params[test_layer][\"weights\"])\n\n      # Check prediction equivalence.\n      actual_predictions = np.stack(accum_predictions, axis=0)\n      np.testing.assert_array_almost_equal(actual_predictions,\n                                           expected_predictions)\n\n      # Check weight equivalence.\n      actual_weights = np.mean(np.stack(accum_weights, axis=0), axis=0)\n      expected_weights = expected_params[test_layer][\"weights\"]\n      np.testing.assert_array_almost_equal(actual_weights, expected_weights)\n\n      gln_params = expected_params\n\n\nif __name__ == \"__main__\":\n  absltest.main()\n"
  },
  {
    "path": "gated_linear_networks/requirements.txt",
    "content": "absl-py==0.10.0\naiohttp==3.6.2\nastunparse==1.6.3\nasync-timeout==3.0.1\nattrs==20.2.0\ncachetools==4.1.1\ncertifi==2020.6.20\nchardet==3.0.4\nchex==0.0.2\ncloudpickle==1.6.0\ndecorator==4.4.2\ndill==0.3.2\ndm-env==1.2\ndm-haiku==0.0.2\ndm-tree==0.1.5\nfuture==0.18.2\ngast==0.3.3\ngoogle-auth==1.22.0\ngoogle-auth-oauthlib==0.4.1\ngoogle-pasta==0.2.0\ngoogleapis-common-protos==1.52.0\ngrpcio==1.32.0\nh5py==2.10.0\nidna==2.10\njax==0.2.0\njaxlib==0.1.55\nKeras-Preprocessing==1.1.2\nMarkdown==3.2.2\nmultidict==4.7.6\nnumpy==1.18.5\noauthlib==3.1.0\nopt-einsum==3.3.0\npromise==2.3\nprotobuf==3.13.0\npyasn1==0.4.8\npyasn1-modules==0.2.8\nrequests==2.24.0\nrequests-oauthlib==1.3.0\nrlax==0.0.2\nrsa==4.6\nscipy==1.5.2\nsix==1.15.0\ntensorboard==2.3.0\ntensorboard-plugin-wit==1.7.0\ntensorflow==2.3.1\ntensorflow-datasets==3.2.1\ntensorflow-estimator==2.3.0\ntensorflow-metadata==0.24.0\ntensorflow-probability==0.11.1\ntermcolor==1.1.0\ntoolz==0.11.1\ntqdm==4.50.0\n"
  },
  {
    "path": "gated_linear_networks/run.sh",
    "content": "#!/bin/sh\n# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nset -e\n\npython3 -m venv /tmp/gln_venv\nsource /tmp/gln_venv/bin/activate\npip3 install --upgrade pip setuptools wheel\npip3 install -r gated_linear_networks/requirements.txt\n\n# Run MNIST example with Bernoulli GLN\npython3 -m gated_linear_networks.examples.bernoulli_mnist \\\n  --num_layers=2 \\\n  --neurons_per_layer=100 \\\n  --context_dim=1 \\\n  --max_train_steps=2000\n"
  },
  {
    "path": "geomancer/README.md",
    "content": "# Geometric Manifold Component Estimator (GEOMANCER)\n\nThis package provides an implementation of the Geometric Manifold Component\nEstimator, or GEOMANCER, as described in [Disentangling by Subspace Diffusion\n(2020)](https://arxiv.org/abs/2006.12982), as well as information about the\n[Stanford 3D Objects for Disentangling (S3O4D) dataset](https://console.cloud.google.com/storage/browser/dm_s3o4d).\nGEOMANCER is a nonparametric algorithm for disentangling, somewhat similar in\nspirit to Laplacian Eigenmaps or Vector Diffusion Maps, except instead of\nproducing an embedding for the data, it produces a set of subspaces around each\ndata point, one subspace for each disentangled factor of variation in the data.\nThis differs from more common algorithms for disentangling that originated in\nthe deep learning community, such as the beta-VAE, TCVAE or FactorVAE, which\nlearn a nonlinear embedding and probabilistic generative model of the data.\nGEOMANCER is intended for data where the individual factors of variation might\nbe more than one dimensional, for instance 3D rotations. At the moment,\nGEOMANCER works best when some ground truth information about the metric in the\ndata space is available, for instance knowledge of the \"true\" nearest neighbors\naround each point, and we do not recommend running GEOMANCER directly on\nunstructured data from high-dimensional spaces. We are providing the code here\nto enable the interested researcher to get some hands-on experience with the\nideas around differential geometry, holonomy and higher-order graph connection\nLaplacians we explore in the paper.\n\n\n## Installation\n\nTo install the package locally in a new virtual environment run:\n```bash\npython3 -m venv geomancer\nsource geomancer/bin/activate\ngit clone https://github.com/deepmind/deepmind-research.git .\ncd deepmind-research/geomancer\npip install -e .\n```\n\n## Example\n\nTo run, simply load or generate an array of data, and call the `fit` function:\n\n```\nimport numpy as np\nimport geomancer\n\n# Generate data from a product of two spheres\ndata = []\nfor i in range(2):\n  foo = np.random.randn(1000, 3)\n  data.append(foo / np.linalg.norm(foo, axis=1, keepdims=True))\ndata = np.concatenate(data, axis=1)\n\n# Run GEOMANCER. The underlying manifold is 4-dimensional.\ncomponents, spectrum = geomancer.fit(data, 4)\n```\n\nIf ground truth information about the tangent spaces is available in a space\nthat is aligned with the data, then the performance can be evaluated using the\n`eval_aligned` function. If ground truth data is only available in an unaligned\nspace, for instance if the embedding used to generate the data is not the same\nas the space in which the data is observed, then the `eval_unaligned` function\ncan be used, which requires both the data and disentangled tangent vectors in\nthe ground truth space. Examples of both evaluation metrics are given in the\ndemo in `train.py`.\n\n\n## Demo on Synthetic Manifolds\n\nThe file `train.py` runs GEOMANCER on a product of manifolds that can be\nspecified by the user. The number of data points to train on is given by the\n`--npts` flag, while the specification of the manifold is given by the\n`--specification` flag. The `--rotate` flag specifies whether a random rotation\nshould be applied to the data. If false, `eval_aligned` will be used to evaluate\nthe result. If true, `eval_unaligned` will be used to evaluate the result.\n\nFor instance, to run on the product of the sphere in 2 and 4 dimensions and the\nspecial orthogonal group in 3 dimensions, run:\n\n```\npython3 train.py --specification='S^2','S^4','SO(3)' --npts=100000\n```\n\nThis passes a list of strings as the manifold specification flag. Note that a\nmanifold this large will require a large amount of data to work and may require\nhours or days to run. The default example should run in just a few minutes.\n\nThe demo plots 3 different outputs:\n1. The eigenvalue spectrum of the 2nd-order graph Laplacian. This should have\na large gap in the spectrum at the eigenvalue equal to the number of\nsubmanifolds.\n2. The basis vectors for each disentangled subspace around one point.\n3. The ground truth basis vectors for the disentangled subspaces at the same\npoint. If `--rotate=False`, and GEOMANCER has sufficient data, each basis matrix\nshould span the same subspace as the results in the second plot.\n\n## Stanford 3D Objects for Disentangling (S3O4D)\n\n<img src=\"s3o4d.png\" alt=\"Stanford 3D Objects for Disentangling\"\n     width=\"1076\" height=\"182\" />\n\nThe data used in the \"Stanford 3D Objects\" section of the experimental results\nis available in [TensorFlow Datasets](https://www.tensorflow.org/datasets/catalog/s3o4d).\nThe data consists of 100,000 renderings each of the Bunny and Dragon objects\nfrom the [Stanford 3D Scanning Repository](http://graphics.stanford.edu/data/3Dscanrep/).\nMore objects may be added in the future, but only the Bunny and Dragon are used\nin the paper. Each object is rendered with a uniformly sampled illumination from\na point on the 2-sphere, and a uniformly sampled 3D rotation. The true latent\nstates are provided as NumPy arrays along with the images. The lighting is given\nas a 3-vector with unit norm, while the rotation is provided both as a\nquaternion and a 3x3 orthogonal matrix.\n\n### Why another dataset?\n\nThere are many similarities between S3O4D and existing ML benchmark datasets\nlike [NORB](https://cs.nyu.edu/~ylclab/data/norb-v1.0/),\n[3D Chairs](https://github.com/mathieuaubry/seeing3Dchairs),\n[3D Shapes](https://github.com/deepmind/3d-shapes) and many others, which also\ninclude renderings of a set of objects under different pose and illumination\nconditions. However, none of these existing datasets include the *full manifold*\nof rotations in 3D - most include only a subset of changes to elevation and\nazimuth. S3O4D images are sampled uniformly and independently from the full\nspace of rotations and illuminations, meaning the dataset contains objects that\nare upside down and illuminated from behind or underneath. We believe that this\nmakes S3O4D uniquely suited for research on generative models where the latent\nspace has non-trivial topology, as well as for general manifold learning\nmethods where the curvature of the manifold is important.\n\n### Usage\n\nTo load from TensorFlow Datasets, simply run:\n\n```\nimport tensorflow_datasets as tfds\n\nds = tfds.load('s3o4d', split='bunny_train', shuffle_files=True)\nfor example in ds.take(1):\n  image, label, illumination, pose_mat, pose_quat = (\n      example['image'], example['label'], example['illumination'],\n      example['pose_mat'], example['pose_quat'])\n```\n\nwhere the split can be any of `bunny_train`, `dragon_train`, `bunny_test` or\n`dragon_test`.\n\nIf you prefer to not have TensorFlow as a dependency for your project, and want\nto download the data manually, you can find the raw data (as zipped JPEGs and\nNumPy arrays) on [Google Cloud](https://console.cloud.google.com/storage/browser/dm_s3o4d).\nTo load the data for a given object, unzip `images.zip` into a folder called\n`images` in the same directory as `latents.npz`, and from inside that\ndirectory run:\n\n```\nimport numpy as np\nfrom PIL import Image\n\nwith open('latents.npz', 'r') as f:\n  data = np.load(f)\n  illumination = data['illumination']  # lighting source position, a 3-vector\n  pose_quat = data['pose_quat']  # object pose (3D rotation as a quaternion)\n  pose_mat = data['pose_mat']  # object pose (3D rotation as a matrix)\n\ndef get_data(i):\n  \"\"\"Return data and latent given an index up to 100,000.\"\"\"\n  img = np.array(Image.open(f'images/{i:05}.jpg'))\n  # Uses the matrix, not quaternion, representation,\n  # similarly to the experiments in the paper\n  latent = np.concatenate((illumination[i],\n                           pose_mat[i].reshape(-1)))\n  return img, latent\n\nimg, latent = get_data(0)\n```\n\nTo do the same train/test split as in TensorFlow Datasets, simply use the first\n80,000 images for each object as training data and the last 20,000 as test.\n\n## Giving Credit\n\nIf you use this code or the Stanford 3D Objects for Disentangling data in your\nwork, we ask you to cite this paper:\n\n```\n@article{pfau2020disentangling,\n  title={Disentangling by Subspace Diffusion},\n  author={Pfau, David and Higgins, Irina and Botev, Aleksandar and Racani\\`ere,\n  S{\\'e}bastian},\n  journal={Advances in Neural Information Processing Systems (NeurIPS)},\n  year={2020}\n}\n```\n\n## Disclaimer\n\nThis is not an official Google product.\n"
  },
  {
    "path": "geomancer/data_writer.py",
    "content": "# Copyright 2023 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Data writer for Stanford Bunny experiments and other objects.\"\"\"\n\n# pylint: disable=unused-import\nimport copy\nimport io\nimport os\nimport time\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\n\nfrom dm_control import mujoco\n\nimport numpy as np\n\n\n_SHARD = flags.DEFINE_integer('shard', 0, 'Shard index')\n_SIZE = flags.DEFINE_integer('size', 1000,\n                             'Number of images to save to a shard')\n_OBJECT = flags.DEFINE_string('object', 'dragon', 'Which object to render')\n_PATH = flags.DEFINE_string('path', '', 'Path to folder with .stl files')\n\n\nrender_height = 1024\nrender_width = 1024\n\nheight = 256\nwidth = 256\n\n\ndef get_normal(x):\n  \"\"\"Get vectors normal to a unit vector.\"\"\"\n  _, _, v = np.linalg.svd(x[None, :])\n  return v[:, 1:]\n\n\ndef render(quat, light, mesh='bunny', meshdir='data'):\n  \"\"\"Script to render an image.\"\"\"\n  scale, pos = None, None\n  if mesh == 'bunny':\n    scale = 0.03\n    pos = -1.0\n  elif mesh == 'dragon':\n    scale = 0.06\n    pos = -0.3\n\n  simple_world_mjcf_template = \"\"\"\n  <mujoco>\n   <visual>\n     <headlight active=\"0\"/>\n     <global offwidth=\"%s\" offheight=\"%s\"/>\n   </visual>\n   <compiler meshdir=\"%s\"/>\n   <asset>\n     <mesh name=\"%s\" file=\"%s.stl\" scale=\"%g %g %g\"/>\n   </asset>\n    <worldbody>\n      <camera name=\"main\" pos=\"0 0 5\" xyaxes=\"1 0 0 0 1 0\"/>\n      <body name=\"obj\" quat=\"{} {} {} {}\">\n        <geom name=\"%s\" type=\"mesh\" mesh=\"%s\" pos=\"0 0 %g\"/>\n      </body>\n      <light pos=\"{} {} {}\" directional=\"true\" dir=\"{} {} {}\"/>\n      <light pos=\"{} {} {}\" directional=\"true\" dir=\"{} {} {}\"/>\n    </worldbody>\n  </mujoco>\n  \"\"\" % (render_width, render_height, meshdir, mesh, mesh,\n         scale, scale, scale, mesh, mesh, pos)\n\n  light /= np.linalg.norm(light)\n  quat /= np.linalg.norm(quat)\n\n  simple_world_mjcf = simple_world_mjcf_template.format(\n      *(np.concatenate((quat,\n                        5*light, -5*light,\n                        -5*light, 5*light)).tolist()))\n  physics = mujoco.Physics.from_xml_string(simple_world_mjcf)\n  data = physics.render(camera_id='main',\n                        height=render_height,\n                        width=render_width).astype(np.float32)\n  data = data.reshape((width, int(render_width/width),\n                       height, int(render_height/height), 3))\n  return np.mean(np.mean(data, axis=1), axis=2)\n\n\ndef get_tangent(quat, light, mesh='bunny', meshdir='data',\n                eps=0.03, use_light=True, use_quat=True):\n  \"\"\"Render image along with its tangent vectors by finite differences.\"\"\"\n  assert use_light or use_quat\n  n = 0\n  light_tangent = None\n  quat_tangent = None\n  if use_light:\n    light_tangent = get_normal(light)\n    n += 2\n  if use_quat:\n    quat_tangent = get_normal(quat)\n    n += 3\n\n  # a triple-wide pixel buffer\n  try:\n    data = render(quat, light, mesh=mesh, meshdir=meshdir)\n    image_tangent = np.zeros((n, height, width, 3), dtype=np.float32)\n\n    if use_quat:\n      for i in range(3):\n        perturbed = render(quat + eps * quat_tangent[:, i],\n                           light, mesh=mesh, meshdir=meshdir)\n        image_tangent[i] = (perturbed - data).astype(np.float32) / eps\n\n    if use_light:\n      j = 3 if use_quat else 0\n      for i in range(2):\n        perturbed = render(quat, light + eps * light_tangent[:, i],\n                           mesh=mesh, meshdir=meshdir)\n        image_tangent[i+j] = (perturbed - data) / eps\n\n    image_tangent -= np.mean(image_tangent, axis=0)[None, ...]\n    latent_tangent = np.block(\n        [[quat_tangent, np.zeros((4, 2), dtype=np.float32)],\n         [np.zeros((3, 3), dtype=np.float32), light_tangent]])\n\n    return (np.mean(data, axis=-1),\n            np.mean(image_tangent, axis=-1),\n            latent_tangent)\n  except:  # pylint: disable=bare-except\n    logging.info('Failed with latents (quat: %s, light: %s)', quat, light)\n\n\ndef main(_):\n  images = np.zeros((_SIZE.value, height, width), dtype=np.float32)\n  latents = np.zeros((_SIZE.value, 7), dtype=np.float32)\n\n  image_tangents = np.zeros((_SIZE.value, 5, height, width), dtype=np.float32)\n  latent_tangents = np.zeros((_SIZE.value, 7, 5), dtype=np.float32)\n\n  for i in range(_SIZE.value):\n    light = np.random.randn(3)\n    light /= np.linalg.norm(light)\n\n    quat = np.random.randn(4)  # rotation represented as quaternion\n    quat /= np.linalg.norm(quat)\n\n    latents[i] = np.concatenate((light, quat))\n    images[i], image_tangents[i], latent_tangents[i] = (\n        get_tangent(quat, light, mesh=_OBJECT.value, meshdir=_PATH.value))\n    logging.info('Rendered image %d of %d', i, _SIZE.value)\n\n  os.makedirs(os.path.join(_PATH.value, _OBJECT.value), exist_ok=True)\n  with open(os.path.join(\n      _PATH.value, _OBJECT.value, 'shard_%03d.npz' % _SHARD.value), 'wb') as f:\n    io_buffer = io.BytesIO()\n    np.savez(io_buffer, images, latents, image_tangents, latent_tangents)\n    f.write(io_buffer.getvalue())\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "geomancer/geomancer.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Code for the Geometric Manifold Component Estimator (GEOMANCER).\"\"\"\n\nimport itertools\n\nfrom absl import logging\n\nimport numpy as np\nimport scipy\nimport scipy.sparse\nimport scipy.sparse.linalg\n\nfrom tqdm import tqdm\n\n\ndef sym_op(x, zero_trace=False):\n  \"\"\"Given X, makes L(A) = X @ A @ X' for symmetric matrices A.\n\n  If A is not symmetric, L(A) will return X @ (A_L + A_L') @ X' where A_L is\n  the lower triangular of A (with the diagonal divided by 2).\n\n  Args:\n    x: The matrix from which to construct the operator\n    zero_trace (optional): If true, restrict the operator to only act on\n      matrices with zero trace, effectively reducing the dimensionality by one.\n  Returns:\n    A matrix Y such that vec(L(A)) = Y @ vec(A).\n  \"\"\"\n  n = x.shape[0]\n  # Remember to subtract off the diagonal once\n  xx = (np.einsum('ik,jl->ijkl', x, x) +\n        np.einsum('il,jk->ijkl', x, x) -\n        np.einsum('ik,jl,kl->ijkl', x, x, np.eye(n)))\n  xx = xx[np.tril_indices(n)]\n  xx = xx.transpose(1, 2, 0)\n  xx = xx[np.tril_indices(n)]\n  xx = xx.T\n  if zero_trace:\n    diag_idx = np.cumsum([0]+list(range(2, n)))\n    proj_op = np.eye(n*(n+1)//2)[:, :-1]\n    proj_op[-1, diag_idx] = -1\n    # multiply by operator that completes last element of diagonal\n    # for a zero-trace matrix\n    xx = xx @  proj_op\n    xx = xx[:-1]\n  return xx\n\n\ndef vec_to_sym(x, n, zero_trace=False):\n  y = np.zeros((n, n))\n  if zero_trace:\n    x = np.append(x, 0.0)\n  y[np.tril_indices(n)] = x\n  y += y.T\n  y[np.diag_indices(n)] /= 2.0\n  if zero_trace:\n    y[-1, -1] = -np.trace(y)\n  return y\n\n\ndef ffdiag(data, lr=1.0, tol=1e-10, verbose=False, eig_init=False):\n  \"\"\"Orthogonal FFDiag algorithm of Ziehe et al 2004.\"\"\"\n  n = data.shape[1]\n  k = data.shape[0]\n  c = data.copy()\n  if eig_init:\n    _, v = np.linalg.eig(data[0])\n    v = v.T\n    for i in range(k):\n      c[i] = v @ c[i] @ v.T\n  else:\n    v = np.eye(n)\n\n  err_ = np.inf\n  for t in range(10000):\n    w = np.zeros((n, n))\n    for i in range(n):\n      for j in range(i+1, n):\n        diag = c[:, i, i] - c[:, j, j]\n        w[i, j] = np.sum(c[:, i, j] * diag) / np.sum(diag ** 2)\n    w -= w.T\n    norm = np.linalg.svd(w, compute_uv=False).max()\n    if norm > lr:\n      w *= lr / norm\n    ew = scipy.linalg.expm(w)\n    v = ew @ v\n    for i in range(k):\n      c[i] = ew @ c[i] @ ew.T\n    cdiag = c.copy()\n    for i in range(n):\n      for j in range(k):\n        cdiag[j, i, i] = 0\n    err = np.linalg.norm(cdiag)\n    if verbose:\n      logging.info('Iter %d: %f', t, err)\n    if err_ - err < tol and err_ - err >= 0:\n      return v\n    err_ = err\n  return v\n\n\ndef avg_angle_between_subspaces(xs, ys):\n  \"\"\"Compute the error between two sets of subspaces.\"\"\"\n  if len(xs) != len(ys):\n    return np.pi / 2  # largest possible angle\n  angles = []\n  for ys_perm in itertools.permutations(ys):\n    angles.append([])\n    for i in range(len(xs)):\n      if xs[i].shape[1] == ys_perm[i].shape[1]:\n        sigma = np.linalg.svd(xs[i].T @ ys_perm[i], compute_uv=False)\n        angles[-1].append(np.arccos(np.min(sigma)))\n      else:\n        angles[-1].append(np.pi / 2)\n  angles = np.array(angles)\n  return np.min(np.mean(angles, axis=1))\n\n\ndef make_nearest_neighbors_graph(data, k, n=1000):\n  \"\"\"Build exact k-nearest neighbors graph from numpy data.\n\n  Args:\n    data: Data to compute nearest neighbors of, each column is one point\n    k: number of nearest neighbors to compute\n    n (optional): number of neighbors to compute simultaneously\n\n  Returns:\n    A scipy sparse matrix in LIL format giving the symmetric nn graph.\n  \"\"\"\n  shape = data.shape\n  assert shape[0] % n == 0\n  nbr_graph = scipy.sparse.lil_matrix((shape[0], shape[0]))\n  norm = np.sum(data**2, axis=1)\n  cols = np.meshgrid(np.arange(n), np.ones(k+1))[0]\n  for i in tqdm(range(0, shape[0], n)):\n    dot = data @ data[i:i+n].T\n    dists = np.sqrt(np.abs(norm[:, None] - 2*dot + norm[i:i+n][None, :]))\n    idx = np.argpartition(dists, k, axis=0)[:k+1]\n    nbrs = idx[np.argsort(dists[idx, cols], axis=0), cols][1:]\n    for j in range(n):\n      nbr_graph[i+j, nbrs[:, j]] = 1\n  # Symmetrize graph\n  for i in tqdm(range(shape[0])):\n    for j in nbr_graph.rows[i]:\n      if nbr_graph[j, i] == 0:\n        nbr_graph[j, i] = nbr_graph[i, j]\n  logging.info('Symmetrized neighbor graph')\n  return nbr_graph\n\n\ndef make_tangents(data, neighbor_graph, k):\n  \"\"\"Construct all tangent vectors for the dataset.\"\"\"\n  tangents = np.zeros((data.shape[0], k, data.shape[1]), dtype=np.float32)\n  for i in tqdm(range(data.shape[0])):\n    diff = data[neighbor_graph.rows[i]] - data[i]\n    _, _, u = np.linalg.svd(diff, full_matrices=False)\n    tangents[i] = u[:k]\n  logging.info('Computed all tangents')\n  return tangents\n\n\ndef make_connection(tangents, neighbor_graph):\n  \"\"\"Make connection matrices for all edges of the neighbor graph.\"\"\"\n  connection = {}\n  for i in tqdm(range(tangents.shape[0])):\n    for j in neighbor_graph.rows[i]:\n      if j > i:\n        uy, _, ux = np.linalg.svd(tangents[j] @ tangents[i].T,\n                                  full_matrices=False)\n        conn = uy @ ux\n        connection[(i, j)] = conn\n        connection[(j, i)] = conn.T\n  logging.info('Constructed all connection matrices')\n  return connection\n\n\ndef make_laplacian(connection, neighbor_graph, sym=True, zero_trace=True):\n  \"\"\"Make symmetric zero-trace second-order graph connection Laplacian.\"\"\"\n  n = neighbor_graph.shape[0]\n  k = list(connection.values())[0].shape[0]\n  bsz = (k*(k+1)//2 - 1 if zero_trace else k*(k+1)//2) if sym else k**2\n  data = np.zeros((neighbor_graph.nnz + n, bsz, bsz), dtype=np.float32)\n  indptr = []\n  indices = np.zeros(neighbor_graph.nnz + n)\n  index = 0\n  for i in tqdm(range(n)):\n    indptr.append(index)\n    data[index] = len(neighbor_graph.rows[i]) * np.eye(bsz)\n    indices[index] = i\n    index += 1\n    for j in neighbor_graph.rows[i]:\n      if sym:\n        kron = sym_op(connection[(j, i)], zero_trace=zero_trace)\n      else:\n        kron = np.kron(connection[(j, i)], connection[(j, i)])\n      data[index] = -kron\n      indices[index] = j\n      index += 1\n  indptr.append(index)\n  indptr = np.array(indptr)\n\n  laplacian = scipy.sparse.bsr_matrix((data, indices, indptr),\n                                      shape=(n*bsz, n*bsz))\n  logging.info('Built 2nd-order graph connection Laplacian.')\n  return laplacian\n\n\ndef cluster_subspaces(omega):\n  \"\"\"Cluster different dimensions from the eigenvectors of the Laplacian.\"\"\"\n  w = ffdiag(omega)  # simultaneous diagonalization\n  psi = np.zeros(omega.shape[:2])\n  for i in range(omega.shape[0]):\n    psi[i] = np.diag(w @ omega[i] @ w.T)  # compute diagonals\n  # Compute cosine similarity of diagonal vectors\n  psi_outer = psi.T @ psi\n  psi_diag = np.diag(psi_outer)\n  cos_similarity = psi_outer / np.sqrt(np.outer(psi_diag, psi_diag))\n  adj = cos_similarity > 0.5  # adjacency matrix for graph of clusters\n  # Use graph Laplacian to find cliques\n  # (though a greedy algorithm could work too)\n  lapl = np.diag(np.sum(adj, axis=0)) - adj  # graph Laplacian\n  d, v = np.linalg.eig(lapl)\n  # connected components of graph\n  cliques = np.abs(v[:, np.abs(d) < 1e-6]) > 1e-6\n  tangents = [w[cliques[:, i]] for i in range(sum(np.abs(d) < 1e-6))]\n  return tangents\n\n\ndef fit(data, k, gamma=None, nnbrs=None, neig=10, shard_size=1000):\n  \"\"\"The Geometric Manifold Component Estimator.\n\n  Args:\n    data: the dataset, a set of points sample from a product manifold.\n    k: the dimensionality of the manifold.\n    gamma (optional): the threshold in the spectrum at which to cut off the\n      number of submanifolds.\n    nnbrs (optional): number of neighbors to use for each point.\n    neig (optional): the total number of eigenvectors to compute.\n    shard_size (optional): the size of shard to use in knn computation.\n\n  Returns:\n    A list of lists of subspace bases, one list for each element of the dataset,\n    and the spectrum of the 2nd-order graph Laplacian.\n  \"\"\"\n  if not nnbrs:\n    nnbrs = 2*k\n  neighbor_graph = make_nearest_neighbors_graph(data, nnbrs, n=shard_size)\n  tangents = make_tangents(data, neighbor_graph, k)\n  connection = make_connection(tangents, neighbor_graph)\n  laplacian = make_laplacian(connection, neighbor_graph)\n  eigvals, eigvecs = scipy.sparse.linalg.eigsh(laplacian, k=neig, which='SM')\n  logging.info('Computed bottom eigenvectors of 2nd-order Laplacian')\n  bsz = k*(k+1)//2 - 1  # Block size for the projected 2nd-order Laplacian\n  if gamma:\n    nm = np.argwhere(eigvals < gamma)[-1, 0] + 1\n  else:  # If no threshold is provided, just use the largest gap in the spectrum\n    nm = np.argmax(eigvals[1:] - eigvals[:-1]) + 1\n  eigvecs = eigvecs.reshape(data.shape[0], bsz, neig)\n  omega = np.zeros((nm, k, k), dtype=np.float32)\n  components = []\n  for i in tqdm(range(data.shape[0])):\n    for j in range(nm):\n      omega[j] = vec_to_sym(eigvecs[i, :, j], k, zero_trace=True)\n    components.append([tangents[i].T @ x.T for x in cluster_subspaces(omega)])\n  logging.info('GEOMANCER completed')\n  return components, eigvals\n\n\ndef eval_aligned(tangents, true_tangents):\n  \"\"\"Evaluation for aligned data.\"\"\"\n  errors = np.zeros(len(tangents))\n  for i in tqdm(range(len(tangents))):\n    errors[i] = avg_angle_between_subspaces([gt[i] for gt in true_tangents],\n                                            tangents[i])\n  logging.info('Computed angles between ground truth and GEOMANCER results')\n  return errors\n\n\ndef eval_unaligned(data, tangents, true_data, true_tangents, k=10, n=1000):\n  \"\"\"Evaluation for unaligned data.\"\"\"\n  logging.info('Evaluating unaligned data')\n  errors = np.zeros(data.shape[0])\n  nbrs = make_nearest_neighbors_graph(true_data, k=k, n=n)\n\n  for i in tqdm(range(data.shape[0])):\n    tangent = np.concatenate(tangents[i], axis=1)\n    true_tangent = np.concatenate([t[i] for t in true_tangents], axis=1)\n    dx_true = (true_data[nbrs.rows[i]] - true_data[i]) @ true_tangent\n    dx_result = (data[nbrs.rows[i]] - data[i]) @ tangent\n\n    # compute canonical correlations between the two dxs\n    xx = dx_true.T @ dx_true\n    yy = dx_result.T @ dx_result\n    xy = dx_true.T @ dx_result\n    xx_ = np.linalg.inv(xx)\n    yy_ = np.linalg.inv(yy)\n    foo = scipy.linalg.sqrtm(xx_) @ xy @ scipy.linalg.sqrtm(yy_)\n    u, _, v = np.linalg.svd(foo)\n\n    # project subspaces for results and ground truth into aligned space\n    proj = [v @ tangent.T @ s for s in tangents[i]]\n    true_proj = [u.T @ true_tangent.T @ s[i] for s in true_tangents]\n    errors[i] = avg_angle_between_subspaces(proj, true_proj)\n  return errors\n\n"
  },
  {
    "path": "geomancer/geomancer_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Tests for the Geometric Manifold Component Estimator (GEOMANCER).\"\"\"\n\nfrom absl.testing import absltest\nfrom absl.testing import parameterized\n\nimport numpy as np\n\nfrom geomancer import geomancer\n\n\nclass GeomancerTest(parameterized.TestCase):\n\n  @parameterized.parameters(\n      {'zero_trace': False},\n      {'zero_trace': True})\n  def test_sym_op(self, zero_trace):\n    \"\"\"sym_op on tril(X) gives same result as QXQ' for symmetric X?\"\"\"\n    n = 5\n    x = np.random.randn(n, n)\n    x += x.T\n    if zero_trace:\n      np.fill_diagonal(x, np.diag(x)-np.trace(x)/n)\n    q, _ = np.linalg.qr(np.random.randn(n, n))\n    sym_q = geomancer.sym_op(q, zero_trace=zero_trace)\n    tril_x = x[np.tril_indices(n)]\n    if zero_trace:\n      tril_x = tril_x[:-1]\n    vec_y = sym_q @ tril_x\n    y = q @ x @ q.T\n    y_ = geomancer.vec_to_sym(vec_y, n, zero_trace=zero_trace)\n    np.testing.assert_allclose(y_, y)\n\n  def test_ffdiag(self):\n    k = 2\n    n = 5\n    w, _ = np.linalg.qr(np.random.randn(n, n))\n    psi = np.random.randn(k, n)\n    a = np.zeros((k, n, n))\n    for i in range(k):\n      a[i] = w @ np.diag(psi[i]) @ w.T\n    w_ = geomancer.ffdiag(a)\n    for i in range(k):\n      x = w_ @ a[i] @ w_.T\n      diag = np.diag(x).copy()\n      np.fill_diagonal(x, 1.0)\n      # check that x is diagonal\n      np.testing.assert_allclose(x, np.eye(n), rtol=1e-10, atol=1e-10)\n      self.assertTrue(np.all(np.min(\n          np.abs(diag[None, :] - psi[i][:, None]), axis=0) < 1e-10))\n\n  def test_make_nearest_neighbor_graph(self):\n    n = 100\n    # make points on a circle\n    data = np.zeros((n, 2))\n    for i in range(n):\n      data[i, 0] = np.sin(i*2*np.pi/n)\n      data[i, 1] = np.cos(i*2*np.pi/n)\n    graph = geomancer.make_nearest_neighbors_graph(data, 4, n=10)\n    for i in range(n):\n      self.assertLen(graph.rows[i], 4)\n      self.assertIn((i+1) % n, graph.rows[i])\n      self.assertIn((i+2) % n, graph.rows[i])\n      self.assertIn((i-1) % n, graph.rows[i])\n      self.assertIn((i-2) % n, graph.rows[i])\n\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "geomancer/run.sh",
    "content": "#!/bin/sh\n# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\npython3 -m venv /tmp/geomancer-venv\nsource /tmp/geomancer-venv/bin/activate\npip3 install -U pip\npip3 install geomancer/\npython3 -m geomancer.geomancer_test\npython3 geomancer/train.py --plot=False\n"
  },
  {
    "path": "geomancer/setup.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Setup for pip package.\"\"\"\n\nfrom setuptools import find_packages\nfrom setuptools import setup\n\n\nREQUIRED_PACKAGES = ['numpy', 'scipy', 'matplotlib', 'absl-py', 'tqdm']\n\nsetup(\n    name='geomancer',\n    version='0.1',\n    description='A library for the Geometric Manifold Component Estimator.',\n    url='https://github.com/deepmind/deepmind-research/geomancer',\n    author='DeepMind',\n    author_email='pfau@google.com',\n    # Contained modules and scripts.\n    packages=find_packages(),\n    install_requires=REQUIRED_PACKAGES,\n    platforms=['any'],\n    license='Apache 2.0',\n)\n"
  },
  {
    "path": "geomancer/train.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Run GEOMANCER on products of synthetic manifolds.\"\"\"\n\nimport re\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\n\nimport geomancer\n\nfrom matplotlib import gridspec\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom scipy.stats import special_ortho_group\nfrom tqdm import tqdm\n\nSPECIFICATION = flags.DEFINE_list(\n    name='specification', default=['S^2', 'S^2'], help='List of submanifolds')\nNPTS = flags.DEFINE_integer(\n    name='npts', default=1000, help='Number of data points')\nROTATE = flags.DEFINE_boolean(\n    name='rotate', default=False, help='Apply random rotation to the data')\nPLOT = flags.DEFINE_boolean(\n    name='plot', default=True, help='Whether to enable plotting')\n\n\ndef make_so_tangent(q):\n  \"\"\"Given an n x n orthonormal matrix, return a basis for its tangent space.\"\"\"\n  n = q.shape[0]\n  assert np.allclose(q.T @ q, np.eye(n), atol=1e-4, rtol=1e-4)\n  a = np.zeros((n, n))\n  ii = 0\n  dq = np.zeros((n, n, n*(n-1)//2))\n  for i in range(n):\n    for j in range(i+1, n):\n      a[i, j] = 1\n      a[j, i] = -1\n      dq[..., ii] = a @ q  # tangent vectors are skew-symmetric matrix times Q\n      a[i, j] = 0\n      a[j, i] = 0\n      ii += 1\n  # reshape and orthonormalize the result\n  return np.linalg.qr(np.reshape(dq, (n**2, n*(n-1)//2)))[0]\n\n\ndef make_sphere_tangent(x):\n  _, _, v = np.linalg.svd(x[None, :])\n  return v[:, 1:]\n\n\ndef make_true_tangents(spec, data):\n  \"\"\"Return a set of orthonormal bases, one for each submanifold.\"\"\"\n  for i in range(spec.shape[1]):\n    assert spec[0, i] == 0 or spec[1, i] == 0\n  so_dim = sum(dim ** 2 for dim in spec[0])\n  sphere_dim = sum(dim+1 if dim > 0 else 0 for dim in spec[1])\n  assert so_dim + sphere_dim == data.shape[0]\n\n  ii = 0\n  tangents = []\n  for i in range(spec.shape[1]):\n    if spec[0, i] != 0:\n      dim = spec[0, i]\n      tangents.append(make_so_tangent(np.reshape(data[ii:ii+dim**2],\n                                                 (dim, dim))))\n      ii += dim ** 2\n    else:\n      dim = spec[1, i]\n      tangents.append(make_sphere_tangent(data[ii:ii+dim+1]))\n      ii += dim + 1\n\n  tangents2 = []\n  for i in range(len(tangents)):\n    size1 = sum(x.shape[0] for x in tangents[:i])\n    size2 = sum(x.shape[0] for x in tangents[i+1:])\n    tangents2.append(np.concatenate(\n        (np.zeros((size1, tangents[i].shape[1])),\n         tangents[i],\n         np.zeros((size2, tangents[i].shape[1]))), axis=0))\n  return tangents2\n\n\ndef make_product_manifold(specification, npts):\n  \"\"\"Generate data from a product of manifolds with the given specification.\"\"\"\n  data = []\n  tangents = []\n  latent_dim = 0\n  spec_array = np.zeros((2, len(specification)), dtype=np.int32)\n  for i, spec in enumerate(specification):\n    so_spec = re.search(r'SO\\(([0-9]+)\\)', spec)  # matches \"SO(<numbers>)\"\n    sphere_spec = re.search(r'S\\^([0-9]+)', spec)  # matches \"S^<numbers>\"\n\n    if sphere_spec is not None:\n      dim = int(sphere_spec.group(1))\n      spec_array[1, i] = dim\n      latent_dim += dim\n      dat = np.random.randn(npts, dim+1)\n      dat /= np.tile(np.sqrt(np.sum(dat**2, axis=1)[..., None]),\n                     [1, dim+1])\n    elif so_spec is not None:\n      dim = int(so_spec.group(1))\n      spec_array[0, i] = dim\n      latent_dim += dim * (dim - 1) // 2\n      dat = [np.ndarray.flatten(special_ortho_group.rvs(dim), order='C')\n             for _ in range(npts)]\n      dat = np.stack(dat)\n    else:\n      raise ValueError(f'Unrecognized manifold: {spec}')\n    data.append(dat)\n  data = np.concatenate(data, axis=1)\n\n  for i in range(spec_array.shape[1]):\n    if spec_array[0, i] != 0:\n      dim = spec_array[0, i]\n      tangents.append(np.zeros((npts, data.shape[1], dim * (dim - 1) // 2)))\n    elif spec_array[1, i] != 0:\n      dim = spec_array[1, i]\n      tangents.append(np.zeros((npts, data.shape[1], dim)))\n\n  for i in tqdm(range(npts)):\n    true_tangent = make_true_tangents(spec_array, data[i])\n    for j in range(len(specification)):\n      tangents[j][i] = true_tangent[j]\n  logging.info('Constructed data and true tangents for %s',\n               ' x '.join(specification))\n  return data, latent_dim, tangents\n\n\ndef main(_):\n  # Generate data and run GEOMANCER\n  data, dim, tangents = make_product_manifold(SPECIFICATION.value, NPTS.value)\n  if ROTATE.value:\n    rot, _ = np.linalg.qr(np.random.randn(data.shape[1], data.shape[1]))\n    data_rot = data @ rot.T\n    components, spectrum = geomancer.fit(data_rot, dim)\n    errors = geomancer.eval_unaligned(data_rot, components, data, tangents)\n  else:\n    components, spectrum = geomancer.fit(data, dim)\n    errors = geomancer.eval_aligned(components, tangents)\n\n  logging.info('Error between subspaces: %.2f +/- %.2f radians',\n               np.mean(errors),\n               np.std(errors))\n\n  if PLOT.value:\n\n    # Plot spectrum\n    plt.figure(figsize=(8, 6))\n    plt.scatter(np.arange(len(spectrum)), spectrum, s=100)\n    largest_gap = np.argmax(spectrum[1:]-spectrum[:-1]) + 1\n    plt.axvline(largest_gap, linewidth=2, c='r')\n    plt.xticks([])\n    plt.yticks(fontsize=18)\n    plt.xlabel('Index', fontsize=24)\n    plt.ylabel('Eigenvalue', fontsize=24)\n    plt.title('GeoManCEr Eigenvalue Spectrum', fontsize=24)\n\n    # Plot subspace bases\n    fig = plt.figure(figsize=(8, 6))\n    bases = components[0]\n    gs = gridspec.GridSpec(1, len(bases),\n                           width_ratios=[b.shape[1] for b in bases])\n    for i in range(len(bases)):\n      ax = plt.subplot(gs[i])\n      ax.imshow(bases[i])\n      ax.set_xticks([])\n      ax.set_yticks([])\n      ax.set_title(r'$T_{\\mathbf{x}_1}\\mathcal{M}_%d$' % (i+1), fontsize=18)\n    fig.canvas.set_window_title('GeoManCEr Results')\n\n    # Plot ground truth\n    fig = plt.figure(figsize=(8, 6))\n    gs = gridspec.GridSpec(1, len(tangents),\n                           width_ratios=[b.shape[2] for b in tangents])\n    for i, spec in enumerate(SPECIFICATION.value):\n      ax = plt.subplot(gs[i])\n      ax.imshow(tangents[i][0])\n      ax.set_xticks([])\n      ax.set_yticks([])\n      ax.set_title(r'$T_{\\mathbf{x}_1}%s$' % spec, fontsize=18)\n    fig.canvas.set_window_title('Ground Truth')\n\n    plt.show()\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "glassy_dynamics/README.md",
    "content": "# Unveiling the predictive power of static structure in glassy systems\n\nThis repository contains an open source implementation of the graph neural\nnetwork model described in our\n[paper](http://dx.doi.org/10.1038/s41567-020-0842-8).\nThe model can be trained using the training binary included in this repository,\nand the dataset published with our paper.\n\nPretrained model checkpoints and the dataset are available via the\n[google cloud platform](https://console.cloud.google.com/storage/browser/deepmind-research-glassy-dynamics).\n\n\n## Abstract\n\nDespite decades of theoretical studies, the nature of the glass transition\nremains elusive and debated, while the existence of structural predictors of its\ndynamics is a major open question. Recent approaches propose inferring\npredictors from a variety of human-defined features using machine learning.\nHere we determine the long time evolution of a glassy system solely from the\ninitial particle positions and without any hand-crafted features, using graph\nneural networks as a powerful model. We show that this method outperforms\ncurrent state-of-the-art methods, generalizing over a wide range of\ntemperatures, pressures, and densities. In shear experiments, it predicts the\nlocations of rearranging particles. The structural predictors learned by our\nnetwork exhibit a correlation length which increases with larger timescales to\nreach the size of our system. Beyond glasses, our method could apply to many\nother physical systems that map to a graph of local interaction.\n\n\n## Dataset\n\nThe dataset was generated with the LAMMPS molecular dynamics package.\nThe simulated system has periodic boundaries and is a binary mixture of 4096\nlarge (A) and small (B) particles that interact via a 6-12 Lennard-Jones\npotential.\nThe interaction coefficients are set for a typical Kob-Andersen configuration.\n\n### Download\n\nThe dataset (and model checkpoints) can be downloaded using [gsutil](https://cloud.google.com/storage/docs/downloading-objects).\nTo download the entire GCP bucket (~100GB) use:\n> gsutil -m cp -R gs://deepmind-research-glassy-dynamics .\n\n\n\n### Data format\n\nThe data is stored in Python's pickle format protocol version 3.\nEach file contains the data for one of the equilibrated systems in a Python\ndictionary. The dictionary contains the following entries:\n\n  - `positions` the particle positions of the equilibrated system.\n  - `types` the particle types (0 == type A and 1 == type B) of the equilibrated\n     system.\n  - `box` the dimensions of the periodic cubic simulation box.\n  - `time` the logarithmically sampled time points.\n  - `time_indices` the indices of the time points for which the sampled\n     trajectories on average reach a certain value of the intermediate\n     scattering function.\n  - `is_values` the values of the intermediate scattering function associated\n     with each time index.\n  - `trajectory_start_velocities` the velocities drawn from a Boltzmann\n     distribution at the start of each trajectory.\n  - `trajectory_target_positions` the positions of the particles for each of\n     the trajectories at selected time points (as defined by the `time_indices`\n     array and the corresponding values of the intermediate scattering function\n     stored in `is_values`).\n  - `metadata` a dictionary containing additional metadata:\n    - `temperature` the temperature at which the system was equilibrated.\n    - `pressure` the pressure at which the system was equilibrated.\n    - `fluid` the type of fluid which was simulated (Kob-Andersen).\n\nAll units are in Lennard-Jones units. The positions are stored in the absolute\ncoordinate system i.e. they are outside of the simulation box if the particle\ncrossed a periodic boundary during the simulation.\n\n\n## Reference\n\nIf this repository is helpful for your research please cite the following\npublication:\n\n[Unveiling the predictive power of static structure in glassy systems](http://dx.doi.org/10.1038/s41567-020-0842-8)\nV. Bapst, T. Keck, A. Grabska-Barwińska, C. Donner, E. D. Cubuk,\nS. S. Schoenholz, A. Obika, A. W. R. Nelson, T. Back, D. Hassabis and P. Kohli\n\n\n## Disclaimer\nThis is not an official Google product.\n\n"
  },
  {
    "path": "glassy_dynamics/apply_binary.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Applies a graph-based network to predict particle mobilities in glasses.\"\"\"\n\nimport os\n\nfrom absl import app\nfrom absl import flags\n\nfrom glassy_dynamics import train\n\nFLAGS = flags.FLAGS\n\nflags.DEFINE_string(\n    'data_directory',\n    '',\n    'Directory which contains the train or test datasets.')\nflags.DEFINE_integer(\n    'time_index',\n    9,\n    'The time index of the target mobilities.')\nflags.DEFINE_integer(\n    'max_files_to_load',\n    None,\n    'The maximum number of files to load.')\nflags.DEFINE_string(\n    'checkpoint_path',\n    'checkpoints/t044_s09.ckpt',\n    'Path used to load the model.')\n\n\ndef main(argv):\n  if len(argv) > 1:\n    raise app.UsageError('Too many command-line arguments.')\n\n  file_pattern = os.path.join(FLAGS.data_directory, 'aggregated*')\n  train.apply_model(\n      checkpoint_path=FLAGS.checkpoint_path,\n      file_pattern=file_pattern,\n      max_files_to_load=FLAGS.max_files_to_load,\n      time_index=FLAGS.time_index)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "glassy_dynamics/graph_model.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"A graph neural network based model to predict particle mobilities.\n\nThe architecture and performance of this model is described in our publication:\n\"Unveiling the predictive power of static structure in glassy systems\".\n\"\"\"\n\nimport functools\nfrom typing import Any, Dict, Text, Tuple, Optional\n\nfrom graph_nets import graphs\nfrom graph_nets import modules as gn_modules\nfrom graph_nets import utils_tf\n\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\n\ndef make_graph_from_static_structure(\n    positions: tf.Tensor,\n    types: tf.Tensor,\n    box: tf.Tensor,\n    edge_threshold: float) -> graphs.GraphsTuple:\n  \"\"\"Returns graph representing the static structure of the glass.\n\n  Each particle is represented by a node in the graph. The particle type is\n  stored as a node feature.\n  Two particles at a distance less than the threshold are connected by an edge.\n  The relative distance vector is stored as an edge feature.\n\n  Args:\n    positions: particle positions with shape [n_particles, 3].\n    types: particle types with shape [n_particles].\n    box: dimensions of the cubic box that contains the particles with shape [3].\n    edge_threshold: particles at distance less than threshold are connected by\n      an edge.\n  \"\"\"\n  # Calculate pairwise relative distances between particles: shape [n, n, 3].\n  cross_positions = positions[tf.newaxis, :, :] - positions[:, tf.newaxis, :]\n  # Enforces periodic boundary conditions.\n  box_ = box[tf.newaxis, tf.newaxis, :]\n  cross_positions += tf.cast(cross_positions < -box_ / 2., tf.float32) * box_\n  cross_positions -= tf.cast(cross_positions > box_ / 2., tf.float32) * box_\n  # Calculates adjacency matrix in a sparse format (indices), based on the given\n  # distances and threshold.\n  distances = tf.norm(cross_positions, axis=-1)\n  indices = tf.where(distances < edge_threshold)\n\n  # Defines graph.\n  nodes = types[:, tf.newaxis]\n  senders = indices[:, 0]\n  receivers = indices[:, 1]\n  edges = tf.gather_nd(cross_positions, indices)\n\n  return graphs.GraphsTuple(\n      nodes=tf.cast(nodes, tf.float32),\n      n_node=tf.reshape(tf.shape(nodes)[0], [1]),\n      edges=tf.cast(edges, tf.float32),\n      n_edge=tf.reshape(tf.shape(edges)[0], [1]),\n      globals=tf.zeros((1, 1), dtype=tf.float32),\n      receivers=tf.cast(receivers, tf.int32),\n      senders=tf.cast(senders, tf.int32)\n      )\n\n\ndef apply_random_rotation(graph: graphs.GraphsTuple) -> graphs.GraphsTuple:\n  \"\"\"Returns randomly rotated graph representation.\n\n  The rotation is an element of O(3) with rotation angles multiple of pi/2.\n  This function assumes that the relative particle distances are stored in\n  the edge features.\n\n  Args:\n    graph: The graphs tuple as defined in `graph_nets.graphs`.\n  \"\"\"\n  # Transposes edge features, so that the axes are in the first dimension.\n  # Outputs a tensor of shape [3, n_particles].\n  xyz = tf.transpose(graph.edges)\n  # Random pi/2 rotation(s)\n  permutation = tf.random.shuffle(tf.constant([0, 1, 2], dtype=tf.int32))\n  xyz = tf.gather(xyz, permutation)\n  # Random reflections.\n  symmetry = tf.random_uniform([3], minval=0, maxval=2, dtype=tf.int32)\n  symmetry = 1 - 2 * tf.cast(tf.reshape(symmetry, [3, 1]), tf.float32)\n  xyz = xyz * symmetry\n  edges = tf.transpose(xyz)\n  return graph.replace(edges=edges)\n\n\nclass GraphBasedModel(snt.AbstractModule):\n  \"\"\"Graph based model which predicts particle mobilities from their positions.\n\n  This network encodes the nodes and edges of the input graph independently, and\n  then performs message-passing on this graph, updating its edges based on their\n  associated nodes, then updating the nodes based on the input nodes' features\n  and their associated updated edge features.\n  This update is repeated several times.\n  Afterwards the resulting node embeddings are decoded to predict the particle\n  mobility.\n  \"\"\"\n\n  def __init__(self,\n               n_recurrences: int,\n               mlp_sizes: Tuple[int],\n               mlp_kwargs: Optional[Dict[Text, Any]] = None,\n               name='Graph'):\n    \"\"\"Creates a new GraphBasedModel object.\n\n    Args:\n      n_recurrences: the number of message passing steps in the graph network.\n      mlp_sizes: the number of neurons in each layer of the MLP.\n      mlp_kwargs: additional keyword aguments passed to the MLP.\n      name: the name of the Sonnet module.\n    \"\"\"\n    super(GraphBasedModel, self).__init__(name=name)\n    self._n_recurrences = n_recurrences\n\n    if mlp_kwargs is None:\n      mlp_kwargs = {}\n\n    model_fn = functools.partial(\n        snt.nets.MLP,\n        output_sizes=mlp_sizes,\n        activate_final=True,\n        **mlp_kwargs)\n\n    final_model_fn = functools.partial(\n        snt.nets.MLP,\n        output_sizes=mlp_sizes + (1,),\n        activate_final=False,\n        **mlp_kwargs)\n\n    with self._enter_variable_scope():\n      self._encoder = gn_modules.GraphIndependent(\n          node_model_fn=model_fn,\n          edge_model_fn=model_fn)\n\n      if self._n_recurrences > 0:\n        self._propagation_network = gn_modules.GraphNetwork(\n            node_model_fn=model_fn,\n            edge_model_fn=model_fn,\n            # We do not use globals, hence we just pass the identity function.\n            global_model_fn=lambda: lambda x: x,\n            reducer=tf.unsorted_segment_sum,\n            edge_block_opt=dict(use_globals=False),\n            node_block_opt=dict(use_globals=False),\n            global_block_opt=dict(use_globals=False))\n\n      self._decoder = gn_modules.GraphIndependent(\n          node_model_fn=final_model_fn,\n          edge_model_fn=model_fn)\n\n  def _build(self, graphs_tuple: graphs.GraphsTuple) -> tf.Tensor:\n    \"\"\"Connects the model into the tensorflow graph.\n\n    Args:\n      graphs_tuple: input graph tensor as defined in `graphs_tuple.graphs`.\n\n    Returns:\n      tensor with shape [n_particles] containing the predicted particle\n      mobilities.\n    \"\"\"\n    encoded = self._encoder(graphs_tuple)\n    outputs = encoded\n\n    for _ in range(self._n_recurrences):\n      # Adds skip connections.\n      inputs = utils_tf.concat([outputs, encoded], axis=-1)\n      outputs = self._propagation_network(inputs)\n\n    decoded = self._decoder(outputs)\n    return tf.squeeze(decoded.nodes, axis=-1)\n"
  },
  {
    "path": "glassy_dynamics/graph_model_test.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Tests for graph_model.\"\"\"\n\nimport itertools\nfrom absl.testing import parameterized\n\nfrom graph_nets import graphs\nimport numpy as np\nimport tensorflow.compat.v1 as tf\n\nfrom glassy_dynamics import graph_model\n\n\nclass GraphModelTest(tf.test.TestCase, parameterized.TestCase):\n\n  def setUp(self):\n    \"\"\"Initializes a small tractable test (particle) system.\"\"\"\n    super(GraphModelTest, self).setUp()\n    # Fixes random seed to ensure deterministic outputs.\n    tf.random.set_random_seed(1234)\n\n    # In this test we use a small tractable set of particles covering all corner\n    # cases:\n    # a) eight particles with different types,\n    # b) periodic box is not cubic,\n    # c) three disjoint cluster of particles separated by a threshold > 2,\n    # d) first two clusters overlap with the periodic boundary,\n    # e) first cluster is not fully connected,\n    # f) second cluster is fully connected,\n    # g) and third cluster is a single isolated particle.\n    #\n    # The formatting of the code below separates the three clusters by\n    # adding linebreaks after each cluster.\n    self._positions = np.array(\n        [[0.0, 0.0, 0.0], [2.5, 0.0, 0.0], [0.0, 1.5, 0.0], [0.0, 0.0, 9.0],\n         [0.0, 5.0, 0.0], [0.0, 5.0, 1.0], [3.0, 5.0, 0.0],\n         [2.0, 3.0, 3.0]])\n    self._types = np.array([0.0, 0.0, 1.0, 0.0,\n                            0.0, 1.0, 0.0,\n                            0.0])\n    self._box = np.array([4.0, 10.0, 10.0])\n\n    # Creates the corresponding graph elements, assuming a threshold of 2 and\n    # the conventions described in `graph_nets.graphs`.\n    self._edge_threshold = 2\n    self._nodes = np.array(\n        [[0.0], [0.0], [1.0], [0.0],\n         [0.0], [1.0], [0.0],\n         [0.0]])\n    self._edges = np.array(\n        [[0.0, 0.0, 0.0], [-1.5, 0.0, 0.0], [0.0, 1.5, 0.0], [0.0, 0.0, -1.0],\n         [1.5, 0.0, 0.0], [0.0, 0.0, 0.0], [1.5, 0.0, -1.0],\n         [0.0, -1.5, 0.0], [0.0, 0.0, 0.0], [0.0, -1.5, -1.0],\n         [0.0, 0.0, 1.0], [-1.5, 0.0, 1.0], [0.0, 1.5, 1.0], [0.0, 0.0, 0.0],\n         [0.0, 0.0, 0.0], [0.0, 0.0, 1.0], [-1.0, 0.0, 0.0],\n         [0.0, 0.0, -1.0], [0.0, 0.0, 0.0], [-1.0, 0.0, -1.0],\n         [1.0, 0.0, 0.0], [1.0, 0.0, 1.0], [0.0, 0.0, 0.0],\n         [0.0, 0.0, 0.0]])\n\n    self._receivers = np.array(\n        [0, 1, 2, 3, 0, 1, 3, 0, 2, 3, 0, 1, 2, 3,\n         4, 5, 6, 4, 5, 6, 4, 5, 6,\n         7])\n    self._senders = np.array(\n        [0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3,\n         4, 4, 4, 5, 5, 5, 6, 6, 6,\n         7])\n\n  def _get_graphs_tuple(self):\n    \"\"\"Returns a GraphsTuple containing a graph based on the test system.\"\"\"\n    return graphs.GraphsTuple(\n        nodes=tf.constant(self._nodes, dtype=tf.float32),\n        edges=tf.constant(self._edges, dtype=tf.float32),\n        globals=tf.constant(np.array([[0.0]]), dtype=tf.float32),\n        receivers=tf.constant(self._receivers, dtype=tf.int32),\n        senders=tf.constant(self._senders, dtype=tf.int32),\n        n_node=tf.constant([len(self._nodes)], dtype=tf.int32),\n        n_edge=tf.constant([len(self._edges)], dtype=tf.int32))\n\n  def test_make_graph_from_static_structure(self):\n    graphs_tuple_op = graph_model.make_graph_from_static_structure(\n        tf.constant(self._positions, dtype=tf.float32),\n        tf.constant(self._types, dtype=tf.int32),\n        tf.constant(self._box, dtype=tf.float32),\n        self._edge_threshold)\n    graphs_tuple = self.evaluate(graphs_tuple_op)\n    self.assertLen(self._nodes, graphs_tuple.n_node)\n    self.assertLen(self._edges, graphs_tuple.n_edge)\n    np.testing.assert_almost_equal(graphs_tuple.nodes, self._nodes)\n    np.testing.assert_equal(graphs_tuple.senders, self._senders)\n    np.testing.assert_equal(graphs_tuple.receivers, self._receivers)\n    np.testing.assert_almost_equal(graphs_tuple.globals, np.array([[0.0]]))\n    np.testing.assert_almost_equal(graphs_tuple.edges, self._edges)\n\n  def _is_equal_up_to_rotation(self, x, y):\n    for axes in itertools.permutations([0, 1, 2]):\n      for mirrors in itertools.product([1, -1], repeat=3):\n        if np.allclose(x, y[:, axes] * mirrors):\n          return True\n    return False\n\n  def test_apply_random_rotation(self):\n    graphs_tuple = self._get_graphs_tuple()\n    rotated_graphs_tuple_op = graph_model.apply_random_rotation(graphs_tuple)\n    rotated_graphs_tuple = self.evaluate(rotated_graphs_tuple_op)\n    np.testing.assert_almost_equal(rotated_graphs_tuple.nodes, self._nodes)\n    np.testing.assert_almost_equal(rotated_graphs_tuple.senders, self._senders)\n    np.testing.assert_almost_equal(\n        rotated_graphs_tuple.receivers, self._receivers)\n    np.testing.assert_almost_equal(\n        rotated_graphs_tuple.globals, np.array([[0.0]]))\n    self.assertTrue(self._is_equal_up_to_rotation(rotated_graphs_tuple.edges,\n                                                  self._edges))\n\n  @parameterized.named_parameters(('no_propagation', 0, (30,)),\n                                  ('multi_propagation', 5, (15,)),\n                                  ('multi_layer', 1, (20, 30)))\n  def test_GraphModel(self, n_recurrences, mlp_sizes):\n    graphs_tuple = self._get_graphs_tuple()\n    output_op = graph_model.GraphBasedModel(n_recurrences=n_recurrences,\n                                            mlp_sizes=mlp_sizes)(graphs_tuple)\n    self.assertListEqual(output_op.shape.as_list(), [len(self._types)])\n    # Tests if the model runs without crashing.\n    with self.session():\n      tf.global_variables_initializer().run()\n      output_op.eval()\n\n\nif __name__ == '__main__':\n  tf.test.main()\n"
  },
  {
    "path": "glassy_dynamics/requirements.txt",
    "content": "# GlassyDynamics\nabsl-py==0.8.1\nastor==0.8.0\ncloudpickle==1.1.1\ncontextlib2==0.6.0.post1\ndecorator==4.4.0\ndm-sonnet==1.35\nfuture==0.18.0\ngast==0.2.2\ngoogle-pasta==0.1.7\ngraph-nets==1.0.4\ngrpcio==1.24.1\nh5py==2.10.0\nKeras-Applications==1.0.8\nKeras-Preprocessing==1.1.0\nMarkdown==3.1.1\nmock==3.0.5\nnetworkx==2.3\nnumpy==1.17.2\nprotobuf==3.10.0\nsemantic-version==2.8.2\nsix==1.12.0\ntensorboard==1.15.0\ntensorflow==1.15.0\ntensorflow-estimator==1.15.1\ntensorflow-probability==0.7.0\ntermcolor==1.1.0\nWerkzeug==0.16.0\nwrapt==1.11.2\n"
  },
  {
    "path": "glassy_dynamics/train.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Training pipeline for the prediction of particle mobilities in glasses.\"\"\"\n\n\nimport collections\nimport enum\nimport pickle\nfrom typing import Any, Dict, List, Optional, Text, Tuple, Sequence\n\nfrom absl import logging\nimport numpy as np\n\nimport tensorflow.compat.v1 as tf\nimport tensorflow_probability as tfp\n\n\nfrom glassy_dynamics import graph_model\n\ntf.enable_resource_variables()\n\nLossCollection = collections.namedtuple('LossCollection',\n                                        'l1_loss, l2_loss, correlation')\nGlassSimulationData = collections.namedtuple('GlassSimulationData',\n                                             'positions, targets, types, box')\n\n\nclass ParticleType(enum.IntEnum):\n  \"\"\"The simulation contains two particle types, identified as type A and B.\n\n  The dataset encodes the particle type in an integer.\n    - 0 corresponds to particle type A.\n    - 1 corresponds to particle type B.\n  \"\"\"\n  A = 0\n  B = 1\n\n\ndef get_targets(\n    initial_positions: np.ndarray,\n    trajectory_target_positions: Sequence[np.ndarray]) -> np.ndarray:\n  \"\"\"Returns the averaged particle mobilities from the sampled trajectories.\n\n  Args:\n    initial_positions: the initial positions of the particles with shape\n      [n_particles, 3].\n    trajectory_target_positions: the absolute positions of the particles at the\n      target time for all sampled trajectories, each with shape\n      [n_particles, 3].\n  \"\"\"\n  targets = np.mean([np.linalg.norm(t - initial_positions, axis=-1)\n                     for t in trajectory_target_positions], axis=0)\n  return targets.astype(np.float32)\n\n\ndef load_data(\n    file_pattern: Text,\n    time_index: int,\n    max_files_to_load: Optional[int] = None) -> List[GlassSimulationData]:\n  \"\"\"Returns a dictionary containing the training or test dataset.\n\n  The dictionary contains:\n    `positions`: `np.ndarray` containing the particle positions with shape\n      [n_particles, 3].\n    `targets`: `np.ndarray` containing particle mobilities with shape\n      [n_particles].\n    `types`: `np.ndarray` containing the particle types with shape with shape\n      [n_particles].\n    `box`: `np.ndarray` containing the dimensions of the periodic box with shape\n      [3].\n\n  Args:\n    file_pattern: pattern matching the files with the simulation data.\n    time_index: the time index of the targets.\n    max_files_to_load: the maximum number of files to load.\n  \"\"\"\n  filenames = tf.io.gfile.glob(file_pattern)\n  if max_files_to_load:\n    filenames = filenames[:max_files_to_load]\n\n  static_structures = []\n  for filename in filenames:\n    with tf.io.gfile.GFile(filename, 'rb') as f:\n      data = pickle.load(f)\n    static_structures.append(GlassSimulationData(\n        positions=data['positions'].astype(np.float32),\n        targets=get_targets(\n            data['positions'], data['trajectory_target_positions'][time_index]),\n        types=data['types'].astype(np.int32),\n        box=data['box'].astype(np.float32)))\n  return static_structures\n\n\ndef get_loss_ops(\n    prediction: tf.Tensor,\n    target: tf.Tensor,\n    types: tf.Tensor) -> LossCollection:\n  \"\"\"Returns L1/L2 loss and correlation for type A particles.\n\n  Args:\n    prediction: tensor with shape [n_particles] containing the predicted\n      particle mobilities.\n    target: tensor with shape [n_particles] containing the true particle\n      mobilities.\n    types: tensor with shape [n_particles] containing the particle types.\n  \"\"\"\n  # Considers only type A particles.\n  mask = tf.equal(types, ParticleType.A)\n  prediction = tf.boolean_mask(prediction, mask)\n  target = tf.boolean_mask(target, mask)\n  return LossCollection(\n      l1_loss=tf.reduce_mean(tf.abs(prediction - target)),\n      l2_loss=tf.reduce_mean((prediction - target)**2),\n      correlation=tf.squeeze(tfp.stats.correlation(\n          prediction[:, tf.newaxis], target[:, tf.newaxis])))\n\n\ndef get_minimize_op(\n    loss: tf.Tensor,\n    learning_rate: float,\n    grad_clip: Optional[float] = None) -> tf.Tensor:\n  \"\"\"Returns minimization operation.\n\n  Args:\n    loss: the loss tensor which is minimized.\n    learning_rate: the learning rate used by the optimizer.\n    grad_clip: all gradients are clipped to the given value if not None or 0.\n  \"\"\"\n  optimizer = tf.train.AdamOptimizer(learning_rate)\n  grads_and_vars = optimizer.compute_gradients(loss)\n  if grad_clip:\n    grads, _ = tf.clip_by_global_norm([g for g, _ in grads_and_vars], grad_clip)\n    grads_and_vars = [(g, pair[1]) for g, pair in zip(grads, grads_and_vars)]\n  minimize = optimizer.apply_gradients(grads_and_vars)\n  return minimize\n\n\ndef _log_stats_and_return_mean_correlation(\n    label: Text,\n    stats: Sequence[LossCollection]) -> float:\n  \"\"\"Logs performance statistics and returns mean correlation.\n\n  Args:\n    label: label printed before the combined statistics e.g. train or test.\n    stats: statistics calculated for each batch in a dataset.\n\n  Returns:\n    mean correlation\n  \"\"\"\n  for key in LossCollection._fields:\n    values = [getattr(s, key) for s in stats]\n    mean = np.mean(values)\n    std = np.std(values)\n    logging.info('%s: %s: %.4f +/- %.4f', label, key, mean, std)\n  return np.mean([s.correlation for s in stats])\n\n\ndef train_model(train_file_pattern: Text,\n                test_file_pattern: Text,\n                max_files_to_load: Optional[int] = None,\n                n_epochs: int = 1000,\n                time_index: int = 9,\n                augment_data_using_rotations: bool = True,\n                learning_rate: float = 1e-4,\n                grad_clip: Optional[float] = 1.0,\n                n_recurrences: int = 7,\n                mlp_sizes: Tuple[int] = (64, 64),\n                mlp_kwargs: Optional[Dict[Text, Any]] = None,\n                edge_threshold: float = 2.0,\n                measurement_store_interval: int = 1000,\n                checkpoint_path: Optional[Text] = None) -> float:  # pytype: disable=annotation-type-mismatch\n  \"\"\"Trains GraphModel using tensorflow.\n\n  Args:\n    train_file_pattern: pattern matching the files with the training data.\n    test_file_pattern: pattern matching the files with the test data.\n    max_files_to_load: the maximum number of train and test files to load.\n      If None, all files will be loaded.\n    n_epochs: the number of passes through the training dataset (epochs).\n    time_index: the time index (0-9) of the target mobilities.\n    augment_data_using_rotations: data is augemented by using random rotations.\n    learning_rate: the learning rate used by the optimizer.\n    grad_clip: all gradients are clipped to the given value.\n    n_recurrences: the number of message passing steps in the graphnet.\n    mlp_sizes: the number of neurons in each layer of the MLP.\n    mlp_kwargs: additional keyword aguments passed to the MLP.\n    edge_threshold: particles at distance less than threshold are connected by\n      an edge.\n    measurement_store_interval: number of steps between storing objective values\n      (loss and correlation).\n    checkpoint_path: path used to store the checkpoint with the highest\n      correlation on the test set.\n\n  Returns:\n    Correlation on the test dataset of best model encountered during training.\n  \"\"\"\n  if mlp_kwargs is None:\n    mlp_kwargs = dict(initializers=dict(w=tf.variance_scaling_initializer(1.0),\n                                        b=tf.variance_scaling_initializer(0.1)))\n  # Loads train and test dataset.\n  dataset_kwargs = dict(\n      time_index=time_index,\n      max_files_to_load=max_files_to_load)\n  training_data = load_data(train_file_pattern, **dataset_kwargs)\n  test_data = load_data(test_file_pattern, **dataset_kwargs)\n\n  # Defines wrapper functions, which can directly be passed to the\n  # tf.data.Dataset.map function.\n  def _make_graph_from_static_structure(static_structure):\n    \"\"\"Converts static structure to graph, targets and types.\"\"\"\n    return (graph_model.make_graph_from_static_structure(\n        static_structure.positions,\n        static_structure.types,\n        static_structure.box,\n        edge_threshold),\n            static_structure.targets,\n            static_structure.types)\n\n  def _apply_random_rotation(graph, targets, types):\n    \"\"\"Applies random rotations to the graph and forwards targets and types.\"\"\"\n    return graph_model.apply_random_rotation(graph), targets, types\n\n  # Defines data-pipeline based on tf.data.Dataset following the official\n  # guideline: https://www.tensorflow.org/guide/datasets#consuming_numpy_arrays.\n  # We use initializable iterators to avoid embedding the training and test data\n  # directly into the graph.\n  # Instead we feed the data to the iterators during the initalization of the\n  # iterators before the main training loop.\n  placeholders = GlassSimulationData._make(\n      tf.placeholder(s.dtype, (None,) + s.shape) for s in training_data[0])\n  dataset = tf.data.Dataset.from_tensor_slices(placeholders)\n  dataset = dataset.map(_make_graph_from_static_structure)\n  dataset = dataset.cache()\n  dataset = dataset.shuffle(400)\n  # Augments data. This has to be done after calling dataset.cache!\n  if augment_data_using_rotations:\n    dataset = dataset.map(_apply_random_rotation)\n  dataset = dataset.repeat()\n  train_iterator = dataset.make_initializable_iterator()\n\n  dataset = tf.data.Dataset.from_tensor_slices(placeholders)\n  dataset = dataset.map(_make_graph_from_static_structure)\n  dataset = dataset.cache()\n  dataset = dataset.repeat()\n  test_iterator = dataset.make_initializable_iterator()\n\n  # Creates tensorflow graph.\n  # Note: We decouple the training and test datasets from the input pipeline\n  # by creating a new iterator from a string-handle placeholder with the same\n  # output types and shapes as the training dataset.\n  dataset_handle = tf.placeholder(tf.string, shape=[])\n  iterator = tf.data.Iterator.from_string_handle(\n      dataset_handle, train_iterator.output_types, train_iterator.output_shapes)\n  graph, targets, types = iterator.get_next()\n\n  model = graph_model.GraphBasedModel(\n      n_recurrences, mlp_sizes, mlp_kwargs)\n  prediction = model(graph)\n\n  # Defines loss and minimization operations.\n  loss_ops = get_loss_ops(prediction, targets, types)\n  minimize_op = get_minimize_op(loss_ops.l2_loss, learning_rate, grad_clip)\n\n  best_so_far = -1\n  train_stats = []\n  test_stats = []\n\n  saver = tf.train.Saver()\n\n  with tf.train.SingularMonitoredSession() as session:\n    # Initializes train and test iterators with the training and test datasets.\n    # The obtained training and test string-handles can be passed to the\n    # dataset_handle placeholder to select the dataset.\n    train_handle = session.run(train_iterator.string_handle())\n    test_handle = session.run(test_iterator.string_handle())\n    feed_dict = {p: [x[i] for x in training_data]\n                 for i, p in enumerate(placeholders)}\n    session.run(train_iterator.initializer, feed_dict=feed_dict)\n    feed_dict = {p: [x[i] for x in test_data]\n                 for i, p in enumerate(placeholders)}\n    session.run(test_iterator.initializer, feed_dict=feed_dict)\n\n    # Trains model using stochatic gradient descent on the training dataset.\n    n_training_steps = len(training_data) * n_epochs\n    for i in range(n_training_steps):\n      feed_dict = {dataset_handle: train_handle}\n      train_loss, _ = session.run((loss_ops, minimize_op), feed_dict=feed_dict)\n      train_stats.append(train_loss)\n\n      if (i+1) % measurement_store_interval == 0:\n        # Evaluates model on test dataset.\n        for _ in range(len(test_data)):\n          feed_dict = {dataset_handle: test_handle}\n          test_stats.append(session.run(loss_ops, feed_dict=feed_dict))\n\n        # Outputs performance statistics on training and test dataset.\n        _log_stats_and_return_mean_correlation('Train', train_stats)\n        correlation = _log_stats_and_return_mean_correlation('Test', test_stats)\n        train_stats = []\n        test_stats = []\n\n        # Updates best model based on the observed correlation on the test\n        # dataset.\n        if correlation > best_so_far:\n          best_so_far = correlation\n          if checkpoint_path:\n            saver.save(session.raw_session(), checkpoint_path)\n\n  return best_so_far\n\n\ndef apply_model(checkpoint_path: Text,\n                file_pattern: Text,\n                max_files_to_load: Optional[int] = None,\n                time_index: int = 9) -> List[np.ndarray]:\n  \"\"\"Applies trained GraphModel using tensorflow.\n\n  Args:\n    checkpoint_path: path from which the model is loaded.\n    file_pattern: pattern matching the files with the data.\n    max_files_to_load: the maximum number of files to load.\n      If None, all files will be loaded.\n    time_index: the time index (0-9) of the target mobilities.\n\n  Returns:\n    Predictions of the model for all files.\n  \"\"\"\n  dataset_kwargs = dict(\n      time_index=time_index,\n      max_files_to_load=max_files_to_load)\n  data = load_data(file_pattern, **dataset_kwargs)\n\n  tf.reset_default_graph()\n  saver = tf.train.import_meta_graph(checkpoint_path + '.meta')\n  graph = tf.get_default_graph()\n\n  placeholders = GlassSimulationData(\n      positions=graph.get_tensor_by_name('Placeholder:0'),\n      targets=graph.get_tensor_by_name('Placeholder_1:0'),\n      types=graph.get_tensor_by_name('Placeholder_2:0'),\n      box=graph.get_tensor_by_name('Placeholder_3:0'))\n  prediction_tensor = graph.get_tensor_by_name('Graph_1/Squeeze:0')\n  correlation_tensor = graph.get_tensor_by_name('Squeeze:0')\n\n  dataset_handle = graph.get_tensor_by_name('Placeholder_4:0')\n  test_initalizer = graph.get_operation_by_name('MakeIterator_1')\n  test_string_handle = graph.get_tensor_by_name('IteratorToStringHandle_1:0')\n\n  with tf.Session() as session:\n    saver.restore(session, checkpoint_path)\n    handle = session.run(test_string_handle)\n    feed_dict = {p: [x[i] for x in data] for i, p in enumerate(placeholders)}\n    session.run(test_initalizer, feed_dict=feed_dict)\n    predictions = []\n    correlations = []\n    for _ in range(len(data)):\n      p, c = session.run((prediction_tensor, correlation_tensor),\n                         feed_dict={dataset_handle: handle})\n      predictions.append(p)\n      correlations.append(c)\n\n  logging.info('Correlation: %.4f +/- %.4f',\n               np.mean(correlations),\n               np.std(correlations))\n  return predictions\n"
  },
  {
    "path": "glassy_dynamics/train_binary.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Trains a graph-based network to predict particle mobilities in glasses.\"\"\"\n\nimport os\n\nfrom absl import app\nfrom absl import flags\n\nfrom glassy_dynamics import train as train_using_tf\nfrom glassy_dynamics import train_using_jax\n\nFLAGS = flags.FLAGS\n\nflags.DEFINE_string(\n    'data_directory',\n    '',\n    'Directory which contains the train and test datasets.')\nflags.DEFINE_integer(\n    'time_index',\n    9,\n    'The time index of the target mobilities.')\nflags.DEFINE_integer(\n    'max_files_to_load',\n    None,\n    'The maximum number of files to load from the train and test datasets.')\nflags.DEFINE_string(\n    'checkpoint_path',\n    None,\n    'Path used to store a checkpoint of the best model.')\nflags.DEFINE_boolean(\n    'use_jax',\n    False,\n    'Uses jax to train model.')\n\n\ndef main(argv):\n  if len(argv) > 1:\n    raise app.UsageError('Too many command-line arguments.')\n\n  train_file_pattern = os.path.join(FLAGS.data_directory, 'train/aggregated*')\n  test_file_pattern = os.path.join(FLAGS.data_directory, 'test/aggregated*')\n  train = train_using_jax if FLAGS.use_jax else train_using_tf\n  train.train_model(\n      train_file_pattern=train_file_pattern,\n      test_file_pattern=test_file_pattern,\n      max_files_to_load=FLAGS.max_files_to_load,\n      time_index=FLAGS.time_index,\n      checkpoint_path=FLAGS.checkpoint_path)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "glassy_dynamics/train_test.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Tests for train.\"\"\"\n\nimport os\n\nimport numpy as np\nimport tensorflow.compat.v1 as tf\n\nfrom glassy_dynamics import train\n\n\nclass TrainTest(tf.test.TestCase):\n\n  def test_get_targets(self):\n    initial_positions = np.array([[0, 0, 0], [1, 2, 3]])\n    trajectory_target_positions = [\n        np.array([[1, 0, 0], [1, 2, 4]]),\n        np.array([[0, 1, 0], [1, 0, 3]]),\n        np.array([[0, 0, 5], [1, 2, 3]]),\n    ]\n    expected_targets = np.array([7.0 / 3.0, 1.0])\n    targets = train.get_targets(initial_positions, trajectory_target_positions)\n    np.testing.assert_almost_equal(expected_targets, targets)\n\n  def test_load_data(self):\n    file_pattern = os.path.join(os.path.dirname(__file__), 'testdata',\n                                'test_small.pickle')\n\n    with self.subTest('ContentAndShapesAreAsExpected'):\n      data = train.load_data(file_pattern, 0)\n      self.assertEqual(len(data), 1)\n      element = data[0]\n      self.assertTupleEqual(element.positions.shape, (20, 3))\n      self.assertTupleEqual(element.box.shape, (3,))\n      self.assertTupleEqual(element.targets.shape, (20,))\n      self.assertTupleEqual(element.types.shape, (20,))\n\n    with self.subTest('TargetsGrowAsAFunctionOfTime'):\n      previous_mean_target = 0.0\n      # Time index 9 refers to 1/e = 0.36 in the IS, and therefore it is between\n      # Time index 5 (0.4) and  time index 6 (0.3).\n      for time_index in [0, 1, 2, 3, 4, 5, 9, 6, 7, 8]:\n        data = train.load_data(file_pattern, time_index)[0]\n        current_mean_target = data.targets.mean()\n        self.assertGreater(current_mean_target, previous_mean_target)\n        previous_mean_target = current_mean_target\n\n\nclass TensorflowTrainTest(tf.test.TestCase):\n\n  def test_get_loss_op(self):\n    \"\"\"Tests the correct calculation of the loss operations.\"\"\"\n    prediction = tf.constant([0.0, 1.0, 2.0, 1.0, 2.0], dtype=tf.float32)\n    target = tf.constant([1.0, 25.0, 0.0, 4.0, 2.0], dtype=tf.float32)\n    types = tf.constant([0, 1, 0, 0, 0], dtype=tf.int32)\n    loss_ops = train.get_loss_ops(prediction, target, types)\n    loss = self.evaluate(loss_ops)\n    self.assertAlmostEqual(loss.l1_loss, 1.5)\n    self.assertAlmostEqual(loss.l2_loss, 14.0 / 4.0)\n    self.assertAlmostEqual(loss.correlation, -0.15289416)\n\n  def test_get_minimize_op(self):\n    \"\"\"Tests the minimize operation by minimizing a single variable.\"\"\"\n    var = tf.Variable([1.0], name='test')\n    loss = var**2\n    minimize = train.get_minimize_op(loss, 1e-1)\n    with self.session():\n      tf.global_variables_initializer().run()\n      for _ in range(100):\n        minimize.run()\n      value = var.eval()\n      self.assertLess(abs(value[0]), 0.01)\n\n  def test_train_model(self):\n    \"\"\"Tests if we can overfit to a small test dataset.\"\"\"\n    file_pattern = os.path.join(os.path.dirname(__file__), 'testdata',\n                                'test_small.pickle')\n    best_correlation_value = train.train_model(\n        train_file_pattern=file_pattern,\n        test_file_pattern=file_pattern,\n        n_epochs=1000,\n        augment_data_using_rotations=False,\n        learning_rate=1e-4,\n        n_recurrences=2,\n        edge_threshold=5,\n        mlp_sizes=(32, 32),\n        measurement_store_interval=1000)\n    # The test dataset contains only a single sample with 20 particles.\n    # Therefore we expect the model to be able to memorize the targets perfectly\n    # if the model works correctly.\n    self.assertGreater(best_correlation_value, 0.99)\n\n  def test_apply_model(self):\n    \"\"\"Tests if we can apply a model to a small test dataset.\"\"\"\n    checkpoint_path = os.path.join(os.path.dirname(__file__), 'checkpoints',\n                                   't044_s09.ckpt')\n    file_pattern = os.path.join(os.path.dirname(__file__), 'testdata',\n                                'test_large.pickle')\n    predictions = train.apply_model(checkpoint_path=checkpoint_path,\n                                    file_pattern=file_pattern,\n                                    time_index=0)\n    data = train.load_data(file_pattern, 0)\n    targets = data[0].targets\n    correlation_value = np.corrcoef(predictions[0], targets)[0, 1]\n    self.assertGreater(correlation_value, 0.5)\n\n\nif __name__ == '__main__':\n  tf.test.main()\n"
  },
  {
    "path": "glassy_dynamics/train_using_jax.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Training pipeline for the prediction of particle mobilities in glasses.\"\"\"\n\nimport enum\nimport functools\nimport logging\nimport pickle\nimport random\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport jraph\nimport numpy as np\nimport optax\n\n# Only used for file operations.\n# You can use glob.glob and python's open function to replace the tf usage below\n# on most platforms.\nimport tensorflow.compat.v1 as tf\n\n\nclass ParticleType(enum.IntEnum):\n  \"\"\"The simulation contains two particle types, identified as type A and B.\n\n  The dataset encodes the particle type in an integer.\n    - 0 corresponds to particle type A.\n    - 1 corresponds to particle type B.\n  \"\"\"\n  A = 0\n  B = 1\n\n\ndef make_graph_from_static_structure(positions, types, box, edge_threshold):\n  \"\"\"Returns graph representing the static structure of the glass.\n\n  Each particle is represented by a node in the graph. The particle type is\n  stored as a node feature.\n  Two particles at a distance less than the threshold are connected by an edge.\n  The relative distance vector is stored as an edge feature.\n\n  Args:\n    positions: particle positions with shape [n_particles, 3].\n    types: particle types with shape [n_particles].\n    box: dimensions of the cubic box that contains the particles with shape [3].\n    edge_threshold: particles at distance less than threshold are connected by\n      an edge.\n  \"\"\"\n  # Calculate pairwise relative distances between particles: shape [n, n, 3].\n  cross_positions = positions[None, :, :] - positions[:, None, :]\n  # Enforces periodic boundary conditions.\n  box_ = box[None, None, :]\n  cross_positions += (cross_positions < -box_ / 2.).astype(np.float32) * box_\n  cross_positions -= (cross_positions > box_ / 2.).astype(np.float32) * box_\n  # Calculates adjacency matrix in a sparse format (indices), based on the given\n  # distances and threshold.\n  distances = np.linalg.norm(cross_positions, axis=-1)\n  indices = np.where(distances < edge_threshold)\n  # Defines graph.\n  nodes = types[:, None]\n  senders = indices[0]\n  receivers = indices[1]\n  edges = cross_positions[indices]\n\n  return jraph.pad_with_graphs(jraph.GraphsTuple(\n      nodes=nodes.astype(np.float32),\n      n_node=np.reshape(nodes.shape[0], [1]),\n      edges=edges.astype(np.float32),\n      n_edge=np.reshape(edges.shape[0], [1]),\n      globals=np.zeros((1, 1), dtype=np.float32),\n      receivers=receivers.astype(np.int32),\n      senders=senders.astype(np.int32)\n      ), n_node=4097, n_edge=200000)\n\n\ndef get_targets(initial_positions, trajectory_target_positions):\n  \"\"\"Returns the averaged particle mobilities from the sampled trajectories.\n\n  Args:\n    initial_positions: the initial positions of the particles with shape\n      [n_particles, 3].\n    trajectory_target_positions: the absolute positions of the particles at the\n      target time for all sampled trajectories, each with shape\n      [n_particles, 3].\n  \"\"\"\n  targets = np.mean([np.linalg.norm(t - initial_positions, axis=-1)\n                     for t in trajectory_target_positions], axis=0)\n  return targets.astype(np.float32)\n\n\ndef load_data(file_pattern, time_index, max_files_to_load=None):\n  \"\"\"Returns a graphs and targets of the training or test dataset.\n\n  Args:\n    file_pattern: pattern matching the files with the simulation data.\n    time_index: the time index of the targets.\n    max_files_to_load: the maximum number of files to load.\n  \"\"\"\n  filenames = tf.io.gfile.glob(file_pattern)\n  if max_files_to_load:\n    filenames = filenames[:max_files_to_load]\n\n  graphs_and_targets = []\n  for filename in filenames:\n    with tf.io.gfile.GFile(filename, 'rb') as f:\n      data = pickle.load(f)\n    mask = (data['types'] == ParticleType.A).astype(np.int32)\n    # Mask dummy node due to padding\n    mask = np.concatenate([mask, np.zeros((1,), dtype=np.int32)], axis=-1)\n    targets = get_targets(\n        data['positions'], data['trajectory_target_positions'][time_index])\n    targets = np.concatenate(\n        [targets, np.zeros((1,), dtype=np.float32)], axis=-1)\n    graphs_and_targets.append(\n        (make_graph_from_static_structure(\n            data['positions'].astype(np.float32),\n            data['types'].astype(np.int32),\n            data['box'].astype(np.float32),\n            edge_threshold=2.0),\n         targets,\n         mask))\n  return graphs_and_targets\n\n\ndef apply_random_rotation(graph):\n  \"\"\"Returns randomly rotated graph representation.\n\n  The rotation is an element of O(3) with rotation angles multiple of pi/2.\n  This function assumes that the relative particle distances are stored in\n  the edge features.\n\n  Args:\n    graph: The graphs tuple as defined in `graph_nets.graphs`.\n  \"\"\"\n  # Transposes edge features, so that the axes are in the first dimension.\n  # Outputs a tensor of shape [3, n_particles].\n  xyz = np.transpose(graph.edges)\n  # Random pi/2 rotation(s)\n  permutation = np.array([0, 1, 2], dtype=np.int32)\n  np.random.shuffle(permutation)\n  xyz = xyz[permutation]\n  # Random reflections.\n  symmetry = np.random.randint(0, 2, [3])\n  symmetry = 1 - 2 * np.reshape(symmetry, [3, 1]).astype(np.float32)\n  xyz = xyz * symmetry\n  edges = np.transpose(xyz)\n  return graph._replace(edges=edges)\n\n\ndef network_definition(graph):\n  \"\"\"Defines a graph neural network.\n\n  Args:\n    graph: Graphstuple the network processes.\n\n  Returns:\n    Decoded nodes.\n  \"\"\"\n  model_fn = functools.partial(\n      hk.nets.MLP,\n      w_init=hk.initializers.VarianceScaling(1.0),\n      b_init=hk.initializers.VarianceScaling(1.0))\n  mlp_sizes = (64, 64)\n  num_message_passing_steps = 7\n\n  node_encoder = model_fn(output_sizes=mlp_sizes, activate_final=True)\n  edge_encoder = model_fn(output_sizes=mlp_sizes, activate_final=True)\n  node_decoder = model_fn(output_sizes=mlp_sizes + (1,), activate_final=False)\n\n  node_encoding = node_encoder(graph.nodes)\n  edge_encoding = edge_encoder(graph.edges)\n  graph = graph._replace(nodes=node_encoding, edges=edge_encoding)\n\n  update_edge_fn = jraph.concatenated_args(\n      model_fn(output_sizes=mlp_sizes, activate_final=True))\n  update_node_fn = jraph.concatenated_args(\n      model_fn(output_sizes=mlp_sizes, activate_final=True))\n  gn = jraph.InteractionNetwork(\n      update_edge_fn=update_edge_fn,\n      update_node_fn=update_node_fn,\n      include_sent_messages_in_node_update=True)\n\n  for _ in range(num_message_passing_steps):\n    graph = graph._replace(\n        nodes=jnp.concatenate([graph.nodes, node_encoding], axis=-1),\n        edges=jnp.concatenate([graph.edges, edge_encoding], axis=-1))\n    graph = gn(graph)\n\n  return jnp.squeeze(node_decoder(graph.nodes), axis=-1)\n\n\ndef train_model(train_file_pattern,\n                test_file_pattern,\n                max_files_to_load=None,\n                n_epochs=1000,\n                time_index=9,\n                learning_rate=1e-4,\n                grad_clip=1.0,\n                measurement_store_interval=1000,\n                checkpoint_path=None):\n  \"\"\"Trains GraphModel using tensorflow.\n\n  Args:\n    train_file_pattern: pattern matching the files with the training data.\n    test_file_pattern: pattern matching the files with the test data.\n    max_files_to_load: the maximum number of train and test files to load.\n      If None, all files will be loaded.\n    n_epochs: the number of passes through the training dataset (epochs).\n    time_index: the time index (0-9) of the target mobilities.\n    learning_rate: the learning rate used by the optimizer.\n    grad_clip: all gradients are clipped to the given value.\n    measurement_store_interval: number of steps between storing objective values\n      (loss and correlation).\n    checkpoint_path: ignored by this implementation.\n  \"\"\"\n  if checkpoint_path:\n    logging.warning('The checkpoint_path argument is ignored.')\n  random.seed(42)\n  np.random.seed(42)\n  # Loads train and test dataset.\n  dataset_kwargs = dict(\n      time_index=time_index,\n      max_files_to_load=max_files_to_load)\n  logging.info('Load training data')\n  training_data = load_data(train_file_pattern, **dataset_kwargs)\n  logging.info('Load test data')\n  test_data = load_data(test_file_pattern, **dataset_kwargs)\n  logging.info('Finished loading data')\n\n  network = hk.without_apply_rng(hk.transform(network_definition))\n  params = network.init(jax.random.PRNGKey(42), training_data[0][0])\n\n  opt_init, opt_update = optax.chain(\n      optax.clip_by_global_norm(grad_clip),\n      optax.scale_by_adam(0.9, 0.999, 1e-8),\n      optax.scale(-learning_rate))\n  opt_state = opt_init(params)\n\n  network_apply = jax.jit(network.apply)\n\n  @jax.jit\n  def loss_fn(params, graph, targets, mask):\n    decoded_nodes = network_apply(params, graph) * mask\n    return (jnp.sum((decoded_nodes - targets)**2 * mask) /\n            jnp.sum(mask))\n\n  @jax.jit\n  def update(params, opt_state, graph, targets, mask):\n    loss, grads = jax.value_and_grad(loss_fn)(params, graph, targets, mask)\n    updates, opt_state = opt_update(grads, opt_state)\n    return optax.apply_updates(params, updates), opt_state, loss\n\n  train_stats = []\n  i = 0\n  logging.info('Start training')\n  for epoch in range(n_epochs):\n    logging.info('Start epoch %r', epoch)\n    random.shuffle(training_data)\n    for graph, targets, mask in training_data:\n      graph = apply_random_rotation(graph)\n      params, opt_state, loss = update(params, opt_state, graph, targets, mask)\n      train_stats.append(loss)\n\n      if (i+1) % measurement_store_interval == 0:\n        logging.info('Start evaluation run')\n        test_stats = []\n        for test_graph, test_targets, test_mask in test_data:\n          predictions = network_apply(params, test_graph)\n          test_stats.append(np.corrcoef(\n              predictions[test_mask == 1], test_targets[test_mask == 1])[0, 1])\n        logging.info('Train loss %r', np.mean(train_stats))\n        logging.info('Test correlation %r', np.mean(test_stats))\n        train_stats = []\n      i += 1\n"
  },
  {
    "path": "graph_matching_networks/README.md",
    "content": "# Graph Matching Networks for Learning the Similarity of Graph Structured Objects\n\nThis is the example code for the following ICML 2019 paper.  If you use the code\nhere please cite this paper.\n\n> Yujia Li, Chenjie Gu, Thomas Dullien, Oriol Vinyals, Pushmeet Kohli.  *Graph Matching Networks for Learning the Similarity of Graph Structured Objects*.  ICML 2019.  [\\[arXiv\\]](https://arxiv.org/abs/1904.12787).\n\n\n## Running the code\n\nThe code is in the format of a colab notebook, which includes:\n\n*  an example implementation of the model,\n*  an example graph similarity learning task,\n*  an example training loop, and\n*  some attention visualization tools.\n\nTo launch the notebook in Google colab, [click here](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/graph_matching_networks/graph_matching_networks.ipynb).\n\nYou can also download the notebook and run it locally with jupyter.  The\nnotebook assumes you are on python 3 and have the latest (as of July 24,\n2019) tensorflow, sonnet, numpy etc. installed.  You can install the dependencies by running `pip3 install --user -r requirements.txt`.\n\n"
  },
  {
    "path": "graph_matching_networks/graph_matching_networks.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"HrOZEU_OrYTR\"\n      },\n      \"source\": [\n        \"##### Copyright 2019 Google LLC.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"G9suJlqLrfmP\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"# you may not use this file except in compliance with the License.\\n\",\n        \"# You may obtain a copy of the License at\\n\",\n        \"#\\n\",\n        \"# https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"#\\n\",\n        \"# Unless required by applicable law or agreed to in writing, software\\n\",\n        \"# distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"# See the License for the specific language governing permissions and\\n\",\n        \"# limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"F50gn0G_yZ3s\"\n      },\n      \"source\": [\n        \"# Graph Matching Networks for Learning the Similarity of Graph Structured Objects\\n\",\n        \"\\n\",\n        \"This is the example code for our ICML 2019 paper.  Please refer to the paper for more details:\\n\",\n        \"\\n\",\n        \"\\u003e Yujia Li, Chenjie Gu, Thomas Dullien, Oriol Vinyals, Pushmeet Kohli.  *Graph Matching Networks for Learning the Similarity of Graph Structured Objects*.  ICML 2019.  [\\\\[arXiv\\\\]](https://arxiv.org/abs/1904.12787)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"## Graph similarity learning\\n\",\n        \"\\n\",\n        \"Our goal is to learn a similarity function between graphs.  Given two graphs $G_1, G_2$, a graph similarity model can be written as a function $f(G_1, G_2)$ that computes a scalar similarity value.\\n\",\n        \"\\n\",\n        \"In this project we build models to learn such a similarity function based on examples of similar / dissimilar pairs or triplets.  Because of learning, our model can adapt to different notions of similarity and to different types of graph structure, as long as training data is available.\\n\",\n        \"\\n\",\n        \"In the following we will sometimes use the term \\\"distance\\\" and say the model learns a \\\"distance function\\\" $d(G_1, G_2)$ between graphs when convenient.  But this is just the opposite of a similarity function, and you may simply say $f(G_1, G_2) = - d(G_1, G_2)$.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"4QqVQJxLoYKx\"\n      },\n      \"source\": [\n        \"## Some dependencies and imports\\n\",\n        \"\\n\",\n        \"If you want to run the notebook locally, make sure you have all the dependencies first.  You can use the following command\\n\",\n        \"```\\n\",\n        \"pip3 install --user -r requirements.txt\\n\",\n        \"```\\n\",\n        \"\\n\",\n        \"Note the code should work for both python 3 and 2, but python 3 is recommended.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"-eanBQF6boRu\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Let's disable all the warnings first\\n\",\n        \"import warnings\\n\",\n        \"warnings.simplefilter(\\\"ignore\\\")\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"dyu1M3fufCaD\"\n      },\n      \"source\": [\n        \"These are all the dependencies that will be used in this notebook.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"0Ep7LRdJoZ6O\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"import abc\\n\",\n        \"import collections\\n\",\n        \"import contextlib\\n\",\n        \"import copy\\n\",\n        \"import random\\n\",\n        \"import time\\n\",\n        \"\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"import networkx as nx\\n\",\n        \"import numpy as np\\n\",\n        \"import six\\n\",\n        \"import sonnet as snt\\n\",\n        \"import tensorflow as tf\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"fzeL1Fk8zD3S\"\n      },\n      \"source\": [\n        \"## The models\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"gSYjjfgvffJO\"\n      },\n      \"source\": [\n        \"### The graph embedding model\\n\",\n        \"\\n\",\n        \"The simpler variant of our model is based on embedding each graph **independently** into a vector and then use an existing distance (or similarity) metric in the vector space to compute the distance between graphs.  More concretely, we define\\n\",\n        \"\\n\",\n        \"$$d(G_1, G_2) = d_H(embed(G_1), embed(G_2)),$$\\n\",\n        \"\\n\",\n        \"where $embed$ is a model that maps any graph $G$ into an $H$-dimensional vector, and $d_H$ is a distance metric in that vector space.  Typical examples are Euclidean distance in $\\\\mathbb{R}^H$, i.e. $d_H(x, y) = \\\\sqrt{\\\\sum_{i=1}^H (x_i - y_i)^2}$, or Hamming distance in $H$-dimensional space of binary vectors, i.e. $d_H(x, y)=\\\\sum_{i=1}^H \\\\mathbb{I}[x_i \\\\ne y_i]$.\\n\",\n        \"\\n\",\n        \"Each graph input contains a set of nodes $V$ and edges $E$.  Each node $i\\\\in V$ may have a feature vector $x_i$ associated with it, and each edge $(i, j)\\\\in E$ may also have a feature vector $x_{ij}$ encoding e.g. edge type or attributes.  The embedding model will therefore jointly reason about the graph structure as well as the graph features to come up with an embedding that reflects the notion of similarity described by the training examples.\\n\",\n        \"\\n\",\n        \"The embedding model is composed of 3 parts:\\n\",\n        \"1. An encoder that maps $x_i$ and $x_{ij}$ into a nice hidden representation space.  Here we use separate MLPs (fully connected neural nets) for node and edge representations:\\n\",\n        \"$$\\\\begin{array}{rcl}\\n\",\n        \"h_i^{(0)} \\u0026=\\u0026 \\\\mathrm{MLP_{node}}(x_i) \\\\\\\\\\n\",\n        \"e_{ij} \\u0026=\\u0026 \\\\mathrm{MLP_{edge}}(x_{ij})\\n\",\n        \"\\\\end{array}\\n\",\n        \"$$\\n\",\n        \"\\n\",\n        \"2. A graph neural network (GNN) that communicates information across the graph and computes node representations that encode local neighborhood structure and semantics.  More concretely, the GNN computes node representations through an iterative message passing process.  In the $t$-th round of message passing, we compute a message vector on each edge, and then each node aggregates all the incoming messages and updates its own representation:\\n\",\n        \"$$\\\\begin{array}{rcl}\\n\",\n        \"m_{i\\\\rightarrow j} \\u0026=\\u0026 f_\\\\mathrm{message}(h_i^{(t)}, h_j^{(t)}, e_{ij}) \\\\\\\\\\n\",\n        \"h_i^{(t+1)} \\u0026=\\u0026 f_\\\\mathrm{node}(h_i^{(t)}, \\\\sum_{j:(j,i)\\\\in E} m_{j\\\\rightarrow i})\\n\",\n        \"\\\\end{array}\\n\",\n        \"$$\\n\",\n        \"Here both $f_\\\\mathrm{message}$ and $f_\\\\mathrm{node}$ are neural modules.  We use MLPs for $f_\\\\mathrm{message}$, while $f_\\\\mathrm{node}$ can also be MLPs or even recurrent neural network cores like LSTMs or GRUs.  The GNNs have the nice property of being equivariant to node permutations, and nodes on isomorphic graphs (with the same node and edge features) will have the same representations regardless of the ordering.\\n\",\n        \"\\n\",\n        \"3. After we obtained the final node representations after $T$ rounds of message passing, we aggregate across them to get graph representations $h_G=f_G(\\\\{h_i^{(T)}\\\\}_{i\\\\in V})$.  This could be implemented by a simple sum that reduces the node representations into a single vector and then transform it:\\n\",\n        \"$$h_G = \\\\mathrm{MLP_G}\\\\left(\\\\sum_{i\\\\in V} h_i^{(T)}\\\\right).$$\\n\",\n        \"We used the following gated aggregation module proposed in [Li et al., 2015](https://arxiv.org/abs/1511.05493) which we found to work consistently better:\\n\",\n        \"$$h_G = \\\\mathrm{MLP_G}\\\\left(\\\\sum_{i\\\\in V} \\\\sigma(\\\\mathrm{MLP_{gate}}(h_i^{(T)})) \\\\odot \\\\mathrm{MLP}(h_i^{(T)})\\\\right).$$\\n\",\n        \"The key to this function is to make sure it is invariant to node orderings, both the above forms satisfy this condition.  The gated variant gives the model the capacity to explicitly modulate each node's contribution to the graph representation.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"u8eVpPWEjZ_O\"\n      },\n      \"source\": [\n        \"#### The graph encoder\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"b8dFQUFwjcCi\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"class GraphEncoder(snt.AbstractModule):\\n\",\n        \"  \\\"\\\"\\\"Encoder module that projects node and edge features to some embeddings.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               node_hidden_sizes=None,\\n\",\n        \"               edge_hidden_sizes=None,\\n\",\n        \"               name='graph-encoder'):\\n\",\n        \"    \\\"\\\"\\\"Constructor.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      node_hidden_sizes: if provided should be a list of ints, hidden sizes of\\n\",\n        \"        node encoder network, the last element is the size of the node outputs.\\n\",\n        \"        If not provided, node features will pass through as is.\\n\",\n        \"      edge_hidden_sizes: if provided should be a list of ints, hidden sizes of\\n\",\n        \"        edge encoder network, the last element is the size of the edge outptus.\\n\",\n        \"        If not provided, edge features will pass through as is.\\n\",\n        \"      name: name of this module.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(GraphEncoder, self).__init__(name=name)\\n\",\n        \"\\n\",\n        \"    # this also handles the case of an empty list\\n\",\n        \"    self._node_hidden_sizes = node_hidden_sizes if node_hidden_sizes else None\\n\",\n        \"    self._edge_hidden_sizes = edge_hidden_sizes\\n\",\n        \"\\n\",\n        \"  def _build(self, node_features, edge_features=None):\\n\",\n        \"    \\\"\\\"\\\"Encode node and edge features.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      node_features: [n_nodes, node_feat_dim] float tensor.\\n\",\n        \"      edge_features: if provided, should be [n_edges, edge_feat_dim] float\\n\",\n        \"        tensor.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      node_outputs: [n_nodes, node_embedding_dim] float tensor, node embeddings.\\n\",\n        \"      edge_outputs: if edge_features is not None and edge_hidden_sizes is not\\n\",\n        \"        None, this is [n_edges, edge_embedding_dim] float tensor, edge\\n\",\n        \"        embeddings; otherwise just the input edge_features.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    if self._node_hidden_sizes is None:\\n\",\n        \"      node_outputs = node_features\\n\",\n        \"    else:\\n\",\n        \"      node_outputs = snt.nets.MLP(\\n\",\n        \"          self._node_hidden_sizes, name='node-feature-mlp')(node_features)\\n\",\n        \"\\n\",\n        \"    if edge_features is None or self._edge_hidden_sizes is None:\\n\",\n        \"      edge_outputs = edge_features\\n\",\n        \"    else:\\n\",\n        \"      edge_outputs = snt.nets.MLP(\\n\",\n        \"          self._edge_hidden_sizes, name='edge-feature-mlp')(edge_features)\\n\",\n        \"\\n\",\n        \"    return node_outputs, edge_outputs\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"goVx4QGClJCW\"\n      },\n      \"source\": [\n        \"#### The message passing layers\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"5LJIBWdvlIWl\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def graph_prop_once(node_states,\\n\",\n        \"                    from_idx,\\n\",\n        \"                    to_idx,\\n\",\n        \"                    message_net,\\n\",\n        \"                    aggregation_module=tf.unsorted_segment_sum,\\n\",\n        \"                    edge_features=None):\\n\",\n        \"  \\\"\\\"\\\"One round of propagation (message passing) in a graph.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    node_states: [n_nodes, node_state_dim] float tensor, node state vectors, one\\n\",\n        \"      row for each node.\\n\",\n        \"    from_idx: [n_edges] int tensor, index of the from nodes.\\n\",\n        \"    to_idx: [n_edges] int tensor, index of the to nodes.\\n\",\n        \"    message_net: a network that maps concatenated edge inputs to message\\n\",\n        \"      vectors.\\n\",\n        \"    aggregation_module: a module that aggregates messages on edges to aggregated\\n\",\n        \"      messages for each node.  Should be a callable and can be called like the\\n\",\n        \"      following,\\n\",\n        \"      `aggregated_messages = aggregation_module(messages, to_idx, n_nodes)`,\\n\",\n        \"      where messages is [n_edges, edge_message_dim] tensor, to_idx is the index\\n\",\n        \"      of the to nodes, i.e. where each message should go to, and n_nodes is an\\n\",\n        \"      int which is the number of nodes to aggregate into.\\n\",\n        \"    edge_features: if provided, should be a [n_edges, edge_feature_dim] float\\n\",\n        \"      tensor, extra features for each edge.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    aggregated_messages: an [n_nodes, edge_message_dim] float tensor, the\\n\",\n        \"      aggregated messages, one row for each node.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  from_states = tf.gather(node_states, from_idx)\\n\",\n        \"  to_states = tf.gather(node_states, to_idx)\\n\",\n        \"\\n\",\n        \"  edge_inputs = [from_states, to_states]\\n\",\n        \"  if edge_features is not None:\\n\",\n        \"    edge_inputs.append(edge_features)\\n\",\n        \"\\n\",\n        \"  edge_inputs = tf.concat(edge_inputs, axis=-1)\\n\",\n        \"  messages = message_net(edge_inputs)\\n\",\n        \"\\n\",\n        \"  return aggregation_module(messages, to_idx, tf.shape(node_states)[0])\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class GraphPropLayer(snt.AbstractModule):\\n\",\n        \"  \\\"\\\"\\\"Implementation of a graph propagation (message passing) layer.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               node_state_dim,\\n\",\n        \"               edge_hidden_sizes,\\n\",\n        \"               node_hidden_sizes,\\n\",\n        \"               edge_net_init_scale=0.1,\\n\",\n        \"               node_update_type='residual',\\n\",\n        \"               use_reverse_direction=True,\\n\",\n        \"               reverse_dir_param_different=True,\\n\",\n        \"               layer_norm=False,\\n\",\n        \"               name='graph-net'):\\n\",\n        \"    \\\"\\\"\\\"Constructor.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      node_state_dim: int, dimensionality of node states.\\n\",\n        \"      edge_hidden_sizes: list of ints, hidden sizes for the edge message\\n\",\n        \"        net, the last element in the list is the size of the message vectors.\\n\",\n        \"      node_hidden_sizes: list of ints, hidden sizes for the node update\\n\",\n        \"        net.\\n\",\n        \"      edge_net_init_scale: initialization scale for the edge networks.  This\\n\",\n        \"        is typically set to a small value such that the gradient does not blow\\n\",\n        \"        up.\\n\",\n        \"      node_update_type: type of node updates, one of {mlp, gru, residual}.\\n\",\n        \"      use_reverse_direction: set to True to also propagate messages in the\\n\",\n        \"        reverse direction.\\n\",\n        \"      reverse_dir_param_different: set to True to have the messages computed\\n\",\n        \"        using a different set of parameters than for the forward direction.\\n\",\n        \"      layer_norm: set to True to use layer normalization in a few places.\\n\",\n        \"      name: name of this module.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(GraphPropLayer, self).__init__(name=name)\\n\",\n        \"\\n\",\n        \"    self._node_state_dim = node_state_dim\\n\",\n        \"    self._edge_hidden_sizes = edge_hidden_sizes[:]\\n\",\n        \"\\n\",\n        \"    # output size is node_state_dim\\n\",\n        \"    self._node_hidden_sizes = node_hidden_sizes[:] + [node_state_dim]\\n\",\n        \"    self._edge_net_init_scale = edge_net_init_scale\\n\",\n        \"    self._node_update_type = node_update_type\\n\",\n        \"\\n\",\n        \"    self._use_reverse_direction = use_reverse_direction\\n\",\n        \"    self._reverse_dir_param_different = reverse_dir_param_different\\n\",\n        \"\\n\",\n        \"    self._layer_norm = layer_norm\\n\",\n        \"\\n\",\n        \"  def _compute_aggregated_messages(\\n\",\n        \"      self, node_states, from_idx, to_idx, edge_features=None):\\n\",\n        \"    \\\"\\\"\\\"Compute aggregated messages for each node.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      node_states: [n_nodes, input_node_state_dim] float tensor, node states.\\n\",\n        \"      from_idx: [n_edges] int tensor, from node indices for each edge.\\n\",\n        \"      to_idx: [n_edges] int tensor, to node indices for each edge.\\n\",\n        \"      edge_features: if not None, should be [n_edges, edge_embedding_dim]\\n\",\n        \"        tensor, edge features.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      aggregated_messages: [n_nodes, aggregated_message_dim] float tensor, the\\n\",\n        \"        aggregated messages for each node.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    self._message_net = snt.nets.MLP(\\n\",\n        \"        self._edge_hidden_sizes,\\n\",\n        \"        initializers={\\n\",\n        \"            'w': tf.variance_scaling_initializer(\\n\",\n        \"                scale=self._edge_net_init_scale),\\n\",\n        \"            'b': tf.zeros_initializer()},\\n\",\n        \"        name='message-mlp')\\n\",\n        \"\\n\",\n        \"    aggregated_messages = graph_prop_once(\\n\",\n        \"        node_states,\\n\",\n        \"        from_idx,\\n\",\n        \"        to_idx,\\n\",\n        \"        self._message_net,\\n\",\n        \"        aggregation_module=tf.unsorted_segment_sum,\\n\",\n        \"        edge_features=edge_features)\\n\",\n        \"\\n\",\n        \"    # optionally compute message vectors in the reverse direction\\n\",\n        \"    if self._use_reverse_direction:\\n\",\n        \"      if self._reverse_dir_param_different:\\n\",\n        \"        self._reverse_message_net = snt.nets.MLP(\\n\",\n        \"            self._edge_hidden_sizes,\\n\",\n        \"            initializers={\\n\",\n        \"                'w': tf.variance_scaling_initializer(\\n\",\n        \"                    scale=self._edge_net_init_scale),\\n\",\n        \"                'b': tf.zeros_initializer()},\\n\",\n        \"            name='reverse-message-mlp')\\n\",\n        \"      else:\\n\",\n        \"        self._reverse_message_net = self._message_net\\n\",\n        \"\\n\",\n        \"      reverse_aggregated_messages = graph_prop_once(\\n\",\n        \"          node_states,\\n\",\n        \"          to_idx,\\n\",\n        \"          from_idx,\\n\",\n        \"          self._reverse_message_net,\\n\",\n        \"          aggregation_module=tf.unsorted_segment_sum,\\n\",\n        \"          edge_features=edge_features)\\n\",\n        \"\\n\",\n        \"      aggregated_messages += reverse_aggregated_messages\\n\",\n        \"\\n\",\n        \"    if self._layer_norm:\\n\",\n        \"      aggregated_messages = snt.LayerNorm()(aggregated_messages)\\n\",\n        \"\\n\",\n        \"    return aggregated_messages\\n\",\n        \"\\n\",\n        \"  def _compute_node_update(self,\\n\",\n        \"                           node_states,\\n\",\n        \"                           node_state_inputs,\\n\",\n        \"                           node_features=None):\\n\",\n        \"    \\\"\\\"\\\"Compute node updates.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      node_states: [n_nodes, node_state_dim] float tensor, the input node\\n\",\n        \"        states.\\n\",\n        \"      node_state_inputs: a list of tensors used to compute node updates.  Each\\n\",\n        \"        element tensor should have shape [n_nodes, feat_dim], where feat_dim can\\n\",\n        \"        be different.  These tensors will be concatenated along the feature\\n\",\n        \"        dimension.\\n\",\n        \"      node_features: extra node features if provided, should be of size\\n\",\n        \"        [n_nodes, extra_node_feat_dim] float tensor, can be used to implement\\n\",\n        \"        different types of skip connections.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      new_node_states: [n_nodes, node_state_dim] float tensor, the new node\\n\",\n        \"        state tensor.\\n\",\n        \"\\n\",\n        \"    Raises:\\n\",\n        \"      ValueError: if node update type is not supported.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    if self._node_update_type in ('mlp', 'residual'):\\n\",\n        \"      node_state_inputs.append(node_states)\\n\",\n        \"    if node_features is not None:\\n\",\n        \"      node_state_inputs.append(node_features)\\n\",\n        \"\\n\",\n        \"    if len(node_state_inputs) == 1:\\n\",\n        \"      node_state_inputs = node_state_inputs[0]\\n\",\n        \"    else:\\n\",\n        \"      node_state_inputs = tf.concat(node_state_inputs, axis=-1)\\n\",\n        \"\\n\",\n        \"    if self._node_update_type == 'gru':\\n\",\n        \"      _, new_node_states = snt.GRU(self._node_state_dim)(\\n\",\n        \"          node_state_inputs, node_states)\\n\",\n        \"      return new_node_states\\n\",\n        \"    else:\\n\",\n        \"      mlp_output = snt.nets.MLP(\\n\",\n        \"          self._node_hidden_sizes, name='node-mlp')(node_state_inputs)\\n\",\n        \"      if self._layer_norm:\\n\",\n        \"        mlp_output = snt.LayerNorm()(mlp_output)\\n\",\n        \"      if self._node_update_type == 'mlp':\\n\",\n        \"        return mlp_output\\n\",\n        \"      elif self._node_update_type == 'residual':\\n\",\n        \"        return node_states + mlp_output\\n\",\n        \"      else:\\n\",\n        \"        raise ValueError('Unknown node update type %s' % self._node_update_type)\\n\",\n        \"\\n\",\n        \"  def _build(self,\\n\",\n        \"             node_states,\\n\",\n        \"             from_idx,\\n\",\n        \"             to_idx,\\n\",\n        \"             edge_features=None,\\n\",\n        \"             node_features=None):\\n\",\n        \"    \\\"\\\"\\\"Run one propagation step.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      node_states: [n_nodes, input_node_state_dim] float tensor, node states.\\n\",\n        \"      from_idx: [n_edges] int tensor, from node indices for each edge.\\n\",\n        \"      to_idx: [n_edges] int tensor, to node indices for each edge.\\n\",\n        \"      edge_features: if not None, should be [n_edges, edge_embedding_dim]\\n\",\n        \"        tensor, edge features.\\n\",\n        \"      node_features: extra node features if provided, should be of size\\n\",\n        \"        [n_nodes, extra_node_feat_dim] float tensor, can be used to implement\\n\",\n        \"        different types of skip connections.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      node_states: [n_nodes, node_state_dim] float tensor, new node states.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    aggregated_messages = self._compute_aggregated_messages(\\n\",\n        \"        node_states, from_idx, to_idx, edge_features=edge_features)\\n\",\n        \"\\n\",\n        \"    return self._compute_node_update(node_states,\\n\",\n        \"                                     [aggregated_messages],\\n\",\n        \"                                     node_features=node_features)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"ubKr-G_Sq95j\"\n      },\n      \"source\": [\n        \"#### Graph aggregator\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"NmE-8Xpnq9Zi\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"AGGREGATION_TYPE = {\\n\",\n        \"    'sum': tf.unsorted_segment_sum,\\n\",\n        \"    'mean': tf.unsorted_segment_mean,\\n\",\n        \"    'sqrt_n': tf.unsorted_segment_sqrt_n,\\n\",\n        \"    'max': tf.unsorted_segment_max,\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class GraphAggregator(snt.AbstractModule):\\n\",\n        \"  \\\"\\\"\\\"This module computes graph representations by aggregating from parts.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               node_hidden_sizes,\\n\",\n        \"               graph_transform_sizes=None,\\n\",\n        \"               gated=True,\\n\",\n        \"               aggregation_type='sum',\\n\",\n        \"               name='graph-aggregator'):\\n\",\n        \"    \\\"\\\"\\\"Constructor.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      node_hidden_sizes: the hidden layer sizes of the node transformation nets.\\n\",\n        \"        The last element is the size of the aggregated graph representation.\\n\",\n        \"      graph_transform_sizes: sizes of the transformation layers on top of the\\n\",\n        \"        graph representations.  The last element of this list is the final\\n\",\n        \"        dimensionality of the output graph representations.\\n\",\n        \"      gated: set to True to do gated aggregation, False not to.\\n\",\n        \"      aggregation_type: one of {sum, max, mean, sqrt_n}.\\n\",\n        \"      name: name of this module.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(GraphAggregator, self).__init__(name=name)\\n\",\n        \"\\n\",\n        \"    self._node_hidden_sizes = node_hidden_sizes\\n\",\n        \"    self._graph_transform_sizes = graph_transform_sizes\\n\",\n        \"    self._graph_state_dim = node_hidden_sizes[-1]\\n\",\n        \"    self._gated = gated\\n\",\n        \"    self._aggregation_type = aggregation_type\\n\",\n        \"    self._aggregation_op = AGGREGATION_TYPE[aggregation_type]\\n\",\n        \"\\n\",\n        \"  def _build(self, node_states, graph_idx, n_graphs):\\n\",\n        \"    \\\"\\\"\\\"Compute aggregated graph representations.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      node_states: [n_nodes, node_state_dim] float tensor, node states of a\\n\",\n        \"        batch of graphs concatenated together along the first dimension.\\n\",\n        \"      graph_idx: [n_nodes] int tensor, graph ID for each node.\\n\",\n        \"      n_graphs: integer, number of graphs in this batch.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      graph_states: [n_graphs, graph_state_dim] float tensor, graph\\n\",\n        \"        representations, one row for each graph.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    node_hidden_sizes = self._node_hidden_sizes\\n\",\n        \"    if self._gated:\\n\",\n        \"      node_hidden_sizes[-1] = self._graph_state_dim * 2\\n\",\n        \"\\n\",\n        \"    node_states_g = snt.nets.MLP(\\n\",\n        \"        node_hidden_sizes, name='node-state-g-mlp')(node_states)\\n\",\n        \"\\n\",\n        \"    if self._gated:\\n\",\n        \"      gates = tf.nn.sigmoid(node_states_g[:, :self._graph_state_dim])\\n\",\n        \"      node_states_g = node_states_g[:, self._graph_state_dim:] * gates\\n\",\n        \"\\n\",\n        \"    graph_states = self._aggregation_op(node_states_g, graph_idx, n_graphs)\\n\",\n        \"\\n\",\n        \"    # unsorted_segment_max does not handle empty graphs in the way we want\\n\",\n        \"    # it assigns the lowest possible float to empty segments, we want to reset\\n\",\n        \"    # them to zero.\\n\",\n        \"    if self._aggregation_type == 'max':\\n\",\n        \"      # reset everything that's smaller than -1e5 to 0.\\n\",\n        \"      graph_states *= tf.cast(graph_states \\u003e -1e5, tf.float32)\\n\",\n        \"\\n\",\n        \"    # transform the reduced graph states further\\n\",\n        \"\\n\",\n        \"    # pylint: disable=g-explicit-length-test\\n\",\n        \"    if (self._graph_transform_sizes is not None and\\n\",\n        \"        len(self._graph_transform_sizes) \\u003e 0):\\n\",\n        \"      graph_states = snt.nets.MLP(\\n\",\n        \"          self._graph_transform_sizes, name='graph-transform-mlp')(graph_states)\\n\",\n        \"\\n\",\n        \"    return graph_states\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"vYMDsa4nmg-C\"\n      },\n      \"source\": [\n        \"#### Putting them together\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"M7MvynyjmkVq\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"class GraphEmbeddingNet(snt.AbstractModule):\\n\",\n        \"  \\\"\\\"\\\"A graph to embedding mapping network.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               encoder,\\n\",\n        \"               aggregator,\\n\",\n        \"               node_state_dim,\\n\",\n        \"               edge_hidden_sizes,\\n\",\n        \"               node_hidden_sizes,\\n\",\n        \"               n_prop_layers,\\n\",\n        \"               share_prop_params=False,\\n\",\n        \"               edge_net_init_scale=0.1,\\n\",\n        \"               node_update_type='residual',\\n\",\n        \"               use_reverse_direction=True,\\n\",\n        \"               reverse_dir_param_different=True,\\n\",\n        \"               layer_norm=False,\\n\",\n        \"               name='graph-embedding-net'):\\n\",\n        \"    \\\"\\\"\\\"Constructor.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      encoder: GraphEncoder, encoder that maps features to embeddings.\\n\",\n        \"      aggregator: GraphAggregator, aggregator that produces graph\\n\",\n        \"        representations.\\n\",\n        \"      node_state_dim: dimensionality of node states.\\n\",\n        \"      edge_hidden_sizes: sizes of the hidden layers of the edge message nets.\\n\",\n        \"      node_hidden_sizes: sizes of the hidden layers of the node update nets.\\n\",\n        \"      n_prop_layers: number of graph propagation layers.\\n\",\n        \"      share_prop_params: set to True to share propagation parameters across all\\n\",\n        \"        graph propagation layers, False not to.\\n\",\n        \"      edge_net_init_scale: scale of initialization for the edge message nets.\\n\",\n        \"      node_update_type: type of node updates, one of {mlp, gru, residual}.\\n\",\n        \"      use_reverse_direction: set to True to also propagate messages in the\\n\",\n        \"        reverse direction.\\n\",\n        \"      reverse_dir_param_different: set to True to have the messages computed\\n\",\n        \"        using a different set of parameters than for the forward direction.\\n\",\n        \"      layer_norm: set to True to use layer normalization in a few places.\\n\",\n        \"      name: name of this module.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(GraphEmbeddingNet, self).__init__(name=name)\\n\",\n        \"\\n\",\n        \"    self._encoder = encoder\\n\",\n        \"    self._aggregator = aggregator\\n\",\n        \"    self._node_state_dim = node_state_dim\\n\",\n        \"    self._edge_hidden_sizes = edge_hidden_sizes\\n\",\n        \"    self._node_hidden_sizes = node_hidden_sizes\\n\",\n        \"    self._n_prop_layers = n_prop_layers\\n\",\n        \"    self._share_prop_params = share_prop_params\\n\",\n        \"    self._edge_net_init_scale = edge_net_init_scale\\n\",\n        \"    self._node_update_type = node_update_type\\n\",\n        \"    self._use_reverse_direction = use_reverse_direction\\n\",\n        \"    self._reverse_dir_param_different = reverse_dir_param_different\\n\",\n        \"    self._layer_norm = layer_norm\\n\",\n        \"\\n\",\n        \"    self._prop_layers = []\\n\",\n        \"    self._layer_class = GraphPropLayer\\n\",\n        \"\\n\",\n        \"  def _build_layer(self, layer_id):\\n\",\n        \"    \\\"\\\"\\\"Build one layer in the network.\\\"\\\"\\\"\\n\",\n        \"    return self._layer_class(\\n\",\n        \"        self._node_state_dim,\\n\",\n        \"        self._edge_hidden_sizes,\\n\",\n        \"        self._node_hidden_sizes,\\n\",\n        \"        edge_net_init_scale=self._edge_net_init_scale,\\n\",\n        \"        node_update_type=self._node_update_type,\\n\",\n        \"        use_reverse_direction=self._use_reverse_direction,\\n\",\n        \"        reverse_dir_param_different=self._reverse_dir_param_different,\\n\",\n        \"        layer_norm=self._layer_norm,\\n\",\n        \"        name='graph-prop-%d' % layer_id)\\n\",\n        \"\\n\",\n        \"  def _apply_layer(self,\\n\",\n        \"                   layer,\\n\",\n        \"                   node_states,\\n\",\n        \"                   from_idx,\\n\",\n        \"                   to_idx,\\n\",\n        \"                   graph_idx,\\n\",\n        \"                   n_graphs,\\n\",\n        \"                   edge_features):\\n\",\n        \"    \\\"\\\"\\\"Apply one layer on the given inputs.\\\"\\\"\\\"\\n\",\n        \"    del graph_idx, n_graphs\\n\",\n        \"    return layer(node_states, from_idx, to_idx, edge_features=edge_features)\\n\",\n        \"\\n\",\n        \"  def _build(self,\\n\",\n        \"             node_features,\\n\",\n        \"             edge_features,\\n\",\n        \"             from_idx,\\n\",\n        \"             to_idx,\\n\",\n        \"             graph_idx,\\n\",\n        \"             n_graphs):\\n\",\n        \"    \\\"\\\"\\\"Compute graph representations.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      node_features: [n_nodes, node_feat_dim] float tensor.\\n\",\n        \"      edge_features: [n_edges, edge_feat_dim] float tensor.\\n\",\n        \"      from_idx: [n_edges] int tensor, index of the from node for each edge.\\n\",\n        \"      to_idx: [n_edges] int tensor, index of the to node for each edge.\\n\",\n        \"      graph_idx: [n_nodes] int tensor, graph id for each node.\\n\",\n        \"      n_graphs: int, number of graphs in the batch.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      graph_representations: [n_graphs, graph_representation_dim] float tensor,\\n\",\n        \"        graph representations.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    if len(self._prop_layers) \\u003c self._n_prop_layers:\\n\",\n        \"      # build the layers\\n\",\n        \"      for i in range(self._n_prop_layers):\\n\",\n        \"        if i == 0 or not self._share_prop_params:\\n\",\n        \"          layer = self._build_layer(i)\\n\",\n        \"        else:\\n\",\n        \"          layer = self._prop_layers[0]\\n\",\n        \"        self._prop_layers.append(layer)\\n\",\n        \"\\n\",\n        \"    node_features, edge_features = self._encoder(node_features, edge_features)\\n\",\n        \"    node_states = node_features\\n\",\n        \"\\n\",\n        \"    layer_outputs = [node_states]\\n\",\n        \"\\n\",\n        \"    for layer in self._prop_layers:\\n\",\n        \"      # node_features could be wired in here as well, leaving it out for now as\\n\",\n        \"      # it is already in the inputs\\n\",\n        \"      node_states = self._apply_layer(\\n\",\n        \"          layer,\\n\",\n        \"          node_states,\\n\",\n        \"          from_idx,\\n\",\n        \"          to_idx,\\n\",\n        \"          graph_idx,\\n\",\n        \"          n_graphs,\\n\",\n        \"          edge_features)\\n\",\n        \"      layer_outputs.append(node_states)\\n\",\n        \"\\n\",\n        \"    # these tensors may be used e.g. for visualization\\n\",\n        \"    self._layer_outputs = layer_outputs\\n\",\n        \"    return self._aggregator(node_states, graph_idx, n_graphs)\\n\",\n        \"\\n\",\n        \"  def reset_n_prop_layers(self, n_prop_layers):\\n\",\n        \"    \\\"\\\"\\\"Set n_prop_layers to the provided new value.\\n\",\n        \"\\n\",\n        \"    This allows us to train with certain number of propagation layers and\\n\",\n        \"    evaluate with a different number of propagation layers.\\n\",\n        \"\\n\",\n        \"    This only works if n_prop_layers is smaller than the number used for\\n\",\n        \"    training, or when share_prop_params is set to True, in which case this can\\n\",\n        \"    be arbitrarily large.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      n_prop_layers: the new number of propagation layers to set.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    self._n_prop_layers = n_prop_layers\\n\",\n        \"\\n\",\n        \"  @property\\n\",\n        \"  def n_prop_layers(self):\\n\",\n        \"    return self._n_prop_layers\\n\",\n        \"\\n\",\n        \"  def get_layer_outputs(self):\\n\",\n        \"    \\\"\\\"\\\"Get the outputs at each layer.\\\"\\\"\\\"\\n\",\n        \"    if hasattr(self, '_layer_outputs'):\\n\",\n        \"      return self._layer_outputs\\n\",\n        \"    else:\\n\",\n        \"      raise ValueError('No layer outputs available.')\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"rVUVjA1TfaDN\"\n      },\n      \"source\": [\n        \"### The graph matching networks\\n\",\n        \"\\n\",\n        \"The graph matching networks (GMNs) compute the similarity score for a pair of graphs jointly on the pair.  In our current formulation, it still computes a representation for each graph, but the representations for a pair of graphs are computed jointly on the pair, through a cross-graph attention-based matching mechanism.\\n\",\n        \"\\n\",\n        \"More concretely, the graph matching model can be formulated as\\n\",\n        \"\\n\",\n        \"$$d(G_1, G_2) = d_H(embed\\\\_and\\\\_match(G_1, G_2))$$\\n\",\n        \"\\n\",\n        \"where $embed\\\\_and\\\\_match(G_1, G_2)$ returns a pair of graph representations.\\n\",\n        \"\\n\",\n        \"Similar to the embedding model, our GMNs computes graph representations through 3 steps.  The difference to the embedding model is in the message passing step, where each node not only gets messages from within the same graph, but also gets cross-graph messages by attending to all the nodes in the other graph.  This can be formulated as follows.\\n\",\n        \"\\n\",\n        \"We first have within-graph messages as before:\\n\",\n        \"$$\\n\",\n        \"m_{i\\\\rightarrow j} = f_\\\\mathrm{message}(h_i^{(t)}, h_j^{(t)}, e_{ij}).\\n\",\n        \"$$\\n\",\n        \"\\n\",\n        \"In addition, we also allow each node in one graph to attend to all the other nodes in the other graph.  The cross graph attention weight (node $i$ in one graph attending to node $j$ in the other graph, and vice versa) is computed as\\n\",\n        \"$$\\\\begin{array}{rcl}\\n\",\n        \"a_{i\\\\rightarrow j} \\u0026=\\u0026 \\\\frac{\\\\exp(s(h_i^{(t)}, h_j^{(t)}))}{\\\\sum_j \\\\exp(s(h_i^{(t)}, h_j^{(t)}))} \\\\\\\\\\n\",\n        \"a_{j\\\\rightarrow i} \\u0026=\\u0026 \\\\frac{\\\\exp(s(h_i^{(t)}, h_j^{(t)}))}{\\\\sum_i \\\\exp(s(h_i^{(t)}, h_j^{(t)}))},\\n\",\n        \"\\\\end{array}\\n\",\n        \"$$\\n\",\n        \"where $s(., .)$ is again a vector space similarity function, like Euclidean, dot-product or cosine.  Also note the different indices being summed over in the normalizers.\\n\",\n        \"\\n\",\n        \"The cross-graph message is then computed as\\n\",\n        \"$$\\\\begin{array}{rcl}\\n\",\n        \"\\\\mu_i \\u0026=\\u0026 \\\\sum_j a_{i\\\\rightarrow j} (h_i^{(t)} - h_j^{(t)}) = h_i^{(t)} - \\\\sum_j a_{i\\\\rightarrow j} h_j^{(t)}, \\\\\\\\\\n\",\n        \"\\\\mu_j \\u0026=\\u0026 \\\\sum_i a_{j\\\\rightarrow i} (h_j^{(t)} - h_i^{(t)}) = h_j^{(t)} - \\\\sum_i a_{j\\\\rightarrow i} h_i^{(t)}.\\n\",\n        \"\\\\end{array}\\n\",\n        \"$$\\n\",\n        \"Here we are computing an attention-weighted sum of all the node representations from the other graph, and then take the difference.  This is essentially **matching** one node in one graph to nodes most similar to it in the other graph, and then compute the difference.\\n\",\n        \"\\n\",\n        \"The node updates are then computed as\\n\",\n        \"$$\\n\",\n        \"h_i^{(t+1)} = f_\\\\mathrm{node}\\\\left(h_i^{(t)}, \\\\sum_{j:(j,i)\\\\in E} m_{j\\\\rightarrow i}, \\\\mu_i\\\\right).\\n\",\n        \"$$\\n\",\n        \"\\n\",\n        \"The graph encoder and the graph aggregators are the same as in the embedding model.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"pAcqRtr4mvbK\"\n      },\n      \"source\": [\n        \"#### A few similarity functions\\n\",\n        \"\\n\",\n        \"These are the functions $s(., .)$ that will be used in the cross-graph attention.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"vhZWiK6vzDGW\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def pairwise_euclidean_similarity(x, y):\\n\",\n        \"  \\\"\\\"\\\"Compute the pairwise Euclidean similarity between x and y.\\n\",\n        \"\\n\",\n        \"  This function computes the following similarity value between each pair of x_i\\n\",\n        \"  and y_j: s(x_i, y_j) = -|x_i - y_j|^2.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    x: NxD float tensor.\\n\",\n        \"    y: MxD float tensor.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    s: NxM float tensor, the pairwise euclidean similarity.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  s = 2 * tf.matmul(x, y, transpose_b=True)\\n\",\n        \"  diag_x = tf.reduce_sum(x * x, axis=-1, keepdims=True)\\n\",\n        \"  diag_y = tf.reshape(tf.reduce_sum(y * y, axis=-1), (1, -1))\\n\",\n        \"  return s - diag_x - diag_y\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def pairwise_dot_product_similarity(x, y):\\n\",\n        \"  \\\"\\\"\\\"Compute the dot product similarity between x and y.\\n\",\n        \"\\n\",\n        \"  This function computes the following similarity value between each pair of x_i\\n\",\n        \"  and y_j: s(x_i, y_j) = x_i^T y_j.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    x: NxD float tensor.\\n\",\n        \"    y: MxD float tensor.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    s: NxM float tensor, the pairwise dot product similarity.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  return tf.matmul(x, y, transpose_b=True)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def pairwise_cosine_similarity(x, y):\\n\",\n        \"  \\\"\\\"\\\"Compute the cosine similarity between x and y.\\n\",\n        \"\\n\",\n        \"  This function computes the following similarity value between each pair of x_i\\n\",\n        \"  and y_j: s(x_i, y_j) = x_i^T y_j / (|x_i||y_j|).\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    x: NxD float tensor.\\n\",\n        \"    y: MxD float tensor.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    s: NxM float tensor, the pairwise cosine similarity.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  x = tf.nn.l2_normalize(x, axis=-1)\\n\",\n        \"  y = tf.nn.l2_normalize(y, axis=-1)\\n\",\n        \"  return tf.matmul(x, y, transpose_b=True)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"PAIRWISE_SIMILARITY_FUNCTION = {\\n\",\n        \"    'euclidean': pairwise_euclidean_similarity,\\n\",\n        \"    'dotproduct': pairwise_dot_product_similarity,\\n\",\n        \"    'cosine': pairwise_cosine_similarity,\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def get_pairwise_similarity(name):\\n\",\n        \"  \\\"\\\"\\\"Get pairwise similarity metric by name.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    name: string, name of the similarity metric, one of {dot-product, cosine,\\n\",\n        \"      euclidean}.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    similarity: a (x, y) -\\u003e sim function.\\n\",\n        \"\\n\",\n        \"  Raises:\\n\",\n        \"    ValueError: if name is not supported.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  if name not in PAIRWISE_SIMILARITY_FUNCTION:\\n\",\n        \"    raise ValueError('Similarity metric name \\\"%s\\\" not supported.' % name)\\n\",\n        \"  else:\\n\",\n        \"    return PAIRWISE_SIMILARITY_FUNCTION[name]\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"wpqaeKLJm_x4\"\n      },\n      \"source\": [\n        \"#### The cross-graph attention\\n\",\n        \"\\n\",\n        \"We implement this cross-graph attention in batches of pairs.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"CfO-r0bdm_DB\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def compute_cross_attention(x, y, sim):\\n\",\n        \"  \\\"\\\"\\\"Compute cross attention.\\n\",\n        \"\\n\",\n        \"  x_i attend to y_j:\\n\",\n        \"  a_{i-\\u003ej} = exp(sim(x_i, y_j)) / sum_j exp(sim(x_i, y_j))\\n\",\n        \"  y_j attend to x_i:\\n\",\n        \"  a_{j-\\u003ei} = exp(sim(x_i, y_j)) / sum_i exp(sim(x_i, y_j))\\n\",\n        \"  attention_x = sum_j a_{i-\\u003ej} y_j\\n\",\n        \"  attention_y = sum_i a_{j-\\u003ei} x_i\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    x: NxD float tensor.\\n\",\n        \"    y: MxD float tensor.\\n\",\n        \"    sim: a (x, y) -\\u003e similarity function.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    attention_x: NxD float tensor.\\n\",\n        \"    attention_y: NxD float tensor.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  a = sim(x, y)\\n\",\n        \"  a_x = tf.nn.softmax(a, axis=1)  # i-\\u003ej\\n\",\n        \"  a_y = tf.nn.softmax(a, axis=0)  # j-\\u003ei\\n\",\n        \"  attention_x = tf.matmul(a_x, y)\\n\",\n        \"  attention_y = tf.matmul(a_y, x, transpose_a=True)\\n\",\n        \"  return attention_x, attention_y\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def batch_block_pair_attention(data,\\n\",\n        \"                               block_idx,\\n\",\n        \"                               n_blocks,\\n\",\n        \"                               similarity='dotproduct'):\\n\",\n        \"  \\\"\\\"\\\"Compute batched attention between pairs of blocks.\\n\",\n        \"\\n\",\n        \"  This function partitions the batch data into blocks according to block_idx.\\n\",\n        \"  For each pair of blocks, x = data[block_idx == 2i], and\\n\",\n        \"  y = data[block_idx == 2i+1], we compute\\n\",\n        \"\\n\",\n        \"  x_i attend to y_j:\\n\",\n        \"  a_{i-\\u003ej} = exp(sim(x_i, y_j)) / sum_j exp(sim(x_i, y_j))\\n\",\n        \"  y_j attend to x_i:\\n\",\n        \"  a_{j-\\u003ei} = exp(sim(x_i, y_j)) / sum_i exp(sim(x_i, y_j))\\n\",\n        \"\\n\",\n        \"  and\\n\",\n        \"\\n\",\n        \"  attention_x = sum_j a_{i-\\u003ej} y_j\\n\",\n        \"  attention_y = sum_i a_{j-\\u003ei} x_i.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    data: NxD float tensor.\\n\",\n        \"    block_idx: N-dim int tensor.\\n\",\n        \"    n_blocks: integer.\\n\",\n        \"    similarity: a string, the similarity metric.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    attention_output: NxD float tensor, each x_i replaced by attention_x_i.\\n\",\n        \"\\n\",\n        \"  Raises:\\n\",\n        \"    ValueError: if n_blocks is not an integer or not a multiple of 2.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  if not isinstance(n_blocks, int):\\n\",\n        \"    raise ValueError('n_blocks (%s) has to be an integer.' % str(n_blocks))\\n\",\n        \"\\n\",\n        \"  if n_blocks % 2 != 0:\\n\",\n        \"    raise ValueError('n_blocks (%d) must be a multiple of 2.' % n_blocks)\\n\",\n        \"\\n\",\n        \"  sim = get_pairwise_similarity(similarity)\\n\",\n        \"\\n\",\n        \"  results = []\\n\",\n        \"\\n\",\n        \"  # This is probably better than doing boolean_mask for each i\\n\",\n        \"  partitions = tf.dynamic_partition(data, block_idx, n_blocks)\\n\",\n        \"\\n\",\n        \"  # It is rather complicated to allow n_blocks be a tf tensor and do this in a\\n\",\n        \"  # dynamic loop, and probably unnecessary to do so.  Therefore we are\\n\",\n        \"  # restricting n_blocks to be a integer constant here and using the plain for\\n\",\n        \"  # loop.\\n\",\n        \"  for i in range(0, n_blocks, 2):\\n\",\n        \"    x = partitions[i]\\n\",\n        \"    y = partitions[i + 1]\\n\",\n        \"    attention_x, attention_y = compute_cross_attention(x, y, sim)\\n\",\n        \"    results.append(attention_x)\\n\",\n        \"    results.append(attention_y)\\n\",\n        \"\\n\",\n        \"  results = tf.concat(results, axis=0)\\n\",\n        \"  # the shape of the first dimension is lost after concat, reset it back\\n\",\n        \"  results.set_shape(data.shape)\\n\",\n        \"  return results\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"AAj9kMygnPch\"\n      },\n      \"source\": [\n        \"#### Graph matching layer and graph matching networks\\n\",\n        \"\\n\",\n        \"This only involves a small set of changes from the graph embedding model.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"gzfRNzF6nOyZ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"class GraphPropMatchingLayer(GraphPropLayer):\\n\",\n        \"  \\\"\\\"\\\"A graph propagation layer that also does cross graph matching.\\n\",\n        \"\\n\",\n        \"  It assumes the incoming graph data is batched and paired, i.e. graph 0 and 1\\n\",\n        \"  forms the first pair and graph 2 and 3 are the second pair etc., and computes\\n\",\n        \"  cross-graph attention-based matching for each pair.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def _build(self,\\n\",\n        \"             node_states,\\n\",\n        \"             from_idx,\\n\",\n        \"             to_idx,\\n\",\n        \"             graph_idx,\\n\",\n        \"             n_graphs,\\n\",\n        \"             similarity='dotproduct',\\n\",\n        \"             edge_features=None,\\n\",\n        \"             node_features=None):\\n\",\n        \"    \\\"\\\"\\\"Run one propagation step with cross-graph matching.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      node_states: [n_nodes, node_state_dim] float tensor, node states.\\n\",\n        \"      from_idx: [n_edges] int tensor, from node indices for each edge.\\n\",\n        \"      to_idx: [n_edges] int tensor, to node indices for each edge.\\n\",\n        \"      graph_idx: [n_onodes] int tensor, graph id for each node.\\n\",\n        \"      n_graphs: integer, number of graphs in the batch.\\n\",\n        \"      similarity: type of similarity to use for the cross graph attention.\\n\",\n        \"      edge_features: if not None, should be [n_edges, edge_feat_dim] tensor,\\n\",\n        \"        extra edge features.\\n\",\n        \"      node_features: if not None, should be [n_nodes, node_feat_dim] tensor,\\n\",\n        \"        extra node features.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      node_states: [n_nodes, node_state_dim] float tensor, new node states.\\n\",\n        \"\\n\",\n        \"    Raises:\\n\",\n        \"      ValueError: if some options are not provided correctly.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    aggregated_messages = self._compute_aggregated_messages(\\n\",\n        \"        node_states, from_idx, to_idx, edge_features=edge_features)\\n\",\n        \"\\n\",\n        \"    # new stuff here\\n\",\n        \"    cross_graph_attention = batch_block_pair_attention(\\n\",\n        \"        node_states, graph_idx, n_graphs, similarity=similarity)\\n\",\n        \"    attention_input = node_states - cross_graph_attention\\n\",\n        \"\\n\",\n        \"    return self._compute_node_update(node_states,\\n\",\n        \"                                     [aggregated_messages, attention_input],\\n\",\n        \"                                     node_features=node_features)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class GraphMatchingNet(GraphEmbeddingNet):\\n\",\n        \"  \\\"\\\"\\\"Graph matching net.\\n\",\n        \"\\n\",\n        \"  This class uses graph matching layers instead of the simple graph prop layers.\\n\",\n        \"\\n\",\n        \"  It assumes the incoming graph data is batched and paired, i.e. graph 0 and 1\\n\",\n        \"  forms the first pair and graph 2 and 3 are the second pair etc., and computes\\n\",\n        \"  cross-graph attention-based matching for each pair.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               encoder,\\n\",\n        \"               aggregator,\\n\",\n        \"               node_state_dim,\\n\",\n        \"               edge_hidden_sizes,\\n\",\n        \"               node_hidden_sizes,\\n\",\n        \"               n_prop_layers,\\n\",\n        \"               share_prop_params=False,\\n\",\n        \"               edge_net_init_scale=0.1,\\n\",\n        \"               node_update_type='residual',\\n\",\n        \"               use_reverse_direction=True,\\n\",\n        \"               reverse_dir_param_different=True,\\n\",\n        \"               layer_norm=False,\\n\",\n        \"               similarity='dotproduct',\\n\",\n        \"               name='graph-matching-net'):\\n\",\n        \"    super(GraphMatchingNet, self).__init__(\\n\",\n        \"        encoder,\\n\",\n        \"        aggregator,\\n\",\n        \"        node_state_dim,\\n\",\n        \"        edge_hidden_sizes,\\n\",\n        \"        node_hidden_sizes,\\n\",\n        \"        n_prop_layers,\\n\",\n        \"        share_prop_params=share_prop_params,\\n\",\n        \"        edge_net_init_scale=edge_net_init_scale,\\n\",\n        \"        node_update_type=node_update_type,\\n\",\n        \"        use_reverse_direction=use_reverse_direction,\\n\",\n        \"        reverse_dir_param_different=reverse_dir_param_different,\\n\",\n        \"        layer_norm=layer_norm,\\n\",\n        \"        name=name)\\n\",\n        \"    self._similarity = similarity\\n\",\n        \"    self._layer_class = GraphPropMatchingLayer\\n\",\n        \"\\n\",\n        \"  def _apply_layer(self,\\n\",\n        \"                   layer,\\n\",\n        \"                   node_states,\\n\",\n        \"                   from_idx,\\n\",\n        \"                   to_idx,\\n\",\n        \"                   graph_idx,\\n\",\n        \"                   n_graphs,\\n\",\n        \"                   edge_features):\\n\",\n        \"    \\\"\\\"\\\"Apply one layer on the given inputs.\\\"\\\"\\\"\\n\",\n        \"    return layer(node_states, from_idx, to_idx, graph_idx, n_graphs,\\n\",\n        \"                 similarity=self._similarity, edge_features=edge_features)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"tBXC2yUgzlyO\"\n      },\n      \"source\": [\n        \"## Training\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"EVVXhPc6zqAy\"\n      },\n      \"source\": [\n        \"### Labeled data examples\\n\",\n        \"\\n\",\n        \"We train on either pairs of graphs or triplets of graphs.  For pairs of graphs, we assume each pair $(G_1, G_2)$ comes with a label $t\\\\in\\\\{-1, 1\\\\}$.  $t=1$ if $G_1$ and $G_2$ are similar, and $t=-1$ otherwise.\\n\",\n        \"\\n\",\n        \"For triplets of graphs, we assume within each triplet $(G_1, G_2, G_3)$, $G_1$ is similar to $G_2$ but not similar to $G_3$.\\n\",\n        \"\\n\",\n        \"The goal of training is to learn the parameters of the function $f(G_1, G_2)$ such that similar graphs have high similarity (or small distance) and dissimilar graphs have low similarity (or high distance).\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"8jSKnn5G0KgL\"\n      },\n      \"source\": [\n        \"### Training on pairs\\n\",\n        \"\\n\",\n        \"Given a dataset of pairs $(G_1, G_2)$ and labels $t\\\\in\\\\{-1, 1\\\\}$, we can use the following margin-based loss if using Euclidean distance:\\n\",\n        \"\\n\",\n        \"$$\\n\",\n        \"L_\\\\mathrm{pair} = \\\\mathbb{E}_{(G_1, G_2, t)}[\\\\max\\\\{0, \\\\gamma - t(1 - d(G_1, G_2))\\\\}]\\n\",\n        \"$$\\n\",\n        \"\\n\",\n        \"This loss encourages similar graphs to have distance smaller than $1-\\\\gamma$, and dissimilar graphs to have distance greater than $1 + \\\\gamma$, where $\\\\gamma$ is a margin parameter.\\n\",\n        \"\\n\",\n        \"Alternatively, for many applications it is beneficial to have the representation of graphs be binary which allows efficient indexing and hashing.  In this case, Hamming distance (similarity) is more appropriate.  On the other hand, the Hamming distance is not differentiable, so we use a smooth approximation\\n\",\n        \"$$\\n\",\n        \"s(G_1, G_2) = \\\\frac{1}{H}\\\\sum_{i=1}^H \\\\tanh(h_{G_1, i}) \\\\cdot \\\\tanh(h_{G_2, i}),\\n\",\n        \"$$\\n\",\n        \"where $s$ is now a similarity (rather than distance) function, $h_{G, i}$ is the i-th dimension of the smooth representation vector for G.  We get binary codes by thresholding $h_{G,i}$ at 0, i.e. $\\\\hat{h}_{G,i}=1$ if $h_{G,i}\\\\ge 0$ and $-1$ otherwise.\\n\",\n        \"\\n\",\n        \"The loss we use with these binary representations is defined as\\n\",\n        \"\\n\",\n        \"$$\\n\",\n        \"L_\\\\mathrm{pair} = \\\\mathbb{E}_{(G_1, G_2, t)}[(t - s(G_1, G_2))^2] / 4.\\n\",\n        \"$$\\n\",\n        \"\\n\",\n        \"The factor of $1/4$ is used to normalize the loss to between 0 and 1.\\n\",\n        \"\\n\",\n        \"These are just two possible losses, many other types of losses could also be used.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"vwqL12jS2t2V\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def euclidean_distance(x, y):\\n\",\n        \"  \\\"\\\"\\\"This is the squared Euclidean distance.\\\"\\\"\\\"\\n\",\n        \"  return tf.reduce_sum((x - y)**2, axis=-1)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def approximate_hamming_similarity(x, y):\\n\",\n        \"  \\\"\\\"\\\"Approximate Hamming similarity.\\\"\\\"\\\"\\n\",\n        \"  return tf.reduce_mean(tf.tanh(x) * tf.tanh(y), axis=1)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def pairwise_loss(x, y, labels, loss_type='margin', margin=1.0):\\n\",\n        \"  \\\"\\\"\\\"Compute pairwise loss.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    x: [N, D] float tensor, representations for N examples.\\n\",\n        \"    y: [N, D] float tensor, representations for another N examples.\\n\",\n        \"    labels: [N] int tensor, with values in -1 or +1.  labels[i] = +1 if x[i]\\n\",\n        \"      and y[i] are similar, and -1 otherwise.\\n\",\n        \"    loss_type: margin or hamming.\\n\",\n        \"    margin: float scalar, margin for the margin loss.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    loss: [N] float tensor.  Loss for each pair of representations.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  labels = tf.cast(labels, x.dtype)\\n\",\n        \"  if loss_type == 'margin':\\n\",\n        \"    return tf.nn.relu(margin - labels * (1 - euclidean_distance(x, y)))\\n\",\n        \"  elif loss_type == 'hamming':\\n\",\n        \"    return 0.25 * (labels - approximate_hamming_similarity(x, y))**2\\n\",\n        \"  else:\\n\",\n        \"    raise ValueError('Unknown loss_type %s' % loss_type)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"E1-k-A4e2uV8\"\n      },\n      \"source\": [\n        \"### Training on triplets\\n\",\n        \"\\n\",\n        \"Given a dataset of triplets $(G_1, G_2, G_3)$ where $G_1$ is similar to $G_2$ but not similar to $G_3$, we can again use a margin loss or Hamming similarity-based loss.\\n\",\n        \"\\n\",\n        \"The following margin loss can be used with Euclidean distance:\\n\",\n        \"\\n\",\n        \"$$\\n\",\n        \"L_\\\\mathrm{triplet} = \\\\mathbb{E}_{(G_1, G_2, G_3)}[\\\\max\\\\{0, d(G_1, G_2) - d(G_1, G_3) + \\\\gamma\\\\}],\\n\",\n        \"$$\\n\",\n        \"which encourages $d(G_1, G_2)$ to be smaller by $d(G_1, G_3)$ by at least a margin of $\\\\gamma$.\\n\",\n        \"\\n\",\n        \"If using Hamming distance (similarity) we could use the following loss:\\n\",\n        \"\\n\",\n        \"$$\\n\",\n        \"L_\\\\mathrm{triplet} = \\\\mathbb{E}_{(G_1, G_2, G_3)}[(s(G_1, G_2) - 1)^2 + (s(G_1, G_3) + 1)^2] / 8\\n\",\n        \"$$\\n\",\n        \"\\n\",\n        \"The factor of $1/8$ is again used to normalize the loss to within 0 and 1.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"7ibuK0-y4WcI\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def triplet_loss(x_1, y, x_2, z, loss_type='margin', margin=1.0):\\n\",\n        \"  \\\"\\\"\\\"Compute triplet loss.\\n\",\n        \"\\n\",\n        \"  This function computes loss on a triplet of inputs (x, y, z).  A similarity or\\n\",\n        \"  distance value is computed for each pair of (x, y) and (x, z).  Since the\\n\",\n        \"  representations for x can be different in the two pairs (like our matching\\n\",\n        \"  model) we distinguish the two x representations by x_1 and x_2.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    x_1: [N, D] float tensor.\\n\",\n        \"    y: [N, D] float tensor.\\n\",\n        \"    x_2: [N, D] float tensor.\\n\",\n        \"    z: [N, D] float tensor.\\n\",\n        \"    loss_type: margin or hamming.\\n\",\n        \"    margin: float scalar, margin for the margin loss.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    loss: [N] float tensor.  Loss for each pair of representations.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  if loss_type == 'margin':\\n\",\n        \"    return tf.nn.relu(margin +\\n\",\n        \"                      euclidean_distance(x_1, y) -\\n\",\n        \"                      euclidean_distance(x_2, z))\\n\",\n        \"  elif loss_type == 'hamming':\\n\",\n        \"    return 0.125 * ((approximate_hamming_similarity(x_1, y) - 1)**2 +\\n\",\n        \"                    (approximate_hamming_similarity(x_2, z) + 1)**2)\\n\",\n        \"  else:\\n\",\n        \"    raise ValueError('Unknown loss_type %s' % loss_type)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"zQkcwBrdn4YZ\"\n      },\n      \"source\": [\n        \"## Datasets\\n\",\n        \"\\n\",\n        \"We use an abstract `GraphSimilarityDataset` class to define the general interface for the training and evaluatin data used in graph similarity learning.\\n\",\n        \"\\n\",\n        \"We also assume a certain format for packing the graphs into tensors as described below.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"6lAkeOZnn32w\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"GraphData = collections.namedtuple('GraphData', [\\n\",\n        \"    'from_idx',\\n\",\n        \"    'to_idx',\\n\",\n        \"    'node_features',\\n\",\n        \"    'edge_features',\\n\",\n        \"    'graph_idx',\\n\",\n        \"    'n_graphs'])\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"@six.add_metaclass(abc.ABCMeta)\\n\",\n        \"class GraphSimilarityDataset(object):\\n\",\n        \"  \\\"\\\"\\\"Base class for all the graph similarity learning datasets.\\n\",\n        \"\\n\",\n        \"  This class defines some common interfaces a graph similarity dataset can have,\\n\",\n        \"  in particular the functions that creates iterators over pairs and triplets.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  @abc.abstractmethod\\n\",\n        \"  def triplets(self, batch_size):\\n\",\n        \"    \\\"\\\"\\\"Create an iterator over triplets.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      batch_size: int, number of triplets in a batch.\\n\",\n        \"\\n\",\n        \"    Yields:\\n\",\n        \"      graphs: a `GraphData` instance.  The batch of triplets put together.  Each\\n\",\n        \"        triplet has 3 graphs (x, y, z).  Here the first graph is duplicated once\\n\",\n        \"        so the graphs for each triplet are ordered as (x, y, x, z) in the batch.\\n\",\n        \"        The batch contains `batch_size` number of triplets, hence `4*batch_size`\\n\",\n        \"        many graphs.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    pass\\n\",\n        \"\\n\",\n        \"  @abc.abstractmethod\\n\",\n        \"  def pairs(self, batch_size):\\n\",\n        \"    \\\"\\\"\\\"Create an iterator over pairs.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      batch_size: int, number of pairs in a batch.\\n\",\n        \"\\n\",\n        \"    Yields:\\n\",\n        \"      graphs: a `GraphData` instance.  The batch of pairs put together.  Each\\n\",\n        \"        pair has 2 graphs (x, y).  The batch contains `batch_size` number of\\n\",\n        \"        pairs, hence `2*batch_size` many graphs.\\n\",\n        \"      labels: [batch_size] int labels for each pair, +1 for similar, -1 for not.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    pass\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"PPKfGwXPzFMW\"\n      },\n      \"source\": [\n        \"## The graph edit distance task\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"328H0viCAwyG\"\n      },\n      \"source\": [\n        \"Here we use the synthetic task of learning approximate graph edit distances (GEDs) to test the effectiveness of the graph similarity learning models.\\n\",\n        \"\\n\",\n        \"Given two graphs $G_1$ and $G_2$, we say the edit distance between them is the number of actions needed to transform one into another.  Since the difference in graph size (number of nodes, number of edges) is trivial to identify, we only consider the case of substituting one edge with another edge, and define the edit distance between two equal-size graphs to be the number of edge changes needed to make them identical (or isomorphic).\\n\",\n        \"\\n\",\n        \"We train a graph similarity or distance model that aligns with the GED, by giving graphs with small edit distance a high similarity score or low learned distance, and otherwise low similarity score or high learned distance.  Note that we don't try to match the learned graph distance with the actual GED, as we don't assume the exact scale of the GED is available during training.\\n\",\n        \"\\n\",\n        \"To get training data, we sample graph $G$ from the Erdos-Renyi model (other random graph models could be used as well), and then:\\n\",\n        \"* apply a node permutation to $G$ to get $G_1$,\\n\",\n        \"* apply $k_1$ edge changes to $G$ to get $G_2$,\\n\",\n        \"* apply $k_2$ edge changes to $G$ to get $G_3$.\\n\",\n        \"\\n\",\n        \"Each edge change action substitutes one edge $(i,j)$ by another edge $(i', j')$ where $i'$ and $j'$ are picked randomly.  In this case, we have roughly $GED(G_1, G_2)\\\\approx k_1$ and $GED(G_1, G_3)\\\\approx k_2$.  We make $k_1 \\u003c k_2$ and say $(G_1, G_2)$ is a positive pair that are similar and $(G_1, G_3)$ is a negative pair hence not similar.\\n\",\n        \"\\n\",\n        \"Note that the above GED for $G_1, G_2$ and $G_3$ only holds approximately, and $GED(G_1, G_2)\\\\le k_1$ and $GED(G_1, G_3)\\\\le k_2$, because of the potential symmetry in $G$, i.e. it is possible that changing one edge may only change the graph into another isomorphic graph.  However the probability of this happening is relatively small and decreases with increasing graph size.  So we ignore this possibility in this task.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"U_68U4wIo7lT\"\n      },\n      \"source\": [\n        \"### A few graph manipulation primitives\\n\",\n        \"\\n\",\n        \"These primitives assume the incoming graphs are instances of `networkx.Graph`.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"ZyJh0DGNyWox\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def permute_graph_nodes(g):\\n\",\n        \"  \\\"\\\"\\\"Permute node ordering of a graph, returns a new graph.\\\"\\\"\\\"\\n\",\n        \"  n = g.number_of_nodes()\\n\",\n        \"  new_g = nx.Graph()\\n\",\n        \"  new_g.add_nodes_from(range(n))\\n\",\n        \"  perm = np.random.permutation(n)\\n\",\n        \"  edges = g.edges()\\n\",\n        \"  new_edges = []\\n\",\n        \"  for x, y in edges:\\n\",\n        \"    new_edges.append((perm[x], perm[y]))\\n\",\n        \"  new_g.add_edges_from(new_edges)\\n\",\n        \"  return new_g\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def substitute_random_edges(g, n):\\n\",\n        \"  \\\"\\\"\\\"Substitutes n edges from graph g with another n randomly picked edges.\\\"\\\"\\\"\\n\",\n        \"  g = copy.deepcopy(g)\\n\",\n        \"  n_nodes = g.number_of_nodes()\\n\",\n        \"  edges = list(g.edges())\\n\",\n        \"  # sample n edges without replacement\\n\",\n        \"  e_remove = [edges[i] for i in np.random.choice(\\n\",\n        \"      np.arange(len(edges)), n, replace=False)]\\n\",\n        \"  edge_set = set(edges)\\n\",\n        \"  e_add = set()\\n\",\n        \"  while len(e_add) \\u003c n:\\n\",\n        \"    e = np.random.choice(n_nodes, 2, replace=False)\\n\",\n        \"    # make sure e does not exist and is not already chosen to be added\\n\",\n        \"    if ((e[0], e[1]) not in edge_set and (e[1], e[0]) not in edge_set and\\n\",\n        \"        (e[0], e[1]) not in e_add and (e[1], e[0]) not in e_add):\\n\",\n        \"      e_add.add((e[0], e[1]))\\n\",\n        \"\\n\",\n        \"  for i, j in e_remove:\\n\",\n        \"    g.remove_edge(i, j)\\n\",\n        \"  for i, j in e_add:\\n\",\n        \"    g.add_edge(i, j)\\n\",\n        \"  return g\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"ECXrG7VJpIDl\"\n      },\n      \"source\": [\n        \"### Dataset for training, fixed dataset for evaluation\\n\",\n        \"\\n\",\n        \"For training we use a procedure to generate graphs in pairs or triplets on the fly, and wrap this process into a `Dataset` instance.  For evaluation we need to\\n\",\n        \"use a fixed set to make sure the evaluation results are consistent and comparable, and we do that by controlling random seeds.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"ZW5KEb-gpHlq\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"class GraphEditDistanceDataset(GraphSimilarityDataset):\\n\",\n        \"  \\\"\\\"\\\"Graph edit distance dataset.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               n_nodes_range,\\n\",\n        \"               p_edge_range,\\n\",\n        \"               n_changes_positive,\\n\",\n        \"               n_changes_negative,\\n\",\n        \"               permute=True):\\n\",\n        \"    \\\"\\\"\\\"Constructor.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      n_nodes_range: a tuple (n_min, n_max).  The minimum and maximum number of\\n\",\n        \"        nodes in a graph to generate.\\n\",\n        \"      p_edge_range: a tuple (p_min, p_max).  The minimum and maximum edge\\n\",\n        \"        probability.\\n\",\n        \"      n_changes_positive: the number of edge substitutions for a pair to be\\n\",\n        \"        considered positive (similar).\\n\",\n        \"      n_changes_negative: the number of edge substitutions for a pair to be\\n\",\n        \"        considered negative (not similar).\\n\",\n        \"      permute: if True (default), permute node orderings in addition to\\n\",\n        \"        changing edges; if False, the node orderings across a pair or triplet of\\n\",\n        \"        graphs will be the same, useful for visualization.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    self._n_min, self._n_max = n_nodes_range\\n\",\n        \"    self._p_min, self._p_max = p_edge_range\\n\",\n        \"    self._k_pos = n_changes_positive\\n\",\n        \"    self._k_neg = n_changes_negative\\n\",\n        \"    self._permute = permute\\n\",\n        \"\\n\",\n        \"  def _get_graph(self):\\n\",\n        \"    \\\"\\\"\\\"Generate one graph.\\\"\\\"\\\"\\n\",\n        \"    n_nodes = np.random.randint(self._n_min, self._n_max + 1)\\n\",\n        \"    p_edge = np.random.uniform(self._p_min, self._p_max)\\n\",\n        \"\\n\",\n        \"    # do a little bit of filtering\\n\",\n        \"    n_trials = 100\\n\",\n        \"    for _ in range(n_trials):\\n\",\n        \"      g = nx.erdos_renyi_graph(n_nodes, p_edge)\\n\",\n        \"      if nx.is_connected(g):\\n\",\n        \"        return g\\n\",\n        \"\\n\",\n        \"    raise ValueError('Failed to generate a connected graph.')\\n\",\n        \"\\n\",\n        \"  def _get_pair(self, positive):\\n\",\n        \"    \\\"\\\"\\\"Generate one pair of graphs.\\\"\\\"\\\"\\n\",\n        \"    g = self._get_graph()\\n\",\n        \"    if self._permute:\\n\",\n        \"      permuted_g = permute_graph_nodes(g)\\n\",\n        \"    else:\\n\",\n        \"      permuted_g = g\\n\",\n        \"    n_changes = self._k_pos if positive else self._k_neg\\n\",\n        \"    changed_g = substitute_random_edges(g, n_changes)\\n\",\n        \"    return permuted_g, changed_g\\n\",\n        \"\\n\",\n        \"  def _get_triplet(self):\\n\",\n        \"    \\\"\\\"\\\"Generate one triplet of graphs.\\\"\\\"\\\"\\n\",\n        \"    g = self._get_graph()\\n\",\n        \"    if self._permute:\\n\",\n        \"      permuted_g = permute_graph_nodes(g)\\n\",\n        \"    else:\\n\",\n        \"      permuted_g = g\\n\",\n        \"    pos_g = substitute_random_edges(g, self._k_pos)\\n\",\n        \"    neg_g = substitute_random_edges(g, self._k_neg)\\n\",\n        \"    return permuted_g, pos_g, neg_g\\n\",\n        \"\\n\",\n        \"  def triplets(self, batch_size):\\n\",\n        \"    \\\"\\\"\\\"Yields batches of triplet data.\\\"\\\"\\\"\\n\",\n        \"    while True:\\n\",\n        \"      batch_graphs = []\\n\",\n        \"      for _ in range(batch_size):\\n\",\n        \"        g1, g2, g3 = self._get_triplet()\\n\",\n        \"        batch_graphs.append((g1, g2, g1, g3))\\n\",\n        \"      yield self._pack_batch(batch_graphs)\\n\",\n        \"\\n\",\n        \"  def pairs(self, batch_size):\\n\",\n        \"    \\\"\\\"\\\"Yields batches of pair data.\\\"\\\"\\\"\\n\",\n        \"    while True:\\n\",\n        \"      batch_graphs = []\\n\",\n        \"      batch_labels = []\\n\",\n        \"      positive = True\\n\",\n        \"      for _ in range(batch_size):\\n\",\n        \"        g1, g2 = self._get_pair(positive)\\n\",\n        \"        batch_graphs.append((g1, g2))\\n\",\n        \"        batch_labels.append(1 if positive else -1)\\n\",\n        \"        positive = not positive\\n\",\n        \"\\n\",\n        \"      packed_graphs = self._pack_batch(batch_graphs)\\n\",\n        \"      labels = np.array(batch_labels, dtype=np.int32)\\n\",\n        \"      yield packed_graphs, labels\\n\",\n        \"\\n\",\n        \"  def _pack_batch(self, graphs):\\n\",\n        \"    \\\"\\\"\\\"Pack a batch of graphs into a single `GraphData` instance.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      graphs: a list of generated networkx graphs.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      graph_data: a `GraphData` instance, with node and edge indices properly\\n\",\n        \"        shifted.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    graphs = tf.nest.flatten(graphs)\\n\",\n        \"    from_idx = []\\n\",\n        \"    to_idx = []\\n\",\n        \"    graph_idx = []\\n\",\n        \"\\n\",\n        \"    n_total_nodes = 0\\n\",\n        \"    n_total_edges = 0\\n\",\n        \"    for i, g in enumerate(graphs):\\n\",\n        \"      n_nodes = g.number_of_nodes()\\n\",\n        \"      n_edges = g.number_of_edges()\\n\",\n        \"      edges = np.array(g.edges(), dtype=np.int32)\\n\",\n        \"      # shift the node indices for the edges\\n\",\n        \"      from_idx.append(edges[:, 0] + n_total_nodes)\\n\",\n        \"      to_idx.append(edges[:, 1] + n_total_nodes)\\n\",\n        \"      graph_idx.append(np.ones(n_nodes, dtype=np.int32) * i)\\n\",\n        \"\\n\",\n        \"      n_total_nodes += n_nodes\\n\",\n        \"      n_total_edges += n_edges\\n\",\n        \"\\n\",\n        \"    return GraphData(\\n\",\n        \"        from_idx=np.concatenate(from_idx, axis=0),\\n\",\n        \"        to_idx=np.concatenate(to_idx, axis=0),\\n\",\n        \"        # this task only cares about the structures, the graphs have no features\\n\",\n        \"        node_features=np.ones((n_total_nodes, 1), dtype=np.float32),\\n\",\n        \"        edge_features=np.ones((n_total_edges, 1), dtype=np.float32),\\n\",\n        \"        graph_idx=np.concatenate(graph_idx, axis=0),\\n\",\n        \"        n_graphs=len(graphs))\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"@contextlib.contextmanager\\n\",\n        \"def reset_random_state(seed):\\n\",\n        \"  \\\"\\\"\\\"This function creates a context that uses the given seed.\\\"\\\"\\\"\\n\",\n        \"  np_rnd_state = np.random.get_state()\\n\",\n        \"  rnd_state = random.getstate()\\n\",\n        \"  np.random.seed(seed)\\n\",\n        \"  random.seed(seed + 1)\\n\",\n        \"  try:\\n\",\n        \"    yield\\n\",\n        \"  finally:\\n\",\n        \"    random.setstate(rnd_state)\\n\",\n        \"    np.random.set_state(np_rnd_state)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class FixedGraphEditDistanceDataset(GraphEditDistanceDataset):\\n\",\n        \"  \\\"\\\"\\\"A fixed dataset of pairs or triplets for the graph edit distance task.\\n\",\n        \"\\n\",\n        \"  This dataset can be used for evaluation.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               n_nodes_range,\\n\",\n        \"               p_edge_range,\\n\",\n        \"               n_changes_positive,\\n\",\n        \"               n_changes_negative,\\n\",\n        \"               dataset_size,\\n\",\n        \"               permute=True,\\n\",\n        \"               seed=1234):\\n\",\n        \"    super(FixedGraphEditDistanceDataset, self).__init__(\\n\",\n        \"        n_nodes_range, p_edge_range, n_changes_positive, n_changes_negative,\\n\",\n        \"        permute=permute)\\n\",\n        \"    self._dataset_size = dataset_size\\n\",\n        \"    self._seed = seed\\n\",\n        \"\\n\",\n        \"  def triplets(self, batch_size):\\n\",\n        \"    \\\"\\\"\\\"Yield triplets.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"    if hasattr(self, '_triplets'):\\n\",\n        \"      triplets = self._triplets\\n\",\n        \"    else:\\n\",\n        \"      # get a fixed set of triplets\\n\",\n        \"      with reset_random_state(self._seed):\\n\",\n        \"        triplets = []\\n\",\n        \"        for _ in range(self._dataset_size):\\n\",\n        \"          g1, g2, g3 = self._get_triplet()\\n\",\n        \"          triplets.append((g1, g2, g1, g3))\\n\",\n        \"      self._triplets = triplets\\n\",\n        \"\\n\",\n        \"    ptr = 0\\n\",\n        \"    while ptr + batch_size \\u003c= len(triplets):\\n\",\n        \"      batch_graphs = triplets[ptr:ptr + batch_size]\\n\",\n        \"      yield self._pack_batch(batch_graphs)\\n\",\n        \"      ptr += batch_size\\n\",\n        \"\\n\",\n        \"  def pairs(self, batch_size):\\n\",\n        \"    \\\"\\\"\\\"Yield pairs and labels.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"    if hasattr(self, '_pairs') and hasattr(self, '_labels'):\\n\",\n        \"      pairs = self._pairs\\n\",\n        \"      labels = self._labels\\n\",\n        \"    else:\\n\",\n        \"      # get a fixed set of pairs first\\n\",\n        \"      with reset_random_state(self._seed):\\n\",\n        \"        pairs = []\\n\",\n        \"        labels = []\\n\",\n        \"        positive = True\\n\",\n        \"        for _ in range(self._dataset_size):\\n\",\n        \"          pairs.append(self._get_pair(positive))\\n\",\n        \"          labels.append(1 if positive else -1)\\n\",\n        \"          positive = not positive\\n\",\n        \"      labels = np.array(labels, dtype=np.int32)\\n\",\n        \"\\n\",\n        \"      self._pairs = pairs\\n\",\n        \"      self._labels = labels\\n\",\n        \"\\n\",\n        \"    ptr = 0\\n\",\n        \"    while ptr + batch_size \\u003c= len(pairs):\\n\",\n        \"      batch_graphs = pairs[ptr:ptr + batch_size]\\n\",\n        \"      packed_batch = self._pack_batch(batch_graphs)\\n\",\n        \"      yield packed_batch, labels[ptr:ptr + batch_size]\\n\",\n        \"      ptr += batch_size\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"PKY5FeT9pu0s\"\n      },\n      \"source\": [\n        \"## Building the model, and the training and evaluation pipelines\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"y5vCmOYjpxFa\"\n      },\n      \"source\": [\n        \"### Configs\\n\",\n        \"\\n\",\n        \"We put all the configs for model building and training into a single `dict`, but any part of our code can also be used separately with separate configs if you want.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"whHJHVMupwjT\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def get_default_config():\\n\",\n        \"  \\\"\\\"\\\"The default configs.\\\"\\\"\\\"\\n\",\n        \"  node_state_dim = 32\\n\",\n        \"  graph_rep_dim = 128\\n\",\n        \"  graph_embedding_net_config = dict(\\n\",\n        \"      node_state_dim=node_state_dim,\\n\",\n        \"      edge_hidden_sizes=[node_state_dim * 2, node_state_dim * 2],\\n\",\n        \"      node_hidden_sizes=[node_state_dim * 2],\\n\",\n        \"      n_prop_layers=5,\\n\",\n        \"      # set to False to not share parameters across message passing layers\\n\",\n        \"      share_prop_params=True,\\n\",\n        \"      # initialize message MLP with small parameter weights to prevent\\n\",\n        \"      # aggregated message vectors blowing up, alternatively we could also use\\n\",\n        \"      # e.g. layer normalization to keep the scale of these under control.\\n\",\n        \"      edge_net_init_scale=0.1,\\n\",\n        \"      # other types of update like `mlp` and `residual` can also be used here.\\n\",\n        \"      node_update_type='gru',\\n\",\n        \"      # set to False if your graph already contains edges in both directions.\\n\",\n        \"      use_reverse_direction=True,\\n\",\n        \"      # set to True if your graph is directed\\n\",\n        \"      reverse_dir_param_different=False,\\n\",\n        \"      # we didn't use layer norm in our experiments but sometimes this can help.\\n\",\n        \"      layer_norm=False)\\n\",\n        \"  graph_matching_net_config = graph_embedding_net_config.copy()\\n\",\n        \"  graph_matching_net_config['similarity'] = 'dotproduct'\\n\",\n        \"\\n\",\n        \"  return dict(\\n\",\n        \"      encoder=dict(\\n\",\n        \"          node_hidden_sizes=[node_state_dim],\\n\",\n        \"          edge_hidden_sizes=None),\\n\",\n        \"      aggregator=dict(\\n\",\n        \"          node_hidden_sizes=[graph_rep_dim],\\n\",\n        \"          graph_transform_sizes=[graph_rep_dim],\\n\",\n        \"          gated=True,\\n\",\n        \"          aggregation_type='sum'),\\n\",\n        \"      graph_embedding_net=graph_embedding_net_config,\\n\",\n        \"      graph_matching_net=graph_matching_net_config,\\n\",\n        \"      # Set to `embedding` to use the graph embedding net.\\n\",\n        \"      model_type='matching',\\n\",\n        \"      data=dict(\\n\",\n        \"          problem='graph_edit_distance',\\n\",\n        \"          dataset_params=dict(\\n\",\n        \"              # always generate graphs with 20 nodes and p_edge=0.2.\\n\",\n        \"              n_nodes_range=[20, 20],\\n\",\n        \"              p_edge_range=[0.2, 0.2],\\n\",\n        \"              n_changes_positive=1,\\n\",\n        \"              n_changes_negative=2,\\n\",\n        \"              validation_dataset_size=1000)),\\n\",\n        \"      training=dict(\\n\",\n        \"          batch_size=20,\\n\",\n        \"          learning_rate=1e-3,\\n\",\n        \"          mode='pair',\\n\",\n        \"          loss='margin',\\n\",\n        \"          margin=1.0,\\n\",\n        \"          # A small regularizer on the graph vector scales to avoid the graph\\n\",\n        \"          # vectors blowing up.  If numerical issues is particularly bad in the\\n\",\n        \"          # model we can add `snt.LayerNorm` to the outputs of each layer, the\\n\",\n        \"          # aggregated messages and aggregated node representations to\\n\",\n        \"          # keep the network activation scale in a reasonable range.\\n\",\n        \"          graph_vec_regularizer_weight=1e-6,\\n\",\n        \"          # Add gradient clipping to avoid large gradients.\\n\",\n        \"          clip_value=10.0,\\n\",\n        \"          # Increase this to train longer.\\n\",\n        \"          n_training_steps=10000,\\n\",\n        \"          # Print training information every this many training steps.\\n\",\n        \"          print_after=100,\\n\",\n        \"          # Evaluate on validation set every `eval_after * print_after` steps.\\n\",\n        \"          eval_after=10),\\n\",\n        \"      evaluation=dict(\\n\",\n        \"          batch_size=20),\\n\",\n        \"      seed=8,\\n\",\n        \"      )\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"pIxpwPRFRYE1\"\n      },\n      \"source\": [\n        \"### Evaluation\\n\",\n        \"\\n\",\n        \"We evaluate the performance of the models by measuring how well they do on held-out data.  We look at two metrics, triplet accuracy and pair AUC.\\n\",\n        \"\\n\",\n        \"For each triplet $(G_1, G_2, G_3)$, a model is said to make a correct prediction if it predicts $d(G_1, G_2) \\u003c d(G_1, G_3)$, i.e. similar graphs have a smaller distance (or larger similarity) than dissimilar graphs.  We average the accuracy across a dataset to get the **triplet accuracy** metric.\\n\",\n        \"\\n\",\n        \"For each pair $(G_1, G_2)$ a model computes a distance $d(G_1, G_2)$.  To compute the **pair AUC** metric, we rank all the pairs by the distance from low to high (similarity from high to low), and then compute the area under the ROC curve for positive pairs.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"PQkjMzZxpmml\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def exact_hamming_similarity(x, y):\\n\",\n        \"  \\\"\\\"\\\"Compute the binary Hamming similarity.\\\"\\\"\\\"\\n\",\n        \"  match = tf.cast(tf.equal(x \\u003e 0, y \\u003e 0), dtype=tf.float32)\\n\",\n        \"  return tf.reduce_mean(match, axis=1)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def compute_similarity(config, x, y):\\n\",\n        \"  \\\"\\\"\\\"Compute the distance between x and y vectors.\\n\",\n        \"\\n\",\n        \"  The distance will be computed based on the training loss type.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    config: a config dict.\\n\",\n        \"    x: [n_examples, feature_dim] float tensor.\\n\",\n        \"    y: [n_examples, feature_dim] float tensor.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    dist: [n_examples] float tensor.\\n\",\n        \"\\n\",\n        \"  Raises:\\n\",\n        \"    ValueError: if loss type is not supported.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  if config['training']['loss'] == 'margin':\\n\",\n        \"    # similarity is negative distance\\n\",\n        \"    return -euclidean_distance(x, y)\\n\",\n        \"  elif config['training']['loss'] == 'hamming':\\n\",\n        \"    return exact_hamming_similarity(x, y)\\n\",\n        \"  else:\\n\",\n        \"    raise ValueError('Unknown loss type %s' % config['training']['loss'])\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def auc(scores, labels, **auc_args):\\n\",\n        \"  \\\"\\\"\\\"Compute the AUC for pair classification.\\n\",\n        \"\\n\",\n        \"  See `tf.metrics.auc` for more details about this metric.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    scores: [n_examples] float.  Higher scores mean higher preference of being\\n\",\n        \"      assigned the label of +1.\\n\",\n        \"    labels: [n_examples] int.  Labels are either +1 or -1.\\n\",\n        \"    **auc_args: other arguments that can be used by `tf.metrics.auc`.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    auc: the area under the ROC curve.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  scores_max = tf.reduce_max(scores)\\n\",\n        \"  scores_min = tf.reduce_min(scores)\\n\",\n        \"  # normalize scores to [0, 1] and add a small epislon for safety\\n\",\n        \"  scores = (scores - scores_min) / (scores_max - scores_min + 1e-8)\\n\",\n        \"\\n\",\n        \"  labels = (labels + 1) / 2\\n\",\n        \"  # The following code should be used according to the tensorflow official\\n\",\n        \"  # documentation:\\n\",\n        \"  # value, _ = tf.metrics.auc(labels, scores, **auc_args)\\n\",\n        \"\\n\",\n        \"  # However `tf.metrics.auc` is currently (as of July 23, 2019) buggy so we have\\n\",\n        \"  # to use the following:\\n\",\n        \"  _, value = tf.metrics.auc(labels, scores, **auc_args)\\n\",\n        \"  return value\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"nB_sczkuzHUD\"\n      },\n      \"source\": [\n        \"### Build the model\\n\",\n        \"\\n\",\n        \"We need to:\\n\",\n        \"* set up the placeholders\\n\",\n        \"* build the model\\n\",\n        \"* build the computation graphs for training and evaluation\\n\",\n        \"* build the metrics and statistics to monitor\\n\",\n        \"\\n\",\n        \"We assume the graphs are batched, if a batch contains pairs $(G_1^1, G_2^1), (G_1^2, G_2^2), ...$, then the graphs will be packed in a batch as a sequence of graphs $(G_1^1, G_2^1, G_1^2, G_2^2, ...)$.  If a batch contains triplets $(G_1^1, G_2^1, G_3^1), (G_1^2, G_2^2, G_3^2)$ then the graphs will be packed in a batch as a sequence of $(G_1^1, G_2^1, G_1^1, G_3^1, G_1^2, G_2^2, G_1^2, G_3^2), ...$.  Note that the first graph in each triplet is duplicated once to make the cross-graph attention more easily computable as it requires the graphs to appear in pairs.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"uNBL6Om3zJJb\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def reshape_and_split_tensor(tensor, n_splits):\\n\",\n        \"  \\\"\\\"\\\"Reshape and split a 2D tensor along the last dimension.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    tensor: a [num_examples, feature_dim] tensor.  num_examples must be a\\n\",\n        \"      multiple of `n_splits`.\\n\",\n        \"    n_splits: int, number of splits to split the tensor into.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    splits: a list of `n_splits` tensors.  The first split is [tensor[0],\\n\",\n        \"      tensor[n_splits], tensor[n_splits * 2], ...], the second split is\\n\",\n        \"      [tensor[1], tensor[n_splits + 1], tensor[n_splits * 2 + 1], ...], etc..\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  feature_dim = tensor.shape.as_list()[-1]\\n\",\n        \"  # feature dim must be known, otherwise you can provide that as an input\\n\",\n        \"  assert isinstance(feature_dim, int)\\n\",\n        \"  tensor = tf.reshape(tensor, [-1, feature_dim * n_splits])\\n\",\n        \"  return tf.split(tensor, n_splits, axis=-1)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def build_placeholders(node_feature_dim, edge_feature_dim):\\n\",\n        \"  \\\"\\\"\\\"Build the placeholders needed for the model.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    node_feature_dim: int.\\n\",\n        \"    edge_feature_dim: int.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    placeholders: a placeholder name -\\u003e placeholder tensor dict.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  # `n_graphs` must be specified as an integer, as `tf.dynamic_partition`\\n\",\n        \"  # requires so.\\n\",\n        \"  return {\\n\",\n        \"      'node_features': tf.placeholder(tf.float32, [None, node_feature_dim]),\\n\",\n        \"      'edge_features': tf.placeholder(tf.float32, [None, edge_feature_dim]),\\n\",\n        \"      'from_idx': tf.placeholder(tf.int32, [None]),\\n\",\n        \"      'to_idx': tf.placeholder(tf.int32, [None]),\\n\",\n        \"      'graph_idx': tf.placeholder(tf.int32, [None]),\\n\",\n        \"      # only used for pairwise training and evaluation\\n\",\n        \"      'labels': tf.placeholder(tf.int32, [None]),\\n\",\n        \"  }\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def build_model(config, node_feature_dim, edge_feature_dim):\\n\",\n        \"  \\\"\\\"\\\"Create model for training and evaluation.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    config: a dictionary of configs, like the one created by the\\n\",\n        \"      `get_default_config` function.\\n\",\n        \"    node_feature_dim: int, dimensionality of node features.\\n\",\n        \"    edge_feature_dim: int, dimensionality of edge features.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    tensors: a (potentially nested) name =\\u003e tensor dict.\\n\",\n        \"    placeholders: a (potentially nested) name =\\u003e tensor dict.\\n\",\n        \"    model: a GraphEmbeddingNet or GraphMatchingNet instance.\\n\",\n        \"\\n\",\n        \"  Raises:\\n\",\n        \"    ValueError: if the specified model or training settings are not supported.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  encoder = GraphEncoder(**config['encoder'])\\n\",\n        \"  aggregator = GraphAggregator(**config['aggregator'])\\n\",\n        \"  if config['model_type'] == 'embedding':\\n\",\n        \"    model = GraphEmbeddingNet(\\n\",\n        \"        encoder, aggregator, **config['graph_embedding_net'])\\n\",\n        \"  elif config['model_type'] == 'matching':\\n\",\n        \"    model = GraphMatchingNet(\\n\",\n        \"        encoder, aggregator, **config['graph_matching_net'])\\n\",\n        \"  else:\\n\",\n        \"    raise ValueError('Unknown model type: %s' % config['model_type'])\\n\",\n        \"\\n\",\n        \"  training_n_graphs_in_batch = config['training']['batch_size']\\n\",\n        \"  if config['training']['mode'] == 'pair':\\n\",\n        \"    training_n_graphs_in_batch *= 2\\n\",\n        \"  elif config['training']['mode'] == 'triplet':\\n\",\n        \"    training_n_graphs_in_batch *= 4\\n\",\n        \"  else:\\n\",\n        \"    raise ValueError('Unknown training mode: %s' % config['training']['mode'])\\n\",\n        \"\\n\",\n        \"  placeholders = build_placeholders(node_feature_dim, edge_feature_dim)\\n\",\n        \"\\n\",\n        \"  # training\\n\",\n        \"  model_inputs = placeholders.copy()\\n\",\n        \"  del model_inputs['labels']\\n\",\n        \"  model_inputs['n_graphs'] = training_n_graphs_in_batch\\n\",\n        \"  graph_vectors = model(**model_inputs)\\n\",\n        \"\\n\",\n        \"  if config['training']['mode'] == 'pair':\\n\",\n        \"    x, y = reshape_and_split_tensor(graph_vectors, 2)\\n\",\n        \"    loss = pairwise_loss(x, y, placeholders['labels'],\\n\",\n        \"                         loss_type=config['training']['loss'],\\n\",\n        \"                         margin=config['training']['margin'])\\n\",\n        \"\\n\",\n        \"    # optionally monitor the similarity between positive and negative pairs\\n\",\n        \"    is_pos = tf.cast(tf.equal(placeholders['labels'], 1), tf.float32)\\n\",\n        \"    is_neg = 1 - is_pos\\n\",\n        \"    n_pos = tf.reduce_sum(is_pos)\\n\",\n        \"    n_neg = tf.reduce_sum(is_neg)\\n\",\n        \"    sim = compute_similarity(config, x, y)\\n\",\n        \"    sim_pos = tf.reduce_sum(sim * is_pos) / (n_pos + 1e-8)\\n\",\n        \"    sim_neg = tf.reduce_sum(sim * is_neg) / (n_neg + 1e-8)\\n\",\n        \"  else:\\n\",\n        \"    x_1, y, x_2, z = reshape_and_split_tensor(graph_vectors, 4)\\n\",\n        \"    loss = triplet_loss(x_1, y, x_2, z,\\n\",\n        \"                        loss_type=config['training']['loss'],\\n\",\n        \"                        margin=config['training']['margin'])\\n\",\n        \"\\n\",\n        \"    sim_pos = tf.reduce_mean(compute_similarity(config, x_1, y))\\n\",\n        \"    sim_neg = tf.reduce_mean(compute_similarity(config, x_2, z))\\n\",\n        \"\\n\",\n        \"  graph_vec_scale = tf.reduce_mean(graph_vectors**2)\\n\",\n        \"  if config['training']['graph_vec_regularizer_weight'] \\u003e 0:\\n\",\n        \"    loss += (config['training']['graph_vec_regularizer_weight'] *\\n\",\n        \"             0.5 * graph_vec_scale)\\n\",\n        \"\\n\",\n        \"  # monitor scale of the parameters and gradients, these are typically helpful\\n\",\n        \"  optimizer = tf.train.AdamOptimizer(\\n\",\n        \"      learning_rate=config['training']['learning_rate'])\\n\",\n        \"  grads_and_params = optimizer.compute_gradients(loss)\\n\",\n        \"  grads, params = zip(*grads_and_params)\\n\",\n        \"  grads, _ = tf.clip_by_global_norm(grads, config['training']['clip_value'])\\n\",\n        \"  train_step = optimizer.apply_gradients(zip(grads, params))\\n\",\n        \"\\n\",\n        \"  grad_scale = tf.global_norm(grads)\\n\",\n        \"  param_scale = tf.global_norm(params)\\n\",\n        \"\\n\",\n        \"  # evaluation\\n\",\n        \"  model_inputs['n_graphs'] = config['evaluation']['batch_size'] * 2\\n\",\n        \"  eval_pairs = model(**model_inputs)\\n\",\n        \"  x, y = reshape_and_split_tensor(eval_pairs, 2)\\n\",\n        \"  similarity = compute_similarity(config, x, y)\\n\",\n        \"  pair_auc = auc(similarity, placeholders['labels'])\\n\",\n        \"\\n\",\n        \"  model_inputs['n_graphs'] = config['evaluation']['batch_size'] * 4\\n\",\n        \"  eval_triplets = model(**model_inputs)\\n\",\n        \"  x_1, y, x_2, z = reshape_and_split_tensor(eval_triplets, 4)\\n\",\n        \"  sim_1 = compute_similarity(config, x_1, y)\\n\",\n        \"  sim_2 = compute_similarity(config, x_2, z)\\n\",\n        \"  triplet_acc = tf.reduce_mean(tf.cast(sim_1 \\u003e sim_2, dtype=tf.float32))\\n\",\n        \"\\n\",\n        \"  return {\\n\",\n        \"      'train_step': train_step,\\n\",\n        \"      'metrics': {\\n\",\n        \"          'training': {\\n\",\n        \"              'loss': loss,\\n\",\n        \"              'grad_scale': grad_scale,\\n\",\n        \"              'param_scale': param_scale,\\n\",\n        \"              'graph_vec_scale': graph_vec_scale,\\n\",\n        \"              'sim_pos': sim_pos,\\n\",\n        \"              'sim_neg': sim_neg,\\n\",\n        \"              'sim_diff': sim_pos - sim_neg,\\n\",\n        \"          },\\n\",\n        \"          'validation': {\\n\",\n        \"              'pair_auc': pair_auc,\\n\",\n        \"              'triplet_acc': triplet_acc,\\n\",\n        \"          },\\n\",\n        \"      },\\n\",\n        \"  }, placeholders, model\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"09KlUpfZt-L9\"\n      },\n      \"source\": [\n        \"### The training pipeline\\n\",\n        \"\\n\",\n        \"For this we need to build the datasets, handle `feed_dict`s and run some evaluation during training.\\n\",\n        \"\\n\",\n        \"Note that this training pipeline is only supposed to be used as an example and you may want to add your own checkpointing or experiment monitoring tools (e.g. tensorboard).\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"HRGXuCBsucKH\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def build_datasets(config):\\n\",\n        \"  \\\"\\\"\\\"Build the training and evaluation datasets.\\\"\\\"\\\"\\n\",\n        \"  config = copy.deepcopy(config)\\n\",\n        \"\\n\",\n        \"  if config['data']['problem'] == 'graph_edit_distance':\\n\",\n        \"    dataset_params = config['data']['dataset_params']\\n\",\n        \"    validation_dataset_size = dataset_params['validation_dataset_size']\\n\",\n        \"    del dataset_params['validation_dataset_size']\\n\",\n        \"    training_set = GraphEditDistanceDataset(**dataset_params)\\n\",\n        \"    dataset_params['dataset_size'] = validation_dataset_size\\n\",\n        \"    validation_set = FixedGraphEditDistanceDataset(**dataset_params)\\n\",\n        \"  else:\\n\",\n        \"    raise ValueError('Unknown problem type: %s' % config['data']['problem'])\\n\",\n        \"  return training_set, validation_set\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def fill_feed_dict(placeholders, batch):\\n\",\n        \"  \\\"\\\"\\\"Create a feed dict for the given batch of data.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    placeholders: a dict of placeholders.\\n\",\n        \"    batch: a batch of data, should be either a single `GraphData` instance for\\n\",\n        \"      triplet training, or a tuple of (graphs, labels) for pairwise training.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    feed_dict: a feed_dict that can be used in a session run call.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  if isinstance(batch, GraphData):\\n\",\n        \"    graphs = batch\\n\",\n        \"    labels = None\\n\",\n        \"  else:\\n\",\n        \"    graphs, labels = batch\\n\",\n        \"\\n\",\n        \"  feed_dict = {\\n\",\n        \"      placeholders['node_features']: graphs.node_features,\\n\",\n        \"      placeholders['edge_features']: graphs.edge_features,\\n\",\n        \"      placeholders['from_idx']: graphs.from_idx,\\n\",\n        \"      placeholders['to_idx']: graphs.to_idx,\\n\",\n        \"      placeholders['graph_idx']: graphs.graph_idx,\\n\",\n        \"  }\\n\",\n        \"  if labels is not None:\\n\",\n        \"    feed_dict[placeholders['labels']] = labels\\n\",\n        \"  return feed_dict\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def evaluate(sess, eval_metrics, placeholders, validation_set, batch_size):\\n\",\n        \"  \\\"\\\"\\\"Evaluate model performance on the given validation set.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    sess: a `tf.Session` instance used to run the computation.\\n\",\n        \"    eval_metrics: a dict containing two tensors 'pair_auc' and 'triplet_acc'.\\n\",\n        \"    placeholders: a placeholder dict.\\n\",\n        \"    validation_set: a `GraphSimilarityDataset` instance, calling `pairs` and\\n\",\n        \"      `triplets` functions with `batch_size` creates iterators over a finite\\n\",\n        \"      sequence of batches to evaluate on.\\n\",\n        \"    batch_size: number of batches to use for each session run call.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    metrics: a dict of metric name =\\u003e value mapping.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  accumulated_pair_auc = []\\n\",\n        \"  for batch in validation_set.pairs(batch_size):\\n\",\n        \"    feed_dict = fill_feed_dict(placeholders, batch)\\n\",\n        \"    pair_auc = sess.run(eval_metrics['pair_auc'], feed_dict=feed_dict)\\n\",\n        \"    accumulated_pair_auc.append(pair_auc)\\n\",\n        \"\\n\",\n        \"  accumulated_triplet_acc = []\\n\",\n        \"  for batch in validation_set.triplets(batch_size):\\n\",\n        \"    feed_dict = fill_feed_dict(placeholders, batch)\\n\",\n        \"    triplet_acc = sess.run(eval_metrics['triplet_acc'], feed_dict=feed_dict)\\n\",\n        \"    accumulated_triplet_acc.append(triplet_acc)\\n\",\n        \"\\n\",\n        \"  return {\\n\",\n        \"      'pair_auc': np.mean(accumulated_pair_auc),\\n\",\n        \"      'triplet_acc': np.mean(accumulated_triplet_acc),\\n\",\n        \"  }\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"I-u2iAaBujIg\"\n      },\n      \"source\": [\n        \"### Let's run it!\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"65drio8Qu9qG\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"config = get_default_config()\\n\",\n        \"\\n\",\n        \"# Let's just run for a small number of training steps.  This may take you a few\\n\",\n        \"# minutes.\\n\",\n        \"config['training']['n_training_steps'] = 5000\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 887\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 590938,\n          \"status\": \"ok\",\n          \"timestamp\": 1563980116419,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"v7Dz1haMuh8O\",\n        \"outputId\": \"6722538e-db5a-4538-dc2c-f08108a1b983\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"iter 100, loss 0.9024, grad_scale 9.9039, param_scale 24.2281, graph_vec_scale 9.9295, sim_pos -0.5319, sim_neg -0.9309, sim_diff 0.3990, time 16.35s\\n\",\n            \"iter 200, loss 0.8899, grad_scale 10.0000, param_scale 24.2434, graph_vec_scale 15.8820, sim_pos -0.5871, sim_neg -1.1029, sim_diff 0.5158, time 8.78s\\n\",\n            \"iter 300, loss 0.9187, grad_scale 9.9720, param_scale 24.2605, graph_vec_scale 9.2189, sim_pos -0.5186, sim_neg -0.9006, sim_diff 0.3819, time 10.61s\\n\",\n            \"iter 400, loss 0.8426, grad_scale 9.9700, param_scale 24.3224, graph_vec_scale 20.1333, sim_pos -0.5781, sim_neg -1.2868, sim_diff 0.7086, time 9.40s\\n\",\n            \"iter 500, loss 0.8767, grad_scale 9.9918, param_scale 24.3770, graph_vec_scale 16.1800, sim_pos -0.6053, sim_neg -1.1185, sim_diff 0.5132, time 8.59s\\n\",\n            \"iter 600, loss 0.8756, grad_scale 10.0000, param_scale 24.4452, graph_vec_scale 10.7137, sim_pos -0.5587, sim_neg -1.0466, sim_diff 0.4879, time 8.54s\\n\",\n            \"iter 700, loss 0.8455, grad_scale 10.0000, param_scale 24.5081, graph_vec_scale 6.1303, sim_pos -0.6762, sim_neg -1.2543, sim_diff 0.5781, time 9.26s\\n\",\n            \"iter 800, loss 0.8545, grad_scale 10.0000, param_scale 24.5715, graph_vec_scale 7.7584, sim_pos -0.6751, sim_neg -1.2628, sim_diff 0.5877, time 9.35s\\n\",\n            \"iter 900, loss 0.8324, grad_scale 9.9734, param_scale 24.6531, graph_vec_scale 11.4416, sim_pos -0.6053, sim_neg -1.2179, sim_diff 0.6126, time 10.77s\\n\",\n            \"iter 1000, loss 0.8502, grad_scale 10.0000, param_scale 24.7729, graph_vec_scale 21.2052, sim_pos -0.6276, sim_neg -1.1885, sim_diff 0.5610, val/pair_auc 0.6311, val/triplet_acc 0.6560, time 23.40s\\n\",\n            \"iter 1100, loss 0.8568, grad_scale 10.0000, param_scale 24.9137, graph_vec_scale 9.9548, sim_pos -0.6038, sim_neg -1.1830, sim_diff 0.5791, time 9.38s\\n\",\n            \"iter 1200, loss 0.8258, grad_scale 10.0000, param_scale 25.0311, graph_vec_scale 9.8263, sim_pos -0.6863, sim_neg -1.2977, sim_diff 0.6114, time 10.48s\\n\",\n            \"iter 1300, loss 0.8167, grad_scale 10.0000, param_scale 25.1117, graph_vec_scale 7.9998, sim_pos -0.6577, sim_neg -1.2564, sim_diff 0.5987, time 9.64s\\n\",\n            \"iter 1400, loss 0.8393, grad_scale 10.0000, param_scale 25.2091, graph_vec_scale 9.4814, sim_pos -0.6692, sim_neg -1.2338, sim_diff 0.5645, time 9.88s\\n\",\n            \"iter 1500, loss 0.8124, grad_scale 10.0000, param_scale 25.3498, graph_vec_scale 10.8970, sim_pos -0.6629, sim_neg -1.2851, sim_diff 0.6222, time 10.24s\\n\",\n            \"iter 1600, loss 0.7997, grad_scale 10.0000, param_scale 25.5068, graph_vec_scale 8.8850, sim_pos -0.6958, sim_neg -1.3773, sim_diff 0.6816, time 10.23s\\n\",\n            \"iter 1700, loss 0.8036, grad_scale 10.0000, param_scale 25.6802, graph_vec_scale 9.1888, sim_pos -0.7241, sim_neg -1.3902, sim_diff 0.6660, time 10.28s\\n\",\n            \"iter 1800, loss 0.8282, grad_scale 9.9726, param_scale 25.8778, graph_vec_scale 16.0597, sim_pos -0.7033, sim_neg -1.3089, sim_diff 0.6056, time 10.52s\\n\",\n            \"iter 1900, loss 0.8561, grad_scale 9.9528, param_scale 26.1749, graph_vec_scale 16.8173, sim_pos -0.5827, sim_neg -1.1226, sim_diff 0.5399, time 11.16s\\n\",\n            \"iter 2000, loss 0.8543, grad_scale 10.0000, param_scale 26.4489, graph_vec_scale 9.4414, sim_pos -0.6694, sim_neg -1.1820, sim_diff 0.5126, val/pair_auc 0.6423, val/triplet_acc 0.7120, time 15.30s\\n\",\n            \"iter 2100, loss 0.8282, grad_scale 10.0000, param_scale 26.5936, graph_vec_scale 8.2912, sim_pos -0.6784, sim_neg -1.2598, sim_diff 0.5814, time 12.57s\\n\",\n            \"iter 2200, loss 0.8040, grad_scale 10.0000, param_scale 26.8179, graph_vec_scale 8.7340, sim_pos -0.7254, sim_neg -1.3695, sim_diff 0.6441, time 10.05s\\n\",\n            \"iter 2300, loss 0.8089, grad_scale 10.0000, param_scale 27.0014, graph_vec_scale 4.7856, sim_pos -0.7325, sim_neg -1.3514, sim_diff 0.6189, time 10.36s\\n\",\n            \"iter 2400, loss 0.7894, grad_scale 10.0000, param_scale 27.1475, graph_vec_scale 5.3897, sim_pos -0.7178, sim_neg -1.3501, sim_diff 0.6323, time 10.36s\\n\",\n            \"iter 2500, loss 0.8112, grad_scale 10.0000, param_scale 27.3124, graph_vec_scale 5.0839, sim_pos -0.7920, sim_neg -1.4146, sim_diff 0.6226, time 10.70s\\n\",\n            \"iter 2600, loss 0.7852, grad_scale 10.0000, param_scale 27.5082, graph_vec_scale 3.7201, sim_pos -0.7722, sim_neg -1.5174, sim_diff 0.7452, time 10.81s\\n\",\n            \"iter 2700, loss 0.7873, grad_scale 10.0000, param_scale 27.6644, graph_vec_scale 3.7121, sim_pos -0.7612, sim_neg -1.4150, sim_diff 0.6538, time 10.88s\\n\",\n            \"iter 2800, loss 0.7846, grad_scale 10.0000, param_scale 27.8754, graph_vec_scale 4.0826, sim_pos -0.7242, sim_neg -1.3944, sim_diff 0.6703, time 9.64s\\n\",\n            \"iter 2900, loss 0.7984, grad_scale 10.0000, param_scale 28.0754, graph_vec_scale 3.3628, sim_pos -0.7275, sim_neg -1.3811, sim_diff 0.6536, time 10.04s\\n\",\n            \"iter 3000, loss 0.8040, grad_scale 10.0000, param_scale 28.2285, graph_vec_scale 4.7665, sim_pos -0.8204, sim_neg -1.4319, sim_diff 0.6115, val/pair_auc 0.6521, val/triplet_acc 0.7020, time 14.91s\\n\",\n            \"iter 3100, loss 0.7661, grad_scale 10.0000, param_scale 28.4321, graph_vec_scale 4.5367, sim_pos -0.7861, sim_neg -1.5052, sim_diff 0.7192, time 12.70s\\n\",\n            \"iter 3200, loss 0.7918, grad_scale 10.0000, param_scale 28.6223, graph_vec_scale 2.7951, sim_pos -0.7894, sim_neg -1.4368, sim_diff 0.6474, time 10.14s\\n\",\n            \"iter 3300, loss 0.7888, grad_scale 10.0000, param_scale 28.7832, graph_vec_scale 2.5365, sim_pos -0.7737, sim_neg -1.4076, sim_diff 0.6339, time 11.14s\\n\",\n            \"iter 3400, loss 0.7880, grad_scale 10.0000, param_scale 28.9723, graph_vec_scale 2.5840, sim_pos -0.8405, sim_neg -1.4963, sim_diff 0.6558, time 10.99s\\n\",\n            \"iter 3500, loss 0.8063, grad_scale 10.0000, param_scale 29.1109, graph_vec_scale 1.5241, sim_pos -0.7049, sim_neg -1.3258, sim_diff 0.6209, time 10.09s\\n\",\n            \"iter 3600, loss 0.7781, grad_scale 10.0000, param_scale 29.2500, graph_vec_scale 1.6339, sim_pos -0.8011, sim_neg -1.5460, sim_diff 0.7448, time 10.25s\\n\",\n            \"iter 3700, loss 0.7626, grad_scale 10.0000, param_scale 29.3812, graph_vec_scale 2.0334, sim_pos -0.7765, sim_neg -1.5622, sim_diff 0.7857, time 11.35s\\n\",\n            \"iter 3800, loss 0.7545, grad_scale 10.0000, param_scale 29.5007, graph_vec_scale 1.9816, sim_pos -0.7494, sim_neg -1.5253, sim_diff 0.7759, time 10.50s\\n\",\n            \"iter 3900, loss 0.7786, grad_scale 10.0000, param_scale 29.6472, graph_vec_scale 2.2622, sim_pos -0.8190, sim_neg -1.5184, sim_diff 0.6994, time 10.94s\\n\",\n            \"iter 4000, loss 0.7696, grad_scale 10.0000, param_scale 29.7945, graph_vec_scale 1.9066, sim_pos -0.7080, sim_neg -1.4729, sim_diff 0.7649, val/pair_auc 0.6588, val/triplet_acc 0.7110, time 15.44s\\n\",\n            \"iter 4100, loss 0.7702, grad_scale 10.0000, param_scale 29.9186, graph_vec_scale 1.6492, sim_pos -0.7923, sim_neg -1.5920, sim_diff 0.7998, time 11.56s\\n\",\n            \"iter 4200, loss 0.7618, grad_scale 10.0000, param_scale 30.0597, graph_vec_scale 1.3295, sim_pos -0.8183, sim_neg -1.5480, sim_diff 0.7297, time 12.56s\\n\",\n            \"iter 4300, loss 0.7595, grad_scale 10.0000, param_scale 30.2331, graph_vec_scale 2.0479, sim_pos -0.8513, sim_neg -1.5582, sim_diff 0.7069, time 9.82s\\n\",\n            \"iter 4400, loss 0.7722, grad_scale 10.0000, param_scale 30.3986, graph_vec_scale 1.1744, sim_pos -0.7996, sim_neg -1.4669, sim_diff 0.6674, time 10.90s\\n\",\n            \"iter 4500, loss 0.7850, grad_scale 10.0000, param_scale 30.5059, graph_vec_scale 1.7279, sim_pos -0.8477, sim_neg -1.5368, sim_diff 0.6891, time 11.18s\\n\",\n            \"iter 4600, loss 0.7562, grad_scale 10.0000, param_scale 30.6486, graph_vec_scale 1.4266, sim_pos -0.7782, sim_neg -1.5346, sim_diff 0.7564, time 10.92s\\n\",\n            \"iter 4700, loss 0.7843, grad_scale 10.0000, param_scale 30.8270, graph_vec_scale 2.1109, sim_pos -0.7923, sim_neg -1.4582, sim_diff 0.6660, time 11.00s\\n\",\n            \"iter 4800, loss 0.7712, grad_scale 10.0000, param_scale 30.9745, graph_vec_scale 1.9060, sim_pos -0.8056, sim_neg -1.4885, sim_diff 0.6830, time 11.01s\\n\",\n            \"iter 4900, loss 0.7894, grad_scale 10.0000, param_scale 31.1943, graph_vec_scale 1.5744, sim_pos -0.7436, sim_neg -1.3567, sim_diff 0.6131, time 10.39s\\n\",\n            \"iter 5000, loss 0.7866, grad_scale 10.0000, param_scale 31.4067, graph_vec_scale 1.4950, sim_pos -0.7812, sim_neg -1.4002, sim_diff 0.6190, val/pair_auc 0.6675, val/triplet_acc 0.7490, time 15.01s\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"# Run this if you want to run the code again, otherwise tensorflow would\\n\",\n        \"# complain that you already created the same graph and the same variables.\\n\",\n        \"tf.reset_default_graph()\\n\",\n        \"\\n\",\n        \"# Set random seeds\\n\",\n        \"seed = config['seed']\\n\",\n        \"random.seed(seed)\\n\",\n        \"np.random.seed(seed + 1)\\n\",\n        \"tf.set_random_seed(seed + 2)\\n\",\n        \"\\n\",\n        \"training_set, validation_set = build_datasets(config)\\n\",\n        \"\\n\",\n        \"if config['training']['mode'] == 'pair':\\n\",\n        \"  training_data_iter = training_set.pairs(config['training']['batch_size'])\\n\",\n        \"  first_batch_graphs, _ = next(training_data_iter)\\n\",\n        \"else:\\n\",\n        \"  training_data_iter = training_set.triplets(config['training']['batch_size'])\\n\",\n        \"  first_batch_graphs = next(training_data_iter)\\n\",\n        \"\\n\",\n        \"node_feature_dim = first_batch_graphs.node_features.shape[-1]\\n\",\n        \"edge_feature_dim = first_batch_graphs.edge_features.shape[-1]\\n\",\n        \"\\n\",\n        \"tensors, placeholders, model = build_model(\\n\",\n        \"    config, node_feature_dim, edge_feature_dim)\\n\",\n        \"\\n\",\n        \"accumulated_metrics = collections.defaultdict(list)\\n\",\n        \"\\n\",\n        \"t_start = time.time()\\n\",\n        \"\\n\",\n        \"init_ops = (tf.global_variables_initializer(),\\n\",\n        \"            tf.local_variables_initializer())\\n\",\n        \"\\n\",\n        \"# If we already have a session instance, close it and start a new one\\n\",\n        \"if 'sess' in globals():\\n\",\n        \"  sess.close()\\n\",\n        \"\\n\",\n        \"# We will need to keep this session instance around for e.g. visualization.\\n\",\n        \"# But you should probably wrap it in a `with tf.Session() sess:` context if you\\n\",\n        \"# want to use the code elsewhere.\\n\",\n        \"sess = tf.Session()\\n\",\n        \"sess.run(init_ops)\\n\",\n        \"\\n\",\n        \"# use xrange here if you are still on python 2\\n\",\n        \"for i_iter in range(config['training']['n_training_steps']):\\n\",\n        \"  batch = next(training_data_iter)\\n\",\n        \"  _, train_metrics = sess.run(\\n\",\n        \"      [tensors['train_step'], tensors['metrics']['training']],\\n\",\n        \"      feed_dict=fill_feed_dict(placeholders, batch))\\n\",\n        \"\\n\",\n        \"  # accumulate over minibatches to reduce variance in the training metrics\\n\",\n        \"  for k, v in train_metrics.items():\\n\",\n        \"    accumulated_metrics[k].append(v)\\n\",\n        \"\\n\",\n        \"  if (i_iter + 1) % config['training']['print_after'] == 0:\\n\",\n        \"    metrics_to_print = {\\n\",\n        \"        k: np.mean(v) for k, v in accumulated_metrics.items()}\\n\",\n        \"    info_str = ', '.join(\\n\",\n        \"        ['%s %.4f' % (k, v) for k, v in metrics_to_print.items()])\\n\",\n        \"    # reset the metrics\\n\",\n        \"    accumulated_metrics = collections.defaultdict(list)\\n\",\n        \"\\n\",\n        \"    if ((i_iter + 1) // config['training']['print_after'] %\\n\",\n        \"        config['training']['eval_after'] == 0):\\n\",\n        \"      eval_metrics = evaluate(\\n\",\n        \"          sess, tensors['metrics']['validation'], placeholders,\\n\",\n        \"          validation_set, config['evaluation']['batch_size'])\\n\",\n        \"      info_str += ', ' + ', '.join(\\n\",\n        \"          ['%s %.4f' % ('val/' + k, v) for k, v in eval_metrics.items()])\\n\",\n        \"\\n\",\n        \"    print('iter %d, %s, time %.2fs' % (\\n\",\n        \"        i_iter + 1, info_str, time.time() - t_start))\\n\",\n        \"    t_start = time.time()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"EDHrQOOYzH2t\"\n      },\n      \"source\": [\n        \"Note that albeit a bit noisy, the loss is going down, the similarity gap \\n\",\n        \"between positive and negative pairs are growing and the evaluation results, i.e. pair AUC and triplet accuracies are going up as well.  Overall training seems to be working!\\n\",\n        \"\\n\",\n        \"You can train this much longer.  We observed improvement in performance even after training for 500,000 steps, but didn't push this much further as it is a synthetic task after all.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"NqaY9In2zKUT\"\n      },\n      \"source\": [\n        \"## Test the model and create some visualizations\\n\",\n        \"\\n\",\n        \"Once the model is trained, we can test in on unseen data.  Our graph matching networks use cross-graph matching-based attention to compute graph similarity, we can visualize these attention weights to see where the model is attending to.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"E5XrWBLbzJxh\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# visualize on graphs of 10 nodes, bigger graphs become more difficult to\\n\",\n        \"# visualize\\n\",\n        \"vis_dataset = GraphEditDistanceDataset(\\n\",\n        \"    [10, 10], [0.2, 0.2], 1, 2, permute=False)\\n\",\n        \"\\n\",\n        \"pair_iter = vis_dataset.pairs(2)\\n\",\n        \"graphs, labels = next(pair_iter)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"Wew5G3SZ1XbB\"\n      },\n      \"source\": [\n        \"Let's split the batched graphs into individual graphs and visualize them first.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"LR2enkt21Git\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def split_graphs(graphs):\\n\",\n        \"  \\\"\\\"\\\"Split a batch of graphs into individual `nx.Graph` instances.\\\"\\\"\\\"\\n\",\n        \"  g = [nx.Graph() for _ in range(graphs.n_graphs)]\\n\",\n        \"  node_ids = np.arange(graphs.graph_idx.size, dtype=np.int32)\\n\",\n        \"  for i in range(graphs.n_graphs):\\n\",\n        \"    nodes_in_graph = node_ids[graphs.graph_idx == i]\\n\",\n        \"    n_nodes = len(nodes_in_graph)\\n\",\n        \"    g[i].add_nodes_from(range(n_nodes))\\n\",\n        \"    node_id_min = nodes_in_graph.min()\\n\",\n        \"    node_id_max = nodes_in_graph.max()\\n\",\n        \"\\n\",\n        \"    edges = []\\n\",\n        \"    for u, v in zip(graphs.from_idx, graphs.to_idx):\\n\",\n        \"      if node_id_min \\u003c= u \\u003c= node_id_max and node_id_min \\u003c= v \\u003c= node_id_max:\\n\",\n        \"        edges.append((u - node_id_min, v - node_id_min))\\n\",\n        \"    g[i].add_edges_from(edges)\\n\",\n        \"  \\n\",\n        \"  return g\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 655\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 1098,\n          \"status\": \"ok\",\n          \"timestamp\": 1563980161995,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"DVY20guU09L2\",\n        \"outputId\": \"eb1488b2-0d57-49d6-a22b-8304a49ccf1b\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1000x500 with 2 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        },\n        {\n          \"data\": {\n            \"image/png\": \"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\\neAKobvLYO8AhYE/zz7j7bvj5Z3jgASuTisMtXbqUa9eusXPnTu2Fke6h+iVecujQIZ5//nm++eYb\\nnx9i64yLnb1Nfn6LD98Agpo9FgT8X0svNoxWP0ek0YYNG/jpp5/IysqyO4r0FKpf4iWRkZEkJSUx\\ne/Zsamtr7Y7TJjVbvqii4g+/CgHuAf7e7LG/AwNa+ozqajh5svuzSY9y99138/HHH5OZmcnXX39t\\ndxzpCVS/xIuSk5MZPnw4K1eutDtKm7Tz0Be1cKNWMPc51APngZB/PPYdzTbHN3X9encnkx5oxIgR\\nbN26lYSEBI4fP/6vG/dWVpqrCxUV5t9kUBBMmAALF+ryjrRO9Uu8yDAM8vLyCA8PZ9u2bcybN898\\nwsfql5otXxTUfLHdFADEAv8B5GCe5vkU8zRPi+6914Jw0hNFRUWxZMkS4uPj+ertt/HLzIR9+8wn\\nm65SFBXBmjXw7LMaoistU/0SLwsMDGTXrl1MmTKFSX37MnrXLp+rX7qM6IsmTDA3iLZgM+YG08GY\\nx6izaeWXocsFuleYeCA1NZXnr1/H/dRT5kmympo/Xg6qrjYfKy42j/ZnZ9uSVXyY6pfYIDQ0lM+m\\nT2f43Lk0+GD90mlEX9TKaR6P6DSPeCo7m4akJIzq6vZf20hDdKU51S+xQwtDdNvlxfqllS1fNHiw\\nuczZ2aP4hgHTpqlQSceVlUFy8h2NVi3mtO8RmJuYHwH2NX/fzZtmgTt+3FtJxdepfom3/aN+NW20\\nfK1+qdnyVSkp5lJ6Z7hc5vtFOmr9enOJvYl6YDjmHKT/BdYC8cCPzd9bXW2+X6SR6pd4kwPqly4j\\n+jIfXxaVHsKDyz4TgDVAXPMndNlHmlP9Em9wSP3SypYvW7bMLDz+/u0vyRuGCpV0TgeHR14BztHK\\nhmYNoZTmVL/EGxxSv9Rs+bply8ybSsfEmN1386V5l8t8PCbGfJ0KlXiqlSGUTd0CEoH5wNiWXqAh\\nlNIS1S+xmkPql+ZsOUFYmHlT6atXze775Elz4N+995rHoxcs0OUb6bxWhlA2cmPeMLg/sLGtF2oI\\npbRE9Uus5JD6pWbLSR54AP78Z7tTSE/TyhBKgAbMEz1XgL1Av7Y+R0MopS2qX2IFh9QvXUYU6e3a\\nGEK5DPgB2AO0ebZMQyhFxA4OqV86jSjS27VymucnYCRwF3cugb+Huf/hDjqNKCJ2cEj90sqWSG/X\\nyhDKEZjL8DXAjSb//aFQaQiliNjFIfVLK1siYk5gnjzZs5lIjfz9zZNkYWHdHktEpF0OqF9a2RIR\\nCA//10wkTzTORlKjJSJ2cUD90mlEETE1zjhKTjbnzrS16G0Y5qZSDaEUEV/g4/VLlxFF5E7Hj5v3\\nCtu71yxKTe855nKZRWzaNPP+dVrREhFf4qP1S82WiLRMQyhFxKl8rH6p2RIRERGxkDbIi4iIiFhI\\nzZaIiIiIhdRsiYiIiFhIzZaIiIiIhdRsiYiIiFhIzZaIiIiIhdRsiYiIiFhIzZaIiIiIhdRsiYiI\\niFhIzZaIiIiIhdRsiYiIiFhIzZaIiIiIhdRsiYiIiFhIzZaIiIiIhdRsiYiIiFhIzZaIiIiIhdRs\\niYiIiFhIzZaIiIiIhdRsiYiIiFhIzZaIiIiIhdRsiYiIiFhIzZaIiIiIhdRsiYiIiFhIzZaIiIiI\\nhdRsiYiIiFhIzZaIiIiIhdRsiYiIiFhIzZaIiIiIhdRsiYiIiFhIzZaIiIiIhf4fJM6jdZ/uXMAA\\nAAAASUVORK5CYII=\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1000x500 with 2 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"nx_graphs = split_graphs(graphs)\\n\",\n        \"\\n\",\n        \"for i in range(0, len(nx_graphs), 2):\\n\",\n        \"  label = labels[i // 2]\\n\",\n        \"  g1 = nx_graphs[i]\\n\",\n        \"  g2 = nx_graphs[i + 1]\\n\",\n        \"  plt.figure(figsize=(10, 5))\\n\",\n        \"  ax = plt.subplot(121)\\n\",\n        \"  # Compute the positions of graphs first to make sure the visualizations are\\n\",\n        \"  # consistent.\\n\",\n        \"  pos = nx.drawing.spring_layout(g1)\\n\",\n        \"  nx.draw_networkx(g1, pos=pos, ax=ax)\\n\",\n        \"  ax.set_title('Graph 1')\\n\",\n        \"  ax.axis('off')\\n\",\n        \"  ax = plt.subplot(122)\\n\",\n        \"  nx.draw_networkx(g2, pos=pos, ax=ax)\\n\",\n        \"  ax.set_title('Graph 2')\\n\",\n        \"  ax.axis('off')\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"HBkh_OpCHkm8\"\n      },\n      \"source\": [\n        \"Build the computation graph for visualization.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"0YerKIp32Vro\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"n_graphs = graphs.n_graphs\\n\",\n        \"\\n\",\n        \"model_inputs = placeholders.copy()\\n\",\n        \"del model_inputs['labels']\\n\",\n        \"graph_vectors = model(n_graphs=n_graphs, **model_inputs)\\n\",\n        \"x, y = reshape_and_split_tensor(graph_vectors, 2)\\n\",\n        \"similarity = compute_similarity(config, x, y)\\n\",\n        \"\\n\",\n        \"layer_outputs = model.get_layer_outputs()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"Z7dHo4PPF5JH\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def build_matchings(layer_outputs, graph_idx, n_graphs, sim):\\n\",\n        \"  \\\"\\\"\\\"Build the matching attention matrices from layer outputs.\\\"\\\"\\\"\\n\",\n        \"  assert n_graphs % 2 == 0\\n\",\n        \"  attention = []\\n\",\n        \"  for h in layer_outputs:\\n\",\n        \"    partitions = tf.dynamic_partition(h, graph_idx, n_graphs)\\n\",\n        \"    attention_in_layer = []\\n\",\n        \"    for i in range(0, n_graphs, 2):\\n\",\n        \"      x = partitions[i]\\n\",\n        \"      y = partitions[i + 1]\\n\",\n        \"      a = sim(x, y)\\n\",\n        \"      a_x = tf.nn.softmax(a, axis=1)  # i-\\u003ej\\n\",\n        \"      a_y = tf.nn.softmax(a, axis=0)  # j-\\u003ei\\n\",\n        \"      attention_in_layer.append((a_x, a_y))\\n\",\n        \"    attention.append(attention_in_layer)\\n\",\n        \"  return attention\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"34lrRLif9ZOB\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"attentions = build_matchings(\\n\",\n        \"    layer_outputs, placeholders['graph_idx'], n_graphs,\\n\",\n        \"    get_pairwise_similarity(config['graph_matching_net']['similarity']))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"sMi3nrclIHVp\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"sim, a = sess.run([similarity, attentions],\\n\",\n        \"                  feed_dict=fill_feed_dict(placeholders, (graphs, labels)))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 51\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 294,\n          \"status\": \"ok\",\n          \"timestamp\": 1563980171214,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"xfFEeS2PIUKx\",\n        \"outputId\": \"a5bdec40-62e6-441e-f33e-110cc3d3996c\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[ 1 -1]\\n\",\n            \"[-0.19060427 -2.23995686]\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"print(labels)\\n\",\n        \"print(sim)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"giI_5IW9IgOG\"\n      },\n      \"source\": [\n        \"Similarity for positive pair is much higher than the similarity for the negative pair.\\n\",\n        \"\\n\",\n        \"Remember that with a margin loss and Euclidean distance, which is how this model is trained, the similarity value is the negative distance.  In this case the distance for positive pair is quite small, while the distance between two graphs in the negative pair is large.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"w-Vq-vIDI6P7\"\n      },\n      \"source\": [\n        \"### Some tools for visualizing attention\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"VzgCXZlxIqRp\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def _plot_graph_matching_on_axis(ax, g_base, pos, att, title=None):\\n\",\n        \"  \\\"\\\"\\\"Plot graph matching on an axis.\\\"\\\"\\\"\\n\",\n        \"  original_edges = g_base.edges()\\n\",\n        \"  g = g_base.copy()\\n\",\n        \"  n1, n2 = att.shape\\n\",\n        \"  alpha = []\\n\",\n        \"  att_edges = []\\n\",\n        \"  for i in range(n1):\\n\",\n        \"    for j in range(n2):\\n\",\n        \"      g.add_edge(i, j + n1)\\n\",\n        \"      att_edges.append((i, j + n1))\\n\",\n        \"      alpha.append(att[i][j])\\n\",\n        \"\\n\",\n        \"  nx.draw_networkx_nodes(\\n\",\n        \"      g, pos, nodelist=range(n1), node_color='lavender', linewidths=3, ax=ax)\\n\",\n        \"  nx.draw_networkx_nodes(\\n\",\n        \"      g, pos, nodelist=range(n1, n1 + n2), node_color='wheat', linewidths=3,\\n\",\n        \"      ax=ax)\\n\",\n        \"  nx.draw_networkx_edges(\\n\",\n        \"      g, pos, edgelist=original_edges, edge_color='k', width=3, ax=ax)\\n\",\n        \"  for i in range(len(att_edges)):\\n\",\n        \"    nx.draw_networkx_edges(\\n\",\n        \"        g, pos, edgelist=att_edges[i:i+1], edge_color='g', alpha=alpha[i],\\n\",\n        \"        ax=ax, width=3)\\n\",\n        \"  ax.axis('off')\\n\",\n        \"  if title:\\n\",\n        \"    ax.set_title(title)\\n\",\n        \"\\n\",\n        \"  # set xlim and ylim\\n\",\n        \"  coords = np.array(list(pos.values()), dtype=np.float32)\\n\",\n        \"  x_min, y_min = coords.min(axis=0)\\n\",\n        \"  x_max, y_max = coords.max(axis=0)\\n\",\n        \"  x_len = x_max - x_min\\n\",\n        \"  y_len = y_max - y_min\\n\",\n        \"  ax.set_xlim([x_min - x_len * 0.05, x_max + x_len * 0.05])\\n\",\n        \"  ax.set_ylim([y_min - y_len * 0.05, y_max + y_len * 0.05])\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def plot_graph_matching_pair(g1, g2, matchings, pos=None, seed=0):\\n\",\n        \"  \\\"\\\"\\\"Plot a pair of graphs and the matchings between them.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    g1: a networkx graph.\\n\",\n        \"    g2: a networkx graph.\\n\",\n        \"    matchings: a pair of n1 x n2 matrices.\\n\",\n        \"    pos: a position dictionary, if provided.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    pos: position dictionary, used for other plots between these two graphs.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  n1 = g1.number_of_nodes()\\n\",\n        \"  n2 = g2.number_of_nodes()\\n\",\n        \"  assert n1 \\u003e= n2\\n\",\n        \"\\n\",\n        \"  if pos is None:\\n\",\n        \"    with reset_random_state(seed=seed):\\n\",\n        \"      pos1 = nx.spring_layout(g1)\\n\",\n        \"    pos1_values = np.array(list(pos1.values()), dtype=np.float32)\\n\",\n        \"    pos1_values -= pos1_values.mean(axis=0, keepdims=True)\\n\",\n        \"    pos2_values = pos1_values[n1-n2:] + np.array([\\n\",\n        \"        pos1_values[n1-n2:, 0].max(axis=0) * 2 -\\n\",\n        \"        pos1_values[n1-n2:, 0].min(axis=0), 0])\\n\",\n        \"\\n\",\n        \"    pos = {k: pos1_values[k] for k in pos1.keys()}\\n\",\n        \"    pos.update({(k + n2): pos2_values[k-(n1-n2)]\\n\",\n        \"                for k in list(pos1.keys())[n1-n2:]})\\n\",\n        \"\\n\",\n        \"  g_base = nx.Graph()\\n\",\n        \"  g_base.add_nodes_from(range(n1))\\n\",\n        \"  g_base.add_nodes_from(range(n1, n1 + n2))\\n\",\n        \"  g_base.add_edges_from(g1.edges())\\n\",\n        \"  g_base.add_edges_from([(i + n1, j + n1) for i, j in g2.edges()])\\n\",\n        \"\\n\",\n        \"  fig, ax = plt.subplots(1, 2, figsize=(11.2, 4.8))\\n\",\n        \"  _plot_graph_matching_on_axis(\\n\",\n        \"      ax[0], g_base, pos, matchings[0], title='left attend to right')\\n\",\n        \"  _plot_graph_matching_on_axis(\\n\",\n        \"      ax[1], g_base, pos, matchings[1], title='right attend to left')\\n\",\n        \"  fig.tight_layout(pad=0, h_pad=0, w_pad=0)\\n\",\n        \"  return pos\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"fZqWAwX_O3_z\"\n      },\n      \"source\": [\n        \"### Visualize how the attention pattern changes across layers\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 1000\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 9203,\n          \"status\": \"ok\",\n          \"timestamp\": 1563980184546,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"jrbvym39JcTw\",\n        \"outputId\": \"ad8d30a2-1efd-4986-9681-bb84f6b2f758\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"image/png\": \"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\\n61vx0Y9+VD7GMAzceuutMAwDz3/+8+F5Hu655x4URYG///u/x9vf/na4rosnPOEJuOmmm/b83gDw\\nd3/3d/jd3/1dXHfddfA8D+985zvx0Y9+dNf4+/Wvfx1ra2u49dZbYZomrrvuOrzmNa+pHTdBHAb9\\nuA+AIPbLfffdhxe96EVQ1e18XNM0PPLII7jqqqv2/XphGOJNb3oTPve5z6HX6wEARqMRiqKApml7\\nPqYPf/jD+Iu/+Av5tTRNa23y06dPy383Gg35vQsXLuBnf/Zn5ffOnTu3r+O/cOHC1HPOnTuHhx56\\naO5zrrnmmh1fr/r9WY+d91kIgiAWneO8/t199914y1vegu985ztI0xRJkuClL33pnp+/traGMAxr\\nMYMxhqIo5H8vLS1B17dv7xqNBsbjMdbW1pDnee0zHTbenDt3Dnme7xp/77vvPly4cEHK5gCgKAr8\\nwi/8wr7enyDmQR0a4sRxzTXX4LOf/Sz6/b78vziO515MFUXZ8fVuv/123HPPPbj77rsxHA7xz//8\\nzwB4kNjL88Ux3XLLLbVjCsMQN954467PPXPmDB544AH53/fff/+Oj588nrNnz+K+++6rfe3+++/f\\nMbjs9JnOnDkjZ4gA1I5tN/bysyIIgjhOjvP692u/9mt44QtfiAceeACDwQA333zzjrFm8mvLy8tw\\nHAff/e53ZawZDAYYj8e7vvfKygp0Xd9zvJl1PJPx5v7774eu61hdXd3xva+55hqcP3++FiNHoxE+\\n85nP7Pm9CWInKKEhThw333wzbrnlFnlRXVtbwz/8wz/Mffzq6ip+8IMfzP3+aDSC4zhot9vY3NzE\\n2972tl2fP/m117zmNfirv/or3H333WCMIQgC3HXXXRiNRrt+npe97GW488478b3vfQ9hGE69/26f\\n5/nPfz6+//3v4yMf+QjyPMfHPvYxfO9738MNN9yw63vPO553vvOd6PV6eOihh/C+971vz89dXV3F\\nxsbGnodECYIgFolLff0bjUbodruwbRtf+9rX8JGPfER+b2VlBaqq1q7vq6urePDBB5GmKQBAVVW8\\n5jWvwZve9CZcvHgRAPDQQw/h85///K7Hp2kafvVXfxW33XYbwjDE9773PXz4wx+e+/hZx3PjjTfi\\nve99L374wx9iPB7jrW99K17+8pfXOkKzuP7669FsNvGud70LURShKAp85zvfwde//vWZj6dYQuwX\\n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\\nbQyJAAAAAElFTkSuQmCC\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1120x480 with 2 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        },\n        {\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAzQAAAFpCAYAAABK/W13AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsvXmQbVdZ//1da+3x7DN23743CYk3\\nN0HFYoioBF5QpPhRllABCxljiRELJGVRDBaWSMpUQBRB8lKlvKIVkOD7SgEvFj8LwlD4K3ACAsUr\\nMvkLGjDTjaRvD2fc817vH6vXOnufoft03763T988H8sit88+e+9zuvd61jN9HyallCAIgiAIgiAI\\ngjiG8KO+AYIgCIIgCIIgiINCDg1BEARBEARBEMcWcmgIgiAIgiAIgji2kENDEARBEARBEMSxhRwa\\ngiAIgiAIgiCOLeTQEARBEARBEARxbCGHhjgWXH311fj7v//7hY79xCc+gauuugr1eh3/+q//eoHv\\n7MLAGMN//ud/XrTrPf7xj8cXv/jFhY7dz++CIAhi2Xk0r3933nknfvZnf/aCnPuLX/wirrzyyoWO\\nlVLila98JTqdDq6//voLcj/EpQ05NMQlx5ve9Ca8973vxWAwwJOf/OTzNkDPetaz8P73v7/ys4vt\\ncOx1P+fLd77zHTzrWc867/Psx4ARBEEsA8uy/v3Xf/0XGGPIssz87EI6HAe5nwvFP//zP+Pzn/88\\nHnzwQXz1q18lW0LsG3JoiEuO++67D49//OOP+jaOBRfDUBEEQSwjtP4tD/fddx+uvvpqBEFw1LdC\\nHFPIoSGOHUVR4I//+I9x7bXXYnV1FS996UuxubmJOI5Rr9eR5zmuu+46XHvttXjFK16B+++/H89/\\n/vNRr9fxrne9a+p8W1tbuOGGG7C2toZOp4MbbrgBDz74IADglltuwT/90z/hta99Ler1Ol772tfi\\nmc98JgDguuuuQ71ex0c/+lEAwKc+9Sn85E/+JNrtNp7+9Kfjm9/8prnG1VdfjXe/+9140pOehFar\\nhZe97GWIosi8/id/8ie4/PLLccUVV+Cv/uqv5n72WfcDAF/60pfwlKc8Ba1WC095ylPwpS99ae45\\nrr76arzzne/Ek570JARBgCzLKlmsMAxx0003odPp4Cd+4ifwrne9aypS9o1vfGPqswyHQzz3uc/F\\n2bNnUa/XUa/Xcfbs2V1/lwRBEBeTo17/7rrrLjz5yU9Gs9nEVVddhdtuu828pm1Lu91GvV7Hl7/8\\nZdx888348pe/jHq9jna7DQCI4xhvetOb8CM/8iM4deoUbr75ZoRhCGCcJbr99ttx8uRJXH755fjg\\nBz9orrGxsYEXvOAFaDabuP7663HvvffO/a5m3U9RFHj729+O06dP4+TJk/i1X/s1dLvdhb77s2fP\\n4kUvehHW1tZw5swZ/Omf/ikA4AMf+ABe9apXmc/5O7/zO2RLiP0jCeIYcPr0afn5z39eSinle97z\\nHvnUpz5VPvDAAzKKIvmbv/mb8uUvf7k5FoD8j//4j5nvncW5c+fkxz/+cTkcDmWv15MvfvGL5S/9\\n0i+Z13/+539e3nHHHZX3TF7j61//ulxbW5Nf+cpXZJZl8s4775SnT5+WURSZe3jKU54iH3roIbmx\\nsSEf97jHyfe9731SSik/85nPyJMnT8pvfetbcjAYyBtvvHHq/GUm72djY0O2223513/91zJNU/nh\\nD39Yttttee7cubnf5XXXXSfvv/9+ORqNpr6j3/3d35XPfOYz5ebmpnzggQfkE5/4RPmYxzym8v55\\nn+ULX/hC5ViCIIhl4qjXvy984Qvym9/8pszzXP7bv/2bPHnypPzEJz4hpZTyBz/4gQQg0zQ1x3/w\\ngx+Uz3jGMyrneP3rXy+f//zny42NDdnr9eQNN9wg3/zmN5vzCyHk7//+78skSeRdd90lfd+Xm5ub\\nUkopX/ayl8mXvOQlcjAYyG9961vyiiuumDq/Ztb9fOADH5DXXnutvPfee2W/35cvfOEL5a/+6q/O\\n/az6+8jzXP7UT/2UfOtb3yrjOJb33nuvPHPmjPzsZz8783OSLSH2C2VoiGPHX/7lX+IP//APceWV\\nV8J1Xdx22234+Mc/fuDygdXVVbzoRS9CrVZDo9HALbfcgn/4h3/Y1znuuOMOvOY1r8FTn/pUCCFw\\n0003wXVdfOUrXzHHvO51r8MVV1yBlZUVPP/5z8c3vvENAMDHPvYxvPKVr8QTnvAEBEFQidgtwl13\\n3YUf/dEfxSte8QpYloUbb7wRj3vc4/DJT35y7nte97rX4aqrroLv+1OvfexjH8Nb3vIWdDodXHnl\\nlXjd61438/2zPgtBEMSyc5Tr37Oe9Sw88YlPBOccT3rSk3DjjTfuy95IKXHHHXfgPe95D1ZWVtBo\\nNPCWt7wFH/nIR8wxtm3j1ltvhW3beN7znod6vY577rkHeZ7jb//2b/G2t70NQRDgCU94Am666aaF\\nrw0Af/M3f4Pf/u3fxjXXXIN6vY53vOMd+MhHPrKn/f3a176G9fV13HrrrXAcB9dccw1e/epXV+6b\\nIM4H66hvgCD2y3333YcXvvCF4Hzsjwsh8MMf/hCPecxj9n2+0WiEN77xjfjsZz+Lra0tAEC/30ee\\n5xBCLHxPH/rQh/Bnf/Zn5mdJklTS5Jdddpn571qtZl47e/Ysfvqnf9q8dvr06X3d/9mzZ6fec/r0\\naTz00ENz33PVVVfter7y67OOnfdZCIIglp2jXP/uvvtuvPnNb8a3v/1tJEmCOI7xkpe8ZOH3r6+v\\nYzQaVWyGlBJ5npt/r66uwrLG27tarYbBYID19XVkWVb5TOdrb06fPo0sy/a0v/fddx/Onj1ryuYA\\nIM9z/NzP/dy+rk8Q86AMDXHsuOqqq/CZz3wG29vb5v+jKJq7mDLGdj3f7bffjnvuuQd33303er0e\\n/vEf/xGAMhKLvF/f0y233FK5p9FohBtvvHHP915++eV44IEHzL/vv//+XY+fvJ8rrrgC9913X+Vn\\n999//67GZbfPdPnll5seIgCVe9uLRb4rgiCIo+Qo179f+ZVfwQte8AI88MAD6Ha7uPnmm3e1NZM/\\nO3HiBHzfx3e+8x1ja7rdLgaDwZ7XXltbg2VZC9ubWfczaW/uv/9+WJaFU6dO7Xrtq666CmfOnKnY\\nyH6/j09/+tMLX5sgdoMcGuLYcfPNN+OWW24xi+r6+jr+7u/+bu7xp06dwve///25r/f7ffi+j3a7\\njc3NTbz1rW/d8/2TP3v1q1+Nv/iLv8Ddd98NKSWGwyHuuusu9Pv9PT/PS1/6Utx555347ne/i9Fo\\nNHX9vT7P8573PHzve9/Dhz/8YWRZho9+9KP47ne/ixtuuGHPa8+7n3e84x3Y2trCQw89hPe+970L\\nv/fUqVPY2NhYuEmUIAhimbjQ61+/38fKygo8z8NXv/pVfPjDHzavra2tgXNeWd9PnTqFBx98EEmS\\nAAA453j1q1+NN77xjXjkkUcAAA899BA+97nP7Xl/Qgj88i//Mm677TaMRiN897vfxYc+9KG5x8+6\\nnxtvvBHvec978IMf/ACDwQBvectb8LKXvaySEZrF9ddfj2aziXe+850IwxB5nuPb3/42vva1r808\\nnmwJsV/IoSGOHa9//evxghe8AL/wC7+ARqOBpz3tabj77rvnHv97v/d7ePvb3452u413v/vdU6+/\\n4Q1vQBiGOHHiBJ72tKfhF3/xF6eu9/GPfxydTsfUU99222246aab0G638bGPfQw/8zM/gzvuuAOv\\nfe1r0el08NjHPhZ33nnnQp/nuc99Lt7whjfg2c9+Nh772Mfi2c9+9p6fv3w/q6ur+NSnPoXbb78d\\nq6ureNe73oVPfepTOHHixELXn+TWW2/FlVdeiTNnzuA5z3kOXvziF8N13YXe+7jHPQ433ngjrrnm\\nGrTbbSpFIwjiWHGh178///M/x6233opGo4G3ve1teOlLX2peq9VquOWWW/CMZzwD7XYbX/nKV/Ds\\nZz8bj3/843HZZZeZNf2d73wnHvvYx+JpT3sams0mnvOc5+Cee+5Z6B71jLbLLrsMv/7rv45XvvKV\\nc4+ddT+/8Ru/gVe84hV45jOfiTNnzsDzvEqp9TyEEPjkJz+Jb3zjGzhz5gxOnDiBV73qVXMdFrIl\\nxH5hUuc6CYIgZvC+970PH/nIR/YtlEAQBHHcofWPII4HlKEhCKLCww8/jH/5l39BURS45557cPvt\\nt+OFL3zhUd8WQRDEBYfWP4I4npDKGUEQFZIkwWte8xr84Ac/QLvdxstf/nL81m/91lHfFkEQxAWH\\n1j+COJ5QyRlBEARBEARBEMcWKjkjCIIgCIIgCOLYQg4NQRAEQRAEQRDHFnJoCIIgCIIgCII4tpBD\\nQxAEQRAEQRDEsYUcGoIgCIIgCIIgji3k0BAEQRAEQRAEcWyhOTRLRJZJhGGBPJeQEmAMEILB9zks\\nix317RHEUlOkA+SDsyjyCCgygFvgwoOoXwFu14/69gjiokG2hCAODtmS4wnNoTlipJSIY4nhsECS\\nzP9VOA5DEHC4LgNjZJAIAlDPTz76IbLef6GIzs09jvtrsBqnIWqn6PkhLknIlhDEwSFbcvwhh+YI\\nKQqJ7e0ccbz4r8B1GdptAc7pQSIe3cgiQ/zI11GE6wu/h/trcE/+NBin5DRx6UC2hCAODtmSSwNy\\naI6IopDY3MyRpvv/+m2bYWWFDBHx6EUWGeKHv4wi6e77vdxpwb38/yBDRFwSkC0hiINDtuTSgUQB\\njgApVTTtIAYIANJUvZ98UeLRiJRSRdMOYIAAoEi6iB/5Oj0/xLGHbAlBHByyJZcW5NAcAXEs91Ua\\ncKHOQRDHkXz0w32VBsyiCNeRj354SHdEEEcD2RKCODhkSy4tyKE5AobD4lDOMxodznkI4jiR9e9b\\nqvMQxFFBtoQgDg7ZkksLcmguMlkmd1Wg2Q9xLJFlFFkjHj0U6eC8I2rmXOE6inRwKOciiIsN2RKC\\nODhkSy49yKG5yITh4UbCDvt8BLHM5IOzS30+grhYkC0hiINDtuTSg6QZLjJ5frhRsEE8woiNDvWc\\nBLGsuNEWnEM8n8yjQzwbQVw8yJYQxMEhW3LpQRmai8yhi2FIktskHj0wmR/q+WSRHer5COJiQbaE\\nIA4O2ZJLD3JoLjKHPliWUd0z8ehBMnGo56P5AcRxhWwJQRwcsiWXHvQbuMgIwQAcnuGouzU06o1D\\nOx9BLCtpniKO1oHocBo5AYAJ79DORRAXE7IlBHEwkjxBFB6u1DLZkqOHHJqLjO9zDAaH13zp0jNE\\nXMLkRY4kTxDnMfIiR27VUT/E84v6FYd4NoK4eJAtIYjFKWSBUTrCKB0pmyIZLj/E85MtOXrIobnI\\nWBaD47BDkdsMiy4eHg6x4q+g7tTBDr0GgSAuPlJKpEWKOIuRFRmklEjyZOf/MzDuISjOvwGT+2vg\\n9mG6RwRx8ThMW5KxEIMsQ8ACOMIhW0JcMkRZhFE6QpRFkFJimA7Rj/sYJANYeYE1cf6dF2RLlgNy\\naI6AIOBIkvNvSPvB8N+RhyEuq1+GtWANDbeBwA7IGBHHkrzIEecxkjyBlNI4MmmRIisyJJn6b4j6\\noTg0VuP0Idw1QRwdh2VLNrOH0O3laLgNrPgrcIRDjg1xbMmL3GRjcplDSolROsIwHWKUjNCNugjz\\nEIXMseb75309siXLATk0R4DrMrguQxwfPLL24PD7+Pbm/4c1fw1ZkWE73sZj6o9B3a2j4TbgWz4Z\\nI2Lp0U6LLikr/ywtUhSygJQSkABjDFJK9JiNBnPQkMmBr8v9NYjaqcP6GARxJByGLdlM/hs/TB5A\\nLashKzKM0pHJ+tvChs1tsiXE0iOlNNmYOI/Nz7Qjk+YpoixCmIXIZY68yPFIUeCHWYZT1sG3wmRL\\nlgdyaI4AxhjabYHNzRxpun9DtJ2s46sb/wuQwFa8hVSmSIsUURphxV/BqfopuJaLhtOAb59/9IEg\\nDpusyBBnMdIiVQ4LxqVmaZ4CACxuQUKqzIxMURQFJCQEt/Dfzgm46QacIt73tbnTgnvyp2mTRhx7\\nzteWhHkP98ffQSFzVZIDiUxmyIscw0SVM9vChiMc2MK+AJ+AIM6PrMgwTIYIsxCFVD1lUkqEWYhh\\nMkQhCxSyUFn+PEGSJShQwBEOuOD4Hjjq4Aiw/0wn2ZLlgkl56Gr2xIIUhcT2dr6v6Now38K3el/C\\nIOkjylTZjWQSgR2gZtfgWz4c4eDy+uVo+S3Y3EbDbcCzqOOTOFoKWahsTBYbwwOMHZmsyGBxCxa3\\nUMgCca56aNI8BaRSpuGcIy9y+LYPjgKt4YPwsuHC98D9k3BP/hRJbBKXFAexJSmGeDD9d+RFhriI\\nISDAGIPFLTjCgW/5EFyg7bXRcBvgjJNjQywF2mHRDf7ln0dZhEEygOACFrMQZzH6O/ulAirjnxe5\\n2hMxILADWACuzLr7yvqTLVk+yKE5YqSUiGOJ4bDYtbnTdoCEdxEWXTw0eAjDeIhu3EWYhfAtH3Ee\\nwxEOAjuALWxwxtF0m7i8fjkcS9VDN5wGXMu9iJ+OIHbklvPYZF402pEppIqWWdxCLpWqWZqnYIwh\\nzmIwyZAUCQQTyGVuNlV5kSPPM1hZF+10ADvrz70H7q/BapyGqJ2iaBpxSbKoLXEcBtgRch7i3Ggd\\ng2SAXOYIsxCe8MDAICHhCtfYEle4WKmtwLVc49hYtJEjLjJJnmCUjhCmIeSEZHmYhgjT0PR/hVmI\\nQTLAMB1CMIEkT8AYAwNT+yAJ2MKGb/sqmMYEvGyI1SKEu0uQjGzJ8kIOzRKRZRLvf///jV5vgHq9\\ngWc84+m45pqr4fsclsUwSAboxT0MkyEeHjwMSGB9tI4wDeHbvoo8yByBHcCzPeQyBwfHqeAUVmor\\nxjA13AYc4Rz1xyUuYQpZIM5Ug385G6PJdqYqO8KB4AJprjI0aZGCM65K0tIYnHOkRQqLWZBSgnMO\\n3/KRFAlsZqOX9GALG4EdYMX28P/c8X9i0N1Ao+7j6c94Js5c++MQ9StIgYZ4VJFlEp/+9P/C//7f\\n30O93sCP//iP4frrf8bYkjRPMUgGSPMU50bnkOQJsiIzG0LXchFnMWxhw+IWBFdDCOtOHR2/A844\\nOTbERaGQBcI0xDAdGrtRJkojZEUGW9hwLRejZIRBMkCYKaeHg2OUjeBxD5JJZXOYgIREza6BgYEz\\njjiPwcBwonYCLcvBP37m/8X3/v1baNR9/NiP/wSe8tSfJVuy5NBKtERYFsP//J8fxuc+9zkAwKc/\\n/Wlcd9215vW6U0ecxYADnApOYWO0gcc0HmOcGlvYqPEaUqn6abSU88PDh7EdbeOKxhWAA8SjGJ7l\\noek2yRgRh8ak3PK8Yxhj8CwPjDGlbLZTglbIAja3MUpH6r+FjazI4AoXDAy5zFGzawAAhzum1ECX\\nWdpuCx/91N2l5+fZ+LGf+bGL8+EJYomwLIa77/4C/uiP/ggA8Ad/8Af4H//jqeZ1W9imDHm1toqN\\n0QYsboGBqT62IkXLa6nMaqGypTa31UYxDdHxOwicAFEWQTBhAhMEcVjEWTyWW54xQDYrMpWxtxx4\\nzEOap9gMN41z7lmeKkkrEjTdprEvjnAQ5zECK4Bv+xilI1jCQpiFaHttCC7geR3849fvxx/90f8F\\nQD0/T/9FsiXLDu1ml4w0HZfl2PZ0rXLba2N9tI6G20AhCwziAS6rX4b14bpqspYpPMsDB1fRNstB\\ny1GG6fvb30fH6+BU/RSiLEKURfAtH023ScaIODCTcsuTMMbAobT++Y7mv1Yy0/LMuhRgmA7BoSK/\\naZ7C4hZsYSPKItTsGmxuI8ojeMJDL+7BFaoEJnACANXnx3EoC0k8etnLlvi2j7RI4cDBir+CXtKD\\nYAJRHhm1s8AJwMERZRGSPIFneZCQODc6h2EyRMfvAAIIs5AcG+K8mZRbnoSBmUCYxS1YUP2W/Vj1\\nyGg7YnELw2QIW9hmr8TAENgB+kkfgR2g4TbQj/touk1sR9twhAPP8lTWhrE9nx9i+SCHZslIknFT\\n2qwNmeACLbeFrWgLLa9lItun6qdUdCJT/Qe2sFFzapBSoh/3UXfr8G0fw3SIezfvxangFFpeC2EW\\nIsxCBHaAulMnY0QsRHnY5bxsjC1sk9ovl51lhVJREkygYEq5LMszxHkMiylRgDiPjbrSIBmY3rCs\\nyOBbKqqmMz26iRmoPj9khIhHM3vZEgBmg+daLhpoIMxCMMZMVDzKIrjCRc2uqUnr2cgIBiR5gocH\\nD6PlttB0m8ih+nD088jZ+Q8sJC59pJSI83E2Zha6TEyXJevelTBVwgA2tyG4er2QBdI8ReAooaQk\\nT2BxCw2nge1oG3WnjsAJzDFZkSErMpyonQBjzCjDLvL8EMsFOTRLxiJRAd/2zQLQ9trYjrYR2AE4\\n49iKtpDlGSQk4iyGa7lY8VcwSAdgOUPDaSCTGR4ZPoJu1MWp+il4tqcGTu1E5OpOnYwRMRMjfTkn\\nG8MZN43DuiRAU8gCWa5qnbngpmRM9884woHFLAyzITzhwRZ2xZkBAMGUwx2moSlb02VowGLPD0E8\\nGljkWRBcmACBZ3mQUpq5M1reNpMZmFRR71VvFcNM2Qr93PXjPkbpCB2vA8/2zAaRHBtiN3QWUJcY\\nT8KZ6pe0uGUCr+X3DpIBbK6a+ofJUAXOCqVipvcxg2QARzioO3VshptKDdapmSwOYwyDbIDACWBx\\nS1W37Py9ki05fpBDs2Qs+hC13JaJjre9NgbJAHW7DgaGXtIzTk2ap+jJHtpeW2Vrkj5qdg1Nr4k0\\nT/FA7wG0vTZWa6vgjCtVkGSIulM3PTjEoxsdQUvyxAy/nKQ8WXwya6NlMjlXzk6cx6YEIM5jFEWh\\n+mQYwygbIbADCCYwSAeo2TVjeDjjpueGMWauV5Ykp5IzglAsaktcyzXzn3zbR5iGaDpN9NBTQQcJ\\nM+A2ylVvZlEU6Cd904hdyAIb4Qa81DN9CNqx0X0LZEsILas8TIcVueUyOiNo9iPpsPL+UTqChETD\\naWCQDBDnsQl0FaxQ8/csH924q0ZZ2D62wi3z34CacZYWKfIiR5qnaLttAKDg2DGHHJolY9E0J2MM\\nHa+D9dE6GGMInABJlhgnZJgOURSFSs+CYTPcRMtr4VRwCr1YGSotfxtmIR7sPqimQ7t1SCjHZ5gq\\nxyawAzJGj0LSPDXZmFkILuAKF45wjNzyZKStKAqAjTdNOsrGwRHlESBVxrGQBaIsQsNumL9fHZ0D\\nlJHT5QhaqhyAqXfWUMkZQSj2UzIT2AF6RQ+FLEwFQMttoZf0kOYpChRGXl1nR1f8FTMHRAc0skJl\\n/5tuc9yLsCMyQI7No5c0T5Xccmn4ZRnBBHzbR82umcDrZPlZnMXICyUMkxYptqItFLKAJ1RWsECB\\nFX8Fggl04y5aXgsWt9CP+/AszzgzdaeOYaKcpCgbiydNKvZRydnxgxyaJWM/UQFb2Gi6TfTiHjjj\\npixHG4woi0ykzGY2ulEXUkq0vBYYY9gOtyG4MP0H29E2hul4OnQhCyMT3XBV1IOM0aXNvOGXGr3w\\nm7kxhZowPtnAqRv9bWGbWvxc7vTN6Fp87sC2bKR5ilzmqDtKDlPPw9D9XDW7Zoybzvzo17Rjo6Go\\nGkEo9vMs6NLNQTIAoFQEC1mg5bbQjbvIcrVhjPNYPY95BEc6CJwAspAYZANwcCPnrNXQWl7L2CU9\\nPNcWtilrIy5dtNzyKB0hLdKZx+gmfM9STkkv7k05MnmRG2eaWcwcY3Ml1z9IBqoHzGkglzmGyRBt\\nrw3OuFF/1Vn8ulNHVqjqFSklsiJD020CqGZnALIlxxFyaJaM/T5EdaduFGgEF5BSmkgEoAZRWcxC\\nUqjsTT/uIy9yNNwGTtVPoR/3kRYpJCQsYUFCYn24jrpTR8NV0fJc5tiOtjHgA5XOtf1d7og4jswb\\nfqnR9fA6wpoXOcI0nKlEAwlTJqazPIAqS9OzaXzLN302EtIYnDRP4fCxUpJWVdLOVTk741nelIgF\\nlZwRhGK/tkRv/LRalGACAsI4NXmRg0EJBgROgDiLjWhAx+0gzEKzceWMQ0JiK9qCb/lKLW3nZ3pw\\nrq4QIC4tkjzBMBnOlVu2uKXKvyzfBFy3wq1Kj4ymKAoTrI2zGL24Z8rNAGCYDNF0m6oCIFeZwKan\\nHJQ0T01PJ6DshRaZAVTAV59HcDE1dJwcmuMHOTRLxkHSnLr0rJAFGGOwmGVkbAfJAEVRwOIWojxC\\n02timAxRRKqEoOW1kGYpwjxEmivHhnOOUTpCJjMEdmAe9KzIsBVtYZAM0HAbld4F4viRF6pMLM7j\\nuXLLjnDgCtc4DnmRI8mSmY6MjtCCqwyNdngsbkEwgWE6BMO4iT8rMjAwkyHMixyCC9OUqQf89eIe\\nAJi+Gx3ZnYyoAVRyRhCag9gSLeWse+U442ad78ZdyEICDBilI9SdOtJclZFKSwXSXKl65HQPp3aA\\nsiJDza4ZWyIx7ssjx+b4U8jCNPjPUr1kYCYbo/8G8kIFSkfpaOp4rY7JBYeUEr24p4QrhIfACdQe\\nBoUZGK7/3rRN0H+/+lo2t9F22zgXnhvf004FAbC3LaHg2PGAHJol4yBRgbKUMwDjiOhN6iAZKA12\\noaJqDbeBOIuxHW2jkAUabgNtu404ixGmIZIiARiMklVRFHBtd6z+UagBVo5w0HAaU5ENYnlZZPil\\nlksul4XoUrRZ77GYysboaFxWZKZx3xWqYVirzei/oUIWEExUyk4452BQ/9ZRvFE6Mn/HevOj73HW\\nJoiiagShOOizoKWcpZRmwK1neWBg2I63TYBsmAyNaEeURUohTagyoExklf47rUqVFRl82zfrgHZs\\n0iKd6mEglp8oi3aVW7a5bZrx9e88L3L0k/5MR8YRDiDVHgZQa74OaLW9NixuoRt14du+cbR1INfh\\nY6dDD4IFlFO+4q9glI2dLS3/r4+dLF0GyJYcR2j1WDIO+hCVpZwBFUFruk0VJWMM/bgPwQQCW013\\n1jWr3biLQhZGm92zPJXaTVSDaFqk6CZd1GTNNGzv7DmR5Ak2wg24wkXTbVKUbYnZa/glZ9xkRMoy\\nq7s5MtrhKWRhapLjPDZDzwQJwTGAAAAgAElEQVQXpryknM1jYJVrcMZN9kX/O3ACIzQAYOqeZ0XU\\nADJCBKE56LNQlnIGVOmOb/mQkGijrZwaFLCZjTANUbNrCJwAYRqadcAWtilT1bK8Ooqv53/Y3Da2\\nRIuC6HWIHJvlZZHhlzW7pgYhl/YEeZFjkAyMSlkZV7hm/phW1NPHaqnlJE8wiAdoeS1jP/TAZv0/\\nbOf/9N8VA8OKvwJAyYtrTDUBMLc3mGzJ8YNWjSXjfNKcZSlnCYkwC9HxOiZz04/74Jybpk6b2xCO\\nwChRBkc3yHmWSutqkQBAOUhxFqPtteFbPnKZm0UpzmOsj9bhWR6abpOM0ZKgh19qJ2MWtrDhCnfK\\nGd01I8MtIwige1u0OEC5ZjlMw0pJma7LL5+Ts3FWRh+j5yDpWmdARXKNEWMcrpidFaQyAYJQnM+z\\nUJZyBtQaX7frGGCANtroxl2TVdHzywInQJRGpifT5sqp6fgdFcVPVU9FWqToxl3TW8Mwzu5qx0Yw\\nJVZDg56XAy23PEpHiPN45jGOcExvTNlB0Bl6PStm1nuiLDI9NGmu/j44VGZFcIEwVa/p/hj93jRP\\njfPCGYfFrYoqZ9trwxEOtsKtyrXL9m5ecIxsyfGDdp5LxvlEBcpSzoDKoLjCRcttmWP6cR+uUIog\\nw3QILjkCV5Wi6YhLy20BEjhRO4FG1sBGuKHqqmWuZg0IDydqJ2AJq5JqjrIIURbBt3w03SYZoyNC\\nl3ylRbrr8MtZQ+/2cmRsbhvnFxg7TbnM1cDMnWxLkiWVkjLBBTh4Re3G4hYYWOVngR1AcGEkOgH1\\nd13+HJNSzWUoqkYQivN9FspSzoUszAyaAQZoMzXQWWdfdSTdsz3TnK0zNSjUuWpWTSmmFZmZJxLn\\nMRp2A57tmUwvAOQyR5iF5NgcMVmRYZgM58otc8ZNNmYykLmXI1O360iL1JSUAarJP0xDBI7q3dWO\\nVPlvgDMOT3gYZeOSNcFUU3+5jE0LGCV5UhEc0DYMUI77vL8tsiXHD3JolozzfYjKUs4A0E/6yjHZ\\nUfNgYEbmWTs1NlPXyfIMURqhkIWRMrSFjavbV2N9tK5kn6GGq50dnEXTbWLVX1XyjKUFQ0/1DWw1\\nrZeM0YVnEbllm6sheLMyaNoxmSWvqUtHdP+NRpex6U2H/llWZJXfuS1sMLBK5ExnecoOsW/7SuZZ\\nysrfk2ACcRGbz7Gbyh4ZIYJQnO+zMCnlnObpWCpXDtD2lFMT5zE84Zm5ZbawIaRAlqs+mnIvw4na\\nCQyToZqTJgvVGB5vw81cNZCTCdM/AYwdG70GTQZgiMNHr796xtAsXOEqp2NnIHKZQhYYJkMMksGU\\nI2NzW6mn7uxDdMlaVmToRl3Y3EbH76hS5kIFzsrlyjZX/Vz9ZFw+ZnELgR2gG3fNz3zLR8NVe55u\\nNP65K9xKmdy87AxAtuQ4Qg7NEpHnuRpEiJ3yHHEwR6As5QwAW+EW1oI1s9Ftool+0gdnXE2ETnqo\\nWTWEUKpUWZFhO9pWTpANZEmGy+qXoek08cjoEUSZcnq0QsmJ2gm03TaiPKpsUIfp0JQj6DIi4nDZ\\nS265PPxyVlZjN0dGOyqMMTW4rOQoacepLByQFznyIq/8nvXQzDgblynoORTlaJprucZwhVloMjI6\\n46PxLG/u39FhPT8EcSlwGCUztlBBEP38hlmIhtMwSlNlp8a3fePUCCbALaU+lRapERfQks81u2be\\nB+yULYfrqNt1NJyGKU3TZEWGrMjIsbmAJHmihl/u9EJNIpgw2ZhZQUopJYapcmQmg2rakbG5PTU0\\nU4sKNNyGCbbpgcyONf67rdk1WMxCLxlndCxuoek0TVk9oLI/ba8NQGV89N8RgwrqZVlm3qsDcTO/\\nDyo5O3aQQ7NETEYEzmfwWFnKOZc5ulEXHb9jFirGxpmatqtqoutO3UTOOLhRpak7dWxH2wjsAGfa\\nZ7A+XMd2vI2sUBG4h/sPo+/0cTI4iVV/Ff2kP27mhjRp57pTN1N5iYOjHYQkT3YdflmWW55kEUdG\\ncKGGXpb6b/S1BRcm8goJM0lc/24ZYwjsoKJ0BIylmMv9MVrRDNjJ+pScH1e4lcjbfiJq9HdGPJo5\\nrAizb/nIigx5kZtNa8NpGBVC7dSEWYiaVTNrPWdczTaT0gh82Fw5NbawcTI4iUEyMJH6oijM0MSm\\n24Rv+8aR0eh/29yeG6QhFkcPvxymw4XllifZzZGxuGVKv4bJ0FR5AGO1M5vbxgHR1+S86rC23BYk\\nZKU8Tb9vM9w05xRMYMVfMWI15UxO3alX+n92syUAZWiOI+TQLBGH+QBNSjmHWQgv9dD22uNMzU5p\\nWoM10PE66MZdU4amo2Fa3rfltTBMh0jyBFc0rkDLa+GHwx+a+th+0jciBGvBmkkp6w2zPkZH8AI7\\nIGO0D3S5l1YNm4XFLbiWu+sUbn0ePXOoTNmR0Y5F+RjtQJUbKhnU4NVyGl9wgbpTVxLgE86Mb/vo\\nx32TgdHHaspZG1vYlfKTvdSPyAARxJjDeh50cEJLOWsBEJ19jbIIHa+D7XjHqbFrGKZD1Q/HBHLk\\nsJlt5l7pZu68yFF36/BtXzlEO5mBJE+wGW7Cz1QvZs2uTfX1pYXq0yHH5mDontm9hl/W7NrcbJju\\ngxokgym1M8GEcUqTPMG50bnK7y9M1dy7cuWGYAIMrLLma8nlOIsrzokjHHS8DjbDTXNtBobV2qo5\\nXz/um72OYAIWt4x9Kc9XmgfZk+MHOTRLxGEPBZyUct6OtisLATB2apjDKk6NbtjUG8itcMv01ZwL\\nz6HttXGmfQbnRuewEW4Yg7M+WscwGeJEcAIr/opp+tOLWSFVFG6YDNFwG3MlEwnFXnLLetbLXo2z\\nuzkyWjVMcGEyN+VIm+7P0UZBI5iYGsrpCMdIvpYdL9dy4Vs++snYyGhFM/37n9y0+JaPjXDD/Huv\\niBqVCBDEmMO0J5NSzlEWweIWfFvJOcdZjLarJJ3DNDQR+cAJYHFLBch2sjVxHqvsLlebTt/2sRas\\nYZgM0Yt7Zv0ZJkMzN63u1GFz2wiQaNIiVRmbnTJWsiXzWURu2bd91OzarqVYusemH/dnOjLarktI\\ndKNupR9SS3db3ELdHQeyPEuJSUwGsDpex2R/yj9f9VeVKEWpwmDFXzH2Kc1To9AKAC2vVQmW+fbe\\n+w4a0nz8IIdmiShHBA5rQzYp5bwVbeFETTkb50bnzDG6/KzltjBIB2pOQG5jkAxgcQue8NCNuqi7\\ndXiWh81wE4Ed4LL6ZWi4DTwyeMTMrhllIzzUewj9uI+1YA1rtbWpBTCXakrwgA9MSppQaKdintoY\\nMF9ueda5dnNkylmPyfIOQAlF5DKfcmQk5NQwNW0IdamixrM8+LavInml8rVydE5KaaQ59XvKTpzg\\nYs8BrhRRI4gxh21PJqWcR+kITa4yKFJKJEiMU6NnnYVpCM/24AgHSZ6oTbPlI8ojyELC4hbCNDSl\\nzZ7loRf3TPmS7ucM0xAtrwXf2unJy8fiJzqrk+ZKRprmoY3RDuRewy8DJ1gouDhKR3MdmbpTNwqU\\nYRpWglcAjHJlOTAlmIBv+2ZWkSawAxNsLTsmrnCx4q9gkAwqjlLLbVXsQ7lM2RUuBBOVANtewTHg\\nwuzHiAsLOTRLxIXYkDHG0PbaxnlJ8gT9uI+G28BqbdX8vOk20Y27aHttk6GxuW2cnUgqyc5hMjTG\\nR5egrfgrON0+jc1wExvhhokAbUVbGKUjrPgrWK2t4mRwUi2IpYUuKzJsRVsYJAM03MaeaeBLGd2T\\ntNvwy3lyy7NIc1WitpcjU8hiyuGRUiLNU3DOIVhJsYzb5j41OtMimJjrzOgSA42O3Gq00IS+P+00\\na/ZrgMihIR7tXIjnYVLK2ZQQOwFkotYP7dTwXK0zuifOFa4K0sgMNbumpOXzFLawkeYpekUPgRNg\\nxV+Bb/voRl1V9roj3ZuMEiUa4Kr+Hb0OlR0bnc1+tDs2WZGZbMw8uWXf8qeGX85DOyiTAS/OeKWE\\nPCsy9KJexT7oAB1nvPJ3WLNrpldXw8DQ8lpGNKKcVfEsDx2vgyiLKuVnga1mIJXvtXz9ltfCMBlW\\nzrOQ/SR7cuwgh2aJuFAPkCMcNJyGWQT6Sd9sjFf9HadGjJ2ajtcxw64EE+j4HfTiHvpJH023iSiL\\nsB1to+W2kBYp1kfraHttrAVrqDt1I/GcFkqB678H/23K0HRN9GQTYVqk2Aw3zb3uFY2/VNARtCRP\\n5g6/dISzLwO9qCMjpVTNvhPRNj0ws9yYqd87SkeV+7S4ZYbj9ZN+5TXf9uFZHuIsrkQHPcurlDTo\\nmvzy+3QpCbAj1WztncGjiBpBjLlQAbJJKec4i+FarpFzBpQozXa0rZSlhI0kS8yQXd0L6FmemZnl\\nCAcFClOCVs729mO1kdaiAXEWGydqN8dGD/58tAx61o6fDjTOwhUuanYNnuUtVJ4XZVGlZFwz6chI\\nKdGP+5VsCqAy/JN9l5xxs4+YnCWjy8a2wq1KBsa3fLS9NtIixXa0Xfk8LW88Z0/KqnCArgIo25dF\\ngmMAOTTHkUfHk35MuJA9AA23YTbOwFjKWXBhMjV6hs12tI2O1zFlP4CauNuLe+jGXdVLI4GtaEsN\\n4eQwJWhNt4krm1ei6TZxbnRONYBDopf0EOURWm4Lq7VVk56e1KtP8gQb4QZc4aLpNi/ZKJt2OuYZ\\nHsGFUSpbtC58niOjNxLl7zIv8mmFM6lKASVk5ZqOcMDA1O+plDlyLWUctZpM2ZnRqjhpnk41+k+W\\nF5YNl5bS3ArHMpyL9llRzTNBjLlQ9mSWlLPFLSPw0U/6QAGjfsYYq0xw1+uC7qUJnMD0VXDGTQla\\nYAdoe21Vhhb1zHDHOI+RRqmR+tUqXJPrnxYsmAzkXGroNXbe8Etd1jVr+OU8oixCP+5P2QgGNqVW\\nGmdxZaYMACMeoX/3Gt/yETgBtqPtipPkClfNnwHDVrQ15YC0vTbyIq8omlncQsfvVO6vn4zL4cqz\\n9jT7CQxST+bx49J8wo8pFzoiME/K2eKWydRY3ELDbWAr2kLH68ARjlKxKnK0vbaR2QzsAC23ZeSe\\nHeFUStDaXhs1u4aN0YZZoJI8wfpo3ZShtb02Gq6aadCP+xilI7NYxXmM9dE6PMtD021eEsZokeGX\\nOhuzn887GaE055vhyOi69MljtQFCyW/QYgFpkVb6W4Cxw1LIoqImU34tL/KKMRFcILCDynnSPJ2q\\nbZ4saaOIGkHsnwv5PMyScm66TTDG0HAaJkre9tpqsKGlNqBpnqp1yXLAC460SI3NGSZDSCmNXLwu\\nQfMsD07gYBAPMEgGpn9G2xs958wWtsoG7fTTTDo2ZRXH446WWx6lo5nS+wCMo7efMm6tJjYZaNOO\\nTOAEplwrL3KVMStJIetjC0xn+FuuyqRsjDYqQbe6U0fTbUJKic1ws3K+wA7Q8looZIGNcKNSlrzq\\nr1ZKx7Iiq5SWaRGjsu1a1JYAZE+OI8d/l3gJcaEfoHlSznpC+2ptFRujDWNgdE+NYAJccCWzWeqV\\nyIscHa9jUtI1u1YpQfMsD5fVL0PdqWNjtIFu3EUu1SY3zmMMkgFWa6toOA20vJaJ7pUj+lGmhnX6\\nlpLwPI7GaK/hlzorsV/50f04MvPKy8ozZMrOjM13hl9mVbUyzrjpf5nlzAROAEc4kFJWMjq6RKH8\\n+bTsp8a1lNJauWRA/2wRqOSMIBRSygtqT7SUs35W8yI36maMMTTcBvqxKnFueaoPk4EpZ6VIgRxm\\nvUvz1PRoRllk+mr0+qJLV5teE57tqdKmZIhcqixzN+4aNTTf9tXax+0pMZRc5giz8Fg7NnsNv9Ry\\ny77l7+vzJXliFObKMLCZg7EnKyv0sZOyy4DKvrS99pRaGYPq7/VtH1JKo5aq0Y4OoCpKTAkyGFb8\\nlanP14t75n4c4aBm1xCm46zVIsIymgv9/BAXBnJoloiLkeKcJ+WsS5w6vpJ01r0R3Ug5NTp1LCHh\\n2z4sbqEbd1V5mt9BlKoUdd2po0BRKUHThiYIA2xFW0ZYQGdu2l4bHV+VuLW9tnJs4n6lFCnMQkRZ\\nhJpdU07VkhsjPXNhUtZYs8jwy3ns5sjMki/Ni9yo3E0en8lsyijpiN4gHUz1y2inJC/yqUFqOkoK\\noPKaFg2YbMQsKxXpPhkdTdXsJ6JGJWcEodDT0AFACDE1qPAwEFyY4ZrAWMrZFrYJYPSTPjhUdL6X\\n9OAyF5xxJTjCuAnmpEWqAmyWp5TPshAWs4xili5Bc4SDFX8FnqUcmyiLjIxwUiQIsmCc1dlxbCYH\\nCGvHRl97kQbxo0RLHY/S0YGHX85DiwTNyrLMsrXa8Zm8Dy0WU3ZmdIO/Z3nYCrcq17C4hY7XMY7r\\nZrhZcWYaTgMNtwEAShyi9N62156SldaBT43OBpUDZvuxJRfj+SEOH3JoloiLFRGYJ+UMjJVEtqIt\\n49T0kh6ajion4IyDgwNC6b5vR9vYDDfV4iRtNajTbYAzXilBs7iFtWANgRNgM9zEdrSNJE8QZiHi\\noXKwOn4HLbdlamPruTKIeqGSUKUNo3Q0M2p01GiJZD2MdBaLDL+cx34dGX0/s46XUiKV1YyRxS24\\nwlWp+3RYccS0WhkwnvCsX9fRWu3MaIdVE9jBlNM26bjoPplRMjLn1RuORaGIGkEoLtazME/KmTFm\\nemp0VL7pNJVTI5RTE2cxIABLWGbYZpgqp6bu1DFKRmpq/I4DpEvQtF1yhGMyBWmRmhIoXYame0Zc\\ny4UjnSnHRsvUL6tjE2XRnnLLNbsG3/b3fe9pnlZsa5nADqYcGZ0tKwcZAZi+p8khzI5w0PbakFJi\\nfbheqQzQgUvOuColG21Ufi9Nt2mGLQ+TYaVsedaIh0khAK3cVh57sKiwjPl+yJYcS8ihWSIu1kO0\\nm5QzADMBuht3zUC1QarmxejNpitcxHmMjtdBP+ljI9xAx+ug5bUwSAZmRspkCVrNrsEVShFnM9w0\\nEs7dWA3gGiZDdPyO2SCv+CtT6XAJVc40TIZTDYpHwV7DL3VTqmu5BzKaOtszWS42z5EBZs+UKZcE\\nlJ0cBgbXcs1MiLKR06pG2rHIiqxSSqazL7rnR/dKaXQ54yRhGs6cMVM2mPuJqAFUckYQmou5IQvs\\nAN2iCyllRcoZGGd1+3EfjDE0naZS2dwRO4nz2Dg/tlBRfp2pqbt1hGmIvMghuJgqQbOFjZan5o8M\\nkoGRKI6yCEmhehXL81Vcy4UtqxtdYLxW2tzed9nvYbPI8MuaXVtYbnmS3RyZml1Dw2lMBZ9mzZTR\\n84SSIqnaCzAzCHWUjtCNuhVHp5x5yYscG+FG5XfRcltGgjnO4so8Gd/yzXvLDNNxAE0rqAHV7Mx+\\nB3iTQ3M8IYdmibiYqhq7STkDqhdCq1cJLuDCxTAdmqburMjUgLQsQtNtYpSOsBluouW1zL/zNIdn\\neyalrEvQBFdS0L7tYyvcQjfuYpSOkOQJzo3OmXN2/I7pLTlRO2HUVHQ0R0Kin/THsxB2JCQvBlpb\\nP87juXLLiw6/nMc8RwbAXOM7a6YMANPzMlkjrbMygCoTm+yXKUfq9nJmdIRV41ruzIbUeU3/URaZ\\n71LPotkPVHJGEIqLaUt0hnaWlDMwdmoGycCIBgySgVm/oiyCb/sQTJiIf5RFcISjJNx3ehD1PKxy\\nCRpjzPTNeJanRAOyGEVRYJAM1Bptxyajo9cVvRaWN9NpkSIt0ovu2Gi55VE6mir90uiekP1uzDVZ\\nkc3MsABjR2FSiCYrspl9NZ7lmT7asp2xuY2O34FgAt2oW8msMDBTVg4o23ZudK5i27SQkL52eQ6Z\\nzvhMkhe56dUClMPEmer31Sp8wP6DY6Rwdjwhh2aJuNhRgVlSzieDk2bBbLgNE3HTm9pROjKLg07t\\n658Jphq6i6JAzampkrKdRlEAlRI0wYURDdBlaFomUkeQwixE22uj6TbNUMk1a21qyFch1XyCYTJU\\n/ToHXPQXQc9NSIv0UIZfzuIgjsy8pn/OODjjU6VqZeGAWf0wtrArDmKap5UyNL0x0X8Xk4pmujl1\\nFuXIWVnRrRJRs/f/O6SoGkEoLvazsJuUs349cAIMk6EJhAzToQmghWmobMjO8XoIp5TSCIOEaWjW\\n1MkSNMEFGm7DqG3qslfttCR5YjIbggvj2Mxaa/UMrHnZ78NikeGX+p4PqvKpg1DltVUzz5HRgi6T\\nM2UEUyWEYRZOna/hqKyMxHRzv8UtU3au72ljtFH5zjtex+wTdBmadpb0fJpZv4eyEEDZ5swSm9kP\\nZEuOJ+TQLBFH8RBNSjnrJn+NlkwMsxCCCxNR05GWMA2VcUqGpmxJq5npxVJH2zjjUyVojDE03SZ8\\ny8e2vY3taNvURG+Gm4jSCGEamunBgNrs+raPUTpCPx7rzuv7H/DBzFrbg7KI3LLNbfP5z+c6cRbv\\ny5EBZs+UYVAiDrnMp8oLBBPmu9eqOfP6ZQC1eSir00xmbgpZzFQ0m0WcjTNaOrqqrzEp37xfqOSM\\nIBRHYUvmSTlrHOGgsJXcsM7qaMcHUJtQ31IlqjnysVjATl9N4ASI0giFLMAYmypBA9Tm1RZqrRwl\\n49ksugJAOzZ6/RNcwOe+KRsuD+fU8s/7mV2yF1rAQN/PLFzhInCCfc0gm0T3Oc5yZDzLQ8NpzPxM\\ns2bKADt9kEygG3crNtDilmnST/IEW+FW5b16IKb+HFmR4dzo3FgMZiJzo6Wb9Tm0otms4KDuwdW0\\n3JYZ8nk+pcsAOTTHFXJoloijSHPuJuWsaXttyEiaIWXgajHR0TXdyxJmIRIk6HgddOMutsItk0aO\\nsxiSSVMLXS5BY0z1gqwFa/BtH9vhtpLizGOMshHiYYwwC9F0m2i5LbMQ6xT8KB1Vany1gtogGZjB\\nawdhL7llwQVc4Z53ecKs8geNzW2jGjTrfbNmyggmTFZm0jCVS+BG6aiSlp9s7gfU77ms7c8ZN6IP\\nwDiaN6loNuv7mDQ0nuWZ85QNb/nn+4FKzghCcRS2ZDcpZ41neabESjdqR3k0LifLQmMPsiKDIxzT\\nV+NbPjzbQ5ZnSIoEbEdnfrIETQdUHOHASRxTypUVGfpJXw3gtJNKH4rgAjU+noFVdmx0FcP5ODZ7\\nyS0LJioZpIOis+3lmW4aV7gmizXrfbNmyjjCMQHLftavvFa238NkWMmWANXmfkDZ0/IsGe2slJXZ\\ntFiQpuN35n7n3WjcX+NZXqUP86DCMhoqOTuekEOzRBxVVGA3KWdAGaqO1zGpZM44ChRGIQZQ/Re6\\nflVLMQ+SgVJA8ztmOnSWZ7CEes9kCRqgpH99S2VgunHXZGC2o22EaWiyNQ2nAcaYMqI7ijZa514v\\nmDrLo/uFFpG01FmSWWpi+rs4qNzyrGvNc2R2U96ZV16mRQLyIp+qldYlFlpZZlKJTA+9LH+mOIsr\\njsakMwOo32G5h2g3Se2yoSn3yJyPVHMZiqoRhOKonoXdpJw1vu0rRyFTggCe8BDncSW44UNlXZI8\\nUZnmnWZ53/ZhCQuccyRZYjbQkyVowM5UeM+GY6lsjW601xLPaZ6abL++tsUtWNya69ikRbrw4GM9\\n/LLctF7mfOSWZ11LC+Xsx5EBZs+U4Ywbez6ZdRFMoO214VoupJTYjran7ETH61Q+U5InlTIyBobV\\n2mrlniZ7fFpua24wcpgMTVUCAzMyzcDBpZrLkC05npBDs0Qc5UPUclum3GlSyhlQG/kVf8VILHLG\\nzXR5vYHtJ31TZjZIBmZQ2ma4ibbXNprz5fdMlqAByiiu1lZNBqYX90yU7dzoHOIsRuiGRuNe31/d\\nqSvHZmKBTvIEG+EGXOGi6TZnRnx0OcJuwy8PKrc8yUEdGWD+TBmLWxBMqMb6CUdHCysA42nKu/XL\\nANPOjJZgLd9XmIZTZWLzDP1uTZqTPTUHjYJSyRlBKI7Sluwm5ayp2TUjrMKY2tiXxUy0uIhvqWCb\\nKXdOI9MT4dkekmychZ5VglZWadSOjRYf6Sf9ShlaeQOuHZs0T1Uvz8596eCLVq6ctd7ptTPKol2H\\nX9bs2nlLRe/myOwVyJs3U6Zm14zIw2QfTc2umZ7WvMixGW5Wyp1tbk8NvYyzGJvhprk/zjhW/dXK\\nOq/7YjWBHRi1s1mfuXxsOYhWLmk+iLCMhhya4wk5NEvEUaY5GVO1rPOknIGdhai2inOjc8iKzNSr\\nltHvabktdOOuUUTZjrbRdJtqsy44imJnQ80wswQNUJE813Lh28qp0YorvaSHKI8Q5zHqTh0tt2UW\\nNJ1FCJwA/bhfSb3HeYz10bqaOu02wcB2lVtmjJmSssMY5KkN+GS/C7C3IzNvpgxnHDa3kct8qsyg\\nnJUBpp0UABXjr4myqKJWJrgwGTFNnMWVrEo55T+L8nVtYRtjJqWsXOugETWASs4IQnPUJTM1u4Ze\\n0Zsp5awJnAAykcbx0WVmeo3T60JgB8aJsIWNOI/hQDkTjuWYxn7NZAkaoNZXbX90tiYtUpN1SfMU\\nnu1NBWX0WqWDXZOOjWDCBIv2klv2bb8igX8+6Cz7ZGYFUE5F023OXY93mynTclumsb/s6HDGK0HH\\nOIuxFW1V7NFkvwygbMlWuLWrM5PkCbajbfNvHXicRz8el5droQLN+QrLmHuikrNjCTk0S8RRRwX2\\nknIGxguSllzUzZmCC+MU9OM+6k4dK/4KtsIt2MJG22ujF/XGKX6uMjxSSuyUQs8sQdMLqW/5Zjq0\\njqxtjDYQpRGiNELTa1YMGGccLa9lplXrhU5KiW7UxbnhOVMfPOmsnK/c8iS7OTLaIO7mMM2bKWOG\\nmuXTgzy1SIG+fpiFe/bLAJiaQ6MlV8uGQavzmGsJe1cBhslsVNlpibJobJxK82gOwlE/PwSxLBz1\\ns8AZ31XKWRPYAQZyYNYHLS+v/63nVTXchnJwGMwQzkIWZu30mFcpEZtVggaowIvuS9RSydrhSvIE\\nWZ7Bs70ppUxHOLC5bTN65h0AACAASURBVJwfCWW7htkQ66N1Ix4wZUu4XZmFc75osYVJVUp9rb16\\nRufNlNHVDf2kXxGAAaqDMAFVXl4eZAlU58eUr7UdbVfUylZrq5Xfh87ylJXKOn5n7nel1TbNdb1W\\nRXBg1jiAg3DUzw9xMMihWSKW4SHaS8oZGJeEabUSCYmiKEzDPwBTcrZaWzV68i2vZRbTwAlMDwwD\\nM1GtWSVogCpjWBNrxrHpxT2EWYhBOjDZmpEzMoor5XvV59oYbajGxR3HSzeb6oFiNad2qBOjz9eR\\n2W2mjK7znpWVKff3zOuXmSwfAxZzZnTTaflcejbRvO+gnIGZbPg/jHpnDZWcEYRiGWzJXlLOwLhU\\nuJ/0K6VCtrBN5kavSU23aVTLdDZHO0l6cGaWZ2a9nVWCBqAi8WwLG2EaGin+XtIzToueb1O+V0c4\\nYGDYjrbViIKSYxBlkRlHENjBgYdfzmI3R8bi1p6qnlmRoRt1p2yRVjwrZIFzo3OV1xlYRV1U98uU\\nMzuccaz4K1NZpzANjdAQoOzdidqJyu9eSlkRCdDn2s3+lgdtuqI65+wwhGU0y/D8EPuHHJolYllK\\nZjpeB48MH4GEnCnlDIy15XWjX4ECTDKz0QaUUxM4AdZqayaF3XSbCNMQvaiHpleS9ORKolNCzi1B\\nY0xNIdalaINkYGbXbEVbZkp93ambkrLy8MuaXYPNbQySgTGSNlffc5zHsPKDKaJMosvDZslyLuLI\\n7DZTxuKWKpXbMcBlJqWdJwdhAuMBbZMRsEnFs1l9NVrRbFKeebfIYzkDM1nTXM7caMWj82FZnh+C\\nOGqW5VnYS8oZKDk1pVIi3aOi11Ddj9J0mmo9l7nJ5ui+GsYYLKEcpjiPzTo1qwQNGEs829xGJFS2\\nRgeJtLqla7mm1yXKIpPJAWBEC/QaptdWz/JgC/vQypQnVTw1izgyu82U0WVp2o6WA2OucNH22pWh\\nypvhZiUw5ggHHa8z9TmHybDieFjcwqq/OnXcVrQ1Xv93FM92E1sI07BiU1veWAjgsIRlNMvy/BD7\\ngxyaJWJZIsw6q7GblDOgFrQVf8WkjHOZgxVVp0ZL/p6oncBmuIkkT+DbPpI8QTfqKuPGgEyOJTr1\\nRn5WCRqgFsgTtRPwLR8Od0zkKsxCxHmMYTzE5mjTGKMytrBxIlBiB2WnQEKa5sq6U99zoz4L7cjM\\nyqpMZk7msdtMGcGFUTArn1+r5ZTPPdkHA2Cums4wGVYMhS3smXNkJuWZAyfYNQqWF9UZOJM1zZV6\\n50MoyaCoGkEolsWWLCLlDIx7H7VTI6U0PYxaSjjOYvTQQ8ttmcw3ZxyMj2ej6ay/FhnQdmheCRpn\\nHIETmAb/KIsqogGjbITNcNOUt5XXKC04MGv+mC4T3m1+2G5oR2aQDKYCW4KJhQZI7zZTpu7Ukcsc\\n50bnKms/g5oLVy4fi7II29F2xaGaDDZqJsvRbG5jtbY6ZSe6UbdiG1pea9dgopSyct66U6985+VZ\\nauUezYOyLM8PsT/IoVkilmlD5tu+2hTvpJe7cXdmZsG1XHT8jikry2QGJpmpNwbUhllKiVV/1aSs\\nHeGoQV1RF02vaYZuWtyCgDCL7LwSNEA1lXqWZ+5tI9xAL+phWyrZaZ0NanktM2ytokzjjhf9smPT\\nT/oYpkNVhjYjmzHJXo7MIjKfu82UsbgFxmZnZSxuVQawaUNYMVI7EdBZ9zDpzDjCmakuo6OXmkWm\\nV5dLEybnAeymenZQyAgRhGKZbMkiUs7AOOPbT/qmv1JndfXmN85idNE1QxS1SpruiXEt12yetY3R\\nDtG8EjRAbYKbvGnesxVuoRurEi3BBHxbDfzUgz+13HL5PLPUK9MiRVqk+3JsJgdGm+9xpwF+L5u0\\n20yZptuExa2Zc2Mc4aDttSvruu5Z1UyWoZWZPHaeMzNMhpWMkf5Mu1F27CYHNx+msIxmmZ4fYnHI\\noVkilu0hanttJEMli1nIYkrKWaObBrVSSVqk4KJaMqCNWcfvQMQCg2RgapkH8QA1p2YyO4Kpvgzd\\nHzKvBA2AiZw5wlElBZKNRQPCDTTdJgQXWPFXZka0XMvFmrVmmiW1MSpkgW7cNcM55y2Sk7KemkUd\\nmb1myui5MWEaTjVyTkYGtYRneS6Mxa2ZmRRd/lGWXZ6V0QLUBqTsfEzWls8izdMpSecy5eyMlmE9\\nX5bt+SGIo2LZnoVFpJyBcX+fLm3VgjNlhyjOYmzLbdOobsqHd/pudDZbQoJzjhqvVWZgzStB06pn\\nURahQKHmrGTSlO5qqeW6XUfdne5B1M6XVl0rr+lpobJFusRtlkMyaYPK510kuFbO6syaKePbPvIi\\nx8ZoY8rZaTiNiqJpIQtsR9uVLIpgyo7Oyn704l6lt9IRDlb91an7jbO4Uo6mFUd3Q3//Gi0brZkU\\nljmoVHOZZXt+iMUgh2aJWDapwEWknDU1u4ZCFiYtHOcxPOFVmkK1QWq6TZWdibsqe+DWEaYhcp7D\\ntVzkUpUq1Z16RQZTl6C13BZymVdUbTzLgytc9C2lzKYHp+lSMm34yrNrymj1tcnomO4h0oNDdanE\\n+ToywO4zZfT79ZyEMoIJU16h0eov5X6ZeQ6KrqsuG855x6Z5Wol+OcLZ02Bow1o+92QzaDl7cxgR\\nNYDqnglCs2y2BFhMyhnYCcKUFNL03LKyU6OlfrUCpu6xEVyYTLeRhodEza4hzuKpEjRd/lzOQHOu\\nyt+iLDI9lgwMjuVASmkcHt/yZ5bwCi7gc+U8xHlcGc6p5Z/L87aiLJo5D0ZnIiYdr1nsNlNGC8CE\\naYhu3K0ExixuoeN1Kk7KrH4ZV6hKjFklxt2oW8m4uMLFir8ydc9ZkVWEAmxuo+NVe3NnUc4k6T6l\\nMpOly4fBMj4/xN6QQ7NELGNUYBEpZ03dqZssAQBEeYSAB5WSAZ110ZkTrVHv276abZJG8GwPEiqD\\nENgB0kJtqtMixSAeYGO0MdMxsYWNyxuXm3rbMAvN7JqNcAM1q4asyODbfmV2TRk9zHOyEVMvxlvh\\nFlzLnTJkDGzhoZB7zZTRUtjlyNNu19hPv8wsZ8azpvujALWRKBsqne3Zi7IRn9XsX46WTpainQ9U\\nckYQimW0JYtKOQM7oiROYHow8yI3jo5ekypOje0riecdp0YrROq1spAFPMtDVmQm4zzKRoj6qvdm\\nypZwG62gBddyzfHaBg3ToRGaifMYgR3MtCWCC9R4zcgJlx2bOFelznEWm7EFk9/TIn2ce82U0cOs\\nN8PNSrYFUPZ6cr7YpNSyPm5eFmU72p5SF+t407LLhSywMRormulsz16fb3Le2eR9TAnL7CKQsB+W\\n8fkh9oYcmiViWR+iRaScNU23acqZAJhelLJTozffTbdpxAJyqbIzWZFVmkZ7cc8M8Bwl44VzK9xC\\n4ARouS3jYJSjRyfECQzTIWxuG+dklCn1mobbQJyp/50V/dIN7zW7ZgQHdHRPRxZtsTO8bGfw5qJN\\niLvNlNFGMc3TqZIAwcTUZ5xVNqabXGdliKSUFXlUYPZgTWBcvjapaLYXk2ozs8r8DlOqucyyPj8E\\ncbFZ1mdhESlnjSMcSHuc7dUlW7okDVAb2q1oCx2vg5pdM7LOnHEjm68DJkmeqNkzyQiDdFyWpUUA\\nAjtAzalNzeeqO3WTdS9nc/pJH55QJWau5c5t0i/L7Cd5YkrL9LqtZaptrj7bXmIrmt1myujA06yG\\nfsEEOn5nKpA0WTbGwIyzOMksCedZgzX1sdrG6/NOCv3MQkpZKU+bNZT0MKWayyzr80PsDjk0S8Qy\\npzknpZy7cRdtrz3z2JbXUn0fO4tdP+mj5bamnBopJVpeCydqJ4yss5Yl3g63Tf8IADOcU2/ItcFJ\\nixQN0ZhayHQjvG/52I624VquiWRtR9uIRGScp3kKK1otBxjPhNFkRaakLh25UIZhr5ky+pg4+//Z\\ne7ce2bY0O2jMOdc1rhl52XufU6cakMuN3NAWuBECxAMvYF74kfwCJD8ZEC/YyMK0kaChLSy73d11\\n6twyIyPjtu5zTh5mfF+steKauSP3zqxao1Q65+zMjFvuNb81vm98Y+Q7+zT7Qj5petLelznU1du3\\nX3NqilOfspzr+ka/V2B/UGZe5Y28iUvonQmd5KxDB4e3XEvOsXImhF4Ii+3SN8m1yBGN/myWzVh+\\nRkHDQgjAAvPULfcXxn0mAq5hlVWuBgQqQOzFLM/a1wyiYE0iYOSGllYpClM4d8o92TV1GGuQlInL\\nBdPbppaFdRbMm1DMUzflpzJlaEK1yBeNG35gvzuZsQazdNZoou2TovHrtZZjEgg9v3fwfmCezxuy\\n6Um8/3HbWJfb/DRyX6vjNYxlCG/5+ulwGB2heUN4y12BtpVzUiYIVXhwxHsVXcGkhg/JeT7nUTQV\\np6zKgAxMau7X95wrY61FpjOE0jl4ldr92cfBx0Yi8DEXNHrdN70bpKUrRHEVY5EvkOkMRVpg4A9Q\\nmhI9v9dYNmzLBEbhyHUG8xW7sQkhkOsc98k9Lze2i+GxTJn6cui+nRy64W8XuOfsywDPIzOA+93W\\nv/eQpKKNc5KaG3pn/zLp2YROctahg8NbriXnWjkTIi/i3RXATVoiL9ohNSQ/i7yIs1DITMVaZxAg\\nhWSjmbveXSNiwMIedEGj101TAiVdnlh9WhOqENpoBF7A2TX0epf5kmsh2QqX2rmf1Q0Gsio7mFV2\\nTqYMsDFNyJ4aNUcJV7/bZ36py8b0hD5vMlxog6YtdfLT9/uNTJg6VsWqceaPwtFZTSxtNP9uAacS\\nab+e+uOeu7d6Lt7y9dPhMDpC84bw1i+ic62cAXf4X8fXmKbTrVQtm+E6vgawlZ0lZYK0Sp0dpvR5\\nrA+4sM3KVohkhDiIuTM2DseIvZjH0cdc0OqvPfRCLPIFy9BWxQqLwpEb0laTHXF7v4WyXihVeVks\\nGwcqdex6fo+7ZOfIy6y13FGsg5zb2kjLtNEZqxfZfSCNdSNDYJO7sA/t8LLnpF2fKjBtwnOpBU7C\\nW79+OnT4Unjr18K5Vs6E2I/d7smmI59VGWI/xigcMTEqqgK/W/yOpcv1hhTtJYYyxCAcsKmKJz2e\\nEp1yQSN40sMoHCGrMkghWcqWa2erH5uY3dYo2LkOAXdmD/oDjiuoT++1dVljdWKTVdleK+f6rg3t\\njrYJT+zFGEfjvYRgns0bTbS221kd1tpGPQeO79eQ2QGBJmDnoG4EQLtT7dfyGsYyhLd+/XTYj47Q\\nvCG8hzHnuVbOQI3UJFMej8/SGW56N6h0haf8iWVcmcowCkd88FJWTaACGGsgapuT83yOnt/Dbe8W\\ns3R2MoiTIIVkWcI8nyPyIvbr/2X1Czt4Bd7Wj5/sk+vTFOp2Ubp1/WAlSQG5sdRfRz1TBnA3+HmV\\n70xl9gVwHtqXGQSDg9MTbXRDOga4AnTopoEKM2Gf+cEh1KVkh5Yz23rnS1g119FJzjp0cHgPteRc\\nK2dCz+/xXgzgiAdlwfy8/hlZuXU6u4quEKgAUkhU2hnB0NRECtk4g8nWuO50diiIs47Ii7g5RnI0\\nMirIdQ4ppFMF+DE/Rr3hRSA5G4WFErTVPOGwsA1CUs+UAbYGCfXGmBTSNf9aZ/E+4iPgHE0PTU+o\\naVgnM8fIT6lLzNKto1moQozD/VOcNgpdNGoqZQ7V0TaWObdOnYv3cP102EVHaN4Q3kNX4DlWzoA7\\nVK/jazwkD87nv8qxmC0wiSbwhIcS7j3nOseyWOK2d4tfjX6FXOeca6OEgjGG7TuBbdDjTe/GScg2\\nN+KnJGjAJntG3fEC5LJYuuRinSGpEgyDISpd4Sq+wnV0DSn3a5o96WESTzDQA34NJC/LdY5VsUI/\\n6GMYDBsL/YemMr709x7M+4iJr/yjdp6UdE2HPsk8DpGZylTsKESPf27Xq90t2yeTa5sFXLqjBnSS\\nsw4dCO+hlgDnWzkT+kEftrDsOvaQPMBXbrLPEw6jMc/m+DT4hJv4hif79HULC2MMn+skSRsEA560\\n058fk6AB4Cy1vMphYNglzFjDO5jaaIzCET4MPhycjAvhcsUCG7BVPzXH6HVTxkqdpJAMrR5oCYC/\\nr9002kdMPOnhOr4+SNzIoaxOtkiCvQ/aaEzTaWPCMol3nc8OYZ41c2r21cS2dPnSeC/XT4cmLmMJ\\n0eEieC8XEVk5EyjI8hC01axrpk7+Y/rIXTNPem6nQ4UodAEpJHp+zwVzbSYz9eJDKHSBWTrDKBw1\\nxt50aM+zeWPPpA5jDS9i0nORrTO9n6zKcJ/c79hdtkGGBWRFTbCw7DKzLpykQRvd6AQCrjt2KNOg\\n0MWOk03kRUeX9Ok91MnMsclM3WobcIWzPeI/hnq3jCZMO99TMwsgDfml8V6unw4dXhvv5Vogi2IC\\nWTkfQl7lKKoCj+kjFsUCpSmRlAmUcMSCCMZ1fM3L9koqxH7caLIYmMaeIFkph164c7amZdpwfGyj\\nMhWSMuE6MQicpA3WEY7Ijzjj7Nh7A9xZLYRAWqXuXK1N72nqTw5ulanwkDw0yAw5k+1TKRS6wP36\\nvlGrIy/iXaJ90EZzM5IwDscHyQzt2FC9oobmue5jSZnwcwmIvVOdHTXAhaXLwPu5fjo00U1o3hDe\\n05jzlJUzefQXuuBCMIkmfNhZWKyLNb4dfovCFDwdqGcLhF7YsHWmx7bWbp/Has6lOUeC1nYS86SH\\n294ty8SucY1VuXKmAUmBYTBkQrav41XPlPGVj9veLfIqZ4IghICFG/E/po+IvKiR+OxJD6EK95KT\\ndgE8NWUBtqnKbTJzqGBRh6/9/ed20/Y5zeyz7Xwtq+Y6OslZhw4O76mWnLJypiZQPWS55/ec0YnV\\n3PT6NPgEKSR3+LXRbOmspOIATnoMC9uY+gOu/tCOzLpYH5Wg0RSczjYpJHpBD7720bM9zr0pTcmm\\nASSZa8uRgd1MmciLYKyBsaZx7pfGubplZQZfbaXQgQr4vbaxLtaNvRTg+JSF3h+5jxKuoquj5/cs\\nmzXIzySanL2sXw/mBnBQTt2uJZc0liG8p+unwxYdoXlDeG9dgbaV81P2hJ7fa4Rd1eErHx8GH7DK\\nV/CU+6v3lD/htncLAdHIFiBSQyThMX3kg9LCQtjNISbcfz9lTxgEA9z175wtc0uCRg5me1+X9HHX\\nv2Pf+8AL2ON/ns+RVinG4Ziza6gIHFr6HwQDjKMxP0Ze5bygWuiCs3km8f7D3ljTKKbAdmpybO+k\\n7X4mhNjRa7fRtn6mVOlzUS8uhyYv9YDQS1s11/Herp8OHV4L7+1aaFs5r4oVQi9sTD7qEMJNIigD\\nhpbzh8EQV9EVy5V3SM3G2KbubGaMy62hNc3KVDzxqZuwEOEIVMBTmbYNf6hCnniQfK3UJdLKPU5h\\nClYC1LNryKSmnSkzDsfoB31oo1mKNstmvHdU2Qq+9HEdX++VfVNNq5/TUkhMosnRvZPKVJgm04YJ\\nwSSaHJV31aXfAPa6qh1D3bxGCbWXbL22sQzhvV0/HRw6QvOG8N4uIlq+vE/uUeoS82y+dwlRCun0\\nwZslzb7fx2P6CAvLBycZC+wLTFNSMakhxxgDAyU2TmGborIqVqhMhUk0wbp0HSna3VjmS7Zmrk9H\\n6DUBAARwHV8jqzLMxbyRXfOQPGAQDHiytM/9q54pAzhtr5IKT9mTI2O12ldoJ5sYBsPG50W7LM/Z\\nlwEcmanLxk4ZBgCb8X7NZODYAuw+tInroeLyJaYzQLdD06ED4b3VEpo+P6aPSKoEaZnCl/7eWkKZ\\nMb7yGy6ORISGoSM183zOMt96LYm8CHmVc4PMwP0s1RPATf6ttoi8CJ70uPFDS/okk6YzOVQhhuGw\\nsSNDmTTrcg1Pesi1S71fFSsXGmotu0q2z/Z6pgzgaq3Vzla63oBSQrGRTqnLRk0iaXd9YkLk51hd\\nICkbO8SdMAwAwISMMAgGzzrrqRlHGEe7RgD0PITXMJbh1/POrp8ODh2heUN4T2NOGp2XpmzIjhb5\\nouHTH6hg58Y/9MJGpk1pnBf+dXwNIcROYBrl11zH141uk7YaUkgoobiTRN030vk+rB/4a0mZoNAF\\nPvQ/7Giq64i8CGHfWTxLIRFrl12zyBdY5ksMggHW5Rp9v49hOHR2ozUXNGC7BG+sQc/vIfZiV7xM\\n0ci6mWUzLsICYicI7dhCKqHQRWOhXwq517e/jrzKG1KxY4Fw+0DFmHCouNRJzyH3s0uhk5x16ODw\\n3mpJVmV8U0ySq1znvPAfqpAdzernLDVuaGeQCA6RmqfsiUnNY/rIU/HQCyG15AYZy8+E4kkNTdTp\\nXHtMH7kBVOoSS7PEVXx1dNqhpNpaPFeSs2vyKscsncHCsotm7LvognqmDOCICTunSYlYumkWfSYk\\nayaJNzmDzrJZozEWezGuoquTjbFpOm2Qmev4+uikhXJvCJTJ9hzUpWahCvfWvC9hLEN4T9dPhy06\\nQvOG8B66AmQ1XB/7jsIRCu3SkoUQyHSGX/V+dfTgpFwBOghznTdyavalQJPtsic9PgDp4PWlz4Gc\\n62KNZb50ezX9W1cMqhxKKvjKx7JYcqfuEIQQGEdu2vSUPUFAsNXlNJ2iH/QB6z6P6/i6QQZIGlCH\\nJz3c9e8AOJlXXV5QaJefYK3lLt85+zL0s88lM6UudzJjnisDO1dG1u6oPUfO9ly8h+unQ4cvgfdw\\nLdA5lFYpnyWUIVOa0tkrQ+Cud3f0HFTSyZNoF5BMTuryM/rzWTpjUkP7J3STbGGdhEv4HL65LtxZ\\n7UkP/aCPtEyRV45oDYOh24vBfrOAOiIvYjJT6AKLfMHv29c+Ij9iQ4I6eUjLFPN83iAmnvT4M2nn\\n7Vi4rJh1sWYyCICla8dAqoE6mbnp3RxtdFFTjuBLH5NocvLzqCMt00ZWz6GQzi9hLEN4D9dPh110\\nhOYN4a1eRNSpyqt8J3AScAXlQ/8DlsWSD9BT9puA67DUFwHJEewqumICAWw97SfxZCulEk7KRYUn\\nr5zvf/0GepbOMAyHuOvdoTRbSRa5oA2CAYbB8Cjx8qSHUeD2b4w1iLwIy2KJrMxgjMFIjDDLZkjK\\nBMNwCG30TvhZqMLG4Uvj+FWxwjJfNvZlpskUvaCHbwbfnDyw8ypvvF8q7MdIgza6Mdon6cRzoI1u\\ndMpiP977Ge4zDHhNdJKzDh0c3nItScu04WbVxiSe8AQC2E5qjoHCF+mMJ3nYIBgcJTWe9NgsgIgJ\\n1bp1ueaznIxfRuEIUT9ykrQzgzgJ1lqUukRpXOgm2UQDmyBi4fZuSlOyK2jdDh/ATng0vQdyh5tl\\nM37MvMpRyQqfBp9Onr15lbMMHNi6kx0jM1RH63svpLI4F5SJU39/+2TPX8pYhvBWr58Ox9ERmjeE\\ntyaZKXXp0o/1/sJDOyg0UfCkxxaSJD07JWMaBIOGbXBSJm4ZctOlocOuMlWD1NB+yjSZNpY8yVnG\\nWMO64tKUGAZDRF7UcEFbFSsUutjrDEO2mNpqQGytOBfZArEfc/7OU/aESDlbzlk2ayQ3K6Ea+TN1\\nkDU1GQvo0hVIClmbplMe3e874LMqa0i+lFQnyRl9znWL5X5wvAjvQ73I0t+BfWhPgZ6zn/MSvLXr\\np0OHr4W3di1QrkpapnsnGkoo9IM+Ys+d6/WdQLpZP7Vg7isf/aDPE+vKVNxYm0QTzLLZXlJDZgFk\\n4kI7jEoolnN50sMwGKIf9OFLn3cpzwnipJvxVbGCxfaMz3WOcTiGr3yeVBWmgILCj+WPrCIgWfWx\\nJXuyeiY3UGudlG0STZhEkhS8jX1k5ia+OUoirbWYpbOtnHgjTXvuTgs51dHzHsqzy3XeUATsiwa4\\nJN7a9dPhPHSE5g3hLXSYadpRH2PXIYRAoIK9afZtK+en7Al3vbuTN8yjcARjDd8Ar8t143DbR2rI\\nqpMKESGrMu7yGLjXT7kvV9HVjgtaoYudIE5tNCpT7RTeyIswGA2QlAkW+QKhcqYBj+mjc1kLBxwy\\nede7Qxwc3hchQiIgMApH6Pt9aNuc7pBLTjtduk1mqNt3qjtYNxsge+bnSsBKXTYI7qFOWTts87U7\\nakDXVevQgfBWagnZLe9zlxQQbGPfvlE/ZeV8CIEKYP1tN7/UJdbFGv2gv5fUkIQ5LVMs8gWSMuEz\\nUlvtEu6DMUI/5PdEeyqHXNDqe48kL2u//37Qx8fgI39GnvSQlRnu03usizVCFSL0QpS6xHV83YhE\\naIOUDcYaJkuBCpxJy+ZHtNVIqxRKqAaxyaqMd3kARyxvejcnm0/zfN6QiU3iybMlYDRFI5AT6T58\\nCavmOt7C9dPh+egIzRvC17ohoyyVvNpNryfQImV7+b2NupVzZSrM8zmuoquTr+Equmos/S2LZWOC\\nQNkCpS7x0+onnkZ40sNt/xbTZMoHOoR7vUIIPnQLXWCaTDl0bFWsGns4j+kj+n4fkRftEBkpZON9\\n03LqY/qItExxFV1hWSyxyBbIvRx3/TssiyUqU+2GbW66dfUdGyEErmJXWCtTNbIIAHBns+f3oIRq\\nSDXOITP0GPXf7SkL6H1oj/1Db5fUEuphm0qqZ9l3vhRdEerQweFrknuSax0KJPal74xSjhizALtW\\nzutyfdayeei5vRZq+hS6gCgFen6vQWq00fh+8T186XNwM9k6A1tpcNt4hhbwaZGfXNDqErRCFzDG\\nINPNz4CW/unmXwqJYTB0pjOFM6HxlZveaKvxafAJgQqwKlZ7s2uW+XI3WDN2WTF14x4CERtPetBG\\nY57P+WtKODfRU3WBnN4Io3D0Iiv+eT7nWkt/J/ah3kR7bWMZfs6uOfYu0RGaN4QvfRHtC7+sQwrn\\nynJINrUPZOVMi4JJmSBU4VmHEAVvEgmZ53OWl9nQbhOLLRpSMU96+G70ndtt2RSjTGcIVIC+3+ed\\nEW2d0804cg5ogQpYglaZCtN02ggnExB7u4JUKCIvwiSeYJ7PeUEz1869pu/32b1nFI7QD/os+arb\\nbtKyKX2+nvQwIMz0gwAAIABJREFUiScY6AEW+aLhwvOQPHAoGy2PntJtA9sCS9hnOX0O6mP/UwnN\\nX1LvTOiKUIcODl+jlrTDL+sQcDei5xid8M9sjFGo8aSNRlqmZ9WSyIv4/AUcyaLXcB1f43eL3zkL\\n5I1Ei6RfSih87H90eylk61ybytTfW2lKdikbyW0QZ1ImXHN6fs811zb5ZO3FfGutk7mVLgogrVJH\\noALFeTcUE7AwC0RexE23utIA2O6w0OcrhHBxCTbYITaLfIF5Nm+4kd7ENyfJTFZljZ0XqkXPRV7l\\njdd+yAgA+LLGMoSulrxPdITmDeFLWAXSzXiu88aNdR2+8ncW2Z8D6nLRlGGezw/qd+sga+ZpOuUb\\ncEoeVkKh5/d4UmOMwTyf42P/I3f/r+NrzLM5FxOSzQ2DIeuX6yGcg2CAm94N7tf3PL0gCdpt7/Zg\\nsFde5dxZCr0QH72PKHTBrjXLfIlVuUKmHZmZ53PMszk85eydCaEXHrzZ95WPm94NSxae0if+TNbF\\nGqUp8bH/8eTvotBFo3CEXviiaUnbMpMC4fYhr7Z/t04Rn0ui0z136ODwpWoJ2S3X5Ud1BCpg2/qX\\nyITq+y2Au6Guu3cdQ+zHTEboZ2npnnZj6H0siyV+NfxVw9a4betc6AKhCp0hwOZnK1Pxvkrsx/hp\\n+RNW5VZGtSpWuIqu9k4+yMGTag9ZPEcqAoSrcVmVIdc5FsWCz1Hat6nf2Icq5P3SNojY+NZHoQvM\\ns3mDJJYocRPfnCQKZM5DCFSAcXiYiBwChX0Sen7v4B5m24DmSzXHOtvm94mO0LwhvGZXgG7Eydq4\\njXb45ediHI1RrAtoq9kTn8Izj4FIzUPygLRMUZoSSZHguue88MfRGMtiCV/6bEJQn6KMozGUVI29\\nm2WxxCh0HTTqsC3zJZLCOZNN4gn8wufcGV/6HMpJ0rZ943sArFfuB30M9ICnSlHl3NAe00dIIeFJ\\nDxJOQkdk6hxiQVroKnDvo9Ql3yRQZ28YDPfqiqm7x69VHR7rn0LdMvOUhKzeUXvpjcxL0EnOOnRw\\neO1aQtOYfXuWZHhC04nPBRm9kOxoXawbTl/H0A/6sIXFIltw8HLsx1xLFvkCPc+91tI4Axm6ufaV\\nDykkO6BZWGQ6Y6tmeu+VqTDP5s69THnoo4+kTFhOFqoQaZU2pultqRjgSMlVdAUlFS/y084qfd6L\\nfMFBnCR5G4Wjs6R4Uki2xFZSQRsNT3q46d1AW+d+STs47c+WcnyIyHnSe7ajGWFdrhtmAsdee116\\n/SWMZQjdhOZ9oiM0bwiXvoioO0UZMftAkrJLHxRSSEziCR6SBwBuUkA2mqegjUakIqzyrSPXLJ3h\\nJr7BKBxhEAwaKdAUykmkZhAM4EmPlx2NNZhnc4yjMeu7eSJjnHRtGAxZ3tB2QRsFI5YXEGihtd51\\n85WP294t1sUaCyzgSx8PyQPm6byxhK+kOotYkG681CVPVow1LJED3O94ns85nJMet+4cBzgS0veP\\n5xAcAmUdEI699ud876XRFaEOHRwufS2QyUd7/6+OQ+GXlwBJrmih/5xYAMBNZZIiYTIDuOaMkgqT\\naIJvBt/wQr21lmMDiNTUJ0R0/uc6d4oDobAu11vpGgTno3wTfQNYbG2fNy5ooRdyXSGwMUxNjkb7\\no4F2ZGYoh3hIHzBNp4B1k3bhCV7yPwdEoig3TAln81+va4UuUOqSwz6pmfeYPjbcyK7j6xc1PrXR\\nnDEH4GhmWju8uaslHU6hIzRvBMYYaF3brfBe/qs5ZbespEKoQrZbfi0EKsAwGDasnI9J2chi2VgD\\nKSWue9eYJlO2zcx0hoEYuE6WaGYL1FOgAdfVu+ndsE++hTuUe14PoQq5uFWmwlP2hNveLXfu6trk\\nZb5kMkSLj5RcfeizI2vPH1Y/IFABruNrnqYEXuAsLzfZNeNofNB3n8gMoS5RS8qECyngCudT9uRI\\noz9AZSsmg0SmXvq7fo798rmmAZdG+/pR6ss8b4cObxGXksyUusS6XB+1W6ZpzGte61LIRs7MKSvn\\nvMqxyBc8Ue8HfQ4z7vt9NoDxlY/r+BqzbMbmA0/ZE8bhmB+bJk71ANC0TJGWacOZkj6fSTThn627\\noC3zJX5Y/oDQC7mWBCpgp7V98JWPgRjgh+UPKLWLH8iqDKUu2dKfdiSPTcTqUmzAkU+asNAubT2c\\nk4hNoAKnDKgpEybR5MUN0GWxbEx5jjXZ6uHNX8pYhtBJzt4nOkLzRtDuCDz35vNz7JZfE20r51k2\\n27FybqcdE3zp45vBN1gUTv5lrME0meK2d8uF4FBgGuCKxW3vlrNqtNUodIG+38c4HGOZL+EpD1JI\\nzLIZRuEIPb/HuzgPyQO/plk6wyAY4LZ3e3K3qNQlkipxRVGFWOQLfAw+QgiBZb7EQ/KAYTAEAuB+\\nfc8SNPpMrLWNjiLgCFp9GZZ06UmZYFksG/KH3y1/B2CbnfMSe2bCzj7MkYXc9p7NSydCL0Fbbval\\nZG4dOrxFfE6H+Zzwy8iL0Pf7X/Qm8xwr57zKsSyWO1MkKSQ+DT454dim0bMu1xgIN80n97M6qann\\nvtAuYD2rxsKycY6xBoNg4AxsYHnKEfsxBAR+WP7AjmdZ5UKZPw4+HsxdIZS6xGP6yKHJ5KpJoZyr\\nYsWy5KVZshy5fv49ZU87i/WTaMLfo6RCT/Z26rCFxX1yj6RM4Es3eaoTveeCsogI43B89Jz+GsYy\\nhG5C8z7REZo3gpdeQCQpOxZ+eY7d8mvikJXzISLDo/vNa/aUx5MabTWm6fmkhsb5pSm5g78u1xBC\\n4NPgE57yJ37+Rb5AqUuWkk3iCZ6yJ2ijWdc8z+d7gzgJ9Y4c4BZTJ/GEpW6hCp3Fc7FAWqUYhSMs\\nC2fTPA7HbNFZJzP1XIPG5yQE+kEfPb+HdbnGqlg5w4DN34VZOsNVfLXjrHMu2lkypxxm6ns2JL34\\nUugKUIcOW7zkesirHEmZ8M5IG570eBrzJZym9uGQlTMFHbfNCQScXTNJm8i0hSRmq2LFGV91UgNg\\nh9SUxjWq0mo7rTLWQEmFj/FHGJhGho3Vjtgs8gUCL0BlXYgyWTcba1CZ6uC0Iy1TV9tqE41vh9/C\\nVz6yyrl4kltYZSo2DShNidhzaoNZOmuc4bEXN4wP6vCkx9EBJBGnHUxyefscAkuGPoCrJcceq9DF\\nds/mCxrLELp68j7REZo3gueMOLXR7FS2b8FfCMGSsi85jTmEtpXzIl9AG71zoLWJDCFQASaxs3QG\\n3BTiMX3ETXzDNsvtwLRxOHZOMdZACIGb+AZP2RPnB1SmwqJY8DSGpG7TdAolHJkJVIC73l3DinRf\\nECewXyImhcQgGHDic+zHeMqeMApHrqNWLDFNp+j7zijgIXlAZSv0vW1GzCEy0/jcNpIyJZSb0gln\\nw02f70PygFCFjfyDc1DPkjknnflrdtQ6h7MOHbY4t55o43JJ6oYpdZDV8TEnqi+JtpVzVmZYZAvO\\nkeHv2xAZOn8JdCYviyWstVtSEx4mNcNwiFKXTAwiL+KoAzpTc50j9mNoo9kI5zF9RF7lbC5AZzTV\\nt31BnICrJYt80ZCICQhM4klDqkbnra98pGWKdbmGr91UaF2s8dPqJ97ZBByZmcSTk5+xJz03bS8z\\n3qEJvRDD0MndaCr1HNlZfdonIE66o9XNbL6ksQyhk5y9T3SE5o3gVEeAXLbqnYs2fOWzp/xbAx2y\\n83wOYw1KXbKV5SEiUweNyYkUFbpgMwBf+Q1SU+gCP61/wiTaphdLIfFx8BGrYsU6bArbJFIzL1wH\\nqbIuk+YmusEgHGAYDvcGcQ6CAYbBkBfw65MmX/k7GTFEkGiR9Dq+RlImHFTmSQ9KKOe+Fgxx1787\\nuyNW6pIzbwbBwOUu1KxJc53jPrlH5EWsvT4GbTRLO4DT6cx1vfM55OfS6BzOOnTY4lQ9Ibvlzw2/\\n/Bqg7LH79f02BDMc8JnW83s8dTn087TbSU2wZb5kUnMdX2OWztjN7T65Z/ku4G7Ib3u38KXfsHVO\\nyxSRFyHXeUOuXOgCsRfjpucacLSXVA/irEzlsss2u551yRw5itXPbCJIJOPqB30mXYt84ZbpN8d1\\nqELcxDe4ik8HXAPbhqGnau6hNQJC0mIyJDjVNDXWNLJr2iRz3/N/LWMZQjeheZ/oCM0bwaELiC7u\\nY+GXl7Rbfg3QRCnwAojcnbJk5fzt8Nuz5XCUK0Ae9rnOMctmTGrG4Rj363vuNM6yGSbRhNOcAZdq\\nrITixyhNie8X33PYJpEdT3hIqxSBF/AeSj2IEwCTo1A1g0fb+y510DQl8iIewQcqwI+LHzGv5u65\\nQrfUv8gXuBJXJ6cq2uhGN4+MCIw1WBbLxuSEshhOFf36z5wjH2tPZ750R60rQB06bLHveqAbdFpm\\nb0MKidiLXxy8+yVQmQrL3El06+8hKRJ86H/AKDrdrAHAOymrYsWkhuRnRBb+dv63jYV+ay0m8aRx\\nbtZtnbXV+HH1I9sh00153+9jFI64RrSDOAHXkHooH9iSmdDed2mDbJbp/FVC4af1T1jkC3jSQ+RF\\n8AIPQgje6zkGatbVl/HveneQQjpba711+9TWTfdOERuS+NHrO+VO97WMZero6sn7REdo3ggakpnA\\nR17lR8MvaRLzVgsPsCUydbvHq/gK02QKT7qQSdLmnot+0OcbdcDdoNPCvoXFVXyFWTpzUjMIJGWy\\nM+XoB07S9cvqF0cUN12xcTjGdXyNrMp4uvGUPaHv9zEMh27C0r9jF7S0TJFXOaSQGEfjZyVhk///\\nMl/ix+WPGIZDhF7oinWZIvZilKbEfXLPz7+PsJJkoi4N6wduMqSE4gVSugkg0I3NPllGewp4Sr9c\\n6pKldqeMA14LneSsQ4ct6teDlhrTZHow/PI17ZYvhTqRIcS+26ehhtNz4wfIZYuaWHVL4aTaTD1M\\nCW20k24JtWOqQ7bOT+mT27fc1DofPufbBF7A78FYw83HYTjknct1sWYHsMiLeJJ+jjU17VL62sf3\\ni++5aUZkzBc+tNFYFSvOIjtUS2gyBbhJVD0OgchTO4+NiI0nvZ3GamWqRrPtVH5Q21jma0xngE5y\\n9l7REZo3grIsAQlAAaqvGl0KgpKKncreauEBto5r+7qAfb8Pr+9xmvIpK+d9GIZDziKoTIVZNkNp\\ntjaW1/E1lvmSP6N2tgBpp4fh0IWFbf57Xa5x27vFMBziKXvig52e5yq6cqQsusLPq59ZkkUj9ciL\\nnlVQtXFa65veDY/kfz3+NQpTONnAxjRgXa7ZNKBOFojMUPernnVThyc9TOIJBnqARb5oyCTW5Zol\\nC4NgAAHR8P5vZ+3sQ9tB52tMCjvJWYcOWxS6AEIAPrDWawjdrBeXDr98LWijd6bMhJ7fw3V0zedZ\\noQt4lfesxXVf+egHfayLNbuGUVOIzvpSl1xzF/kCFpZvtK21TLTqRgpKKIyiETem6Iym2kiRCZEX\\nYVWsGnbGhS4wDsfPcomkrLVQhbDWIkeOT4NPCFTAAdX0mhdmwaSpjnptANComQQhhFOE2GCH2FSm\\nYpMDIjZ1I4BQhSebXXVjGXqcr4FuQvM+8XZPsj8QUPjlY/IIbK5d39teQJQI/Brhl5cGvZd9Oz5k\\n+0gSucIUR62cT4EWFDPjujlUiMbhGKEfssNLOzBNCom8ymFhOQhzls3gSWffTIYFdRMBwMnbpumU\\n91Mo5+Ype2rkFOhUH3VBI1ChttZyCOmH/gdnw2mdzG2RLzBNnGlAP+jvZNckZdL4rPt+/+jz+srH\\nTe8GhS44cRpwxIYcbZRw+nQhBAewnXofb6Gj1hWgDn/osNZyonzpb6+HeqZZ5EXo+b033xSjiUJS\\nJjuOazsGJyUaVs5UZ84FmamQDFlbjaRMcBVdsVTsKXviKTRNcTzpceOLyEmhCwzDISIv4mlD5EWN\\nMGTKeeHHNSWG4RBJmbjl/2jCtagf9M/ad5ymU34dsR9zPSVXtbRKGxbP7eyadbFuTFKGwfAo+SBi\\n41t/p+YTsal0xWoHABhHx40AADQmcF+rlgBdPXmveNt3yL/HaIdf5vm2M+IHPncnXjv88hI4RmT2\\njaGBw1bOp2Ct+35tNcbRGNq6G2oBwbshvvLhCTepIT2wMQY/rX7ayU6IvAh/NP6jxiLmunSOP5No\\n4m70Nwf9uljjMXnEKBzx3tKvx7/mvRTgsAtaHZWpGjIxmqyQLeqyWGJVrHAdXyMtXSHKtFv4B1x2\\nDRkI0N+N2I/PnnJRPk87fE5bjVk6Yw35Xf80yawXoOc631wSneSswx8qaDGcwi+ttY0bsiiI2Fnx\\nLbheHgMt6B8iMiT9raNt5bwqVnxWHgNN5dfFGhDu8XPtJMSRihoTdzKdKXUJay1+XP7YmNQA7gz+\\nZvgNB0QDWzlW7MUQUvCfZ1WGWTaDEgpKKkghcde749dQ/yyOOV3WyQzhKrri15VXOdIqZZe6pEyw\\nKBaIvRgBAt5vqROP2ItP5uMQqOnVvgew1sm4tdXwlY+r8HB4KCGrMpbYn9NMey1Ya7t68k7REZov\\niGPhl2W1KUAaiBCdfaB8TbyEyBDaVs5JmZwcSWvjulz1QjeJJm6qYrc2m2Q1So41D8kDkspJFub5\\nHGOMeeROBZ4mMnSDnlUZHpIHdpf5afUTdwHJyvND/wNrko+5oLVDRNtkpr5kKoTgm4+n7AnwHela\\nFks8po/oeU6TnZUZPOlhFI4wikYvOvxDL8Sdd8dhcSQPMNYgKRN+n4c6ZdbahjztrXTUOslZh993\\n0DXantICcHlbFkAFCC3w7fjbr/MinwFayqfAyjoCFWAYDA9KydpWztpot4d4pJbQlLqd9xX7MXzp\\n8ySfaokQgptwbQLR9/sYR2M+/0IvhNCCG2T0u4r9mI1laBpEgdG3vVvOC/O1f9AFrV1Lpsm0Ie0m\\nExxC6IVs6wy4HRba/yx0AV/6XIMjz913nNNYbIMICO3NPuXbfSLKcaPnO9Qkq8sK6TP/GqC8OgCQ\\nUkKpt90E6LBFR2heGdZalKZEXuUH7ZY96cEzHrBR7gT+274hI9vlfSnSp4hMHbEfu8N1QyLm+Xyv\\nWwp9hm0SKIWEr3xEXoSH5IFfD8nAAhXw0mhapfzz62K9I88Swvn8e7nHhgOlKfHL+hdOxaYuoJJu\\nMpKUCUZyxBOWfS5ohS5YglbqkhdQ6fUfsrD0lY+7/h3WxRqLfMEk5zF9ZBtRYLOD5IWftbtCLnCl\\nLrGyK2ijXaaC1XjKntj9p32DULdqVlJ90dTwNjqJQIc/BJwKv/Slj0AGwBqABYLw7deSdeFCgdvv\\nhwIozzlXaDmfbtyzKnOT+tZUgKYe9cly/bl85WNdrJmM0OQi8iI3uTe6caNd6hK9Xm+nmUM1kCb3\\nFpb3dEhuZqxhubGvfFhrncT8gAvawmwlaG0y086pqYN2ggLtJjSRF3GA82/nv4Wn3N4REQ5jDZR4\\n2U28kgoBAjZSMNZgGLqmHgWA7zMzqhvLAG+nOdbVkveFjtC8ErTRyHV+1G6ZknelkLDV9nve6kVE\\nGS/7iIwSit/LczCOxijWBYeRPWVPuOnd8NdJj1sH5dbUn+umd+OCKTcTnPv1PWcTUGDaU/bEacjz\\nfA4I7BQAyiIgbfS6WENA4Cq6wnV8jXWxhq9clymtXOdsEk/491l3QQO2ErSe32s41h0jM3X0g76z\\neN7k98SeC29bZAtEfoRvBt8grVLk6xzDYMhdvuciKROXO+E5IkO/D/odzLIZB9DRZ/Y1gzTb6CQC\\nHX5foY3macyx8EtyWJzP5yBu8FavBZKGrcv1TqPKl37jnDkXkRehMhXfGK+LdcNVizK/6s8nIHam\\n0P2gD1vYxs4MhTpDuEwWaiT1/b7LZCl27Yg96SH2XNOuNCU7iLGUHG4ar6RitQPVtbYLGrAlY570\\nGp8buZGdIn5ElNIqRVa61xR4AbIqQ6Ur/Hr864bBzUtd7+b5HFJKxDKGgGv20Wu1sHxfVCc2b8FY\\nhtDVkveLjtBcEHTDf8xu2Vf+XlevtyyZOUVkzgnXOgTqUD0kDwDc8v2qWKHn9xqe9wQiJPse5yZ2\\npIZkGLnOcdO7gSddB+q70XeNFOh5NgeiXVJDz/3D8gfngAaLWTbDp8En/Hr8a3YgA9wU5yF54BBP\\nKSSu4+uGBC2rMjwmj+gHfZaXHbJh3gciZFRgKfDOwmKaTjEMhugFPczzOS+zPsc1rhGKKSUmoUuT\\nXpfrxg1AaUo8po8IVMA3D8DGqvmEtfNr4y1fPx06PBfWWg6/PGS3HKiAmxCNqcEbvhZob6VNLACw\\nhPZzdid6fg8Ls+BsmaRMEKigsStIIGvkfedw3+9jZVeYZ3N2ICPCGKgAv7n+DU/ggW2yfZvU0H7M\\nY/rIdYeW8W97t3vNAnzpcz2l6TlJ0Apd4Of1z1BCsf0yBXaeAyEEen4P68JNm2iK1fN6nO1DJIxe\\n53NqSV7lDZMYem2VqdiMh95rrnOUpoQnvTdhLEN4y9dPh+PoCM0FQBdracoXh1++xTEnSb3qqb2E\\nzyUydZBGmly/pskUNraNg1QKeTKAkxxeSNZFuyy/Gv6Ku1f1FGjAkRobWpZTkVOQsQY38Q1mmXNK\\n6wd957VfeBhHY/ilv7MzMwpH/DgkQftp+ROSwnWf1oXrqn03+u7ZHah1ueYJ0KpYQQgBT3rIqxzL\\nYskWzwA4u+aU5z+99noxqd8cDYIB7wfVte2FLnC/vgfg3HDG0firG1e8xeunQ4fngsIv6Qxq4xy7\\n5bd4LdC5uiyWe4nMKVetcyGF5GwZa13Dx1rbmF4ooU5K2WjfdV1uz711ucY34Te4iq4ghJvaz/M5\\n71auizXHARCW+RLLYolQhchsBmuts3P2Y+Q652lEvcaWxjXy6PdLk5VZOnMxA7AcW/Dd6LtnWxsv\\n8yU7q2VVxjlENAlcFkvEnjOZOZVdU4e1lneDALARAbBpRAZO1kzZb/Q5P6aPSMvUObA9w9zmtfAW\\nr58O56EjNC+EtdvR6bHwy3Ptlt/SRUREZt+ERAq5Ey52CQyCgctE2Szvk5WzFJJlY8dQ6IK1ydfx\\nNabpFAICoQrxlD3htnfL3bJJPGmQGiImoRdiVaz49+krHx/7H93EbSP1WBZL57AWjtm201gDC3eY\\nV6bigkZEqDLOvpJyhKbp9KgLWhtpmfJ0RgqJb4bfAHC7QvDc37N1uXamAZugzHXp9Np1knXosYmE\\n79uDkUJywBu5D9VJ7jSdIvRC7iR+Lbyl66dDh+fAWou0SpGUyd7mEfC88Mu3dC0QkVkVqx25nBLq\\nqOnIS+ErHxYWD+kDByz7yocSCv2gv7Nc30ZapizxHQQDLIuly6QJHZHRVsMTztp+HI4xx5bUkHSq\\nH/Qb0mMyLqDQY8CR17RMEXkRQhU2bvTrIZwAmAgEKmAntqvwioOdn1NLaEcUcGY4ZBkNOMk1ueZ5\\n2kPsx7y/sy+7pg7KawPAcrp9vxtPenx/YazhGpRXOfp+n/dUvxbe0vXT4XnoCM0z0bZbbkNJlyb8\\nXLvlt5BMe4rIvJYtL5kMDIIBW4+SG9ht7/ZksnA7xNNXPr4ZfMMhaNpqPKaPuOndsD65TWqmydTp\\nfr2mQ0zP78FYg1k6Y+lHUibQRmMST3iK0w7hDL2Qi80knrCsSwhx1AWtjfYInxY6AeCu56Y1q2KF\\nQTDg7JqH5IE7kO3smjoqUzVuoI7dWEghMY7GGAQD/G75O/7zQAVsntDzew3Hti+Jt3D9dOjwHJS6\\ndKG5Zbpz3gJgWVHP7z3rmnor10JSJljmy71Ehqa/l57saqNdQOTGoQxw8qZSl/gw+nC0flE4Zd0w\\nQAiBT4NPgAVbYpNJCpnDXEVXmGdzPqcX+QK/rH9puo2pkHctSc0BbG2dIy/ixfx2CCftllo4JUGo\\nQkR+xIv7h1zQ2ih04ZpgtddE2TCDYMBEJlABZ9csiyUi5V5bO7um/dlRPg+Ao5JqIQQ/B9VowMmd\\nPeUhrdIX7+ReAm/l+unwfPzeEZqqskhTA60trAWEAJQSiGMJz3vZ4XnMbhnYXqCfM7n4ml2Br0Vk\\n6pkygBtLj6Mx5tkcvvKdO9xmLL8PRC7rqB+ESipe5qT9j5v4hkMjJ7EzCljmy60bjbV8E0HTCpr6\\n0I4KsAnaTKa4jq93QjjJUOAquuKdn0+DT7wYesgFbd/7qy9L+spvFEkh3EJr7MdcqCi7Zp7PEZQB\\nRtEIuc6dSUIwwCAYNJZkCfQ7NuUKevUDjM4AUwHSg1QR1OBbSH/Ajj+3vVusilVjokNZGDQl+pLE\\npuuqdXgNXLqeUEeaJp37QK6KL3UN/NrXAk0B2mYuUki37/cKRKaeKWNht7si5RrDwBkMlLo8WMey\\nKuNpO0EJhUk8QaCCRhAyk5raTfs4GgMZMEtnfJNO0/pBMGhMK0IvhNSykTdDkxraN6HPjuzzaT9T\\nCYUPww+QQh51QWtDG81yNcDV2kk8aXwPkQyaFPb8HksgC1Og57mG1zJfuql8TZ5cJyae9ND3nTnN\\nqXpSmQo9r4dCF4j8bZ2ncNPnuKZeCl/7+unwcvxeEBprLfLcYr02KIrdThdgsVoZBIFAvy8RhuKs\\nA5VkTIemMbRsfmq34xx8rYuorWklvCaRAfZnygDOJ19AcJfsKXvCXe+ucXNMC7Ptzh+5xxAiL+JA\\nNMD9Ph/TR1zH1xBCOCmC9BuSwaRMMAx3Mw+oE6eEatg6U1bNJHYhnL+sf0FRuQ7PY/qI294tk4hj\\nLmhtCZo2upHcrKTiItGGJz3c9m5daFq+cF28jXzuIXlgfTrt2ozDMT8HAAgAQblANv0LmOxh93cF\\noHz6V5DxHXT8EVZG/JyjcOQ6opvibOFuLJIyQT/oYxAMvkgx6opQh0vhNerJKbtlCtU9Z1fhFL7W\\ntXCMyAyCwckJwkuxL1MGcFOCSTxhOdg+K2fa+6g3dwA3rR6H291AJd1UiXZzaCJRJzVCCGR6+/vN\\nqxzjcHznzhRQAAAgAElEQVRQeiWEaNg606TGkx4EBOb5nBtVhS64kUS18JALWjuI01iDaTrdGr9s\\nDHT2/T0TQqAf9BGaEOtizUYNWZVhVax4z4UavDTVr39+o2AEnfyMavHXR+uJiG6AYAIRXCHyI9zE\\nN86lrkb0idx9SWLT1ZL3i3dPaIyxeHrSyPN9haeJorAoCo0wFLi6UpBy93ClYKhc53sX/IUQLCm7\\nZAf6S485jxEZX/qvtph3NFNmQwyPWTm33VLoZw9ZPcZ+7KQEm2XFXOd4yp4wCkecK3AVXfFIv+f3\\nkJYp663bGIZD3p0hORuRGimcZI3SpD3p8RifHmufC1pbggagEb5JNwSnbgZIY0+yCcquIVc2KqyU\\n2TMMhpDWIFj8a5TZ9OTvzqT3EOk94mCMdPh30NvkNtz0bvimgiRsFq6LmZQJ+n7/rNf/OehkAh0u\\ngUvWE20078bsyyAju+X68vQl8KWvhazKeNG8DlrQf61r/5xMGWDbPAOaVs6FLhoTc3rNh/YbPenx\\nLiE9/6pYoe/3eUI/CkdYYolSl2weMM/mLO1qPx45ilE9oyV9qhsCgg0CxuHYZcRge9/RdkEDdiVo\\ndWk1WTyfunepE5msynh6lJQJFsUCPc/JztbFmuMQlFSIpA9M/y8U6f3xXx4Am00RZ1NUwRji+j+E\\nkgpKKvjW3wnsJmLjS//Zcv7noqsl7xfvmtAYY/H4qFGWp4tPHXnufu762hWhc8Ivya7xkoWnji/V\\nFThEZATE3sCrS+LcTJl9Vs7LfAlf+Ts/f87vpB/0XfHbTFYW+QKLYoFR4G7whRD4OPjIEzkA7JS2\\nj9TEfgwpJDugWVj8dv5bvjlRQiGpEi6Ky8IV+3rH71gQpyc8/v1QaOe5nSn67HpVz3X3lLPOTMoE\\nj8kjd4ALXSAvEnyT/QTo5PQD1+AVc/Tm/x/C/n/JfxaoALe9W+RV3rBIpc+dpB+vITcBuq5ah8/H\\npeoJ2S3Xd9/q8KXP1uuv0XH+UtdC+1onUPZIP+i/Wkf93EwZwJ3hi3xr5bwu1jAwjZBjwDk8jqPx\\n0ddMpIZ+Nisz3K/vG2YNNEWpT4ZsZhvnP4ECQevW+dN0irRM2RkVAO/faKthtW2oQo4FcVJ8AeEq\\nunqWxXPsx0xkKlNhEAxYCu1Jjw0tACCWPibZjzDF4qzH58+0mEM8/gXsN/8FhPS4QUnZPPWaXxoX\\n6E3yuK6WdKjj3RIaa10n7bnFh1CWFrNZhWhYojSHwy9P2S1fCq99EdECeHsy8iWIDC39n5spAzSt\\nnCtT4efVz7jp3fDrfK7b2jAcwliDh+SBCw2s0z5Th7RnHQmokxoLu5MtADgd9G3vFtNk6or6hihW\\npsJt7xa3/dvGY2VVxtMges37JGhPqdu/GUdj1tK/ZBIYeiE+9D9gWSw514cc356yJ4yCIT6UU3g6\\nPf1ge6CqNYr7/xPhx/+0UVRCL8Sdd7cjP6EpGWnPL+1s1BWhDp+DS9STh8ccJpzDYNf1kqa3z831\\neNlred1rgazi245sAuLVZaalLp+dKVO3ci51ifvkvtEIk0JiHI7Pto32lY9+0MfD+gHzfM42ypQz\\nRi6X5AoJuM9sjvleUkN/N2iPh8iSrSxG4QjX8TW00dz4aodw0mO0JWjLfIlFsXUne6k1NuWm5VWO\\ntEpZtpeUCX5c/bghFx4m6Q+w5fL0A+6BLRbIf/kXjXpCxIZUM/VJGq0C+Mq/OLHpasn7xbslNHlu\\nz5IFHENRADaroPzm49Bh9yX90F9rzPk1iUx76Z9wTqYM4MLN6j7/ZL/MScvPOMSstWzbTEjLtNGx\\noj2ZOhE5FJgGuKVRchYj0Ofd83uYRBMsi21RK02JaTrlEE76LEiC9sv6F37eWTrDbf/2s3aYhBAs\\nOyMtdqhC56yWPaKHl5EZgknvoZOf4fU/7Xwt9mPEfrzjdKSt5qJ9qewJoJMJdPg8XKKe6FLBKgV4\\n2/PuOXbLl8JrXQuFLrDMlztGLF+CyFhrG2cp4ZxMGQAs/52mTlqrjWbJV73JdO5rScu0sS9Tmcqd\\nrbUMGvr3c0iNEAKlKRvyOSUUel5vq2IwkoncvhBOYCtBe0wfsSi2wc6+9PfWsOcg9FwgeFImKHUJ\\nbTUiL0JWZeiVawTVy8gM4VA9UVIhljG00ch1zvcy9BmUurzovUxXS94v3i2hWa933cZeAp37UL7m\\njJBQhV8lJPDSXYFjROY1uhr7nn+fvOycTBnAFZysyjAIBm5kby13aupF4xxoo1meMA7H7rGsZhcc\\nCg4DtqTmVGAaOd1QAGfdVjOtUuhU4zq+xigcwZNeY19mmk53OoKhCtH3+65QGM1uN0SAPmdfy1c+\\n7vp3eEwfMc/mCFSAD9ICF7iEquXf7CU0BEoyb4fqVabCLJvxxOZz0sGBrqvW4fNwqXqCMob0q5Ph\\nl6+JS18LNBXZR2S+hKNhVmVY5Isdedk5mTLA5qzZ7JEoobaumsLj3cxzQfuOtKRPtWQSOUlYUiaN\\n6fMwdLb81BjLqxxP9on3awjzbI51uUbkRcirHEoqTKIJDAybBZBNdF3t0A7hBFwNo0X6ylQIVIC+\\n72R3h1zQzgXtc6Zlip/XPzuzmqCP2+znFz9mHcfqiZIKPdnbubex2GYCXoLYdLXk/eJdEpqqsgfc\\nZ54PU3mI1QBR8PuRTtvuYhC+FJE5JC9TQjn3ljOeu+7TT8uJq2KFUIXIdc5LiueAlitJUki5Akm1\\nDbF7yp4a4WTHAtOG4ZDJDC9aCoFvR99ysjQ970PygJv4hm9s6rag83yO0pQYhSN2NKM9FEpnpsfZ\\n54L2XFhroYTCXe8O6+QePfN50xmCSe9hyhWkf7j7R845RCDr2ney0w5UgFE4evGOWleEOrwUl6wn\\nQge4CT/A9798fgbhUtdCqUssi+XeXaAvkTnFmTItIkVnxTk35utizZbCZOWc65yDkdMyPXtKvM9E\\nYBJPeIkfAOff1B+TJiNEaigPhkjNU/bUmDyNozEG/gCFcY9Zt3Wmxuu+EE5fukDRaTLl3cuiKphU\\nHXJBewmSMsEwGLrAaJ0jrNanf+gMnFNPSKreNggiYkM7Ni8lbl0teb8Qdt/yyBvHcqmxWl2oowZA\\nRTn8qGQr38/550tQVRb/6B/9j/g3/+bfot8f4E/+5O/hz/7sP35W1sE+nSnhNRfoCIfkZfuW/g9h\\nHxkTEAi9sOFmI4XcsXLeh6RMtvsy2KY1+8p3k5JkysSJ3F/q0gWy9Kw/BklH6lbP9QJRdy+j13oT\\nu90fbXQjhBNwhzMFpNH3kwNb/XEAnBXEWX/tpO2mtG4K8AuTHxElP5x8jHPhX/0x/Mkfn/395A5E\\nmRF1hCpsOBSd9XjlCv/4f/jv8Vf/+l9i0I/x9/6DP8U/+LP/jLMOOnQ4hkvXkyCuEPZ0ozYA2KkT\\n+/69/r0vQVVZ/Pmf/wX+yT/539DvD/Dhwx3+4T/8r59VSypT7XUPA9ziPDk9vhbamTIEOhvPuRnX\\nRjeywYCtaQARGcI576dOjAijcNQgK+2Q4rYMbl2sG0YEvnRnXKa3hDH2Ys6HqUy1QybJ1hnArgLD\\nbg1o6P3e9m7dc9dc0IDNHtCZNtpUQ8gAJykTTJMp15e7ao0w+d3JxzkXz60nl4yeMOUK//f//j/j\\nn/6v/wsG/Rh3Hz7hv/lv/7uulrwTvEtC8/RUIU0v97IX+hc84fuL6X+5cG2KlBSyWbAEIKxAgAFC\\newXfHl6Q1iKF9tawMoeQuwTKGLPXBhkAe7e/toTuUKbMsaX/Nvbl/SipWAJIBIQIU6ACXMfXex/L\\nWLNjlaqk0yPXSRDJB9qWlu2baUqeNtYgqZKGHjn24p3ClZZpo/gJCF7yt9Zy15EKNwAMgyE85aHv\\n9SGldFkYOncmAXbz2VrAUx5GgVt+rRMW+h8lWrc/j3qK87+HHJMLTWgAwBv+EYLbv//sn6PXlZTJ\\nzmumJd9Df3+stUezDggyvoM3/Hegeh+/ipS0w9vHpetJgkck8pfPfhyqFfTvB4mRFfDQQ6BHUPbw\\ntMHIDNpLgE0t4cfdPF5lKqzL9d6JTORFGASDV5fQFbrAslg2GkaAaxoN/PPsn2lvr36mtK2c6xN2\\nCvzc99jWWiyKRYMAkYnAPsJSNyvYZ8edlAlLmOfFHMYYtpGO/ZgzwgjGGpZc83vZOK4CTWn3PJsj\\nqzJWQozCEUIVwliDylZICheQCQu+X4h9F45JgaFEWuif7dtDay0e00euw7EX44+VxfVXrifHwsGV\\nUEdjNrpa8vuDd0loZrMKWXa5l/1j+tf4l8t/jtAPEasYkR/BVz6UUK8y2RCQuBb/LmKxG7h1CKld\\n4NH+Nexm8UEbvUNk6mGR5MwmhWwSKeySon1TpnMmUgD2kqnnyMv2HdhCiL1ZOBSMSRgGwx1bZUo2\\nrr8mX/luuXLP66EEZTqgaUm/Xbifsic8po/8uKFyLmI07WFSsfknyROMNVwcKLHawmJdrPGQPKDY\\nOOwJCHzsf0QvaJJbYw0W2YLlB/QaB8HgbNkALXHSa/sNclzZ/PQPngnV/xbhh3/w4p+nFO72wi+w\\nX9piTYX8l38Bc0bWAUHGdwg//BnEV9hp6PC2cel68lj+iN/mf8l5Zb5yi9vexpL2khBWYmi/RYDz\\nu8cFVliKH2DFtpbUiQyd7RBApCKeah+rEQAaf07/fWo6RV+n3Ko2mfKkh2EwPGtia6zBPJvvSNT2\\nhXpSM4VufgMV7Dgv0pSnTlJ86R80EaAGVb2RRp9dHUmR4Pvl99zA86SHj/2P7MTZblRVpkJapTBm\\nOymRQiLwAkdWTIWn9IldOS2cRfS+XdOszJCb5ucTqeikqQJhXax52lOaEv2gj79rC3y8oPLwc+rJ\\nKWITemHjGuxqye8X3uVv5NLkOK0Sd2BYg1zmEIVbXvelsyeMvAihCuEpV5AUFKR0F8W+LsbR1w6J\\nO/EbBOJ5trWxGOEOv8HP5l+h0PleaVmdgGmr937PpVCZynXRaiRJCslEkCZTwO7Eiv5Z6hKVqRqF\\nzpMeQi9ka8r6z3jSQ8/rIancjS8lF1PBIFvJOsiyEsAO6aB/9vwepulm+mO37mc0BalMxSGRVHBD\\nFaIy1VGDgtALG3sz03SKntfDIBzAwLAWmh6P3led1EghcRVfISkSrEonVzDWuGRsXaEf7JcNCLhA\\ntrzKuSOorXP2SWyOqwveV33uwa6kwlV0xaF19d8hSeV6fs9pwa1B/uM/gynmz3oOk94j//GfIfzm\\nP+8KUYcGLl1Pcp056axxzRo6C4nUULNGSQUlFJ+XhyasB1+3lRjZX8PH85wCAwwwsr/GzP411uWq\\nEewIuOcndzYOp9ycja+BtEp5vwQA15J+2IcPH+tyDVEeJ1J55bLKjDX8NSUVxtEYoQr59dd/NvZi\\nPnMLXbCiAdg4kuXzRmMs8iJ2KGtLeqlxJSGRlRmHQs+z+faMtlszlEWxQJK7yXTkR66WFMODhNda\\nyyoBgixdrESuXd0jMhN7LjuGbI3riPwISiv+fsBJ3rTRPK05hKzKME2mKEzh9lRkgFWxwofAx0d1\\nOTnW55zPQgiW2Be6aJBRbTXn5wQq6GrJ7yHe5YTm0prnv5z/Of46+UvEntuF6Ad9N+XwtvkztAsS\\nqQiB59zQyCKRipQSijs3+26cjbFYLySq8uV3k5VIkKqfYbAdCdOi4Gtn5QCbpX+zJ1NGnC8vI7LS\\nlhXscyipf4ZUNGbZjDswnvRwE98grVJHDiyYZFEoGD3OwWmUEKi0KzT03770nQOOBZsKCCGwLJZu\\nAqXcew1VuDcFuv5eZ+mscbBKbG2rSScdeAG/pthz0gMpt1JFKSRKXTJBovcQeiFu4hsXcgaLSleo\\nbMWEc57NORMmqzJIIfGNzfErXG5C81zN8ykcdFWywHD1byHz2YsfW8Z3O9k5Hf6wcel68tfrv8R9\\n9TfOuTDoI/TCncwsIjc0zSaSQxkf9DW6eQaazTNjLZZzoCxe/ve4wBpL+T0gtudsoAIO/X1tlLrE\\nMl+isk03TLI/PqeeUXOnPdmhyW79Om9LqkiaTERBCIGBP0Ba1STDG4I58AeIg5ilWdzIq0+lNn9m\\nreX9H/oesrR+ylzOmBACWZmx1AxwNfRUsCeRD0JlKmRlxr9D2jOSUkJCsmyb1Bqk2ADcpIimPUII\\nDg0NVMA1Otc50jJ18ufsCctsyUHJNNX5O0ri7/qXu7G/ZD2x1u4Qm80XIB//HyCbvvixu1ry9vAu\\nCU1VWdzfV6e/8Uz8H7P/CbnZyJQE+CAgokDkpn3DLuC6AVSwQhU25AU04aH/57nFbPb5U5N4WMIL\\nDHcapJB7ZU+X/CeTkE3niQhN/eYcODwFYSlWVaAwm2XGTbEQEAi8YO/P7wMt19cLVF0uIIVEz+89\\nm+AVVYFFsWg4ovnKb0gw+l6fD3rqJIZeyK45VEiklLw7JYXEMnfLmtpopFWKUIW4jq+dNjwYcFgc\\nFUBf+ix9a0slKIiTdpeMNQ29Nh3iv6x/wTSZOmIgNvIH6aMngT8uH3fe/0sRffdfvcrCZKELLPIF\\nT7G8/AmD5V999uMGH/6To1bTHf6wcOl68v+u/ikys3YExoKt6gMVIPACBHK/tWydyNQlanWSQ3Xl\\nUrXERnPAKxoug/Wzt34eA9g5mw99/dj3GmOwKndNQSQkRlHT6ZAlu7WGFj0uBVFqq/nrREpIjlX/\\n2b3vHxZJkfBjpGUKpXZNWmiB/1wYGCYM9N4LXfBOFOCkcBISSZXwRMmTHueUSWxISK2WKKm2O6vW\\nYpbOIKXk4OSPg4/u/W6k6fuUE3VQECfVJZrW1WtnoQs8Jo/47fy3WFdu2j8KR84MR0UYSIn/SOzu\\nXb0Ur1FP6P6F5YDpgyM0n4mulrwtvMt5mecJBIG4iNXmvHpAaTN4yoMnPA5f9JUPT3gwcIdiURbQ\\nSkNKCSUUy5FynTc6yZRgH6gAkRc1XTbSMYAL5AJkHkb9ph5bCtk4LJ+DnUlSixyRJpWkYFSw6IDU\\nRrvPyRg3OdpHZqx1Y25heZpgreXPufH9e4plnVgpqTDwB87uciMZ8ISHwHPk81iI3V6Dhs3/Ii9C\\n5EcuCNJopDqF1BKTaAIhBWu5BQTW5bqxKFrZCj3V2+kI0ucZ+zHyLMdD+gBYYI01lsUSvxr+qpHs\\nXJdbfb/4nm8yyACishVLGVbFqvFeiFiuyhXyMse6Wru/08IlPYfSySatUFiJAAPbTPp+CWR892ru\\nL2RjnVUZlvkSQXa+zvkYTmXndPjDwiXryVP5C5bVk2tu0dReKXjCndfWWBQoUNmKyQud4+3sLiEE\\nT3D4nzTluVAtkVUPk+GwsUNRl3M9t6bsm4K0HbLm2RzaapZhWTiZVKQi3qnURjdqja39D9YZtaRl\\n2vh66IUYBIPGVIs+WynkXtIFuMX4eT7nrBvf+gi9EJ703KT8QGOMJhs0+eA/25CIoT/kfc6n/Am+\\n8jmzZxyO0Q/6kEI6uVyxNW1R0oWFHnpeT3oQlcCPqx+dlE67XdZvBt/w49CObR0UwkkGEHmVI9MZ\\nO7gBNXc960jZKl9hXa7xlD5BKsnBzOTcSeRzVZo3XU8olsFY4yZy68u4snW15G3hXRIaAOj3JYri\\nAh0qL8Gn0Ses8hUXFx5Hm8TtPGzGxTTSBVzxgQAUFIR0B2hlK+50pFWKee60mUoo9NQQt7j97NcL\\nAFUpUFUWSum9U5Bj05p9XzuEU5kyBoYlXhISUu0/gOnwrE9RhHAE4tQUZZ8ZARWBH5Y/sFuYFBLf\\nDb9DP+wffbxzJlJ9v48fVz8iFrEjrSbHp96nxoRuEAwgIHiRvagKLOyCHWt2nncjDRz4A0dEhECo\\nQsyyGa6iKwQqYPtQKkqlLvHz+mcnc9zIAAi+9DHwB5imU6yLNZbl0oWpCVeEtXW2sdpqKKGYrGnr\\nsh2KqsSfXuDqX/ljLNf3e+V8bfL4UvvzyIsQ2ApZ+XlJ1IRzsg46/GHhUvUkE08Y+AN3JtYMWXKd\\n8z6mJ9zU1RNu2kKkQQrJzR0iNyQfJQgh4IsIA32ZWmIrH8JK7vgfIyPn/NkhULhxeyE9kAGbftSl\\nZ3WSUEehN1N0uN0T+kxG4QiROm6SUj+T6mSkqApIIZ30y7rn/tD7gOv4mndleSfUbghfbY/m2EQq\\nqzL87fxvWVZmrMGn+BPiYLv3RLsrRCooCHQSTw7Wx3W5hic9aO3O+XE4dsGhZkt8aU/VwqLUJVb5\\nimMR2qHXkecaeRQXQHK4YTCElJIlgEII3MV3mPQmPF1aFSv8zgL//gWUV0V0hyJfNPaj9plJ1P/9\\nnO8lSCERQiP7DNlyHV0teVt4l5IzwB0Ws5lGnr/85StfI1O/INUpSl1iXToveSoqgFskK6qiMdYF\\nwB0cAdHwQFdCAWLbbdNGo7IVhvYDJuq7z3/jG4gwhQwvN+atw9rPy5ShggGAZWr1wydUISI/Ongz\\nW78R3vfakjJhD/6H5AHGGk6Nfm7ycxv092CZL7HMl6x/HgQDTOJJgxgCrlO4yleNidM4HDd06dY6\\nq2a6aaBUY5rywW6zECgIdJpOnavN5ufJNhVw3bi0TLEqVq5QFSte+Adc0fSEh2E0xCgc4UP/A2e/\\nzPM5iqoAYPH3PYFr8fLdgaUI8Dv/BsPo5YGYh9D+exGlPyFOfrzY419676fD+8Yl6omRGWb4G5ak\\nUnI5n2k1I5RQhQhkwLLWSLnQRGMNqwDqe3ZcS0wFrxohtp93ztVReQsYf3X6G18Aay2SKtmxZpeQ\\nGISDkySkTgqT0j1O/c9iP8YkmrA0t05Y6qTlUD1Z5ktuIK2KFbTRnC9zqDl1LipTYZpMkVWZMzaA\\nwFV0hX7QxzBwZjJ18pNWKebZnOuGFE4dQDb+9L1P6ZNzGtvUoUC5nV76OgVsZmWGpEywKLayXSJs\\n9HnRDueyWHKeCwCWvBm4UM9hMMQwHOLXo1+jF/S47lFDTwqBP5EVBublu5mZ10cy+g2CMx3XzkWb\\n8Hir7+Gvf3uxx+9qydvBuyU0AGCMxeOjRlk+/y34vsD1tYK2Feb5HKvcub0Ya5BWKbTRCGTAWtTK\\nVO4mGqZRjGjSQPKyUpd8Aw+AJWtBeQ3fHHbEei4eyx/wi/4rdsr53HwAutiNddIxem/0NdoH4pvM\\nE931ylQoqmbYFQVdvTRd2liDdbmGMabxZ5nOIOEI1CAY7Fg5n4tSlw3r4O1h7R6bnLbaSIqk8XO+\\n8hvFMC3TRugadQKn2RRF5cwRtNXo+T2eYhljGiFplXYE05c+d24lJMswsjJDWqVMLEgT3/f7qGzF\\nsi3qzMV+jFHQw59KjdELavaTMfjneQmivNH/z96Xh8lVVnn/7r7U1l2d7qRDCGE1ENnXBERRFGR3\\nGUfGGWEGAQdlBP1mXHBkeURxVPxEEXUcPxcEHGQ3LGETAopAlCSghC0ha++1V939fn+8dU7fW92d\\ndEI+Pyb28cmD3V1V99atuu95zzm/RTWnbdS2I7FH3EIfdh7PYUe9c2Zi1403mk8KXUDdr6HslNnn\\nxAsEb4IKG1VSAUlMdGkiQXA0QDTKSFWT7m1a3xkd0DQR+TuvgTDsbcAmbw0rrlF3f0cimQfCKEwV\\nMpIkQYaYhBBhn3gilFM6JyjAuEhIalIFYZJJk4/tDRITSBkvY5zHAojCoFNGf7qRFHABRD7UZZ25\\nooqsTLpeeoGXNmaWhecN5cym10zB02zdRlYTHMxW0IIbuHAD4TOky+PfET/yeZLkhz7/TLYLxBGK\\nIYRl3NCFqqjCL68taW3rgqdJzTRq5BIMTZUl7A9nh/JJLZbwQqwhhMSTzP9XIkdzgyp6dqJtwUwu\\nefPE/1jIGQDIsihKyuXt66wZhoSuLgWyLEGGhln2LFiqxbjcpFyvAoU75ADghq6AUIWuUKWRNLT8\\nliATygoXN7QoUqcoDA1sZSK/3eEELoabw8zRUWSFp0aqpEJVVD6/CXyRBHQrSeZPLnoUyW7OdCKO\\nY14wk0EqPjuaKP3QFxycxPnpig5Ls4SHiScKiobXmFQtbVvhhd4E87TZ2dloeA0uVpp+kyc2yaCk\\nR4/zQx8Vt4KCUYAXemLhj2OEUQhFUeCGLsIohCZpaEZNnoQ1/AaiOBIQR1lGVsui5JZ4cxRFQrQi\\nq493NiVJgiEbyOYFEbbaqqakSBtBA4ZsII6FcIKqCF+HrJGFAgXr3Br2iGoobEex0FQsbNYyyMtC\\n/Y1w8GEcCkKuok8J6QMm4UYlsPFBFPD3JwgDhm8WTQt95s4b68fRziuOZmLXiJ2RT7rVbliaxV30\\nulRHFEeiGSGJzrkqqcibeYRRKJpk7UmsIivjG9JEo0xRFFbG0mQNEnbuRs/xXQzUBmBogvejSRpM\\n3YQmaYJb2hafoaKqs+jonILQNNgN3NTkllS0tmdtbniNCeIB1KzZ0cZYEAWoOJVUgaQrOgpmgYsw\\nQBQBNGXbnvBCDxVnXPJZgoReuxcAmCNJx+lsvumqjjzyqHk1AeOLIs4l5NdFEDIAkDxJ+J1FEbwo\\noRwainWWGq+qpCJAAM/34Mc+c5RoEtM+UVa5y+t5+JGPMUeIx/iBz6iCIArYXiGjZZA1srBUCxWn\\ngnWxhXlhZbsm/w3Zwno5A6sDuqcqakqkgqdZ7VyRfGxy0sW/i2M4ocNCRLRPyxomeswdK1Qni5lc\\n8uaJ/9EFDSCSUHe3AteN0WhEWyV2PvroA3j55dX40pc+N2FjndEzMFUTFbfCyh8UtACTH4YiiU2p\\nEwi/AVI3I9Jjw2tAVVThIs9ynTuxmgFQcctYW1oLS7OENGgbxmVrNjRJY9gCLQpJYimJH1Cwp0wi\\nJEjsuzPd4ASdNPuENKlC3PaEG7gTZDkt1eJuV1bLio5nFCCGgHcVreK0iycv8FJkfFmWkdEEYZPM\\nzuj4Da8BGfKEzt2EoibwMeAPAABjljVZgyVbCEKxAJL/StWpwo+FwpkTOAjCAKZqspkmdTsBALGA\\nRpdkUNkAACAASURBVBTNIrqtbiGz2ZYXp6IpiAJhQCoJI7XhcBgZLYMuswu2ZiNv5KEqKkqtEmJJ\\nwp9iFV0RsJsC5LdS2Dz42xV49rUBnHPRp9ElSchFYUqFDBDfJUVWJphhdgZ9V0hwwos8OIGYMgVh\\ngJbfQjMQvj9e4KGl9U7rs5xuzPgHzMRksT355KmnluOkk94Oy5JTa42pmujL9qHm1mCpFhq+2JSz\\nRG77PielQy8U3/0gCsS9DCHw4gbuhEaZaCDo2JmpuxU0UXJK0HwBfdNUDUZosOGiKqtwZAearLEf\\nmyIrIs+0G178Wn5rQgEiQUJGz2zXNCWIAqH8GI43xiSIZtKOTk2Atr+MU0mdn63bDAGTFRl6NO4P\\n5gTOdhmieqGHcqvMry9LMgpmYVyBEjHnkiAK0PSaE96PrurIIcdFTRiG2FzfDMd3uEEmSRK6jC60\\nYpG3iJPpSR6CMBC5XhKIClVS4UUevMCDG7kTZJ8txULWyKLb7Iat2/x5jrXGoMt6atJUdsrQZA05\\nQ5hak2kpGV77iPCSZGA31UR32NiqUMDyP7yA/Y99Nzwth672tU7mEqAttqPa28wlbuCyQBP50ZEZ\\nqRd4aIVieuUFHhpKL4CdV9DM5JI3T/yPhpxNFkKCs4Kf//wmZLM5hGGAU099L0488W1Yu/YV6LqO\\nLVu2oFgsTvkaLb/Fi6kTOPAjn6WAI0RouA3uUNDkwA3ExCajZSDLwjOE9O11RUcWfdDCqf1Ktjf+\\nOPYk/lR5lomkqqKyHChxPkzVhKVasFRr3PegDVEjz4M4jlOSoPS47S1A3MCdMJVRZRWGYuzwVCaO\\nhfNyMqnJkoyMnplwfkEUYLgxzInE1mx0mV3TOu8kXEyRFRaBSJ7HWGsspWbXbXanEjRNuKpuFaVW\\nSbxu0IQiCcUaTdE4aSaPpcqqgJ+1RlF2ymh4jfGE1Tb3BNrdwsCDqZrIG3khFW0WUtOipt9EuVVG\\nzauh7tVRc2tsGJfTcyjaReye3x26qmOkOcLXteyUxyFyfgthaTPuvO2XyFkWggB476ln4e0n/Q1e\\nXbdl0vun5bcmmNBJkPg83cDlREz/qPtJuG1KQpSYkp85ACzUDRxg7hi8ZLKYwT3PxHQiCGJcddXX\\nkM3mkc3mcNppp+KGG67HL3/5M6xd+woee+wxHH/88VM+n7r1buCi7tW5cWKrYlpKDbGsnkUYh6Ko\\nb0+KTc2EAgVeJO6PMArFhBWzoYfbXtumG6vGnsLL9ZUCVtyeyBAMjiBwuqrDkA0YqmjeEQSZJaUl\\nFU4oNurJHELr1fY0xkh1q3Mq02V2vaHGWNWtou6Nc4WI09JZaBHnkdYzVVa3aqBM4QYuxlpjqWKG\\n1MCS0dkwNVVzQi5xAgcVt4LB+iCaflNMYRAhp+dgKAa6re60r5GkCN81WYcfCeg0qWa6gQtDNfgz\\niBFDhlD9oqZY0kQVELlkuDHMHj+kDiZLMrJ6Fjkjh/5sP2zdRsWpcA5tBS3kdTE980IPUuDgh9de\\nhULGQs60cOrpZ+J7N/wIP//VMry6bsuE+yeIAjT95oQGK6FeqJFM15CKIBLPCKKAIXP0N0JIUOxv\\nWHjrTpzQzOSSN0/scqWlqkqQJAef/ewnAAB9fX24+OJ/xKxZ3Vi7FvA8D7fccgsuuuiiKV/D0iwY\\nqoGqW4UiK1zYkDN9b6Y3BVHKG3nAAG9igyhggjpxb+r+KLqx8wqa1+svATHGJaRjocZFi9lQYwgy\\nZJ7Q5PU8bN3mqRERDdmtWhYkVEuzYGnWBA+dqTokNL3o3MxSZ29HI4xCNPxGamFTZZWlLjtDlYUp\\nWdkpAxALMnU1p4rk5gEATxY6CzBJklC0ihhtjXIHabQ1inyUhyIpKblVCQJzTD45QRyg5tYwLz+P\\nrzFB+LzQQ9NrouE3uLDiSVEMlJwSZmdmI6fnuCgiAQAADEUjhZvB+iB3emWIKZOu6uNmsKqBqleF\\nHuhcMJD6HE2BNC2DUakL/3LV9UAT6Ovtw8cu/TqKvfPw6rotk94/lmZBlmQMN4dRcSrjU5fQ42sa\\nIx4vZkKfYWU05SRTVJoM2prNTYMgCrDJreGAaX97th1Kdu5OfLWZ2FVDVSX81399B5s3bwYAnHHG\\nBpTLm7F27SsAgJ/85CdbLWhIerzu1QVvIsqg5tbQDJpQI7FRliCh4lS4IZbVszy1aQTCwLDb7EYM\\nISjS9EvQsfMKmtfraxDGIXToQCzW3lgS0DgyVgTAym1kQK0rwlPHj8V9nFzfDMVA0S5CkRRU3Woq\\nl0yVF8IoRNkpTzDUJUL6jgaZGydfV5EUFK3ipPA3ghUnVcdafmurEyYncMTEO1HMzLJnTfpeLa2t\\nntnm79C6T8IAbuDy66iyiopbSa35xUIRhmqIZmXbPDqKBXmfrAyomUXhBi43OrvMLpaPToofxWEM\\nTdYQxRE21zaj5tY4r2uyBlmTufDJ6Tn4kZ+CZMdxzOIWpHonqya+e9NSDK4bBEJgwwc+hYG6hVfX\\nCYGXzvtHlQWypeSUxHchGEfChHEoLBkgpUQywjgUDeT2dCaJEtFkcU+RV6AMGY3IAbDz+vgzueTN\\nE7vchAYABgcHMWeO0Abv7e3F0NAQvve97+ETnxBFzpFHHomnn356Wq/lBq5YUNoQGTKeSiaeVtAS\\n/iiS2PSTkhWNq8m/JGrmIEdvXMGj5A1iZXW5IIpDyPLKkBEi5I0qmYMSFyjV8YjFWDtriHGxqZqi\\n85NQF0mauxF0zVTMlMkbYcOTQRLBb4QcTkpjya+moRop2ecpr02rxEWBLMnotXsnLcY6u2SE757q\\nvKlDNdgYRMtvsfBD0SqmMNZxHLNpXMtvQZVVVrbpMrv4e9HwGrz4JjuRraAFL/CEp4Im4BVzsnP4\\nsyFjzWSyCqMQDa8hFPnaKmmk0qPKKvzI53MMogBlp4ycnoOpmvAjn5NuGIXQFR3Dw8M4cP8DAXeS\\n+0cBDjvyMCx7eFlq4kLvwQs9YebZfm9BLDgxtmYz9IGmeSkDWkWFIYvPmPyEyDgujMV57RPVtwqJ\\nm27IVi/MOUe/4deZib+OmDdvHjZtEr4V69evx+bNm3HMMccAADKZDAYGBpDNbpvfRdwNmkjWvTr8\\nyIelCsgPqUtSIQ+kcwlisQ7qio64lYMUvvFcMuxswjOlh9kElIjr5HuVFCWQIDH/gtaalt8CJLCQ\\ngaEYyJt55PVxURRCBNC9rqs6LNVK5ZIgDFD366nGWNJkckfDD32MtcZSeYomHNuaGnU2vEiJsjNa\\nfgslZ1wGWJEU9Ng9UxZuVHyMNEdSkF1TM1lFlaLqVlF1qnBCAVHsy/Sh2+zGrMwsLrTqXp0V4JLX\\nj3I+cY4IVpbM8yRiRBGEAQYbgyzC0PAa6DK7kDNzsFUbYRzCUi1uoo60Rtj7DQD/N5mfDjn4EAy8\\nJuDXqftHAey8jdV/Xg3FUHjiQudDeS0pNR1GIRfO1AhzA5d5XoYqBJtov0DfMUVSBJw5EnDufncI\\ndjj+2e5ozOSSN1fschMaAKlNKW2KP/zhD+PSSy+F53l45pln8MILL2DRokXbfC1DNdCr9AplEQ98\\nI9GNltfzTNijDRwAng7QpCH2YthKDCN641yAWjyM2ZnZ7AVAZD3CWHuRxwo7Xuix/GcUR0wG9CMf\\nI40RjGEMmioMt0xFSANbmgVbtWFqE5VGiBRKUwAy1yIlFF0XhHBSedve6Cw0JEkSrztNYmbBLMBr\\nCKlo2vx3Sjk3/WZK3WayYoY8ePzITxWEtmpzkoshoGgEKyDZZUu1kNfzAq4Y+ggRYrg5jC21LcyN\\nSRZrkiQUaUzNxG7abpAkiTcKgMAyEzRClmQUrSJq7jisrOIKSAtNE2fZswRcra2QY2kW6l5dJEe3\\nyp3QnJ5L+SOkCr8IgAGERojNtc1YcsoSaHM0+L6PP7z8Bzy16insu+++TOJPQsmiKOLuHXXQ6n4d\\nmqQhb+bRbXUzbEVTNIZKZvQMbM2GF3gYbg6j7tUFBKa9TA1C3SkFjZrb4w2/xkz89URnPjnqqKOw\\ncOFCvPjii2g0Grj99tvx0Y9+dJuvo8oqeuweIaXrVmGoBm9IR5ujyBk5XsNpk9bJn2kFLTT8BjQZ\\n0HdCQTPorUeX0YUQIVRJZdiwqZgwDNHRliThZ+VHPgwYggMUOpBlsf7TxDWOxbpfapVQcSqiwGl3\\nxidTt6SmGW3ENUVsjDVZQ8EsIK9vH1StM2hikWwYbc+0x1RNltkGBBSuU8q56TcZFQC0P2OrJ/Ve\\nyZuOCqTkpChZgDi+wxN+XdGFyIqexSx7Fhe7siSj6lUx1BjiZlWnpwxt7GkiQ+ptgIAuS6HE+VRT\\nNMiRDD8S8v+lVgmjzVEhWhA0UbSKmGXPYih2zshxw5FySRiFiOM4BfEm/zP6TsAEoAKvV19Hcc8i\\nFhyzAOteX4cmmrjx7htx2mmn8f4k6cFEk55W0GJPnTgQyJK8lhdTtnZDjHhdqiKgjrZmQ4GCmif8\\ndei6AkBFye6UgmYml7y54q+moCkWizjzzDNx6623AgB++tOf4j/+4z+m/Xp5Iy+UPNwKE/BaQQuj\\nrVFBKtTE5jCOYx6BUhfalsVkwQ+akKUGtHjHZIUBwImrkDQfRiAwsUEsPA0ggY/Xa/aOd4dioBk0\\neXwbxmLByEpZVnNLFTltXxdFVgQ5XsnA1m0ecRPEqvP62JqNmleD0hRJirTxiatDnbipEtRUfBka\\njU83ZElGt9WNkeYIAKFKV/fqzDXpLGYI5kEFDG3QpzKJU2QFPVYPRluj7MvjRz7DC2lRJr8EP/Ix\\n2hplPhWRRBVZ4U5SRhOEWVM1+b1mdWGaSUVrySlxggNEoT3WGuMCsOpU4Uc+9ijswfjqZHeTpokk\\neS1JYlNSdsuwFAte5EGCBC/yUGqUgLx4v5EhFIvsnI13vuudeODBBwAFuOmOm3DhRRdyocf8K0lF\\nIAeM5yYIZnISk9Ez3Cm0NZuhE27g4vXy66luJ32mXUYXdEWD29wII9hxzwzZ6oViz97h58/EX190\\n5hNJknDuuefic5/7HACRS6ZT0FCQnxlBmkzVZM6D4zvIGTmerkdxxNNwWmcBIAxDhKEDJdq6j8vW\\nohaOIpJbMFQDiqQgRAgDBjdm6l5diOXIJixFQJu8SExggzgQSosKoJs6i6jwZjQK4Ec+al4NNQiZ\\nYUUSa56majBkUYx1TmUUSQil+KGPcqvMipWWJqDS04FBEwem4Tf4dxIkdFvdW4UgTxYZPSP4PO2N\\ndVKZrOE12DwbGC9mYsSCL+ULYnon0T0Ztmaj4TfGzY9VUyiiSeOkfCdwIEtC5Ic4NW7o8r6E1lYS\\nBcrpgrDPQgTtQpiuM0Gy6FrEiIWpptfg/zqhg6JVxNzcXOZz0uM1RYMRGan3JUsyhhpDXKDSVNEP\\nfYT5EGjXDhW3Aju0cdrpp+G73/suIAN33nsnjjvxOD4/+p7QHsZQDGT0DDfKSIiCoI0kjEO5hO6R\\nocYQhp3hST9T3ehCUPegepUJf59uzOSSN1/skpCzkZER9PaKSUixWMTo6CgAYOnSpTjttNMAAP39\\n/Vi/fj1UdftruobXGJdVbHNIwjhEXs/zOJcdottkZ4rbfnU79p9/DA458IjtPm4oOSjFr8OLXd54\\na4rAvCIGyzJ7kQcZMicDRVYYP+pFYnpBnA0qvpzQGZdCbBdltDmnEbAf+kw+pASzLd8XWogpAdF4\\nmpTPCMrQOS6nQmNHoWtJAqgECbPsWTxFAETXTJJEp4oKka2FJEl8vgSHGnPG+Hl+KFTK/EiIQUAS\\nsD/6mc5FUzTYmo3+bL8wlktIfHdGGIUYbY2mCkgSeGh4IlmPtcawtrRWFH+GkNssmAXML8znhE8F\\n1ubaZjiBg9Hm6LinT/v8SbEGAIJmgLcf+3ZABvLFPB546AH4oY8nfvsEvvDZLwAh0FPswYP3PwhZ\\nkRGEgVDRaV9bWZYFdKXdESMjUEDgx03FREbPCLl0zULLb+H1yusYbY6mrzkk9GX60GP38P3237fe\\njGN2M3D4/vtO52uQClkvwOhfPKNKMxPbFXvssQfWr18PAFi7di0WLFiATZs2Yf78+dwgWLduHfbY\\nY/u7tU7gsMQvyR07gcOTcgriJiThnc/9cSWiZg4HH3j4dh83gIOBcA0avhAq8CMfuqRDVVSEccie\\nYV7kCTf6tikoJLFWGLLwySEFTWDcEiDJYUg2+JLFDkGtkgVKVs9uVZ1SluSUGIGmaMznSTbMKm4l\\ntdlWZRVFq7jDnE4v9Hi9BcT798JxvxhqgFFTplMcZ7IwFEPk0TantRmME+HJwyaIAxaDMBQDTij4\\nkcRt0WQNhipgaEW7yEJAkwUJDSThZYokjFxpbW14DawtrUUEYVTdZ/fB1m3Mzszmxhjlkk21TWh6\\nTYEOCF2eIAGiQLJU8d01VRMfet+HMDA4AMjAL3/1S/T29WJweBBn/+3ZgA8gAB584EHsNnc3hpbR\\nawIiZ6qS+HwJkRLHMUxtXPSoyxIFF4kDJflMFFkjix6rhzm/z/3hWViVNTh80fbnEkkvwJzJJW+6\\n2CULmrGxMfT0CJhRd3c3xsaEpGAQBJg3bx4GBwcBAPfeey/e+9737tAxwihkqA8AdtwlwhxNImRJ\\njOXdwMXqNatx0ntPgiKp+P63foF3HT/9Yz/02L0wulwccdQRaPpNFhsgR+EwCuGGLhcP5CkTI2aC\\ntSIpLJ+pyirjs/1QwIRI6tAJHDSDZttRHpyEoihi3gz5JJDKGiVgSjTEJ5oqqNCJYqGfr0qCDKgq\\nKo+2CSq3IxHHsVDyaieXhtcQJpPt90ICA1MFFTAEi1KkiWZzTuBgU20T6m6dF1BLtSDJEmx1nO9D\\nnTI/9BknTQ7X25o+JQmtZDBHDtJO4GBzbTNMxWTZZ1u32VDN0iyGfJVaJb4W5CS9pSaImexxIQn4\\nYOzGOPXUU4EQyGVy+O0TvxXQhFjG4iWLMVoZBVTga9d+DYuPWcy4eE3WUtAScvKmpO2G6eLeDVwM\\nN4aZUJyM3kwv5hfms9s2ALy29jW8933vhebK+NnX/g0nvW36TYH7H30GxT2PxztOeNe0nzMTMwEA\\ne+65J9atWwcAeO2117DnnnsCAE4++WQ88MADAICrrroK//7v/75Drx/FkRAKaJOryW8kjEPuwAPj\\nssWyJGOkMoJ3nPAODA+P4Pv/+xd41zu2L5e8uvk5/MO5f4+SUxL8lbZRIgmWhFHIkvvUcScRGkUW\\nQjQ9dk+qc0/NLzrfOBabT5LTpZ9JzITQAojB6qAEPdNlXUDaZG2bsDOC7MaI0fSa7MlG0+9eu5el\\n7Xc0kpP9cqss/E3anNpORcoJ59cWyaFJ9GSmkWEUYqQ5gppbY56mBAkRopRKHBVuTuAIaLhmI6Nl\\n0G11TwuWTQUX7V/80Gdo/KulV7kJqkoqN9yoYCPF15pbY1g4qb+SCE4YhXAjFwoUVlz9yNkfweCm\\nQSAAlt23DPss2AeGauDsvzsbjz/5OKABF1x0Af7pvH+aIB6RzAtJ1VYAaeheFKHkCP5s57XNaBnM\\nzs6GKqsMQWw0GjjhxBMwunEIP7v233DS27cvl2yoFvCpSz497efMxF8mdsmCplQqsaxsoVBAuTyO\\ncf3Xf/1XfOMb3wAAfOhDH8Ivf/nLN3QsknhOdurd0E25vgNAFEY46V0nYcVzKwAD2Ge/fXDfPQ/D\\nkrshbwU2sPpPK/DN667Gg48uxdx5c/HgQw/CtEzU3bqAmbWhbbIkw1IsVL0qKk6F5TdjxMIoTRPE\\nf03WxASnzbnpJPCTIRUk4aUy1BxCxalwoeOHvjDtlLXUcwgaRQnRlE3RQaEip72JTn7diABPIUkS\\nixSQ+holJuoEJlXCthZEmNxS28ILt63ZyBk55vskg0zrklKkkwUt7E7gwA1cVJ0q1lXWCbGIWHQs\\nd8vtJgqXtuQpq63FSEEUCBa2raImjmNsqG7gjX0QBkIZrS35GsYh4igWHd3EZSGFMS/0GH5BDttj\\nzTFUnSpqnlDDIdPNolVEIS7g8MNE1zebz+K3z/yWlWZuuP4G3PTzm4AQOPndJ+M7130nda6UdGzN\\nnlQcwgkcjDRGsKGyAcOtYf4+EFygaBexR2EPZHShBsX+BoGP9/3N+/D8iucBAPvusy9WPPgANH8I\\nUWsirIBi5Z834MvX/gT3PfIM9thjD6xevXpaBO6ZmAmKvfbaC2vXrgUAvPLKK9h7770BALfccgvO\\nPvtsAMDee++Nl19++Q2JoZDEM3W6vdBDzatBl3Vk9PFptSIp+NynP4ef/PgngAZkC1k8+fgz6O2a\\nD4RTE+jXbXgJV1z9OTz46FJomob7lt2HvfbaC2POGHt50CQ5r+dR9asYrg8zTzKCEL7JGTkUzAI0\\nSWM+YEYT/LfkWhbHMT9XlVQMtYYw2hxlIrcf+czbTF43KnYor0iQuLihKcyEXNLmIiW78nkjn4Jk\\nUVFB0tPbgkEnP5em18RQcwhDjSHU3BpUWWXSebfZnTp/CRJLMdMEabLvRVLwwQkctLwWXh57WXBT\\n2hyU/ly/gCiqwhfI0iwBsVL01L6DiqrpFDUVp4KR5gibYFe9KsaaYwhiwRX1Ix9FqzghR6qyyoUQ\\nRVbPIojGC2Iv9FhVM2/ksUfXHjj2mGPFhFMCHln+CHrn9sIJHCx7YBku+8JlQAjsvtvuePihh1PX\\nSVd0ziXEH01GGIWouTWMNEcw2hrl6ZMu64JD054u0UQt6T90yacvwc0/vRmIgVwuhxeeegy9WW+r\\nuWTt5ir+7fJv475HnoFhGHjuuefwlre8ZZvXeyb+crFLFjTlchnd3d0AgHw+j0pl/AZ8/vnnceCB\\nBwIAdF3HwMAAP3ZHI4ojVN1qShGFOBOkjHL1V67GN7/xTSACVKh4/MnHsdfCvUSnI1IghxakWAEg\\nQZIATVGgGRE2Da7Hcccfx+/hnHPPwVe/8lXEcYyKW+EOF8k92row/qx5ouNHna4YMRQoMDWTu2o0\\n5SEyZnITz39rJxFSS/MDsQASNKITKpYMwpsTVMDSLWRU0YkLwkB0oNojZlmWGU41WZDbMRU6uqqz\\ndKgqJc67rUdPhdlwU4yfKfoyfaxwk/JR2MromMb1dI1pGtbyW+I6e03UvBo0RUOP1YO8mcfszOxJ\\nu3Gkmke3HZH8O983+dqQH0DDa6DslFF2yqj7dQHvaBcnuqKjP9sPUzPZ2JWC/JDIhJQkLGtuDZos\\n+D9kZklypeVaGaeffDoAwLZsPLn8SdG5kzW8/PLLYnoDQNM0rHh6Beb0zJky6SQjjEJsrG7E5upm\\nVL1qSvwhZ+SwZ9eemJefB03R2M+H4uvf/Dqu//b1AABVVfH4ssex+IjFAIDIryOsb0YcOoijAJKs\\nQlJMKNm5GBypYdGiRSiVxGtddNFFuP7666c8x5mYic7Ye++98dprrwEAXn75Zeyzzz4AgFarhf7+\\nfl6bly9fjuOOO+4NHSuOBf8i6ZdCZHJbF+Io9913Hz72sY8BIQAX+K//+i988MMfFE2VUEYc6EAk\\nA7EESDFURYKqR2gFdbzn5Pfg+edFU+Dwww/HnXfeCUVRxLrSPmbZKWO0OcrEajIGJeVE2jgaioGc\\nkRNCHu1pBW30k9AnP/RRcSssPEMwaEu1EMYhml4TTigaRJ38zGTQcclugDy8mn4TXuRxLpEgTVDt\\nTEaqedWeKhOMmjbtBBVOwrRKrRJzMwGxmZ+TncPCDTSB2Zr3Gk2pqEEYhAFaQUus881hND0h4axI\\nCvoyfcgbefTYPcLIUsukFN+CKBD+NNMoagg2N9QYYjh23auj7tYRIoQXeJwLZ2dno8vsYl4pX/8o\\nTDVLbd1G0SjCjVw+ZrlVRghxvfJ6HmEU4rTTT8OmDZsAGfj13b/GXgv2Ep4yrovFixejXhffu/++\\n5b9x/OLjOZdsKyeXnBJGGiNo+A1WnwUAQzYwOzsbfdk+AZvsKGaWLl2Kf/roPzHE/kc//BHOO+c8\\nAFvPJSEMHH300fjjH/8IAFi8eDGWL18ORZk+x3cm/t/GLlnQVCoVdHUJxY1cLodqtZr6+xFHHIEV\\nK1YAAG644QZ8/OMf3ynHTUo8A+MdmD+u+CM+eOYHEUfiUl9+xeX4t0//G496icDY+VHQxOLO2+7E\\nx87/mJBwkIBbb70Vxx57LACg6TVRdstcHNC0JqtlRWHjiw23KqsstUmiBgQZIE18kugEMKFIIXMx\\nUq4hGWMncMTm0ykJqeI2bG0qmfcgDnjzbMgCelW0i8hpOWiqxhrzyS5dZxBeN4gF9yWO45SXDhU6\\nxAsiiENGzyBn5DA3O5c3+FMFFTGsgZ9wI6ak2/SbrEoTRREUReFuGuHBJwsv9MTou1100bnR50Ne\\nLQ2vIb4X5BUQhSg5JUTRuPePJmtY0L0A3VY3Fzlu6KLm1sR3yxPffUu10GV2odvqRsWtwPFFMeEE\\nQlmn6lV5iuW2XJxx6hmALyYnK59bmfoenHnKmVi1YhUQADdcv+37J4xCbKltweb65lSCJO7SnMwc\\nFKxxjyY/8hFHMW8K/vDsH/D+97+f/375ZZfjis9esdVjJuMXv/gF/v7v/55/fuSRR3DCCSdM+/kz\\n8dcd++yzD1599VUAwEsvvYR99x3H3F944YX44Q9/CAA477zz8KMf/WinHDMp8UzR9JvYPLgZZ5x8\\nBsolgTo4/fTT8eMf/piFRoiIPlmTSVd0rPnTGhz7tmMRSiEgAV/60pf4/m36TWysbuT1ruk3ESFC\\nt9GNnJ6DGwmfD5IWZu6NoqPb7OZJBcnjKlAACSmYKSAKoR6rh93mk15e5PdGamCdHmfJiCLB/6D1\\nmHzUkpLMScWsyXISFRgEISP7BWp2maqYtDf9JvzA57yUN/KYk52D3kzvtLielCudwGHVs6bf5KYO\\nTTgIsmtrNrrNbjH50u1J/dEAsbaOtcY4D3qRB0MR/CY6HhXEdW9cgCGOY9S8GmRJZuECRVIwET86\\nrgAAIABJREFUy56F/lw/N/wUSRGTOSiCcxkJwSBdFf5KZCwOCJU2LxLTrJbfEp+trOBvPvA32LR+\\nE+ADDz74IBYsWABANPMu/8LluPH/3AgEwHnnTu/+KbfKGG4Op+4N4vt2mV0omIXU72lPBABDg0M4\\nfsnx3OB6//vej1/d/KtpT1ZXrVqFww8/HEEgvnPf/OY38elPz0DP3iyxSxY01WoVhYL4UmezWdRq\\ntdTfv/vd7+Liiy8GABx99NF46qmndtqxaaGgLnm1VsU73/VOYcwWAMcdexzuvONOyLLMhYWpmqw0\\nUvNqE1xy4zjGhR+7EMvuWQZEwO57745HH38UuqmzOAAZLhI3hUj1YSxkFWmiAoibnPXb2zCjvkwf\\nVFlNOdVrssbdp84JAo3wDcUYl4Rsw+1afgsVp4KSUxL6+G0+Dv09GUQcVxWhWKLLOvJmHjktB0Nr\\nK7m1u1gE80p29if9DNoGdKqswpRNVgyi6YSt2Yyp7YTb0fm7oYsoihgD3kkyJTlKOu+iLYoXIooC\\nohggKUu65kkPiiTHR5ZkhkdQkZsklxLPydAMND0h+2qqAq6R0TIomIVURzKIAmypbRFy4wAgAbPt\\n2SgYBWxpbOH3RhwrRVJg67aQlK1XcdJ7TgIgeDgv/eEl5Iwcm7hN9/6J4xhb6luwqbppgtKPrdmY\\nX5iPolVEwxfqOjFilFuiUyxLMnJGDrIn453veCc2DmwEACxZvASP3fsYVGX6ZMw4jnHWWWfh7rvv\\nBgAsWLBgBno2E9OOfffdF6+8Iow016xZg/32G3cF/93vfoclS5YAEM2zgYEB2PbOcyEniec4jhFF\\nEc7+u7Ox/LfLAQD9ff146KGHuHlHCleyJLcNOJuTTjyu/ca1+NqXvwZEgJEz8PBjD2Pu/Lm8qSaf\\nK2rWEGcP0jgp3I985urxpB4Rus1u9GZ6oSs6xlpjaPgNlg2miQ5xICgoVyXd6mnaQs7xda8Ox3eY\\nj+MGLmpeLVXsmIqAVcuy8GBTIDbeyRzlhR7qbh0Nv4Fm0ETTE+c9VVBjS5FEkZHRBSR6lj0LpmZC\\nl3WW7e/cFJNPDxVldJ3IRBMAw+fcQEw5TNVEb6YXRbOYUmlLWgskm4lUAA41htDyW8IyoT1pJ8PN\\nhtdI5cwwDuEHPvuQ1b06DMVAwSzwVIjMP+ka1Lwayq1x6H7BLCBv5DHWGmP4YM2riWvd5urS3uOs\\ns87Cxo0bgQh45N5HcMj+h/Ak66mnnpr2/VN1hVx1UqWUvj+z7FnoNrtZgIaud82rMQTQVEx8+AMf\\nxiO/eQQAMHfuXKxasQo9xZ7JDjdlXHXVVbj88ssBAKZpzkDP3kSxSxY0tVoN+bzQnc1kMjzSpBgd\\nHUV/fz98X2wY//SnP2H//fffqedAY/YLL7oQt992OwAgV8jh4Ycext7z905jbiWJsb1xHAsJT6+W\\nunGHhoZw4rtPRLVUBTzggo9dgGu+fs24s3D7eSTvSZ3/LqMLli4WJ8cX05Rk14sUzlqegDTMsmel\\nJB91RRfGnfLUUKLJihsKgiKMNEZ43N0KWnBCh5VLOoOUcSRJEqpqqsUbd1M1WSrZDVwBNWgbwElC\\n5o09ESgI/lBxK5xcCV9N3UaC1HVCDpKOzcSFockC+SvY+jjEotQqYaw1lpLtpud0hhd6vJEHxlV8\\naHyuSsIsjLhJqiTkWytuBYokjMiooALSSmV+KOSiaZOSVNOhQpV+D4ikUDALQr2tMoZjjj4GCABT\\nN7H21bUp8u+27p84jjHUGMKG6oYJycdUTexe2B19mb7U78MoxGul11IwM1MzccVnr8Add9wBxAI+\\n+uzyZ7HvntuvSrNly5YU9OwTn/gEvvvd727368zEX1/st99+ePnllwEAL774YmrzEscxFi5ciJde\\negkAcOONN+IjH/nITj0+NTiuu+E6XHH5FeKXMnDTLTfhuCXHpdZcCZKYRLc7+rSpTjaSfN/HSSed\\nhBeefwEIgMOOOQz/fft/w499lnanDTC5vjeCBrJaFl2GmOh7kSgMyGAYAHfrx1pjkCDgTzkjxxAz\\nMpiWJXlKnzJSgZzMe4yKnFKrhMH6IPMIaWqUVIWjoAlM0q+F4LPU0AqigH1OWDq4Pe1PKrYB4CYS\\nq1a2p0J5I8/y18T9IfPJZpA2vST+qqEYiCCkoOk925rNk/2WL65lcrKjyMqEpiB/R7wqq+4BYhLm\\nRR7CKGSzVsojlmZBhowxZ0w0QdseLl1WF79/Wu+jOBLNt9CHH/hQFAUZLcMmybIki4ZV3FZ3lSRW\\nq4uiCO9593vw+quvAz7w+6d/j4P2P2hcMnoa90/dbRdsHZM+migVrWJqfxLHwh9utDWaeuzN/+dm\\n/Ptl/86TumX3LcO73/nuCddyW+H7Po466ig899xzAIAlS5bg8ccfn4GevQlilyxo6vU6cjlhnmXb\\nNhqNxoTHfPCDH8Rtt90GAPjsZz+La665Zqefx80334y/O+fvgHbj/Pvf/z7OOOMMRHGUkrukIFwx\\ndamoC0XTnttvvx2f/l+fBmQAMXDrTbfi5BNOhgxZSDGHLipOhdVyALHQJdXNyAit6grxAJo+RFHE\\n/9/SLO54UIdLkiTIEIvG1jpapA1Piyd1iFjSsV2sqLKKpt9EySmh1CoxppcKlMmCfF+om0TnSAUY\\nbeKbnugghnHIm3dALIzNoMnFnqmZDPsihR6Sc9YUDbZqI2/mkdWzKR8eP/J54kLvmaYvYRxO4FMl\\nC43OoE2ADNFVpY2Aqgj3bDpfSoZu4IrPsS2yQEZkFDkjh4JewEhrhKEjTuDw9IYw17Zui8SqCHje\\nnOwcdFldsFQLjUYDuZ4cYACmZeLVVwTcJqtneaM01f0z0hjB+sr6CclHV3Xsntsds7OzJ3Qy4zjG\\naGuUO4k0ffrN/b/Bv3z2X8SDPODH1/8Y/3j2P0753dtW3HjjjfiHf/gH/vnRRx/FO97xjh1+vZn4\\n64i3vOUtvOH685//jIULF6b+/tWvfhVf+MIXAAAnnngiHnzwwZ1+DqtWrcIRxxwBXxbSyRdddBG+\\n+MUvMr9jMgPknC74LaRaRhCnGDGef/55vPvUdyOSI0ACPve/PoeLLriIVa7iOEbFqWDMGePmEE1M\\nsnpWTFNkLTV5cEOXG3FkV6BKKubk5mB2ZjaLu1CjSpbkKWHFAJiPQzDeOI5RdsqptSWOY+SNPPuY\\n1b06yk4ZVbcquDUJmesJry+pwmtNy6BoFdFldom1XjHgR35KUCaIAxiyAVMX4i7EgwGESIssy5xH\\noihCEAesNEq5I2/kWVqZ+JUEDyRuZkbPMNSOckpyukIF1GQRRiFafotzfIQIs8xZsHWbIWikfAqA\\nzZtN1WQFvWRospDFHnPGUHNrjAbJm0J1jfKsKqtwI5dNLWfZs4Qkf5sTu9/C/fDy66Ih8NTvn8J+\\n++6XsmWY6v4h/miST0bf7R67Z4KBKQVN9EgYSJIkbHxlI9510rsQhAEQAJd88hJ862vfmvQ6TidW\\nrlyJI444gqFn1157LS699NIdfr2Z2DmxSxY0jUaD4SSWZaHZbE54zD333IMzzjgDgBg9rl+/fqdW\\n2K+//joOPvhgQRiVgL8952/xrevSNxB1gTpDldUUKY6c3cdaY7jw4xfi0UcfBQDstttuuHfpvZjT\\nPQd5I8+TgKpTxVBzKMVXiOKIvQxURUgky5KMUquEslMW0KRYeIhIkFjCk6BGySkMLYCQsFXTMCoc\\nksUbjdWT5mvkNO8GLhdaNa/GnakYMUMIFEWYN9KmmCQ7STa4YBS4W5YzcgxZI7+HjdWNzBeJEcNW\\nbWH+1d4YsCmoKqZNcRQzWTKMQjTDJqRYYvWevJFPETUpyMiUIm8Ifxia6tA/TdYw2hzFa6XX0Apb\\n8AOfpTo7paJJGIE2L3kzD1u1xdSt7VHgBR6aQZMfJ0nCUC6IAow1x1B2yny+83Lz0GP3MB6agu8f\\nBTC7TLy69lX+G+Hl7116b+r+WblmJTbVN01IPpqsYW5uLvpz/ZMmH5LXThbhtmZjy6YtWHLyEjRa\\nopg/7bTT8OP//WN0W9077CcRxzHOPPNM3HPPPQCEHO+qVatmoGczsdVYuHAh1qxZA2Dyaf7GjRsx\\nf/58FkFZt24d5s+fv9OO7zgOjjzySEHml4CDjjgId99/N3RtfIJBx+7cvKuyyrmBHldxKxisD+Lb\\n138bN3zvBgBCIGfpnUtx2P6H8cSZoMobqxtT9yf5n5GYiqmazGdpeA0xKUj4pHiBhwgRcvp4LqFG\\nGSujxYATOlMWNzFieIHHLvCAWIvyep6FTWgSFUQBN3KSv6fz0CQNuiaOTzkRABdaiqSwWA7B4Ojc\\naeJVc2sYaggFUC/yEISBmHoHHrzI49dLrvPUyDQVE5CAsltGEApUgK7oYi1uF3zJIO4mhaZo6DK6\\nUgqa9K8VtPDK6CupiRMZTyanYjSZolySM3LoNrsZ3k18Jmoy0eMKZgGaIiZXVafKfCNDMdBtdzP8\\nK1lgL1y4EGteWgNowO+e/h3esp+YcMqSjIyewcDmgdT98+IrL8LsMVFz01QBSZJQNIvozfROKR5E\\nvFO+VrIGBMDidyzGmlfEPXzAogPwyH2PoJgtTpq7pxtXXnklrrjiCgACerZy5coUHHUm/vKxSxY0\\nzWYTmYzwGDFNE61Wa8JjfN/HvHnzMDQ0BAC4//77cdJJJ+2U44dhiHe+8514/PHHAYiN03PPPQfN\\n0lJSiwBY65/G08mgzT+ZXMZxjFc3vIolJywRvKAI+Og5H8VVV14FQCx0eSOPjJZBjBijzVFUnMp4\\noojBCybLDLcddnVJRy0QCYkU2sJIkNQhgRd0YBx+ZakWE/+oKKGE6gYuTynCKBQcFj2zVSWzZFD3\\nLggDofDliqKrU+oZEJhgej/0XIKUUceNihRS2iLyLI3/I0SIoogVzMgkjs6VOpFJ2EBGz/AIX1dF\\n4jJkA7YuuorkvUCy1WTuRjAJMrmkJEyGaYSrTnpQ0BSKlN40WXTDyB+h5tXQ8kUiKjtlqJLKRRQp\\nEVXdKqpulRMvdQnn5uamPHmS949hGtg8tjnVJZQlGRklg30W7IOh8hDQBXzz+m/i6KOO5scosoL+\\nbD/m5edt1dF7qDE0Qe2soBfw9hPfjiefexLQgbnz5uKBOx9AsavIncROqdfpxpYtW3DAAQewlPsn\\nP/lJfOc739nGs2birzn2339/vPjiiwCAF154AQcccMCEx7znPe/hzvKXv/xlXHbZZTvt+Jdccgm+\\n/e1vAxANuhUrVmDv/fZOSTxTkLdX5xRdV3Rk9Sw3iQCg3qrj9PedLt6bK8Ry7r7rbiiKmJ6QapcE\\nCcONYQw3h3kNjOOYJ/DsYaOoyGhCeEWCxFOGMBL5izbZNHWhAkJXdRYtIQ814kEAwm+ElCHDSJh0\\nWqrFk4JtrQOkZEYm1E7goOk1U/44FHEci0KjfV0lSMgbeXSZXTAUg2FqpLA2UB9A2Suj4TbgRz40\\nWWPhgCRnVIbMvFkSqvHj8YZjt9ENQxOvb8gGyzRnDDHdp4kWoR8IkkdQOi/wUHErTPyvulVGGxB/\\nlApBQk+EkeDcUr4k+DpNhsgDjewIMkYGXaaY4ieRFg2vwVBCyjnJSN4/z658Fnvtu1fq75Zm4YxT\\nzsCDDz8IZICL//ViXHjhhfx3SZJQMAS/Z2sFSN2rpwpvXdFRMAr41KWfwne+/x1AAwzLwEMPPIRF\\nCxfxY+i7uL3RCT079thj8dhjj81Az/4/xi5Z0LRaLSaWGYYBx5mcRP6Zz3wG1157LQDgwx/+MG6+\\n+eadcvxrrrkGn//85wGIicfy5cuZ+DaZxDMA7lolBQFoikEja0kSKla33HQLzj3vXAFlU4Gbb7kZ\\ni49ZzM8jQnVOz7HilRu6cPw2Sa49YUhuzi3NYhWzVtASE4b2xpsLG4AlFZPHMlVBxswbecQQHfeK\\nU+HFNo5j2LrN8sqyJAvZ5baEJyWIbfnMBJFwTiaoWrkloAWjzqgYJQOAJGSxQwjiI6u6tP9HHJoo\\nEm7Ihmqgy+iCpmqslCbFErzIY+w1iS5wkpOEcaahCREDSpikjEOvA4hJDUlUhwgxyxIQADd0mexL\\nEcURFyjU1evN9qI/0w9IwGhzlBVpMnpmAsyk5tawqboJMWIByzMKeOvstwqCZhRisDGIKI4wVB/i\\nay5JEuZk5qBoF/n1Jrt/6l49JXjQ9Jr40jVfws23iHvmXSe+C1deeSUkSOjP9bP88lQRxdEEgmfe\\nyKPb6sbVX70aX/zKF4WnjgTcecedOPLII1PPV2UVBaMwpTTr1uLnP/85PvrRj/LPM9CzmdhaHHDA\\nAfjzn/8MQMj+L1q0aMJjbrrpJsb+77vvvlizZs0b8qShWLZsWarR9r3vfQ///M//DGByiWdAFDWq\\noqb4H6RypSs6WwlIkPDai6/hbUvehlAOAQW48qorU6qFSU8VL/Qw2hzlooj8ycjYGRj3vuqxe1C0\\nivBDHyWnxMUNNb4IqpRUCKOJRsEooGgKKfst9S3YWNmIVigaWUEcpDbnsiRzfiS/F+LT0O+mmgwT\\nhIpkqet+HYP1wRSkjfIuFWYAWPGSIMZBHIg8oIznATLUJohy8vE1t4ZmML7xzut5FqyhiQ414Sin\\nyJLMExdFVlgJLatnGUKeLG7JZNQJHcgQimVdZhf6c/3QZA0bqhu4gCkYhQmqn0EUYLghlMRokrZP\\nzz4MOa44FVEc+g7qfp35TrPsWRPk+zvvn/0W7pdSdfVDHzf+6kZ85l8/A0jA/PnzsfTepVxM9mX6\\ntrnO19xa6nOj79GyZctw8uknsz/bN679Bs4777xU3pUkaVLO1nTiueeew5FHHjkDPXuTxC5Z0DiO\\nA8sSm25d1+G6E0l0gMAlH3zwwQDExm1gYIAVY3Y0VqxYgWOOOYa/4F/60pdw5ZVXTnhcp8QzMH5j\\nkbZ+Ej5AyiUZTXTOzzjjDPz6178GZGD+vvPxwKMP8HtOBk1FGn6DO/hEMJQg8YKZPA5JVTq+Ayd0\\nUpLFju8gQsQTGhpdB5GQY/YjnxfaCBETEjvH3VTA6IouEpRmbveCQgRRJ3BQapUw3Bzm5ESj8lbQ\\nguMLh2Mi12uyxp05UxW+PAu6FqBoF5HRMqmxvwSJJ1YyZH7vijwuNRrFkcBBhy6CMIAXeZx8kt0y\\nUqAjOJsui+RlaiZ36IIo4O6hH/mcnJPKOPT58PVsO1EzTt53IMkSeqweqLKKbqubHboBUYwQptpS\\nLWSNLCsZaYo25f3jhR42VzdjfWU9Sk4Ja9etxaWfvBTwAE3V8NQjT2HRvEXbTD5RHGGwPpiCK5Lc\\n5ooVK3D0CUezl8FnLv0Mvn7F1xHGIasvJcPW7JST9nQijuPx+wdigrp69WqeSs3ETCRj0aJF+NOf\\n/gQAWL16Nd761rdOeEyz2UR/fz9bBDz55JPcxNrRGBkZwYEHHoiBgQEAAnZ59913TyiUJpN4BsDQ\\n3qHGUEoxEQC6rW7sltsNqqziiiuuEDlKAoysgceefAx77rXnhPOhJkvFrWCkMcLNFeKQkBJYcu3M\\nGkJIwIsEF4SmCaQmSXLBpmbypp3+1vSbDJkDAD8WExCyFqCgaYapmui2upHVs9v0xOqMMAp5AkVW\\nCEHYVhD162h4QomRrAmCKGB4coyY5avzeh6zs7PRbXanOEMAmCfpBA7nEjIUJnlhmn6R1HQQBozQ\\nAERhSqabVDhRziahgaQ3EKmWuqELTRYQurpfZzi6oRqsxMnXs82ZbXpNbqJ2W90MOY8RM6+XJiIE\\nLe+2hKdfkrs62f0TxRGqThUD9QGUnBJarRZOO+00tCrC8uG2m2/DKcefAlOb2nScgoSOkuefN/IY\\nHR3FWw9+KwZHBgEAJ598MpbesVRIibe/e8lQZXXSRuG2gu8fCETQqlWrUtLuM/GXi12yoPE8D4Yh\\nNlWqqrIa02Rx2GGHsVHSD37wA1xwwQU7fNxGo4HDDjuMCaTHHHMMli9fDlWdHPPfKfFMZoqKLFRE\\naMNM6ldkUmlpFkYGR7Bo0aJx6MzFn8TVX7+ayXvJIL4IAIYwyZLMY/iW35qgRkWdLwkS3MiFH/iQ\\nZZmnCA1XYFWpqxZFAlJAxyFye5/dh5wpOoJBFCBGPOWCQRtz6k5trcMZRAFGGmISVPfrLNPsh74Q\\nRgiaqLgVXrgIQkdeO6QSRoWWpgrHZ1uzkdEy6M30otfu5QWOii3q5LiBK4rEoMUyoMlRffKak0oR\\nFYSaLNRkSLqSxv3EFwpC8bkTP4cctalTRyIFBN2gjctoU6i6uIHLhRd9r9zQ5cdRIdfwGyllOuqI\\nKbEy4f7xQg/ry+sx0BhAza1xMrj00kux9oW1wCDwg+9s+/6hSVGS39VtdSNv5NFoNHDIUYfglQ1C\\nIvewww7DEw88AcsYL9QbXkNMthLFvizJKBiFKcmyk8XmzZtT98/FF1+M6667btrPn4m/njjwwAPZ\\njHLlypU46KCDJn3c+eefzz4a559/PvvT7EjEcYz3ve99uOuuuwAAfX19WL16Nfr6+qZ8TlLiOY5j\\nsS4GLmzNhh/5bHxJkr5kzKvFGo4++misXCn8ppYcuwTLHl4GN5podOkGLnfDgyjgnJTX88gaWbiB\\ni7JTTj1HkRTkjBxM1RSNmtBnJc6G32AfM4IS04Y5eeyCWcBu+d3QYwqeCSSwZ8xk+YQ2+RktMy3D\\n3y21LRhrjQlPuKABQxZeayW3hKbXFIpqbTXRGDE3lyRJYsECylfE5bQ0AcnuMrvQY/UwxyWZS7rM\\nLvihMFCmIo4sFuhaJQuaOI65kGz6TSAWTUtDMaAqovgj2DTBwrzQ4ykMFUjEgy3aRYYWUnElSQJi\\nSA05QnxQOL7D6nd1r86+dCTeQEFNy877Z9FbF2G0NYqx1hjqbp05R9d89Rrcc/s9QBk4/6Pbvn/i\\nOOa8SmGqJotEnPW+s3D3fUKqf9asWVi5YiXmzpnLj6Xr3ulzRFDs6YbneTjqqKP4/pmBnv3/i12y\\noPF9H7ouFg1FUXhaMllcd911+NSnPgVAOL/+9re/3eHjfvzjH8cPfvADAML/5rnnnsPee++97fNt\\nq3N1wtCyehZZLQs/9id40yiygl/d8iucd+55/Lvf/OY3ePvb386JjXT7k8/1Qx+6qqfMx8iHpOyU\\nU9hlANwFckJBEKSuGT3XD32GtJGgABmC2prNhMGsnhXSv+2OC018pjJNSxY3siTDj3zuOI21xjDU\\nGEp7w0iq6Gi1C8Ak8Z4WdjrfIBLqYQSbUGQFMuQJcDqCCpDJWN7Io2iJBMBk1o6gYxExlZJf2Slj\\nqD6EECFvOPJmHpIkodQqpTb4pmbCkIXEMhVHtmajP9ePBYUF6LF7eMpDxxxpjvAGwFDbHarmKMJY\\nKN9U3AoyWoY3F/Q4W7NRdsqpz0GHjp6c0OaXVAmvDr2KgfpA6jFNX8g/P3THQ7j6iqsBAEcefCR+\\n//jvpyxEgyjAYH0wtVHpsXtYXef8j5+PH90kNoS2beN3v/kdDlo4cfMYRqEwB+3wIzIU0W2cDkcL\\nAH72s5/hnHPO4Z/p/pmJmUjGQQcdhNWrVwMQEBOa6nfGk08+ieOOOw6AkBgfGBiYdGo+nfjP//zP\\nVHNg6dKlOOWUU7b5vDAKMdQYwkhzZILcMMkBd05rFEnBay++huMXH8+58lvf+hYuueQS3vSRp0eS\\no+D4DiABRXOcXE1NluHm8ITmGgnKuKEoeoj0zT5mkY+6W0fFrQilS2m8ydJtdTMqoGAWULSKvG6Q\\nSWVyDe0M2rDrss4iAg2vgdHWKDZUNjCRnPgiESKWIiYomS7r7ANDfEZN0RiJ0PSbQiyhbUeQzCXE\\nbaTCJ6tn0Wf3ibW+zWnpDIbFRUIumZQ7K04Fw83h8SZdHENTNeiyjrJTTq2LxGuiZlnDE02svmwf\\n9uraC7sXdp+Qywj1QJ/NLGuW2Ee0VUCrblXwp6IIsiyz7HOP1TNBVU6WZBxx6BF8/zz6+0cxZ685\\nE/YkkIDXnn8NHzj9AwCAXCaHgfVTe9KQuEVyD2CpFue2H/7wh7jwkxcy1OyO2+7AWaedNenrJHll\\nFATpm64ATSf0jO6fmfjLxi5Z0ARBAE0TC6wsywjDcMrHjoyMYO7cuTzF6fQZmG7cfffdOPPMM/nn\\nH//4x/jHf9y2xGyym9/wGqh5NcRxzCNlVRFcAQAp2BEgbsaPnP0R3H/P/UAM7LXXXli1ahUymQyT\\nzGlKEccxT13CKETdr7O/C5HWC2ZBYJ4TMsp+7LOYAJFAqUOvyMr41ENWBN5aMWHr9qSFChUpSYMy\\nGTLr2adw1sRhCccXcsTCHZpEDmiCpcoqj/8Jf0z+LDk9h5yRG+9KtjfbNLXYUtvC8pw1r8au1WRY\\nRhMNRVGEOg3ApqNZLcviAwWrwGpCNGEi+cyyU4YXeCg5JWyubxYTuRjjhFRpXDjB1myYiglZFlO5\\nslMWGGhFJMm+jEiC5FGjKzpPhTRFg6ZomJ2ZLXhCcYTR5igG6gMMZ1AlFXOyc1j9TFcEb6vklHjz\\nEQQBdp+7O6ADyANPPPFE6nPMG3ns0bUHTNXEK5tewcGHHMwL+e+e+B2OfOuRE4qKyYoZ8jwCgLvu\\nugtnfeQstJXB8e1rv41/+di/bPXeoYKUilX6jtHnva3ohJ4l75+ZmAmKgw8+GKtWrQIA/PGPf8Qh\\nhxwy6ePiOMZ+++3HJpw33XQTzj777O0+3ksvvYRDDz2U1Tmn65lEhT5J/ZLIiK7oyOk57uDLkjyB\\ncwEA3/rmt/CNL38DCIX4wMqVK7HvvvvCCz2MNEbQ8Bu8MU4aAdNkmCwHVFlFb6YXfuhjoDaAMWeM\\n+TYxYlFcqGKjSpMJgvB6oSfWTkkUEQWzwJvSziBPmC6ziz1gSEK64Y171HT+V5KEQicioO7XBWQs\\nFBMsTdZ4HaUihhprBbOAbrNbNLW0tLgNQYWHGkPi+O0CKYxDeIGH0dYoyzhLkkAvEJxCJIAmAAAg\\nAElEQVRLkRQmp2e0DGzd5nxF50NiDxW3gpYn+FBDzSHRjGqbJDuBww2zMAp58gIJMGRDfDciD5ok\\nJv1zc3ORMTLMAbU0Qfb3Ao+LrN5ML09dSFKf0BxNr4mCWYAkSQxzI5RJMv8fceQReOHFFwAb+NUd\\nv0rJnlNxldWzqLk1HHr4oVj72loAwI/+80c45+/OmVBUUIMwWZgTzJ3un0OOOAQtVzSILzj/Anz/\\nO9/fKuIjjEI0/MaExnGSv7ytSELPkvfPTPzlYpcsaMIwZJgXmTttLd7//vcL8z4An//85/GVr3xl\\nu443MDCAAw88ECMjIwCAD3zgA7j11lu3ehPQhjy5GQPEhr0ZTOw2WZqFnJ5jPCx9bFsGtmDx4sWo\\njlWBQKg2ff3ar6eSFY2gk8TGKBYym17gsbcLLWqqrMINXCbhO4EDL/J48kELzFhrDE2vyRKcpmZy\\nV8NUTTb7TJ4vLXiUFAkPTZMdSmr0LzlhIgInvZau6JidnY2cnmMYFunbE5xra58BkRq31LcwpMAP\\nBVl1oDEgkrDfghd53J2jIOItJRxdFlyYvJFHt9mNgl6AHwsxAZINpWRG78MLPShQkDWyUGQFRaso\\nnLkhVM5aQYuFD8I4REbLQJaFvwQlGS/0UHEq4hpKErqsLuT1/Li8tiRhQ3UDY9fpuvRl+1JSzUmP\\nh02VTTjqhKOEAZkPPLFcFDRZPYv5hfmMk6ZreMaHzsDSB5YCEN+/y75wWcqI0w99DDYG+XOUJAmz\\n7FmCLwZx/yw6bBHG6mMAgFNOOQV3/uLOaUlqEuwgKdUJCNhHl9m1zdeYgZ7NxLbikEMOYTjJH/7w\\nBxx66KFTPvbqq6/GF7/4RQBC+eyBBx7YrmP5vo8lS5bg2WefBSAUolasWLHVSQ9BtxpeY4JsswRp\\nQnOJCgVSR6S/e56HU045BX9e/WfABZYsXoJfL/s1WmHa94VeI+kkT9L/URxBgoCTmZrgddAa6EUe\\n82fYG021oEoqym6Z1bIM1YCt2iwRbCpChZKgbsktCzVzyPyZ3i8ZJZMqJuUT2gRHUYSSU+JGkiqr\\n2C23G4p2ETk9xzzFvJFnP5+tTX4pn5edssjf7YmKJmvYXNvMNgRBFLAyKIUCQfKnxhzlFFIRJfg5\\nIShIaY5U4lphCy2vJRRT23C8pGBKjBhu4GKwPoiaV0MQBsgaWSb70ySJVM0IZpbVs+OQtLbAQs2r\\nsWpdEAXiPDULszNpfzFqNlacCt528tvw8isvAxFw6623Yv/994eu6Oi1e7kgorj8y5fjqquFausJ\\nJ5yA2267LQVli+JICO0k9jcZLcONMd/3sfjYxVixcgUA4SH1zO+eQS4zDpnbWrBVRJyeMpF899bC\\n8zwceeSR3Pw47rjj8Nhjj23VlHwmdm7skgVNFEUp/OK23uJdd92Fs84S48h58+Zh3bp108Y/xnGM\\nU045Bffffz8A4Q2zatUqFIvFKZ9DZoiTeQZQsdDyWxMkngnLaqqmwNi2OyU333wzPvGJT3An6957\\n7sXb3vY2fg7xJAjzOtYaYwlNSjaAGLNm9AxmWbOQM3Jc0FCiIPPJIBSERXr/xCUhSUlTNVndxZBF\\nUVFxK6i4FTS8RjrBSuBiSoacel0iSgZhMM4/aS/0OSOH3kwvTFWICWT0DPNJJsNLx23HaCrsqGAD\\nxOI71hpjKFiEiMUXwjgUBMvAQyMQwgpO6DAcIRkEi2v6TYYX6LKOrJFF1shibnYuuswulFollJwS\\nFx09dg/2n7U/VGW8E0UJlyAfFbfCnUQ/9IWIgqxzUgba/gQdBE/ySSCVo26zG7qsY3ZuNhZ0LYCh\\nGiwZPlAfwJqRNag4FZx15vh4/qlHnsLexb1TBVAy7rrrLpz1obMAA+jv78fvf/97KIrCktlDjSH+\\nzCVJElOmBL/n5FNPxrInlgEA5syZg6eXP43dZ+8+6bGmCirsOuE0STPQqeKnP/0pzj33XP55Bno2\\nE8k49NBDWZp1xYoVOOyww6Z87Pr167FgwQJuXqxfvx7z5s2b9rEuu+wybqhpmoann356yokQAPbu\\n6myM2ZrN33u6NzonMiQyQ4aUZLh5yimniNdTgMsvuxwXnC+gb51cNTdwmXdC01KCrxK3pMvsQtEq\\nCsSAV0McxczNhCSI8mEUcu4iOX2aLpiqydxIkrMvOSWMNkcFgqDjficEAMknUx4h42la9wnuRo3C\\n/mw/59acnkOX1YWMlplyE0sKaQQJSxpHJ4vEmlvj14jjGHk9L2Tzw3GRhM6JBiD2CE7ooOW3UGqV\\n/i97bx5u21XVif7mnKvde+3utPfm3uSmIQjSBExIIEroFaGoKhWbEKUArbI+9YmUfhKoz+KpVWUp\\nvqpAUCiUUhCCL5a8TxAeYhAkICShDeaFqiQkue3pz25Xv+Z6f8w9xl77NPee29CYnPF958u9ufvs\\nvdbaa80xxxi/BlEesX9OzaphtjaLttc2uSbqGn8e20PDbuCJc0/cxgFZHi5jmBpOVTfpQgnFudCV\\nphnZS3rMY1JSoeN1ptZNUmoDgFE2MuILlo8ZfwaHm4enYNCDZIBTg1MYpkP81I0/hQf+tzHWvP22\\n2/HC616IGX9mxzX56NGjOHL5EcAGIIyIwKGLDnHe7yXT9zGZvFK8+d+/Gb/z1t8xaqeWhc995nO4\\n9uprd/wOdwviCW9tKpMv0en4WF/5yldw7bXXMmLhlltuYUrDfnzr4zFZ0JRlOVUVn+kUsyzDoUOH\\nsLq6CsBIZb7kJS/Z02fdeuut+OVfnkBj7rjjDrzoRS/a9bh2WrwIXrb1Ad9N4pk6bALCSC9mCX7q\\npp/CHX93BwDgkiOX4M6/uxOLnUWjNz/WxKeuCQCGVEVZZLDL6ZCvE+Fhj7SPoGbXmFgITOQ/SfkL\\nwhRihGldC9cMDwfaFDhjDgx14whaR4tplmdIdMJqN3WnjpqqwbIs5q7owvgqSCEZfkUy0K7l8ni8\\nav5JqmNUvJzOAJTOiwwqAWCxtojADTBXm9um2pXrHGEWYi1cw/JwGcujZWxGmzzN2uptQHhqUrZp\\nucYbxhIWFoNFLAaLqNm1qUWeOnGAKQIaToOLFyqIM50hTEOjqqYzHrnTZxPkrETJCmxJkUBCouW1\\nzFTImzF+ONE6+xJprfHSl78UKAAMgJMPnTT+Rs7OUCx+fjZWAQ/44P/9Qdxwww282Wo4DcNTEnKb\\nBOfb3/52vP7Nr2eo2V/e/pf40Zf+6Gm/q92CiutBMphqFiih0PJauxI9y7LEK17xCnz0o2bKdMUV\\nV+BrX/vaPvRsPwBMC8d88YtfxNVXX33a17/4xS/GJz/5SQDA7/zO7+Dmm2/e0+fceeedeN7znsfP\\n71vf+lb82q/92o6vpdywFftvS3tHs9/dJJ4taZm1QCjmyPzn3//P+IN3/wEAo/754b/8MJ75pGca\\nAvvYI4Ykf2kSQuteXphJAm0GSS74CbNPYBln2vDTZj3VxsRZwUCvLGWhF5tcQtC4qiSya7kMjyL4\\nM//oFHlumoUtr2XgaNIFBNgvLcoilvFXUqHltNiPjSbYtHklfikVLZRHtzYjq5HrHMN0yEqbdcd4\\nycz5c2h6zW3fCxVYa+Ea1qN1dOMuT/DDLNw2Lajbdc7rnuVxkdTxOlgMFqdMpQGT6zeiDX6POX+O\\n3796TiRGQMdMwg0Uw3RoBAq0xjAbsqBOy23BkiYnA0a4pSxLVnm78cYb8cA3HgAi4M5P3InrnnXd\\naacdL37xi/HJv/sk4AD/4S3/Ab/yK7+CQhcYpIMpvlHVMBYwz88NL7qBi+P/9B//E970a286Z/n0\\nna6/EAK+5Z9WyfMtb3kLfuu3zJTJ933ce++9eMITnnBOx7AfZxePyYIGwNRNrLU+4039hje8Abfc\\ncgsA4FWvehU+8IEPnPEz7rvvPlx99dUsa/urv/qr+P3f//0dX1stJvgYIVi56nSxm8QzdUgGyQAP\\nHXsIL3jBCzAYDgAJvOZfvQa/+Zu/yfr4uwUlozALWfGDjoc2oHO1OQgILA2X2ESNFngy5qqSAaMs\\nMnC2cRFBhYYjHdScGpqO8asJsxB5kUPDQASKwhROeZmb4sau82SJvGtc5WKuNmcWNTE5h7RI2aWZ\\niiOa/OwGFag6ObvKxepolUmvUkgcaR+ZInZSEg6zkJVm+DvKEiyNjATlIB5gmBn+Tc2qoek1TVGZ\\nZ1OfLYXkZB04AeZr87i0fSmabpMVhADwyJ0gAXS+m9EmS5S2vTYc5fC/xXmMtXANG9GGSZjxAHW3\\nbnyFxomwF/ewMlrZJt3tKhc3vuJGIAVQAl//6tfhWi7jx3caofPzI4Afu+nH8Htv/z1TTFUw40fa\\nR6akue+77z583/Xfh7Q01/Hf/vy/xTt+9x17JvXvFgR1qKrfAGBC8U7P24kTJ/CUpzwFvZ6B7/3y\\nL/8ymxnux+M7rr76anz5y18GANxzzz245pprTvv697///fiZn/kZAAbycv/9958x/3S7XVx11VU4\\nevQoAOCFL3wh/vZv/3bHZy3Mwm1FO3HHqt3qnWI3iWfazG9EG1jqLeHHb/xxPPjAg4Ayogjv+aP3\\nsAHmbueiS2NOTCaaxG8ExjBTfw6LwSKkkHho4yGcGp6aTM3zsd+JUzO5YDxxIrl5JqlX1nXXctFx\\nOxBSsH+XEAKiFNDQ3GACjGGva7lIsgQQ4N9f8BfgOR5vzglKRQ0jktsnX5vTbWSrXmqDdIDV0Spf\\nq8X6ImZrs/xaIqNT3q2uVbnO0Y262Ig2EGcxosI0HQM7QMczcN9ETzfNCOEgpGDO1GJ90XBT0sm9\\nUrfraHktbkCSz9x6tM6cJPa3GYvihFmIftzHRrzBIkA0LStRIrADxEVsCtk8m0IaKKHwpje8CQ/d\\n+xCQA3/1ob/CdVdfd1qT7erzc+X3XonP3fU59NPJFNK3fEZnUHS7XTz9GU/HsVPHAAA33HAD7vh/\\n74BtnRm2fLogVbmtKrCWtHaFIW6Fnj33uc/Fpz/96X3o2bchHhcFTVEUZ7yZvva1r/Fo3/M8LC0t\\nodVq7fr6JElw7bXX8k171VVX4a677mK5W/7sPcDL9hJbJZ4BcIfMtwzx788++Gf49Zt/HWQSfduf\\n34Zrn3UtlFQGqzz+PNrA0uJLyi2jdITj/ePYiDZMp2vsKwNt1OLoPUiDv5rcaEpD7st07nEWG918\\nqVCihC2MPj05ClvSQj/pY5gMeTpCZMkojxiiULfrCNwATaeJrMwYK00wr9Mp3LDfzRiWRtA4One6\\nlsN0iLVwDYUu4FrGmLLu1LmA2doNpaCpVdWELnACdPwOhukQR3tHsTJawTAxTsZUjFrSYlIshWu7\\nsISZ1jXdJmb9WRxuHmaVH11qbIQbWBotMTdstjaLQ81D245rebiMoizYh8cSFuLCdODuW7lvCqpC\\neO2F+gLma/N45jPGPAEXuONTd/Dz41oum4O6yuUkf9/X72NugRu4+MzXPmNEBWCEOeZr8+j4HYbB\\nJEmCa559Df7xISPn+b3f+7343B2fQzs4Px+ord9LL+ltg2023eaOG7+t0LO///u/xw033HDBjmc/\\n/mnGNddcgy99yWDy77777m0mr1tjNBrh4MGDGAwMrOnzn/88nv3sZ5/2d2666SbcdtttAIBOp4N7\\n7713G1SNDBS3wqwIgns2/hlViWf+e9znDeA9X78Hr/v51wEZgBJ4/etfjx//8R9n2Wfa2DvKYX4F\\n8S8BMxVYHizj+OA4i70keYJSGMK6LW1ISIS58cRqOA3+XWp+ZWXGOQ4aJifpnPmMtrRhKQuBHaDt\\nt43KV9LFerg+BW0W0niJRVkE3/ZN7nFbOBAcMNdsrKaWFRmvj7tti4gf2nAaqDv1bXkUABuQDlKj\\n8uZZHmb9WTatjvKIp0RbI81TnmCRB1ngBJj1TTF0angKa+Eam2bStaNmVjWXSCkZak3FypH2EeYI\\nAUAv6WFpuMRQs8ANcFn7sm1F6zAdMtx5M96EFNKcgy5xfHjcNNrKHChNEeNYpqjqeB287rWvwze+\\n8Q1AAO/+43fjyU9+MiAAW9iGIzQWCCLIeBqnOHTRIfP8SOAjn/wIvudp3wMyxm44DQRuMGXK+qqb\\nXoUP/k9j8txut/Glu7+Ey49cvufn4UxBqIytogHk/7P1en3lK1/Bs571LBaketvb3jaF5NmPb03s\\nfUf9Tyyq49K91GxXXXUVnvGMZ+CrX/0q4jjGX/zFX+Dnfu7ndn39m9/8Zi5mPM/DbbfdNlXM7AYv\\nq3rKnO35NN0mHOlgJVzhDjSdW92u46d/8qfxN3/9N2ZcawFv/PU34qMf+yiaddPxJ9MtUpRJ8oSN\\nt+hHSWW696Me4ixGXprXkWmapSy03bYxzhwTQFkRRjk8BiYcaj/tox/3sR6uI8xCpDALZy/u4Vjv\\nmOmS1RdwoHEAJUoWLojzGJawTJeoMBOqTJvu0NauiBKKrynxTKrGlY5l/ivFRFaaDMmAiR69FBKe\\n8rCarCIuYiwPlxG4wa5dT601wyUOBgc5yZPKVq5zCAgcahzCocYh9jCQQqIbd9GNDeF/AxuciMLU\\nTIhqds0k5myEk4OTPOpuek1ISMRZzJMbAcHJmiLOYy5W8jJHy21hmA4xSAYoygJH2ke4U1uUBVpe\\nCxcFF6Hm1KaLw8RMbLLS/L8kT3ByeBJNZwJrERBwLnLwpOufhG/c/w0kdoKPf/zjeOUrX4kkTzBb\\nNwafNN3reB286c1vwj8++I+GQ+W6+ON3/fEFLWYAg493LRf9pM+TNyKVhlmItteeaiq8+tWvxu23\\n346PfexjAIDXve51uPfee3eVDt2Px0dU1+q95JJ6vY6f+ImfwHve8x4AwJ/+6Z+etqC57bbbuJgB\\njORstZjRpcYwHU5JJgNgKflzcTgnKNWpwSkc7x9HP50USp7ycNWTr8IvvuoX8Qfv+gPAAd75znfi\\nOdc/B5dfcrlRS5QWFuuL8G2fN9Ik90s/mTZyvPT8ZTrDKB1NKaSRNUGs44lEsnTgWR4O1Q5hxjMT\\nYUIpDJIB1iPDn8nzHMiBftzH8f5xAMBsfRaL9UXommauY5zHKHUJx3VQwMgr1+06NqKNbegFgvcS\\nFIxyLAnAEGk/0wY6R7A0CuZjooQtbYzSEQQEvrn5TZYC3imo8ACA+do8b5KpAAOMnHLNruGS1iXm\\nWMcNtDiPWRQCAOcSgveR55iAwMObRkGMTDalkOjHfZNDx2qng3TAn0n3H+WETGdoOA3DScoTSEvi\\nSOsI5mvzvIdwpGMg1cpCWqST56c0nCn6c1YaBdBhOpzK6Za08JJXvQQfuv1DgALef/v78bvP+F1k\\nRYaGa4q3rMjQ133UnTpu//Pb8cHbP8iw5Xfc+o4LWszQMTXd5hQUHAAX63WnPpVLnvnMZ+LNb34z\\nfvu3fxsAcPPNN+NlL3vZPvTsWxyP2QmNUoo72FmW7WpuWY1bbrkFb3jDGwAAr3zlT+J//I8PoChK\\nlCUgBKCUgO9LfPrTn5zi2Nx66634pV/6Jf77bvAyUjE5myh0YXToxzhXeoDCNMQwM3hoIv5b0kK4\\nGeIFP/AC9Lt9QAA/+ws/i7f8n29BnpdA7gJaAhCQQqCUBTI5RCm2+/ToUuNU/xRWo1Uzbi0Bx3Jw\\noH4ALa/FCjB1uz5NZq/IUGdFxsVJnBsfm7VoDd2oCyknXjGWtNBwG5jxZtjJeBAPeGJjSQuOdKZU\\nagifC4yhY9JhSBpJlKIEK6rtFEoYOBu5Qkd5xIUwbR6EEOh4HU58pAwDTBuW0nGSslacxywMQBE4\\nwZRBGV2vKItwtHcUp4ansDRcwiAeQCmFht3Y5pRMI38NjTiP0fbarBZzuHkYB4IDUFJhPVxnhbjN\\naBO9xBB2aSNB4VoGwkfX0rM8tNwWbNdGKUvAAh4+9jAG2QAb0cZUgU5qchTved978LZ3GZjWS593\\nA/7bv38TWrYLlAU0BErlInFauOvur+OmG2+awjrf/H/cfNYOzWcTtCGqPpcCZlIWOAEn3a3Qs9e/\\n/vW45ZZboLMhiuFJ6CIGdA5IC1J5UMFFkPaZJaL3459uXHvttbjnnnsAAF/4whdw3XXXnfF37rzz\\nTp7uXXXVM/GpT30eQqhtueTEiaN4+tOfjn6/DwB4zWtegz/5kz/h9yGp3OpzJyBY/epsGmNUeNCE\\noJ/0Gc41TIfQMLLuDbdhpHzh4KZX3oT/9Y//CwBwzfXX4H0feJ/xRcsBWwewhANL2hACKJAhQhcF\\npuFsJDhyYnCCYbe2snG4ddiQyZU7gRdX1lPy9KIGWTWXhKnhMK6Fa8iRc/PKljY828OMN4O230ac\\nxdiIN5DmKTSMGlrDaSAvjeqjEGLKUFJAsOKYrWzUrTobSpO62E5BjUqCZdFrAyeY9kqxfV5rabpl\\nSYvV2qrvR7w/mopUpwOe5bH0c/V65TrHZrSJ1XAVy4NlbKabKMvSIAa8iTolMBaeScy/h2kIRzmY\\nq8+hbtcxW5vFwcZBWNKa2sRvhBsYZSN04y5PVigc5WDGn+HGHu1Lrrv+OnzpK18CbOBDH/kQnvCU\\nJyBMTYFLXzddc4ovfvmL+IVf+QUAwFOvvBy3vf0WdBwfSgClUIBykLuzWFkd4vnPfT5GA1PM3XTT\\nTXjfe973Lc0l5Dm0dY9H0ts8qUtTXHPNxIPnhhtuwKc+9SlzP+3nk29JPGYLGtu2WWkiTVP2pTld\\nLC+v4LWv/Xm8+tX/Gs973u6iAJ///Gfw7ne/DZ/4xF/jpS99KT760Y8ybGvrJhfYnfS/UzB+d+y/\\nUiV4b11QdakZN0zd/0IX+MhffQRv/vU3Q1gCP/iCf4a3/sdbMde8aLePRC5CZGqAXISQUjKsTApp\\niOR5grzM+bO3dqWoMChFyaNrANzxqarLQJixejfuopsYfxZSuXGUYwjcbotN4EgMoKqSpYRJfApm\\ntB04wa5u0baccJTo2lJSJ9gF8YZc5aLtt+EqFxvxBvIiN34zTsAGZEII9OLtpo51p85wqkEymCLf\\nEofkTO7DJwcn0Y2MSlCYh1NynSS3yaZz4+tLHjYU5MtQaLMRWAvX2PiMukwCAvP1eVzSugSOMkpp\\n1fNxlIMDrQMo8jGOffz8EC+HMMW0IXCV8Tg4unQU73/HLfg3/+xleNE1u0vbfvpr9+IP/+rD+Njf\\n343rvu86/MUf/wVafosVjc6VxHmmINjmTsRo4iABpqP+2te+FkIIvPzF1+GP3vYWNL3dzXmlPw+r\\ncQSqtvgtO/b9+M7Fs5/9bNx1110A9gYfA8xm8bWv/Xn88A//yGlzyde+dg9uueW/4BOf+Gtcdtll\\n+OpXv4pGwyhM9pP+Nq6Lq0wjaS+NsazIuHghTgswERSo8gJo2u5aE8grANz/jftx0403GbiPEnj7\\nf30XfvD7/wUaancVzwQDjLCOFEMz3R0jFQpdIMojoDTmwSSHWzV5zosco3RkoMQ65fxHMC8iaidF\\nAg3D2eklPaNwWBi/MjJzlkLCd3zMerOwlIUsz2Bb9tR6qYRCURrpZs8yKmGOtfPEy5ZmvdWlZpgz\\nF1hZiPXQeM3Q5GQxWDRd/bGiKKEcFoNFI90s1I5CDZ7lMdePYLPVbdpefLa6URcnhyfZk6bhGkjf\\nKBtxMVG9v5RUsIWNVE/uN9dyMVubRaELONIxohFpCEsZwR5SQQucAAv1Bfi2z1MaCgGBF97wQtx9\\n190AJs9PoQuM0tEUBI/RGUWMQdzHn916C37yud9/2lzyhfv/N/7rB2/Hx+68GwdnDuITH/4EDs0d\\nQs0yMsvfyvU4yZNtMuJUIFMu+fKXv4xrr70WRVFACIH/58//CD/03KdAx2u7vu9+Pjn3eMwWNI7j\\nsFlmHMfbuC1bQ+sS3W6BJNn75bjzzk/iuc99Bg4cWNzRU4ZUuk7XLdgq/7jT15EVBnZFhEUiWtPU\\ngDpttOkvyxL/4Tfegp99xa/gRT/ww3s+H8cBGi0gGjvUU1ChRDAyUkQj48hEJyi1kcckLCxB2ugB\\nt6XN0pmZzpjXMUyGfG4kYwmYRDNfn8flM5ej5RpFNw3N587HNh7VE752Ky+J3peSCid1GM5Q1RuF\\nFkHStSf8sxACdbsO13LRi6c5GUoq3gwTnKm6USD1mTNp2OtSoxf3sBFtIMkT9nDoeB2GdRzvHcep\\n4Sn0kz7LgZZliWE2nErSSZYYM7uxyV7gBKhZNczX53FF5wo8dfGpUwRVYHIPURy55Ajyfg7o6edn\\nqwknYGByeZ5gJj6JWjGtyHe6uOMrX0F4+DI86eKn8gZNCsnmpKRmRKpDFyqyItvmMg2YQp0Kvlf+\\n2I/gp1/xDPzQ809PAK+G9OfhLlwNcRbcuP347o/nPOc5+MIXvgAA+NznPofrr7/+tK8/l1zyd3/3\\ncVxxxQKuu+7aHT1lCKZ1uqZIWqRcvFTX0mqwzPOY2wmAOY22tA0sNR2wfD4AvPdP34sP/8+P4F2/\\n9YGzzieF20VeViCsJVhGOS1S3hAShDkpEjZPLnRhuCHj6XmmM7S9Nppuk9XVSLmRchNBxKrcRCEE\\nZv1ZfM/c92DWn2WPr514l1Uhm6oRMzDtKp/qlBuMRVmgH08rzjWcBstOt702bGkzz4l4OFv9VIQQ\\nU7LY/aQ/xZnda2MMAFZGKxgkAyRFAt/y+fdIHW4z2sTJwUkWJSD5flIgrcYoHZmckw7gKY/luC9u\\nXYwjrSOYrc1OXSfar1C88IUvxD3/cA9Qbn9+tk6mkizBIOmiNvgmvHzaW+x08Td3fxHH6y1cc9Wz\\neQ+ghOIcQl46NCG7UIUCISy25pKqxPNv/MZv4Jb/9n/hfbf++n4++RbHY7agcV0XaTqWGo4ieN7u\\ni4DWJTY2CmTZ2V8KywIaLQ3IM5P+q+72pBK20+WnDhBhY/PCiAoQJIBc6Lf+DsEHBCQWyisROGfP\\nSRCqgBNEoOedFmXacA/SAeIs5m6NkoqPhdySyZMmcAP+/4TRJVllMr2k5HO0f6wNG+gAACAASURB\\nVBQb4QZjlH3H+ANYwnTPF+oLxoBSKE7YO43/i6JgYQLibOx0jen3aTLT8TtoetN4dFITsqXNhUEV\\nYsUb4LEhKCmQUdDCv5fxN3GZCAJHSUtA8LSqKr3Z9tpQQqGXmCLoWO8YVkYrODE4gRP9EzzpoAQa\\n2AEu61zGx0+iBx2vg7bfxow3g0ybjT4AXHrppcjSDIiAaDj9/JBCTpzH6EZdjJIeLs278MvdhRl2\\ni2EpcL/wUasQVXcKKnTI/JWKnvMpdChRb9s42nXkp+6BVYan+e1djtNpwT34nP0k9BiK66+/Hp//\\n/OcBAJ/97Gfx/d///bu+9nxyibJKwO9BY7oxVrfrU7BICuoQEyRoa0MNmEzxyaSXhVcgeJ0N7GDb\\nxj3MQoT5mHeWlXDXF/Dky5921udUygzwe4AoeWMNmLVsPVpnsn7VewYYSx8nRqSlLEvUHKMoVeiC\\nuTck8lJVm4qzGI/2HsXx/nHmvrjSxUxthqHNC7UFND1TwJHM+07Fny415+xRNtpVLCAu4qkmX8tt\\nYa4+xx5sdD5hFrKlAG14KWg9VlKxmmV1k2xJCx2/sychoVE64nU8yiJ+X8Dkc1vaWA1XJ/zbsaw0\\nidssDZewHq5jLVzD0nAJJUozaSuMgpmnPFzSvoSnRDR5Ivgu8Uni3IgWvOhFL8Ldd98N5MBnP7P9\\n+aE9UZzHGMSbaPa/CfssGmMUg1LgPjhw1OnV6CiXkAjBhSh0iIc7BQ0VZlInco2vf+Z9+N4r9+5H\\nxce6n0/OKh6zV2mvRM6yNN20c0lAAJDnwGAgEDRLg42uwMtoMaTiZWsBU+jxxKLIpqSQ6biIQE7Y\\nXvJd2WmD7CoXjaCBUpco4yascndn6dNFWSikIxdukCKoLEzkM0DdF0c5cHwHo2SEbmgSZVEWkJCQ\\nUmKUmUWVCpuaO1EXI4I+cWh828dCfQElSqwMV9BNulMymhvRBjbjTcOz8Y2Tc8ttoSgLXoRpChNn\\nZhGFgCn+pDMFhaP7gro2jjJS0r7l82dS1OwahukQp0anoLXGerSOA8EBAxuoLzK/Za98md2CpJbp\\n+A41DjHfo0SJ9XCd8d8AuNMGAPPWPDpeB65yjYjm2MxzlBqzvJbfQstpoVPrTBUMSZ5gJV/Bymhl\\n6nx921yH0iuBHIBvJjDVgoY6hUd7RzFI+rgk751TMQMAgSjxJJHjwdx0VndSjAEmZmdkWkqhpJoy\\ndCWz0r0UOoQBp+IMALQukK1+BfY5FDMAoNMekpUvwV28dh8u8BiJb1cuKXIBhDXAH0CIaU8Zmg5Q\\n8RLl0dTmiXJJkifc0EmL1Ej5QiDTGUseAxOT5p0EBUjcxZIW0jxFrTgAq3VuwhhC2yjjBpotgcCt\\n8xSJmlxxHvMUP81TnoCTdH/gGg5KP+1DQLAao61seJbH0C1qIJZliUvbl+LyzuVYD9fRi3tsDF2W\\nJfqxEampO3V0vA5aXgvz9XnoUmOQDAycuIjZ342KRFvZsIUNIcUUkoKQAXO1OeZXdvwOIxroOyL+\\n7KnhKeaBzngzaHpNLrAA7Jkvs1voUmOQDvjvi8Eivy9gCpzNfJP/3ZIWQ6WpQHSUw34zABAVEYbx\\nEE3PcGY7XmcK8laUxiOm+rmOcthgu7DGxqkWtk0y6BjiLEY/7qE5PHpOxQwANESJp0rgm0IhyZNd\\nC5RqLqkGFTpV1b66U9+TiJOtbDRlk/dKwFjyOQ1hd+8/p2IG2M8nZxuP+4ImScqzggbsFHkqkKcC\\nNd+YXW2FNxH8qioxTOpS1EG3pc3ywmR4Vd1gV5XEqj/UpWYTrVhjM9reqTubKHMbWZJigMHUhIPO\\np9AFVkYrrAzmKIc7iAR1oA6UEIIVUci9mqQopZDb8MOXz1wOz/KwGW+y03ChC05Gg2TAEx66PEJM\\nJDcnJwGGTdSsGhZqC6g7dTOFqMDGSEiANwcl+LozlGt8e1Cy6PgdDNLBxBy0yPh+OxtYAEV1YaUp\\n1qycNRLSZWHw7kWCGX+GTVXpeE4NTuFE/wQynRldf6XQ9tuYq81hob6AyzuXQ0rJ05xu3N3maVQ9\\nDlIjwkGYgiYFPnvss7h87nJc3LqYJ1LUOV1QCo3s9KalZ4pGmeLK4DAyx+DGfcs3sMRxEc0mrjtE\\noQuEentyqhY6VOT4lj8lYEGvm/Fn2OlcJOuws/55nY+OVlGEy7DqB87rffbjuyO+nbkEhQNZuAhq\\nDq+P1Yk05RIqWpJ8wk+UQvL9XrfqaLttDLMh4izeJgQSOAFLztIPbeSq/Jw41tjcPL98IgoXURxi\\nlC3zc0xKaYEd4FjvGPppn5XBPMtjL65c5zy9IJEAIu4LmMl44AYI3ADduMsWAQBwuHUYT1t8mmlK\\nDU6x+AtgphijdITVcBWe8lDtZWVFxn5d1f+XIYOrXMz6s2YNLoGVcIXzIk1nyDdNCiObTOiJUTaa\\nun9G2QhNt4nNeBNhHkJCItUpN66AvfFlqlEVkLCkhbptzIGH5ZCnRP2kj7ptikIqlMqyRD/pY3W0\\niqRIJuaiTg0BAhyqH2IeqWd5SIrE8HGycMcihbk0JRDXY2ARQAE8MnoEj3Qfwaw/i7pThxSSp4G1\\nIoSTDba919lEoBM8uX0ZCncGhS6glEKap8xzSopkx2kcsPdChxqgW6dApErnKAejzMDZZbIBmWzi\\nfGI/n+w9HvcFzWi080bpbCMMS4z06pQEMhUwWzkXShhpZCLXUeQ6Z9Jk1Tys4TRQc2p76hRcqPOJ\\nImAzOsrTITJAo8RJnUMu2socEnJqckGjdQXFxNBe0kNemklVqtMpAipBiQBgxp/BjD/DyWh5tGyc\\nsbMJNpz8F0iauaZqLM5AEpnVBE3fScfrMAbbVva2zX1apOxQDRjIRy/pseoMSSQvDZemMNe+7eNg\\n4+BZyaiSsRkwIRQC5j6Zrc3iRP+EuSdgZDuvmLnCmJwOlnBscGxKhCHXOdpuG41mA1prtLwWojzC\\njD+DiyqiEJRgN6INdKOuMQNNB/yc2NI2ppoCgAuc6J/AWrKGe1fuNcm1nHRxvwfn1k3bGm68htxt\\no0SJuBirt9XnAUygmlVJ2HMtdKrQNUpSNN1x6g7C3gMX5HzywaP7CegxEt/uXJInNo5lxxAVEdI8\\nnZq8TBHapeJm0tapZLXTT42vmlNjPyjP8vYGhb1A5zQc5eiKk/CUBw3DO4gLA+FqeA0opZjzQoII\\nZOqshDJwa2lBQnIziaZUhS5wanhqCopN8DYhjOFow20gyiIsj5axNFhCN+kiyiY8GrI0oLzcdJqA\\nMOszhHk/T02ucZiFGGUjY2UgLRS6QOAG23IJ5bysyKCgUHfq6Cd909SzjXmlrWwjtjI+f1LLuqhx\\nEepOfc/XmGBPFNR8AgxigMRlAFNMHXAPwFaGN7UyWpnysCGYX8fvsA1CpjNkZYbD9cNTzwR5uJG0\\n+CgdTYpBAchyfJ8poJf28PDmwzjaPcqWAxAmx16UrO75XE8XKlyCHgtBAEDH70wVH2meTkE1T8c5\\nA3YvdAhS5ls+oxsonzRdM63JN5YuyDnt55O9xeO6oMnzEml6YShEOlc42VtCjmlCnZIKrnRhKWub\\nQABNN2xpM7ysyguwpX1aLOi38nwc1DGIRwiLIStm1e06PGcyebCVzbCGumtUvqgAqzt11sEfpkNY\\npcXKbd2oi1ODU6xXX3fqaHttPlci8hOxk8iSZWnG+zTtIoWUml3DQn0BrmMIgCQ7Su9TomTjUF1q\\nxFkMx3KwUDPKLEU5lgPNYmzGm1NETMCYjTXdJkbZCFmRYT1ahxVPS3ALYRSCunGXu4y7wQMpyIWY\\ngpR5KGh6J2D8dSxp4ZHuIzt2xUh+mfxvVsPVqfcaJAOGwFFB2nSbwJhmVeiCvXE2og3ITJrJlAPm\\nmJDXBBXWDanwjPbCXm6nM4ad9SGLGFp5DDMMnIDhELayYSt7CsZHXk/kCE6S5luVZ6pxui5cXQgs\\npN0df+9sQ0er0NlwX4LzMRDf7lwitYtHeseQ6O1TR/Ke8pQ3NW0kZS1XuSjKAlmRYa42xxBOgi2d\\njZzthTwnTzTRDQcY5seNk73bMIbQ43CUA095SLXhKpK/TsNtTIj8Y65NR3VYzjrKIyyNlhiu2vJa\\nWKgvoOMbiWIye6ZcUugCDa/BLvdSSG7WJaGZTMzV59B0miaXNE0uIR4NoQW6cReZNgWEJSwcaR9h\\nflBSJDzxrZqXUr7veB0WMiD57Or3UmiD3FgL19BP+swTOhOMlngzwMTwkYJ4ntVcMkpHWAvXtuUS\\nJRTqbh0H7YMQEDgxOMGoBSUUunF3CgLnWi4rotE1JynwYTaErW0z7VeT56coiwknVABhtIbL1IUp\\nnmXahShilMqcP6EOSObcsUwDlJAOFFmRTcmah3louGk7oBnoPKPMvLbKb6VJaUMqzO/nk29rPK4L\\nmii6MA8QhVs2kZbLRiJXWQZzK8TEc0VWoGKWy50d2nQDY0GAPOXFqKqYdabpTBgCU7Pz8wynbKKb\\nG6I+kU5JAaxm19B0mqg5Ne6o0QIdZRHs2Oak1PbaGKZDnvB04y4vouvROhpOAz2vZwyzxlCjKkaZ\\ngt5vkBgnZQnJSWmQGHhcy23xNSNJYZRAN+1O8WikkFgaLvFrqFNV6IInUrQIWsJgs7PCGMMNsyGg\\ngbZvNgiBY1yLyRSTosSYlDqGyG2VWg2zkI+VIApVF3AyqlNS4VjvGHeUSJWIEuRFzYsw589hLVzD\\nIBlglI6M4VphzOqGmUksm/HmlGHa1qCp0GxtFmpZAREAH7ikcQn6uo+Tw5MYpSMmgT61dWE7Rs0i\\nRld63N3rxT1EWYSO19lVppaOZathHXG9aJoTZzHDPHcKXWqorLfjv51rFMOTkJ0nXtD33I9vf3wn\\ncklTzuNE9gCvHa5l1o+qCmAVLka8h27cRalLzi1hFrKC2dYi/kyRhAoXcovglS1sFmu8cQzcAIFl\\nhFZabgvNdhNlWWItXGNX+lE6wvpoHXO1OeaxJNooobnCxcnoJAt79NDDMBkiTEOsDlchpZziGlVz\\niWd7mJWzRjgmT01BIQCUkw0wddmFEJAwa62AgdtWi4eO18HScAlLwyVei0jWXkIi0WbCRoR8sncg\\n+FdWGLgwBFigpqqYRptlQgFUZYEpqtxC4hoNkgGfMwmg6FIbTubYFFpAsKgCed/M+XNGaW8shEDS\\n1nEew7d9bEQbGKQDtN3T83ro3vViD1gDYANt1Tbm1eEqBsnAmDJbDg47DtgZ8wKEm2xi5C9MvAgL\\no6y61QBza/j2WJiiQkGeKnTG05w4j6dU8rZeh7RI4etz42HuFvv55MzxuC5oiuLCCrz14yH+v/59\\nU5yY3cw0q4pn1aDfORcC2GX+07DgXnLOx7811oYb+PjRj0MJBQXFUyYqyqrnRWo61Q0jdQ3pdRoG\\n6kTKNklhxvmlLhl3TN1HKacXN1va7GtjSYsFAUimkwQVCJtNSR4A0jIFNLgLZit7ip+UlAmyLIOQ\\nRvlHCcVqLlVhhyiP0It7nCQcabo8AoJ5NkKIXTffNHFRQkFIMVWs2pYNq/I45mXOBU8vNjC9aqfI\\nUhYWagvGrwCSISllWZrk6fj8HVQTOU2PzhT5VTnIH++eU/dgVIwQ5uFEJhUaT7WvBWq7F0hnG/1w\\nFetOsc1/QwrJ07/zCSEESl0yJDTJE6Ta/LkoCriOxOweDHj3GmURn/lF+/FdH9+JXBJnKR7ZfIQn\\nk440cKrdNmO0yaoenyUt5imcSzypcQ0O+Vec0+/uFGujDXz80Y8bXyyhuLFHfA6KsiwR5uEUnFYI\\nMcVbIE+pOI+R5AnzU6qeZY5ythk/A+D8TNeTJuUEYc1Lk5dpUkIFpBCCOZP0OUoZ/xYK2vgLiKk8\\n6dkeUE6MspM8wSAd8LFKIRG4AWxh7A1IFKjKp6mGlJLvCSUUhtmQv3vHMtMuCl1qo5aa5xjlIzOp\\nEZO8ICAMVHksK13ogtffMAvZz2VrLlFCsSHp6eLkoZPAWK34Hzb+AQ8/9DCiLILWmvP27EVPxxWd\\ncyPO7xSrgxM4HnZ5al+N6t7gfCLXOTfNaMqX5inn6uvqLRz0LtxEZT+fnDke1wXNhRasdscYWy5k\\nhNoxmZAHwFaJP1vaezJM2y3kLovfuUbNNsRSHjdXji0tUqhSMYxOCgnf9hkOBoD1/klthCBb9O+2\\nspEXk+tAE544i80EyGuy2eLW60iO1r72EecxZCHhlA4TZ0eZMe2i3yVuTbWY0dBTI+VSG16PYzvw\\n4DH5VEoJnWvY0njUkJypUsZQVEnFgzGa5ND9p4TiP5McNwBkZQYJU+BYypoqZjSMn00/7iMqIi7Q\\nSA2NFNQc6UCUJsmQIRrxgoAxjMqum27S+JpnOgNynLGoKUUJKAASWA6XuQCL8sgcr7DgqQu7fMix\\njHbba7PfEV23XtJDTdfO2h2dfr/QBUMPhRC80fBLn/0vvDIGcOEWhXIXTPZ+/NOK70QusaWDAgVk\\nKWGXxtBxp1xCUNqtfiZbIUfnEkpc2Oc7cBqY8WZYsZGua5QbHw9CLZDvlyUsho+SlHRe5nCli0E2\\nMLlmLL7j2Z6ZOlQ2r9S4qNk19nepCuhwCMMxqdk1LmxsaXOjjIpFKn5I6MaSFnxlGkeFLhAVEYsO\\nlCgZ1RDYhnfISmyFaZLV7BrCLGRZZAmTp6zxdadmGiueSgk5nmJorRHr8aSgzFDqkotfV043fkbp\\nCIPM2C0AQM2p8ZSI5IttOSnKquI/VZVV9pcbe8yQANIZixox/pFAL+uhntSRF8Z/j5qIznnse3YK\\nhYkhqyUtRFnExRjxZfZSjG2NqnodGbLSPWUrG9rWXNi4F1hqeT+fnDke1wXNhVbBSwrTLUoqPBoJ\\nCaUUd4VocSI/GQDsvTJ1zOe0sbqwWTXKjSqIbdmwYfPCVD3WEiUvSkIIuLZrxA3GZlOZzjCMh8iK\\nzGzAx4Wbb/msuZ9kCWId8wafFoiiLFCggCvdbVMVChcu6k6dXair8L20SBGlERt+1p06bGvsmTNe\\nUJVQUJYCSnAnTcEsrkVZQMMkSSkkak4NNaeGRt4wRY42i5pt7ZAkgYlsZwkIKbjALcoC5VjaVWsN\\nZZmJDcFElofLGMSGvOkpk3CEFEYhzvKnp3rSJEq3HPOPoHnTTxLZvmMKzWqy16WGYzk8JSx0gaIs\\n+O/CF2ZC4xjujOeYYt23fWiYAjS5wAtsKRUXzQ3XTGSqqj2EOyendLq+VLCQbwQnm/GfT/uZNCkt\\nc+QX+PnZ9w54bMR3IpfEhWnsxIgxwET5qerlRcdjSQuOZVTRlFQI7OC8GmMc4sI+D0kRQ0oJFy5K\\nMfFVo7VTaw0tNDxlpvq+5aOhG2wQmeoU3bjLHEglFZQykFPHcriZFGURv7ctbbNWQ7OKmiWtbQgA\\nirpT5ylLlE3gammRYpAMUJQFHGlI+8G4+54XOVKd8nRflxpSyimeU6rTydRHSoY2BY75rsqy5H/b\\nKZdQcVXq8eRGTnIJ+e1lRcaQNluafNlLDY9HwzTz6lbdfAfKhW9N1nLAFMy2tKHHXJYoi9gckmSy\\n6VpU0QV0TWi9reaToiyMbLMDQJljpOtTV5PpYX6BOwKlUFyk2dKGq9xtPjFpkXLBQ3mEGs3VnFKU\\nBf8d2H1vVpalETzShuubnSH3nG3s55Mzx2P2ClUXrN2SkFJj0OwFiprj4srZK1Gza+wsT0GQLHqg\\nhBAMCSA/lOqI+lxgAoNBgeHwwj1EF7cP4cbZG6fG3vTQ09Sg6ucCYZJSlEfcYScVEYIDBG6Altti\\nJRdSCLGkhX7Sx1q4NrVYAqbQCJwALa91xg49kdvXo3UMErMRILlPEmCAAHfSKAI3YIlLNmkbE0+p\\nK+cpD3O1OTS9JlZHqwyvc6SDwA0Y/rDTJprIqWVZGpGEcbfOscx1iPMYJ/onsDxcxiWtS+Aox3gE\\neA0cbhzGxa2LOaEMkmnN/yRP4Fouf3bgBEY9yG2w0l6SJ3xNSHnPsRw0nJ29ct754DsNRlgCL7v8\\nZQgCQ9SV0vCVTg1OwbfP3dRyp5ipH8Bi54lThUquc6yN1li2VpdmY0IKdmcbNCUj6XSaeqVFijIf\\nAltEPc4nhDq/Dvl+fHfEdyKXKAkcah4ykwOnhro1WfcKXWCYDacw/LayMePNYLY2a3y/rEkOOlcI\\n84XOJ5fNHMGB2Z/gv9NkVJealQaruZA80KIswka8gWEyRD/p87rbco0AQN2pcx4i0YRROsLyaHmb\\nLYAtbXT8DtsHnEm0hXLSymhlCklQs2sMQ6t+D8DEJ0yXGgKCX9NLJnYBNbvG0vrDdMhNKoJppzrd\\nlZBOpPtMG4EaMvS0pY0ZfwZ5kWMz2UQ37jKfkuB3C8ECFuuL7GOWFdnUNcqKjDf4/dTIO+vSKGZS\\nUZUVGfpJH924a4qXsoASysCfd7ien3rbp3DsG8cABTx//vm49qnXsmhOkiXop30sFCGA85MHr8Zi\\n82IcHucSLq608csJs3Dq/9H9drZB14PySVZmBpI9llG3kV3Qc9rPJ2eOx2xBU13AiRi2NXxfXtAF\\ne1huwJEO8jLnhca1XNjCQMmqx0TdECI/VoOknQk77VhGUMBS1tSo/lt9Pg/274MWGdpuGzW3Bk96\\nTETPdY6lwRJPRahL4zke2m4bTdeoxFAxI2DI9w27gcX6IqvQVKPltdDyWugnfayH6ywjWWjDq4iy\\nyKiHuA00nMaOXUglFSuw2NI2nBdZomUbsQDydLGVDV9NJBarGO60SDFMhgxZo3AsB6k2ks6+5Rtx\\nAJjuW6ELVrlJi5SLG05UYxgIvWemMyTayLAe7x03yU5rlk/OdIaF+gKePPtkzNRmphbchttgWdYo\\nj7A0XOKxes2qme9iXChtDYJdAUa+clAOtrmQ50VuSJF9AJnx8TkQHIASClEewVUuDjUOoZ+en2fA\\n1hioGorR6rYOmGd7bN5G0Y27uzqoV4OKorzI2ahUCsmJOCsyJtGm0gLS5Qt2Piq46Mwv2o/v+vhO\\n5JKl6FHDLZE2BskAm+Em8yW2HpMSCnXbTBZWRtNmuTTxJkPKml1Dzaox/Oq0BOkLfE4PD74B17bg\\nOz5c6bLnVKELdKMujiXHEBfxVMNsxp/BjDeDwA6m5IAd5aDu1I0kfeOibROXulPH5c7lGCQD9kwr\\nYdbVldEKRukIDacBz/a4obY1SPKZIEok5T9XmzP+YLFRWbOExRt0kn6myHVuDDuT3tRnkGfb0nBp\\nSpq5hGm+kQplVdyE9gnkdyJys24luRE9cVwHJwdGuKVEydzLKI/QcBq4tH0pFuoLU8dHfnEk1LMZ\\nbbKlgtYaq2IVSqqptbf6u1X4WS/ubStqdKlRqPGmPgNcYXx8fNsgDVxlEBY6GwHxiT3fS2eKNShk\\nvaM7NiCo6UppJtJGvpt883YLmsAQMoMKOYLcq9IgLTzXG/OtIiBbv2DntJ9PzhyPi4Jmt66aZQk4\\njrgg0pRxOUCJHLos4QgHgRfAUc6UZwaNu4moeDoPjQKGmDfCREKYIAVEqKQfgmgppS7Y+XSzFdRd\\nD0rUjYFZnmOj2GCuBo1jiTBPfw7zEBvhhoF52R46rumGWdIyC5ljTBO7cZeVurZG022i4TQwykbY\\niDbMAl2W3FHPCmOOWXfq28jiNAERMAaXHa+DoixwvH+c5ZgJrgFhOmVV0qgutSGl5ymTRS1hYSFY\\nmIgMjKFbJILgWR76SZ+/C+74uGD/FJIWTvKEVXP6cR/Hk+P8PsN0CJRGNeei5kVYDBbZL4a8e4QQ\\nBpoBzYUfG+tJCatuzmW36UXgBKziVjVnna/P83XsRl3IgTQqZ7YpaHKdo5f1+FlSUsH2Z7BZhuhc\\nAGhK7rSQKwe7dbnJHbwbd/m5IQjBjD8zwcaXYNgcwQcIVigKwRKu1PmUQho/KEgkKDGSLur6/Kc0\\n0p/fl9h8jMS3O5d0sxUUMkNRGMjrXG0OLbeFUTYyniZZxkqNgWNUwvIy3/HRoedgJ2lZWxkoDiln\\nBU4A3/J5DVNKwLI18uz81acG+Tp8x6APRCl4ck/TYmo2EL+U1s1u3MU38U1IITHjz6DjdaChMe/P\\no+E2UJQFlkZLmK/N7yhrTMaUvaRnJr1FzCR52ujHeWyguTuYJW5GmyjKAg23wSqby6NldCOjKLY1\\nl2zt9DM/SLl8rh2/w82mtEiRRhMjbTLRtAub84mtbASO8bhh5cY8YQQCwbGHmVF4S4uUFcrqTh0z\\n3gwONg4iKRI8tPGQ4f8IixukJUpu9pGwRJiFmKvNASV29cKhHDNKRxN+UFlipjbDqp6jdAQ/84EQ\\ngAJqcqwCV2xBqzgNxFkNXnH+ymCpFSAV1q7ENlvZaMgG2zgAYzGHIub9BDWOp2BnY2U9oCIIUPHF\\no2dKCWWEZqSLSPnwi/P3atvPJ3uLx3VBAwD1ukSanv9Y0PEKXFq/lD0uupHRqSezSHrAiSBvSaOi\\n5VquIXWPYS9VDOfW0KWGLjQyZFOyjkII7kDbuo4mzl8tZKBXMUgHTAykMXvNrkFrDaEEExTJELTU\\nJWO5CWJGpMqaXcOx/jEmQHq2h8AOsBgssmxkNYQQnGCj3Gj1D5MhJzpaPEfpaGI+atcwTIdTC6Ut\\nbSRpgvnaPHzL57E/GXKSyZtrGVLmZrzJcDQpJALbQORokkaqN2SCuR6uI8xClk091Dg0de9Z0kLg\\nBAicwGCZtcbR/lEc7x8312dMao1yY6IXuAEG6QBHe0exFq3tKBQhIHh6Rx3jRCdw4SLOYzTdJqvR\\nkUErKQrRn6MsmpJxdZQRGHik94hR36lrw5nSwGq0itQ2yZiU6GqW2QD14nV09PlPajJ/4mcjILh4\\np+4XKSPN1+bRi3vIdMbeCr2kx1jvrRCNTGfcUKB/s5TFvg4Ea9GlRsfuALYHDB467/OxGkfO+z32\\n47sjvt25JFMDXNG5AmFuYLsnByfx4PqDCNwAHa+DoBYY5T8yFR5zOmxlUyNPQAAAIABJREFU/MzC\\nNGT3deIzbA2CQNNGtnquVTL6jH0AF7tPOe9zOh4/iLVkmRUefcs3BYLlmOYRSmit4ds+qzuS2mSc\\nxSzBTIXNRryB5dEyT3JWRis4FBxCp9bZNm0RwjS3AifAZmRMhOMsRl6atSPKIzTdphG6SRXD12ia\\nT1G360iKBB2vA1e56MU9JEXCkx4ALILjSMfwfcZ5morPlteaWDWMERykfhlmIYbDIfvvHAgOTK39\\nSiouCPpxH6ETMhzOszwuBsmLy1UusjzDarRq/j7eqG+9NiQBXuULAeCCyFUuT/qq6nD051zn6MXT\\nkveOcrA6Mp+bW7nh0GiYhme0wRzHquLdpqrh4AUoaCJ3dur8lDDcTBJqoqawaqhJM7Ci7qa1RinK\\nbQq0RVnwNIz+zZIWy3Hb0kaqDW+4ZbfgKhd54gLDh8/7nPbzyd7icV/QuK6A6wokybl31lxXoNFq\\nY5SOjAiANBAA0i4fpkN4ymNZRMAQnJMiAVLw2HXem2djNCIapnnK0rJEHCRIDo2j6d9MDGHLBnzZ\\n2uVozxxJOUBYds1mL4uRakOKJ7PLltdiUr+nPMYkW8LCarTKUDTqbgBmohM4Ab9HmIXYwAaO9Y8h\\ncAK0vTYT96lLSJLXgROwM32YhRgmQ4a5EfGPkrNruTyFoM4kMIEPLAaLkEKiG3c5WZUo0Y2Mi7Jv\\nmQKUCKTUnaLOXaELxhw7ykHbb2M9XEdapNiINpAVGRaDRYblUaHaj/t4YOMBnOyf5IJMw8hWqjGB\\ncbY2y2T+ul3n4yeCq6MM7LCEIb/GZWxEDAqjsnaocQiOcvCkuSftCOmjKMuSFWvWQ8OrWYvWsBlv\\nwpGOgWe0S0AD0IYc2hItBHbApneWtLAWrkFLF4MyQaNMd/28M4Y3i0bzMi5gTjf2z4oMdaeOjWiD\\nJ4GA8awhCFq1iKnKeNvS5oaCgFG9y3TGXVEAGOgCUtXgn0dilf48VG3xnH9/P7674tudS57UvALL\\nozqWBkvQWkPWJFLHdN1PDU8hsANc3LyYN+6pTpEm5vlzlIOW28JFzYsQ2AHy0jSARumI190wC83G\\nq8gmRocVUZVqAbQRbaDWnMGse/Ccz2lQbGAzW54oiFk2RskIw3SIGX8GddsQ1X3LmCIHdgBLWVgZ\\nruDBjQcnBG1tBFaSPDHP+ZiXQpOck/2TaLpNzNXmjIDLGFpHfBxLWpivz/PEhuwD0iLFerjOU6ph\\nOsTKaIVVwJRUEDAqnRQ1u2Yc6JWLXtKbag6N0hFOJacYjUH3D5kEW9KCa7msUJfpjBuclDPWw3X0\\nkz4OBAf4PYi/EmcxHth4AKujVYRFCFe5LIFM04S2Y2DXShkINuWSUIecb2xlMx+HJOxlaZqXi7VF\\neLaHg42DWAhOb54sYCBwa+EaF9PduGsKKp1h5I2ABoAc6Gd9DNIBF32u7cISFsI8RCRcNKWHuj53\\neeLSnUG78wTeO5yOI1XoAqUqOXdXCxhbGiheURZTkxhLWQx3dJTD+Ypg4r7loybM9C3XORLlw3da\\nsNJz9zjbzyd7j8d9QSOEQLutcP/9JzEzc/au57Ztfl9KgcA1nTOZSYRZCN82uGXXmih/EeSoqhSW\\nFAmSKMFGtMGLILuku5PzoA4CkcJJoURJZWBI483dBh7FAq6EXXWH2mNkiNATxzkxupbL5mNKKriW\\nGZ0HdoADwQFOqlEeMfb5ytkrjQRzHkEJhbiYQK6o2KPkUJYlBonxE6jbdayH67zoEwyAFGFsafMk\\nhq5DmJkuZClKZLmZBq2Fa7CkhY7XmZIwbnttLkwabgNhFmIz2sRKuIIoNYVPmIWI8giLwSIW64sQ\\nQnDSo2tdk2ZKNUyHGGUmMRP8KdMZ/HWfzVRtaQw7H+k+wmIHaqzmRdwUKcz9khWZMS8dE4Drdh2O\\n50wU3oRRzfMtH4Eb8LRpmAzZ00CXGqujVcNZGidNUmmhH9rgjLIRenEP3biL1XAVYRqiKAuDJU4E\\nEAPIgAV/AYcbh9FwzbUfJAOsEtdFCDwqA7TXHsbhztkX0dJpwV181q4KLkTepx+6xy1poe210Yt7\\nzIVZTpexPFpG223Dt302FKTnjKZrgOlClrqcgogUZQHLspG0roTdfwBWfvZFjXRacBeuPicS9n58\\nd8bZ5pJHH+3COwf/iWouWQwWTefacpgT41keAieAlNI8v/mI/x8XN0WK1XAVq+EqlDAGvG2vjYX6\\nwlS3PyvMWrkerWMtXEM37hpVsLHnSK5zVn58OL4XvlVHTZ2951RahljVD6HjdeBZHgbJAFER8Vo2\\nSkdwlYuLGxczUZ38yiCAJ809CZk2JHTf9pl0PcpGsISFjttBP+3zZrSfGF5L22tzs8tS1sSU0jJi\\nIm2vjTiLYSubJya09rvKNRwLAIPUmD/O+BMeoxACTbfJsLG6U0eSJ9iMN7E6WsUwHXLzMckTzNRm\\ncKhxCLayp7zTaMpGMOn1aJ2LPvoOTg5O8lScmlzHesfQT81UzYIF3zXNxQPeAdjKcK6yIkOqUxa6\\n8ZS5T0hptdAF8jKf2rgTpE3HGqN8hLRMUYvN5NuzvWn1svF/6XPSPEWURdiMN81kawyjrtk1WKVl\\nFDMLcxxNt2nQAtJhqHVZmlxy0p7BbPcoZvyz35pKpwX3wLW75pJqgzEt0qnCvWbXmKOVa+MBtzpa\\nNYXxuNCtSn7TZMuSlpEPL7Mp6WvANBcCJ0DhNiA374PMpgUq9nxO+/lkz/G4L2gAYHV1BS95ybX4\\nvd97J170oh/e82e4rklAQky0zaU0ixRJCROMrKqkQRMYIplNEbLHEJpe0mMfEd/2YQlDJM90Bgiz\\nIW+4RqGK5GptZUPCSFRmeQgdCUi9d2WME5sPo++dgJQGTpbrHLawsVhfZA4LLcJCCCwPl7lTRV0M\\nwHSoHMvBnD9nJgrj60/a90mRIMsz9NO+Mfwa82L6um+4EhWxBOK9UJFTHXkT9nuYDLEarUKUgl2k\\nfdvH8miZ+SHz9flt3RpSo2m7bYhSIMxCKKkYFvBo91HzHYynNP2kz0UU+boAptBcj9YR5yZBhirE\\njD+DlWgFK6EhpJIktZTm/Q4EB3AwMF3POI8ND0TaWAwWjbLM2COHiqCqlGRapFgeLmM1XGXvntna\\nLHpxD77tI9UpTg5PYqG2wAV1oQuM0tGUOpIuNcI0xMn+SQyyASRM4lqsL0KOpME9x8CR5hFc3LqY\\nJ1txHnPx7kgH3fUunvuvXo933fxL+KHrr9nz/Sb9BbgL38cJqKoaw8pjZ3h2PdszOHddsEyqhmZ4\\nJxUxnmUELbaadgJgr6KkSPgeidtPRnN4FDpe3fP5dEOFg0eesy+v+RiLs8klWhd41atejl/8xZvP\\nOZf0kz5v6Ofr85itzfJaOMoM7p8ESGjTDLXd1LcoC2zGm9iMN5mf0XJbBuZVmA2ogMB8bR7ztXl+\\nP/JYIQ7BKBthI38Y0EdQk+09n9NachL3D++ClAbOI2CaNDQ5olxiKQvHesfMBL2+yBxLQiIooXBp\\n61IIKfjZJVhckifo1DroJ330kp4xriwyrIVr3NjICyMKEmURNrDB14lklqkRFzgBkjzB8f5x03SC\\nMtMOr41+0mclr4Xawja+DjXfWq5p6hCPk6bZJwYnzPk7dTjSwSifNMKIPwRMTDAHyYCnAU23iW7U\\nxaPdR3miQ5OjhtfArD+L2dosK4XO1eZMQ8/voOW2uFChQqoqrZwWKYbpEEvDJTar9i0fiU5gScvk\\n300wh4iQGTThq6qFFmWBKI1YQIDsGWxtAxmADGhaTSwGi7CkZb6TPMKsP8uQMBs2fvAnfw5v+rl/\\njh+64dxzCbB7M2yn0KXJGWFivg9b2vA9n5vPruVOwfNsaWOYDbep6FG+KVHyWiGUDffAs1GsfQ06\\n2ns+2emc9uP08Zi9UmeThN74xjfi1KmTePWr/yVe/ep/jbe+9Vbk+e4VsesK1GoSrmsMtpIsmVJm\\nIvUW0peP8xjD1Gwkyf1XWSbxUOKgjhmpuJRlibiI0Yt7vIhTh4kI0tSF3835VgcawzDFKNRAsbvE\\n7qe+8Dd474f+O45vfhN/eOsfMuyKcLWDdMAb+H7Sx0a0Addy0XbbiIsYj2w+AksZWA/hnj3lmSlM\\nNjlHV7nGQ8FyAReYqxu1GMJMR3mEKItYYrnaQSGPgazIzOIIcJcpLVKIUmCQDpCXOZpukxco1zYT\\npVODU2i6TVbFSvPUTGYq0xdLWUjzFN/c/OY25Tlb2dyVk0Ly1Ik+Z642h27URZInWIqW8OD6gywn\\nSp0c3/LxxNkn4mmLTzPSyiixPFxm3hQtlgQdoPuDunaUkIAJVpsKPkq4RKxVUmFptAQncpiASRMj\\nuubduIthOkTH72C2NgslFObqc6bjG1nAKXPus94sGm4Dy8NlJEXCUy6a4v27N/47rKyu48d+7bfw\\nmpe/HLf+5s0Q6eau95v052E1jkD6C0h1hrTiWXSmZzXXOTS08e8RCg3HKN6N0tE2KevACTBXm0OJ\\nkgvRqeMY49rpHufvmuB/wQEU4TLywaOnTUR/+/dfwrvf/zH0Ygt33vnS0x7/fvzTi7PJJe985zvx\\nhS98Hnfd9S/x8pf/CN71rj+FlLs3laq5JNc5NqPNKeiLFBIdrwPf9rmTvzRcwma8yc85MPECIc5c\\n1UwXME2TzXgTD+QPoCxLeJbplDfcBhsMkhLaToaDutSI0hi9UQ95asMutysoUnzqi3+DP7/jvXjF\\nq34QMw1DEHccA/WktZ6eyWP9YzxNbyQNHOsdgyMdNL0mLGXBVS7aXhulKNlzh9ZrIswDRiHzsD6M\\nYTZkDgkJDwR2wHmVvkMqcqrXh7iadJwogcX6IguLkDJcL+kxcoD4paujVe7wK2G8cXSpsTJamSpY\\nADP1olzUlM2JImaZQ0mF2ZpRAQtTs0Yf7R5lSerqd364cRjPWHwGOrUOhBBYGa1ACVOEUb4dZaOJ\\nx9i4gKjCcQGzVnq2hyzPMCwnRZblWMbbRtmGszNWikMJs0ewTb4nuOIwGyLwAjT9JoqiQMtroebU\\n4OUesAKgBOZsI1UdZiGiMmK4LzUOb3nHLbjnS1/Bj335q/jnL74ef3LLb8OtCCNtDcolqrZoCtx0\\nuOdmWNVfhvZshP4gI04hjHE1iRqRQXgv6m17f4KhEcydzou8hqzFa/ecT/78w3fiv//JX8LbL2bO\\nKh6zV2uvSeizn/0s3vve9/LrbrzxRzE/7+AHfuAGPOtZz8XBg4dw442vQrPZgJRGytKyBPuKbCWO\\nVXH6dBwEmUryBKN0NKXwQb9vKwOnynWObtzFRrwxlZAAw2WIMtMBaTgNdPzONg31Qhc8OqeFCZYx\\nZbJ0HaJUAARKaBTIcGL1IfzMv/kX0KnBJz/81Yfx/Bc8nyFsRKhM8gTDdMgu7pvRJgbJwCh7CGNe\\nRknSt330dZ+hVUT8I/+VKk+FFhJLWmh6BtKgSw0JM2ancyHyXrXIEUIgSiN0ky7C1GxWG3YDvaiH\\nHnqou3UkWQIhBRtcUncq1emUUWfNNoWi5ViwLTO2H2UjVg7Kigzr4Tp6smcmcLaRDEVpIBJlWaLu\\n1PHw5v/P3ptHWVZW58PPmYc711xd3c0gCvKJYIioccVFQBQHMCpG8v1M0AyoQVcUFeNCCeJEzGcM\\ngiIxhkRNfs6KmJAYTbKIGsAskcFEELC76a656s5nHr4/9t27zq2qnitGoPdavbrrdt17z73nnHe/\\ne+9n+BlKRgmuTlKgURbBVE1Ml6cxU5tBzaphrjsnMDP+HKqiwnbtIZw2R9H1O0ojgYbx9VO368Jn\\nypBhb2cvvNiTTcpEaYLEEdJQOp8MbWRYnamZmCxNrikc5RpJNwf02fd19m0gyI66o/jad76GW269\\nhe6fKMcrXvl6lGaei1997pl47rOejJnpMbziZRfCrVShag7M8g5Emo5eGiHuH1wimfHrnHyE8LsO\\nGl2xKqjZNfixv2Zml0bY3d5N5nrKRlnXslleO8+DMDVTEhcA6KUp6KUpZHEPaW8WeRogzxIoqg5F\\ns7HQBl516SsQx3Sv3nbbbXjxi1980M91LB47cai5ZGFhAe9+97vl957znDMxM1PB61//B3DdBqan\\nZ/DCF56P448/biiXABu9pQDIZp43sMwDrFgV+LGPhf6C8PcAyEbO0AxSeFQbaIUtLPvL0vjgCJJA\\nipyaVcNUeUp8YPjz8vSXc4lMNk0gztbySZ4DaZ4gSn1cculv4q4f/gcAYHpkBK/73ddRI2rQrCib\\nZdi6jX7UR9WqCuyt5bdITGbgvM6SzROlCTL2NWwhXhuaIVBaJpRnIBETx3BEUIbPg6IoqFk1UTgM\\n01BEdIrfdT/uD6nBVa0qFvuLWPFXMOrQlKwbdkkspbDur1+zLY2sAFiqvxt10Q27Q3zSpt9EO2yj\\nalZl+gGsoTdKRgnz2TxqZg0Vo4IojwQZUDNqGHPHULEqeLj9MJS2IvlaU4lPOWKPoBW0NlyjvF+o\\nmBWBizGyIs5igeky52jFW0E36grsbcQegamTGA0jDxzDQckoYbw0LvzEmlWTSZ8OXXJJlmXihcbB\\nBd7ufbvxvg++j85bluOXn3U+Gif8Gt546WtRcwLMTI/hvHN/DTt2Hg9Fs6GWppFoJrw0QtRfOGgB\\nw+IyXMRoiiZ8oqHzN+Dh8qSG74fF/iIyZBsMvm2d+NG89yq+X5E3rSjKAfNJBgMv/PVLcPv3fgAA\\neOoZ1+Gqq6464Gc6FsOh5Ae7Ch6jsW3bNszNUYt57969mJmZ2fA7SZLgzDPPxL333gsAeOUrX4kv\\nf/nLSNMUtm0jSWjB830ftr3WZROVkkLXhQ2xDsWhOU5jklWMA8FsipO7QjhT3vB7sSddFlapWq/z\\nnmQJqcdA2eB3sz64e8RwLV3V8eY3vxk33HADAOD0M07HHXfdIXr4RQPCJCUt/l7cQ5qlWOotYTlY\\nhpqrcEwqUkpGCTW7JtjkKItEKIELmyyn5FMyCrLLORCkwRBOlTHg/FpxFsskx4s8zHZnMd+fhxd5\\nAs1K8xSGbkCDJlA2TnyaqsnGmLHDVas6JFlcDAWKdLOY08NKKZZuoWbXSL0s6GB3azcW+4tYDVbR\\nCToDfgkw7o5jzKFJlKVbKBtlWIYlJl/szzNVmdrUN4ajqPbVj/rSgeyGXZmG2YYtJl/NoCmGmrwh\\nKBukspMhQz+kJGzrNibLkzhl7BRRGOqGXTz99KdjcWERUIHv3vldTE6ukRIbdgMjzghm27M4+4Kz\\n8dBPHwIy4MKzL8QtX7xl7f5JE6AM3PPf90A1SNHN1EzU7fp+yZr8PXMRE2fxpipN/J1wscfnL8sz\\n2Sz0op5036pWVX6PYSCtoDWUgGzdRsNuHDZeuXj/POMZz8B//ud/7teJ/Fg89uKCCy7AN7/5TQDA\\nLbfcggsvvHDT37vkkkvwmc98BgDwlKc8Bffeey8sy8JZZ52FH/yANinf+9738Cu/8ivyHG5gFTd4\\nDFXan1xuMaI0wnJ/GUveQFEqTWTakGUZyhZNKblz3I2Ir2gbtjSSOBjGJfLzqnnA65ibUZxLTM3E\\nX//1X+N1r3sdAKBSq+C/H/xvlKtl6Xp7iSfH2Qk7AgFtek3s6+5DhkxUQStmRSYZmqohV3Lh+eiq\\nDkMxBIbm6I5IWLNfFhc7fKyj7qhMTjiv8THNdmZF2j9IA/k+GOac5zlyJReYGptPJnkik7GSWcJY\\naWzT86ZAEZ4Ow6fZw0RTSPimYlUEObDYW0QraAlPkpt/FaMifA1WiVOhilKdrdsYL41Ts+0A542V\\nvphTCQCLvUUyu0xDlI0yFJUgh92wS+iJxIcfkVoaK55yYy5HLmv78fXj6bOkEVpBC695zWvwz//8\\nzwCAz37ms3jR+WtQTOaZxGmM3/7938YXvvAFIAeedPyT8OMf/Xj4/jGBW267Baf/0unkHzYoGPeX\\nS7gI4yKG9wObRRFOxiqmAESEqBN15Lks782oDZ6IFiczLGZ0uAbpxfunWq3iZz/7GUZG9n8uj8Vw\\nPG4nNIfi7vyJT3xCihnXdfFnf/ZnAIDFxUUpZsbGxoaKmTAJN0xOdFUX1+BDCUMzUFWr0BQNq/4q\\nEbqzTMa5/Yw2rK7hYtwdx4nWiTTqjAhby4aKQRJsGK1KkjEJnsamasWksz6uvPJKfPrTn4bv+7jn\\nR/fg1q/file96lVDv8Ndjcl8EkEcYG+XZIdrdg2r/iq8xIMCGs+ywknNrsE1XFI6ifpDJpMqVCJ0\\nZykcw0HZoAW9E3Wg5IQ1zvIMLb9Fo21Vkw5kmISY7c6KR4ACBa7pIs9zaKomm2CeEDFcrbhxKBId\\nM2SYLk1jxBkRozUuKLM8Q5TQwsxFAkCQr7neHBZ7iyJprakaxpwxUW8xFCrOXMOFqZsyJVn1VsW3\\nxtZt6AaN9n3Fl+nOeslivrYYwmjrxB3RVA1hFpJZnWaRMzUUOJqDdkDJkHk0juFg2V9GlESomlXy\\ndXAbGHPHxEHZ1unzq6pKUpsu0AyaGM/HSTa5NI6qVUU37OKGv7qBipkcsHMbH/2Tj8KPfeyZ3YPE\\nTAAVGGmMwDRNIdmyokzDbghumiWluYDcn0O2nLd1RUwx+HlZlq39OyeScdkk2VuA1JuK0ueO7ogh\\n6+FG8f65++678ZWvfGXD/XMsHrtxKLnk3//936WYAYDrr78elkXX5969e+Xx7dvXJPX7UR+dsDPU\\nGONN4YEML4thaiamKlMomSXs7ewlY8V4zV+jHbbRDbsoW2Vsr2zHiY0TaTIZkdnjUn8JXuyJX9r6\\nz8eS8xWrIhs+ziWb5bzXvOY1uPbaa/HAAw+g2+7i+j+7Htdee+3Q72R5Jo0XP/bxaOdR7DP2oWbX\\nsOKT6qKpE8qhG3XFL4Y5oyzfz2GoBpaz5SGSe8WsCHm9btcFKsYQ1SRPZHK00FvAYn+RNsiGLQVU\\nhgxBTNA9XlfTLAUUOnfeQAlRhQpLs9DIGtQITFNSQBvAqw3VkAZhkiZohS2sesMIjLnuHDpRB2me\\nomzQ+1ftKgzdAHJq1EVpBMdwUNNqqJgV+ImPfthHJ+oIogGg3+2EHTHnNDVzSLa4eM56UQ+WZqEV\\ntlC2yiLa45quGESzXLWt23B1arppikZ8yjQQCf+SWULJIAVKltK3dZvuHxWAAbTjtnCW+DrK8gzf\\nvv3bVMwAQAZc/9HrkWs5OmEHe5b3AAONjfGpcSksOBeyJQbzJrnpyxYPh1vEcDDHiAtwjjAN4Zqu\\nTPL92B/KJZqqiaLd4Ubx/ul0Ovjwhz+84f45FvuPx21BczB35/n5ebznPe+Rn9/znvdg586dADZP\\nQKIAUiCWMYflUJMPw9S4EAFoRG7p5B/iRaSUxYZnhmYQV8Oj6QObWIp61YAAWUyIxclKrMQyjSkZ\\npU2NxwBgamoKb37zm/HhD38YAHDVVVfhFa94BTRtbdqkKipUTYUBmpbMVGZQt+rohl1sq21DlmVY\\n9BZJOnmwwPSinrx3pVwRwy/mySCHFBosqqCrOhk/ZhEM1ZAOjGM4qJgVkVgOEvImMFVTlHzYfZhh\\nWTydiZJIFIEAGq2z4EKOHH7k4+HoYezu7EbVrKJqVmEZlnRiePEtW+Qls9hbxFxvjuBbgw1AL+qh\\nZJSwvbodp06cSrLQCW0QNIU4NsBaIrA0ixZaFTIpszRLSKG8cShO/LI8w3J/GXPdOVI2i7vSiSsZ\\nJfG1URUVdWfguxA0kYI29l7koWE2YLqmXCcKFHiRR8lQw5r6nJ0DVQApkKQJemEPJ4+djJJZQpzG\\nuH/X/bjuE9fRCpICb/3Dt8IZc8gIb88jAgmbnp5Gza5Bj3R0o654GSR5gnGHhBoYu36kRQx/N0We\\nDPPMumFXIJ9xRmRhFuPgcA1XSNZHEody/xyLx24cLJckSYLLLrtMfr7ooovwghe8AAAQxzHm5+fl\\ndaanp5Fm6ZBsPEC5hE0gDzX82Ec/JjlmhnOdNHISybB7y/ASkuh1dJIubgZNaVrwfcSbfTVUJW8U\\nI0xDIAaSPEHDJkNIhgxvFrqu45prrsGrX/1qAMDHPvYxvOUtb8HU1JT8znqhjunKNBpOA92wKxOi\\nud4cOkFH4D3sZ+boDip2BXlGm1n2/cjyDGmaohN08Gj8qOQSFcR3ZBgRq52NuWMiudwO2wSNUnRU\\nnAomShMkzDIovFpBS5TD4jxGLxwYN5u0ZuR5jpJdAnJqlLBSp6u7KFklMS/lyZemaJguT8NLCLq9\\n7C2TR9lAtbQf9eHoDsZL43hy48kIU1JQUxSCTk+UJmCqVKR4kYdm0BQOTt2pD52fbtQVla71+xQ/\\n9tH0qUm34q9QPsxzuJYr50ZXdSRaAtdw0QpbUoQx1FlVVCp80gBWZsFLyJPNzE10B/5ksRZTLomB\\nNKVrf6YyA9egJmTX7+Jt73gboAFQgZdc+BKc8dwz0PSbiJMYC8sLfJNgZnoGiqqQT1GhgKlaVWiq\\nJlOwIy1i+Hyygmme54LM8GJPUBaKogjfqpi3WFziSFXJDuX+ORb7jydEQbNZV+2KK65Ap0Nj2pNP\\nPhmXX365/N/6goYnA8U4nKkMdzqYDLk+NEVDw25gqjQlTvWdsINm0BwSCmCjRB75lkxagNiULMsz\\nqKo6NObkUTFA2F7uuK3fGF5xxRX45Cc/iU6ng5/85Cf43Oc+h0suuWTDsfajvnwXJbOEqlUll90k\\nQM2uoR1QggAAUyUvllbYkkIlzchQqxN2pLjJ8kx8d2TDoFARaWomHMNBP+4ThnVQyLG5ZNWqYtQZ\\nFVlny7RgGRaZWg3gHM2giSiJpChlOEU36pJb8CCRJGmCVX8VzaAJWxtMagxbYA5ZnqETdNCNu4iS\\nCLqiAyqgKzpqdg0zlRnxUdAUTTbXlm5he3U7FEXBqrc6pJzGpPR+RKo3PLVh2WtdGfjVpDG82MOK\\nv0ICEmkgLtV5ngvkzjEc6WQCQNWuwosGPCQ1hKqqUuSO2CPiceRa10WCAAAgAElEQVT5HqAAlmqh\\nE3WQGcQ5gkVFjmu4WPXJ9+XR9qO46iNXkfyqDpwweQJe/4bXy3vOzs3Kv2emZlA2yxhxRpBmKdph\\nW+6HB1ceFEz9+ihueoqctPXBGHaR/ixEw2lgpjojBnhZnmGhTyIMLEnOvjpHG4d6/xyLx14cLJd8\\n/OMfx3333QdgeNIPAHNzc/KcqakpxIjR7reH8oChGlJYHCxYlcqLvU0bAKqiYrI8iRMaJwgpfdFb\\nlKYRP4evfZZTLlfKmMa0dKVZFarYUAmSAHO9Ocz15mSSVLNqGzZwF110EU4//XTcc8898H0fH/zg\\nB/Gxj31sw7H2ot4QVKpslGHqBI0bdUbRjagwixLiBfGUQoMGRSPYVpzFAoliCDebIjIEKEeOdtjG\\nYm+RSOq6TWIECiltqdpG2BdA+dbVXdTrdaR5iqX+Ela8FclrURrJZjpMCdrL55rXpX7cl72CZVCj\\njyf33NxkuBYwgCoZZYy6o8ILjNMYpm7K97Stso0UzQZE/apVBSxI3vAS8oJh/y1WuDQ0Q5QgkyyR\\nXB4mIVQM7xsEZm2YwOCyrNpV8TPqRT3kID+zilVBzarJNKMbkqWEpVqkqqZl5GnmAs2Yiq+F/oJc\\nax+96aP4yZ6fADZdl1e/92o5joWFBeGxTo5Nou7WaeKkaCIkw9elAmVTBMqhFDEcDMtcf2+5Blks\\nMAQdIN4be88wBK3oO3Skcaj3z7HYGE/Igub222/HZz/7Wfn5+uuvh2mu3QhS0CjA5PbJDfhm7rQc\\nKHjcyS7kmwVPIAyVJjGdqAM/9hFnsShfFQlonGiSjLplDach+ugcrNHfi3pDY1Bgze9mxV8ZcrB3\\ndAejo6O4/PLLcfXVVwMArr76avzmb/6mfC+8QBc7HzzGzlLacLN0cT/qY8UjTX1N0+BojogjuLoL\\nXdMxUZpAjlwW1n7cl/Ewd1gYC+1FnuBlmXvjGA5qNpEjiw7xWZ6J/G4v7iGM16ZqlmFhsjxJY+5B\\nEZNlGZk0DkwxWUErzVOBbli6hdVgVSBuzMdxDOqEsZGbruhI8gQL/QWBvdm6jZpeQzNoYtQZBRRg\\nzB2jY1QJqsBSmny9tIM2FpI19TP2hlAVlVyzFRVhEqJqV0m21Gls4N+oioqKWcGO6g6BxrFKDifF\\nOIthqwO+Vk58rX3dfZSsrJwSWQoYioGF/gKyHrmL//CeH+Lb3/k2vZEHfPDjH4RpmCIu0JxvAj49\\n98TpE1GxiIAa5uRN0Apack5aQWtIPe5QihiO/SUfJmlyR3LUHUUnJJ4TdxibQROTpUlUzMqG1z2S\\nONj9cyweu3GgXDI3NzdE3L3qqquwY8cO+bmYS6ZOmNpA1Ba/sQNc68U1cn+dZ0MzpDnAPhp+7JNn\\nilmVhleQB9IACZMQvbCHcXcc05Vp2URzRGkkDapu2B0qwqI0omJpoKxVs2uoWTXplL///e/HBRdc\\nAAC46aab8Pa3v10QEEBBmnoQuqqjYlaI36JSLvFjXya4c7055Mjh6KQsZhkDPqJmYdQlZ/goiaSI\\n4M16O2zDizwyb4w9rHgrJIqi6EhBynDcHDRVmmJ1o+4aMV7TxTKBUQTsyTbujsv3ZeomdEVHP+6j\\nFbTWBGwGAgJQKNeYKklmd+Mu8iyXKYht2WvNpoGxdJ7nWO4vCynf1m2Mu+PwY1IHS/MUY+6YFJ8M\\n36rndeHe9qIemj5Nd5gAzyamrCbqJz6pX2YpSmZp0wYTF262biPpJxjRR0RoZ7w0TgbRg5wI0Nq8\\nGqxSM0kPCb48uJbn+/PIuhkexIPwuz7+/JN/Tv+ZApdffjlmts3INd1abFEuyYCdT92JqlWVvRXz\\nPYv3ZJ7nGySWD1bE8PXcCTsb7q8iTwYAXJXQFEv9JcklfuKLeNJW+MWoqnrQ++dYbB5PuIImjuMh\\neMCrXvUqnHfeeUPP3bt3L40/NWDbzDZ5nMng+yN68QSAF77NoggtitIIy97yEPSAw9RN8QtIsgQq\\nVNFD5wImSkn5xIEjm2zG7Y44I5IIuaNXTEg8vWgFLYFf/d5lv4ePXf8xrK6sYteuXfjUX34Kv/P7\\nvyNOzP24jyiJEGVrHaxiMKmUtfvNxJSFlT9zEAUi92jqJsHRKhXiugxgBCw5ykS7VW8VvaiHdtgW\\nCNioM4oRa4RMwvKUYFWDfS3Dj1Kk0DDgaegmjYpB42pDM0he2rCxrboNhkIGmO2oLcmwH/Ux35vH\\nw82HBQrBky1HdTBZmUTVrMq56MQdIuWmgeCWVwPiaoy6o+hHNOlgFR6GoXHRFqSBTDH8xJfFVVEU\\nMTTljQmPwlnkQa6bgZRyxapAgYJlb5k4RoYLL/ZQsSsYcUagqzpGnBG5Xtt+G/P9eYGs5drgWslp\\nKtf0yctiubeMG/76BsACEAIvOu9FOO/XzkPFrEjhtbRvic6FCozNjGGxvyhFh6ZoGHFGpDhkmJxu\\n6Rhzxw4pIcRpvF8/GTZtKwaLeFSsihhxVk1SIVrxV4TPc7Tx1re+Fddffz1WVlawa9cufPrTn8Yb\\n3/jGo37dY/G/GwcqaNZP+t/61rcO/f/evXspy9rA5MyasAYbw27WUQYGHlGDTjh3hNcHm/Nyx33I\\n8LYQDLkcdUalacZ8Q37/JW8JYRqiHteFXG9qpnh4pRnxMlpBi+ChBRnkNE+lKcTQubPOPgtnPecs\\n3PUfdyGKIrz3mvfixptuFI+YTkhmmEmWyHOKxV5Rkapq04ayG3YRpIE87kc+CfHEGkzVRMWqYNwY\\nx6Q6KcbHYRrCizz04h76UZ8m8D6ZP+Z5DtVUoSs6JtwJsU+I0xg+fDnfRdNo5sToqk6co5CEA9Kc\\nioGd1Z14+uTTEWcx/IgEB1jIRkycY1+4gwCppZXMkhS2SZagHbRFVU1VVYGqZXmGMWcM/agv3EpL\\ntzDmjkFTNJkUZSCFUraL6Ed9kiEeiNB00RXhmjRPMeFOiMRw8RwwPJHFaMI0lFxiaRZqFgkANewG\\nifYMlOQYBukaLlSotJ8CEGURWj4hNuI0xvU3XQ8/84EScNz4cXj9pa9H3a5LEdKcb0oumdo5hWVv\\neajocHRHmsbsL2TrNmpW7ZCEWVicp0jo58/ORtLFYD8+bhywwJCpmeiE5KN3qBSEA8VLXvISPPvZ\\nz8Ydd9yBKIpwzTXX4C//8i+P+nUf7/GEK2g+/vGP4/777wcAlEqlIXgAQIlk175dcgOyOhpzWtYH\\nE9PW6/4PHQsUwb8ybnUz6Fnx95kwx+NMHqFzscSqHVysOIYj42Qm/ukqQaFqdk1gTdy9YsJknNEC\\nzh2HV77tlfjUX3wKyICrb7oaZ7zoDGRqNtQFN3VzqIvDpo+cJFmqkjfS7Bqsgjpr3O3hRYdhVsVz\\n1o/6WOguYDFbRMOhDaeqqmKI5qc+unFXJi4MvYvTmHwCBvKdqqIOyWhywZWlA9WTJBZcORcDtmZj\\nT3sP5nvziNKIfG1A34Gu6the2Y6J8gQUKFK4MpZ3xV9BGIZE+tfJbG1Xaxceaj4EFSp21HZgojSB\\nyfKkFLW9iJJtkpJfgalTMZTlNBHJQMfa8lvie9RwGmgFLYw4I8gySvo1qyYdsjzPsdhflCldxaqg\\nbJUliXKis3QLnaCD+f48wQEHQghGZACDBmrdqqNqVfFw82H8/Xf+ntQDFcAKLXzw6g8izakI4wLr\\nkdlHgBJoGjU9tmGCYmomtte2y+RNURQx0ztQl+twkw9AhfuKtyLdyFF3VK5TYM1ZvWE39svPOdSo\\nVqt45zvfiSuuuAIA8P73vx+vfe1r4TjOUb3usfjfjf3lkttvvx2f+9zn5OcbbrhhaCKX5RkefPRB\\nkqwF8ckAmjDzelQM3jyziuFm8DY2+lMUsg5ohWvTzv0FC30wt4KbWTxF55yy6q+iFbRQMQnqxPeU\\nrurQVA0Nh1ABzDFgFS4WpuECpRN1sDvbjVe87RW46+13ATFw8z/cjFf/6NUYmR4RCDQwLHHM31ma\\npaLsxRvFIA2Ee8fTJVM3oaQKXNUVuBUAUW+r2WRyyUIkC70FyZOWbgmUyzVdmnY4YwLjZgWztt+G\\nqqpQoIg6WMWkBhyrlbLSVz/qY9VbJQNTu0aKozmpm6161NhydZf4OYPGVMNtoGE3oKqqEM+5MdMM\\nmggzKshMxcSIM4K9nb14tEUcoYnyBKbKU8KjZAVP/l65oNBVXaS+eZ/C6IM4janZmGXSBOUpTbHY\\nZlgfAPEz4+uQzcBNzUSYhNI0AmjNNnIDbCVT1+sYd8cx15vDj378I3zv+9+jXWgPeP9V7wc0kkfm\\n9//pnp8CLgAVGJ8Z3zBBUVUVDach3xtfR0EawFE2+ikV77UiT6Z4f5WM0qY8GH5OkiWinMmIDb52\\nuyFxlo42lyiKgg984AM499xzAZD62Tvf+U48+clPPqrXfbzHE6qg2QweUFSdYSnHfbP75LHtM9sF\\nDlN8PeYBRGm0aXHChHSeIBxu0ll/M/Gi5BruWgE1eA8uVjzFkxFrcbFhSegojRCm9O9O1EEvXDPR\\n4jjnRefgS7d+Ca1mC8vRMj7x+U/g5Re+XEwzDd2AkimIQuqOa4omxV5RzMDUTNms53kuBNYkS0Sx\\nbNVfRcWqyPfJhQ3LM9edOhpuA8v9ZZTMErYp2wQuYGgGoKyptIy4I8izHJ2ogxF1RIosVnjjJMnO\\n0DwB4hBDtcjDqr8qogRcVFiahcnqJMacMcJopwkMncbRqqIOuSwbJUM4G6yKt9QnI60lbwlTpSlM\\nliahaZrA9viPpZP8J3LaqHsJQUeW+kv0enGIIAvgJSQgMVmahGu6YuQKQLDzxc5uxaygZJaw0F8Y\\nGq0zRA+g8bqlWxgvjUP3dGDw9LpVx3hpHPOL87jtS7cBEYAIeO1lr4VaUbHcXxYIX57neGT5EZrg\\npMDUNJEZGTLIBGVFUdCwG8ITA2hSlfopRpyRDffb/ngyxc7mZvfgir8i954CRfhWRfx+lmdY8Ve2\\nhE9z2WWX4aMf/Sjm5uYwOzuLT3ziE3jb2952VK95LP53Y7Ncsn7S/xu/8Rt4/vOfLz+HCXk+7Znd\\nI4/NbJvBqDO6YbPDMOF+1N80TxTVIZFhw2RyfZiaKbmEzR+LYWiGSPu2wzaaflMgylmeoR220Qk7\\nKFt0P1TMiqwv3ACLs1g23qy82Q27Q2vqU059Ck575mm47777kCPHVTddhT988x+KQpqhGTAUA8ve\\nsnTYeR3kDbNjOMS/y1PxcmFPtDgjQZwkTdAMmigbNF0I/EA4OQBETODExoloB22C3Fa3iacIT811\\nVUfNrGHUHUUGkn+vmTWBj7F5NOcPnvIHcSBIBIDWeLZxSLKEDDNBDSp+z5pdEzPjNE9F2VNTSJ46\\niAMoUDDijKCSVeQ6SNIEy/1lJEiw7C1jtjOL40aOQ6lbEtSDoRrS+HMdV4pEPyEDY/aBYfRGqqeI\\n8xgls4Re1BuCpzH5vXheWUmuG3XRCTpDSqs51gxQdZWm7m7qAoOnl7QSjm8cj7pZx5WfvBLwAKjA\\nr77kV3HiGSdi2Vseep375+8nhbMYmJyelPtgMzhZkevME87Nrn+Gqq2/11h4aLNpfZ7nG+DNLNzD\\nSBn+Dtgv6Gj5NOeccw7OPfdcfOc730GapvjjP/5j/N3f/d0Rv94TIR6XBU2S5Hjta/8AjlNCqVSG\\nYTTQ7ab4kz/5/9DtkvLGKaecgre85S0A1qYs3FXYt29Q0KTAScedJDdEnMYib7n+ZuAJChcxRand\\nzeJgSWd/oakaSmZJxr6toCWGm2EWSlEGQBYV7ixx5HkOFTRe5gkKY49jJcYFr7yAOEY68PV//Dqe\\ne/ZzUXVJArJu1FG36+IPc6BgUmI3pO/c1m3xBgEAXSNsMmvq66ounSPu2nmxh+217Xiq+VQhHRYh\\nA1EaYa4/h0VvEbZmD022anaNVFoGUxkuagDIdMqLPcRJjJVgBbOdWfiJL7hmVVFh6iZ2VHegYlUI\\nt5t4IqmcpAk6aUfMQjnBZxmJM7B63c+aP8Nib1EKOj/2seKvCO6d4VrskVLSS0iRIogDKXLYDC3L\\nM9T0GspWGXWL5F2bfhNe5ME2bNiaLQZ9rLvvGq7wp3SFxBnyPEczaKIX90jVTSchhZ21nSgpKt70\\nypeiZGkolxw8tawgilbxj1/5GqIWXVs7J3biVRe9Cvu6+4aMKw3VwNzKHK0sOlAfrwufxzaGPQMU\\nhRJ2O2jLZoBhmAyLO1SezPrggrlYzIw4I7KZLJs0rWLoG0DFcZRGRwVBc10X7373u2Wze+211+LS\\nSy9FpbI1XJ1j8fONJMnxwhe+HGeddQ5KpTJOOukMdLspPv/5zw5N+j/ykY8AwJDgCQDxQkMMnLz9\\nZLn+uLtflLPn4El+cZPP8vObha7qQ7nkUCEvmkrwz4bdQDsgCedW2EI36iJMQix7y2QuODC6ZI5O\\ncRPJxpV1m6BqQRKgE3Tknr7gNy7AfQ/fBxjAnffdibsfvBs7tu9A2SpjW3kbHYM9IgIn+wsdOkzH\\nlO/V0i2C5SYxoEDWIAV0LJZu0XQ7z6RBwh4wO+s7hbPoxR6WvWXxg5vvz2M1WCWDaN1Bxa0I2dvQ\\nDNk0c2HHqIAwCYlrNBCaWfaX4cfkhcPnhLv6ZZOgz6v+qvjpGJohIjI86eD8XVJLGLFHkOQJZruz\\nWPaXEccx/MyHAgUPLT8kuYT5HoZmyDWhqupakaHoiJMYDadBptgDTx+WOm4FLfSjPlpGC47uAAqg\\nQaPPOZCvtnV7rcDJ1/ZPfuJLocHntaQouPjsZ+FFp52AcsnBWSdtRyNu4yvf/CZ2/dcuwAIs08Jb\\n3vgWtPyWWD8AtD+YW5ojLqcOVCfIiHXEGdkU2sX+Zdygy0GNVD6eQ+XJrA+W/S/mIObP8vvqqj70\\nO3Eao5MdPQTtAx/4AL7zne8AAD7/+c/jXe96F0477bQjfr3HezxujDXzPEcY5uj3M0TR/j/Sv/3b\\nt/A3f3MT3vGOP8S5554rEwy+ibIsw9joGGI/BnKg1W5Bt/WhggcYdlFm3sGB+DVHknR4JMxTFVYk\\nKS6qvKmP0ghRsiZhyX90laYZDHtToIB1BhQoQ7wcUyOTrl7QwwUXXYDF5UUAwG9d8lv43Ut+d+iG\\nZ3+VklESidyibwqbhvGfOI3Rjbqyoe9FPSG866qOKInEuIxfnzfCwlsx1iATS/0lzHZnSREu6EjH\\ncNQdRckooeE0JHkUO6LCuclSgSM90noETb9JXkADuIGqqJipzmCqPCWKazly6Q7ygs5GpklKRRND\\n6eo2ETPne/NY6NFUZLY7Syp0UKWAURUVZaOMifKEuFVHaTQ0tUlzKm4c3SG549I4sixD3aqTn8JA\\ngIDVY8Q41HQxXhonMYJCJGmCB1cfhJ/4MFUTuqZje3kGxzsVZN09yILl/V6T377zh/iLL/4DXvCa\\n/xdPf8bTSXFOUQT2FyYhnn/u85EGKZAA9959L0aqI1L8FpX6ivdKP+qLOh6AIQnvYhws+QDU8V71\\nV+WeVqBg1B3d9DlsxFnksamKelQQtCiKcPLJJ2PXrl0AgGuuuWZIIv5Y/GLH4eaSc8/9VbzjHe8Q\\nid9igXLBSy/AD7//QyAB/uXf/gW//OxflsK5+H5F2LKmakIM3yx47XV0at4cijoaQ8JYcIanLPw3\\nH7MXeehEHYIYDSBKnEuYs8P5ouiiDkAmA7qmi5KXH/t407vehP+89z8BhYxn3/n2d26Qp+bNOBPP\\nuYhjbij/rau6FI2c91jumQuaIAuQZZkcnwJlePoNaogwxGrZW8au5i4y4w2Jd6OpmsC5uIG3XjY+\\nz3P5DllAYU9nD+a6c1TsDOThc+SomTWMl8ahqJQreGrC57w41WD/G9ek/DpZmiSltqBNXKdBsZnn\\nufB5LN0iGLBuoW7VUbEqcp6LuURVSMba0R2xGsiRo2SUkOSJFNLFa1lXSECo4TaEa1SMZW+ZYHEa\\n5ZK6VcOkrh88l3z/h/iLL/0DTnj2L+OVr75IcgmL1IRpiMvedBl+cv9PgAS4+S9vxq8861dgqmsC\\nNGzwWbwH1hufs5ra+sYBwwcZpr1ZMIys2MA+EKTMi70NnLejhaBdeOGFuPXWWwEAL3vZy/D1r3/9\\niF/r8R6Pi4Imy3K0WinC8NA/imkqcCsJUgxf5M2VJnbO7AQ0oDpaxU8f/imA4S6EH/tDJPHNipND\\nSTrFYmSzooU5ObzJzpDJhpwfK/7Mz2WOTRGexeNU13ThaFRUsRTk0HeZZ+iFPXz5K1/Gu/7oXYBB\\nXee/v+3vUavVhoqU4h/HcEQ1bX/FWhG3Kg7EsY8gXRNRYLUb3vCyiELFqmxwYO6FPfx09aeEBY99\\nhGkIS7cwXSZfAz4OVnQrdkvaQRuPth+VTTSf3yzPMOaOCUcmx1rSKOK7gyQQ2B6P7wEgzmNJNIZm\\nIEgIOqApGqBQ54b5Kw2nQWTXqEseRMhkgeYJAavd6IqOKI2IiOnUYKkWVI02DEFM1+WKtwJgDSJT\\nt+viHVEyS6hYFaiKKko/7bCNJE1QNUvYmXRgxJ1Nz9tmEepl7DMaCFOCVCiKghF7BF7bw+lnnA5o\\nQKVRwff+43tyTIxdZ8gZF9PsWxQkgaj68PdWs2viibA/nkwxgiQY4qipiopRZ/Sgm74iBI3jaCBo\\nxxyfH5txJLnEMHIY5QD9uDf0uK3bOO0pp2F2YRYwgdu/f7soFbGMP8OAbN1GyShtuiYzp5Jzyf42\\nR/srVPjfwFou4aYOQ5Z5XePcESSBTBs4L6mgSb+pm6hbJNlcskoCSduMc9AKWrj/J/fjt17zW4IH\\nufGmG3HyySdLoaIqKvEjB/8uGSVRTTvQZpOhQ2mWyrSLYeCcE7mhFWekmlkySwKhLR6vF3n4r+X/\\nwr72PoRZiDRNoaoqtle3k2eKSetOUYmRc0mYhFjsL4oSHMOTOmGHfNj0kjTF2LiZm5VxRsVQL6S8\\nyFBFzve6oqNkluBoDqIsoomdossayueIFVOLxWnJLKFiVOSaUhVV1sUkT5ClmaAYHMMRMr8f+WiG\\nTZK0HjSdLIMKJfbsqtk1OLqDMA2piBwUZoaioOHNQouG1fwOFKFWxqw1gihNJX9yY/DMZ56J+aV5\\nwAC++o2vEkVgYC/AuYQnTZw7Tc0kyFnkiWF0nufStD0QT6YYaZZK45WjZJYO2EwD1sSailvro5F0\\nvueee3DGGWfIz3feeSfOOuusw36dJ0I85guaLMuxupoijg//Y6haBrcWQxlIK6qKih/c/QOcfe7Z\\nAAgDfOttt8pmmSUBNxMI2CzpcAdnMw4LP1YsVIqTleLP+xMQkM5TgbfCY1fh7gxkiPk1mLRva7ZM\\nCbhzw9K9ChRkaYbnPve5eOi/HwJS4J1/9E5cdc1V6EU9IcbtLw7kdwNAVFz6UR/L3jJaAZHdLc2S\\n7j0vUHzMnNx4MfFjH+2wjSwj355Vf5VIolDQj/qiIrQezpfmKVa8lQ04dE3RMFmexHR5mr6zwiLG\\n8tkM+yjC17I8w77uPuxt7UU3Jl16W7OJKB+06brQHZSsErZVtiHNiEQYpAFW+itIkMj5Zqx2nucY\\ncUYwUZqArul0vBl1zBgXzjKjukpS0ezXkOREzOUNAeN82QwsSAhfbmgk06nkGaaCOeiJt9/zub9I\\n9RJalRNgaLaQlB/48QM4+5yzAQ04+ZST8e1vf1uu+SIXwFRNEZfgiV6cxmKyKVAxRcFkaRJT5alD\\nknFuBs2hczrqjh7yyD9KoyEIGkATpSOBoCVJgqc97Wl44IEHAAB/9Ed/hA996EOH9RrH4ucbR5NL\\ncjUGnDagDJSkdAtxHGPb8WQ6DBX4wY9+gFzLpXtsaZa4qa+/tplvVvz/YnGyvnhhQj4XKFyY8DpV\\nLFz2F9LJH0gV66ousB0/Ikizn/hyb2rQULbKsrllnh6Ts9ksV1M1XPYHl+EbX/oGEAHnnXcevv73\\nX0c7aBNkOvH3e0yWZqFm08R7sw1hltP63wt7WPFXsOqvynSXlSZZqp65IWPuGGp2TV6P7/ssz9AK\\nWtjb2Uv2DKqJKIugqirG3XFpQK1dL5nYDRRDURRUzApGnVEEaTD0/7zWO4YDBcoGtMWKv4J9nX1k\\nDJ3HYvDJ/CTmqo474+SBBl3UzJIskU00ixqkWYqyVcaIPSJ+bmk6EHHhScdAvIYn4u2wjSihvUqY\\nheKzxtekYzqwVEtgbpyn4yRAuf0g1KR/oFtl01ifS7I8gw4dU1NTyFS63h565CHkai5CFhzcGGPo\\nF6/3yaDZVtziVqwKKcIdZD1nwSV+LhdBhzINBTaHqbGK3JHAmS+++GJ84QtfAED3z7e+9a3Dfo0n\\nQjymC5o8z9FsHl43bX2oegLF6QEDjOit/3gr3vjmNwI68KznPAvX/fl1ApNhWVoOUzUFMqVAkW4L\\nS+EWx/XrJytcxBwsWBKQ/xQhYutH/qzEwn/yPCcn5cH4m6FUrP5VdGtWoMBLhrsKt33jNvyfi/8P\\nAJrSPPzww+JYy9ArlsY80PGXzJL43fDGtxf1sNRfkpueuTMlsyQTDYZwjTgj8jlZXWbIG0hRUDEq\\naIUtmZSwaAPDN7I8w3xvHq2wJZ+Ru6Lbq9uxvbodtrGm3Mbvsb6Y5PPAkprL3rIQz1k9jrlWQRJI\\ngTZVmkLZLCPOY+xu7R6CrDH+VlM1VAyaonH3lGGEXuwhyiK4uisLY45c5FT52HRVR92pw1RN2cwo\\nikIwv7hHk0PdRc2u4eSRp6DcewT5AWABBwvFHkO3coJ8S//0T/+ES37jEiADznvRefjiV78oWHYm\\n9Banj8BaZ5nvJYC6r47uiMIdd233F8wn4+CNy+Emj62EoH3xi18Ux+f198+x+MWKrcglqRog1BdF\\nRnn3vt0494XnAjpQG6nhlq/fssadXNdo4bWd72FeR7ghxpDnYoGyfsJysGAYl3isDODIRQJ4MXiC\\nwvckr/dRFolRsaZqUKBQYTMwq7V1W/ikHPO75/HM058pxkifiA0AACAASURBVMn/+q//irPPPhsA\\nBN7UDtpi2Li/469aVYGA8ffHPJhO0BFIc5iFUgykOcFxHd3BdGVaNqU8EYrTeOizl4wSVvwVLPsE\\n60ozOheu6QpEqR200Q7aUtwxCqJhNzBRmhiaLDG/Zn0T0DVc4ooOrATaYRt72nuEK4p8DXbeiTpk\\nKKoqKBtllK0yeagFq0MmqypU9AcFhaNTg5WNRlWoyJAhiiMxcVYURb5LVVERZDQZt1XinbimC0u1\\nxIAZoGOKskgEgSpWBSfUjkfDe/SoconqjKNXORHp4Dudm5vDM059BpAAY5NjeHj3w2IOy1NEhv1z\\nZHkmXB9u7rKR9URpQq73A3nTbFbMHAh5cqDYKgjaAw88gFNPPXXT++dYrMVjWhQgDPOjSkAAkCU6\\nuv0+Ouky0izFw3MPi6HgtrFtqJgV2lAmHvI4Fy4KgLUJy6BAybJDL1Q4ihMWS7PWCpiBWols5Ndx\\nUpjov/6xTT9jvmbamGZridCLPXGjj7NYIF6sqHbxqy7Ghz/0Ydxzzz3wPG/IsZb9bkbdUVkAelGP\\nPA4KCYnleNnvxlRNZMhEwcbSiTdSdarQoWO+Py+ESFav6sU9lA3awK/2V8kterAoOYYj8DLXdGVa\\nAwzIlXGIvZ29UnQIrlqhyclUZQqO4SBIqfjhZCfcnsLmm+VOGWesqRr6SV+6dtyhVBQFi71F2mxk\\nVFCEWYjl9rJIkaqqCg0aUqQYtUdxUuMk9OIeVv1VrPgrJEOdE26aVdXGnDEaq5uuQNGaflP8dTJk\\n0i3lzxjGIRa8BTKxyyH+CZqqYc/i3XiqurnU+KFGHiyjVt6BtkrHMzs3SzK1PnDczHGo23UAkKlk\\noK3Jjvci6qoG8Vq3TVUJcsKGce2wDUuzRNGvYTc2JKL1cDH2KTqSTpiqqBh1R7dEBa3o+Ox5Hj70\\noQ/huuuuO+xjOhb/87EVuUTLbARhhnayD3EW44G9D1AuyYGp+hTG3XEhV3uxt+bOrhB8Ns03h4Ad\\n8vsrA/5KoWApqoYVm0KbcVPWP7Y+xkvjMhFpBS2BYIdJiG7YRTfskjN9noogjKM7GHPHsO1p23DJ\\nJZfg5ptvBgBceeWV+O53vytciInSBCZKE+LDxYaexUk5S0uz3w3zcDh/jjgj8GKPkAGahdneLNph\\nW6BmVYtI5Zwrm0GTzJ8H/182yzKFqdpVNJwG9nb2Erl/0Ejb192HIAqgqIqYfAKUL+o2QbKKDRqA\\ncuW4Ni45kmFpTb+Jpf6SKJz2op54Bo2pY+TLBQWznVl4iSciBCyek2QJicgMJk1JlkjDsxt0sewv\\nC6cSAK2zCpBna1A8UzPhmA5UkGiCBk14SI7qUNMsJ26LoRvoBB1R41MV8saL0gh60ET90IYX+43M\\nX0KtshMd1USSJZRLBvv+Hdt2CMeKjTWtxBLuZi/qib8Rf15u2rKsNctBM+SP1e2KwWIdW1HMABDZ\\n7KNVQTv55JP3e/8ci7V4TBc0/f6BpZAPNZTYxXJABc2uhV20IdMAbVrDA6sPwNLWYFmHG7qqC7xG\\nJiwFiBgXJesLlvXFytFEkc/Dxltc1ARJgHbcFlKia1L3MM9zQMUhOdYyvKtu12VSwVyZYkLqhl1R\\nqWEoVt2u47jacVAUBbPdWVStKjyVJDCDNICZmbA1G02/KaZqACT5F9VxFIU4F5ZuYb43j12tXWLq\\naGomLJX8fEpWCTPVGZQM4uQwBK4dkHEnCx1wgceGbHzsHLzpUBUVruliujyNilVB02/C1mx0wg6W\\nvDWju4pVWZPQDH2kChk8piBoIEuk8rSBtf2DJECSJgizEEZmYMwZg67pWPKWULWqkiDrTh22Rn4M\\ncR4jRozleFkIskEcIIgDWJmFXtjDk2vjgHp0evkAkPf3YmTiTDT9JuZmB6pODjC9fVp+hydbFauC\\nMAmx1F9CkiVwdeJ0MSSNYWis+MPGeKZOXKN20Ma2yjbpcHXDrqi6ATQRHHVHj/qe2QoVtPWOz5/8\\n5Cfxtre97Zjj8y9gbFUuMbIKmsGDSLMUj84/ShlWBSo7Knik9YjIEbPy1OFEsWA5UPFyoILlYOqb\\nBwtVUYlDYdXEi4YhQP2oj7nuHJIsEcVGs2zKpPyqq67C5z73OcRxjO9///u47bbb8OIXv3j4Mw6U\\n10acEeGi8PSmONUNkkDkngHaODacBo6rHQfHcDDbnaXCxKwO8SBc3UUQE/+xmEv8xIdr0GScPejq\\ndh2O7mBfZx/2dvaKV5epmahqVYRpiLJRxnR5GiWLNqc5CBLFhRKjIDRVI7iRomHJWxpas8KUpjNc\\nBBmqgenKNMpmGb2oh9HSKCpJBd24C13R5dh4itcNuugnZF6dIyfBGKeOulNHmIRo+k10oy40hZS+\\nukkXaqoiCRNsr26HpVE+YEU9BQpqRk1gcTwN7If9NdGAhKZIuZIDHnBKfRvIMOboIu3uQWPymZRL\\nWCHQAqZ3rOUS5sSWzbKIOrCxKe9xwjQUDzqGzgGQyZShGXB1F6PuqBQ2RS4sX+tHChErxoFU0A7n\\n9Q/l/nmix2O2oEmS/IAKNIcTZa2BltdFnAeYX50HVAAJsHNsJyrmgeVWuWBhPgpPWFgRpZhINitW\\nfp7BCiK2bktXjY2hEiQyUfBi8jgxNRPPf+Hz8axnPwt33nHnITnWMnmb/WX8xEcraGGuO7cBK60q\\nKpI8we72biCnhG2qJhRDQd2qS/HVDto02Siom1SsCspmWfwJDM0Ygpbt6+yDH5OKV5TTuNwxHJw2\\ncZr4GrD6SbHoChPaQO9p7xG4lq3bgEILE2Od8zxHhkxM1BpOA7Zuo+W3MN+bl8WLHZzbUZuMMbMU\\nlm5hpjKDTthBmJLpqKmamC5PIwfhq0fdUcx359E0mugEHcEuu7qLdtimBKy7sA0bOXKZUolEdUIc\\nHi5mw5QgGJZGcqd53Me0cfTFDECdNTUN0HAaawUNgMZ0Q/yFgGFRCN64sKIOQ2GGVPsGIgi9pIcV\\nbwWGaqCv9dENu5goTwhGml/f1EyMOqNb1rVip/QiBO1wjTjXOz6/733vw6c+9aktOb5jsTWxlbmk\\noo2i63tIEGJ2aZYybApMj0xLAwXApsUMFx+GZhCHZVCwsGyyqIhtMk1hM+WfVyiKIuu8H/tY8pZI\\nOl63aQOZhAg1UhvkdbY0XsLrLn0d/uITfwHkwLvf/W6cf/75+3V0ZzhU1aoCNepsr/qr2NfZt0HA\\ngxUof7q6JuJjaiYUXUHVrkJTNPixj/l4HmlKjbAkTaCqqkC/cgyk7KMeKlYFpmZKNx0AykZZRBx6\\nUQ8njpwoUxTO50WYXZoTqbwZNMXM11RN6fh3wo78ficgHzRLtzDmjqFqVUnNrL8sIgd1qw5bt9GP\\nSREyiAP6jpwqzISmGlAAR3Pk88RpjNHSKFp+C82giXbQxnhpnAyuVVNEaZhXyWbLqqKKITYAaYJa\\nmkUqnaaBslWmY0h9bLeOvpgBKJcg8dBwGliYXZDHx3eMk89bAcrHohB5nqNu10UZTVVVGAqNi3gP\\nwdyvKCMBBk3TYOkWWkFryIKC0Q28j9mqPRpLdhchaDztPFQI2vHHH49LL70UH//4xwEc/P55IsZj\\ntqDx/a3pqHGcWH4qluLdaC+1gQRADoyOkfFVkcNiaRb5fRQMLDdT/fpFHwVyYVU2yvAVH0ZOBQEv\\ngnG6Jh969fuuxovOfxGQAzf/9c2H7FjL34GqqNhW2SZ+N1EaDanDRWk05P7OvB7LIHWabthFhgym\\naorS1Xq1Kz/2sau5Cyv+ihD4K2YFmqKh5tQw7oyTI/IAfmfrNjRNk9fxYg8r3gp6cQ9BvCb5CFCn\\n3dXpPUfsEZi6KTLNACXTXtTDfHcec705wVwbuiEeKiWjhJNGTgIAcQKvWBWRxmwFLeTIsbO2E9Pu\\nNEHiDAczyQzmunNQVVVIoc2giTRL0QpbcA0XT2o8CVW7KjytftQXJTPmrTCUgQvV45wqgK27h6Lu\\no7Aap2BxzyKQA1DIGb0VtFC360iyZFMzs5JZwpQ5JYILRQ5akiZS1Gihhm5Iogu9uIdHO48OCU+U\\nzfIGeeqtiKOFoK13fL755ptxxRVXHHN8/gWKrc4lJ1ROwUryKLor3aFcAkC6w6w+aeu25JT9FSy/\\n6LmE4dJTlSm0g7bw33LkMklpBS1UzAre8JY34DOf/wyCXoC777kbX/3qV3HRRRcd0vsw12dnbScm\\nS5Ok8BX3yX5gsCFlk00OS7PIh0YnT7HV7ipNZBRfeD/coec1P0oj7GruQifqSIOSZd/DJIRr0u+H\\naYhO2EHNroltgKu7yDEsK73eiZ55ldPlaYHVMn+TuamcE5hHpSiKCKbomo6aVUPDbohaHssw53kO\\nP/WhRAqmylOo21QEsaLl3s5e+ImPbtiFqZtkpAkFQUocrW3lbag7BBNm/taqv0oiAVkohs48yVFV\\nFU8rTWzJdcQRdh6FNXIyVmdXKUWpwLbpbeQ9hxyaoqETdjbAMdkUmq+FIpeV7Tm82ENfpUmTF3rw\\n4GHRW4ShkM2BpVkoW2WMu+Nb+pk4jhaCduWVV+Kv/uqv4Ps+7r778O6fJ0I8ZguaNN1aLQNdoQ7H\\n8uIy3UQJ8KTpJ6Fu1wUSxsklSoho3wt7Q8ULV/ZFz5f1j/0iRJRG8KI1VSv20GE8tCh5DTbsM6fN\\n4FkvfBbu/O6dyJDhHde8A5+88ZMH7F4wWX29mljZLGO8NI44JRx5O2xj1VvzDOEpQyfvYLm/jF7c\\ng6EasohGGXFaOmGHCH7QsOAtYLG/OPReuqqjYTewo7oDrumSJGZGncMVb4WwwzpxZ/pRH0lO+GPu\\n6BTNt0zdFO5RkiWwNAtRMvBAiLuIkxhxHtPCP5A3NXQDDbuBilkRechetCbraus2ybVqA3iVQlLS\\ne7AH87158VWI0khIjZqiYcVfQZTQ51QUSuSPdh+F3iMuVi/uYaG/IKNtBQpG3BERMshz4oGZW1jM\\nAIAfttHszWPP0h4qaAwicvoxyUmznCbHZn4y3KFkuAp7MAVJgIpVIQhfbwkrwYoUx72oR9MS1cJC\\nfwG2ZsM2aJPIpNetiKOBoJ1zzjk455xz8C//8i9I0xRXX301/vZv/3ZLjutYHH1sdS7JMwWL3iJm\\nV0muGSkwOjoq5PQsy5BoNF0MUiJhM5+GOTVDzTHOI1gTdPl5T/f3F3Eaoxk21zgHIGPLIAlkY86b\\n7gwZVKh46e+9FF/+7JcBAFd85Ao87XlPg2PuX56ZoWfr1cRYbEUmIX4Ts91Z2ehqqoaqVZVmRDto\\nU84YFIp1u45u2KW1VdWgQhUOZlEUxFANVO0qJtwJ1O26qHIGSYD53jwM1RC4NQsMuLpLBPwkQpSt\\n5SVN0QRuztM3NrP0Yg+qqmK2Q9yfIAmkkcqFCcPUh0KBeN4wvzRKqElo6daQmXSYhiLh70WeqG5y\\nfl30FrHYX5Sm3aq/ijhfy4WO4RBvZqCCBgUwtlhXKojaaPUWiM+cA9CAsakxgs8FTfJYKzQ0+Tyz\\n0aWct4EiXMWqiDcNTw9Z3n/VXyWIIHx4yaAQz3OZVHHz1DXcLbvnjgaCNj09jTe96U340z/9UwAE\\nQ3v5y18OTTs6WNzjJR6zKmfNZoIg2LpDbyeLWEgfwgt+7QWIvAjIgTvuuAPlcvngTz6M4PF0seAp\\nPgb8zxZGmxUzZassNysbhkZphCzLiN+RZbjnnnvw27/929RxTIB/+tY/4dSnnropgZTd3YuXlqZo\\nqNm1IdlDlqNMMxIoYE37KI3QjbqiDsfjYhYUYLnTDCSzmWVE0OdEZus2pspTaNgNmabxe8VZDC/y\\nSB0m8oY8X8QbZeCLIucDG43EpHhRVDi6I/5EAGAbNo6rHocRd813hGVExcC08H3Pdmax4q+IsRgn\\nzSRL4MUeZiozMs1icqoXeyQNjlySCxPsbc2GqqlATkIFqqoKgZNNVo/P+hhTDq6MdKgRWQ145RPw\\npCc9CUEQACrwrf/4FlRLla4zm5027AbK1uHdV5yQ9rT2YF9vnxSUqqpi0p0Un4iiJLSjOwL9tDRr\\nS4qbI1VBu+OOO/Cc5zxHjvHee+/F0572tKM+nmNx9LHVuWQp3Ivd4f141zvehR/f92MgBa677jqc\\neeaZW/YeAIaKG8kjKPxc/P9CjtmqwihKoyHVSC5muEnBa24n6tC0NYsQxAFW26t4wxvegLATAiHw\\nx1f9MS586YVwTRe2Nqw+xe7uxckuw91sbW0Dm+c5rckZ5bd+3CcIWJaiF/eQpJQbwjQUaf0cOWzN\\nFgVOP1lTZmOFS7YMqFpVODp5rbGgQJAEtBENO+jFvSETaACwNVtkrDmXrVdwa/pNWU8Y0hVlkTS/\\nNFXDdHkak6VJgRatL4qK+bcVttANugKTcw2XoGODBmPFqsj0zNItEfThHBdlJN7iRwTTsnWbVPsG\\n31+e58iVXLxfVKg4zVAxo29dbzyyGvArJ+LXf/3XcddddwEKcMNnbsApp50iyJKaXRM575pVO6y1\\nnT3nVv1VLPWXhAMWpzHljILaaVESmiWqi3uGowne2xyuCtrKygpOOOEEdLvEw/qbv/kb2psdi8fu\\nhGarhx1e0sfupd2ItAgoAbZjo48+Yj8W1bHNnMsPN1g1ZD/KlIcch1oYFR+LE/L54ASna7qQ3zl4\\nGuDm7lpnTcnwS8/4JTzvec/D7bffDujAtR+5Fp++6dPIVFLiYfnObtjdIOPMJPviopPnOfoRqYkw\\nXnWbtQ1BHGDRW0QGMsZKQTwUQzXQi3uIkgiLvUXM9maR5RkqZgVVqwrXdFGzauQxYNVkwYmSCGFM\\nWOAkS7DsL8sCwnwS7oLpqk4mlAZ1sHhR6YWEg57vzYvUNIdjONTxiQNUbcJ712wynFNB36Vt2Pvd\\nOKiKim3VbTB1E17koReTWoumUpctRy7Tp4nyBFzNhQIF4+44ejFxSzphh4qZQgfT0R2c0DgB4+64\\ndK7YyC9MQ0RIcZSX8lBkULHSXKFixgScqoNGtYFu3BXxhG7Uhau7AhVhAiz/faAkwZCLmlNDySxh\\nvj8v0pzsc8OFK5NCu2FX1JZY3aZoxnYkcaQQtGc/+9l46Utfim9+85vI8xzvec978LWvfe2IjuFY\\nbG1sdS7pRh0s9hcx35kngRkAelVH029K15j5gEcTMknH0TUmjqQwYiEVniZpqoa6VR+auKqKippN\\nxUAvpvvF0iy4potXvOwV+L9f+L+ACdz4mRvxvHOfhxQpeujRplKz4af+EBQZgMgEr79/22EbSZ5I\\ng257bTsUKJjvzUNTNbIXSELq5A9eO0ojNMMmHmo+RH4tZhmj7ijKZlkUKznvA7TZXw1WBYYexAG8\\n2IOu6qiZNfiJjziLqegBHR/Dq6sGSSPz5KoZEDdysb8on4FVPdkLzjEdgST6iY+GQxP/A62TdasO\\nXdFJACYLSMgmI8PnFKl4dY2749Az+lw1u0ZNPn8VnagDL/Ikl7BK3HRlGmPumMiNR0kEL/HgRR6S\\nLe6JJzkVnvvm95FKoAFsm9omHJ8sJYVM13DJWDoJhvJIUf5/s2CfG9dwsbO2E52wI8arRX/AJE/I\\n5ymi4rAdtGHqplyDXNwcqQKaoihHBEEbHR3F5Zdfjve+970AgKuvvhoXX3wxTPPAhp9PhHjMTmi6\\n3RS93tbBZpbi3bjrp/+G3/+d3wdy4Ljtx+HWr90qN0eWZ0BO8CNTNYe8YFhlik0wuROz2WP/WxEk\\nwZA8LquuSNdu3URICqOcsLRBEuC+++/DC897IQZrNb7xjW/grF8+i9RhCkaSbKymqdpQx64Yvag3\\nBOuqWKTutV5lxNZt4V8seovY3dqNZW8ZSZpQRy1LYegGjq8ej5NGT8J0ZVqwxbxxZplJFhRADtLq\\nz9fw3yWDZD0VRREPGhYO8BJPjnfFXxFImqEa4gfgGA6p2hg2jq8fPzQ6Zhz2gTYwYUITFgDY196H\\nOI1FeS9MQhiqISZhE6UJVMwKDI0em+/Ni5y0rpHc9WRpUjYebEjK2Hxd1VENV1EJl47qmipGXNqB\\nOx6ex/kvOx9QgeNPPB5f/NIXibifJXANV6ZzFauyAR7A55u9MYqJKcszrHgrQypHJaNEuOhBMcPF\\nn6M7cr2u5+vw9cSiEoxlP9Li5nCNOH/0ox/hGc94hvx811134ZnPfOYRvfex2LrY6lyyx/8J9ng/\\nwcWvvhhZlAER8N1//S7qlbrw+HjizNc6cwqZ97beWHkz0+X/rQjTUIRaANqYNawGTN3cAJUrFkqq\\notL0Puxiub2M8190Prq9LqABl7/9clx80cVo2CSb3Ik60BRNoKpMqi6Swjk6YWeoycRS8e2gPfR7\\nlmYhyYmbsuKtYL43j1VvFXFGjb4kTaCo1Cw6qXEStte2Y6I0IbkkTmOBzgEQM0o2EC0WgNxUYwnn\\nJEtEaj9KycNn0VtEP+ojTmOBlcVpTBN1kGDOVHlKpjz8GWp27YCbaCab53mOTkSmo22fhGTYP4ZF\\nFKp2FSW9JMfWi3viB8RQ9BFnRKZdpmaK+BFD92rRKirhkfvPbDif1hiW1TJOf/bpsu/61j9/C5ZF\\n569slmU65xouSmZpw2uwYlux0OF9ST/qD8HTOTeyYS1Pa5h/ykIQ61+fv4uKQcVv8TwdbhyuEWen\\n08EJJ5yA1VWyqLjxxhvxhje84Yje+/EUj9kJjeOoW5qETCuHt+IRpEoFRreNYtVflfEuFzBKSnrv\\n3sBZnaUBGdbi6M4B3WQ3K3KK4+j/icJofTGjq7pMTIqvf6DQVA2n/j+n4sW//mL8wz/+AwDgg3/2\\nQdx4042ClbY1G5ZhiUfAiDMiHY9isRQkwdBjruGi5beGNqwMUWICYDcmDHXFrECBgmbQFB8a13Ch\\nqir2dfdhob+AHDnKRplkJwdGnvzdh0kIQzMwVZqiRU7TpYBZ6K+pqjBszk/Ig4BVcRydlMYqVgUT\\n7gT81IcXeVSsKMCITV4I7aAtx8beBAw542PhqRFzc8IkxLK3THCGNEA/7CPOYvSjPhzTgaEYgk8P\\nEvIUCOMQruVie2W7wP9YgjJKI/HSybI1WWhN1QBNB7awoPn/2XvTWMvWs0zs+b41rz2ffcY6dasu\\n9h1sjG8zCDdNaAgBG7rhXwQhIbE7CCtqgRXagKzgdByEFCtCLYSEcKv/hCDRIcii1VFE2s6PBmO6\\nSZsp3cQ2Hu6tqltVZz57XvNaX368+3332vsMdarqGO4t31e+8r116uxxre+dnuEYGq8+eJU2jyWw\\ns7GDrt9FyyX88kl8grRMSdZ0FtNWzQmXIIuseFZPHpycmfjLHjNNrwljjJhpctPMsBcxI53737C/\\nR5RHwt1ink3TpWuFoYZXjcdVQfvmb/5m/OiP/ih+53d+BwCp1HzqU5964s/8rbieuO5cUlkxVKpQ\\npRVgAY3NBg7SAwyLIXzbl4aevaPSMsU0n8rGkWGSoRVeOghZbXAua36uqzFKygTjZCw5iOGWtrav\\nvDHybA/9bh8f+IkP4Nf+6a8BAH7jt34D3/G934Ev48vIyxxNj7YkjBjYbm6TUtkcYcANU1IkGKdj\\naSZabks4EhxaafGX4XyUuim2GlvwbR/H0fGy5LW28GDyACfxCbTWWAvW0PN70EpLMwOAXgs0Ol6H\\ncoyamwRXNPhiD7KiKsTPjLf2ACRPBnaAreYWFBSddfPvm7e9fP7JBnqWyhaJ/y7nEFa5TIqE/N9i\\ngi6P4hGSkowoPceDrWwZxk2yCViemb3ZPO2hRIkkTwSmp6FJ5bMwcFwHDYcaIWW7wDU2NIcVcO/w\\nDqqSPutWu4V2o70E9zvJSPznND5F02ui63dFEp1zPosbYV5WsNE4ABHlYPQIAKiSPkv2NzLGyICT\\n80acE8KBa4m0IGEIHnLzYLQ+wLtKaKXRcltLELTLVNDa7TY+8pGP4CMf+QgA4Jd+6ZfwgQ98AEFw\\nMRft6yHetA2NbSu4rroWuU3HBXab28iOM2AKQAO3e7fJ3G9O6mMFEUtbom7mWi6gIbrzHNzk1PH7\\nfHErpWCp68FfXqUx4lWma7kwoBuU5UMftzFyLRe/8HO/gN/7P34PsIA//n/+GJ/9d5/Fu155l0x3\\nkiohiJhFEDGVK0kUwBz2VIMRWMrC4exQEisf3L2gh4eTh3g4eUjQHrOYumw0NvBy/2U03AaGyRBH\\nsyMcR8fEu6kqWdX7NmGYGVLWD/pou21oTWT7pEgwi2dycJUVkUvZlZs/H2OIp6KVxu0OXRdtnyAE\\nx9ExYicmQud8wwBABAYm6UQkp33bh2M7F37/7AcQ5RHuju7CGIONcANbzS15D0VVwLaoeEjyRLwC\\nbGVjp70jpmGTdLKkBMOQr9zk6LgduLaH3GnBySfnvpbHicRuoLJ8HB3MGyQDPLf5nBiaOZaDHXtH\\neEEARAnOWEYggaxOxwIclamEgAvQfdb22kQQLhOZbLNyXd0Hoh/20Qt6UtxEeSSNdFEVgqPmgogf\\nq+W2RO3mSl4zjwlB+8Vf/EV88pOfRFVV+PSnP43PfOYz+O7v/u6n/g7eiiePa80ljsGL7bdh7859\\nYALABra3t8UoNiszHEwPRO2q4TTEYJjhk2lJ3BKAzkPOIZxPuHm/LnGA1cbnouZnls2QFZnccwrk\\n+8X36uOEb/n4qQ/8FH77f/ltHI+PcXp0it/7vd/DD/zQDwAKGMZDTNIJ1sN1tLwWjmPiLQZOIIaW\\naZnKQAOgInUQD5bUrzzbQ8/vkQR+PMA0n8rnqpRCP+zjVucWHOXgNCVOxTAZkncNKviOj1k2w8H0\\nQAYf7IPClg7crMR5LAbVvImpf44ACEo9H7Ssh+vo+T10Axr8HEVHsLQlBS1vo3zbxySbn+dxAVvb\\nONEnUpBftBXgs+/h9CHGyRhrwRo6fkckmitTQeu52bWp0LJbsnlp+22R0Z/lM1FcAxby+1mVoevT\\n1jF32nDy8bmv43EitgIYO8DwZChqmdtr21gL1qR5rur5OAAAIABJREFU2wg3MMkmMvhKixSn0amI\\n9wDLPCPe1MRFvHRtuBa977iIZYvDjV0dut/yWuj63UXNMBdwYO4NDOTenqQTHEfHMijr+J0zgjgX\\nxWUQNEY51IcbP/3TP41f+ZVfwf7+Ph4+fIhPfOIT+PCHP/zU38GbOd60DQ0ANBoaWfb0xOZmw4Lv\\ntTDeH0tD87adt8lFzMEqIXzxzrKZ+AYwQY/xmatNjqWsM4npSdeTwNUaoyiPpBAGIAfgKpflUY1R\\n/c/e9Y534cd+5Mfw27/72wCAf/ZP/xl+7RO/BihKHoEdiNszb65MZcS/hbXzAZpmZViWtWy4DSgo\\nfOnkSziNT5d+xsXjdnMbWmnMshm5Uls2PNtDVmY4zU8xnU6hNfFyukUXbb8NBYXXBq+hNCU1Ok5D\\npp/TbIpJOqFCdy4L2XJbZDAKg7ZHzQt/jqUp4WgHJ/EJjDGictPxOmT+mI4E5lZWJfIql4TGMAqe\\n4vAEjw/KpEjwYPIAcRaLl8BuaxdbzS20vBZsbWN/uo/Xx6/Dtm2ZRAZhgEEyQFZmcpC2PTJ/i4tY\\noIDTfIqHk4c0zawM3vbEV+AiymAbTbeJ4cEQGAPIgRd2XhAoIpu41sUOLG0ROdf20fKpMODPiqW6\\nj+NjGBhoaFiWRbAWyz13+sZNCyevpEiw2dgUuWq+l9MyJdns+aSNExxjpafZVAzxQjcUou+j7tWr\\nqqC94x3vwPvf/378xm/8BgCS4fzMZz7zhlFA/HqNa8slTRu+vw5raAEnABzguTVq7pMiQVXNC9u5\\nJ0ZSJkhKKopsa8H3Yul6lj5OigSjlCBU3OQwv6Le5DxJsLKahYvzCRdw/ZDkp3lTWm/6H9UYrf4s\\ncAL8o5/6R/jo//hRQAG/+7/9Lt73vvfReaAAV5Pv18PJQzTcBppuExUqzPIZ8UTmhp3AfOONZW6q\\nZ3sI7RD7s32Mk7PCAoEd0Jkyf56G04AJDT2GIfGXQTyA0kq4lbxxv1fcQ1Zl8DVt3JhbkhYpZsWM\\nFFHnkLuWO/dlUzTYYjWy0pSY5TPstHYEtsbfbS/oLRXPpSmJRD5vmvg9eJr4HOxDxjVKXMQYxSMc\\nRUcYJSNRBdtobmAj3BBRhaRIcBQd0bCnyBDlJJRjEiO1Csvj83VoQAPSKItwMD2AMQZ9ZeG5J74C\\nF1GFN7DpdZEPcuAYQAG87Zvfho3GhtRdeZmj5bakqbG0JZuzjt+Ra5G39HmZY5zR98+bGZb75/O/\\nqArEoHqN8xDDn9OCPNx8h+q2jt8RSWiWwOaBGT8WC/pwc9NwGuj6XTTcxiM9Z85TQeNBXB2CFoYh\\nPvrRj+JDH/oQAODjH/84PvjBD6LVutw78VmON3VD43kKnqeQpk8+WePHAID79++TZHMFvHTzJWw1\\nt6jYzCnp8M1TlwwsTYmiLGRKXJlKTALrh31pSllbcnDhVG90rkM9A8CSgRMAuYlX43E3RlmZ4ed+\\n/ufwyX/xSRRRgf/w2f+Ae//vPfzgf/JDKHMLVaWAiiZRRZWhLCJYDm0QojKSwi0tUzn06X+kTnU4\\nPcRJciKJn19j1+9iM9xEaUri0NQmLU23udCPb2xgmk0RZzHSKsVJcoKoiCS5WdrCKBnhcHZIq+PK\\niB9EXuZkOGa5SMpEvAKKiuQrK1OhApEJXx28iqIsyDRVU6PFqmehTRP+OCdSKyuT5VVORqDZBINk\\nAFvZCJxAjL14Q9F0mwQJcJvYbG7i5fWXpTm5N7qHQTKQbY2xDNb8tQUGel5Ed/0u1sN1NNwGjDEY\\nxAPcHd2V7VhWZvj/pgdoej427Se/5nKnjcIlV+nT+6fAvP+/ffP2Gbx7ZQj2dhwdIy1TVIaKE4Cm\\nkQz30KVGBDJXM8agKAuRVuUmlonIbFrraGrWx+kYCSixnMan6AU9dLyOTOB4a8KS0FEeYZpOZcoK\\nQAqNWT7DcXQM3yJoY8frwHf8C5ubq0LQPvaxj+G3fuu3kOc5PvvZz+JTn/oU3vd934Vy+hBVmQBV\\nAWgb2vJhNW9AO9ertPhWnI2vSS4pAZTAS5sv4aX+S4hz8hGZZTMkZQJdaNR7CC7605wm6zyEWG1Y\\n6k0ORx36zI3O40BeLotZNpNmCqBmZj1cP7MdukpjVI+yKvEP3v8P8Ou//ut48OABxpMx/vz//HN8\\n6EM/A5O7oBSgkFcZkjLCsNiHMTSwmebEadQV8U3ES2ZueOxZNOC6N7u3xHED6Kzp+QRnzst8CY4d\\n2AF227vo+l1sNbdk4h7lEY6yI1L9movH2NrGqBjhYHYgHJnADhC6pCzmWeSPNc7GSCuCuBUo8GD8\\nQBqUptvE/nSfjJ/nm6eO3xFINvP+8jKHsul6SAoi+1emImjydIa92R7aDgnS8HDVd3w0nSZKvxSh\\nmxfWXsBasCY5bRgPxSjaKHo9fN2w6XNTNdELethp7QAgkZw7ozvCWzIweD2L0NIWuk8hUMG5xLVc\\nTPYnsqW8feO28KLq105apDiKjjDLZwIbn2QTgSp6FnF9KlQCC+RGpTQljqIj4T4x4obVSFn6mmuo\\nQUw5t+k1hZcTOgQ97wd9aW5GyUiMPAFIXZgUCU6SE3jao+sv6BEX6BwuKXB1CNoHP/hB/PIv/zLu\\n3buH4+Nj/Oqv/ip+4SM/83WbS97UDY1SCt2uhdPTEnn++InIcej3uci+f/++/OzmzZuCq/VtXzCq\\nvHbkaYGlLFi1gpCLHe7SASqQzjNIqxdO9d9fTUyP2+ScR3o7jzj3OMHF8jSb4sbuDfz4j/84fvN/\\n/U2873t+GD37eeTT5RtFA3ARAmUXpkwxwykqXcJzqNBn/gR/XkmR4CQm4nfTaRI8Dkq2GVCQ6ZCt\\nbZKwNIuG0ncIXpaXORpugyZl2YymoHOS36gcwdUEE2RPFjYSLUwBV5H2fqUrmqgZg3vjeyjLEtCk\\nmKY1TeGYcKqUkunreeE7vkzeeGpTVAVgyLCT1/ktt0WJsSykYGi5Ley2dnF/ch+tlCAJ/L3a2sZW\\nYwsb4QaSkt4fb5G40DiOjgUGZYzBdnMbUR6RVOicg/TH0QR/t9FEz3r8o6CwQxTdd2A96MGxHDy8\\n/1B+dvPmzTN/n0mmO62dJWiIMUbEGaKcBBhYkEIrje3W9lJBV5lqiWzL0yv+PlhYQiuNw+khkjyR\\nyR3/OTc4LCPN0zxWQ8rLXDaUvG2teyB0/M65fDneIk7SCSbZRF5vHYL2/PPP44Mf/CA+8YlP4O9/\\n33vgJ19Ecn/ZJA6gejgffgk62IDdug0r3Hprk/M1iq91LuFNORer50JX5jMcPvu4IAMWfA1u5Feb\\nifNQAVwM1/PJ46IC6lBKgKC0/bD/1FC3KI+IG2IpfPhnP4yf+9mfw/u+94fxnm/8ftjJsqmhp4Cm\\nDazbt5CYMR5Gr2FSTdByWgQLmwt9MA9Oa41pSsX2ergumyJXU0FqKUu28Y5xFlujirZmMBD1T95G\\nTHMaesQZSTtP8ylcNZeHdwIUpkBRErc2KRL4jo+oIGhZ2yOEwJ3hHfIXgxaDSgCL7YxayF6fl0+Y\\ng8o5cJyMZUCqtcYsncnwJDc58oKKfDYP3WkR7JdVzOqbnqbXRNNpoqgK8guaNwRce/AGQoEMRftB\\nH02niWEyxCSfoOE28WqZ4aVqiqZ6/PunsENknZfQC8hvZ+/BnvzsvFxiaQuhG+K2exujZCSfF/vp\\n+LaPtCRTUFvZyJEDCmj7bXjWYkNijJFaragWQkMGtKkrUcJWNmzLhqMcxHm8ZHPBVg+Mful4HTJu\\nzWPyF8oJdWEMPR5DSofJEI52BD3APjr18/0qEDTP8/Cxj30MP/mTP4m//33vwbe9zUJy//fPfF5f\\nL7nkTd3QAIDWCmtrFobD8rGma55HCUjrxZe6moTqwdNjNlvigiqrMiEec6HFwQnE0haKspD1O4Al\\nGFI9+MZabXLEUXq+0bkooayqh11HM5OXOUbpaOlxP/wzP4sf+I9+BP/x97zvkb+vKg8N7CCtpnh9\\n9nk05k7LJUoczY6QlPPNFjd9ht5zx+vAsxf+IYETyDoY1QKiEdjB0s1ZmQrjhCahPMnLq2XlMsux\\nUFVkhJZWKVSlYCy6fk7iExxHx8TF0b4YPoYO+SQcxgupTS4u6mvputt3aYhYySZpjIeeZsveCA/G\\nD2h7Mn8bzRat+Peme8iKDNN8KptBpRS6Xhc9vyebN601kpwmd3EeCyfoIDuQjUbTISjaTmsHFSrs\\nTfaQmAJ/WTl4xbLQwdmi+qIo3A6cjW9Bu7b1u+z+qQeTdBmXrZRCnMcijFAnzfb8HrTWMlAoTQll\\n1BIEEFgkJoaOHEfHUtzN8hkGyQBdvyvNsJUvO7Ez/6nn9wQqyMmo3tzwIGOYDGHr+YbNbaPltZaa\\nG5b9vgiC9t9/9L/D+96zhfd+97c+8rOu4iNk8RF0sAFv89ugngKq+lZcHH9duYSbm7bXluaGp7qC\\nBijozxMkwrexbRp2MbyGifGVqc5sIQAsiWBwMPS53uhc1OTUm3J+3ax49aTBvLg6euBH/tMfxTds\\n/C18x99+NJfMV228LfhbGBfH+LPhHyCwfdkWTTKSiOeNu61tGGVgwRIfmdU8wRAmAIAFdKxlTxMe\\n5DGsKCoi4VmgAtIqJYVFZYQ8ztxJS1nIygx7sz34li+cGzYV7npdUbIEFryecTZG2yMSPPMJLW3R\\n9m5uDKmVhg7oDFz9PE+iExSmQGiHSKoEHbeDtEpRmEJ85hjSyGpd6+G6FMlaa9ks1HMSb7JZzTN0\\nQtzu3EZSJjiaHeEoi/Blq4UXVYpmtWzdcFnkbgd2/xWsz1VGgavnEmAOM0to4KkVvXZWId0IN+R7\\n5K2GQNfmNQEbVC+9ppLQFOzbF+WRcGqt6UJ9r87TcbUrojy2tklMIuihKMnrZ5bPEBexNCZ5lSNP\\nyceIP9Ou30XX7y5dq4+CoP1X/+V/gZuNE3zXe975yM/6Wc8lb1rZ5tUwxiBNDWaz6lJyp+cphKGG\\n5501qGy322JWdHJygrW1tfMeYinq6iI8LU7LdKn4B7CkosL/TS+c4Fns+XJVoj6TmDkxuZZLOvi1\\n5+Ui/GmCD/Pl53ZhojaKq9e/ErmJcWy+ioNoH0mR0JR7vhaOixi2stFv9LHmrwm/hBuSoizg2Z4o\\nw1w0YeBCNc1T7M32loww2UyNPzeetqwqbLFAwDgdi6TmbmuX8LNVLtuBftgXhR82YrOVTTjmeZF+\\n3ndaTxhHsyMczA5EWW09XMdmYxNNt4m4iMWXoOW30PE62GnsoN/oX/wZlzkOZ4c4io6WOEiOduBb\\nPk6TU/E7COyAfB2gsGXb6JUzNC5JRpnTgm4+h7B1C/bKVudx7x9jDAbJAHlJhNpROiIPpPn2jj/b\\n84J5Oav/X1e0O41PRdOfFYdWiZXAwkeD4WtcQFjaAgxks8ZSnuf592hFsBfGy3PyPNeI0xi0x18F\\nnoBEq90OvJ2/88wlojdSXEcu+d7v/V78/u//PgDg05/+NN773vc+8nnzMpdtDSsosTKVmFeqmhLa\\n3CyWsf5zRzLZSl+VqH8eKmCWz5akkD3LWyJmP0kw5K7+uixlQ8XdJ8olUTnGa+lf4CQ+Rpqn6AZd\\nGe7kZQ5Xu8IZYdnh1ULW1e6lSnJ8JvCWdZSMSIUyp8/XsR007AaUVsJhqTepvP2ZJBMcJ8fEtwy6\\nuNW+hbevvV1U16I8Qttrw7XdJYGcwA4WsKUywXnlmjEGSZlgmk4xzsYYJSNEeUTwK7uFreaWqJry\\nAMmzPXS8DlpuCx3/YmNKHg4eRUdLTTNLChsY2oDMz1hSesuxZdnoVwlaJjv3cQEgs5swjV00O8+L\\npDLHk9w/43SMOI/FTNWzPLFiYEW280KG0/P8z9dIfTidluQ1x8qklanObewZdcLNjmM5cNTc0Ho+\\nZOQhAw/KVoO/Hx5ahm4oQhNnjDirAt7gC2/lknk8Mw1NPYrCII4r/OEf/hHu3LmL6XSCV175Jnz/\\n9/9d2Pb5N+54PEanQ7CUIAgwm80e+/CuNzdMSqsbNXHwBJ+LNZbr5IOVNz48jXlUk8NKJGz4xVr1\\nXb/7xAmoqIolZRNgvpp2Wshm3lNhzU+zA3xp9jloaMyKmTgS32zfJJnfWoGqlSaHZq8pGGN+zzyx\\nr3sfsLTnJJ0IzjgqIjHgivOYDjq/jX7QlyLUwMiUNC5iVFWFJCcTtAIFrYftAKUpsdMkSeLNxiap\\n0swbWD5sWKKZp2D8eqHmjeh85T3LZrg7uitGoZN0Aq00NpubssY+jU5RGsJAN70m3r317gvNGwGI\\nIzRfc1FGU0UuWPYn+xhnY0zSCTzbw4trL6If9tHyWrQiz2Yo8yk6ZQIXBrYi00xl+0CwhXAFbsJT\\nxelkim/4hm8ADOB7Pvb398+Y9Z3ndwQAe9M9nEQn8pgtr4XbndtPxCfj7QpDEU+TU0zTqUy1bWWj\\n7bUXsLV54jqv+GN+mUB85s0Nu2lXqGDBOpOMlSKlPjZ99W2fBgPZBDAGjfFXn0oRSAcb8Lbe80xC\\nBt5owbnki1/8Ej73uT/BdDrB+voa3v/+/+zCXAIAL774Ir7yla8AAD7/+c/jne989PS0HnXSMW8u\\nGYvPZ3K9uWGoKV977JFSmlJ+l3lrj4pJOhFDSN4kbTe2zwwwrhqM/V81yQydBopZ+FTqcqf5Pv5q\\n+jkRd2Euym57F12vK3Ltonplu8KXqJ/NXKjyPc9nF5PsWao3zmPM8hnSIhVorG/5ZKY8Fy6wlEUe\\naNkMg3iArMoQFzEN1eaw5Y7XgYLCc53ncKN1AxsNMkDmz56bWfaoYd8xfr2VqWQ7wBvug+kB9iZ7\\n2J/uk/BJEdNW2iIBh6IqkJscoQ7huz62m9uX5hJjDClKziFT3Kg52kHDa4hHS5zHQAWshWtoeS00\\nnAYmGW33TBGhWybwFNHFSqVgtIvC6yMI1pYGVvX88F3f9V248+odAMAfffaP8I6X33HG26jub8Q/\\nGyZDEesBCPK929p9IgGm+gaPRaCm2XQJqmcr8o7iPMK5ZzXYdqDur8biNjx0A2i4sNQoKUhjtuav\\noek1ZcBmqgr24AuwssFjvzeOZy2XPDutWS1sW6HVsvD5z/87/PzP/zwA4EMf+hB+8AcvXmmvrjif\\n5AsWWBo8aW48y4OBWVJIy8uc/hupNDcGRqa4jNNniAxvfXhyx5sGYNHMlBXp/2dlhsIuUJgCJ/HJ\\n0jSPxQce9d5m2YwOo/p03yIlryLTmKRPpwa05m7Bj9p4EL0GW9voerRiHWeECRajS7dNiUdrmMpg\\nkk4E38tqVvx+2JhqnI3PNGENp4HQDuWzZXJ+URHuuUKFrt/F7e5taEXTPSbRW5YlTeU4HQvvqef3\\nxOeFYXKscQ9AvmeehPmOLxjaqIhQlIXIdDa8BnbVLpKQNla+7SPJE2itcbt7mzY0SqEf9DFNp+h6\\nXTHxWpXonhYLla7KVCIvmlUZ7g3vCSStAv1sls8Q5IEkzbIsMSwS3K2UtNG2ttBQLvwiRpVNl/wP\\n+Plff/C6GK7uPLeztJG4LGbZTIzxmLBpaxt70z15nrrR60WNUT2xaUvDgQPYQNNrioQ1N8ppmaLj\\ndQTKBiwrrBVlIZDQwhRLkzpgPjmdwx/jIsY4GsMoI4WSpS36WR7jcHYoRWFohyhme08tb1rFRyij\\nA9iN7ad6nLfi0cG5ZDrdx0/91PsBAN/5nd+Jn/iJH7vwd4wxjwWZOS94utvyWoTtnw9buGji5oZz\\nghj9WZ5ce/w4gR2gH/bJS2uuqMjDstUmp85HKLIChU3DnDujO4IKuAr0mSMtiC+wOtDr+l1UuY3o\\nKZXl1pxtrLnbOEzuw7VcEn5RFh5OHuIkPiG1yjkKQKT4LYi5JW9n67kEwIVIi8AJ4Ds+QUfncKK8\\nylGhkvM/dELc7BAHt6gKnMxO8JdHfwkASPIEhSlEZXGcjvFg/AAvrL0gSonchHKOz8oMJ/EJ/Dm8\\njrfM3PSWVUlGpNrCRmMDgRNgEA9ESU5Dw3NIgZRNNRtugzhFc2I6yzjzP2mRknDNXADBwCBEKD5w\\n42SMaTmVWsa1XGl4bIuguJWpcFqkeLUyIvJjKQuha8EvEpTzXLKkVDffsu8d7El12tnonEGJnBd5\\nmSMqIuIIlYnArNM8JXlxbS01P5c1RvzvrDgIAP2wL/cib/kYgsfND9MKOI/UvYEEAbJ8SZHymiY1\\ntVE2QmGKRS5RBI1PixRHsyOB4nf8Dux08FTNDPDs5ZJnsqHheO65hZDg66+/funfrf/8SRLQapzX\\n3MjhUMPiS2KpNzdzNY5ZPhOuAOua1zXu4zzGSXxCXI25uggnGo5Vo0LeBq3C1XgdOkyGZ1xxW15L\\nFNJGsyfABpwTN4MXMKuImG5AhlfMb6hMJZK6dZyqZ3lilll/f5N0gmk+XVrVa61hKzIQ7fk9Mt6a\\nSzCy0tA0m4pnC09L2I3ad3y8sPYC8jLHJJvgcEquzmVFnBjehPR8cshmlbY6z8rRDgzI/FGnWr6X\\noipwNDuS6WFe5uiHJIHa83s4iU9IaKAkKWJOOpw09qf7aHktuSZ82xdvg8BeKIux3KZSZEA3Ska4\\naW5ib7oHRzsLKei5f0NapgjtENuNbagmTTxLUy41TsNkiHEyRssjaBUXNA8fLgQBbty4caVrYJpO\\nyatIkcEcv1f+zFjg4XHivCaH1aKiNJI/H6ZDIra6TVFGqipSsRODwLlXDk/fGFcNUPLVSkuzzKIC\\nw2RhEGtbNjztyeTVsRzsZtdjQFdM7j4zSejNELdu3ZJ/f1QuOTk5QZJQU9But59aRtXWttxvXFAx\\nqZt5Fcy9GadjIIUMsvh8YcNG3t7wsAygMzTJEzElZrUw3/aXxDRE2hwLKBqfy5xPePNhDA2A6vwd\\nACLyopTCyfB6cskN723I1FQGRpWp4MET6C0PCAMngJ3bS2qH9VzJ0C7mw9Y/f0tZcG06b0ObTBNL\\nUy7gXXPZ/0k6kWEZ503XdvHOjXfipeolnManGCQD/NXxX9HGp4xRRiUm6QSbzU3Js4ETyPa36VGj\\no6DEBDR0FjCkUTpakp/v+gt+5SSbwLd8koouMqRVKkRzo+h3S1PCKiypB+IiRlZm5Fc3R2nxtSDf\\nrT9Gv9HH0ewIWZFRvrOp4Z0kE4zyEWxt40brhmzP8jIXD7XKVJKDOU/x9TgYDJCmNBBrNptoNh6t\\nzMX1EACB2TNUcJyOkZQJ2m77sQbV9WFavfHh+qu+zWs4DYELCgVh3tDIoKxGTcirXIZphaHvzrIs\\nNK2mcKgn0USEGByb4OLsi3Q4O8TbyjGuQ8fwWcolz3RDU09C9+7du/TvPu1E7bKoNzd8wXPh20Jr\\nwb2Z46b5d/ggTcxCopM7d8dyxMV4LVgT008DI5O31cYEgGyCeDoEQIilaZmK4y2vRrkRAAh+cR3m\\ncwCw7t3AQd5HqTJ5nwBk+8LwMW7Q6lKSCmrZyEzTgcI8CC4AWFSgHmxix487SenQmKQTgYzxatjS\\nlMS23W1RKns4eYjCLsRM63B2iJbXEiU2KNo6DJOhHHT1124pC6N0JPjowhR4sf8ikiJBURUYp2OZ\\nmFnawk5zBx2vQ6TL+Ijkr+f+QgDBtcbpWKSFAzuAbdmilgNQon44eUiFT5lgq7GFm+2bIv/KxF/X\\nIo+EcT7GerCOd6y/A77jY5gMMUpGZ1bpUR6h45HfzWh/BMT0/m9v3RZY16rRK//7KBkJwZaVhLYa\\nWxhnY7luZ/kMBuZcufGLgh9//h8SXMyN0pEUK9NsKn5Aq8GvixXRGBfNm5yyooanMIUoFDUcgpzw\\n5maWzQhzbwbUtGmNF92nN0IEaLJW5dNnXobzjRL1nPDgwQMURQHbPj99fi1zyWpzwzBaniLXbQbY\\njLE+wGIpecSL7Y1v+ySm4TZE5p0FLxiuVkcF1EMMBbPlCTpDk7jhsbQlpo7A9eaSlt1Hu+ohQwzX\\ndpHkCTJkcoYyPDkrMvieLxuHUTqClVs0iJpvLmxti1klc165OVzlYFiwsB6uY5bPSAktm5JyXRZJ\\nDh6nY+RVLpvbt/fejv3ZPnzLx6uDVzFOx+Jgf398H12/i37QpwZGK0RFhEEyEM4KS+GzX0xe0naI\\nNzFdvytcC600+gFBhKOChkWhEyLKI/KmcUP5rvhsZPVO3sIxPK4uwc/NdFIkaDgNbDe3RUJ6nI5h\\nYOTvl6ZEy23hdvc2fMvHNJ9iEA9k6FMP3/bR8To4fPWQ/AAVcPPWTfTD/pKH0arpa5In0mCwSfZW\\nc4sUBNmmoMgwNmNppq8SdQ++1eAtFv9sgIFIrK+GpcmegmuToipgVzaKspAGnAdoDE33LR9hGMrz\\nTLMpjuNjFLOCpL0tB6+0eld6H4+KZymXPNMNzeNsaL6WSage9Y0LNzdcxNe3N9yQcKPCRX9ekX8G\\ny1Ky3G0v6J25mfhm4C1QXaqx/ncm6WSZaAaSrVwL1pYMMtP4ejxyOJ5rvB2ZNRJ4hTJKphccCoom\\nGBV5BAh+FAaWRU0hr6wd7Yih5GVQCNb6DxyCWjHErigLUohBgcAK5DsZp2MUFUlDv9B/AZa25FDO\\nC1JJGyUj5A5NoPi52QzPVjYCN0BgBcjLnPwB5nr/TFafZlOkJXkXtF16/ax2YmCw29lF4AYYxkOU\\nhjZpbCYKQLg/oRNiu7k8bTmJTjBOiTejoLDZ2AQUfZ6BTVKnk4wmjGykppXGUXREsBe3hVudW5hk\\nEzHGBOaE92SAYTLEVx4QXwAledBcpK8PAMNkCNd2sWaTaIBv++h6XUAB69U6kW7nuG1uUHhzc5H5\\nKye6y8KzPazpNfEUAhaSqS1veYrOj6U1+Vws/ay2wSlNibIsxacqLwlqUFalNM1JniAqIvRMBuDi\\nz+Vxo5w+hO69dG2P91ZcHJ7nYWtrCwcHB6iqCnt7e0v5pR5/XbmEHevrTXRSJPTnoM0jw9J4i8AK\\nYMzjy4oMd5O7yE0uYin9oI+1cC7oMU8pdQ5tPjfhAAAgAElEQVRFHa5WD2MMpjl5gNXDsz2sh+tQ\\nqUJapPBtH1l8vaVHz9lGqgeyza8qEpmpCxuUpkRapUgTgpw2nAZKMzc+VtQU8OaDJebrPMjzgrfL\\nfK9zY1CUBUbJCNNsKgPIltvCKBnJZ/CuzXehMhUOpgck6FPliLIIh7NDtAtCCjCkOSszvD5+HQpK\\ntktxHtOZFqxJA2ErGwfTA+RVLgNJ13LRVV3aGJhCDJpn2QypSQXSxDwhAJKHmSfKwZwPJt+zeTJA\\nTRCcRcPjWq481zSbIlIkQvNc5zmxD+BryMAI7+aLd79IT1YAt3ZuXTrQSooEsRXLJtHSFm2W5o/J\\neY/zg9YabZcMq1cbo1Xj18uC4WhpmS42LVUBU5gzuY+bLFvZsGGfkY3OqmxJmEA2sCZHWdLQTGvy\\npUmLFLN8ho0LhilPGs9KLnmmG5qdnR1YloWyLHF0dIQ4jhEEwbl/968rCdXjvOamqAp4yluCJzFv\\nJq0IK53kiUBn0oKgaqN0BLdw5fF4y8FO6Rzc5HCxfRwdIysWmxxLWwJn4k0Oh1f0YeP6ungLrhwG\\nVVXJREwrLbhTA4MkTwQmxqZpjnZk0hLaIbphF6EOFxPIK4aIC1QlhukQR9MjTPOpFNHsR2BrGwrk\\nOcOFxHF8LMozeZVjmk6htIIySqaDlrZQqQqz2WJr49u0Tdmer3kPo0McR8fo+T2B4G2EG3TAFZlI\\nNLIRZVZkGGdjwkbPmxqe4AHAq4NXAcwJhqDGhDcGoRPi4eSh4LU5PNtDU5NU9HF0FhZFghBNNJwG\\nsio7I+P9xYMvAjsAciDcDrE32TvzGAxZq19Tvu0DHnBQHCz9vbqX0ggjjOzRmabjou/zvI1QfdLm\\nKAfDbCgDAzZNY1nVqyoNroalLChNEAWrJMnWrMrEobppXe9AwJTnex+9FV+beO6553BwQNfpvXv3\\n/sYbmnqwIS83NywooJSS87++vZlmU5GbV4oMfXmqP8kmSMtUNr4sne/Z3tLQrC4jPEkndM7kyz44\\nTbcJ3/FFopbDy687lziSQ9mLpOE2EDgBqUplEaEANKmt3RndIaiUHaLpLeBOliKJ547XgWu7GGH0\\niGdejrwkta9pNsX+ZB+DZIDCFAjsABsNkhDmc7fjkZDATnMHDyYk289IhZPoRIYpPLRjOPppfIrX\\nxzSg5a3wVnMLoRMizVMcxUeCDGAeDUOR45wEcwwWZ+wkm4iRc2kW22YAuD+ma5kV4TgXRXkEGMAo\\nUjmrXxe2tmUQdxqdnjlPGfYeOIEQ+esD1X//+r+XXNK51Tk3l/B7qecSS9E9wD5k9e+kDn2cZTMS\\nZThnU8PNLIClHLLa6KzyjXKTLwxKQZ5HRtXQAo8RXLOxkipvw5IiAQwNbnvO+XXsk8azkkue6YbG\\nsizs7u4K3Oz+/ft48cUXz/27fxNJqB4XNTe2tmG7NhpoCFmdcdFKKXKZn5uv1fkyrHhWV0/j5/Fs\\nT7YBu61dIUoz0Z4nBmfCXK8SRmCHCP3Ncw8Wxr4eRUdiKmVpC9po4TWs+Wvoh31JEGmZLkHWrhKl\\nKQFFhyw3VxqaiJtFLM68bbeN7db20lak7/dhK5u2ZZoOGq218FIYw5uWZPJpW7Ycrq528dXTr2KS\\nkb/BRrhBicRtYLuxLQmCCwnHODJ9PUzIB6dChYZqYKO9AUfTz+uwsLRI8WDyQKAQtrbRcTsyxQQW\\nU15+vqbbFCx43QuJFW8m2QSBE2Aj3CAlvHSIrMhwcHRAkDsXcNYdHM4OlyB/LNFch0EGdrCE0edQ\\nSqHjdzBOx5LoGHL5qKZG1NMucyx3IKpuS1NmBfK9mePEL2qMzvv/1b9TKJqquYbgKlmVwa8iiHvi\\nNYQ57x59K75mcevWLfzJn/wJgMs3/n/TucTSlsDH6s0NQCIZTVDTsz/ZX/iaaPKG4sKXc8kIo8Vg\\nzKZCq24qyC72lrYEesT3uGd5xN04B/p8rvb5U4RvBQiD83NJ020i8WhQM4lpWh/a5CmWlRmOoiO0\\n3bZsOgwMhukQdk4b+su2zfXgM0ApJZsfKMBUtNHdG+/Bd3y03Tb6YR9NrynSvTvNHfi2j+PoGGmR\\nCvG/49MZqqEFmsQ8HYYLF4bO4aqiumGzsQnlUiO7OrgKnVA28rN8hlE6oo0zSiAHtpvbaLktGShy\\n8Pmd5LTtK00pcEXPoTNeK42GtxDg4efj608k9Wuwd0c76Ad9VKbCKB2RkMrh3OfNAZo3mtib7KHj\\nd5agwcwZ5WCo4HnfP0tWc6OTlzmGyfCRKrDMkXlk+AsRoPrv8nbvqo0Rczm5MXK0I985w9NZFryB\\ni+WwnySelVzyTDc0ACUhbmju3bv3hm1o6nFec8OrRoFnzScmfDgw7plX1KUpBYbEkoGu5QIGmOYL\\ngyYAcG0XG42NpSkLJ8I6XM1cYzEGAFExw2x2CNeeN17z91Mn+dvaJpWuOQzPszy0vJbo80d5JP40\\nll6ojTAR/Dzp36IqhEi7aoTaDRbiAbN8BlMZRBlB3IKEnpMThFLk7Bw6oXwHnOx9x0do05/HUYym\\n00RSJih1KcasB9MDjPOxNGibZhO327cvbPC4KAmcQMwzK1WJWEIv6Am8JMojnManmGUzSpJ5io3G\\nBkbZCL7jo6gKKWBWn8/WNnpBDx2/I8TNenLjLZhruej5PcAAx/uLrc7m5iZm2Uw2Qi2vdcYjqeE0\\nHtmctL02xnj8puYqoZRCL+gtEZfzMsdpfIqe3xPc82WNkbhMzw3ruAhgp2lWKDQglZ9ijo++rniW\\n/APeDFHfyFzGyXwj5ZJ6c8OmilEe4Tg6hmVZ6FhzqwIrgNYLc0qGUNnaFgI3F4SeTYpZjuWIn0b9\\n+baCraXis44KWFgRXG8uyaoUcTIQvpujHdpAzZ+vMhUJA9gBEa7nTQEbJGYFmeVOsgnablvOSEYG\\nBE5wLvxMPGJqctrAHNYcdGBbNtI8JVL4XN2sqChfaa2lgVSKtv9Nt4lxNj/zDOj8UXNVuKrCJJ9A\\nQ0s+t5SFoirEcyvOSR66H/Tx7q13i7BOPcSwUZMqHA+uNEj1sTIVOn5n8b3NjV7TnBTrxtkYvibB\\nCduiM64bdNFwGmc+H/bnCuxAlFrrOZeFJrTSYjY6OFgod21sbNDnO03g2i66XlcgeBws+nBZc8LX\\nI1/DbEvxNNYW9WDRBn5dDPdk/thVGqO6IprYf1QVtNFwtEMb1jKhwVlVYIkk+pTxrOSSZ+NdXBJX\\n5dG8kZJQPUQPn7v0+QXPSiUA0EBDCvm0IEwnr6iVUiIUcDw7FlhB3a2a1UvqIYkQC5Wp0ThHtLzN\\nfbr3pkHcCQBREeEkOkFWZnJYu5Yr4gTs6cFE9npDxsWkre0z5E0FteSyzJAInuhwZGUmspimIins\\no+gIs3yGoizQDbpLPg9r4ZpMuxzLESUhTm5MHocBthpbgKJDdTPcxCyf4c/2/oxW/ChhuRY2G5t4\\nrvMcsoogAAwfYQjJJJugH/SBALjRvCGS3Pw9rwVrJNtpbcDWNibJRPDjrnax2d3EeriOrt8VrwDX\\ncqXYeZROP2Pwuamoh6UtnHzpBBgA8IFvvP2N6Df78t2wMk/X7yJwAjGfvErstHaWpGSBheLOdcRO\\na0cMVDmYTMvXkfja1FRqGKboWA5JRM+DfWqyIhMPCddyCQJSjIHi6SSb66Gs6+PjvBWPjqsqnb2R\\nc4lv+5jlM6wFa+IjwpsXgIYFXMjGBfEkWK6Zz4i0SDGIB5jmU2gspG3bXlvOodXnXYU+j8cFZrPr\\nLMgM+nOPrLwk/zeWgedcKUIvc5J/VlITw4MiYOH/U1albAW44FVQAhfmv5eVpPBVb+B468KeNJWp\\ncDg7RJRHSIoEba8tEGbHctALektKlkVV4Dg6JhXIbCqICcdysO6sQ4EgYWvhGuI8xqunrwqsi42n\\ne0EPo2yEvMrR8TroBuRA72gH43QsjvQ32zcF9cEu902vSdLablca4buDuyL0sNXYkvfcdJuiwsbX\\nwaNyCaMUzpP2V1AY3x0DewB84OXdl7HZ3JSfRxlZGHS8jiALHkcJk/MYB/OMroroeFSwUEc96p9J\\nHX2zaspe9yYEKO9k1cIHBwCaugk4eCuXXBDPfENzlSQ0nU4xHA4BAK7rYn19/a/ltV0liqrANJvK\\n9J8PLDb9qptL1jXT85LEA4qyEFMoPvQYBuXZnsCLuPC6zMzQdktgdn08gD87+reYFWO4touW00LD\\nJaUyVnvjRoaTBW9oOl5HVM5YVMG1XOFeMG5cKy0qQEVVLJsk1oIN0/iz0Zq8CfphH15G+PGyLKG1\\nFox2WZVi1gZAEhMTbwfxAMfRsXBxAidAx+sIGbIX9CjJTh00PeLq8EYuzkk2c5yMyeTTVGg41HiE\\nTohu0MVWawsH0wOZeE2yCdpeW2RHv3D8BSR5AtdysdvZRc/voeE20A/6cmjylGqYDOHbPjU3F6zt\\nOYGxTPYsnwmEYDwdY5SOgBBw4OCdN9+JqCQlHRYRKKoC+9N9rIfrl5q5nRcdvwOVKvmOkiIBElxb\\nU9N0m9DQOIlPRMFsmAxFSvQyHDQnnbq/FADxt/C0J8VLpvW1JiGreTV57LfieuLNuKGpR1mVOI6O\\nF4bFToAbrRskXDE/J5mPV29AWNaZDYfrimcVyLhYK40oj5Y4Gxc5swOA6xvMrnE49qeH/wapidB0\\nmugHfXQDkqXOyxx5SRsA13aFxM6Ds53WjjQ202wqCAj2NRsmQ8pBLp19JxGdEbwVOE/VapJNRHGL\\nc00/6MO3fdlOKKVIKn6eSxSUQMdtbWOrsSXDsiiP8HDyEHlFtgLs3TJNpwRXa+2g7bVxd3RXUAWB\\nHQAG0kRNsgleG7yGrMxkOMjqnNvNbVKynEO+oixC02uK6hmbdCql0A26cLULx3awFqzJ+2e0RJRH\\nMli8SFDBsRx0rI4IWcR5LNeTgcH9g/uknVIA3/T8N6Hjdeh15DP5/I6iI0yzKXbbu0K6v0pwLcFN\\nDcP4e0HvWpoabqBZxruoSByCB9OXiQ3wUFrEZWrXiqUtaYwsbaEqPGD6Vi5ZjWe+oblKEnrw4IH8\\n++7uLrS+nm79aSMv86XCUSm1ZESlLVo9C/Slhnvl1fs0myIrsiWvjdAJ0QnmmvI1PCsAkafl7QgL\\nDwyT4ZzDsQZdPX03f5rtY5wPUJQFpvkUR7MjISNuN7exEW6g43ekyOfDkqPegFXVArvMrskn8QkZ\\nW9Z9duaKVEopaGjZYPEaF6AJEYskuJaL293baLttItKmU5nKHc2OxIm54y1Muzp+BwfTA9HX58Zy\\nPVynLdTsRN5LWqR4eeNl3O7chqWIlDvJJogyIrFOsgkVxZYnEELeUjVNU4wneeKlQRCL10ev4yQ6\\nwSwn3s7N1k3cbN/EjfYNkYDk4oODN0un6lQmb+dhx13LRT/so1t1Mc2mmGQT7O/vy8+3ntvCIB1I\\nER84gTTkba8NS1vYn+6T8o7fXTLpvCy4Cao3NSYxF5I7L4oln4CVbQsr/vHnEufxGVnn1aQDQCAF\\nPAmuc7g4iSVFAs/vIc8HcPJHm8Q9KnSw8UzIbL6Z4irDsesw1fxaRFGRgiPnBwWCXPI9zgOLOoSK\\nzR35rI3zGKN0RNf+XIkycALiEs6HJPy7AwxgaUu2PwxtLSsyJk6KBLCaQPn0Thqn2QGSiord4+IY\\nh7NDUYXaamxhrbGGpr3gkqwaHPK9G9qhnI3c1LE/TzwkRTHOv3mVY5SOoNNF86eVFg+XevD2Y6u5\\nhfVwXeDM7Gt2Gp8KeqAbdCVfcZE9iAfo+l0aTOYzeJYnDRcP9qqqws32TWw3t2FgMM1IHnmcjZHk\\nCU7iEygo+Y6n+RStrCUwQPYrC+yAYLgZudePk7HUIJ5NjvUbjQ3hS7GyXj2X8BCWFd4CO1ji8XKw\\nkEXDaQhUuqgK7O3NRQBsoLvZXRK8mWQTgX27touj6Ain8Snl4XOQJudF6IS0CZpv5YuqeKKmhpvR\\n8/IJ30f1YdiqrLP4Ec4HYsYYkXYOnED+nes99lUrqxKW00CVnUBnwyu/3oviWcolz3xDc5Uk9EZM\\nQLxV4eCb+rwNilJKJkvc3HBRz/CzQAfSENmWLTci3yQcfEMyNyUqInEC1kqjtCPo7OkbmoP0rjQU\\nDhxJKux0fRKfkPrKvED0LA+u7UqDUhdAELO5knDM7PrMHAYm0/N70ErDKIOqpEM4yRM5bCtU8jye\\n7YlsZVmVGDtjjJKR4MzHyVgw6V2/S/jnOeys43XoQHddrIfrOJwdYpgMEdiBOH43nAZ8ixSANlu0\\nVo/yCIfTQ5zGpwDIiyXKI7S9tjQEnCwAiEqRqQyGMamoDZMhZvkMeZXjRusGdtu72GpuAYAoFa2Z\\nNUR5hFk+W1Im4i0Xiwg03MaS6RkH+0q0vTb+4vgvgBKARcqCRVXgMDqUA7rn94Q3VHe/PpwdCmfl\\nKv4Aba8NBSWNbVqkGGF0pqlhWeWLmpaLwrVcrAVrGMQDKfxGCU0tGXrB4hShE8JyrTOvWSkl1yh/\\nn6UpJZGl/sa1NDR26/ZTP8Zb8XhxleHYaDTCbL56CMMQ3W73r+W1XRZ5meMkPpFrn9Uaz9suMOeB\\nLQSSghTRjqIjOmvmQ4oAgfi1sLM9ezZxlFUpZ5WBke0lw4K1m6KKn76hGVcHi+0GbCibth22tnEc\\nH2OST9BwGuLRxfenZ3skoauBsphvVjXBinljwVxMHk4dR8dUiDtNOLYDo4yc0Z7l0dk0PxI4d7Gw\\nwHpjXZAEk2yCUTISiedpOpUtWNfvou21JcdtNjdxGp9CK43NxiaiPMK94T20/AV5Py1SOLaDqIhw\\ns3UTO60dzLIZHk4e4nB6KMPNSUpw5s3mphhvsocQq49ZypLGgeXos4o2WmvBGjYaG0KYZ1i0SHrP\\nm2AOfg8M1zvPz4cRFYET4PDkENEkAiwgCAK0220MkyHKqlzy1cmrhclxaaheGCQDgtf53UuRJgBk\\n+3iVpuaypuWi0Ir4UfVmLy9z+hwVGW6XhlAevuWj6TTPzSUM97SURUIT8/oGAMpw+1oammcplzzz\\nDc1VktAbraE5r5mpu7JfFkopUtWaT3IKNcdnWrZsEgCAec512BqvbnlNuurybGsbPa8H2zEo8icn\\n0hU6xnNrW9jq9sQc8zzzNnbC1loLrptXubxdglmIKHBzFhcxhslQhBLYqyevFhsbNlJjBbXAIg+C\\nOmm74y8+L0tbRKJ3AgRJIJ9PXuY4iU6IpD//ZW4uN5ub8CwPDycPhSA4zaaCz+ZJU1VVmGRE9pzl\\nMyI/Bl2EZYgtvQXXcsWJnt9D3bH4wfgBKlQydbIVbUdutG5gp7Ujv88cIL5O6kpIs3wmbs7yPc2v\\ng1EyIqzyHPZWvw6VUjjZOyEjNAvY2drBaXIqkymeTmpFBm2loefiQ76oiseasjH3hjdMk5RU4hpO\\nY2n78iTB+HrP9nA8OyahBxiZgp5HIFVKyQSbISL8ua1ixLXSaLRuQRcTVPHRE71GgCZqVrj1xL//\\nVjxZbG9vw3Ec5HmOk5MTRFGEMFw2ZV3NJddBOH6ayMpsyXfpsmZmNWTIYyp0vS4SKxHfjZbXOlOY\\nMm9QQUnjL1P8PFk6221to+220XAClPmTw5iVnePFzefxfP8GxtlYthJ108OyKkX8o+E0AG+xReBc\\nAkA8wTybcsR6sC5baFaCczWd16NsBDtfKEQaGBzHdGY0nAY6XgcdryP5hMUH+HNte23ZXrFfDRfV\\nnL+Yr8kQNAWF4/hY8gf7lYRuiMomafg4jzFIBvAsUuNsOA1sNjfRyBpSIGdVJoM3NqQGyMvs9fHr\\nyIqMVDq1puJbGaz5a+gGXaRlKhuj+vfPZ6BxF1zVup+cgRGRIjbM9m3/TONxuHcIJAAUcOP2DRmo\\n8nUIRSJGLatFVgnzz41/zr5oHZ8am8v4PIFDQ95RMhLYeZzHwiOr10WPG7y1dy2XhotzXpWGJiPU\\nc8R4gIWvoHyeWHhJ1UMpBadxAzo9eSuX1OKZb2hWNzTn4S3fSA1NWqRLjQSvZa/SzDAngotSpRRc\\n20Xf7cuEfFWOkb1SAKAoC5wmpxgn4zPTh9AJ0fE7c9WbIVC2gOrxL59SpcidE3S9rkDK+LlHyQhH\\n0ZEkEIY2zLIZIkSyZXG0g7RMBWealZkoovGU0FIE1cpNLgcpAOHRtLwWul5XCJrGGCRlIrLPbLK2\\nGr7tw2uQqtgwJsWXoiywN9lDXMRoOA10/S7Ww3X0gh4OZgt/FU4oba+NaT5dWvMP4sES/jh0QvT8\\nnhTIAOGwszITyNo4HaM0JRpuA+N0jMPoEFEWwbEcNJ0mTR8NBLvNijerqjeWtmQDlJWZyDzXrwHm\\nNQ2SAQI7WHKtrt8/uzd2sdXYEuhGx1vABllNh5uPusz0ZVO280iUrL7GMbLObmrOC6WUTE75H95q\\n5lUuq/+u312SdU7LFKfJqXgFceNT90Ni7s3qIIDN8Pj7NpvfhnTv36LKHs/jAgC024G3+W1/44Xy\\n12NorbG7u4s7d+4AoHzy8ssvL/2dN1IuYc6HmMQqjbVg7cz9f15UploS4+Ap+npjHU2niaxaGADy\\n49dziTGkVslyvfVmhvknWmvE6hB22YeuHv2aVkNZJewwhme76Pht7LR3ACzuw/3pvtzDWZGJf9Y4\\nHcOxHIFCpVW6OF/MwscGoEKd791VqeACdA7x5sLVrhDUoyJCYQqEdoiG2ziXN+hYDtbDdYROiEE8\\nwCghON8oGWEv30PDpVzS9broBT3JL1lB+c6xHTHyZJXPwCHI2DSbLm1QekEPGhrJ3G9ks7GJvMwx\\nySYCJWQBiFzliMsYeZ7DgQPP8UTAgPmrR9GRKFWuDri4WWGl1FU7AR5qzfKZiAnwkG4pl+zuout1\\nBdbGZy4AOZfbbhulKWXYB1DzNEyGGCXkXcZ5lK+Npa29IcuKYbzYdAzTIbreo7c8vKWq5xJ+Ds4l\\ndVVUrsuMoeaunkd4IMbnOosYrcLW+JpkiONbuWQ5nvmGptfrIQxDRFEk5P9er7f0d94oSehpmhl2\\nu69f/KzgwTfaKiyNYTmcvJjrwDdgZQh+1fbaK4cWoBsTVHETKK4OGah0gma7Qtu/feY92ZaNfqOP\\nfqOPJE8wTIeUEHNye57kE0zTKbIyI8U3J0DTaSLwApE3zCpKNnmZY1bOpIFQUDDKkBO248O3fCij\\ncG90T3DFrKzGB59v+QLXW436hC1MQ7w2eE2KdSaENtwGhoMhbMsWx2cYIHeoQTOGXo+jHQzToTQt\\nDPfrB320fWq2+M+YPFqZamnjkdtzU09D3KCsIhlNS1tIygSvDl5F6IRC+i+qQuQkV4NhVz2/J2ac\\n9WvSGCMNFbsy371/l04SnyBnrLr2Qu8FpGWKSTZZ2vxwkcSOyWmZChmfp6l3h3flNZ83ZQuchWw3\\nf+ejdNHUsPpb/R9uZlkGnZu38yZwdVlnJgGzYS039vXPpA6tqUfohEu8N4AkMr2dv4P08E8fa7qm\\ng014m9/6zEhsvhnj1q1bb4qGJi1SnManS81MXbnvUb87TIZLAw1LW+I6DwC+pqK1rh7J8Br2HeHt\\nLADapGstGwG555RB4Z7AznqPxc3UdoFWB/CdsxAhFnTph32kRUqDkngg8DmGXp3Gp6gqEjFoeS2E\\nNgkGsPS6Vpqc2+dNmaNpUMZ+ZyxHbGkLh7NDaTgaLsHbjCGYnWu7mGZTgqmec+Yy1Dp0QmnCjDGY\\nplNRSiyiQv6Oa7kYp+Olz5wHeEmeSLFfmpIMmLUWhUmWok4KGt5xQd4P+mQQXZIyZ2EK+IqU4Cxl\\niVXAF46/gNAO0fbbyLxMeJ3nDf/qkuGsCldvgIFlSJpne7jz+h3xM9vZ3YFSlJ83GhuSe+qbn8JQ\\n3mRTUH7/3KBOsynuj+/Ds7wznjwcjnbQ8loiFFBV1VJTw0POM/lkDkVPS8olURqdGQRzsKxzaUoZ\\nKvLgcvWaYInz1cfiJvytXHJxPFvv5pxQSuHWrVv44he/CICS0BuxoWGVGQ5LW1ciTPM0apWI2PJa\\nQqRbDebcWMZCkidieFgv7FgaVwwe54V0ZSrkVY4KFXQwBQoHRWpfmoz+9Wc+hVdeeQnveseLV5oG\\n2JYtjRzDqhqmgcBaOF5HRYRhOoRKSUjAsz10nGXVK3Y95tef5AlG8QgTNUGFCjB00AySASUsyyEX\\n3qAnXAj2XDiP1MhFbcttyeFpKUrWnz/6PAI7QDcg4vvN9k1UpsKD8QMkZQJb2XI4s2wkS0dzA8mK\\naYFNeHXeYAh8ZO5F1PPp9WZVhtzk8JUPBWq6PJs4SVEeyUYjsAOZ/vHW4LxrhLH09d+vX2fcfHzp\\n6EtAH0AObG5vwlJUUNjaJniA1yKH6oyaUjYIq/NaDAyKcnl7mBR0bTbdJtpe+0wyanpN8gyam8Ky\\n0MN6uL4k7MFbvKiMlqAoF15/802gZ3vYam7JBJOvqePoWCbdPEhYfUzPIgLtRQWk0ja8rfegjA5Q\\nTO5emoz+7z/4U7z7b/89fMPz3/5MTdPejPEoCPMbJZcM4sFSM7Merj9STtcYs+TLxBE64YUct/pE\\nnj1QVu8FrTQabkNyiYYWyGwFMoku3FOoyoPOQ1jmYhf0f/0Hn0K77eKH/t57r3Qv8FDP1S4G8UAm\\n88xDqCpSaRskAwwxJCXJ+VaFIcQAcSs1tBS4aZkuqT0mRQLHcmQAx0IILa+FWTZDWtAZ1fJaaLln\\n4XqWtkTBtAhJeTSvqJm5N7wH3/EF1cBbh/vj+wJNS8sUx/ExNsNNgTnx5t3WNgbJANNsKr97Gp9i\\nP95fOs+11uh7fdxq38JRfIT74/uY5TMoTUgP3vRPsyn2JnvYm+xJvuqHfew0dy4873iY2nSbsnmo\\nPzdDq7784MtAB0AJ7NzYEaEgflxWZo3yiEQVTLm0vS9NiaIsBMHBkeQJRskIgROg63fPCN74Ng0X\\nZ/lsafi1Hq4vvSeGvk+zqcAvLwtWpusZ2KUAACAASURBVOUNDIClpo43NazIx1Lpq9fGZaqBj5tL\\nwvWX8P0/9EPPZC555hsagJIQNzT37t3DK6+8svTzv+kkxJMWDiYhPuqCY9jR6lam43UuncQxKXGc\\njmUSxdM23gqt/j6riLFUcWUqDJMhTpN9xEUMGx5C1YMFBxoWoAw+9an/C//kn/xPeO2rX8FP/tc/\\niU/82idgq/MvOdZvXzUoa3nkWRJlEU6TU8zSGQpToOW00HYXa3wm2fF0jAUHVt83Q7b2p/sifJCW\\nqRxoPFGKsxixWjSYjkXr/YbToI2LIsJpnMcInIAEBMwmBskAe9M9UZJhHwBLWcRrsj242hWpSlYB\\nC50Qtzq3RFWOIysyDOIBJTftLkkzB26Aht3Aw8lDnMan1Ej4fTzfe15eq9YaGTIEOhADT4bgHUfH\\n8GwPPb+3pHi0GgzRa3kt5CXhlmc5KfTEeYyHJw+Jk2UBft9HVZERn6OdZZOwOZQjzuIzRRNACVWD\\npLHFVXo+lWOhhfVwXbY2PKmqw88MDE7iE4JmzNVjHpV0hDvD/KqViRnLiXORyI3pKgkagEAKr8pR\\nsBvbsBvbqPIpyulDmDKBqQoobeN//+S/xC/+z5/AV+/s4R/+wwP8+q+/55GP+VZ8beNRIjNvhFwy\\nSBbGhPXhwmXB0sX1e0Urmuw/6lrmAq80pUjy8naCBwv1JoeHSfwcDadBvjfVFDMcQMOBjw40bCho\\nAAZ/+mefw0c++jN47atfwbe8+1vw3vd9z4WvS7ZE+bLiWNMjz5S0SIW3l5scDaeBploM/8qKSPYM\\nqXJsBzBYyifGGKyH64jzGHcGd8isOqVimo2WJ2pCZ4R24No0jJlkE0EFdPwOifRoWwRaWIim43UQ\\nFzGOoiPaRGcRideAtv9plYpgy+HsEJnK0PW7GKUjBHaA211SzqxvjfMqx4PxA6RFitAJsRasSQPG\\nzVZe5jhOjpEWKdaDdby993YRSuBGout35TvnnH04O8SXT76M7eY2dtu7F8J/6w1w/XviPHFv7x6g\\nAWigu91FVmRiHroq9FL3S6rXQPwcrnZlW1O/Vo+jYzTdJtbDdbS81hJcLC1SjNKRPN4gGaDhNER4\\n4VH8TObzchNzEbqgLlU9y2ZLXK76Y7HB7aPiUbnkD//N5/Df/Lf/GF+9s4dv//Zvx3t/+D9/5GO+\\nGeProqF5Iychlu/lcCznQi8QjlV8M0cdp39RTLMpRsnozI3JkyxeHa8qRXGkRYpxOsYknRDJbT59\\nq6oKCU5hK2rGQifE7s0eXrvzFcAC/vkn/zk+8o8/gm6nK4UjT7pWm5j6c7EwgG3Z2G3tAi2Irv40\\nn6IsS1gWKYXwAcLqXC23JZsPdoxm6dAbrRuoTIWT6ISefw55KqoC98d0PfiOj5bTksMpL3NaSxuQ\\nAk6NEL4WrBHxsYzRD/oYp2NUqLAWrNEkL5uRE3dC8Kuuv1A/ci1XPF46fkemnaNkRO9xXmSkSEXu\\nuN1uk8TldE88FACQAg0UqcFogpkopQRqwUmev9O0SLE/3cfh7FAmsfz9XURa7AXUAO1P9nEcHePg\\n5ABwAChgfWMd9yf0+SmlZNrJ2xXGm3f9rrwmJntasEQVSEMDCmca09PkFEmZoOf3EGia5AYOuVCz\\nMWtZlQINOw+ueZWksxq+7aMf9nEwPRDpWoC2cw23AUtR03ce9OIqoZ0mdO+lpT+79c4BvnrnfwAA\\n/OZv/iY+/vGPo9O5Hu+dt+LJ4o28oYnyCMNkwQVgKNFlXAAebtVFaIDFhv4yuDNDNldziVYaoRsK\\n8ZkHSXUoGgDx3EqLVDYgzbl8bGUipCYXL6e3v3MHDx7eAyzgzz//5/hXf/Sv8K3f/K1idMmiL6tN\\nDAfL5/NQ5UbrBnZbu0iK/5+9N4+S/a7qRT+/eaipq6urT3efIYdcMChDGCIEkISleFGBXIercJE4\\nXRAwQZzQ53ItHNbSp7CuwgUVwxOR4flAH2+h6PWGXB/JBXkQZRLkEsKQM3dXV1fX8Jun98euvetX\\n1VWd7nNOBjxnZ52VpE9X1a9+w3d/996fIRRFsyRLpkRkuHFnKAaablPgvyx1zJ49q9VVrFRXsOPv\\niFBMmqcwDRM74Q42R5sieVy1qiK77CUeIR/ynNTXxmpWFbOCltvCKB5BgSLmn47hwEs8fKP3DVHw\\nDNIAK+7KFITM1m14sYd2pY2KWREJ5zL0N8oolzSdJo7Wj04JEgRJgCSjcx+kgQjLsJRwPyJ/MUuz\\nMEpGxE8tILnz7PAsGlYDq5VVUWybdw+WFfVG0Qhb3hbObp0FTAAK0FydcFBZgY3X7PLrHd0R2CNP\\n+DVFg2VYqFp0P2V5hgLF1HH0I9pDsbEpAJGZ7ngdhFmINEvFjmFenuA9AO9pDgLp5ONm6W6+X1nR\\njAuyMqfmMDEvlzz5Wes4c/42AMC9996LT33qU3jGM/7tNciuiIJmvyQUhiG2t7cBAJqm4ciRh0/x\\n4WKKmTCl0Wm548Wbt/3InpzsZgsHfu0sPE1RFOjKhDS9G+6iG3RFFYwjLygR1e06GlZD5D6zIsNN\\nz7kJ1113Hb785S/D93184AMfwE/+1E+K4zyP/jmBcIEjD/iC8+GaZC5pqAbSLMUwIa5NWTmrH/Yx\\nCMm0s27W0bSbsHRLOjRsXMkGY1EayWKZZqm4M++EOxNHeJX+jJIRwdV0KmaqRlUMJLnAWauuoWJU\\nZITc8TrY9reR5AnWa+uwdRtNpynfE6AO2k6wI9LOfG4zTLyFGIrHakKjeCSdo4bdwFp1DZpKspuW\\nbqEX9LBaXcWys4xlZ1kI9Wx6yQmAfQ04wTM/hvHdBaZ5V7shcZySJMFga0ATmgJoLbfkOhVFIeRP\\nXdWpEzpWBdJVnYj/ikZTs3T6WeDggrosL+7FHnaDXeEqMXyENfrL9wAr1R026cxGlmey6Ss/ezxd\\nW62uXvYR/k033YQnPOEJ+OIXvwjP8/Dud78br33tay/rZ1yNw8WjtTnmxZ7AIoGDFTNJlsi6xaEq\\nKvEDjcWwL57SlrkMAGTyMNsMYeUwS7fQQAOjiAwruenDkSNHkAWwNAuO6aBttqEpmph1vuhFL8IH\\nP/hBAFTgP/nJT0Y36CIaUs4wVEO6/yztH2WRwIln+QcANUPqdp1yyZhfUi7SkjwR5SxLJ1Nnnman\\neYrT/dPi0QMHMrVhuFiWZ8iM8ZoZ7aLrd+lYDIIQJWkCKLSZZWhtmqXoFl3xLWlX2kABeKlH+S4a\\nYtvfhpd4WHFJpGG1sSqTL56mXBhdQN0k3zJN0SRf8saeJ/Je4qFqkLkzm1fyVF5XdZl450Uugjcr\\n7gqyPMMwpmM5OzgrDVbeL4ySEcHrxt+tYTVQtSh/lSctPCUCgM0Lm2QBkANrR9bkOpX98hRFmfBh\\nx3CtulofCxblIgAxG2UoGk8OoyzCqT7tCV19YpSqqRqyZJIbOZeU4chlr77DBEMU43QaPZDkCYzC\\nOJAgwWGj3W7jJS95Cd797ncDAP7wD//w32RBoxQXo0n3TRZ/9md/hp/6qZ8CAPzoj/4o3vve98rf\\nffWrX8VjH/tYAFT47OcAfTmjXJkD1BlghZR5kRe5EAHLsR++GSAIwjyOjaZqtMDsM9GRwmCsplX+\\nORPmuaM/28lj/f533PEOvPZ1rwVs4OR1J/GhD39o6vOyPBNiIJMI62Z9D2elPKqe17lgUjgXS7PB\\nnSt+H+40cWJSoMA1XQzCwVQHHphA1aKMiLZlR3jHcITox5wbJtVnRQY/9rHpb+L04DSimDbsq9VV\\nnGicwBNWn0Bdt9gTCBcXFbwx4M/XNV027vyzU4NTGIRE8NQVHWv1NdRN2ox0vM5EPMBuYL22vuec\\nMGywF/QwCAdIikQ4LYqiCIkRIN6Na7hSpDFk7PTp0/gPL/oPQABsbGzgE5/8xJQaEJPzGZPMhnVc\\nLJWvY5RGc7vFRVHASz34sT/XS8bUTSxZSwQVTAIpoJj/dKR65KJdoLnQ82Jv4o4+Pm+6okuCtnVb\\nuEyXM97+9rfjNa95DQDguuuuw5e+9KV/k9jnb5b4/Oc/j+uvvx4AXQ+GMnMsLS2h36fCYmtrC+12\\n+yE/plE8Ej8NgDbHLbe17z0/jIZTKoEAZMO+aDPF/InZXMLeNK7hLvzMsmpTeRPHk5s4i+WZnZdL\\nbN3GFz77Bdx0802ADRh1Ax/+7x9Gc6k5/RlpJJvZukVNtnlS80zKnudmz/A7nljMbpE0RYNrulAK\\nBZpGzZJBOBAp/izPUDWr2I120fE6e85znMeIE8onWTFZzwzVgKVasAxLcrNrkslxAfIH2/a28UD/\\nAfIyy1JUzSrWa+u4fu16NOwG/MQnA9WxFL+f+nA0R/xVmAdblvAHxjL4bFBdKFBURdZqLvCYl7le\\nXd9jPl4UBTpeB2eHZ9ENugiTEBlIXMFSKS+Wcwk3EtlQmuMZ3/4MjLp0vj73+c+h0qhIcckw47J5\\nMRexs/dNlmcybZoVagmSQPhP7C3Goau6KH4meYJBNBBza0sjTuXFNMQ45kHkojQCFEjBzR42l3ud\\nv/fee6WIsSwLZ86cwcrKymX9jEc6roiC5q677sJ3f/d3AwCe+9zn4p577pG/u/vuu/G85z0PAPDs\\nZz8bH//4xx/y45n1+3iwYoZxneVEwAXJInwlS+zOdr25A7dfEeQnPvphX5S7ysEStAyNKssglhcO\\nXlC6/S6e+axnwht4QA689/98L2648QbxD1EVlQiHmj1dwIxVT+pWHTWzBtc8GJSHcbm7wS781J86\\nz3FKI3pDI24HGz7qqo52pT21IHIhyOS/ICE8M3fUWPmEryULJSxbBKdyTXrfKI3Q8TrY8raw7W9D\\nVckc7ZrGNWg5LWzUN9C0m9gNd4V7w2FoBtar63KtuJuV5uT6zaRQAHjM0mNwrHEMdasu6mS9YIKl\\nX3aXsWwvQ1Wnu2NpnhIZMaHXBGkgppycMMobnGFESnq2QWZg9/3Lfbj1B24FcuDGZ96I/3n3/5xy\\nDWf55nnLDI/eeWpTvnd2gh3qvvIGZfzyNKcuGws6cOgaTYCOVI/A0RyaovHfqfqhXaB5uiSQuFLY\\nuo2aWSMIXykZH2QjedgYjUY4evQoBgPasH7kIx/B85///Mv2/lfjcNHr9bC8vAyAjDNHo5GsW8Ph\\nEPU68fosy0IQBA958TmMJsaIwESlcNE9OCvtD0xUGxfBJXlzPK9RxAIj+32eeIzNWQOYm8gTlTKn\\ngoO5EmEa4kf+04/gXz/3r0AK/PIv/zJ+4hU/gUE8gUAv4sHZuo26TZP6g4jt8Oey0MEgGkwVcjzd\\nYosA5iHOI5L7sY8L3gX0gp5An/n9siKTrj+rj6ZZihw5bM3GsrsseT7JaIO97W3j7PAssiLDsruM\\n9eo62m4ba9U1tNyWwNLKPliaouFY45hM7dI8FVntNEsxiAfikbbsLONI5QiqZpVkndNAzi9f8yNV\\n8kebldPnY+z6XYGFh0koa315ned7omrR9MbIDFz/LdcDOTWpRoORQI7LHNtFoi6WZu3hnJRNTIMk\\nQJxP7kPeo3AxzSIQLH/ddttYspem1GNVRUXTaR4IplyOOIunUCQcbBGRF/nU/cVNgsuZSwDgGc94\\nBu69914AwO/+7u/iV37lVy7r+z/SccVBzmZhAg8nRIA3SeVkYunWwkSySHXGMZw9Usoc3F2aneQo\\nioKaWVuIi+YJUD/s74ESAGNomtXYg4dl7wELFuI0pkWsVLBZtoUf/IEfxHve9x5AB+547x144g1P\\nFHgUe82w8ZSu6jLp4KTAON2DjHnLuFyBV0V9IlWONfj5v6M0gqEaON44jjiLpyY/7FzMC//ZwVm0\\n3Ta5/Y6PeRSNYGmWkO+bdlM4O2zwVr6GukZmcoZqyGb4gf4D0DUdK86KKIoBY7lfi8zDGL7AxM1h\\nOETX78pme8lZEuxtVmQE0xubbHIhvBPuoGE14OjOXEMzxyAlNzdzsVwsk7nr2AE7z3NywU79qS6Z\\noijYurBFq0gMHN84PrXQcwdUoGfx9KaIpx/cwWT4IZuZ1c06fMVHHucizzmr988dNe4Y7oa7GKl0\\nXRQokgwXuUDPiyAJ9kwlAdosltXWmk4TWqTJ8Sd5go7XORAJ+6BRrVbx4z/+43jrW98KAHjb2952\\ntaB5BGNpaQnVahWj0Qi+72NnZwetFsEsz549K7/3cJhqMjyKw9RM4czNi3nS/szJmzeVyYtcmhyz\\nwaIj815X5szMI1GzguTsOsRw3bpVl4bcbC576Utfijf86xsAB/izD/0ZbnnZLVhyl7BWWUNaTG96\\nWWGKixwUoHU5Goip5bwJDQfzQytmRfLATkA8GW4WMS8ozmLsRrtYq64JNImvg2u6uNa8FkmdiiCW\\nEU7yRJSywjSUSZRqqMKnYZ5kkATUIBtPuXRNR1WvwlAN5HlOXEZvkzbc46KNieysnhamIfzEFyhZ\\n02miklZwZnhGJmcM2yqrpFmaRQ2+YBdpkaJX9NDxO+JHNismU7NqZBg65iWlWYphTIW3l3gCg9M1\\nHbqiS37onu0CNoAQOLZxbKooZKGkqlmV4nbWiJshaUVYyASKJ2ZcNOZFjqSgvQkLIAEER8uLHBVr\\nYhPgJXTvu7orfOG8yLET7Ex52+wX5Sbk7L3FObf8M4HtgYw+5+XqS4nbbrsNP/ETPwEA+OM//mP8\\n0i/9EjTt8sLbHsm44gqaM2fOCJGc/5/joSxo2KuifGMzoXFeLFKd4cnIbHDnbRauA9ACswhKwNOf\\ncgemHK7hCjdmXqLkLkeZ2G9qprjeB2mA7/uP34f3fOA9QAbcc9c92O3sorJRQZRF0t1iPfasyKZI\\n6/I5Y/MsP/GFIMh/Fj3wzA+qW3WCCKk6htFQlGA4sXPBwRKU7EsDTFS2WOmKEwTjiblDteKuQNd0\\nxCkdu6EZWLZJEMBUTeR6jiV9CbZBG/xNb5OSxhjb3PW7WHVXsewukxJYSougpVMyadpNVK0q8iLH\\npr9Jm/7xIuvqdG12gh1seVtAQYVyRSfDTS4WB9EAmqJJgVRO5qqiwjAM+Qwmz3JSPTc8ByiQ9+Ki\\n+tyFc5SEbKB6vIrzw/Pid8PXRVEmxpJlDo+f+gI3LG+y2G9BvHPGG4oojZAhg6mactzcPc7STEb2\\n5ekTwyTSPJVEtOh+ibN4TycWoO7mIl5B3aoLfJHv021/WzhblyN+5md+Rgqav/mbv8GpU6emuBxX\\n4+ELRVFw/PhxfOlLXwJADTIuaB7O5tjsBN3SCOq6aI2ehR1zg2seMoD9nebBdSzNWugNxdPxeWaA\\nAARStojsXH49IwsaVgOu7ooQzdOf+3TUV+sY7AzQOdXBp/6/T+F5Nz8PvawnxdCJxgnhaQRpsAel\\nwNBeLgY5D+8njcsFwJK9hJ2AeJWDeICO1xF+CYvGfG3na8TztJfEUoDfQ1d1rFXXZGpQXoPTPEWc\\nxrAN2sTmRY5hNJR8wvyPvMjRclswVXKS7wQdDEOa0pmaiY7RQdttY6WygobdEPEAXkPDNJRJclqk\\nBCOOA8RJDKVQBL69E+ygKApZh5m/yz49mqJhN9yFqZlTUtRswlqzaohTaoytVlelWOp4HeGW5iAP\\nHddw8cWtLwIOAAdYum4J9+/cj4bV2MMPZj4WT+5YIS5OY5l6cWgKyWHz5IZfx02z8v6B92hBElCx\\nNT7eUTKSqVnDaogM9n5FDT9Ds5zlMnR+3j3m6I7IOhcgA04WqLgc8ZKXvAS/+Iu/iG63iwceeAB/\\n+7d/i1tuueWyvPejIa6IgsZ1XbRaLXS7XaRpis3NTWxsbACYntg8VEnoMMXMYVVnOFnN4nQBiNfI\\nbPLh42GVj9lgWNoi+ed5RQwwSUi8STU0Aw27gec86Tl4ztOeg49/guB8f/EXf4Ff+5Vfm8K+cjfd\\n1mwyySpxa2Y7MWWCIFDyDVnw4POYt+W2ZEHhCU3NqgGY4MPZ+bliVGDrtkxZmCehKRriPBY/k5pZ\\nw2plVYqdoiiwZC0hNVPh3dSVOtycuE6c/Lp+FwoUuQajhMzeBvEAa9U1UTpTY+oKneqfIg3+LMWW\\nt4VhNISu6ThWPyabklnzyliJiWCoaKLkFmbhVEeWIV+zm3wegccZuWszlAWAGIV6sYcLFy7Ia46s\\nHZFOHI/Mq2ZVihs2s4yyiKAmhT1XUpmNNoMswJK1hGVneeo78hSQZcbrVl2Sf5In5BukmwL5O90/\\nLUU9J6Ly9y2bzc0+BzWztrCY55gn67wT7IiZ3aXG4x//eDz/+c/HXXfdhTzP8fa3vx2/8zu/c8nv\\nezUuLk6cOCEFzalTp/CUpzwFwMOTSwCaQpan9vvxtxZJ+y/KC9w0mi1kTM2c8gMpB5smzlMXAyAb\\nygcrgsqFB3NueM3QVA2r1VWsVdfw0u97Ke545x2AArz//3o//v13/nuZ6msqTUyZP8fre5AEwqmY\\nhf3w5/fQEwgQT7L3SP+jQJInWK2uwgnJ3DktUvixLwI2SZ6IKA1PR+pWXfIVw8XrZl1EWJI8Ef6l\\npmoivMBcQ262qFCh5ip0RZe1aSfcQZEXMrEbJVSsDeIBNmobqBgV+KmPsKCN8pa3Ba2noW7SJMxP\\nfaCgSZKpUZFUziU8qWepZ75H4iwWHkycxZIjWKK6fI2ZsxKn8RR3iSdRg3iAzc1Nec2RI0cwiAYY\\nRAOcHpyWxip7yHAeibOYSP4Yy4Nj+tpmRSbFE++HeD1nSCEL8CiKIv59LGajQaNcopHC3dnhWbg6\\nSW7PK2qKophbRAMTxMJ+uYThbuVmQpRFKFBMFXUXG7Zt4xWveAV+7/d+DwBN/K8WNN+EceLECXS7\\nXQCUhLigeai7alyglDduPOqejXmqM4qiEFRoZmPEpoazEAKANqlL9tKe5MP41nlwGoC6b6x4Nq9w\\nmlfEsGkh/5wNuGYhca/8yVfi4//j40AG/OWf/iV++3/7bVhGCes6VtHirrqmaqIGUxSURDi5zR47\\nv648vWF4mqqokvy5c7jkkGRyxawI1I5H7gUILuHFHnbCHfKmGSdyTdGgazps1ZYEyqaas0Uov65h\\nNUhIIE/IdBMFVKjEaXGXxdOFlVm6fle6fpZhIUoiUcHhQojhFE23SfjfsRodOzwzdE/I+JomTtdR\\nFk2pueRFjmE8hKM7UxMFljbuBb2pe7dqVsmbQTWw6q6if6oPBABMYG1tokqTFRl6QY88ElLakPDU\\nhe997pgVRSESmTlyGKohm5+8IDjFbrgrvgtl2WfuYPL0kp+3XtCTpoECRcQteErUdttQFEUSbTnY\\n62Hec7AobN3GiruCbtAVo9BeSEZ+vKm6lLj99ttx1113AQDe8Y534A1veANs++DO6lfj8sUiCPPD\\nkUtYwpfD0ckocHaTlOUZ+lF/z8aKn9/Z92Whjz3u5GNvrtnNFCs1LTIXLHtozD5Di4qY2YaYruqw\\ndXtPw+UVP/YKvOO/vgNFUuCTf/9J9M/3cfLak5NjG5s0MoyLC6plZxmqqwoxe57EM0PLhtFQml8M\\nT+MJf17klPfyGGvVNTKqHsOg+frwJJthXl/f/TpM1RSiP0PuDI1c6hmVwHxNbtgAABSaVHExwRv0\\nOI+RxSRIc7xxXLiTLBvNyqSORo2lIA1ErtlQDTFy5kYgr9GmZiLXcprqFCnlEIXOv6EZaBktXGNc\\nAz/1kRWZrOc5clJEm1k7y2uzH08KcZ7Y2bqNjfoG8s0cGAKwgdXV1al7rR/20fE6iPOYVFXHPGAu\\nIllQqIIK8VnHa7CpTqtacnHGxUXFrIhvkJ/4oqjJiAIv9jCMhlJ81a062SnEI/IDSiMSChjn1nnT\\nSZa8PmguYdh8WeI8zmLkRb7QK+4w8epXvxpvetObkOc5PvKRj+DLX/4yrrvuukt+30dDXDEFzfHj\\nx/GZz3wGACWhG2+8EcBDm4SYI1Be8GeJcRy8OSvHPNUZ3oDPdt0A2lTNM0I7DMm/HIzt5QWagzX9\\nWS7Y1E1x4C0/tJyQbN3Gy3/g5XjDkTfg1KlT2Nnawd996O/wsh992VxBgXnFTdlsNMuzqe7MftOb\\nvMiRZil0VZcNLTDhIQEEG2IZZz/1MQgH2A62xRyOO2MVqyKTm/XaOpbsJSRZgi1vayoxq4oqmOUy\\nB8o0TTSshpAooQAtu4VRQhr8u+EuoI8x6HmMPKEJUJJTt27L2yJIVBKj4TZo4gQFQRaIZwtPkbio\\n4aJuJ9gRHlJWZOIPAUybVzKuN8szdIOuwMviLBYCMEB8kTRPce7MOcAH4APfds23wdIscaUuB0tm\\n9sKeqIMt2UtYspam+FIMIZsVzmDFvX7YJzjdWAK6btWlC80+Qywk4SUeun4Xpm5K1403K6f7p9Fy\\nWrCN6XueFXguBrdsaAbabhvdoCtNiWE8RFZkC43mDhovetGLcOLECZw6dQrb29v4y7/8S9x6660X\\n/X5X4+KjDPcrq2I+lLmkKKhALk8RuXE1G8wBm5X2n9fkYlXAeWTlMlyK4zAk/3IsKmJmG2L8+ppZ\\n28PV5CJg7fFruOW7b8GHPvQhAMD73/l+/Jc/+C9iUF3mgJaLG4Cadrz2L9lLU2pYs4TzoiAeQ5AE\\nQDDhwNq6DT/xJR/pqi7T/6bTFA8xbnLxteCGIkPjGN5ct+touS1keYZNbxOjaDR1bitGRSbig4DU\\nKC3NwpK1JOc2yzOsOCtYdpax4++gE3TEeiHOid9TN4kPsxvtYjfdRZjQtaiYFWzUN+AarnjxmPpY\\nqEihe4S/p6qoCJIA3bCLqlEVNS4+5wUKEYLh6TxAhUSBAi23JXYVvPbyPXH63GlgBGAEPHH9iWg6\\nTWx71MyavT+3/W1s+9s0oTfp/LWcFlzTleKSp3wso12+J9hcmtVPueBNsoSOb7x/YMizn9C+oECB\\nmlmTa+vFHja9Tay6q3saBTztuxg+paIo4q/DuYT5OA825XmwOHnyJF70ohfhr//6rwEAf/RHf4S3\\nvOUtF/1+j6a4YgqaRf4BD1USe9jFPwAAIABJREFU4jFr+UGcV8wcVHWmrNaxR7Z2bJBVLkh4Iz6I\\nBoci+c8rYsqyxQy1MnVTOk3lIoa5Gew1Uo7XvOY1+NVf/VUANOq89dZbRVCAu17sACzfu1Tc8HEz\\n1pQ9b8rQtPL0pigKjCIizg/iAWn0jzt27cpETpW7iXbVJuWXJEDVqAocQFVUKJoiksrr1XUxpEyz\\nVGBPfOymSuovW94WzgzOIEjp/dIsFRO1qlmVpO+YDtqVNqnhjC5gGA8R57EsrsvuMkzVJEfhLEVF\\nr6DttmFoBgoUJMEajWBoxgR6p9LfxTl1OlmIIExDgX9w8i0b3XmxBw/UxSovmquVVdi6TTyWMf44\\nzmOc6pwCagAKMkIzNRNHKkfQcihxlUnFXGCxpw8XUVycMHSLkz0b93nx9IYrSiMhDTMxlQUmygUk\\nd9n8xEc/6iPPx0Z+Y7nULW8LR6p0rPyZl4pVZpUjVjQCqKHA6kEXm4g0TZv7/FyNhz8e7glNURTY\\nCXamVKsqRgUNe9pkdZHhMpsMl++9MA3hxd6eaTcbO5ZzycWS/BcVMbMNMS5iZpt35YbY7HN52223\\nSUHzrne9C7/927+NWrWGmlWTomt2IwtgqtnFx8yw2/IGeLaJB5BrfJIn2PbITwxVyt/H6hMBiLKQ\\nQJiEODc6R/46SQA/pjW1QEG81XiIJXtpim+hKiqOVI8I5IxOMG3gzw/PE/xXNVEzagS51cZ+YSUV\\n0GONYzhaP4odfwe9sCe5ZBSPULfqOF4/jm1vGwNlIGgRXl8ZalXOJZZu0cQv7KPAeNKfRohTgpkt\\nOUtYtpcxSiaS3tx4HUUj4meWrh/vVcrT8TiL8bWtrwEtACmwvL4MW7NxrH4M69V1DOOhIFKyPBMb\\nA1MlDkw/ogk8Q4u5eOf7h/c1YRpO3fNZkcl35r0LQ5jLss+MLmAekaqo8FOa6GRRhp7fw0plBW23\\njbpd35ePddDgCSEbjPPxBmmwr5jFQeL222+Xgoafn2q1+iCvevTHFSHbDABvfOMbRaLuda97Hd78\\n5jcjjmNYFhUYqqoiDEMYxqWTr+YVM/PG9otUZ8qutNwVmhUIACZY6HLhE6WRcGr2I/mXyaDzihgm\\n3PEkpCgKgZOVixhOZjw63u8h63Q6OHbsGOKYFr1PfepT+PZv//a5529ecTMbZVgVJxTu+MVZjH7Y\\nl+8wjIbSUeNplKEaAk/TVR1+4mPbp8lMnufoBB3keS6cGUVRsOquQlVU9KM+QZ1Ao2j2QrENG1ES\\n4Rv9b+D88DxG8QiGaqBu1bHsLhNG16hOqeAAE7+WIie/gVFC14+dos8Pz8txVMwK2pW2wN34vipL\\nUgJUvBmqAShUGCKnhKWqlGCOuEewXl8XAi3LhjJsylDJjK7ltuAYjii88QQljEI84dueQB+mAvd9\\n6T5UrIkRKhum6qpOxVnqz91ElY+XeTdVszr1DDCcYlbxr3z+uDBSFVV4NvzMRBnJZ3e8DkbJSO5j\\nXdOxUd1Au9JG025eFs4LH3M/6k8dr6EagpG/mDjo83M1Htr4h3/4B3zXd30XAOA5z3kOPvaxjwEA\\nrr/+enz+858HQJ4PN9xwwyV/VlEU6AbdKWgUTybLMc9wWVM1LNlLU3mHmwTzVJd4+szPL0/C9yP5\\n8zSGXzOviJnXEOPNpqVZe5TOFjXEypHnOb71W78V9913HwBSbHr1q1+95/fKUOlFHB/+3FkFyHJh\\n1At62I12pQHZtEm6l4shNu50DAeWRlNwniyw0mWY0HkJM9pUu7ornJ+yMSjvAXhicnpwGg/sPoB+\\n1IdSkF9azaqRmbXRgKmbU7leVVSBiaV5ijCn66dBQ5RFVCgVlAuijPKJozvIkaNqVGHqpuSD2evN\\n/BpW82TD44bZwEZ9Q/IoN714DTY0Q5pGrB4aZzFG0Qgdv4M4i/EjL/kR3H/f/QCAD/zFB/Cspz1L\\nrgU3w1jemxU897umPMGchewnWSI8l3l7JG56OjpNVxg2yHmLi7stb0uMUhmS3nJbWHFX0HSae8zK\\nLyV4T1M+xktRQDvo8/PNFlf0hObcuXPys7W1tctSzLCCSjmx8IJX/p15ZpdMSOPwYm8PpwaYwAe4\\nKClPb8pdPI55JP95RQwnMOaqAKQHX7NqU0UM40kXmVwuina7jZe+9KVTbrXvete75h4vL177FTfz\\nJjesmGJpFvKcNuXD0ZC4FDMKIyyJ7CWemG2ZmglN0dCLeuT/AkXcpm3NRjfsout3p7p3hmag6TSR\\nZZlA4pIsoYJp7LHTsBukhDaWPdZUTRKooU3LULcqLfixj47fwSgayXWNsxir7ioe23osamYNaZHK\\n9TI0AyvGisDwZGo1NpnjTcVuuEvnRTPQD/rYDXdFZjMtUuz6u9T90gySB1V17AQ70EJtavG3NRvn\\nt89Pru1KG7quC7Fy1mTPMRzUUZ8qTmbdxgtMSMlb3hYszZLihjtkWU5qd7MGf+WJpKkRxGytQmpC\\n54bnpOu4Ud/AKBrhgkdiBq7hIkwm0EAmWO/nC3WQUBSFxBcUTXxCkjzBtr+NZWf5orp3B31+rsZD\\nGw/XhIY5c+VnpGbWpqAti6T9Zw2XuUM/O7FgvljZyK8MAZuNsillmefGkC0uYuY1xAyN+DjlIqY8\\n3ZnHt1kUqqritttuw+te9zoA9Cy86lWv2pOLWJqXhWbKMsvlmBVA4bWZYVM8FTg/Oo+aWZN8w5Cq\\nJEsEUsabdc41URahahLENkoj8fnqBT1sDbamzrOmaFh2lwliq5LkfpEXaNpNWcNdw0W70iZolaog\\nAxVH7Kk2ew6iNMIoGgl8iZVE63YdaxXiPabFRMQmzVM07eZU7i3nWgUK/MQXERZDM2h6kgxRNapy\\n33WDLlCQR1iURuhmXfiJTxYDmBwjc4O2LmzJz1qrBMVuOS0qHrXJVtUxHDTsBo7juMDpZ7llACSX\\nnBueE3lyNiytW3UU5sTsdcpIuwRTZEjakr2EJE+wE+zI1GmtuoYlawlnR2cRpiFqZk32EVFGlhBN\\n5+C+R/sFQ8enZJ3Hk5qLgbQd9Pn5ZosrZkLz8Y9/HN/xHd8BALjhhhtw77334mMf+xie+9znAiDD\\noU9+8pOX9BlMDudTqijKHmWYRaoz5WKDTR33yMeO1VF40sDyirN4aQ4m+fMDNa+I4c0vk7IBzJ3E\\naOoEa3opahuf+tSn8MxnPpOO75ButQed3LCqV1EUGMQkW8xuyzWTIAnlxD6KRuh4HWQFnZ9u0BW/\\nEU3VRGlrEA/gRZ5MKeI0hq7rcHUXQRYgiIjLwiIGeZ5j2VnGY1uPRcttiRzybLD/yjxi7xc3v4j7\\nuvdhEJNj8dHaUazV1rBR25hayLgTaGomqZmN4SECyctjxClNeM6PzsvCqCu6kIqjJIKhG0jyBFme\\niUGoqZrEQzGqUx3cf7r3n3DL990CKMDTnvo03P3Ru6euwUE2KJzgGQ63KMo+BILbHm/SvMTbM73M\\n8gyjZAQFikwwGeLmGoSz3gl2BKJTMStYr60LJJQVey5Hl81PfDFABWhDsOwsX5Ss86U8P1fj8kQQ\\nBHBduqc0TUMURYiiCJUKbW51XUcURXvc1A8T84qZulWfuh8XSfuXeZSs3jibS3gayqRqJvkvMi4U\\nWO74+Z83iSlPdDi/6BrBg8tFTFkw4DANsdno9/s4evQoPI9gSx/96Edx8803H+i1+xU35eCJQJZn\\nsla13bb4fbH3DedzviZJniDLMgyTIVzdnfh8Ga6oju0Gu2I+zG7xFZ1I7aw0Z6hj+wAUqBpVnGye\\nRN2ui4jMvOPlczrLB+p4HZwdnkUQkywx816PVI5I3uLfzZGjbtbJy6ZUlGZFhjRLkRQJkpQaNMNk\\nsufh/U6eE4E9z3P46ZiEb9jQFYKK1SwqzDk/hGGIa09cC+iAaqh44OsPyPPD8PgHWy8ZlbEfQgWg\\n3NSwCZbGXC2+n2dNXfl88DVmPzgWxGD49E6wI59raiZW3BVpinEDepF34GGC79vyd7tYWedLeX4e\\nrXFFT2guZ0eNE0e5mCnDZvIix264O1d1hgsU5mzM/g5PWLjzIWaRc+A3TPLnpMYd7XIRE2exdM84\\nGZq6iZpdg61NYGNlDOrlMgp8xjOegRtuuAH/9E//hCiK8Kd/+qcHdqs96OSmnCSG8RBL1hKpm43l\\nijVVg5IpMgnoeB3pKPajPhpWQ96b//t0/zQpr42LD56mRWmEXtSDnuuo2SRhOYgGiHIiPbqmK5KL\\nLDc5i0XnSZGu6jK6LkDQs1zJUbWqiPMYrk7JUFd0dLwOTS10F4Zu0DUbQ8taTosMKksbDL7eaZ5i\\n2Vkmrk4yRD/o49zwHMJsspExVANNu4ndcBeDeEAFzZj7UjNraDpNtN02BpsDYHyrnlg/AQWKLLTs\\nG8SwvkWbFlY6W3aWp6SzZ6VjGerBnCaGlzXshnCBmIzKDtj8LDKpdcVdwcmlk/I5Kwo5enNn9f6d\\n+wkuYDcBABdGFy5Ll801XGiKRr4O43+6QXcPXPQgcSnPz9W4POE4DtrtNjqdDrIsw/nz5xEEk+7w\\n0aNHL6mYYUGO8hpRhgkvkvYvGy4zUmDexJ7FPRhqGiaLSf5lxUjmFZSLGOHDZJE0xHRNl6l+GTLE\\nU/3LIT8LAI1GA7feeive/va3A6Au80E3ZKKKNVa6lAnTzPnyEx9dn67FMB5ixVkhkY8xbDnNU1ia\\nJaqYm8NNpAV5k4VZCFd3aX2PyPsrTEJs5VsCoeK8bhv0Xl2/iywmiWFN0SZGmmOifpqnqBpVuBVX\\neITlfYBYJozha5qiifIlw76SNEGcxnAMR9YlLjhQ0N5FgwY/9bHsLOOIeWRq4sZeNkmeiC/PbriL\\nfthH1+siKZLJvTAuRrKCmr2ssDZMhnBDFyvuClYrq9g9twuM+1nHHnMMlm5JMc8w6AcTbDE1E+1K\\nG+1KWyb2u+HuHlXXrMiwE+xgJ9iBAkIU8PTGdV2RIS//4VwU57FMNVkIwk98QV/UrTpG8QjnRufQ\\nMKlogk4cqF7Qk0LqYgsblnUuNx6ijGCch22QNRoNvPzlL8ef/MmfADjc8/NojStmQpOmKSyLYEgA\\ndQTe+ta34vWvfz0A4Gd/9mcvWunhwYqZefjmsuoMd3XKjsj8PrzgMbSAuRuzYaiGTGP4M0U+ckbT\\nn4/D1ClZlYuYMpTscjrUluPP//zPxa32mmuuwVe/+tVLcqudGo1nKXphD1EaYcvbIklNzYChGMJN\\n4rE8Q5QAyGa5YlbkOrLvCiu/MKRt2V0WRRRW+2Kp5yAlR2UefzedpnT6LX1iGKlAmUs8BWjRUqHi\\na72vYcsn2eOqVRUYQJIlUFUVGibS1mxMylExKntgU8zHGkZDbI42seVtoR/1CQesGlBA8AVbsyUB\\nWhotkpqi7SGK/tV7/wpv+t/fBGTAq17xKvz+G3+fJoEzHS7GJB+mKGaBAp7ALJrIlTvNqkJmrqNo\\nRKadKXUw2QuCP9/QDCokCoi0KfOHmKTKYgMMVbwcXbYkI8hC+fzMQogOEpf7+bkah48bbrgB//zP\\n/wyApv9RFOE7v/M7AUzzag4bWU7GrOV7pMztmiftzw0vx3BEJXDetNPWbXlOHozkX4YTz05iyn5S\\n3BCbN4l5KBpis/GFL3wBT3rSkwDQtOyBBx7A0aNHL/r9yp36KIuw7W9TsTJ+brmxseKsTHF9uHkG\\nTFRFDdUQA2SeVkQ5mUnrCkGPl5wlgn0pE9hakAZi8MgCBVmRiUR302nS+mRVJZcsmkowBDtIAuFi\\nMceGr6llEF+Em3U8deComBW0nNZUQ4f3FINwgF5I8vxe7KHjdZDkxLFhARwFCgzdgKPRPVyA+Ljc\\n7LJ1G/d99j782Et+DMiBG59xIz76Pz4qfK/yd+IChCeLB4kyJJ+nZ4uCeTeuTo1Ivg/EQ2gMQeOJ\\nCE8bAXouOn5HmqyM1mFIJU83VUUV4YKL3WPx1Ki8TjCn7TDxL//yL3jyk59M3+0yPD+PdFwxExpd\\n13H06NGp6czlmNAkGXEwysVMeYw5iAZ7ChVWnUnzFB2vs2fSwgVRw2ogyRMiMi8YobLajaVZZA4W\\n9sRNmBesJE/k+GaLmHLyulQ5wIPGrFvt3/3d3+HFL37xod5jHr43zVOMIjIV64U9BEmAmklqMFWr\\nOmUWOYyHgpHdjXaRZilOLp2UxXzJXhJYGZ93VVFRs2pIsgSn+qfkZ9zFPLl0En7iw1RNbPvbgjfn\\nEXWYhvBjX4oQ3jSzxw5Hlmf4Rv8b2BxtIsoi2JqNI5Uj2KhtQFVUbHlb2Al2EBcx0iIVNTRWCgOI\\n8Mk4bvY3KBdPR6pHZDNTMSpIskQ2/tyhK1AgLqgjlaRkyikSqBHwv7b/F6nSRICz5uBU/5RMcoBp\\nIief64Pi5Plc16ya8G54ejPLu+kFPZzun5ZuqWuS8IXl0uaqjP8G6JntZ30AEKW+btBFmIZoWA3x\\n+elHffTjPnVEDfeSu2yGZmDFXRFfIoBkndM8neslsigux/NzNS4tjh8/LgXN6dOnRagBuPhcIh36\\nOcUME6xn5dAt3RLpZt4Ez+YJS7NQMStQoMgUYj+Sv67qiLJIfGwWNcRmJzFlfs1D2RArxxOf+ETc\\nfPPNuPvuu5FlGe644w785m/+5qHeg2WPy3kkL3KECU362cOKp/XMp0jiRFS30jwVSfyiKHBN4xpa\\n61QVuqqjHxKiwi3GE1kFqBoEH/xG/xti3sxk9McsPQYAsOVt4ezgLJKcPN4MzRBuyCAaSDOLOVNe\\n4k1B0LMiQ8fryB6FG1JVqwpDNdALe9j2ttFLeuKXYqgGKXEaVUGExBmZNOeY5FC+h7jJs+PvoGbV\\nECa00VYVlf6oZJyd5qk061iQIMqoEPzMmc8A6wACoHmiKbwXQzMQJIG81lAN4YzNCl4sinJj+Hhj\\nf97NIBoI/JwnaA2rgRVnBaqqyr6jfO/w/s1QDaxV1rAT7sBPfDSsxhQUkflDju6gF/awG+6KfPhh\\nIWOKosik5lJknZ/0pCfhpptuwj333HPRz8+jKa6YggagJMQFzalTpy65oJmSVsTEf4Rd0ftRfwrf\\nzBwYTaUx72xyAiYKNkEa4Nzw3FzIgKZoYirF0J5+SJObKI2m+DDA3iKmrOm/HxzooYp5brXzNmSC\\n2Z1TuMxLyHlBimRZnkGBgqbdhKqq0lXjxXUUkcqPqZnohT2YqoljtWMykahaBCWrmTXAhExEuEAt\\nf3YZphWkxH3KQPyThtOAq1MCC9JAuDtJniBIAvk8x3CEKBllEXpBD12/S/eHArQrbVFqKYoCR+tH\\nsWQv4dzwHDk2jwubOI3RC3qomlS8pQXdA3Vzrxwxw1VM3YSjkDrPifoJLLvLUngxdlq8HQrIFCPO\\nYnS3u4AGwAXMlonzo/NT9xebsfEmx9RNIfofhnSvKIokbVTGJNd4hJ1gB91gWqAhyiKk0RiGaAIV\\nrYKm04QCRUzVytePmw18PFmeyXlbrawiSiORC2WoThaQqMfFdNlY1rkswxukAfIgR9NpHqhIOujz\\nczUeupiFMCfJ5B682FzC6oIAdaJZ3nY/aX9Hd2SDO1vImJqJilERsY39SP7sPeUlHkmzlwRiyg0x\\nXdNR0SfE/osViLmccdttt+Huu4m/d8cdd+DXfu3XYJp7N7qzRct+fEyeZrPh5Hp1XfyydEUX3y82\\nsVQVFaN4BF3RcaR6RCwaVEVFkAbkuWUvSUHIJqnl4pU90wqNJgpxFiPJE7TclkC1VFWVyT5D2YbR\\nUDbKFbOCFXcFcRpjlBDsmuXzc+SwMguNWkNgYCvuCmpmDZveJobREHFIJsiWbmEUjmDpdJ2jPMLZ\\nwdm5gilJRpxL06BcsuKuYMVdQcNqYJSMhCRfnuy5hoscuRRL3e0uoABwAXfdxdnhWfq+4/sLoHWf\\ncwubnNYt8qA5THOJc8l6bV3QMZxzy7ykOCOj62E0JHXYcSOLr+Ms34ybVGwnkWQJcoV4sy2nhRy5\\nIEG4CdqP+uhHfYFyHxaOeTlknW+//Xbcc889APZ/fr4Z4ooqaE6cOIF//Md/BEBJ6FIKGoYYcXBH\\nmV3JZ6cujuGgalQxiAfTLsDjKJMFTw9Oz11kbd0Wyd8wo2kM82HYaZhjtojhzfM8Tf9HIl796lfj\\njW98I4qiwJ0fuRNf+NIXcO1jr5UkI+aTh4gwDUWmk5VJalYNLbcFTaGJ2YXRBZqqqCY6QUdI/zIm\\nV0lym03E2OWYz2/Tbk4tIGUFO5bhHsUjaIqGWlGj7pWqolE0CD6QBQiTcGpa5Ce+LHAqVGwON0W2\\nuW7UsWRRJ4oTF5Mq/53x73BheIEKm7EmPgqSZGzYDTRsMnPsR31ZxA3NkMSwXltHlEXwYg9NpylK\\nN1WTyP/cGeNgvDwf++DsgEw1NWBjdQNRRnAKozCkkGeBBGBCWOVOIEuT8s8OWhjwtamYZPznxZ5s\\nxATSNzZ7m+XdLFlLYhZXhuWoigrHcNAP+0ABQKHpCXs1sQ+C7/lSlDEv7rBdNkUhUYAyD47hLS2n\\ndaDzMPX83Hkn7rvvPnzLt3zLgT7/alx6lJXOTp06hSybbEwPm0vmFTMsGsFTmT3S/lYDcR5PvY7D\\nUI2pqc68XMLdbgUKwizEMBoubIjNwslYIIahp490fP/3fz82NjZw7tw5XLhwAR/4vz+AH/qPPzRV\\ntPDk5KDB66kf0/O+WlmFa7hYq65BUzQkOV2zXtCDaqjwYx8qVFStKvyUOKsM7Srn3IbdED6KpVsy\\n8U7zFLZhw9YIMsRog17YI6sBq4FWvTXhMiUBiZxk4ZTHCk9tHJ32G0lKhU+OHBo0uCYVEt2gK2sl\\nr7+9oIfTw9MYhsOp6+8aLuVQVSM4dxahaTen1ru2Sb5uo3g0gTXmMZbsJVTNqvAaORimveKsUIOq\\nMyI+pkJqjlwcuoYr9y/fz2EayvSm43VwbnAOLbeFJWdJPNcOmksMlXihhmqg5bQwiAcYhAMR4bE1\\nW2DUZd5N3apT/tJdUY0rIzkqZgW74S6KnKwXRskIVbOKY/Vjol47jIbyGQyLqxiVQwvGWLoFNVOn\\nzMR5UnOQ8zD7/Hzwgx/ES1/60gN//qMprqiCZjYJXWxBw10PDi5muJM2qzpTs2qIsxjnRuf2LKqc\\nFII0wLnROcwGqzRZmiWdNu6cs6Y/x2wRw53xS9Erv5xRTjDNtSZe8P0vwN/f+feAArzljrfgt37r\\ntw78Xsxr4D8AbXQVKFAdVTgrbbctKj47wQ7BiVQVPY9G7HWThBYM1YCu6rKBT7IEukaQqVE8mpKs\\nrlo0RbM0Ii7ytShj19mPIMxCIBt7wozxyTWjJmRPxsGyidemtymEYEuzsFpbpQnDuPPJHa28yKGA\\nzsGKu4JNb5O6eyigqCSZuRvu4mjtKOo2TWh4CqQoiiyYdauOZXsZfkr3cz/sC0yO4XVBGoiXACcx\\nRVHQ/UoX2AFgAk+65klYra8iSiIpDqFAvAo4iZefGzZIrVpVMUplNSBOsuWOL/s7lbvRuqqjYTew\\nUdtAxayIOMAs74YxzcN4KM9UGYaT5qm8F/PdCpA7e9WsEtfFrMFLPCK/Bl1oEUnCZkV26C4byzrr\\nqi48rjRP0fE7IuqwX5w8eRIvfvGLp9ye3/zmNz/o516NyxOzExrmZgKHyyXcBeb7WYEiDZiuP+0/\\nw3BmVVGxG+11T9dVXfLErGBA+XcUKEiLFINoMFcgBthbxDzaGmKz05Zbf/pW/N6bfg9QgLf+H2/F\\nd73ouw78XoqiEK+F+ZUgBUWWZK5bdZl8cK6JskjUrLb9bWlIQaGGEq8fAMF/DdUQaG+Zf1ExK1ir\\nrpHnzHhyH6QBvMCj3AFIbuJ8wfmqZtVQLUgwJkwm/jZcBLN9gAIFFb0izvWcy0bxCDv+jvBMNUVD\\n22ljG9voBxPO7264i51gB8fqx9CqtKCrOrIiQ12vi5gNf5/VyqrkwCiNhJfTdJqoZlWBepfztmM4\\n8E/5wDYAB3jc+uPQdtvSRNSg0QSxyOAqtBfyEg+DcCDX8NzoHFzDxbJDXm8su81CO4a6V0VUCP/j\\nPZmmamjaTTKR1mz4qT+Xd8PGqP2IYMsVoyKfCUDy35K9hH7Yn8CLI4InshgFq9l6iUdKcBoZnHqJ\\nB9dwD+WLxiqpFyPrbBgGXvWqV+HXf/3XAZA4wDdrQXPFiAIABM147WtfCwB4xStegXe+851TIgFs\\nsrlfzG7K2NDPS7w9ScTSCEM7a7IJTLrMrDw1G2zYaKiGcCzK8okc5SKmDCU7jKb/5Yx5eORZDgPH\\nR+/+KF72n14GAKjVa/j0P39apE852HCy/EdTtD0FGrsSs48AL26WbpFkpd+RzW7X78IxHJpKZKm8\\nn3SCQHjmKZPK8aLPUo/zFsfzw/PY8rZEHY27WvOiLJGZ5inCLERn1MGpwSkM4yE0RcPx2nEcrR8V\\ndZt5XUZd1cUtuRf00Ak6UAo6VlVREeURlu1lHKkegRcTbrlm1mSDwsIHTGYEKIGuuCtT37Fc2AAk\\nsnFk7QiKvABSYGt7C7qpy0SmjO3lYoblSOeZawohtWR2amomamZNFG+SLNlzPh3dQc2q7Vm0y7yb\\neUaC5bB1khMFaGTPxGvpmCsTEzNFUSjZjWGeURbJdIeFBw7bZePEVt7UMtxov7jzzjvxghe8AAAp\\n1pw5c+bfhNvzN0N84hOfwLOf/WwAwNOe9jQAwKc//Wn5uxtvvPFB3yNKI1G+A2hD2HJaSPJkrrQ/\\nw0tmnx0VqpCv593nbNBboCDp9gUNsdki5pFuiPHaWJ6yLIIcb21t4YZvvwFpQt//I3d9ZGL6Ow5V\\nUffkEvYFK0cv6GEQDbAT7EBXdbScFhr2RGWO1RR5isJQcm6a8LktUAg3pgwH5KlN02nOhUvlRY6u\\n18XZIfmbaKomPNlF54lflxc5oiyCHxPHxos9gSe2K20YmkG+a/FerhVL4xuagR1/Bx2/QwWYTjA7\\nP/HhGi6ON45DV3XEWSzVEUAVAAAgAElEQVQQNPb7URVVmm7ABBpZ/o5xFgsMjeMFL3gBvvAvXwBS\\n4L/99/+GJz+ViOplTzVDM6BCFSEelsOfhVLaui1G5pxHLM0SGCDDwZhDXP7+juHMLQD4s/phfw/v\\nphzMV2OFOZ7ilwsiR6emHTc5oyyaQvWwdx0/84fxRbtYWefz58/jxIkTSFN6fj772c/i+uuvP9Bn\\nPpriip3Q3H///VLMrK6uHqiYYfUTDh4X7gQ7exKJppDs4R5/jCKDCnXPTQfQzchEau4c76Z7H9hy\\nEcNEzoebD3MYPPKiuOm5N+Exj3kMvv71r2O4O8Tf/D9/g1f+51dOd8sO8H2iNEKcxtJ9t3VbFq+8\\nyNHxOiSYEPTQj/oi9xunsZDCgfEmOCGowOz3sHVbdPODNJDj44WaF3FeTFecFbimK3DAPcpfM99L\\nhYpBPECcxkizFIZuIM5jdPyOjNFVlYosTdFg6jQFyIschVJAUzU8tvVYXKdch7PDs6LcZWgGekEP\\np3ZPkfywVUM/6qPltLDsLMtxNO0mtv1tcoLOiexadiPn6UycxTRJ2tqkYgbAyvoKTMuU88a4fA4u\\nGFmcIExC9KO+EPwZK56lGTI1E7NTAHggfQBxFstzYemWdMRabksEOGajzLthLgwXN7O8tDL0TFd0\\ngRnKpGZ8X9StOjRFE4GOdqUtU1kvpoaGrduIzOhQXTbHcIRXx53dnWBnSqp3Xjz/+c/H4x73OHzl\\nK19Bv9/H+973PrzqVa/a97OuxuWJ2QlN+Xk+yISG16NyMdO0mxjGwz2y/byuz8KYeS1gj7FycGOp\\nQCF8mFkyNzBdxOia/og0xLI8m8uVnP1O+8Xq6ipe+H0vxIc+9CEgB97zzvfgbf/1bVNFy0G+D0OA\\nWbGMGyr8HDJ0KkoJqsvEcZ4m8JpTFAVGCfn/lOFbwHjfYNgi+GPrtkymAUjzxzGoWcPqpTzF3+Mp\\nNL73VJAMtwrKE1IQFilykEiQoRlwdAeqqsox834jKzKaFBQ2rlm6Bt+6+q04PzyPc8NzyPKMuL1J\\ngM+c/wzqVh0r7opwDk/UT8j5dQ1X9gJFUYhgDYepmWi5LVGGi7MY58+fJw6NAbTX2mSMzfxUzUAF\\ndP65GORmcJAE6PpdmYSwlxwbkKZ5Cg+US/iYmJcjRY5moW7X9yiFloOv60ZtQ/jR/bC/R6wpyiJE\\nAT2/jECwdRtFUgg3k+GIruHKPnDZWUbTaUouiVPKeZEeCcSuaTdFtGdRXKys8/r6On7oh34I73//\\n+wHQlOaOO+5Y+PuP1riiJjSf/vSn8fSnPx0AcO211+JrX/saAOqwsWLNopjF3HMVP0vs5+5R+SZn\\nxTGGSZWDCwN2qM8KMvCaLZDKRYwoyYy7Dw9VzHbILhaPzMHTlnLB8kdv+yP8ws//AgBS3Pjc5z53\\nqKKsKGj8uxPsIEojKSjabhsFCmx5WwiSANvBNvzYF8nHKIuwZE14D9xR4644CxLwwrOow8GL+La/\\nTV32okDbbUs3jGN2U1E+/iiN8NXeV3Gqfwr9qA9DMbBR2yAlLXUyKeKOjqM70DSNSKAzxq08TUiy\\nBKf7p0mlJ+rDjwnXXbfqONE4gZXKChydeCxlCALDnwCg5bQWLoL3/OM9uPk7bwYU4MnXPxkf/X8/\\nKueDIWaz94gcu6rJBIWNLYMkgJd6RKTMc+nicRLg0BTyj6ia1Sk+Ts2swTbsKWO5RcHKhItUoeSa\\nZRkG8UBcwlWQPC53+djx29RMqFAxjIdTijcVsyIwuoN02eapXLFIyKJ4y1vegp/7uZ8DcHHPz9W4\\nuMiyDLZtS0eTQ1VVRFEEXV/cKwySAL2wJ//P0rp+4u+BSRqqAcxcTp5U6sp0w4e5bVmRIcszyTuz\\nDbFyEVOWVn4oG2KHFXh5sJidtmiqhk9+4pN43k3PA0BeQWfPnkWz2TzU+3a8DnpBD17i0QTbXRao\\n2SAakGBK4iNMQlKFNKrwUg8qVFmHk4w21rwOsUrcLGx3Nnizzj5qaZ7StNddnvKrYp4o70nKHBPm\\nDXZGHeyE1CBxDRdVqwoVk4KO8wSbFOdFLlMN+Z2xRLKu6Dg9OI1tbxthFgpX1FItrNXWsFpZxZKz\\nhPXquny3NE8xjIbyXo7hLJw4970+llaXAI2O6xvf+AZ0XRcOUpZnyLGXJ9awGzA1UySMWdiAC500\\nJwi2pVl7OMb8/bhY5bzBFgDM0Sk3LedFmqdTfjcLG7oFEGYhyTxrNolrlKwVuPGpqRo0RRMublEU\\npGimO1KEHcQXbZGs8365sWw0f7HPzyMdV1RBs729jXabyGuO44gZ2i233EKdnQUxW8wAEz6I/M7Y\\nyK9csHC3h29IvpF4c4sCcgOzO3s5ykUMFzAPhab/5Zi2cHDRVi5a9pu27O7u4ujRo/B92gjefffd\\nuOmmmw78eX5Cjsv9qC9+DIxB3/K2xDwzzmLikqhEWF9xV8RYLkgDGfFyaCopydm6vScZzwZLPQZJ\\nANekLs6KO9+9vSgK2ayPkpFA4E73Twtkcb26jpUKHV9WZCJ1aWmWTGZ0VYeu6MhBMANejMuLr6Zq\\nOLN7BmeHZ+X+KooCVbuKI5UjlBBUE02nKYVL1+9Oae63K+25C/pf/dVf4Yd/+IcBDfjeW74X73vf\\n+6b+XlVU6frNBt/H/L4MK2DFvm1vW+RQ4zyWDYKhzsdCA5ScWK3J1ExUrap0V/ln8+LB/G6yPJvI\\n146hO223PVWchGkIL/GE08R8KoA2uBWjgopRkcJmvy7bPId49p94KJ6fq3HxcfLkSTzwwANTPzt6\\n9OgUN3M2GLrCoUARWDFHkiWAgqnNR17kiNNYfC/457xxYRgOry+z65SujSf52iSPPBR8mEVy+oeZ\\ntkwdd6lgKeeSeWtSURR46lOfis997nMAgN///d/Hz//8zx/4s/zER8frCPF7xV1B02nCNVwpZsqT\\neFu3MUpGAvdmCd9ZPxBWP2WPsziLxaB0dr1ht3tW1mpX2jhWP7ZwvYjTmIjsY081hppxY4WvNcMN\\nNVUTo2T22OJCinMhiz6U9xmu7sJLPJzqn5JiK0xDqFDRdJvS/DpaO4qW2wKwd9+0yBTz61//Oq69\\n9lpAB9auWcM/f2a6uaxAkWbvbPPJ1m3UrfqE2zSenrA55jAeEvkeGlRVJdPTMUpmUS4BIJBsVo9j\\nKB7zmea9Li9yjOKRQNNm/W6Y+B8mE6PUttuW8wVMpJcZ9h4mIQkEjbfp5Wf3IL5os15TqqJO7UVn\\nj+8pT3kKPv/5zwM4/PPzaIgrCnLWarVg2zbCMJxydt4PIuAn/hQEoKzDD0xgaGywVRQF/JR4AmUt\\n9yynyUuURJKsChCWM8HkxucihkeV/OdSx/+HwSMfJA6KR36wWFpawq233jrlVnvQDVmWZ7SAxzRV\\nYNlKTdGw6W1iFI+w5W0hyzPxMwFIjpclmBUoUxtMJt6yUhb/TFd0ub6z586PfRkdGwptEPzEl6KO\\ncc2zkA9Ls5DrOc7EZ5AXOTRVQ82sYa22hhV3BaZOU7s4i2XTX752TGBl3wg/8aXjaqgGtv1tQAU2\\n6hsyPbI0C37q48zgDPphH+vVdcR5jLpVR80kx+SO3yHISkHyxMyzKYds2jLg5PpJGXOX8dx87lBg\\neiw/7kaxUhLzfbb9bVFy4wKLCfy2YYuyoJ/4ci5ZUrZAMWWA1g26UuTw+9XMmohFsPDBIr8bTtqa\\nqmHJXhJOTVEUuDC6IJMX7jzyVMxLiB9UNapIC1KNGkbUbbN1W1SAFnXZVEXFiruCXtiTzUCQBsiC\\nDMvO8p514FKen6txaXH8+PE9Bc1+ucSLPSESA7R50RV9yhE9yiKZlgDjYj+PoYImxcztY9PFOKf1\\nhPkT5SgXMXyfHtbgdl48FNOWRVzJw0yMFEXB7bffjle+8pUA6Fl43eteB1V98NyZF7n4zQAk484e\\nL/2Ipsgs92/rNqAAg3ggXjJe4iHNUxFt4OBpMv+MBVl4ysvyv0EaSNEaJAFy5LK53fQ2ZZrCpqj8\\nh6+5ozuwNRvb2EaQBrBy8sSpm3U03aaYS/P0gv8NhRpXaZ7K1AYARtFIEAu2bmM72EaSJVhxV1Ax\\nKgjSAAoUDKMhdvwdeLGHttsWtcajtaOomJWpRq2XeHPXPMklKXDNyjVo2k0MooE0wwoQXEuBIvc/\\n5xMm9jMM2dItrKgr6AZdDOMhTNVEy6GCQUw5x8fFcudpRrC88v3LJqeMwGEhBkbHsCotG4QypJH9\\nbtCYPO+74a4gdNj4PMmIF/313a/j/PA8yWdbtO+oWTVRKlMVFUvWEuI8lr1olEbwNTp29kVjO5DZ\\nsHV7ChXCRfds87P8/Pz0T//0oZ+fR0tcUQWNoig4ceIE7rvvvqmfL0pCZXJblmeyYQQg+E9NJQgM\\nY+lH8UgkaXmD5Mc+kpzUTUx1wjXg4CLG1d1J4rlITX+etswmnEvtkB1k2nKxcdttt8mG7IMf/CDO\\nnTuHjY2NB32dn1AxUxSFSJU6uoMLowvoR31se8QJcU0XaZZiyVlC1ajCTwh+VTNrU517Xkz2Kx7L\\nxQ1A0xneVDM2WlM00vQvLSRc3JQXnbzIcX50HlEeUUFh1fD41uPRcluI80nCclTaOHNRw//mJMiT\\nC+ap9AIy7eIuk67pOFE/gQIFdqNdUW8bRkPcv3s/wfPG0LeG1UDVrKIf9kU1hcmg5Sh3oY8fOy73\\n7KxxXxkuVy5qeFMWJtRBSvJEEqh87zGUjDc7TbsJpapMeWREWSTmtXy+uSM1VeREBCdh9T8WjqiZ\\nNZF/5p/N493AJgW4DBlsw5bJ2CgeoZf1BGLGMs9e7CFNUhiaIRwB3oT2Ndo41aza3C6byDqHfZn0\\nxFmMbX8by87yng3pxT4/V+PSosyj4ViUS8pwTs4L3Cnl3MLFNQAxRWZ1LFVRZePLniLK+J9ycBHD\\nqoGz09DDxOy0pTzJv5iYV7Q8GKTnsPGyl70Mr3/967G7u4uvfvWruPPOO/E93/M9D/q6YTQU6WpN\\n0QTqyeaLo4jkr03NFGhQzazJdNbVycyXw9KtqcnBvCgXNw00CBZckso3NNpAe7GHXtCTXMKTg9k9\\ngp/4yIoMTbsJq2KhXWnDNVzEeSzv66q0vrHIS5iFNOWJBigwMd5kAn6YhtjytkRwCCAzYjbxrBgV\\nuLGLjtfBmcEZkqV2Ceq44q7ANUjWmKFjQRrsm0uOHTsmeyA/8UmtrVTYFAVNyVlan4M9xniCoqs6\\nVpwVmayJwpuqyjlarawKHJCfNy5yuBCTXDIuPuMsnipyOJfYmo2qVYWruwIrZDWzMu+Gp7OjmPhV\\nhmpI45CbYY7uUB62yNA5yiIUSUEy3GOBKC64mLvZMyaGz7P3HHOkuNlXoFgo68zPT7/fP9Tz82iJ\\nKwpyBgAvf/mPo90+ho2NY6hUqvC8EZ71rGfixhufCl2fPCHlYoalkh2dNpW8ia1bdcJQxgOESUhd\\nW91BWqTijaEptMl1tGliMBcxFYNw9uWu3IMFT1vmdcku17SFk8/DFTfffLOYO/36r/86fuM3fmPf\\n34+zGB2vI5sE9gLphWSQxQsHd/9XK6tkrhiTWVq5U3SQ5LMoOl4HF0YXZENSNauC650XiqIIGbEf\\n9XF2cBZ+Sq89uXQSJxonpu6DNE9losGd3PLimmakkFaGRHkJYboZd9y0m1h2lsWbgqF4ChQSIshi\\n2IaNjcqGSFL7iS+JQFVUtCttmjYlI2Sjc7jrzr/F5oVzGHkBnvnsm/H053wv1HG3kmEwixzJ+TiZ\\nfJsX+ZRfg6XRhLLANBeNJy7zYDJc5PDEdBSP4Kc+4jRGnMdTsrqzoSqq8HEqZgV1qy6bQYYlJBkJ\\nJZwdnBXCMADx7EmyRNYJfq4d3ZHGR5CQQlyGTLgP3Aypm3U0nebcLtssr0lVVCw7y3vWisM+P1fj\\n0uN3f/dN2Nzcncol11xzHD/4gy+cyiXDaCj3DItqMC+K75mG1RBp3jiLqbjWXekkc8eaIWpT6kzj\\nIsbVXbime+iG2LyC5VIhx5c6bbmU+IVf+AX8wR/8AQDghS98IT784Q/v+/tJluDc8Bx2gh0AwJK9\\nhBV3hQjlY/XS8uTZMRzhOQCYem51VRee3WHDT3xsjbYIrjQ2c2aJ5HmhQJHmqaVZ1KgrGQXPKi3y\\nxIfhbiwcUJ7aiPodcliqJZBnNhDlz+MieTfYRZiFsFQL28E2BuEAqqpi1V1Fza5h2VkWtS/mgTB8\\ni3PJZz/9SXzxC5/HyAtw/OTj8OIf/s9TuaScJ6ZiPPnn9Zl96LgxwCR/zjWz55GnOvNU5rhZFiah\\neN8kRYI02/+54CKnzMepmJUpqFqap+iHfZwenEbXn/hI8bkpQ61dnYrHul2XRkiYhNLQLD9X3Mho\\nOs25vmjzFNDmURgO+/w8muKKKGiKokAUFfC8HHG8+OuapgLXVZCqAdI8oTF01EdRUOeiH/WlsmUV\\nkyRLpLsbJqGMntnnguVggUkRw5CmB5PTe6jwyLOY5EdC3nk2PvCBD+AlL3kJAGBtbQ0PPPDAQrfa\\noijQC3rY8rcERlW36/BjH1v+FnXH8xS6psPVSb45yiKkWYqaVZOx+sUmnyzPpFNzqn8KvaBHmOvK\\ninBzypOysrEpG0h6sYevdL8i3J+N2gaubV4rHdp5UTbj5CkGb+R5Qb8wuiBJjQ34KkYFiqJAVVXh\\nZKVZik1/U97DT30URUGdq+qqeK6Qao6CahaimvSRh9sLj0912tBr10BzjwjRlDtf5QjTkKYdRbZH\\nNnPZJrUXFg6YJ2vOBciDwRu5GGTzUPZAiFMqDvdLTJoylq01bPGhYXGI3WAXg5jw6n7qw9GdKSUz\\nnmqxSIVruLJZZSGCtEhhqqb4B/C0qOW29nTZDiLrfJjn52pcfBwml1QqKiKM4I0x8KN4hCRP0LSa\\nsqnkDj13XHnSyvj/OItl/SjnEi5ieMP0YA2xw8jpHyQOKqf/SMT999+Pxz3ucQBog3n//fcTR2NB\\ncFOKxXlWK6vQVJqyB0kgIgsspsDT4apZlWlDeRN9mOA1PUojbI42seVtoUCBilFBy23JRChKowms\\nWSVPMSatF0WB3XAXcRpLU2alsjKlLDYb3HRicQHeVwQpFTxJlmAn2EGYhchzmkxV9Apsg/g4mqLJ\\n+ShQYNvfhlLQxLAX9xAmIRzdwWp1FU2bvLmSPIGuaKgXCWpJH0XYXXh8s7mERVhmjWKzPJN8X97H\\nsMdPu9Ke7NfYpLa0oWeY2INdNy5yGOLG63hWZILQWBTcxORrUzWqcAwHhmZgGA2x7W9jEA0wjIZQ\\nVXXquiV5Qk25LIajO6jbdfFH8pP/n703DbbsusoEv73PfOc3Zz5lSrIsSxgkyzJItpum8IDdIKNu\\nBmOaIcrgojugCLoquhxQfwA7yj+gCP7RP+gqiKArmnJANO122GawwaaBto2NR6FZqSHnfPO7w5nP\\n7h/7rn33Oe/c8d1U5nu6n+KFMl/ee+45996z115rfev7epLungYAA2wu73+ixZFymr4uEJVNfw+K\\nM6bPPfecMmme5P65nXDqE5osE9jfTxGGk18mNxNkzgEOowOl7U8Dw9S6i9MYjLHB37NYmV15xmDo\\nipKYpjNwRdcX/Zul/lIMOK9mhWwWxHGMu+66S8o3Avj4xz+uNmhF+LEvqVqJ9ACpmFKe8Xrvumob\\nk8xyxawgSiPVheGMq06KPiczCnrQ0SlN+8E+tnpbiBI5D7JeXVcVH10Dn75DpLqSiQzP7jyL653r\\nsuplenjDyhuUSsykmwKinpHvwI3eDYSxTAASkag5LQBKMcZghpRk5TIpIBU0IYSsPkF2S9Zr62g5\\nLcSJj1bvMpykM+ZsBuDeGpz17wbrb8ppEaWkghIc3dCsuBmgoVVKDkl6Usc41ZYyUJJDQamY5IwC\\n0S5sU3bgaMCa5p+oAEEgvjLR4SiZFBCKzuYnvpx76g8Wu6ZMoNar67kqW5RGStaZoMs6T3P/LDAb\\nZoklwggRW7sqlnimJwVk+upLwEC2mAoAQRKoOUubD5THKIkhmmRZdfVmCLzoMeRmUI5vBn7oh34I\\nf/EXfwEA+PCHP4zf+Z3fKX2cH/tSkKVP7Vz2lpWpIq0T1JUh2h/5ztB7X5yTGQW9u077CEAWQXb9\\nXTV72XSbSlZfNxoGoJIQ6jgQJY28VZpeExvVDcX8mOSzIgqaH/tqNqMXy80yyU5T7KLr5uBwLVdJ\\n6odJiP1gXxm30rU2nAbWKmtwTQvrwQ14aW/UqeRQFku6UVfSjJO8hHWapao4pMcFx5Cx3zIs1R0p\\nSvdT8W8akQyd+kyMHBrCH1cooCTHNV1FyfNMT4l7kPw0gRTs6DvjGI4SvQEwoEb3r4X2gJ4phWiW\\nK8s5BVeiqxMoSSZMev/cbjjVCU2WCezupojj6S8xQYBdvIgoDdFLpIkWA1M3uD4wXjWrqDk1KbGJ\\nvjytJZWJqM0K4EiQ0Tma0+LV4CO/2vjoRz+qqDIf+MBP4T//5/+CNBUQAmAMMAwG2xHYDq4rGg4N\\nCW772yqZoWSFFjW9kjbJnAwtxNSCL8qeAnJhvda+hr1gD4wxbFQ3cL55fqTEMyAXwZf3X8bzu8+r\\nlvHdzbtxrnVOBQoa9J9UZCFM5CCmEh5IInW9OhWLBAloA07fTTL/CuMQCRKlqtYwK3gDOnCyaMwZ\\nHAW3m3DOvh2Mm0izVBqfRh2VFAL9e6dPuQSDGvrUQUOpRCuI0mhiGtqkiNNY0QsOw0O0Y6lEU6Y8\\nSCDFGgEBm8vka6O2gZbTUuackfa+6RsGGgZnjCmZdjJTdS1XKe5V7SrOVM9guSIpZkmWHPG8qlpV\\nNF3J3dfvn//x/f89/o///XeQpQGQJQA3wQ0XRm1T0TkWmBzHiSWR6GEXL8IyTPX9dU1XDoD3zWoz\\nZMo3yjZsFUsoiWk4DSVVTuqMR+LJHOX0ZxF4uZ3w6U9/Gj/8wz8MAHjzm78bf/3Xfw/OzVwscV2G\\na73LUjwFgGu4qNgVtc50oo56LwAoaWPqeFPRbBxVWSUwfX+Zss/oMDxUku0Nu4HNxiaabnOkEhcZ\\nAF/tXEU7kPS3ml1DyxsUQkiamESGxiU3JI5AlONe3EOWSYEYEjmhrjeE9DgBg1ICY4LhMD6EH8ku\\nNM0NGwC+x+aoYvrEWo8lemepHbXRi3oqHlDSRypmppH/XDzTU0prfuznhAcI1I2fNWEnWhexAjpR\\nB0EqqXCjmDWdaMD2cUwHy+4yVior6jOghBvAQGQoiRQl0DUkzTRDJmfB0gS2aStGiGtII9fVyqqi\\nnhdlnYn2zRjDpz71KTz++OMAgLc89Eb83V/9KQye3vax5NQmNEII7O1NV00rop3u4KnOl3PUF6q6\\nW4aFmlVTA5tqCKyvYU6D/yedj/xq4urVq/hX/+pf41/+y/8J3//97xn6uJj1ELIDBEJWWvzERzfu\\nIkxCxSMnfxbiN4+ak1HVj+SoT0wZaFh+35cOwFW7irO1s1jyxmu2t8M2nt5+GnvBHtIsxXp1Hecb\\n51Gxy1veDCyXvBZRZtBHqi60qPbinpQ+zlIEaaC4xnEWq4WvalUVVz/OYhjMwFtsA8ts9vuHe2uI\\nWt+BbtzLJSHEcy4OK9PGzmB5Ezxdh/+4NLRJQRQ+4m/ryZju+9CO2rlz8UxPqe3Q+XDIQVRdUISq\\neTQPl0EqHOkeFjQcW7WrWK+sY7W6Ctuwsevv5r6j5CZ97epV/OKHfgK/8NM/iHd/38NDr61I51hg\\nNOYRS3xxgKvxM2BgiEWMXtSDYRhKJMYyLThcJitE5aEEhuYoKGmZhXJM8rw3W+DldkGSJPjQh34J\\njz32oyNjSYQOutiBLw7gmZ6ihh6Gh7KDxqBogA2noarfo6jKeue8aGQ6DO2ojTAOYZvSQHGtujb2\\nc0mzFHvBHg6CA0RJpARwhlEP9eSmzDg1zdIjlC7qAFMCQIpdqUgRJRGCNFAFoV4kh/IbbgPIgMP4\\nEEEUQHCBd9SWsG7MvjZzbw1YeQhBGuTeT717XxTcIRqaHjcZmOqoMTC1tuswmPysxxkiTwpiBfix\\nj07cUXTkYnLbjbqSPtYHdZaITpqKFGmaIsxC9dklWaK+azQTpRfLojSSMt395EZ9v/rWA8NkndM0\\nxf/8wR/Dj/53j5yoWHJqE5ogyLC3N9usiY5/2vs8tqMrqFpVpURWtauqG0IbDp0aMC1OY7dlWsxC\\n5+iku7gUPYVOLGlMnuVJEzKzoroyw4IPLcJl7tll0GdgbMOWfOf+DE/TaeJs/ezYWZw0S/HU9lO4\\n3rmupH3vX70fK5WVHFVkmNFjMbkpM+hbqayU0lCUYlfcQZImiLIBL1slcUIG707cQTXt4e2V41df\\nOvV7kDgt9XfdN4C8DIodsFSkyLLsyGaLM64ctYfR0Eha82YsrlRlJRlm8hTYD/ePJBhFTjYHl9xz\\nLosRpIZDw51hEiq1Kz3I2Katqqt1p45VbxUbtQ3VdSPYzECt8xIyf2vi6ynSORYox7xiybOdr2I/\\nuTGQTzZMFTeIglK1q6oLMwvmJad/kjFLLPGzA/jmDfSSLnqRFGmxzcFwN6ktls3JqE1loeAxDCY3\\nc/5YJAYQZ5JKNG7+hXAYHGLH35EFIs6x5MphcKWomPhDGSCU3FAHXHWctThIw/s6MpGhF/WwF+xh\\nz9+TjJUsQRiHSpymG3URi1iJCjSzGO9urY29nnGIW9+BzB14thjcUDE+zdKcsTEhyRIkqZyn1eOi\\n8gayqkhFWkpDcwwHTbdZWkg89rX09x9+7KMdtpVJM4ksEGxuH/Etow4tJW0mk542qUjVrDB1/mmk\\ngTOuimy6GfWZ2hk130RgWQpj/+kTGUtObUKzs5OMHNqc+DjhNTzb/Qpca+CZUbEqaLpN5Xo+Ccq6\\nLVQxux0y21uJ49A5OskevnbwBVStCjZqG/AsDw27oRRDqMKkq4VNG3SKcxpBEuDy4WV0og444zhT\\nO4O16vgF+5WDVwWSPtoAACAASURBVPDi3osI0xAGM/CG5TfgXPNcaaVsXHLjx7Llrn+PViurY7+P\\nRa+VOOnTrdJA+bvEaYwHeYZV4/jfy9hqoNu8N+fsXASp7xSDb5zFaiC1KB7gWbKaWtZRmwcNbRIo\\nk7zYx6XDS9gL9qQ6YiblOIcNmgohctx0StIMGEiElLD2Y1/5XwADOoxruWjaTaxUVqSnAQOQpagd\\nPgczmZybTtDpHAuUY16x5CDewkvht2RRgplqZqru1FVHeVIMS1peS0WwMhwnlgRZBy/4XwPn0q+E\\nKuTkJk9UJBKFoYLYuI6Zmr3rz1Xqn1EmMmx3t1VhquE0sFHbGPs5hkmIrd4WgliuD3W7jpXq0WIW\\nra1kvloGijU002FwKVs9yUa+G3Wx6++q5Ia6NqQ06cc+vr/WxFlretW3IjK7hXj5u3KFrbJraYdt\\n+Imf+z19TkTBIujdGFpz9b0BdXSOQ0ObFJTkXOtcw3ZvW81ekoz4sNenIhjNUOlyzGSJ0I26COIA\\njDNV8KViWdNtYsVdgWu5YCIF2/4mWNwufa1RuB1iyalMaJJEYGtrttmUMlwI/wmebaPhNpS51TCc\\nRj7yzcQ86BwHyTa6xhU0HKkAUnNqasBOyVBOkMDog/yjPuOd3g6udq4izVLU7BrO1s+OVUk5CA7w\\n1PZTavbnjvodeP3y63NKVWUooy12og7a4WDBMbmJ9eo6HNOZio5IPNp22FaLop/4yKIO3pgdjD/A\\npNh4OyqaG/Iw0JxJcYNAlbNiF9QyLHU/DqOhzcOUdhKQ0hAlzXQdAkJ5Dgz7DoZJqFSvAKj1g867\\nl/QkvVHEcLmU5qy70iS0YdVxj+hMNWhbBPfW4Gw8+povrJRh3rHkheCrcCxTqRWNigu3g5z+ScI8\\nYkkn3cUhv4SKVVHqVzW7pireuijMMFA1nIphoz5jP/Zxo3sDQRLAMiyseCtqJm4Y0izFTm9HxRLX\\ndLFaXR0bS6gj7se+Sm5Ibl75hfU9sGp2rdR8cRR6UQ87/g4Owv4MThxAJF08Yhy/u0lgZ/4buO7S\\n2LWKZPb1LjYABLEUeXCtfFyggpvJTdUx0UFCDePe43mBYjLtX4g+Rx45w2JJlEZoR21lO2JxC5wP\\nBIHiNMZBKLtRZA5KCV3DquPOdH8qAaAibnUsOZUJTbudotOZfmZlGLrYQsB3lZETeQEYXMpU6mZO\\npHxG0D/Y4/x+nscqftlmec68MC86R2Rtw7QzpRoyrmpWbMFOmnAmWYJLh5dwEMgN/3p1HWdqZ0a+\\nP3Ea46mtp3C9ex0CAg27gTeuvXFs4CoiE5kyzaQFzeQmViorucVZURbBAYacszL9ufi7VKTwIzmL\\nZPcuoxXtHT2BGfH/PXEN336hjYpXgeu6cBwHrusO/TO3OGABpmXCdVwYhqG6IQCOUPuIOkHzNa8m\\nDU2HEEIGC02mmjZENM90EB6gE3UkLaNkQDhJEyWdSn4D5MeTZIkMyMiUKs29XnMu1EB7/XtgVs8c\\n+zinDfOOJT7fQWwcHOk4GtyAxawcpbRsTRoVE8r+vewxkxxnXq816fnMA/OKJaG5BcsRap0pE4XR\\nocvyOqYzccIphMBesIetrqT2VK0qNmobYzt1+/6+msHknGPVW5VzK1MgzVIchAfY7Q3m8UjqWP/e\\n2Yas4juGVMZUhslaDCn+LhWSOrvb24XnX8NaOvsGuYi//fZFfOuFQ9TdOjzXGxlHXNcFMxkSIwEz\\nGWzbhmnKz6aoXkcgSjSt5cXu/82koRVBcYJASmyJSKTpaNhRggFlc79JligmBiVHRPgglkAmMnDO\\nUbEqeL3bxCPu8TtptzKWnMpST5rON0cL4xg76Q5M4/bR2r/lYPofhyRBEyRkLdwFB8ffkIU+w4vt\\n54YmYSSlTCpCuUHBKRLCdtjGte7As4AxlmtvF69ZQOCV/VdwuX25r8Nvotqq4kbnBm50byiNfd0F\\nWQUJhtyG9zA4RK9PKyIJ8ZpVw43uDflahQADQH1fp+ncrBaqWsfFU098A//rb/xvcjEVwMRCNwYA\\nEzAsA47twHEdOI4D27PhOA4821O/dx0XnuWh4lRguzYs11KBzXHkv1fdKipuZWwQLPuzZQ1XGyIw\\nxtB0mjjAIKkhTjf5H630O1Xka9CO2sp4kYJX3aij7tSVYo6f+NJFXPjgnKMX9bAf7yPJEvy3lQdm\\n+ESOImm/vEhoSjDvWBJEEfbFjiqinFaBl2lxJPE58tfxiVEt3YSF6rHPJQoNXPafH/r6jDGl3kUx\\npYvuZOes/S5KI+z2duHHvuqMJFlSmhTS2k6SylToqDnSiHGrJ5MivVAF5BMP/ThhItVbyVIgTqUQ\\nTCrS0mQFgJKXn6YAWJvRM28Ynn/6n/Hv/0M/liQAYkwWTwwADsBMJuOI7cB2bNhVG7bdn1N0XNi2\\njC1Vu4qqWYXlWeAeh2VbKh44toO6W5cdm36cmCaeOM5kVgM0R0VxIUojHIQHaLkt9QMMqM/k00NC\\nQADU48hCgGJNkARgjMk52jDAVncLb9u4X75Jx8StjCWnMqGZd8/JYCYSkSBNUuVjUvx5zQUlof9R\\nlP551HMAwIQDh89H9q9uriANpUQqAIABJjNznbRUpEhiWd1Q3QlpN6z+T78rrT5lAje6N3AYyVZ/\\n1a4iSRO1uCtne+0622Ebrxy8oja4a9U17Aa76hiTglS2CJZhoW7XVUeCvCx0FAMqZ1xVgIcmcWBY\\nYtGR4Hwc1Bve0XWSEpthXxcx+H+ayopfL+kBnf6/McgglWEQ0ChhSgCkkKsbO3o86IyRca+voSxI\\nea5X3mWqcBiOAddx4bgyQFIAHBbsLNsCsxhSM0XEIiQ8QWZkch7MrSHjmfLP6UQdsNTH67zpunzD\\nkPlbyOLObSfDeasx71jCYSh6oU5P1v3DXotzMEfixpG/lnwQ2q+4sGCJ4yczAFA3lnE9ZojFoLBj\\nMhOmYQ4MTtlgPkHEJbEEg2LUsA55O2xjP9hHKlIly04GusVjAIOuChXQLGYhTmN0wuk6IERjItBM\\nCgBk2cC8Wc3clCRq1PWm5GZY8XJFjO5uTYt63QOogUUjNJTYjMqdBIAIEKlAgABBFMhYsgN5fRZk\\nHCmebtT/cfqPEYVjBiWvO8GaQYmTSoic4YmR6ZkwPEMW8xwbFaeCltMamUw5jgNmMWRmhszIkBop\\nUp6iYlfQrDSRsQy9tIeD4ECyMrIEd3vTdfmG4VbGklOZ0Mw7tzBNA0vGQJI3t4EXA7lcxlg+yemr\\nUg17TvH3I/9tWAJRiLiTvM7Q349KTG4CMdFDa/yDpkCFLeEw2gPnHBa3kLDZnbDLECQBunEXaZaq\\ngV7G2FA+a5ImuNa5poJHzalhtbI6VbuaHI71lrJt2qhZgyFBzji4wWHByiU3GWQXh4JNJjKITMjz\\n73duTGaC8cFjGGMQ4Ji8jTIed9x1J372F34WYRgiDENEcST/H0byJ5D/D8MQURSpx4WR/L/67vU7\\nNjnw/o+e2ACDxEX0n1dcEzKMDoAlCBEiFCEO/APAH/94WIXzTSCD4xRJlErcbPnDPQ6rYsFyLPy7\\nD/w48GP3TXMJI5F2roAvze94pwHzjiWcM+X0rYMkWZEOCg+U3KiZTHZUQGZU/Cj791f7MRMlJnOA\\ng/lsxtTxRAMH8S5MLotiCRIkSXJkJmNWpFmKdthW67ppmqroVgaKA5TMcPBSFbJxKEtmdINpzjlc\\n7sK1XNVFjrLB3BDFCZIQ9xNfCeiQaJIeS5AagJhfDD5359342Q/+LIIoUPGCYkYcxkj8BJE/iCf6\\nTxD0JZ9TyHXVRj4umABcyO8sJTZUiAshY4YDGW8IHuTxQky1R4ogk8Z2tw10hzxIP56FQSKH/rkE\\nE76m/hgtljCHwak6MB0TH/7p9wPvv2vyCxiDWxVLTmVCYxgM89yBt7wGVl13JtMyYBCgyK1d//tJ\\nxCwJWdnvO4dAOEd2U8teRsgHsx/Dgue0iR5B6d0zKRdZMSu5z1B/fiYyXO9cRzfuKoW7jeqGaiPL\\nxEEMFn8M/q42LQKqk0N8btdwleKJ/tjcn9kggdFdyEvfCwhw8Bz9JcnSuQah1z3wRvzim94ifWZE\\nVnouVAwoUnCEEEjSBHEUI4oiBGGAXtBDN+wiiiL5+zhCL+whjEOkcYosyhDHsTQKjRKIRKgEKYoi\\nRLEMgkmcIAnkscN4EBzptfTHZsmMCV5ZUnOMomXmZwiDEKEZYtWdbwVMpPOlGp4GzDuWNL06Gvbd\\nM/mSAVBiM0Wp/5NMXSuLq9Mmau1DgWCSIsOEWHJXwBx/4vMrw6hz9mMfjDNlotryWnIOcMhxg1R6\\nv1jcksmMU0PLbYFzza8Lg5igxxKimhHNiApxnHHpo8f58FiiFcPIUHOYT5uANG0m3xSTm+BRCsRh\\n6eNnwRsfegj//pF3SDGDpFc638TAlBx1kRqXpmkuETroHeCwdwg/9BHHct3vBT10oy6yOAMSyBgQ\\nRjK2xBniMJY+YmEgnxPLolwWZTKhCiP1nGLSFUURkmTG2Goin9RUIBOpWZABwhcI/AAwgRVnPt1N\\nwq2KJacyofE8PtdBzlbNg2lW1GaMNma0URw3gJ6JDFlafj7DEp3bOdkZJVwwDVWJqRL6fGAwU8li\\n0vtXtlAfWbDZ4DqGPYaURTzTAwPDRm0DK97K0GPv9HbQiTpwTAcMDOea53Bn886JuceZyLAf7KPu\\n1NXvKlYl93dg8uSMDBxTkSq54GHPOYgFNsX8FqTQaqJpeur1hlHk6FToPqD3VgghK2Ha+VKAjtNY\\nUTTIIDXJEiXUQc+xuAXLsHJqcXp31TKsocmpgECapjJJ6gelOI4RhEEu6dGToTAK1Z87oZQvpeel\\nUQoRCfV4SrQooEbh4Hj67+MoHrxPCVBz5mP8pq5zjt3M04J5x5KVRg2mWc+pFyZZMpFUO5Dv5BRR\\npq55EhQ2JxEkGBtXxHxjCYR8wTLz0WExYtTv1HMZAwSw6++q9abm1HCmekb5ERWfl2QJtnvbqPUp\\nPK7pYrWyOlV3Rg2F90Gy8kc6fhN03Wi2T/nulHTzkywBBLDPHYy3m54cgd1UVgwttJCkkkIepMGR\\njz9IAtk56ivOAQAsoObW8ut738qA2BcEkk2m7hO9F7Zho2JVpJlowffGYNKrSJeULr6naZbm1v4w\\nGLAW6IdiDf05CANEYYRe1EM7aA+KclEChFBxQxXtdMZDFKqYoidYCglQs09HLDmVCY1pMtg2m4t3\\ngOMwmKZG7Sk4zxKGJTrjKnFpliJFirhQttUr1oqC0P/zSa3EFTHvyzAMjgoqKjDoA/HH9fuJggjk\\nb+KZHlpua2hACZMQFw8uqtb+kreEs/WzUyUze/5eji5H7sZFDE0uSy6VzldPbmgBF0KgG3elGVua\\nYAfAyhxy6i53kRoOeP/1dUlsUsQheeMi6F4bldyTsplOo6BqYoYMrpGv0pG0dZnCGEl3z/o9GZVc\\ntiNp/qoHxbpdSE5HJKRJliBKInTDLjp+B0EY4P7jz2/msPCiOYqbGUtoBqEIPblJRZpLfEYhyRIk\\nSI4YBBYNeU+jefPNoAbazO4fmynqGa0Rx0kSg0QqFdqm7GIse8uwzaPfAwBq1oaobiQfPE0yQ4qK\\nBItbKikoYhKVOm7IAlDdqau1lgyaaQ0LkxDtuI0MGVqCY4kdvyjQ5S66QoBHHXimJ0VgrAoarlQl\\n68U9aTtQ2HPRfUMGxWXrewODY3TjLjKRoe7U1e+iNELFqiimhIBAw2lgrbKGbtw9cm8yMDScxszf\\nk1FdQfL4occY3JDdOsbHdjaBgRVEEAXwAx9BEGATh8gPlx4PtyqWnNoIVq1yRNHxFTYqlckWfJpj\\nKEIIMejsaIlOKtKRFDa12SspxembdT3pOWnJzrzpHA23imX3zqH/rg/FT5Pk0Oe1gQ0Ao6WahRB4\\nZvsZVJ2qVOEyHDyw/oBSt5rktXb8nZw0ccNpTOQcPQuEEDgMD7Hr78IyLFixhV7cw77gWMmGkXsn\\nh924G+fd/LVbhqX41gTaxJUlNgxsbKU5E5mqGurHJM65boLLGINryMBWNJsjB+2bIctJ3gIEx3TQ\\ndJqlVVLyUDpiBKvlQE7vKtC7OrfzY8ar47Fw0vBqxxKan3EKShoUE4odHUp8hoES4rKEiOJHWbLz\\nWo4lnu3As8vNkqnLTIPxlmEp8ZlJsNvbhW/LdaliVbBZ3xz6XJLcXeErYGBYriyj5bYm+myoSGXx\\nwTprG/bQZOa4oDmfHX8HPvdhcUsqc0FgKZveqPHI8aubWHXyc7c0A+SZnnpPwiQcKmXMGJN0casy\\nNJmn66DEBpDxpRN1kGQJqlZVxWcGhiVvCQws93gCeb3M+17yY1/5EAGyGLfkLZVek77nzBUP9a/B\\n4UtA+6W5nd+tiiWnNqFxHAbHYccy2aJjHAcq+YABC/mqCgWosu7OuGQnESMC1AmZ15k3ncPzDAgm\\nhiaLRP3Tebe6utAwLnov7sGP+8oy/crUsAXqRvcGrnWvKVnl843zWPIma7onWYKd3k5uc9JyW2NN\\nO2dFlEY4CA4QZzFSkcogkEWyi2I2EUSAm8ye1DB3FVb1LKJCNyROY+VqrCvlGNxQ1SM9MAgMqGTD\\npG4psLmmO3BY7jteJ5mkJZCaDweHn/jKi4juQ3qtIAlgMOOIq/dxQXRBSmrCJMQBDtCwG0cSmHEc\\nfQYG5m3MNaExaptzO9Zpwu0US0xmlibbOUqplugU76UiqNhW5iJfZux5u87rzDuWVD0TCZyhJoaZ\\nyGRnOM0P2NNMTLEbTYjTGJ1IqpIxxlCza0OTmTiNsefvqS56xZZmn5MmM7QBJzimc9NiCckCJ1mC\\nilnJ0YcTw0EvTlBJZx9yYu4q3Nod6BU6MLReHuBAdWyIZpZkCbpRF0ESqPWUEpNu1IVruqhYlSPd\\nLsYY6k4dVbuqHssZR8NpIMkSZbxZs2uwDRudqKPij15EE5DFwl7cQ9NpHvFPOw48SyZw5IeXZAn2\\n/D0seUuqiD6K/VAEr5yda0Jzq2LJqTTWJGSZwO5uijie/hIti2F52QDnt2bhnnVeZxRux3mdnZ1k\\nbnSO5eVBoKeKBFUzx3XEdNCmmf5/tX0Ve4EUG2g6TdzZurP0PfNjH9+6/i0chHKRWaus4TvXvnOi\\nhawsmVlyl5Sc5jyRZikOw0MlH0uBz2CGcog2mYmKYYPvfBOIp6+ucbsJ5+zbwbipOg7keFwGUsqx\\nuKW8eUZVnvUO5bBrJBoEIUojBEkAk5twzYFTtMmlHGvZ4k8blHlu4A7DQ+z5eyqJAVDaqdGhJ3+O\\n4agKenDty8j8rWOfE/fW4J5567GPc1px0mNJWVdn3LzOKAyb1Xk1DAeH4WbGEpIxjtN4pFN7EQYz\\nVAfHNmwESYDrHWmw7BgONhubpbRDIQS2els4DGQV3uQmztTPTORUTxRXfa/gmu5NiSU0yxgkAdJM\\nyuunIlVmo47Rn2lFBr79LfAZXOj1WAJIyl4v7g1VnDO5mevCZCKDH/ulHRRgMBMz7L3NRKa663S/\\nRGkkpfPBcmpzBpPqpznZ6z480zsWDa0MQRJgt7c7oI8zuW8Y9RoMrHSM4TTEklOd0AAyEO3vp1NV\\n1xyHodW6dQFoHGad1xmGsnmdMsWpm4F5uTsvLRlw3dGJGQV0PdEZBz/2cfHgIhKRwDIs3NW4CyvV\\nlVI1rie3nsSV9hUICLiGi4fOPISmO94nJE5j7Pg76vOjNvYkwWsaUNWOZKDbkZQNZZBSslW7CpOb\\nqDt1VckTWYLwxj9NtdBxbw3O+neX8mhpc5CjUWlgjKmNO22ORtHR6Hs6bAGnipnelSPOt2VYRxIb\\ngxlHhlyPS0PTrzlMQ1U51OlnlmHlkhqDGcp5vGgEqyPpXkN046sznZeOW+nufFJwWmNJMcmhtXGW\\nZKdsXkdXZruZeDVjCZlRUlGCxElGIc1S3OjeUGvPenUdZ2tnjwiSAJKeutXdUp3+1erqRLGEOhB6\\nbPMsb+6xBJDrqJ/4co2NfbWBt7gFz/KUtYFjSCPJWWIJc1fhbnxPaSyhrhB1hspAXRi6/iAJjswU\\nEUi91LO80kJZmqVoR3naMCVKJAZA67TJ5Pe92G1nkN2fWSnk+twp7f+CJMjRzzjjuaSG7slxRcDT\\nEEtOfUID9AeHQ4FuNxtZwXEchkqFw3HYbddSnxTDEp3jJDtlic685nWEENjbm26TUITjMCwtzZZ8\\njUtytrpbuNa5BgCoWlWcb54fVGM0mtq19jW8sP8CkiwBZxz3r9yPc41zY88pTELs+rtq0WNgWKms\\nlFbtjgNyCaZEhqpbruGqhbju1Ev5vkIIpL3rSNovjwxGwlmCqN4BuCvg2qZm2AIapzHCNCyV3gTk\\n+0sdCfL7GUah0Rftsvc8yRL4sa8CH1UWoyyCze3csCh5KRQ3KJPS0JIsUQpAURoN7TL14p5ygTa4\\ngbpdx1plTQoXTLj5E0IgvP6Px6qscW8NzsajJ3bNezXxWoslpcnOiHmdUaBZuLKuzjxYArc6llCS\\no3dzilLN1zrXlPzyenVddU1IdMAyLEAA271ttVbVnTrWqmtj3yPqJOjroz7IPi8QhTdJpS8P0e4M\\nbsAzPdVt1+daCJPGkthqIHRXkdhNGP2Oumu6Q68lSiNFDS9LLA1mKEqayU3EaV96uaTLw8Byjy27\\n/nbYHlDL+ippnagDm9uoO3W1ftP8UjGBsriFptscG+f1BGaU/UKYhIoZAsiu06q3Cts8Snsc9Von\\nPZa8JhIaHUki4PsZskxW3Dhn4FxycEmB5jRC51UWOzzH8dcZNrMzDW4nOoe+gPixjwt7FxTnebO+\\nWTrc3426eOLGE2pOY7Oxie9a+65SHXwdQRJgz99TCzBnHCveytRmaaNAczJhGqquAMkYk7xk1aqi\\n7tQnWviyuIO0cwUiDSCyBIJxCG4j9VYBs5yfrXPxhw0tqs3/kK6ZLiRwHDpaMbEhOkIiEkWR0FXy\\nSNZbh65ONXKAfwToGLQBonO1DAtL7tJUAUFkCcKrX0QWHYx/cAFFOscCk+O1HEvKZnVKpdgnRHFe\\nR6e0TXMv3E6xBJDrTZRGiJIIVzpXsNPbgYBAzapho7Zx5NqyLMNWbwu9uKeoU+ca51C1qyOpr2mW\\nohN1cmtP1a7OtTBGHZE4jVWXW0CAM668ZyzDygmwjDxeIZZkYIiZgcBqIBly3pxxpVZWltxQclGU\\nqdZBFDPP9NQ1lamjAYBjOEOTwiRLcBgeqqQoE5mKsZ7poWpX1ftgMDkfWky2Kpaci6L1f+gA/wjQ\\n3ivJErVXAWSCOY5+VsRJjyWvuYRmgaOYVZxgFKYVJ7gd6Rx7/h4uHV5CmqWwDAvnG+eVmzNtvDOR\\n4ckbT2KrJ6sanunhgfUHUHMGLeWi6IDBDfixr+ZyALngrVRW5sZBpzkZaskTf5gzjrpdVzSEhtOY\\ny2sWFZiGLcS6qlLZQqs2AGlU+t2jWRLy9xkn+zyMjhansaJLAFD87wxZPrHp843JwE4IgSiNcgnR\\nJAP8lMDQj74xoe4ZYeakZmpq4Dqc9bcskpkF5gYqNhQ7OuPECUZBT250OtuwbuztGEvCJMSV9hUp\\nJy8yrFZXVUFDr94fBAfYC/YghDQ8Xq2u5lTJSDaaujkWt2RnJmrn1kt9ruO40OdkaA4xE1luTsYy\\nJM1sXvGLEqZhiQYAlUh5plcqt0+dpF7cG9rVp06MxS1JRyuRYAYGczllXac4jXEYHqpOFSWXQRLA\\nMz3UnJrc9wio+VAqkinBhz4tbpIEpmjloZ9PlEbYD/ZzHmtL3tJUn8tJjiWLhGaBkZi3OAHN65R5\\n7ACYiM7x+c//Jd7+9odx992bN621mYkML+29hHYkN5pr1TVs1gfKHbSBv7B3Ac9tP4cok9Wg+1fu\\nx9n62ZHH9hMfnbCjlL1sbmOjtjEXjrk+J9OLe5JPLVIwSLnKml2DYzpoOI2509p0TMLF1ykoxWun\\nxEFPHorQhQT072bZ6wyjo1GApu8zJToAVKAmCkmSHu0KES1OT9T1Af5JRQXKkhryFpgUk9I5Pvu3\\n/4Tv/r7/AXfc89CJpUMtcPJQNq8zaj5uEpR1dKgTPGksWV9v4N3v/r6bei/s+rvY6sp70jVdnGuc\\nU2seJYHtsI2LhxcRJAGSLEHdqefMm8tA/lSmYcLsG0uP8kibFjQnE6cx/NhX6x/NyZjchGd5NzWW\\nTJPc6DM7BPIqm1RIgGYci35O9DqeKZOgYsyK0giH4aHqDMVpjHbURpzGUr7Zrg7YBdlAVVOdg2Gi\\n6RyloekCRZNQ/eeS1EwRS1qbD+BfvOfHbotYskhoFpgZxURnHvM6lOggMxBHHCJjgGDgnOG//tf/\\nE//xP/4HvPji8/jIRz6C3/zN35zzFQ3Qjbp4cf9FpFkKk5t43dLrjkheHgaH+Mb1b6hF8o7aHbh3\\n5V7pLJ+VVyU7USe3cSVjNdPID8/OwiunTbGf+GiHbVX5ozkZ27DRcBo3Re1mFI6b3NBQfZiGpV0b\\nXUiAMz6S+jLMfyhKIznY2qeA0eeUZAlcy82ZkhY/G4MZyvj0OOIBxaRmlLfAOBTpHIyb+OOP/1/4\\n2O/+J7zw0lV89KMfxW/8xm/MdJ4LLDBvzGomOgy6dxUXFrLYAjIOBg7OGf72bz+Pf/tvfwkvvvg8\\nHn/8cXzyk5+c8xUNkGQJLh9eRpAEYIxhvbKOlpf3U8myDFc7V5U9gG3YWK2u5iitxfciTuOc8hYD\\nU9Q01cnpd3GmTXCouxElkTRb7r82zcmQoMrNEBsYBVqngyQYusYzMKXqVkxuSCRmEiEBi1vSbHrI\\nXA49rpiAhEmojJRTkaIX9XAYHSJJE3iWp+ZUKR7q8YKBoebUsOQuHUtIYx5JDaEslnzh//0i/vW/\\n+yheeOnqTb9/psEioVlg7rhZ8zqf+L8/gZ/74M8BAnj9616Pp596Gga/OUpslw4vYae3A0AaW97d\\nujv3OkmaziidRgAAIABJREFU4JvXv4kdv/8Yu4E3n33zkQVen/fY8/dwEByoJMcyLCx7y0M3rDTH\\nMS7JoTkZSmSoskRzMq7pom5L5bJbXUXRNy6zJDeTCgnY3EaGbCQdzeSmmt+hIf5e3FO0EOoShWmo\\nPGssw5IKZNxGxa7k5qQ443CMyQf6yzCNYdq0+JM/+RP85E/+JADg3nvvxbPPPnvLvw8LLDAKxXmd\\nYuIzCzjjePmll/G2R94GZHLNeOXFV3B24+xNuR/aYRtX21chIGAbNs41zh1JMHZ7u9j1d+X5cY4z\\n1TOo2PkCmp7cdKMuDsIDtSnnjKNqVYeuPQwsl9wMU06kmRJKZKjboM/JUCJzq9cO6q7rnaMiRiU3\\nkwoJeKaHOIvRjbqlr2NxS87ZGI6KOalIVYGKPiNSRBNCoGJXUDErkjYNKRKhC86Q781xfIPiNFb0\\nRTrmrElNEc8//zze8IY3AABM08TVq1exurp67OMeF4uEZoFXFceZ1/EDH99x/3eg3ZZV7L/8q7/E\\nI9/zyNzNRMMkxIW9C2pY+67mXWi4jdxjXtx9ES/sv4BMZDCZiQc3HsRatdxZGpDc6G4sFa0ykcFg\\nBhpOQ7l4T3obMsYG/PG+OzEprJCcJM3JUJu7ZtduS2PV4yQ3kwgJ6F0beg1KiPQ5neKxiaIQJqH6\\nd5qV8SwPFbOifGuoO6QHSpObR4LnNLhZSY3v+zhz5gwOD+Wxv/SlL+Gtb114zyxwMqHP6xS7OpOw\\nBB5//HF87WtfAwB87GMfw8///M/P3Uw0ExmuHF5Ra/+yt3wkTij1s/46tuQtlYrPECihoeOnWQrX\\nclUne9JEj5Ic27BhMhOpSNX6GCYhBERuTsYxnaGSxrcaRBWeJLkpJmSTCglUrSoYGHpJT4m/6Opj\\n+kyO/h75sa+83hiYTMJSHxazlO9bJqTht2VYuVhkGzaaTnNmCmFZUjMvSuLb3/52fOlLXwIA/N7v\\n/R5++Zd/+djHPC6Mj3zkIx+51SexwGsHilbGDbWYOqajVEuockSdFzVEB8AyLVy4cAHf/va3AQCO\\n4+C973kvBIRaXKiCRbzbOJNDl0WfnlHBac/fw36wD0Bq+G/UNnIL1H6wj6e3n1YL5/nmeZxvnh96\\nzP1gP6dd75ou1qprsE1bVbxoFoQ4sqM45WmWYj/Yx/Xuddzo3MBWd0tWmYTccC+5S2i6TSx7y8pR\\n+HYEbR5sw1YJWlliR9z7OI0hhMh5XVDXBMAR/xhSfSFxhG7cVVKdehKlz4RxcCWWsOKtoOW14Fou\\nqnYVnukhFansEGWx6p5RcKPKl+68Pku3xjIkZSRMQnW8MA2PXRW1LAvPP/88vv71rwMAXNfFY489\\nNvPxFljgVoIxlosjRAGq2TVU7aqap7C4Vbq+RFGEv/mbvwEA7O/v46d/+qclXVjIOBKmcn6kG3dV\\nwShMZHc4zVK1Fo3a4AdJoGT5TW5itbqaq5CTNw11nCtWBauV1aHHDJMwF0tMw5RrVL8LQddO838U\\nP4fFk1SkaIdt7Pg72OptYasrFdZiEcNkpjpe3alLIZbbNJYYXErq1+ya8hYro78nWXLEi4ZiEHnQ\\nMMaOFNmo49KJOrKoyEwlYEOvQQUzUtEkLzHXdNHyWooh4VouanYNGTJ0YikeYHDZDSLKM+1/6HUz\\nkZUKH0zyvtiGjSAN1DkGaSBj7jFndqMowmc+8xkAwO7uLn7hF37hWMebBxYdmgVOBGjT+Tdf+Bv8\\n4A/9oHTEXVnC008/DcuavtowzEwUAriwf0Fxme9o3IHVyqCVmqQJvnb1a9gPZcLTdJp4+OzDQ92e\\n94N9NWQOSBW0ltuaaGEqOnwTH7cdtdEJOznnY9d0VbWnbteVl4k+MHu7BqMiJu3c6IpH9DwSRCCj\\nt+LyZnJT+cxkyEoH+BX3ng2UzchvgarCVAkkTrnBDMRZrDZXhOPQ0IIkwEEwkM+cRYaziM9//vN4\\n17veBQBYXV3FlStXZrp/FljgpIKq6tduXMM9994jC1Mc+Icv/gPuvvvuqY9XZiZK6+5Wd0v5g9Ts\\nGu5o3JF77lZn8O8GN3C2dhauVT6XQvQqAnlXTRpLyABUl5mneZQwDVVRx+z7vhSLbbS2Wdw69mb4\\n1UKcxkpQYNjMDBkne6anaF9CCEkZi9roRl0IiNJYoht2koqoPsDvmE7O2FM/LsV3oomb3ETVkok4\\n7Rl0VbXj0NDiNMZ+sD8w72YMS+7SsTo129vbOHv2LJJEvq/PPfcc7r333pmPNw8sOjQLnAhQNe6e\\nu+/BH/6nP8Th3iGCToDv/97vxwNvfEC1ag3e9w4BRnY5gDw/myojW90tXG1flQaZ4FivrasFhYHh\\nhd0XcL17HYBsB3/X6nflJJr1Y+/6u6oyAsjq25I3uRyvXoFkjClqGUlEUtWv6TbRcBpoeS1l6kVd\\nK6oikeSm3qliuD1N/ybt3MSp5DWT1Gk7aktFNzaomhYrdPSe2oaNJW8JLbelBjupKkZVWnou51z5\\n4FBgo8CXZIncDIgUtmEruhop+RGlkGiG07zfZLZHohN0bMcYb+45DHfddRf+8A//EIeHh+j1enj0\\n0Udx3333zXSsBRY4iaBNZ7PexFe//FU8+8/PAjFwfv08HnvPY2ozr88sjoslxbW2F/ewF+zh4uFF\\ntZluuS21NjPG0It62A0Gpsor3kppLAGgEg+Cyc2JkxlgQFV2TEd1WrJMdpJTkSpJYdd05XyHVUHF\\nrqjzTYWks1HHqht3lVCBwPhO1a0CdW6qdlXR5WjGV0ecxujEHUkNj7oI0kA91zO90o4PvS8QMlmt\\nO3UVq4lpkYo0l4iahvwMqlZVCtiIVH3f4ixWtDdiHnSiDoQQ0n8Ng8LatEklXQtRCQEgSIMjFLdp\\nUKlU8NWvfhXPPvssAGBlZQXveMc7ZjrWvLBIaBY4UWCM4caNG/iHf/gHAECapvjABz6gKmSWYSkK\\nmwpMxkDKcxSdSwiBa51rCFM5FN5wG6jZNcUrvnRwCU9vPy0pByLFXc27sFHbAIDcYp6JDLv+bo6P\\nW7WqaLmtI685DmmW4iA4wE5vB7v+LnpxT85tmDZWK6vYqG1go7qhfA3KHO7V9WGQwJ2UJEdPboQQ\\nCJNQJnXBodL6J0qh3smizkvNqaFm11CxKyrouKarDDrjLFadmmJA1qmMdC5EkSSQHw59R4SQg7/0\\nHlOljjY8VM2dFPNOaor3T5ZleP/73z/1cRZY4DTANE386Z/+KQDg0qVL+Df/y7+BaZhHKGw1u6YM\\nFmkTSLFk2Hp7EB6oLrrBDFSdqpIP3g/28dLBS2oDaxs2Wl5LJQZFnyqinwKSklqza1Ov09Rpboey\\nw6+LnTSdJjZqG1itrGLJW1Lr2rDro0KNnuTQtehCBbdbLKHkhjomRE2nOKjohok0oo7SCIwxxXyo\\n2BVFDVdJL+fqeQBgc1ut+QQBoUQIiJ7smq6ay8lEpmSw6XFJlshuDJPCEhQLdRraNLOadP16UhOm\\n4bGSGv3+uXjxIn7lV37lln7mC8rZAicOTzzxBB588EEAcg7g2rVraDabUx2jTJygHbVxYfeC5L9y\\nA69rvU5JHEdphK9f/briL7e8Fh5cfzDHh6YFfM/fy7Wfm04Tdac+9fl1Ilkxakdt1YImP5m6XUfd\\nqQ8NbLQ465S1SUEtc6JezToQe1wUB/j1AKHT8fTfEy1C/yH6BwUVUjErAwUrMtIsgjwBKGD5sa/E\\nBah6RsdxTVfO2nBD8bqB2WhoYRLiIDzIDXcue8szBaLi/XP9+nU0Go0xz1pggdOHolDGF7/4Rbzt\\nbW+b6hhlZqJhEuKVw1dUIWKtsoamO4hRW90t5epuMANn62dz9B9af0n6l2hsrulOHUuAvp9MPBh8\\npw0t+cmQ0XJZkYTEBuIsVkyGSX2DDGbkqGqWYd2STo4+wF9UvqS5Gj/xkaSDOKn88voxkIqknuWB\\ngY0VEjCZpHkPM192DEclyZnI0Ik66EYyASY2Bs3OVK2qShbrTl3tOzjjaDrNqawYkixRexRAFrla\\nbmsmL6F53D/zxKJDs8CJw/r6Oj7xiU/g+vXrSJIE9913Hx5++OGpjlEmTnAQSBlM27CxXFnGRnVD\\nzZ48u/2sktW0DRvfufadRySakyzBVncLYRIqGht5AVBAoMWU2vRliYIf+9jp7WC7t42D8EBVfhzD\\nwZK3hOXKMpa9ZbjW8CFx/dpInYZoVbrrfRko2SOuNXVBdDW2eXdySCKZFGFIFS5Mw9JZGqJQ0MBq\\n3akrfjF5wVAwSbJEztP0KXrkowAcFRLQPZUExJEqo05HI+41BQKq2pEoAKnkGcxAkAYQEMpAdloa\\nGnUfKWEi+oEu9Tkp5nH/LLDAaUBRKMNxHLzvfe+b6hg6NZjWWhoQp+LTZmNTKS52wo70COnHgJXK\\nypENaSYyKWbSV9TShUz8xFfCJLQmD6N8kTBKO2xLpS0x8JOpWv210x498M8ZV9dWsSqoO/VBPOmv\\nX8MKRNTJIYEFElcgloMQR9fYeUBf98MkVNS6svOkdbthN1C363AtyezgnOeYHSQI04k6iNJI0f6q\\ndrVUSCBDlmM+ENWQQHQ08ieqWlVU7ap6PH0nyNyUpLOJ7keGzdRhKho8DwMdR/d1oxmeaSWdbzeh\\nmUWHZoETid/93d/Fhz/8YQDAu971Lvz1X//1sY4XpzGe230OcRqDgeHupbvRcGTV+lrnGp648YRc\\nnARw7/K92Gxs5ro7cRpjx9/JSQg33ebYAT7ymiE+LQUe3TDN4pJiQLMy89CRBwaJS7GbMymKogPT\\ndAt02WUaVh1X9Ssb4C8GQt2NfJR0q3IUBx9qXEdgYMr4tPh6RCEzmKEqa6SC1It7SgmPgj9xpom2\\nxsBU0jsJ5mWYNu/7Z4EFTiq+8IUv4J3vfCcAOQdw5coV2Pb01WqCEAKXDi+pbr4u1ZxkCS4eXFQU\\nWdd0sVJZkeuwNs/Zjbu59cgxnLFV+JyZKOOyw53kC0K0mSV54XnFEro2XXhgkjWdQNRavZszTZKj\\nd1+GdUSKoG47xd/i66VZqjo3w7owgFzbPVP63CRCGpLq8046hJAzmJwfpTgT+4L2DO2oLWNIX+yG\\nWBqu4cI0TARxIGlr/YQK6M/yTDhblWYp9oK9XMxvua0cpXoSFO+fq1ev3jKhmUVCs8CJxJUrV3Du\\n3DlZnWIMr7zyCs6dOzfz8bZ727h8eBmAVAy7d/leGNxAEAf4x8v/qIb7NyobePDMg7nFKMkSbHe3\\nc1Wght2AYzoTmYmmWYp21Ma+v49O1FGbYINLr5qW21LD69R5uVnQkxyaR5kmydFpanqSQ7QFMqqc\\nhAJHspc0tzJt8J00uVEqcGBKrrXsM6MOy7Dkjf4tFamS7iR/hExkYIzBYv1AzZDrFE1DQ5tHUjPv\\n+2eBBU4qsizDXXfdhUuXLgEAPvnJT+Lxxx+f+XhBHOCVg1fkesENnG+ch2M6akaTPGQsbuGO5h25\\n+1YIgcPwUBVYkixRG/1JzESJ+tqNuyqZAQYmkURVpmTmZqpfEhVPp6qNUq4sgmYn6fopySnSxSfx\\n3dELT7PE0GmSG9d0YXMbUTaYhSkiywbdG9s8mjzT/BZnHO2wrQpl7aitXt81JEMkyiLUrJoyYiWP\\nu0loaPNIauZ9/xwHC8rZAicS9Xodf//3f48LFy4AAM6cOYPv/d7vnelYmchw+fCyWnjWq+uoOTUI\\nIfDk1pNKVtM1XDx05qFcNZ06MzRYbnIT69V1NNxGTpzAMizlMs8ZB5hc8NthGzd6N7DT20Ev6am2\\ndMWqYNmT1LKaXRvMf6SDIUZ9s04b0+MGJ6LiUTCha6DBQVLuGhaUKMj4iY+D8AC7/i52ejvSiyfp\\nKb+FMhBHvGbX1NwRURtmHYAnKggF7rJzV2IJIlEVTJObAMurpBFtQFHYCnQJpXoDGZAoAJNMNL1G\\nhkwJCcRZrM6N6CPjaGhl3gJhEk7lLTDP+2eBBU4yikIZSZLgJ37iJ2Y+3ra/rSr0VauKJW8JgDRX\\nJhl2Bob12nqOtkxzFDR/SQqW5GFC4gTUDSgqMxIdqh21lYwwAOWxUrGlmiNRnchXhToKFFPmJRCj\\nr7/USaDz11W6hhWbiLobJAHaURt7/h4Ow0N04k5uDrLsHKlbZXFLKbsV5finAbEDyKyaqMPFZIpo\\nab1EDu0rbxuwXNLAGAPnMnZQ4qkL0yRZopIYSkTBoBK7NEsRZdJE1WQmoixStDSDGxPT0KiQphfx\\ngiSYin5WJtR0nPvnOFh0aBY4sfijP/oj/NzP/RwA4MEHH8S3vvWtmY5zGB7ipf2XlCv8fSv3wTIs\\nXDq4hKe2n1Jc5wfXH8SZ+hn1vCiNsNPbURtk4kNPMlznxz52/V3sBXvS06TfKicFm5pdkwooMwQU\\nWrSLHjvzHMbUJa/TTHYkaAEuDvAXQTQ7Gkb1TO9VdaDWBQVGVfd0hbJh15RmqeKYF2ljFFSJipak\\nyREXbvpPd+GelIZWdIGe1ltgXvfPAgucdOhCGY7j4Pr161MLzQByI/rS3ktKPv6O+h2o2lWEcYjL\\n7ctqDWm5LaxWB/5mmcjQDtu5NYbmASd5zW7URTtsoxt3B+uaQE6xbaZYwo7660xLLx4HUpukAk+Q\\nBEoMoUxiWQd1XqhwSGaqw0Rd5o1MZEqWmeYby0CJFV1rWZcnTKQXEF2P/nlxxlGxpMJaJ5IKdTRv\\nmopUzVCRfUDdrqtCGu0nRn3+mciw5+/luklNt3lkTngY5iHUNA8sEpoFTiza7TY2Njbg+5Jb+o1v\\nfAMPPfTQ1Me5sHcB7bANAFiprOBc4xy6URdfufwVRJlceM7WzuKB9QfUohAkAfb8vRw3ecVbGbuZ\\nJLrQrr8LP/ZzczJ1u44lbwl1p6420pToFBXZZsEwM9FpVcxogF//IX8WnaaWk4NmTNEHiEamvyYl\\nORQsdQ+ImwldoWhccgP0TT9FcoSSRh4F5PVQPHeTm0gzWb0jszc9qBUDM70f44b+j2OYVrx/vvnN\\nb+JNb3rT2OctsMBpxMMPP4xvfOMbAIA/+IM/wIc+9KGpj0FiLoCUdL+reReEELjauaq8SGzDxrnm\\nOXVf04yEvq5X7erYwlgmMmW0rEvxUpeZjJY54zkKsa7GVlT8mhTDzERnWbfLFMj0JEdnIxCKCmS5\\nWAKmOhk0kzPPWaFR10FD/vrnUYTFLaW6GWfxkXhOKnkAFDtCh2dKeWc/8REmoeq0KfNPAQgmUDEr\\nypfOYMbYBKUsqZmUugbM5/45LhaUswVOLBzHwT//8z/jiSeeAADUajW8973vneoYfuzjeue6UrQ6\\n1zgHgxn49vVvoxNLWc2qVcWbNt4E0zDVc/aCPXUMgxlYrayO3ESmWYp9fx9XO1dzHjXk/rtR28Ba\\ndQ0VqzIw8mSDoEELs+6vMy8zUZIbjtNYUQ6K6izkn9CO2jn1HT0J0M/XNV00XGn2ueQtYclbUpQH\\nokkUoZRp+sOsNGtDrfp5UOqK0GkRJNkMHH0fFVWNSTlO6qSo7lw/WSSfGFKmI0qaTv8ggQHq3tC/\\nKb55/7kGNxS1bVjSeRzDtOL9U6/X8Z73vGem93GBBU46ut0u/uqv/gqATPY/+MEPTvX8TGS40b2h\\n1sRVbxWe5WHP31MFM854TqKZ5if1AknNro1MZmhOZs+XZsK0XjDG4BjSU4Y2r7rLvO7T5lmeUogk\\nyeZ5mIl2oo7yB9MpbKojzZhKrpQgTIkCmW6A7FmemiWt2TVU7SocczBvWGpb0FfppHki6mrEaazo\\n2fMumBG9mN5biw8+4yPvmxj4pVGxTE9I6bMIU+mHI4RQcZPeO4qz9JkSHZriDdHTaZaL1EqH0dDI\\nWFVnI4RpqKS3x+G49888sOjQLHCi8ZnPfEbJbG5ubuKVV16BYUzeDr98eFlV1OpOHfcs3YOX9l/C\\nszvS/dZgBh4++zCWvWUAUKZoBEpmhm0eyU9mq7ulnOyBgaIJudXPogE/7PXKOjqTiBMQdN8B4ipT\\nNUxXZdOveZoBfjovvWI46bmRXLPezbkZnZxJOzcQkHMxfRlnHVR1tAzryMA/ZxxJmij6gR/76nUS\\nkcCAkZPbHkdDm9Vb4Lj3zwILnBZcuXIF58+fR5ZJAY+XX34Z58+fn/j57bCNK+0rAGRH9u7W3YjS\\nCFfaV9T6tlJZUTM1JKmsU0Zrdm3k2hmlkVLCzPlvcQtVuzpRZ2dS6MWv4s+kLIHiAD+AI50dJcpC\\nhbwpBvhJYZTWUZKDngTUydGFB25GJ4cSUOqoDEsUyWCTVNB0EK2NqNo6FZHeJ3oP2mFb0d/CJAQE\\n4FquMofljI+koZV1akhIYhSOe//MA4uEZoETjSRJsLm5ia2tLQDA5z73Obz73e+e7LlZgqe3n1YL\\n7etarwMDw1eufkXdzHc178L9q/cDgHSoDw/V801uYsVbGbrg+rGPre5WzksG0PxkvOWJOarzQJmZ\\naCpSZTZJFbNJVM1INIAkQKnqM+u8znGSHHrdsuA4D0ya3OgCDfr1UyWTKqg5ul0/IdK7ZdS1SUQC\\nm9lwLVe5SI+ioc2S1Bzn/llggdOG9773vfjsZz8LAPit3/ot/Nqv/drEz33l4BVFK1v2lrHireDi\\n4UUlhOJZHjbrm2CMKWnmSZOZJEsGXjI69Ypz6SfT95J5taCv1/pPnMay+9CPL5MkPtQtsbmtfL10\\n6vG0lGhKcnQz0EmTHM74Efnoec8LES2NuidlSNJEze4SMwSQFGNSTqPZU9Wp6hfUKKaTX04mMgRx\\noOZwqCtnchNNp1n6vclEhv1gPyfiM0lSo98/v/3bv41f/dVfne4NOiYWlLMFTjQ457h06RK+/OUv\\nA5CL44/8yI9M9Nxdf1epzrimi/XqOr55/ZtK771u1/HgxoNKOrEdtdVzLW4N7czEaYyt3hautK+g\\nHQ0GPS1uYcldwmZ9E8ve8sTD2/MCBQ7d+FE3bAOQS0qAQRucWunkh1Oza0oNTFf+ouQoTENFOZjE\\nTFSnflGipJRpCi35IgTEEfpDju5wTPO2SWlp+nunVyTV78HzMs79SiTRQQxuwDSkNw6ZbiZioHZD\\ntEjqthUDPXHn9UA5zjCteP9wzie+fxZY4LRBCIFPfOITAICrV6/il37plyZaN4IkwE5vB4C8D8/U\\nzmAv2FNeNJxxnK2dhWmYiNJISTfTv9Xteuk9Sspnu/4uunFXxRLOODzLw7K3LL3JjJs/I6KD1kTq\\npKi12xwkJdTxUPRckY8x1LmmBIaoUiSd7ye+ootNYyZKXXzqcFNnguIJrc9l8YSUKqM0Uq9PEtgU\\nx4a97qTvmx5LqdhULCJy3u9MMbmGJ6lUx9Rp53EW4zA6VPM29Hh6j21uwzalqp3B5cxOJ+4giAMl\\nJBBlUSkNTdHPsgH9LEojxRQYBv3+uXbt2sT3z7yw6NAscOLxla98BY8++igAOUdz/fp1VCqjKwlC\\nCDy786yS19ysb2Iv2MNL+y8BkG3cRzYfQcNtKNd6gm3YWPaWjyxqaZZiP9jHje4NlRQB/YDl1LFW\\nWUPNrr1qal7A8AH+UaBFi35ogLHY3TmOOEGZMMEkSUfRBHQaKl0ucZih8ldEkZJRBqpakocNzdnQ\\nACxjTG0A6N+IOkEy3TQgm4lMyZ+6pqu6NcWNUNFbgDE2tBIHzHb/LLDAaURRKOPrX/863vzmN499\\n3rX2NSXvX3fqaDpNXOtcU2sTSfmXJjN9ERgdQgj4sY/D6BBBPChQMMZgcxsNp4GKXXlVYwlQPsA/\\nDrS+G9wABI4KE/T/PgtISVJf1ycVJ0izNEdVKxvQH3VNOlVtVmsBAs1e+rE/tHNDMUFAqNis09ky\\nkcE1ZDffMiwVS6iwRwkxKbJ5ppxNqjt1KUrk1I8oqwohsBfs5To1NMdUhnkJNc2KRYdmgROPzc1N\\nfPzjH8fOzg6iKMKDDz6IBx54YORzOlEHWz1JszG4gapVxbO7z6qF5PVLr8eZ+hnpn9KvsgGSLrbi\\nreQWL/KTuXR4CVu9rcGQJhiqVhWb9U2cqZ6RevQ3uVpBw4DjBvh1cMbhmI5qRzedJiq2VtHiA0oX\\nDSDq4gSmMQgg5IkwyXnq4gS6vw5RBPRkhd7vXHWvfx50DsVB/SKU34zWydErfsB03gu6Z88wXwWS\\ndCbDTap40TUAUMOrJPXqmA5MwxwMrorBa4VpiCAOFIWNZqZ0oYVh3gIWL+eIz3L/LLDAaYTjOHjy\\nySfx7W9/G8BkQjNJmuB697pad9Yqa9jqbal1oGpXsVJZQZRGuVhicKM0mYnSCLu9XUlV1jaSFrfQ\\ndJuSqmzNJsM8LSYZ4C+Chshtw851YDjj4HzgcUbmkeRPQ10U3fMMmF2coBt3leKYPvdDcYrWbop9\\ndA6qY4Ry3zI6J3pNP/GVnw8lEPrrTALqKumdG8akdxm9PokkWNxS1LMoi1QyYnLZ/SMfIrIDsA1b\\nykGzAR3cNmwESYDDcNDhob2D3tGnTg197sDoTs0s9888sejQLHAq8LGPfQy//uu/DgB47LHH8OlP\\nf3rk41/ce1HNwzTcBi4fXlbBZsldwlvOvgWH4WGu0+KZHlpuK7dI+bGPax1ZndMXecdwsFpZvenU\\nMhrg1wPOOEwzwD8rhs3rEAVsFpR1dIaJAhTncSaZCyIQjYKqfrPIWo/q3JB8c5Il6nXo95TU0GaA\\nMSaDchyqZEip3DBTKeoomkffzJOOV3SBHibdqd8/73vf+/CpT31q4utdYIHThD//8z/HY489BgA4\\ne/YsLl68OFIoY9ffxVZXFscc04HDHdXRN7iB843zkjoaD2KJwQ3U7XpuXUmyBAfBwZGBf84lJY28\\nRW4Wimv2JHMnOm1WdWFuwnmVdXSmEScoomgRoAsUFNd6Krrp3ZxJpa4p1uoy0tN0cqjL4id+ziyV\\nQB5wYRoqCh9JOtP3zTEc1bXpxT3l8UPX1Yk6YIyhakoT2KpdRcWqoOE01OcphMB+sJ+zGqBEtAj9\\n/nkspnIwAAARj0lEQVS1hWYWCc0CpwIXLlzA61//egCAYRi4cuUK1tfXSx8bJiGe2XlG8XDjNMZO\\nIPnPFrfw6OajCNIgZ5RVsSpouS319ziNcb17Hbv+bm7TSnMya9W1mzKkqVfLaGEaB6qI6e7StxJE\\nVyvz2JkVk5iJHjfJKaqrTYKiAakeCHWTNaqgGUzyoOmxBjdUkCKlGwrkVA20uIWqU0XVqh5JUjOR\\nYdffHZvUFO+fq1evYm1tbeL3Z4EFTguKQhmf/exn8QM/8AOljxVC4KX9l9RGr2pVFY0ZAM7UzijJ\\nXILJzZzCVCYydMIO9oP93HpOQ9wNp3FTYolOfR3XdSHoCmQ3S2FyGlCBh9ZXPfGZxV8HmMxMVLc9\\nIOGBSV+POvq68MCkBbMwCXMUs+K/+bGvZmIcw1GmzqmQ8cUzpUJakAToRl3V6Q+SAJ24M/DDc5eU\\nrDfR0CZNaqa5f+aNBeVsgVOBpaUlfO5zn8PFixchhMCdd96Jt771raWPvd65rroxYRJiPxzIMN+3\\nch8YY/mb1qqqZCbNUuz0dvDywcs4DA9zbeym28SdzTuxUlmZW9eDTBg7UQcH4YHS+I+z4QuoxS3V\\nQtcH+KetDt0s5KhaRE3oD3A6pqOoUZzziWkHRL0aJU6QiUxRHogyR3QwxhjAMLR7JIRQnGuix+n0\\ni1EDqnStOs9aCOlpQzQC27AhMOA8c8bBwQdJTxYpyU7TMJGk8jGmYarqL0ls0wAubTiOeAskR70F\\nivfP+fPnh94/CyxwmlEmNPOjP/qjpY/tRB0l4190ta87dbiWqyg9gBRXoWRGCIFe3MN2b1sZIxJc\\n08VKZWWuA//F9bHoE1MGfe3SiyXDvMRebeiCLUV/nYpVyXm20do7LnEjavIocQLykHFMB1W7iobT\\nUK9FXZ5hr0OfA1HD6bj6Gj2Mrkaxi2hpSiQGQv5bXxFTCIFe0kOYhippEkIgSGUyxMBU14b2Oq7p\\nIhWpouvR+SRZouKka7pKxQ6A8vXRE+5bKTSz6NAscGrw+7//+/jFX/xFAMCjjz6qbigdmcjw5NaT\\nkqqVRLjRvQHLlBu7FW9F0QMIdbuOulOHEAIHwYF0fNZoaAwMVbuKjeoGGk7j2EPm5P0y6wB/ThL4\\nFIE2C2UeO/MUJ+DgOdU0qmBOiqLowKhOzjC3bqr8EVeZZoN0BRuTm0iyBL24p94Hohva3JYB3R4E\\n9ElcoCe5fxZY4LWAr371q3jkkUcAyDmAa9euoVo9OgitSzUHUYCqIx9jGlLSP9e97yczgCwq7Pl7\\nuVgCyGJUy2spv5Dj4LgD/McVTbmdUdbRGes5NgK6OIFOX9NV04i2Nimoi6P/f9jnQV5mNItJiNNY\\n/j4NIIRMelTizfoznsxCKqTBa5pJ9TM/9ZFmKRzDQctroeW2lGErA8NBeJBL1Gn+llC8f14toZlF\\nQrPAqcHu7i7OnDmDOJaLxtNPP437778/95jt7jYuty8DAC7sXUDVqgIMsJiFe1fuzW1AG04DNbuG\\nbtTF1fZV6eisBQXHcHCmdgZL3tJMwYdoQ2r+ZYK2NQ300c807erTijIz0XnM6+hyyzQcSnzuSZMo\\nSprGJTl6cKXvAPGnw1RKhpI4AICcS3aSJkraM0WqjM1sbqPpNmWl0nLBGR9pmFa8f5555hncd999\\nM71/CyxwkiGEwBvf+EY888wzAIA//uM/xk/91E/lHhPEAV4+eBmANNWsWlWlLtXyWrkuvW3YqNpV\\nJFmCfX//SEeGc46m00Tdrs9MCdaTl1FdFx168nIcafvTgnmYiRZBBSg9ySkyCiZFkapW5rlG4gi6\\nWbOuhhalkYqL1MlX9Mc0Qy/tIU5iZJBeaBD9jqG3gpbbUnM2B8FBjkrpWVI1jY477v65GVhQzhY4\\nNfA8D1/72tfw9NNPA5A0mne+8525x1w8vIgkk6o03agLz/KQZRnO1s/mpAhbbgsWt3Dp8BIuty8j\\nSPMc6I3qBu5s3TnUbbcMaZYiTPoKZGFbiQ6MUiAzmCGleq0qmm5TVdVpFua1HoCAAa2LkgaiRhRp\\nZfR+Ed1jFKhLoycatGHgXFYxSRFtnLIbHYfU3MI0RJzGatNBtAk6dzq2mqHpD/yDQdELknTQ9qfr\\nEhCg06DATLQDqs5VrEouOEdppJTYJrl/FljgtQDGGPb39/H5z38eANDr9fAzP/Mzucds+9uqm+7H\\nPhpOY3Cf2YNqNFGh9oN9bPe2c7OZnHHUnBrWq+tTdWX0jTcVPajDMMqJnjbWpDKmK4otYslRijAp\\nsZFUsWd6cAxJi1br9ASxhChsunhPkiVgYMrbjApno0CdeFJz60Zd5SVHazrFP6Kak++OwSVl2TM9\\n9TswqO9PJjKYxkAYIc2kymiWydfsRl2047aKXdSRoQIZnYNjOkfuH9/3j9w/NwOLDs0Cpwp/9md/\\nhh//8R8HAPyLf/FOfOpTn0WaCggBpCLBXriDg+QGvnnja9isbwJMqpfdtzqoRDfsBtpRGze6N44M\\nabbcFjbrmyPNpQinYYD/NGOYMMGslTg6pv5/ABNRN0i2U+/mcMaPdG50IQEKLKlIwSGDMA2BJlmC\\nNE0hmACHlEutmBU03H7XMe6WukDr9887vu9R/OX/818g0gDIEoCb4IYLo7YJbh1Vt1lggdOEF198\\nEffccw8A4N5778ff/d2X4bpVCAGACRxEe4hZG5c7F7HirUh5WxHjTPWMut8dw0EqpD9ZUfHQMz0s\\neUsTDfyfhgH+0wxdnCBHYZuQ6leEEOL/b+9uduO2zjCOP+eQM5wPaWTHkWSnSA20QLtpF6mLpl0E\\nKVB0l1WBLAqkQNsrKLJpbyt30F1XvYIu6gBtgsRNZMcjzXBIntMFRYoajeQRRXvmSP8f4IVtiZJs\\njl69h+9HfajW7M1aZyCNkalL1JoLTqulzlUCJJ0NEqgO2arStCROZGXL0denawKcXP1UaNQbaX+8\\nr4NxOXip2XM8iAfaG+yde/38+Ifv6h9//0yjQfRaYwkJDW6V2WyuTz75kz7++A/68MPfXvp236Rf\\n6oX7Ss/S/+q9h++VfTRekinHcDZfoFJZfvZo59GlC6UknVuG2Gzwu0rP9uoT+Jsu50J3Lkt0rpvs\\nLI9Add6dlbO9osyjmeQ0p5ZVyY3zrj4hLtxpqYlcffo2y2d16YDV2ROsasP48j2609+RLaz++PuP\\n9Mnvfq3ffPDepV+XHe4r3n2saHTIyS5uJe+9Pv30b3r//Q+vjCXH7ki2t9DL4hsd7hzWCYoxRieL\\nk3NPZKTyBP3+8L6G8eV7yZZLZ9f5vtPsf1me8IjNWdWr06Zfx3lX72irkpzlkubL/s+rJKcqVZPK\\nA9fq8Mt5p3k2r4cezLN5vZPGGls+CcrmWrhFvZsmicqnQA93yh17zY89iAeaJBP99S9/1gdPfvDG\\nYgkJDW4N57yePy+Upuvf0gtN1RvPdZxNy5G4/uIp2qPdR9pL9i5s0KWB/+5Z1a9T/X7db6XNUrbC\\nl0mI8ef3OVQldMuqP69KHaqStTqZPn0S6FxZTpAXeVl2dtrAGUexeqaswx73x3WyZIyRXKGd6VOZ\\n9Nu1/z3scF/JwROZ17DLCNiUNrGkMDONJoXyxqLcJmut3hq8tbJMmQb+u2dVv04zLqyjSnKqapDl\\nJKc5gnr5/rDG1j24eVEmNU6uHiRQ7bKZF/O6vPk4Oy5HQxeZelE5TXUYDzUZTDTpTzRJJuX0TFdo\\nPP23bHq09r9HF7GEhAa3gnNe335bKMuufzun/lhf+38pbvwA2bM9Pdx5qAejB/WJNw38uMpNlonW\\nU9Vcodzn9ftUJ61XLRNtJjbyp8Mm3EKLfFGf7qZ5quPsWCfZSbnsLe7XteAy0m5vqPvTp4rykys+\\ny9Vsf0/Jo1+R1OBWuEksKUyqk+hL9eKz14I15WLMe8N79euWBn5cZXmZaHN/2que1tU7yopy4EDm\\nytLk5SSnOaimuROpujer/pnUpXWvTlqkSvNU08VU08VUhS+UxIn2+uXwmWFvqIPhA31v8bXiDcQS\\nEhoEz3uvo6PrnaYtm+uljvRU1li9PXxbB+ODetxi1cT3KtVW4DqBeY1bnRGWNstEL0tyKqsSnebH\\n8t7XOwO8K5OtWT47m05jpFE8Ut/29G5xpIlff9rOMjvcV3L4C37IQtC6iCWFnSnrfSOZsx1m1toL\\n5adXqfpfmk9hAOliv86qCZnLqh1qeZFr4RYXEqOqtKw5jU1SvS/He18OtcnT8rCsWGiWz/S/43KH\\nkvOuXAI7mOiXg6EOovb3601iCQkNgjefOx0dtd8yX/nO/kf3xuV0mus08FdN/AQdtHGd4QTVD0R1\\nudqKpz/19DWZOrmphgQ4lW+fulTfzcspe28b6Sdx+0EIlf7BzxWPH974OsCmdBVLiv6RJuOB4iim\\ngR9vzLmpnEvlbKveNnNZvR9n1dOf6r6UV33NWT6Tc07zfF6XOR/Nj/Ri/kKPB2N99OD7N/462sYS\\nagQQvOPjm/8wJkm75kCFf3Hp39PAj9fBGisbXbyXLlsmWvhCfX82Za9Zd13X4DeSnGostJeXK1x9\\nUpfEiWSkR26qemvnDeQvPyehQdC6iiV9vydrs0uTGRr48TpEtrynEp2fnNfs11keUlDEZwl87vK6\\nJ6dKdupkyJRVKMN4WK+ayF0ub7wG8UCu7/TT8V4nX0fbWEJCg6Dluddi0c1DRlP05V0k2YIGfmxc\\n3dypSD2dL19sDidY1a/TTHJyn0tO9X088APlLtc8m2tovB7k3dzXbvZMLpsy0hlB6jKWFJmVK4xs\\nVF6PBn5skjFGsYnPLXutVP06qxaK1ss/i9PkxufKlNU7bSbJRItioWk2VZa+0OPBaMVHv762sYSE\\nBkGbzbo5UaskfqLdUUQDP7ZaM9nRUqXjqn6dwhX1eOfc5YqjslxyNJtJF6sRWiumX8je/9Gr3xDY\\nMl3HEpf1NE5o4Md2M+Z0b40u9vwuL5euflXlZlWSM+qNdL+XSMW0s8+rTSwhoUHQiqLbFrBFnuto\\n9l2n1wS2RdU0arwpJ6OtMeziWtcv5p1eD3hTuo4ls0Wq9OT6k56AbdeP+optrDw6TXKiXIPs8nL9\\nNtrEEhIaBK3zkRaekzTcXs1+nUSJko4HWfgVzadACIglwPqaaykkaZA+k24+T6PWJpbQiYagdf4k\\n3zD0D3eHN90mNOyiQaiIJUB72xBLiD4IWhQZaY2lZOvaSUba3dnt7HrANsuyF8rmzzq7nokGnV0L\\neJOIJUB72xBLeEKDoA2H3d7CXV8P2GbRzjtbfT3gTSGWAO1tQyzhFYegxbFRv99NrUCSGMUxdc+4\\nO2xvR3a43821hvuMbEawiCVAe9sQS0hoELzxuJvbeDTi5YC7J959vFXXATaFWAK0t+lYwqsOwUsS\\noyS52WlYF9cAQhSNDm98smaH+4pGhx19RsBmEEuA9jYdS0hoEDxjjO7di9TrtQsivV75/iw/w11k\\njFFy8ES2v9fq/W1/T8nBE14/CB6xBGhv07HEeN/59HVgI5zzev68UJquf0snSRmArCUA4W7zLlf6\\n9T/lZutPqrHDAyUHP2NcM24VYgnQ3qZiCQkNbhXvvdLU6/jYabG4/NZOEqPRyCpJDKdpwCnvvYqT\\nr5S//PzKYGSH+4p3HysaHfL6wa1ELAHa20QsIaHBrZXnXrOZk3PliZu1RtaW4zSZQANczWVTFdMv\\n5Iu5vMtlbCwTDRTtvMM0M9wpxBKgvTcVS0hoAAAAAASLoQAAAAAAgkVCAwAAACBYJDQAAAAAgkVC\\nAwAAACBYJDQAAAAAgkVCAwAAACBYJDQAAAAAgkVCAwAAACBYJDQAAAAAgkVCAwAAACBYJDQAAAAA\\ngkVCAwAAACBYJDQAAAAAgkVCAwAAACBYJDQAAAAAgkVCAwAAACBYJDQAAAAAgkVCAwAAACBYJDQA\\nAAAAgkVCAwAAACBYJDQAAAAAgkVCAwAAACBYJDQAAAAAgkVCAwAAACBYJDQAAAAAgkVCAwAAACBY\\n/wdLGuwKm3ZUhAAAAABJRU5ErkJggg==\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1120x480 with 2 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        },\n        {\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1120x480 with 2 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        },\n        {\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAzQAAAFpCAYAAABK/W13AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsvXmMLFd59/89tVdX9TbTs9+5ixds\\nsH29X7OFIF4UBWSICKujEIcIghUhlogoBCuWISQEgoWU8IZEDsHkpyCwiHgjbBaR3wtZML423hds\\ng7nrrD1Lb9XVtZ73j7rnTFcvs925d3quz0dC+HZ3na7u6TpPPdv3IZRSCoFAIBAIBAKBQCDYg0i7\\nfQICgUAgEAgEAoFAsF2EQyMQCAQCgUAgEAj2LMKhEQgEAoFAIBAIBHsW4dAIBAKBQCAQCASCPYtw\\naAQCgUAgEAgEAsGeRTg0AoFAIBAIBAKBYM8iHBrBnuDgwYP4j//4j0299tvf/jamp6dh2zYee+yx\\nc3xm5wZCCH75y1+et/e74oor8OMf/3hTr93K30IgEAgGnZfy/nfPPffgta997TlZ+8c//jH27du3\\nqddSSvG+970PxWIRR44cOSfnI7iwEQ6N4ILj4x//OL70pS+h0Wjg2muvPWsD9PrXvx7/9E//lHrs\\nfDscG53P2fLMM8/g9a9//VmvsxUDJhAIBIPAoOx/x48fByEEYRjyx86lw7Gd8zlX/M///A9++MMf\\n4vTp03jooYeELRFsGeHQCC44Tpw4gSuuuGK3T2NPcD4MlUAgEAwiYv8bHE6cOIGDBw/CsqzdPhXB\\nHkU4NII9RxzH+Ou//mtcfPHFGB4exrve9S6srKzA8zzYto0oinD11Vfj4osvxnvf+16cPHkSb3nL\\nW2DbNj7/+c93rbe6uoqbb74ZIyMjKBaLuPnmm3H69GkAwO23347//u//xoc+9CHYto0PfehDeN3r\\nXgcAuPrqq2HbNr75zW8CAO677z5cc801KBQKePWrX40nn3ySv8fBgwfxhS98AYcPH0Y+n8e73/1u\\ntFot/vzf/M3fYGJiApOTk/jnf/7nvp+91/kAwAMPPIAbb7wR+XweN954Ix544IG+axw8eBCf+9zn\\ncPjwYViWhTAMU1ks13Vx6623olgs4uUvfzk+//nPd0XKHn/88a7P4jgO3vSmN2F2dha2bcO2bczO\\nzq77txQIBILzyW7vf/fffz+uvfZa5HI5TE9P48477+TPMdtSKBRg2zZ++tOf4rbbbsNPf/pT2LaN\\nQqEAAPA8Dx//+Mexf/9+jI2N4bbbboPrugDWskR33XUXRkdHMTExga9+9av8PZaXl/HWt74VuVwO\\nR44cwYsvvtj3u+p1PnEc4zOf+QwOHDiA0dFR/N7v/R6q1eqmvvvZ2Vm8/e1vx8jICA4dOoS//du/\\nBQB85Stfwfvf/37+Of/kT/5E2BLB1qECwR7gwIED9Ic//CGllNIvfvGL9KabbqKnTp2irVaL/uEf\\n/iF9z3vew18LgP7iF7/oeWwvlpaW6Le+9S3qOA6t1Wr0He94B/2t3/ot/vyv//qv07vvvjt1TOd7\\nPPLII3RkZIQ++OCDNAxDes8999ADBw7QVqvFz+HGG2+kMzMzdHl5mV5++eX0y1/+MqWU0u9973t0\\ndHSUPvXUU7TRaNBbbrmla/12Os9neXmZFgoF+i//8i80CAL69a9/nRYKBbq0tNT3u7z66qvpyZMn\\nabPZ7PqO/vRP/5S+7nWvoysrK/TUqVP0qquuolNTU6nj+32WH/3oR6nXCgQCwSCx2/vfj370I/rk\\nk0/SKIroE088QUdHR+m3v/1tSimlx44dowBoEAT89V/96lfpa17zmtQaH/nIR+hb3vIWury8TGu1\\nGr355pvpJz7xCb6+LMv0z//8z6nv+/T++++npmnSlZUVSiml7373u+k73/lO2mg06FNPPUUnJye7\\n1mf0Op+vfOUr9OKLL6Yvvvgirdfr9G1vexv93d/93b6flX0fURTR6667jn7qU5+inufRF198kR46\\ndIh+//vf7/k5hS0RbBWRoRHsOf7xH/8Rf/mXf4l9+/ZB13Xceeed+Na3vrXt8oHh4WG8/e1vRyaT\\nQTabxe23347//M//3NIad999Nz74wQ/ipptugizLuPXWW6HrOh588EH+mg9/+MOYnJzE0NAQ3vKW\\nt+Dxxx8HANx777143/vehyuvvBKWZaUidpvh/vvvx6WXXor3vve9UBQFt9xyCy6//HJ85zvf6XvM\\nhz/8YUxPT8M0za7n7r33Xnzyk59EsVjEvn378OEPf7jn8b0+i0AgEAw6u7n/vf71r8dVV10FSZJw\\n+PBh3HLLLVuyN5RS3H333fjiF7+IoaEhZLNZfPKTn8Q3vvEN/hpVVXHHHXdAVVW8+c1vhm3beP75\\n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\\ngg==\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1120x480 with 2 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        },\n        {\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAzQAAAFpCAYAAABK/W13AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsnXmMJGd99791V3VX9Tk9587Ortfr\\nA2OvD3y8kBDEi6KADBHhdBTiEEGwIsQREYVgxTKEhECwkBLekMghmLyKBYiINy+YQ+QV5AIfOL69\\nXt+zO8fO2XfdVc/7R+3zTFd3z7mzOz3r5yNZ8s5UP/V0T1f96nd9fwIhhIDD4XA4HA6Hw+Fw9iHi\\nXm+Aw+FwOBwOh8PhcHYKd2g4HA6Hw+FwOBzOvoU7NBwOh8PhcDgcDmffwh0aDofD4XA4HA6Hs2/h\\nDg2Hw+FwOBwOh8PZt3CHhsPhcDgcDofD4exbuEPD2RccOnQI//qv/7qlY7/zne9gcnISpmnikUce\\nOcc7OzcIgoDnn3/+vJ3viiuuwE9/+tMtHbudvwWHw+EMOq/k+98999yDX/qlXzona//0pz/FgQMH\\ntnQsIQTvf//7USwWccMNN5yT/XAubLhDw7ng+MQnPoEvf/nLaLVauOaaa87aAL3hDW/A3//936d+\\ndr4djs32c7Y89dRTeMMb3nDW62zHgHE4HM4gMCj3v5dffhmCICAMQ/azc+lw7GQ/54r//M//xI9/\\n/GPMzMzgwQcf5LaEs224Q8O54JiensYVV1yx19vYF5wPQ8XhcDiDCL//DQ7T09M4dOgQstnsXm+F\\ns0/hDg1n3xHHMf7iL/4CR44cQblcxrvf/W6srq7C8zyYpokoinDs2DEcOXIE73vf+3Dy5Em89a1v\\nhWma+MIXvtCzXrVaxc0334xKpYJisYibb74ZMzMzAIDbb78d//Ef/4EPf/jDME0TH/7wh/H6178e\\nAHDs2DGYpolvfvObAIDvfe97uPrqq1EoFPDa174Wjz/+ODvHoUOH8MUvfhFXXXUV8vk83vOe98B1\\nXfb7v/zLv8TY2BjGx8fxD//wD+u+9377AYCf/exnuP7665HP53H99dfjZz/72bprHDp0CJ///Odx\\n1VVXIZvNIgzDVBbLcRzceuutKBaLuPzyy/GFL3yhJ1L26KOP9ryXdruNN7/5zZibm4NpmjBNE3Nz\\ncxv+LTkcDud8stf3v/vuuw/XXHMNcrkcJicnceedd7LfUdtSKBRgmiZ+/vOf47bbbsPPf/5zmKaJ\\nQqEAAPA8D5/4xCdw8OBBjIyM4LbbboPjOADWskR33XUXhoeHMTY2hq997WvsHCsrK3jb296GXC6H\\nG264AS+88MK6n1W//cRxjM9+9rOYmprC8PAwfvu3fxv1en1Ln/3c3Bze8Y53oFKp4PDhw/irv/or\\nAMBXv/pVfOADH2Dv8w//8A+5LeFsH8Lh7AOmpqbIj3/8Y0IIIV/60pfIjTfeSE6dOkVc1yW/93u/\\nR9773veyYwGQ5557ru9r+7G8vEy+/e1vk3a7TRqNBnnnO99Jfv3Xf539/ld+5VfI3XffnXpN9zke\\nfvhhUqlUyP3330/CMCT33HMPmZqaIq7rsj1cf/31ZHZ2lqysrJDLLruMfOUrXyGEEPKDH/yADA8P\\nkyeeeIK0Wi1yyy239KzfSfd+VlZWSKFQIP/4j/9IgiAg9957LykUCmR5eXndz/LYsWPk5MmTxLbt\\nns/oj/7oj8jrX/96srq6Sk6dOkWuvPJKMjExkXr9eu/lJz/5SepYDofDGST2+v73k5/8hDz++OMk\\niiLy2GOPkeHhYfKd73yHEELISy+9RACQIAjY8V/72tfI6173utQaH/3oR8lb3/pWsrKyQhqNBrn5\\n5pvJJz/5Sba+JEnkT/7kT4jv++S+++4jhmGQ1dVVQggh73nPe8i73vUu0mq1yBNPPEHGx8d71qf0\\n289Xv/pVcuTIEfLCCy+QZrNJ3v72t5Pf+q3fWve90s8jiiJy7bXXkk9/+tPE8zzywgsvkMOHD5Mf\\n/vCHfd8ntyWc7cIzNJx9x9/93d/hz/7sz3DgwAFomoY777wT3/72t3dcPlAul/GOd7wDmUwGlmXh\\n9ttvx7/9279ta427774bH/rQh3DjjTdCkiTceuut0DQN999/PzvmIx/5CMbHx1EqlfDWt74Vjz76\\nKADgW9/6Ft7//vfj1a9+NbLZbCpitxXuu+8+HD16FO973/sgyzJuueUWXHbZZfjud7+77ms+8pGP\\nYHJyEoZh9PzuW9/6Fj71qU+hWCziwIED+MhHPtL39f3eC4fD4Qw6e3n/e8Mb3oArr7wSoijiqquu\\nwi233LIte0MIwd13340vfelLKJVKsCwLn/rUp/CNb3yDHaMoCu644w4oioK3vOUtME0TJ06cQBRF\\n+Od//md85jOfQTabxatf/WrceuutWz43APzTP/0T/uAP/gAXXXQRTNPE5z73OXzjG9/Y1P4+9NBD\\nWFpawh133AFVVXHRRRfhgx/8YGrfHM7ZIO/1Bjic7TI9PY23v/3tEMU1f1ySJCwsLGBiYmLb69m2\\njY9//OP44Q9/iGq1CgBoNpuIogiSJG15T1//+tfx13/91+xnvu+n0uSjo6Ps/zOZDPvd3Nwcrrvu\\nOva7qampbe1/bm6u5zVTU1OYnZ1d9zWTk5Mbrtf5+37HrvdeOBwOZ9DZy/vfAw88gE9+8pN48skn\\n4fs+PM/Du971ri2/fmlpCbZtp2wGIQRRFLF/l8tlyPLa410mk0Gr1cLS0hLCMEy9p7O1N1NTUwjD\\ncFP7Oz09jbm5OVY2BwBRFOGXf/mXt3V+Dmc9eIaGs++YnJzED37wA9RqNfaf67rr3kwFQdhwvbvu\\nugsnTpzAAw88gEajgX//938HkBiJrbye7un2229P7cm2bdxyyy2bvnZsbAynTp1i/z558uSGx3fv\\nZ3x8HNPT06mfnTx5ckPjstF7GhsbYz1EAFJ724ytfFYcDoezl+zl/e83f/M38ba3vQ2nTp1CvV7H\\nbbfdtqGt6f7Z0NAQDMPAU089xWxNvV5Hq9Xa9NyVSgWyLG/Z3vTbT7e9OXnyJGRZxsjIyIbnnpyc\\nxOHDh1M2stls4vvf//6Wz83hbAR3aDj7jttuuw233347u6kuLS3hX/7lX9Y9fmRkBC+++OK6v282\\nmzAMA4VCAaurq/j0pz+96eu7f/bBD34Qf/u3f4sHHngAhBC0223cd999aDabm76fd7/73bjnnnvw\\n9NNPw7btnvNv9n7e8pa34Nlnn8W9996LMAzxzW9+E08//TRuvvnmTc+93n4+97nPoVqtYnZ2Fl/+\\n8pe3/NqRkRGsrKxsuUmUw+FwBolzff9rNpsolUrQdR0PPvgg7r33Xva7SqUCURRT9/eRkRHMzMzA\\n930AgCiK+OAHP4iPf/zjWFxcBADMzs7iRz/60ab7kyQJv/Ebv4E777wTtm3j6aefxte//vV1j++3\\nn1tuuQVf+tKX8NJLL6HVauFTn/oU3vOe96QyQv244YYbkMvl8PnPfx6O4yCKIjz55JN46KGH+h7P\\nbQlnu3CHhrPv+OhHP4q3ve1t+NVf/VVYloWbbroJDzzwwLrH//Ef/zE++9nPolAo4Itf/GLP7z/2\\nsY/BcRwMDQ3hpptuwq/92q/1nO/b3/42isUiq6e+8847ceutt6JQKOBb3/oWXvOa1+Duu+/Ghz/8\\nYRSLRVx88cW45557tvR+3vzmN+NjH/sY3vjGN+Liiy/GG9/4xk3ff+d+yuUyvve97+Guu+5CuVzG\\nF77wBXzve9/D0NDQls7fzR133IEDBw7g8OHDeNOb3oR3vvOd0DRtS6+97LLLcMstt+Ciiy5CoVDg\\npWgcDmdfca7vf3/zN3+DO+64A5Zl4TOf+Qze/e53s99lMhncfvvteN3rXodCoYD7778fb3zjG3HF\\nFVdgdHSU3dM///nP4+KLL8ZNN92EXC6HN73pTThx4sSW9khntI2OjuJ3fud38P73v3/dY/vt53d/\\n93fxvve9D69//etx+PBh6LqeKrVeD0mS8N3vfhePPvooDh8+jKGhIXzgAx9Y12HhtoSzXQRCc50c\\nDofTh6985Sv4xje+sW2hBA6Hw9nv8Psfh7M/4BkaDoeTYn5+Hv/1X/+FOI5x4sQJ3HXXXXj729++\\n19vicDiccw6//3E4+xOucsbhcFL4vo8PfehDeOmll1AoFPDe974Xv//7v7/X2+JwOJxzDr//cTj7\\nE15yxuFwOBwOh8PhcPYtvOSMw+FwOBwOh8Ph7Fu4Q8PhcDgcDofD4XD2Ldyh4XA4HA6Hw+FwOPsW\\n7tBwOBwOh8PhcDicfQt3aDgcDofD4XA4HM6+hTs0HA6Hw+FwOBwOZ9/C59AMEGFI4DgxooiAEEAQ\\nAEkSYBgiZFnY6+1xOANNHLQQteYQRy4Qh4AoQ5R0SOY4RMXc6+1xOOcNbks4nJ3Dbcn+hM+h2WMI\\nIfA8gnY7hu+v/6dQVQHZrAhNEyAI3CBxOEBy/UT2AsLGy4jd5XWPE40KZGsKUmaEXz+cCxJuSzic\\nncNtyf6HOzR7SBwT1GoRPG/rfwJNE1AoSBBFfiFxXtmQOIS3+DBiZ2nLrxGNCrTh6yCIPDnNuXDg\\ntoTD2TncllwYcIdmj4hjgtXVCEGw/Y9fUQSUStwQcV65kDiEN/9zxH59268V1Ty0sf/BDRHngoDb\\nEg5n53BbcuHARQH2AEKSaNpODBAABEHyeu6Lcl6JEEKSaNoODBAAxH4d3uLD/Prh7Hu4LeFwdg63\\nJRcW3KHZAzyPbKs04FytweHsRyJ7YVulAf2InSVE9sIu7YjD2Ru4LeFwdg63JRcW3KHZA9rteFfW\\nse3dWYfD2U+EzemBWofD2Su4LeFwdg63JRcW3KE5z4Qh2VCBZjt4HkEY8sga55VDHLTOOqLG1nKW\\nEAetXVmLwznfcFvC4ewcbksuPLhDc55xnN2NhO32ehzOIBO15gZ6PQ7nfMFtCYezc7gtufDg0gzn\\nmSja3SjYyeoM5haf3dU1OZxB5YgQYHQXBZlI5O7eYhzOeWS3bclLq9M4Of/0rq7J4Qwql0rAxC6G\\n9Lkt2Xt4huY8s9tiGKIg7e6CHM4As9vfdhKHu7wih3N+2G1bIgk8vsl55cBtyYUHd2jOM7s9WDYm\\n0e4uyOEMMLv9befzAzj7ld22JRHhD2ScVw7cllx48L/AeUaSBAC7F1o7WDyAK6ypXVuPwxlECCFo\\n+k141ROAs3sSmYKk79paHM75ZLdtyeHSFK6yLtq19TicQcUJHDirxwF79/peuC3Ze7hDc54xDBGt\\n1u41XxoGT7JxLlz8yEfVqaLu1RHGISQoyO7i+pI5vourcTjnD25LOJytE8URGl4Dda+OIAogCSpG\\nd3F9bkv2Hu7QnGdkWYCqCrsit0kk/0x8TjnrtTicQSEmMRpeAzW3BjuwAYBNYg5FBW1RQzb2zvo8\\nolGBqJhnvQ6Hsxfspi1xSQN2qMCSLAi7XcvG4ewRhBDYgY2G10A7aIMQkvwHglhU4EgGjMg56/Nw\\nWzIYcIdmD8hmRfj+2Vdw1qPTsOsEJaOEgl6AKPIIG2f/4oYuy8bEJIk8k47OZ0mQoMs6nKiMrHv2\\npQIyL9Xk7HN2y5a81DqOFx0Pk/lJHC4chizJ3LHh7FuCKEDDa6DhNRCeadanjgwACBCQUTOIMAo0\\nXzrr83FbMhhwh2YP0DQBmibA83YeWVvx5tGSlqAQBWEcouk3MZwdhi7r3BBx9g1RHKHu1VFza3DD\\nNdlL6sgIEGCqJgp6ATGJsWwvY95rATEwdBb+u2hUIGVGznb7HM6eshu2ZLr1HGbaL0KVVYRxiGV7\\nGReXLkYlWwEAbk84+wJCCFp+Cw2vwTL79OfUkTEUA5ZqQZVUtIM2liMghoIcgh2fl9uSwUEgZLfF\\nHzlbIY4JVlcjBMH2P/6av4z/Wvo+LN3EocIhiBBhKAY0WUNey6OcKUMURG6IOAOLHdioOlU0vAYz\\nNsCaI6NKKop6ETktB1EQseKsoOk3MdecQ9NrwgtsvM7IwBK2f/2Iah7a2P/gqjScC4KzsSXL7mn8\\n35P/G6Ig4EDuACRRgqVZMFUT5UwZR0tHeZCMM9D4kY+6W0fTbyKK17KV1JGRRAk5LYecloMsynAC\\nB3ZgY9leRt2tIwhdXCH4yGD7Kn/clgwW3KHZQ+KYoFaLthVdW/bm8F9LP0RGMRDFEcpGGaPWKARB\\ngCqqMBQDsiijkqnA1JKaTm6MOINAGIeouTXU3Br8yO89gAA5LYeiUURGyYAQgiAOsGwvww5szDXn\\n4AQO3MiFpVkoq3lMhDVk460PNBONYWjD13IDxLmg2IktWXRn8N3pe5HTLTiBA1MxUcqUAAFQRRV5\\nPQ9VVjGVn8KB3AEeJOMMDDGJ0fSaaHiNVGYfWHNksmoWOS2HrJJlr2n7bXiRh6X2Elp+C0EUQFM0\\nFFQLI94SlKCx5T1wWzJ4cIdmjyGEwPMI2u14w+ZOWSFokSW0wlU8ufQk2kEbGSWDkIQYN8cxkh2B\\nG7mQRAkZOQNREJFVsqhkK1CkRDSAGyPO+YaWAdTcGpp+s+8xmqSxbIwkSswgUcPjRz5mm7PwQx8h\\nCZFRMhjKDCGjZDDfmIPk1zApCShukK0RjQpkawpSZoRfB5wLkq3aEkUFVsNZ1IJFPLH4BBbaCyjq\\nRTiBg0qmgrJRRsNvQBAEFLQCVFmFpVo4WjqKnJ4DwG0JZ29wQxd1t46W32J9lhRCkmxMXs+zbAyQ\\nODJxHKPpNxHGIRbaC7B9G4QQqHLiuBe0AlbsZditkxhFhPwGU2q4LRlcuEMzQIQhwd///f9Go9GC\\naVp43etei4suOgTDECHLAqpONYlW+zaOLx9HEAdQRAUxiTFujeNg/iBqXg1xHEOXdaiSClEQmWgA\\nvfj4Rcg51/iRz7IxYZ8JyqIgIqcm2RhdXtPvJ4QAAtDwGlh1VhHGIeYacwhJCAECZEnGSGYEmqxB\\nFVU8svAIJEGCKqm4afQqfOsfvoxWfQWWaeC1r3s9Dh+5FJI5zhVoOK8owpDg+9//f3jmmWdhmhYu\\nvfQS3HDDa5gtaXpNvFh9EU7g4Omlp1HzasjKWQRxgKJRxNHiUcy15uCEDizNQlbJQhREjJljOFQ4\\nxINknPNGFEdo+k3U3Xr/zD6AjJJBXs8jo2TYz+ijbRAHaHpNxCTGYnsRdmBDFETIooy8nkdRL0IW\\nZTy28BiCKIAsyrisMIX//n8/wLPHn4BlGrjk0stx/Y2/xG3JgMNzZQOELAv4P//nXvzoRz8CAHz/\\n+9/HsWNH2O+LRhHtoA0AuLxyOZ5beQ5hHEIURCy0FxAjxuXly1H36mgFSQRDl3Us28toemdEAxR9\\nreGaGyPOLkKHX1adKvuedpNRMihoBViaBVEQU6+FABAQLLeX0Q7aCKIAc8059j2OSITR7Ciyahaa\\npGGumSidyaKMcqaMbKaCb37vgY7r54245DWXnPs3zuEMGLIs4IEHfoI///M/BwD86Z/+Kf7n/7yR\\n/d7SLFSyFSy1l3DZ0GU4sXoCtm9DkRTYvo0Xqi/gqtGrsGKvYL41Dz/0kdfzmG3OYtlexpHiESYa\\nAHBbwtl9qNxyy2+hX9xdERVYmsUy+50QQiAIAuzAhh3YiTPTWoQbutAkDQQEBb2AslEGBKDuJc4S\\nDY4N5Sbx7w+fxJ//+f8CkFw/r/01bksGHe7QDBhBsKa2oSi982VGzVFM16aRUTI4UjqCmeYMS59W\\nnSqeWXkGrx5+NazIwrK9jFbQQlbJwos8zDRnkNfyKBklVtoDcGPEOTu80EPVraLu1hGR3lS9LMrI\\na3kU9AJUSe2/iJD02Cy2F+FHPnNmREGEqZpwQgfj5jhM1Uz6xSQVc805yKIMURAxmZsEkL5+VHWd\\nc3E4rwA2syVj5hhafgsAcLR4FCfrJ5NSHsRwIxfHl47jisoVKOklnGycxLK9jKJeBAAcXz6OBXsB\\nRwpHkFEz3JZwdoUwDpncchD1Ko8JggBTMZHTc6nMPoMAOPMVbHgN+JHPMjNe5CVl+nGIolFE2Sgj\\nJjEM2cAzy89AFESIgohxaxyCIGx6/XAGD+7QDBi+v5ZS7fdAJosyRswRzDfnYaomDlgHsOqsYtle\\nRhAFqLt1PL30NC4fuhwT1gRqbg0Nr5GU6Egqam4Nbb+NcqbMHg65MeJsFzr8supU4YT9B5OZqomi\\nXkRWyfb9bgmCwOqgncDBkr2EmMTwQx9zrTnosg5DNtDyW4kzo5lMxnmmMYOYxNBEDRklg5JRApC+\\nfrgR4ryS2cyWCIKAg/mDeHblWViahQO5xJYs2Unfmh3YeHb1WRwtHcWl5UuxbC9jpjEDTdFgqiZW\\n7BXU3ToO5g9iwprgQTLOjiCEoB20k+GXfv/Mvi7rsFQLpmamMvsU4YwXQwSCKI7Q8BqISIQ4jrHQ\\nXkAUR7BUC27oomgUmb3QZZ1lgWQhCY6NmqMANr9+OIMHd2gGjK1EBUzVRE7LoeE1kodFCNBlHTON\\nGdY0d2LlBC4tX4qiUUyMj7MCJ3BgKAZCEuJ06zSyahZDmSEWNefGiLMZTuCg6iZyy91NmUBSBlDQ\\nCyjoBdaU2Q11ounraa+NAIFlZizdgi7pqLt1TFgTyKiJ0EVGTqLBM40ZKJICQRAwmZ9k31keVeNw\\nErZyLeiyjglrAjONGeT1PGISw1RNvFR7CU7oQPIlvFx7GRcVL0IlW0Fez2OmMYOaU4OlWYhIhBer\\nL2KpvYQjpSMo6AUA3JZwNsePfJaN6ZRbpoiCyOSWac9WN8yROSP974VeUqIGAkIITrdPsyCYG7oo\\nZ8qsn1gRE/sx25xlCn7D2WF2Lm5L9h/coRkwtnoRVbIVOKGDIAqQUTKQRAmHCofwcu1l2IENAQKe\\nX30eR8tHoUgKRs1RtPwW6l4dmqRBFETYgY2Zxgx7AKWRD1p/yuEASVMmdTq8yOv5vQABlmYl2Rg1\\n27feGVh7uKGODB2USb+vXujhdPs0SpkSFFFBw2tgPDeOjLKm2gcAy/Yy/MiHKqmQRRlj5hg7By85\\n43AStmpLypkye7AsGkXU3Bouq1yGZ5aeQTtoQxRETNencXHxYqiSiiOlI6i5Ncw2ZqFKKlRZRSto\\n4YmFJzCSHcGh4iEeJOP0hape1r06nKB/Zj+jZJDTcjDVpPm+c04ZRYDAAmP0922/DSd0ICDJ/J9u\\nnoYiKVAlFW7oomSUkNfzABJZcgiJA7Rqr7Lg27g1zs7BHZr9B3doBoytpjlpanSmMZMcK6kwZAOS\\nIOGF6gvJQ6KTODWXDV2GmMSwNAsZJYNVZxVBFECREoW0VWcVLb+FIWMIGTVRCeGGiNP226i6VTS9\\nZl+jokkaikYReS2/Jrfcx5mh36FO4xNEARbbiwjiIHGufRsrzgrKRhmSKKHltTBqjsJQjMRhUi3m\\nCM00ZpgBmshNpBpCeckZh5OwnZKZyfwkTiyfQBiHyGt5eJGHq0auwhOLT6DpNyEKIl6ovoDLhy5H\\nEAco6AVYqoW55hzs0IYu64gRY749j6pbxaHCIVSylVSQDOD25JWKF3qoe3WmNtaNLMqpbEynreik\\n05HpDIw1vSazJdS26LIOSZTgRz7KRhmWZgFI7Bbts6F9mgBQ0AvIqll2Ll5ytv/gDs2AsZ2ogC7r\\nKBklrNgrEAUREYkwZo1BFEQ8t/pc4tTYAp5ZfgZXVK5AEAeQRCnJ7gQOWn6LXcx+5ON0+zSyfhbl\\nTJk9MHJD9MoiiAKWjQni3qZMWgZQ1IswFAMA1nVkgN6sDAA2pZkQAlEQ0faT+umSUYIgCHACB8Pm\\nMGv6zGk5ZtxafgtNv8nKBQ7kDqT3z6NqHA6A7V0LsijjYP4gXqy+CEEQoEkaJFHClcNX4onFJ1D3\\n6hAg4PjycVw9ejXswIYkSpjMT8L27aS0RxAgCiLcyMWJlRNYbC/icOEwG/AMcHvySoI6GnWvDi/s\\nzewDQFbNIq8lcsvdjkon1JEB0oExKiJAbYkf+VhuL8OQDQiCgDAOUTJKLNujSipEUURMYkRxhMX2\\nInsGmshNpM7Jbcn+gzs0A8Z2L6KSUYId2HACB6Igwgkc1lPw7MqzsEMbsIEnF5/E1aNXw4s8EBAY\\nigFN1tDyWwijEATJjaTpN+FEDkp6CZZqpW4iADdEFyJUbrnm1pjqUTeGbKBoJMMvu6Ou/ehnfACg\\n6lRR9+qsZrntt+GGLisFCKIAQ5khaLIGIOkXk0WZzR+Ybc5CFpLbViVT6VG64SVnHE7Cdm1Jp5Sz\\nIAiISIRSppRkahaeYNfto6cfxWvGXwM3dOGGLjJqBoeUQ0xwJkYMAoJVdxXNxSYmrAlM5CZSPXW8\\nrPnCxQmcZHTEenLLkoK8loelWanA6XYcGWCtXwZI7I0Xeqi5NRZoi0nMyqCBxGlXJIXNRVtsL7Lv\\nIQ0Od8Idmv0Hd2gGjJ2kOamUc0xiNmF9Mj8JAQJOrJxI6kpdAY+cfgTXjV2HIA5Yejan5eCHPrzI\\nQxAFICAIoxBL9hLafhslo8QeLgHu2FxI+JHPHIx+wy8lQWKDx/p9B/rR+b3oNEAxibHUXoIbuswh\\nsn0bQRykMj1Fo8jq73VZR1bJwg5stt9VZ5Wd42D+YO974iVnHA6AndmSMXMMTa8JN3QTkY4wwEh2\\nBOKoiMdOP4aqW4UgCHho7iHcOHEjdFlHza2xAc5ZJYuW34ITOohIhCAO8HL9Zaw4K5jKT7EsLMBt\\nyYUEVRajUsndCELSmJ/X8ux+D/Q6Kez4Dkem33EtvwUv9NgxXuih4TVSYwFKRokFvERBhC7rKTs3\\n35pnr+/OzgC85Gw/wh2aAWMnUYFOKWcgiZBk5AwO5A9AFEQcXz7OHgp/MfcLXD9xPWRRTkrSBAGq\\nrLLIhRu68COfSSl6kYe8lu8ZXsWN0f6ElgFU3Sr7TnSTVbIoGsVUhg7YmSMDJI7IYnsRMYnZcX7k\\nI0bMDBCdNyNLyS1JEZMoXqdxXGgtMFWbnJZjWZ1OeFSNw0nYybUgCAKmClN4duVZEEIQxAEEQcBQ\\nZgjHRo/h8YXHE6cGAu6fuR83HbgJo+ZoEu0GYeMBvMhD02smFQIAmn4Tx1eOYyQzgsn8ZCqzym3J\\n/oWWC7eDdl/7oMka643pHqTvA7fIAAAgAElEQVS8FUcGSJcrU/sVxuGaLQl9tP02y/YIEFKBMUEQ\\nYCgGC/gCSaUAnXMjiRJGsiM9e+G2ZP/BHZoBY6cXUaeUMwBU3SpGzVGMWWMQhKT2mSqAPDj7IK4f\\nvx45LcckDgVBgCIpUCQFQRQkA9ZIjDAOseKsoB20UdSLrNaVwo3R/sANXZaNWa8pk6rddQ+/3Koj\\nQ4/tjqSt2qusCZMeE8YhM3CKqLCZSECSGSoaRfb9AxJDttBeYGtM5if77ocbIQ4nYafXgi7rGLfG\\nMduYBZA8/B3IHQAhBFePXo1HTz/KMjX3z9yPGw/ciIncBJbaS/Aij5XwqJKKfJxPZqTFAaI4wlxr\\nDlW3ioP5g6hkKjxItg8JooBlY/pl9kVBhKVZyGv5VGYf2J4j031sGIdMoIYeG8UR2kF7zXaIEop6\\nMVXeaMiJsExI1vZ6unWa/f+oOZr6HrL3yW3JvoM7NAPG2aQ5O6WcqXpZJVMBzOSG8fTy02wI4oOz\\nD+L6ieuR1/JoB+1UA7gqqRjKDKHhNeCGLoDkgXihvcCGJXbrwnNjNHjQMoCqW2V/x24s1ULR6D/8\\n8mwcGUIIqm41qXE+cyh1YFrBWp+OJmmJghkSJ4tG10RBTA3sXHVWmfHUZA3D2eG+++JlAhxOwtlc\\nC0OZITS9JguQnW6dxqHCIRAQXDN6DXNqRENMnJqJGzFqjqLm1lD36gCS612VVBzMH0TNrWHVWQUB\\ngRM6eG71OSzby5gqTMFSrdS5uS0ZPKjccsNrrJvZNxSDyS13D79cz5EB0HMsgJ6gmxu6aPvt9HeC\\nJJk/iiRKGMoMsSw+3ZMkSinHywkc9r0G0lLNnXBbsv/gDs2AcTZRgU4pZ0JIchMI2onChwlAAJ5e\\nehpO5EAI1jI1dOgUfYAkIIhIhIJeQBiHqLk1hHHIpsM7YSIakFWzfW9cADdGe4kd2Kg6yfDLfkZE\\nldQNh19ux5Ghx3eeJ4ojLNvLqZk1iph8l+nDDrA2b6CzrIzuiTrllIXWWnZmwproawQBHlXjcChn\\ney10SjmHcYjF9iLGzLEkUzOWZGpWnBUMZYbwwOwDuGHiBtZzuWwvs+uXKk2VjBJmm7OwAxsxibHi\\nrKDltzBmjmHMGls3M8xtyd7hRz7qbh1Nv9l3+KUkSqykrPvvB2zsyGwlK0MIgR3YLPNHXycKIlbc\\nFfYdkUUZw9nhlM3QZA2yKPcIDnRm+suZco+wDIXbkv0Hd2gGjLO9iDqlnIEksp1RMsiqWYxgBAIE\\nPLX0VFJ+dqa58/rx62EoBmRRRjtos4s/iAPIoswib22/DQKS6Lzbi8gEmcSASVrPPrgxOr9Qx7Pm\\n1vo3ZUJI5JaNpGywH9t1ZIDeSJoXelhqL7GMC5A4LnR/FNqn0xnts1QLmqyx2n2KEzgsEicKYt8G\\nTgo3QhxOwtleC51SzgDQ8BqwNAuj5ihIK8nUPHL6Eaw6qygZJTwwkzg15UwZ49Y4lu1llhn2Ix+S\\nKOFo6SiW7CUsthcRxiG8yMN0fRpVt4rJ3GRKNIDCbcn5JSZxMvzSra+b2c8oGeT1fN/MPrB9R4ae\\nt/vfTa+JiKw5UtRBWbaX2c/o4HDaE0N/Rh2szuwMFaehTFjcllxIcIdmgIiiCHF8pvRGECBJvXWd\\nW6FTyhlIygWmClOISYzh7DBEQcSTi0+ymxUtP8soGeTUHOzQZg/FYRwiiiMUjSJM1cSqs7omGuC3\\n4YUe8voZ0QChd7/cGJ07qHBD1ammUu+d6LKOol7sEXXoXmc91vu79TNYLa+FqltN/byoJ05LpzNj\\nqiYqmUpPtobKa9LvF5A4MPOteXbcqDnaNxII7N71w+FcCOxGyUynlDOQDCK8pHwJa6Jm5WdOFSWj\\nxGzJUGYII9mRVAlaFEeouTVUMhWUjTJO1k+yLHLdq6O90kYlU8GB3IG+QRduS84tbuii4TU2HH5J\\nbX2/zD6wM0em32uCKEgFV4GkPJlm/ymqpGLMGksF8SRRYlmXTiEAAEmw7cyaWTXbV1iGwkvO9h/9\\n6zY4e0J3ROBsbtyj5igry6HlAqZqQpd1DGWGcOXIlfAjH27owos8PDj7IKtRzSrZlEEhIGyQ2rg1\\njoJeYM5LGIdYsVcw35xHO2ivu5+NHpo524NOQn5u9TmcrJ/scWZEQURRL+Ki4kW4qHgRikaxrzOz\\n2UDMjbIy3WUBK/YKVt1V9nNREDGcGUbLT5wcSk7LYTQ7mqphViUVOS3H1u6JqNlrEbX1xACA3b1+\\nOJz9zm5FmMfMMfaASAjBdG0apmpiKDMEUzVxzeg1AICaW0OMGA/OPshm2RSNIguiUejQ3suGLsOh\\nwiGW4Q/jEPOteTy99DTmmnOpyHwnG923ONuDOpnTtWmcqp9C3U2LxlC55YncBA4XD6NklNYtU+62\\nC2yNMyViW3Vm3MBF0087VaZqIozDlC3QZA0T1kRPAMyQ12ShO22JiHRwbKPsDMAzNPsRnqEZIHbz\\nAuqWcm56TWSVLCzNQkxilI1yMjBt8QmIUWJsaHTNVM1kUrQgpaIkbugiFEM2b2DVWWV9N27oYrG9\\niKySRUEvsNKhTniEbefQ4ZdVp7qu45hRMijqRViatW6PCV1rPTb62/QzPv36ZVRJRSVTwUJ7IeW4\\n5LU8RrIjKceHqqtROidKS6LE+sEAsCzhenADxOGssVvXQ7eUsxu6mG/NY9waZ7aBZmrqbh15PY+H\\n5h7CdWPXYcQcQUbJ9JSgOYEDP/IxYo6gaBRxqn4Kq84qIpKoVr1YfTFRV8sfQF7rH0Xn9mTn2IGN\\nhtdYd/glDTJtlNkHdpaRWe91nf0yFFEQYakWmn6TldEDSeXBRG4CbuimvgeGYrBzdjozAgRU3Sqz\\nL4qkoJKtrPu+AG5P9iPcoRkgdnsoYLeU82J7EbqsI6flUPfqKBnJFOjHFx5nr3lo9iG8Zvw1bIpv\\nvxK0htdAVs1izBpLDdOiqlpu6LJJwJIoccfmLPBCD1W3irpb7xuxlEUZeS2f0t1fj506MkBvfTPd\\n27K9nNqXqZoo6SXMNGfYFGcgKT0bNUex4qywtWgmqTOT2HkeSZCYdCzQf5BmJ7xEgMNZYzftSbeU\\n81J7CZZqoWSUWLP4NWPX4JH5R9DwGshpOfxi7he4bvw6jJqjSYAtO4K6V2flp1EcYb45j6JRxKVD\\nl2KpvYTZ5ixafgsRibDsLKPltzBsDmPcGocu633vYdyebA1quxteI9VvQhEEAZZqIa/n122Up+zU\\nkVnvtXEcJ8IDXf0yOS2HVWcVVWcty28oBsatcXihlxIq0GWd2ZJuIQBJlDDXnGP/HjPHNgz6AXxI\\n836EOzQDRGdEYLceyLqlnE+3TuNALol61dwainoRx0aO4bGFx5jcIRUKsDSLlaDRQZxAUoLW8ltJ\\nf4ZRhKEYqLt1NrvGj3ysOCtwQgd5Pc/K17hjszWomlzVqaakizsxVRMFvdAz/HI9Niot2+x1/QxX\\ny29h1VldW+eM3LKpmjhVP5XKIpWNMkbMEVSdaipqVtALLPpHCEnVQSuSgoX2AjveUAyUjfKGe+UR\\nNQ5njd22J91SzifrJ3Hp0KWoZCvs4fHasWvxyOlH0PJbMFUT/z3/37hm9Bo2D41m7zt7GapOIis/\\nnB1GXs9jtjGLxfYigjiAG7lJKZRXx7g5jqHMUN8gGZDcQ7gtSUP7LBteA22/f2afBjk3y+zT9XbT\\nkQHS82U692SqJpbaS6n+S5rt8yM/ZUt0WU+VwqVKzQSRDQAFEps3Zo1t+D6Bc/M8xjm3cIdmgDgX\\nD2RUyvlU/RSAMwMW3aSBM68nTk1BL+Dq0avx+OnH2Q3pF/O/wHVj17HeBk1KJBCp00LXCuMwafLO\\nVpBRMqi5Nbihy5RS3MhNoj5ans2u4Y5Nf5zAQdVN5Jb7ZUQUUWFyy91zgNZjp44MfW2PASJgg1Yp\\nkiChkq1AERWcrJ9MKZdVMhVUshU0vWaqlCCv5VMZpSAOUt8DWZAx05hhv5/MTW66Z+7QcDhrnIvr\\noVvK+VT9FA4XD6ckc68duxaPzD8CO7CRUTJ45PQjiEnM1AkN2WCDODtL0GabsxjODuNI6QiKehGz\\nzVnU3FoiGuDWYfuJuMi4NQ5LS2bXcFvSnyAKUPfqaHiNvnLLoiCykrLu4Zf9OBtHZr3XCxDghE7K\\nXggQkFWz0GUdC610yXJWzWLMHEMYh6nglyqpKXvY3csjCensTCVT2bSaAeD2ZD/CHZoB4lxdQLqs\\no5wpsxrUFXsFGSUDXdZR0AuoOlXktTyOjR7DY6cfgyCfcWrmEqeGKoFIgsQGcXaWoNXdOrJq0p+j\\nyRpTSgnjEGGUyPW6gZvIPHbMruHGaK0ps+bWUg/8FAECLM1CUS8yFbCtsOuODBJDsdheTBkTTVob\\ncjldn07JfA5nhzGUGYId2CkHKKtkYShGat3OEghVUlF1qyyiKIvyusPPOuERNQ5njXNhT/pJOa/Y\\nKyhnyhg1R9mDI83UuIILXdbx2MJjICA4kDsAILElo+YoK6cF0iVoQ9khWJqF+eY8Fu1F2IGNIA4w\\n35pH029iNDuKYXOYPZhyW7I2/LLu1ZnCaTd09pepmmdlC4CdOzLJL4Bm0EzZEupkSYKE063TaHpr\\nYjeWZmEkO4KYxCkbI4tyj0PW6cBJgoQgDlJiAhvJ/nfCHZr9B3doBohz2QPQT8r5YP4gREFEQS+g\\n5taQ03K4euxqPHb6MWhIbhIPzz+Ma8euTTVu00Gc/UrQMkoGZaOcZGucGuzABiHJdOjADmAHNqvR\\nFQThFVsT3fbbqLrVnlQ7RZM0lo3ZqCmzm7NxZOjr+0XS3NDFkr2UyhyxGnoSYbo2nXLIRs1RlIwS\\n/MhPRdl0WWfRVUq35KYsyjjVOMV+NmaNbekz4DXPHM4a58qeWJqFocwQk8+dbc6yqPqYNcb6bKhQ\\ngAABmqwlTg0hKaXCol6ELut9S9AqmQqmClMoGkXMNeew4qwgjEO0/BZeCl9C3auz+wy9v70SHRsv\\n9FD36hvKLdNszHYy+2fjyKy3hgCBlVR39ssoopKUuEPAfGs+VR6X03IYMRNnprMEWxTEnl6fKI7Y\\nOQUIkEQJp2qn2Pcgr+c3FJbphPdk7j+4QzNAnOuIwKg5iunaNIuIL7YXMWqOQhIlVn5mqVZSfraQ\\nlJ+FcYiH5x/GNaPXoGSUACQ3qs1K0DJKBqqksgFdtOa14TXghR4szWLCA3TNbi40YxREAcvGdA6O\\npNAIVVEvpjIYW+FcODJ0T3TPbE0IKGfKMFUTQRRguj6dckqotHcYh6lmTkVUehSLojhKRdRUSUXb\\nb6cUbSZz60s1d8IjahzOGufyehi3xpOS4jMqUyfrJ3G0dBSiIGLcGk/KRWXg6rHEloiRCEVS8Pji\\n44hJjKnCFFtrsxI02oeZt/M43TrNyqiW7CW0/BYqmQpGrVFklMwrxrGhQyfrXj2lDNlJVs0ir+VT\\nn8tm7IYjQ/fX7/V+5CfKah3nMGQDWTULQgjmmnOpErSCXkAlW0mCooGzrqIZ3XunkySJEusbpmwl\\n00/h9mT/wefQDBDn+gKSRZmVBwGJlDNN61K1LKo7f9XoVQiipK8hiiM8cvqR1EMmsFaC1lmPSkvQ\\n/MhnkrzD2eHU4E0v8rDqrGKpvcRkIzeae7Kf5w4QQtD0mjhZP4nnVp/Dkr3U48wYcqLackn5Eoxb\\n49tyZtb7bDb6PPuu0SeSBiTKeJ3OjCzKGDVHYaom/MjHy7WXU87MhDWBgl5ATGJUnbUhm5IgoWgU\\ne/bUmdVRJAWiIKayM5VsZcufBy8543ASCCHn1J5QKWd6PTuBw2Z8SKKEidwEZFGGKqk4NnIMfuSz\\nstInl57Ey7WXU+vRErTOQYe0BK3m1qBICrtHHsgdYLNrnNDBTHMGz608h9Ot06wZ/EK0JUDyOS+0\\nFvBi9UUsthd7nBlFUlDOlHG4eBjj1jiyanZbTsh258h0060u1vl6O7DR9JupDIqlWsiqWcQkxmxz\\nNuXMFI0ik1amfbkUQzZ6BAw6nRl6zsX2Ivve6bK+qbBM5/vgDs3+g2doBojzkeK0NItp0ANrUs6K\\npECRlETS2a3DVBKn5snFJyFDZk7N1aNXYygzlFpzsxI0QzGgSioM2UDDa8AJHSYa4EUeXMVl/Tfr\\nRdg6f7Yfomx+5KPqVFH36inFFYokJFmxol7cUlNmN2ebkaFrrGfA6DDWTudLl3VUMhVIogQv9DBd\\nn157gICAA7kDsDQLhBDU3BozMAISdaNuA0QdZrpvRVQQRAGbnQRsPTsD8JIzDocShmv3HEmSIIq7\\nH7tcT8qZZt7Z7yTgqpHEloiCCEmU8NTSU4hJjIuKF6XWLBmlDUvQTNXE4cJhFPQCc3YiEqHqVmEH\\nNupuHSPmCAvOAfvfltBxCHQ8Qjc0CJnX8tvO7AMb24HtfD7rZWUICBpuI2VLJEFi35MojjDXnEv1\\nxpQzZVYRQis/KLqs95QgxyROnZ9WfnTK/lOlva1wPq4fzu7DHZoB4nxFBNaTchYEAaqkwtIsNojz\\nyuErE6dGkBGTGI+efhTHRo6lhlIRQphs4nolaJIoIacniiotv4Wm10QQB0kZVpw0xJuqyY7dj8aI\\nlgFQ49qPrJJF0ShuWW65m91wZOg6/bIygiDADmws28spA0FL4QQh6aeZrk2nHJbJ/CSrTe42vHk9\\n31O73SPTLCoQBAFzzTl2XlM1UTSKW35PPKLG4SScr2thPSlnmp0Zt8Yx25yFIim4cuRKPLX4FIAk\\ni3N8+TgApJwaQggySmbDEjRd1jGUGUJWyWKxvchKz7zIw+nWabSDNoaMIQybw6xXk67dzaDaEgBM\\nargdtPvuXZM11huzmdxyP3bLkdmoXJmWmXfaElVSmf2L4gizzdlUpmkoM8Tu+52ZPfrafn1AnWXL\\nNJtUc2vMDktikgHcKtyW7E+4QzNAnK+LaCMpZwBsgFnLbyGjZJhTQ2tSH114FFePXo1KJu3U0LK1\\n9VTQVEmFJmtQJAW6rKPhNWAHNmISww5s+LHPHBs6u2YzYzQIhsgNXZaNWa8pkzb4b0Uush9nMxSz\\nm/UiaYIgsPfR+fOhzBBTWHMCByfrJ5kzIwoiDuYPsr9X22+nGjct1eo7pK1b3UaRFBBCUuVmmw3S\\n7IaXnHE4CefzgWw9KWcgeegeM8cw15yDLMq4YvgKHF86DoEkJUHHl48jJjEuLl3M1qO2ZD0VNDpy\\nwFAMHMwfRE7LYaG9gBV7BUEcMLvS8luoZCsoZ8qpkqlBdmyCKGDZmH6ZfVEQYWkWclpu0+GX67Fb\\njgywsS3xQq+nXyajZJitCOMQs43ZlC2gPVP0952OTj9FMyAtBACAlbZ3ZmdGsiOpOTWbwR2a/Ql3\\naAaI86mqsZGUM5AMMqSOhqEYePXwq/H08tNJCpkQlqnp7MmhDsZmJWiiIDIHh0ahvMhDGIVoxIlo\\ngKsm82toNGbQmj1pGUDVraZS5Z1YqoWCXtiyRGY/dtOR2SgrE5MYi63FlDNCe66oE2YHNk7WTzIj\\nJgkSDuYPsjIHN3TR9NekNmmzZzdRHKWMNV2/syZclVSMmCPben+85IzDSTiftmQjKWcgsSWj5ijm\\nW/OQRRmvqrwKJ5ZPgCCxFydWkv8/WjrK1qS2pF8J2qqzCid0WPlr0Ugk7XNqDkt2MogxjEMs2ots\\nqORwdpipKw6aY0OHX9bd+rqZfUMxmNzyTrIx9Dy75chslJUBwAQjOs9haRa71wdRgNnmbCr7MmKO\\nsLl33fLMkij1LafrEQIQkuoOJ3BSg5+3IwYAcIWz/Qp3aAaI8x0V2EjKGUhUUggSdRFDMXBFJYmu\\nESSNlY8tPIYrh69MpXKpIdqsBI1G5fN6Hpqsoek10Q7aCOMQbugiiAN4YZKt6Zxds9eOjR3YqDrJ\\n8Mt+N3RVUlk2ZjsRoW5205EBNo6k+ZGPxfZiyskwZAOVbCVloE7VT6Wa/KcKU8wBDqKARVKB5HOg\\nxqmbzoicLMqsHrozOzORm9i24eZRNQ4n4XxfC91SznPNOSblDCS2ZDg7jMX2IiRRwqVDl+L51ecR\\nkxiCIODZlWcRkxiXli9la9J74FZK0FRJxXhuHKZmYrG1iBVnBU7ooB204YYu2n4b5UwZlezaUMW9\\nzv77kY+6W0fTb/YdfimJEisp22lmH9hdR2a99ToDY7ScnCIJyfug93k/8jHbmE0JOFChGbp+p6KZ\\nKIgw5P69Qd1CAPQcnYM0S0Zp271F3JbsT7hDM0DsxUW0npQzxVRNxCSGF3rQZT2Jrq0k5QWEEDyx\\n+AQICMbMMfYaeiPaSgkalV9UJRV6oKPltWAHNqI4QstvwY98uGEiGtCZYj+fjg3dc9Wt9m/KhJD0\\nmBhFlk7fKbvtyGxkfIDEUVmxV1LH5LV8qnel6TUx05hhx8iijKn8FEv/R3HSlNvp7BT0Qt/90r4t\\nCjXUDa/BHCJBENgAvu3AS844nIS9sCWdUs4xiZmUM70P5LQcYhJj2V6GJEo4Wj6KF1ZfYA+l1MG5\\nfOjy1LpbLUGj58goGeT0HJbaS6i6VYRxiFU3yerQMjTaDwicX1tCxXDqbn3dzH5GySRDqJWtK5T1\\n43w4MsBaVqZfv4wmaakKBT/yMdOYYQ6cIAgYM8dSmXwqGkR/3y3P3LmfznNRZyaMQyy0F9jPtzpI\\nsxPu0OxPuEMzQOxFmpOWFVGtdioG0Dn8MKflUCeJFLMma7i0fCmeXXkWQZyoVD2x8AQIIT1p3a2W\\noAFr0Sjq2DS9ZIownV8TRAEyagamaqYyH+fKGNEygKpT7akDpuiyjoJeQF7Lb2v45XrnW4+dvoeN\\nsjKEEFTdamropSiIGMoMpZyyhtdIZkqcQREVTBWmUhO6a26NnUsURBSNYt/sCiEkFbmjDi0A1s8F\\nJE72TiKSvOSMw0nYC1tCpZyfXXmWRdnnW/Mpu1DQCywAIgoijpSO4OXqy/DjZL8vVl8EIQSvqrwq\\ntfZ2StCoTcsqWZi2iRVnhalrem0Pdmij6TVRyVZS97pz6di4oYuG19hw+GVezyOn5c4qsw/sviOz\\n3pqd67mhi5bfSv0+q2RTmREv9DDbnE05M+PWeOpv4IZuKluly/q6mfrOigJRENlxC60FtkZGyaSG\\ngm8VXnK2P+EOzQCxV1GBjaScKTkth7pXRxAFiVMzdCmeW32O9Tw8ufgkCAgmrHQ0ZDslaABY+QDt\\nr2n7bUQkQjtow4s9VobWPSxst4xREAWoulVWh92NKIgsg7HTpsx+++vHbhofYC2SRofSdUYIFVHB\\ncHY49TevubVU6l6VVEzlp3qO6XRSNiq18yM/VUZA1/FCLxVR245Ucyc8qsbhJOzVtbCRlDOlnCkj\\nJjHqXh2iIOJQ8RBO1U+x/r2Xai8hJjGuqFzRMzhREIQtlaABSZmboRgwVRPL9jJWnVV4kYe6W4fj\\nJ+VoJaOEoczQOQmSRXGEpt9kc9m6EQQBWSXLBoeeLefLkelckwb+uvtlclouZSecwEkpWNIBrJ0O\\nT7eimSZr69qS7pk5VAiADuek7CQ7A3Bbsl/hDs0AsZcXUbeU80J7ARPWRCotn9fy7EFflVRcUroE\\nz68+zwzRU4vJbIHuB1JqiLZSggYkNztTNVOOjRM6CKMQzbiJIApYGVp3JJ/eZLvZyBgRQtD0m6g6\\nVbSDdt/PJ6NkUNSLsDRrx02Z/fbTj90uM+g0aF7oYbG9mKo9zigZDGWGUu9r1VlNTVjWJA1ThamU\\ngWl6zdRgzO4hq53EJO4rBAAgKWc783kU9ELq4Wc78JIzDidhL21Jt5TzqcYpXFK+JHXvqGQriEhS\\nVkyVEueac0xUZLo+DQKCK4evTK3daUu2UoImCiLKmTKyahamamLVWU1Kh+Okb9AJHNZf0zm7Bti5\\nY0ODg3RodDe0v7Czr+RsWM/pAM5tViYmcY8amyzKsFQr9b7swMZcc459FpIoYdwaTwUEuxXNFEnZ\\nMEvfeU4qBAAkdos6V4qkpESLtgN3aPYn3KEZIPYyzdkt5ewETkrKGTjj1OiJUxPFERRJwdHyUTy/\\n+jwrJzu+dByEEEwVplI3c2qItlqCBpzRnNcVaLIG209kOIM4SByvMzNsaASu8wa6VRUbL/SYQex8\\nwKfQXpCCXtjR8Mt+nE9HBkDKSWl6Taw6q6njinoxNZ0bAJbtZSy2F9m/dVnHVH4q9Rk7gZNy/rrL\\nC7rpNFaSKLG16IRoymR+Z9kZgJeccTiUvS6Z6ZRyDqIgJeVMGcmOMCVNWn600FpAzasBAFNUPDZy\\nLPW6TluylRI0YC1zlFWzyCpZrDgraAdtNP0m7DARxmnqTQxnh3vu9VtxbGj/SMNrpLIMnWtYqoW8\\nnt+VzD49/7lwZICNy5WBpJKh6Tc37JcBEhn/+dZ8ypmZsCZSn3EUR0yYiB6z0WfUWZLWKQQAIGVL\\nRs3RHQcf9/r64ewM7tAMEHsdFdhMyhlYK7mifROyKOOS8iV4YfUFFl17ZvkZxCTG4eLhvk4NPddW\\nStBoiQEdqGUHNuzARhiHaPprfTZZNduTtu9niGhUqepU4YRO35u+qZpJpmCHwy/7ca4cGbr2RpE0\\nQghWndWUpLIoiKhkKj1OyFJ7CUv2Evu3ISezHjqNhh/5qVk1mqRtmFUJ47CvEACQKOvRBwBd1lOz\\njbbLXl8/HM6gsNfXgizKmMxP4qXqSwB6pZyBNXUrOiVeEASMmCOQRAkrTmKDaPb26tGrU+t32pKt\\nlqAJgoCCXkBWySKjZlBza2x2zbKzjHbQhh3YKBklNrumk+7sPyEEdmCj7tXR9tt97+O6rCOn5XYt\\ns0/Pe64cmc1sCdAbzAISm9nthLT8Fk63TqdEgiZyE6n7f0zi1KiAjRTN6P5SMs0ddomKLQBr/Tk7\\nZa+vH87O4A7NADEIF9FmUs5AchMp6IVE2YoQ1tzZ6dQ8u/IsCAguKl60rlOz1RI0eiwVDaBlaF7k\\nwYs8BHHAUtamavZMErJG9mMAACAASURBVO7Upe9WYaF765Rb7jeJeKecb0cGSGdlwjjEUnspVRqm\\nSiqGs8M99ckLrQX2IAEkWZfJ/GTPejW3xv5Nh4ZutMfO+nFFUlLrdYoBTOYnz+oz4SVnHE7CINiS\\nnJbbUMoZWOulmGnMwI98CILAMis0SzzbnAUBwTWj16TW78yQbLUEDUjuQVQm2JAN1Nwaam6NiQbQ\\nBvehzFBPoEYQBARRgJpbQ8NrpLIFnVkIWlK2W5l9uv65cmSAzbMydNh2py0RBTE1L47S9JqpkmVF\\nUjBhTaSO65Zn3kjRjLKeEACQlmoeygydldT1IFw/nO3DHZoBYlBKZjaTcgbWnJqaW2NOzdHyUbxY\\nfZE98D638hybAt3t1ADYdglap8SzKqksUhTGIbvR0jK0rJoFIQR1r46qU03dhNl6Z4Z9FfUik43c\\nDxkZuv5mkTQ3dLHUXkpFtLJKFkOZoZ49zDfnUXWr7N+mamIyl3YwYhKj6lTTimYd8qf9oEp4QPK+\\nFXHte73qrDJlHFpXfTYMyvXD4ew1g3ItbCblDKw5NbON2URgRADKRhmSIGG+NQ8ArKH82rFrISB9\\nv9lJCRoA5tDQ6fX0uKpbhR3YcEMXOS3Hgj8tv4W6V0+VR3ViKAbyWp6VXe2mLTmXjsxWbAkdJN1p\\nS2iQsTvzVHfrqZJlVVIxkZvoCaDR7wTFkI0Ns1jrCQEAYLPUKN3iRNtlUK4fzvbgDs0AMSgR5q1I\\nOdPjclouNVDxSPEIXqq9xKb0vrD6AgghOFo+2rcGebslaEDy8EsFAVRZhe0nZWhBFKARN1D36kz+\\nUZV7P8eN5JbPdqDaXjgyQK8BaniN1KRkIMm+dQ+7pKownSVkOS2XEoSgx9XcGjNoAgQU9eKGTa3U\\nIaZ0yjQD6ezMmDl21nKlPKrG4SQMii3ZipQzkNiScWscs81k4CIBQckoQRIkzDQT2fjTrdN4eO5h\\nXDd+3bpODbBWgrbYXmS9e/1K0IDEllSylcS5UQw2b8yLEvGUhtvAbGM2sTl9SpAVSUlKyvpkKXZj\\ndMC5dGSAzbMyQOIsNL1mai+6rLNBmJ3U3BqW2msly5qsYcKa6LETXuilsi26rG8qkNCZDesUAgCS\\ngBz9vC3N2rGwDGVQrh/O9uAOzQAxSA9klmYlTZNeUkK22F6EoRg9D51UsYUq2tAyMwECK196sfpi\\nMgV66NINnZrtlKAByc1SkRQoYlLGNN+ex3JrGUEcQJbkRAI6UlkPTk7LoagXe/pGdmvuwHrOzLmM\\n1HUbH0IIlu3lVI2zJCRGu7vGmRCC2eZsahZNXstj3Brv2XPDa6RKx/J6ftPSvM7j6XwIih3YrBQF\\nODsxAAo3QhxOwiDZkq1IOQOJc0DLz2ISIyIRCkYBkihhuj4NAFhoL+AXc7/Aa8ZfA1EQNyxnHjPH\\ntlSCBiTZlQl5AlklC03WMNuYZf19tBqh6TXZ1PmsmkVey/eMD9iuwmY/zocjs5VyZQCsZ7Xz/N1l\\ng5RVZ5X13wJrf/duRyWIgpRtoP2xGxHFEdtvtxBATGKWyQPOPjsDDNb1w9k6u9OlxtkVBu0i6pxL\\nEpM41eDXiSanm8JjEuNI6Qgq2bUG75drL+OZ5WfWlU2m0BK0zlIzWoLWeWOlr2v7baw4K1hoL8AP\\nk8GfkighjEK0/TbiOIYhG5iwJjBmjvVV4lqvPIAQsmHGZbPjdrPsoDvdDvQatzAOMd+aTzkzmqRh\\nzBrr68ycapxKOTNFvYiJ3ETPnqlsNsVSrU2VeqI4SkXUup3RzmGd3cM8d8qgXT8czl4xaNdCdz/K\\nqcapvnO+VElNAipnMjBhHCKv53G4sKaQtthexEOzDyGKo557VbctKRkljJgjPZL0ncMXKW7oMpEZ\\nqnCpSiqiOMKKvZJk/iMXhmIkgzvVbM/5N7rnb2ZLCCF97/NAcq8XBfGclit3fkaEEDS8RsrmioK4\\nrkrbsr2ccmYMxcBErjczE8ZhamaNLMqb9hltJAQAJA4yrQTQZA1DmaEN19sKg3b9cLYGz9AMEIMm\\nFbgVKWeKLuusaRBIblw0U0NrW6dr0yCE4LKhy/oqxnTerDcqQVMlFXW3jrpXZ0ZRkRTIopzcICUN\\niqxAFVXm4FDJZzrfph/bnTtwrjMy9BybOTJA8rdZspdSJQSWaqFklHqOjUmMU/VTKcenZJR6+qSA\\npDSgUx3NkA3Wb7QRnT1Lsij3CAt0NnDuRnYG4HXPHA5l0GwJABzMH0xJOc80ZnCocKjnOF3WMWaN\\nJWVESERFcloOF5cuxvOrzwMAluwlPDj7IG6YuAGSKG1oS/qVoNHZKCWjBD/yUxloOmS4HbShy3oy\\nQysKochKIvXvVOFHPspGuSfTQ9mOLTkfGZmNztOdlenXL6OIyrpKbUvtpZRQTEbJYMwa6zk2JnHK\\nmdlMnpnth6RlmrvX7ZRqHjPHduXzGsTrh7M53KEZIAYxKrAVKWeKoRhsrgCQpJYvLl0MURBZPw6d\\nLfCqyqs2dWo6S9Dc0EXLa6Hm1eAEDhMH6MRUTRzIHUBGySSKNaGHtt9GEAdo+S34kY8wCqErek9f\\nTiebGaP12E1HBthafTMAptLTeUzJKPWtI6aNuZ2Rt6HMUN8BZFTNh0LL9jYjiNJCAN1/p7nmHIuO\\nZtVsXwd5J/CSMw4nYRBtSbeU8/9n782aHLeuLeGFGSAIDslM5lyDpJJsX19PUpUkuyNu91s/ddyn\\n7r9z/1hHfA9fWFZpsmzZliXZNeXEzORMEDNOP5w6hwAJcMjKymJaWA6HKjNJECB5zsbee+21+m5/\\nRsqZoaSUsF3e5nHDizxYqoV3N97Fd53vAABtp41Pjz/Fo/1HkEU5V3iGvXaSgjYOqK/ZD50fUNWq\\nM3ulruholptcBW3kj9BxOrADyggYB2OeCGV51zDMiyWEECAnZFxnIsNfb4nCmBd61BA08dh5RazW\\nqJXq8puqmZlUZCqayfMVzQAar5JxcJry3nepZDYwKcBeB9Zx/RRYjCKhWSOs6yKq6/WFUs4Mpmqm\\nKjFu6OLt+tsQBAGnQ8pzPRocgYDg37b+bWFS40Ueht4Q5/Z5qqMwDsaI4giWZnG55eSNsyIpcCUX\\niqTACRwegMI4RBiH1LtmgRnkdDCaDkrs79edyCxbSYtJjMvxZSo5kUUZW6WtzAAbxRGe95+n6GNN\\ns5nZoo9JTBXsXp4Ho2AsutYZmWZRmalGpqSaK9fTnQHWd/0UKHDTWNe1kCXlXFbLmftVWS2jaTZ5\\nh98JHViahZ80foJv298CoPSxT48+xYcHH84kNUA6noRxyG+sL+wLxKA3yj2vBy/y0DAaqBk1VLRK\\nqmC3Xd5G2aedfTuwcTm+5BLPlmbBizxUtWqmdw1DMpak9neS/vtNJDLAbCwBZqnFAoTcz4YQgpbd\\n4jO2AJ273Ta3M8/fCR2emDBvuWWuM0kLzKLcJbsz2+Xta7NcWNf1U2A+ioRmjbCubU5BELBtbvPu\\nShAFuLAvsF3ezny8pVkgIBOFmdDBO/V3IEDgVKPjwTFiEuPfm/8+k9SEEXVd7nk9nhgpkoKyUMY4\\nGCMmMSzVQkWrUAPMnFa4LutQJRWyKKe8a+zAhh/7iOIIbuhmetdMY5lZmuvAsl0ZJqcdxJONlxlT\\nZqnFhHGIZ71nKSrYTnknsztCCEHX6aYVzYz6UsZwyWRGFMSZ9/VyfJn6TK+rogYUlLMCBRjWNZYA\\nwK61m5JyftZ/NiPlzFDRKnSG5aXAjB3YsDQLP9v6Gf568VcAQNft4g9Hf8CH+x9CkZSZAtnIH6Xm\\nQRRJwXZ5G+1xG37sQ5d1mCoVA5hOZhhMlRa/uk4XmqSh7/Up7dntw/Ed+JGPkT/iiml5IHjZlZkO\\nJ+R6Zy7ZtS/TlWHzMslYIglUSTRLeZIQgrPRGaeXA/RzyrsfYIqjDLqsLxVLkkIA7Jymj5uc23lV\\n2f8k1nn9FMhHkdCsEda5KqBISkrKeeANUFJKufKIFa2CPunzG1w7sPHOxjsQBIGr3TCpxV9s/wKC\\nIMD2bXSdLgbeYKJoMsWF3i3vQpEUfuMfkShXBQ2gN9VsbkYSJfihDzuwEUTUjFOXdPrflzKUeYo1\\nyQpb3izNdTs0s/OfBlMISyY/TMEt6xyCKMCz/rNUsrFb3kXdqGeeS9/rp4JbTa8tJakcxVFq0Dfr\\n83gxmHRnsuQ8XwUF5axAAYp1jiWiIC4l5cxQN+rUA+ulT9bQH6Km1/Dz5s/xzfk3ACjt9g9Hf8CH\\nBx9ClVR4oYeBN0iZXyb3Rk3W8N7me4hIxJkHMYlzVdDYeTdKDR5rTMXk3jUX9gXKahlhHMJUTWyV\\ntmZMJJP7Oz8XMjtPM32uq2JZaX+AFrqmzaZVSc2UqGbHPhmepFgBVb2aSVkGaIErKd2vydpSsWRG\\nCGBKphlIG2nWjfq1CMswrPP6KZCPIqFZI6z7IlpWypmholXozfHLDW3kj/Bg4wFEQeS0o+PhMbpO\\nF3uVPU4JSIHQDbOm11I83mWMOJNQJRWKqGAsjqFICqfQOaGDIA4QxRGloakmNCmfD53HiU7+7ipy\\nz8tU0gCg63RTnjECBGyWNnM5zn7k41nvWSpB2bf2c4dZh94wNbi5itt1MmGSRXkmWRl6Q3QdelMi\\nCAIOKgdLHXdZrPv6KVDgprDua2FZKWeGRqmBiER8XqPn9tAwGvj35r/jz+d/BkA7Nf/3n/8X7zbe\\n5Tfo090aUzVR1aswlYlC2TgYzxhxuqGLzdJmZsGFnXvf60OVVIz8EbpuF0N/iHE4Rj2swwkc1I06\\nalotc06G7+/Cm4slWfMyzGQ0CzGJcTI8SRmL1o16rqpYGIecpQHQomieIM80poUApj+HKI54cRW4\\nHqnmJNZ9/RTIRpHQrBFuQ5uzaTbhhi6CKOBSznk3poIgoKpV0XN7vHI/9Id4sPEA42CMby++hRM6\\nICBoO228t/ke9xaYNr+c3pBXMeJMno+pmtBiDaIgQpM07nkz9IdQRRVhFEKVaYUquYlmyXMCrxaM\\nVunKxCTGhX2R4jgzA9S8IOGFHp71n/H3XoCA/cp+7mC/EzipOaV5wW0a7PvAsKg7M2+Q9qooKGcF\\nClDchliyWdrEwBvwAtmLwQu823g3t0DWNJuIScypTm2nja3SFt7bfA+fHn3Kh847Tge/2vkVN/KV\\nBAkVrYKqXoUsyjP78jwVtCz/LoDu7TW9BlMx0XbanI429Ie4dC5hBAb8yEff7aNpNvmsZlZycV1F\\nsmXpygA45S/5OGZWnXfs48Fx6jmNUiNX0CWKo1Tis6yiGTCRr04+dxoteyK7bShGLtvgqrgN66fA\\nLAofmjXCbagKTCuJOIEz40ifhCAIqOo0KWGzN1+efglVUlEzavyGvu208ff231HVqnh74228vfE2\\ndYp+uZllbfZMBS25CTMjzmS3IOt5Fa0CUzVR0SooK2UIEOBFHkbBiF8TU0+ZF0wW+Q7kzd4s4wXA\\n4Ec+rYwlkhlDNrBn7eUGIDd08bT3NJXMHFYPc5MZP/JTnR9N0pZSNGPXkuwAsRuJ6eO3Ri3+853q\\nnaWOvQoKylmBAhS3IZYAdB9gCQyTcp6HbXMbJaXEpYW/bn2NkTfC3epdvp/avo0/nv0Riqhgv7KP\\ntzbeQqPU4K+TF0t2y7upznUYhzgdnnJjziywOcCt0ha2zC3smDuQRRl2YKNlt9BzezgeHuN8dJ5J\\nV07iVWLJdDKT51sTkxh9t5+WT0547mQhiiMcDY5Sz9ksbeYmM4SQVKwSBRGGnC++M40kbVkUxMyY\\nmKSbXXd3Brg966dAGkWHZo1wWxbRKlLObCiz5/RwZp9NZl/8CHerdyEKIi7GFygrZZTkEk5Hpzxh\\nWqSAxh5TVssrU9AEQYAu61BEBZIgQZVUSkMLHYz8Ee8e+LE/17smeTx2jlnvQUrlZkl+M0Arae1x\\nO/WcqladW5FyAgfP+895214URBxWDnNpaVEcpeSZZVFGTa/lHn8afuTz684SAgAmIhAApRAumyyt\\ngtuyfgoUeN24LWthFSlnAPxG+Xx8Di+g3ZRO1MFWaQs/3fwpfuj8AEM2YCgGnvSeYMfKjyXs9wzM\\niFOX9ZUoaABVZNNlHR2nA1VWqajNSzl9NhQ/DsdzvWuS55E8xySmz3uVrkzWvIwmaTOzo9PPOR4c\\npwqETbOZew2EEIyDcVqeWVksz8wwbSw6LQQA0M+DdX8YS+G6cVvWT4E0ig7NGuE2tTnrej0leXw2\\nOkttlF7o4Wx0hu/a39HqTkTVxJgDtAABsijjf9z7H/jd4e84Taw9buPL0y8zBzmB/EqVLuuoaJVU\\nNccN3ZkNfPoYkkjVXEzVRFkro27UoUoq9RjwB3ACB323n3mcLORV2QghiONZF+i8ShqjTlyOL/lz\\nREFE02zOTWbGwRjP+s9Syczd6t3cZIYN27JrEwUxV1wg7/mLhABiEqcqr9cp1ZxEQTkrUIDiNsUS\\nJuXMcDI8Sc1ehHGIjtPB095THA+OYfs2toz00L0TOvh58+f4n+/8T1gapQvbgY3fv/g9v/nN25en\\nwShoSUoso6AluxTs+ewmXBIlbJlb2Da30TAaOKgcoKyW4UUezu1z9N0+zu1zvOi/SF1fHuZ1bOI4\\nTimHMWTFEoDGwp7bS8UwUzFhadnD/wB9348GR6lkZru8PTchY8p1DIZsLKVolnxNhiwhAAB87gqg\\nSp3XKSzDcJvWT4EJig7NGuE2VQWypJxboxbnEidbzgyyKGOnvANREPlQphM6eKv+FgQI3AW643Tw\\nxekX+M3ubzjneZ6/QPL4zIiTbcKMgmaqJhQx/z3VFR2qTLs0sijDDV3Yvk39a2IfMYmX8q5Jvj/s\\nPIFEJS3hO5BXSYviCBfji1TwZO7V8+Slbd/G8/7zlHfM3drdudzl5HyTAAF1vb5SgEgGO0mUsvnO\\noxZ/nCZrr6WiBtyu9VOgwOvEbVsL01LOT3tPsW/tY+APOPU3CUmUcKd6h3fTRUFE1+1i39rH+3vv\\n44uTL0BAuwW/f/F7fHz4Mfc+WTaWJI04gQkFbcPYQEWr5HbamcRzz+1BFmWUgzLaTht9jxp61vU6\\nvMhDTa9hw9hYeMOfG0sS554XSwgh3Jg6eY4VrTI3ljD6H48NL+N9nmgDQIuYyYREl/WVYkkyQcsS\\nAgBojEuyCa5TqjmJ27Z+ClAUCc0a4bYtIibl/LT3FH2vj390/4GG0ZjpBiiiws0vFUnhw5IA3cT6\\nbp8mNYKA79vfA6BqXl+cfIH3995fKanJoqDFJMbQG2ZS0JLPZxLPQRRAFMSUd80wHkKTNBBClvau\\n4eeZpTqTYxHthbSal1R5KSklbJY25wa+oTfkhqUADch3q3fnDt4PvEEqIanq1ZWMycI4TAWhPFpe\\nUgzgoHJw7UakDMUMTYECFLctljAp57+c/wVDfwjbpwaW08UPURBR0SpcfZHdeEck4ipcB5UDfLD3\\nAb44/QIxieGEDj558Qk+OvgIpmquFEumKWiEEG5mvGVu8T15OqEQBREbxgbKahmX40voss69a87H\\n5yirZS5wsFnanOtdkzrPnCQqCzGJMfAGqSRDFuUZwZtp+JFP39MES2K3vJvb5QdoApSMJaqkrhRL\\nZmSac84vOTuzWdq8dmEZhtu2fgpQFJSzNcJtanNGcYSO08G5fY6O28HQG4IQqlYWxiGvAt2p3sGD\\nxgNsmROKgCqpqRmKMA7R9/q4X7uP9zbf47/vuT18fvJ5qko0jbxBSV3WqZZ+YrNPUtDmtfMVSUFF\\nq8BQDFiahapWhQgRbuhi6A/hhR56bo9fcx6SfGD2etOBL0l/G3pDnI3OUht7Xa+jaTbnJjMDb5BK\\nZhRRwb3avbmb/TgYp7wEGAd8WRBCUgFMkZTMc2TvE0CD/OsY4GQoKGcFClDcplhCCMHQG+JyfMnn\\nPCJCzTRZd8ZQDOyUd/BW/S1smVt8b1MkBXvWHt97IhLhZHiCRqmBh3sP+e+d0MEnR59whbSs/T9v\\nLy8pJexZe9S08+UeOw7GXPUrrzsC0Fi3W95Fo9RAXa9jz9qDIRsY+SO0Ri2+558MT1J+LVnvUVYs\\nSe65yVgSREGq+w7QeRmmGpoHL/Rmkpk9a29uMsMMqhlkUV450UjGvDwhAGYmzbBfuZlYsu7rp8AE\\nRYdmjXAbqgK2b1PNfW/IN9iG0YAf+gjjEIqoQICAdxvvzt04NVmDBYvf7AZRgKE/xL3aPQgQ8O3l\\ntwDokOhnx5/hg70PoEhK5sDkdHWN/S2Lgsa8DPKMOBkEQUBJKXGxgKR3zdCfdGuYd00yGZjrBSBM\\nHpN8fHvcxtAf8usQBRFbpa2F9Lae20tVrVRJxd3q3bnVMWY6x8BMRVdBEAepwc88Ot/z/nP+711r\\nd6Wq3aq4DeunQIGbwG1YC0nzS0aj2jA2MPJHsAMbkiBhHIzx3uZ7c/dBTda4pw0BVVw8GZ5g39rH\\no/1H+Oz4M0SE3nSzTg2jTi0SnmF7uSRKMxS0KI7QGrVyjTgZBIEW90pKCe1xG4qkwPZtdJwOlXwO\\nDER6xL1rkjOMc6X9M2IJAIz9MezATl3HMlRpN3RT4i2iINIEbM7zWAcseV6rFMbYMVIyzRlCAEB6\\nTresll+LsAzDbVg/BWZRJDRrhHVdRGEcouf20HW6KXleBlmU8fbG2xj5Iy7P2Pf6ubKODLqsIyYx\\nr8J5oYchhrhbo+pnf734KwDagfjshCY1LAnJU62ZBqOgeZG3kgpa8toqWoVW4gSBe9d4kYcgDmDI\\nBmISww3dXHflPO8BQgjCOMSFfQEv8vh1qJKK7fL2QkflrtPF6eiU/6xJGu7W7s59HvssGRRRQVWb\\nr7ozDTYzxZAl0wxQtbXL8SX/+XWJATAUlLMCBSjWNZYw+u/AG8wM2DO8s/EOzu1zWhwTBLTsFu7V\\n7s09ri7r2LV2cTo8BQEtNJ2OTrFn7eHR/iM8Pn6MiETwIg+fHH2Cjw8+npvUABlU4ZcUNEM2cDm+\\nnFFBS1LQsiCLMrbL27B9mqwlvWs82+NzOSN/hK0S9b9ZxiSTK57FlMKWjCWMoreokOQEDk6GJ6lk\\nZr+yPzc5IYRw7x92HmxOaRUkact5QgCEkLRU82vszgDru34KzEeR0KwR1okyw+SWu26Xt+mnYcgG\\nNb/Uq1yhjHnSdJxOrpRzEiWlxKUeAfDE4bB6CEEQ8JfzvwCgdKzPjj/Dw/2HM0lNMhjlbfZXMeJM\\nQpd1PlMjiRK80IMd2LADG0qsQI91eKHHzSiTnZY8eJGHC/siRQswFRObpU1+bXnBoT1uo2VPfF10\\nWcfd6t25XbGYxOg63ZRoQN1YXtGMYVoIIC+BOhoc8c9mw9iYS1u4DqzT+ilQ4E1i3daCEzjURNPP\\npukymm9Fq0AWZdSNekrKueN0FhbISkoJTbPJ90U3dHE2OsNueRcfHnyIx8ePEcYh/MjHJ0e0U8Oq\\n/MlYkkwiUrLOL5MJUzWhydqMEefx4DjXiDMJJhrQcTp8brPttNFzexj7Y9T0Gi+QJaWi51HbojjC\\n0B/OzMsw5c95sYQpuCWVP/et/YW0MSd0ZhTNrpLMpGSac+LXxfiCxx1VUrFV2lrpdVbFuq2fAsuh\\nSGjWCOtQYfYjn+vnJzdHBkmQUNWrqOm1mY17w9jAOBjDDV0QQnA2OsOd6p2FyYKpmrzLAdDgJwoi\\nDioHEAURf279GQD1ZHl8/BgP9x5Ck7W5Ov2iOPuai1TQFnnNiIIIS7PgRz4EQaAJTmDDCRz4kQ9d\\nou+HF3mwVGvhQD5L/lgQqOv1mTZ6ll/ChX2Bi/EF/9mQDdyp3pmbzBBC0HW6nKssQEDdqK8kqQnQ\\nALSMEEAUR6mK2usw0pxGUVUrUIBiHWIJM7+cFh9hYN1zRsdKgkk5sw7v8eAYpmIuvMm2NAsxifn+\\nOA7GaNkt7JR38OH+h/j0+NNJUvOSflbVqzyRme6IsC7Hqipoi7xmREHkYgDtcRuarGHgDdB1umjZ\\nLZTVMlco2zQ2UTPyfcH8yE9RwBmTgCmJJq+F/Z1h5I9wNjpL0bT3K/sLYyHz1mEwFGNl+eRpIYB5\\nzIJkLNm1dl+bsAzDOqyfAqujSGjWCG/qhowQQjdTt5saFE/CVEzU9BoqWiV3MxEEATvlnZSU84V9\\nge3y9sJzsDQLBIRXvGzfhgA6kChAwJ/P/0w3eN/G4+PH+GDvA55QJSkDSe5xJv3rikacSaiSCkWk\\nPGgCwjs3TuggiAOYiomBN4AWaTPdH6aSYwcTKVJJkFKVvXmJ2rl9jrbT5r8vKaWlksa+10/RBWt6\\nbSGlLQvJGxNZlHNf93R0yhPiklJaWF29DhRBqEABijeZ3I+DMfpuH3ZgZ+5lmqyholUWqm1NSzk/\\n6z/Dg40HC29mq3oVEYl4wWjkj3Bun6NpNvHxwcf4w9EfEMQBgjjA71/8Hh8efMiNhFOxZE5HhD12\\nnhHnIgoaQDvre9Ye+l4fhBDoss5paG7ooq7XcYlLjAJKQ5tO6KbFXZhs9DKxhCUzDIqkYN/aX0hP\\n8yM/RTnWZO1KsSSZzEwLHCQx8AYpYZnd8u7Kr7UqiuLY7USR0KwRbnoRMbOtacMtBuYYX9NrCys2\\nDEzKmW2UbAB/maFzS7VS6lkjf0Q3sJcVmT+1/oQ4pjM3jH7GNm5RFJeS4mR4VQoaAJTUEpSIigXI\\nugwvpHM6Q3/IzyvpXRPGIc7t81RSoEkatsytVEDIc4o+G52lujpltcy7WPPAbgoYmOTpqgiigL9X\\nrEOVBUJISgyA0QdfN4ogVKAAxU2vBdbpnpYJZmDd7YpWWXpoXBRE3Knewfed7/m8xtnoDLvW4hva\\nDWMDMYn5vODAG0ASJDRKDXx08BE+efEJ9xf7w9Ef8Gj/ES+6ZO2n82IJM+K8KgUNoHsym82RRRlW\\nYKHjdnDpXKIUllDTa3gxeMG9awQIGPrDVCxh8zLLxBJm8skeo0oq9iv7CxOTMA5TpqCKpCx9b5DE\\ntBDAst2ZpFrqM5r9nAAAIABJREFU60QRS24nioRmjXATUoExidF3++i63dyhTEu1UNNrKKvlK92I\\nWpoFO7B5VaU1akGv6Qs3S6YGk6S7DbwBqkIV2+Y2ftH8Bb5ufc1nbh4fP8aj/UdchWVZfwGGq1DQ\\npjnWiqSgIlbgRz5EQYQma7B9amTGRANGZISu04UbualgaakWDU5zOl7sNU+GJ6lh/rJSxmFlcaLg\\nhm5qBorN+KyKGZlmUcl97bbT5u7cjJpxEyh4zwUKUNxELGGUqL7bz+3s67KOql5dukg0DUMxsFve\\n5Te15/Y5LM1aqkC2WdrksyUA0HW7ECCgZtTw0eFH+MPRH+BHVJ3z06NP8eH+h9g0N2euMfnvebHk\\nKhS05E29Iim0K+WN0BN7MBSDe9d4ocfpyH23D1VSU+pjiqjA0qzc9zgZS3puDxf2Req5+9biZCZJ\\nCwfovMuqimYMSbpaFqWPwQu9lLDM65T9T6KQbb6dKBKaNcLrrAqMgzG6ThcDb5ApA6lKKu/GXKV9\\nPI2m2aQ39S+r+mejMxxUDhY+TxAEVPUqem6PDgwSgr7bR1WrYru8jV8Lv8Yfz/4IAmpw+fj4MR7u\\nP+Q36cvIOk+/3rIUtDw5ZlEUYYgGl3gWNRF6pGPkj6jqTOhxsQNd1mEqJhqlxlzX5eRrHg+PUzLL\\nVa3KHZLnXVsQBTy4ArQbdFWpy+lK4Lwq2Yv+xEhzz9pbmVt9VRSUswIFKF5nLPEjn8/GJG9MGSRR\\n4gP+V6neT2PL3MLQH/IC2fP+c7zbeHepONU0m9zAkoDg0rmEKNJOBqOf+ZEPAoLPTmjXf7M0SWoW\\nyTonsQoFbZ60f0WvwFRNdJwOVw7rOB2eLKmSClEUUVJKaBgNVLTK0oIrXbeL9nhCWdZkDfvWPiRR\\nypyxSV73OBhPZlQFkSuarooZIYAcmWYAKbGCml577cIyDEWH5naiMNZcI1z3IgrjEO1xGz90fsDT\\n3lPK000quEBAVavibvUu3tl4B5ulzWtJZgC64W2bk9kZJ3A4XWqZ51a1amrz73t9hHGIZrmJ3+z9\\nhv+NJTVM+plf25KmaQy6rHNFGAZmxBnFUcokk7/GFMdaEiVYmkX9a2QVVb2KcTDG5ZhyoIM4QBAF\\nUCV1qUBPCMHR4IgnM4JAB/n3K/u55pwMURyh604UzRh98CqI4ihFI5l37iN/lKLFHVZfr1RzEkUQ\\nKlCA4rrXAnOdf9F/gWe9Z1RgZCqZKSkl7Fq7uF+7j83S5rUkMwyHlUMem4IowNHgaOnnNs1mqpNw\\nbp9j5I9Q0Sr43Z3f8b9FJMLj48ep7gWweixhFLQkrTdpxLlsLNkyt9A0mygpJeyUd2DKJvpeHy27\\nhZE/wtgfo+t2aUK24JwAqozJkhlBEFBSSzioHMwUnLJYDk6Ylmc2lNUVzdixkrMzeTLNAI07yRkf\\nVsS7CRSx5HaiSGjWBHEcI4oSih/y1ROLkT/C0eAI37e/R8tuzSjM6LKOnfIO3m28i/3K/murehiK\\nkRoGZ5WqeWA359NJDQCeXGyWNvGb3UlS44UePjv57JWTGkZBSwZi5ricfA/ZAGPeRqzJGgzZ4MGj\\nolUgCzJiEsPS6CDswBug7/YzK5wAvYF43n/O6RIA5YXvWXuZLtfs+tj/u2435SmQNGtbFdNCAPM6\\nLsnuDPNSuAlMrx9JupmuUIEC64jrosy4oYtz+xxPuk/QGrVm9m9ZlLFhbOB+/T72K/tXpikvgiIp\\nqeIIk3LOAyGEJw6CIGDX2oUm0QRDgIAL+wJO6KCslvHbw9/yfSomMT47+SzlSA9kx5J58YRR0JJU\\nsyAKcDw4TnXNgfmUq5JSopRdQve0XWsXZbVMac2RCxBK8X0xeMFpvlm4sC9S71dJKfHu+bxYAmQo\\nmsnGleiDwKwQwLxYcm6f80KaLus3IizDUFDObieKhGZNMF0RWDUoMEWx79vf43n/+Qy1jN3UvlV/\\nC2/V38KGsXEjVCDWggfApZyzBAiyAoQkSqgZNS7BHJMYfa+PmMRolBp4f+99fg1e6OHx8eMZz5xV\\nAxGjoJWUEg+IjII2DsYLlW+AiVSoKqsoKSXIkoy9yh7uV+8DADVSCz34kY+O06FqaYlzYslMUglt\\ns7SJnfLOzLlmnUvX6XIVGgECanrtyp91UggAmN+dCaIgVVF7U90ZVc02+ixQ4MeCV6kwR3GEntvD\\n8/5zvOi/QN/tp/YAtkfuV/Zxv34fjVLj2jr781DRKmiUGvzn48FxakAdSCcySYiCiH2LGkUKggAC\\ngtPhKdzQhama+O3hbzmFKiYxPjv+LLWXAflUrDwwCtp2eRsCBH5OHaeD1qjFC3fzEMYh+l4fZa2M\\nbXMbuqyjaTbxYOMBZFHG+fgcPbcHN3RxPDxGa9SaKZKd2+ep+UtTNbFn7aVeOy+WuIGbUjTTZf3K\\nsYR9NgyLjpMUA2CFvJtC0aG5nSgSmjXBVRYQk1t+1nuG7zvf42J8kZLmBSaVmHcb72LX2r2xijkD\\nk3JmmydLvJLXkBUU2AbLuiZsM2PBNiYxNowNvL87SWr8yMfj48eca5081jTmBSJCqBRzkoImQKB6\\n//4wMyFj6DpdnNvn/DGqpOKt2lvYKe9AV3TU9To0SYMTOhj6Q0RxROebXlIHojjCs96z1JBt02yi\\naTZzXzMZjAbeIOUUbanWlakfhJDU90mV5icKx8Njft2WZl2Z4nYVFAGoQIEJrrIexsEYZ6MzPOk9\\nwYV9MZMsqJKKzdIm7tfuY9favZK4yKtiz9pLdVOe9Z/xvTxrLgWYdNRlScaetceTLwIqtuJHPkpK\\nCb89/C2/JgKCL06+wOnwNH2sK8QSXdaxV9lLUdDc0MXJ8GTmPU7CC71UMqnJGu7X7uNO9Q4XS2De\\nby27BSegMeVZ/xktaL4sICY7QmW1jN1yvo9LMpYEUcC784QQKKLySgpjSdqyKIhzk7muM7GQkERp\\nppj3ulHEk9uJIqFZE6zS4vRCD61RC9+1v8PR4ChVyQcoL7VhNPB2/W3cq91DTa9duUV8HWBSzgxM\\nV35eIjP9/OQwOzNsI4SgbtTxwd4HKX71ZyefpYbo2XGnkfX6yeoep6CJkxt5poI2TeOLSYzWqIW+\\nNwkesihTioBGOz6WZkGWZJTVMmp6jUtvOoGDMKLzTt+cf5P6PLfN7dSQ6jw4oZNKhMpqGYZiLOxK\\n5SHJzRYEYW4wY/M+DDdhpJlEoXBWoMAEy8aTMA7RcTp42nuK48HxzL7MlCcPKge4W7uLulG/MZGP\\nLDApZ7YfO4GD0+Fp7lzKNJ1LFmlSwwbRYxLjZHiCIApgKAZ+e/hbmAqlYBMQfHn6ZapTACwfS5IJ\\nFqOgJWNxGIc4HZ3OUNAAShsf+gmzTAh8+L+qV7Ff2UdJKaGiVWiSJ+loO3RGJogCtEYtfHn6ZUoA\\nwNIs7JR3lup0xCTmhTF2/szM+iqxZPrzmScEANDiGMNOeefGv3MF5ex2olA5WxMsqgiwocyu04UT\\nZnNl2Y2ypVprR7lhUs4DlyYaWVLO886ZdUxYohJEAQbeABWtgppewwd7H+Dzk88RxiFNao4/wwd7\\nH6Q4zPNknfOqe5IooaJX5qqg+ZGf4vsClGc8bawmizIqGj2WEzio6TU4AU1CnNDB5fiScr5Bhy7v\\n1+6jbtSXen+90MPAG/D3UJO0GWnTeSo204hJnLoexj/PQ9KDQZXUuR2l14FC4axAgQnmxROmWNX3\\n+jNzhwxMJGWeFPCbAutOHA+OQUDQslsoa2W+3y2iBauSij1rj3eUwzjEyfAE+xVKSfv4kKqfMWW0\\nr06/AiEE+5WJZPA8Nc15saRRasBQDK6CRghJqaABwNAbpjrjkkBV45I39bIoY7u8Ddu30XE62DK3\\nUA7KaDttnI3O4Ec+BNBztDQLd2t3l+5yxCTm9xiCQJPCaWbHKrEESHdn5gkBABNFVoabFANgKDo0\\ntxPrtVP9iJG3gFgF6rv2dzgZnswkM4qoYKu0hQcbD3CnegcVrbJ2yQxAN8Ct0sRAkkk5A/n83Wlo\\ncvomnVHAAOoO/XD/Ie8ihHGIz08+T3GH815rWkYSmHUuzlNBOx2e4nhwnNqwmcR03o0A82aQRRmG\\nYqCslnE2pNQAJ3AQkQhVrcqvYxHCOExdpyIqtAOU854uU2VLdqAkUVpYIUsaaS5j9nndKAJQgQIT\\nZK2HIArQHrfxtPcUJ8OTmWRGFETU9BruVO/gsHqIql5du2QGoPtXo9RAWZvEguf954jjeO6AfRKa\\nrFHq1cub/iAOcDI8QUximtQcfAxLpbL6BARfnX2VEjxhmH6tOM7vFDHkqaA96z1Da9RKJTOapM2d\\ngTRVk4sxsETPCRy07BbaThtBHEAQBLihm5u8JsEMTKcVzdgca9bjF8WS5EzPIiEAID070yg1bpwm\\nDxTx5LZi/XarHylSlBlNQcfp4B+df+BJ70lKsQqYtJ/vVO/gQePBjbnnXgXJDU8UxFSVyA3dmYRj\\nEQzFSKmyeaHHZ2YqWgUP9x7ymRGW1CSrPQysksbe1+SmnBcUGQVNERWqJOZ00bJbGHgDbqzZNJtL\\ndVWYc7YiKTgeHkOVVViaRZXQVAuapCGMQ3SdLq0U5gSNmMToOhN5ZkmQUDcmimbzksW8YBTGYSoI\\nLZrBYQ7h7LqSlcybQkE5K1BgguR68ODhaHCEp72n6DidmSKJoRjYKe/grfpb2DK3Ujfa64TpgX8m\\n5SxAQBRHOBouL+UMTK6bwY98ntRosoaPDz9OUZ2/bn2dKtwwJGMJAUntq3ndomkVNC/y0HE6OB2d\\n8r3UVExY2mK2hSiI2Cxtomk20XE60GQNzVITgiAgiALIoowgCnA6OsXp8DQ15D8NJ3RS9xpJRbOr\\nxJIZmeYFyUwYh2iNWvznmzLSnEZBObudKBKaNUEQBIACoAJgAzgbnaU4rACt1myb23i38S4OKgdL\\nuSW/KeRtcIZioFFq8I2x7bQXSjlPo6SUUi7JyeqTpVl4uD9JaqI4whenX8xIfBJCgOm9mWBhRZIZ\\nnQ39Ie8OERD4kY+qVl1pUNYLPZwMT6DLOhRJgSIq+OnmT7kp6cgfIYoj7uGTpejTdbo8YAigPjVZ\\n17BsMCKEpLoziqQsfE9eDCaVy+3y9rX6TyyLgnJWoMAEfuwDJQB1oON3ZiR9JZEWPu7V7uGgcrDU\\njfObQp5ymSqpuFu7y897kZRzFkzVTPmluaGLs9EZF4b56OAj3i0HgD+1/oSnvacz5zcdSwT2vznv\\nqSAIqOt1mKrJPx9CCHpOD27grpRYRnGEy/ElqlqVG5q+13gPb228Bdu30bJb8EIPdmDjef85LYJN\\nxecZeWbFyExAVklsksnMIiEAACkVVDYv9CZQdGhuJ4qE5g0jjENcji/xQ+cHoAZAA2RlMlfCaAD3\\navfw9sbbaJQab3QocxHmtaDZRrislPM8lNVyqhU9DsZ8xqWslvFo/xEPCFEc4YuTL9Aet2eCI9uY\\nWVdmUQudJSHsdZhj8k55BxGhYgXLXIsTOHjae4owDrkM6k82f4KqTpMiNjw69IfcjG3au2bgDVL0\\nhJpeWyifuigYBXGQFgIQ52/mzKeC4abFABiKAFTgx46YxOi7fbzov0BgBIAOQAAUebIemGQvM79c\\n184+kJ/IJIf9l5FyXgRLs1LCK0w1DABPapKKjd+cf4Mn3ScAkBlLkonMvFjCbAhEQaQ+ObLG5yyD\\nOFj6WsI4xNHgCF7o8ffkZ82foWk2UVbL2LP2YMgGLsbUiyYi0Yx3jR/5qc4NO5d5WBRLmCE1wyIh\\nAEJIim72prozQBFPbisKUYA3AELoUHnP7fEqv+NPKmiKosCQDdT02trymKexSI9/+ued8g7lPZOY\\nSzlvl7dzjpANRtFiHQXbt/kAo6maeLj3EJ+ffM4Tgi9OvsAvd37Jhy+Bl8FRFHPFApIYekN0nE5K\\nueZO5Q4kUeKJBVNBM1Uzt1MxDsb82oGJck9JKYEQAjd04YYuKlqFV9WCOOA+CYyCGMURP0dLtVaq\\n6GUF3JjE8EOf/32RTDMAHA2O+DHqRv2NdQ0LylmBHyucwKHKkf6QF2SSN2SGZqBeqlOD3xvwi3lV\\nzJNfztqP9qw9jPwRvNDjHl7vbLyzUsepptcQk5h3eEb+CBf2Badzf3TwET49+hRdl9KXvzn/BmEc\\n4u2Nt1Pnt2wsCaIgZQHAYkkQB5xyxlTQ6no9t1PBkplkMrJd3uZUuaE3RNft0pkjtYzL8SVaoxbt\\nOqlUTayklFCSS7xQqkjKSl32vOQtOZsqi/LCz6PttHkCp0hKKk7fJAghRTy5pVj/3e1fCH7ko+f2\\n0HN7MzzmMAyBGIAHmL6J+/X7b+YkV8QqiUwSTMqZCQMMvAFM1Vz5hriiVdD3+nxDH3pDCBCgyRpN\\navYf4vHRYy6m8NXZV/jVzq/QNJupALlIAa3jdHjyCdAkZKu0xalv81TQkrB9Gy8GL3ggkwSJ+wqw\\n8zAUA6qk0uPJtEpoBzZG/ogmGRAw8AeQBAmmaqKm11JzRasgGYySVDMBwsKKWhRHOB5M5DUPKzdn\\npDmNgnJW4McEJl3P5vem/wYA8AHBF/B24+2MI6wf8hIZYL5ymSiIuFu9i+8733MFt7PRGXat3ZVe\\nf8PYQBRHXHqfdU+YceiHBx/i8fFjXI4vAQB/u/wbYhLjQePBTCxh15O8tqTU9LTVgqmYPAbMU0FL\\nFjeDKMDR4Ch1L7FT3oGlWfxnS7NQUkpoO1S+ec/aw9Afouf2MA7GqOgVXgjcMDZQN+pXHsJPXve0\\n0M4yRdlkLNkt776xQm4UJWhyoghJWl9GTIE01r/0f8tBCEHf7eNZ7xl+6PyAy/HlTDJjKiZqUg1o\\nAxgtlshdByxDLVsES7NSm29r1FpK1Wv6tapaNVV5TAZ5QzbwcP8hDxaEEHx99jUu7IvMztE0gijA\\n2egslcww2c/kHE+eClqSgjbyR6nOjCzKuFe7lzoOgyRKPBiJosglub3Qw+mIDnZGJOLzR6tS9qYR\\nkzh1DNbtmfc5n43O+OdlKMbSfjmvAwVFoMCPAeNgjNPhKZ70nuByfDmTzGiyhppSA7oARoAqrH9y\\nn0ctA7K9ZLLAFL4Yzu1zjPzRyueyZW5xdTOAdsOZcI0kSPhg7wM0jAnF7bv2d/ih80Pm+WUpoA29\\nYSqZEQURVa2aigF5KmhJCpof+alkRhAE7Fq7qXjKIIkSN2dmlLY9aw+iIHITzjCmPmjtcXvmO3UV\\nxJjEEm5kOieWDL0h70yxa3lTKGLJ7UWR0LwmsOHC79rf4Xh4PFORkUUZm6VNvLPxDu7W7kKNJ4Fn\\nnRfRdSQySbBNFkhLOa8CQRBQ1aup2aKBN4AXeiAgMBQDj/YfoaSUuEzn162vM18reQ1MljkpWmAq\\nJnbLu5nUjaQKGgOjoF2OL/Gi/4IHbUVUcK92byFNTJM1VLQKFEmh5y7Q37mhCy/0YKkWvJAq5EwP\\n/q4CFsSYgeZ0dWz6cyeEpMQADiuHb3SouKAIFPhXBbvZfNJ9guPB8YzqoSiIqOpVHFYPKXVVLIHl\\nBuu8Fq4jkUliy9xK3dA/7z9PDbkvi6bZ5OaaAHA5vkTP7YGAQBZlPNp/hM3SJu/KfNf+Dt9efpt5\\nLHb+rPOTjCWyKKOm1zLnmKZV0IAJBe18dD6TzOxZewvZDSxRYtRDS7PQ0BtwAgftcRuiIMKLPLzo\\nv0B73L5ykYyL1Lz0sFkUS4C0VPNWaeuNCMswFLHk9qKgnF0j2FBm1+3mKndZqoWaXkNZLac263Wn\\nzFyVWrYITMqZucw7gYOu013aUDJ5nJpeo6pfL4cR+16fD8obsoEPDz7E5yefw/ZtEELwp9afEJM4\\n07hr6A9TLsvM+yAp45kFQRBgaVaKgtZ3+zgZnUCTNBiKwZOZZQdyRUGEqZi8gqXLOnRZhyZqsAMb\\nuqRDkzWM/BHc0IWlWStx5YMo4MFrenYmi4YHAB2nw5XlJFF6oxU1YP3XT4ECq4AQAjuw0Xf7fB+Z\\nBvOzYuIkDOu+Fq5KLVsGh5VDfNf+jhssvxi8wL3avZWOwWY8T4YnGAdjEBCc2+ec4iuJEj7cp7Hk\\nYnwBAPih8wMIIfjp1k9njhfEAQbugF8zIQS6rM/cA2SdBxPQYRQ0N3TxtPsUmqxhw9iALMozbIF5\\nYNQyESL80KeKobIBN3LRdtowIxMVrYKu28XQH2KrtLUSnXm605+cncmLJUEc8PcRwBuR/U9i3ddP\\ngXwUHZprwDgY42R4gr9f/h2no9OZZIY5p7/beBeH1cNMicx1bXNed0cmC4ZiYMPY4D9fRcoZoJt1\\n0liU0f3iOIYgCNBlHQ/3HvINmhCCP7f+nOLuEkJwYVM1GHYcSZAoN1mdbefngVHQBu4AJyNaffIi\\nD37k427t7srqQj23R71rVAuqpKKu11EzarBUC37kc4nnZbxrkpiRaRaV1Gea9/k+7z/nx9+z9t74\\nsPG6rp8CBVaBH/m4HF/iSe8JToenM8kMk1u+W7uLw+rhDM0VWN+1cN0dmSwokoKDygH/+SpSzsAk\\nqUl2Cs5GZ3ADF6IgQhIlPNx/mJJ8/kf3H/jL+V9SxxkHY1qISlxWWS2vNCvKOisxiXE2PEOMGE7o\\n4Nw+x2Zpc+lkhsELPUgijWk1vQZDMbBlbmHX2qU+MHYLbuDyjtDp8HRpKniyIzb9eebdL5wMThDH\\nNAmqaJU3bkexruunwGIUHZorglGJum43k3PKzC+XHdhet0X0ujoyedgwNjAOxnBDl0s536neWXow\\nkFX9JFFCVa9S3vPLSxj4Ay6DrMkaHu0/wucnn3NDzm/OvwEBwU55B+f2eerz1GUdm6XNFA8YWO49\\n6Lt92IENRVQQxAF0WceetUc7G+piw0qGoTfknkSCIGC3vAtFUjAOxlChQtEVOKHDRQN0WYcTOPBC\\nD2W1PJfWlrxWURAzE63pCpvt27x7RQjBgXUw85ybxrqtnwIFlkVMYoz8EQbeIJc2WlJKqOpVmIq5\\ncO9Zt7XwOjsyWajqVTRKDb5HHQ+OYSrm0iqQ7HwZletocIQgDiAIAs7sM+yLdL5FFES8v/c+vjz9\\nktOXn/SegIDgZ5s/wygYpfZXSZRgqenueZYCWhb8yEdMYpiqiaE/hCRI2DK3uOrasn4tQRSk6MVb\\n5hYkUeLv1U55ByN/hK7ThRqoqOk12IGNcW+MDWMDNb2We77TQgB5ojLJeBKTGKejU/5zFlviprFu\\n66fA8igSmhXB5Za9YeYmrcs6lVvWqiv5xayTM+28jszrwqtIOU9zfWVRRk2rYeAPuOJK3+3zzViV\\nVHyw90Eqqfny9EtslbZS1ClLtbBhbMxVQMvD5fgS5/Y5BEGAqZoQIXIPoXkqaNMYB+PU/FVSDaei\\nVeCGLpzAQUkpQZMoBW3oD2HIBhRJwcAbQA1VlNXyzPeRdXQYFiVY7HoZPRAArxCukui9DqzT+ilQ\\nYBkw0ZChN8ycV2AD3FW9ulIHdF3Wwk0nMklcVcp5+pwlUcJB5QDHw2OEcYiYxDgZnmC/sg9VUmlS\\ns0uTGnZj/o/OP9Bzenhv8z3+eoqowNIsiMJyss5J2L7Nj13TazAVE4qkQBbluSpo04jiaGaGhyV5\\n2+VtnsiU1TIM2UDX7aJlt3jXpO20MfSHaJrNGSU0QkjKRFMSpIXvtSAIOB+dc4VSTdbQMBpFLClw\\nZfzLJTRhSOA4MaKIgBBAEABJEmAYImT5agskiAIut5w0MmRgSiWsfXul11iDqsCbSGSSYNrzrRE1\\nNVsk5ZwXMEVBhCqrqAgV9F0qwRnGIfpeH1WtypMa5lNzOjzFMKB6/RGJcFg5xIaxkRowXSWpObfP\\nubQnQKurd6p3eCWW3by4IW3rT3PgGfzI53MzAE2Wp1VsdFmHIiqcmpL0rvFjHyW5BD/y0XW7nC/N\\nzjlZPZRFGZIoIQ5GiEYniCMXiENAlCFKOqTyHkSljDAOcWaf8fdj2kjzTQWjdVg/Bf71cN3xJIoj\\nDP0hFy2ZhiAIMBWTG+xeBW96LbzJRIZhVSnnebFElETsWXs4HhwjIhEiEuFkeIKDygGfEfnN7m/w\\nx7M/4mnvKZyQyjKHJMS/bf0bSkopxdJYJOucxNAbpsRrmDKmIAg4t8/5d4ipoDXNZmYnKiYxty5g\\n1zWdlCQTmZE/wmZpE17o4XJ8CSdwuLno0eCIGpoaE5PvZDIjQOC/XxRPTkenPJbsWXup96CIJQVW\\nxb9EQkMIgecR2HYM38/aSAlGoxiqKsA0RWja4k2VEML12vPkH5mjexaPeVW8yUX0phOZJCpaBeNg\\nzDsnrVELek2fqVBmBaDpYKlKKizN4scKImpaxtrzkijhbu1uKmA87T7FVmkrU/5ymUB0NjpLcbZN\\nxcRh9ZCrvVS1Kkb+aMaIs6yWU3QvNgvDoIgKNUPLAJN49kIPTuhAkzXuXTPwBzBk6mtj+zYVDXg5\\nC8SrwoRA8jpwL54hdi9njh8BCHrfQTS20BVLiOIQABU/2ChtZH5/bjoYFUGowHXhdcQTJ3DQ9/q5\\ns22qpKKiVVDRKit19rPwptbCOiQySTApZ6agdW6fw9KsmQLZsrFkz9rD8fAYMYkRxiGOB8c4qBxA\\nEmk34sHGA/TcHpwRTRxOhicwZKqwmYXpItl0LBl4A17cAybzQSwW7pZ30XW7qaJdlhEnIQRO4KT2\\nZEMxMj8PSZSwWdrkJpyQJ941F/YFyloZlmph4A1g+zYapQYs1Up1GEVBRGifIRw8nRtPYrUGOfAB\\nyJAleW6yyc77JlDEktuLW5/QxDFBrxfB8xYPQPs+ge9H0DQBtZoEUZxdIF7o8W5MsurAIAkSanoN\\nNb22kjP74nO7+TbnOiUySTTNJpzA4S3+s9EZH/ScV0nLgi7rIITwpJR1PQzZwLl9jiAO8O/b/44/\\nn/8ZbuiiqlXxtPcUiqTgrfpbmcfMC0QnwxPuWQBQytpB5WBmMHJaBY2AJs+MghaTGF2ny6+TKbgt\\n+lw0WYO+nqppAAAgAElEQVQiKXACB37ko6yWocc6Rj7lcpeUEhCDH7uklCCSGGL3b/AzAs80YucC\\nVQA/gYjvoOKwesivib0P01iWI/6qKGgCBa4D1xlPwjjk5pdJJ3cGQRBgqRYqWuXKnf3s87rZtbBu\\niUwSW+YWBt6A7//P+8/xXuO9SQchg+qXd86arPEEiYAgiAOcDE84vS2IA/y8+XOIgojT4Sk1yBxf\\n4Kuzr/DrnV/netVkxZKe28OFPVH+UiUV+5X9VGEvSwUti4Lmhm7qOg3ZWFiA1WUd+9Y+em4PA2+A\\nilZBSSmh43TQsluo63VosoZz+xydcQeb5iZVxyQxgouvEDsXc48PAKLfwzsA+pAxLt2fmS2axk0l\\nNkUsub241QlNHBN0OhGCYHHwScLz6PM2NmgQikmMgTdA1+mm2rJJMGNDS51VKLsO3GRVYF0TGYY8\\nKeeaXltYScuCoRiIScwTiK7TxXFwzG8iZFHGfzv8b/hn9588Ifm+TakKb29ku2wnAxEhBMeDYwz8\\nCT2solWwb+3nnpsu067TNAUtiAIEcTDR8oeAul5fumorCiJM1YQaqRgHY+514AQOht6QD7MGcQAv\\nsLExegYS2osPnEBdiPFz+NiYMtJcJM/5Or9fRVWtwKviOuKJIFD6T9/rc1nzaWiyhqpW5TMV142b\\nWgvrnMgkcad6B39v/x1RHCGIAhwNjnCneufKsWSnvMNnWuzAxt8u/4Ztc5ureP1q51eo63U8HzwH\\nQDs1hBD8evfXmZ/3dFLTGXdwOb7k56LJGvat/dwYwFTQsihojGLNoMv60rFEEATUjTpM1eSiAU2z\\niXEwRsfpQJM0WJoFn/h40X+BmmqhNnoC4veXOj5DFSGqzhlI/DaEl0nNoiJZ8jHXjSKW3F7c2oSG\\nEFpJWzX4MAQBQbvjI1Q76Pv9zEqNIiq8G7OqzO7q5/P6F9G6JzJJMCnnjtOhUsrjC+q9kuiKrXIz\\nYKomCAhOh6d8LoWAwFRMbJY2YaomNowNfHn6JaeM/dD5ATGJ8aDxIPOYgiAgjmMcDY4w9If893Wj\\nvpRaCzPiTFLQuk4XbuTywc+qXr3Sd0+RFFREKhrghi4MxYAmaxh6Q/T9PgxZR3V8BHHFZIbBBK3E\\niduPZr4/byKxKYJQgVfBdcST87YDR2ohJLMSt0xSvqJVrrWzn30ur3ct3JZEhkGRFBxWDvG09xQA\\n9dBi+z3DKudtqiaaZhNH/SPYgQ0Cgpbdwra5DVM1UVJK+MXOLyCKIn/N09Ep4pMY7++9PzepaY/b\\nPP4QQk2h9yv7C2MdM+JMUtDGwZiL4VT1KlRJvVIsUSUVu9Yuht6Qz2Lqsk791YYnqGpVGLIOtf8d\\nSJTtmbQQwRDe+RfQpuLJm+j+F7Hk9uLW+tB4HlmKFjAPYSBi5PipZIbJLd+p3sGDxgNsmVuvPZkB\\nXm+bM89L5rp8ZF4XNowNaJIGAsKlnGMSc8+CVRCTmM+QMARRkJLVlkQJv9n9DRqlBn/MP7v/xHft\\n73KPeTRMJzMbxgZ2y8ubTDIKWkkpwfZtOKHDKXKSIM0Mbq4CxpVmvHwmW11SSoDbhhZmz4Yti9i5\\nQDRu5f497/s1z9voqihoAgVeBdcRT0iogETpWMEq+m/V38KWufXakxngBmLJa/SReV2o6lVsGBs8\\n1h8PjuGF3pXPWxIkaLLG3wsncOCGbkrI4efNn6doyy27hc9PPs8sngLUfy05f2koBvasvaVjHaOg\\nbZe3EZMYfuSDgKDrdtEet1/5PsbSLOxZe5Sq/DJBb5pNKoAwbsG4ajLzEvPiSRFLCiyDW5vQ2Hb2\\nprAqNEKH5zRJw7a5jQeNBzioHNy4udPrqArc1kQGmATO7fI239D9yEd73F753P3Ix8nwBE7owNIs\\nKJICXdaxU96BH/mpJIclNVvmFv/dk+4TfHv5beqYTAp05I/4+TSMBnbKO/z8V4UgTBI1QzYgiRIG\\n3iA3AC4LSZRQ0SpQJAUxiaFKKhpxNrVyVYTDZwsfcxPBqKiqFXgVXFc8UaIKN7+8V7uHg8pBppHy\\n68TriiVZppjrnsgwxCTGrrXLE8qYxHjRf3Gl4/TdPpzQQVWnyqaSQPdXL/JScy8A8LOtn+Ht+oS2\\nfG6f47Pjz1IGlOz3XafL30dTNbFv7WfKPC+CLutolBrQJHqtzCqAJXGvAlmU0TSb2CrR+KhKKnbK\\nO9gVrmf9LIonRSwpMA+3MqEJQ5KjPrM6FGLi0LqHtzfeRqPUeGOO59e5iOYt7nUPPEC6CsiknFng\\nTA54LgPbt2ecjg+sg1Qbf+gNUxu9KIj41c6v0DSb/HfPes/wt4u/cV+bZ71nKRfvptmc8cxZdoMN\\nogB9t899J0pKiausMRW0rKHiVUAI4VU1lURQX7E7wxA7F4iD5Y71OoNREYQKXBXXGU9kYuCwfA+b\\npc0b6exn4bpjyW1OZNj5AxMpZ1Y4ckInpXC5CGEczlg37JR3cFg55HMpfa+f6rIAwE+3fooHGxPa\\n8sX4Ap+d0KSGEILWqMVpYsCkE5IlYbzM9TqBA0mQsFPeQU2vQZd0fv6no9PUa10Vmqxhv7IPS7Wg\\nxCHM2F38pCWwbDwpYkmBLEj/9V//9V9v+iRWRb6c5tWgSDJkZbIQSMb/8nAdG3oYEvT7Hj744Hf4\\nz//8P3j48HdoNLYhSUKmElse5i3k29CVAbJVZ3RZRxBPHI5Zp2VeK54Q2mpnTsoADWhb5hYqegWa\\npHH3ZQDwIg+KpPDAJAgCtsvbsAObD/f2vT7GwRjjYAw3mmzg2+Y2Ns3N3Pd43vsexRE6bod/x2RR\\nxo61A0mUUoGT0QdWuUlKfh/8yOdJneqeQ/B7eU9bGYKoQjIaix/IHr+E4doqiIMR3PYP+PjX9/G/\\n/9d/4OP338N23YAgaxAWmIUWKHDd8UQQAWWFr9117ss0lvh4771f4D//8//gd7/77zg8vH+lWHIb\\nqWVJZF2DKqmQRIkXxezAhqVaC02FmQlq8nimQj3STNWEH/mp+DTt87JZ2oQAAW2HDtePgzFnGySN\\nky3Nwk5550qxhL02T+BEauasKzqVbWb0uNDhqpfLfI7T90VhHCKIAxAQaJIGw+tAXFEIYB5WiSeL\\n7muuFEs6P+Dn72zif/+v/8B/fPRz3D/YLGLJLYFArpuAeAPo9UI4zvWdtif0ESq9a1WcyVtIAl7+\\nngBirEOKTIhx/pxELHqIZRtE9IDEIZet3tyGwAMs9gKICR2+Z616xk3PQhRHaDtteNGk66KIChpG\\nI5UQMHU7dkxBoPNT0/KR315+i3P7HBGJcDm+RFWrcnOzptnkhmPT15O6lpxqUrLix3xq2OuHcUh9\\nKxLviwiqYiYK4sz7lfc9iEmcotU1gy7KwfUFINm6A3XzF1d67lW/u4QQRONWrtcBg2hsQbbuQipt\\n35q1UOBmcd3xZIwOHHGxbO2qyP3+EkCBCT2uQYGZ/RgAAWx4Yh8BbEDI35PyEpnbsn6WkfZ/3n/O\\nO+yyKON+7X6m+hchBONwnDIhFiDAVE0oopJ63MX4IqWSumlspgw1AeBZ/xmedJ+AEIK+14ciKfhJ\\n4yfcS6yRcSO/TCwBaFEujEL+HFVWIYsyCKFJSNtp8+sghEASJGyUNvh1sFlV9u/kf5MI45D/XoKE\\n/WiI+jVRmIHXE0+KWPLjwK1MaLrdEK57fac9itu4jJ9AFETIAjV5kkUZkiBBEZXr//ISAWrYgBQv\\n7z0QiQ58uQ0Iac36abBznVGeQk6CtSjxWvLxr4JlvQDc0MXp8JT/XDfqM8mEF3loj9spDyFDpopp\\nWQlrFEepORVGy0oGN0II/nL+F/z18q88+WgYDXx08NGM2WUyAEy3vwVBSP297/VTVLeqVp2pFBJC\\n6NBlnFZOYipoy8CNXMTx5Pq2vUsY4WDBs5aHZO5Ba/7mlY6xSmJD4hDe+RdLeR0wiMYWtOb7XBa0\\nQAGG644nHf8Uz7xvuKqUIipQJAWqqL6yaeYMiACL7EHF8jOfPkYYCiczsSS3IyMuOZSeEzNmHvca\\nbwaXMckEKM33ae8pjxOWZmHf2k89JiYxRv4oFUskQYKpmJmfY0xiKp2cKKRtlbZSQgEATWq+Ov2K\\nP66slPHB3gdoms1JIpG4jiRtLnmdvDZKCPzYRxAGE6q2rKQSLvY4ZoiZfG8szUJZW+77E8cxIkT8\\neJIg4SDso078Bc9cHq8aT4pY8uPFrfxErns/HPlDDKIBdFmHIijwIz/1xZcECbIkQxIlyKJMkx5R\\nntGPXwpEgBY0IZLV2pdSbEALmvCUcxAsHsCbkczNo81dUxy/SmKUFXxETOgM08mALuuo6TXuFdNz\\nezBkgw96jvwRem4vdcyqVkVFq6ReI3lcURBRVsvoe30eOLpON5XUeJEHVVJRVsq4dC4hQEAYh3jR\\nf4FSY37bPvU5kMm1jPxRKpkpq+VM2oMgCCirZS6/zGAHNrRYm2vIJwgCojjiyQwIEJEITuTj+mz8\\ncC0b+7K+AyQO4Z1+gnhFikPsXMA7/QTa7sdFICqQwnXHEzsYYeyPEcohpDBx4yvQAW2W4CiiAlVS\\nIQvy1RIdIqBKDiGvuJpVlFElh+jjBQhm52PoqQpz12Tm6SwbTFaIOcskPwKyYwkw6cpMS/wqkoKd\\n8g6Oh8cA6BxlT+nxAlkQB1SSOXHtqqimaFopKtbLf28YGzgbnVFKFqE2AVvmFh/Qjwidm9nQN/Bs\\nQAfgPcHD953vqTeZlL83zXwOZLLH++EkoZAleSaZAehjq3oVmqSh63b5ezbwBvAiDxvGxtw4Hscx\\nAhLQz4/Q98gJHFQFD3X5+vbUV92fi1jy48Wt/DQkScC13YkDIEJETbfiAIqsUId1RYcmaamqPu9+\\nvLxJZ50cWaQbCPt3XqJDCEG3G+GqdG2RqKjgAJUqMH39t60FuopDc/K9bJaaeDF4wWdYCAgaRgM9\\nl1IGN4wNENDK0VZpC4ZizCRGWdiJd2gy9PKxkiihptcQxiGe9Z9h09xEo9TAP3v/RBRHKCklEBB0\\n3A5+uf3L5ZMaUIlPRVJQRx0A7bYwEYB5nbUwDmEHduq9U0T6fWXf0+nv3tgfww5sGrRCD7IoQ1RK\\ngH89Q5wAIEhXl5aeOdacYBTHMfzzL1YOQPz5fj/T66DAjxvXHU/G0QhO5EAURVg6rX6XlFLuTSZA\\n9xtVUqFJGlRJ5f+f7hQn/93tXn32R4aBHeVdVKrphO42UcsYlu3KzNCpCEGj1EB73AYBFU3ZLe8i\\niiOMwzE1cn75nJJS4rEk+VpZBbs71Ts4GZykqMT7lX3IoozT4Sl2y7vYLe/izvAOzuwzrqja83p4\\ntP9o7jzP9L4YxVGK5iaJEk26MGFqJP/NzjkiEc7tc/jhpHiriAqaZhO6ogNkMjMTk5jT1php7Mij\\nnStLs2CEQyC6HpEZ4PriSRFLfny4lZSzMCS4uJg1L7sq/jL6/1HSNMSIEcd08cqSDFVUoSs6DzRZ\\nCmjJTSIZnKaTHFmU4Xk0oXlV1GoidH1yA5tE3seZVz27rscvetx0K30eL3jRawRRgOf954gR80TU\\nUi3+d1VS0TSbKyvW+ZGfUoAJSYi+00f8siMmQMBh5RAvhi94ZQ+gtIJf7vwSoiBCnBIOzKI6MBUc\\nQRBgyAbqRn3mXPI2SeZRkxQMAKEdHkZBI4TADV10nA464w4iEkEQBGiyBgEC5NjH3vj5Cu/MfOgH\\n/x2i8npkzpPfhWh8Bv/8i1c+ptr8ALKZPX9V4MeH644nXw//P3jxGGEUUpl0WaWxRNZRUkswZGOu\\nv1SKHSBKqSRHk+m/fQ/XEkuqNRG6Tl8vb4b0ujs0q9xyZHVB2L8JIXxvTiUaZELvnU5iphGTGD90\\nfoAXevQxBCmFMUEQqJLXiop1QRTgZHiSogpPn8NmaRNDb4hvzr/hr1XRKni0/wi6rM8UUFlywhQr\\nYxLDCRz+N0mQYKpm6vuzqNDGjDh5XAaZYTV4oYee20PH6fD3SREVCCK955FCH+8E1zcz9rriSRFL\\n/vVxKzs0sixAVYVrUaa58E7wbPhP1ALqpmupLz0DCADhpbrUSyoSowZIosSpUakN8+XpxCRGEAVw\\n4aY3FKcK4NVlAMdjAsO4npmYJA83ibyBc171mPo7pzVNYWamZEEljSDb/Td5fkzK+fngObpOFzGJ\\nIQoiTMWEqZhUUWYF5RP23uiyDkEXMPSHcEMXLwYv6EyNSulnd6p3UFJKqJfqUCUVz/s0Keg4HXzT\\n+ga/3JnfqQmjEB2nwzsssiCjrJZn5mPmgVHvECIlG911qJpbTGIM/SGCiNIB2Pmwqp8kSIglHWNR\\nR+kapDZFY+u1JTNAusoWDhZ73iyDcPisCEIFOK4znrTcI5zZxzBVE5qsQRIkur8IgB/7EEPqKxL8\\nP/bePEyuqzr3/p351NxzqzXLoyx5wMYjAduQAbgQDAk2yUcMIXmAhCFASCDJDcT2JYGbALmMDgnJ\\nA9gQSMJNsDE4GMxgAgZfgSTLtmRJ1txz1zyd+ftj995d1ZNaspwYp5cfPVK7q86pOlVnr/2u9a73\\njQIsQxS8DN3oWp8717owCgmjkKbWbVqYCtdg8OQr2a1mTMo1z4hSlHwP8+c/Ov8Ni4MT+e/O5ywH\\nfLqOO/u3yiVaR97R5l7bYsfTNZ0N+Q3sn9lPPagTxwKADqYHlX/XUkBvuS6IpVts6tnE8epxwihk\\nsjFJkghfNVM3Gc4OC3pbTszv7BzfCYj9xs7xnVyz/hpFU1vq/UswI8O13IXXbSmm+eyeJmNlSJKE\\n6ea0ykvTzWlKrRKu6VLza7TCFkEYCMqkZswVaTWxfazFHhVMCjz5osBTmU9Wc8kzP34mAQ1AJqPj\\n+0++QjXpHSFrZ/FCj1bQQkcnbadxDIcgDoiTGC/28GIPW7dJmSlMwxSV7tkbW1ZLwjgUCiCLgBwt\\nMdGjM6Np7vsJYZhgzKNdn0z1aqWqWKcTywEpmXw6F360pSuCKzm+EzlEcYSu6UqGc3PPZsEDpnv4\\nfiXdHyWbbJi0ozZPlJ9A0zSlELZ9aHvXvMrWga3oms7h8mFAeAvsHN/JJcOXLDkwWvbm5nt0TafX\\nXdiZWfS1zaOagDCCNTSD6eY0Na9Gw28QxAGGLqp0QRSo5GYZFr1uLykzRTNoUmwVGU10zlnR2ZcP\\nPbthgUmcjEVlR09TbCIJG8sq0JxKSK+DpxKIrcbPVpypfFIMT+BarpqVkfOX7aBNlERK9t0yBFU0\\na2UxMdU8jWVYREmkZIBVLumkzSYmxjLKmKcSvi86VKa5PLhY7N/ycSfrgpxuLLUmxEksVNokiJD/\\nnQx4ad0FtE4QUnALtKIWpm5S9aqsza5lODusctZiTIyTvV8Xl/X59ewY2yE6SRrMtGa4ZPgSelJz\\nYjbr8+vR0Ng5sVN14H9w/Adcs/6aJTt57bDddf6UmVpWlEECmE4KWedzR7IjnKieoNQqUfXFTI2h\\nGfSn+wXTZHa2x9AMepweck6OelCn2CzSilpMJAYF7ckDGiO3cUk6+kpiRTLUq7nkGRs/s4DGcTQc\\nR8PzTn8RTQwPy0mwY5uAgGbQJEoilYiyVhZDN/BCDy/yRJKJfSp+hZSZEgPphgOa2GCmrbT6OYgC\\nBXDCOCTylq62nE40miHppRU6/8uji7+q0UXFWkw5Z/6CtRzlaro5TSNoMJwdJqwKANmX7sOP/JMP\\n155kvav7dYqtIlk7SzNoYuqmUL/R6KIdJEnCtsFtWLrFE6UnANEl2T25m0vXXLrgdZSbZdVJ0jSN\\nXrcXy7DmqovzQNdyYLMdtmkGTartKn7k0wybhEmoAFilXcE2bApOgaydpS/VRytsUW6XmWnNzIoL\\nmNQ0m9yTUKcJ7QItzSYd+YvT+86g4ERUO35mDjYbUX0Uvfe8M3rM1fjZjTORT1pxhWZSxtItUQgL\\nxaC1bdrkbUHhaQZNIQMc+pSikqqEZ+0sWTurKGYZK8NwZhhd0+dyjwQ5/pmU9IBqw8NJP3kw91RE\\nV+djdq5DrjWdnjhLdUvmd07mRzMQksxr82vxIo9G0CBtpakHddbqa5fNJyfbZPuRT7FVZCA1wFRT\\nULL60/00wya9Wm9XQW9jz0ZM3eQnYz8hQXRfHjz+INesv2aB8Es7bCsasaZpgg7fISYgmSNRHCkQ\\ns1Q+CSIhflBulYXwTNQmjEN1jWUuHMoMkbfz9Lq9+LHPeH2cSruiWAI13aGtm7hRY9HzrCQ8M0uo\\np8ksNn+80mSygoeFHXTxMxGrueTpEz+TMzQy4jihWIwIglN/C5al0ddn0I5aHC4dZrw+TqldEu69\\nJPSl+hhMD2IbNjknp2Y12mFbGDLOcnd1hIFW2kortS1DM3BMR6imzQ6CVisx7TM3h81McIKxYL+g\\nwM22gZ90aPN/1Bb996I/LzLLczIvgFONMAkptUpd8yNJLCQrZfu74C5UNVtpNIIGk41J9XMQBfQ4\\nPVim+AwlaJ0fx6vHOV6d23DnnTznD5yPoYlkWPfrXVKeWTuLYzgLKpvLJUg/8mmHbRq+kHCO5ynd\\n+ZFPEAW4loupmViGhWsKYYtW2KIVtKi0Kwr4pM00fW6ByyyN/GnMNFYT2B3pRMxR2hzDecoGJDdE\\nDQY4c9KgT8brYDWemfFk80muEHOsdpTR2qjwl5rtkubtPCO5EXRNxzZswjikFbaEQW/QnlvPtA6z\\nRkvMQpi6qai0UmGrUonOqG/OWPsQh9t7hPrabDV+pRXxxWKxLkhXR2Vep149h+7ndK4lpyIis5JI\\nEuEvE0RzuSROYqab0+r8WSfLSHbktI7vRz5TzSlFxW6HbTQ0MXCPyCWLUaNnWjPsnd6rfnZMhwsH\\nL1SdmjAOF/ir2YZNnMSq8yIBzFLXJoxDURTzm/ixTxRHXZ+3F3nU/bpa0x3DIeNkKDgFan5NMAI6\\nrAQydoa+VB8Zw+FCPSSnnfp3sxzFPOh5RAjq93zrhDMZG6IGgwQnf+AKYzWXPH3iZxrQgEhC5XJ0\\nSpU1x9Ho6TGUc3KSJEw2JjlePU6xVVRqV6ZuMpIbIWtnKbgFRU3zI18414eiYhYk4uYwNKEwkjJT\\nqpovHYPDZorAO3PGncebBznY3CkGvTUNHV043WvGHMgxTLWphpV3QZ5srFR15lSiHbYpt8tdG/mM\\nmSHv5Kl6VapeVZ6I4czwSZ2f50fdr6sqGoj5ljW5NV0O0ACu4S4qlXyidoJjlWPq56ydZevgVoIw\\noBnO8d9d0yVtzoGipSRTYU4WsxW2BP1xkTkl+f1K22lsw6bhN5QcdDtsq65Qza8psYuslSXv5nF0\\nBz9qslWL6D+Fr2ZVs9ifOLRnpUnV656d7zF1c2lRiSVJ3eKvOIkJ4kDMDsQhfuzjhR4XWwab7DOn\\npnYmvHNW45kXZyKflFoljpSPiIFrr0IURxiawVBmiL50nxIFaIdt6n5dAZxW0FLS7FKuPWfn1Hoj\\n5wQNv4fIP3PkiqON/fy0+D1s00ZDE4prpq0Ajm3YSiRHzqjMp3vJ13ym46nIJVES0fC71SJN3SRt\\npWkGzS6vs+Hs8CkXyLzIY6ox1TV3OpgeVAU5Ga7p0p/qX/Beiq0ie6f3qvftGA4XDl2IZVhz0v2z\\nwgcSzMDidGp57CiO8CKPVtjCC70FtDP5WMdwSNtpXMOl5tVoRWJOxws9Gn6DlJXCjwQIMnSDvlQf\\neSdPykrRDtsYJJwVtxg+BRnnUqKzw/MIOj4P6Y+TsTIr7s7Mf1wUR9S8mgJhlXaFWlDjRb0beFbh\\n9IDqYrGaS54+Ydxyyy23/Fe/iCcTmqbhuhqWpRHHEC3TOf/2t/+d++77N170omtV8pHHyNpZtbjI\\nRaIdtql6VTGboBk0gyZpO81AekDQ0nTRiUkZKdUhaYUtGkFDcVx1TSdKIqLAQIvPzAwNwL7SI/z7\\n4bs5UTtBpV1RFRMpySgr+u1QVADDJBQa+LOzLE+mU7JcnOlKGsz6y3TMn2hoFJwCOSenFmHZhgeR\\nUGSFcyVR9apMt+Y4tRLIdla/5LHDJFTzU50hh0crnlBJ8yOfmdYMtmGr1yGpJJ0xH2RKCkDFq1D1\\nq7TDdtdcFoiNTcpKUUgV6E31krEy2IataH1+5FPxKgIQhS1K7ZLYDNkCAPamelXyjoHjYUAljnF0\\nnSW0JgC470c7+Pz3fszIpc/BMCxFmesUcghjoewkaZu6pi/6JyEhjELR9QxmKXSzwLTu16l5NaZb\\n00zWJ5loTDBi2qxxzhzH0nB7MdLDZ+x4q/HMiFPJJw8++ADbt28hlzO68knKSjGYEUPlkhLVjtrU\\nfFHZtjSLIAlIW2lGciOkLJE/HMMh7+QFcECjETTEhsyrqQ1klEQkoYWRnDkK81jzGAdrj6mORZiE\\n+KFPlERC3CYS1fyaX8OLPIIoUEwGmUueCjDzVOQSP/Jp+s2uza9jOEodTHbQZBekFbTIObmuwuBy\\n4YUeU815YCYzqNTpAHXsMBY5eX6BLGWlyDgZZpozAEpiOWWm0NFVLpovA74YS0J2Yip+RVEd5wMZ\\n13TJuTn6U/0U3IKQGDdE7ouSiKnmlKI3F1tFpBLaYHqQvJsna2VpR2K/40chB9p1GpqOmSRkljFl\\n/d7OPYRrtzBlZEnZQpxAMgiYFWTyIg/btJUdxmJ/wiSk6lWZakxxonaCg6WDPDr5KA9PPMyh8iGO\\nV49zon6CycYkM80Zzs0OsDndt6LPcyWxmkuePvEz36GZH0KCs8Idd3yBbDZHFIW85CUv5hd+4Xkc\\nOnQA27YZGxujr2/pL3SxVeRY5RgNv0GxVaQZNDF0gzXZNRScAoZuMJgZpNftFQZcfkNsDpMYEvAT\\nUVX2Qo+YGNdwyWtrsKOeJc95qrFj+gF2Fn+g2sudsxi9bi8D6QEGUgMMZAbocXuE2k7HgKOu6Upl\\np1Ne+nTbvE9FJU1SADrVvGSlU9L7ZCgp59kkWHALDGWGTnqOYqvIeH1c/ewYDpt6Ni0ALJV2patT\\nk5EaZPwAACAASURBVHNyiw5sHi4dZu/0XsI4pObXyNpZLhm+hIydodftXfR6hHFI3a9T9wQ1TZqv\\ndT5W13TSVpqsLTwt5ALfGVJ2utwu0wpalFol2lEbQzcoOAV63B429WzCNmxFiQEB6KQPztGZfRi1\\nKb5///3kzBRhG178kpdz3Qtv5ODhsUXvHz/yaQbNBd2alJnC0A2CKFCdriAOVIUvSiJFlQiigJpf\\nE9fBry9Q8Nlqu2x3z9zsgNVzHtYq73k1ThJhmHDbbf+bbDZPNpvjpS99Cbff/gm+9KXPcejQAb77\\n3e9y7bXXLvn8mlfjSOUIdb9OpV2h7tfREJvcwfSgWK9TvfSl+gjjkEq7IooRkTAw9GIhVtMMmoRx\\niG3arLPPoaCvPWPv8UR7P2P+QZW/5BqqaZqa6XFMB0u3hDebrncVKwzdwDXdLllp2xAdntNZ/58K\\nujJAw290ebZoiELm/FwSJzGPzzyuOt1pK805feec9L00gyajtdEuL7N1uXULjj/TnKHUnuvU9Lg9\\nDKQHFryGyfokPx79MWEkAJalW1y+9nLVuZgvzywFeFphi7pXV0XOMA67H4smQJOVEZ16w1mQ9+Mk\\npubVGK2NUvEqTNYmaYUtNF2jP93PUHqIs3rPImNnaAUtBdJmmjNqfzHTnCHya9z7hc/R66bJGSle\\n8ss38MnbP80d//INDh4eW3D/eKHHdHO625YAYZDtGA5lT8hHl1olSu0SxVaRht/ootolSYIXebSj\\ntmLUdH6fruvbxM/3b1n2szyVWM0lT594xgEagPHxcUZGREtxaGiIiYkJrrzySh566CEAPvGJT/Cm\\nN71p2WOEccjx6nFmmjNKGcoLPTJ2hrW5taJ6b9oMZ4bJObm5akjQFIvmbEtYVhnCMGGQM/el/79H\\n/p56UFGLRyewkR0F2VY2dZOB9ICaCxpID8wZOc6CjvlAZ76HznJA56mopAVRwGRjsmthc01XyWku\\nFlWvykR9Qv0s6YJLxXRzumtmJmWm2FjYuOjxkySZ22jMRsEtLGqWd7h8mB+f+LG6Lnk7zwvOeoEC\\nQJqmqU5MM2iK7lIcLVALk12VjJUhY2dUxXexCOOQ0eoorbAlAJJXx4+FaVrWygp6Q7ofxxRmsRIw\\n+JGvuPoNv8HB4kFKpRI33XQTHIWh/pXdP37oU/VFd0UCGJlIXUN4KnQCmCgWik91v07NrylApKFh\\nGHMKUbJD5hDxXPvM0WyeSu+c1Xhmxbp16xgdHQXg2LFj/Pmf/zl/8zd/A8DrXvc6/uEf/mHZ58dJ\\nzFhtjPH6OF7kqYKDYzqsy60jY2fQ0elL91FwCmiaJmbevApVr0ocxyKXxKJwEIYx5zhXnrH392Dx\\n6zimKV6HpgtQgxgml93+IA6IIjGIbhkC2Eh/Hdl50DRtUaDTCXIcw1nW0+WpKIwlSaKYFjIMzSDn\\n5JacPW0GTQ4UDyhwMpwdZk12aXneht9grD7WBWbW59cvSX2ebEzO0aSBXreXgltQamQyZpozfP/Y\\n9wkjMa9iGzbXbrqWnlSPEkWQIKYRNBSFMYzDLoqyhiY8kKyUAAfm4r568nqN1kaZbgkp56bXxIuE\\nMFLeySvBmZSVoi/Vp65rFEcUW0Wh1BdHnKidQEPjFb/yCmYem4HWyu6fmlfjaOUoRytHqXgVVaQL\\nooCMncHSrQXqekEk5pu9aK6QLAFrzs6Rd/PibydPr+lyMacvXjA/VnPJ0yeekYBmYmKCNWvE4jM4\\nOMjk5CSf/OQnefOb3wzAFVdcwY9//OMVHavqVTlaOYoXetS8mvIRGcwMKopaykwxnB1WrWNpeNUM\\nmnihNzcg2e45I3Kb1XCaA62fkCQJti6kPhtBg6nGFMV2cUECkDQgCXSSJME2bPEe3H4GM4P0pfq6\\nWt+LAR3bsLtBjmYsqlb2ZOkHzaDZpYsPgtK1VIejM8ZqY9R94VosvWMWW7gnG5NMN+doZmkrzcbC\\nxmWrgEmSUGqV1DCkpgnq23z1s2KryJHKER6feRwQwKfH7eFZa56lgIycb5kPYjTE90kCGdM4edes\\nHbYZrY2qRb3iCRW+gltQvPesnRWgIo6oeBXSpqAVhHGojn+kfISqV6VUKnHj/7gRJhe5fwy47IrL\\n+Ob931TdFjn8DOK71ggaBKGQPI+Y+75JSdK6X6fhN9B1XQEX2S20DXtuM2S4gl5npsjaWfK1J7DC\\n2rLXYiWhpwZx11z1pI+zGv89Yv369Zw4IZSRjh49yujoKFdffTUAmUyG8fFxstmTb2haQUt1a9ph\\nm1KrhB/59KX6WJNdo6Se+9P9qhAj7xlJxZSd23Q4gs2Tp2CWg0keq/+IOI7J2BkGMgOkrbRS6Yzj\\nWKzxGmiJJihnsfhd53yhBCyLmVDL/CFZAqZuKqAjTUM7pYE748l2ZcI4FJS9ZG6dtQ17zm9umZhs\\nTHbN05zTdw4Ze+E1r3k1JhoTaoNt6ibr8+uXBW5xEjNaGxWgZnYHNpAeoOAWuh7XDttM1if56cRP\\nieMYxxTCNFeuu1IUoYKGEooJ5s80MjcTk3fyCkwu97690BPslLChrp2hCUZK3s7TDJtdQKoRNMi7\\neQpOQYkMgJgjk3n4V2/4VaZ2ifnUrvvHgVRfim888A08zVMdF1k0jOKIul9X3zFJb5bfGUmHDOOQ\\nlJkiZ+cEFd0VwCVn5xSTwTEcUlaKlCFyiVnag+aVFrkCpxarueTpFc9IQDM5OcnwsOA0DgwMMDU1\\nRbFYZGRkBN8XN8eePXvYvn37io4nF5+J+gRxEotNX6uEbdqMZEeU8lXeyTOYGeyqyshKdDNoEvo6\\npv/kuZuH27upx3MGjXES05fqY0N+AykrxXRzWnUfppvTamGRIatgnUAnTmLB/U4LoCY7OvMXZQlY\\nZGLt3IzKrpX05jmdKLVKag5Fnq8zwZ8s4iTmSPmIAh1pK826/Lqux4zXxym2iurnjJVhQ2HDoq95\\n/u0RJzHldlkBEU3T6HF7VAIvt8uq/T5WG+No5agayDR1k21DQup5fuJJW2lFKVusE7NYEup0evYj\\nn5pXo+pV6U31Cprh7NBm1s6q7mG5VVbXxjVdpbrjRz57p/eioQlAc+2NEELfYB+P7n2UyZlJnn3l\\nswkCkWy+/vWvc95553V1XDq/S17kKSqmF4r2P7FQDnJMRwlXdM7VSPEN1xAGcfPBXtKcpL89uujn\\nfiqx6u68GqcSGzZs4PhxoWJ45MgRNmzYwLZt29i7V6hRffazn+U1r3nNio832ZjkRPUEUSI2bOV2\\nGR2dkdyI2tC6hstAZqCL1ipzT6VdIfR1svGTp5090dxJLZ4hiAJV8MrYGdbn1tPj9hAz56/mhZ7w\\n/tJ1RW+S/msS6ARRoPzbpNqn7OLML8xIoKMjAJMEOlKdUXZ2lgMGy4UXCrWuzo6PXGdXGgeLB1X+\\ntA2b8/rP63of81kBlmGxPr++C9B1Mic6h/GTJGGsPtZFrx3KDKnZ0DAOCaIADY2yV2bn+E6xls7O\\ni144eCEpK7WAISFVV3NOToHLk+UTWYibbEwqIZaaXyNrCaU36ZuUc3I0gyZTjSlRuJoFHykzhWM6\\n6lofrRxFQ9gIvOqlr2JidAJScMe/3IGZM3n7H72diUlx3W5+zc1cdeVVS3oeyc8xTEJRwNUtUUTO\\nDTOcHRZCGZqhvO00NBzTIWfnyNpZMcc6b1Y1aU1ilB5d0XdguVjNJU+v+Jn1oVkuFjNS7Ovr44Yb\\nbuCf//mfAZGE/vIv/3JFx9M1nfX59fSl+jhSPoKu6eTsHKV2icPlw/SmehnODFP1qtT8mpphMXSh\\nOJZzcuScHH4YUC4HJOHpiwMkhsdQvgetKSr9SZJg6AYVr0J5skzBKbChsIGLhy9W4KMVtpisTzLZ\\nmGSqOcV0cxp/1jtk/iIy3ZxmvD6u9OsLjhg8H0gN0J/uV5QI8QQICZUJV2dHpwvoGHP0taWATpzE\\nTDWmujjOpm4ylBk6JcUyXdNZk12jZJSbQZNSq0RvSphYjtXGuvjLWTvLhvyGbt+ckxy/4BSE4tps\\ncqp6VXrcHqEgE3kKxObdPMPhMHtn9qoh2l1ju7hwSMhwSh5z2k5j6daC4dr5hpqdv/NCj2KrqDYT\\npVYJP/RFJc3JY+pmF7h2TVfIjXckvzAOmW5MYxu2MlUL4kC4QjuAA7Ed0wgaZPIZfv4Xfp57770X\\nNPin//tPvOP336G+OxKcKGW2QKjpSL+EjJnp4t6nTSFz3uP2zEltJ2KDoJR8ZkMC6JJm4Ooumfj0\\n9c/11ODqAOdqnFLMvyc1TeM3f/M3+aM/+iPg1AHNUGaIHreHo5WjgCio1Pwax6vHKbfLjOQEXfp4\\n9TgZK8NgehDTEGtnj9tDj9tzRnJJoDUYyOUxvIhau0aiiSJCEAUcKB3ANmzW5dbRn+4Xc3sp8Rqk\\ndYEEOiSQJdtV0OgCOrOVdHntTN1UG9NImytaeIgiiCzoyJxi6VYXdU3+vZxVwWLzMjknd8rqlxsL\\nG9k3s48oFtS749XjbOrZBIi5yk7Ksm3YrMuvw9CMruuwVE7RNI012TWM1kbxIg9d0ym1S6QsAQ5k\\nQUfm+c2FzTw0+hBeJFTKHhp9iIuHLybv5BWIyVgZXMtVokUyFphsd+QTP/IZrY3SCgRdueE3aAUt\\nBtODDGYGVdFOguu0lWY4O8yh0iF1vLpf50DpgDB7bkwzWh+l5teEct+6NsxiyEOVQ/QZfVx9zdV8\\n5StfAeDBBx/k8ssvn1N1M4U4RtpMKyCsazphFNKOhPy1VNqTANsxHHLOXGfGNmxB9Y8Wmn1qmkZo\\n94Ldi+GffpdmNZc8/eIZ2aGZnp5mcHAQEEBmZkaohdxzzz289KUvBWBkZISjR49inoK8IMxJPI/W\\nRtUw80xrBj/yGcmOqNkUQzdEl8Pt6/J3+cxnPsvImq0861mXn/L7SvSAyCmSzEoXN/wG061pkQQ0\\nA21WaSdOYrJ2lvU5AcJ0XVeVCxCt23K7zHRjmqnmFFONKaZb010V8cWqJXImoi/VR68rugADqQHy\\n7tKylvOpaxLodIIcOfwvOwcgKj6DmcHT7vTMNGdUF0bTNNbn1jPTmunq/uSdPGuza0+ZIierZ1Le\\nGwRw8iJRPfNCMcCZsTMKqO2b2QeIpNeb6uW5G58rujGzSXupWCwRVf0qNa+mzjvRmMDUTHpSPaRN\\nwZOWgBpEl1CCWikcEBMrIYuEhBPVE4ryMaQP8aJrXwQa5Hvy/PDBHxInMd/97nd5y5veAhEM9g/y\\n4x/9mIhIDaHWA1HJ1NAUHVEmIml6mrNzFNwCBbcgTAdnqQNVr7pACEDTNDKWuIajdTFse/dd/8bz\\n1mZ59rZzT+kzA9DtAs7INWhnwrNpNf7bxKZNmzh6VICPQ4cOsXnzZk6cOMHGjRvVnMLhw4fZtGnT\\nKR+71CpxtHJUzKjEEVWvSjNoMpQZoj/dD8yqOroF+ty+LorvQw/9P0rFmEsuefYpnzekRVU/DpqY\\nRfAjMQPX8Bpq3UhIiOMY0zBZk1lDf6Z/bv2eHfhPkqRrZkOCmM7CyfzurfRzUzSw2c2ppVkLBug7\\nQ3V0Zv+Yuqk6A50gpxW0FszLPBlfk0q7wuHyYfXzxsJGAEVZTpIEy7BYm1urrsnJovO9JEnCidoJ\\nRa0KoxDXdAV1PWwJ1UjDEsIpXo3dk7sJ4xBLt0jbaZ634XkMZ4dVTl0qFntd5XaZycakAqBSEXNN\\ndg1pM41pmPSl+tRx/cin2CxyvHac6cY0x2vHBdW9VRTgYdZUXHbVetwePvKBj1AqCuDw3lvfS39v\\nP6VKiVv+5BZoAy2465/v4qwNZ2HqJmESqkF/ea3k/sELPapelYREAbick2M4M0yP26NeY+esqwzT\\nMNHRaYZiXvOnP/1/WDN7ePaFp55LNLuAu5pLnnbxjAQ0xWKR/n6RDHp7eykWxcY2DEPWr1/PxIRo\\ndX7ta1/jxS9+8Wmdwws9jlaOqsG+dthmpjmDYzpicZkdFrcMi6HMEAWnwOP7H+fSSy9F1w3+5vbP\\n8/M/v/Jzf/O7X8PqafO85zx3ge58K2wxXhun4lUUD1smvpSZYl1uHYPpQdWS7ewEyGPESUypVWKq\\nOcVEY0ItUtCt796lqDbbUpa87/5Uv6ggpnpwjOVlRVX3KBCywhoatmljaIImNZgZPG2VHPk6j1eP\\nC/nsJKHYLpKzc+r3BaegEtCyr3OZ37eDtjJknWpMKWM827C7vAtSZopG0OBA8YC6/hk7wxVrr1jU\\n02ax9wJzztNBFKBpmgAz9QmydpaUlVK0rYyVEdKrswt7lESCpjILGE1dGOdJ351yu8xUcwoDg4yT\\nYbOzmef93PMggnwuz95H9orPItbYevFWpqvT4MJffPgvuPKKK+c2GbqOwRxA0zWdnJNTEts6etdG\\nQ3ay5GM7I2NnyNk5VbkGOHL0CK/8lVdiVXU+93/exQuvX3lR4N5vP0Tflmu5/vk/v+LnrMZqAGzZ\\nsoXDhw8D8MQTT7Bli1BIetGLXsS///u/A3Dbbbfxnve857SOH8URx6vH1f2oiiUkrMuuU7RQXdPp\\nS/XR4/RQb9S57LLLGB+fOPVc8sDXePjYD/it17xOgQq5xgRxwHRzmkq7Igx6TUvdm4YmlD770/2q\\n0zK/EyAfJ4GOtA/wIk8pUMn8IamqEjiFhKqi3pmnTmbyKcGBnF3VNEHhtQ2bjJ2hP9WPa7pPyqjx\\nWOWYyodVr6pmJ+MkxjEc1uXXLVt8k+9Fvq/5EUQBB4oHqLarFL0icRQrICG95kCocEZJxKNTgi4l\\nVeiuWn8VfamT09nV5xwFjNXHaPgNVaCbac0IRobb2wVMK15FKYvJmZYwmZ0jnaUejtWEIEIQC7VK\\n27BJm2Iu9f23vJ+Z4zPQhq/+y1e58OwL6U318opXvIL7v38/2PCGt76B3/rt35orgHaAGBkSvGSt\\nrDpP1/tKRJFyPig2DVMJCcg5tHqjzrXXXsv08Qk+95FTzyXHqgXe9vbfX/FzVuM/J56RgKZUKilZ\\n2UKhQLlcVr/7wz/8Qz74wQ8CcNNNN/GlL33pSZ1LSjzLzaL0TBlIDaiKAYCBwatveDU/efAnoMHW\\nrVv54Q92EEUW/jIG6A8/toMPffTPue8797B23Vru/fd7yWbEPImqpM22j73QY7Q+ylRjShhsStqX\\nYSpgo6SMO8DN/JBDf0EcMFGbYKIh/kw2JmkEDfWYzpCJSlaoMlZmDuSketS16OQPl70yDX9ObUR2\\nfzJWRi1m8ylrUn1tJUAniAIOlw5zonaCZtAUXkPpfnrdXkXrWPDeT3LcOBGdDUlpaPgNJRedIIbf\\nN+Q2kLbTyt3bMsSmYKY1w87xneoauKbLFeuuOCmnO0kSKu2KAs9BFIgE0y6pSl6cxAxlhkjbC48l\\nBSrk+8vZOVEJ9pv4kc/h8mESRJXxnL5zWG+v56zNZwGQ683xk0d+Ijxi/Cq33347//TFfwLgBc9/\\nAe/7X+/rOpecg1EgZt73K4gCNTcgP3vJeZY0vLyTxzIsZpozjNbEzEwQBrz2N17Lnu/tgUTcPzu+\\nfy+6P07cmmKp2PXYMd734c/w9fsfYtOmTTz88MMrGuBejdWQcdZZZ3HokKDXHDhwgLPPPhuAL37x\\ni/z6r/86AGeffTb79+9/UoIoUuJZUi69UCii5Z08Q5khdWxTN7n13bfyub/7HGiQy+XYtesx8rmh\\nZXPJE8f2cttf/Qn3ffceTMvkS//yJc7Zcg4JyYJcEscxk81JNew+f3h/TWYNQ9khBU7k2jz//SsB\\nGQxl7Ci72H7kLyoi0wl05N9A10ZXdn1keJHXZWAMiG71rHS8VO+UMzpSvGCx2Z75IcHZ3um9jDfG\\nqbarShEzZaVYm1u7YJ07GYCRx5U5pBk0aQUtDhYP0o6EYIypm2zIbyDn5EQ3ws6owf520OZHJ36k\\n5jUNzeCKdVcskH9eLCrtCmO1MZXLphpTTDWn0HWdht+g6lWVYfP8iJJInRPA1m2RX2a7Hn7kK1Gb\\njYWN/OJZv8izL362KAjo8IMdP2Bg7QA1v8bX7v0a7/nT90AC69av4yv/9pWu74JruuRsQdfP2bkF\\nn5Mf+Uw3BUMliOYEEbJOll63V3npGLqhrBHkY972trdxx9/fATHk8jke++kD9Kfby+aSQ6NV3vVn\\nH+Hr9z+E4zjs3LmT888//6TXezX+8+IZCWjK5TK9vWJmIp/PU6nM0Yz27NnDRRddBIBt24yPj6vH\\nnm50SjzDnEykH/vKtf5jH/sYn/rUp8AH0zP50X/8iEsvvVRQucKEdjshjiBJQNNA0xMSs83hsYNc\\n//zr1Xu4+TU38+fv+3NALC46uqpOgVhI/chnrD4mRAxm6WmWLmheWSvL+vx6RrIjInElsVp453PF\\npTFoJ11NdoMmm5PK9LDTn2V+JEmiKAV9qT4G0gNqXsI0TJW8DM2gP92/5ABoZ+LT0FTVZb7EdGfE\\nScyjk49yrHpM/b+tA1vZ0junQb+SDUgniJHqZJI6ISVYG0GDlJliTWYNvale+tP9amao8xxTjSl2\\nju9Un9dSoEYm0YbfYKIxQTMQpmjSNLOTY27oBmtzaxelawRRQKlVUpuNnJMTHSO/gambVL0q+2b2\\nEScxuqZzyfAlTJWnuO7668CEdDbNvV+/V9EFDz5xkJt/42YATMvkW/d+iw2DG9QczHKUhziJhWJT\\nu9rlXQDgWq6SLjV1k6nGVJc/0O0fv53b/+J28b0xTX704I+47DLhzhwHdaL6KEnUJolDNN1EM1yM\\n7Fompmts376dUklQHt70pjfxiU984qSf+Wqshoyzzz6bJ554AoD9+/dzzjnnANBqtRgZGVFr8wMP\\nPMBzn/vcJ3WuTolnuZGXm92hzBAZO8N9993HW97yFgiBJnz205/l5ptvXjaXhHqDYmuKG371Bh57\\n7DEALnnWJdx5551qwyeporJrY+iGoliP18cJk1DZAEj1rHW5dYzkRtDQFCV5sa6NFAmQxSld04nj\\nuIumK02El7s2EuCYhqm6A62whR8KaekgFoqLGSuzqKQ+zFGY5gOdlJmaA22zRbNOeeAj5SPsmdqj\\nfl6fW88lay7pAi7y30uFtHeQkv1RHCnVuKbfVADD1E2ljrm5dzMpM6UKYzLqfp0fHvuhWkd1TeeK\\ntVcwmBlccM6aX2OqMcX+4n7GamNKDrnu1zE1IcYg1eyyVnbRWaOEBC/0yDk5epweBjIDDKYHaYdt\\ncnaOMA55bPoxtR84t+9cDN3ghl++gRPHT4AJX/7yl9m0cROaptFut3nhC19IvS6oyp/5h89w3dXX\\nqTmYk4lBSHsAKessPxcJxoZzw0qxr1MY6Z577uHmm25W6nKf+cxneO1rXwssn0siHK666ip++tOf\\nAnDNNdfwwAMPYBin3/lbjTMbz0hAU6lU6OkRHYFcLke1Wu36/eWXX86OHTsAuP322/md3/mdM3Le\\nTolnmFOleeyRx3jr69/KLLbgHb//Dv7gzX/AYHpQuK0vYSQGYvP+uc9/jt98/W+CBWiiMvic5zwH\\nQCnNSBllEG72uqYTRAHj9XHG6mNKrjkhEfMdVoZNPZvYkN+g5lhkh0VDW9QLQDlfdyidyZZ0J8iZ\\nP4/TGVIKMk5iDF2AmHW5dWzu2cxAeoCUlVKc7DAOl+UjK45tx5yOBDqGZjBWH8OPfEqtEq2wRV+q\\nj6Hs0JJSzp0h6QuNQAxIzh94Bah4FaVQZmDg2kKdx9AMXMvtop11xkxzhp+M/UQNjBq6wcXDF2Mb\\ntpJClcacNa82J4kchTTDJq7hqgqlbdoMpYdI2Snx/mc3C4YmBCk6F3JTN+lxe6h5NVUF3l/cT7FV\\npNKuYBkWw9lh2s02N75SqJylnTTf/OY31TFsw+a1v/ZaHtnxCHgCaJzs/umUnu38PKXKXsbKYJtz\\nCbTcLlPzagoIPrrrUX7tf/yaun8+8P4P8O53v3vZc3bG5z//eX7jN35D/Xz//ffz/Oc/f8XPX43/\\n3nHOOedw8OBBAB5//HHOPXeOc//GN76Rv/3bvwXgt3/7t/n0pz99Rs7ZKfEMKInc4nSR3/r136JS\\nEiDqxS9+MZ/6+KeU2fDJcsmOnTu4+vqriYwIDPjDd/0hr/vN16lzyNkMCRjk7JuccxyrjeHHQlxE\\nztekzBSbejaxuWcztmETxqEY1p5dh+YzxuQ6JbvvnZt0KT3fCXIW8zmDuQKJBDFypkYqRcqOgaTe\\nLnecJElItESxEzpndFzTVeqVNb/GTHNGiDVkBjm//3yyzvId3/kgRs7eKlEFUCAgZaYwNLFuu5Yr\\nXoMl2BWLdZIafoMfHv+huk7toM3m3s1CYGDWfFJSxapedY6uzlw3RYoDSXl/OYskBSjkH9lFl3uA\\nvJOn7teZaYlC7mR9krJXFufz6qzNCxW+N77xjUwcn4AW/Ou//isbN4oZJEMz+MBtH+CLn/0i+PDb\\nr13Z/SONRufnkmK7qL6TMiT4lvl+YmKC51zxHErTosB140038qUvfmnFndXdu3fz7Gc/mzAUn9uH\\nPvQhfv/3V6lnT5d4RgKaarVKoSDkL7PZLLVat3fFxz/+cd761rcCcNVVV/Hggw+esXN3SjwD1Ot1\\nXvX/vYqJ6Qnw4crLruTTn/60GpjuTwuJZDkcuFgySpKEV7ziFdx9191gwoazN3Dft+8jnU6r33e6\\nO8tNta7pQukjDhlvCGAjh+XkIu6YDhvyGzin7xxSZqprw74UlxXoWvjnd3YkH3eiPktVq09SapeU\\ndHCXjObsELs8hmu4DGYGGc4MM5QdotftVRVEP/S7ksBSIU29pGlkHMfExPS5fZiGSc7JsamwaQF1\\nLUkSJbEtX2enJLEMyWMGlOmo5C93Uuhc01UiETKJSZO6ifoEPx3/qUpklm5x8fDFZOyM4tB3dr68\\nyCOKIiHTOTuInHfy9Kf7RTVyEX+BTqUfTdPocQTIP1o9St2vU2qVeHzmcdXp2dq/VfCMG3V+qGAY\\nwQAAIABJREFU9Vd/VbwH22XHd3fQl+pTZmorvX/kJqzm1RYAXNu0lTqP3MAkSaIktTU0wXsPDX75\\n2l/m2FHRZbv++uv51je/tcD/aLlIkoSXv/zl3HXXXQBs3rx5lXq2GiuOc889lwMHDgCwb98+zjtv\\nziD5hz/8oSou5XI5xsfH1bp8JqJT4jmOY97ye2/hoR0PQQDDvcPcfffdKtflnTwD6YEF6pXz47bb\\nbuPWW24FE5yCw799/d/YtFkIGiRJoopfIBStZMeiHbUV3XW0Niqk2BHrbZREwn8lt55z+s6hL92n\\nug8wVxBbLJfomq667fO7GxKUdIIcLxJ0Nan+JcPWbdJWeq6Tr2mqg28bwo9LGTCGngJMS10nef5S\\nu0Q7aCuVxlbUIm+LWY2snWXb4DY1w9gZ7bBNw2/QCBpq6H5+oU4qvhn6XPcqYwlFyLHamHptrukq\\nalsUR5TbZUU7Hq2N8tCJhyi1SsTE6OhsKGwg7+SJk1ipjcmIkxg0lBdZ1soykB5gfX49Q+khelO9\\nZJ1s1+ck/dNkyJxzsHiQcrtM02+yv7QfUzNBgw35DYAAam944xsYHxuHCO7+wt1cvu1ycrag0T34\\n4IMrvn/CKBRgOu4GpnLPYxrCHLrYKipD2FbQQtd08k6evJ3nppffxDfvEwW6devX8fDuh0+ZoXPb\\nbbfxZ3/2Z+Jzcd1V6tnTKJ6RgKZWq5HPi+p4JpNRLU0ZMzMzjIyMKE+NRx99lAsuuOCMvoZm0ORI\\n+Qjv/ON38vWvfV28lkKGO++4k7M3nN21+EmJXWkcuVgyGhsb48ILLxTzQAm86c1v4i8//JfKaR7m\\nQIoMDU1VvyVtaqw+pmQiYRYMEUMCa7Jr2NKzhd5Ur2g5J6jq2nIVjKXAjTy+1Ns/XD7MdHOameYM\\nM60ZRUE4WRScAoPpQYazw0r9Rw4gdla6wjgkSiJOVE90gYGBzACu4SoKU6dSm6mbypRMViNlh6pz\\nE24bNhkrQ8bO4Ec+db+uOlZZO6t8cqrtKhWvol6boRnYpr0oCKu0K+yZ3KPAkaVbnN17tthQkGBq\\npqDlxbEaDtU1HS/0KDgFxQXvvIby+ktQBCKxkkCQBMw0ZxTXfLw2rmZrck6O8/vFotxutXnBc18A\\nHqSsFCeOnSBrZ9V5VnL/SC72fCBjGRZ5J79ADCGKIw4WD6rBaBDzOH/xrr/gn+4UMzuFQoHdu3ar\\nCt+pxNjYWBf17M1vfjMf//jHT/k4q/HfL8477zz2798PwN69e7s2L0mSsHXrVh5/XJjo3nnnnbz6\\n1a8+o+f3I5+jlaN88h8+yV//9V+L/6nBJz75Ca69+touepCGRm+qV6hbzhbJoFvYJQgCrrrqKnbt\\n2gUJXH3N1dz7rXupB3Vqfk2AmnlFHBCKVSkrBYmQEh6rC2qc3OjK4k8UR/Sl+tjSs4U1uTWLzggu\\nlU8kuJGFosWi4TUotovK38oPfeVhs1jEiShoJYmgUMs5FEkvC6JA0NYiXxUAZeFvpjWjGBcgxEry\\ndp4jlSOC8j0r47+hsEGJ8Ui1N2nbIIFdJ4iRMzGGZghVzFngZRmWWhuLzSL7i/spt8tKBVLTNPUZ\\ndYYf+RwqH1J5T0NjOCskhaM4wjEdCk6BrJ1lKD3EUFYIFckOUNbOqq7U/M9IUugTEkXti5OYmdaM\\nkq2utCs0g6aiHG4f2i46fLHPTTfexPEnjkMA37zvm1y+/XLlt7SS+yeMQqUC2Bmapi3qUxQnMeO1\\n8a5coms6X77zy9z67lshAjT49v3f5vrrr1/0O7NcBEHAlVdeyc6dOwF4znOew/e+971V6tnTIJ6R\\ngKZer5PLicp4Op2m0WgseMwrX/lKvvzlLwPw7ne/mw984ANn/HV84Qtf4NVveDXkAA3e//7384u/\\n+IuEcagW1c5wTIfhzLCq6kO3qtidd96puJ4A939LUGekWlQjaOCH/qKtdduwlfJLEAUcrx3nSOWI\\n6ER0KJ0lJPSn+tmQ30B/ul+ZnHXFMt3Z+eAmjEOmGlNd8xKWLpTf2mFb8bPlzIR0Gl7u+JqmMZAa\\nYDg7rDo5PU4PfuRzsHRQcZPDOGQgM0DGEu7OklqVJAl+7NPj9sxR8WaB3fykk7NzKpHLa1fxKkSJ\\n8GvQdZ2MlelSFKv79a4kmLbSS6qZVb0qj009JugCYRtd03nW8LPIu6K65kd+F7CM4ogetwfbsBcd\\n3JRiDieqJ6h4FdEx0lAKb5V2hQhR7T1YPIihG7imy+VrL2dL7xbyTp5mo0muNwcWpFIpZSoovQ5g\\n6funFbSoeJUF+v+GblBwC4tubqQiXbldVpuLvJPnwW88yBve+Abx/kP44p1f5FWvetWy34/l4s47\\n7+Tmm29WP3/726eX0Fbjv1ecf/75asP12GOPsXXr1q7fv//97+dP/uRPAPiFX/gF7rvvvjP+Gnbv\\n3s3lz7ucIBWAIWYpf++tv0cUR0pMozPkTGKnb1hnLtm1axdXXHEFUSQ2iR/8qw/yzne+U9Gkq151\\n0c4qdPuExMScqJ7gUPkQFa+iimpRIoBN1s6qOZuMnZkzQQTQWJIGBqgNtpzJkdTVzlwiPeGkP45k\\nATSD5kkpy53vJ2WlcI05r5sojjhcPkypXVJru2uJIXU5k6IES+JAqJ7plsonnUwHx3RwDEd9Hjkn\\nh2sKOlkQB0r8oeJVaAUt1X2p+3VaQauLNiyv/WLhRz7j9XFFF5S5ZEvPFtH90nVSRkp1t+MkVq8F\\nwNS6GQsaGjExk41Jyq0y9aBOGIdCtEfTFJUbYLQ6iq7r2LrNuf3ncsHgBWTtLKZucu62czkwegA0\\nuO+++zj77LNJW2lly7DU/SO9fxYDMhKQLhbtsC38b8I2xZYwID928Bg3vPwGwiCENvzB7/0Bf/W/\\n/+qk342lYteuXVx++eWKevbhD3+Yd7zjHad9vNU4M/GMBDSNRkPRSVKpFM1mc8Fj7r77bl72spcB\\nsHbtWo4ePXpGEfaRI0e45JJLxMCoAS9/7cv50//1p12PWWyQHcQGeE12TVeSkovky1/+cr761a8C\\ngjqza9cuclmxWZUt9YbfoOZ3J6NO+UspZ2lpFuPNcQ6WDlJsFrteQ0xMr9vL2uxaJYUowY3sTEhK\\n1lLhhR4zzRk1mwOiVT2QHlig1y9BRdkrM14fF0agzUmmm9NzfgUsVFeb/9563B760/30uX2c23+u\\narv7oa8G4EutEn7so6MzlBFKPUqtRzNJ22lcw8UyRIKSSdoLPWXKKeUylxIyqHm1ri6RdFmW9Ae5\\nIJuayWhtlO8c+Y4Ao4jh/AsHLyRtp7ver6VbqpIGKJAVxQJE1bwaVb9KuVXGiz11vXJODkMzlNSl\\na7iKdiFf19Xrr1afkbp/dHDzLidGT6jXYOomWTvLPV+9p+v+efzg49TD+gL9f13Tybt5lQTnR5Ik\\nXfLn8jOsTda4+rlXK7roTa+6iU//zafFvNJpyq8mScINN9zA3XffDQg53t27d69Sz1Zj2di6dSv7\\n9gkfqcW6kcePH2fjxo1qDuHw4cOn1UVcKtrtNldccQV79uwBDbZfs52/+8LfYVlz646hGV10Kxm2\\nYTOQHlAdZJgDNrfediu33XobgFJtOu+881TRKIgCKu0KxXaRdjBnZqtpGjq6qpAX3AIZK8N0c5qD\\npYOM1ka71uwojnAMhzW5NfS6vaTMFGk7TdbO4hquOmYYh0vSv+I4VhQ3mTNN3SRn55S4zXyGQuc8\\njjQDlSI4MmfI99EZCYkAZ3GMYzpYusVAZoC+VJ+a36h4FR6beoyx+pjw1Ikj1mTWoGmayruGZuBY\\njlK69EJPbLSDNvVAzLTU/TpRHGGZlhj8X0QpTqqgyXBNl/WF9fS6ohPXm+ql1+2lN9VL3atzz/57\\nqHgVdS22DmxlU8+mrsKkoRlknay6lpItEcdiLkn+qXk1dd1BzPiYhkkUR0w2JlXxshk0KTgFbNPm\\nqnVXdeXErVu3sm//PsjAN771DSWqIY2zp8anuu6fJw49wfDa4UXBtMybS3X4JJDpfJ+NVoPrXnQd\\n+x8XXdYLtl3AV7/yVUYKIyuyTVgqbr31Vm655RZAUM927drVRUddjf/8eEYCmmazSSYjqvKu69Jq\\ntRY8JggC1q9fz+SkaJnee++9vPCFLzwj54+iiBe84AV873vfA8TGaefOnQRmwPHq8S76kaZpZK2s\\n2jh3RsEtMJQZ6qpEjI6Osm37NqWs8+Y3v5mPfvSjc8fr4CjL6o4cau/8vfw5ZaVIW2naQZsnyk8w\\n1ZxSC7/sWkgDSim9LJ2bpaMx0FWRAtF5kLr98rzSp2alA3gSxE23phmvjSt/HAkqZIRxqCoxMjoX\\n+bwjNtRyzuVo5aiiRqSsFH2pvq4qphd6ir4m/3+cxMKQskNNrifVIxZ09DnVNV1QBlzTVapAtm4r\\n1RrLsBTnXJqyys9pz+QeQVWYrWBeMHiBqsblnbzYsMwCHC/08GJPtfrlbRwmoTLd1DSNtJkm62Qp\\nOKLFL2lqeyb3qGt1/sD5rM+vVz933j+O6zBVnuryj9HQcDSHLZu2MDkzCQ7c8Y93cP1116vHSCpe\\nzskt+XnHScyR8pGuCmR/up/h9DDPf8HzeeD7D4ANGzZt4IHvPUA+l1fvwTXd05LIHRsbY9u2bUrK\\n/S1veQsf+9jHTvk4q/HfJy644AL27t0LwCOPPMK2bdsWPOaXfumXVGX5fe97H//zf/7PM3b+t7/9\\n7XzkIx8BRIFux44drD9rfZfEM8xRjGUhpjNSZkqJrsjwfZ8rr7pSUM8Qqk3f/e53VWGvM5c0/Sal\\ndqnLz6rTGDIhIWWlKDgFDM3gcOUwxyrHRKdkdh2MkghbtxnODit6tWQO5OycKNbouuquS3DjRz51\\nrz6nOKaJ93MyVUV1XTpUyPzQV8pqEuR0boGiJGKyPtnVBepJ9dDn9in6WJREipq8b3qfYEZEgvY2\\nlB6iHbVp+k3qYZ1ys0zdr9MIGl2fSafMMKDmZzRNE/4/sxv3gfQAA5kBlUPybp68k2cwPUhfqk9d\\nkyiOmGxOMtMUJt+7J3bTDJqKyrZtcBtrc2JI3zEd1dUClOJkza8JQ8vZY8qOmLyGpiHme3J2TtAL\\nE9EdPFaZUxEdzg5zXn/3pr7z/vmPn/wHI5vnLBM0TaPX7eXGl93Ifd+8D3R4z5+9h3e9611dxzgZ\\nkIFZc+sOZoQsvr3jHe/gIx/7CKTBztjc89V7FKjK2lk1p3uqMZ969nM/93Nd989q/OfHMxLQtFot\\nNVjmOA7tdnvRx73zne/kwx/+MAC/9mu/xj/+4z+ekfN/4AMf4I//+I8B0HWdBx54QA2+zZd4lpG2\\n0qSt9IJBRznvMZgeVDfdHXfcwWte85rZB8C3vvWtBdSZTiUy6RQv5T8Tkq7Kv4aGruukrbRY0BuT\\nQs1mViFGgq2slWUkN6KSEYgKiKQiuaZLgpD57OT5GprBYGZQtbaXm7k52SY1SRK8yFNUtRPVEzw6\\n9WhXBStrZ5VCj5StluBI0u50TWcgNUBvqpe1ubVCmGD2OpCgpDTljE6xVeziJ/ekelRFzTTErItM\\nOp3Xvh7UieNYiUD0uX2krJSgFnjlripUO2zzyOQjNIOmoltcPHwx5/SdQ5RETDWmqHhCatMxnIWV\\nxQ6uc97O05fuY1PPJvG5xpFSoym2ihytHMXQDEzd5Lkbn9u1oC92/0gqhww/9PnTW/6Uv/+7vwfg\\nZS97GZ/4xCeUUk7Ozi07uB/FEUcqR7pEFAYzg6zJrhH3z5/88ewXAr717W9x6RWXdj3f0EVFeiUb\\nmvnRdf+wSj1bjeVj27ZtSup4z549bN++fcFjvvCFLyju/7nnnsu+ffuelCeNjG984xtdhbZPfvKT\\n/O7v/i6wuMQzCNGSHrdHGSN2RtYWA+CySLZz506uuOIKQZ3R4IMf/OAC6kxnESyKIzUfV2lXlLR/\\nZxi6QcbK4Fou5VaZY9VjatZTviZDM8RmfVYQB0SekIa6slhUbpWp+lU105MkCRk705VLOr3KoBvA\\nLCZC0BlSgUwO8B+uHKbpz61zsqveCloEyaygThyrIfmKVxGiDbM0XlMTVGVdn7U6SESRSeaTKI6E\\nuEI4VyCyLZseu4eCK+hoeTdPwS4otTapFlfxKgRRIOjqpiXo1pkhvMgTc7Edm/kwDjlYPCjmm2Yp\\ny9sHt7N1YCumblJsF6l5Nep+fUmp6abfJEoi0lZaFDVza1Wn73j1uPCkmTUYl5/HZSOXkbEzXceZ\\nf/9sOW8LU42pLoPwu++6m7e/4e0AnHXOWez8yU4FomzdPqkIzHwwYxlCyfW+++7run8+9PEP8crf\\neGXXfSENazu7mCuNrvuHVerZf3U8IwFNu90mlRKVKNu28Txv0cft3r2bSy65BBAbt/HxcSX3fLqx\\nY8cOrr76avUFf+9738utt9664HHzJZ4BpXpGQpcLLogkMZAWbW8NjZe97GVz1LMtm9m9e7eqqneG\\nBC6dksPNoEkrbAl6ULIQRJiGUMmZac1QapWU47P845ouI9kRRR2TEUYh9aDeNaBp6ZbyZFnw2joU\\n1JYzIFsqWkGLo5WjagB+tDaq/j3ZmKQdtAmTUCUSaR5p67Z6/7qu0+v2cl7/eQxnhxlID3Txzg3N\\noOGL6pqpmSQkwrTLtOaECOJIVSBl5Up1uJJYyVTPp9nJRGwbQvHL0AyKrSKPTD2iPG9s02Zzz2bh\\ndDz73M7kLa9j1s5i64LKljbT6n0ZulAwq/t1BUj2Tu9V1LCNhY2c2z8nQwtL3z9hHFJqiSptK2yx\\nb98+bvyVG8EHy7Z4fM/jbBjacNJqVxRHHCof6lLekYIPO3bs4Kqrr1Lc/ve85z3cduttak5svriC\\nYzqkzNQpbR6TJOm6f7Zs2cLDDz+86P2zGquxfft2Hn1UOLM//PDDXHjhhQse02w2GRkZURYB//Ef\\n/6GKWKcb09PTXHTRRYyPCzGTl770pdx1110LvuvzJZ5l9Ll9pK20KC51AB4NjYJboD/Vj6Eb3HLL\\nLSpHOa7Drl27uqSpO58nu/ZxHCsFrapXVcIjiymYpawUNa9G2SsrxbJW0KIVttDQGEgP0J/ux9CM\\nuVnGWVEW13ApuAXltSaNMuefQ/pkScnhlZovywjjUInJtPwWVb+quk8zrRk1f1nxKtS8Gs2wqQQM\\nvMijETTQEZ42azJryDrZBSbQlm6RdbKia25nSdtpNYvkx7Ny/bOzhzJ3JJ3/zb6WdthWtD9Lt0gQ\\nLADXFDNABbdAn9tHM2yyc3wnpVaJdiSes7mwmf5Uv/o+aJq2IDdLqWoJTHVN71LSbPgNNXA/Wh1V\\n/kMFt8DFwxcvuLaL3T9hHDJRnxCy21FAq9Xi+uuupznZhEjMB1/3c9etSM2y4Te66N2SUj89Pc2F\\nF13IxLhQnH3JS1/C3XfdTZzEFFvFLtU2EJ3//tTSXnhLRef947ouu3fvXvT+WY2nPp6RgMb3fRxH\\nUKFM01RqTIvFZZddpoySPvWpT/GGN7zhtM/baDS47LLL1ADp1VdfzQMPPIBpLl5Fni/xLCNlpRhK\\nD1Hza11VcRCb2aHMEM1ik+3btyvqzFvf+lY+8pGPLCn73GkQ1nl+WZlaTIVL0zSiJFKLuazSSfnh\\nJEkYzg4zmB7ED32hA99R+ehz+1iXX0faTq9o5gbmaAwnAzfNoMm+6X3KwT6MQvrT/eiIofgwCqn6\\nYri1GTQVJ1hdnwSq/pwvimM49KR6FBgbyY6wNrdW8cNl1UlSvyQtIkoiRWMIokBV4qTHirzONU9I\\nZ0qgmnfySh8/a2cpe2Uq7Qpe5FFulTlSPULaTGMYgtqwpWeLAlqyI1ZwCxScgpoTkqpmIGaVJL0k\\nSRL12TT8Bnun96r2/XM2PGeBsMBi908UR1TaFSVDKiloN950I/t27YM6fOqTJ79/wjjkUOlQF1Vm\\nJCfAcaPR4NLLLlWKUldddRXff+D7XfePFwq38fldTNl5W2mMjo4uuH86qZursRoyLrroIjG/ghgG\\nvvjihZs2gNe//vXKR+P1r3+98qc5nZBS/V/5ylcAGBoa4uGHH2ZoaGjJ53RKPMuwdIuR7AhREi0o\\nksnKdEbPzKmeIagz3/nOd9CNhWuwzCVxHHflmjiOaYZNpcY1PxR1LWgqJ/pOf5Z22Cbv5OlzhTpb\\nPah35QopLtCb6sUxHMIkPGkukYICJwM3QRRwoHiAE9UTTDYmKbaK6LqOF3iqiy4FXyS7AJjzrUGn\\n6ldVkShtpjmr7yx6U730uD0MZYYYzg6Td/KCgjy7TklDzzgWRTDJCGiFAuxJSpzMK/L6TzWnhDxx\\nu0gYhvS4PWp+qi/dBwnUvTphEtIO2zxRekLNfGqaxuaezYp+JtUzpZmlnLeUnX4Q36FOMZfx+rjq\\ntB0oHiBlijyzbXCbKMjOi/n3z0UXXUQQCTEE2SkCeO+fvZd//ed/hQa8/jUnv3+kLUDn3KYEM/Pv\\nn8GhQfY8vKfr/mkFLWZaM90jAGj0uD3knfyKAbHv+1x55ZVd988q9ey/Jp6RgCYIAmxbLBqGYahu\\nyWLx0Y9+lLe97W2A4BD/4Ac/OO3z/s7v/A6f+tSnAOF/s3PnTs4+++yTPk9KPM8HL0OZIfJOnsnG\\nZFcFAkQ14f677ucNr5vbQH7nO9/huuuu61KzmS8BnSQJJHRVPuRAZsNv0PAbCxKFpgn61nRzmnK7\\nrMwbpedMzath6MZcRwBNqLm4c2IFkist1V2UmdkyHgCdHG3p31L364zVxnh85nF1TQzNECalpqUc\\n71NmasEmVy6AVa9KqV1iojbBidoJRQ/I2bkujnkQB4qi5xgOa3Nr2VjYyEBaOCTL+aH5oZL+bLcm\\nigTdS1azYmJVbQyTkPH6eNcGX1KpDswcUADJNV2ePfJsLhi8gKHMEClrrlIpvRIkfU0O6spbux22\\n1dD9odIhVZkaygxx0fBFC15/5/2jmzoztRnqXnf1V77eL372i7znT98DCI+lH33/R0t+nkH0/7P3\\n3uFyneW96G/1tabP7N5V3CRXIUuuOBhMEhzAhJgcWk7wDblwSEIJIYdcSDgHnkAKBPs44XBDEkoC\\n91wgyQMHc+klNrhJLnKR5KKypd1n9tTVy3f/+Ob79lozs7e2pG07kffrR4+1taestWbW937v+/6K\\njyPVI4nv8lhujHOb3vnOd+L//lt6/6TTaTzy8CMc6xwPZnraeU8oEk286530felLX0qoBrL7ZzM2\\nIx6XXXYZHnvsMQAUYsKm+p3xs5/9DNdffz0AIJfLYX5+nk86Tzc+97nPJZoDd911F26++eZTPo9J\\nPMebGwD4xppNV+MhizJmn5nFjdfeyHPlpz/9abz3vRQCFG+IJYoYEoFEJJFLREFESGjzo+7Uu+5R\\ngK4DNZdKETMFM3bsjMPBJgIAuIgA87LRZR0FrYCsluWeYExKeLVgU5soilBzqYrYkrmE6fo0nq48\\njbpLOamCIHBzSzZVV0QFmqwl4MQsx+T1PPdzKVtlGLIBVVaR1/K8aGDXyg5skIgS31NqipPoWU7s\\nFQxqx9TQvNDDfHMeT5afpLycNjogr9PGVtWpJiBzikSP/cjyEd4I0mQNFw9cjF3DuzCUoaqq8amE\\n6a00rJiKHAsv9Li6W9kqw/RNDju/cvTKnkVA/P55cP+DuOjipEqg5VtYtpfx6MOP4o3/6Y0AgIye\\nwfyz80inek/NGb8nXoxossYLr87751vf+hZ+5Vd+pefrVJ1qQpQGoDm0z+hbNcd3Rif0LH7/bMbz\\nF+dkQRMEAVeAEUWRw1d6RblcxujoKJ/idPoMrDe++c1v4pZbbuE//8M//ANuu+22dT+fEMo9mW3O\\nJhZmVVIxkZtAhAhL5lLiBiaE4D3veg9+9M0fAQGwbds2Dj1bLQmxAiEiUQJfzBbpKIroCL2trMK+\\nHnF/kwVzgXaxIMIObE6gFAQBfXoftha3rjq25Q7MbeK8Kqp888+8YOIGlF7ocTM1J3DQdJtYMpf4\\nc0RBxEBqALqi88mFJmncY4AJF+iy3qUgQwjBTGMGzyw/w71xmCGXH/p8okNAuIoQC0EQuvxxmICD\\nKIgc++yFHpZt6pmwbC1jtjWLpkshIEySksEriEC5L2xyo0gKnq0+y6EMkihh19Au9KX6OMSCqecE\\nUUAJoJLCoSTsHJftZd79O7BwgC/Su0d3c6GHeARBAEVVABWABm5qyUJXdD4tOj53HBftuIgv5Pse\\n2IddF+/qKircwMXR2lHeTRMEAeO5cf7+3/zmN3HL61bun7/7u7/Db/0fv9XzO8TCD33uvB3/XJho\\nwKmiE3oWv382YzNYXH755Thw4AAA4OGHH8YVV1zR83GEEFxwwQXchPMrX/kK3vSmN532+z311FPY\\ntWsXV+c8E8+kql3FdH06IeYhCRKdmCsplK1yV7HxmTs/gzs+fgfgU/GBOPSsVwOKwZlDEibgZmxt\\nEgQBpmui6lRRc2o8d8WFVipWBTW3xo2g/ciHCDrNT8tpDGYG+XS/M9gEJqfnkFEz3Bg6iAI0vSZq\\ndo2/d9WpUunh9iaYeY8xrieDdxmywXMHU6PMa3kUjALl/Bj9GEwPopQqdU2Eq3YVT5Wf4n42/al+\\nOoFpw7zZ5IwVQ/FcJIkSh3oxGC3LIXHVubnWHFouVUg7WjvKeUys2APAYdC6osOQ6Pvoko5j9WMc\\nxixAwHnF8zBZmOT5Spd1CvtrN/BUSUXRKPJiixCCilXhk75nKs9AV+g6u624DWO5sZ7fxcsvvxwH\\nHj8AiMA9996Dyy9daQiIgghN1kBAsNBawHU3XIfjx48DAO6840789pt/u6uo6FXMxKXLn3rqKVyx\\n6wrYFi3c3/U778Lf/PXf9Dw2Fqxh23lPZNUsikZxXU2yOPSs8/7ZjOcnzsmCJgxDDlMRBKHLWbYz\\nXv/61+Nf//VfAQB/9Ed/hI9//OOn9X7z8/O49NJLUS6XAQC/9mu/hq997WtnRAplJLsivAWfAAAg\\nAElEQVTOjkHJoPCtmlNDxarwTdzi4iJuueUWNJeagAn83u+sAj2LeZmwYEmKYaNZUcPNPQnhmv6s\\nI8/OyQkcPLX8FOaac3wCk1GpmpYqqRhKD6FklDhxMD4xiptgchlNCLzgYP4rjIjOFq6W16JGXoRK\\na+qyjvP7zkef0YecloMqqfyPLMmnXITYsRyvH4ft25wnk1NzeKb2DBZNqhpTc2pdxRC7Tkz2UxRE\\niKKIPqMPw+lhDKYHESGC5VloepR8SQjh06Cm14QbuBAFkU+SxnPjyOt5GBLt8jmBg4pdwWMLj9FE\\n1C6WdvbvRH+6HwDd1LORPQBktAzvbrJjbrgNyKKMmcYMLUTbUsp7x/b2vCY1u4bSUIl+X4SVgoZB\\nE+IJhhCC177htfjWt2lR8N73vhd/8sd/kjDidAIHR6tHExuayfwkV3Cbn5/HJZdegkqFiha8/vWv\\nx9e/9vV13T+EEFpUB0meHMN/n4rPswk924xTxRVXXMHhJA899BB27dq16mP/9E//FB/+MJXn/8Vf\\n/EV897vfPa338n0f1157Lfbt2weAKkTt37//jCY9YRTiZONkwmAQoPCtydwk/MhPyOJ7nodbb70V\\nhx8/DJjAdVevAj3rkUvYJCEiEV+f2brIconpm6g7dd4oiitLzjRnMN+a55wbBvOVBAklo4S8lkdA\\nArTcVgJSZ/omVRFzTbR86lHDVD0F0FwSkIAbQrKGSkhCLs0M0PViS3ELxrPjNHelSiho1ALAUHrL\\nKXcGIQTHa8dRsStcLGFbYRtM34TlWXBD2phj63g8OJ80BmlTJZU35OoOFR9gMHTWzCOEwAmpBL8A\\nKiCkSJS3mlGoLLMkSHBDFw23gQOLB9BwG7SAhIjJ/CSmClMA6H4gzithamiapHGLgLJZhizJnEej\\nSRpkScZVY1f1XGv90MdL9ryEQ87u/tnduOKyKyAIAn9u/Pp9+E8/jI9/iu6/rn/p9fjHL/0jSkaJ\\n5wrmARQX02HNUaD7/rlox0V4aP9D67p/2GtX7Wpi/8Q8nXp5qMXD8zzs2bOHNz+uv/56/PSnP10X\\nD2gzNibOyYImiqIEfvFUp/iNb3wDr3vd6wAA4+PjOHbs2Lrxj4QQ3HzzzfjOd74DABgbG8OBAwdQ\\nKpXO8OhpVKxKl8SzJEqYyE0gp+WwZC2half58X/oQx+iicYGfvC/f4AbX3Yjf1588ezk07DuFAum\\n9MVxwu3HxZXS6m4dVafKE9iyTXGwmqTRrpBscBJn0ShiwBiAF3mUTBnrVCXesw1V4HLJ7X8jNDvC\\n9EzUXAp3S8kp9KX6sKN/B3RF59A0BoVbLfEwyU2m1sPO2ws9nGic4HC8ECGfHIiCiKJWhOVbKNtl\\nLJlLKFtlVOxKF8SB4Z9Nj3YlmVt0QS+goBUwnhvHQHoALY922NJKGhk1g+HMMC4durRrqsXgfy23\\nhYfmHoITOpybc0HfBegz+lBzayBR20NHkrtM15pek5utHlo6BFVRoQgKLhm8BFPFqQR8kPGM/MDH\\n1NQUf42FuQXktNyqU49vfOMbeN2trwMU6knzyCOPQJJox0+AgKO1ozwBiYKIqcIUV5QhhOBVN7+K\\nb/xGR0dx4NED6OvrxmKvFUEUcEPVeKxH4vmLX/wi3va2t/GfN6FnmxGPXbt2cWnW/fv34yUvecmq\\nj52ensaWLVt4g2h6ehrj4+OrPr4zPvShD/GGmqIoeOCBB1adCK03mm6zp8TzSHYEQ+khbuRIQPDk\\nk0/i1ltvpagGF/jLj/4lfv+9v594XrwQiYvNsMlA/LGSKCWmxaxZxrzSGm4DVrAyZa07de5dllbT\\nyCgZqJJKoU2iBEVUUHfqmGvNYdFMyisDKzBlAQLPIyBITHlUSUVAAhgSlezvT/djZ/9OzqFkRpiK\\npKzaFIvDiuOTq4hEOFw5zAsnSaA5m10zxnVxfKr4xmBkXbmkDa9uuA1ayLhNQKB8FlVW+bSo5bUw\\n15qDLFJJ5aJRxO6R3choScUuL/QQRAFsz8b9J+/Hkr3EURBj2TFM5CYSuVkQBKTlpHdYy2+h4VD+\\n01xrDoZsQJM0TBWmsHNwJxdkAKhAkBd5iKII1157LYec3X3P3bh699WJQiYe09PTmDpvCkgBECmM\\nc2R4BCmF5vzONT6lpBINtvj9IysyHrj/gTUbEL0iiAJUrEoXNDOlpFAySmsqaz788MPYu3cvRyzc\\nfvvtnNKwGc99nJMFDeuEx39eK3zfx9jYGJaWaCfre9/7Hl75yleu673uvPNOvPvd7+Y//+AHP8Ar\\nXvGKMzjq7lhN4jmrZTGVn+Jj2qbbxLt+5124+9/uBkCLsnu+ew8m+ib4deh1DeLFTeeCKgoiX3Ti\\nz63aVZStMictBlGArEoxuAvmAqbr01QKEnRqw4w4S0YJIxlqZMXIjmwKw/5EJOJ4ZVGgrsOGYsAL\\nPVi+RbtVkgZVVjGVn+IJh8Eb4nLQDMbFHKtPRSCtO3UsWUtouk34xOeGov2p/p442iAMMNOcwZHq\\nERyrHcOJxgnUnBoXCIgHG+ezwqGgFzCUHqKd0vwkthW3UbnOGBGRwd6Ale7dvtl9KzBAAZjMTSKl\\npChhFdSVO24uF5EINbsGAoKyVca8OQ8JEmRJxp7RPTzxu5EL13e5ao8kSjhv63lABMAFiL/O+6ey\\nBKjA1//567jxxhtheiZmm7P83EVBxJbCloSs55133ol3v2fl/vn+976Pm266ac33WyvYdyn+nWVT\\nsNVgkIQQvOY1r8Fdd90FANi+fTseffTRTejZZgBICsfs27cPu3fvXvPxN910E374wx8CAD7xiU/g\\ngx/84Lre5+677+YcSAD4y7/8S/zBH/zBWRz5Sqwm8azLOrYUtkCXdVSsCupuHXf8jzvwmb/5DABA\\n1VT85P/7CfZesheSKCUMLONrajyXhCRMQJWZ+hhTXGS/cwMXNafGpejZNN4NXcw15nC8cRyLrUU4\\noQNZoIWGJEgwFAMFvQBN0ngecQMXXuTxjTQA5DUqmpLVKNm9aBShizqc0FkxNhZlDGeGKSS5PdVm\\nUC8mKMDySRyatlZYvoVnl5/lUOCh9BCGs8OcX9MrbN/miIBlexlNj4rILDvLvGEFUJhd0ShSKBso\\nDzOjZGD5FtJqmk8SxnJjfOPNik0WIkTsn9uPJWuJf5bDmWEMpAb4tEcSJW75wGLBXOCKp3PNOZ4X\\nd/bvhKHQJiYIoMgKFEHhMPCbXnYTHnv0MSCikOR13T8//iGQBj7wRx/Af3nnf+ECRnFeS2cxc/fd\\nd+OGX7gB7OP5i7/4C3zgAx9Y873WCtMzsWwvJxqwokDVQ7NadtXnfeQjH8FHP0oNaw3DwIEDB3py\\nQTdj4+OcLGiApHxkFEWnHBe/733vw+233w4AePOb34wvf/nLp3yPJ554Art37+aytu9///vxyU9+\\n8iyOunesJvE8kh3BYGoQpm/ikWcfwate8yqYTToyftNb34T/9n/9Nwxnhte8+YBYMuqhhCYJEkRR\\npMVV/STd8LeJ6hGJYCgGQhLyggSgxcF8a56LHLAiRZVUCp3LjkGVVLgh7U4x1Rw2PWGwhZSaghu4\\naPktnhRzWg7nl87nEpLAiiR1fALDunJrTWwAJHT+n60+y81AJUHCzoGdiWsXRAH3X6i79YSaT0AC\\nVMwKFq1FmqTbimC6TGVHCUhCjQVAAoOd1/MYy45ha2ErBtODSCkp3tlkhFQ3cPHg7INclc70Tezo\\n38E/Y02iWOQgpPjwmlPj2PUnl57kn+1EbgITedqRY5LUnZ/53sv3Ah6ACFguL69A+VZRDIrfP294\\nyxvwyb/5JE7WT3JIYUbN4IK+CxKiC0888QResvsl8Dy6Afn93/99fOqTn1r1s1pvMMx6r+vNE29H\\nzMzM4OKLL+aGte9+97u5meFmvLhj9+7deOihhwAADz74IK688so1H/9P//RP+I3f+A0AwIUXXoiD\\nBw+eMv/UajVcfvnlmJ6eBgC8/OUvx/e///0Nh6usJvE8kBrAeG4cfuRjpjaDm2+5GU8dpmqdu3bv\\nwj/94z+hL9WXkLRfLeIw706eiCRIPJfMt+ZRc2uo2XSdsgJ6zzqBw9ckN3C5UiVAN/SqTNeilJzC\\nYGYQ/UY/lbIXZA5jYpyTIKL+OoZEOSlNvwkJtMGUVtPYXtiOjJ6cZsSnLgzaxfg6a0FY44IBs41Z\\nTNen+e8u6r+IKpDF3iMxpYoJAoVRyAsbP/ThRZRr2Wf0YSy3kjvjuVoSJOphBwJJlJDVsthW2MZF\\nUtjnwM4lIhH2ze7DornIRVamClO4qP8iaJIGTdYo9DvwYAc2ag71E/JDH9P1ab6u59U8thW3cZg4\\n832LX5O33/Z2CmMMgLu+cReuvvJqzlXqdT3j9895l56Hb//o27ACi0/4CnoBI9mRRP7svH9ufPmN\\n+MH3f3DW909EIlTtapdCoCZp6Ev19VTW7ISevfSlL6XQzU3o2XMeL4qCJgzDU36ZHn30UT7a13Ud\\n8/PzyOfzqz7edV3s3buXf2kvv/xy3H///VzudqOjl8QzIQS6omMqT80T/+fn/yd+77/+HtA+1c9/\\n4fO4cveVSCkpDGeGE5tJoNszgBDCE0qcoG/6JspWOeGloss6SkYpAU3zIo8bXBEQOL6DslWG5VsU\\nz4yIExD7U/1UFlnLc05NEAa8CJFECVWnimV7mWvlp+QUdbQX2qo1gswLkrUmMGxyI4vUAJMRUOOL\\nqeVbqNpVzDRnEEQBHXG3uTl1t86x372CyUIzRZislkWf0YfR7CjswMbB8kHMNGawZC5xqFpGpfhm\\n1mFkIYsyV4rrS/VhKD2EyfwkhjPDKOgF+JGPB04+gHlznnfPLh28FDsHu93LK1aFKw49VXmKk20v\\nHrgYDbfBO4gc7w6RcnDUNLZMbeGvc+ToEX7/CKBmZ4qocE8fRVLwxGNP8NG+ltPwnQe/A1mjHUJJ\\nlDBVmOLyogC9f/bs3cOhCJdddhnuv+9+6PqpyfzrDTbZ65R4NmSj59StE3r205/+FDfccMOGHc9m\\n/MeMK6+8Evv37wcAPPDAA9izZ8+ajzdNEyMjI2g26Sbo3nvvxdVXX73mc97ylrfgK1/5CgCgWCzi\\nwIEDpwVVO93olHgmhAqfTOQnkNfz+Pm+n+PGV9/IuTIf/OAH8Za3vAWyJGMgNcAho6uZWDL+Zdkq\\nY9le5sT8ZXsZy9ZyIpeIgsinuCyYwqQTOHyTHkQBCCF8Us+k6YtGEWNZqpYYh3HFz63ltVCzaxBF\\nOvnXZI0XB1w8po0miAspdAbLI6pIeZrxIoYFMx89UjsCy7NogaFmMZGfgOmbaLpNmH63mihAC84l\\nc4kbWqbVNApaAduK22AoBpeVdgN6nhEibgFg+VaCL8U23QBVOzNkg3MgWfProbmHcKx6DAGhE5wt\\nhS24auyqrr3BornIm0SHy4ehSiq80MPW4lZEUVt1MlqBzjF1OEVU8NbfeCsOHTwEAPjiP34Rl+y8\\nhF9LJl1tyAbnwviOj/GxcXr/CMA3f/RNTF00xV+bWRYMpAf4dY/fP4ViAQcePYCJiYlVP8fTDSdw\\nULEqie+GAAE5LYeCXui6Xg8//DD27NnDBanuuOOOBJJnM56bOGcLGlEU+UYmCIJ1cWLiWOnPfe5z\\nePvb377qY9///vfjr/7qrwDQAmj//v3YubN7U7nRwSSe40RwgErwjmXH8NpbXovv/OQ7QAoYnxzH\\nv/zLv8DQaSGT1/MYygxRDHF7dNypKBaRFdM0AsI3+hBWuDg5NYe8Tos95tTMCfky7eIzlbCaU6Py\\nmI2klKgICmkr6AWcXzwfE/mJhG/KfHMeS/YSHN+BF3lQJAUj6ZGeExeGe2YTBJYsJUHiXUH2vDgs\\njb2OG7ioOlWuCMY6ay2vxSELvYJNlhh5kuGj83oeWTWLIAqwaC4mpSXbSXPRXMSCuYDF1iJmWysu\\nz4zMyjbciqRwNSFVVqlks2RgpjnD1eKyahaXDF6CifzKAu4GLpciPVw+DDdw4Uc+smoWWwpb6HtF\\nMQM7RacSqKA8prHxFcWaZ488e8r7R4CAV/3yq/DkU08CKSqu8bpbXgcCgsn8JD8f5rvzgT/4AP7q\\n0/T+0TQN+/ft7+nAfrbBNlad6jWyKCemYOyxr371q/Htb38bAIWeHThwAKnU2mTQzTi3Y8+ePZxk\\nfP/992Pv3m4xjc54+9vfjr//+78HALzjHe/AZz/72VUf+5WvfAVvectb+M9f+9rXcOutt57lUZ86\\n3MDF8fpxLjLD8mVBL2AyP4k/+/if4ROf/ASQAtSUin/553/B1NQUN1ocSA0gpaYoNMpe5gVL1ab/\\nZ82EuJIjK1DY+isLcqLRltWyKBklFPUi+lJ9KOiU1+IEDueNnmycxLK9nJgGqKKKjJahyl35Seiy\\nzicsTbfJpfG9wAMRCEbSI9AUrWtayxpnuqxDlVQKn2PH2y5e4v9nJsdxeBc776bbxGOLj1E1xoBC\\nwkYyIz0/CzYliUjECzVREGnOTg9BEARU7WpX8yujZhBEAYfalq0yyhYVJyKEQJZkDKYGeT5k58tI\\n+aIg4sDiASzbyzSfyAa2FbfhksFLEsqmJxsnAQBzzTk4gUMh4ZKKSwep7D9DWDCuDlORc0MXb3jj\\nG3Dw4EEAwBe+9AVcenG3VUA8BEHAx/77x6gnjQC88dffiD//+J+j6TV5I42d/2B6EP/81X9O3D9f\\n/epX8YY3vGHN9ziTIITw5mYcdiiLMle0i8ef/Mmf4GMf+xiATejZ8xXnbEEjSRIfe/u+v6q5ZTxu\\nv/12vO997wMA3Hrrf8I//MOXEYYEhACCAEiSAMMQ8ZOf/DDBsbnzzjvxu7/7u8/NibSjk8Qfl3hm\\nC6wqqZAtGde85BrqWJ0G3vzbb8Z73/9eIJJgIA8JKhRRhSorgBghFC0Qsdunh+uzOw0uC6lKKkay\\nIyjoBV7AdKq/sAXd8i3YgU2JiG1X6KbbxFxzDhW70kW+LOpFbC9ux3BmmD+GLRopJYXh9DDvvvmR\\nnzDfjHcJFUlBWklDkzXuorxaCBBg+Rama9NoeA06Vib0HNg0RhAELscMUIWgvJ6HIipdZqSKpKBk\\nUDlP1p2M3145LYeiUew6Dj/0cbx2HCcaJ3CicQIVi7pB9/InYMkrjELMNGegSAr6U/0o6kXsHduL\\nXSO7oEoq5fO0seX7Z/dzSMAVw1ckuqsZJYOMmumaYEqyBCIQQAQWK4uIhIgnqtXirz/31/jkZynk\\n8pde9lLc8aEPoaSmIJAIRBBBJBWB1o+f3fcQfv01v86xznfccQfe/XvPbfeK+Sx1dkXjcp9AN/Ts\\nPe95D26//XZEfgthaxZR6ABRAIgyREmHlBmFqCQhK5txbsXevXvx4IMPAgDuu+8+XHXVVad8zt13\\n382ne5dfvgs//vG9EASpK5fMzEzjsssuo+s1gLe97W34/Oc//5ycR5wDwhpXBARVu8rhRAD49HpA\\nG8Brb3otnnj8CUADdr1sFz71159C02vCDyLk5UFoggFFUhGREHbYwgnrWZhBo+u93cDlnl6CICCn\\n5jCSHcFobhQlo4SSXuK+LPHjZUI0jF/T8loUpuU0aEPIoqqXjK/JPLi2F7djS2ELLN/CQmuBFz+K\\nqGAwMwg3oNYETuhAEqQElDbe9MqoGSql3J5orJZPBFCY3bKzzCf2TFVtwVxBVQxnhrlwiy7ryKpZ\\nyKKMpttMQH8lUcJIZgRZLQs/9BM+Y+y5vSYDzP5hpjHD1UllUcZAegCKmOQQMthbhAiHy4dRd+pI\\nq2mosopthW24cvRKyJKMql1F3a2DEIJDS4egyArCKMT5pfMxmF4xqmSwvM5csveqvdj38D5ABr7x\\nnW/g4ksv5jza1bafD+5/EO/8vXcCAC45fzu++pk7kVVUAAECQhCJKiw5i/mlOn71lb+KVpnm6998\\n22/iC5//Qs/X3KjwQx8Vu5IQ2QDo3oB58QEUenbllVdyFMINN9yAH//4xxBFcTOfPEdxzhY0iqJw\\npQnP87gvzVqxsLCI2257B/7zf/5t/MIvrC4KcO+9/4a//ds78L3vfQu//Mu/jLvuuuuMJJrXil4f\\nS+dmzA1cnKifQMNrUIWwNnfiJ9/7CT76Xz8KQRTwi694Nf7sY3dgKL86fCEUbQRSC5HoUIWztvNx\\nRCLIgsx18wfSA5y70qmcxnxrWAeOhSAICVK+AAFu4GKmOUNJhiTgG1sQCjXoM/owmhuFJEg9u1rM\\n6JPxeFbjybAijP1huGrWZanaVU6MZB2sgl6AJEhYMBfghz40WUOf0YcdAzuQ1/MQBRFVu9plgprV\\nshxfzjg08ePtT/WfUvaxbJbR8lv8sxUgoObWMN+a5yN/y7P49RUEAYvmYmJhHUwPUniCTKEYy9Yy\\nvNCDLMrI63lcOngp57Rk1Awnf3aGqqo97x9GMOWTvbaL9aK5iMMzh/HlO+/A//nqm/GKK1dXlvnp\\nQ4/hb/7XN/DtHz6AG6+7EV//f79OJ2yyygUenosghPBOZjwkUeJmpgDwhS98AbfddhsEQcCv3HQV\\nPnfHR5DTVy/kRGMAcnYKUmroOTv2zXjh4uqrr8b991PD2PXAxwDasb7ttnfgVa/61TVzyaOPPojb\\nb/8zfO9738LWrVvxyCOPIJtdm/O43ugsYOL3eaenDGuQLFvLMAOTKx4+c+QZfPQjHwVRCARJwIfe\\n89/xmr2/jon0tlXfd8E+gSOtJ7HonUReyyOlpJBSUlT4RM3RCb+RT3h2xY+LNcB6eUzx7n/o86kG\\nm3ZzERWx7YMDAUW9iKnCFPd1GUwPdnmRMYEbRoZfTdmMKSYy9UZWYLEiq+bUOF+X5S5VUrFgLlDp\\nfEFGVsvisqHL0J/qhyzKWLKWeor+DGeGIYsybN/mxUT896wptVqUrTK1OGifY0bJIKfn+PrHoOSs\\nSBIg4ETjRFfxdXH/xai6VSiiwjmZTMb6ytEruXiQKqoJVEw8rrnmmq77h3032fHYvg0npH+3PAuW\\nb+LvP/Xn+PUbrsMr9qyeS+499BQ+/f98Fd/+twcwmhvFj777IwwUBrifz3pNls8kmm6Tq72yEAUR\\nJaPEP5+HHnoIe/fuRRiGEAQB//q/PodfeunFiJzyqq+7mU/OPM7ZgkZVVW6W6TjOKbktUURQq4Vw\\n3fVfjrvv/iFe+tIrMDIyfFbHCqytxBZXkGHwMD/yEUZ0xLtoLmK+Nc9xsCDAJ//8U3jHzX+AV1z/\\nqnUfg6oC6WyEJXsx0S0yZIPzZeICAm7gwvRN3nljnjbMSyaMQiiigrSa5tK5jLjPFuqTjZNYNBcR\\nRiGqThWOTzebsiTj/NL5uGrsKhSMAl+YOhcoQggXF/BDv4uUGEYhml6TS0b7kU+7SBBpp7GNiRUg\\nIKfnOM44o2bQ9KgUNUBhGBk109Upk0UZJaPESZRlq5wQC2DdsV7kwc7zsHwLNacGP/I5NyXu+zJT\\nn8HJ5kksmUtYspZ4l2u6Pp2QmMypOS4iMG/OQ5EUZNUsLhu8DJcMXYLzSuehZJS6Enviu6CpCHz6\\nfTrV/bNoLmK+PoNhv4xM5K76uM744YOPILfzWkyObV2ZtrVhHJyj0za3W0sq83QjjMKEvxELZmgH\\nALf+2q/ira+5Ar/0srUJ4PEQjQFog7shbOCxbsYLH9dccw3uu+8+AFRG9tprr13z8WeSS370o+9g\\n+/ZBXH31qac/q0VcRrmXwAt7DIN/scZOza1xsZO51hyWzKUEV+Ceu+/BgXsfw2ff/WW84srTyydi\\nykRIYtYDbYNilksAcMEUK7CSRQxZaYixezWlppCSKVSUnaPlW2i5LUw3pmlhE/kwPXNlyg4BW/Jb\\ncO3EtRjJjQCEirisxmHp5IPEr53lWzB9k/JX2vYQirhibszPXaYTo7SaRl7Lo2yVOZohraYxlh3D\\nXGuuS+hnODPM4dwNtwHTW/GFYYT49ZgG+yFtMtXdOuf9MBgfO0/GxXEChxaVBDhUOYT51jx/naya\\nRUmnfnLHa8epQI0kY2thKy7svxBZNQtDMXpOilhcc+01uP8+WtCc6v7xAg8Nuwq5fgiq31z1cZ3x\\n3Qf3YdrI4aorruW5VhAEbqrNeTpt/uRGFQphFGLZXk749wB0z9SX6oMsyvjjP/5j3P7pT+FLd/7h\\nZj55juOcLWg0TePqSbZtr0k2jiKC5eUQ/inkaXuFoggolSSI4undIGtddgYPihP0mbIYkPQCYBFE\\nAeaac6i5NYiQcJ66GwW9/7TPJxI8+FoZEFbw1MyThZEdGQSAm2LGiKAhCSEQgUN5mLkZkISGxb0J\\nGm4D983chyPVI3ziklWzXPN9NDuK7cXtyOu0q8eV0HoEGwdXrAqWnWWYntkTJuD4VElHkzTk9Twm\\nchMYzAwmpih1p867XC2vlSC1A0BaTaOoF/nkp5MvYygG+lP96+oScYJ++3rEJYZZgotPfZiR6LK9\\njJPNk/jZ9M9wvHYcZauMptvko++m1+Qu1Bf2XcivuyqpGMoMYSg9hMH0IIYzw0iraf691HQNvkc3\\nNWvdP/OteZRbCxh1F6BHXs/HrBWOoOCkNohUW/p7tYgXOqqs8oLnbAodN3BhB3aXxLMuKXBn7oNM\\nrDWe3TtENQ9t5JrNJHQOxbXXXot7770XAHDPPffguuuuW/Wxz2cuWU8BE0QBqnaVe81UnSpVafTq\\ntGDokUsiEqHhNtBwKdxYJBJekX89Lpk8fT8cQQogpU0IAuUPZtQMnbSEAffsYpOCuP9ZRCL4oQ8S\\nUQEaQzUSEGI2BYkbCDPy/77ZfXh88XF4oUen9LKKol7kXIfz+87HUHoIaSWNkITwI79nPvFDHzW7\\nhopdQdWpdk2MWLCcp8k0l5SMEkpGiXMqAcp9PVI9AgECTN+EJmnoT63kZ4ZEUCSFK2t18mWKRnFd\\n6x1rGgLAQmsBTuDw4+hP9SOn5dB0m/xaMuNMP/RheRYenn8YR6pHuLFzVs1iLKbhpJkAACAASURB\\nVDOGBXMBhmJAEiS8ZPQlvLBifBxG6mcS2Oz7eO111+K+e2lDYK37xws9mE4dyvITEIPeAjxrRT0i\\neDgAMnoemTVgW/FChxU5bKJzpoWO5VtYtpcT+V8ALUA1IuPxu/8RO88/fZGPzXxyenHOXqW1us/x\\nIIR2084kAQGA79PnF4urQ2VWe382YYkriiXUWXpsxNcah1/YfyEcz0FkZ2CIqyu0rRUiUSG6BUCv\\nYyBNR7dM3pcZb8U9BsKIQt0gApqocXdidn4sYTI9f66W1S5uBAhwQxc7+nfgvOJ5ONk8iZpd412W\\nMApxon4CM40ZDGWGMJGbQNEockI3M55k3cam1+RJRxIkpOQUvb7tzbYAmgjzeh4ZNYOUkkJOoyIH\\nkiBxaUiAFhJM+SyKKDdoIjcBXdETJMBefJm8nueF4Kki7hMgCAIG0gMJN+S6U0cYhQkZZza16Uv1\\noWgUMZGdwM9P/ByzzVnuJ1GxKijoBQRRgOHMcALa4YUeTtRP4ET9BP+3tJrGUJoWOSRHgCqAcPXv\\n72xzFhWzjGF36YyKGQDQiY/xoIZFifoqsIlYZxAQrggX74Yx3hQrcE6n0NFkyt+KSzxHUQiv8vgZ\\nFTMAEHl1uIv7oQ3t3YQLnCPx7yWXxP1fOjfWXuihaldRddp/2n9veS0K6RXAxUX4efUoZgBwf6yU\\nkoId2LggtQd5+fSbYwBAQhmhlUIuLyClUg8ylksYygBo55IwhBPRzbcqqshqWZ4HWLOMyfczD7I4\\n74UpoW0tbMVUfgozDTrRZr8nhNDptrmEolHEeG4cI9kR5LU8DNngk52m10TLbaHlt/i6rMs6VUBr\\nNxnZ9VckBYZocFidLuuUk9hW3pQEuuamlBQKWgFPlp/kUxlREJHVshjPjnNJ59Phy6wWcXTFSGYE\\nS9YSXzOZ6ihrzDGFOXYueSOP6yavQ1pN4+nK0xTaHQY4WDmIydwkJEnCQGogMSXqBeVlr6vLOiI5\\nomp5BJzX3Blu4MLyTMi1p86omAGAvChglyrjYOijETWQ1bJd33l+vL4Dx3dQw4pQES90JJ0XZ+ud\\n6LDPvubQaSeANj9tGUXzxBkVM8BmPjndeNEXNK5LTgsasNZr6PrKpCIecc5Bp6JYr+MFuosZlnwU\\ncQWGw0j5jB8CAI4ToeomfUVONxSSgunVUZNqie4Vd4QOA7iBy5VOcloOqqzSpBHvoIkSRIj874x8\\nydyjIxJRf53QpUlMVrF3bC/6U/04WT+Jp5efRs2pcQ4OM4bLa3mOUfUij+OlO6+ZKIi0O6cWOZY7\\nIhGXTgbA5SLj8slMbpLBuNiiGEVUMWc8Pw5RELkvTVxxbr18mXjEYQeyKEORFBT0Aqp2lQsUuIHL\\nJ1Ts3NnvWl4LURTh0sFL0fJoEtYV2nHaVtyG4cwwziudh4pdwUJrAQvmQgIWx8L0TBzxjuBI9QjI\\nBQQIANjAD478AFv6t2AoM4Q+ow+iIGKmOYOqXUUqtJGOnK7XOp3QAxPDGQWRXoIIEZqs0WI/WuHo\\nxBN8PCISUQlTdDuGdxY6vXwPGPHXD33Ki3KWIHnVszqfyF5CaC1ATp89FHUzXvh4oXJJrwLG9u1E\\nwcImL5Zv8aIlrsIlQqTiHvHzaf8+q2VR1ItUVcwocnWxuKS540SoVs8un5BAQd1soGKXuzyvBAiw\\nAxthFPK1TVd0iBC5ZDSfzkoKX+vZlF+AwJtkCy3KVWHTmx2DO/DybS/HkrWEg0sHMdec42t81abX\\n8GjtKHIqzV9MXIBxdTq5oKqkIqtmKexL0iGIVHmMwfNYseWGLjdXZuuOHdgwfTPxXSpbZZxXOg+y\\nJCe8xeKb8PXwZeLROSGQJWocOtuchR3YFNLlNuiESk0npkhsrY2iCDv6d/DvmCRIqLpVuJGLC4oX\\n4JLBSyAJEuUdhW6X3xeQFAfydA8oAoiAJXsJy9Yylcluc1wYh0Z0l8967c0jwEWZEbhKjssqRySC\\nHdh8It/reIGOQsdJFjpMGMJQ6H6B+ejEP0/Gn0kraVTsCrzQg+o3ofjdIhmnE5v5ZP3xoi9oTHNt\\nB/n1hmlGEOWga9qy2jg7DtWKH2dcUYwVLHEX41NV6Rt1PpGr4tHGI9RtWc/zDpkI2nnJp/MJQjk7\\ndtYdZ+IBTDo54QUCCjk4Xj/OF36AEtrZGH6yMImJ/ASWrCUcWjqEE40TqNpV2jUL6aKd1/LoT/XD\\nUKgDsyEb3MQzp+WQ1/LIaTkOZfJDajbZb/TDj3wQEKSUVBeXwvRNVO0qgijgU56aV0Of0QdVVtFw\\nG8hpOSyai7wwYMXdUHpoVTfoXsGEDViwjqQoiCjohQTpv+E2MJGbgAABTbdJp1GxjldEIuwc3IkT\\n9RN4fPFx6LKOudYchjJD2F7aju3Yzh/LVIIWzAUstBa64HL8e2YAhyuHcbR1FAA4ad+QDfQZfdir\\nrf9c1wrJmkeklxCBEkUzagYZaSWRR1G0cm+11YM2otBhXCVFUpATc7CXn9iQ8wmaxzcT0DkSz3cu\\naZkhzCg5aanZNSw7y4nmR7yAYZv7eDBIcEEr8IKlpJe4HPJaEM+NP6cAFTKDglHg5poRoZL3DFrM\\n1kFCCEJQOLAu6fw42VS/8zOIoggL5kLCJyyrZbnc8WB6EIPpQe7H9fTy06jYFbTcFvw63dymlBT6\\nU/3IqllospZQyjRkA1kt2zUx8kIP6Vyac/IISCKfAW2bhfpx2L4NAQIycgamZ6Kkl1DQCyhbZUzk\\nJyikzaNTYUmkULqB1ECXd9xawYpfFqx5IwgCRrIjOFE/gWZIm2+L5iKm5CnIoowgDChnqCOXTOQn\\nEJIQBxYPIKWkUHNqmGnM4IapGxKNISbHbfs23NDlKpwsRGaMJwJWYGHJXOLHxaCShmKgaM6u+1zX\\nCsOtwlVyICBoeA2UjBL60ysTxjAKuccRE4SwA5vvKzqDC1X4drLQEQVoosbh9Wyqo0kaRjIjFLLZ\\nPLYh57SZT9YXL+qCJggIPG9jKESeR3CyNtdTArnzePi/xQoXVgTEddZXgwSsFht5Plm5D8QWMdea\\nQ8WqYDgzjJHMSJchIREIZEHmvAbeOYvxaphUJ/vZj6hMsRd6vLAbzgyjZNCxO8Nw15066m6dSxMz\\n52cXVLq57tLfF4wCtha2oqAXuNFVSklxvg0ALjrAftZkjSvNMClk27dRsSoJV+CQhDBUA5qioeW1\\nePLKKBnI0srtw14PAi2cOr1uegVLiixYEcgiblhHQCCLMip2BaLTndTZ9yetpZFRM3i68jSckBZC\\nXujh4NJB7BjYwR+f03PI6Tmc33c+v+bL1jIvcgRbACQAwsq0kBCCJWuJJ+2SouOmyd2rnt/phOTV\\nEAQ2iGyAgKDpNaHL+go0QhShiVrX9y+MwkSBwxoJq3Gs1ip0NBIi4y5vyPlE9hIiv7UpwXkOxPOd\\nS3wP+PbR/41WUE/+QkCXDwoLSZSQ1yh/o6DTAqaoF6lqY7vYOV3IykaeU0YqYdo8iKpzFH2pPgxn\\nhrum2AKhEyWWE1kuifMtO3NJRCLMteZ4McB8wIYyQ/wxzMyy6TUhizIm85NQJRXzmOcbW8u3MF2f\\nhiEbmMxPoqAVYMgG55ywqTFbC9lUCaBrx2BmkPp4kZALEiy0qKx0XPxAkRRsL27HkrWEhtfgRtTx\\nKYwAqkLpRz4iL+Jr+6m4mPGGVNzWgP1c0Auou3UEUQBBEFC2yhz1kfgcBKpEaigGLuy/EMdqxziM\\nShRFPDj7IPaM7uGfiyRSRbe0muavwaB5tm9DIjEVu9jUi4kvAIDrVjFwlpMMFlrQghL58EXK46lY\\nFdi+zY04JVFCRssgoyXX5l6FDlOE6xUkInAi+pjOQkeXdKQFAf1nCJ/rjM18sr54URc0tr0x3ScW\\nUpRCIDa63p9179n4Oa7c1CmfyY//DBLQRp/PoDqBejRH4Ve+jZPNkxhKD1GCZVuqkS1q8Q1kGIUJ\\naWeGX2ZqNsdqx1Y28oTifEUi4kT9BOfBdH5mWTWLbF8WLa+FRXMRfujTRV4UIQkSWl4L8615ShQV\\nFZieyeV4NUlDza3xBV8UROTUHCVPRiFVgRFk+JHPN8xu6MKLPOTVPFJqiuOE624dNacGWZAxlh2D\\nKqsYSA9w9RheQJEVOczVihsv9BIY8niXEgCHsmXUDJbMJbpRj2iCy2k5DuXLaTkYisF5PLPNWVzQ\\nfwGma9MICVWaO1Y7hpCE2NG/Y9XvVSlVQilVwo6BHVAOK/BtH0gDV41chQZp4InFJziJXhAEXJHr\\nbRJ3ppHym7CVNL8GTuAgiAKOSe8VbMPTqfzTWeh4werTUqDdzbYXN/R8wtYsxOIFG/qam/H8xwuR\\nSyZS2/FEfV/Ca4uZGBf1Ii1YjCJKOoWL5bQc5210BpMSXsOSq2dY1sbqBQ2oY2iSRQQhFbBhUwqW\\nSxhsmfE0IxIhCiM+Ke9skhFCuN8Ki4JegCEZmGvOrUyxO66JJmmYyk9hODOMhdYCfz4hBBEoPOlk\\n8yQl6YsKGm6D813SCp3IxDe5mqxxyDIzmQ5JCEVS0Gf0cehVTstxdUkv9LBsLaPpNzHbnMWW/Bak\\ntTRyKvUqY0qhEaGTaTuw6XRZVDhsOx4RiZI+NoKUOG83cBGSEMOZYZyonwABLfScuoPR7CiHTzEo\\nO4Nll60ytha3omyWMW/OI62ksWgu4r6T92HP2J5VuYrxIkf3dMrHlIC8QuHiNbe2wrkRgMIZcjBX\\ni34hQkVS+UTT9Kgy3WB6sKspxkIUxK7CDECi4cllptea6IQEVmghFa5fpW09sZlPTh0v6oImDDd2\\nwb7n2M/xhUN/zbvqp+rSr3ZcZ0r+euuF78QNo794Rs/tFY/NP4H/8ejHE2o47Lw0WetaVE91PhEi\\nOB71qWG+OQyOFi/qOo25AHD+jSzKkAQJIQnhBrTo6FT7kQQJmqRxszRmIMcEASRZWhmDAzxpsI4n\\nK8YkYUUalCnPxbknkihRJTci8ElTZ2es61qsAMOTMLyOjmsEanzHii4IyaJRFERo0spnwJRtmEM1\\nu66iICakrDVJS+CmVwvrDRbY0z780w/DJVSmlKkPhSTEpcqvAoXRNV/ndKJlL6MlGDB9swsLnlJS\\n64LInCoYdI3BLIIoQBAGiBBhPGwhfeqXWHeQ8Oy4RZvx7yNeiFxyvHYSXzzwxZWpvRjjkPS4dzc6\\nlwDAb170O3jZ2C+f8fM7Y9/Jh3HnI5+gPwhJpbLOjXGvRl+8yUcIofdvGHCLgF6QtF65hK3tjNfJ\\nLAhYLglJyKcxDEXB4N5RFIEIBCJE/vz4eh9EAW/WsfVcEiUOVWOFhx/4sEKLHytVV9Q5uuFU+4d4\\nPmYKb5y/2tEMZecUz2VxjpAAgfv0ACvNIIDCr/l3ri13zUIRqR3Aqb5jj+x6BNhK//7hxz6M7PEs\\nz1UEBFEU4QMXvwavGd+YaT8A1M1FNDSCmltLSF8/XXmaCwKdTWiSBkmQ6LQ/dOEFHuUoxfzxUqoC\\nKBu3xd7MJ6eOF3VBs9GC1WklA01an/Tfc5GANOnU+vSnE2klg4ySoaIGsQ0/AeHa9QwaAIAvrJ3B\\nMNGma9JCpr2YqqLKPW3iwaYQsiRDFuSEizMLWZAhqzL0SIcT0rFwfMFmHS1ZlCFB4nhdiIAQ0b+L\\ngpjwI2DHIQsyV6cRBUqqJdFKoeSFHk/IJCI8aRJC+DifJaKu5NJ+j4hEEEi7gBKTxQwBQRDSjTYh\\nhBrFiRIEQhMqS3oJY7x2d84LPbBaTZZkZNUsTN/kSdYNXRAQpJX02t81AfR1RNBunbBSXLHzM07h\\nrXO6IbQx/xk1k1DNYd1ELdJOC1POonNzxIpiFSr/voZRCM1xgHDjOoUkWt2MczP+48QLkUtKeh8G\\nUgP0/dv/sTWn+703PpcAgC6d/r22VqTVDFRF5Q0mYEW9MIgCKKKS4H2AJCFKhP4DN8NkHDrWxGIq\\nlfFg0ylFUnoWIEB7Q68Y0Ahd293Q5YVOFEV8+sIg1QIEhAhBQgIiEQqpEsCbI/HjZRMPlg8kSBAi\\nAZCBtJhesT8gQhJOB8KbOlz8IFbcxGW6SUQSRVDn5x6SkAtMMCSAKIhc1loQBPiRz5/LckkQUdNr\\noS0jntNycEKHT7T8yEfDayCrZtds4vHPUKAiPvEmJGsybnQuEUE/96JehCZpqDpVngdqDp0OMW+9\\n04nO5im7lpqsIUMyHFLvBi4MYuG0x6JrvfdmPjllvKgLmo1WwbPDldH16cZGSPK5G1zBN9w6TN/k\\nG3w2WRFBF/UoiuBEDocMsCkFu+mZIZpH6GQjfo6atOLiyzphskBH6WyRAFauSy/5RYBuTjNiBqHc\\nntiEHn9uQOioGG31Gk3WIIEmvYBQx2mmksMWVlmSu6c3bXgBW7hESaTFCKG/l8hK1zQBi2j/YYmC\\n/Z8nZtYhI7HvqkC7hWHYhg8I4Mo+mqSBiCvET0IIh8wxWJ8XerwY0yWdqngpGZgwOfeFcUx0Secd\\nwyAKeGcyJCGQBp3QSEDTb/KijZmSAoAVrt9Ecz1BYslFl3XIogzTN/n95IbUqyetphMmr/x6t5N8\\n57+t+Z7tBOQEDlJRiI3xaKex6R1wbsQLkUusYMU/K7FOxCWY25PzzkJnI3IJsPH5pOU1+ZoLgHuO\\nsTXRizxIREpIMrM1NCABb6g4gYOovWGF0G5utfmM7BqJosjzCVsrTnVdmNSwJmncrFkQaRESgeaB\\niESQJRmaqEEU6et6ZEUhk01V2AQ97qvDJiUAPT6WM6MoQoS2ol0UJawN2HOBFSh3FxKgzXMkoLlB\\nwgpniimEsteTBFp8KQK9xn7k8yKRFW3s8X7or/iWtY/VkKm3HJOBZkqfGTXDuZ5Ax3osEM7HDEnI\\nxQdYXgMAewMbSQDNJez6pVUq8FCxKzyXu6GLRXMRfak+qJLa09Op189rvmf7e8qVbEkI9JgQnmls\\n5pNTxzl7heKj5tWSkCS1xdE3KK6e2Iurt12CjJqh2NEOXH9PtTMIXQvYmUazGaLV2jgs9+6xK3DH\\n+B2JYsIPfa7Pn1JSMGSD81RSKnWAbrpNKiVMIji+gwVrgZ+7KIgYTg8jq2WR1/NcRU2X9TUXjV7T\\njl7hhR5mGjM4VjuGqkMlINniqss679h0yofm9Tz6jbZiWrtb1OkvIwoix6tP16d5B425AjMZy7V4\\nGkyEgEHiWAfPD33KH3KbMD2TJ/ScTjHVWTXLkwvzcWDhhi5UScWSuYSjtaMw2sT6y4Yu474KTbeJ\\nxxcfx4nGCdi+jSAKkNNzGM+O97ym7/3qe2ELNiACb3zVG2HoBpUrVXTqiQMJF2X71vwsTjdyqX70\\nFSYTJNooitD0mnzDwIrBtJo+IwgaFwVoq/F4oUfJyIKIQJA2cjmAsMET0814YeKFyCV96SJuufAW\\nTOWnsLW4FaOZ0QTEtwumK6xAoNgm/kzFAFhsdD65amIPLhy/g/8cRiEVWiEhDMlASk3xnKLJGlRJ\\nheVbXIrej3wsmUuJBlNfqo9DiLIqVSJLKamVhlKPz2S9uYRZBRyvH6eKVe3XdEMXhBCk1BRkUYbj\\nJwu/rJbFWHaMH4sgCFxhk3EmZVHmstlHakc4LEoRFUzkJ2AHNj/vXsF4RYw/qMs6mLw1K05c34UT\\nOhyqrcs6MloGqqjy77TpmZhrzfHXdQMXKSUFL/RwqHwIJaMEQgguH76cc4OCKMCR6hE8sfgE3/Rn\\n1Sx2jeziuTMeb3zTG/HzB34OiMAffu4PcfXVV/NjZp9R2lkC7Pk1P4/TiWJ6GIPFC/iegoA2/8pW\\nGXW3nvh3XdaR03Kn/R78Okfuii1HQPNUGIUIIAPYuPtnM5+cOs7Zgia+WK1m5mQY4oYu2IFogkQB\\nlu1lLNvLkEWZar3LKcq1iHfROvDA8f/3Oo/1JKWNPp/Hlx+CrFDZSzZuVyQFRakIx3cw25rFsr1M\\nN8gkoOerpDGcHsZAegAhCTFvzfMpRVpJY0f/DoxmR5FWuyFPrIPUKxkRQjjvZK1kpEoqJvIT0GQN\\ns81ZzDZnQQhBTsvBDV2cbJyEH/nIqZSgaSh0o868AuzAXtHYD9yEZGhfqo8mSxAMpAcw16SJwA6o\\nXGXRKAKgRRWDTHUqzziBgyAMYHkWRJFeE8bpiEgE0zP5QlvQChjNjnYp3KTVNNzQxZK5hJpbw3xz\\nHkEU4KnKU1ydJa/ncaR6pOv6sIIKoNLNJ8lJjOXGEq/vhz6IToAmAB+YzE7ikvFL0G/0c9KkIiqA\\nbwGVh0/nK7VmhHo/wqC7K8zunXgR16mCtuprts1rWRHDIIEsAbmhy2EpTcnAcHRmhpq9QspsHL9o\\nM164eCFyyUnzGbiBi8OVwzhcOQxJlDCRncBUYQoTuYmexOYwChEiBGK9mng3XxIkiKIIESKfSq+V\\nVzb6nJ5qPIacnoYqryiY5fU8gijAormIZ2vPwvapT4gsylxKeSgzBEVUULbKvJgxFANT+SmM58aR\\n1/M9cwmfcMQgbkDSHmGtayAKIkazo8hrecy35nGyeRJO4KCgFOCFHspWGS23ReFG7SbmQGoAaZWu\\n6cv2Mm2qETqZiJsGM58wJ3QwkhnBkeoRzuWsOlVM5icxmB6EG7hoeS1K4I+tjUxAxgkcbp6aVtIJ\\newdmhO2HVOymqBe7OFjsmGebswijECebJ7mojhd4WDKXkNNzXOWMxUBqAOeXzsfB8kEAdD1+aO4h\\n7BrelfhuEkKosSYABIAqqBhMDSKtpTn0VxRERHoB/gYWNJaSA3FqXXsqVuwu28u88Vi1q3ACB/2p\\n/jUhaOzzYb6CHJoXBrB9G1Zg8QmkJmuoRyKAzXzyfMaLoqBZrasmywJUVdgQaUoiuYAYUhhAezGN\\nEHFpYVEQ+TSjU/J3zdddpdjpVehs5PksOiehKHQE74c+smoWXuihYlXQ8luwPIvf0H7kc48Qy7ew\\nZC0Bi4AqqxhOD6PP6EPJKGHnwE7k9bZ/TTuh9Io4dK0TQkQfsHphE5EIVbsKURAxnhvHWHYMbuDi\\nYPkgmm6TkjxFFU7gYNlexpic3MwzZRcncEAI4UXpZG4SuqLz49AkDVkti7pThwAqgRnvLDLDUaaQ\\nwgokhrEmhGrb1+waX1jdwIUAKjuaVtIwVAPT9WlunskSm+lR+Jjt25wfwz4b1hEsaIWe13U0OwpR\\nEFFzatzdWJM07BrZhbyWhyIpqFgVKMcVOE0HEIFfGP8FTAxPdH0HRTUDohYhnKUZGgBA7wPWKE4Y\\nBI1N/tj1CqMQWS3LE3UYrYhFMGUfFgzb7IZuwieBGbz5oQ9T1M/aKBQARGNgU2LzHInnO5c0gjIi\\nMViBUbXXuZnmDKYb0wCAkewIpvJT2JLfgoyWWYPb0ya5I4SPFWWuBPG8XeSwyQ6bDsuyAEWlMtJn\\nG/WgjLSmI0IEXdYhCRLtljt1qhjV5muwSQxT9qrYFRyqHIIsyBhID3BltO2l7RhID0AWZYQk5DzJ\\nXsGgYadqkrHrEg8noCI2Q5khDKYHYXomHl96HAutBQDgnL6AUDXGTlRG023C9leUIVNKCmO5sYQ5\\nMgCUjBJmm7OQRRlVu8rtBzSZStX3oY8ab7YloS3fWpn2CPQatPwWQrfNc2xDETNqBoZsIKNlYAYm\\n6l59RVmz/b1i8PCZ5gwabgNhFGKuNYfJ/CQiRBhKD/W8rmO5MQiCgIPlg5yTc6h8CFeNX8VhwbZv\\nQ/d1oM3LL8gFDGQGeuYSQe8HccprfIvWF5FaQCRpqxLbGASNKYcC9HNeMBcwmBqEoRgUpgjCrSJY\\n0zEu3uMEDi38YnA5VVK5aBERJVgkQmoDoJub+WR98aIuaAAgnRbheWfnhAwAxayBIW0bLN/iiw7r\\nBgN04TJ9ky/ShmLQro6S5govp8O96Sx02KKkaASeJ6311HXFCesZzLXmEljdPqMPA+kB2pGSM9wR\\nOa2k0XAbcEOX4oYhwgroBKLlt6DKKgpGAYeXD0MWZBiywTv9WTULXdF7yj+ut7Chf6XXuebUEpLJ\\nbKKyc2AnylYZs81ZeKHHTdKafhOtegtFvYislk3gbBmZNKNmsOwsQ/VVXpQKgoCSXuJykCIRMdec\\nw1RhKllkijI1iVQzsHwLsihjyVqiDtNtd3rTN9FwGmj6TQRhwCdDmqyt6j/A1HeYtHPNqXH1mr5U\\nHwzF4BCMjJpBTsslYBnHa8dxrHaMv14YhSjqRRytHaUwLJkmRNQofjoIgxWuUxvCQEBQldMobUBB\\nI2TGu84vDg0RIHCTO9MzudqOH1IYiiIqiBB1QTTi0xmWyFVJRUpNcfl0BiHJa3mIYQpoPHPW5yNn\\np876NTbj30c837lkom8AvzX6W5htzuJI9QiOVI+g7tLGCYOdLZqLWDKXsH9uP/qMPmwtbsWW/Bb0\\npfo4L45NJlYTamGci05UDOMCRCQCRBXA2W+kjraexKI7DwECZhozSCkpjGZH+brIZHHTapoWAYFN\\nRWFEGbZHBV5Mn0rxZ9QMjtaOYroxDVVSkVHodIT5j/USkVlPLmE/szXHDdwus2E7tDGeG0dGzWCu\\nNUdNMo0SMmoGEYlQsSt8va05Na6KKQj0s9NkDRWrgrpTR0pNIaflIIsy8noeDbeBmlODKIg4VjuG\\nnQM7ExAu9ri8nocf+mh6TdTsGqp2FREizpdhvwOA+dY8FEnhcGFN7J7ssWkYu2Z1p44wDFF36xhO\\nD6NoFLnKKOO4sunKaHYU47lxPDL/CL+mjy8+jqvGr4IbtOHX7KPwKcfJC7wVfgrj2oAg0vqgbUBB\\nE6ZWDCg7FePifNaCXqBm3V6LN8PKVhkplULoO3OJH/m8ociKGHbtVEnlhaUgCBSZo6RA7ArQfPas\\nz2kzn6wvXvQFjaYJ0DQBrnvmnTVNE6DrdNPJipSB9ADvoDNDxvgxMefZJSzRRbkH72YtKBoAviiw\\nhQEAZAWQlQiBf+ZktLq/hAV3OuGMm1JSaLpNVOwKJrITyBt5qJJKOTAa0aZ2/AAAIABJREFUnSj4\\nxMfBpYN4fPFxKFC4RG4Yhag7dRSNIohA4Lke6i41jRMEOp41ZINfg5Sc4pt59ph4MgJWVF7iqi91\\np06nHO2uEwD+PqIgYjA9iK2FrQiiACcaJ/iiT0Bod6rcQFEvoi/Vx+VE49haRoCsu3Vokoa0msZw\\nZhjT9WlEJILlW5hvzWMoM4SIRGh5Le6FULNrmK5Po+pU0fSaNPlEEXzic3wvI/PLogxRFDkkSoQI\\nWZITKkCMdDqZn+Qduf5UP3RZxyu3vRKThck1P+ML+qie/dOVpxGSEIfKh/DI/CPYVthGr7VIaFeN\\nAH7gQxAE7jskCiKHvEWiDkNKwQjPfLQu6gNQ0qOnNCIFaAEjCAIsz+JFHAtNoipo8SImIhFUUUVa\\nSVNhiLYKISOwBlGArLoiBWASAlHOQDsLQzTRGICU6t3V3Iz/ePF85xLDoBNsNmG+fvJ6VKwKjlSP\\n4GjtKBbNxQSfpmJXULEr2De7D1k1i63FrdhW3Iax7FhSpKVd5MR9XliwjXC3V5MLSZQhRmeO36/7\\nS5i3p1G2KWTMkKk0e8NtYDQ7ioHUAEpGCVkti6yS5Ty96fo0Hl14FCQiPI+AUJGSglSAQATu8cKQ\\nPYqoUBREOw9n1Ax0RecwrHguAZLkdQArAgWBx3MJIdToN+6PVtALGMuNISWnMNeaw7K9Yshbc2o4\\n0TiBtJJGyShBEiT4kZ9QliQgaLkt1OwadFnnucT0TfihD9u3cah8CBeULqC8mHaOYHCnptfkHEBD\\nMajPFvH51IApk7ENN4emAfz9NJGuhUFEm2isOJz2plEySlAEBZP5SYznks2mzhjJjiAkIR6ee5gb\\nT3/r8Ldw+fDl0CQNvuxzUQArsDhfKAHlJBGImoek5iF79VXe6dQh6P0wspM8T62VT4IoQEbLwAs9\\nzJvzvJFZdaqcFxtEQaKIYV6CrIjh08y2AAWb9gO0mdYggLyZT563eNEXNIIgoFCQcPDgLEqlwdN+\\nH0Whz+cbbqx0fwzFgKEYGEwPwgs9PrlxO9ShvNDr4t2klTTvmnSeC9eRJ93dN0EAMlmCVgMIzkDl\\nz41MLITP8q5MRs1QrLDXQkr5/9l783DJqvJc/N3zVHOdeei5mxZkFgQFh7SERBSUoBG9jxh/DlEk\\nEQdInggiEUPMNYmKiSQmTlwfNRrnGHLlagQMgxDoFuimoc881Dk1D3sefn+sWqt21anTnB7uVaA/\\n/jh0d52qXXtY3/q+7x10GLKBkl1CWk3j5IGTGQwLABzbQUbN4KWbXoqyVUbdriOjZuCGROWs0CzA\\nkAwklc4GMooi2B6BY1GcLp2MqILKkhLtqIuc2NmQxr6/6ZmwfNINszzi4hwvDgVeQE7Lsb8bSgyh\\nbJUxW5vFXG2OqbaUbYJ73pLdgs2ZzZAFGS2vxQy66Gfbvo1VcxUtr4WaXSPj65BcY0rM5DiiuOOG\\nLhpOx+CNyklLkoSMmIEf+XA8hymv0YXSUAwkJDLdoWTZpJxETiewC4qRnq5MQxZJsZGWCWzM8iyi\\n3hJT/qLniuKq83oeVbuKx1cfx2prFRHItXjBwAsgtkTABhCSYlaTNNa5bLpNlK1yG7LBoayPQZzd\\ni+Hs4fks/YKX01CGzwbHr50qxhXI4gUKDV3S0XKJGpQbuGg6hGCcUlIkabeLGPr8UBUjDhzckJia\\nxjugYRRCkVSE2ZMRVh4D77fWHNOGvs/Q2cdNaepE/PrjSHPJzEwVqnrkU414LuFAIMtUBCOv55HX\\n8zh3/Fy0vBamKlOYqk4R7kMMVtlwG9hb2Iu9hb2QBRlbMluwLbsNm9Ob1zTLgjBg4hhe4DG/qviG\\nn+d5CJoJ2BKi4Mgn/07UwoJHyOW6rDOYmRd6UDUVdacOXdJx+vDpSKmd5pHt20jICZw/cT5qTg1l\\nq0wsBCLCVyhbZci8jKTS7YPihR5qTo113QFS5FDRGlroqGKsyAHXtUYGUcD4Ko7vMGGYOMx72Bhm\\nnMkBYwBNt9mdSyICN2s4DQwagzgpfxJUUUXdraPpNtn7SYKEIAqw2lplSpPFVhGiQKBnpmsio2bY\\nZCSKItiB3VHBBCAJEjRZQ0pNMXsE0yeFHlWkpKIAVCiCfpYhGkiraViehTxHGnlJJcmU08IoRKFZ\\nQEbNMG5nvIlKfxqSgR25HXhk+RFYvoUwDPHAwgM4Y/gMiJHIeF1s4h7jD7P7l+PgpHbCXPglUv29\\nLw8bJJe8aF01MFq4UQW7uKn1gDaAklUiCmUBuYdma7PIall2z2TUTJf6qiEZ0CSt+zvQz2ojLQw5\\ngaakQag/DTGw1hzThr7TiXyy4XjeFzQAsLq6gosuOhef/OTfY8+e393wZygKSUA832NsRT876vy/\\nLMiQNRlZLcvUXeiiEz8+P/RRs2uo2YR3o0s6W4Djkwf6OfFFlucIFprjOMi5CNVqAPcI8M9LlRnY\\niVWIAk+Ie5KBgWAAO7I70HSaqDgVRIigSzqqdhV3z96Nbdlt2JbdhqpdxXKzQ+obSYzg7NGzUbEq\\nrFigpDrXd9kG2fItJocZREGnu+ETxRBa5FBBAjoZ0UWdkdODMGAqNHWnzja1VOdel3Tk9LWa8xk1\\nQ6QpOQGLjUVU7ApEXkRGyaDltvCLuV9A5EWk1BQ4cFhtraJslQmUwO8sTlEUoebU4AUek4ce0AYY\\nf4Z2Penny4IMQybdOyqtbMikcBtNjiKjZNgUxA3crqIEICTX5eYyqnYVAidgqjoFXdThBA7yep4V\\ndzktRzb07WkExQPHF9+smoUkSOxcUZ8A3uVZEhJ5Mh0CSPex4TTIZqANgQmbIc57zfvwd7e8Fxe/\\n4kUbvt94bQjK0FksATHVmPYmy/GdvipFNMIohMAJTNrZkA0m+a2JGoPrUUUdgRfQcBpdmGeAFLsU\\nLkDDz58Ktf40Qmt1w9+nagoY3Xz+CXnN51gcSS4JwwBvfvMluPrqPzkuuYTneALZicm8J+QETh0+\\nFacOnwo3cDFbm8VUZQoztZmuZpkbuHiy9CSeLD0JnuMxnhzHtuw2TKYmoUoqg9RIgsSm4XFFR5ET\\nwfEEihPIHuwGEPgbL2qaQQXL/pOQRQkJLgEtJM29MApRNstwIxeaqMELPPxy8ZcYT41je3Y7vNDD\\nYmOR5bqMmsELBl8A0zVRd+vsOL2A8GwkQerKJUEUMHsBKk3shUSdc6W1AgDMLJM2Dg3JgCoRbo/l\\nE85Lxa6gbJVZIRhFEePA9Kp5GZKB8eQ4VEHFQmMBRbPIrlUYhfjV6q8g8zLGkmMY0odYkdZyu02E\\noyhC02uiWq9CkzQC2W5PlpshQXrE+U5UJVOVVNZoy+pZDHJEnEATNdi+zaDN8UIkjEL4kY/F+iLm\\nG/MQOAFLjSUYsgHTNWFIBqp2FVW7imFjGBk1w9bUfgpyg/ogduR2YG9hLwBSDO4v7mfTIkTkvqKi\\nEBw4lheZb1vI4WVv+xiue/clx5RLADLNpzmUwd/WiQiEF1t36qwpacgGuzaKqLAiJiEnoEkaLM9a\\n05ymOdH2bQaj53kJyuj5iEr7jiif9PtOJ+Lw8Zw9U0eShK6//nosLS3irW99Hd761nfir/7qs/D9\\n9StiReGg6zwUpVsnPh4sEfU5BqrukkaamUC23BZaXquLrOyHPipWhY2zVVFl3QKagOJEzngIAodc\\njkPDdNBqhUCwvsTtT//rTnz5W7djoTqFr37hq8ioGWTUDJJKEkEYoNAqoOk00XAbmKpMoWyWoYgK\\nMmoGT5Wewv7V/WxqQI9zU5qMfUeSIwRa11qFF3pQBIWpvciCjPHUOBRBgemZaLgNmK7J1KjiG0wm\\ntxuf5LT/s3wLAi/A9V3oks5w5CIvIqtlmRJWvMtm+zZmqjOo2TU0vSbxZglDLLWW8MjyI7A9u2vB\\nVkSFwCLkJJt8UD8XjuMYZppO4qpmFWOpMeS0HBRRgS7pSMkpbEptwkSGYLAjRCiZJXb/KILCCL4R\\nIsgiMaGjymXxCYXt2eA5HiutFZgeUVdRRRWapBHFOYgomSWWUOOJg0bVqmKpsYQt6S3QRR0rrRWM\\nJkcJHjsXAEsAQtLhpNwfy7M63gSCjEFjEG//47djeXkVv/eOm/H2t1yKz9x6PeCU1r3feG0QYnIz\\neG0ITujCcVsMPvFMvjH0+YhAjFkNzUBWyzIMPr0vwoiQj7NalsH/LLu7Q8ZxHCPn0t8FSAGXUlKA\\nlkdgFuA3Zg6biP73fz6Ef7jj31CzRdx99/FzVj8RvxlxJLnk7//+73Hfff+F++9/HS655PX4/Oe/\\nBJ5fH64VzyW9DSv2+eDYprB32ioLMnbkdmBHbgciRFhqLGGqOoVDlUNdylRe4OHpytM4WD4IgPAh\\nt2a2YktmCwaMAQCdxsV6cuiy4KDWasK1BYjR+qabP/2vO/HNH38F7/vQuzCSGUFSTjKSeN0hE4qc\\nmsNScwkrzRXUnTpSSgpztTlMV6ZhyAZTnBIFEePJcbaGptU0imYRlm9BFmXIIiksBE4ghUZb8KXh\\nNJgyGN24x4MKqdBmG9Am14cBBF5A02mydT0IA4iCiEF9EHk9z65DnB9bbBVJcxIRmd6oWTScBgqt\\nAqpRlSl6LzWXIAsyg9pl1SwabgN1p87gtEP6EFHCbEtWF80idmV3Ec+UNuxX5EUklATyep7BaOt2\\nHbIgs7VeFVUimNDmHVGoX8trwfEc4kEDoOk1wXOE91q2y+zvdUmH67uQRRmFVgFhGEKXCWqE3ifM\\njDMMYPkWxhJjUHgFj60+RoRcBBEtvUWaYx6g8VpXToqHwAn47Oc+i/vu/yV+74GHcNnvvhRfvO3P\\nIWN9uFY8l3iRD9dtsinMMz2rVLHMDYjRpyzImEhNwPRMxkui9wrP8dic2cwK3ppdW5OrNJE8E3H4\\nocALGNQHCWpj+NwN55Ovf/9u3P7Fb0M9UcwcUTxnz9ZGk9A999yDL3/5y+x1V155OQYHZVxwwctw\\nzjkXYnR0HFde+WakUknwPJGyFMXu5NL1uevIQMZHrPGgcsaGZAAA29jX7NoaUhpVyyqhBF3WWaKI\\nQwnouLRmE3U1CpUSocDgchA5GRx4RAjhRy4Wi1N46x++DkEzABxg/qF5nH7J6Z3jE4haWMNpYKW1\\ngqScRNEs4mDlIArNAhu3LjYXkdfyeMHACzCZmmRdHIBA7zZlNqFqV9kGnqqiLDeXoYkaBo1OsgjC\\ngEGN4pKVdMJAI4gCVO0qmg5RfeE5nhUWuqQjpaZQNIsEQuCRc2f6JoqtIlbN1a4FVZPafjqigpHE\\nCIHMtac+AOk2LTWWUBJKyGk5pJQUhowhKALh+oi8CD/wUWwVSdeMl4kctCRD4iQM6APIa3kYioEI\\nEbvOFLdL8bdrfAe4DnQRAFOSq1qE27TcWoYqkinPeGIcEicRbksYQuIlNKQGkd1uw+DoPdp0mqg5\\nNSZ5mtfzeOHwC3GofIh0yhQOGAOwSO6p5eZy12RDkzQM6AO45+578NWvfJXd2294y3ugj52Pl73k\\nRXjJ2TswPjKAK9/0RiRTGUBQEKgDsNsdLLcxv+Y56Q3qAE6N5ySx/2ZLl3SmKkc3ZNRHIq5ME3+9\\nIRuwPKtLDlUSJCTlDoxFNEYgGiMIvSaC5iKiwEYU+uB4EZygolAD3vCuy+F55Dr++Mc/xqtf/epn\\n/F4n4tkTG80lhUIBH/nIR9jrzj//bIyPJ/Hud78Xup7F6Og4Lr74d7Bly+a+uaR3g9cvl8T5X72E\\nfw5ExXAsOYYLN12IVXMVT5aexFPlp9hkggbl3Ty09BAyagY7czuxPbcd46lx9hqKJKA+VvGptAAZ\\nGjLgIYKLeIQIEIQu/uAdb8F9994LuMApEztx/fXXdx0nJe5XLCJNnNfymK5NM8irHxHZ25SUwrbc\\nNuwaIFw/utnnOR7DiWEGO3MDl2yoo4BAtjnSxKIcwjgqgPJZ6SSHbtxpNF3CaanYBImgCiqKYhGa\\npGE8NY6aXYPt28zvByCNpYpT6Vq3FUFh/mrDiWEsN5ex3FpmzRg3cDFdncZ8fR6jiVEMJ4YxaAwy\\nkRjLs6BJGqaqU0QmPCKTcY4jQjApNQVDNCBwAipWhYk4xHm6CSnR1aShoUvE6wc6yWktr8V4smWr\\nTLg1goKUmsKAMYClxhJ8y4cmaQjCAFulrcxygQrE8OARRAHjIiaUBIYSQ3ik8AiZCPERMAlgvgN1\\njO+b6FSjUCjgIzd0np9zL3g1Mltfgfe8621IKzbGRwZw8cWvwubN28AJCkJtEB4voRk4cFvLz1jA\\n0GaeF3oMFQKAoQ9oGLKBrJpl15r+3nR1uquZTEMWCEeTKqfSEHmRKfEB5Nk9XD4JIeHi112Fn9/7\\nIADgBWd8GjfeeONhv9OJ6A4uOhJprWdRjI2NYWmJ+ITMz89jfHx8zWt838fZZ5+NvXvJiPT3fu/3\\n8K1vfQtBEEBVVfhtEoplWVDVbvxxX8Ouw2ja90b8tNOigI6D6Xu4gUs29G1CWnw0S4M6J1P+BfXU\\nWC8kQWKLbVpJQxEVXHPNNbjtttsAAGeccQYeeughJnUZD6oCUrEqCMIAjxYexZPlJ8GBY+pZY8kx\\nbM9ux0RqgkGZgO6CrmSVUDbLAIcuXfyEnMCQMdQ1zqffl3ZSLM9iZPtDlUOYq8+hbtfZ6NcNXIIR\\npio9bddomoSoPChV0KHE/36GYDIvM/gTnX5oIiku0moam1KbMJIYgeu7rIBcbCwS2er2/TCaHEVK\\nTgFcZwJjSKSooQplPMcTeJi49hhoxGVFTdeE6ZsomSXsK+yDxEvwQx9njp7JzlXdJtA7qkyW1/Pk\\nGslJVO1qZ4PDkeS3I78DkiBhtjaLJ1afwJvf/GaUy2XAA35x5y8wNtLRwE8pxOzT8zyc9aKz8Kt9\\nvwIAXH755fj2t77deX4CHxCBhcICOJFjBdHh7k+K9ebBM9Wy+NQyHnE4GfU+iKKoS+aaJnmaiKhn\\nBJWApgU/ACbOcaR45fjzc+aZZ+KXv/xllxnjiXh2x2tf+1r88Ic/BAB873vfw6WXXtr3dVdddRW+\\n8pWvAAB27dqFvXv3QlEUnHvuuXjwQbJJuffee/GSl7yk6/fWncps4D7sndhQ3hmFXtH1s+k2MV2d\\nxkx1BouNxQ5EmePXvNeQMYS8lkdWy/ZVn6RBOZZJhawrmqThS1/6Ev7gD/4AAJBMJXHo0CFkshm2\\nkQ0RMvW1uk0EVsIoxExlBr9a/RX8yGeb7kFtEJszmzGeHGdrI4MmtZWrWl4LZavcgZjx5DtJvIS8\\nlmeNIKCDZohP+xsuMTJeMVcwV5tjQiN8xDPZY0MmzcYIERNHobmNFj4UwpbVs6w52XudimaRTDqi\\nkBxLGx4u8RJGk6MYTY6SCYBroebUMF+bx1OVp9j9MZwYJtON9uQgpaSISqigwvSJKoLIi0hIhHO6\\nXtBrTyFqJasEx3fw8NLDMEQDbuhi98BuJJQE/NDHcmOZoSYQAZvSmxi3BAATG6AQuLyWhyzKKJpF\\nPLjwID76sY+S+98H/tdf/S+88XVv7BxLTLnvrVe9lTXHdu7aiX1793U/PyJw50/uxBlnnwEv9Lr2\\nSn3vT15gkGsKZY6v973nhMLJ6DQxiiLGbaYoCI7jmCIq9d2TBAkNp8EKQ4Dsswb1wS7xjo1E/PlJ\\npVKYmppCLpc7ovd4PsdztqCZmJjAwsICAGBubg4TE2uVOj7zmc/gj//4jwEAuq7jiSeewKZNm7C0\\ntISxMbKBGxgYwOpqZzx4JFOZw0Uvub9f0MWZ6ppTUYEVcwUNm6iu9HJwOI7r2nzTDTstYvoZES4v\\nL2Pbtm2wLNLR+eY3v4k3vOEN6x675VnYV9iHldYKbM/GbH0WpmdiLDlGCIwcgdRty27DgDYAURDX\\ndGWCMMCquco6T5T/Aw7IKBkipNAm09POWsNtoOk2UXfqmKnNEInmgCi/xM8Vff/e69TyWoxMyfGk\\nCBtNjCJv5DGokQlRRs0gq2Y7fjltXsdcfQ4LjYWuzTXF6ObVPIYTw4y0udhYhB/5cH3SPRxNjEIQ\\nBMi8zK55y2tBFVRoIiFzJpVkl9s3vZa99xYtCIMwwN7CXrS8FniOx2hiFJPpSQbdsj0bDbfBjMuo\\nb06xRZySqf9MUk1iS2YLI4vyHI+F+gLO+p2zUKqWAAW4/bbb8cqTX8lgdwmZwOL+9tN/iw984AMA\\nAE3T8Nhjj2FobAgzCzM45bRTAAHIZrP47/9ea74ZJ+zSgoQHDzckpqRHUsTEwws8do/0wsgGjAFk\\n1Awrenr9A+JiFUcSR/r8nIhnV1x22WX4/ve/DwD47ne/i8suu2zNa+6++2687GUvY3++88478du/\\n/dsAuptrMzMz2LSJTA/Wa4wdztyvX0QRUetzAodNfPu9pyIqhHMYBZipzuBQ5RAOlA6g4TQYpDWe\\nS6gy5ERqgkksU6n9lJLqkvql4fs+XvjCF+LAgQMACJz71ltvXXO8tAjzAg/T1WnM1ebgBi7hMjoV\\nDOqDSCkpCBCgyzo2pTchp+XYGtvb4a+7RPI4iiIGVaOcFwr5icNVKaSZmnrOVmfJ+fM9Bk9LyknG\\nZeyN+PrBczxkQcaAPoC0kiYFnpJk65QqqAAHtvYvN5cxV5+D7XUmw7TQy2k5jCZHGepirjaHokng\\nbE7oYDI1SURjwDPVMzsgDbekkkRKTrHNNvVD6/IX6sknhWYBlm9hvj6Pml1j13hXfhfbb9i+jUKz\\nQM5Lmxec03JMMS/OQUrICZZLJEFC3anj0j+8FPc/cD/AATf82Q14/xXvR0pJdRXUP//5z/Hyl7+c\\nHdeP//3HeMWeV8DxHew6eRdWiqQBd//997O9Gbv+7e8j8AKBtLfzAkV4HEkREw9qdE2LmrioT07L\\nYTJNkCg1u9YF76RQ7CN9joGNPT8nYv14XkDO+rk7Ly8v44YbbmB/vuGGG1iimZ/vQGHihdCxdNLi\\n70H14uPH2suxiT/spmcyuWAKRfNCj3WMegsigRMYeX5AG0BCSbCudL8YGRnBNddcg09+8pMAgBtv\\nvBGXX345BKF/d6FiV2DIBvIRUck6a/QsSLyEpytPY9VcZROJfYV9GDaGMZ4aR1bLMgI/7VCllTST\\n51xuLRM/Ao/AwqgngSEbbDpBu2tluwzTJQouvMAjqSSRVtMEM9xe5OlES+DI4uoEDjkvvEIWfy2J\\nnEY6H/T8WR5RZ2m6hDxK4XwU8zyeHMdScwmzVSK/7Pokoc2781hsLmIkMYLtue04feR0zNRmGMcm\\nCAMiBhEReeWG24DIiUSK1AugSioc3yEbhBhRsl8xwww23RYKrQKTlZ5ITTAlNPoepmuS4qc9qZmp\\nzsALCXTD8i1EiDAqj8L0TKL601bcGUmOQGgJQLteaHkt7FvZhz1b97Cu3NLSEm646QZAAiAA7//I\\n+yFkBZSsEp6ee5rIdAIYHR3tms5Rgqsqqkye1fItNk3pF89UxADo8GTaRQw14rQ8C6qkQpd0hFHI\\nsM+9xpr0ex1NHOnzcyKeXfFMucT3fVx99dXsz1dccQUrZjzPw/LyMnuf0dFRAMenMUYlfOPQKdqE\\nicNpKCQWIHCbhtOAyIsYTY4ir+ex0lrBQn0BC/WFLk4J9VVpeS3M1GYwkZrAjtwO5LQcm1r0hiiK\\nuPnmm/H7v//7AEjT8P3vfz9GRtZ6g4AjqmyUa1mza8hoGRiSgdnaLGm8CGRtfKr8FAb1QYwmR5nX\\nTNzHxJAMSJyEolUkm88wZDDV/av7kVSSyKpZ0jBqi4BEXITlxjIqVgUcOJIz25YLA/oAaWa1DXot\\nz4LjO7ADGzWrBoEToIukoON5HmmFQHerThVVp8qmRKqkQuIk6DJRiqRWBwPDAyhaRczV5piQDQAU\\nWgWstFaQ1/PYlNqEHdkd4HmemXMCQFpOM78TL/QguAJZ/5xml92AwJNGKBdxrLEVD9cn8OUwCrHS\\nWmEcWOqzk5ATGIqG4PgOcloOT5WfYsVB2SwzhTnKAUqpKbiBy8QI3MAludZOoi22Bi/wcN/8fTh/\\n4nymEuf7Pt77vveS3agIvOay1+DU809FySzB8z2slDpogqHhIbbnEXmRGVlTvhDlHB1tEQO0Ta99\\nYqsRgYjNyIKMklUCBw6aqCGMQizUFyALcldjTBEVxv86mtjI83Mi1o/nRUHTbwJy3XXXoV4nVfVJ\\nJ53EOs3A2oLmWJMPJcCtt2EDwBZanuNhezbKTpnBmOJdNzrNoGP5KIogCiJbyChpkIblW7B8QspX\\nRIU9zL0bw+uuuw6f//znUa/XsX//ftxxxx246qqrul4TRRFzE+Y44mg/lhxj8J2MlsF8fR5LjSWY\\npgld0lG2y3ii9ATp3LQnD5ZvoeE2iIpV+9q4gYu6W+/AksARwr7bREpJQRM1mL7JDDwBAgkb0Aew\\nJbMFWTXLCrekkmSGpQ2ngUKzAMcnJMiW24LIi9BkjTjKx4jofuiz6Qm9vpIgMe15OilLq2kAYHwg\\njuegCQRjPFWZwmhiFCklxbo2oiAir+ch8iLj5tBrlJSTCKOQqcmoosqubciFXfePF3qo2ATut9RY\\nYjC5rJplBSuVIgVACj0tjbJZJtC8tkJQQk4goSQYXr7ltdg0RxZkInkacUAZQA5ARDZGDy0+hNOG\\nT0OECO/7s/ehhRagAVu3bcXb3/F2dp/QbjQiYHx4nMko0/E/VSdqtBp9mwRAdxETl17ujSiKmIJP\\n73OeUlIYSYzA9EwGUajYFSJX2oYKUE+GY42NPD8n4tkZz5RLPve5z2Hfvn0AyKT/r//6r9m/LS0t\\nsd8ZGRmBKIrri8hsICi/0Au8dQU06JolcAL8iMBPKQ+Grp1x2NZIYoSoUo6djZbbQsWuYKW1gobT\\n6MolRbOIolnEffP3IaWksDWzFdtz2zGWHOs6/iuuuAKnn346Hn30UViWhU984hP4zGc+s+Y4y1YZ\\nJZOIh6iiinQ6TRS2PBNZLYtCs4D5+jxM34QmaShaRVQdorhFn18iSS1ZAAAgAElEQVTqn+NHBG4d\\n51HabmcCUjbLqFgVZNQMUkoKdmCj2CrCCRwmr69JGjanN7NpuciLSPJJBnNzPAdFq4icmiNTcN9G\\nEAVQRIXkl1ieDqOQGU9z4FCySuB5nk1NRE6ExEkYNAaRkBMomSXSdGsT/v3Ax0x9BkP6EMYT41gx\\nVxh8eCgxhKyWRdksY7G5yHI5lfsvW2WUrBJUQUVKTRFuIe8z5TqRFwEOqLt1IkxjlVjzTxZkDGgD\\nbBLDcRzjcOa0HKar04Rn5FRQskoY1AeZiST1Yqs5NVI4iGRqI4YiEZgZA+zAhumauGf2Hpw1ehZ0\\nScdtf38bHpt+DNAARVNw400d3shKYYUJKgzlh5DVs0xJlELJaBHTq15JYyNFDA3KK+p9RhNyAoP6\\nIGpOZxpTNIuwPIsJKKmiigF94Jglljf6/JyItfG8LGh+/vOf46tf/Sr782c/+1nIcoe/EC9oxifG\\nj6qY6eXF9As6haGmkHQCQ0nK/X4viiKmMEYX5zhJLc67iZOdATDcMPW7oQ+4JmrI5/P4wAc+gJtu\\nugkAcNNNN+HKK69k5yWKIszX55kZJUBUPaizc8WuYLY2i7pdR8kqYa42x7pvlBNBXevpAslwyFEE\\nhVMwIA7A9m3U7Tq80GP+ATx4RGGEIX0IE8kJNuIeSY5gU7pjINl7TUpmiSRljsAWeI7HzvxOqKLK\\npDwd32EKc17owQ/8LoW1IAwQhAEqVoVBMug4f0AbgA+fQAc4cu5DhJiuTTMZ5IyaQU7KodAqYDI1\\nCUmQMJIYge0TFTXaURUgsCRIPW5ErtOBogpInk+w8YVWAUk5CYmXsDO3sy+UkONIN8kOiHR0Rs0g\\nCAOk1BS2pLewKR8jSwYe5upzcDwHkRIRB/F6B+ZGMeD2rI3vfOc77HP+/OY/hyyTYkURFVSXq0AT\\nQABsH9nO5LEpfMEP/DXHSZ+HjRQxNCikoLdRoIgKknKyUzQqSbTcFvN6AAhkJKtlj0sxA+AZn58T\\n8eyNw+WSpaWlLuLujTfeiMnJSfbn45FL1je97ASFPfEcz1Sa6k6dSRD3CgjQv5N4CSk5RWCvcrKr\\n0dVwGkwxbb4+3/XZdaeORwuP4tHCo1AEpeN30/bu+vjHP47Xvva1AIDbb78dH/rQhxgCAiBrc5xA\\nrYoqk3TmOZ414EaTo5itzWKxsQgepJFXskrIqlkMG8NQRDLtlTmZTKYQQgkVZiZZtIqwXAsRR75/\\nySxhujrdkQ8G2chnjSwmk5MQBZFwVCKyHlIOnuVbaDgNBqVSRAXjqXEk5ARDBNCGWcttwQ1d1iCj\\nhQgtnCy3M20ReIHxTtyQ5G43JBtzCRIKrQKWW8tE5EWQkFWzZO1XiCDQtuw2JiQQRAHz1qL3y0pr\\nBSutFeiizqBwtHip2aTwKDQLLH+MJ8fX5X1oksYEGYbFYXZuhvQh2IHNlEUVKMxgs+bUYCkWmfZX\\nATu0GXxrubmMSWkSt/51B1L1gWs/wCBlsiCjulIFLAABsHn3ZqTVNLzAI2JAbrMLtkeDFmIbLWIA\\ncq1bXmuNKE+cJwOAqco9VX6KGLqCIFY4jghyHA+/GJ7nn/H5ORH943lX0Hie1wUPeMMb3oCLLrqo\\n63dZEuKwRkzgcA8GHfVTJ+b1josDx3D+NafGnHPX+w6Uk0J5MHFVs94HSBZk5LQcclqOTBvcjrJL\\nr98NnQpQH5R3XP0OfOazn0G5VMb09DRu/8LtePPb3oyaU8PB0kEUzSKTfeTBdxEugQ7m1AkcDBqD\\nUCUVNbtGvAJ4CTW7RozCNGIKmZSTGDKGGLmRFleqqJKJjVNn5mSUT8NxHBRewViKQMB6zz/QES+I\\nm2HKooxBjWCpKRGTqnnxyY6zL+WgmJ6JhtNA2S6j6XRknSnpXhBIoabyxMDR8i2smqtM714RiGPw\\nTG0GQ8YQJpOTcH0XeT1P5IKVBLJqFhEiWJ7F3IgpjIQWw3DBJnJ0477SWmGQLQqR6L2/6Fh+tj7L\\nRA1s30Zez2M0MQpVUpGX8qyAqtk1LNQX2PcP1IAkIQ9ISkkGU7FdGx+/7eMEauYDr/md1+CSV10C\\nTdRYEVJaLBGZTh4YGB/ASmulq+iIwyR74WQbSQjUKbuXLyDyIpJKco3AA51uaZKGlku6b1R+tO7U\\nkZATRw0RiMe1116Lz372syiVSpiensY//dM/4T3vec8xv++J+PXG4Qqa3kn/tdde2/Xv8VzSy+N8\\nplwSJ/f3Pa62yhR9HijBfU3RFFNGoxs9yoOJr+G9x5NUkjht+DScNnwaU+Y6VDmE6ep0VzfcCRwc\\nKB3AgdIBCJyAidQEtr5oK8556Tl48N4H4bouPnbzx/D52z+PICLT5bJVJs2iKGBeKnElNk3SECKE\\nG7jYnN6MlJJCoVlAy2sxHk3NqWHYGEZSTrIGncALzOfEUMjaSBXR6k4dK60VeIEHO7AhOALSehrj\\nxjhGkiMdf5V2YUSvA1V4o4WAKIhIK2m2UaYmvhRlIfACPJ8UFHZA1DUbboMZXoZRyHJJEJK9QiSS\\n5lZKTcH2bAb148AxwYGKXYEqqphITSCMQmxKb2IqqSOJEbavoMailOPC3O69FmuEUUEAy7NgeiZS\\ncgoCJ2Ak0Q1tit/7lmeBA4dBYxArrRXIIlH34jgO2zLbYAc2a6bGjaIDIQAM8gzovI6KXWEF+Ef/\\n6aMwIxOQga2TW3HNH16DrJZluaBaqAI+AB4Y2jyE2dpsF5wsnks4jnjOJeUkEsrG1vT4niUeNOfG\\n91r0frB8CyklRdTzApe9brGxSJRP14FFH0lccsklOO+883DffffBdV3cfPPN+MIXvnDM7/tcj+dd\\nQfO5z30Ov/oVUWUyDKMLHkBjbn6OecjQJHS4ThrlhRzOuIlqytcdMv4/nBYDHZvTIoaprKwzsen9\\nvjREXiTvoabZOJguOLTrRzfS9OeeD+zBv3z7XwABuOFfbwDOBBp+txlhQk7AUIw1xwCAmV023AZS\\nSgp5Lc+8AGRBRlbNQpd1TCQnMJGagMATZ+K4Cy9ACq5Cs0A4ERzYRAMAWn4LlmsR8y/FYCREgGx2\\nqYs93WBTiWH6/r0iCnFPB6rjL3ESw1V7msfMuejGmOM4+IHPOCm6pGNzejOKZhHLDWJ6Sf1bDhQP\\n4InVJ6CLOk4ZOgVbs1sxqA8ylRyBF4iAAy91MOwhwEc8+86O56Du1cGDFEkJMYEgDDCWGCNEWL6b\\ncxNGIWaqM0yBRpd0ZLUssirBLZuuCcd3IPIiM0WlHckgDCD6ItBe4/NqHmpWxZPFJ/GfP/tPLC4v\\nAgOAUlTwt3/xt6y7F0QBgiDA1OIUS2ADowNrJig8x0ORFKYOtNGuFpWR7Z088hzPJn/9fqfu1Fn3\\nkHKOqAoZNbJNyIl1/Tc2GqlUCtdffz2uu+46AMDHP/5xvO1tb4Omre/ZcSJ+82O9XPLzn/8cd9xx\\nB/vzbbfdtmYiNzd3ZLmkHy+m61hAGioU4990m+sWPPT1VNKcQnHptLc3n1BVSAprjocsyNiV34Vd\\n+V0IwgCLjUUcqhzCocohls/CKIQXeXiy9CT2F/fjtHechgftB4Ea8MV/+yKu2ncVksNJpu4IAJqs\\nYUgf6uLZ0VxKp0dVuwpd1DGRnkCxVUTDIWI4mqhh1VyFG7iYTE8S1UyecFviUwZd1JnEvyzKRNo9\\nIvyWhERUw/zAR0IhsF06SYkQEX4Nz7ENssRLjItDgxZAUdgW+gmISI0kSJBFGZpAvFdchZgWe4HH\\nFDvBEUGA+DVXJRXj0jiaTpN49bRWIPIEVj5bm8VsbRYiL2J3fjfOGD2DcVElQWITiSAMmP2D6ZlM\\nCdMPfdSdOoqtIkKEKJklyALx7hlPdaYzvfen6ZmskKANINMzieqmZ2KuPoeclgMPnnFbQj+E6xMu\\nKzVpTvJJnDx4Mvat7MP+p/bjgUceAEYAzAGf+sSnYGhEZS30yf15YPYAkAYgALnx3BpuDMdxxJRa\\n2tgkJn7N4jyZ+PNCBZV6z0EYhaxRKgkSho1hJjMOkGd3qbnEbB2OJTiOwy233II9e/YAIOpn119/\\nPXbu3HlM7/tcj+dVQdMPHhDvmtExfC+Hpt9D0o/cHw/Ls1jX7HCEZ3qsCTnBJjDrdYzji35v9G7S\\nAfKANZwGw0/Tn3WnjopdQc2uwQmcrmPb/eLdSNybQLPRRM2r4Vt3fQsvPvfFkASJFB8ySYp+6HfJ\\ndiakjnwn5bLYPsEpB2GAklViyUfkRdTdOg6WD2I0Mcq6YLSIc30XFbtCzn9qAoqoQOQIFEASJKTl\\nNNzIxUx9Bjkth5HECGRRhuVaKNtlAqNqb1gzagZpNb1uERP/+zAMGZ8kiiJW0NBCLK2mGQmQJiYq\\nYkB5IVk1i4SUIFh0h8A+gpB4JBRRxGJrEdsq27ArvwtZtYMHpl1KuvkIwqDL4ZgWOmW7jLpdhy/7\\n0EKSKCnxk173IAwwXZ1mI3GAjMqzahar5iqZeLULVCphCoBBKXJaDpIlAe26ISWnsGNwByRbwnXf\\nuY50zCTg8msvh5fwsNJc6fLFmC5MExJoBIyOjbJzropq1ySn373cT4rzcDwZQzbYJq034sUMjZRK\\nJLotz2K+GhEiNNwG4y8dS1x99dX4m7/5GywtLWFxcRF/93d/hw9+8IPH9J4n4tcb/XJJ76T/jW98\\nI171qld1vS5ChPmFGORsfLxvMfNMvBi6+aUd9V6TyN7QRK2zFrenFr1BjZ/jAgLxY6ek83gTiHb7\\ngzBASknhhUMvxO6B3VhprWCqMoXZ2ixKVsdQd3LLJLaeuhVTU1OIEOE9X3gP3vnmd2I4NYy8mide\\nalKSPNeICPyLTjkEQtwXZcI/9EKPOdbXnTqWGktMdKXltnCwdBAjiRHk9TzcwIUiENiZF3ooNAvw\\nQg+DBlFOq1gVKKLCSPqyIMMKLIg+8Q1RRAWu76JslSGLMqSIeHipksoEb+IwPqqaFg8GEQ49UiS2\\n/6OCKLJApJ+pwI/rk3xiBcQjh67JW8QtzN+kYlcgCzKWG8uIEGHVXMVMbQanDp2KkeQIdEln+YTm\\nkrSSZvsA6ktneiZChLBcCwv1BeT0HCzPwkRqAnWnzgRiqJBEvJgBSKM0r+URRAFrhEWIUDbLyOlE\\naEcRFZZLDM8gEGQB0AUdW7NbMaQO4ba/vI3kEhE48/IzkT4pjZnKDFOEC6MQ+5f3E6RACAwPD7Nz\\nSycx8SJmI7kEIM1RKoYQD3rP9HtewijEamu1q7FLm8Utt4WiWWRNgpJZguVZR610RuO3fuu3sGfP\\nHtx1110IggAf/ehH8bWvfe2o3+/5EM/Jgsb3I7ztbe+FphkwjAQkKYtGI8Bf/uX/RKNBukO7d+/G\\n+9//fvY7ceI/K2giYNNkB7dIH7J+3S03IF4ktIg5XAEDgLkep5U0UyTZaKwpWHqLlh4CaL+IIqLe\\nYcCA67tMp53jOVz48gvx43//MSAB9z9wP8570XlIqIREvi27DYPGIIaMob4d8XioIpFxXG2tMhGB\\nxcYikU8OiW/AQmMBLbeFsdQY8QNod6MojKDhNJBRM9ic2UwWY58ooVHlrpJVIp03QSZdrLbssSQQ\\nM0tN0voubF0dwZAkxfh1Y7LCbcUYVVQZZEMRFShUAkzrYNxrTo0ZgNJuW82pYf/qfsaN8gMf09Vp\\n1OwadEnHUGIIgxpJorIoE16SZDCJ1YyaYUWHxEtYba4yieMhY4gUzF6TbcZlQcZcfY6p8nihh7RK\\nkhr1x6GJuOaQ7p0u6iwBjSfHkeQFvO/1r4GhCEgYGk5LKTCCFv7qn78Gb9YDhoh62cv2vAx3z9yN\\nk/InsdG8LMhYXFlkBc3E2AQ7f/3u8X4qffHrtVGeTG/QTmR8gpmUk2wKQzlcTbfJEpvt2/BD/5gg\\naLqu4yMf+Qjb7N56661417vehWTy6CShT8SvN3w/wsUXvx7nnvtbMIwEduw4A41GgK9//atdk/5P\\nfepT7HcOl0viE9T1eDG0u06L7rhhYr+QBZn5gMXv8Y0ExxEFrDAMmXM6VYqkXMIgCtb1N4uiCCkl\\nhVOHT8UpQ6eg4TTYFGG5uYwLX3khpuamABF4fOpx/OLgLzA0QGDGpwydAp7jsSW95RlzicALGDaG\\n0XAb7Fleaa2gbJcRIoQIkfmpTKaJtPFqaxWmb7KmlBd40DQNuwd2g+M4Nr3wI2KdQJuPmqSx6ToV\\n6knICUZ8jxB17QHo9ab+On5AJmjMIoDreIhR+BhA0ARUUp+6zFMJbiqjTSX4N6U2oeW3cKh8CHWn\\nztbE5eYyQoQ4UD6AIWMII8YIVIkUTDJPFCVlkfykqID52jwRWWgVmViPJmmwAgtPV55mfBtaDFG5\\naSdwEIEgH6IoYkpv1YDIZdfdOsCBTGooZCsKceUrzsOrT92GhKHh3JN2YhMP/NOPf4qlB5aAcUAy\\nJFxy6SX4xfwvsCm1icnnK4KC+dV5sksNgeFRAi/MaBnGF+u9l+k5jN+f9O83ypPpDWoxEYc4UyEA\\nAEwFbaW1wgoe0zOxUF84ZgjaLbfcgrvuugsA8PWvfx1/+qd/ilNPPfWo3++5Hs8ZH5ooiuA4EVqt\\nEK67/lf62c/+A1/+8u348If/GHv27FmjYBaGIXRdh+eSm7der0MztDVFDN0wUdULN3CZUVa/kAUZ\\naTXNiPz9jBx7o9epufdn3Lm5d3GN/x3HcWtIoUAHqhOfsGiiBsd18Jo3vYbJJV755itx9duuZupe\\n9Hd1WWfEu7jhGZPlRAe/bfkWCs0C3IBMXwrNAnN1FziBQLlEjcnnCpwARVKQUTIs2VEpyZbbwmJj\\nEQ23Add3UbWrbAw8ZAwhp+cwqA+yTfR6m9MwDBlXph8fg2LM+3VoezupbkBIoByIjKciKMS0zCxh\\nxVxBqVUivjE+gfspogJN0BAhgiZpGEuOIa/n2bFS8zaaPGyfEPv3FfbBkA1EUYRzxs9h/x6EAZNX\\n9QKPjP0FBSNJ0rXsva+mq9PwAo9MZQQFY4lRjCsqgvoMQrvY93wBwE/ueRj/8L1/w8mvvxBbd20j\\n0BBBwskDJzPpzJe++KUIrADwgOlD08in8+x+p3LUvQax8XMLtP1kvOaGeTLxoJyC9YqZ3s9sus0u\\niA8H7pggaK7r4qSTTsL09DQA4Oabb+6SiD8Rv9lxpLlkz54L8eEPfxjAWmn/l7zkJbj/vvvbr/8Z\\nzr/g/DW8GDplaLpNcs/7HkRBXHfdEjiBFS8pJbXhDVO/YoX9P/VoiU0e1jTwuM4zyv4+tg7SAoD+\\nDIIAS80lvPuj78Zjs48BArB9x3a86Yo3dcmkC5yAseQYtmS3YEt6C8sncSPp+J/9wEfVIWt+020S\\n7l9gM5VHKtmfkBKMIC7xxOiQThBEXoQmEWnhleYKUxNteURMh3qNUINRVVTXXbPoefACj6zTvtf1\\n7+DATJwBdOXieL6m35NOw6jUssRL8EIiqlKxK2g6TTyw+ACKZpEUFryAnJZDBCJYM6gPYtAYZJYF\\nVMSG5tqSSeSHHys+BkVUEEURduR2ICknWXFHOay04KJQtn5QqpXWCppeEzJPpl2jxggGBMDfYC4R\\nzxrGiy88jxV427PbCUoBAa774HU4sPcA4AJf+9LX8MoLXsngYAInsPPa+6zEcwm1BujHk6HNw/XC\\nD/0uMRkA68qWR1HEuFo0OI47ZgjapZdeih/84AcAiCfWd7/73aN+r+d6PCcKmjCMUK0GcJyNfxVF\\n4ZBO8+jNGasrq0TzmwPS2TQKhQL5jChkY9u6UyeEPY6DAKFvEUM3xLSI6SWX0fekrvf9ipY4ZKi3\\n8IpvrHs7EjQo2Z/CwKjpFi1i+uFEvcDDTHUG3/rut/Cxmz4GiASD/H9+8n+QSpGHMl60MGnHtuLZ\\n4fxuqFpW2SrDCzwsN5dRtaqMHxNERKFlJDFCOlYckQtOq2kMaAPIaJnua9VaxeOrj6PpNFmCVSVC\\nmqR+BfR46eSGfl/TNdcQy2lyoDLR8c5av+8ST/70WlGVHqAjvEDDCRystFaw1Fgifj1KipF6vdAj\\najt6Fjk114Vlpt24peYSbN+GIRnI63mMJ8eZwZsXEEWbeEdqJDmCYWMYuqQzNSAePOou4eI03SaZ\\nSEgaRtwiRLfW97r1C1PQ8LN6EVa7kJMECacPn46wFeKMM84AOOIUvnffXgA95H9BYfdPfNMCAH7g\\nd/Fk4gpo6/Fk4kFV/uLFDD3Ph4s4BI3GsUDQTjg+PzvjaHKJJEXIZsU1uYQDh8lNk1hYXAAE4JG9\\nj2Dr1q1svYh7SsULgd6gGy/Kg+m3bgM4bLES35DFi5TeiUP833pzC88TfgQtHOj/966t8c9Zai5h\\n7+N78Za3vAXQAKjAhz/6YQyND63NI+2fw8YwtmW3YVt225pmTDxabgtVu8rMMVdaK2i4DaZ8JfIi\\nRhIjyGgZpJU0JEFiTbNeU9CG08DB8kHiU9X+7iIvYkAfwFhyrMt0t9cjLIwIVyR+jul7MM8brLV+\\n6Dr/Md+cOPSQqqohAkzfZIppbuBirjaHpeYSlhpLTCAmiAh8MQojZPUs8moesthp/tB7jvJr8loe\\nqqhiW3Ybqk4Vpmsy1TbKzQQIjJFuzKlEsSZpTOp51VxF022CjyIM2MtQ/f5CR/2iwcm4q7aMalt8\\nBxxwyuApmExP4uUvfzlWVlcAHvjeD76HiYkJwpsRDdZQpU3L+FQN6DQs6brO8vlheDLx8AIPq+Zq\\nFzogr+efMSfEIWg0DNk4an+aRx99lOTUdtx///0499xzj/h9ng/xrC9owjBCuRzA8478a4gikM3x\\n4PnOTf3gQw/ivPPOAwDsPm03fvSTHzEifxiFxJEe/Jobk+d4NqZNq2kYkoEIEYMy9StaKCdgI4VK\\nv+BACHGsSJFjHBZp7aLNfq9PEgHaxUxthhDDgwCXXXYZpvdOAw5w/Z9cjxtvvpF1EnvHtvGgRoXr\\ndT/cwEWhWUDVqWKhtoDFxiK80OtaJHVJR07Lse7agD6ArJZlnb2W20LJKiEMQ8JPMYsd/5YoJAWp\\nmsawMdzVzXcDFy2ntYZIS4UYDifj2w8eRY/F8qwOqbNdvFbtKvyATG1EgXTOilaR+d8UrSKCIGB8\\nHIqjB4C8lkdOzxH+TVtp7Verv4LEE6nrrdmtSMgJyIIMP/Cx0FiAFxD4isAJGEoOYVgfZot+UklC\\n5ETYvk1EFNoYbx4hcs1ZCEeQgGh4gob7HBtRu6jnOR7RcoSLL7oYEICTdp+Eu+66a003l8o70wKH\\n53giZ+oTnkAv3+lwPJl40I4tDXpNNwrn9EO/C4IGgKknHWki6nV8/pM/+RP8xV/8xRG9x4n4fxvH\\nM5cEYQDbtZHJZ4gZpwA89tRj8HgPTYcQ+QVeYJuw3qDPbJwnQAuTfsUKleztKkr6TVr6cHRosKKK\\n6/xkJs/roA84jkwAeicpALBYX2TTkmuvvRb/9u1/Ayzgoosuwh3fuYOJChTN9bv4aSXNipvR5Ghf\\nN/eqXUXVqmK2Noup6hRsn0xrVFFFUkpiMDGIEWOErAMcGIFcFVVwHCkOKlaFNS1XzVUmLkC+JLke\\nvTBrWnz049FSL6B+Ex16DfrB1/zAZ/L/URRBEiRWANu+zZpAKSVFfIEsMqWp2BWInEiUxdrWA25I\\nlDkzWgZ5LU8g3s0FOL6Dg6WDEAUigDCsDyOn5yDzRHqfQadDDyFCqCLhDmmSxhAZGZUUiYZiMNW5\\n5cYCkvWnIAdrpZSfKVxBxX9ZNjyEbEq1PbMdp550KkKB5PNHH30UgiR02SoAgCqozISbQtGouEZv\\nKIKyIQU0N3Cx2lpl15bjOOS1/DM21GjQBmOccyPy4lFD0N70pjfhG9/4BgDy/PzHf/zHEb/H8yGe\\n1QVNFEWoVI6sm9Ybsgwk00CEELZv419+8C945/veCcjAueefi09+8pNd4+54UNwl9ZKJFy8U59oL\\n/9pIoUKDA0eIk218NIWF0QmLLulrcaQ9kK9+f9dv8mD7NmZrs6xQ4cDhwbsexFVXEnNAXdfx9NNP\\nM8daakDVdJvruvICnQ0hlWSmRUHdqWOhvoCSVYIXeCiZJbT8Fum4tA04/cjHWGKsK5FJvARw6Oqa\\n8ByPrJpF3a2jZJZYEg+iABw4ZDVC6Dc9s0u3nrkqqykkpATrRtHod53iXTk/JB40rDBtE0d5jmdy\\nmPQzBo1BojQT+JiqTrEFWRVUgAPm6/NwAxdUXtXyCQdG4AXw4Mlkp7VEcNGigq2ZrYRMHBHSK50u\\nibyIYWOYYaNFgXSsbI8QIakSDjHG2wK5sh+hvbru9XumCJUs7rct+O3r8cD9D+DG/+9GwAEu+t2L\\n8M1//SZTuWNY8x5FQLopozwoSqDVJYLlXk95Jx62b3fJn9NJ25EWIhT+czwgaN/85jeZ43Pv83Mi\\nfrPieOQSSQb0pI8gIpvSg7MHcf7LzgcUMu3//g++z4oFpqbVDlVUoYs6cZQXCRSVPhe02UFFaHoL\\nFfpMPVPQSQr9fGoeSYuX3uerF/JFThS68mE8l9DXBGGAhcZCV16oLFZw/hnnk+IOwE9/+lO84hWv\\nAEA8baYqU3i68jQW6gvrFl2qqGJrZiu2Zrdic3ozex6rdhVztTlU7Ao8n4gH1Jwakf8VFIg8EZQZ\\nTYx25RL6szd/JeUkLN9CySwxCwbq15VUkqTRBq7b8LpdaFCY8EZyCT1v9N+DMGA8lTAKibkx12m0\\ncCC5U5d1yLyMCBGeLj+NptcEIpJrs2oWi81FIrHcfm/H7xh8RlGEptfEbG0WhtyRXKbHYAc2wjCE\\nLMqM88ODZ81cCmOjuSUhJzCgD2A0MQKx/Pgx5RKoedxvW2i10Q7lUhlXXXwV0CBqmY8ffJzBgynX\\niBb38evAcRxkXmZwcYEjKqJpNc2aB4fLJY7vYNVc7ZryD+qDR1yIHE8I2oEDB3DyySf3fX5ORCee\\n1QWNbYeoVA5Pvt9INPlFFF3STfrOd7+DT//NpwEAl7zmEhMzbncAACAASURBVFz7wWth+UQiOIgC\\nICIyi0EYwA7sDva4p3DZaNBNG1WkoROWXgWP9bgp/QqVfnG447I8C3P1ObbJ5jkek6lJaKKGs846\\nC48++igA4JprrunrWEsX3JbbWuN3Ew+qPU+VzmjXsWyXyXeIgAPlA2i5LUgCIcQbksG8VqIoQtku\\nw/VdxklKKkkM6oMsudm+jUKzgJpN4FNeSDqiTuAwM1KaiOn5Zso6fZJ6L5yPTlGoT4HlWWwzQeUq\\nefCoO3W2EVcFFbqss/eyPAuLzUX2voP6IFRBxVx9DlOVKTS8BiuQKBek0Cwgp+egCAom05PMrHKp\\nucQ+P4oiIoQga6x7aPnEg8H1XGbipggK8kYeeYTYgW6Y1dFEkDsFD5QOwQ99/OCHP8DnPvM5YAl4\\nx/94B/7xH/8RQMfjhxLvAZI46k69a2MgcAIMxUBey8OQjDWbp373OC0e2XscZTHT+57HCkELw7Dr\\n+fmjP/ojfPrTnz7qYzoR//fieOaSil+A7dt4/PHH8Z4/fA8QATt37sQdX76DkMYjn/h4iRojrHM8\\n1zVh6Vf4P1PEC5au/2//jMM349OUOPRzTQHTJ+gx9osgCrBYX+xqCAwag8ioGbz97W/HF7/4RQCE\\nW3TPPfeseZ4d3+nyu1lPvprybpJyElktC10i62vLa0EWiD/KdG0aFavSRerXJR2jyVFiLeA0YPom\\n81Sj0vZ0ou8FHlZbq6jaVVZE+gHZRKeUFHJaBxpMeSo83zmn60GV1/x/+2WUgE/+qgM1q9k1wm1B\\nxDbn9Hi8wMNTlafIPiQCMloGw8YwFpuLmKpMERPLdq6qOTX4gY+6XSdoEjWNvJrHUGIIAMmddMPs\\nRz7jp3AcB9d3SQPTaSLiCOyNThdlQUaei3CmvHFho/WCHzgd95WeRtNt4sCBA/jQBz8EFIAzt5+J\\nhx9+GEAHVkyhyVEUkem81220SXP8oD6ItJpmzcV+DQUatm8zbhJAnpVBY3BDnOf14nhB0Dby/Dzf\\n41ld0JRK/mFJmxuNqreCh6s/g+VZ+MZ3voGf/PQngARc8MoLsOfle5jZ4zPh8PuFJmnrTlhoFz2O\\n7eyFgR3Os+BoI37JTc/EbG2WPWwCL2BTehPbuP3whz9kjrWyLOPgwYOHdaylHW7qaxN/iOkiRHke\\nqqgiq2UxkZpAFEUMw1yxKyiaRRiSwaYrlmsxLxsaqqhiNDmKvJ7v4ihFUYSqVcVT5adYMqLnVeAF\\njCfHSVLr03Gn5mk0sdMixvXdNTC1uJqZJBDPBEmQGME0iiIGD+gVFlhoLDCyoR/6GE2OMoJ/0Sxi\\nsbGIqlOF5Vmo2TUUWgWklBRGE6N4/e7XQxVVHCwdJBLSbYgCdc6mRRfl7NCCjqqsKaKCCBFekchg\\nRDp2J3teG4SbfQF+ufhL/MMX/oGMxiPg+rdej1s/euua1zu+g6JZRM2usfNH7xMKO6TXQuZlZrpJ\\nrwuFzAFgLtk0KHfteDwzxwOCdqTPz4n49cTxyiXNoIxD9iMIwgD33nsvPnHLJwAeOOfcc3DLx26B\\nLpEJzNEITnRNVPoULHQz3a9Q6YWDHY/o5dn4oY/5+jy8wGPr7UhyhHWjp6ensWvXLngeeeZ/9KMf\\n4dWvfvW67x+EAebr8wyaxjy6QDaecUn2AX0A2zLbcM74ORhODKPQLBDRHruGpeZSFzw7DEMIvNAF\\nL5Z4CXktj6SS7OrERxExPl6oL6DqVBmHhebtvJbHsDEMQeij4NjO3fFzHude9p7LuBy3zJPiyPI6\\nZPYojLrgUvR9lppLOFQ+xNb9+Dmv2TUsNAgSomJV4AYu5mvzyGpZZJQMLtp+EcaT46jZNcLFjDz4\\ngc94UkHUgUQ7gQPHc5hJJzXN9kMfr81vwmY1gWMNXhsEN3AG7pu/D//+03/HrbeS/LHnhXvwk2//\\nZM3radFZtsvk/ojAcqrES8ygkwPh+eqSzrzyRF6ELMpd8tQlsyM7LvBCV7P0WOJ4QNCO9Pl5PoZw\\n00033fTrPoijCd+P0GhsvHt1uFAFAz+Z/REWWwt4ZN8jWCmsAC5wwYsuwO5tu/tKBLLfbW/KRxIj\\nmExPYkduB04eOhlnjZyF8ybOwxkjZ+AFAy/A9tx2TKYnMZwYRlbLwpCMbqlhPoZXjnWj/29U4PR9\\nW24Lc/W5TjHDCdic2dxFltu5cyfuvPNOzM/PIwgCNBoNXHrppYd9b8qhyapZJptcaBVgumbX66ge\\nP/XFoV0pkRcxmiT+JU23ibJVJjKY7fGyIAhIq2lktSyCiCjBOYHD5DDrTh2mbxIyvKAwrx1VUpFW\\n0gBH+BrUgyAeFOpBpwl20JGI7i1Kgihgo21DNiCLcpfGfYQIaTUNnuNhezaaXpMlWYB0zNzARQTS\\nYUopKfA8kbscS4yRxRgclpvLDLI3YAygZJVwsHyQTQwM2cApg6dgJDkCQzKYJHHDbTAyvsiLhJek\\n5sDxHOQowFn6sScgAIh8E3p6KwYTY/jyt76MQ1OHAA548Z4X45xTz2EFCu2gNt0mk/XUJR2SIDHx\\nClVSu2F9EZFApeIH8aKSdujo66nE9vF6ZuhEMe43RSW01yNw90bv89NsNg/7/JyI//dxPHOJzGuY\\nau6HHZrYt3cfHr7vYcACXnrWS3HJqy4hhfk69w2DLIkymxgYkoG0mkZOy5HmTlvmP6WkmN+XIROC\\nNC38qaIVXUtpXjneuYTlKHDwQg9ztbku+M9wgkBf6cY+k8mgUCjgwQcfBAA88cQTeOc737nucfEc\\nj4yawdbsVpw1eha2ZrcSH5bmMumix4oCqqT5RPEJ7C/uh+3bhEMjJzFgkE44XX+bbfK56ZpMwSuj\\nZhifhvJ+eI5ninQUEugHPrzIAweSv0IQYR+BE/oK/9B8wooYDgC3Fk3BoN5tTpLAC8xAlRaMuqwz\\nERlqqlp3CZyJ+hTxHA/Hd8ikiSc2ACOJEaiCyiBQqqiSe0hNkfzSWibS32qSTe+zWpbJP1MLAUmQ\\nCOexbeIsiWR6oyHChenho7+R4ufLN6GkNmE8swU/+umP8MBDDwAAdp+9GxecdwEyakcYyPYJ3Jvn\\nebbfUESFoV40SWOm21QswfRNVO0qWm6L5JP22t5wGiiZJfac0GLjeBQzAJiHXxiFrEANoxBNj+TC\\njRQ1R/r8PB/jWetDY1nHJwHROHf4AjzZeBR22WYO6elMmvld0AkL5Vuk1BSTgu0HA/tNj4bTwHx9\\nniUFkRexOb2ZPVhx/OjROtZS4nkQBRhNjDJTLy/0mNY/QBamhhtzjxY15jsAALO1WZJUBFI8KrzC\\nBA/ocTadJuOSUFlsinnOa3lEIMRJP+zIUi42FslI2hiEyIlwAod5MXR9D3RU0qj0ZRiGrLNDpzpe\\n4DEjTcd3wPM8imaRcGN6VOEAAsVYbCyy4sj0TEymJqFKJPkoEjEmq9gV5mqsiRqWm8RYrWyVkVWz\\nOG/iPOgymajJoowQIVqtFmReRsgT9+/hxDBUQWXdtsGgBUQmjlc49TkkcrthH7KJK7QA5AZyeHjp\\nYZw5ciZ0SV8z7QAI5HLIGILAC+y60GIyiIIuQrMTECw4NYijiUAWyBRnI8IBRxr0HjpaI87e5+eL\\nX/wirrvuuhOOz79Bcbxzyc7UKXD4Kn648kNiThsBw0PDTBwkzluhviS0+OgHB/tNzyde6GGxsUh4\\nH+1jHU2MsglIGIWMe/Nnf/Zn+Od//mdYloX//u//xr/+67/iiiuu2NDn6JKOYWMYr9r2KpK/GvNY\\naiyx5hT9rFVzlXluqaKKieQE8U7Th3CoeogYlQYWMUD2Wkir6S7OqRd4KLqkYNJFnV0bQzaYWWfF\\nrrANMXhg1VxF3akjrxHD0DVQdERABHYe2HWNsKZZxoNn3mhhGDID0bj6GHt9u6YbSYwwg2fqz7Y7\\nv5tt6gGi0EXX0KbbRF4jfw79EAfdg9AbOnbl/3/23jzIsuusE/ydu9/79iWXl/kya1NZJZUsSxay\\nLBuDLTf+A7qHYCLAMBhP0G3HsDkgCAwd426b4R8isN3R2HSYmIlxYLDbBEQ33U1HdJgewKbtttFi\\nybLWUi2qrNzevt19nT/OO+fdt2RWZlUapLI+RYayMvO9d999957vfN/3W97E11EloeuqG7i8yccK\\nLEOZNKJOkWRyICcQ7nALauluSPsSvX80oFqt4rvN7yJBwtU9ZxETiqigpJd4XmYeZpZv8aYmm96w\\n89B1u5zjacgGNFGDruhYMpY4l/ekghDC0SSzRpxu6B4JgnY798/3Q7xuC5ooOlmk3LJRQ6SYcK44\\nwHUAPvBT9/0U7r9w/5TELDDprkRxNGd6Nke8PwK/5R86ht6QbqTHi5AsyFjLrQGYJ0gCwDve9Q68\\n+73vxle/+lVEiPCvfvtf4Y+/8MeHvkYUR+g6XS6/y6KWqyGv5jmcp+f0qMLMGOfLSO9RHGHH3EHb\\nbEMXdbowxRQf3Rfp6N9QDGSkDAbeYMpFvu/2kZEpRrWaqXJlsJyaQ9tuo+t0OXTACizsjHaQVbKo\\naBXqn5BEUxtvtrAJAuX8xIj5eUoSimu2fItPoRj+mPE4Fn32siAjK2exmd/kfBu20IqCyI1Rr/Wv\\nIatksZyhMqdDf8hhWoyz81zrOVwfXEctU0OcxGhYjcliT4CSQYvAMAlBhPHo3R0XHicUttdDa3gD\\n281toAdgGSiUC3ACB1999au4p3rPlASrLMpz3jBsuqdKKgoocF8HrriTxAgjaibLzoEVWFBFFdVM\\nlX+fnnSeVNyOEedjjz2Gxx57DH/zN3+DKIrw27/92/jSl750Ysf2RtxenHQukYiKYexhb3+P/iAG\\n1lfXocs638wy+CQjNnuRt1B98iDO5Gsln3ihx4sZAAChxUyMeIoMzUIravjQr3wIn/3MZwEAH/ud\\nj+G9P/rehZAtFnESc68YFoQQXFy6iMfOPAY/8qnC2VhYgMF6GAn+le4reHr/aVi+hbJRRkYamyiO\\nBauYB9pyZpnyMSKPc0m66EIW6MY9o1LBGkEYi9B4Q85REYmIEUZo221okoaqUYUiKguV5WY/xyk1\\nroTykAbOAFZIxUkICOcTLvrcmVreRn4DO6MdiIIIL/LQsBpYyixxVEDDaoCAoJ6rc4REw2rwvOnH\\nPl5ov4ArvSvcx80MzKkczqaIQUS9knRBRy52APhzx3Wr4bg9NIc3cGX/Cs0lKzSXBFGAx3cex9nS\\nWZwunp46pkWKqkxFs2pUuceQ6ZtwAocXNj2nh5FHm6lDdwhN0rCeX0fbaU8ZXB/EubmVWGTEafkW\\nvNC7KQStVqvhV37lV/DJT34SAPDxj38cP/ETP3Ho/fP9FK9bDk2vF8J1T+7QzbgDk+zh7Q+9Hf7I\\nB0Lg+tZ1FPKFmz/4mHGUoud7VRgN3MEUIV0WZZzKn5raWC66JP7+8b/Hu3/43ezg8OQTT+K+++5b\\n+BrMHyBdFMiijLJenoJ4RXGEjtNBGIewQ5uT/f3YR9fu8nHw0KWbeFEUMfSGkIjEx8oJEhSVImRR\\n5h10tllWRAU5NYeiVqRTldRGdGe0g67dnVKjIYQqolW0CmRB5qP12XM+dId80pQk1K+AQc3Y8xT1\\nIp9AAbR7pIp0s8423Sx2hjscHy4SEfV8HX23Dyd08NTeU8jKWbiRi1qWeus4gYOO04Eqqnyq4Uc+\\n+h71ZKjqVSpvPZYo5WIAksqlOUvOLrLR8aWaDwpXKWKU2cDdd98Nz/MACfiD//wHSKSJ+tr9K/ej\\nlqWcp8PksRdFFEdwAgdtpz3lOyQLMjLq5LlmJaFZ1/ukiptbVUH71re+hUcffZT+PSF49tlnD7x/\\n3oh/2DjpXDKImuglW/ilD/8SnnniGSAEvvzlL+Md73zHib0GcHOhmO91YeSGLp8ws+euZWtz0saz\\nU9lut4u3PPAWWCO6/vzhH/4hfuZnfmbha9iBjT1zD2E0mZozOFDaG4ZJGzOhlK3BFvbMPdiBDTuw\\n+cTED33u+SWJEopaEavZVSxnliEJEgpqASW1hCCZcCAZfE8WZRgyhX2xSX8UR+g7ffT83py0dU7J\\noWJUuKwxsNiQ2fEdzsckIDwfstAlfWqTy8j6i3LJ/mgfDZt65xEQ6i/j9OHHPr7b/C4MyZhwT/UK\\ntVCwGhxZwOShmUR01agip+ZAEoIYkzVXV3RaoEPAstdCIT6+VPNB4coFDLMb+Mmf/Ek8+eSTAAH+\\n5b/7l1g5s8KlxO+u3I3z5fMoakV6fMe4jtkavjPaQdNsclihQAQqHpA6n2lJaPbZL5LjvpW4VRW0\\nTqeDM2fOYDSihdgXvvAFfPCDH7zt47kT4nXLofG8GOHBVijHjlHYw+XWC/jyf/gykAHUZRU/8dM/\\nATuwOWToJKt0YCzhnPovDa9hX1ESTX2xzgLzIGCb/jQ8J/1cjIQIAF2niz2Tdg2ZJOPpwum5jdgi\\n/k59vY6nnn4Kl1+5DADY2dvB+3/q/VOPY1OZkTeaWrgZ7CstqsAUy6Ik4t2ijfwGVFGFHdgTfX4k\\nWM4uYzW7So0zRQ19t4+t4RaaZnMiCYwEq9lVFNTC1Jjdj3yM/BGXRPYiD2EcUp8HJcdNKRnMI4xD\\nuJHLxRxkUeab6YE7QMtu8ckTU2sLEupMz64RxgcxZAMFleLfGaZ3katxRs5wNbMECQb+AIqoYHu4\\nza+/IApQy9a40s3pwmlIooSO08G+uY9dcxd9h2KDW3YLPbeHilHBcm4ZeSUPVVQRI4YTOBj6Q+iR\\ngwxODmoTyVk07Rh/8Ad/AMiAVtDw0Y98FF23y5WBenaP4rYJ4fwXNnm5mbISAYEbunSyNS4eGH8o\\nDRdJQOU8GdzADd0pgQbg9poCbIoEYAqayDptBxU19XodTz31FC5dugQA2Nvbw0//9E/f8nG8EScX\\nJ51LrLCPtreLL/zpF+jG1AB+/P0/DtVQeSGcFra4nViUP2ZzRRAH/Is1Pxjkxg1d7ovFvhi5PG3S\\nyfIM+7IDG3ujicKiIAhYy63N+XSw+5qA8Jyg6zp838c3vv4NAMCz330W/+Kf/wtI0nR+aFktNKzG\\nVEGUVbKo5+vQ5Gm+CoOoMhGWu6t34+LSRRTUAlfWdEO6rhe0AohAkMQU7vNi50Vc6V6hTbixwWVe\\ny3PJeG7UOObPRXHEN7UJEp4rwohO2Nk6E0QB7/6znBTHMdyISsz37T56bo/mkpgaSiZIeHNLEATe\\nlFMllSuTHZpLlAyswOIFYMfpQBRE9F36WoZkIExCnCmc4e9JEzWIgoi23UbDbMD0TO4J1nW6aNpN\\nyKKM1dwqVjOrnG9k+zZ6Tg+Z2EVeOLl9UShn4UpZfOazn8HIGgEy8Kv/x6+CaIRzaXtOD4JA1elG\\n/ghO6ExxLA/jjBFC+DkuakXeHK0aVc65AcAVCZ3QwcAbYOAO4AYuLzzZc93qfUwItSZQRIVC+TBR\\nQWWw/EXPbRgGPM/D1772NQDUn+cXf/EX35jS4HU8oRmNIpjmyW3I2uEWHn/5q/jQP/8QAGDz9Cb+\\n/Rf/Pe9isQ0Rq9SZcaQmaVx2cUqScUbG+TBDs3+I6NgdNK0m/7cmadgobHDfD+Am06AEeOY7z+Dh\\nH3iY//ub3/wmHnnkERBC4ARUHnhWEaqslxeOUHtOj5PjCAhKWglmYPIEAIz5C0qOE/97Tg/75j4t\\nKAIXbafNi4patoa1/BpOF09jPbeOoT/EyBvxpMwgZsz8NP0afujTjfd4g8pUzRKScEOxJEm48zAr\\nHmWBEnhH7giiIEKVVOiSjvX8+lzxe7NFzw5s7Ax3ANDCU5d0PNd6jnobeSOs59ahSrQoqWVqkESa\\n/MM4RNNsYt+i50UURGTkDMpamV+XJa1EeUWSAolQ/H45HKLodw89puOEVHwTvn21i0ff/SggAWfO\\nn8F/+i//CaZv4lL3EodsEkJwT/UeLGWW5p6DkfBlQeaCDbIoc9JmuoAwZIOTcGcloQ8yEWTEXfbF\\nktetJqTjqqA988wzePDBB/m/H3/8cTz88MO39NpvxMnFSeeSQbyLfrSHd/7gOxGH9Hm//vWvI6Nn\\nJrw/Qk3+NEmDLtFuN7uemXLY7P9nf/ePFXZgUx7f+JhEQUQtW+NGlcA8rCrNGQEBBoMBLtxzAf1O\\nHwDw2c9+Fr/4C79ISe0RhbGl4c+MU1nQ5hETrCBjoUkagjjg4issmDjN1d5V3ixim3/GywOomee5\\n8jncu3wvHl6j96cXeXPnXRVVLqHMIogCdN0u94FhPkJRHMFQDGTliRALU85kHjeSIMGNqAyxIilQ\\nBZX7lx0nl/iRj5fbLyNOqOm0SGixwnidS8YSLXx8i0882HP6oY+O00HTbkIUROiizqGSQRxQpVYl\\nR/3Nxo9djmwsRaNDj+lYkT8LV1vF0qkluraKwDf//psgMsFL7Ze4PxsAnC6dxrnSubmnICA8h6S/\\nAJpf0zL/hmygpJW4KARTY2UKbmk5bRYM5saalyxX3SoS4LgqaMPhEGfOnEG3S3P45z73OfzCL/zC\\nLb32nRSv24ImDBO0WifXVhMyA/zX/+8/40O/8CFAAd76yFvxbz79b+YW5NkLlm0gMwp10M0q2YVq\\nJyyOUvScdGHUslpTbsy6pGOjsHFkB/V0/OwHfhb/8T/8RwDAex57D/7yL/+Sq4akO+BMdWS2g0FA\\nMPSGHB5GQJBTcjCDaYNOWZQ5DMAJHKpc5lP4wNAfYn+0DyeknQxWBDEBB13Wcap4Cnk1Dy/05rwM\\nJEFCWaOqQSIReceybbexZ+5x4iXbPOiSjqpRpdOYeKJwU9AorpdN8ABwUiIrgNmiz84LC2YMxkQI\\ngijAvrmPfXMfQ48ahDKoBREI7ireBV3RUcvWJtOn0MfAG0ASJSiCwg00h8EQXuBRM7RxopRFGbVs\\nDavZVSpsEPkoDl489ud/UDjlt+C//e3X8HMf+DkAwLt++F34iz//C2TlLLzIwze3v8m5L1Ec4e6l\\nu7now2HBPAYEQeCFTlErTimnpYMTPkOPT+8WFTcCEfiGMg1NO25xc1wI2vvf/3782Z/9GQDgfe97\\nH77yla8c6/XeiJOPk84lcs7E1v41PPTwQ4AMZCtZ/PV//2veKDrIq4RNqpn6H7MLOOianC16Fv3s\\nKH9znDB9E02rye87pkh5XJ+OJEnwb3//3+J3/q/fAQCs1FbwxONPwAFtjHGlT1C55Vq2Rs0eF/BP\\nvHDCP2LTmLSHlEAE7i8TxRGCKIDpm3i1/yqu9a7hcvcyzT+RR+GsiCFA4GvDxeWLePPym7GaXZ0z\\nzAQmkDACwvNB3+2jZbc4/yR9vsp6GYZsIIxDEEI4R0cgwlQuYd37JEkW7j/S10Wa8B4lEdp2G1d6\\nV9AYNeAGLjpeB1kpCz/2cbZ4FoqkzBlzJ0nCFTsZEuL64DpG3ogfF8sn1EyzRjkmSYA1a+tYn/9h\\nYZbejO12Bw899BAAoFAo4IXnXkBGySCOYzy++zj2zX3EMVXB3Cxs4q7yXTdfvxNg5I9oM3IMISxp\\nJVSN6tQ5SJ9TJlFteib8mIpAzIoREIx5qYqBvJrnsuzHLW6OC0H7vd/7PfzWb/0WAGBtbQ2XL1+G\\nrutzf/f9FK/bggY4Oe8ARSEolQT84f/9h/jlX/5lAMAH/vcP4FOf+RQsnxLJrMDi0CQACxMSC1EQ\\n+QSHFTnHdZm9WRy1MGpazSmJS13SsVnYvOWu9Msvv4wHH3yQvpYIfOkvvoQfePgH+O9FQZzzhUmH\\nHdhTN6wsUO4LwzgD4IR+P/apqVg0kbRkr5GRM1x2umk1sW/uY+RRmeKMmkFOpuP5ldwKZCIjTEIq\\nayqoiEBVyJg7fVodK45j9Nwe+m5/anwtEdp53yhsTHkV9JwehXmMZaHTqldxHE91eJiE56y7MYsk\\nSfB863n0nT6e2H0CTuCgolewllvDen4dq7lVjukmoN0kXdJBQGUp81qeegfEEZpWE7uj3amOjyiI\\n0GUd67l1LBlLyI6uQPIHc8dx3AjlPOzCm/Anf/In+M3f/E0gAT7w/g/gj//fiXCEF3p4YvcJWD4d\\n9cdJjDdV3oSKUZl46aRUkgCaUGYnIGwywxy5ZUHmhc7s5pBBRNzQhRM4fLK2aBOX7pazZHSce2SR\\nESfrvKfjpZdewsWLFznp+Gtf+xp+6Id+6Miv80Z8b+Kkc8njTz2OR9/+KECAe++7F3/3P/+OeiaF\\n1AQ2CGkBPKVotuB6I2Tin8GknFVRPVno8xELo6E3nJvMrOXWaAPnFhpttm3jwQcfRLPZBETg1z7+\\na/jJn/5J/nuBCFjOLKNslBc+nnE+WDBIMSPZM1g1M1Nmk5LZyZEkStgabOH51vO40r2Chtng3lZM\\nqpjZM6zn11HL1lDP1VHUi7yBwl6TiT2wsHyLGlqmZJllQeZyykW9yJspI39EJZ7HsOI0z5DxddIT\\naLaeLcolAPDdxndxrX8NV7tXMfAGOFM8g4pRQT1f5yqhTM4/p+aQV6iIDWsUMqNNBlVP+30JAjWG\\nrefr2MhvID+6CsHvH+vzXxShnIdZuAvfefY71GMlAe49fy+e+OYTkxydxHhq7ym0LKpkFyUR6rk6\\nzpTOcMhknMRTqACATmbS+TCrZJFX81OIAPY1WzgyjlZ6erOouAGosFHaa/CoEv8sjmrEads2zp07\\nh/39fQDApz/9afz6r//6kV/nTozXrcoZAGQyAnz/9qWaMhkBgiBgf3cfjFZwqn4KZb08pXvOOjvM\\nNJLJJM7eOFEcYeAOpkbeDIqSnuTcjvvsIgEBzOS4fXMfA2/AO8UMfzzbleHfH2FidM+Fe/CzP/uz\\n+OKffxFQgE99+lP48pe/zPGgJb0EgQhTRFEWzBmeRVqGkkVRK0KTNLTs1pzimgCBei/IWTqmFwTc\\nJd/FiYFNq4md4Q56dg9DYUh1+r0hljPLyCpZ7Nq7sAILkiBBl3RIIoXb9ewesmqWK8mUtTJWMitw\\nQgeWb0ESJb7h3h5toxJWsFHY4JMhtvAw92k2IWCJj8hPmQAAIABJREFUJv3+CCYS0Kzbxzgftm8j\\njmNc7l1G36NKbQkS3LN0D86UzlDJcCUL27fRtJoU6hdSw9GKUYFIqPSxKIio5WpYya5g4A7Qdtrc\\nTM4NXVzrXcP1/nWc0ws4s+jiOmb4+jIIIXRh9QEEwJn6mQm8BnR69rb1t+GJnSe4D83l7mWuKsPO\\nA+twMq5PutDNqvSeSTARQkiHRCQ++mf+CbpMi4qiVuTQNIZRThc3aUloSZB4caNJ2pGKm0UqaGxj\\nkIagXbhwAR/84AfxR3/0RwCoDOff/d3fvWZUq75f46RzSWO3wXPJ5vom39yw6y2KIy7F7gQOJ7Sn\\nCxxgQnZPb9wFMnG2Z8XO7TTMuGjAIZfg0Bti6A15w0YWZdTz9Tle5HEmRvlsHr/5G7+J3/jXvwEY\\nwOe/8Hn82P/yYzAMWrytZlf5VGV2OhEn8VQDgUnlpwsrTdKQVbKcgzgbzOU+QYJ6vo71/DpG9RGu\\n9a7h5fbLeL71PAbuAHZoQxM17lVyWb5MjRvHU+/1PG0QEUJAEsI9ttjnVNKoyIAVWBAg0MZWEqHl\\ntKjYS65GldVSHCVVVunkdywWECXRFB+WBTdQTeUSK6Aw5YE3QM/poet0YcgGrMDCWwtv5cabRa0I\\nQzLgRNTTpuN0uJdNumFbMSqoGBUu9hMlEVSR8sHadhttu41TagZnj3HNHRSRQT/z9n6bSjYHwKnV\\nU1AkhQtMEELwUO0hfHvv22haTYhExJ65B0VUcHH5Ir8eWI5wQxf71j7cwOXnjN+PY+PsIA6mjFuZ\\npHpazIeJA6xghXM0TY/uB9lkDKBqcV23i65L4X5sv8fsJG5W3BxVBc0wDHzsYx/DRz7yEQDA7/7u\\n7+LDH/4wcrncgc99p8fruqBRVQJVJfC8W++ssecAgO3tbf7zzfomX6zZIqNICkpiCSW9xP/Oj3xa\\n3IyrdyuweHcgvUkJ4xB9t4++O+liyKI8N8k5KSOn3dHu1GvllBzq+frcxukohVE6vNDDRz76Efzp\\nf/lThGGIp594Go//z8fx4z/yvwKhisAG4iQBIYAgAKoKiBLtooy8Ed90m4EJiUj8dQkhyKt5CiGz\\npvG4DMJmyAYlpIb2VPeimqFKLCWthLXsGraGW2hZLbScFjpOB227jaySxUp2BRklAydwqFwlKJws\\no2RAfIIojrCcWeakx5JQQpzE2Bvt8UlMGIWwfAsvd17mBHWBCCiqxSmTRwEUbpaW9WbJPIxDeLHH\\nF0CmnKJKKgRRAEkIiiot7M6UzuCB2gMoaSW4oYut/hZ6bo8LPoiiiGVjmV+rCRKooso3O6eKp5Ak\\n1E36hdYLvEiMkxiv2D3kFQmV2xAAC5UCIoVCwLrbXWC8b6jX6/yzY6FKKt5Wfxue3H0SQ5cWts81\\nn0OcxJzPxeBxURJhNbtKu5JJSBXdxoXMnE/Q+DXCJKQuyqm9Cytu2DQnq2Q5VJDxbtKbCWDCjWGF\\nF+c5jP2RDio+mFR3GoIWxiEG7mDq3v7EJz6BL33pSwiCAF//+tfxla98Be977w8iMncRRy4Qh4Ag\\nQRA1iNk1CPLJGKC+EQfH9zqXMOgQu86IQPiaz4KJjzgh/XIDygmbLagZzJFNOwHwTTQrdBhc6SSi\\n7/Z5Nxygio31fH1uY3aUwigdQRTgn73/n+HT/8+nsbe3h2FziL/887/Ex37141CRRxQmSAKAEIAI\\nCSQ1hihOijxZkOn3oY0oiiAIAl9jMzKVZnZDd64IYIUMI/Wnc0lOzeHi8kXU83U8Un8Er3RfwfPN\\n56mZp9PGwKOCLQWtACVW6O9bz0MRFaxmV1HP1bFR2EBMYuTlPJ/+S5CQlbPouT20nTbCKESMGH2n\\nj6vdq9x4URQpb8UO7KkpUgLqY5POJQD4hMb1XF7QsYZiRskgI1PT1YJWQFkr40zpDE4XT8OLaHNx\\nz9zjoilsMsRfAwkvCvNKngsxdJ0uLnUuwbIn1991z0RRIiiTW79/IqWISC1BFmT09npcCXqjvjFV\\nOLP3/+jGo3hy90nuy7Y13EKCBBeXLlI0gqBzwn1FryDWqKcPuzdYwcN5X2kBC0LzdLqRIBKR+56x\\nyV9aEnrkjSjXMwl5joqSiAoKeFRd1pAMbuSqSurc+2Ihi9RKIw1BC+MQe+beFATtwx/+MD75yU9i\\na2sL7XYbv//7v4//87d+7fs2l7yuCxpCCIpFEd1uhCA4/o0ky/Tx7IJOJ6F6fbL5F4kIIaG7PtbV\\nZclJERUousKLHAICL/RgBXSCY/kWh7vMRhAF3IeFhSIqc5Ocgy76RZEkCXZGO1OTkLyax3pu/ba6\\nwAxyMPSGqK3X8DP/28/gi3/yRbzvh/8pytIZWAMFi8y1bAtQFCAUHIiiiBgxel6PT0NYaJJGF4GE\\nwn8AAIR2vhWBdtHYJpEtOsBkyhNGIfJqHnES08JFzqBpNbmKD+NilIwSKnoFRXUCF4jjmGr+RwGc\\n0EHLanFYWRAHcAMXiqig43RoFzUkMD0TAE2Oa/k1xErMYUTpEEU6jWFJKQgnEpHpz5WAYGuwhb7b\\np7hZrYyMksH9y/fjau8qyloZPa831WnUZR1lvTzZdMuTiQKLOIlh+zT5v2XlLeg6XUqI9W3oso7v\\n+BbeqhAUF2DDbxaRZCAqXkBZo7LZO9s7/HesoJkNRVTw8NrDtKgZX6Mvtl8ECLBZ2IQf+lzxDQAk\\nUUJJKU0V+nES865rWpmJRXo6yNSaZhMTS0oZJYM8ySNKojloGj9/4w45k4RmxY0szst3HmbEySBo\\np0+fxoc//GF87nOfw4++923Q3Jfgbs/DRiIAQf8SBH0JUu4URGPljUnO9yi+17mEvYZIRIgQ+QYy\\nrUYpCiKdQKt008EkfNl16YQONwicjTiJeRHOQhTEqSmOLuvHLnJ6Tm+Kf6lKKtZz67fEv0xH3+2j\\nYTYQkxi/9Mu/hI//64/jfe/6p3jXvT+GyMpjLICfegSBawtQFEBQfEiSDBkyhv6Q8gelMU9xzLkR\\nCDWnTAsqCIIAmciAsHhyxMx7/dDnxcSysYzMegYNs4GhT7mNI2+EvtOHKqsoqAXkFNoR79pddOwO\\nnm89j9XsKmrZGmq5GrJyljdpgjiAIiicD8ogXjGoIWhFr2Als4IomP+MOSdTpBYEbjBZr9ITFQKC\\njt2B5VvwYx+bhU1IRMLZ8llc61+D6ZtzMME07JGptuXU3FSOipMYQUQlry9UL3Bz7r7bhyqq+E5g\\n4gExQekW1LYiKYOweDfyGlWl29vZ479blEsIIZCIhEfWH8HT+09jd0StKBpWA7Io476l+xDEAbWF\\nSEL+HtOGrwCmbA/8yOfG01OoivE5jQj9/NLXPhOyYaaey5ll2uQOLAzcAVdVZa/FODkNqwFN1HiD\\nLaNk5vZ5bDp2mBGnqqr4xCc+gQ996EP40fe+DQ+dFeFuf3X+/OL7I5e8rjk0LOI4Qb8fHau7pqo0\\nAQkpucF7770XL75IidLf+c53cP/99y987KziTLrISUdaLYz5lNiBzeFqixLTwmOV1KlJzqKLnx3X\\n9nAbI38y4ShqRW6aeasRRAHfzLNotzp46ckdvPuH33fk54kEF63oCnIqXeCZ9PSs23qChHrNKMbc\\nTRfGIVe1YaTK2XMRxiE6TgcDZ4CO3cHQH3IYUUbKQBRF5NU8REFEEAbUeMwbcEdrAFAkyq2paBWo\\nMsWsi4KIMApxfXCd44lFUURBLcCQDaxmV7koADPjihLadWUKXAx3my5+EiS4MbwB0zWxZ+2hbbVR\\nMSpc3CCMqJR0SRsXzeNpFpNJ1USNw7tY15GATpxGPlUHG6PGIQgCha0FNl5uv4w9cw8SIXhAlrAk\\nHr2oiZQipKUHoKc6zEe9fwB6TT2199QULPNs6SwqRmWqIMmr+cn06ZCliiUmJk3rhR53zWZxmFJQ\\nWmGNbTKZYMOswg0LhoVnkJ9F1+pBKmiNvV08/t8/jx/5obce+J5mQ9CXoC4/BHKMBscbcbw4qVzy\\ncz/3c/jiF78IAPj85z+Pn//5nz/w8bOb6oPMGIFJke5FHpzAgRd6XI3pKCEJ0tQUhxXmi6Jjd9B1\\nJkqIDB56O55OYRxib7Q3VXhFYYxLj+/h0bf98JGfh0gBLGEf4ljamMUihUF2b88S+hnHjjdFUhxZ\\nFulGXtfpouN06PRdFKmimd2lps5jGJkf+fACj6uXIaFCMeu5dZwpnkFBL/CcFccx9sw9mAE9FwQE\\nWZnybStGBWW9TP1yxhwMNpljsOb09ZKOIA6oUI9nYWu4hYySwcgdYT2/zovqeqHODaMlQeJy0Dkl\\nNyVdnA4ncKg5MyawSF3WEcURLnUu4VLnEoQkwQ9oGlako69RkVKEWH0LjJSv0HHvn2f2n8HOaNJQ\\nW8msYC23NnVuynoZmqTxRgI7f4ueb0rifJxL0n8rCBPRivRkJy1OwXJJEAewfAtu5B54n3L0gEo/\\nh9l78jAVNCFO8Ld/8Vn84NvuOfAczcadmkvuiIIGGKsheQksKz6U3KmqBIYhQFXnCf35fJ6bFXU6\\nHZTLi8mIs68LTMtpspslHXPSyITADcZFTjiGq/nWgZun2WCjYDbJ0SWdLo6pRFHWy1jNrh7p+Q4K\\ntpin348qaiBO8Za8GyK48OQWzGAERVJ4dytOqGKJRKiPC7uhWfL2Ix9+SG9mSZQOnVpJApWUdAMX\\nHaeDntvDzmAHVmghSRJk1SxyMu1A5dU8X7gYbJBhlWPQjp0hGVjJrKBerEMWZPgh/due1+OkQnZ+\\nMkoGFaNC/QbGPiuHHacAAdf712lB45t4ufMyyloZlUwF58vnMfAGnKtTNapUXSZHzSkPC9u3YQbm\\n1OfGDEcFCAgT6pJsBRb2zX3YgY01ScEqiVAiB1+DoZyHkNuEnt2Y070/7v0TxiGe2n0KfbfPp2Pn\\nSudwqniK+0kcpRN80BIWxzFPTGyaE8TB3GYxHYsgmAzWMQvJSIdIxCn53bR3xZwKWhxB67+IxJ93\\nUr9ZCEoBau3ROy4RvZbiJHLJe97zHnz1q18FAPzVX/0VfuRHfuTIr82uzzSnIh2LZPbZJMcNXS48\\ncNSGmSxOCnM2yek5vSnIsi7rWMut3VYxw0QF0selCCpycR1RePxucUx8xGoPYUK75kW1yIsWNvFK\\n5wrGq2AcR3Ych3WqmUplurDZGe6g7/W5h0tGziAGnV7smrt8PWPGy8BkDcmreZwtn8XdlbtRz9U5\\nd6/n9qAKKmRJ5teAKqocdTDyRhQ+d8DapYoqDMmAF3q4MbyBttPGy+2XIQoiqpkqlvVlSmQHfc8V\\nvYKzpbPIq5SXedg58EOfczVZsGJGIrQw27f24QQOmnYTpm/ijJbDupCgdAgELZTzILkN6NkNbkPA\\n4rj3T5IkeLbxLG4MbyCIAwxdyp29uHQRgiCgolfmBFrSj50tcmYb1EmSTCEC0uID6ZgSjRoXN6z4\\nS5BwqLMfUt+hReddIAKH+RXGEyvWsJxVQRMQo2rdAAnMuee5WdyJueSOKWjSEYYJHCfG//gf38Cr\\nr16HaY5w//334Z/8k3dBkhbfuMPhEIUC1bjXdR2WZd3SSG6WELno5ljk88IShRd5XFnN9E3YgX3T\\nIidOYs4JMWQDhmSgnqeqH7eagMI4RMfuTHUECCEoqEUElnZbWHMnGSCSexTSlQQIoxCKpPCFlXXN\\nGLyCcSvS3i4sQURxxEfxgiBAgDB1zpMkoaplDjUW6zgdOgESqEs0g+PJosy7nUOfyh6HCXWDFiBw\\nZTUmWckKFyuw+HnyQo8fc17No2pU5zotjGCYJBSGdKl9CX23j6E3RNNqwvZt1HI1GKqBc8VzHOOs\\nSlSF64HaA4e6CLPkxz43jikf+yfFccz9CaIk4nhyZuTZtJpA6KCKECohkAgAIkJR8jDyZ5DNLM1d\\nUwQEw+EQy8vLAABN0zDoD+iCntp0sWso/e8wDvGt7W9h39znz3dX+S68ZfUtt7V54u99wfLGYIrp\\nLtzN7jFCJp4STHqaXZNzCmuYyO/qss6lx53QAZIEcu9FiLehCCToS1BX3nZHQgZea8FyyUsvXcIT\\nTzwJ0xyhWi3jgx98/4G5BADOnz+Py5epCfELL7yAe+45eveUxaJcMju9OSiXsCKHCQ8whbWjFDnM\\nOJhxx8pGGWeLZ+c2nUeNKI64HH06SloZsl+G7x/wwCNEQGzIug1DMaagZYzvwdZlPtFfcL6SJOHK\\nkwKhaz1b89nvWdiBjYE3QN/tY9/c54/JyBlk1SzWslT1bWu4hRvDG9gd7k4R+tnrMs7kXeW7cLZ0\\nFqeLpwGAE/MZksMLPQ4tZpModl0YssE5OswbaOAO0LAaGLkjbI+2KYlcVHHP0j1U9MQdwFCoUt6Z\\n0pkp0aPZSJKECpuMkRnsdVkBzDbZLasFJ3R4Hq4YFTSsBvbMPYiRh2oSQRUIJBDEIJCUDJRMHdnM\\n8jwPazzlePCBB3H16lUgAZ566incc+Geqdwxq1RHCPU4+vbet/Fc6zn+ma1kV/DY6cfmjFiPErOT\\nU6ZSmr4e2FQu/XXQPcbyIYNDOqHDVTgFgZ67WblnJgmd1/IoaSVokgY7sCkELY5QtLaghscvZljc\\nabnkjixoWHzqU5/CRz/6UQDARz7yEXzmM5858G9feOEFXLxIFTLOnz/PHb1vJxapvcxObxYtsOnK\\nHsCU4AArcthzREmEhtngJpUAhZkxeBI3AR1Pcma15xeF6Zvou/2p41REBRWjgtAX0OvdvhqQLTbg\\nJoOJDPG4kGEqJmzKws4Z20SGcUg7b2wjLkw2k+kFaDb8iBqGMTUXP/K5ceeSsYRaroZTxVPUa2bM\\nbXq1/yraThtJTLt9rLhURQoJqGaqXOSAde/SQQjVkK9lazAUg7tEsw7NjeENLirhRR72R/v8c1rL\\nrWHJoOaT+9Y+4iRGWS8jq2RxqkCPk6EC2Pt1Q5fzT9jPREFETs3xQo+JM7AEJBABZb0MSaBKbm27\\njRuDG2jazSn1NkM2YCgG6rk6arna3DX04osv4q1vpfCpc+fO4bnnnjvSdeAEDkbeCN9tfhcDdwBB\\noJuDc+VzOF8+P3UugYMLo/TPFsVst20RPGyWl7OI98aC8XicwIETOTQZjSWkJVGakv5URZXzFwJr\\nD3Lv9v1/lOUfgJS5venrG3H0+Nu//Vs89thjAIB3vOMd+MY3vnHg3yZJAsMw4LpUVWk4HN628tBB\\nuSRdiC/MJZgocApEgBd6U/LRTjDpvCdJgo7TmVJ7MmQDVb0KJoGcFh5gIhmHhemb2BvtTUFtGOFZ\\niLQTySWK4UKQJ3LGMeKJDHxqsxsj5hBSpkolQIAkSly69yAF0HTESYyBN+DyukNvCEGgvlYlvcSn\\nH7qswwkcXOlewXOt53Ctd403mqI44s04RaIE8+XsMqp6FYqo8FyYDpYXWBHihA6FFEch7NCmCme+\\nRadIox1EUYSV7ApOFU/h4tJFyKKMreEWXWfHxceF6oVJoZRCmTCiO5ORBiaNGkmQuFXByB9xWCIh\\nBEvGEgzZoGR4d4Cd4Q4aVmPCfwUtNjVJw1puDbVsba7plyQJarUaPI/uaba2to50/7ihi7bVxivd\\nV7A72oVABBS0Aur5Oh5cfXDOSPmgwuggO4708bF9HP8vBV9LK6ylG7OHHnvkcsW0OImpYqc0tiUQ\\nZX6fKQIVpDBkA6G1j5x57abn5WZxJ+WSO2fWtCA2Njb49zdu3Dj0b9O/P4jQfNzgqi8Av/DZgjl1\\nQ7DuTWpzllZfYYTvFbLCH2sHNgbuAJc6l6aUUMpaecpNmUt+WpNj4kWOPClyCKGcC9adS7+HvJrn\\nU4GBdTIGdCTQ4JEmdUce80vSMr9RElGDMyJAERRuBDbrmpw+l+ljZjwWtigoooLzlfOwAot78zTM\\nBsI4RMtucYPOjcIGKkaFq914ocd9bqzA4qoldki7JAWtQCdHIDyBxUkMTdYgCzJs38bLnZeRV/Mo\\nqBQ/7Uc+bgxu8JF1EAfIq3lEcYSiWoQXe1jPrfPzsJ5bhxdR8zgv8tC0m1yTnuGgrYB280Qi8kKH\\nQUjY+WILLUAhJASEw7pG3ghe6EETNZyvnMep4ik0rSb6bp8Xln7o40rvCm4Mb2Att8Y9KIBpEvT6\\n+vqRrgG2oRIFEW9efjNebL/IC/Mr3SuIkxh3le+if3yMtstBRU+6kCEJmZogsWlLIiVz5ys9yWEb\\nMybEoEkaislEEtryLd6RZYUNU26TBRkV6/B16KgRjq7fMUno9RCbm5v8+5vlkk6nw4uZfD5/IjKq\\nR8kl6cl0WrEySiJ+/4iCiIJWQBFFvt4yVMD1/nVeBDClsIpe4fcDuwfSUDRVUueEBwRCmycNszH1\\ntwBttq1kVyAQAZ3hyeQS1wX8qM+nqGmeYgQq8BHHMRUFGKse6pI+N1llsUgVjTXRZFGGSKgsfhiH\\n6Dpd9N0+doY7cCMXQ2/I/XGYZ82FpQt4U/VNCKIAr3Rewcvtl/Fy52W6ZkQurIDKIe8Od/kUrGpU\\nUVALyKt5LGWWuFDOjeEN7Jl7yKt5rmZmBzYnvtuBDV3SqapnZgW6pOPi0kVokoY4iVHP1qc4IVuD\\nLZwtnZ0SBfAiakatiAowrldZUyvdPAyiAAN3QGHjhCqpFrUiz0WapOFcmUKIm2YTXZcWPqxA2hnu\\nYHe0i9XMKmq5Gpcj7na7vJjJ5XJHun/swEbXps9/vnye5zSBCNgd7SKMQzyw+sCxp/6HTYPS+UUQ\\nBK7aKhIRiqTQIjqJ6T24oMhh/noAoIkaNENDFVV4oQczMDHyRuiGXf6cqqRCFmRuxXEmvH0POeDO\\nyiV3dEGTTkJbW4c72S5SpTnJmEpIyTgZpTrs6elNOiERQjhZPcJEj18VVbihi5XsClayK4iTGHkl\\nD1mU+SQnbYTFIkmSOclPruIRR9QpWM5AkzQokoKKXuEdlDBMTsR8DgB0oYAd14WfOHwawwiLiqhA\\nF3WoorpQSYqFKIiQyETqlxUxTFp3Uaclr+Z5IZdTctg399F3++g6XTr9Cm0UrSJWM6sU5iVrOFU8\\nxRNa02ryDpUTOnBMB4ZMZTEVQrsnlmehZbVoYTM2gXRCBz2nh5yWQ9+h0y8mhnCudA5X+1ehiApG\\nwQhruTXekSkoBZS0ErpuFw2zARCqEMSKFTd0OceG4b2ZBOiUMtgYajb0hlzgQCISxRuPJ0vsNQkh\\nWNaWcapwCjFi7Ax3sD3cnuKB7I520bSaWM+tYz23jsZOA2N4NjbWNyivCNNTEWCSzEzPnCqcNVnD\\nOzfeiWebz6JjdwAA13rXECfUgPM4ke5kz/0unuG2HdKJIyAch8+MYtPiA0E0/koC7jydU3MIIypc\\n4UZUhYgdh5pEqCW3Dg9IR+y0EAfmHS/D+VqJdE7Y2dlBGIaQDiA+/2PlkoPU02ZzCWuUsemNIijo\\nRl1KCldzSJIEqqQip+Z408EJnYX3kxdSPkoPE6XOBAmX6NckjUvd1nI1LlN9krlEiDWYngMvsXnh\\nxpoX6eKFTWAO4i2wpgYj4qcNERfy5gQRq9lV7k/SMBtoWk1YgcXl4Dt2B+v5dS7bfs/SPShqRZwp\\nncG1/jXsjfbQtts0X8cOpFiCKql0AhRQUn/STJCVs1jNraKklUAIwdAbUsEUIo2h4LSxVlAKaNpN\\nzqst6SXOHZEIfe7ThdN4pfMKQOgErWW3sJxZppOeMQohTXRfpI6XJAlVvyPjgg8Ukj30hhyWxiKv\\n5rGR3wAI0LSa2BpsTe1NBt4AQ39Iear5OgbNAeABIEB9mZqATjV/ZyaVpmei7/R5gS4JEt6x8Q5c\\n6V7BtT6dYDStJr69920+qTlqTCE+Zi7XRffDgflkXACx6zCLLJ3yhxM+jh/7fGpXUAsoqkVEScSn\\nbk7gwBznD0MguE89GVn2OymX3NEFzXEmNN/rJJSO2YQEMkkuwEzHbSYhJUkCN3RxfXCdw6YIIajn\\n63N42CiOuAko4+SkN5HA2B/GHc2ZWObUHJYzy3BDlxcAoXsyNxCLslyDiSZUUYUiUfjYLNk/Xaiw\\n72clj9NxFBNEloiYOlnX6WJntAM/8rE3pAmmZbVQ1ssoqSUMgyHiOEZRK6KgFZAkCUzf5B17J3So\\nmpo4hCEZkAQJJa0E0zdp14jQKZsqqtg1d5GRMljJrsBQDGTlLKIkQttq867YanYVhBCU9BIXTaga\\nVfiRj5E3QpRE2B/to2JUpjhOcRJTFS05O7Vos4V/5I14B9YNqRQ1iSfTPYBObtJKQQIEbBY2Uc/X\\nsWfu4cbgBp+ihDFVfNsebuPZnWcBAUBEfTcOSxqmb1LS67gjx6TKAXAZzpbVQgKq2icSEXdX7+bv\\nBVhctBxG9meRngKmH7+wU7uoMCJUAU9BCs+eTKQ/WdGXIIEsyYjjMTQtdFAI7bnXuJ2IzF0IpeMV\\ne2/ErYWqqlhZWUGj0aDqVHt7U/klHa/VXJIuZJgaYhAH2BvtcQlhgQgoaSUsZykfrqyX+XOnlTqd\\n0JnzeGGk5YE33Tlmhs49pwcv9Chc5oRziZrkEREfskS5KTKh0M/08bGmFGuaMb7CQUIfwOEND/b7\\nvJrnU6qiVsSN4Q3YgY2+24fpUYgzm16Yvslh03eV78Kbym+CHdoYeSO07Tb2TKpyyRAL7HM0fRNX\\n+1chCzJWsivcjLigFrCWXUNOzfFmVctu0YkOAVc2S1sd5NQc1vJr2B9R/5Z9c38O+cAKZUM2FnrA\\nDLwBzwN+5KOgFuBGdG/B8okiUqXQdC5YyaxgJbOCtt3G1mCLixglCT2OfXMfL1x+ge5MA9ocO0xq\\nfOSNEMQBcmOFNFmUUdWrEAUR5XUK0b7cvUzznz/C863n8VDtoYlxbapIWlQ03eyzny1qFsGZxyeF\\nP4aFSEToig41Uafu0TTvK05ial2gl1BICrSo8U2s4DaIZwviTskld3RBU6vVIIoioihCq9WC4zjQ\\n9cVKF/+QSSgdswmJQwkO6LgFUYDr/et8xJyjyYVFAAAgAElEQVQkCdZya8jImYkJ2zhhiYI4BRcD\\nwHG2VmChbbWxO9qdKmbYYxRRmfM1qIqnkSXVE3vvIqg2vx/7iMMYoRDOdckYEduGfeDm8yi414OC\\nFUdZJYuG2cDuaJcaZIKgoNGRPzO5BKEJhHUcTc/EyB8hBsUTD9wB1amHSL0QBAEZJcM7dS27BZIQ\\nKJKCreEW7irdhaJexEutl7Az2kFGzqCaqaJtt1HRK9yIlcPw4ggtu8V9jq73r1NFtYRC8zJKBk7o\\n8NE+mzAgoWITpm9SlZXIhSEZU100ho+fhZRMnWcQ1HI1tOwWdoe7U8Xxc53ngLsB2IC8KmNrMD8R\\nTRKqw5+W/2bmsj130uGtGlW0rBaf1HTsDvbMPZwvnz/SZ3yUoofJZqf/hsMpjoNvO+gYxjj0tIiA\\nnETT1hq3+xqRe/M/eiNOLDY2NtBoNADQif9roaBJx1FyCYOlsXyyO9zlG9M4oU2bol5EEAVTMCRC\\naKdel3VUUOF/z4qcntvD9f51Pi0GaC6p6BVklSz8yEfX6XK+RS6pQUcJJxUEFBbL/KRCIYSUSPw9\\nCBCQxNQscRaePCdychsEadZdd0MX1/vXucKhLuvISBkU9SJvUmmyhqychSIo3JrhbOks1nPraJpN\\ntOwWem6PvwdVUoGETsevD65DhIilzBJWs6s4VzoHRVIwcAdomk3qTyYIsAObks5nuEFJQs2t2e93\\nh7vYLGzya0iVqHjNlKIWEYCEFjBNq8ktFAzFmGqsCRBgKAaCKJjaP0x/XjSX9JwedkY7U9fN0ztP\\nA3cBcIDc6Rz3mJmNoTecsqhQBMrzbdpN/rOSXkLZKONq7yp/TN/t44HVB27q75fOIwcVPWm+6twE\\nKT3ducWQiARREimnM4ogCnTqmT9hEv+dkkvu6IJGFEWsr69zuNn29jbOnz+/8G//sZJQOhYlpLRA\\ngBd62BpuIUwosVGAgPX8Oi9YmFpL+rlmF2xJkCgsJg5R0kso6SVe5DDIlxVYUwsUj4Sc6IYsI2eh\\nqwcbfqanVLM/Z+/xdg3eoiTiEwJLsVDSSmjbbb6x7zt99LQeVowV7mbPOpN5jUL8ht4QPnxaxECg\\n3S6BcpVEgcpHW76FjJSBGZjwIg85NYfL/cuwGhb2zD0s6UsghGAtu4alzNJUV4qdH1EQYUgG3+h7\\nkcddkDVZm+ssMd5LGIfouT24gcunRayYYeptbFoCjDtsC7pU7N/LxjKWjWV0nA52R7uwfAvdDp1E\\nIQM4BQeXOpewnlvnJmZsqpUmBzNjy9kQiIB7l+7Fi+0XuUP53ogarR2lqJkTDFj058LNIQNHKYwO\\n+hvWDWeqSQAgJ8KxuEA3i+SI3iNvxMnE5uYmnnzySQCHT/xfy7mEce6iOKLNrLGfSYIEVaPK5eBZ\\nccDyCS8MUrlEIAJ0SYflWwijEOu5dcTZmG+gC1qBd5vnjg+3p2A4G7pkwNCWD10bGOw2HSxn8inG\\nbWwUmbBIlEQgCUFey8OPffi+T3OAZ2HoUznher6OjJSBHdp8GpKRM3zKsVHcwGZpE6qocshRx+nA\\nizxqqBk6cAOXTnScNp5pPANd0pEkCTaLm5BECSuZlYXTJ/bv5cwyXmq9RD9nRGhZLWwUNqBKKpcZ\\nnjp/YyGAhtngfFIGTWRhyAaH5wKH55IkSWgBrRUx8kdUDtvto9Oh+Q06IKwKeL71PNZz61MIlIE7\\n4P49ABVeYSbTs3GudA4EBFd6VwAAPbeHp/efxoOrDx5a1EzlkZtcFoflkqMWRrPnhv2fq+8REbFA\\nURhS4uMkk8mdkkvu6IIGoEmIFTRbW1uv6YImHbMJyQkdTtoUBREykVHP1aHLOl0sksnj2GPYz9Pc\\nGy+kmvdp1Q1VUlHL1aYWItZdYXwc6s9yNI+co0YQ+7D9Ee1CjOEAbCGd7aKx9zQ7jTkMMnRQsM4S\\nEyMA6KJV0kscc93zemhbbURxhI7V4UTKWm7aaViXdWQU6kPgBi5f/Nj5dnw6MTFkAyIRkdNy0CQN\\nTuCgZbXQNCnx3vZtbBY3pwQd0hHFEUzfhCBQZbaRPwIIxbAzsiDDyKdJsXESY3+0zyElTNEnQYKc\\nQo9l0bnjQhOHFDZlvcwnSb3GZMJSKpfQsTvo2B2U9BJq2RoXnWDByMQHBSEE91TvAQGhUtKgRU2c\\nxLi7cvdtbTzSr3EYZOBmhVGSJAiTkKvvMenXdNHGJox+5KOCACe5j7uT/ANeD5GeyBzGyXyt55Io\\njignLgr4hq5qVJFX83x6MzvxXsS9CaIAe+be1KRWEiScLZ1FSZ9MX6I4mlJVswMbSXiyuSRBjDAO\\nOEIhXZxMNcDIZFLFfpZ+jwRk7r0fFmnEgxtMzoOhGBBF2k0fuAMKIyOUo7I93IYd2FjNrk5t0hWJ\\nTmoYFI7lQyZyE0Yh9s19NCyKJBi4A4RJiCAMYIUWek4PA3eAa/1rWM2t4n1n3gdZkFE1qnONGiZe\\ns5xZxp5Jm0VO6HApf7Y2susBoAXh/mifIwCYSmiSJNyD61ZzSVbJ4kL1AoXINyf83nKljKE7xNAd\\nIqtkKYQOBHYKvquJGsp6+dDPjAkfvNJ9BQDloT699zQerB1e1Bw1Zq819n1aeOawwihJEs7LnOVo\\nsqYCyzNBHCAgMU6yu3yn5JI7410cEkfl0bzWklA6nNDB1mCLdtnGi+1mYXNuQ5gWFQBmFus4Rtel\\nxPf01CerZlHUinOdDVmU+QSHRX/ow7FwYiGJAlYzq1OLJzBRnGJfaZOqRZvQdBy0qDHjOSegrtq6\\npM/9PoioEVpcjNG0m9gd7qJpN+GGLgzZgBd7GPpDaLKG08XTyKk57rTNkqQd2Og5Pcp38UcwfRMl\\nrQSRiCjpJZwvn4cbuXhm7xn4kY+G1aAwBDWHM8UzaNttJEgoVEPNIqtkOVSL8UzWc+vYM/egCApE\\ngeLBN/IbU4tnkiToO33sW/vIa3kU9SLvmubVPDJKZiIicAiGnMXsJCIdG4UNDJ4aAA6AInChfgGl\\nLL1u4iTG9cF1ZGWKoy/pJa6GdJTYLGziueZzHHbA8NtvXn7ziRQ1LGavqfRzs0Qy+xUl0ZzkKFdG\\niwI+SWWhBAMgOBllGgAg4vG9Fd6IW4+jKp29lnNJlETYGe1MebIsZZbmGilpUQFgZnKJBC27RRsN\\nyaR5k1WyqOVqc5wHURCRVbJ8/QKA4TCEZZ1ch1mVZOTHuQSY3M9pyep0oZLOOQd11w8qbMI45E0+\\nL/QoGV8toKAW+GsHScBhfiN/hF1tFy27haE35I3DkTeCJEg4XTyNqlHl+QSgn1MQBbADm3MpnMDB\\nXeW7cL5yHpqkQSACdkY7eGbvGTzffh5WYEFXqKiPTGQ803gGl7qXUDWqOFc+h3Olc1jJrMCLPN6U\\nq+VqyGk5eIEHURARxiGWjKU5MR7Hd9CwGhAFEUsGRRNUjAqKWpHzZGbP8WFxGE8luBIAlwHkgbMr\\nZ1E1qvwxV3tXIUDAWm4NVaMKQzGmlPgOi7XcGlazq3ih9QL/2dZgC4+sPzK3jt9O3CyXpPmWaeUz\\nFkxgJpZihBEtYJjcOAspsoD45DiZd0ouueMLmqMkIdM00e9T3oCiKKhWT44ncrth+RZuDG/wi1kS\\nJGwWNulkZmZRmFVOY3hpL6BTGdY5Zp2DolaELutzZNGDIqNLcKzb9w1g8bWdvwJIhOXMMmq5GqpG\\nlfvAMJ4Fg+zMFjkHFTbpBDxbxBwUcRxz3X92PjNyBpuFTWSUDKzQwsCh2v3MWK1hNiiWdQz3Y90/\\nZmC5PdjmstACESCKlJvUtJsIwgBLxhL8yEfP7XGZ54JaQBiHXO6Ude/iJEZGps+bUTLIqTkU9SK2\\nBlv82DtOB1WjiiRJ4IUeV0UJooATRJkEKOtIJaDj7BCTkfZBEL50l2n2ujNNE4MB3ajLPRmPXXgM\\n26NtNKwGdywfeAMMWgMsZZZwvnz+wMnQote9b/k+CETA9pBuFPdGe0iSBPev3H+iRU0QBXMFSxiH\\nh3JqGImTcWWmoGZEhCqqvCiPBPlECxoxu3Ziz/VG3DxerxMaFkEUYHu4PZlKE4LV7CpXNgMmDYs0\\nvCxNWGZTGTuY3kyV9TIqRgVMLfNm8C1dF2CdYC75budJiAPKcawYFZS0Et0UphRCAWq6mZ7gcETA\\nLOwnhXBgMtSsQbVIPZQ9huWdJEngYQK1W8osQZd1jPwRBs4AIPRYAMAMTJSSEjerBCh3goBwU96m\\n3UQQBbwBxVQq767cjSVjCW9eeTP++tpfozFqYOgN6WcK2ghzhlS05tt73wYhBBv5DZwunsZmYRMF\\ntYALlQt4pfsKvJD6pTApZ2A8gRpPn3puD6Ig8un+rIcM30ck81D32ThsarO9vQ2EADrAe970HpTy\\nJewOd9H3+nzjf6V3BS2nhfuW7uON3qMEm9Q816Q+aX23j29tfwuP1B85VHzguDHracaKl8O8zdiU\\nJoxCPvkH6PWniBNPGlmUkfg2YF09seO9U3LJHV/QHCUJ7ezs8O/X19f5QvOPHaZv4sbgxtTkYrOw\\nyTs8i3DSLAghECBg6A0xcAdTGH9DMejUIOWEPMu9mR3ZR0kECAlkBQhOQGCj5e7Aj+mI+2r/Ki73\\nLkMWZJT1MlZzqygoBWTVsUdOQua6GOniJr0RZ0WMG7oIomBhUk17AAGYW2jY62iyhguZC1AllTtD\\n990+nMDB1nALI59KLG8WNjkHRSAC2nYbPbeHlcwKVwNay60hiAP0nT6X9N0b7eFs6SyWjCVUjSqi\\nJMLQG3KDzKbdhC5Sl2g2/XEjCpPLKBkq5zwm2facHmSBJnA3cHkCBihXpWyUubw3g6TNnhPmicPO\\n50EJaTYZzd4/OS2Hu5W7UVAL2B5uo2k3KSxB1uFHPp5vPQ9DNrBZ2MRKZuVInJh7l+4FIQQ3BrQp\\nsW9ShZ77V+4/lrcAM9VjX6yIYefjsO4aezwruP3Y55sOSaCSqOmpIgDuFRFEASS9gshvQ/Rvv6gR\\n9KU7Qmbz9RRHaY4lSfKaLGj8yMfOcGeumGFTk9mGBTApblizZuSOeJMGAL+n13JrfP1Lc2/SHM70\\nPRonMQQxgaIA/gnkkmHYQQAXXhDD9m3sjnZBCEFWyfJJN1Mhk4k8BaNi74/lvPTmmBlHsiJm0Sad\\nN8ES+t7jOOaCPQAQhAESUBnjer6OolqEH1MD46bVRIIEbasNJ6BFx5nSGf6ZiAIVNPIiD3klj0AM\\n4IQONEmDSESESQjLob5qDauBc8VzeOfGO7kf2tXeVQpvC210nA6fol3rXcOr/VehiAo2C5s4WzqL\\nlcwKh/aavomG1UBGznCOVdtuc/GZnJrD2dJZMDWzOV7SuDhkEL7DitvZXDJ1/xDg7KmzKBQLUEUV\\n4kDEvklNpg3ZgCZquNy9jOuD66jn61O+aIfF6eJpCETAs41nAVDZ6G9tfwtvr7/9WEUNa2bNfgVR\\ncOjkj5+nMT8mDVNWRIVaZoxV+JiPGXssU65NZA2+lIUS3r4NwJ2US+74guYoSei1mICG3hA7w52p\\nYuZU4dQUeTsds8VNEAVoO22+qSeg5k9FrQhDNuYWIRZp3Gw6sbHkpOknU9B0o11ahMTgRFUQurgM\\n3AFUWUVWznIfg4ySQUbO8EkFAL4IhHHIjaqYdDHn4zCFsLHZYfq9AJMNLgvmHcO+KkYFAhGwkl1B\\nUSti39zHzmiHnt+xf0DP7fHNedtuY9/cp109xCjrZZwunsbuaBftURsAJfOPvBG8yIMf0+7NfSt0\\nCtG0mtjqb6Hv9kFA4IQOdkY7qBgV1HN1iEScUp8beAP+WfbcHuo5ev2avok4ianfjprj8qsCESCI\\nAmTIE67NzLUQJRGiiG5IDoOksetqZ3tS0NTrdUQxLcxUScW58jnqLeAP0LE7/LXswMZL7Zfwav9V\\nbOQ3UMvVbtrRu3fpXhAQrqDWMBt4JnlmzjCNFeCLYGIHXffp10knojiO6bWTSlCiQE3OFhJuQXgy\\nIiBc2pvdt6G+eiIFjZQ7ddvP8UYcL47SHBsMBrAsiss1DAPFYnHh3/1Dhhd61Dk+njStatnaQkEO\\n9ntgUtyEcYjd0S5fc1iBUjWqqOiVyb0xyzFLbWxTP+QbXF0nJ+JF45IeV8RMHwOTmJZECaqoUnsA\\nUYEmazAkg0NfJUHiOY9xFYf+kHMi2fGydWW2GZRee6Z+l1AuDYPb5dU8fa0kQUkvTUk8m74JN6Ce\\nYuv5ddTzdcRJDMu3IBIRESLqC2dUEMQT9TCmXNmyWtBlHUEU4MHVB5FTc3hg9QHcGNzA1nALO8Md\\n7Ax3MPAG0CQNJa3Ep95s8i0SCg1cyixh6A1xqngKuqRj5I3ghi40UUNGzUyt1bwQTCFCZq8BZux6\\nGCSN5ZJevwfbsgEC6LqOfCHPPd3q+Tpq2Rrs0MbQG3IURxAFuNa7hhsDavhcz9dvCiHbLGyCgOA7\\nje8AoPutb974Jt5ef/vcHis9aUlPXA5DfbD3NFvUsCkbO28ZJQNFmEiIzwYzZAboZ+2EDr//XK0C\\nxbz9guZOyiV3fEFzlCT0WitoBu4AO6PJJlEWZJwunj4yznPkjzBw6aaJFTmqRFVA2CSDFRELVTaS\\nad8CFoQQyLIIRSG31VlTFOCdSw/jreF92BvtYcfcQdtuw/ZtuiASeuP3oh5kkToUB1HAPVjiOOae\\nNKIgQhEU7lANgJNUWUeJmccxXHB6QfVjH7Ig88Ip/Z5zao4/pyRIWM+vo6AVUNAK2BnSY3ZDF9vD\\nbYy8ES4Jl6BJGidH5pQc6vk6n6LUsjV0nS4EIiCMqES1ADpObpgNZJQMZEHGRmEDuqyj7/Y5tMCP\\nfeyOdvlkRhQoPluAgOuD64jiCJIowfZtrGRWIAkSKkaFS1IvWixFQeQ47yiJEMXRVEJaBEn7/9l7\\n8yDJqvNO9Hf3e/PmnpW1ZS29AE0DTWPobtACwrYUj5GRx++9sKRnm7HHI4dByNYfssPh57BHihlv\\ncsSEFbJlJIVGMk8a22HZMZbDjrAgkEAgUAMC0+puaLq7uvYt95t59+X9ceqcvDcrq7qqF0DQX0QH\\ndHVWZt7tfOf7vt8yqNu2uLjIRCnGJ8bRcloJ6F9ZL2M8Ow4v8LBoLDLnZnqtXq+/vuMu28HyQfAc\\njwvNC0R21liC5Vm4efjmxPTlUoJKhdNOaxiFiLgIEiexY+kPDhzrpFFIAO2ixeWpAZLQ1cwEOLeO\\n0Fq/pO8IkI6akBq55N+/FpcWo6OjkCQJnuehVqvBNE2kUkkeY38uuZKQyEsJ27ex2F5MQCHHM+M7\\n5rAZroGVzgqCMGC5RBKkge/Rr9xEo1+pkk5vRFm47CmNLHM4VDgAL9yHhtVA3aqjYTeYQSRAJi1m\\nSOSJqSF1V+iy7ypwQiLfqaLKzJkpDMgNXFa0UTNnCl9jxxUGzNQ4LaUTEHAKPQXA4N4pKYWMnMFy\\nZxnLnWX4kY+6XYflE75KOVVGXs2D4ziS40QiACTyIvJqHqZLRBZoflEFFaIgwo98JgIznh1HSk5h\\nND2K28duh+VbWOmsYKG9gLbTTvjE2L6N883zcH0XmqRhKjeF20dvR0pMEeNOgXCFFGFzU5VO8eLX\\ne5BKGrA9JI1N+yOgMlnBurmeWEdLqRL2KHsQRcS3Zr49z1T0/NDHXGsOC+0FjGXGMJmd3LIBDBDu\\nJ8/xeHnlZQRRgJpVw+PnH2cNMlq8bAc53ipEXmRGrpRnRqf59Hxt9Xu0iKEG3i2ntUn+mgMHNT0B\\nPjCv5ZJYvO0Lmv4JTVzFiMZbqaBpWA2mOgKQEeR0bnpHxYwf+qiZtaQm/MZUhpLLgSSxm012uJ4C\\nThBu9suIexKks0C7CfiXsG8URSCb4yAIPDJCBlk1iwPlA/ACDzWzhoX2AuoWWdQtj8C1WkELbbvN\\nxrGSIBFFlpBMF+iUQRVUSKIEVSDTlYycQcRFCEAIlvB6vjMpOQVd0hNdMzumxU4/qz+oV0BOIUXN\\nkrEEy7cw05iB6ZvE6Cwzjr2FvZjMTRIJaN9l55oWRMudZSiiQqAf+ijqVh3LBvlZTslhND2K8cw4\\nm8bo0AEV8EIPLafFFM2iKOpJTfsuqkEVlm+hqBXhBA5KqRJLQIPuffq9aJKmXcr+bls84fdD0tjz\\nwwPDE8O9JM8BGTnD7l1JIIX5ZHaSmXRSI0o3cHG+cR5zrTlUMhVUshU2/u+fspRSJVTNKmZbswBI\\nd63ttHHL8C0XlfGOQ8ToH2CD+B/5DC5AHgkusWGh50/iJTaFiRvShVHIiML951cVVYaRj4bvgLP8\\nLMJLmNTwcg7K8B1v+kb5nRg8z6NSqeDChQsASD45cOBA4jVvpVxieRaWjKVEMVPJVgaua/0RhAFW\\nOisJHxKO41DUihjWh9nPtsolwMZ0M9zMGei9LkI6C7SaQODv/n4WRSCfJzlJERWMZkYxmhlFFEVM\\nnKXpNFkesX0id0y73FSlkInBxNY8SZCIBL8gQREU4tslSmyj7oUeEJI1IiWnkJWz0BWdnVvHdxKS\\n14POuSzIGM2MIq2kkVNzWGgtoO22mcnmencdY+kxwnVJ5XrQ741T7oc+MkoGr9dfJ+uRKGE0PcqO\\nXeAFaKLG1ChNz4ThGhjWh3HryK0wXROLxiLWumtYM9cQhAFySo7kEM/CmeoZnK2dxVBqCJVMBfuK\\n+3Bs/Bi57tuoi9JCbqsCdztIWjyXjOwdYYV0hAhFrcimihxHfGxG06NY665hvj3PuE1hFLLcPKKP\\nMM4xPWfxSQt93xNrJ9gx1awabhu97aLPCZ3Gx+FhdGofhAG80OvtubZQ0xR4oceNieWSKIpYXusv\\nqHRJR17Nk6amci2XxONtX9AUCgWkUimYpsnI/4VC0tDrrZKE6lYdK50V9ndFUDCdn94RLtRwjERn\\nHCALJu3SA9vjpOkmFuiRFSNEAzspPA9k84DR3h38TFaAfE6AIAwerdKE1HW7qFk1JmfcclrMRKvp\\nNOGHPlJiihmA+pGPMAxhBzYZx0edRLeNuThreeTkHFJyihH84ZGuSIiQbXYFXkho6/cHz/Eo62Vk\\nlSxySg4vr76Mjkc+s2bV2EbeCzzCAdrgM+kyMT89Wz+LlEy6c5qgwYsIERAgibAaVDGkD2FEH0Ep\\nVULX7WK1u8oW7CAK4PleQoSAcjocn8DZaIfQcAyYnskEBWhHbqtFjELS4vdEP8SiH5I2vzAPCABk\\nYHx8fOMe4ZFVskQmtW9BFniBwQdWO6skGW0UqLZv49T6KZxcP4lyqowRfQSyuBnXvLewFwBYUdOw\\nGzixdgKHhg8xmFx/4UKvLU1qVJp8qw4c7dDSbhudwvRz7Kiser9zOtCTp44/QxwvQhl7F5y1F3fV\\nXeO1YSjDt79tJDZ/HGNqaurHoqAxPcIlicMkK5nKth1rGh23g2VjOTHppFOZfmXNQbkkDjNjuSQa\\nbFzL8UAuDxjtCJ67842VonDI5wXw/OAGjS7r0GUdowHZ4FNie9NuompV0bbbBPLruwSStiF97wSE\\nGE/VyzifY9+XGmAqAmk6lfUyckoOkiAROGtMXIaZXHMcywFbRVpOQxM15JQcLjQvYKYxQ9TRHIOJ\\njfihjyF9iLwnT5pZpm+ibtVBVTF1WYcmaqyhEoQBum6XQdxyag6loMSg0qqkMjGeGyMimVw36zjD\\nnUHdqsMPyKSn7bThR8TL7JXVVzCeGcf+wn7sK+xDRslclB8TL24G8W3ikLT5+Xkiba8Do2Oj7H2G\\nUkNsQtX/GSPpEQzrw6iZNcy358l52zhnr9mv4eTaSWSVLFNF649SqoSbyjfh1PopJmlNfWooX4mu\\n//E/VHSCXiMv8OBF3qb3p98TIMdICxiaj/qj43bQslub8q4qqsir+aRH3bVckoi319EMCI7jMDU1\\nhVdffRUASUJvxYKGkgRpaCIZ+V6s4+yHPupWPdEV5jgOWSXLFLgGRbwTQDfT/f9O1cRoxBMXz0fI\\n5ghcwDYjeN7WC/Z3vvNvuOOOm3HDDXt21A2g8DhVVFEzawyiQIsMP/BhOAYMx0CEiEkn61ISE07H\\n8xzHwQ1drHZWsdZdgyZqDAKgSzokQYIbuCz5ZpUsum53k6paf8iCDFEQSccyAla6hDsjQsQra68g\\nq2QxkZnAeHYcwzqZXDTsBlY7qxA5oua2N7cXeTWPtttGx+2w46DGdykphYJWwJ78HoJ3bi2wqUYQ\\nEbx3SSvhrom7cKZ+BiudFdi+jbpdx/Wp68HzhOga591okoa0nIYu6QOLBRoUkiZGYmISFj+/fuhj\\nZmkG0ACEwNgYwVdnlSy7d+ObHqqjT6ctsihjMjeJ9e46m3bRmG/PY6G9gLJeRiVT2QRx2VfYB0mQ\\nMNeaIyTZ0Md8ax5HK0cTE00qlUkNYy/Go4knMIptHuQvAICp6PW/J4VKbtWM4HgRysgxBOYqfGN2\\n22T02JMv4tCd/wF79xx9W3XTfhzjYhDmt0Iu6brErDdezExkJy5KeA6jkCksxiOv5jGSHtlWJAQA\\nURMbMJGh36E/l7DOPR8hkwM8N4JtYdvC5jvf+TcUChruu++ndqySSNeprteFHxHJfkXf4LQFPlGE\\n3EAEUBWpfn4cBw6qRKasmqghiAIsd5ZRt+oENcBL0CSSVxzfIXA0joMiKIyHtB2HROBJc2o8Mw5F\\nUAgkzG1D4AgR3nANjJgj2FvYSxpYPlFUXO2uMiXQvEKQGG7gkikUeNa8M1wDlm8hJaUY9Jl6EQE9\\nT5nxzDg+sO8D+PfVf8fxheNY7i7DcA0UtAJEgcBxKe/mydknMZQawr7CPiIskN4aupQQXtiCbxNG\\nIS4sXgDSADhS0HAch5JWYmt/giccbua25NU8/NBHq9NiojgAYPomVrorDEHR37Ac0UegCApOV0+z\\nnL/YXsR7p96beC0tYJzAYTzV7YLneDZ9uVgusTwLTbvJ8jsNiScWGltNjHabS1JDN+D9P/Mzb8tc\\n8rYvaACShGhBMzc3h1tvvTXx7292Ep9yAlkAACAASURBVFrrrqFqVtnfqQLUxdSbum4XDbuReEAk\\nQUJJK10UokahRUBycgNs8GsG3Ov9r4u4CJLsQ5QiBAHgOhzCEIgigOOAf/iHv8ef/MlnMDNzFg/+\\n+oP4wl9+Ycvv069ORoM5CTsG1s11NC3ywGeVbMI7gS4McY+TrVyh/cDHmr3GNuhu6CIlbkDQ1Cx0\\nSd+kqtYvHS1wAuZac2g7bWSVLLlm+SnUzToutAi/o2k3CbGU45CVswBHrrUf+eAikuyoz09BK2Ai\\nOwHLt2A4vYW463bZvZFTcthX2IeG3UDNrEEWZKSkFIKQKMX5oc+kmTlwxERTkBJqb7QDZXkW1rEO\\nWZCRUTLQZX3rBXMDHz2Ib2P7NhZWF8j9IgDDY8NQBIURKZmaWOix3xmEry7rROmtYTWwaCyi6xFi\\ndQSisNOwiGrc3gIpAGl3aywzhnKqjDO1MwAI5v+FpRdwaOQQSz7bSWUCPVlM+mfQc9dP8HR8h02V\\n4iHwAiuSLxYcx0HURyHqowi9DoLOEqLARhT64HgRf/fNf8Jn/vSvcO7CMh56aBVf+MKxi77ntbi6\\ncTGRmTc7lxiOkZjyi7y4I5I0nejE116RFzGWGUv4xwyK+ESmHwUQ55HEI8FljEgu4ZUQkhwi8CO4\\nDhCGHMslz3z/e/jkJx/EzMxZHLnjCO677/iW34cS+ztuJyEvrYgKFFFhMvddt4sgDKArZN3vHRCR\\neaZFylZrAj3upt2EH/lMMl8RFaiiCl3SMaJvwKY4jklH9yuJ8hzPYHGqqGI8M468mkfLbmHeIByR\\nrtvFrD+LttPG3sJe8OCJJLNH4HNe6GE4PYwwCiELMvJqHhHIWk/XWj/0Sf4JfSiCgkq2go7bQc2s\\nEZEGUYPAC1jprkDiJRwcPohb+FtYs5T6psVzSdWsompWcXzxOINj7y/uRyVT2dYCYBDfxvEdnF0+\\ny8yHR0ZHUFBIfqRTl3jxshVXh8K6O04HS52lBGzScA2cb5xHUStib34vRtIjCbjXdH4aLyy9wBp4\\nzy08hyPjRyALMsth2wWFJNP3HHQOBuWSltNKGNQCZB+WU3MXff7oe26XS773/efx65/8fZy7sIyj\\nR4/iA/f/Pxd9zx/HeEcUNG/lJLTSWWGkPoDgIylZbasIwgANu7FJD59OZbarvPsN02gMktccxLnp\\nFxGgi7LAR5DEpIrY/v1jmJk5CwB49OuP4r/99/+GfD7P/j2MwoFFDP0cJ3DgBA4TAZjMTmIyO4mu\\n20XTaaLttAkZnhehSApUnpAiZUFGRs6wgodCDii/IYxChsWlKjJ+SEbqTuigalYhcAJSElGooXAt\\nVVThgPz+QnsBlmexQqecIj4DKSkFURCxZCwRqJecYnLPeZV4x9i+zQQDALCignbpckoOTbvZS7ob\\nG/Ku1yVJMj2C/YX9qNt1NsHquB1GRjc9E9P5afAcj2F9GCIvouuS4++HRbmBi5pZQ82skemQ3FOS\\nuxjfpm0TSfCl9SVAAsABxeEiVrpkQ0WTdr8EdL9UJ32tJEioZCuYzk+j7bSxYqyg43V605DAxunq\\naRS1IqZz0+z6Tuen4QYuTq2fgh/6aNpNNOwGDo8cHriRo2N/WsBcbAoa/97U7I7er3EoQUpK7QjS\\nMyh4KQ2+cEPiZ1MHGzh34Q8AAI8++ij++I//GLlcbtCvX4s3KN7KE5q208ZqZ5X9nUoFbwdZjqII\\na921RA4CSC4ZTY9u+2wMEpShQaFR8dcCm41547/LvLCkELK00ZDaeIvb77gRi0tzAAe88MMX8P0f\\nfB9Hjx5lOSsMQ7bG93vkAGTT2PW68EMixkK5QF7gsRzkhz5kQYYu60RhUyLmlYqgEN+3jQaO6Zms\\nAEEEiIIIESJc3yWQ1sBHOyAqXG2n3Wu0iRqDCCuCgpDrKT66gcsmOLIgYywzhlKqhJyWw3xrHuvm\\nOhARaK2xYrBixQkcdiy00UZzkMARDo3pmTAcgx0/PR+SICGrZDGeHidwM6tO1k+rCTsgCm8Nq4Hr\\nitdBFQk8LSWlMNOYYZLQcVhix+3gldVX8MrqK1BEBXvye7CvsG9bdVZa8HacDpaMJcytzQEqAB4o\\njBQw255lrx0kAT0olwAkp46kRzCZm4QbuFjrrqHltHqKqiAIAKpQSs07y6kybhu5Dc8tPkeuX9TG\\nEzNP4Mj4kYGFBUWyxGFkOwmaS1p2izXv4sezk73cVjEol9z6rjEsLD8MAHj++edx/PhxHDv29muQ\\nvSMKmu2SkG3bqFZJB1wQBIyMvHGKD0vGUmK8Tze5293ElPCXcI3dULTaDlKwm0Im/m8AWUjCMByI\\ngQV6XBsqR0h/ds899+Cmm27CqVOnYHZNfP3rX8eDDz3I+AZ0ckAXcgCwfItp38uCjJS4eWOdUTMY\\n0ofI9MH30HSaifGvG7ioWTXUrTo0SUNBLWAyS5TDHJ8ULPQ8eiHp4EuQkBJTkAWZTSCcwIHZNRnk\\nTeAFqKLKFORo906XdBiuQYzHOAGj+iiGUkOwfRvLnWV4gYe17hpOrp9E3axjMjeJolrEeHYcutSb\\njNDpRxRFrNPvhz5L0LSQoNCxcopguGcaM6wLmFWysH0bs81ZFLUieI7HnvweFLQCClqBdS+7Xpfh\\nq2l4AfHJadkttkHXJR2yIDPYBv1DYRqO46BpNElXLQBKQ6XEfdHPt+nvXkk8gXf081IySgaVbIV0\\nKVvzqNu9DVfNrGG1s4qUlGLGgAWtgOn8NF6vvQ6AdPReXn0Zt43cliBtxnX9dxPUB8jxnU3PkCZq\\nTNnuSsY999yDm2++GSdPnkS328Wjjz6K3/iN37iin3Etdhdv1eZY025ivduDmsiCjEq2su29TkUD\\n+ifRo+nRbeHKFy1ktmiEAL3JzaDOOtDLJRzHsYlwhAgjwyP4+Z//eXzjG98AAPzVX/0Vbr/jdrTc\\nFiti6IaX5jLLt0hDCAFkXh4IAZUECVk1i7SUhizK8EM/ASENo5AJCYi8CE3UMJoeZZ5fbafNGmb1\\noA5REIEIrGGycaYYNLVm1dj3TEkpRCAqa6qoEllpkRDLbd9m0thpKY2h7hDmDSLx3LAbqJpVLLYX\\nMZYdQ0krYSI7AU0k+YhOAKgfThiF4Hme8QfpdaJiMXZgI6NkkFWymGvNwQpIozQlE7TDancVaSmN\\nMApx49CNODRyCIdGDsENXMy15nC+cR7n6+fhBD3Yu+M7eK36Gs7UzhAxikwFe/NEKEcRlcSkpWW3\\nWEG93FgGZAA2MDYytuneiPNtBI7I5yd4LfyGzHHfLVjJVmB5FuZb88wXDSBF2Im1E2QamR5DQS1A\\nERXcUr4FL628RI4lcPDC0gu4Y/wOJnKz2wImHvS+MRxj034qTvi/klEul/GRj3wEjz76KADgL//y\\nL9+WBQ0XDVqV3mbx1a9+Fb/6q78KAPjFX/xFfP3rX2f/du7cOVx33XUASOGznQP0lYooirBkLKHl\\n9JQpskoWlUxly01RGIVoWI1N3ae0nGbSjlt9Ft0k98d25onxzx2k0AGgpwS1FSkQHL74xS/ioY8/\\nBMjAvgP78MR3n0i8nhLB7YBAs1SB4JT7N7hUKUaTNKiiummSZPs2GlaDTFmCzZtOKl9MoQAiL6Lt\\ntBl/xo98NsanZEz2/huFnBM4WGoTngddiKj8piIo0EQyoSmkCiioBbiBi3VzHWfrZzFTn8GCsQDH\\nd5DX8jg8chgfvP6DzKU77oFg+3ZCjIGSDvsjiiIoIsFou4GLul0nkw5ewlJnCWEYQuAFTGYncbB8\\ncNN1opv0jtNB22kziFgQBggQJAw46XlLSSl4ocfG4/Nz8/jgfR8EXCIIcPz48Z4aGr+ZmE83HHEz\\n1P5jGtTFbdpNzDRmiLxpnyyzLuuYyE6gpJWwZCzhTO0M+7yCWsBdk7szTOv/bIqv7/85vR+ZJ8NV\\nwCQ/8sgjeOihhwAABw4cwOnTp9+W2Ocfl3jllVdw+PBhAOR6UCgzjXw+j1aLrOtra2sol8tX/Ts1\\nrEYCsqyIyraQnzhUKB5pOY2xzNiWm7TtCpmtZHgHvcdW77vdfc2Bw/PPP48777oTUAApI+GJ7z2R\\n4MOGUQjLs1hzi3IF+599juOgSzoySgZpOb3peIMwgOVbbHKyqQkIDrJINs/UTLfrdpm6lRM4EDgB\\nlmeh63U3qR7SIsfyrJ6qIsDEBmiOS0kpJiFNoW0zjRm8tPISVruraNtt5NQc9uT34P4b7kdZL7M8\\nQpXeqKJb3EQ7jqKIBw+ewOdCn/mb5dU8ZluzJCeBQzlVxpHKkU3njEron6ufw9n6WTSsBjMs9kMf\\nIXoQ96JWJGiL3GSiQQgAH/wPH4RZNYEIePbZZ5Ev5CFyYqIhFZ+sx81bt7qv+qPrdnGhcQGLncXE\\n+afXoJKpYCQ9gqbdxA+XfwgArJh9z9R7ElD33UQUES5r3DuO/lwTNeTVPEMUXI01/vnnn2dFjKIo\\nWFhYwNDQ0BX/nDcz3hEFzeOPP44PfOADAIC7774bTz31FPu3J598Evfeey8A4N3vfjeeeeaZq/pd\\nooiQ6uKENUpU2+omtn0bdauewG8KvMCI81t9zqUWMtslLqA3Fo1jQfsXDpoUqs0qbv2JW9E1yFj1\\nb/72b3Dnu+5kUxoArDvVf/yiILJNtCqqO3rIgzCA6ZmoWlV0nE6i++gHPvzIZ/KKeTUPXSbFTUEr\\nJM6JG7gwHOIS3XW7aDktzLXmmARzBOKSTTk5lORIO11pKU1gClGEmlnDufo5vLjyIsIoRFbJ4vDo\\nYYzoIzhQOoDJ3CQzV0tAMHiekfc5jmNFG4WNUXhVhAh5JY9yugyJl7DaXUXDaiQ6tuOZcewv7ocq\\nqgMNJ2lhSbuatIDqP+e0E6pJGnRJx6svv4pf+L9+AQiBu47dhe89+T2W7Ghy3Y7D0i8Bzc6/78IN\\nk87L9POXjeWEgAZAEk5WyWJPfg8A4NVqb6OZltM4Wjm6q6KGQh5Nz9z0HFDu0nZTzSsVnU4HlUoF\\n7TbBgT/22GN4//vff0U/41rsPBqNBopFYlKbSqXQ6fQgkYZhIJslkw1FUWBZ1lUvPmtmLQEXU0UV\\nlWxly/Xd8R0sGUsJvH7cOHirGNTYAnZWyFxsi7FJLGBALqGcmA/+xw/iRyd+BAD41Kc+hV/+1V9m\\nUDMqEJOSUpuKObo+5JQc0spgX65B39sLPDahSTS5YkR/gEx6aHOjv0iiMFX6p+t20XbbTIyHFhyy\\nIPfI8lGPj0HFCHjwaNgNzDRm8Ozis3B8BwW1gOuL12MkM4Lp7DT2FPbAD30YrpHYL3Ach5SYYsdO\\n8ySdqkRRhNXOKpzAgSIoyCgZohy2oTY605hh16WklXBz+Wak5NRA00kqVLTQXsB8a54of2Lz2uj4\\nDvNFqmQrGBKH8JNHfhLwAVmU0aq1mLXBVipp8RgESQNI3ndDlzUG6f3oBR6WjCWsdlcTOYpOzKbz\\n08jIGby08hJrokm8hLsm7tp1UWN6JisW4yELMpsKDULPXOk4duwYnn/+eQDAn/zJn+B3fud3rvhn\\nvJnxjoOc9cME3kiIQBRFmG/PJ0ySCmoBY5mxLV/ftJubTJV0mYwlt+pKbFXIxDs1W33edgvGoMUi\\nDiXwA3/T4q9oCj788x/GV//6q4AIPPL/PYKb7rgJqqiipJWYpCP9XEmQGIQnvgENogBcNHjBigeV\\nXM4oGbiBi7bdRt2uo+t2GXGTTkGadhOqqGIiO7GpaKKS16VUCa5PPFIkXmJJico+CyCJiEdP2SsI\\niUlXt0X4L4ZrYKW7wrptVGZ5ubOMZWMZGTmDfcV97JrG+Tvx60VxzJZnoWpW0bJJp4fjOHS8DmRb\\nJtCrHFmIDcdAzaoxztVadw05lciN9hfCPM8ziEFRKxJVMLcL0zeJYRwnwA1cdgwUi7yyukIkmwNg\\ncnwykcipBLQEiRU2/fcXhaQxiWiq34+eBGx8g5OSUthf3I89+T1YM9dQ69Z6JniIMNOcgSIoKKVK\\nWOusQeAFdNwOji8ex9HxozviuNBj7/+uIi8iJaUSvJyt/AWuVKTTafzyL/8yPv/5zwMA/uIv/uJa\\nQfMmRj6fRzqdRqfTgWmaqNfrKJUIzJKZAuKNMdWkYhk0NEnDeGZ8y816zaxh3VxP3LMpKYXxzPiW\\nogFvVCET/xkHMukwHAOGayRQCb/4S7+I3/1/fxeQgEe/9Sju+/B9SCtppsIWJ4pLgoSMTHIB9YAC\\nNuTouZ7p8nbfTxZlyKKMTJSB4zusCHC8npmj6ZkQBQIFzik5Qq6PqaRJgoScQIjq9LgoBM3yLTbJ\\nCKIAIrdhsRDjmXacDtY6awijEFWrimqnCk3QkJZI4SSLMgzHwIm1EzhTO4Pp/DSG9CF2DSRB2lRk\\n0TyphRoTnqHFjRu6EHkRQRRgND0KTdTQsluYaczAizyiFtpZQ07LoagVN0t5cxxKqRKKWhG3jtyK\\nrtslxU17HmtdsiZ7oceEXWpWDYZrwGt5wAiABjBRnIAqqYn3vJhKGoWkUf8j2qyj63j//SgJEqbz\\n08wvjjbJ6D2x2F4kEEx9FAsG2Sd6oYfnFp7DnRN3btsAoOH4Dpp2MwHHA8DMUePnrl8s4ErnEgB4\\n+OGH8Su/8isACGzzt37rtyAIVxbe9mbGO66gWVhYQBAE7CK+UQVNGIWYb80nCGAlrbSl1KHjO4yk\\nR4PneBS14kCXZ/qQDypI4qaYg35vp9OYQUEnMZuI/RFYx/+DH/4gvvo3XwUC4Ml/exKdWge5Culw\\nUDlMWlDwHD/w+/R3aOjxbPfdZEHGkD6EUqpE/AfMKpp2E0bX6GnIRx7WzXW0nBZSUoqZd9FiyvEd\\nzDRn4IUeG3XH3ewdnwgXqKJKPHDcDgzXILAGWWdFj+3byKk5iBxZyBZaC7B8IiqgCAqWjCXsL+7H\\nvuI+ZOUsg4NR5+C4Zr0iKCioBUJMNW04gYOUlELdqmPdXGcS19cVr4NX9VA1qwijEHWrDpEXYXom\\n0+WnGxlqOBpXcaP/9UOfmOy5baKas8Fv0mUdS8tLgAJAATKTGSwby2SqJOuJzQKVgKYFt+u7cAKH\\nKdfE79s4JI0lMvA9M8sN+cuxzBi8wMNCewFLxhLrslExCS/0ULNqKGnEy+f44nEcrRzdcqpJO6n9\\nXTRahA6a8MQVf+L36pVMRB//+MdZQfPP//zPmJubS3A5rsUbFxzHYXJyEqdPnwZAGmS0oHkjm2Nr\\n3bUEVIcWJoPuO9qJjhcGHMdhWB9GUSsOfP/tCpnt1txLKWJobKVOxoEjUDKvg1vefQsyYxkYNQPr\\nM+s4/eJp/NRP/hR7XVypMjHxiH9HRIkmGuVwbtcs4zkemkQabXR6b/kWmlazt8lGCDdwUTWrkAWZ\\nyEOLCltjKQwsQsS4fKVUiTVZ6DTIDVwmVND1unBCB4IgwPeJ103LbUGRSA7IyBk0rSbqdh0CJ0AS\\nyIR+IjuB60vXo6AWIAnEEJQ2jeK5RORFkrsCD57vwQ6I0lrVrDJTVkUkDaKG1WDr7Jq5BlmUsRqs\\nsiYYXR/jhpOyIGMsPYabyjcxv54Tqydwev005o15eAEpbHRZx+uN14ESgBLA7+fxv1/939hX2Ie9\\n+b0J6eR+lTTaBKMTmMRkKgZJo9c27lFGc0lZL+PA0AGsdFYw35pnyI4gDJiYwEpnhU1mnlt4DndW\\n7mQqpf1B0RP9FAGe48mUUE5vWdBfzVzykY98BJ/61KdQq9UwOzuLf/mXf8HP/uzPXrH3f7PjHVHQ\\npFIplEol1Go1+L6P1dVVZgAYn9hcrSQUhAEh28U8NsqpMsr6Znx1FEVoOa2EdC8ARm7vn7BczUJm\\nq+7VVkUMVS2zfAuO70AWZKiiimM3H8N7jr4HzzxN4Hzf+MY38F9/778mihigJwfdP2Ie9B3DKGSO\\nyf0ymJuOdSOBjGfGmYFZy2nB8i1oIikO6bi87bTZyF0VVax2VnvTAkSsQ0+/E5148BzPVG0oSdT0\\nTKx0VtCwG8RFWlAZV2qtu4blzjKq3Sq6HpHfXu4s41zjHG4cuhFj6TFoIsFSU0I+x3FA1Fss2VQF\\nGpNGptG0mzA4gzmDN+wG63iW9TL80EfVrGJYHyYk1wEdWkrepcacKSnFNggRyM+XV5bZ60dGR9iG\\nhMqA6rKOtExgDhQ+5gYum9bEDV0T1xaAAIGdg/6pCL0mkiBhb4GQTZeMJSy2F9l5yKk5BFGA07XT\\nKKklDKWG2KQm3hSg8Is4PJHeV5QfdbGkcjUT0Y033oj3v//9ePzxxxGGIR555BH80R/90RV572ux\\n+5iammIFzdzcHG677TYAb0wuoapkcSnatJzGaHp04P3WsMhkNv6MUWngQdPKrab0V6uQ2aqIoQ2d\\nrkvWUerrNF2axod/5sP4ype/AgD4m//1N/jQ//EhZGTCh2EcBGpBwPc2vlvlSfozKv6ynVAOjYyS\\nYYImTuAQueaNdSKu3inyIhSByDjHu/R0faRFFwCWL+l7UO6eHZBpzrKxTEQEeIFB66bz0zAcgxUy\\nlmOh7bRRNauYb83j+tL1mMpOQZVU9lmUM4qIQHuXjCVmCEk3+/G9iu3bcHwH45lxRIjQslvoeB3U\\nrTqm89OQeAm2bzOPm60argAh4Q/rwxjWhxkvqGk3MdOcQaPZmzbm8jnMteYw15rDd/FdDOvDzO+m\\npJU2FTBbQdJonqDS/IqgEOGG2PeKv2Y8M46x9BjWumuYbxERBpoHhvVhvFp9FSk5hXKqjB8s/gDH\\nKscSTYEwCtGykx44AFiTMatkLzrZHJRL6M8vN1RVxcc+9jH86Z/+KQAy8b9W0PwYxtTUFGo1guWc\\nm5tjBc3V7qoFYcBIdTSoA3x/uIGLulVPFAk8xzOux6D33m0hs1WBAGyftLYqYuL+MRR/q4oqMnIm\\n8eD+l//8X/DME88APvC3X/5b/Nnv/1lipAwknaY3vgmbhMTHzDud3tDPj+voRyCuyXk1z9RWGlaD\\nQatoImnaTabHn5EzxOxTjXWhOA5pOY2CSjo0HbfDiOOqqEIVVZT1MsYz4/BDH7qoI0SIIX0ImqBh\\nWB9GQS2glq6h2iWqa37kY9FYxLKxjFKKbMA5jiNu8yIpKGSeqLCFCCFAgCIpGNKGIPAksRquQcQA\\nNhJTFEVIy2mk5TQUQUHNqkHmZZZ02k4bXa+LcqqMolZM4tkRwXCNxMQiLacTCas11wJsADIwOjra\\nu89Ckqyo7wGdcuiSzjZScUhaFEVsStQvpRxEAUI/ZFC3QVKdIi9iKjeFiewElo1lzLeJfwNNNufq\\n51A1qyhqRTi+g/dOvReKqPTkV/tCk7QETGUncTWLmk984hN4/PHHAQBf/vKX8Qd/8AdQ1cGTpmtx\\ndWMrCPPVziVRFGGls5KAIGeUDEb0kc28gdDHsrG8Ca48lBpi60r/e1/pQma3RQyFb1GoqyIoZJOs\\nJoUKfuGjv4D/+YX/iciO8Ow/PwtrxcLUgeTEcie55FKmN3QtpIUBndpQHxPaGKFTAj/0iX+LuQoe\\nfCI/0nVQ4ASi3MWTSY/jO4QnCWIMnREyyMk5YtoZOKxBl5WzrOGlSRqKqSLWjDW0vTb80MequYqV\\n7grSUhrldJlNJeh3UISe2hhAPn8oNQRZIGpvTuAgCIPeZJyXsK+wj6iHihoM14DES2wv44c+FtoL\\nyKt5FLXipuZr3SLQbxq6rGMqNwWO43Avdy9e++fXgAUABQLtjN9jy8YyFtoL+M7Md1ghtye3B2OZ\\nsQRag+Z8mksGKZH1m5xushDgOIykRzCSHkHVrGKuNYeO00FaTuNg+SBOrZ9C024ip+TQdbu4d8+9\\nKGpFGK6BttPe9BylpBTzTttp9OcSeh6uRD558MEH8Wd/9mcIwxCPPfYYXnvtNRw4cOCy3/etEO+Y\\ngmZychIvvURk+Obn53HXXXcBuLpJyA99zDZnE52Z0fTowDF/22knIAQA2RgPWhi2KmToKHZQsroU\\nWFmcKB4vYuIjcS/02ALZ332I82H+0//5n/Dp4U9jbm4O9Wod//DNf8ADDzywrXwn/e793badTm8C\\nEFyyF3jgwMFwDJZEVEll0qRFrQjLt9CwyBSjYTWw2FlkpNCW3UJezSMIA2SVLDRJw0h6BFklSwiY\\nfapoHMchI2dg+zaWuktEHpmLkJEzuHnoZiYk4IUe9oZ7sW6u4/X661hok3sxRIg1cw0dt4NRfRQC\\nBDT8BupmHVZAIAmKoCCv5DGWGYPt20jLaWTlLEpqCW7ossRB1d1WOiswPZMtrLIgJ8bq1A+JHheV\\nlqRy0FEUDTTfXJ5fBkwAJnDz9M1QRGWTtj4ABEEAN3DRtJsQOCJJndfyyCk5phREr23cuDN+P/ih\\nDx8+g6TRwr2/y1bJVjCeGcdqdxVzrTlGnD1bP0sw6GYVs81ZvG/P+zY9i4qobEn430lcre7a/fff\\nj6mpKczNzaFareLv//7v8cADD1zWe16LS4s43C+uink1c0kURVjuLCc2hFklOxCy3HbaWOmsJKA3\\niqhgPDO+6fndjje53XR/u9iqITaoiKF8ta7Xhe3bUEQFuqQTZ/rYBlDkRaZKduPQjfjZe38W//RP\\n/wQAeOSvHsHnPve5XeeSuCz0TqY3iDamOBuFC1XiFDiBNRw1UWNNPtoApHy8AARq64c+mfZHBMaq\\niAp4nmcqbW7oJo5DERTYvo2O20HdrBMYmKzguuJ14Hky+XZ8h0CZpDQW24uYa8+xRo3t2Wg6TQyn\\nSRPNCzzGI23bbcaxqWQqkHlSKFEOKz3WuDJahAh1q07EFzjSZKJw3wgRGnYDbaeNolZkPJOqWWXq\\nnQAYvJtdoyhCY7EBLAJYBD7wax/AXRN34Wz9LObb8wjD3rXpuB2cXDuJk2snIQsypnJT2F8gcG2q\\nYEo/ZyvzTWYEG8UgadRyIvZ62gBoWA3MteYQRRFuLt+MU+un0HJaaDnEVuBY5RgmcslnnhpnX6rC\\n5tUqavbs2YP7778f3/rWtwAAR+mafwAAIABJREFUX/jCF/C5z33ust7zrRLvmIJmK/+Aq5WEvMDD\\nbGs2AWOhDsD9r6tb9cTrOI5DXs1vMnKiEJ3+2K6Q2S3Jf1ARQxWfaBETRAHrnvW7KCuiwoqY/o7E\\nQw89hN/93d8FQEadDzzwACum6OfsNCHFIQHxRat/M0l9Q2jnJIoigEPi3Aq8wKYYdauOlt1CWk6T\\nJLLRmQE2YFyugbH0GNo2gZYhAuN6AEQFJSWl4AYuVjoreHHpRTSdJjRRQ0kroWE3WJGhCyQJDulD\\nODB0AKudVZyqnsKqscp4IAvGAob1YVTSFeLl4gmAuGHoJYhMpCAO8UpJKaTEFIIoSBi7rXXXem7U\\n2XFM6BNY7a6y6+wGLuZb80zFK775ySiZhBILVfmZW9kwQhOA4ghR3VPTKuu2UhM6AAzjLQkSRI5I\\nnVqexcw8Ke+G+u3EIWnx+yK++ehXSaP3AcdxGE2PYkQfQc2qYbZJDNpOV0/DDVwstBfwdyf/DndV\\n7sJ1pesYufVSfAX642okIkEQBj4/1+KNjzd6QhNGIZaN5UQhkFfzmyDLtDERh6MBYMaL/WpiV7uQ\\noUa/hpMk9tNNftfrkubMRhEzlBpKPH+KqDAoWT+M6eGHH2YFzde+9jX84R/+IdLp9GXnku2mN1Ss\\nxPHI2kw3qmmpl0s4jmNrnCqqaFgNBFIAx3fgBR4UUYHACwzGJQtkWk65ijzPM7NJKsHvhz7mmnM4\\nsXYCy51lIjrAC4QvuaFepogKFFFBWkmjkq3goHMQM80ZLLYXYQc2mRIZq7A8C9O5aeiSjjAKUdbL\\nTOxEl3V0vA46XoeZiVJDUJ7jYfs2QoQoqkV2TQVegORKuK54HWpWjRVRQRRg3VxH3aoztTYaGSWD\\nvJpP3E9+6OPC4gXiQSMAY+Nj2F/Yj/2F/czvZrY1i7nWHLzASxg2LxlLWO4s4/sL38dkdpLwbgp7\\nGdSZCg/R/UF/o4xe8/gkrn9qQ33c2k4bcy3SxHhl9RXSiA5b+NaZb+HwyGHcVL4Jw/ow8mp+IPRu\\nt3G1ippPfOITrKCJPz8/7vGOkG0GgM9+9rNMou6Tn/wk/vzP/xyu60JRNuAvPA/btiFJg9VedhNu\\n4GK2OZvgNExkJzaZlRmOgZbTStywVF0rvrDvxhTzUqYxg4qYOA6Yjr/pJCZexHAcR/w4NrgO26mo\\nra+vY2JiAq5Lirfjx4/j6NGjA1+7VUJKHEuMc9P/e2EUsiTi+ASKRSFEOTXHuk/x0TNdrCiBsmE3\\n2CSDLtRFlZhVdrwOgjBgBYwq9WAElES/1F7C6/XXGenx9tHbkdfyAyWoKUTMD30stBawYCywIpdC\\n5qh7tRu4rCiiinZU5z9+3XmOJxOpjc5iGIUwHIMlzcncJPbm9zIj0iAkk5GOR+SjM3KGdKj0HgyB\\nyXP6LhzX6TUKOOJJI8u9blTcfMwLPGbmudVGqp93E38GtlJJi98LcUha//3jBR4WjUW8svIK/n3l\\n3xEiZOTVW0ZuwZ78HkzlpnakXLPT2IpUfamxm+fnWly9eOKJJ/DTP/3TAID3vOc9ePrppwEAhw8f\\nxiuvvAKAeD4cOXLksj+L+nvEfZAKWoE5m9PouB0sG0mPJkmQMJ4ZTygpbZcfBhUyl1PEWL6V4OFR\\nXqEf+qyI6W8ipKQUm8RsaxQdhjh48CDOnDkDgCg2PfjggwNfu5NcAmz2VIvnkrhiluEYbApA4cXx\\nzTCVRe43exY5EX7Ug3JRYjtVOwujkJkMy7zMpjbVbhUL7QWcrZ8FQK7/9cXrUUqVSDHUl3MFTmA5\\numW3MN+eh+VZRKkyJL46VIzGj3wInMBgiDx4ZkrZf+3joj0cOCwZS/TEYTg1jOuL18MPfdSsGrzQ\\nI0I0Zp2hOEqpEob1Yab2Rnkw1OvnnnvvwemThJv27ce+jdt/4vbeMW2YMPMcj/XuOmaaMzjfOL+J\\nqxKPYX0Y+wv7sbewN/G8bMW3iUd8XzAolyy0F3Bq/RSeW3wOvk/4rTzP49DwIdxQugFTuamB0M7L\\niUH7v0uN3Tw/P07xjp7QLC0tsZ+Njo5ekWLG8R3MtmZZYuHAYSI7kVDpoDrtccMtjiMu7/Gi50oX\\nMvHXDypimMnlhtElQMamWSWbKGKY4stGEbPTB6tcLuOjH/1owq32a1/72pbf91K6bfHfo383PZMV\\nMLQgo79HR+VNu9lboEE2CJUMcdqm0DoePGp2DVWzmpiUiRzxsem4HZacu24X6xbxgZEECRPZCUa+\\nj6uJ0b/Hz+GwPoy91l68Wn0Vq91VcCI5hrpdR1ko40DpAEqpEvOM6bjEb4fjOAbXolKgdCMUIkTX\\n6WLVXEUQBNAkDQ2rgZbVQlkvI6fk0PE6WOuugQfpfrWcFmzfhuEaTJK6d2KBlZWV3nceHoamaMxs\\njp5vGqqoMhNRCp/oet1N3g50qrPeXWebnrScJp3NDYhIGIWbiputIGl+6LPPycgZvGfqPZjMTuKp\\nuafQ9boQeRHn6ucgciLqVh05JYep3NRAjttu40p313bz/FyLqxdv1IQmCINNnjFUDpdGGIVY7ayi\\naTcTv5tX80zKGLi6hcygIoYKbdAihqplZZVsooihXEQ6idmpQzrP83j44YfxyU9+EgB5Fn791399\\nS+Woi+USAInzE+dXUFgreNKEpE0T6ldCf5fC0uh0mnJ3wIHBsR3fIeqavoeG00DNqiXQGTzHJ/Iq\\nNbmkJtyqqBLfuiyBD0q8xGBriqCwCRCNSraCvYW9ON84j4X2AriQg+maaFkEhbAntwfT+WkAYGuv\\nF3oJKC+dVtH7kCI2Om4HTbsJWZDRtggCYlQfZaqS55rnGNzb8i3UTeKXRMUS+q9RfD82UZlgKmlU\\niYzGVH4KU/kpvG/P+7DeXcf5xnmcb5zHurmeeM+17hrWumt4duFZZJUsExWg0ubbSUD3Q9KolHjL\\nIYR/gRdwaOQQJrITeOL8E2i7bciCjNnWLBRRQcftQJM0TGYnE8/h5cSV5Gju5vn5cYp3zITmmWee\\nwXvf+14AwJEjR/D888/j6aefxt133w2AGA794Ac/uKzPsH0bs81ZtknmwGEyN5mAN3VdomgVP+2S\\nIKGklRLyjjs1xdwNyX9QEeMFHiti3JAsrIMmMSIvsiJmJ14eW8Xx48dx5513ks+5BLfanU5ubN9m\\nPBA/9FkXraAVNiX2mlnDbGuWTaXadhtD+gb8IQJ0RScbfqfDsN6GY8AKLEL0lBQGQ6ALpeu7WDAW\\nkFNyqGQruHvq7kRRu+k7D1hIvMDDbGMWJ9dPssWaA4diqoiDQwext7CXJYY4xIsazVG4HStyIh+u\\n72KmMQPDM4CITFGGUkPEb4GXkVEI98f0TQZloN2xsk6EA+g98fzx53H/ffcDIXDk9iM4/tzxix5T\\nfzi+wyY3g8j5NBhMT9bZpG0rvg3QU0nyAo/B0ijcUBVV2J6NZ+afwUpnBS27BYEXcHDoIFIy6Wan\\n5TSmclMop8pXZJG/Ut21y31+rsXlh2VZSKXIfSIIAhzHgeM40HUCIRVFEY7jMI7FpUQQBlg0FhNN\\nr7JeTkwQTc8kClWxpoDIixjLjLGcs10h09/koq/fKi5WxMSnsFQla9AkRuAFVsD0y7vvJlqtFiqV\\nCrpdwiv67ne/i/e97307/v2dTm7CMESIkJH1qcqlLulsikLDCzw07AZDB9DX06D5wfEd5kHjBE7P\\nt01Q4EUeHM9BCMIFNT0T8+15qIKKvcW9ODxyGOOZ8YHfdSs+bBQR3suPVn+Es42zRCGUAzJyBgdK\\nB7C/tB+KQPI6zYNu4PaU1mLFDC0AwijEheYFZpzJczwms5PQRA2u7zLRnY7bIZ43EjEHpSiJolZk\\n94Rt25gYmwBC8j6u5Saen52sl4ZjsOJm0VjccgKjCAr2FvZiX2EfpnJTrMG5Hd/GcAyiPMshUeyl\\n5TRkXsbT809jvjXPTG5p0xEgz8BEdgJj6bEdF+zbxZXKJZf7/LwV4x09obmSHTXLs9imGCA3/VRu\\nio37KYQpDh0AwKYy8Q3axQqZ3cDKgjCA7fWKGNpdoYuzH5FJEp3EKILCPofiezVR29J4bbdx7Ngx\\nHDlyBC+88AIcx8FXvvKVXbnV7qTbRuEBju/A9myGZdVlnf0bhU+tdFbYZMYNXFieRSRQNzoyGTkD\\nRVDYQkWxyjk1B1VUYXkWamYNkUCUZ3ieR9fpEuzwRncvDgsY1LWnx0L/nYYkSJguTIPneZypnsFK\\ndwUCLyCMQpyqnsJKdwU3Dd3EIIr0XqIdV7rB6LidxCRHkzQsthfRdJpo220sd5YZzhgg90JOzcF0\\nTXbMmkgM2NY6a2xxbq20gI3m4tTEZl+UnRDi6fksakUyTdn4nnSTFL+mVOKT5/gE70YUe3wbP/QZ\\nGZf+PoWMaJKGjJJhxqV3T9+NF5deJNM0cx2na6dxoHQAaTmNjtvBqfVT0EQNU7mpy+6yXanu2uU+\\nP9fi8kPTNJTLZayvryMIAiwvL8Oyeut6pVK5rGLGD30sthcTnXsK1QF60s10TaKRVbIYTY8mpIp3\\nUsjsdBozqIhhDQmvy4ovRSRkaErQBkguoVCyfiPGS41cLocHHngAjzzyCADSZd7Nhqw/lwDYlE+i\\nKIIf+ezYKRdEFojapOX2fGO6bhdNp4kw7G2MdUln0HP6WVQkiEKCFUFhZpwdvwM/9JGVs5B4CYZr\\nwPIspKQUm25RKBMHbiBvNEJEVNNikzeO41BQC5jOTyOMQiy0FxAiREpKYd6YR82uYX9hP8bSRDWM\\nyvSX+BIzLLU8q8eL3LBm2F/YDw7E2Nl0TVxoXoDMy2xfIUBAQSvA9Ey0nTZrlFLPtmF9mPAcF2os\\nl0xOT256fnaSSzJKBodHD+Pw6GGGlDnfOI8LzQuJZ8kJHLxafRWvVl+FwAmYyE6w6Y0u64nJVMft\\noGW3WJMaEXmuKCdWEiREiHDvnnvx7PyzaDkt1MwaXq+/jiAKUE6V4fgOztXPYa41h0qmgkq2cllc\\nzSslPJPL5fBLv/RL+OIXvwhg98/PWzHeMRMa3/ehKApTy7BtG5///Ofx27/92wCA3/zN37xkpYeu\\n2yVKHDGi8lRuim2kTc9Ew2okOgbUVEsW5G0LGUp+A3ZO8u+fxERRxDZ5jr/R+QHYiJoWMRzHMTIg\\nJR5ejfjrv/5r5lY7PT2Nc+fOXbZbbbzIazttOL6DqllFhJ4cMO1a0ge/alax3iWTD9M1YQUWxvQx\\nRvLPK6Qb6oc+MyMTeRFZNYusnGWkVloIURhV02riTP0MgjCALuu4uXwzcVze2FBTwv3FuqFBGKBp\\nN5nxZMMiXjVx0q8kSJjKTeGG4g2JydlWMBIKE5hrzWG+NY+G3UDVrEIRFDbFkAWZTTJkQU6YadJ7\\nI6tk8dg3H8NnP/NZIAA+/uDH8ef/488HilPEz/lOg05YaDG2E96NyItMRSgOSaMiB6yo3ODb8ODR\\nclp4YekF4uOz0V0tp8pQJTXR6VQEBZO5ycvusl0JXs3VeH6uxe7iyJEjePHFFwGQ6b/jOPipnyIG\\nj3FezW6Dcr3iU5fR9Cib7lqehSVjKbFBE3gBo+lRBle+koUM3dTRIiYMQwZ1pfAkoKcOGC9iNElj\\nk5jLmepvFz/60Y9w6NAhAGRaNjs7i0qlclnvGW+E0I173aozLmkQEshufH2gprwAmegEUUAKt41H\\nm+d4NumhMDGRF5GWiPS/E5IJfxiFhPcZOHA8ksPONs7C8izktTz25/cT7xehB+0VOTHRkOoPes1p\\nQwgAul4XbaeNhtVgRRwPHsVUkTV14r8/yP/O8R203TaW28t4tfYqDMfAancVukhgwhEipBUywRAF\\nERIvsamUxEuMf6TLOi6cuICPfuijQAS8+93vxvee+l4COh6P3a6XdNpJpzf9UubxGNFHsK+wj63z\\nNPfScyQLMvJqPiGYw3M8EAF2YOO5hefQcQm/tmE1mEVE/F4ReAHjmXFMZCcuWQENuDK55MSJE7j1\\n1lvJ97pCz8+bGe+YCY0oiqhUKonpzJWY0HTcDuZb8+yGFzgB0/lpqKLKNqH9brFpOc2gA9t5ydAN\\n5k5gZXQDSIuYOB+GatcDm4sYnuMJqV/SEiaXVzP63Wr/9V//FR/60Id29R606+4FXmLqYvs2XN9F\\n223DCzxSOPARslI2wblZ666hbhIFFsM1wIPHdYXrGB65qBXhBV7i2vAcj4ycgRM4WOuuAegpzOXU\\nHMYyY+i4HZxeP02u/0YHLC2nWReTdqnoz3VZZ+TQeARB0uxREiTcMHQDri9djzO1M5hpzhBjscDD\\nufo5rHZWcXDoIHMLZ9LVUcAMLeObj+tL10MSJNStOiayE7A8i5FCaXeNA4cQITJyhvjKOE0mvbpu\\nruP52vPAPgAGoIwrmGvNQZd0qJKacGOOH99OF1ye45nyHC3I6fQmTnyOooh4Bm3I1CqiQpTexJ7n\\nDSWyst/Z4NsAZGp3x9gdeGmFSLoP68MAiDIUhSty4OAEDs7Wz2K2OYuJ7MQld9muBK/mSjw/1+Ly\\nYnJykhU08/PzTKgBuPRc4gYuFtuLPf7lhlIffQaqJpEcj0daTmMsM8ZUAS9WyOymiKESy5QPQ722\\naLdaERUUlEJCKpdy3jJK5oooBl4sbrnlFrzvfe/Dk08+iSAI8KUvfQmf+cxndvUe1FOm/4/jO+z/\\nKe+DHiPQ49y4gQvbs9m5EwURZa3MGkISL7F1nK5DHDhokoYgDFCza72iguMhCRJyao5MfTbk76nw\\nTlkvEzJ9uAFn2xBeocUN4/v0HZ/t2ahbddbomswSKPyysYwz9TOE54QQVbOKlt3CdG4ae/J7GCIg\\nCsmxUgNnP/SJuAAnYCI3gTAKca5xDmk5Dcd3kFWypAjfWNYECKzACcKATZ4sj9glPH3haWAvgA5Q\\nmC5gvbtOTI03RG3iggu7nUgIPGkwT+WmcO+ee7HWXWPFTf/ztGgs4vX662xKRn9vLDOGvJpHSkpt\\nybdRBAXvmngXfrDwA7RdAlsPoxC6pCOIyH6MIj/mW/NYbC9iND2KydzkJjn1ncSVyCWHDh3CPffc\\ng6eeeuqSn5+3UrxjChqAJCFa0MzNzV12QWM4BhbaC+wGF3kR07lpKCLRja9b9QR5XOAFFLUiFEHZ\\nUvd+kBzxoKA3M1VIoZvbfj4MsLmIoU7DmqTtyAX9Sscgt9pBGzI6uYoXLHG1mUGv9wIPbujCD3y2\\nmU3LabYYiryI9e46HN9BWk7DcA0UlAImc5OMK6LLOtzATXgVUJJ7y2klyehRBFVSE5j1rtdFSStB\\nERVM5aaQU3IwfZMpulBccctuQZM0Bp+KF5R+6KPjdtiEibpKA8ChkUOoZCs4uXaSFVYdt4MXl1/E\\nbGsW1xdJseIFHvv9/mtMYQxdt8uMPiuZCsp6GQ27gabVZPAC0zNh+ibGlXG4vouW04If+Gg2mkSy\\nWQXsvI3T66eZ0IEu60hLaTY9UUU1IYYQd2u+WHAcxyAQZb3MYC5Nu4mm1UwUOEzZTiIdT1o00meO\\nQQc2IoxCpOQUbh25FS+vvAwvJCTWte4aDo8chu3bmG/PE9EFcPBCDzPNGQIfyFYuqct2uYlop8/P\\ntbh60Q9h9ryYouUl5BLHd7BoLLJ8wXEcxtJj0GUdju9sEgfgOR4j6RHk1fy2cv5xpabtIkKUKGK8\\nwGNTGNM3e3BUUUFWyrIiJi55z2Ry3+B4+OGH8eSTTwIAvvSlL+H3fu/3EmqLNOLrb/xP/5pAg27a\\nqaokz/Fskk0VEummPitn2dqXV/NsouEHhCMT58fSHN91u5s+m3raiLyIareKmlWDJmpIK2lMZCaQ\\nU3NwA5flQCrvT4sbWZRZEUUjCImEMs2nKTnFYO4TuQmUUqWe30sUwgs9nG2cxbKxjH2FfcgoGSJZ\\nvaGO1n+Nbd9mxsle6CGrZDGRncDB8kEmHkD3KfS/Q9oQ3KDXeKzVamQ3mgfEiojX66+Tc80JTD5a\\nFUgjUBblhOHpbuGdw/owhvVh3DVxF9pOGzONGZypncHZ+tmEZ2DbbeNU9RTON88jp+R6vJvsFERB\\n3LQHiRBBEiQcmziGHyz8gCiKcjxWuiu4pXwLNEnDXGuOCUYEUcAkp4f14QRFYadxJYqaT3ziE3jq\\nqacAbP/8/DjEO6qgmZqawve//30AJAldTkHTsltYNBbZ3yVeIqNgXkLDamwaa+qyzrTX4xswGkx1\\nYxs5QY7jEIZkEaNFDOXCxPkwwOYiJm5yeTljzisVDz74ID772c8iiiJ8+7Fv40enf4R91+3bVLjs\\nJuh42PYJb4ZuZplJW0Q6MH7oQxZk1K06VFFFJVMBx3EsITm+wxYEnuMhi0S62Q98VhzQxT0jZ1iy\\nMj0TVbOKrteFIAjIKlncUr4FIQh0oeMSnDGV6LR8srgbjkHG75JKpgqC0jMz44ivgS7pic5UUSvi\\nXZPvwrn6OZxcP9kbc9sNXGhewHWF6zCVn2L4Z0rGpNLQsiBjVB9FVs6ialaRltMMljiaHkVezaNh\\nNRKbKEpkDaMQTbuJdrVNcM88kMlnsNJZgS7ryCpZeIGHpkXgDVEUQRZlxnmhXVxVShY5O90MiTyB\\nL+SUHHRJJ0pKrgk7sMl9v1GkD+LdpOU0FEHZ9JxllAx+Yuwn8OLSi2wy9/LKy7h97HbcNXEXVjor\\nmGvNsS6bH/mYa81hob2A0fQopnJTu+qyXW4iSjw/3/42zpw5gxtuuGHHn38tLi/iSmdzc3MIgt7G\\ndLe5xPZtLLZ7JGaO45jccs2ssc0ojZSUwnhmHCIv7qiQ2aqY6S9iHN9h/x9/7vvhZJIgMShZSkq9\\n6cpIP/dzP4fx8XEsLS1hZXUFf/vNv8XP/d8/xybTtHDZiQAADSo04oUe2VCLKWiSxmDiAke8ZCj6\\nIggD8HyveRaEAZNnjp8fKn/vBA4pjCKOrc8pOcVyM1WXrFt1gCOGnXsLe5GSUmzqTidIcVlpJ3DY\\n+iiLBI7WtHtNH4EXUNJKzHeFTopuGb4F5VQZJ9ZPoGWThpXhGFjprmA8M459+X2QBImcF47kPoEX\\nGDyOTi9mW7PIqTlEiLDaXcVEdgKaqJH7K1YseIEHy7eYcli71ga9PMViEaudVWiihoJaQBAFif0U\\nLXI0UWONLkVUWNNykCjCVkHFX4paEbeN3oaF9gJb1wVeYE3Gft7NZI743ezJ7YEmaYl7SxZk3Dlx\\nJ44vHmdm6SfWTuDQyCEcrRxF1axirjUHwzHImh9xWO2sYrWziqHUEKZyU9sKCPUHPdZL5Wgmnp+V\\nFfzjP/4jPvrRj+74899KIXz605/+9Jv9Jd6oOH78OCto7rjjDjzxxBMwDKJj/vu///soFAo7ep9+\\niV9ZkLEnvwdRFGHdXE8kA7qAUCOr/kWVQpa266LRTXrH7RAjJ7uFlt1C026i63fhhi5ChFAEhW0o\\n6YY+q2RR0ArIKtmL+sRczaDdITq+l3UZL518CecWzgEK4EYu3nX3uxLdp+2Cmo5RQiVVX+PAMVK7\\nriTN2haMBbTsFrzQQ82sIS2nGURLEiRIvNSDpW0UExzHMWwz0DO0zKk55NV8D1bBAW27jbONs7B9\\nGykxhen8NEqpEuvspaU0NFmDJmgQBZFBnyjkwfIsmC4pigyXLHYSL6GYKrLrRqGEXbcL0zehiiqK\\napFAsrwu26hTeEpRKyKn5AjETSFTpDAKGU9Il3VoksYgEaZvMsx7RslAFVV4IYEwirzI4ImlVAlf\\n+O9fQHetCwTAr/3nX0MxV2SJSuRFKJLCIAeUVNp22qiZNSwby1jrrqFhN1gHj3Jf4rCM+KIcRRGD\\nvtDOJoVMlvUyJrOTRDWJ55kbN/tdRL3JmNOCG7jgwUMURIbVlgUZ5VQZa+Ya+y5LxhJyCoETVjIV\\npKQUgQJuuHlTXtJie5FNvXbaMKD316CfXyzy+Tx++MMf4rXXXgNA8M/33Xffjj73Wlx+LCws4Jvf\\n/CYAYHx8HK1Wi12Lj33sY7jpppt29D6UExMXk6Fy8fPtebYhAsh9MZIewWh6FPj/2XvTYEnOs0z0\\nyT2z9vWsvatbaln70lK3sCVhM+ELxuCx8TKGYCIMZjGjuTbDHyLuYDvuDWJiuGaJgAkCuP5xb2DA\\nMBNhMMvgC7auMZJttaRuyVp6UW9nr3Nqz8o98/74zvdVZlVWnao61epF51Gc0KnTtWZlfu/3vu/z\\nPg/6B9jDG7pB8AMfbaeNqlHFhr6Bil5BpVPBZmcTVaPKZhyoxHIxUURWIWtdQStgNjWLmeQM84m5\\nUckMpRfrjg7d1dGwGnjuzHNAAri2cQ3v/+D7YbjG0A4MBY0ZlAacUTLIqBkmYpBTc0grxJOLdv1p\\nV4QmL7S4xXM8Y0rQ7zS8ntm+HUtjzmk5SLzEvruqUcW1xjW0nTY0UcNcag6LGTLbwHEk9lGJfNrt\\n9uGzOEs9XupmHVWzSjpDPI+ZxAwrvFCvNsMlcYfneZQ0QpNq2S32PptWExv6Bok1CWKenJATbO2j\\n+xdVVDGXnmNJnuEYXSbINiWOdskFXiBiM5KGnJrD//jy/8CFs0R97cMf+jCO3nEUjk+6hAEClrDQ\\n4xnu0lc6FWx1tsic13Yc6b0E4uZJW3YLm51NlmiJvIiCVsA9M/fghw/9MA7nDrPiYnhmLQChOV+q\\nX8JLay/hWvMaLM9i5xBA9n3zqXlsGptMLGND34DIi0RUJz2PrJJl5xE9RwzXYHOyiqiMXSQb5W+9\\nEAQBuq7jW9/6FgBgfX0dn/rUp0Z+3ZsJ7xhRAIBQM5555hkAJOh8+ctfjogEUJPNYagaVay1u/4b\\nikBoRVT9JQx6sQ7kNYPvC0oUnr9dhfG6HRg6oBh+TLgTQysKdBG5Ee3/cLVop27Ls88+i09+8pMA\\ngHQ6jdOnTzPpU4rwLEb4pzcxowos1PSMKpHRRZRWRDpOBw2rgaySxWxylrSJt4c0I8nM9lxSGJS+\\nFleVtFwLy81lvLD6AjiZ0L6MAAAgAElEQVQQT6En9j8xcEFyfIfIYW4r0HXcDmyXVBKbVpNUoUQN\\neS2PlJJinzsONBlea6/h3NY5WK4FURAhciIEQcAduTtwV+kuJgpBu0y00goAVxtX2aKtiAr2Z/ZH\\nPiMVtqD3cT0Xd911FwIvADzgtfOvwedJQKWVS8d32ALv+i6TjnY9d6D0JB0STUpJJOQEskqWuWVT\\nf4Qwegf+KYbN3fSCVqBVQYUoiOg4HZxeOc0KEzzH4/7Z+zGbnAXPkw3jlrGFq42rTKAhnHyVEiUc\\nzB4cq8o2iRTnP/7jP+L9738/AKJYs7S0dFu4Pd8KeO655/DEE08AAB5+mBgAvvjii+zfTp48ueNz\\nUNll+t0LvIDF9CI6Tgcb+kZk/VFFFfOp+YFqk8PWejoTE1Y87DidPsoTvQ4SUoJRb6lHzLRULscB\\npXvF/fTGzUqlgqeffhquS67zr33tazh+/HjkPtRwsven97PR2cyW3SKFs212AxU2oDLGNHkIC87Q\\nGaPwvCYTrAm9Z9oZSUiJvu/O9V1cqV/BS2svwfEcFLUi7p+7P+I/1Hucwuur5Vok5nrE4DkIAiZm\\nU9AKsRV9ChobmmYT56rnSCziBYgcKfzMpGfwrtK7WLJEKWiSIKGcKEPgBVyuX2aJuMiLuLN4Z+QY\\nUzXLsPH4+973Ppw9cxbwga/9/ddw/H7y3dECqO3ajLYcNpMe1IHkOEIJpPOq7LwWJFZY6010FUFB\\nTs3FClhs6Bu4WL2It2pvMZnqOGSVLA7nDuNw/jBmU7PwAx/fXf4uYysAwPHScaIOx0UNvbc65HnD\\nsSSjZMb2RZsklqyuruLAgQPs+nn55ZfxwAMPjPyaNwveUQnN1772NXzoQx8CADz99NMsI52ZmcH6\\n+vqOj9/sbLKZBaAbZBpWI6JKw3M8smqW6br3IiwXGQZtU9OqSXioP4xwEiMJEktixjG53C0GJS07\\ndVbC8H0fTz75JC69dQnwgS/9n1/Cpz/16UjiMsrnoRWxqkEqUQkpgYRMqm1UK1+3dTTtJtpWGwWt\\ngJnkDGzfRkKMVtRp5b7366EdLxp8ersHdbOOVzdexVp7Daqo4mD2IO6duZd15XbqvlmuhZbVwmp7\\nlXWRqOSzLMiR75yqpNGKLOVMK6ICL/DweuV1XK5fZpt43yeDqscKx9jQuyqqyKhdE1fLtXCteY29\\nzzg3cgBdlbTlq/ihJ34IAFAsFvHS6ZfAgYsoH1GoooqMkolsrJpmkwVhqkgW1yanMy00+FMncU3U\\nmHT2KIk7pdOE5WXjIAkSVEFFgACvrL/Crj2O43D/7P3k+AXEmEzgBKYYVzNr5H7ol0kNe4cMw7iB\\nyPd9HD9+HOfPnwcA/OEf/iF+8Rd/caTX2sPusLy8zKhl5TLxKtrYILHh2rVrO9LOdFvHans1kszM\\npeYIZdXW2f04jkNRKw7czA6i14SvtZbVYlQy3dEj51k4iVEEJTIP83Z186mEfu/PuJTjz33uc/i7\\nv/07wAc++fFP4vd++/ciicso60QQEJpZy2qxZEUWZJawUGoeTWYoHZh+hl5H+SAI+mKJxEuR49v7\\nHdaMGs5XzxMJZEHGYnoRjy482jXaHkKdo2uq4zlEmn9bJZPSlCMUX56HzJPYQTfXVGRAEiQInICl\\n5hLOb51nRtt+4MN2bTZzGe7M0OPr+R7e3HqT7YnSShpH8kf63itVhnN8B3fffTc2N8mA/tkzZ7Gw\\nsEC81Hr2PhJPinACLzARpI7dYXuPiDlqz3VBkyNKWaOMFioClJSSI+03GmYDl+qXiN9Nc3ng96GK\\nKg5lD2FfZh/W9fWIOumdRSLwQ2MejZ1XG1cje0x6biTl5Fi+aJMooH3iE5/AX/zFXwAAPv3pT+OP\\n/uiPdnydmw3vqITmxRdfxCOPPAIAOHLkCN566y0ApMJGFWsGYUPfiChi0Op5b1eGyvrFLZ5xiQyl\\nEFmexbjL1Jk+jPCGlsrnjkNvmQS08kN/qLpJnJHhKIjrtvy33/9v+NXP/SoAorhx5syZsZIyWomv\\nG2ThlgUZqqQir+YjyUzNJPMgRa2IYqIIy7OQVbKs60E7X+HjScUAaIdkEHzfx5q+hu8tfw9+4COj\\nZPDY4mORjWxY276X6+r4DkzHxGprlbxPz4TruVAlNSLnzXM8VEFFSkkhKSWRVbOkgxFTPa0aVZxd\\nP4tqh9BI6Pm0mF7Eg3MPopgo9sm41s06k7EGQPjP29Ljvcf8n7/zz/iRD/wIwAP33HsP/uav/wYA\\nmNoS5UeHkVbSmE3OQhEVpspHN1s04fR8YpRp+4SC1/sclGKWUTKReZyMkoEkSCMlwlRwgRoADloC\\nLdfCG1tvsBkggRNw38x9mE3NsuNAKaNtu41rzWuRNYIGI1Zl04o7ntvjBqLf+73fw2c/+1kAk10/\\ne5gMnudBVVVW0aTgeR6WZUEUB68XbbvNKudA1zS2ZtYi57ssyJhPz8cWxuISmbA6WcNqoG212aYv\\njHASo4kaUyUbdUM3CcLdFsePDuePUwSjiOu2fP+738cPP/nDAIhX0PLy8sg0cgpKmTVdk3QeeAlp\\nJc2G+On79QOfJTOmaxI1xO1jRzs84XWIigeE52TiDxSw1FzCmfUzMFwDeTWPe2buiRhphmNJ77Gj\\napYVvYL11jrcgHTDKT06HLdFXoQqqVCFrnxyb5zjOGJS/UblDay2V9k55Qc+MmoG98/cj0N5ooYW\\nluxv221crF5kz7OQXkA5WY79yK1OC5liBuDJ662srEAURaYI1rbbkflggCQL5USZzK8ExFtPt/WI\\nVw7dp7i+i6bVZEkZBQ/CuMireSTk7vWQlJOs87TTPI7pmrhcv4y3am/hSv1K376NHcfthCUhJTCb\\nmoUiEKXRO4t3su+UHm9aXAyvEfR9qKI6si/auLEkbDQ/6fVzo/GOSmg2NzdRLpOLStM0Zob2Ez/x\\nE/ja17428HHr7fVIm1HmZWbSSBEgIJssKUqZ8gM/olwGdJMYOhdDaWVxLVCaxNDZhWmaXIbfT1y3\\nZSfucRw4cLEUsUGbzHq9jsXFRXQ6hHf77LPP4sknnxz59WjlnSqKUJofx3G4VLsE3SYml47voJwo\\nIyWn4AUec7ynXGzqC0BBOdG0/Uwvk7hErm238cbmG7hcvwyFV7CQWcCJxROx75cmMJZLOnG2b8Pz\\nPCIOYLfYMaSy35QD7vkeObbbfOmwjj8NrL3UK9dzcXbjLF7ffL07FMoJyCpZ3DNzDw5mD3Z599vf\\nzXJzmXGgRV7EgeyB2ErtX/3VX+GjH/0ooAA/8uM/gj/642g1R+AEuIEbMbgEup2LcrIcOd5Unrxp\\nNlHpVMh82LbruOd78OAx3ngc6HdPhQfSSppRZSReGlht9gMfuq2z1+rdIFiuhbMbZ2E4ZC5IEzU8\\nsvAI47PT907fg+maWGouYUPf6JsFSkqkyjaTnBkaWMYJRLu9fvYwOQ4dOoQrV65E/ra4uBgRm+lF\\n02pivd1lA9DYEJ67DIIAeS0/sBobjiXhJKZm1tC22swfK4xwEkM7MGk5HVuw2A0oVbr3Z9BGbyfQ\\n7nNv8hJ3PQdBgIceeghnzpwBAPz2b/82Pve5z438WnSmhK7DEi+xgfO23WZ2CLTwpYgKM8rmOI7N\\nCVIKFgUHotJIj/WwWKLbOi5UL+DNrTchciLmUnM4tf/UwPWLGkiHk0PLtbDR7q4/SZmsiY7ndNf7\\ngMSSsPqnyImMqkVnhcI4v3WeJFrbn1ngSSw5kj+Co4WjTCiAPo7OSdLjc6xwLPZ8u3TpEo4cOQII\\nwPyBeZx99Wzk3zlwsD2brM+Irs9JKYlystxXiAyCALqtY01fw1ZnK2K2HAQBS2AGJQXh/Ra1AaBz\\np4Me4/kelppLuFi7SPYejh75d0p9b1tt5LQcZpOzOLnvJB7f93jkfvT8cH0Xy61lrLRWuuqH27FE\\nFuSRfNHGiSVBEODBBx/E2bPk+I97/dwMeEclNEEQIJFIwDSjmfpnPvMZ/MEf/EHsY2jVvPskiHDj\\ngyCAKIjIq3m2QaMVlHAiQ5MYOtRsuiZZgHouUJrEUO4npZLttv3f220J/0zSbaHVq51mW0bBL/3S\\nLzG32o997GOs7bkT6GaUUs1UkXQvFEHBpfoltO02towt+L6PmcQM0+unUqcdp8MoavQi5zgOKZnI\\nDQ+78IGuD8GGvoHvLX+PyQQ/OPcg5lJzbPGhVTOqutN7vC3HQtWswgs8cAHHBlAlQQIPHqZnMt62\\n6ZowPRO+77OOHz1fJF5im3pZkNnsCPXGqVt1NlMUIMBschYPzj3IqHRUGexq4ypbQKnPRS9+93d/\\nly12v/yZX8Zvfuk30TAbfQkBz/Es2Pb+vZQoMdEEP/CJUpkbvTb9gJjRhV3KdUdnVDXPjzekpa+R\\nkBJsFoB6IwxSVRs0d2O5Fl7ZeIUF8iAIcHf5bhzKH2LD0b3nhu3ZWGmtYF1f7wpKbJ8Pmqhhf3Y/\\n5lJzA4PjOIFo0utnD7vDe97znj4DzccffxzPP/987P0bZiNCJ7E9u+/7p8PEYflW2gkMy/nrNvG0\\n2uxsMipZL0UrnMRklAzSchppJb3rrj4tysQlLpN0Wyhttm+2ZZsKNQ7+5E/+BJ/+9KcBAHfccQfO\\nnTs3sqyv7dmMaiZwZGidqiiGkxkmDOBazCvOdE04HlFEC79nqsQ1SiwByH7j7PpZNKwGUnIKx0vH\\ncSR/hDE7qKwyjSm964TneVjVVxktTpVU7M/sZ4pnVDAg7OFGi65Al0VBOy70e6iZxE+PzvdUOhVC\\n6QbpEqXkFO4p34NSohTx0DtfPc/WTUVUcGfxzr5z/tvf/jYrwjz++ON49l+eJR2WmIKq6ZJY2BtD\\ns0oWxUSRdKGCgIknRYRhtpVJZUFmCRJV7RxGCwe6RcZIkrOdEA0ysQ773dCCOEtqqGpbABzKH8IT\\n+59ghp7hrh41cl1trTKFVvp+AEKR3skXbZxY8sd//Mf4hV/4BQDjXz83A95RCQ0A3HXXXTh37lzk\\nb7/5m7+JX//1X4/8LQgCrLRW0LDIcBu98AtqgQ1h+/CRkTMswaFVZnpBhxWpmlaTDPn7/fx9msTQ\\nC2U38zDT7rYIfPxQ/jQFB8JutaIo4sqVK1hYWNjhUWCmXNQzhlKQLtcvo2ERFbggCFDUyEKX1bJI\\niklWrUlKyUglrXdOZhR07A4u1i7i9c3XIXACyskyHlt8jAUMyqseyHX3fba40U5LXiNt3rhuARWG\\noNxh6jfEczzjBoucCNM12YaGDs5X9Ap+sPkDEhC2z1+RE3FX8S7cWbqTVdd0W4+o+M2mZpkLOcWv\\n/dqv4Utf+hKA7vXjBz4aZgNNq9mv0b+9CerddAkckbcOD2LSJYm+fza3FKJ00KSDKt1QioEXeEzo\\nIw7ULyEpkS5ORskgJadiu4jhuZuW1cIrG6+gY3dNco8VjqGcLIPneUbdodctDUaO52C1tYo1fS1y\\nTGgiuj+zHwvphYEV517EnUOTXj972B1++qd/Gl/5ylcif/vIRz7C1M/CqBk1Rkf0Ax9NqwlN1Nj3\\n7gc+ESoJUUnCiQxNYupmnc3ZdNxO33XG5NGlJFPnouf3uIjrttBEZhLEdVoGdVsmRafTweLiIup1\\nMoT993//9yOp/9GCCZVlp3Mz1JOHxk+qhEkLltQ2QRKkSKIoC+R7GOezWa6Fi9WLOLtxFhw4FksE\\nTmBJDJVbBuLXgobZIN1kgcz+UHnv3tkbP/AjptSWZzETYervInCk40KpkLTbnZST4Dker1VeQ8Nq\\nsH0PQCjNd5fuhiIRDxnbs3Fu6xz792KiiH2Z6HzZn/3ZnzFxoPD1QwvAcbGkVwYa6BZZw0bKdA1V\\nRRU5Nce+I3rsaFfNcLepaiFbhVGSHJrg0L0DLT73xvuG2WDJzVJzCVebVyPjCkWtiLnUHJm7yR3C\\n4fxhHMgeYAlagIBR25eaS5GZbcrcWEgvDPVFG2VGU9d1LC4uotEg+95Rr5+bBe+4hOZnfubfo1ze\\nh4WFfUgmU9D1Nk6dehwnTz4EUexmxsutZTbERT1BZhOEO09lb+lGmZ74NBCZromW1ULTasLyLDLY\\n3HPy0CSGUmTCKio74Xp0WwbRxN4uPPXUU8zc6fOf/zx2UhN3fRcNs8EWBdqZWGotoWpU2d9zClEt\\nKSaK4MCh7bTJohzii8uCPLGzddWo4rtL30XNqEHkRRzJH8G+7PCBYJEjKmwiJ8L2bUbx4jkeBa0Q\\nSbLiZm+okACVkzQdk6ikeTZb7GmAVXgFOY1IriakBDzfw6uVV3G1cTUyZJpRMnh47mHWMal0Kkyp\\nhuM4HMgeIN0dpw2vvYL/9x//FutrK2jrBh5/4ik88kM/Cl4ig7PMW8Bq9lcQAw+2S5I8Jlm5PatE\\n5WAlgVA9BK5/MzAoyXc8h6k40WvPcAy4gTu0iwOQJIdehxklw+ZzwteA4zmomTU8d+05pkYDAMeK\\nxzCXmmNDwkA3MU5ICXDgWGKz1l7DWnstUlygm6fFzCIW04uxdNJRAtG4188edo//8l9+C+vr9Ugs\\nOXhwPz784Q+wWAKQNYKeMx2ng6bVRF7NMxd2gRMwn55HSk71DTTTDnSlU4Fu6zA9s+98oElMWk4j\\nr+WRltNs07kTaKEhznRykiJYb7clnMS8XbNdv/qrv4rf+Z3fAQB84AMfwNe//vWh96cdFko1E3kR\\nCTHBjgs9Dhw4gEMkwQwQRIou1Bhzki7YZmcTZ9fPYrW1ClEQcSBzAEcLR4c+RuAEtta7vhvpAJYS\\npT42CV3vw0kCLb55gcd8ZVyPFJ7qZh1e4JEEBwIyagYzyRn2fV6uXcbF2sXuOosAiqDg7tLdWMws\\nQuCJcMq1xjX2eodyh5BVsyyWvPzid/GDV8+irRvYf+gYPvjRn2OxhH43NMkIgyahlHbXsBpwfRci\\nL5JkXk6zmeZBaqODBDXCszgdp8O6QjslOdQEm84kUZYNz/OR/eHF6kV84+I3cG7rHJsPKmgF1qGh\\n68L+zH5m6EnnhbzAw0Z7A9da12C73eICBw48z2M+NY/92f2xn3mUWDLu9XMz4R2R0ARBAMsKoOs+\\nbHvwx5VlDokEh4q1jLZDjAqpHvhMYoZtAGn7HlyXr0nldunwmR/4A5MYGnB2mofpraLsptsCYGDS\\nciPknXvx1a9+FR//+McBAHNzc7hy5cpAt9ogIPr3lGpGqWQb7Q1sGpswHINVPKmPAK1AJaUkSxx7\\n52RGBZ1t0W0db1XfIhU1jkNWyeLxfY8zB2kArJIXp7ZjuRbqRh0BAua4nZSTw16aJTZ0cadDrJSS\\nVtEr0F2ddSnoBp1KXtKFVrd0nFk/g6bdZEGOA4fDucO4d+ZeyIKMa81rpBobBEgHFnKuDt/cHPje\\neK0MMX0QQmKW+TPUzTrz1KGgim6mZ0bOPUpDCy/Gg5anUTZH9Dtq22207BYaZoPNqu2U5IiCGBEc\\nyCgZJKQE/MDH6dXTqOgVRgE8kj8SGdqlzu0Bgshcj8AJcH0ipUpd4RnVcXv2jFbZes/JnQLRONfP\\nHibHOLEkmeTR8qqomzX4gY+qUYXpmkxpMAhIISFMPQwQEC8qg/hIte022bT0nO40ickqWRS0AlP+\\nG3RdeL4XSxOLo8COAqqG1dtteTuLYINw4cIFHDt2DAC5Ti5cuEBmNAbAdm207BbbuNNkhHZE6Poo\\n8mRQnXbJVVFl1ykHokQ1jm8IEJ2pPF89jzNrZxgT5MH5B1lnnBa2IkpkodlAz/ew0lwhtGWOY8Pn\\nw8A+W6hoFqairbRWoDs6ozdnFCL7LHIiY27IggzXc/Ha5mvEADaULJUTZdw7cy9ScqrrqRQEyAQ2\\n5jgPgTlY/rg3llA6cC/dzPZsVHRSfAvT9wVOQEEr4FDuEIupu4klnu91uzjbkueWa7HXHCXJ0SSN\\nsUhUUQUHDi+svoBX1l/Bmk6KXQkpgYXUQh/tLAgCzKfmWXJDafOVTgVLjSV03E63c7ed2JQTZRzI\\nHujbU+wUS86fP89Mmke5fm4m3PYJje8HqNc9WNboH9PhdGz6l9Cw6sRcbNtZV+AEFBIFSDxxzLVc\\nC02riZbTinD/wycITWKySpYlMeE2NM24e5OWSQPNoG5LWIHkZoTjODh48CBWV1cBAH/+53/ONmi9\\nsD0bm/omk6PkOR41o4YtY4t59xTVIpH1lVRYrsUoBJTvutOcTBg0seytXLasFlESM6qQRRmHc4cZ\\nRzhcmQxvVig8z0PVrDIKliIqKGpEa37U7ylccbNdGxv6BjOTo/LTLlzmwCzzMltYqWfRcnMZl+qX\\n4HoufI4szpqo4f6Z+zGTmsFK8yrynRWorj7knUTBa2UoM4+A297cuL6LullHzah1jc/Q5YN7vtdX\\n1cypOcwkZ1jCv5tgFAY112zbbTTNJhpWA5ZrsSRnGCglUBEVXK5fZp0lL/CwL7MPBa0QFQrZ/n6o\\nUp0iKiygCbyA9fY6lppLbJaCzkTxHI/59Dz2Z/ZHhmiHBaJxrp89TIZJYonLddDAEtY7a4SSmiiz\\nAsZcag5pOc2q/ZVOBVvGFtpWO9YckCYxRa3IOjG9iW9cp2XSbgvtHsb93MyxBAB+9Ed/FP/wD/8A\\ngNBjf+u3fiv2fn7go2W1uuaKHJEzdj3CdrA9mx0HaqlAKaY0ju80JxMGZVfQ7g9dL1pWC29svoHl\\n1jJEXsT+7H48MPsAOI4UOmgSE6YghZ+zolfYELrIi1hML7Ih9lEQjiW0m9xxCY3X931oEim+BgEp\\nfNFZG3ouSLyEqlHF+er57vA9R5LAo/mjOJQ7hLeq51E215H0zZ3f0DZ6YwlNbNpWG3WrztgNAKGg\\nW67FaJb0syekBEqJ0lSKZGG4vhvp5FBLgJ26OABJuFRJhSZouFS/hJpJGB4Nq8H2mpHZbUSTm7ya\\nx+H8YRzOEb+bqlHFteY1Rl8PJzflZBn7s/sjtPGd6MyjXj83G27rhMb3A1SrHhxn/I9o+C3UcBl5\\njRhjppQUUlIKuq2jYTfI/AKdjwgNlAPbG8dtta1w1WZUw8lRcDN3WybFF7/4RUaV+djH/h3+5E/+\\nH3hegCAAOA4QBA6KCjTtGrtw6Wa5btXhuA5Mz8RMYobMjohyX+WMDokPO069Q69x35Ef+FhpruDl\\ntZcBADkth3cfeDfT+h/23L7vo2k32WIscAKKiWIk0R3Gk+4FNYGjXQfadqfnl+EYjJJGn5v62Sii\\nAtM1caF2AW27DS7gEHDkellMzuFe3oHkGcNePha8nIUyfwrcNn+743S6QWh7DoXKUAqcwBy0wzQz\\n6sFRSpTYsRlnwHFU0Dm3ltVC0ybDpJZnDe3ieL6Hc9VzsDyLCXjcN3MfjhWPsdm5iLv0duGCVkQp\\nrU4TNbTsFpaaSzBcAzx4NoTJg8dsajZSZRv2+cPXzyd+6ifwf//Rb8H3TMB3AV4EL6gQUguMzrGH\\n0bGbWNLxGlhyXkdByzG1u9nULAzHwLq+jq3OFpmHobNfodNZFmWkpBRKiRLrxISFNmiXZZDh5Cig\\nG9ObsdsyKf72b/8WP/7jPw4AePDBR/BP//Qv4HkxEks0jYcTmBF1SUodp9LzkiABAWB5FvzAj7i3\\njzonQwuUNImJw3JzGWfWz8D2bOTVPB6efxj7svt2/A7oADydz+I4DjPJmYioxDixxPVdVPRKV57a\\n94nQzrbUfvhcI2+AdLNpAc/xHVypX8G6vt5dqzggr2TwoOBD8kZPZih6Ywkd+DccA5bXNRqntEvT\\nM5nsdhhpuSu2Q49dHHYTT1zfZRQ1yg5wfGdokkPFEzY7m8wM9GD2IO4u3Y3l9jIu1y9jtbXaNwNF\\nH6uJGpu7SStprLZWUTfrEZsQDhzyWh4HsgfYjO6wWPL1r38dH/zgBwEADz9wN779j38Jgfdu+lhy\\n2yY0QRCgVhuvmtYLlzNgiRvMXbZltyJUMo7jIkkMNf1TRDIQF+68TKL+EpZADnts3OzdlkmxurqK\\nn/u5z+Bnf/bTeOqpfzPwfj5vwhN06D4ZtDU8g6nMlLQS6YRJWsTAbNicDE0CRpUYpTKS57bOYUPf\\ngCIqOJA9gIfnHx7pcxqOgbpZZ8+VVobLpw4LSLTjEObeZ5QMBE6IzNpQrwRaUQrzwunGeq21hkuN\\nS0yW9HFVxYww+cAur5XhF+6F6VmRxdP2bOb/Eg461PiMilFQCDypbFOX6+sRiHpBJdUpjZSanYaT\\nHM/3cL56PmKEuJBZwKHcISY8QNWC6Nwd0KWk0TWBUhIs32I0IzqUS4NSOUnoAxklMzAQra6s4Jc+\\n9VH8/Cf/F7zvPQ8N/Gy9dI49DMc0YomNNppYgiqpMF2TrFuuwa5tACyRoUlMUSsipaTYfMSkhpPk\\nqaPdljBd7FYugg2C67r41Kd+GT/2Y/92aCzhRAecZMHnLXiBC1VU2fokCRJ832dUNE3SWPyls36x\\nrx1KYFzf3bFa73gOLtYu4krjCiSeqFY9vu/xkb4Xx3Ow0lphhZK0kh7qKj8sljieg0qnEulUFxNF\\naKLG6Gj0/KO0a3qbfkY6H9qyWniz+iZJLMDjUUVCWZj8POO1Mpzc3WjYUcEZ2lVSBTXyfVD/GioY\\nFP78OZXMlFIlttjjNMV1kRqIGq5BDG5DYj6Mmh4EuFC9gDV9jT2unCjjnvI9SMhknnSzs4m19hqR\\ncd6O3+GuDUCKE/sz+1FOlok/mtNmAgX0v4xKfNFKidLAWOK6Ln7h338Y//b9J26pWHLbJjSm6aNW\\nm2zWJIx17zw6fr27udjeUIUXOSrdOmlgiDOcnFQC+VbFJHSOpruJy8YraLuE/5xX8yioBaiSyuRK\\nqWldLzUjksCMQO+jFSjKXd7QN/Dc0nNsLufE4gmUEqUd37PjOagaVbYoJ6QEsmoWQHdxGoZwQKIy\\noxQ8x5Nkpue8oedrx+5Ehig7TgeGZwABuQ9ViLnSuALRquG92XgjtHFgZe+Cr3ZdzqnimsALsFwL\\nNbPGZD0p6BAofYy/tq4AACAASURBVD/hx84kZyLHKw7XY2Glw6ltu82U3JpWE6Zr4s2tN9G22uy+\\n8+n5yEwNAMZ3FwVybVNndvrdRBI+30bVqMJ2baY8R38KWgEHsgcipq0AEPgu7MqL8I0KRkUvnWMP\\n8ZhWLLnUOYOqsxaReQ0QwA2IulRCJGsBnbfqpZyNAkpP6pNAnrJ32c2MSWKJxxsQtA7swCIzSwGY\\nAIAkSIxilpASfXMydD5pkJRyLwReiMzBbOgbOL16Gm27jaSUxL0z9+Jg7uCO7zkIAqy11xjdnRqx\\n8hw/USyp6JWuxPx2dzyu0EaTmTBVl1Ebt2cH+e3/VlorsPQlnEwMnw0dBc3UQdhylt0OD/x7vher\\nfGZ7NtpWm0hxh4tk2zM21LPu7Ywl9H3RLo7u6Ewa/EL1Albbq+x+Ra2I46XjkTjIcRwaZoOYp3bW\\n4XndzxZOboKAGKom5K5hKH0eHsTS4GDuYJ/f1a0cS27bhGZryx06tDkqdL+GJfs1sunYHpxOy2lk\\n1AzbMI+CcQ0n30nYDZ2j5dZwuvbPKGh5InsoqSzBpCojQLdqNio1g9Iw6OagV873jc03cL56HjzH\\nYzY5iyf2P7Hj9+j7PupmnS26kiAxg89e7BSQTNeMULcGJTNxsF0buqMzqWM67EhV0jiOw357Czlu\\n/K5iLzw5Czv/LraJj9tYma6JmlHr86Bp221YrtVn8qZJGuZSc+y7vR40tFFAFeUaZgPPLT2HldYK\\n637NJmYj5puRxyFgnShaFKEmh5RyR4UvNo1NmK4JTdJI0WSbkpaRMziYO0jmrgIP1trzCOzG2J8h\\nTOfYQzymFUvqzgZebf4r3MBlzvJJKYlSooScmhtZnIQDFzuQf7t2W8bBbmKJx1mo4wp4nmNy0tS4\\nODwnQ6lXYSnlYaBJEU1iwt+R67t4Y/MNvFZ5DQAwk5jBEweeGEklrW7U2ZwFx3GYT83HnkM7xRLL\\nJZ1huvZzHIdyojzS+UiTGTogH46xtGtU0K8iMcbczCDYUgrN9BFiwbA9kxz3fuISG8Mh3ZFeY0yJ\\nlyJqcG93YhMGtWN4ceVFNovkBz4KWqEvqaEIggCbnU1s6BuodCowHIMoqG4XxMOiVUFADEXnUnMo\\nakXwPE+kp0UNB3IHMJucBRf4t3QsuS0TGtcNUKlMNpsSh/Pm96DJMrJqdqi7LLDXbRkX06BztLwq\\nLGEDSZU4+tKZGTp8OYrhGzURo9XMYd9xzajhuaXn0HE6UEUVD8w+gP3Z/Tu+T+pHBJAgl9fyIwWu\\n3oBEaWPsvW87NscZfO30vHS+xnRNuB7h/7p2E0edwWpm44KfewKqVtjxfoZjkM5Ez+xJ02rC8Z0+\\nEYe0ksZschaKqNzQQASQQPry2svY0Ddge0SKO6fmUEwU0bJaQ6knlGpnuiaTkA47VDs+GdJtWA3G\\n4afJT1pK4S7OguQ0J37vvFaGMvvYO76wEodpx5J/2fwbyBKhUGbV7NDOSXhNCq9NkxhOvhMwHWqg\\nDkfahCRKbMZQEzU2LE9pp8MwLIHpRc2o4cW1F7HV2YIiKDheOo67Snft+D5Nx8Rae43FhbyW7+va\\nxqE3llD6I12beI6PyDKPA9dzYfvdTo3t2fDsFgrNczs/eNTXmDmBdGJmx/dGZ1l6PZPadhu6rbPO\\nN4UqqignykwaOQ5v5zX3WuU1XKxeJPsX10ZSTuJo4WjXI2fAe2xZLSw3l7HUWkLdqkPkRMjidmGW\\nJ6batKg6m5zFfHoes8lZiIIIlVfwLt6F7LZin3sU3OhYclsmNK2Wh3Z799VlCl9qA3J3A3mzdltu\\nxSA3LTqHK1chKUQDnypLDUNYSjksf7nj6/guLlQv4NWNVwEAeTWPpw49tWOnznYJjYgGk5ScingE\\njArd1iPJjMiLyCiZyHfPxXBVeo3GelVyqKZ/x+lA6awgZY7ebt4Jz7+6gVfeakFVVaiqCkVRhv7u\\nCz4MzgAv8FAUBYIgMG8bL/CQELuKQhzHIa/mUU6WmQJQHN6Oa8MPfLy89jIqevfYHcwdxJ3FO1kn\\nh9LV6Dxe7/t1fZclN2wQWVCYCWzbIRxsWj0+ICfwkLz7Yok88yjE5Nyun+d2w7RjicFtwRGj1c9B\\nvi03ugh2q8WTacUSX6lDUgLIvAxw2DGBGSSlvBOCIMDF2kW8tPoSAhDlqlP7TyElDx+09n0fK60V\\nNuupiirmUnNjf1+6rWPL2GJrEJ1V7E2y6QxG3Noa1/nx/e68TdC8BEm/1nefSfHcK+ssluwUR1RV\\nhSAJ8AUfvERiiSiSON2yWtAdvS9xS0pJlJPliPVCL96u6+KNzTdwoXqB3S4nynhk/hG4gcv2AW27\\nHWs+CpBkdaW1guXWMtZb63ADl9EdBU6A4RosuZtNzuLRwiE8mdo5Kd4JNzKW3JYJTb3uwjCm97E2\\nnSVsupchizJzz93DdFDijkDlMjvfcQc03E1ctV8Z+O8ctoMOL0EUxFjTxlGg2zpeq7yGpt2EyIs4\\nlDuEg9l+vnM4APi+j7pVZ8anVKCALYwB/V80yej9G1XWoxA4oetMH35s6PdxFG4o9nk65rjdbwwo\\n/q+v/AP+4//2B+M/UAagAoIsQJZlKIoCWZUhpkTIMlGDUSQFiqJAkRWk+BQyUgaaqkFW5GiAU1Ro\\nmjZSEIz7XZJGq4r7gY8za2ciBncHsgdwvHQ88nhKjaibdWZC2rbbXaUrEBNSSkMwHRMeiJCA67nM\\nd+ijs8dwQN290gyvlaHOPb7r57ndMO1Ysm5dwZpzAaqkkrVoj3I8NZS4O6BNKZYs2T8YfAeODL/v\\nln3RcTp4c+tNbHY2mYniseKx/pcLeZIApKvDzJh54t0VLqj1bunikg7DNhhbgL5GVs0OfR6gm9yM\\nikWvhTKGi+yMg4ljCQ9ABjiBg6qqJJ6oCqS0BEmTSCxRFBZnkmISaSGNhJqAoirRmCCT3yeNJ4qi\\njHwMz22dw7mtboerqBXx2OJjfdYfVKmTzuNQLz4Kz/ew2l7FcmsZK60VRu/2PKLIaXomnjnyHrwr\\ns/tE5EbGktuSOD3tFM3zfax31okrb6gSM2pbeQ/xEKFMJZkBgKxYguSosAMyYE618ul3RKVw6dpO\\nZ6KAwV2LXvi+j40OMe8ESEKRUTLouJ1o0Oh5aNtqswWE53ioIvHGGQcdpxOR/BR5oiYDrjsIGBe4\\ngm62NHJyI015g5VODVZwGwqb/HiyB0MzYHRC4gECAA2AD0TipQ9AB7B7ynYEHMeNHrBUBUbGgKd6\\nkGQJsiyjKBaxT9k3NAiKsohADGALNmzYsHkbLu8S/xElCZ/3YXlEzEEWZcwG6akkMwDgGxX4Tvum\\nk+G80Zh2LOG3lYd0R+9Tr6QJzl7BbHyIUKaSzAAklqyHYgkAVsjsVRkNEPSzAYLemzHrchCgalSx\\npW/B8z0osoKsmo3SbeMSkZBCJgDk5Bwb0h8VHacTEZMReRFZNUtmLobEkt7PN0pyI3DoOx67wcSx\\nxAdgAoEQwPAMGIYBNACsg4hvaCBJT/irDAAY5HHT/AwAWGIzSjyx0zbMpAlZliFJEjJSBoflw0io\\nieFJk8zB4z0EYgBXcKHwCo6nj+P+wv1oek2stlex1FxCy25hn1CcSjID3NhYclsmNNMuePmBBw5k\\nGNDyrL6BM6DLd45LeN6uCtwkHgQ3Ehp2394MI82VsOVfY07GtEtie3Z0oZoQlmthvb3OhicLWmFo\\na5o+JpzMUOnPUUGNxMLJDPUwCSOsOc8CUkQRluv7P5Nz7Dk/A5+f6gJ++I5j+A/P/AeYpgnTNGFZ\\nVuzvg/4NDsjPdscGPLqJiwQSjByQ71gAkAGQANAGplUcDBDAtEyYlkkC4SiYARBmFTYBjMvk49D9\\n3ArAJ3jISRmSKuE/ffwjwEf2jfmEg+G1V8Dn75za890OmPbS7QVkHicA8bqKk4gPz2HSJIcmPm9X\\n4exWiyWJKceSjFDGlneNdWLAmulElW63h8f2bGx2NuH4DhOHyCiZocfd9Vw0zO7io0laXxzYCdQb\\nhUISJOTUXJ+KVjiWAN3zoY/OHJPcRBSzMN3z9cjRO/HMf3xmaBwZFl8CPwAskDghgXyvAYAOukUy\\ngMQSDiSOqCCJzXg1yKGwbAuWbaHZGnH2MQ8gLKJqAljC+OehBLLrlwFO5aAkFYhJEb/2sx8B7hjz\\nuYbgRsWS2zKhEaZcFigm89BS90/kJQN0OdKKqHR/F5R3PN1g2nQOTUhC8EmVaVLD0mGom3VsdjbZ\\nXENezccapdHFnxpoetsJscIrkEW5r6IXDhIsKGybvFHVLPp36lYfd//evwGjSUH3Ps7hhKkmNPvu\\nuwP/7oF7J3psEARwXRe2bcO2bZiWiYbRQKPTgGVbcFwHtmWjbbbRdtqAC8AFewwcQPREuBa57TgO\\nLNuCbZHfbduO/G5ZVuzvvjfhHIUGEhQBoAhgFkBt8N13gu/4MBsmTMNEMbl7KdQwgglM7253TDuW\\nlFNFpDMPThxLetUX94QCCKYdS2YScyjHqGhNC1WjiqvcVTaIfk/5Hsyn52PvS9fvil5hIjKiIGIu\\nNRdLne49D2hsaJgNqKKKYqJI4pGoMJXNuLnLvkJXDJMhDuHkRtKXAX156P3HwX0nHsXxp39y4se7\\nrgvTNNn63tSbaBktdMwOiSe2g6bRRM2owbVd+I4P2yGxx7d98A4PWCDFre3noYmTYzvs97gf0zJh\\nWzZcZ4K9iQmghW5So2z/rIIU98aFDQR2ALNlAiJQ5KbbTblRseS2TGg0jZ/qIOdioQRRLEckCS3P\\nirg1D6vS0/uEKyMAWTBoctOb9NzKLs2jYtp0Dg7E4ZmqfcUNyscF/UEJRfhvjuegZbdYElpKlDCT\\nmhl4f9/30XbazLNA4ATW1h8FQRBAd8jAngDyGFmQhxpwxiL0cUdJblzfxRXLwPwUbSu2AiE2YI4C\\njuMgSzJkSQa29xcLWIAf+EyxhiWQgY+W3YLpdGWO6b+l5TTyWn7g7NROm0HP82KToUEJEL2PZVlY\\ntVbRdJtwXAeO60CyJaiGCsd2WKI2yg8LhAEAC0gJE9IvBiC4DkWAWx3TjiVzuTxEscC8S8JeWKNI\\nylOj5jj0JjlhxsDtjqlPAgccs2mIxJEByULkbzvcx/M9VI0qnMCBKBC6177svr6YH36eltVCgIBJ\\nKc8kZ8aKBTWjBsuzIPHkXFBEBUWtOF4S3BNLgOHJjR/42AoELAy8x/iw5Rz4CWMJAEiiBCnVvR4W\\ntt+d6Zp9cydtu42G1WDXFf2smqShoBWgCPGy1qPYN1iWFUmGwr+HE67epGnD3MCytUxiieOAszlk\\n9Swcy9nxsZHfrW2KYgDAAVLy7RFLbstdsyhykGVuKt4BisJBFLvVcUmQkES0chMEAQtOlmtFEp64\\nCn74cZZrxc5T8Bzf19G5WdRvpoWpFxS5gCUctG0u8ALz+9hNBdNwDNTMGnieh8RLWMwsDv0eLK/7\\nvfIcT8zyRvze/MBnHjEUVK53N4ilpYVes2W3oNs6PN/DGidjTtz9RmjLByqeDoE3oQhKn6fMpKAJ\\nYkpOMeUvjiMu0J7sMeNL6n1DFdyyapZJXMdh0DnCizyRctXGo3gA5Fhfql+KCAUUtAKOFo6OfCyY\\nn0AowTkmT0+4AcCeF00MrlcsEXiBKdX1gipEhZMc6nkybANJKWy6o0f+zoHrS3L2YsnOzxdOMJjT\\neuj/k0J3dFQ6FfAcD5EXsS+zb2jSabs2aka3rZtRMiMnM0EQ9JkXq6KKglbY1WfoZRIAUSXNlt0i\\nXQ7fhRbwyE/B08wSUzDAgXM6U6dgapIGVVSZwqQf+EgraaTkFBpWA227DVmUIfMyLNfCamsVSTmJ\\nolYcWHweGEsEHmJCRHJCs9FrjWt4ffN1djslp/DowqMjWUAA0VhCu0c5dw2Edzcd3KhYcttGsGSS\\nh23vPuAnEjtfMLTTIgtyn+QiNeEKd3Ro0jOMFuUHPgzH6HNRB7q0g96E51YTJ5g2nWMuXcbBRHHg\\nv1NTLYHruq+Pqlz1euV1NCzCXy4lSnjy4JMDj7Xrudgytli1JyElmLv9KK/VtJqRZIb66lwvNM0m\\nqRj6DpMLtj0DcMc31+qFljuKR5Qov10RFObxMC14voeaWUPbbrMAa7kWNo1NeL5HPD+2q5NUnjSv\\n5uM7dteBunNq/ym8XnkdVxtX2d80UcMDcw8MvWaHdX6d+nm49el5PHDC9TvHbmW8nbEEAJufQc8e\\nlxbOaKIT7vAMiyUBgoGzn1S+Pq67806OJUlFQyIxPGmYNMmpmTUECJBW0siqWdw7c+/ABCUIAqy0\\nVpDX8gBIl34hvTDSa1HTRU3UoInk+ZNyEoURPMEmRcfuoNKpwA98iLwIwzVQ4WTkp6DSImUOoaSV\\nIn8Lz5tNa92mc6uGYyBAgFKyxLpq1HuOJqBtu42cmhtokH09YkkpUUIxUcTZ9bPsb+e3zuPkvpND\\nY2pfLAnlU05dvC1iyW0p2wxMx2RLUTjk88J1OSmBrstuL4XNcq2JOdY0GNGODk16bkaO9bRN63KF\\nAJzg7+gbEAbHcZEEJy7J0W0d37n2HTQtItV8/+z9OJI/Evt8vu+jZtaY6ozIiyglSiMde88nnYXw\\nd5+SU1Pd+Idhuia2Olusm2S6JlHcERTk1Cyy+hWIEzgGU3BqCXbuOEzPiq0s8xxPgu2YQgnD4Pou\\nakYtQu80HINVRNNKmiU2siBjJjmDjBKvjnQ9rpc3Nt/AlfoVdrucLOPBuQdZMBxnOfYdHdbyt6b2\\n3tR9T++pnMXgVoglVPwkjsa2kyfXIPSaDYe9cm73WFIochDE8a5HoJvkDCqWdZwOvr/8fazr6+A5\\nHseLx3Hv7OD5wmqnygppPMdjPj0/UiXeD3xsdjYj7I+UnGKJ0bTheA42O5vQHR2maxIzZM+BwAnI\\nqzks2JtQ3PbOTzQAvFYGV3qQWR/0IuwNOK2uI51hNV2TvabtET85y7UiiY3ACShoBWSV7NtWJFtq\\nLuHM2pmIt92pfafYfuGdGEtu24QGAHw/QLXqwXHG/4iSxKFQEMDzN2bhprQD2s0JJz2TfGXhLlIv\\nhe1Gcqy3ttyp0TkKhe6m2A989uP53lgJYiS5AYerjat4ce1FAGTReO/h9w4MKm2rjZbdYs+T1/Ij\\nBaC4ZCatpEduI48D13ex1dmC7ujMpd7zPQicgJyWQ1pOQ+RFqLwEv3IawQRJDS9nocyfArdtdmm6\\nJgzXGCgvKgsyNFFjvjq7heM5qJk16HaXftO0mtgytogP0PZnBAjdYC41x6qYvZh2MDq3dQ6XapfY\\ndVxMFPHQ3EMjBeLe92KufRe+sXsT1D0fmuG4lWNJeF6nl8Y2ceFsezan1xD0RgrdXK9YQum54f+P\\nit4uzkprBc8vPQ8v8JCSUnjiwBPIqfEKbYZjYK29xm4XE8WBxZcw/MBHRa9E1tqMkhmZJTAO/MBH\\n1aiiYTZgeRZaVguWZ4EDx+i9Ii8iKyUhVF/ZdSwBunNkg7qSPMdP1eOJsmXCiY3hGIyFoYoqiyUS\\nL6GUKA00R532tbHcXMbLay+z8zIpJXFq/6mRGB23Yyy5rRMagASien286pqicMjlblwAGoYgIApe\\ncRS2cbTow6C0g3BHhyY815tjPS1353xegKoOp0j0JjijBHPTNfHCygvY6mxB4AXcVboL98/eH9te\\ntl1SvWGD6Nsc3J3g+i6aVpMFSo7jkJJTU09m/MBHw2ygbtbh+A4Mx4Dru+DAIaNmWPAJ08EC34W1\\ncXqshY7XZqDMPBzLo3V9YgppuEbs8efAQRVVNvuyW9ieHTGiC4IAdbOOmlmDKqpIy2l2jqeVNGYS\\nM7EdsWkEovBSe37rPN6qvcVuF7QCHp5/uO962+l1XX0N9sYLu35vN9Ld+VbB7RZLAHI99iY5NPGZ\\nRLqZA9c3q0NvX2+hm7czlkyS5Dieg9Orp7HUXAIHDofyh/D44uOx17jne1hprbBNOy267ATP91Dp\\nVCKzuzk1h7SSHvKoydC0mqzD37JaMFxCj09KSeS1PCReQlbNIi0TE+lpxxK6FxqWmNOuzTTOPTrb\\nSm0YAEI52+psgeM4aKLG1m9VVFFKlGKLZNOOJautVby4+iK7XhNSAqf2neqjMb4TYsltn9AA28P3\\nVgBd94dWcBSFQyLBQ1F2N/R3o0BpB3EUtklljAVeGKjENg2O9Y2mc+yU5Ky11vD88vMIEEAVVLz7\\nwLtZcAh3chAAdavOjrMiKgNnNMKg6mnhZCYtp6feNWtZLTYnYzjdTklCSqCgFSAJ0sAOSRAE8Drr\\ncFtXhgYjXi1ByBwEr82MxCu3XGISGcftB0gwopS03Z5rlmtFhmM930PVJJXFpJxEWk4zmkhezfe5\\nb1OMc47ttLRerF7EheoFdjuv5fHIwiNj+xRZ69/bVWWN18pQZh+7Jde8txvvlFgCoG9WJ3x7EtDK\\neRyFbRqFsxsdS3ZKcrY6W/jOte/A8iyogooTiydYktLbydnsbDLarMALWEgv7LguuL6Lil6JxPq8\\nlh+pqDYOKIXXdM2I0qQiEBloRVSQklPIKv2qnruJJcDg9dfzPda1GURJm5aQgOd7kbgVBAGaFplD\\nFXghktgkpSRKiVJscXKasWStvYbTK6e7SmyihicOPDGWT9HtEEveEQlNGK4bwDB8+D6puPE8B54n\\n8pxUgeZ2BHUTjqOwjTNzEkY4KIUTHlmQxzqhbzY6B01wbM/G6ZXTuNokg9wHsgfwyPwjsY9pmA0Y\\njgGO4yDxEsqp8o5JH5XyDiczGSUz1UomnZOh6i20uqQICvJaHqqoQhXVkZMG32nDa68g8EwizciJ\\n4EQVfHIevDRYtWVYcsMEMFxjYOKtiio0Udv1PBFVq6PccsdzsGVsoW23kZJTSMkplqSWEqWxhj0n\\nWUov1S/h/NZ5djun5sZPanwX1upz8KdA59jD6HinxpKwqmdvd2fiwhknxFLYxhW6udliCU1ufN/H\\nmfUzeHPrTQDAbGIW7z747tjP1rbaqHQqbCM/m5pFSk4NjamO56DSqURieTFRHNt4cxjonEzbbkN3\\ndFaIo/MjSTkJTdSQU3MjFeR2E0uAwWswTWwGzY7Rc03gdjfT1pvY+IGPmlFD3apD5uVITM0qWRS0\\nwshFskliyYa+gdOrp1lRVhM1nNx3Eskx/JRu9Vjyjkto9tAPz/cGUtgm4VjTTf0gJbY43Ix0jobZ\\nwLcufwuO70DkRZxYOIFSotTXyTEdE3Wzzm5n1EwkkPAcD4GPCg/Yno2W1YrcJ6Nkpkbxc30XVaOK\\nltWC7dkwXIMFHzonIwsyElJiqkOUwHjGa71wPKdvEDMMKiSw2/fdcTqoGV3xBsu1WNUxLafZBkLk\\nRZQTZeTU3K6rToMef7l+GW9uvsluZ9UsHl14dPykZop0jj3sYRJQVc9eCtuksQQY30z0ZowlLauF\\nf7n6L2jZLQicgIfmH8LB7MG+To7jOVhprbBjlVbSKCW6yl5xymq2Z6OiV9hjOI5DUSuO71k2AGyj\\nbtbRcTpEhXPbLJrOyVBGwrQEbMaJJUD82uoHPqNUXk8hAdd30XE6LJbQGdW23YYiKFAllcX9vJpH\\nTs1Nhd0S95kregXfX/k+OxdUUcXJfSfH6tLdyrFkL6HZw1DQ4NSb8Di+sytxgjgKm8AJI9E5vvnN\\n/4lTpx7CoUOjyVdOgiAI8OrGq6yiVk6U8eTBJ9nrBUFAgrdLKmP0eKiSOnDIk8JyLRiuwRY5kReR\\nU3NTSSzCczJhTf3wnIwsyEjKyevKad9tckOFBDpOZyDFZRpCArqto2bWGOdct4lHhBd4SMtpJKUk\\nO2dnk7OxgWHQa4/znq7Ur+CNzTfY7YySwaMLj45FPRyVzvGNZ0/jkff8JBaPPHDL0qH2cOuBdr3j\\nlNgmmdcB4s1Ex40lMzMZvO9977mu18L5rfN4ae0lAKRa//ShpyObf9rJWWmusOKTJEhYSC8M3fxS\\naXoEXVuCmWT8HOAkoHMyHbeDptlkazGdk1FFEu+m2QnqxTSSm7dDSIAW4+gxslwLW8YWDMdgTAha\\nJMsreWSUTL8J6xRiyWZnE99f/j7rUCmCgpP7To41RzVOLMkt3Isn/82Hb4pYspfQ7GEiTGomOgwR\\nM1Fo4D0VHETwIJWzP/uzP8V//a//Oy5duoAvfOEL+PznPz/lT9VFx+ng2SvPQrd1CLyAR+YfwYHs\\ngb771Ywao3EJnMBkMf3Ahxd4fUmf6ZoR5S2BF1hnJtzBYbM5Y4DOydBEhi7edE5GEYn/y/VQThuG\\n3SY3owgJaBLxWphk9igIAuiOzozggiBAw2xgy9gCAKTlNBJSAhzHISknMZuc7VORoWauu8HVxlW8\\nXukapqWV9FiGaWH00jk4XsRX/vy/4//40h/j4uVVfPGLX8Rv/MZv7Or97mEP0wJV9eyd1ZlU6CZs\\nJipBBeep4AIBHHgIPI9nn/0mPvvZX8alSxfwwQ9+EH/913895U/Uhema+Ndr/4rNziY4cLhn5h68\\nq/yuvvs1zAaqRpXdnkvNQRGVgTM5pmtis7PJ/s5zPMrJMqN878YI1HAMJsPctJp9VOWElEBWye5I\\nhbse6DWFjsOg5IbuW1zfHSoksJu5Lscj5rY0/ratNplf9RxmkE2LZCWtFEsJ4/nddXC2Olv43vL3\\nWFIjCzJO7Ts1kThEXCz51v/3HD7zn76Ii5dXr/v1Mw72Epo9TB10XieOwjYpx1rkRXzjH76BZz7z\\nDOABRw4ewQ/O/ACKqFyXBfXC1gW8vP4yALKhfd+R9/V1NHSbLPYUNGkIg3Zy/MBHy26RAcrtS07k\\nxdgqDQWtuNGfQZxfOifTcTowXIMllDT4aBKhaF1Pc85Rsdtq2/USEqDuyW27jZpZYyIRNbOGmlED\\nz/PIyllG48goGcyl5voSqN2ei0vNJfxg4wfsdkpO4cTiiakkoV/96lfx8Y9/HABw9OhRnDt37qao\\nqu1hD4PQ879nuwAAIABJREFUayYaTnQmjSU8x2Pl2gqeevdTgEcKUZcuXMLi3OJ1MRNdbi7jX6/9\\nKwIESEgJPHXwqb6NJXWfp+tiTs3FesbQzbxu60Q22CebcmoWPKygM0qSQ+dkWnYLLasF3SHFN+In\\nk0daSSOtpJFRMjeF8epukpvrJSRAY5zt2eg4HXaetqxWV+pZUNneRRM1lJPl2CLZblA1qvje8vfY\\n68uCjJP7To4k/b0TLly4gGPHjgEARFHE6uoqSqXSDo+6/thLaPbwtiLOTJQmPDtxrE3LxFNPPQW9\\nTRbZP/3Kn+KB+x+AJEixFLZJDeBsz8Z3rn4HW8YWqaiV78Hx8vHIfRyXDJPThTApJ4cuFLqtsypX\\nEAQQeAEJKUEGRgN/ZPpeOMmhEsQtuwXTNdmgO52TySgZNkx/M25cd5Pc7FZIYNjxpqo1DavBgl7V\\nqDJj1YyaYce0oBZQSpTGllsehuXmMl7deJXdTspJnFg4sXtBBMPA3Nwcmk2ShD///PN4/PE975k9\\n3JoIq3r2ihSMYib6sY99DGfOnAEA/Off+M/4mZ/+GVadn5aZqOd7+O7Sd7HUWgIAHM4dxonFE32f\\nY6W1wrpRiqhgPjU/8PV0W490cgROQClZgsAJE/vkBAhQN+oknjgtJlYTnpNJySlk1ex1l9+eFJMm\\nN+MICcR99p2ONy3CUcZG3ayjbpGZ23B8SkkplBKlqRbJakYN313+LouREi/h5L6TU/EkOnXqFJ5/\\n/nkAwO///u/jV37lV3b9nLuF8IUvfOELN/pN7OGdA57jIQkSVFFlSUBBK6CcLKOgFZBRMswHReBJ\\nR4ImOqIo4urVq3jjdTJrIMsynnzySdYRMlwDbbvNWvebxiYaVgNtuw3TNeF4RK9+JzrXhr7BZmdU\\nUcWD8w/2LTI1o8YWP4mXhg6Nt+12xLFZFmXi+SKQgUQ64Eo/704LmO/72OpsYaW1wjbalIeeUTKY\\nSc4Q/f9tY86bMZkBujQt+v5osBmEcLCi3klhCl2vWp/ru8TQ0yFUtVFVbTiOUNgySgY8z8P1XSTl\\nJFJyCpZvoWE2YLomBE6A4zuoW3VCe+tJHCc97hklg6SUxEZnA0BXwWgmObOrzYQkSbhw4QJeeolw\\n+VVVxY/92I9N/Hx72MONBJ1HUEQFmqSxDXdBKzDvFU3SoAgKmY3Y3rgz13fbxrPPPgsAaNQb+OhH\\nP8oGyS2PbEJbdgt1s87WWd0hhSnHd+D5ZDB+GDWpbtbxg8oP4Ac+ZF7G/bP391GMqkaV+WRx4DCX\\nmhv4nC2rhZpZY7dFXsRsapapwYUFaJjc8Q7LUMNqYKW5go3OBjY7m2yGJyklMZOcYfE5raRviq7M\\nIPTGk2EIxxKOI99hOGHpTVICBExgwPf9iJT0ThB5EQmZiNh4gQdVUpFRMvADH22nDdu1wYOHB48V\\n0VRR7TvWk8QTTdJQSpSw2lplTJGV1gpKidKuGRu2bePv/u7vAADVahU///M/v6vnmwb2OjR7uOkR\\nntf5p2/9Ez70kQ8BApAr5vDNb38Tkjj+3ATdEPeqsAmcgNOrp7HcWgZAKmqPLESlmltWi3kEcOBQ\\nTBQHtvqpyhiFLMgj81iDIIAXdP1x/MAnAW3bKJIGHoAsXAWtEDGlpDQ1Guhu1sQmDpNU26iQgG7r\\nYwsJDDs2VGihYTUQBEHEh0ERFGTUDFHw4yWWTEbe54THfa29hrPrZ9l3nJASOLF4YleB6Jvf/Cbe\\n+973AgBKpRJWVlYgSdP1PNrDHm5m0I3p6sYq7nzXnaQwJQDf+Kdv4MDB/jnJnRBnJkqNRF9ZfwUX\\nasRraiYxg6cOPRVZDzp2B+v6OrtdSpQGxoem1UTD7MrpSoKEcqI88qxHeBaHdrg3O5toWk007WaX\\nqiwqKKgFpOQUcmoOmqTteibnRmLSzg3t2gyaCR4kJDDs2ARBwJJlWoitGlXots4UPGVRJvsKrdhX\\nKJ30uDfMBp5fep7FRZEX8djiYyhohYmeDwA2NzcxPz8P1yXdn/Pnz+Po0aMTP980sNeh2cNND1pB\\nkQUZdx6+E1/+wy+jWWnCrJn4wNMfwIn7TyAlp6BKKlG44QW2aA8CrbjQdjCtfF2uX8YLKy+QBcf3\\ncaxwDJIgIUAAnuPheA4aVjeoZJQMVKl/gxkEAVp2K7IYKqIy1lAepZcJvECMII0q6mYduqPD9m02\\n+FpKlJDXCL85ISVYZYcmRNRNmQ5CMt+bmzgwjVNt8wMfNF5JgsTmhThwpM0fCmZeQCTKDdeAD9K1\\n2WlDQDs2aTnNKrxZJQtJkNBxOyxpFXiB+TMoYr9E+bjHmvri0A2P4zvY0Dcwk5yZ2Hj14MGD+PKX\\nv4xms4lOp4PHHnsMd95550TPtYc93IqgLIF8Jo8XnnsB5145B5jA4fnD+Mn3/ySSUhKapEU8cHai\\nQ3sBoVKbrskG6VdaK3hh5QW0rBZc38XR/FEkZEIzphvotfZaxOG9kIjfYNbNemReUxEVlJOjJzNA\\nd031fA9bxhbW2+vMg8sPfIi8iKJWRDlRRilZ6ivUhZMhP/Aj9LabNY4Ak8WSIAiYAimlG4a7ewA5\\nHl7gwQ1ctj/YaZifdhVpByYIAqTkFDRRY3HJ8R1wHAfLsxjNuZduPO7xVkUVM8kZrLZXWZF0pbWC\\nYmJyee9EIoEXXngB586dAwAUi0U8/fTTEz3XtLCX0OzhlgLHcdjY2MB3vvMdAIDnefjExz/BFLzS\\nSho5NYdSooRSooSsmkVSSkIVVUhCaGGKaUwGQYDLtctkKDzwkJSTmEvNoWk1UTNq2Ghv4ErjCppW\\nE4ZrgANRvaKJR7hT0JvMqKI6kWOz67vY7GxiXV9H02rC8iySyPAyyskyFtILyGt5ZNVs9/MNabpS\\n9TWa5NDh95s5yekNSEPnX9BV/KHnBA3KXuBFnsfxHRiu0VWp44dT0niOR0JKICWnWADLKlkInADd\\nJokMDUYtqwXDJXKdYZrYJElNWkmzpMb1Xazr6xMnNb3Xj+/7+Kmf+qmxn2cPe7gdIIoi/vIv/xIA\\nsLS0hM/+r5+FLMoRSnRey/fRoSV+52RnqbmElTbxlFFFFQdyB2C4BhpWAzWzhotbF5m8vh/4KGpF\\nUrzrocZWjSpjBAAklpQT5bHpX37go2pUsdJawYa+gabdZFTcglbAXGoOs8lZlJLbdKQRlqpwktMb\\nV2+2OAJMFksAMGo4/W4CBJHnCXvehF9n2PuQBInRlDkQU21ZkGE4BrPGAADDNaDbOqGm76JIpogK\\nZpIzWGuvsULfSmuFqdZNgvD1c+3aNTzzzDM39Hvfo5zt4ZbDq6++ivvuuw8AmQNYW1tDNjvekFvY\\nTJSKEjTNJp698iwszwLP8bhv5j7MpmbZY5pmE6bXlWgOe8dwHDETlXgJtm8TShtPqAe9RpujgA4P\\nUn41pa1RP5mcmmOJWtwCEqap0aRlVPRKR0/LeHNSDFqihlEJeudy6CyW4RhsQLPvMeAIH3+AkEAv\\nHM9B3ayjbbdJB82som7UmZpRWkmz+are+ZdxF/2KXsHLay+z71ERFZxYODGWCzRF7/Wzvr6OTGb3\\nyjd72MOthl6hjOeeew4nT54c6zkodSgsN63bOr599dvMcPmu4l24o3AHe0zbakdmYUqJUqRSTjsD\\nbbsN13cZhS2jZFBKlMZeP5pWExW9gobVIEqbVMxm208mp+ZIcSZmrQ9T1SYVHbhZqGrTiiW7FRKI\\ne31qKO0HPppW8/9v79ye47irff/99XWuuow0Gmkk2c7NxpWbY+PkUCk2hJBU7WRTBYfigYJTcDgv\\n8Hh2UbBfeOMBHvgDeOCBOlUUT1Q2xSUHB0htdpFk25iAIWWHEye+aCR5JM2M5tL37vPQ+v3UPZoZ\\nzYzGtkZZn6pUxXZPz7TUv16zfuu7vgtbxpaonCXVJGQmI62mhTV3++frl4bdwBu33hBOoRKTcL54\\nHvl0fqDzAKNZP6OEKjTE2DE3N4dXXnkF6+vrcF0XJ0+exFNPPTXQOaLmBLyZtGbV0HAayGgZ5FN5\\nnCueQ0INd9hNx0TdrovX84b7KI7vCD0st3Q2XRMNpxE2lO44nXHpF6/stNOwG1hrrGHT2ETTaYpm\\n95Sawlx6DjOpGbGbs5/lM2925AFRlmTxYO72AOfOa6KS48UrOf2W74dlEMe32I4b674zxmUeqqwi\\nraX7MhIIEIgepE7IkizMAgIEUCV1t9nTbojEyfM98cWG69Gj19APaS2NqcSUkKh4vof15jryqfzA\\nls6jWD8EcRRoN8rQdR0vv/zyQOeImhPwCq7hGFhrrCGtpjGZmMQzS88graWFfLjcLIvnL6/CRvF8\\nD3dad4QaoGE3xI59w26gaTfFLn6vWGI4Blbrq1htrGLD2Nh1UpNDyRqvymS0TNfnHH+mDms60Euq\\nxs9/t7hbsQTYm7D0MhLgErZe8VqTNSGVliVZ9GK23BZsN3Tu8wIP29Y2XN/dYxzQ789RkzXMZ+ax\\n1lgTltWrjdVQzTLgBtlhM5qhCg0xlvzgBz/AN7/5TQDApz71Kfz2t7890Plc38XrH7yOqhk6Vj1R\\neAKPzIQ+667nYtPYhOd7cHwHEiSktFTMetp0wsQlupz6GWLJe4M0WQMChBbMjgkPnkg8NFnDdCKU\\nlaXU1EgrJtEKDv+vX9oD3DAOOMM8fvZ7cA/SBAqEJX3DMQY2EmiHN3hyyUC5VUbLaYExhrSaRlYL\\nk+C59Fys2XOQgL5lbOHy6mWRiGmyhvOL5weWM456/RDEuPL666/jueeeAxD2AZRKJWja8HOf/MDH\\nH2/9EaV6CQDw0PRDwlgmCAKs1ldheRZc3wVjYfN3dLCo5VmoGJWYmUxKTe1rtRsdJsrAhOOn4Rqx\\nL+HTiWnkUqET3Chnkx2GSs6o40k/sQTYlWqLDcAuVZtuRgLt+IEvKjau72KztSlkh1yqxqWC08np\\noRKbltPCG7fegOEa4hrOFc9hPjPf1+s57etndXX1vhnNUEJDjCWlUglLS0uiYnDz5k0sLS0Nfb6V\\n7RW8cfsNAOHu1YsPvShkR1utLVGeVSQFM6mZ2AOE78BzO0/bs6FK4YK2PGtPFaAd13eFi5blWSKp\\nUCUVs6lZ5NN5MQeAJz93c1froElONMFpT3LuRgLTi0GSGy/wxGybTtcsMUnMtunVv2K6JipGRTiu\\nlVtl2J4NxljY6K9mkFSTKKQLsZ3Zfq+zYlTwp9U/iftKlVWcL54fyHBi1OuHIMYV3/dx/Phx3L4d\\nzor5+c9/js985jNDn69iVPC7938HL/CgMAXPPfCcGJJZMSqiWsvAsJBdiMlb/cDHncYdMWne9uzw\\nmaMm+xomyh0Zt4wt1K262KThidNsahb5VB7TyWmR/NxNK+a7meQcxlgC7MaTqBFPJ7issNcGped7\\nYpC05VrYNDZhOGECosoqEnJCGANFh3QPktS8efvNmG342YWzWMgu9PV6YPTr5yCQ5IwYS7LZLP7z\\nP/8T169fBwDMz8/j2WefHepcfuDjyvoVNJxwB+TE1AksTYZf7ppWEy23JY6dTk7HNLGu7wr3Ge5e\\nMpeeE85js6lZzCRDiVhKS+2aEyB0m6lZNaFttn1bSKOyaha5VA5pLQ2JSaKZdMvYQrlVFr0bvLLA\\nd4RGYc/MXeXaZ+TEjA/2k6vtDKS0XXuvu9o+n29P+f+A19LveRhj0GUdKSU0EuAucdFr68dIQJEU\\nZPWsqOhk1AxUSYXpmjBdU0yP5tbbuhx3RNvvs3KL7vXGukg415prmEnN9D18c5TrhyDGmXajDNd1\\n8YUvfGHo871TfgebxiYAIJ/Oi6HMpmNio7UhjsslczGJj+d7KLfKcHxHSIXnM/NYyC4Ic4Lp5DSy\\nWlY4OfKdfm5Es9pYRblZFs5lwO4skpnUDDJaBl7ghdWbnXjSPqtt1LFkVHK1qOyZx5/7GUv2m0MT\\nrcYAe80j+jES4OY2uqyDMSZ+7+1DZLm7HrcNj37mXvB77E7zjkh+1xprHWWQ3WhfP57nHWj9HASq\\n0BBjy49//GN89atfBQA8/vjj+Otf/zrUeapmFb97/3eh44sk4/kHnseEPgHHdbBpbHbVOjueg7pd\\nj31Rz2rZvtynGnYD5WYZFbOClt0Kd3M8F5IkCScdTRq8EsO1uHyujvh/RR/phOeoJpr32wRB/ztw\\n0SoO//97Sb+VG8/3YHphT82wRgItpyUqNhWjgopZEfdaRs0graYxlZxCIV0Q904/v/eaWcOl0iWx\\na6tICj5a/GjfU6BHtX4IYtyJGmXouo719fWBjWaAsDr7m/d+A9M1ITEJH1v6GBYnFhEEAVa2V8SX\\nxoSSiO2Cu76LcrMcq8BMJ6f7kpIajoE7zTtYb6xj294WlRyJSUiroVMb3xgbFP4FuX3OzrC28d3o\\nVMkZqP8Fu4nTvTYe4J9z3+pNANGXOqyRAN8Isz0bdasupPBAqCzRFV0YB0TlhPv9TEzXxJu334zN\\n1zszfwaLE4u9r2mHURg1jQJKaIixpV6vo1AowDDCEuzbb7+NJ598cuDzXC5dxvVquFO9kFnAs8fC\\nneqN5oYIQKqkYiY1Ix4MtmejYTdiycyEPrFv0mC5FsrNMqpWFZZrib/nfTJRC0UuX4s6sVme1XXQ\\n1350GybKZ/cMQ/TxEU1yuNd9p8dLp4drdBePDwS9V4GpXymB4zmiytLpeJnJSKrJUN/c4efZtJuo\\nmBUYjhHujJq10HhAkpFVs0hraWE3HnXP68W2tY1LpUvinlAkBeeK5zCVmNr3etrXz1/+8hc88cQT\\n+76OII4iTz31FN5++20AwI9+9CN87WtfG/gc1zau4S/rfwEATGgTeOGhFyBLMjaaG8JURmISFicW\\nRaxwPAflVjkmTZ5JzezrjOl4DjZaG1hrrsViEe+TmcuEvXqKpAj5WtSJjf+5n2dfO92Gifbr6tWJ\\nPU31fcjVejXZ3w93tX6Tm6hLWqdjGZhQSHRKRB3PEYlN1ayiYlbEe+uyjoSSEI54/W6SWa6FN2+/\\nGTM/erLwJJYnl3tf9A6jWD8HhSRnxNii6zr+/ve/429/+xsAIJPJ4MUXXxzoHIZj4O31t+EFHiQm\\n4cnCk8jomZhFMxAGGP4lk++OcPg8kl4Pcr4Dt1JfQc2qiZ04mcnIpXIoZovIJXPQFV2UnrlhQFJN\\nivk6M6lw8NlkYjI2TFRikpB7daPbMNGN1obQXLecFizXEj717fN1ehF1VuMP45i7GustMYhKC7j+\\nmCdGwN2bkdOvJEGWZOFkJLO9w1sDBLA9WwQaxuIzJTRZE8YAfACoG4S/D9Mz0XJbwhWPgSGp7Nq4\\ndvtsuqJjNjWLtebarvyssYbpxPS+A9Pa1082m8ULL7zQ18+MII4azWYTv/nNbwCEyf5XvvKVgV7v\\n+i4ur14W/ZanZ08jn86LjQyOmPOCMJaUm+XdZxxjmE3N9kxm+DyZ96vvY62xJuSvDAxTiSksTSxh\\ncWIRE/qE+DIcdfVMa2kRT3LJHCb1yZENE62YYQW6btVhOIaoFrXHEqC/eNIuV5MlGZIk9fW8vh/u\\nav3K0nh8j/682xMbP/BFHATiEkBZkpFQEiKWZLQM/MCH5Vu7IylcW0gPo4Y23a5bkRQsZBZQbpaF\\nIcV6cx0JJdFX1f+g62cUUIWGGGt+9atfCZvNYrGImzdvQpb7rzZc3biKv90Jv9BN6BN44cEXYLs2\\ntswtcQx3FwPCXYzokDOJSZjQJ7pWOPg8mfXGeqzZnM+TmUnOIKtnRyYH8wNfVHOiLmy2Z+9rTtDp\\nswMQiUm7hI1PUI7ST5AQiUuwazwwiLwgWsW5mxKDfnbbXN+F6ZgwPXMgIwGuea+aVTSsBsqt8m5f\\nDpMxoU+I+TU8mPS6zobdwMWViyIQyZKMswtnkUt2njzOOej6IYijQqlUwvLyMnw/tEG+ceMGlpf7\\n250GgNu12/jj7T8CCDcv/vnhf4YiKVjZXhESo4yWEfM+LNfCRmsjlszkU/mefXDb1jZK2yVUzErM\\nlZFb+u+XDA1CEAQxlQCv7vC+jUHPBYTPtqiELVrhGSaW8HPfb3e1fj4j0DuW8KpNdBOvnW5GArZn\\no2k3YbiGGB0B7PSFSrroo+Lumvu5db51+y3UrJr4u8fmHsOJqRM9r/Gg62cUUEJDjDWu66JYLKJc\\nLgMAXnvtNTz//PN9vdbzPVy4fkEkKE/NP4UHpx9EuVkWD2xd1pFLhV8KuWsVR5bk2C5YOw27gfXG\\nuhiOxkmpKcymZjGZmBx4hshBiFmDtiU9g2iWObxfp5OEbVCNNW/Aj/blDJrk8ATnbiQ5+wWkIAhg\\neRZMx4Tt2x2PUSUVSTUZmx8QBAG2rW1UzSpqZg0bxsaufIwpmEhMIJfMoZAuiAbibtfWtJu4WLoo\\npIwSk3B24SxmUjNdr+sg64cgjhovvvgiLly4AAD43ve+h29/+9t9vS4IAvzhxh+w1lwDADycexhn\\nF85irb4mbHFlJmNpcgkSk2C6oUEAf65ITNozMDGK6ZoobZdQNspxqbKkYTY9K2bJ3CtpVfsw0aiM\\nbZBnd5ROSQ43pRn0ug5zktNPcsNNdboljlzy1/6z4eqLht3AprEZu1eSShIZLSPm2AHdY4njOXjz\\n9puxpObR/KN4YPqBntcWXT/f//738a1vfavn8aOGJGfEWCNJEm7fvo233noLQLhAP/vZz/b12lK9\\nhOuVsHdGl3WcK55D3aqLL6QMDLlUDhKT0HJawtoQCHdKJvXJjsmM5VpimFnLaYndFk3WkE/nUZwo\\nYjLReSrz3aR9mCh3zsmn8phKTCGrZ5FUw+Z2mYWfzUd8p6i9pM5lB4YTDn+rmlVsGpvYbG0ONEy0\\nk1yNS9X6SVB4QuT6bswuU/Q4HTAw7SclYCzUPCfUhCjve74XC1p+4MPyLOFyJjFJOONN6BNIqGEl\\nR2KSkP0ZroG6VUfdrothat36azRZQz6Vx53mHSHzWGusiabgTrSvH0mS+l4/BHHUCIIAr7zyCgBg\\ndXUV3/jGN/o26LhSviKkVR8tfhS2a2Pb3hbHFDIFaLKGltMKzWZ41UKSMZee65jMuL6L1foqrleu\\nxxrAZSZjNjWLB6YfwHxmft8ZWaOGP++iw0Qn9UnkkjlM6VPIaBlhlMKHObdXHdodyLjEijtB8gp2\\nxaigbtfFMNH9Ykn03B2NZ/r4Md1NuVo/sjQeGxRJAQPrmJB5QSjN9nxPXKsiKSKGp9TQrdNyLeGo\\nZjgGWnYLpmeKhKjT9ciSjMWJRWy2NoVyoNwqi9k33Yiun7W1tb7Xz6igCg0x9ly8eBFPP/00gLCP\\nZn19HalU77J7EAT4jxv/gXIr3Jk+OXMSj0w/gqpVFcdMJ6eRUBLiSzlHlVVkteyehcoHYJVb8V00\\nmcmYSobyoaSSvKcLPMqwS93xnZgpQVSCMAy8N6hdwsZ7gXoRreDwfpt+4T0tUfOBg/4u9ttt48me\\n5VodA2m7kUB0jsSmsYmqURXBNKEkMKlPYi4zh7n0XNfhbC2nhYsrF8U9KzEJT84/ibn0XMfPOMz6\\nIYijSLtRxp///GecOXNm39ddKl0Sm2PzmXl8bOljWNleEc+FyUT4Zb9pN7Fl7MqZFUlBPp3fIzn2\\nAx8Vo4JbtVuhkyZ2N2YmE5NYyCzsGSFwLxl2BozjOTFDgmh1Zxj4MNFOMrb9NgwPUsXh1yMxaWRV\\nnP1iiR/4oa2273WMJe1GAkEQiOSwalaxZWzFJO9JJRluaO5UBjtdg+u7+K+V/4rdsx+Z/Qgezj3c\\n8TOOyqhpWKhCQ4w9xWIRP/3pT7G5uQnbtvH444/jscce6/mailHBOxvvAAi/VJ6dP4um0xQPE77r\\n1LAbseSkUzITBAEqRgU3qjdQMStCXsYQOp8tTy73fGjcDYYNOJ3+izbDR80JuGwuo2XEfB2JSfDR\\nW3LAtcKxZlIjNCeoGBU07IYYJhbdkYzuuvFKTtR0oFtzZRTeu8MrOdHZBsDglZz9dtt482ZSDSsv\\n/P2E0UKbkYDEpHC3c6dvK6EkRBWMz4/YtrZRt+uQWXju9s+syioK6QLutHYrNevN9XCoZwcb2GHW\\nD0EcRXRdxzvvvIMrV64A6M9oxnIt/Gn1T+G6BsOZwhk0naaQC2myhrn0HBp2I2YOoEiK2JiIUrfq\\neG/rPdzavhUzpkmpKRyfOo5jk8d6Sp3vBqOIJwBEIzw3J+AqgVwyF1aS1XQYS3YSkv2MboCISsA1\\nxHydilnZndXm7poTALvN9d2qOFxq1lclZ4RVnH5VAKqsiopW+2y3qJEAT/aSahJJNYmUmkKAQNxT\\ntmej6TRRs2oIggC6ou/Z5JOYhIXsAipGRUgn+SylTlLmYdbPKKEKDXEk+O53v4vvfOc7AICXXnoJ\\nv/zlL3sef3HlIm7UbgAAitkiTs2cEg3VClMwm55Fw26IvwN2XKrahk017AZK9RKadjP24OVNmpOJ\\n3u5no+JeT03eD8/39lR0eJVnvwDVDb771t6300ljHa3g8P/vl5h99JAzcnrttvFZAqZrIgiCPZ+d\\nGwnw5t6qWcVGcwPlVlnIHoMgEAM2F7OLHZs9TdfExZWLu1OgGcMThScwn5nf85mi6+fll1/GL37x\\ni4GvmSCOAr/+9a/x0ksvAQAWFhZw69atnkYZV8tX8dc74QynCX0C5xfOC6kZA0NxogjTNVEzd/sR\\nVFlFPpWPVRFM18St2i2UW/F5NJqkoZApYD4zv69z4Sg4bLGEVyaifTq8wjOoOQGHb4Z1mrPTfi33\\nux+nVyzhxg2u73YdXM2NBPiA7rpVx0ZrQ/QOB0EgpGqFdAHTyek9iY3ne7hYuhgbDPtI7hGcmj21\\n5zNF18+9NpqhhIY4Ely/fh0PPfQQAECWZZRKJczNdZbYmI6JV997VexinFs4F3OWySVze+a96Ioe\\n2922XAurjVVUzWpM9qTJmpglMurhY1EOW9AZBG4d3cmJbdjrajcl4AlPNJkcRZITHQjaL90CEjcS\\nMBwa7yK+AAAROklEQVQDlmd1DHjcSEBmMratbaw31lFulWM/q5SaQj6dx2J2EVk9uyepuVS6FHO9\\neWzuMRSzxdj7tK+f1dVV5PP5vq+RII4K7UYZFy5cwKc//emOx/qBj1f/36viy+Hp/Glk1N04MZOa\\ngR/4MZt/brXOnyGu76JUL2G1viosn4HdPpnFicW+BmwOyzjHEm7x38mJbZj5OsDeYaI80Wl3qbwf\\nSU6v5CY67oBXd9qrLYqkQGaySLA3jA0YjiHOrUgKMloG85n5sAooSbHzXypdEjJ9AHho+iGczp+O\\nfY5B1s+oIckZcSSYnp7Ga6+9hlu3biEIAhw7dgzPPPNMx2P/sfUPrDfXAQAZNYPF7KIoL6fVdNhs\\nF0lmeBM9EC7q9cY6btRuoGk3Y3aUM+kZHJs4hunk9Mgb/kdV8j8M8AGfSTUp5FW5ZC60lUzumBMo\\nSTHwsy/ZwU5FKNpMutnaNSfgEjY/8GMDRhVJic/a6eZiht0ZOa7vCi1z9HN1+xl3kxJwCQHvoWGM\\niYZX/u/cSMByLWiKhlwqnBsBIHSnQwDHc7BtbWPL2ILjOUgoCdFfo0gKCukCyq2yuKfvNO8gqSSF\\n0w2wd/0sLy93XT8EcZTpZDTzuc99ruOxK/UVvFd5D0D4RXh5Ylmsc+5mGLX5TygJ5FP5UJob+Ci3\\nyri2cS0crLlTbWBgmNKn8HDuYSxOLPa0cR6GoxZLouYEUUn0ZGISaS29G0t2ZMv7xZKoOQGXRPMe\\nlLpdF/JgXkVTJAWKrAwkVxvWdKCXLI3/LHiVycfeTTsut5aZjIyeEcPAuXLCD/ww2bFqaDktkdBx\\naV4xW0TNqqHphBtkFbMCx3Ni/Zn302iGKjTEkeGHP/whvv71rwMAnn76abGgoni+h1ffezXclQiA\\nB6YfELvVCgv1qdEyttCeBgEqZgWl7VJsF433ySxkF5BSUyN72I/zrtndIAiCrhK2qDxjELjsIFrR\\nUaXdSddR84F+aa/i9KrkdNtt44mZ5YYJS/suHjc2aDktrDfWUTErQk/NGENGC5P0YrYo9Na2Z+Pi\\nysXYl6tH5x7F0sSS+HM/64cgPgxcunQJ58+fBxD2AaytrSGd3usU+PoHr+NO8w4AYCYxgwdzDwLY\\nabpWkzHJclJNYiY5A8YYamYNN2o3UDNrsfWfUlNYnljGbGp2ZJtiFEvi8B7OdrtpblgwDHyTjFd3\\n2i2n70Ulh79HFC7X472U7ZUbhjBRcXwn3ADccdKLzqDLJXKYz+466fmBj8url7HWWBPvc2LqBB7N\\nPyrO275+7pXRDCU0xJFha2sL8/PzcJzwoXT16lWcOhXXeN6o3sDF0kUAgOd5ePbYs2EVIAigKVps\\nxyOthQ2KDauBlfpKaBoQWS5JNYlipoiJxMEaNCngHIxuw0S5XeUwRIeJcrkBL9f3UzGK0p7gdLpX\\nOiU3fLfMcAwRaNsDUhAE4cyBnUoU/1zcXOD41HEU0gUocrgLd6l0KSZ/OZ0/jWOTxwDsXT/Xrl3D\\nyZMn+75OgjgqBEGA06dP49q1awCAn/zkJ/jiF78YO6ZqVHHh+gVh7HGmcAZpLY0gCMTGBietpZFL\\n5mA4Bm7UbqDcKsee+5qkoZgtYiG7cGCpMsWT4eEbZ52c2Ibt12kfJso3zVRJBdhgv69+k5xOyY1Q\\nFkQqgfyc/DW2a4fumlY1NpuOG1vMpeegKRqCIMDl1ctYbayK8x+bPIbH5x4XCdx+6+duQJIz4siQ\\nTCZx+fJlXL16FUAoo3nuuedix1xevQzDNUSZdC4zJ3pgooEko2XAwHCzdhMr9ZU95gDFbBHLk8tI\\naYNXZY5Syf8wwBjr6JyTT+eFe05KTQmJGRj6kx14DgzXiMkOqlY1nIfg7VaHosPxOsGlBVyuFp0G\\nzYNO1HkH2HVbU2U1/OyyDsYYvCCcbRMNVroSToLWZC18j8AV/TkbrQ1smVvQJA0ZLYOF7EI4cG2n\\nyrjR2oAqqZhKTPW1fgjiwwBjDNVqFb///e8BAK1WC1/60pdix1y5cwUVswLP96DLOo5PHRcDJxNK\\nQhzHZ37dqN7Au5vvxqqkEpMwn5nHqdlTmEnNDFyVGZWbJRHCZbqdJNHTyWlktIx4HnO5cvQ53okA\\nYUWIzyDjTpUVM5yvY7qmSKK4A2bPZKUPuVqn3y2fQyckafy1kc+uyIpQpbiBCydwgCCUqm1b29gy\\nt4Tl8+LEopB4A0DNqsF0TRTShT3rxzCMPevnbkAVGuJI8bOf/Qyf//znAQD/9E/P4Re/uADPCxAE\\ngO1ZeH/7PWxYK7hjrOKTJz4JTdZguzYmk5PiHCk1hS1jK9Q1Rxr+ZSZjJjWDQroATek80bkTtGN2\\nOHE8p6OEzfGd4X5nO3MAuKaa78Lpsr7vF5WofajEJKH3bq/c8ESF67ij7w0Ahmtgs7mJLXNL2MgC\\nYZUol8zhwakHkU1kcal0Kea6dGr2FE5MnYitn09+/Gn833//Pwg8E/BdQFIgyQnImSIk9e41KRPE\\nYeD999/Hgw+GErKHHz6FP/zhLSQSaQQBEMDHPyrXsG7dxGrzNs4UzmA2PYuaWcNMakZsbmS0DEzX\\nxM3azT1S5enkNE5MnRio4Z9iyeGE93B2cmIbxpwgGkuiCoF2o5uur+9SyWmv3ESNBKLvDYRJTM2s\\nYdPYhO3asfPzhGY6MY0r5Su4vX1b/NtidhFn5s/ggw8+EOvn1EPLeOP1f0cqId/VWEIJDXGkMAwT\\nX/7y/8QXvvA/8IlPvND1uG13A+mUjIa3hZn0bgCyPAvlZnnPAp9MTKKYLfZlm0lBZ7zhsoNOLmyD\\nDhPlO2lgiAcmaf9horEZCWzvnB3P92C4BgzHiMkhGBiadhOrjVVUzApYwET1kU8lPzZxDO9uvYuq\\nuTtI9pGZR7CQWMBXv/gv+PJ//ySe//hTXa9LSuahZI9DThXo3iWOJEEQ4F//9d/wzDOf6BlLNqwS\\n0ikZG3YJuWRONPEHQYANYyNWkQHCJOf45HHkkrm++iIGhdbj4SI6TDQqYxumX0f0trQlOf0ME21P\\ncoD4RhmfzRYzukE4DHXL3MJGcwNe4EFmu++R1bMoZoq4uX0Tt7Zvib8vZos4UziDf/vf/wsfP/fg\\nPYsllNAQRwbfD1CterCs/m/pQLagpS007DpqVm1Pg3lKTWFpYimUoPXQqw4KBZ3xhEtKohUdnvBE\\nq3m9EHKBHRcaiUnQpN1GUm493WkQK09yZCbvBqedpv+okQB/n6bdxM3aTVTNajggVdIhSaG+v5Au\\noGbW0HLDOTUyApzVdSTcZt8/DymZhz53Duw+TSwniLvBMLHERgNSsgnDCyezm64Z+3dd1rE8sYz5\\n7HxPeeqgUCwZT/gMmfYkZ1Cjm6jhAHc6iyY5PK50uueiyQ3/c7uRAMfxHJSbZWwYG/B9X0juAGBS\\nn0TNCm2gAUAGcE7XkfEt9MsoYgklNMSRwPcDbG15cJzBb2c7aGHdfxdyxHOd98m076JRwCG60T5M\\nNGpUsF/PThAEoj9GaKODIDZfJ2pUwG2Zgd2gxIMLn5rNg2IQBKiZNdys3UTFrEBlKjRFE8PWGnYD\\nGS2BMzKQZYPf35I2CX3hY5TUEEeCg8QS02/guvVnqPLuWpCYhMXsIpYnl/fIhSieEJ046DBRnuTw\\nOALsHSba7sTWDmNM9H1G39NyLazV17BpbCJAOLtGYQokScJGawOua+EZXcPEED5JB40llNAQY08Q\\nBKhUBttNa8cMtrGFDyAzGXOZORTSBeF+NigUcIh2om45UQlbr2Gi0aZPbirAYYyJqo6maDEJm8zk\\n0PjA351hw+/JLWMLH9Q+QN0MGzkTSgIKU/ARZmFJH34KuZTMQy88Tfc+MdaMIpY0/QpK7lUwMMym\\nZvHA9ANIKAmKJcRIGGaY6H6DQNuTnKgbGzcO4MkNvycNx0CpXkLFCMcGqLIKBTKKzgYKyvCbWweJ\\nJZTQEGOPafqoVIazVIziqJsoTE1Dk/tv+Aco6BDDE5UdtEvYOvXr9EpyOBKThGyNN5WK3bqdgLfZ\\n2sSt7VtoOS0sKCr+W/LgMwK0uY9CSc8f+DwEcb8YVSyp4iaKU7OYSEzsf3AEiiXEQeDzdaJJjuM7\\nHc0J9ktygN2NM17J4aMLpB01C2Nhv+ZKfQU1s4YcPJyWhpsLF2XYWEIJDTH2bG66sO2D38aaxpDL\\n7W+bSUGHuBdw2cF+w0SjSY7ne13lbVHHNH5MzazhZGBgXj3Y7Asg3FlLzD9z4PMQxP1idLEEyOX6\\nc6MiiLtNt2Gi7bGknySHHwfsjBsAg8xkWL6FmeZtTLGDbwgMG0tI9EyMNa4bjCQAAYBtB3DdAIqy\\ntxGbIO41EpOgK7pwTYoStQltT3h4gtP+X2zGDRgsz0JGkjAvHTyZAQDfKMN3GmTpTIwlo40loFhC\\nHBr4TDNVVpFGOvZv7cNEoxUeL/A6JjnCBnpnc8z2bUiuOZJkBhg+llBCQ4w1hjHcJPhumGaAbHaI\\nbjaCuIfIkoyklOxoI8534qKmBJZnwXRNMQjUD3wkWAJ55gKe3eEdhsNrlCBNnxzZ+QjiXkGxhPgw\\nwhgLN86wd+Ms6uoZNSmwXGs32WEBWMAwhcFtqHsxTCyhhIYYazxvtIrJm9XbWC3/Y6TnJIjDQBAE\\noqGUD1NLKTKg7Q1kQ7+HZ+5/EEEcQkYdS1ZqqyhvvT/ScxLEYcELPLheOLvGDVycZD6mlf0l+/0y\\nTCyhhIYYa0bdASZhdAuSIA4TjDEosgJFVpBEWNnJwAYwup3pYID5CQRxmKBYQhD9IzMZsiKLyk7a\\nbwEjrNIME0uoHkqMNaOWJPsYjQaUIMYBD6NdQDSLhhhXKJYQxPCM+m4fJpZQ9CHGGllmQBfv9WE4\\nNrWER7PHR3Y+gjjMOJV34VTfHdn5mJwY2bkI4l4y6liyOLmAj2SXRnY+gjjMHIZYQhUaYqxJJkd7\\nC4/6fARxmJEzxUN9PoK4V1AsIYjhOQyxhFYcMdYoCoOmjUYroOtsj80mQRxlJDUDKZkfzbmSebJs\\nJsYWiiUEMTyHIZZQQkOMPen0aG7jVIqWA/HhQxmRxHJU5yGI+wXFEoIYnvsdS2jVEWOPrjPo+sF2\\nw0ZxDoIYR+RU4cA7a1IyDzlVGNEnIoj7A8USghie+x1LKKEhxh7GGKamZKjqcEFEVcPX0xRn4sMI\\nYwz63DlI2uRQr5e0Sehz52j9EGMPxRKCGJ77HUtYEIzafZ0g7g++H6Ba9WBZ/d/Suh4GIEmiAER8\\nuAl8F9adP8E3yn2/RkrOQZ87S3bNxJGCYglBDM/9iiWU0BBHiiAIYFkBmk0ftt391tZ1hlRKgq4z\\n2k0jiB2CIIDXWodbv9EzGEnJPJTsccipAq0f4khCsYQghud+xBJKaIgji+sGMAwfvh/uuEkSgySF\\ndprkQEMQvfGdBrxGCYFnIvBdMEkBkxOQM0VyMyM+VFAsIYjhuVexhBIagiAIgiAIgiDGFjIFIAiC\\nIAiCIAhibKGEhiAIgiAIgiCIsYUSGoIgCIIgCIIgxhZKaAiCIAiCIAiCGFsooSEIgiAIgiAIYmyh\\nhIYgCIIgCIIgiLGFEhqCIAiCIAiCIMYWSmgIgiAIgiAIghhbKKEhCIIgCIIgCGJsoYSGIAiCIAiC\\nIIixhRIagiAIgiAIgiDGFkpoCIIgCIIgCIIYWyihIQiCIAiCIAhibKGEhiAIgiAIgiCIsYUSGoIg\\nCIIgCIIgxhZKaAiCIAiCIAiCGFsooSEIgiAIgiAIYmyhhIYgCIIgCIIgiLGFEhqCIAiCIAiCIMYW\\nSmgIgiAIgiAIghhbKKEhCIIgCIIgCGJsoYSGIAiCIAiCIIixhRIagiAIgiAIgiDGFkpoCIIgCIIg\\nCIIYWyihIQiCIAiCIAhibKGEhiAIgiAIgiCIseX/A5A3/yTw+4soAAAAAElFTkSuQmCC\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1120x480 with 2 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        },\n        {\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAzQAAAFpCAYAAABK/W13AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsvXmMJHd99/+uu7q6+pqennt2dna9\\n9trrAyfheCAhiAdFARkiwukoxCGCYEWIIyIKwYplCAmBJxZSwi8kcggmPwUBIuKJwBwP+QlyAQbx\\nYBt713vYuzuzc/Z91V31/f1RW9/p6ume6Zmd2elZf1+SJe901beqj6pPfa73hyOEEDAYDAaDwWAw\\nGAzGIYQ/6BNgMBgMBoPBYDAYjN3CHBoGg8FgMBgMBoNxaGEODYPBYDAYDAaDwTi0MIeGwWAwGAwG\\ng8FgHFqYQ8NgMBgMBoPBYDAOLcyhYTAYDAaDwWAwGIcW5tAwDgVHjx7Fv/3bvw207de+9jXMzs5C\\n13X87Gc/2+cz2x84jsOFCxeu2/FOnTqF73//+wNtu5PvgsFgMIadF/L979FHH8Uv//Iv78va3//+\\n9zEzMzPQtoQQvPOd70Qul8NLXvKSfTkfxo0Nc2gYNxwf+tCH8JnPfAatVgt33333NRugV73qVfiH\\nf/iH2N+ut8Ox3flcK8888wxe9apXXfM6OzFgDAaDMQwMy/3v0qVL4DgOnufRv+2nw7Gb89kv/uu/\\n/gvf/e53ceXKFfz4xz9mtoSxY5hDw7jhuHz5Mk6dOnXQp3EouB6GisFgMIYRdv8bHi5fvoyjR48i\\nmUwe9KkwDinMoWEcOoIgwF/+5V/i+PHjyOfzeOtb34pKpQLbtqHrOnzfx1133YXjx4/jHe94BxYW\\nFvD6178euq7jU5/61Kb1qtUq7rnnHhQKBeRyOdxzzz24cuUKAOCBBx7Af/7nf+K9730vdF3He9/7\\nXrzyla8EANx1113QdR1f/vKXAQDf+MY38KIXvQjZbBYvf/nL8dRTT9FjHD16FH/1V3+FO++8E5lM\\nBm9729tgWRZ9/X/9r/+FyclJTE1N4R//8R/7vvde5wMAP/jBD/DiF78YmUwGL37xi/GDH/yg7xpH\\njx7FJz/5Sdx5551IJpPwPC+WxTJNE/fddx9yuRxuvfVWfOpTn9oUKXviiSc2vZd2u43Xvva1WF5e\\nhq7r0HUdy8vLW36XDAaDcT056PvfY489hrvvvhvpdBqzs7N46KGH6GuRbclms9B1HT/84Q9x//33\\n44c//CF0XUc2mwUA2LaND33oQzhy5AjGx8dx//33wzRNABtZoocffhhjY2OYnJzE5z//eXqMcrmM\\nN7zhDUin03jJS16C5557ru9n1et8giDAxz/+cczNzWFsbAy/8zu/g3q9PtBnv7y8jDe96U0oFAqY\\nn5/HX//1XwMAPve5z+Fd73oXfZ9/9Ed/xGwJY+cQBuMQMDc3R7773e8SQgj59Kc/TV760peSxcVF\\nYlkW+f3f/33y9re/nW4LgJw/f77nvr0olUrkq1/9Kmm326TRaJA3v/nN5Dd+4zfo67/6q79KHnnk\\nkdg+3cf46U9/SgqFAvnRj35EPM8jjz76KJmbmyOWZdFzePGLX0yWlpZIuVwmJ0+eJJ/97GcJIYR8\\n61vfImNjY+TnP/85abVa5N577920fifd51Mul0k2myX/9E//RFzXJV/84hdJNpslpVKp72d51113\\nkYWFBWIYxqbP6I//+I/JK1/5SlKpVMji4iK54447yPT0dGz/fu/le9/7XmxbBoPBGCYO+v73ve99\\njzz11FPE933y5JNPkrGxMfK1r32NEELIxYsXCQDiui7d/vOf/zx5xSteEVvj/e9/P3n9619PyuUy\\naTQa5J577iEf/vCH6fqCIJA//dM/JY7jkMcee4wkEglSqVQIIYS87W1vI295y1tIq9UiP//5z8nU\\n1NSm9SN6nc/nPvc5cvz4cfLcc8+RZrNJ3vjGN5Lf/u3f7vteo8/D933yC7/wC+SjH/0osW2bPPfc\\nc2R+fp58+9vf7vk+mS1h7BSWoWEcOv7+7/8ef/7nf46ZmRkoioKHHnoIX/3qV3ddPpDP5/GmN70J\\nmqYhlUrhgQcewL//+7/vaI1HHnkE73nPe/DSl74UgiDgvvvug6Io+NGPfkS3ed/73oepqSmMjIzg\\n9a9/PZ544gkAwFe+8hW8853vxO23345kMhmL2A3CY489hhMnTuAd73gHRFHEvffei5MnT+LrX/96\\n333e9773YXZ2FolEYtNrX/nKV/CRj3wEuVwOMzMzeN/73tdz/17vhcFgMIadg7z/vepVr8Idd9wB\\nnudx55134t57792RvSGE4JFHHsGnP/1pjIyMIJVK4SMf+Qi+9KUv0W0kScKDDz4ISZLwute9Drqu\\n4+zZs/B9H//yL/+Cj33sY0gmk7j99ttx3333DXxsAPjnf/5n/OEf/iGOHTsGXdfxiU98Al/60pe2\\ntb8/+clPUCwW8eCDD0KWZRw7dgzvfve7Y+fNYFwL4kGfAIOxUy5fvow3vvGN4PkNf1wQBKytrWF6\\nenrH6xmGgQ9+8IP49re/jWq1CgBoNpvwfR+CIAx8Tl/4whfwN3/zN/RvjuPE0uQTExP0/zVNo68t\\nLy/jF3/xF+lrc3NzOzr/5eXlTfvMzc1haWmp7z6zs7Nbrtf5eq9t+70XBoPBGHYO8v73+OOP48Mf\\n/jCefvppOI4D27bxlre8ZeD9i8UiDMOI2QxCCHzfp//O5/MQxY3HO03T0Gq1UCwW4Xle7D1dq72Z\\nm5uD53nb2t/Lly9jeXmZls0BgO/7+JVf+ZUdHZ/B6AfL0DAOHbOzs/jWt76FWq1G/7Msq+/NlOO4\\nLdd7+OGHcfbsWTz++ONoNBr4j//4DwChkRhk/+icHnjggdg5GYaBe++9d9t9Jycnsbi4SP+9sLCw\\n5fbd5zM1NYXLly/H/rawsLClcdnqPU1OTtIeIgCxc9uOQT4rBoPBOEgO8v73W7/1W3jDG96AxcVF\\n1Ot13H///Vvamu6/jY6OIpFI4JlnnqG2pl6vo9VqbXvsQqEAURQHtje9zqfb3iwsLEAURYyPj295\\n7NnZWczPz8dsZLPZxDe/+c2Bj81gbAVzaBiHjvvvvx8PPPAAvakWi0X867/+a9/tx8fH8fzzz/d9\\nvdlsIpFIIJvNolKp4KMf/ei2+3f/7d3vfjf+7u/+Do8//jgIIWi323jsscfQbDa3fT9vfetb8eij\\nj+L06dMwDGPT8bd7P6973etw7tw5fPGLX4Tnefjyl7+M06dP45577tn22P3O5xOf+ASq1SqWlpbw\\nmc98ZuB9x8fHUS6XB24SZTAYjGFiv+9/zWYTIyMjUFUVP/7xj/HFL36RvlYoFMDzfOz+Pj4+jitX\\nrsBxHAAAz/N497vfjQ9+8INYX18HACwtLeE73/nOtucnCAJ+8zd/Ew899BAMw8Dp06fxhS98oe/2\\nvc7n3nvvxac//WlcvHgRrVYLH/nIR/C2t70tlhHqxUte8hKk02l88pOfhGma8H0fTz/9NH7yk5/0\\n3J7ZEsZOYQ4N49Dx/ve/H294wxvwa7/2a0ilUnjZy16Gxx9/vO/2f/Inf4KPf/zjyGaz+Ku/+qtN\\nr3/gAx+AaZoYHR3Fy172Mvz6r//6puN99atfRS6Xo/XUDz30EO677z5ks1l85StfwS/90i/hkUce\\nwXvf+17kcjncdNNNePTRRwd6P6997WvxgQ98AK9+9atx00034dWvfvW277/zfPL5PL7xjW/g4Ycf\\nRj6fx6c+9Sl84xvfwOjo6EDH7+bBBx/EzMwM5ufn8ZrXvAZvfvOboSjKQPuePHkS9957L44dO4Zs\\nNstK0RgMxqFiv+9/f/u3f4sHH3wQqVQKH/vYx/DWt76VvqZpGh544AG84hWvQDabxY9+9CO8+tWv\\nxqlTpzAxMUHv6Z/85Cdx00034WUvexnS6TRe85rX4OzZswOdYzSjbWJiAr/7u7+Ld77znX237XU+\\nv/d7v4d3vOMdeOUrX4n5+Xmoqhorte6HIAj4+te/jieeeALz8/MYHR3Fu971rr4OC7MljJ3CkSjX\\nyWAwGD347Gc/iy996Us7FkpgMBiMww67/zEYhwOWoWEwGDFWVlbw3//93wiCAGfPnsXDDz+MN77x\\njQd9WgwGg7HvsPsfg3E4YSpnDAYjhuM4eM973oOLFy8im83i7W9/O/7gD/7goE+LwWAw9h12/2Mw\\nDies5IzBYDAYDAaDwWAcWljJGYPBYDAYDAaDwTi0MIeGwWAwGAwGg8FgHFqYQ8NgMBgMBoPBYDAO\\nLcyhYTAYDAaDwWAwGIcW5tAwGAwGg8FgMBiMQwtzaBgMBoPBYDAYDMahhc2hGSI8j8A0A/g+ASEA\\nxwGCwCGR4CGK3EGfHoMx1ARuC35rGYFvAYEH8CJ4QYWgT4GX9IM+PQbjusFsCYOxe5gtOZywOTQH\\nDCEEtk3QbgdwnP5fhSxzSCZ5KAoHjmMGicEAwuvHN9bgNS4hsEp9t+MTBYipOQjaOLt+GDckzJYw\\nGLuH2ZLDD3NoDpAgIKjVfNj24F+BonDIZgXwPLuQGC9sSODBXv8pArM48D58ogBl7BfB8Sw5zbhx\\nYLaEwdg9zJbcGDCH5oAIAoJKxYfr7vzjlyQOIyPMEDFeuJDAg73yQwROfcf78nIGyuT/YIaIcUPA\\nbAmDsXuYLblxYKIABwAhYTRtNwYIAFw33J/5oowXIoSQMJq2CwMEAIFTh73+U3b9MA49zJYwGLuH\\n2ZIbC+bQHAC2TXZUGrBfazAYhxHfWNtRaUAvArMI31jbozNiMA4GZksYjN3DbMmNBXNoDoB2O9iT\\ndQxjb9ZhMA4TXvPyUK3DYBwUzJYwGLuH2ZIbC+bQXGc8j2ypQLMTbJvA81hkjfHCIXBb1xxRo2uZ\\nRQRua0/WYjCuN8yWMBi7h9mSGw/m0FxnTHNvI2F7vR6DMcz4reWhXo/BuF4wW8Jg7B5mS248mDTD\\ndcb39zYKtlRfQbFycU/XZDCGlSOBgcIerkd8aw9XYzCuH3ttSxZrS1gpnt/TNRmMYeUYHIzvobgf\\nsyUHD8vQXGf2WgyDh7C3CzIYQ8xe/9pJ4O3xigzG9YHZEgZj9zBbcuPBHJrrzF4Plg3g7+2CDMYQ\\ns9e/djY/gHFYYbaEwdg9zJbceLBv4DojCByAvQutTWcmcTI1s2frMRjDCCEELacFu3oWMFf3bF1O\\nUPdsLQbjerLXtmQ2O43bUkf2bD0GY1hpO22YlTPMltxgMIfmOpNI8Gi19q75MpFgSTbGjYvjO6hZ\\nNdStOrzAgwAJ2h6uL+hTe7gag3H9YLaEwRgcL/BQNauoWlXYng0x4DC3h+szW3LwMIfmOiOKHGSZ\\n2xO5TcLbV+Nz0jWvxWAMCwEJ0LSbqFk1GK4BAHQSs8dLMHgVWnDtDZh8ogBe0q95HQbjINhLW2KR\\nJgxPREpIgdvrWjYG44CIMvsVs4Km06R2hBACl5fQ5hQkiX3Nx2G2ZDhgDs0BkEzycJxrr+Cs+Cto\\n1QhGtVFk1Sx4nkXYGIcXy7NoNiYgYeSZdHQ+i7wIVVBh+Xlo1tI1H09M7WV8jsG4/uyVLbnUPoNL\\nloPZzCzmMnMQBZE5NoxDi+M7NBvj+i79e2RPOHDQZR0+zwHtax+KyWzJcMAcmgNAUTgoCgfb3n1k\\nreysoIEixECE67uo23VM6BNQRZUZIsahwQ98NOwGalYNlreRdaGGhwsNT0bJgBCCslnGqmOABED+\\nGvx3PlGAoI1f6+kzGAfKXtiSxfZzWDYuQRREuMRFySjh+MhxjGqjAMDsCeNQQAhBw26gYlbQclqb\\nXgOApJxEVslClVQ07SZWrRp8wiPH7b50k9mS4YEjZK/FHxmDEAQElYoP1935x193y/hR+TtIShqm\\nU9PgOR6arEERFGQTWYxqo+A5nhkixtBiuAZqVg0NuxHLwkT/LwsysmoWGTUDHjwtGVhuLqPltGC6\\nLbxcTSDF7fz64eUMlMn/wVRpGDcE12JLyvYavn3ly+A5DuOpcQgQoCs6UnIKI9oIbhq5iQXJGEON\\n5Vk0G+MH8WwlIQQiLyKXyCGn5iAJEgzXQMtpYbW1iopRgeub+AWJh46dOzXMlgwXzKE5QIKAoFbz\\ndxRdK9pL+GHp/yCrZuD5HjJKBnktD47jIAkSNFGDLMoY08agK2FNJzNGjGHACzzUrTpqVg2O7/Tc\\nJq2kkVWz0CQNhBB4gYeSUYLpmlhuLcN0TZieiZSSQl7NYtqpQgvMgc+BT4xBGfsFZoAYNxS7tSX/\\nZ+lfkFZSMD0TSTGJlJoCCCCJErJKFrIgYy4zh6n0FAuSMYaGgASoWTVUzSrts+yEEIKUksJIYgQp\\nOUX3aTpNmK6JldYKGlYDju9czdqkcMRrQHTrA58DsyXDB3NoDhhCCGyboN0OtmzuFKUAFW8Zdb+I\\nZ0vPwvd9pJQUvMDDuD6OrJqF7dkQeAGaqEHgBSTlJMaT45CEUDSAGSPG9YYQgrbbRs2qoWk3e26j\\nCAqyahZpJQ2BF+h+tm+jZJTgeA6Wm8uwfRtu4EKTNOS1PHRJR9kogbcrmOB8ZLaYLMAnChBTcxC0\\ncXYdMG5IBrUlkgxUvWXUvSJOF0+jZJQwoo3AcA3kE3lk1AwaVgPggKyahcIr0GUdN43chLSaBsBs\\nCeNgMFwDFbMS67PsRORFjCRGaDYGCB2ZyAFyfRdLzSW07BYCEiAhJZBL5DCmjaFmVWG1ljBKLKSI\\nu2ntCGZLhhfm0AwRnkfwD//w/6LRaEHXU3jFK16OY8eOIpHgIYoc1tvrWG2twnRNnCufgyRIkHkZ\\nAQkwro9jIjmBqlUFIQQJKQFZkMFzPPKJPHKJHL342EXI2G9c30XNqqFm1eD1mKDMczzNxqjihn4/\\nIQQcx6FhN1A1q/ACD8vNZTiBAx48REHEmDaGhJSAIig4XTwNnuch8RLuHj2JL//jX6NVLyOlJ/Dy\\nV7wS88dvgaBPMQUaxgsKzyP45jf/Pzz77Dnoegq33HIzXvKSX6K2pOW0cLF6EaZr4mzpLFpuC0kp\\nCTdwkVWzOJI+guXWMizXgq7o0CUdHMdhQp/AfG4e4tWoNLMljP3GCzyajenss4zgOC4skUyMICkl\\n6W+SEAJwgO3ZqNt1BEGAK40rMFwDPBfajBFtBGPaGCRBwpnSGXjEg8iJOJ6axE/+7TGcO/NzpPQE\\nbr7lVrz4pb/MbMmQw3JlQ4Qocvjf//uL+M53vgMA+OY3v4m77jpOXy9oBdrsdiJ/Apdql0BAIHAC\\nKkYFhBAczx1H3amjaTfhEQ8JIYGiUUTDaWAsOUZLeQBmjBh7CyEETSeUW2477Z7baJKGjJJBSkmB\\n53p39ZeMEtpOG67vYqW1Ap/4SIgJ+MTHRHICSTkJVVSx3l4HAIicGJapaXl8+RuPd1w/r8bNv3Tz\\n/rxZBmOIEUUOjz/+PfzFX/wFAODP/uzP8D//50vp67qsY1QbRcko4ebRm3G+ch6O50AWZBiOgcXG\\nIm4t3IpSu4TV1iqcwEFWyWKluYKKWcGx3DEqGgAwW8LYeyK55e4+ywhFVJBTc8iqWepgRxCEzkzb\\naaPlhNmYK40rMD0TiqiAA4e8lsd4MsyytJwWvMALHR1BQi41jf/46QL+4i/+HwDh9fPyX2e2ZNhh\\nDs2Q4bobqU5Jis+X4TgOs+lZnCufgyZpmMvModgu0pRqw27gYu0iTuRPQJd0lMwSjbzZno0r9SvI\\nqBmMaqMQeIE5Now9wfbsUG7Zrm9qygTCMoCMmkFGyUAW5L7reIGH9fY6XN+F4ztYaa2E0TcprPGf\\n1CehyzoEXoAiKFhvr0PgBXAch6lUONSs8/qR5f7HYjBudLayJQAwoU/QANnx3HEs1hdh+zbAAU7g\\n4ELlAk6MnEBey+NS7RKKRhG5RA7wgGdLzyKXyOF47jgSUoLZEsae4PouqlYVVbPas8+S53hk1Axy\\nag6a1HvEMgEBIQR1uw7bs+EHPpaaS7A9G0kpiYAEGNVGMZYcAwGBKqp4vvo8wIXrjyXHwHHcttcP\\nY/hgDs2Q4TgbF3GvBzJJkDCTnsHl+mUk5fDitD0bDbsB13fRclq4ULmAm0ZuwnRqms71iErQomGF\\n+UQeKSUcosaMEWOnRA50zarBdHs35euyjqyajZUBdNL52zNdEyWjhIAEcIKwZ0YRFSTEBFpuC1Op\\nKSTlJHjwSMkpmrlRBIXWQQPx64cZIcYLme1sCcdxOJI5gvOV89BlHdPpadTMGqp2OLvD5mxcql/C\\n0cxRnBw9iZJRwmJjEaqoIiWnUDHC6PlMegbTqWkWJGPsiiizXzErffssNUlDLpFDRsn0zewDoTMT\\nlaj5gR+WmTWvwA98pJU0bN9GIVlAQSsAAFRBRctpwXANCFwYHBtLjgHY/vphDB/MoRkyBokKZNQM\\nRpwRVMwKdDmsbU5ICay11mC6JniOx8XqRRzNHqUqH0WjCMM1kBATcIOwlKdhNzCmj9GoOTNGjO0w\\nXZPKLfdqypQEKZRbVjKbygAiIkcm+r1FymcAYAc2Vpor0BUdqqCibtcxpU9BkzUInICklAQArDRX\\n6PpRdgYY7PphMF4IDHItKKKCSX0Sy81lpJU0AhJAkzUsNZdgeiZ4nsdKawVTqSkUkgVklAyuNK6g\\nYlWQUTLwAx+XqpdQapdwbOQYsmoWALMljO2xPZtmY3r1WQq8gKyaxUhiBIqgbLkWQfh7szyLlqgF\\nJMBCYwEcwh4by7Mwro8jnwhVYWVBBgcOa601cBwHjuMwqo1Su8JsyeGDOTRDxqAX0VRqCm2nDdsP\\n06he4GEmPYMrjStoO21w4LDYWMTRzFFIgoSp1BSaThN1qw5FUCDwAgzPwEJtASPaCLJqlkY+osZs\\nBgMIh1/W7dDpsD170+tRU2ZWzSIpJ3vWO0fbARsPOwEJUDbKMFwDHMfB8iystlZDhRpeQsNuYDI1\\nCU3SwHM8zfRUzAocP6z3F3mRRtsAVnLGYEQMakvyWh4tp4WG3UBWzaJu1XE8dxzPVZ9D22lD4ATw\\nPI/Z1CxkUcaxkWOoWTUsN5chizIUXkHbbePp9acxnhzHXHaOBckYPYky+xWz0rfPUpd1mo3ZChoY\\nu+rMtJwWffbxAx+LjUVIvARFVKgzM5IYAQDIfOjMOL6DqlWlTsx4cmNAJnNoDh/MoRkyBk1z8hyP\\n2cwsnqs8B3BhNEMVVMxl53C5dhlttw2O47CABRzNHUVAAqSVNJJSElUzLCmQBAkBApSMUpit0cag\\nyWFdKjNEjLZzVW7ZafZtyoyyMVG5Sa/tOn9D0euu76JoFOH6LjiOg+mZKBtl5BN5CLyAltPCuD6O\\nhJSgEbaIzuzMuD5OpZ4BVnLGYETspGRmOj0No2zACzxamnMyfxLPlp9Fw26AAwcePI7ljsHxHWTV\\nLFJyCqutVbTcFjQxFJtZba2ialUxl5lDIVmIBckAZk9eqJiuiapVpaVg3VC55UQOsiD3DYoBG45M\\nVCEQkAB1qw7Hd8BzPBzfwVJjCaqoQuRFuIGLCX2CZg8VQaG/w7XWGv2NppU0ElKCHoeVnB0+mEMz\\nZOwkKqBJGsb1cay2VsFzPCzfounUS9VLoVMDDpdql3Bi5ARsP5xTM5ocheEaaNttmmp1fAfLrWWk\\n5BTyWp4+MDJD9MLC9V2ajXH9zVr8nXLL0c2/nyMDbM7KAOEsgZJRoq+33TaadpNGz0zPxFhyDIoY\\nlhmklTQ1YoZroO22IfIiOI7DpD4ZP38WVWMwAOzsWhB5EbOZWVysXgTHcVAEBTzP49bRW3GmdAZ1\\nux6WMtcu4mT+JNpuG+CvOkKOgXVjPXR6OB62Z+N85TyKRhHz2Xkk5SQ9DrMnLxz8wA/llq1qzz7L\\nTrnlqHR+UFsSZWUiexUEAf3trbZXoUkaOI4L5/Qlx5FWwvlJsiCD53nqEJXMEnVoxvXx2PGYLTl8\\nMIdmyNjpRVTQCmjaTbTdNniOR9NpYlKfBAcOF6sX0XJDFZtz5XO4rXAbLM9CgACapEEV1VDe+Wr9\\nakAC1O06TM9ETs3RB0mAGaIbGUIIWk4LNatGVY+6SUgJOvyyO+rai15ZGQBUpCJ6ve20YfkWNTiu\\n72JUG6UlK7qsQxIk6lyttlYhcGFGJp/IU6cngpWcMRghO7UlnVLOHMchIAEyaga3jd6GM6UzqFpV\\ncByHM6UzuHP8ThiuAcuzoMkajkhHQrl2tw2Q8JqvmlW0nFDQYyo1FeupY2XNNy5tpx0Ov7TrPW2E\\nLMg0G9MZON2JIwNs9MuAgJYsF40iEmIYaAtIgPHkOFJKmN0XeRGyINPnnZJRAggAbqPaoBPm0Bw+\\nmEMzZOw0zRkp1Zwrn4NPfPjER9ttYyo1BZ7j8VzlOVp+9kzxGdw5dics34IbuFQC0fEcWL4FL/BA\\nCIHjO1hvr6PltjCaGI09NDLH5sbB8R3qYPRryswomXBaeI/fQC/6OTIBCVBsF2H7Nt3G9Ey4gbth\\ngBAgl9iY8KyKKpJSkg5Tc30XFatCHapOMQD6nljJGYMBYHclM5GUs+VZ4MDB8z3ktTxuK9yG08XT\\nqJjh9ffk2pO4e+JuqKKKmlUDz/F0sGHLacHyLQRBANd3cbl2GRWzgrnMHLJqlgXJbkC8wEPVrKJq\\nVfv2WWaUTPgb6ZGx60W3LYmcmSgAZ7pmuA0XOjdVqxoTD5jQJ6i0M8/xUEUVPtkodyu2i/QYnb0z\\nEazk7PDBHJohYzdRgU4pZyBsjtMlHRP6BDiOw4XyhTByBuCp9adw5/idkAKJOjqyKEMSJHi+Rx8y\\nCUgoOuDZsT6JCGaMDicBCdC0m1S+uxdJOUlr5Ps5KN10/w46t3V8B8V2MWZMHN+BH/g0E8NzPFJS\\nCqIQ3pIkXkJGycANNq6HolEEj9CZ0WWdRt46YVE1BiNkN9dCp5QzIQRu4CLJJTGSGKFOTdkogwOH\\nn63+DHdP3I0JfQLr7XUEJIAiKpAFGbZvo+206T2maTdxpnQGY8kxzKRnoIoqPSazJYeTyLGomJW+\\nfZaqqGIkEYoO9Xp+6EX376BTTTMgAWpWDZ7v0e1sz0bdqtPMfTRLJvqNRSqw0XwaIFTWjGyLwAux\\nIbERzJYcPphDM2Ts9iLKqBnLRJHWAAAgAElEQVTk7ByqVhUAsG6s42j2KNVUv1C+EKpJgcOTq0/i\\nrom7kFWzaNpNBAjAcRwkUYIkSnA8B223jYAE8AIPJaOEltPCiBpGV3o95DJjNNxYnkWzMb3klkVe\\nRFbNIqtmaYYkYreODBCWH5TNcuxv0e8qyrRIghSbVSNwAnKJHAgIbSAlhNC+G6B3dgZgRojBiNjt\\ntdAp5QyEZaLTqWkQEJwaO4XT66dRNsvgOA7/d+X/4u7JuzGdnkaxXQwzOxwHVVShiApSfgoVswLX\\nd+EHPlaaK6haVRxJH6EDniOYLTkcOL5DszH9+iwjueXOJntg57aks8TM9V3UrToINsoVvcALRSsi\\n28ELGE+OxwY4J8RQWKazCqFkbtiS7t8hPR6zJYcO5tAMGdeS5pxOT6PttuH4DgISYLW1iunUNACA\\nA4cLlQtoe2Gm5onVJ3DX+FWnxmnGIuHRQMOG06DlPpZnYbW9ipSbokoknTBjNHz4gU+HX0bfYzcp\\nJdV3+OVOjE/39oQQVK1qrCcncmA6M0OKoECXdQQInSwOHHKJHG3wjKhaG7MKZEHuGVEDWJkAgxFx\\nLddCXsuj6TTpoMO19hqOZI6AEILbxm6jTs1oYhQ/W/kZXjTxIkzoE6hZNTpTikM462M2PUubwwkh\\nsFwL5yvnUTbLOJI5Al3WY8dmtmT4IIRQueV+fZZJOYmcmkNG3Tz8cqe2pDvoZrommnYztm1AgvA3\\nddXpEXkRk6lJmqkBwt5PgRdiymqWZ8UGePYqNwOYLTmMMIdmyLiWqADP8TiSOYLnKs+BIFSEatgN\\n2nDNgcP5ynkYXjj344nVJ3DXxF1IK2mYrgnDCx80CQh8+MipObiBG6Z4Ay8mGhApk/S7cTFjdHAY\\nrkGHX/ZrysyqWWTU3sMvr8WRAUJHqmgU4fgd/SyCBBCgbtfp3xJSAmklHdsuq2Yh8iL9vUUU20X6\\n/1EpZS9YVI3BCLnWa2EmPYPz5fPwAg9e4KFoFDGhT2xkaopXnRptFD9bDZ2aXCIHRVRQbBfp9esG\\nLka0sAl8ubkM0zVBCEHZKKPpNDGRnMBkapIFyYYQy7NoNqaf3DIdfiluHn65G1vSmZWJytqizB+w\\nERgrGkW6viRINHgboYgKRF6MSTwDQNnYqBiIfq+9YLbk8MEcmiHjWi+iTilnIIys6bIeTlhPhjeR\\nc+VzML2woS4qP0tICUiChJbTor0OTuCEUQ99MlTAcltUNGCttYam1ERey8fqoSOYMbq+eIGHuhXK\\nLXc6CBEcx1G55ahRspudGp9e+9iejZJZihk/TdLgBR5qdo3+LerT6czWpOQUFFEBISRWHmB5Fu0B\\n4zkeE/pE3/NkRojBCLnWa0HkRcykZ3CpdglA2AeTklMYT46DkI3ys4pZwUhihGb9c4lcrAQNCO8L\\nAi/gRP4Eiu0i1tvr8AMfjudgsbGIml3DTGoGI4mRvpliZkuuD9Fcl4pZ6dtnmVJSm5RQO9mNLenO\\nykQVBp22IHJQVlor9G+yIONI5khsO0mQqIPc2bsZkCBWAt0vOwMwW3IYYQ7NEOH7PoLgaukNx0EQ\\nNtd1DkKnlDMALDYWcWLkRBj50IBbcAvOls/S7SNDlJASyCgZtNwWfSj2Ag9+4COXyEFXdFTMCmzP\\nDkUD3DacphM+KCeysVRvBDNG+wch4XdQs2qxFHonqqhSueVedcLROv0Y1JEBwgeeml2LvRY5LVEZ\\nCrAhD9uZrdEkjarfRGp70fHX2+t0u0KysKnHJ2Kvrh8G40ZgL0pmUkqKSjkDwEprBTeN3ISx5BjW\\n2+s4NXYKz6w/g6pZ3XBqJu7CSGJkUwmaH/iomlWMaqPIa3ks1BZoM3nDauCcew55LY/Z9CxVPuyE\\n2ZL9xXANVM1w+GWvPktJkEK5ZTXX9x4M9LcnW9mSzqwMEPbpNO1m7DxUUYXruzFnRhEVzGXmYiXz\\nAi/QIGtAgtj5lI0yXVOTtJ7CMvQcWMnZoYPffhPG9aI7IrDbG3ekVBM5GI7vYKm5BF3WQ9URbQQn\\nR0/C9V1YngXHd/DE6hOhaMDVYVdJqUNa8arzInACpvQp5BI5+nDsBi7KZhlLjSXqQPViq4dmxs5w\\nfRfFdhEXKhewWF/c5MzwHI9cIof53Dzmc/Ox76uT7bT/B3VmCCGomBVaIx+dQ0ErUIcrIq2kMZ4c\\nD+cHXEUWZFoWGQkGRARBPKLWTwwA2Lvrh8G4EdirCPOEPkEfEAkhWKwv0qCEJmm4ffx2EBD6IPzk\\n6pOhEhoX9sON6+Ox0uQoi3zL6C2Yy87Rkh/P97DWXMPp9dNYaa3EIuudbHXfYuwMP/BRMko4Xz6P\\n5yrPoWJWYk4Ex3HIqBkczR7FLflbMJYc6+vM9PtetrMl3c6M6ZqbxGtSSgpuEHdmVFHFfHY+VGXt\\nsDudznBnpQDP8SgaG6XL3YM0u2EZmsMHy9AMEXt5AUmChOn0NBbqCwBCIxKVHBFCkEvkcHL0JJ4t\\nPQsOHCCClp9FQzdFXoyVoJmeCZd3Q7UzKYmKWYHphfXQlmdhtbkKXdGRU3O0dKgTFmHbPYQQNJ1Q\\nbrnt9HYcNUkL5ZaV1Kbepu61+rHdd9O9b6SC11nmFjXtr7XXYs5WRs1gTBtDxarEGjk7B5p1quYI\\nvIDl5jI9ZkbN9C2XA5gBYjA62avrgeM4zGZmcaFyYeNe31rFZGoytA0mcPvY7Xhm/RnUrBqyahZP\\nrT2FO8bvoE5Pdwma6ZpwfAdjyTHk1BwWG4vhw3QQwHANPF99HlWziun0NDJKpud5MXuyeyK55X59\\nloqoULnlXn2Wnew0IxPt0+3IdPbLRESKaVWrirXWGv27Jmk4mj0K27djv4OElKDH7XRmOI5D3a5T\\nOxVlm7aC2ZPDB3Nohoi9HgoYyTJHUs5XGlegSRrSShp1u45sIotbC7eGTs3Vm0BUfpaUkxB5sWcJ\\nWt2uI6WkMJmapDNNHN+BT3zUrTpM14yVOTHHZvfYnh3KLdv1vk2ZGTUcftndVNvNXjoyAGD7NkpG\\nvF8mKScxoo5gqbkUU8PJJXIYT46jbG6k/HmOR07NUefLD/xYVI4HHzNiW2VnAFYiwGB0spf2RBXV\\nmJRzySghpaQwkhgJr1kLtPwsEqJ5au0p3DF2BwrJAkRe7FmCttJcQS6Rwy35W1BsF7HUXELbaYeZ\\nWaOMtttGQStgMjUJVVR73oeYPRkM13dRtaqomtWefZbRoO2RxMiWgaOI3Tgy0X7dzkwQhIJD3X0w\\nWTWL9fZ6TBQmKSdDZ8azY7ZHFVVqS7qFAHgubksKWmHLoB/AhjQfRphDM0R0RgT26oGsW8p5ob6A\\n47njyCgZVK0qMmoGt47eijOlM2GmBsCTa0/izvE7ocs6LUHrbMwmCCUcE2ICWTWLhJRA1QwlegMS\\nwPEdlIwSDNegTegcxzHHZkACElC5ZdM1e26jyzqyapZ+R9uxW+PTb9+m00TVrMb+Fk2BXqwvxppJ\\nRxIjGNfHUTWrMYPVPWytsw5a5EWUzBLdPhrQthUsosZgbLDX9qRbynmxvogT+RMY1Ubpg+Xt47fj\\n6fWnw+HOso6fr/8ct4/djrHkGC1B61ZBq5pVWJ6FQrKAtJrGcnMZxXYxLIl2LVxpXEHdrmM6NY28\\nlgfP8X0dG2ZL4kSZ/YpZ6dtnmZASNBuz3UN+tGYvduPIAFfny9j12LoJKYGUnMJKayWmSqbLOuay\\nc3B9N2ZLooqSiM5yRY7jYLomDbBxHEfn823FfjyPMfYX5tAMEfvxQNZLynm9vY5xfTxM5ZpVpNV0\\nOAW6dJrelKLoWtQ0p4oqJEFC027GS9ACN1S+0ceRtJOoWqFxCkiAlhNmdlJKChklQ2tvmWPTG9M1\\nqdxyv6bMrJqNfZbbsdeODACUzXKs7C2atCzxEhbqCzEnbFQbRSEZilTY/sZcmYySiWWUXN+N/Q4k\\nQaLRYGD77AzAHBoGo5P9uB66pZyvNK7QAc7RPSsqPzNcA5qk4en1p3GqcIr2LPQrQVtqLmEsOYZj\\nuWPIqTksNZfCQYpXRQNM10TVqmJSn6R2idmS3tieTbMxnQ/+EQIvULnlXiqlvbhWW9LtzHDgYLhG\\nLJMfBVBVUcVScykWNEsraapm1l3i3GkPu4UABE7AWnsjO5NP5Aeyn8yeHD6YQzNE7NcF1EvKOaWk\\naM9FzaohpaRwavQUTpdO06a6KLoWNWwLnEAHcXaWoEX7p9U0VElF3apTuUXHd1AxKjRb0zm7hhmj\\nsOyibodyy52DJCOiG3xWzVIVsEG4FuPTb3+f+Fhvr8f6XBRRQUErAAAW6gux+uex5BjyWh6Ga8QE\\nI5JSMjZBulumWeIlVM0qdYwEXmARNQZjh+yHPekl5Vw2yshreUzoEzQIEc2p4RD2NTxTfAYEhEqu\\nRyVoVauKuhWqHXaWoOW1PHRZx1p7DWutNZiuCdd3sdpcRctuYVwfRyFZoEERZks2MvsVs9K3z1KX\\ndeQSOWSUzDXZAmD3jkz4AlB36jGbJ/ACMko4G22xsUh/F0CYzZ9JzyAgQczGiLy4aY5Md6mZG7io\\nmBX6t+3EACKYQ3P4YA7NELGfPQDdUs4L9QWcGDlBIzVVqwpd0XGqEBqimFNTuB0ZdaMxMxrE2asE\\nTZM02ghataowXAOEEGqQDMdARs3Q5r0Xak1027kqt3xVtrQbRVRoNqaf3HIv9sORAcJZMCWjtEl5\\nJqfm4BMfC/WFmHEa18cxkhiB4zsxRTNVVDdJZXZG23iOp2IAdK3k+ECfAat5ZjA22C970kvKWZd1\\nKKKCydRGn82pwimcKZ4Bz/FQRAXPrD+DgAQ028pxHM0Q9CxB0wqYTc8io2Ro6ZEf+Gg5LZi1UAlr\\nIjWBnJqj97cXomMTZa5qVq1vn+VIIhxsul2fZSd7YUt6ZWV84m86V1mQkVEz4MBhob4Qsxm5RA7T\\nqWkQEJjeRvaf5/hN2SU/8OPZGV7ASmOF/i0K5A4C68k8fDCHZojYz4hAJOV8rnwOPvGplPORzJEN\\np8asIikncVvhNjxbehYqpwIB8HQxLBmI1KgIIduWoCXlJBRRQdNuom6HkZhIUMD2baTkMKMT1b2+\\nEBybqFa4ZtViWY4InuOpEl1nBmMQrtX49FuD4zg6sLPzbyOJEeiyDtd3sVBfiDklk6lJZNUsvMCL\\nlQxIvLRJsahbCEASJFp617neILCIGoOxwX5eDxP6BFWkIoRgob6Am0ZuAs/xmNQnsdRcAoCY6Iws\\nyDhTPANCCKbTG1PdtytBy6gZJOUkMkoGa601NOwGlRtuu22MaqMY18dpryZw4zs2fhA6BVWr2rPP\\nMsrs5xI5pOTUNduBznUHoVfJNAcOtm9vUlaL5sEEJMCl2qVYCVpey2MqNUWDov0UzaLz7jyuwAsI\\nSBATFNhqkGY3zJ4cPphDM0Ts9wW0lZRzJJ9bs2pIykmcHD2Jc+VzUAQFfuDTOuhcIkfX264ETRZk\\n5BI5qKKKul0PJaADn86+MT0zNFZSsq8h6vzbYTRGkRRlzarFbtSdJKQEVYUbpCmze/1e7IUBIyAo\\ntUuxBn+BF1DQClBEBY7vYKG+EHPOptPTSCtpBCRA1azSCJ3ACcglcpvOq1sIgOf4WHYmr+UHrvFm\\nJWcMRgghZN8DZP2knAVewFRqCkuNq07N6K14thyOB5AECc+WngUBwUx6hq63XQlaVs1iMhX2zqy1\\n1lAySrA9G6Zr4krjCppOE2PJMYxqoxB58YbN/redNv2MejkNsiDTBv9B+ywj9sKR6ZeV4TgOLacV\\nK4XjOA5pJQ1VVKkz0/l6IVmgJYpRX25EQkxsspXdQgA8x6PYLtJy5qjqYdD3wRyawwdzaIaI65Hi\\n7JZyXmosQZM02lgXSTon5SRuGb0FZ0tnoQgKAgR4pvgMbivctkltarsStISUgCzISIgJNOwGDNeI\\niQaYsom0koYiKjeMY+P4Tii3bNX7NmVmlFBuubsGeBD2wpHptw7HceHwTqMYc1ZUUcWoNgqBF2B7\\nNhbqC/S9cRyH6dQ0UkoKhIRD9iIDw4HrqaDjBV7sOxV5EV7gYb29TreZ1AfLzgCs5IzBiPC8jXuO\\nIAjg+b2fod1PylmXdYi8GCs/u3X0VpwtnaUlpWdLZxGQAEcyR+h6g5Sg6bKORDaBjJrBanOVDvOs\\nmaEiZMNqYEwfi/WIHHZbEmW6q1a1b59lRslQlcmdsheODNA/K0NAUDNrsSx+VBUi8iL8wMel2qVY\\n4GxcH6d9k5ZnbVI06y5B7h7qGQ0V7xQDiJT2BuF6XD+MvYc5NEPE9YoIdEo5R/0Px3PHwXEcFFFB\\nGmk07AY0SaOZGomXNpya0duQ1/J0PUIIElJiyxI0gReQUTNQRRVNu0mzOo7vUIOVVtLQZR0CLxxK\\nYxSQgM7l6bw5d5KUk+Hwyx2WAUTspyMTrWO4BkpGKbZNWknT7JzlWVioL9AaaI7jMJuepca0YTdi\\nxiujblZlI4TEnKUoqrrWXKOGMSknY71b28EiagxGyPW6FvpJOYu8CFmQqcMj8iJuGb0F5yvnIUOG\\nwAs4Xz4PQgjmsnOxNbcrQYsCK0kpiWK7iKJRRNtpw/ZsrLXXYLgGRhIjGNPDbQ+jLYky+xWz0rfP\\nMpKy75a/38kx+rHTDH+vxn+e42mZdWe/jCIq1OH0Ag8Xqxdjjf6TqUmMaqMAwsBgp53oVjSL6MzO\\n8BwPjuPQsBu0HI/neCpeMwjMlhxOmEMzRFyvi2grKWcANAXcclpISInQEJXPQ+REEEJwunQatxVu\\nQz4Rd2qisrWtStAUUYEkSFAlFQ27EQ5RI+F0aNd3YXkWUkoKCTGsj93OGA2DIbI8i2ZjekWpos9l\\nN2UAEXtlfPqtFa0RvY/Ov+cTeeqsmK6JxcYiNVA8x2M2M0sbLdtOO9a4GUlwdtNZasZzPEQ+/G3t\\nVKo5tiYrOWMwAFzfB7JuKeelxhJ1UhRRwYQ+gZXWCkRexM0jN+NC5QItCbpQuYCABJjPzcfW3KoE\\nbSQxQoVlZjOzSCkprLfXUTErcH03rALwDLTcFgpagc6uOQyOTRTgq1rVvn2WkdzyTvssI/bSlvTL\\nynAcB8uzNvXLJOUkdFkHEPaUXqxdjGWdptPTtALEC7zYa70UzaJz6BYCABAbpBlVFgwKc2gOJ8yh\\nGSKup6pGt5Tzens9pgCiSRoIIWi7baiiihP5E7hQvgCBF0Knpngat47eSiMpwIaDsV0JGs/xoSqO\\noNAyNMuz4AYu6lYoGqDLOlJyijoAw9bs6Qc+HX7ZGV3qJKVclVvu6BHaKfvtyETrBCRAySjFGkxF\\nXoxJoxqugcX6IjViAi9gNj1LDavlWWg6G8PbEmKiZwlEQIJYxC76jstmmTrCkiDFfluDwErOGIyQ\\n62lLuqWcI+ng6ME0ISUwngxtjcALuGnkJjxfe54++D5ffR4EBMdyx2Lr9itBq5gVmJ6JglaAwIe9\\neUk5iZScQskshWW+vodSO7yfNZ0mClqBqisOm2NDCKGfWb8+S03SqCO30z7LzuP0Yze2pF9WhhCC\\npt2MVSlEZXGRQ+L4Di5WL8Yy+TPpGVoF0C3PLPBCTweOEBKzJZHTEgUZIwaVao5gCmeHE+bQDBHX\\nOyrQKeVMQGJSzkAYTQlIANMzqVPzfPV5AOGN5EzpDE6OnoylciOnZpAStGhQZKSG1nJa8AIPpmvC\\n8RxYngVd1mOzaw7asTFcgw6/7GUgZEEO5ZbVTGxy8U7ZS+PTb71oHcd3Ys2TQPgQMqqN0s+97bSx\\n2Fik6wi8gCOZIzT74vpuLLMjCzKdX9RNZ+RR4AV6jM7szIQ+sWPDzaJqDEbI9b4WUkoKeS1Pp7qv\\nNFeQlJL0ATYpJzGWHMN6ex0CL+BY9hgu1S+BJ2Hm5GL1IgghOD5yfNPag5SgyYKMqfRULFtjuibN\\nGEdlaAWtsG2QLPrbftsSy7NoNqaf3HKUjdlNn2XEftiSfo3/AQk2qXhG7yN6rrA9GxdrF+k2Ucly\\nVF7crWjGczwdI9FNZ4YoyvoBiPVhZtXswMIyEcyWHE6YQzNEXO+LKFKqOV8+T6Wcl5vLmM3M0m1S\\nSgoEoYqNIio4PnIcF6sXaZr3TPEMyCiJDT6MbkSDlKBxHEdFCVRRRdMJIzs+8dG0w/1sL8zYdEZo\\nrqdj4wUelS7ujCh1nkukFjeoxn0/9tr49FszWqvttFE2y7FtMmompgbTtJtYai7FvtcjmSPUyPqB\\nj6oVVzTLqtme5+sFXlymmQ9/5y2nRevwOY6j6jY7gZWcMRghB/FANqlPou20qSJVJOUc3QdSSgo+\\n8VE2yhB4AfPZeaq4CQCXapcQkAAn8ic2rT1ICVp0jISUQEpJoWyUUTEr8AOfDnduOS2MaqOx2TXX\\n05YEJEDdqqNiVvr2WUbzvdJK+pqOfT0cGQDUiXB9l4o0RKiiGnsflmfhYvViTExmLjMXm01meiZd\\no5c8c+f5xGSarwoB+IEfl2reYXYGYA7NYYU5NEPEQaQ5ZUGOSTlXrSotlYqIZHgd34EsyJjPzeNS\\n9RLNvEQynN0a74OUoEUlSSIvIqOGKem200bTacL2bNieDdd3Yfs2kl4SKSUVy3zslzGKyu0iueV+\\nTZmR3PJumjJ7nW8v9sORIYSgalWpEwGEhimv5WNOWcNuUPlVICwFO5I5EpvQ3WnEeI5HLpHrmV0h\\nhMSyQJIg0fPpzM4UtMKOBsBFsJIzBiPkIGzJVlLOEVk1SyXdo17OpcYStSUL9QUQENycv7nn+oOU\\noIm8iLHkGHRZR1JOomJUwrJm18KatwbTNalj03mv20/HxnANVM3qpgf+CEmQwuGXam7XfZYR+2VL\\n+mVlgDBj1jkMEwD9/CNM18TF2sVY/+Vcdo721AChw9OZrVJFtW+mvpcQAAAUjY3fRkJK9K0U2ApW\\ncnY4YQ7NEHFQUYGtpJwjMkomTCUHLnVqLtcv07Tx2dJZEEI2RdZ3UoIGgJYPyIKMttums2vaTps6\\nNrqsb+pL2StjFEWZalatp9wyz/E0g7HTNHYv9sP49Fs3Ws8PfBSNYqzhUhKkWDkGEAoErDRX6L9l\\nQcaRzJFN23Q2+EdSnL3oJdMMhCVv0dRxYPBBmt2wqBqDEXJQ18JWUs4RI4kR2oPIczym09NYa63B\\n9sP70WI9LG29OX9zz3vgICVo0XYz6Rnosk6zNbZno27VYbgG2k4bI4kR5LX8vgTJosx1pOLZTRTs\\ny6k56LJ+zZmg6+XIABvODCEETacZ672MbGTn84PhGrSyI9rmaPZozOHpVjRTRKWvLekWAoicHkJI\\nrNxsJ4M0O2G25HDCHJoh4iAvom4p58X6Io7ljsXS8lk1i6pVhRd4kAQJRzNHsVBfoIboXPkcCMim\\n2SGRUzNICRoQ3pxSSgqKqEDmQ8fGcA16w3N9l5ahddcW72agWnRTrlm12GCvTjRJC+WWldSumzJ7\\nnU8v9suRAcL65aJRjEXBNEmjSkARVbNKBSOA0LgcyRyJGZim3aTfPRA6vf0yKwEJ4tkZfuP3vdJc\\noecdSXfvBlZyxmCEHKQt2UrKOaKQLFAlTZ7jMaFPoGgUaRnWlcYVBCTAydGTPe+Hg5ag8RwfzmeR\\nkjRbE/V4FNtF2meT1/KbSrx269i0nBaqZhV1u97zfqyICpVbvpY+y+7z6cW12pKtsjJ+4KNu17fs\\nlwHCz+Ny7XJMTGY+Ox8rIe9WNJMEacssfbcQQKdKZ7SOyIux8RI7gTk0hxPm0AwRB5nm7JZybrvt\\nmJQz0OHUmFX4xIcoiJjLzmGhsQDLDSNQ58vnEZAAM+mZ2I02cmoGLUEDwoxALpGDIipQRAUtpwXX\\nd6lz4/gONEmjs2s6zzM6Zjedxsj27FCmuEsnPyIa/pVVs7sqgerFfhmffmt3rhnNNejcLhIw6KRs\\nlGNRLlVUcSRzJPYZd35/AJCUklvKiHYLAURrBSSIOU47lWruhJWcMRghB10ys5WUc8RYcoxK9nMc\\nh4JWoHNXgLAMlYDg1tFbe94bBy1BA0InYlKf3HBszAraTlgBYHomTM9ERs2goBV6BsmArR0b13dp\\nNqZXn2WUtRhJjFxzn2X38XtxrbZkKzlmIMymdI8p6O6XAcKg1+X65Vj/5XxuPlbd4Ad+LMMj8MKW\\n1Q+dtrpTCACID9IsJAu7Dj4e9PXD2B3MoRkiDjoqoEkaxpJj9KbQLeUMbOjgV60qAhJA4AXMZeaw\\nWF+k0bXnKs+BEILZzGxPpwbAwCVoHMchKSfDGTaCgrbbRttpwws8OsDR9mzoir7JUPQyRAEJqNyy\\n6Zo9b/y6rCOrZvekDKDzvfdjv0oNOt9/tyQoz/EY1UY3OSHFdjFW/pWQEphNz8acGcd3ULc3FM0U\\nQYk1dXbjB35PIYDoeFHmJopc7paDvn4YjGHhoK+F7aScgfD+NK6PY6W5AsuzqIPC8zzNukTZ29sK\\nt/W9Tw5agsZxHDJqBpqkQZM01KwaykYZXuChbJRhuAYMx8CINhKeR9fDcHf2P8rsV8wKmnaz5/kl\\npATNxuxFZr/z2L3YC1uyVVYGCMvHOnsvAWx6TgCAulWPKWNKgoT57HzMYYxUVCO2UjSLzq/TlnR+\\npp3nxXFcTKhopxz09cPYHcyhGSKG4SIaS46h5bT6SjkDG5mLqMExyu5caVyhD83RbIEjmSN9nZpB\\nS9CA8GaY5tMb/TVX1XQszwrL0IKrQzk7ZtdEcBwH0zVRNato2I3YDTE6N1m8KresbJ5qfy3spyPT\\nb/3Odb3AQ7FdjEUNZUFGIVnYVO6w1lpDxazQf2uShtnMbMxoRN9PRPQdbkVnj43Ii7Hz6xQDmNQn\\nr+kzYSVnDEbIMNiS7aScgfCBdDI1iaXGEhzfAcdxyKk5CJxA70WrrVUQEJwqnOp7fxi0BA0Ibcm4\\nPo6knERCTNAsvemaoU3xLSoa0F3+GmX2K2YFVbMaK6OlWQhhQ255L/osO9kvRwbYPisTzcvp7Afq\\n1S8DhKVfi/VF+u+o76Q6wCkAACAASURBVLZzu2555q0UzSI6hQA2ZWc6Bmnm1Nw1VVUMw/XD2DnM\\noRkihqFkZhApZ+CqKtlVoQACQrXkl5pLVO0kagI8mj26yamJjrWTErTohhc5NZFajRd4aDkt2mOj\\nSRqSchKEENTteqyutvu9puSrwy+vHucwZGS2Wr9zbcuzUDJKsRR9Uk4in8hvOofV1iqqZpX+W5d1\\nzKRnYttF6kQxRbMO+dNeuL4b+767BQWirJ7AC7uS1+xkGK4fBmMYGJZrYTspZyC8j0ylprDUXKKl\\nqRklnOMVlb6utdZACMGpsVN9Mx07KUEDwntcQkxAkzVopoaqVYXpmqiZYfbeci2k1TTdL8oy9euz\\nTMpJjCRGkFbSMdWtvWA/HZlBsjJ+4G8SyonmyHV/HxWzElPGVEQF89n5TYHC6DcRkRATW2axuoUA\\nIplmILQzZbNM/70b2f9OhuX6YewM5tAMEcMSYR5EyhkIb2gZNYO6VQ9viBwwm5nFUmOJRvEv18L6\\n2fncfM8a5O4StM4MSq8SNCB8+E0raSiCQtXQOkUD6lYdtm8jIEHPKI0qXZVbljfLLV/rQLX9dmT6\\nHaN77YbdiDkoQKgu1F0aRgjBSmslNhQzpaQwnZqOrRnJM0cRMg5XI6lbyFVvkmnm44ahU0FtLDl2\\nzQ2yLKrGYIQMiy0ZRMoZCO/pk/oklppL8AMfBIQKsEQ9duvtdQRrAe4Yv2PLB9+oBG29vU4DWb1K\\n0KLjjmqjtAcwclpsz0bRL6Ju13GpegngAF3aXIIcyS336rPcC7nn/XRkgO2zMkAoJNMtcJCQEkjJ\\nqU3nUTJKsfu6KqqYz81vurfbnh2zDaqobjv6oLvUrPPY6+11en7dctG7YViuH8bOYA7NEDFMD2SD\\nSDkDGxPho56KSBCAA0f3jWYLHMsd29KpEXkROTU3UAkaEEZ+JEGCJEjgERq+klmC67uQeIlKQEc9\\nONHwy+6+kb2aO7DfxmeQ9QkhKJvlWBQxMtrd5Q+EECw3l2PzAzJqpmfpV9Sv1LnddqV5naVmPMdv\\nEhXoLG/rVsbbDcwIMRghw2RLBpFyBkLnYCo1haXGEgISwA986LKOqdRUbN+n1p7CneN3bunUiLyI\\nSX1yoBI0IHxAnxKnoEkaJF7ClcYVLDeWYfs2RF5EWkmjJbbC4cmyhpScQi6R2/RQv1OFzX5cD1uy\\n1ZDMiEg4ofP4KTnVUwBmvb0eK/tKSAnMZ+c3OSqu724qgd7OlviBH8/OdKxJCEHRuLZBmt0M0/XD\\nGJy961JjXDPDdhFNpaaoExFJOfeToewcXuUTHzOZmZhk4mJ9ERcqF/rKJkdEJWhJaSPCEpWgdaf6\\nCSFoO21UzSqKRhFu4EIRFAicADdw0XJaCEgQGtTUJCb0iZ434qj0rdd5bZVx2W67fuvuhkHW9wIP\\nq63V2OcUqfv0cmauNK7EnJmsmsVUamrTObeddqxxMyWntq0N9wM/VurWbbBWWhtRvFwit6VC2qAM\\n2/XDYBwUw3Yt5LV8LDu8WF/sOedLFmRMpjYCKl7gISknMZveKHkuG2U8ufpkT2XKTqIStHF9PPag\\nXjErWGutbdrfcA06+ywgAVJK2I/pBR5VXyMgyCpZzKRnNil6Rcfsd88fJlvSq8Ss8zOKMvKdzozA\\nC8ipve/Vq63VmDOTlJM4lju2yZnxAi/WgyPy4iZVuV7n25md6V6zbJZpqaIsyMipuS3XG4Rhu34Y\\ng8EyNEPEsEkFCrywScq5aBR7qoeookrnCgDhjWs2PQsOHFXNWmosgRCCE/kTAOI3+O5Sr61K0BRB\\nQdNpom7VqVGUBRkSL9HMjMiLtNeGA0cln3vNronY6dyB/Y6i7eQYpmuiZJRiN35d1jGSGNm0bUAC\\nXGlciTk+keHvxvZsKqMKYFNfUz+6hQA6jaUf+DFZ6GuRau6E1T0zGCHDZkuAwaScgdCWTOgToRgA\\nIWFfpKxhLjuHy7XLAEKn5Mm1J3HX+F3blir1KkEzXAPLzWXkErlQMMaq0tcEXkAhWUDCSUAVVXDg\\nQECgCArcwEXNDocJ98r0RAyrLRkkKxNVRXQ6fLIgI6NmembFlpvLVPgBCO3OXHZu07YBCWLOzHby\\nzJ37RXQLAQBxMYCx5NiefGbDeP0wtoc5NEPEMEYFuqWc11pr0OXNEsnRttFcAQCwfTt0ajgOxXaY\\nEo5mC0RToLdyajpL0CzPQstuoW7XYXlWz/I3XdExk5lBQkzAcA3Yvk0dmabdhCM68AIPqqhuml3T\\nyXbGqB97aXz6Ha/XMepWPaY8FkUmew2ojBpzO3X/R7VRFJKFTdu6vhtbNyrb2w4v8GKGe5OaWnsj\\nOhoNLN0LWMkZgxEyjLZkECnnCGp3rj6s2p4NTdIwn53HxdpFAOHw3ydWn8CLJl60rVPTWYJWM2to\\nu23UrTqeKT6DtJze1FuoiiqmUlPQZR11u46WHc7wMlwDFaMCQzJCu+I0e86uiRgmW7Jd4z8QNuo3\\n7Ebs/DRJ6ynLTwjBUnMp1quZVtI4kjnS02HbpGgmbq1oFu0Xy85w8e+5aTfp8wbP8T3t2G4YxuuH\\nsT3MoRkihvUiGkTKOUKX9fDmdbVEyfItHEkfAQeORuWj2QKDODW2b8NwDay11mIZhbbThid6tC8m\\nq2ZjZU0ZIQPLsyDxEkwvnAZte/8/e2/W5La1ZQkvzBPBIckcJaUky7J1rwd5qP66Oyo6qn9BRz11\\n/536X99Lv3VEdV3bsu/1KMmScs7kTGIeTj8cnZMACU6plMS0sRwKOZUECIDE2dh7r71WgCiJEKcx\\nwiSEpVpzTc4mg9FkEGK/v+7gU/ReRe+TkpT7JzBIojQzwCZpgleDV7kq2aa1iZbZmnptSlKuYAfQ\\nQFLX60sFoEnn6EmOeVaq+bq6M8D63j8lSrxrrOu9sIyUM0NFrSC1Ul4M8yIPlmrhQeMBnvWeAaBK\\nid+efosvdr5YKCoSpREVjQkGVGDg9YPyIBggTEJsGBtomk1sGBs5WtWWvIWKWoEqU7uAjtuBH/k4\\ni89QjasI4oCbZs5TYAMWx5LJ/39TLNuVAajxcjbGMvp3UReFUZazBa+aXuMFzEl4scevtyAIMBVz\\nqfPMyjQXKcdljTSbZvONhWUY1vX+KTEfZUKzRljXNueyUs4MtmaDgPAHZzd2cbd2F4Ig8Irb6fgU\\nKUnxqPVoKqmJE2qayboxAO0OiJqIcTgGIQQVrYKqVkVNq6GqTauVAeCiAHIo57xrxuEYqqQiIclM\\n75pJLMN/vg4s25WJkojODWWSB13W0TJbhdciTmO8GrzKyVdvV7YLq6OEEPS8Xl7RzGgsZQw3KQQw\\nGWCYghBAk53rqqgBJeWsRAmGdY0lAJXUzUo5HwwP8KDxoHCdq2pVXrgBaCHL1mw8bD7Eb53fANAO\\n9bcn3+LL3S+n1hvmnZI1FpZFGVvWFrpeF2ESwpAN6kGm19A0m4UP8KZiQpd19LweNEnj8WngD+DF\\nHsIknOldswxYIe9tJzNFXZmUpBj4g9ygPvOaK0oQCKFFzez8ZcNoTCljMvixn6Ov6bK+VCyZkmme\\niGtBHOS6Q9vWm4sBMKzz/VNiNsqEZo2wzlWBZaWcGWzVRkpSvkiOozFNaiDkZDgJCP7S+gsEQYAT\\nOuj7/VzLO7tAmoqJ3couRFHk1Z6EJDNV0AD6UG1rNrSEigXosp7zrDEUA3Ea89mQycFIhmyFbRb/\\n+TpcmidRtE83ctF227nXs07VrOTn1eBVLmDt2rszP7tBMMglJrMC2ySYMhFDUZKYFQPYqexcq3t2\\nSTkrUYJinWOJKIg5KWcv8gqlnBnqep37oACUZlTX6/i49TF+af8CgNLXvjn5Bl/ufAlFUrj55aR3\\nCoMu6zzusKJZStKZKmjsuJtmk3drTOXSu+YivoCt2YiTGKZqYtPczK1/szoyk/HkuqSei7oyRckM\\n61hl120m8lO0NjPK8ii4nKtsms2ZnXYWZ7P7XraLkj2moiJddg6zpteuRViGYZ3vnxKzUSY0a4R1\\nv4mWlXIG6ILMjDfZw/EoHOFe/R4EQeBa9afjU/S9PrasLURpVPhQX9NrVC4zQw9bxogzC1VSoegK\\n3MiFItG/2Z8wCZGkCYIkoKIB0mw+9CxOdPbf3qbcc9/v5zxjBEFA02jOPO8oifBy8DIXVPbsvZnD\\nrKNglKOkVbXqQhWa7HsxSKJUKAHKjl0QhJkPMFfFut8/JUq8K6z7vcAG/1kcmCXlzNA0m0hJyrsC\\nfb+PDWMDj1qP8HP7ZwC0U/O/X/xv3K7eLkxiAMoeaOiNnEKZG7lTRpx+7M/sdjPlyGEwhCqrdL7G\\n7/J5jkbagB/7aOgN1LTazHjA4sl1x5JlujJA8byMpVozP4OUpHjRf5GjpW1amzNNLOM0zjECFEkp\\nfFYoQjaZKRICSNIkL9V8jd0ZYP3vnxLFKBOaNcJNaHPu2XtwIocmAa+lnD9ofFC4YAqCgLpeR8/v\\n8QAzDIa4X78PL/Lwa/dXOpxOaEB7sPEAoiCCEAJdfm1++ZpONrn/VYw4s8djqRbURIUkSNAkDU5E\\nZ2uGwRCapCFOYqiSCluzc5WkInlO4M0Tm2W7MilJ0XbbuWF+RtmaFSTCJMTL/kt+7QVBwC37VuGA\\nJ5BPEgHaEZs3Y5RFnMa54c1JE00AudmZltlaOrgti5JyVqIExU2IJS2zhXE45tX+w+HhzNlMgD48\\nJyThD9Rdr4tNaxP36vfwH8f/weWWz5wz/LX1V94hUSQFDb2BDWOjsGs8TwVt09ospKAJgoCaXoOp\\nmOhIHRiKgb7fxygYoe20ocs6ojjCMBhi09zMdQ/eVixZxiSTITtMz89Hq80sXiVpghf9F7lttivb\\nhYqn7PXZWLWsohmwWAgAoM8LLOnRZX1mge6quAn3T4lplD40a4SbUBVgUs4C6CLJpJxngSU1kiDR\\nuQ/nAt+cfgNREFFVq2DFpL7fx7PeM9T0Gj7Y+AAfbHyAhnHpRF+02DMVtOyDMZOczNKrJqFICqpa\\nFRWVzuHYKnWk9mMfo2AEL/ZynOt5wWSR78Cs7ss8v4FJhEmIk9FJLkAYioFde3dmUhDEAV70X+SS\\nmdvV2zOTmTAJuTkqAGiStpSiGTuXbEVUkZRCakP2e3IdRpqTKClnJUpQ3IRYAlApZ1Y4ipIIh8PD\\nua/ftrZhKAaSNEHP6+H/Hv1ftN02tqwt3pnwIg8/tX+CLuu4V7+Hj5sfY7uyPXdOkqmgZR+M4zTG\\nyegk1xGfhCIp2KnscHGVbWubCtFEHs6cMwz8AY5HxzgbnyEl6VuLJZPJDPOVKZqXYWpt2XPfMDZm\\nJjNxGuN573lum117d2YykxUFAihVz5CXp4MtEgIA8mIA12GkOYmbcv+UyKPs0KwRbspNtIqUMyEE\\n43CMYTDEyeiEL7yjZESHCCGg5/f49m23zVvYixTQ2GuqWnVlCpogCNBlHYqoQBIkKhoQOfAiD6Ng\\nxBf3MAlnzudM7o8dY9E1KOJJF20/CSd00PE6uW0YBW8WvMjDwfCAV7AYZ31WtyXLTwdogFtFSnmR\\nTDMA7ikBUNrHrMTqTXBT7p8SJd42bsq9sIqUM0ALaFES4WB4wLspYRKiaTTxYeNDvBy+hK1S6lrb\\nbRdKCM8Ck7vXZX0lChoAWIoFXdLR83vQ5NeiAf4APa8HL/aQkARe7M31rskeB7Bcx2aVrgyT4c9u\\no8naXFpclET4vf97jjq2Z+/lTLMnj8+N3Lw8s7JYnplhUgigaI6n7/dznkFFKp1vipty/5TIo0xo\\n1gg3qc1ZJOX8UfMjvgAFcUDnPTIDh7Zmc86uIAiQJRn/7e5/w5lzxg3Tel4PP5z9gE+3PuVUs8mk\\nBphOAFahoE0qp1Q1Kr0pCiIMxeCiAXEa02ogSaBJGmzNXjjEPs93oCghKzoX9vqe38sNX7Kh1Hk0\\nMDdycTA44NdAFETs1/ZnDkymJEXP7+Ve39AbKwWgXHemgGqWkjQnBnCdUs1ZlJSzEiUoblIsWSTl\\nHCURen4PPa/HO+9No5lTeYzSCJ/vfI6/bv0Vfz//O3+w/tvJ3/DV7ldL052A1Shok7GkZbZgKRZk\\nUUZFrfBuyLlzDlu1kaTJQu8ahnmJTZqmIJiOJ7Pikxd5OVUygMpizzNJjpIIz3vPc2yH29XbaBiN\\nmdsw5ToGQzZWEn7Jzs7M7M5kjDQ3zc1rFZZhuEn3T4lLlAnNGuEmVQWKpJwPBgeo6VQIIEuPYmBt\\n/awOvRu5nMLGqnR9v48fzn/AZ1ufFSY1QHG3JmvEyRZhRkGzNbvwYZtBV3Sosgo3ciGLMrzIgxu5\\ncEIHoRgiVdOlvGuy14cdZ9Hf8+gFSZqg7bZzw/mKpEwp50zCCR0cDA/4ezB64LxgnlUBEiCgoTcW\\nmtRlMSkEULRt223z16mSiqZRXN17U9yk+6dEibeJm3Yv7FR2MA7HCOKAK2ltWVtTRR0GSZRwp3YH\\nQRzAkA1IooSBP8Ct6i18tvUZfjj/gSuo/e2YJjWrqGBljTgZ5YxR0DaMjbl0XFM1+UyNJErwYx8d\\nt4NhMIQbu6jr9aW8axgmY0k2YeByzzO6MoQQjMJRLh6LgoiaXpvLOgjiAL/3f+frtiAIuFO9M7e7\\nFMRBrrily/pKsWRSCKBo28nE7G3QzYCbd/+UoCgTmjXCTbuJmJTzr51fMQpGeNF7ge3K9tRir0gK\\n1fnXalAkBWEScooTk11m1IDfe9QFeuAP8P3Z9/h8+/OVkpoiChrT2S+ioGW3FwURFbWCMAkhCiI0\\nWeNBdugPoSs699dZxrtmEYqOP4gDXLgXucXdVEw0zebcwDcOxzgcHvJrJIsy9mv7c6uAw2CYq77V\\n9NpK55SkyUIhACAvBrBr774VI1KgnKEpUYLhpsUS1kn+8fxHDIIBhsEQh8PDKToR80dh1LAoiXA0\\nOuJr0fHoGLfsW/h8+3P8cPYDUpLCj318c/LNyklNEQWNEIKO24EXedi08t2BSXPMhtGApVrouJ2c\\nd03bacNSLaQkXdm7ZpYccxGSNKES/BNGx3W9PjfR8GMfv/d+z81f7tf25yZxURLlYokqqSvFksk5\\noFmxLjs70zAa1y4sw3DT7p8SFGVCs0a4SW1OtlgyZRdWRTtzzmDIBlRZha1Sn5rJJEKVVNS0Gh9C\\nj9MYg2CAO9U7EAURz7rUBXoYDPHk7Ak+3/6cO84vk9QAlIImizKluLFh0QwFTZZmf/VVSaWDnbEH\\nURARyRHG4Rhe5CGMQ5iqyb1rKmpl7iAnw6LXCIKAcThG1+vmtmOGb/MwDIY4Hh3z7RRJwX5tf+5i\\nzySrGSpqZSVaBpA30WSfT9GxMVUiURBnSnxeB0rKWYkSFDcpljA5ZibE0vW6AOjsClNatFSLd0ay\\nD7uKpGDP3sPR8Ij7YB2PjnGrSpOa78++50kNo58tq9zIYCom9uy9KQra0fAIm9bm3CRJlVTs2lTi\\nWRRFmIqJrteFEzrwYo977IyUEVpma2YSkJVj5ussyceVbCwJkxADf5BLEnRZz8lVF8GLPPze/z03\\nf3m3fnduwpWkSY5NIIvy0lL/fB9kvkwzQJ8T2m6b//yuYsm63z8lLlEmNGuEm1AVYOaXo3DEF9Bt\\naxt+7CNKIsiijCiN8NfGX+cmDZqswSY2RiFNhMIkxDAY4nb1NgQIeNp9CoDKSz45fYLHO49zD83z\\nxAKyXYpJClpCaCK2aNCf0eJUSYUTOpSGFlMaGhMNIIRw75rJZGDR4P/k8XfcDsbhmL9GFES0zNbC\\niiJT0WFQJRX7tf251TEmU82gy/rK7tZREuUC6Kz3yx7blrW1tKnaVXAT7p8SJd4FbsK94Mc+N79k\\nD9ANo0GpvhFdc8MkxOfbny+VNLCiDqOG7dl7eLzzGE9OnyAlKYI44PSzebMjWWRjySQFLSEJTsen\\nSw36V7UqT2YUSYETOuj6XXTdLnRFpzLHsYeG3sgZJM8yyRQFEawxMxlrnNDBKBjl4o2t2QsTOTdy\\n8aL/IpfM3Kvfm3utUpJOKZqtWhibFAIokmkGXhtxv37dPL+c68BNuH9KTKNMaNYI63oTsTmUvt/P\\nta8ZFEnBo9YjdLwOX8y6fnemrCODoRggIFweOUjog/at6i0IgoDfOr8BoHSqJ6e0U8MenGeJBUyC\\nUdD82F9JBY1BFmXU9Br82Kc0NOmShhYlEUzF5BVAJv9cdAxF/8aCb9tt88ofIQSqpGKrsvjhv+f1\\ncDo+5T9rsob92v7c7dhnyaCICmraahr+UzLNM6hmjDvOcN1GmpMoKWclSlCsayxhnf2u1y2cswSA\\nh82H6HpdaJIGQRBw7pzjbv3u3P0yo06mphgmIU7Hp9i1d/HFzhd4cvYESUpnPb85+QZf7n658IF4\\nMqYwCpqhGIUqaJMUtEnIoowtawtO6EASpZx3zVl8hqpW5TMvmyYVH1jGJJMrnqW008W6JYQQiIKI\\nulFfSM1yQgcv+i/4OUmihHv1e3OTIDajlC1ssdnYVTBJNZs1C3TunPOfr9tIcxLrev+UmI8yoVkj\\nrBNlhskt9/0+TzgmYSgGN78UBRGVcWUpKecsWELA6E8scdiz9yBAwK+dXwG8TmrOnuDx9uOppGYe\\ntYv9fBUjziyYxLMbuZBECUEcYByOMQ7HUCUVqUIrgJZi5Rb1eYt7kARou23EyWVyYKkWmkaTn9us\\n7TtuJ7fA67KO/dr+3PNISYqe1+NBUhIkNIzlFc0YslQzURBnvidzAQcodW5VqseqWKf7p0SJ94l1\\nuxec0OHdjSKpYVVS0TAaaOgNKJKCrWBraSlnBm4n8FoFy499mtRUaFLz3el3+aRm58tC+fh5xTH2\\nPkUqaIyCtqhDYakWDMVAz+tBFERYioWu18XAH8CLPdS0GoI4oOpvRpOvr7MG/4FL6f1JP7C6Xudm\\n1bO2HQUjvBy8zHWj7jfuLzwPL/amFM1WjSVJmkwpxRWh63V5MVWRlIXfhTfFut0/JZZDmdCsEdah\\nwswG9gf+ILc4MkiihJpGfVAmebJb1hZGIXUgLpJynoWKWsmZcbmRCwECdu1diIKIn9s/A6BB8bvT\\n7/B45zFUSZ2r0y+K0++5SAVtURVLEiXYmo0gDiBA4N41bugijENOi/BjH1W9Ond/w2CIntcDcBko\\nG3pjKsAWyVS33TYunEuTSkMxcKd6Z24yQwhBz+txrrIAOrS6quRlkiY5wYJZVLMkTXIDnG9LqjmL\\nsqpWogTFOsQStrZ2vW7Ox4SBudM3jMZUt2SRlPMsVNQKUivl6yMzuNyp7ODLnS/x3el3iNMYURLx\\nTg0bdl+UyGSxSAVtEQWNSfBbKk1mmHdN3+vjLDqDrdkghMAJHbTM1kJ1sUEwyMUKXdZhq/bMGRuG\\nYTDEq8Gr3Pzl/fr9hdfZj/1cHDAUYyVFM3Y82YRo3vbZWLJlbb01YRmGdbh/SqyOMqFZI7yvBzJC\\nKAWr7/dzg+JZWKqFul6fWiSzYGooWSnno+ER7tTuLDwGW7Mpzzmhgc+JHIiCiO3KNgRBwE8XPwGg\\nyc63J9/i8fZjvuhm6WdZ7vEsqtdVjDiz0GQNqqTya8VoaG7kcmnnvt8v9K4hhKDjdfigPHDpX8Aq\\nYvMStQv3IkfjMhUTd2p3FiYmg2CQ66zU9fqV5lkmhQBmve+5c84DnqEYc70LrgtlECpRguJ9xpJx\\nOEbP73HPsUnoso4NY2Oh2taklPPB8AAPGg8WPsxWtSqSNOHiAk7o4MK5wKa1iS93v8S3J98iTmPE\\naYxvT77FFztfFCp4LXqfRUaciyho7FrsVnZpQgICXda5VLUbudgwNtB221wNbTLRcEInx6AQBAG2\\navPi2rxYMggGOWVMVVJxv3F/YWEvTMIc9VyTtSvFkmwyM0sIAKDsDBYvBUHAprm58nutirI4djNR\\nJjRrhHd9E/mxz7sxRTQAJvG4SLM+Cybl/GrwCgDQ83uwNXsp5/mqVsUgGPDuySikg41b1hYECPip\\n/RPSNIUXeZx+xhZ4URSXVkAD3pyCBtBkQhEVOJGDul6n3jWxi2Ew5MlJ6F5618RpjAvnIidvqcka\\nNs3N3PvNMlQ7HZ/mujqWauF29fbCoDkOxzkVmqpWXVmFBqAVyGziOC+I5aSaK293doahDEIlSlC8\\n63shSiJ0vS56fq9wzlIURC63vKx0MpNyftp9yuc1WLdlERpGAylJ+bzgMBjyrshXu1/h29NvEcYh\\n79R8sfMFj1GrVv/flIIG0DXZkA10vA5kUYav+Oj5PXTcDkzFRE2v4XB4iLpepzRhCBgEg1zni7En\\nsl3zWbGk63VxNDzir9FkDffr9xdKLcdpnHtPRVKuJJ081Z2ZIQQA5I00m0bzje0SlkEZS24myoRm\\njfAupAKZJ0vf7+cecrNgCYilWFdq7db1Ou/4AMDR8AiWYi1ciBgFoe/3eSeABaKW2cJfWn/Bjxc/\\n8uD23el3+GL3Cx4wVpF1Bq5OQcu+hyIpqIk1+IlPW/2KzhOIKIlgqiatWHo9BHGQS1wqagUbxsbc\\njhd7v+PRMac2sG1vV28v/Hz82M9V8JgM6qoghEz5Gcx6b1ahBGiQXSQOcV0oec8lSlC8i1jCOvtM\\nbrkIpmJyCtZVHN3ZsD+bx7twLlBRK0spXDXNJhKScEsBZnRZ02r4cudLfHPyDaIkQpImNJbsfHHl\\nTvJVKWg5Hy9JoV2pYIyBOIChGNyTxxt7POHq+33IopxLlFRJnXuNs7Gk7bZz842atFwyw8RvGCRR\\nWlnRjCEr0zxLCACg3aCe3+M/vy0jzan3LWWbbyTKhGaN8DarAm7kou/3Z9IAVEnl3ZjrkNa9Zd/i\\nFKyEJHg1eIUPGh8s1cav6TU+4EgIQd/ro67X0TJb+GTzE/zj4h8A6FD9d6ff4fH2Y171W0bWefL9\\nlqWgzeJYi6IIUzShSRqcyEFVqyKUQ4zDMUbBCEEcIExCzm2uqBU0zeZSQZklM1mZ5apW5TMp884t\\nSqJcEqRJ2lxzuHEYXgAAIABJREFUtHmYFAKY9x3JBsudys7K3OqroqSclShB8TZjSRAHXG65aM6S\\ndfY3jI0rdYIn0TJbGAUjnjQdDg/xcOPhUuvKprmJlKRwQoc+zDttCKBr/te7X9OkJo2QkpTPZ151\\n4HwVClqRHDMb+q/qVT5bIwgCFw3oeT30vB5kSYYkSDBkgydLReIGRWi77ZwypqEYuF+/D0mUCmds\\nGAghdDaWzagKIgx5eZPSLKZkmud8jlmpZiZ9/S5QdmhuJlYvmZR4a7jumyhOY3TcDp51n+Fl/yUG\\n/iC3kLDk4W79Lh5sPEDTbF6bT4gkSrhTvZydcSIHF+7FnC0uIQoialoN4uuvJwHhwbNltfDZ9mc8\\nMAQxTWomJUAnF+VZyQgDU2zLVri82OMeCbN8ZbLvI4kSX3Q1SUNNq8GLPHS8DkbRCFESIUqpV88y\\n15kQgqPREU9mmPs0k7XOvm7y+JI0Qc+/VDRjDxlXATOsY5hXyWOJM8O7opsBZRAqUYLhuu8FppD4\\nrPsMv3Z+peqME8mMrdnYr+3jUesRdu3da0lmGO7U7vA1M0oiHA4Pl9pOEARsmVu5TsKFc4FxOEZF\\nq+Drva/5caYkxZPTJ7kZxauAUdCy588oaH7s0wf6BXLMkihh09rElrUFQzGwXdmGoRroB31+/F7s\\nYRSOclTgeTgbn/FkhlGWWTKTRRHLwYvz8syGsrqiGUM2lixS5cyK37yr7gxQxpKbijKhWROkaYok\\nubzRZfnqicU4HONweIin3ac4d85zMxvAZRv/4cZD7Nl7b63qYalWTi/+bHw2U3SAgT2cM841TzAE\\nOsSYpAk2jA18uvUp/12YhPju9Lupfa+a1DAKWpZqFiURel5v6hrOW8x1WYepmOj7fU6jkwUZSZrA\\nki1IosQpednFPQs2BMvoEgCwYWxg196dSqSy58f+9PwerxCKgoiGvro8M0OWaiaJ0lzqSHZ2pmk2\\nr/WhZh4m7x9JejddoRIl1hHXRZnxIg9HwyP8dPETDoeHU2usIinYsrbwqPUI9+r3UNNrb0WBShZl\\n3Kre4j9nVSJnga2FgiBgp7KTW4su3Au4kQtLtfDV7le5pOb7s+9zjvRXPd7dym6OahYlEY6GR7mu\\nOTCfcsWSmSRNIICeh6mYcCIHYRKCgKDrdXE4PJzp6wPQrnlW5r+iVnC/cR+yVEwdzhbJphTNZONK\\n9EEgn8zMEwIAkEuaNVlb2S/tTVBSzm4myoRmTTBZEVjZGySJcOFc4Gn3KQ4G9EE4+wAvCiIaRgP3\\nG/dxv3EfDaPxTqhAW9YWT5iYlHORAEFRl0ESpZy0MBvyTEmKhtHIdWpYUpNVDwOKk5p5iQ2joFmK\\nxV/HKGhO6MxMJrJwIxdnzhlUSYWpmJAlGbfsW7jfuA8IwNCn5mdhEqLrdTkdgiElKQ4GB7lzaZrN\\nqQrVrGPpeZeDuQKEhWpC8xCncZ7nPcNEE7j8DjK8C6lm/t4TdLO3LetZosQ6400qzEmaoON28Fvn\\nNzztPkXX604pUtX0Gu7V7+Hj5sfYrmy/k0HtqlZF02zyn49Hx4Vy0EVrvCiI2K3sQpVVPmt5Oj6F\\nH/swFRNf737NuzgsqcmuZVcBo6BtV7YhQOBdma7Xxdn4jBfu5oHNdLLioC7p2K5s46ONj6CICtpO\\nm8/DHo+Oc+qS7FocDY9yCZqt2bhXv5d771mxxI/8XEFLl/Urx5JVhACAvBjAtrX9Ttf0skNzM1Em\\nNGuCq9xAbCjz1eAVnnafou22pxRmTMXEnr2Hh82H2KnsXHmI76pgUs7ZxIOpq7BzmEfnYlQpAXQx\\nS0jCk5q6Xsfn25/zBTZKIjw5ezI1oDqrAjULhFD5zEkKmp/4c7sqAB3YvHAu+P41WcMH9Q+wXdmG\\nrlC5Ul3R4UUeRgGlCziRg67XpfNGKZ03ylZCGfVgFrLBaBgMufQ1IQS2uthfZ951mDRqmxdUzpwz\\nHrAqauXK8zpXQRmASpS4xFXuh3E4xsHgAD+1f8Lx6HhKNEaTNezau3jUeoT92j5sbbaE/9tCttPC\\nuti88DSnWCUIAmRJxp69x6lrhBCcjE4QJtRD7Ou9r3Nyxz+c/5DralwFLJbsVfdyHSKWgBQlZNnX\\ndL0ujzdMVvle/R5M1cROZQcNo8HV3/zYxygY4dXgFZ+VPRwecvlqAJRiXrs7d6aU/S5KIs5MIIRA\\nEZU3SlyXFQIAgIE/yAnLtMzWld/3Kijjyc1EmdCsCVZpcQZxgLPxGX7r/oaj4dFUV0ISJTTNJh5s\\nPMDd+t0rK8xcF1RJxS37ki7Q83voe/2l5lKA10pimdZ9nMZ8Hqim16aTmtMnOaoW2+8k5mn0A5cU\\nNE3W+PasYjZJQUtJinPnPEcnkEUZO5UdVLQKLNVCVatCFmVU1AqV3hQEDIMh3MhFnMZou238/fzv\\nuc9zu7K99GLuxV4uEaqoFRiKsbArNQuryDSzhwOGd9mdAUqFsxIlslg2nkRJhHPnHL+0f8Hvvd/R\\n9/PrMuvsP9h4gI+aH6Fltq5tzvIqYFLObD32Ig+n49O5iUx27ZdFmtSweJGSFMejY0RJBF3W8fVu\\nPqn5+/nfc52CVZAd/GcUtGyRLE5jnIxPpihoADAKRrmZV0GgnXZbs7kojKmaqGpV7Nq70CUdHbeD\\njtehn+n4HP9+9O+5LlNdr+NO9c5SSWjWE44dvyZrV44lk0IAi55HskaaLbP1zoRlGErK2c1EqXK2\\nJlhUEUhJyucuZnFlK2oFdb2OilpZO8pNw6DyyIz3fDg8pD4uBZr5RVAlFVWtygfkozTCIBigptVQ\\n1ap4vP0Y3599zw3Tvj/7Hp9tf5brEiySdS5aqEVRXKiCFiYhLpyLXDfDUAy0zFZu4ZZFGTWdCgV4\\nsce9a5zIgRd56LpdENDjMRUT9+r3lpYRDeIAw2DIz0WTtCkVtXkqNpNISZrvzsyhmgGU78ySPFVS\\n32tFrQxAJf7smBdPCCF8Lc6qJ2ZhKK8VtLTaO3+YXAQ2A3o8pPN6F84FbNXOKVLOW+MUScFuZRfH\\no2MueHIyPsEtmw7yM/Uzpur1j4t/gIAs5X8DFCuYAZeFRkMxuAoaISSnggbQLv+kRP6k+qgsytiy\\ntuCEDnp+D5vWJo0hXhen41M40SWNmVHMljG4Buja78X0GYPNuUwyO1aJJUB+dmZRd8aP/VySl53D\\nfVcoOzQ3E2VCsyaYdQN5kcfllotmTxRJoXLLE4Za6wZCCPYqe3BCZ0rKWRSX6x7pss6DMUDpa8Ng\\nyGUrH+88xpPTJ/mkZuuzXHenKHlJ03RqgZ38eZYRJ/PMYZQ4gLb15ymKGYoBVVJpN0WhC/wvnV/g\\nhA4USYEu6bBVGwSU8rWoIsq6RgyKSL8TRQlc9tznBZVJIYBFDzVZMYCdys47T6jLAFSixCWK7gc2\\ns9fzeoVyy5Iocbnld01NXgWEEDSNJob+kNOLD4YHeLjxELK03CONJmvU32Z8wj22jkfHXJ3s6z2a\\n1LD5xn+c/wOEEOza81Ub58kxM8wy4nzRewFVUnNxnA3Dz1pPLdWCoRi8ULgj7eCn9k+4cC4gSzJs\\n1YYsyly6Opv0zTp+L5pWNBOFaeNq9nr2ulmYFAJYFEuyHbG6Xn9nwjJZlPHkZqKknK0JcpQZTUHX\\n6+J57zle9F/wmREGNri+X9vHhxsfomW21jaZybaoJ6Wc3dhF21tNTcZQDFjK5aIcJAGnl1XUCh7v\\nPObXIkkT/HD+Q2FLfzKxmZSzLkJWBY0Qgp7Xw7lzjr5HKWiiIGLT2lxKHlkSJdiaDUVUcDw6hiZp\\nNIkhBJZmQZM1xGmMrtedEnjIgsmpsiAqCRKns7FzmXU+s+gDSZosLQQAIOcRIQri0pXM60RJOStR\\n4hL8fhAAj3h43nuOX9q/THWSAfpQfKd2B49aj7Bn761tMjO5Xt2u3uYPx3Ea43h8PGvTQhiKkav+\\nh0mIk9EJUpJClVR8tftVrsv948WPufnPyWNbRo6ZYVIFzY99tL02TsYnvGvGGBeLikOiIKJpNtEy\\nWzgZn0AWZcoOeP14p8s6oiTC6fgUJ6OTwmSWwYu93NqfVTS7SiyZFAJYRgQhK2DwPmIJUFLObirK\\nhGZNEEURoACwAWzQKsXkwKAma9iubOPhxkPcqt5aWG15n5i1wFmqlavgLyPlXLSPrNS0F3v8gbqi\\nVvB4O5/UfH/2fa6DwY6v6JiXMf60FAtO6PD3JCAIkgC2aq8kgR3EAU7HpzBk2v1RZRWPWo+wZW7R\\ncwrGSNIEXky9bCaHdFlSxYYtBQg5VbjJ4142GGVNNGWxWNYzi2x35n0l1yXlrESJS4RpSGNJCzjz\\nzqbmLGVRxqa1iY+aH+GDxgdTAijrhFmxRJEU3KldzoQM/MFCKedJWKqVE1zxY58rkLGkJmta+XP7\\n5ykPnFldmUXUKkEQ0NAbMBQjR2ce+AMuVLAs2DyOrdqoqBUokoJHrUf4cONDOJGDM+cMQRLAjVy8\\nGryampVi556TZ1aMwm7KKrEkKwSwSKYZQM6Q1FTMpQ1Drxtlh+ZmYj1XsD8RWEXiWe8ZUAOg5T1o\\nmB/Lvfo9fND4ABvGxtpxmrNYpDQjCMKUlPPB4KCQTjcPFbWSqyS6kcsTI0u18MXOF1zdKyUpfjj7\\ngQe7om4MO7ZFQ49BHOBkfMK7ZMwxecvaQkziqW7aLPixj5eDl4jTGIIgwFZtPGo+Qk2vwVIt7hsz\\nDIbwIi83Q8WCzjAY5pKPul5fSE9bFIyiJMrRCBYlJ0EcoONdGtG9azEAhjIAlfizIyUpul4XT7tP\\nEdohYAAQAFm5XBOqWhV363fxqPVoyptl3bBMLKlqVWwYG/zfFymHFcHW7NzMnxu5XN1MkRR8tftV\\nbhbzl/YvOBgcAMBKXZlJMPNjAQJ2K7vQJA2yQFU94zTG0fBoqXOJ0xi/936HF3n8mjzefoy96h4q\\nagW37FswZANtp00LYK9luQ+Hh7xIFiZhjmasydobx5JJQ+pFMs2EkJyq3Ls00pxEGU9uJsoZmvcA\\nQgjG4Rh9v8+r/F5wOeivKAp3rmcPzeuORd4ukz/v1/bxa+dXrqZyPDrG7ertld6zqlVBCOFqLONw\\nDAGU82sqJr7Y+QJPzp4giAOe1Hyy9UkuAAJ08H+eWADDOByj63X5a2VRxt3aXYiiyAfi4zRGz+vB\\n1mbLJXuRl/PjYco9TJHMiz34sY+aXkMQBxiHY0RJBFOlSSDzhUjJ5eyPrdorPZwUzRKxhIb9fhHV\\nDEBOYYglY+8DJeWsxJ8VbuSi63Ux8Ad80DyOLmlFpmaiZbXQ0BtrS03OYpVYAgC79i6cyOHr/MHw\\nAA8aD1aa46vpNSQk4UWvcTiG6FAKsSzK+HL3S3x3+h2nL//S/gVxGuNu/e7lsS2ZyAA0gWCfF3AZ\\nSxKScMoZ67o09EZuDjSLKInwvPc8p7p5u3qbi8mMghH6fh9NswlLtagHjnPGTSqPhkc0XsomL5Qq\\nkrKS1P8sUZ2sspkkSguvTc+/NLCWRXkqTr8rEELKeHJDUSY07xBhEqLv9zHwB1M81iiOAALAB6zI\\nwr36vfdyjKti1eDDwKScD4a00tX1urBVe+bCPQtVrYpBMOAL4SgcQRREaLIGQzHwePsxnpw9gR/5\\nIKAynJ9sfoKm2cwd3zwFNKZEk/W3EQURLbPFaQHzVNCycEIHh8NDHsgkUcJ+bZ93m5jCmSZpdH8y\\nvVbjcIxRMIIqqRAFkZ8n41lfNZHIBqNst4dRJuYhSROcjk/5z++rOwOUlLMSfy4wIZCu152q4nPa\\nkA8IgYC/bv31PRzh6rhqLBEFEXeqd/Cs94wPtZ85ZyvPX2wYG0hJypOWYTCEJErYMDZoUrNDkxrm\\n6/K0+xQEBPfq91ZKZtzInbIVsLVLuvI8FbTsmhwmIZ73nueKULert3MznGy/7Jh3K7sYhkMM/AG8\\n2IOt2nAiBwKoCWjDaFx5hiobSya7M8sUZbNiAFvW1nsr5CZJRpFNFCFJ68uIKZHH+pf+bzgIoZzY\\nl/2XeNZ9ho7bKRzKbEgNoAPAoZK7645l6ACL0DAaucX3cHg4ZQy6CIIgoKblJS2zCY4u63i8/Zgv\\n0kyGMzt4mN3XJKIkwplzlktmVEnFrr2b4zizjlp2EWYqaCx5GYdjHAwPpqpyRQFEEiVUtSpMxYQo\\niLA1Gw2jgSAOcDw8RpiEVF7ztYT3qpS9SbCODwOr5M77nC/cywFjXdbR0JeTmH4bKCkCJf7oIIRw\\n48Sf2z/jZHQylczoso5NfRO4ADAEVKx/cn8dscRQjFwCc+FcTM0NLYOW2coJAfS8Hp+/FAURn29/\\nnpPSf96lwj3LHCN7FsgmM8znJzt7yVTQsh13N3JzFLQgDvCs+yyXzOzX9gsFaSRRwqa1SbtNkoya\\nVsOuvQuBCHg1eIVRMOJ0xa7bnfJYuwqyNDzW+Zn3OWdnUhkt/X2hjCU3F2WH5i3Bj30ut1zkLC+L\\nlCtb02tQJRVP06f8d+t8E121ijYLt+xbcCOXSzkfDA9wv35/pX0x07HsgPzAH3Apa13WOf2McYZ/\\nav8EAFz7f/IcCCFUecZtI0kT/u+WaqFpNAuPj6mgjcLRFAWNgKDttvn1UyQF+7X9ha19XdahSiqc\\n0OHHoSs63MhFSlJs2BvwYx9BHHAjzauAdWeYgeZkdaxInjMrBrBr775X76OSIlDij4ooiajcst8r\\nLPiwOcsNYwOGYmAwGIA9T677vTAvkVkVLbOVU1xkUs6rzpxuWVtIScpnMjtuBwIE2JoNSZS451nP\\n60EQBPze+x2EEDzYeDBzn0maoO/3895ery0XijoRTAWt5/d4x4hR0AzZQNfr8n0JgoC7tbsLB+hN\\nxYQu6+j7fYyCEWzdhiAI6Pk9+ImP3cougiTA4fAQNa02U2BmEVhhjCWjy8SSrJHmhrHxXqmRZSy5\\nuSgTmmsEa1f3/f6UIhWDrdmUIqRYuRt63Skz153IMDAp52e9ZwBoF6PttqcSjUVgQZ0FDQKCvt9H\\nw2hwl2OW1DCd/R8vfsQj8qhw+HAUjtB1u/xnQgiaZnNh0GBDmVkK2sAf4HR8Ck3WuJno3drdpRdt\\nRi1j/ju6rEOXdWiShnEwhq7Qn0fhCH7sw9bsldy84zTOBZmsslkRDQ+gXTDWHZJE6b2Yn2Wx7vdP\\niRKrgBBKW+35vSl6EoOpmNT8Uq/lHhpvwr1wnYlMFrert/Fb9zckaYIoiXA0OsJ+bX+lfQiCQI07\\nR8c0VoAOq4uCCEu1IIkSvtz9Et+ffY+OSwVRXvRfgIDgw40Pp/YXxAEGwSB3zoZiwFbthSpozBOI\\nUdDcyMWvnV+hiiqPbffq95amHIuCiA1jAyJErqSmyzqCJEDH7cBSLFS1Kp/vbZmtlejMkzLNkiAt\\njCXMnoChjCUlrooyobkGuJHLuzFFC7UqqbwbM+tBc13bnG8rkcmCSWcyhZPT8emVug2SKKGm1dDz\\ne1x9pu/3uTIcT2pOn/Dq28/tn3Mu0IQQdLwOnNDh8zOSKKFltlbiFjMjzlf9V3zOJIgDiIKIBxsP\\nVq5A9f0+REGkyVLswVRMqJKKMAkvRQOUS9EAQzZQUSsLP6OsEAAwLdM8y5zzaHjEZ4y2re33rry3\\nrvdPiRKrIIgDdL3uVDWfgXX2N4yNmSIg63wvvK1EhkGRFNyu3sbL/ksAr6Wc1V6OJrYMWFJzNLqk\\neZ05Z9gT9rg4y+fbn+OHsx84ffll/yVSkuKj5kd8P1kqFduvrdorxTZGQXvRe8EVQb3UQ+Im+Gr3\\nq5XnJ4M44EWobBEsTEL0vB7OnDPU9Tp0Wcfp+BSWaqFltpYqkmVlmidlq2clNmfjM25uXVEr792O\\nYp3vnxLzUSY0V0ScxrwbU8Q5ZZX6ul5fyptk3W6id5HIZLFtbWMcjuFGLggIXg1e4WHz4Uotb5Z8\\nMPoZef0f69SIgghVUnmnhnGsf2n/AkIINq1NXDgXuc9TV3S0jFaOBwwsdw2GwRB+7EORFERJBFWm\\nszejYDRXBW0So2DEldwEgUp8KpICJ3SgSioaeoMOmoZUNMCQDXixx71x5qmfZYUAREEsDFqTgciL\\nvJwE9vsyP8ti3e6fEiWWBevsd73uTE+uilrBhrGBqlZduPas473wthOZLJiUM6v6H4+OqdDKkiqQ\\nzFeGrbVHoyNESQQBAk1qxD1osgZREPHZ9mf4+/nfceFcAAAOBgcghODhxkMMw2FuxokV3K5Cp/Ii\\nqnxpKRZG4QiyKONW9RYGwQCiIC4tphMlEY9vgiCgZdLYxjpN2xUah3t+jxZitTqc0IEbubQbqNVm\\nfmZZVTN2vkXIxpOUpLyQSQh5790ZYD3vnxLLoUxoVkRWbrlokdZkDQ29gapWXalqvU7OtO8y+GT3\\nfVUp58njlUUZDaNBzcNAkBDKX2beLoqkcB40q579cPYDGkYjN4zIHiLmKaDNQttt48K54FUnZqIm\\nidJcFbRJuJHLqWsAYCkWr+7V9Bq8yIMXe7BUC7qsYxyOMQyGnNo2CAZQYxW2ak99H1OS5ua7FgVa\\ndr7Z2RlGiVgl0XsbWKf7p0SJZeBFHu/GFIl6KJKCht5YeaZgne6F9xFLgKtLOU+aZEqihFv2LRyP\\njhGnMVKS4mR8gj17jytOfrZFkxr2YP5y8BJdr5ubBVUldYoauCyGwRCvBq9AQFDTazAVExWtAkVU\\n5qqgTSJJkxwVnlGxAZrIOKGDrtel7AjZQN/vU4lnvQZLsdBxOxgFI2xam4VshWwsWebZRxAEdJxL\\nkSTGZCljSYmr4g+X0MQxgeelSBICQgBBACRJgGGIkOWr3SBRElG55WAwcyizptd4m/ZK77EGVYH3\\nFXwYriLlXHTMLGlhks7ApcxpXa9fJjU7NKk5GZ3wqlRKUuzau9gwNnJqN6skNefOOa94AZQycKd2\\nh5tjsocXL/YQpdFMr6EwCbknAUBnZyZneAzFoKIBr5Oeml6DH/twQgdyIsNQDIRJiK7XhamYMBWT\\nH3P2uyyJEkRBRBqNkYyPkSY+kMaAKEOUdEiVPYhKBXEa48K94NdjUqr5fQWjdbh/SvzxcN3xhA2H\\ns4fQSbDOfkNvLEUZLcI63AvvO5asKuU8mchk9yNKInbtXRyPjpGkCZI0wcnoBLeqtzhF99OtT/Hj\\nxY94NXgFJ3Iw9Knp8UcbH8FSrSs73vf9Pg6HhzkxmY9bH0MURJw757wDxFTQtqytwk5USlJ48aXX\\nnSiIU88qlkqLZT2vh3E4pt41scU7h3WNKqgdDY94F4wlLtlkJisEsCienLvnPJZsV7Zz348ylpRY\\nFX+IhIYQgiAgcJwUYVi0kBKMxylUVYBlidC0xVKQhBCMQmpKNUv+0VRM1PU6bM1+Y83093kTve/g\\nk0XDaPDrDlApZ9ZtyGJWIpOFJmuoosqTgiiNMAgGvG0uCiJ2K7s4GZ3wbV4NX6FpNnPJzOT+J80o\\nc2ot47PcgKOlWrhdvU0DoyDOVEGbpKCxf2dQRIWboU2CSTwHcQA3ci8FA8Ixhv4QhmJAk6mvDeNL\\ni4LIEytCCES/A3/4Eqk/LWedAIj6v0I0NjGUK0jTBBAEVLQK6ka98LN418GoDEIlrgtvI56w6vfk\\ncDiDJmvYMDZQ1+srCXoUoYwlFEzKma3vF84FbNWe6ooXJTOTvjKqpGK3QpOalKSI0xjHo2Pcsm9x\\n08j92j6fvwRoYauiVvDlzpdXOv6e18Ph8DB3DB80PuCxcJYK2qQRJ0vosmuyoRiFn4koiNyEs+N2\\noMs6965pe21YigVbtTEMhnAiB02Dxspsh1GEiNg5RTx8MTeepFoDcpICgsalpYtQxpISy+LGJzRp\\nStDvJwiC2TMfDGFIEIYJNE1AvS5BFKdvkCAOeDemSG6ZzWjU9fpKbrqLj+3dtznXKfhkccu+BSd0\\nEKVRoZTzMskMgy7rSEnKqWVhEmIUjmDIBi7cC0RJhL+0/oKf2j8hTELU9BqOhkdQJXWmOs5kt4Yl\\nNSejE56IAZSydrt6e2owclIFbZKClpKUzwABlwpuiz4XTdagSAqXwbY1Onw6CkaIkohS1URwuVFL\\nsSCQFEL3HwgLAs8kUu8CFVzgA8h4IVawW9nl58SuwyQWUfOuCyVNoMR14DrjSZRE6Pk99Lxe4Zwl\\n6+w39Ma1DkKXseQSi6Sci6h+s0wyNVmjCdL4hIupnIxPsFPZwSigRaqPNj6CAAEX7gUqagU9r4d/\\nXPwDn2x+stK16LidHLVXkzV80Pggl+wWqaAVUdD82M+dpyEbCwuwuqxjz97DIBhwCwRLod2ac/cc\\ndb0ODRrOnXN0vS5aZguqpEIgKcKLb5B6FwvPUQx62AcwElQEtQ9z5/Y+i2RlLLm5uNEJTZoSdLsJ\\nomhx8MkiCOh2Gxs0CDEqUN/vcynaSTBH9qvSABbhXVYF1jX4MEiihP3a/pSUc8tsFb5+0XGbiglC\\nCE8gWAvdUiz+fv/51n/GwfCAd3OYt8Dd+t2Z78muIyEER8MjLqsM0MHUPXtv5rExFbRJChrz42Fq\\nMQIuZ2+WAZN4jpIITuTweSIv8jAKR9AkDbIoI05jBKGDxvglxHi8eMcZ1BDjIRlPKQctkud8m9+v\\nsqpW4k1xHfFEEKjke8/rYRSOCtdaQzH4gPXbUAdch1gCrE88KZJyvlO9s7ArUwRDMbBtbXPlSid0\\n8NPFT9g0N7nvyqdbn+JkfMI7Q2fjMxBC8MnWJ0sxOS6cC75/9p736vdmdu6YCloRBW1yiF+X9aW/\\nc8zfzVIsdLwOEFOPHjdy0fW60CQNtmYjSiLqXaNUUBs/BwkHS+2fwSYhbOcQpLYP4fU5LiqSZV9z\\n3Shjyc3FjU1oCKGVtFWDD0MUEXS6IWK1i2E4nDmUWdfrV1YmWe143v5NtO6JTBaTUs4no5PcQDyw\\n2nGzzsfp+JQnLQIEbpRpqRYaRgN/P/8777K86L9ASlLcb9wv3KcgCEjTFEejo5xXRN2oT82WFKHI\\niLPnUZO1sEWgAAAgAElEQVSzilrhg6RX+e4pkoKaWIMXU3UcRjsbBfRhy5QNVN2DlZMZBpPEiC6+\\nhbj9/019Du8jsSmDUIk3wXXEk7O2iz5eISbTcsuss88q6m8T7zOWAOsXTyalnHteD5Zi5QoyyyQz\\nDCw2HQwPuDjQuXOOLWsLFa2CilrhHjEHAzoPeu6cIz1L8dn2Z3OTmrPxGY95AE1W7tXvLUxCiow4\\n3cjFwB/kDLyvGktYF6rv97lBJ/NXq6pVGLIOZfALSFKs0rcQ0RDB+d+gTcST99H9L2PJzcWbDX68\\nRwQBWYoWMA9xJGLshblkhlGC9mv7+HDjQ7TM1jtxrX2bbU5CyEya1roFnyy2rW0YssE5zq8Gr3Iu\\nxKuADUVmZTTDJERVq3K6hyRK+Gz7s1ygezV4hee95zP3eTg6zCUzDaPBqVjLgH3fLMWCEzrwYsp1\\nHgUjiJge3FwFgiDAVExUtSpkUeaDoJZqAX4H2hWTGYbUu0Dins38/azv16zv45ugpAmUeBNcRzxB\\nokJMpwet79Tu4FHrEfbsvbeezADvJ5YA6x1PmNACix/Ho2OESQgBwpRfyrKQBZlfCz/xESZhbvby\\no+ZHOdpy223j+7PvC4unAC3aZZMZS7Vwv3F/pY7KhrGB7co2UpIiTEIQEPT8Hjpu542fY2zNxp69\\nB1MxuSfaprkJJ3IQe2cwrprMvMa8eFLGkhLL4MYmNI5TvCisCo3Q4TlVUrFd2caHGx/iVvXWOzd3\\nehtVgZuayGSxX9vnFa0gCXAyPln52MMkxMnoBF7kwdZsKJICXdaxXdlGmIQ5tSFREPHp1qfYMDb4\\nvx0MDvCs+yy3z5SkOBgccANOAGiazZxB5yoQBIErjQGvec6iOFPSdRXIooyqVoUmaSCEQJVUNNNi\\nauWqiEcvF77mXQSjsqpW4k1wXfFEJ3Sof9PaxEfNj/BB4wPU9fobi8asgncZS4CbEU9SkmLH3uEK\\nYGz9vsp+GGW5ptcobVCg/jJRGnGTTYaHzYc52nLH7eDJ6ZOpNf1oeJTb1tZs3Kvfu9L3Rpd1NM0m\\nNImeK7MKOBoe5Qp6VwEb3m+ZLQiCAFVSsVPZwQ6mu5JXwaJ4UsaSEvNwIxOaOCYz1GdWh0Is3LHv\\n4cHGA2wYG2+sMHNVXOdNtCj4rDuyx8+knAF67F2vy1vqy8AJHZyOT3Ou23eqd7Bn7/FgMQzyBmii\\nIOKTrU9yMzuHw0P81vkNAJWofDV4lTPB26ps5Txs2HksgyiJMPAH3AU8K/PJ1M6KhopXhSRKlHqQ\\nxlDi0eINlkDqXSCNluv0vM1gVAahElfFdcYTFRV8WP8YO5WdpY0crxvvMpasezxh5o3ApZQzU7j0\\nYz/XEVmEKInQcTs5ufsdewf7tX3+3MAMUrP4cOPDHG2563Xx3el3SNIEhBAcDg9z21S1Ku7W7l4p\\nmWGKZpIgYaeyQ60kJNoVZCpoq8TPWdBkDXv2HmzNhpyGMNNpCfKrYNl4UsaSEkWQ/u3f/u3f3vdB\\nrIrZcppXgyJLUFQU6tDPwnUu5HFMMBgE+Kd/+mf867/+L/yn//TPaDa3IUlCoRLbLCziNa978AGK\\nz8FUzVwnZRyOFw7KE0Jb7VnVMVEQ0bJaqGpV6LKOMLmkG4ZJCEVS+D4FQcCmuQk3dnniMgpHXJ0s\\n29XZsrZ4xaroGs+77kmaoOt3+XdPFmXs2ruQBAlRermwBknAuyvLInstoyS6NDDzz4GgP2uzlSGI\\nKiSjufzrF3wPV6YTRmP4naf4r1/ex//8H/+C//r1x9huGBBkDcI1KhGW+GPiuuOJKApQ1cXf4bex\\nHtNYEuLjjz/Hv/7r/8I///N/x5079/+0sWQypquSCkmQuOqZEzl8XnEevMjjRs0MFbXCKctREvGi\\nkx/7kAQpRy9sGA0IENDze/w1rFCV9Rqr63Xcqd258vX1Yu8ygROpBLOu6FS2+fWxM/GZrCfZPHDx\\nm9f/xWlMkzEQaLIGw+9CCN9PPFn0XbxSLOk+xacftvA//8e/4F/+y6e4f7tVxpIbAoFcNwHxHaDf\\nj+F513fYkThCog7eCi1g5g1FACHRIMYWxHR2JS8VAxDZBZECQCje300a0JyFRR2lJE3wvPecP5Sb\\nijlTgSxJE3S9bq7rIksymkYzxyNOSYqBP8gpilW1au41hBA87T5F22sjSRO03TZs1eaVvk1rE3W9\\nvvB8Zn1ufb/PExdREFHTarzaFyURRlFeKUmEyH1kJoP1rGtICMklYJthB1b05lU6Btneh9r6/Erb\\nXvW7SwhB4p7N9DpgEI1NyPZdSOb2jbkXSrxbXHc8cdCBKy5f+b8KBGS+y4R2hnTSgIrZVOkQY/hC\\nH5HgALPC0h8klswyyWQ4HB7yQpUsyrhbu1tYIGPqmDla8us1eDJOtN127nUbxsYUdf1oeISD4QEI\\nIeh4HYiCiPt1OidT02rYrmxf+byDOODxkRCabLBzipIIXa/Lky4CwkVpVEnl1yubvGR/ziJO40tL\\nAYi4nTrYuCYKM/B24kkZS/4cuJEJTa8Xw/ev77DdtIcueQlJlCCJEmRBpn+LMncCvlYQAXLYmBog\\nnYdU9BGrPUDI+5/Mgigul5wJsyLb5Ove4g28rK+MG7lcqQagnZGmma/kBHGArtfNeQgZioGG0ShM\\nWJM0wSAY5GgJbIg+e3y/tH/BT52fkCR0vw2jgX/a/SdU9Wr+XJD/fLLnJghC7vcDfwA/uQyAdW3a\\n24gQgnE4znVrmDrbst2aMAn59RAFEZvBOYxouGCr5SFZe9C2vnqjfazyIEXSGMH535byOmAQjU1o\\nW19zWdASJRiuO560wyO88H+AIipQZZX+/Vph6ropzQIRYZNb0DBtBDwLAcYYCUcgwuUcx7L337Lx\\nYtF+3haWMckE6AP+q8ErXsyyVRu7dl7MJUmTqbVXFmTYml2Y/KQkxYVzkaMHN80mTMXMve5oeIRv\\nTr/hBTdTMfHVzlc8mSEgCxOLyX8PkzD3voqkQBGnzahH4ShnL8CKeEVG0kVI0gQpUnYQlMaXDNEg\\nb06JZnjTeFLGkj8vbiTlLAhSxNczgwYA6IUXGMZtgNCFIiYxpzh5sYcgCfhDIVfZWkHmMQciQA6a\\nEMlq/GqByBASDankFVaf+OtWpAOQZf8jy/1Zdp/8/RckM9n/VyQFBIR7BTkxpQuwhZu5cWcHLqta\\nlbb7M/uZTDJkUUaQBEhJipSk8GOf75MQAj/xMQpHcENKPyMg0CQNokg7KgSEb5u7Hsj8jfw1Ggdj\\neMllVctW7EIFJEEQKBdfQG4OiCnYzFOuEQTqsRQnMf2+EgFxEkOOhjCuaYgTACS9Acm8emURWO57\\nKwgCDUAn/wdp0J372kmQ2EXqXUCq3ILwDge0S6w/rjueXPgnOPepw3uURvBiD+NwjGEwxCigtNUg\\nCRAlEQghEAXxSuwAgYiokf25XZkiyFChwEKAIQhmiyFcN7Vs6VgzJ17M3PfrWZnJ185SMJNECaqk\\n8of7MAkhSzJfg6MkwjAY8oQHADRJQ1Wr8mLhVLwjBLqsw41cxGmMlKTUC0ygCpMJSRAmIXp+D0Ec\\nYODTQpoiKSCEwNZs2i1IE+5FxuLK5J9sjInSKJfMyKJcWOxisUSVVEphfn2tgiRAlEbQZX3m5818\\n19jcD7tGo2AEMw1QW7KAugzeNJ6UseTPixuZYkqSACyxyC0NIUFEIoipCFmSYSkWNEWDLumFgYbd\\nLKyLIwmX3ZzJjk724ZkQgl4vRXjFpphIVFTSXVRr05WGm9YCXbYrM/nabXMbT3tPOV0giALcrtzG\\nIBhAEiQ0jSYI6ENCy2zBUIx8AjOjwhiZUY4jzQwpWSWvZbTQMlp4OXwJAQIMmfrhjMIR/tL6y8KW\\ndhZe5FEBAFCqmqVcigBMfa6Z442SCONonEvYFFGhQfb19zRr+Mney41cjMIRT9TE1ATC6xniBABB\\nuj4p2nm+A2maIjz/G9IVjdv49uGg0OugxJ8b1x1PnHgEN3YhiAKaWhO2asNUzbkdVUmQoMkaNEnj\\nD52apM2cE0zTlMaSK87+KDCwp3yMWn364e+m3RvLdmXYa4HLLsiOtUNNI19vc7d2F1FKH9QbOp17\\nIaDJBlvzFyVYDxoPcDw65gUoURCxa+9CFmW86L/AbmUXu5VdnDvnGAQDTlmOkgifbH6ykrxykiY5\\ncRpJlOhszOu4wa7B5M9JmuDcOeeJkABa2NuubEOTNQgQeJxh14q919AfYhyNEacx6nodZjwE4uvr\\n+F9XPCljyZ8PN5JyFscEFxfXV1L72fk/sDSd3rSgFQjWstVkjQeaeXSB7Jc6S1fLJjxBQNDrJTP3\\nsSzqdRG6fvkAW4RlP9Zlql+r7G/W6+dRsQDkON2L3itMQvza+RUpUpCUIEWKDf1SZlmVVGxamyvT\\nO8IkxMAf8GON0xijYJTzvrlTvYPj0TFOnJPXhy2gZbbwl82/0GogZjwcvD4lxmVmv9NlPW/wtmBx\\nZLSBnOoZoTKf7IGJEAIv9tDzqChCnMZUYlNUaUcqDbHnvlrp2syDfvu/Q1SWp7ysgux3IXFPEZ7/\\n7Y33qW79E2Rr5433U+KPgeuOJ//R//8RpC5iQoenWXJiyAZM1YSpmDmD4HmQRRma9DrBySQ8YYB3\\nFkuyeJPHhWVjTdH7Fc14ZBXMsr8XIPB4Mrn9JFKS4ln3GYI44J32HWuHby8KIjelXAVREuF4dMyp\\nvgQEYRzmOj479g6iJMLP7Z8B0FhSUSv4YvcLaJI2NylhCQfzLWN+OpZqLU03Z8I5TPWMXcu6XkdV\\nu6RSs24Sm8EhINxiQIAAIfHxILy+mbG3FU/KWPLHx43s0MgyVZG5DmWaM/8Av/Z/wqa5iYbeQEWt\\n8JZlitfmVIQgTVNI0utE5XULOYvszRInMaX5TPI1PRvAm8sAui6BYVyPUhRbJOclIEWY/D0PHHMC\\nXq5b9Xr7RapgRftjUs7P+8/R83q0bS8qsFUblmqhaTRXUj5h10CXdQi6gGE4hB/5OBweUlqZWoMk\\nSrhTuwNTMVE36tC6Gg5HlFbS83v4pf0L/rr519nUEYF+L3p+j5+7JEioatW8J8ESX2lTNiFChBM5\\n/N96Xo9XE0fBiHOq2blJosTpdZBkuKJ+LVKborH51pIZIF9li4eLPW+WQTx6WQahEhzXGU+O3Rd4\\nNfwdNb0GQzG4ZC4BQZAGECIaV4IkgCZpUEQFsjQ7DMdpjDiNc/c6AFjxHmQslxTNwzKxJItVVbEm\\nf573u6KfJ/eZ/XlWV4aA5NbRebFMFETcrt7Gb93fMApGSNIEsiCjZVFD7XkeQvMSDlmUsV/bx9Hw\\nCGEa4nhIk5stawuKpOBW9Raar5W8TMXEjxc/AqAUxR8vfsSXO19ClWcnUYQQPoPDnlcMxQAE5OPJ\\nnO0JCGyVCsycO+dISQoBAtpuG32vD03WMA7GnJLGzlESJCgiVQRNSYphmKBPJNSFN0+w32Y8KWPJ\\nHx83MqEBAMsSEYZvfgMd+8+hSRr6fh+SQNv7TMYxTEJaZSMJ/MSHKqnU8FCmC5wiKZAEid/YSZrk\\n5hxyD/CpCMTXo2kehgRxTCBNsBEWBoEFv78OzOsYTQ6XLpV0CcX71RUdSZrwVnnbbWO/to+m2Zzd\\nJcHiRE2WZARpgOfd5zw4eImHTzY+yVVVH2w8gCAIOBhSc7aO18E/zv+BT7Y+KQyAKUnRDy4pbaIg\\noqE3pl5XhKLPSZd1SIKEC/cCw2AIJ3QQJzFEkSrwcLUbEK7wpss6vNhDx+vAIxIeLPXu8yHZ+zMD\\n6DIDxMsm3iR25irQrALmdfA2E7ESNwvXFU9O/N/5TARbmxRJgR/5iJMYTurAiRyokgpbs1FRK5AI\\nnedgf9isBesaTEIkCmTy5skMQGNJFKWQZWHpJGPZJOQ6kV0nUpJSxU8sF08mX5fdnwABqZTCVEw4\\ngQNJkjAKR9ir7mG3sjv12sljmQdVUrFj7+DfD/+dd2p6fg9f7X6VE7PZtXchCAJ+vPiRqqqFDr45\\n+QZf7X4108vIj/3cumvIxtw5rKmZzkxMMWQDt+xbOBoeoef1MApHCOKAyj4bTaiSyvfNvMwqagXD\\nYIiO24EbuziBiDre/P6R7bsrP5esSvkqY8kfFzc2odE0AZomIAiuvogmogdBjqDKKqIkQs/vwU98\\nyCLtwFTUCiRBgp/4vOIdJiEGwQC6rMOQDT5EqMkadFmn7rzCZWWN/wmvV8PccWOYq82CvlNM8lcn\\nF9vJtvi8JCQLJnfphA5uV2/j9/7vSEmKul7HOBpjS9wq3G7W+0xiHI7RdtuwVAtu5EIWZezZe0iR\\nTvHZHzYfQhIkvBpQ+lbf7+PHix/x6danU+fb83tISMJN3Rp6I1eZzV6vRQu6H/twQocGniiAG9Mh\\nVJaA9f0+DNlAXa/DVm3UjTrcyEXf73OXa0DGSFBhv4E6TazW4EOFlUSF9L6lHnCWvH3j0dGKRzcf\\nyfgYYuOja91niZuL64gn46SLUdqBIimISQwndGBVLOiyjqpahSAIcCIHbuQiTEJ03A46bge6rMPW\\nbNgqVc/SZR22amOnsgNR+H/svXmYXGWZNn6f/VSdWrqqu6uXJJ2VkIUYiJCAIIv6qSMM0XFlnFH4\\nHFxAf8qg4zjzQ4EZl5lB51OQZeTyE0VG0HFGFhGjoCCKYCAbhKSTTjqd9Fr7cvbl++Pt96061dVb\\nEh0m9nNdfUGqTp39fZ/3eZ77uW8elktIaSzPIll5Ozr7yczDKroNNTp7Vv+/wxqDCDovCpzA5kse\\nfKgJfLbekWar2TUYroGeWA9sz4bu6NAkDTWnBo7jZtQ6m81s18ZodRRtahvr0+mKdcHySGWl0Uf0\\nxnsh8iL2jO8hkGHHYEFNM1mM5VosmQeQ5FaIlbMpcGkOYELn6Nmo2TWUrBJMx4TpkrUO9c95Iw9N\\n1tAT60FcjiOpJmF6JoYrwyiZJVY5rHIKDEFCxNNbHmdO90uKwxc1ROcZGM83AHKrC77kVLX/kT00\\n1Hw/QD7vwXHmfwmSxCGdFqC7NezL7sNIdQRFs8gyKZloBj3xHiiCgrgShx/4zKk4vhOiwaXBDc2m\\nUNyzKqqswa9U8k6q1kHOOYYRp59ViGh16YSMa/5na7ax5u9afQ/Mr/F/Lub6LopGMUSj6Qc+qnaV\\nOZ72SHuoJ2U+VrNrmNAn2CLb9my0RdqYs1AEZYquAACMVEYwUh1h/47LcaxIrWDnRMv21GJKDIqg\\nTIHpzXRvbM9mDf5e4IVoqen3lKlG4iRIgkQCbEmB6ZjQXR0lq8QYz6JSFGk1iVdLHOLH8UjKAbDL\\n4+FNvge0T+D31SC5xKuhAyePGvREtA4W7NS0E/UnsYSHgdJBDBYHiaL85DyVUBJYHF8MSZAQESPw\\n4UN3dNScGgzHqDdmc2RcJpQENEkDx3EESjtZyaGfnWzdnGPGQQwYu1jfqMRLJzSOpwsi2OfTfT/Z\\nG9Lqu1ZV4ONmGsUkHb5TheM5oc8KRoHtMybHjlsXxvZsjFRGWKXc9mxIvMSq/IqotIRGF40iBooD\\nzCfIgozTO05nPTyu54YZzQTCaBYKYGZZ0rm+C9M1SWDt2wj8INRzZLkWak6N0Y6rggpN1pBQEihb\\nZZStMnRHZ+93TI6hPdKOqCjjTAFIHAfxV9Hz8GvThAdAFmUk5MQJBZMz2bLAROYksnwu+JJXjv2P\\nDmgA4oSKRW9emTVF4dDWJjDl5CAIcKxyDAMF0pNRskoIAqLK3pfsQ1JJsjIrrdJQZWDbt9mkKHAC\\nIlIEETHCAhka8Di6Csc6eRR/R/WDGDB2skUkx3F1/ZwGHZ3GSshcqyAnatO9UidyPMu1UDSLIcdG\\nnX/eyDMFZgBYklgybal+OqtapDJDTRAE9Gg9JCvaEIxExEjLht7R6iiGK8Ps3zE5hpWplSzrR00V\\n1ZAuwUxBH6MOdww4vtPSqfM8j4hAmo1FXiS6CZPvo+mY8AIPgiCgahF2NIEXEJfjSKgJqIIKxzWw\\nhvOQ5uc+fsqchP5Agd5wX+h5q6IKiZeOm2wiCAJW1XR8h4wz38YZIo8+6eRVOU+Gds6CnXp2MvxJ\\nVs/iQO4AsnqWaGIFHniOR2+8F53RTmiyhrgch+mabLzSyo3pmoylMSbHEFfibL6gn8l2Ozzn5IEr\\nBqv78bv8E5AEiVFIU/gbpQCmWjqtKPXnC8Waj82HwWyu5vkeKnZlClukJmswHAOj1VH2eUbLMAbK\\nuZrpmhitjoaSnt2xblY9p6ZKKtJqempQYxYxUAgHNavbVxNiocm+GfqO0GBm1msOPBiuAdM1CZSx\\nxX2l+4tKUSiCgrJVZr7PdE1UrAoiUgSWaxHEwiSrKH1HTc+EgACr4aBbnDu8Ph9weM4wYDcQJnAc\\nx4L42Ww6X+P5HmpODVW7iqpdRcWqoGpX8abUYrwqcWIyA4224EteOfY/Uoem0TiOg6pykCQOvg94\\nM8A4n3jiMWzb9l9485svZM6H7iOhJNAV60IQEAVdyiCSN/IwPUJ3azgGolIU7VGCKxV4IVSJ8UE0\\nTKiyMJ10vMCD7wiAf/Kc0MHSPjwx9BhGaiMomSUYjkHK0BwHD3UMtuXWK0qUp58DN2cmlPnadAv0\\nE3FAVatKgswGIoGkmkRciZNmSDEC3dWZAzEcAwklMedjVqwKcnqO/VsURPRoPSz75Qc+Y6dxfRc8\\nx0+BWMXkGHiOD+kaFM0iacafdPiKOLXC03yOjk8WNyWrhLJVhumacAM3NGnzPI+IGEFSTRIiCyXG\\nFiMCJzBYpOM70B0deSMPjiNinAk5gVQ0hagYhe7qCMBhyLVR9DyovICZ+oO3/XY7vvvks+g+6zwI\\ngsTujQ+fZfio/gKFbdJn3/znB35d78kj2cKKVUHZJpSgZauMrJ7FuD6O0cooukUJ3crJw1ieDO2c\\nBTv1bD7+5JlnnsL69csRjwshfxKVouiOdzOhZgAwPZPo0NgVyIIM0zURlaJYlFiEqESSEaqkIqEk\\noEoEYlRzaiwj7gUeBF4gGX9PhoiTR5U+YhxBf/lFBm2jiQSqb2K4BmpOjVG/097SICCZ/UYI2Mm0\\nk12VAci8XLWroflUFVTEFEIGJAsyPN9jC3nDNQj0fI7VAhoQ0XMXeAE98R5EpAgLCGlQ4vqkP7c5\\nQUaTXjRJ5wUecnoOiqSA53jSvD95rjMZXY9UrArzJY7nhK6dJqHichztURKcRKQIRIGgTPzAx3ht\\nHGWrDNuzkTfzCBAgoSSQ0TJIqESUk653bM/FAbOKGniIAGIzrDOe3LkHVncfRvkIVDnK7kljQs/2\\nbNKrPElq0+rP9V1UrSpyeg4j1REMlgbRn+/Hvtw+HCkfYQiK8do4ckYOq7QUlkbT057XfG3Bl7xy\\n7H98habZCAVnCd/5zn2IxeLwPBeXXvoneMMbXotDhw5AlmWMjIwgnZ7+hR6vjeNg/iCqdhUFswDD\\nMQjLVWIJOqIdEDgBnRphRaOLRt3R2SRmeRZs12ZijYqgIM51QfbaTtp17in8Fi+WfxeirgQmF/sK\\nWehS+FVSTTKnQx0Cz/FMubpRR+d4y7y/j6qMH/ik6bCJZ78z2jmlAsOonCfvRTqSxuLE4lmPkTfy\\nGKuOsX8rooK+ZF8YkxwEKFmlUKk/oSRaCmEOlYZwMH8Qru+ibJWhyRrWda5DVIoSXYMW94PSQ1ft\\nKsl+0cCzYVtKyRmTYohKUTbBNxoVgyuaRdScGnJ6DqZLesLiShzpSBpLk0uhiApKZonBIUpmCdFJ\\nhzJWPASuPIFfbvsp4lIErgX8yaVvxUVveicOHh5pOX5oFSr0Hk7C2gReYIsjWtVsDLDpnxd4qFgV\\nFtRQ8VRqp8sK1iknbxEnta2GtIB7XrBZzHUD3HzzPyEWSyAWi+Oyyy7FHXd8Hfff/20cOnQAv/zl\\nL3HhhRdO+/uSWWIMWjkjh4pVAcdx6NK60B3rhsAJ6Ih2IKNl4PouSlYJRbPI5hrDNZh/cTzS79mn\\nrkFamH1um6uNWAcx5hwiyQjfryvBoy7SSCGlsiCD53lWyaFJFFVUp1BLHy90rVX1AJjahzlfq9pV\\n1Ow6WxxNZDbP437g40D+AAs8olIUK1IrZr2Wql3FYHEwFMwsb1s+JWDJ6blQpaZNbQuRBAD1XtEd\\nozvgei4sz4LIi3hV5lWIKXX4YaPRYEd3dFTtKoEnT4p0NlpjEEPp/pvvrR/4qFgVHC0fRckqYaw6\\nBt3RQ+/ryvRKVtWiAWBez7P1RcksIXBr+NE930BKjSIuRnDpn27F7Xfcje/84Kc4eHhkyvixXAs5\\nIxeCAgJ1f1uySiiZZIzQsaI7euid8X0fpkeQDbQq1fg+vbZtMS5OL53xWc7HFnzJK8dOuYAGAEZH\\nR9HTQxhKMpkMxsbGsHnzZjz33HMAgK9//eu45pprZtyH4zkYKAxgrEYGcsEowPZsxJU4liaXsgm8\\nS+tiCr+WZ0F3dLIYm5xrbM+G7dpw3QDtWHXSrvFHR74FByZEri7kSRWEfZAFou/7jDM+paaQjqTZ\\nX0wmrBw0wGkV6DTq6MwU6JzsXhmA3P8JfSI0samiSgLKac6lYBQY6xgALGtbFuLTb7asnsVEbSK0\\n/75kX8v9B0GAohnu30kqrfUJjpaPYvvwdubY4kocr+17LQvCOI5jMJOaXWOMNc19MTSI0WQNmqRN\\nEW1tNNd3MVoZheEaRMG5QasmKkXZvaMLDdMllM22R7QRRF6E7ugYLg8jX8hj6+VbgWEg0z638WO7\\npCpUs2sseHGDer8Orcp4vkf0HnzieMtWmUECaPWQBtb0/UMAyIGL85WTh6n+fWrnLNipZYsWLcLw\\nMIGTDg0N4fOf/zzuvPNOAMBVV12Fb37zmzP+3g98DJWGMFQegumYyBkkSUOTJ3E5DoET0BXrYn0V\\nlMSjZJYYmYjt2qg5NTiuj7XR15y063s2/xg0VWXjlI5Puhh2Aof4sMkESCMjG/0DwPwH1SdhvaSS\\nGtKriHkAACAASURBVNLSmamy8PuAmPmBj5IZTkgJvIA2ta0lmQlAKi0HCweZb8tomRn7acpWGUdK\\nR9j2Ii9ieWp5y6QXAEzUCDsltZRKEo/NDfwFo4Bnh59lflARFGxZvAVJNcnui+/70F0dNZv4E1r5\\naTQaxGgS6YWhCJNWFgQBjpWPYUKfgB/4qNk1lqRNRojPa1PaEJEiSEfSzCd6voeCWYDES6yyw3M8\\n3nLpW5B9OQtYcxs/VauKo5WjOFo+yiqUFasC13ehyVoI0kzfF9pjarjkj1JQR6Uo4nKcBIGihpgc\\nQ5sgY5Nw8voxF3zJK8dOyYBmbGwM3d2EG7yzsxPj4+O4/fbbce211wIAzjnnHDz77LNz2lfBKKA/\\n389Kt7SPoyfeg26tm0GeumPdLBPjBz5r4LY8q441NpLg/RPPMuftMeyu/ApBECCpJJFQEiSzoedQ\\ntIpTaIobs+FeMCkcykuhACcVSYUm37kEOiIvtmQNO9FgRnd05PRcKOMfV+LTVjgabbA4iJJFhMIE\\nTsDq9tUtlZcnahOhnpmIFEFfsm9W6su8kWeOnQOHNrUttH+6zdHyUQwUBgAAbREiVLa+cz0szwoF\\nMc2wCo7jEBWjLIhphK1MZ6ZrYrQyCsd3YLomimYRiqAwQTiO41hGj+LHNUlj1OT0no5URghELZ/H\\n5W+4HMi1GD88sGnzJvz8iZ+HKi+NYqQ0qGEBduBDFVX4vs9gNFW7SrK7Aun5EnmRNCQ34PgplDMq\\nRgmeunwAknPiitR8pBNq95YT3s+C/XHY4sWLcewYYUY6cuQIhoeHce655wIANE3D6OgoYrHZFzS6\\no6M/18+aqnN6DpZnoT3ajkXxRawa0hPrQVJNAphsXrerKJpFsgCenP5i3iIoOPFFVMEZx0uV35Br\\nkTV0aV2IylF4ngfbt4n+2mQ1mIpDsj7SSUiaH/ikz0aQIPMkaGkMFJoDHdpr2ljNkXm5pR7PiVZl\\nXN8Nkf0AJCBLqslZ9z1Rmwj106xIrWhJClMySxgqD7FARBIkLG9bPmMfZxAEGK4Mk0TO5O86tc4p\\nCTjTNZGtZbFnYg9Be4hEoHVj10YIvMCSYq7vsmQRtcYghlZiZoMHmq6JweIgdIcwZ1bsCniORyaa\\nQVJNQnd09iyDIEDNqSGhJpBUktDtOlFAxa6wKvtlb74M43uI8GZo/MhAJB3BL37zC9i8zQJ4ug8K\\nJbP9yeAjIOsZGhhbrsUqMBExQhAMcozo0UkaYkqMXS/9PiqSvlshvxucVZh6A+ZpC77klWWnZEAz\\nPj6Ori6STeno6MDExATy+Tx6enpg22Rw7NmzB+vXr5/T/jzfw2BpEEfLR4mQ1CSsRxVULGtbxia5\\npJpEZ7QzlIHyfI9BBlxHgGCdOOxsb+W3yDt1nG6AAD3xHqxsW4mYHEPBLKBgFJA1ssjq2RBkC0C9\\nijMZ6NAgh/ZltEfa0R5pDzF8UWPZsoBMmAInQBREprdAA53jdUR0UmPH4zi0R9pbOpJW5vke9uf2\\nhxhYVqRWhLYZq44hb+TZvzVZw+LE4pbn3Dw8/MBHwSiwDBgHDqlIit2nollk5ffx2jhTizZdkwVY\\nIi9OcTxRKQpNmqzECFMDxelY5OhCx/ZsVKwKSlYJKTWFhJogTZvRdsTkGAyH4ODLZpkFZBExAmmy\\nedPxHBwqHoLACSSgec3lgAukM2ns3bcX47lxbDp7ExyH3NfHHnsMq1evZgFL4x+tVlasCnv3LdcC\\nOECTNKiSyhwN7bPhQRqe29Q2pqnQnGX09DGk9aMtn/t8bEHdecHmY0uWLMHRo+S9GxwcxJIlS7Bu\\n3Tq8/DJReL/nnnvwvve9b877G6mM4FDxEEkuTELROHBYnFzMtKk0WUO31h2a9zzfY77HcXgk/EUn\\nfG0H9RdQdMcJ3Aw+fN9HXIkzeLUf+HB9F7ZvsyoNHbc+fEbiYTkWC3Ac34HruxB4IsBIqzPNiRk2\\n/ifnOpEXoYoqkz+glZ1WCam5mOmSvqXGOZwueudqA4UBBlOTBAmnpU8LXUfBKOBouT4nyYKMFakV\\nU86ZzoshcdEgwEh1JASv7Yp1MXFvCtHlwKFslbE3uxemS6iVXd/F6e2nIyJFpiTFIlIEUTHKgpiZ\\nKvvUgiBAVs9irDoGx3dguRbKdhkxKYbeRC9kQUZMjiGhJKA7OiZqE6RaOFk5okQC1K+NVkcZBG7r\\nG7dibHgMUIEHHnwAckLGR677CEZGCTPoX/3VX+H8889n59FINw3UCQkc3yFoEU6AJEjIxDLIRDOI\\nSBH2HtEkrCIqLNkbESNTWfP0MQiFl2a8J3OxBV/yyrL/sTo0M1moQjE5eaTTaWzduhXf//73ARAn\\n9M///M9z2p/AC1iRWoGMlsH+3H7wHI+4HEfRLOLl3MvojHZiUXwRSiZp5E5H0uiIdLDselwhWFXb\\ndVD0XPjuCdx2wUZfuhsok4wGbcwcq45htDKKDq0Dq1KrcHrH6VjLrQUHjmR5jCzTPcgZhFJU4qXQ\\nxEF7RfJGHvuCfQgQkEWm0oaUmmL9OFxAOR4BFwTfyxrAJycVOuk0QodmCnT8wEdWz4Ymd5EX0al1\\nztr82Pys+pJ9OFg4CIDgmidqE+jUOgGQxUQjfjkmx7A4sTikAzOT8RyPNrUNBbPAel1oEGG4BEtM\\ng1hN0pBW0+jP97P7/OLEi1jTsYZl2mJyjDUF03tILSTM2iRMarkWCmaBLCY8C3k9D9u30RntREyJ\\nQeRFZLQMu3cRKQLHCzOlWZ6FglVARIxgrDrG+mos1wIUAArgSwQaFkvE8Ib/9QY8+uijAAc88B8P\\n4JOf+uQUbQjXc1nwRJuMOY5DRI7Ury+Y1G2SVCSVJNrUNgahoKJujcEMBw5u4CLnAzKvIOaH2dXm\\nY3ykc6GBc8HmZc1jkuM4XHnllfjbv/1bAPMPaHriPUhH0myOiskxFM0iBouDyCt59CX7ULNrOGgf\\nRFJNolvrhiIqBDocIfOw7TrIFxzAO36xZgc1dMQS4C0XJaMEn/Ph86SR/OXcy4iUIliSWIJOrZM0\\nikdE1tTOyGYmk2ExOcYgpTTQcTwCVbN9GxW7Uiek4XgSqPASvAZ1edqLx3M8BF4IQddYoDNZ1aEV\\noemMJlOo0d7S+bJfLkksQX++H57vwfEcDFeGsSS5BADphWlktlREBcvbljNSodk0YDiOQ3esGyOV\\nEYLkAIeckWOwPJp4qjk1eIGHLq0Lu8d3s6rYrvFdWNuxFjE5xogEYnKMVcjmmlS0PRtHy0dJ0jVw\\nUbWrMFwDXVoXOrVOhkSgCJSoFEVXrAuHCofYPqpWFQP6AEReRMEoYLw2jqpTJSQSPTbxJwAGy4Po\\nkDtw/gXn4wc/+AEA4FdP/wrnnncuW4fIgoyEkoDES+wdCBDUfRNXT6xSkh5VJIQalJFWERRCXuFP\\npWfmwMGWEpDlNgh2ccr3c7UFX/LKs1OyQpPNZtHZSRaw6XQauRxhsHrkkUdw2WWXAQB6enpw5MgR\\niOL8ggtK8Xy4eBh+4DNBTsdzsLRtKZIKgQoIPGmea6Zl/Na37kF39+k488yz531dAe8gUIsIJps2\\nS2YJw5Vh5I18qEk8CAIk1SRWplaiS+sKNXHS78tWGXkjj5xBgpy8mQ+V5ZsDHVrR4UAYxujEMVv1\\npBm6RgOdRhIC2vzfOPlEpAg6oh3HXekZrY5ivDbOzmFlaiWKVrj6k1AS6In1zBsiRyfSglFg98hw\\nDNYcaXkWZEGGJmnwAx95I88WL4qgoC3Shi29W6DJ2pQgptla0RqXbQLZAgDd1jFWG4PIiWiLtBFN\\nJCmCzmgnyyTSCtGEPgHHdVC0CASj6lSZbkHOyLEFQgopvOH8N5B71JbAs889iwABnvjFE7jmQ9cA\\nHpDpyGD777bDDVzoLumFoZnMRpgiDXIsz4LAC3WnoyTRoXUwx12xKqyvh91ncIhIEXiBh6HSEAIE\\neOTBH+HCRQm8et1p83pmAMDLSSg954GbBje/YAvWypYuXYojR4h47qFDh7Bs2TIcO3YMfX198H0y\\nFx8+fBhLl86/0TirZ3Ewf5AtvopmkSjVT1I8A/UqdUbLhCrmzz33O+TzHjZufPW8j+vAQJkbQsD5\\nTHuEsrDRjD6FK8uCjEXxRcjEMiECGTpvUbiT67uMZr0xcdIMd3Y8B6ZjwvEdFuQAk/ptswQcNNih\\ngU5EjECVVEZaIAkSanYtrNXCi0iqyWn7ZWazklli4skAsDixGF7gYaRCKgxBEEARFSxrWwaBF+ZE\\no9zoEyn8jJ6z67uMQdJwDAQgEHEv8FCza9ib3cu2iUpRbF60mb0b8yX1yRt5xspGfZrACeiJ9SAq\\nRyEJElJqivkGx3NQNIs4WjmKgl7AscoxZPUsCkYBbkD8t+d77Dkm1SS+8P9/Afk8QUT80z//E9rb\\n21EoFPCp6z4FmABM4NH/ehRLFy8lvWK+zWQGyM0CC4Qtz2JVN6qNk5AT6I51M5gmhUI3G31nqzbZ\\n984XtkPOv4RXnzF/X8LJSagLvuQVZ6dkQJPP59HeTlhDUqkUG0yu62Lx4sUYGyOsVj/+8Y/xJ3/y\\nJ8d1DNM10Z/rZ9SKlmshb+RZL4bEkwlAEiRktAySShL9/f0486wzwXMC7rzzu3j96+d+7J/98sdQ\\n2ixc8JoLQoEGQLIjh8uHka1lSZlfkJiToCKPdOHOsMxNi2gKX8oZOWR1AlVrrGQ0N+FNfggv8Fh5\\nt01tI+r0ShyKMLNjopM5bX7lwbOKTjqSRke0Y06l8uksCAIcyB+A4Rrs2jqiHey+JNXknIKZGfHG\\njomR6ggKJslIcSDUyAqvIKHWsdARKQLDMTBUHmIZp6gUxcbujdM2jTZfC0AyaQWjAMd3wHEcowiN\\nyTFWVo/JMcTkGNNxodm8slVmASt1ujTgK5klFK0i02JYLC/GeZvPA3wgEU+g/+V+UunxgNPWn4Zs\\nJQsowBe/8kVs3rx5CnSM3jOe40kAo5LSPwcu5GhooNUYbDfes7gcR8mqLyYGjwzi3e94N6QSj2//\\nn7/Bmy6ee1LgJ088h/TyC3HxJa+f828WbMEAYPny5Th8+DAAYGBgAMuXLwcAvPnNb8Zjjz0GALj5\\n5ptxww03HNf+Xd/FocIh1q/heA5yRg4BAvQl+xARSWZc4AVktAw6oh2oVWs4a9NZGB0Zm78v+dWP\\nsfPIr3DlX7x/ii9xfAej1VGUzBKrjFCKf4mX0BvvRUbL1OHGLRbRAiewao3lWYzquRlK1AxTpQER\\nMLPIZivjOZ7ojtg1IqcgEjmFuBJHR6QDqqQed0ADEKKXgkF8fd7IM5KWAASqTYOZ6Yxez3QJLMdz\\ncCB/gCUafd9He7SdPQP6G0VUEPgB+gv9pB+JFyALMs7sPhNt6tzh7I7n4FjlGEuM0WAmqSRZoz9N\\nMFbsCoOC15waQyFQ8wMfI5URBCDBqu7oLKG3OLEYN/zNDcgOZQET+MlDP8EZK89AUkli69u24vFf\\nPQ4owNUfvRrvu/J9oepLMxlETI4xGJnru+zcgfr7m1ASU4Jieo8oOUSAANVqFZdccgmyQ2P49lfn\\n70uGykl8/BN/PeffLNgfxk7JgKZQKDBa2WQyiWKxvjD/1Kc+hVtuuQUA8K53vQv333//CR2LUjzT\\nhVrNJk3P3bFudEQ72HYCBLx363vx/DPPAwDWrF2D3/x6OzxPhm1P/wh2792OL3/t89j2i0fQu6gX\\nP/npT5CIJYAAbAKlj9B0TRwqHsKx8jGilSLUKZk1WcOKthUheFWrhST9nGbWKRMY7cepOfUsfKM1\\nV3Q0WQsFOXSB34gfLlpF1KwwjWY6koYma9NWdJqzgzOZ5VrYl91Hmt1dHW1KG7piXUhFUuiOtca9\\nzrZfyvpCVb51W8dgqU7VKQkS+hJ90BTSDxOVoqzRPW/k8dLES+weKKKCjV0bWwp1Nt9byvYCEOeT\\nrWVRtstQeIVg3+Ez0b5mMx0Thmuw64tJBOJiOAYMz8Cx8jEmwrqibQUWSYuwtI9km+OpOF54+QWU\\nTXL82++4HQ/c/wAA4JKLL8E/3PwPoWPRPhga2Da/X5SBrWyWGSSENq/Sv7gchyiIyOpZhk93XAdX\\n/eVVePHJF4EAWLNmDbb/6ifg7VH4xgSms517h/CPX/kWHn38OSxduhS7d++eUwP3gi0YtRUrVuDQ\\nIQKvOXDgAFauXAkA+N73vocrrrgCALBy5Ur09/efECEKpXimsFvTJYxoSSWJ7lg3G0uSIOGLf/9F\\n3PuNewEA8UQcu3a+jHg8M6MvOTi0F/9wy99j25OPQBAF/PsD/45Vy1cxLRmgPj97voex2hhGq6MI\\ngoBVQehfb7wX3bFuVmGYbl5mQQ8nsODGdE3CmjXZHzKlv6FFoAMOBOrMgSXSGqtApmMy30QtKpO+\\nROrPJF4ivR4NZASKoMxa1QiCAF7goT/Xj6Plo8gbeaiiisXxxYgpMSxrWzZlnpstgKH7NVyDUSwb\\ntoFDxUOMZljgBfQl+hBXSJO7JmusJ8Z0TewY3cGqOgIvYGPXRqQiqRmvBSB9niOVESK26RjI6llS\\noZ9kvyxbZVL9auGXGjV6AII40B3CsOYHPmzPZv2gvfFeXLzsYmzasIkkBHjg18//GqnuFMpWGY/+\\n9FHc+LkbAQC9i3rxg+//IHSvaE9vQkkgoSSmBKS2ZyOn5wgpAtVFQt0HUZINKh1QtspsjXLdddfh\\n3rvvBXwyfva+8BTao+aMvuTQcBl/87mv4tHHn4OiKNixYwdOP/30We/3gv3h7JQMaIrFIlIpMrAT\\niQRKpTrMaM+ePdiwYQMAQJZljI6Osm2P1xopngEyUVEl4kXxRVBFFbfeeivuuusuwAZES8Szv34W\\nZ555JgCidWCaATwvQBAAHAdwfIBANDE4MoCLLrmIXcP73vc+fP7znwdA+NZpUEIndw4cLM/CYHEQ\\nR8pHyOccIHEkKIjJMaxKr2KMXo245lZVm8aqDgA2AU7oE6yS01jebzYa6NDekza1DXEpDh8+Y0qh\\ntMHpSHpaXHSj4+PAQRQIK1ZzoNNofuBj99huHCrWsb5ndJ6BVe11+uy5LEAot3/NrhFKSN9nJfqi\\nWSTCc3YNqqiiO97NSBUYDrzhGHkjjxfHX2TPa7qghjpy3dExVh2D4RqMXYhVtCZ1HnieqJC3gms4\\nnoOyWQbPk+1pU37FItCSslXG4dJh9i6t7VyL8fw4LrzoQkACIrEIHn30UfAg78DAwADrFxAlEdt+\\nvA19mT4GQZwpC0qDwapVhe7qTOeB3oekkmREFJRQgdpdX78Ld37hTiAARFHEb5/5LTZtIurMvlOF\\nVx1G4JkIfBccL4ITVAixXoxlK1i/fj0KBZJdveaaa/D1r3991me+YAtGbeXKlRgYIIyF/f39WLWK\\nzB+GYaCnp4fNzU899RQuuOCCEzpWI8Uzdc01u4aqU0V3rBtxOY6fP/5zXP/X1wMugApwzzfuwV/+\\n5V8CmN6XOFwVWWMMb3vn2xiZwcaNG3HPPfdAEAR4vsc0ZWhmnvqVsdoYhivDddpmXoYiKdAkDUsS\\nS7AosYiJfnLgWAKn+bqa4WpBQOh2G4OcVj0Pjfugf7Q5nEJnaa8O9UUxOTZj72UjUkHiJUSkCCJi\\nhNHaU22WxqBpoDCAnaM72aK4L9mHTT2b6tXphsb06YwGMTW7xnRiKM0ylXyY0CdIv5RCelaXpZZB\\nFdUpfTE1u4YXRl9g8yjP8djYvRHpSHrKMWtODVk9i/5cP0aroySpNAkTFnkRmqSx6gjtw2l17pZr\\nMahXKpJCV7QLuqMjKkfh+z4OFA6wZ7A0SZJiWy/fiuGRYUAA7n/gfixZvIT0YlkWLr30UtRqJBC9\\n+667cdG5FzFfMlvvLIWWlU1ClEGfC+3RysQyiEpRRphDv//xIz/G+9/zflC5pW9961t4//vfD2Bm\\nX+JBwZYtW/DCCy8AAM477zw89dRTEISTJyewYCdmp2RAUyqV0NZGyq/xeBzlcpjq9eyzz8b27dsB\\nAHfccQc+/OEPn5TjNlI8A3VxqoF9A/jEBz/BBtB1f30dPnntJ9EZ7YQkSLNibr/93W/jyquvBCQA\\nHHD//ffjNa8hOgQ0YBC5+mTn+ZO6BZ6NwdIgjhSPhJSdRV5EVIpidXo1VqZXMt54Vu5tQcUMYEov\\nDkCCqopdYTTINNvTSuUZqItIer4HQSBaAD1aD5a2LWXU0a7vskl+pntDv2ssUdNAh+d4jFZHYbkW\\na1BsU9uQ0TLTUjk3GsUv0wZJyubVSI1ZMkuMoYyKyymiwpoUKaa32QpGAXvG97AMJM/zWNuxFpIg\\nEZYgzwmJbTZSIlftKlRRJSX/AJBFGRktA1VS2YKEOj6BE0JZS4olL5klVrEZLA6iaBZRMArgwCEd\\nTcPQDVzx7isAD4jIEWz76Ta2D1mQcdWfX4UXt78ImMAdt80+foIgIIuyJoVu+pwjYgSyWHdeBaOA\\nslVmC4O9u/biz9/y52z8fOmLX8KnP/3pGY/ZaN/97nfxF3/xF+zfjz/+OC655JI5/37B/rht1apV\\nOHiQ9MDt378fp51Wx9x/6EMfwr/9278BAD7wgQ/g7rvvPinHbKR4BupV2kKhgI9e+VGUi+TzN77x\\njbj9/9yORQmSOJvNlzy/83lsuWgLPMkDBOD666/HlVdeyY7hBz6jUEcAOAFBHviBj4naBI5VjjEY\\nK6URjopRLGtbhpXplVBEhbFnUghqszuhUKlWRDG08bsxyJnOl1AKetu1mQ+MSBFGyUwrBrQaNN29\\nYc37hBeY+ThJkEiQIyjIm3mWjClYBcTlOHrjvViVXoWYMnPFNwgCmK7JKJZpMqxR9NLyLCAgVSUB\\nAnRXJ8iEyWvqjfe2rCTpjo7nR55ngsyma6Iv2QeO41A0iwwqRqm/6fFoMBlX4hA5ET5IkBiTYwT6\\nzQkE3qXWG+1FTmT+jQMRJa3aVcYYSoVjc3oOBbOADo0gVD567UcxdmwMMIAHHngAS5YQUgWBE3DL\\n52/BA995ADCBD7x/buPH9QjrXuPzdH0XBbMAz/NC9N+NchMAMDY6htdueS0KWZLgeue73on7v3f/\\nnCuru3btwqtf/Wq4Lgm8v/zlL+Ov/3oBevZKsVMyoCmXy0gmyWIyFouhUqmEvr/tttvwsY99DACw\\nZcsWPPPMMyft2I0UzwBQrVZx1Qeuwnh2HDCAzWdtxt13382Cg/Zoe6j5vdXjCIIAb33bW/HQgw8B\\nIrBkxRL87Bc/Q1SLsm0aKzSUb5420Tmeg6HSEI6Uj4SCLdrMuCq9Cms71kKTNSbGSffFca0zTjNl\\npDzfQ97IswBnQp9AySzBci1UnSoaddOiUjRUnVBFldyTSAfao+1IKkmW/aML/ZmyePT4w5VhpgHk\\n+2SiT6gJSIKEpJLEae2nTeHkD4KAVGKcGlMfbswKUqNOm+M45pBpVqwR10uZV+j9btRtyepZ7Brb\\nxaCKEi9hbedaRKUoUQxvEoKzXPIcI3KENfInFULKEFOIE2p+DkzkFXWWnwABDhcOM0d0qHCIEUqs\\nSK2AH/io1qp41zvfRa5BVvG7J36HdCTNmG7mOn7o/aRNmI0m8iLDO5uuyZpfhyvDyOk5FhSKroit\\nF23F0BEimHrxxRfj5z/7OcP1z8WCIMBb3/pWPPjggwCAZcuWLUDPFmzOdtppp+HAgQMAgH379mH1\\n6roq+G9+8xuWXIrH4xgdHUU0Gm25n+Ox4cowDhcPsyDh+k9ej+07twM2kGnL4Aff/wESCTLHpCNp\\ndMe6WbJmOtd+880348YbbwQkQEkq+OEjP0Tfsj72PfUNAFiviMCRRbbjOcgaWRwrH2O+hJ6bKIhY\\nmlyKNR1r0B5tZ9UHYGZ/wXP8jCyYtmeHghwapFSsSugaFVFhlMcAGHEAZUSjPXymazINE9u1pw2Y\\n6D0cq5EKucAJbB/pSBqqRJjF1nWsQ1SOTjl3yvZIgxh6Pyg7JkDggxJPAggKj6ICpxTuBxBf0hPv\\nYb1ClL67aBYxXhvH8yPPo2gR1lMOHBYnFiOuxOEHPopmMcT4Rn0XrWJRNs7FycVMriEqRkPPiQpB\\nU9MkDZIg4UD+AApGAVW7ikPFQ6z61q11E1FW38G1116L0ZFRwAf+657/wtnrzkZSTUKTNDzzzDNz\\nHj+tAhmAvFtUx0h3dOQNQnBkeiZ0WwfHcQwZ8p63vQc/2/YzAMCixYuwe9fueSN0br75Znzuc58j\\nz0VVF6BnryA7JQOaSqXCJnlN01CtVkPf53I59PT0ME2Nl156CWvXrj2p51C1q9if24+//ezfYts2\\nkuHWEhr+793/F6f3nR7KtlB64kbhyObHMjIygvVnrEexQPqBrrn2GvzLv/4LU/Glvwnpm4CINEoC\\nUdbVHR1HikdwqHSILXQbqSWXJpfi9PbTkY6mIQsymRz5unOYzmYrtwdBgJHKCMMf5408imaRNetN\\nZ/RaEkqCBTjtkXakI2kSIPj1AKexdD9cGQ7BmTq1Tki8xJrLOY5DRsswJjDXdxmcq5EmstHRyYLM\\nNAxsz2bCkDzHs0Z8gFRtSlYJrucyamxJkKZoqgBEXXpfdh/7TuIl9CX7WBWIOnnHc+oNuhwP27OZ\\nQ2jMPtFrA8CCIoBg8b3Ag+VamNAnmHPL6Tm2KKF6PQEC2IaN11/4esAizflDg0NM0wCY2/jRbZ3B\\nLhtN5EXE5ThUKUyGQPWDKFEBQMRUv/TpL+H79xKq9WQyiV07d6Gvrw/ztZGRkRD07Nprr8Vtt902\\n7/0s2B+frV69Gv39/QCAl19+ObR4CYIAa9aswf79+wEA9957L9773vee1ONbroWDhYO44547cNut\\nk+8sD9zylVtw0ZaLGAENQMZ/Z7QTGS0zpceSmuM42LxlM3bu2AkAOPe8c/Hozx5FxamwPoPGoAYg\\n839SSTISk4pdwUh1BMcqxxi7IU38uL6LjmgHTkufht5EL4EzNdl0GfHZghuAQK0o1NlyLZierNOR\\n9gAAIABJREFUCUVQpu1FpImpAAF48Iz2WRRIsON4DqHcdy1WzXE9FwECjFXHQgv5hJpASklhqDIE\\nPyAw3YScQG+ilxDhcEDgB3ADFyJXZ/FsrOxThERMjrHeIho0SoLErqNgFAhRgF1G1SIUyCIvTql0\\nAyTgOFw6zEgVAKAj2sGqQIqgIK7EEZWiyGhEvyUmxyAKIjRRY/2OrapAtDoYgOiLWS6BBk7oE5io\\nkZ4TStNPk3ynpUkV0/VdXHHFFTh28BjgAD/b9jOcvf7skHDsbOPH8z1WFWw0ChdspfkzUhkJ+RKB\\nE/DD7/4QN336JsADwAFPPP4ELr744pbvzEzmOA42b96MHTt2AABe85rX4Mknn1yAnr0C7JQMaKrV\\nKuLxOAAgGo0yjGajveMd78B//Md/AAA+/elP40tf+tJJP4/77rsP7/3Ie4E2ABzwuRs/h9dd8jom\\nXtbMcKWICrq0LsSVOPus8fHce++9Ib0DCp1pFO+kbDIhC0gmKCpF2QR+qHgI+3P7QxUFP/CBgIh7\\nrUytRKfWyRongbn1mzQHN57vYUKfCAUYsiCjU+uE5VqsipPVsxivjbekW5xyDBDygM5oJzqi9UqO\\n7dkYKAzAcAy4AQlyqLAkAAaLCwIyMWe0DKOkboYdUFw1LblHpAgkXiKBglVik6zAC9AkjVVevMBD\\n1a6GKIijUhRRqXXWqWyVcTB/kGCrPQM8eKzrWIeEmoAf+EyfoPEZpSMk4OQ4bgqbHA14jpaPEhpW\\nq8IELQEw/Rzf93G0cpSpdp/VfRaWti0lwmk1HfFUnCg5RyKMspaqLQPTjx8K02uuogkc0WNqtegI\\nggBHSkcY/bnhGkgoCTy77Vl86EMfIhs5wPfu/R7e/e53z/p+TGf33nsv6zUAgCeeOD6HtmB/XHb6\\n6aezBdfevXuxZs2a0Pdf/OIX8Xd/93cAgDe84Q0sgXUybdeuXTj7wrPhxBxAAK748yvwkQ9/BK7v\\nIipFp/gSkRfRFetCe6S9ZZJs586dOPucs+G5JJlyyy234Prrrw9l/1tVVgEyN7apbdAkDW7g4mj5\\nKA7kD6BoFtlcSoObuBzH4sRiLE4shiZriMvxUF/hTNWRRggtZWYsW+XQ3MpzPOvdY5UXx2CaKnNZ\\n3siCTOifxTrxgRu42J/dj4JZYMmuqBRlTGIVq4LRGmGlc10XcSUOQRAIwmHSl/g+gXHLvIyoHEU6\\nmmYsXbQnhgZlJauEilVhtMRFs8iIZyp2HWGiCMq0UGbHczBWHWPnAQBrO9diaXIp6WsCz6QC6PtA\\nzwWo0xpTo8RAYzUiRF2xK3A8h1WQCkaBPYsJfYLQbgsKVqZXYnX7atbIf9q603Bg+ADAAdu2bcPK\\nlSsRlaLo1DrBc/y048cPfNiuPSUZOF0gQ61RB436u6MDR7H18q1wHRewgE/+f5/Ev/zTv8z6bkxn\\nO3fuxNlnn82gZ1/5yldw3XXXHff+Fuzk2CkZ0NRqNQYniUQi0HV9yjYPPfQQLr/8cgBAb28vjhw5\\nclIj7MHBQWzcuJE0jIrAn77/T/HJGz4Z2kYRFMbo1WhRKYruWHdo8UdhRlvfuhUPP/QwAGDZ8mXY\\ntXMXYrF6mZ3SJlbt6tSJYPI4lL9e5mUcqxzDSxMvYUKfCB8LATqiHVjethypSAqyIDMFZ6pkP5No\\nGEBwwTk9FxKF1GSNOdlWGisls0QCHIOwq+WNPHzUnd5MlaIAAeJyHCk1hTa1DavaVyEuxxncq2yV\\nsWtsF3JmDp5HmmB7472hc6GBDGUn83yPkADAZw35AQIIHKEGnY7IoGyVQ5CxuBxnJX4KM6D/HamO\\n4DdHfwPLtdi+V6dXh+g66XOLy3GWRaNO0fVc1uRZskohuBrHESppgRNIc6RdIZA5b1IQT4khrsSx\\nqWcTOw4bPzygJlUMHR1i31Go2CMPPxIaP/sP7ofhG6EMIQAmQhuRpqo1A8RpDRYHUbLqxB0pNYXa\\nRA3nXnAug4u+693vwjfu/AY0SZu31gK1IAiwdetWPPTQQwAIHe+uXbsWoGcLNqOtWbMG+/btA9C6\\nGnn06FH09fWxee7w4cPHVUWczkzTxDnnnIM9e/YAPLD2NWtx27dugyTW5x2a9W82RVTQE+uZsggO\\nggA33XwTbrrxJrKdqmDnjp1YvXp1yJdQoeVGwWOgDkeWBZnAeeQ4xvVx7Mvuw9Hy0fqcHZAxrooq\\nFiUWoU1pY5VuKghJj9dYxWg23/dZ8o2Of0mQWIDRiDSg5vouC3Ia+3EaKYFboQoozMzzPSYA2h3v\\nRkbLMChT0ShiX24fgd55JnzfRyaaAc/zzO/yHI+oGGUMcZZnwXQIbE53iHaX4RqE6EQQWcW9+Xwo\\nqyY1VVSxKL6ICRJTsp2kkkTFquCxgcdQMetN8CtTK7G0bWkIDUEr5bS6T0XAfd9H1amiYlVQskoo\\nm2XWbwmQpJYoiPB8D+O1cQKXm6xCtaltjOSm0SeuWbMG+/r3ARrw05//lJFqUPHnidGJ0PgZODSA\\n7t7ulqgG6jenS67SxC41gRNgWRYufOOF6N9Pqqzr1q/Dww8+jJ5kz5xkE6azm266iUA3QaBnO3fu\\nDMFRF+wPb6dkQKPrOjSNZJJVVYVhGFO2cRwHixcvxvg4KUv+5Cc/wZve9KaTcnzP8/C6170OTz75\\nJACycNqxYwcM3sBAYSBUheA5Hik1NYVRBSBaKY1q7wCBzqxdtxalIlkAXvvRa3Hr125l3zcOdEpl\\nabhGfd8BQgt4qjBcs2t4KfcSRiojTFGeOok2tQ0r2lagPUq0fSRBCik3A/WyPrWyVWa8/fS8aKAx\\nH2pTKkzZSB/dKI4JEMeV03NsAqTHSkVSSMgJROUooYBUkgiCAAPFAXKNvg9N1tAV6yI9RzzBJ9MG\\nS8/3WENrgABFo8iuked4pKIpxhBHYRI08FMFleB9ETA2Nsrc0gjNoLCvql3Fvtw+hm8OggCr21ez\\n6lJCSSAmxdh3hmvAcA2UrBJqdo09TzdwGRU2x3FQJZXRWAZBwJ5Zf66fZepWpFagJ97D7mfj+FFU\\nBePF8VBwxoGDyqtYsXQFxnPjgAx89/7v4pKLLwltE1Ni0CRt2uftBz4OFQ6FMpAd0Q70aD245HWX\\n4KmnnwIkYMnSJXjyySeRiBMYKc2mHg9F7sjICNatW8eo3D/60Y/i1ltvneVXC/bHbGvXrmXMYC++\\n+CLWrVs3ZZs3vvGNLLP8j//4j/j7v//7k3b8T3ziE/jqV78KgCTotm/fjt7lvSGKZ4CM94ScYDDa\\nRtNkDT2xnhCtu+M4OGfzOQx6dt5rzsOTv6xDZxrHl+7oKBgFlMwS81+NwpABAlbBEDgBBwsHMVgc\\nRM2pwfVd5h9kUUZPvAftajsLiGJyjMxvk/0vzRAtKvrJKP8RQJM0cqw5JDcaA5fmIKcZ0eD5Ho6W\\nj4aqQB3RDnRqneDAsXmbohD6c/0wXJLI4TgOXVoXbN9mVYK8kYfu6AT226DdYvs2Ar9+XFmUWU8n\\n9SOyIDOYNWW0TCgJxOU42qMEek2DOD/wMVYdI+LJnoO92b0wXIMw0okKVrevRkbLAKj3dtLkoO7o\\n0F2dkQc0yi/U7Fqo30eTtDqCJCCQ5NHqKPMlHdEOLE8tD93/xvHz9PNPo2dZ3ddQX/3Oy9+JbT/b\\nBvDADZ+7YQrpy2yBDADGQtr4m4SSwHXXXYev3vpVIAIoMQUPP/wwTltFIHGarCGlpo4rSdYMPTv/\\n/PPxy1/+cgF69t9op2RAYxgGayxTFAWmabbc7vrrr8dXvvIVAMB73vMe/Pu///tJOf6XvvQlfOYz\\nnwFAmMGeeuop1vjWTPFMLS7H0aa2MUYtalSbpVH5/Tvf+c4U6Fkr6Ax1NpT9hE6srR45z/GISBE4\\nnoMj5SMYKg0x1Wfa9JlUkljathSZaIZNLAJP2L3oIjNAgKyeDTVsCryAjmgHy4bMxNE/V32ZnJ7D\\nhD6B4cowXs6+HNI0ictkwm1kyKH3QRVVCJwAx3eQiqTQJrdheXp5SPsGAab05+SMHGy3vqhPR9NQ\\nBRWCQPqARE5k/SyN+6nYFUKJ3EACEZEiMF0TBaMQ1lJwTezL7WONjAIvYF3HOqxIrYAbkOCHQkGo\\ng2s0ShfOgWNOr6+tD1EpyqB/AFgjqcCRrNw5veeEJvRW44c6aGqO5+CzN34Wd99FWGkuf+vluPOO\\nO0HFRRubc1uZ53sYKAyE9pnRMuiN95Lx83efmXwhgJ8/8XOcec6Zod8LnMCqaPO15vGzAD1bsJls\\n3bp12Lt3LwBC+79+/fop29x3330M+3/aaadh3759J6RJQ+2nP/1pKNF2++234yMf+QiA1hTPAFmw\\npiNpGK4RWkQDdUFhmojasWMHzjnnnBBrUyvoDPUlFN5MG9J9+FOq5pQtSxVV5M08jpSOQLd1RtXu\\nBz4TnO6MdrLFMP1dQk2wJF/RKKJoFUNkNTE5xtALzYxp9FzpHDxdHw41Cj82XRM1u4b+XH9oTmpT\\n26CKKnRXh+u57L47vkPgYFYFxyrHyOe+z6r77NkHJMnU6EtNxwwliBSRCDHHpBip5Cvkv5qsMep/\\nnuNRtQg9tSIpkHkZXbEuZLQMLM+aEoTRwEx3dMZeuqp9FU5Pk/7dnJ5DySqxqlerd9VwDHiBx4LH\\nRfFFLJg5VjnGYNdjtTEGfV6fWT+lUtg8fpavXo6J2kTINz/84MP4+Ac/DgBYsXIFdu7YGQruZhtL\\nzTBvimbYtm1baPx8+bYv451/8c6Q3+U5HqlIiiUP52PN42cBevbfa6dkQGOaJiIRMuHJsgzLslpu\\nt2vXLmzcuBEAWbiNjo4yuufjte3bt+Pcc89lL/hnP/tZ3HTTTVO2a6Z4BsjA6on1QOKlUNYaqAcF\\n6UgaHDhcfvnlePjhOvRs967dLKvebDTrRRf1dHE6HVuYyIuMKWy0NsomLkoprMkalrYtRY/WE5po\\nKK0wbWAHyMRCNVlanRe97pkEyKYzwzEwVB6C53somkWMVkfh+z7KVhkTBunbcT2X9dMECFjmq2JX\\nYLkW08dZ27EWnVon2qPtiMvxesDGCUy4S4AAcEBKSUESJRbwNN7bkCjcZHNtxaoQjQZ6vZNUpiIn\\nQhTIX1JOElyyWcC+7D6SbfJIhm1RfBGhopwcqYIgQOTCRABxOQ5FJI5OkzTwPLkuel8rVoU56oHC\\nAFsALUoswrK2ZaH7Ot34cTwHBbOAslmG6ZnYv38/3r717YAFSLKEA3sPYHFm8ayLCNd3MVAYCEED\\nemI96Ip1Yfv27dhy7hZ4HlmI3XDDDbj5ppuJCniLd1YRlPACYg4WBEFo/Cxfvhy7d08/fhbsj9vW\\nr1+Pl156CQCwe/dunHHGGVO20XUdPT09TCLg6aefZkms47VsNosNGzZgdJT0alx22WV48MEHW7IZ\\nNlI8U+uIdkCTNQKTbUqStUfa0RXrgsiLuPHGG5mPotCZRmrqRqO+xPd9eIGHilUJsWi1YjCLiBFU\\nbELn6/ikR472udCqBk3YNULHfPiQeRltCqnE0MpMIy0vPSYHIsIsCiJrsJ/PnED7Si2XwMLKdplQ\\nFINHwSigaBYZrJfqaAm8AEVQYLkWak6NLcB7Yj2EeXKyMk/Pg1IwU+FJVVRZ4Gf7Nmu2B8IQOvbf\\nIEDeJPA/Kq8g8iJBAQgSFFGBKqpIqSl0RDugOzpenHgRBbMAwzHY+iKhJupMo5MyDo0WlaKMTCgm\\nx1ifKE0e6Y7OyADGa+MMKhZX4ljTEe4vA1qPH9d3MVYdY/2WhmHgogsvgj6uAx7wxM+fwEUXXDSn\\nZ0h7j6hRAoRsNoszNpyBsVGSPL70skvx0IMPwQ98FMwCI7OgRhlWZ9JSa2XN42fXrl3Tjp8F+/3a\\nKRnQ2LYNRSEZA1EUGRtTK9u0aRMTSrrrrrvwwQ9+8LiPW6vVsGnTJtZAeu655+Kpp56CKLYeIM0U\\nz9SoYBmlD240mtnS8zrWr1/PoDMf+9jH8LWvfW1Grn0A4fL6pFKw7ugtgxuO4+B4DkaroxirjZGS\\nO3xGnwwASxNL0RvvheWRBrzG46fUFBbFFyEiRyBwwhTmsFbWKFI2k1EnXjSIo3EDF+1qO3ieZ5C5\\nilVhgYvuEmytH/is/yen5+CBLJwjYgRdWhepOAkqMrEMumPdzOHQrFNCSSAqRUM0nJROktIyNwY6\\nAMnolc0yU2EGCFuOzMuQeAkxJcaY3yzPQkEvYLg2zPpFOHBMMRpcvfcqqRD8dEJJIEAQguI1NgoH\\nQYCskWUCoYPFQQZjPLv37Ckiaq3GD9V8qNmEhtT2SYbxHW9/B/bt2QdUgLtun338OJ6Dg4WDoUB+\\nUXwROrVO1Go1nLXpLMYotWXLFvzqqV+Fxo/lWoRSu+E95jmeEV7M1YaHh1uOnwVbsGbbsGED6V8B\\naQZ+1ate1XK7q6++muloXH311Uyf5ngsCAK87W1vw49+9CMAQCaTwe7du5HJZKb9TSPFMzVZkLEk\\nuQSO56BoFkPbC7yAjJZBQkzg3C3nYudOAj2j0JlW1OiN5CmNcz3tvWimCKZGK9Y1p8Y0pih0VrcJ\\nciAVSbH+yqpdDV1HQklgSWIJUpEUo81nJC7TGK3azBbc2J6NF8dexHB1mFUuVFGF4zlEMy2oM2i2\\nQhbwHI+iWWRQvIgYYb2nCSWBdDSNTDSDhEKIXug8RaHbQUDEpSkzpuGQgM/yJlnXXJvtm87lNbtG\\nUAOejaScRFSOskAVIMgAuq8jpSOQBRmKoIDneSyKL0KX1sXeAaqZRgkLqOAyvbe055baWHUMpmuS\\nCmF5CBGRJL9WpVchFZlKgdw8fjZs2EAqVp7NyAYAkvz94fd/CNSAq983+/ihiITGahcNEpvHT2em\\nE3t27wmNH8MxkDfyobUPlTdIKIk5B8S2bWPz5s1Txs8C9OwPb6dkQOM4DmSZTBqCILBqSSv72te+\\nho9/nJQ6zzvvPPz6178+7uN++MMfxl133QWA6N/s2LEDK1eunPV3lOK5kXEMIAu99kg7JvSJ0KAF\\nyMB9/MHH8cGr6gvIX/ziF7jooosANAQwLRrvKRUzNcqtT9WLW9Ejmq6J4fIwgSrxdQfhei5qdg2a\\nrCGjZVhGKqkkWQmXYqWjUpQpMTdru7Qy6jiCIIDjkwmwZtcwWhnF/vx+dk94jmfHDoKAwefo8eg1\\nUl0Ummkbq45hsDTIjpNSw2Vnx3eYHo0sEOz3ksQSpCNptEfbp11AN7LceIEHz/MwYUxguDwML/DY\\ntVOI33BlOLTA12QNIidisDRI6CrhQxVUnNl9JtZ0rEGn1omIFAmx1VDmNYA4yoSSYM/ecAzWdD9U\\nHmKN++3R9pYZtcbxw4s8CpVCCIZB9xkgwH3fug+fveGzAIDNmzbjt0/9dtrnaXs2DuYPhrJpSxJL\\nWG/Whz/8Ydz1b2T8aJqGHS/sYA2kjUYDs+YxIfFSiMVnNvv2t7/NFKKB8PhZsAWj9qpXvQq7d+8G\\nQCAmtKrfbE8//TQuuOACAEAikcDo6CirdM7XvvGNb4SSA4888gje8pa3zPo7SvGc03Ohz9uj7eiN\\n9yKrZ6dkpiVBwsShCbz+/Ncz1rN//dd/xSc+8QkAYV/SGEDQqkFj4EP7VGhVo3mMAqRCSwUfG6Fi\\ntm+zZva4HGcVgYgUIRBWcOB5QrucUlNIqAlExAgLOGbyJ5QtzQ98lKwSimYROT2HodIQ9mb3omxO\\nVrc4AmlTBAUBAsaoRameG1EFESkCTdJIozwvYkKfYExpCSUR6kukyAhK9ayKKmmiFxQoojJtVYD6\\nCsdzGKnAcGUYL068CMM1SH8SAiSlJGJqDDk9F+4jESQovIKh8hCDYKuCinWd67ChawN64j1IKIkQ\\ndLdm11gARUldGokihivDAAjtv+3bjCBnQ2ZDyyCgcfw8t/05rD2jieJ/Ujtmx/M78J53vwcAEFNj\\nGD04Ci3aumpOGe8a+5FpMANMHT8PP/wwLr300pb7KZrFKdVNSZDQHmmfkuybzpqhZ43jZ8H+cHZK\\nBjSu60KSyADleZ7BV1pZNptFb28vq+I06wzM1R588EFs3bqV/fub3/wmrrrqqjn/PggCHKscw+Hi\\n4bCIo0CELzmOw0RtIpRNCIIAH7/m43j8wccBF1ixYgV27drFoDPU4TRaM11mc6bJ9wlVsO7o0O16\\nJrxxQhsqDWGkOgIAjLsfINme7lg3VrevnkIn3HgMkRehSoRUQOZllmlzPIdVOSi8rVkIrWJVCPXy\\nZLWHB8/opalIpyqohEFsMgNGnUarvpPB4iD25/YzTLgsyKzqUrErjK1H5MRQQy1AdFI6oh2EOjpC\\nBFIlQWIQOkqhnDfy5L96HkfLR1F1qgzGR4kHPN8DAiCuxqEKKqPAPFI+wvpzBF7Aus51LItJVZAp\\ntaXIk+3SkXQo2KFQD9cnVKRUA2ZD1wYm/NlorutCkiVAAqAAw8eGQ983Oo7DI4exbv06NpE/+8yz\\nePUZr54SVFiuhQP5A6GG4r5kH8voPfjgg9j61vr4ufvuu/GB//2Blu8QNduzpwTgHDjyDsyBvaYZ\\netY8fhZswQBg48aN2LVrFwDghRdewJlnntlyuyAIsHr1aibCed999+GKK66Y9/H279+Ps846i7Fz\\nHo9mUlbP4mD+YCigEHgBy9tIv2CzVhcA3H3n3bjti7cBNiEfaISeNevSAHVSAPpdsy/hOA41q4aC\\nWUDBKNTHfoMPyupZ5I08q6RQmvoAAWJSDD2JHvDgW1ZiBF5gjd9UYwUgAVPNrjH6Y8r8WLbKDOLE\\nKgRmHoE/CRcG6RNVJTUUxMSVOKm0RNJIR9LoiHYwgpdGKxpFHMgfYGLW6WiaBFy+B93VGZUyDWga\\n7xed7ynZjiqprLJE77PjOThWOYaKRRJyA4UBVnXjwQOTU67ruaxflGqXqaKK0eooHN+BIijgOA5L\\nkwRdQX2yIioQOQJho3INqUgqFGzljTyRAgDxnbSXqS/Zh65YV8t3cePGjdi1ZxfAA0//5mlsfFU9\\nIcBzPNG8A9H8Of/C8zE4OAgAuPWrt+LqP796SlDRKphplBTYv38/zjzrTBg6CeyuufYafP22r7c8\\nN2q2Z5MArSkAjytxBt2ezRqhZ83jZ8H+MHZKBjSe5zGYCsdxbCKZzv7sz/4M//mf/wkA+MxnPoMv\\nfOEL8zre6OgoNmzYgGw2CwB4+9vfju9///vH1RRquib6c/0omIXQ553RTqxIrUDJKiGn59gibnx8\\nHFu3bkVlogLUgI9d+zHGiNNozQ6HftbsKELMNRQSMEkmANSdkeEYeCn7Eo4Uj7DelIhEmMQkQcKS\\nxBL0xntZ02Vjls/1XbhwCR3y5HXQDBrHEWdmuzZj8qIVhapdxURtguyLIwvrlamVTIdGFgmEiyou\\nz6Uh1PM97M/vh27rBLMtyMhEMxgoDCBn5JAzcqhYFeYE2H1qIjag/59SU8jEMv+PvTePkuwq7wR/\\nb19iX3LPylqkUpVEoZJUUklCSGAEY8CAsQe8SLYbTuNx02agMdCDx9j02GbwARtL1nCgzbERbZvD\\nMbbHeAzNJgMtMNpKUpWkKklVUmVmVe4Ze7x4+33zx417873IiMysqhRqS/kd8qDMiuW9F/Hud7/v\\n+y0o6kXOKWp6NJGy6RGANQ6PSKU9VUnFZHaS+zuosgo3cFG1qzi1cgpe6PFiaX9xP59qBCTg3SUB\\n1P2ZkeVZIqo7dciizDHLoiAio2VweHR9pzmKIjTtJvLDefaFwPw8LWgY0VKV1xI5iQh+9p0/i3/+\\n77Qo+MAHPoDf/djvJow4ncDBmeqZNddwCNiT38OlZBcXF3HolYdQqdCu8s///M/j7776d1u6f9h3\\nND7hAuj3KaWmNsVD70DPdmKzuOaaazic5NFHH8W111478LGf+MQn8LGPfQwAVT771re+dUHv5fs+\\nXvWqV+GRRx4BQBWijh07dlGTnoAEOFs7i8X2YuLvWS2Ly4uXwwkcLLYX+X3p+z7uuPMOnH7yNNAC\\nbrnxFnz/+9+HKCXX0X7S+VwVs7s2M2hvPJe0PQpJa3rNRD6KogjnGucw15qjMvNKCqZqclnhsllG\\nXs/DJz7abtKOwA5symnpyvWyZhhACx5mLOkGLm+SAXT6XrErAKHvL0kS9hX2YSo3RU2ujQKH9DJ5\\n/M3WoyiKcK55DtVOlU939ub2Uriz1+Gmnb0k90Ey0gwmpss6anYN041pzoUMSciREl5AVdUYykCV\\nVJTNMp+8iILI4XOnVk+h5bUgilSlbTI7iYnMBP8MmaoZQ1UwbiYT/anYFciCzBU2NUmDJEo4PHK4\\nL0/WD31cd8N1HHL2wx/9ENccvoa+vqgm+FBRFOFjn/gY/u8/ofuvV9/6avzVf/srFI0ib7yRiHJk\\n443duM9b7/1z8MqDePTYo1u+f1gRHN8WS6KEolEc6CXHwvM83HDDDbz58epXv3ogdHMnXph4SRY0\\nhJAEfnGzU/za176Gt7/97QCAyclJTE9Pbxn/GEUR3vzmN+Ob3/wmAGBiYgInTpxAsVi8yKOnsdRe\\nWifxLIsy9hX2cRgak0X+2te+RmVCIwA2cN//d19SQrdfITMARtC7qLLHhSTkxQ276dk4fMlawqq9\\nClmQuSwwk6EeS49hIjPBDSctz0r4ygDgxUAYhdycEhHt3rBjY7KhsiAjo2VQNIo4WD4ITdG4Adtm\\n4gLseJlqW1wW9Ez1DD2urqx12SwDoMdQ0kuwA5t3E6t2lRt2xYNNDFpeC7VODX7kc73/vJbHaGYU\\nJaNEO2xeE6ZCk/ZoehSHRw+vU+xiEIWO18GJpRNwQodDK/YW9qKoF9H0mgmoGVN4Y9F0m1xZ6Gzt\\nLHSZTq8OlA5gIjfBHbk5HM9tISQhJicm+WusLK0go2UGjt+/9rWv4e3veDugAmNjY3jssccgSRIM\\nmXrPPFd9LuHNsDe/l6vlRFGEN735TXzjNz4+jhPHT6BUKvV9r0HBurK93gVMgW+jzchxaikGAAAg\\nAElEQVSXvvQlvOtd7+K/70DPdiIe1157LZdmPXbsGK677rqBj52dncWePXv4hn12dhaTk5MDH98b\\nv/M7v8Mbaoqi4KGHHho4EdpqNJxGX4nnXdldmMhOcEl8EhE8/fTTuPPOOymqwQY+/V8+jd/6T7+1\\n9rwe3xamPsaEAnrXRKbuCCTzcMtroeE0uNIWu28bToMSzrvQLwb/6gQd6JIOQzLQ8ltYaC1gpbOy\\nrpERzwEhCbm8MuNwomsybXkW5Y4YOZSNMq4du5YbdCoSbYqxtbFf9CPtAzTHnK6eXoNDQ8Su7C5+\\nzUzFBIQ1ZAODkvXLJUxwYbYxS3lHECBLMhRR4abSlm9hobUARVaQVtIoGAUcHT+KtJZe93pMYe3R\\nhUdRsSu8wGLqknEurSiI6yT32dRLEASsdFaQUWhOmMxNYn9xfwI6F5KQNzJvvvlmDjn74Q9/iBuP\\n3LhO2IHF7Owsdl++GzBBJzo/+hHGRsdgKiZKZolzmliklFTCry9+/8iKjIcefGjDBkS/CEjQ13vJ\\nVEwUjeKGEs+PPfYYjh49yhELd911F6c07MQLHy/JgqYX17vZKfq+j4mJCaysUOWOb3/723jDG96w\\npfe655578P73v5///t3vfhe33377RRx1n+MaIPGc1/PYX9wPQRCw1F5Cy23hP/7mf8T9/+N+ALQo\\n+9G3foTJ0iS/Dv2uQYLU2Qd/zBad+OPqTh2r1irsgJIWAxIgrVJFl7nWHJ6vPY+G24AAgSuKiaKI\\n0dQodud2I6Wm+GLuhR7ckDo7M51+NmWRRZmrwnihB8d3oCs6V3KZyk1BEZVEAmMwLAZZ6FUd2yiq\\ndpWO8x2qSDaVm0Jez6Nk9sfRhiTEQmsBZ+tnuXQqM7R0QzdRJMqCzCEEURQhq2cxbA7DUAxMZiex\\nJ78HGS2DnJZLQPv4RKNLqD2xfIJyV7pJdCJNBRf80EcQ0c8hDg0hEeHdQlaIsUnY4dHD/Fp5hCrY\\niYJIlddEGXt27QEIAA+Igi3eP5UVQAO++ndfxWtf+1pYnoVzzXMwFZMXnfsK+xLQvXvuuQfv/8Da\\n/fOdb38Hr3/96zd8v43CCRzO72HBkvMgiecoivDWt74VX//61wEAl112GY4fP74DPdsJAEnhmEce\\neQRHjhzZ8PGvf/3rcd999wEAPvnJT+KjH/3olt7n/vvvx2te8xp+/37605/Ghz/84U2etbUYJPFs\\nKAb2F/fDVEwsthdRtav47Oc+iy/81y8AAFRNxXf/6bu4+dDNkCWZqzn2igL05hL2O2uQyZKc4EQC\\n9F6tdCpoOA20vBaHj4ZRiIX2AqZr05w/qkrUT4VNXktGaS03BA7/8QMKUyYR4VCxtJZGSk6haBSh\\nSRos34IqqlBlOiGYyk7BVE2+NrLpPuP3xE2kNzOTBmjz7fna8/ACD0EUYMgcwkh6BIZsJKbbvc9Z\\ntpaxaq2iYlfQ9JqwPUpaj2/gGbeDWSSk1BTSShodv4OUkkLJLCGlpjCRmeAbb+6p1g1REPHE8hMc\\n6RFFEYbMIeSMHPfnYdOteN5kHjde6GG1s8rFAPYX90OVVZqLIXKeE4O8vf6nXo8nHn8CIMAjD23x\\n/vnefUAK+MhvfwTv/Q/v5bzJolHk+ZgJ9rC4//77cdtrbuMKbp/61KfwkY98ZMP32igsj8Ile69d\\nXs+vefH0iY9//OP4/d//fQAUenbixIm+XNCd2P54SRY0ANZ1kTYbF3/wgx/EXXfdBQC444478Dd/\\n8zebvsdTTz2FI0eOcFnbD33oQ/jjP/7jSzjq/jFI4nl3bjcms5OwPAuPP/c43vjWN8JqUcLnHb9y\\nBz7+f34co+nRDW8+IJmM+kHQRFFEQALMN+f5uNcnPiJEMGSD+9ywxa/SqeBc8xyHQrGOlyqqGEoP\\nYW9uL0zFhB3YnPQekShBmBcgwJRNeIQKAYiiCFWkeOb9pf0J/HJcMpm9Rry42eizj/NdTq6cxGqH\\nwgYlUcK1I9dSictuBCTgXcW6U090cIIoQLVTpcnIbVIXaN+GqZgo6AUKo+sxp9QkjU+rsloWo+lR\\n7MnvQdksw5ANnpAYhM4LPRxfPM47aZZvYX9xP4ZTw0iraY5FZmo5dbuOmksX5NOrp3lxO54ex3h2\\nnCvcreuqCiKuO3Qd4AEgQK1Sgyqpaz47fa4nv38E4J13vhOf+rNPYaYxwz+LrJrFwaGDibH9U089\\nheuOXAfPo9flt37rt/Anf/wnAz+rrQaDTsSnm+w6suKqN+bm5vCKV7wCjQYVT3j/+9/fF7q5Ey+/\\nOHLkCB599FEAwMMPP4zrr79+w8f/9V//NX71V38VAHDgwAGcOnVq0/xTr9dx+PBhzM7OAgBe97rX\\n4Tvf+c62w1UGSTyPpkext7AXXuhhpjqDt73zbTjzLOUCHb72MO79y3sxkh7h/L1BwZovbBrSy6th\\nueRc4xyW2ktouk003AZabguO78CPqBAL28Q7gYO6U+dCBozrwZQeR9OjKOtlyLIMESJkSeYCMGza\\nz3h1AFB365AEquyVVtK4augqZPXsOrGDeNHGihvm27XRubN8M9+cT6iXHigfSCiAkYig7bUTUyoW\\nIQk5GoA1tkhEUEqVsDu7G5pMpaJ7m2ZWQA2WZVFGWk1jT34PTMXkSpnsM5BECSQieGLpCax2Vrlg\\nwUR2ApcVL+PFSBiFvGCs2TWcb56HF3qYb87z801raezO7abCBYHPVUP5NYGAf//uf49nn3wWCIB/\\n/sd/xk3X3wRDMThcrTfi98/lr7wc3/iXb6Dtt3kuKegFjGfGE43G3vvnp173U/jud757yfcPiQhq\\ndm2dYJMma9TwtE+TrBd6duutt1Lo5g707AWPl0VBE4bhpl+m48eP89G+rutYXFxELpcb+HjXdXH0\\n6FH+pT18+DAefPBBLne73dFP4jmKqC4/c5T/3Bc/h/f9H+/j5MAv3vtFXH/kepiKidH0aGI0C/Q3\\n0/IDn0sQeyGVi+x4HazaqzzJRFHEzdvicALmkMxGzW2vjbnWHJpuEyIopEwQ6Ph/ODWMPfk9KBml\\nNQPLKORJSRIkKmVs1+lzRAmmamIiPcH1/hVRoQks1vXrF7xLGOu+sR8WDNL2XO05BCSAqZh8rM8E\\nA3oXNRYMxy2KIndyLptljGfG4QQOnl59GvOtedTsGpe2zmgUHx4XVQDAoQ4AUNSLGEoPYTwzjiFz\\nCFktC5/4OL54HEvtJV4MXVW+CpeX1neAVqwV7hUxU5+BJEggILiicAXaQRuO7yQIvaIgwlCpcs/U\\nrin+OtMz0/z+icMe2GegSAqeeuIpPtrXchq+/sDXIWr0OYqoYE9hDwp6gU9nXNfFDUdv4FCEq6++\\nGg8+8CB0fXMy/1ajn8SzACGhfhePXujZD37wA9x2223bdjw78W8zrr/+ehw7dgwA8NBDD+GGG27Y\\n8PGWZWFsbAytFiVP//jHP8ZNN9204XPuvPNOfPnLXwYAFAoFnDhx4oKgahcavRLPUUS9TPYW9qJk\\nlPDDh3+I1739dTyXfOjDH8Iv/dIvQZM0jKXHOP9tEP8DABzf4Wpn/Mel6mLxXCKJUqKBA6zBd9n9\\nKwoi3IBCtHRZhyzJnDtR0AuYyk2hZJTWBGUCWswQEC7hv9JZofmlK0ozlZ2CKtPJjylTQRlZlAf6\\nswHgeSTe3Ok975CEsDwL041pdDzqV5NRMxjPjKPtt/lEqh9qgHm8kIhwg+K8lsf+Ep2irXRWOHnd\\nDV0QQpDTc9BkDR2vw82TAbrpLptlrtIZ971hza8nl5/EbGOWfw8ms5O4buy6dXuDFWuFcpS6fj26\\nrMMJHExkJjiP0Q3cBJycidn86q/9Kp4+9TQAusYyY1qmIGcoBgzZ4GIugRNgcmKS3j8i8I/f/UdM\\nHZzi1yutppHX8xhKrZmyxu+ffCGPE8dPYNeuXQM/xwsNJ3B4gRkPJnfde70ee+wx3HDDDVyQ6u67\\n704geXbihYmXbEEjiiLf5AZBsCVOTBwr/YUvfAHvec97Bj72Qx/6ED7zmc8AoAXQsWPHcNVVV23D\\nkW8cTOKZy0x2YyJDDRLf9rNvwze//03ABCanJvEP//APMHRayOT0HEbSI1zJi6mIxYuXuEkksLbR\\nB9YKoJye41yN+ALPIGaSKCEIA04CXWwv4kz1TEJKlBUlJbOEq4avwr78Pl5wRRFVPFm2luETijGW\\nBZkqsojrOTKyQLt2rBiIoojzcuI/DJbW6yXgBmseOivWCs7UaGfS8iwUjSLyen+zVbZR1iSN+9MI\\ngsCLmoAE/BxY6JIOVVaxaq1itUN/FtoLfPpGIsJlMAE63WLdNUVSUDbK0GUd8+15KKLCk9SB8gGM\\nZ8b5+7BzAqiRJiEEQRTAUAxMZWmxwvHvhECV6QQtBJVAHZ9Ye62z02c3vX8ECHjjT78RTz3zFJAC\\nPvrRj+JtP/s2EEKwp7CHn48syshqWXzkwx/BZ/6U3j+apuHYI8f6OrBfajBuULxoZMfBfH7ij33L\\nW96Cb3zjGwAo9OzEiRMwzY3JoDvx0o4bbriBk4wffPBBHD16dNPnvOc978Ff/MVfAAB+4zd+A5//\\n/OcHPvbLX/4y7rzzTv77V7/6VbzjHe+4xKPePBzfwZnaGSq0EoNSFY0i9hf345Of+CQlaKcB1VTx\\nla98BVO7pqj4iJbGRGYCKTXFpyhMipn9N5MPZpvlgARcBp8VAYqkJKa2bLOa03Lcx0USqbnxsrWM\\nml3DbGMWq/ZqoomlyzoyagYHygewN7+X5xISEdTtOmYaMxyWFkURduV2ca5nPGRRRlpJw1RNOkHv\\nTmrihQt7Dst9rFHG3o+dY8tt4YnlJ7hqqCEbA5XA4iiHlJLi8vN5PY+xNDWwrtm1xDrG+JlhFHIl\\nUJZTAHC+UNks86Zg/Ng1WQMi4FSFylbLIoV4T+WmcKB0YM2agQSYa84BoEaaAQmowqao4ECZKsKy\\nPYMXehQhEPkUvhY6+IVf/gWcOnUKAHDvvff2NaaNhyAI+MT/9Qn8w9/9AyAAv/jOX8QnP/FJtNwW\\n54Cy8x9ODePv//bvE/fP3/7t3+Kd73znhu9xMcHsEZpuM/HdY/uYXmXN3/u938Mf/MEfANiBnv2k\\n4iVb0EiSxNXNfN8faG4Zj7vuugsf/OAHAQDveMcv4i//8m8QhhGiCBAEQJIEGIaI73//vgTH5p57\\n7sH73ve+F+ZEupEg8feReBYECmFKeSm8+sirqWN1Crjj1+/ABz/8QSCUYAg5iFCgihpUSQFEAiJ1\\nEInrZa179dkZJ2YkNYK8kacQJHE9BInBfTpBB7ZPdfIZR6bhNDDTmMGKtQJZkjkuWhGp1PBVQ1dh\\nMjuJpfYSqp0qH1+nlTRG0iPUaCxw4Ud+YsIiQKDY3S40wFAMWuB0JaEHhSAIaLttzDZmKezBawER\\n7Q4y3xamBBPH7eb1PBRJWddhU0QFBYOqzHT8Dh/ns2BJujfY9G2uOYeF9gKqnSp84nN1nd7H2gEV\\nC5hrzkGVVF50XTN6DQ6NHIIqqTz5eaGHk8snKSSA+Dg0fIhvINi0Iq2m1xWJkiwhEqhi0Up1BZEY\\n8UnaoLjnz+/Bp//rpwEAP/2aW3H37/wOiqoJISIggohIUhFoJfzrA4/hF972C2DNvLvvvhvv/99f\\n2O6VH/qwfGvdZ8Y6gyx6oWcf+MAHcNddd4H4bYTteZDQAUgAiDJESYeUHoeoJAm4O/HSiqNHj+Lh\\nhx8GADzwwAO48cYbN33O/fffz6d7hw9fi+9978cQBGldLpmbm8XVV19N12sA73rXu/DFL37xBTmP\\nXiI7a2isdlYp5yPm6yUJEiZSE3j769+OJ594EjCBw685jE/d/SkqOx8ARWUUupiCJukgCOGQDhad\\nGXTC1rr3dgIHHY/KUAugrvIjqRGMZ8d5AcNI+fHjtQObG0wzKf2m20TDaWDJWqL80ggchqZIdA2+\\nongF9hX3oeW2MNec4xMhTdIwkZmAG7poe23Ygc3zBgtWvEiixIsbxhcZlE8EUDXV5c4yVbbsygqz\\nphaLkdQIh4AbssGVyJpuM7E2SYKEiewEncqH/joujS7rKOiFvoI/q51VzLXmYHs078qSjKHU0Lpc\\nwnI1iQieqz2HltuifFhJwe7cbhweOQxZknmhGkURnqs9R+FoJMTu/G4ungOAT+vjxxRFEY7eeBSP\\nPPYIoAD/9I1/wpWvvBJO6MALvYHIioePPYz3vv+9gAAcunwfvvLZP0NWUSFEBAEihKICW85icaWB\\nn3vDz6G9StET/+5d/w73fvHevq+5XeGHVCGvV/Y8paYSqBXP83D99ddzFMJtt92G733vexBFcSef\\nvEDxki1oFEXhShOe53Ffmo1iaWkZ7373b+DXfu3X8ZrXDBYF+PGP/wf+/M/vxre//c944xvfiK9/\\n/esXJdG8UWxG4gfW5HDZYheQAEEU4Ef3/Qif/OgnIQgC/pfb34I/+sO7MZIbDF8gooNQtkBEh6rS\\nQOTqWawDZSgGykaZTwx6i5iO34HlWbADO3GczKcgXni5vovpxjTON89T4iG6Ep8QEEYhRlOjmMpN\\n0S66mkoYlLHwQi8BU+t3/Zn0JOPvCIJAixXWRXTrWLaWE9LRBb0AURBxvnkebuhCl3WUzTKuHrka\\nBYP+W82uJczLACCjZri7cM2u8YIIoMmubJbX+dj0RqVT4bA2N3AhCRJaHvXdWemscJW5OOF2tbMK\\nx1/jVg2nhrErtwuKpCCv51HpVDicJKtlcbB8kBYyqsknFP2+a6qq9r1/SEQS0z3G11lqL+HU3Cl8\\n+Z4/w//21jfj9iODlWV+8OgT+OxXvoZv3PcQfuqWn8Lf/+3f08JWUjZ19b6UiKKIigb0fHa9Es/3\\n3nsv3v3ud0MQBPzM62/EF+7+OLL64EJONIYgZ3ZDMkdesGPfiRcvbrrpJjz4IDWM3Qp8DKDTz3e/\\n+zfwpjf93Ia55Pjxh3HXXX+Eb3/7n7F37148/vjjyGQ25jxuNQYpccX/jUVAAkzXp7FsLXNuXdtv\\nY3p6Gr//sd9HJEYQZAG/9+E/xM8cfQcmU3sHvu+qO49Z+zQq3jyyajYBd8poGWTVLG/8xCce7Ljs\\nwO5r8syUy9i6H5AAdmBjsb2IhdYCnYR3eTtMuTGn5bCvuI97k+3K7Uq+H6K1BpxnJ1TZesOQqVkz\\ng8cxyXz2U3fqfBoliRKHti5by2i6Te6Zc/XI1RhKDUERFSxbywmYGED5lOOZcciiDNu3qYxw7LPK\\nqJlNebGVToWqxXWvaUpNIatn+SSHGWmzIkmAgIXWwtp0B8BQaggHSgco7wg0F7W9NkzFhCzKeOXI\\nKzknRxXVgbD+fvcPm+gwfznbt+GEdILW9tpouy186a4/wS/cdgtuv35wLvnx08/gT7/yVXzjBw9h\\nPDeO+/77fRjKD/Gm5lZNli8m2l4bNTupdioKIopGkef6Rx99FEePHkUYUrj9//uVL+Cnb30FiLM6\\n6GV38sklxEu2oFFVlZtlOo6zKbeFkAj1egjX3frluP/++3DrrddgbGz0ko4V2FyJjU1mGEaYFS/M\\nufdc89watCkC/uwz9+C9b/7PuP2WN235GFQVSGUIVp2VhLKHIRsomkm+TDzxsCIm7i3AihhVUpFS\\nU1w6l/3dDmw0nAaeqz2H883zCMIAdbfON+eqpOKqoavw6qlXI6evYVR7PRCiiJLt2U9vBy0kIZpu\\nEy2P6vf7xIciUHW0ltdKGD1m9SxM2URWyyKlpFDpVKDIdCNfMkoomSXU7FqiUyaLMgp6AZpM4Qkr\\n1kpiw8zG4r0mbL0RRRFsn2r7M88ZWZSR03J8OrTcXsb55nmqWOZUKYmW+DjXPJcoalJqCpIgwSMe\\nFtuL0CQNaTWNQ8OHcGX5Sm5o2dtJS3wXNBWBTzfxm90/S+0lLDTOYcyvIhOtdwYfFPc9/DhyV92C\\n3ZP7EtM2du6KpPCu32Z+MhcSIQlh+da6aZMmaXx69Y7/9efwK2+9Bj/92o0J4PEQjSFow0cgbOOx\\n7sSLHzfffDMeeOABAFRG9lWvetWGj7+YXPIv//JNXHbZMG66afPpz6CIFy6DVB35dKbr59FwG2g6\\nTe6XtdBawHxrPgGT/cEPfoDjPzyBz/+nv8HtN2w9nygqIBgtBD3WA1ktuy6XeKHHJzHs2Fk+YU0U\\nURCRUlMwZZMrrkWI0PE6qDt1nG2cxUKTFjZNr8lh2aIgYm9hL16353UYy4xRs+2uP01vxBtzvdcw\\niiJYvoWW2+I5mCEVXOImDLxVmXrIZNQM8kYeNbvGjZ1NxcR4Zhxzrbl1Qj/jmXEOcW44DVi+xf9d\\ngICCUdiSaXBAAqxYK2g4DV50FIwCiga1k7B9GzWnxlXN2Pp6pnYGK+21AiulppBVswgRYq45B0M2\\noIi0MNxb2IuMmoGhbCyLfyH3jxu4qHcqUBvPQgv6c1b7xbcefgSzRhZHr7mZ51qGWmHS/bqsb3uh\\nE5IQVbuKjt9J/F2XdZTMEmRRxu/+7u/irj/9E/y3e/7zTj55geMlW9BomsbVk2zb3pBsTEiEajWE\\n71/4pVAUAcWiBFG8sEp6o8tOIsI74IwIGURrcJ++ZP7Q59hiCTKuMm9GQR+6sJMBQEQPgVoBBHp8\\neT3PCaCEEFi+tZZ4CElMa1giZc7EpmpyyUt23L2E/CiK0HAa+OHsD/FM5RmEhKrSpNQUCkaBj78P\\nlA7wrt5GMsxsHFyxK6h0KrB8q++1dgIHYRRCFSlkazI7iZH0SALPXbWrXITB8iwMpYYSnbGUkkJe\\nz4O5OPfyZQzZSBAXNwrmExBFEepuPbGBz+t5CBASykRM1YxxlB6cexDnG+dRsakMKoNvMFIqk2eN\\nK6eVzTKGUlT4oGyWYSomv1aarsH36LlsdP/Mt+ax0l7ELncFeuT3fcxG4QgKzmvDSGnZDYs+Vuiw\\nAocJQlxKoTNI4tmQVLhzD0COOhs8u3+Iag7a2M07SeglFK961avw4x//GAD10bjlllsGPvYnmUu2\\nUsCwKULdqaNu06l002ui7bYpN6SPCiSJCJd5BwAhEvHazM/i0NRF+OGIAQSzCaFrhMym2CEJYfsU\\nTmZ51ppnTKwhxppqTNFMkZTEdDohrdwVhmm6TTxw/gEcXzwOJ3QoV0TRMGTSdXjYHMbB8kGMZcaQ\\nUlJ80tMPSuaHPuU62nRCzsyReyOMQsp7lDSUzBJKRgnlVDnh49LxO5iuT0OIBDS9JmRBRim15rWV\\nVikniUGZ+/FlikZxS+td/NottZfgBA4/jpJZQlbLouW2EhxQQ6Hy/07g4MnlJzFdm4YdUNnotJrG\\nSGoEFbtCVSJFEa8ceiU0hTa5GB9Hl3VeQMTVv7Z6/7iBi5ZTh1Y7CSmw+j5mo2iQCI8FQErLIq1u\\nDNtiktJxMQJd1i96ImL79FrFm2SCICCv56ESCU/e/1e4av+Fi3zs5JMLi5fsVdqo+xyPKKLdtItJ\\nQADg+/T5hcJgqMyg9w9JyEn5XJ2FSU0OUO4a9B6GYuDQ8CF0vA6Cjom0dHHGniJRIbg5CHoT5RQl\\noHf8Dtpemxcx8QIlJCEVXehumplSDDtvplDDf2JqWaIgUpOx0MWh4UM4UDqAs42zWLaW+cbbJz7O\\n1M7gbP0sJrITuLxwOUpmicvvkoig7VLxAUbYY8ldFEQYsoGABBwfzsQIGInUVOhEJq/nufkamwIV\\njSJWO6s43zxPSZtNB5cVLuPdF9YpY8o08aQ4iC/TL+IJSBAEDKeG0XAavINYt6mLfbwYYVObglFA\\nTs9hNDWKY4vHsNhexKq1iqbbRNWuIm/kEZIQI+mRdSpC8615zLfm+d9MxaRFjjkEpAHUwZ20+8X5\\n5nmsWiuY8KoXVcwAgB75mAzqWJZ0kIgM7D4y2Wsv9IDYW7FNTbzQUSRlQ3lV/t5dtZ+O3+HfD0JC\\neJVHL6qYAQDiNeAuH4M2cnQHLvASif9Zckl8utJ7HBxK69bRdJocUmv5Fvfl6H3NQZL2KYX6mKiS\\niobbwAHzBuSV4Ys6JxAZkZ1GJi8gpZpwAgeWR5tiQRgkoMghCRFEAS9CMmqGNzmiiHJ+RHGtiIkX\\nQKzAcUIHU7kpTGYnca55DvOteS4GEyHCUmcJy7PLKBpFTGWnOIdHkzQuWsCmVk1vzZE+paSgCHQS\\nE4f9MkgzI/JrssbhRkzgBaBra1bN4qnlp+CEdCrDVDEnMhMopygX5UL4MoMijq4Yy4xh2VrmE4RK\\npwLbtzlvkDUfASogoEgKrh+/HoZi4GztLOcBnamewa7cLkiShJJR4sUMQNdmJrjAgr2uLusgMgEE\\nUDnvAfePEzhouy1ojdMXVcwAQE4UcK0q41S3iM+omYHXjB1vHfXE33unOYZMJzqbXXtDMTAujyd4\\nx1EUodapIm/NXlQxA+zkkwuNl31B47rRBUEDNnoNXV+bVMSjV1GMFS+9+OB4DCpm4hs35g3CRtkA\\n4DgENXf9KP1CQolMWF4DNbHGlc/YMbHNt098qu+vGsjpOY6H5h20LqkyrgwTl0xmWvizjVneQVJl\\nFbfsugUls4SztbN4cvlJVO0qCKi/zGxjFucb51EySygbZUCgiZzxb3q7bKIgQpVUFIwCCnoBpmLy\\n7iM7J1aEuWFXPtnrkhtFBXZoQ5M0XjiFJETFruDwCDWlDEmIulOnYgLsM9oiXyYecSlISaTmbnk9\\nTzHZEYVHeaHHxQjYazNpbMuzECHCleUr0XAbyGgZjlvfU9hD/W1ye1C1q5yP0+uwDdDCbLYxi9nG\\nLMhlhBYODnD/zP2YKk+hbJZRNIoQIOBc8xyqdhUp4iBF1r/WhYQeWBhJSQj1AiRI0BWdf8eY51E8\\nSceDKetcbKEjCiLSaprLxMJZheTVcSlB7BWEnSXIqUuHou7Eix8vVi7pV8AwcZW6S4na7L+ZJ1Yc\\nmisIVCwlEtZ7iwmCgLSaRk7L8Sl8Xs/TjnJsUuo4BLXapeUThCpqrToq8uq6+6pt4mQAACAASURB\\nVFgQBKo8RiJoioa8nF8HCWJNqHgRw1UrIXBF07nWHGp2jVsDXD1yNd5yxVuwZC3hyeUnMdecg0co\\nLJlN8c9Uz/D8BYArlvXCUQWBFlk5OYe8lufd/JpT4+s3yzd2YHPYMZMltj0bLa8FQRTArFrqTh0H\\nywehKzps34Yf+pRDGdsKbIUvk7jUsevLlM1G06OYb81T/kzoouk2MZwapvC9rjInAL43iaII+4v7\\nqY+ZU4MkSGhGTYRRiN2Z3dhf3A9ZkhN8nN5gvNqO34Gv+UABAAFWnVXU7Bqd5nQ/Zzapk9zaJa+9\\nOQQ4mB6Dq2QpjFzLgoBwYSI7sNdJL8ejtzBjwSc6igFTNvnxx9cGQaCQwJSa4tLaqt+C4jfXvd6F\\nxE4+2Xq87Asay9rYQX6rYVkEohwkihb2//3gAKxr1BtM0jK+CWNdoEGmhi/E+YSuihONx7n6DOug\\nSSI1JSuqxaTkbRf6wGUshaTfy7oiLwww25hNjNWHU8MomXQMf1nxMuwr7MN8ax4nFk9gpjFDDdYC\\nC89WngVAJyhj6TGk1BTfwCuiAk3W+HHntBwff/uhj7pTR9ks88/FVMx1SdbyLdSdOgISQBIkZLUs\\nVqwVFM0i98cpGkUstZd44mICBKPp0U35MonrQILE90MR6bFKooS8nseStcTVVBpOA7tyuyCAqrP1\\nqnYFJMAVxSuw0FrA05WnYSgGlq1lDJlDmMpPYSq/5i3T9tq0uLFWsGKtoGJXkuNyllV14Pn68zhv\\nU+gd8xNSJAUFvYAb1M3FNrYSsr2EUC8iRIiO30FGyyAtrcEGCCFbvreAjQsdRVK4R0L8HlNEBXb1\\n5LacT9Ca2UlAL5H4SeeSthXCiZrcwJdBxhpuY52yEju2+LSCBTMoZhPovJ5HXstzOeR+poAv2Dl1\\nAqyQGZSNMmRJRhAGiIQIuqSjZJSoL0rs2pKI0PtSViELSb+X3s+AEILzzfMJIZacnsOu7C4IgoDR\\n9ChG06OoO3WcXD6JZyvPUgiZ34YX0MlsSkmhbJaR0TLQZDodYhPclEIJ9XE+YxRFcAMXOS1HCfY+\\nhc31ysN3/A7O1s7CDmwIggBDNtB22xgyh1AwCqh0KpjITqDqrPEwWDNmKDWUgEBvFr3QQzYdEgQB\\nY5kxnG+eR8ulzbeVzgoMmaIpQhKua7CSiGAsM4aQhDhVOQVTMVF36lhoL+DGyRsTBSc7b1YMuIGb\\nmDDx76UIdIIOKnYl8VwSEWpU2VnY8rluFIZbg6tQs9Sm10TRKCbU2EIS8uLG9mnx6QTOlgqdurNW\\ncAkQeGHDpjmmYkKVVIxlxihapHV2W85pJ59sLV7WBU0QRPC87aEQeV6E+cYSIrG/GlJfFa6uFHK/\\nDdZGzxsU23k+WbkEIZKp9r9Tw1hmbJ07LwAgWpsqsA5aPLnGMc/s94B0i5nA5YXdSHqEExYZkZ8l\\n9KyexUQ0gTAKuZJNQAKO8y6aRRwsHUTRKCKrUQUdQzY434a9Zs3pKpJEaxwSZqTmBA4c30HVqfJF\\nH6D4aKaA1XAafPze6xKsSzqGUkMQIHAC6yBIB7903WvBordgZVr/LIlLgoQVawWqrK77TrNrr8mU\\n2D7dmOYwKnbMlxfXNPDTapq7SQM0gTWcBlY7q1i2liG6FA4IISkZvtRZ4h2sujyP2yc29hTYakhe\\nA0JgI5INmojcJgzZ4NMoURShidq679/FFDpu4MKFu67QUaMAKbe6LedD7BUQv70jwfkSiJ90LvE9\\n4Dvnv71e/lhYP4FhIQpioonD/p/5uGy2FvWL7TynnFzG2eYTqHSewWh6FLuyu9ZNsZnfS3yaGldB\\n65dLoijCbGMWTbfJ/140i5jITPB1s+210XDpNEsSJezK7YIsyVhsLaIjdOAGLuXyNCyYiond+d0o\\n6kWklBSGUkPIaTkYisE9aQBqpswaYaIgYiw9xv3d2l4bLa+F+dY8lq3lxPoJAdhT2INqp4qaU+N8\\n1PgURhRE5PQcn3LEc+tG0VtE9Pt+NNwGgpDC+iqdCm/wxEMQBHiBB13Wsa+4D+da52B5Fv+344vH\\ncfXI1byhKYkSTNFMFF9+6PMiR4okCnsUkvdPx+tw+J3r1jDqr5f7vpjQgjYU4sMXKeeKwewYn1US\\nqapl7/ePWSKwaQ7jWPabQAH0+8qmcf0KnZQoYOgChA02ip18srV4WRc0tr093ScWIjEQiq117882\\npnGIWFy56UK4MhvFdp/PkDaJVrREO9e+jfON8xhJj3C+SdxQLA73IhGBEK1PoFEUwQ99zNRn+GY7\\niiKMpkchQcJsfZZDuHqvSUGnsLGG0+DqMHFTs2VrGV7oYV9hH1RJheVZkATK69ElHXW3nkhAOTUH\\nQgg84tHPR1DQJm1okgaolNfjhz43zGQqZKxTuthapIaRkoayUeYYaJZkmWMyh0f02VD4oc+9khis\\nIn7eba9NO6xqFsvtZQRSgLbfptMbLc+hFayryPwOlq1l7C/ux7nGORAQyKKMc41zCEmI/aX9Az/v\\nnE43QpcVL4P8nAzP9gADODx8GB10cHLlJO8iCoKAq7Pb2zFKBRY6SooXI3ZAfYwyWmZgMh9U6HDI\\nWhhsudAR7JW+/3axEbbnIRau2NbX3ImffLwYuWRM343T7ROJdUOAAFmQkdVjE5fuT1pNc2hsb7CN\\n9IXq/3RegHNqkEV4oYeZxgyG08Mo6SUu7qFICofyAuDNpxDhugkUm0bM1GfWGlARJb3ntBzmW/Nc\\nTrlXzcxQDOwr7MNYegxL7SVYngVBpJDliFA+yPnWeYxjHIqkoOFSpTBmmMyaKCw0WaNrDPEhCRTB\\nUHfq0GUdQ+YQL1pyWo5Cdrv2ATW7hrbXxnR9Gnvye5DRMshref4YJn7Dml5xEYTe9TDOwwSo2XT8\\nu+AGLkhEMJoaxfnGeQgQYAc25ppzGMuMccg425tUO1XKAbFr2JPfg7pdx5K1hLSSRqVTweOLj+Pw\\nyOGBXEV2nCklBc3TgBoACcjJ1JS70qkk1EALA4qGi42yQFCRVD7RtDwLbuBiODW8vinbDVEQKRdK\\nSRY6rOHJpzk+LXY2KnQ6fgdmuD3FDIudfLJ5vKwLmjDcXoG3+6d/hC89/dm1KQWEvlCAzY7rYslf\\nv3LFf8Ct44M9Dy40nlh4Cv/PiT/iMDj6P4E72fcuZpsVZswNmUlmBmGwVhDFum/9yKvxKZAkSAij\\nkDvAs+QW95MxFINPN7g6XPfYZSmZEAISrMMei4IIWZABYU2C2g1dzlcB1tzmmQ9OHN89KOKy0736\\n9b3XKogCRKQ7xRGwDk6giipkSU6cA5MWZf4yopjc5DAIxWbReWcH6A6PPvr9j1JZ0i48gKkC7X/F\\n24FMeeMXuoCw7CqaggbLsxLJgqneXQiUb1D0FjrM14JEBBNhG1sHeGweUXhp3KKd+J8jXoxccqZy\\nFp974nN8ox9f+wZBlfvFpRCJ33XwfXjtxBsv+vm9cWzucdz1+B8CAF8j2VS5V71rK+fjBi4XFuBT\\n8R5IWj9vFNalZ9eTkdqZ0WMY0XWOEMKhxHxSjghCFOOEimJyTe82yeLiMpJIFdBIRLmgYRQiDMOE\\nwqIgCNAlnb8e84PbaP8Qh+El6KN9Hs7EfFiR2MsR0mWd8nuwtkYCgOM7iXPstSyIK7kNihPXngD2\\n0f/+7Sd+G5mZDOeFMaj6h656C942eWTD17mQaFjLaGgEDbfBvd0A4NnKs8jpuU1V0DYLVVYhEQl2\\nYMMLPM5PckOX5scogqkqwBb8D7caO/lk83hZFzTbLVidktPQRI0vDBvFdk1l4qFJm+vTX0iY3W4F\\nEzVgCyUB9ZGRRRmqpK55iPTBN7PfwyiE5VnwCJUnRgS+GV9n+BZFkCVK6I7LcsZDFqifQUACbsol\\nQeLFTdtrUxiRuMY9YkmGLeoAEERJDgsrQhmXhSWNuBy1EzhrQgRRxD/vfh3F3skMS2BsMgP0wb9H\\na0ISTCWOiSiEhEqEskQc92oAAI94/LVkUUZaTVMVL0InYl7oARESZNC+IQAQAUhAtVNFKIRr7y/S\\n9ze2ocBIvGVEr1tGy1Bn8e40KAKFjeiyfkGYchYc8hErRGVRhhZp/G9BGEBzbE7Y3Y6IyGAzzp34\\ntxMvRi4pGqUE7r/3OJLvvf3FDLD9+STd9Szp5Sq4gQtf8KFKKm9w9cslwNq5MmVC1sSJSzfHgxcl\\nskrXza4wTTwEUG8YXdbhBi73MyMiSXDxFEmBIiiAQPNZSEJIEV0LRVHkCqX8WBFBFmTeiJFECRIk\\nOuEBzae2b/OGIcGaKhorfgCsCen0FLOsIEAEno/67T0Ioa/F8h+b8Hihx2HFHvGgCnRKw943JCFv\\nYgqCgJSSghd6fLISEIoYSCvpjaHVXGaPvg8rHBnEUBREmNucS0TQz52JXNScGn/PulOHEzgoGsUN\\nm499z6W7v2C5lxW7hmLwvzG4nUksJCvNS4udfLJ5vKwLmu1WwXNCeqNHZMCXeKP94zYcjLvNFXzT\\na6DltXgninV5RFB+BZsKsMKGTVd61dD80E+MlwUIUGSFL97sb2yjGR+pDxJPYCGLMjJaBiYxOblP\\nEARIkLiBoiBQgy1DNvjEwifd5BOBd6BY104URL4IhyTkxRzrJoqCSCUoEXGYQT9CLpOp7FXm4Ymo\\nG3EX7wgR3NBNTIwkgWLgFVGBKqgIEfKOGYP3IQIvhETQ82HHmlJSEHyBFzWMxKqJGlWQYxOz7qQi\\njELABEAASIAVWLzTqUgKJNDPrRNs3URzKxHFvg+6rEMSpITwgRM4CEjA4TXxa9b73+z6bgazYZ5P\\nbugiRQJsj0c7jR3vgJdGvBi5xPLb6+Fj3Y0r22TyyXnPMW5HLgG2P5+0vCb80IcIkXfoBUHg02cG\\nI2ZNMr5WdqcmAaFebHZgJ/aJcT8q9hxZkBPrOfu3ja6NJEgwFROG3FW9DFxEQgRFVOgkNwzgRR6F\\nZckKZFCIsEc8+F63+SSKvOGkiipdN7u5IkKEMAx5k0qTNJqnQIsyVpzFj5cFy6eCQJXr4oUZn3Qg\\nAggSEGcmhR0/R6AL1RUoVI491w99KF3eCeOCxnMPa+gxuBpAi6W216YNMgiJdZevxUJEm2NiEg0R\\nz5t2uL25hMSahExOu2pXOdTdDV0sW8somWuCFHFFwbi/U29OGRSME+sRr/v/IdBnQnixsZNPNo+X\\n7BWKj5oHJSFJ6oqjb1PcMHkER/Z8Bhktwx104zFoKsMx0peYiFqtEO329uGerxm7GneN35X4G5OW\\nDKOQShgqJsXJds25REFE06XO04yAvdRZ4hMJWZQxnBqmkqFdqVBGugSSk4t4bJaMWLiBi+drz+OZ\\nyjOcqMeuu6maGDFHkNEy6zYLWS2LklGCoRi8o2Z5FlY7q3whEwURBb2ArJ7F6cppPpZPK2mMZ8e5\\nwstGPA1FVBBGITRJ48WbIinwQx8tr8VlmFlCz6gZKgWppPh3mvk4sLB9my/Yc605mDKdYhwsH+Qe\\nQpZv4dTKKcy15mD7NsIoRFbNYjwz3ve6/vpf/zps0QZE4Ffe+iswDAMlg/r/MCO5Q/r2EhSzZhml\\n/O5EcRKSEG2vzaGFrMvIjEUvNNjGiX1WbuhSeAcREQgyEG1fYhW2ucO9Ey9OvBi5ZDw7ijtfeSf3\\nVBlLjyVVJXs2WKwhk/D86rMxvpDY7nxy464bsD+WT0ISouk14fouDLWbS2S6+UyraWiyBsu30HJb\\nVBAm8LFgLax5ioF6dhWMAjJqhgshcB+YS8wlIQkx35rH2fpZNJwG39h6oUfFYhRq9skks1lktSym\\nclPI6TkOyWL+MhwWLUpIq2kU9SKmG9OcdK+ICsaz4+j4HbTc1kCeBpuUq5IKUzZhKEaCh+mFHryA\\nTlNYYafLOoXuskILNJcsthf56zqBwycxZ+tnUTSKiKIIVw5dyQV0mIXCM6vPcHheWk3jFUOv6Kuc\\n98t3/DL+9eF/BUTgI5//CG666SboEjXeZvdT2lkF7O1ROQOAYmoUI4UrEoUKIYQaT7uNhCJcWk0j\\nq2Uv+D3YdXZDF15AJ09O6IB5pvmChO1cE3byyebxki1oEt2NAQubYYjbumD7Yhsh8bDaWcVqZ5VO\\nD7o68qa8HuLTqwS2EQxtKwvwdp/PYysPQNNkjKXGOGFTkRQUjAIc38F8ex41u8bH/4yfMZwexkhq\\nBCFCrFgrHK6VUTM4OHQQY+kxpNX+Y2q20PZ+Zr3XZtD10GQN+0v7kdWymGnMYLo+jZCEyGgZeKGH\\n52rPISAByqkyRlOjMBWT+xA4oQMndCBC5JtetkCLgoiyWeaQp4nsBKbr0wCAtt9G22tziIgXenzD\\nHMcqiwJ93SAKYPkWZIEmGTYhIRGB5VogoF2inJ7DaHoUiqQkzjelpuAGLlY7q2h6Tcw35xEJEc5W\\nz8Ij9L1zeo4fX/z9FVFBO6KY4qbXRNSKuCIQC49QMQC0AfjARGoChyYPYSQ9QpXHuok88i1g5eG+\\nn8PFBDGG1snSAuDdP1bE9VNBGxRxSVEv9PgGIQgDDiUhEYUntCQDo+TiDDX7hZQe37bX2okXL16M\\nXLJgU5XC05XTeLbyLGRRxnhmHJOZSUzmJtcV83ESeeLvWPMBY939OCdio7yy3ed0svYYCmaWT/Ml\\nUUJBL8BXfCy0F3CmcgZ2YMMNXSiiAl3WMZYew1hmDLIoY6G9wKfMhmxgf3E/9hT2IKtl+0KHNsol\\nfDqEwddAEiVMZieR1/NYaC1gtjELO7CR03PwQg/L1jKHwmbVLEzV5M06NgFgEOaQhIkGp6lQVTCP\\neBhLj+Fs/SxHNDB5/tH0KJzAQculja44yoFBkC3PQtNpckiYJmlQZTrh6vgdPtmKpAgFvbAOvp1S\\nUxgyhzDfmkdAAsy35iGJEhyfkt6XyBLSaho1p5a4Nnk9j9353ThTPQOACtg8ufwkXjH8isR3M4oi\\nhFIXbRACmqBhJEWbinE0BjGL8Oa2r6BxtTwct7VuqsLyRcWu8HulalfhBA7KZnlDCBqb5rM8EhCq\\nFsc8zDpeB37k831SjUTYi+1rkO3kk83jZVHQDOqqybIAVRW2RZqSiC4iIUhwJggI6i51bGbQn7SS\\nRkbLbMnJPH7sgzb08fPczvNZsGehKTI0SUPH72BYHUYQBVjtrKLltuhi2SWJsxErc1pe6azgyehJ\\nGIpBvWX0EoYyQ7iqfBVyem5L587M0nr5NeyceyU8WZCIoGbXIIkS9hX2YW9+L1puCyeWTlADTIFC\\nFOpOHY7vYG9hL/LIJ57PjCejKIIkSsioGezK7oKu6Pw4DNlAQS+gYlcgQMBCawFpNc29C1RJBbQ1\\nhRQ3oBAGPv6PqCZ/3anzc2GY5pyao5huRcd8a55OWAILHa/DzcrYItryWrRLFLhU4lrLAgKQ1/Lo\\nF6NpqkzWdJswFOqCLEsyXjn8SirxKkhYspYgz8lAC4AA3Dp5K3aP7l7/GalpQCsC2yF1rJcAeTA/\\nxlCoZ0LLayVU0MIo5NK0wFoBs+56oysl2p3KxDd+TOAiIAE6oQ7zEo1CAUA0hnYkNl8i8ZPOJVZY\\nQyQGkIiUkGqeb87jXOMcxDkRw6lhTGQmsCe/ByktNZjbE4PO8AiRKGgSIjbiGlyJnhPgbcOerOYv\\nQVcVOKFDjX9FFYvWIupOnZovEh+iKPI8wqBlNaeGp1aeopN9k/qUFfUirhy6EiPpkS156bBcAqzn\\na26USwBwifqxzBhG06Noe208vvQ4Ftp0882KFJ/4yKpZGPJa0RJFEVpeC3Zgc4GWjJLBZHaSk9LZ\\n51LQC1hoLUASJdSdOlU80/Pc0HEoNYSABGi5LbS8FixvDYrLRHKaXpPnZFa4ZrUsNElDRsugE3TQ\\n9JoJkRymyOkTH/OteTqJiiIsW8vYU9iDKIrWcblYjKZHIQgCzlTOUA4R8fFc7TkcGTvCm1AdvwM9\\n0IEuoKCgFDCSHln/GSkpiHoZxFnd9PPcLIhWAJF0DJqOMAjairXCfYNs38ZiexEjqRFumgoAXuBx\\nI/SABPzvIaGiRG23zYtsAJz3G0YhIMroROJOPvkJxsu6oAGAVEqE5106E7iUMzGmHYDlWWh5LbTc\\nVqI7TyJCIUV+G4udRZiKyac3jIB+IbKavQs0686pegTPu3Tc5oz1NM61zkERqB/A6cpplFNljGfG\\nYcgGbN/mnW9TMdHyWnBDlyq1QIQd2BBFEZZvQZVU5MM8Tq6ehCzKMGSD+6BktWxflRtgDRrQe66D\\nCpsoooQ/RmpkZM8IEY5OHsVCawFn62fhBA7SShqKpGDFWsFqZxWj6VGUjTKqTpWTVpnCTVpLo+bW\\noAYqDJkaaAmCgJHUCFouTViiIGKmPoP9pf2JLg8j5qfVNJzAQdtto9KpoGpXEURU0MD2bTS9JpUf\\njQA7tKFKKjRZ49jl3mB8HmYm1/JoNyogAQpGgcM2UkqKv39KTfHf51pzONc4x1+PRARZLYvnqs/B\\nDV0IEsW2o049drhbuQAu2R1GIRpyBrltKGjE9OT6zz7WHGBms7qiJ1TQ/JB2d5nnUK96T78iRpOo\\nzDMrPNmURpM1CKoBNE5f8vnImfUF4E7824yfdC6ZKJVwx/gdWGovYaYxg5n6DPdZYRyIlQ5dt04s\\nn0DRKGIqN4Vd2V0oGkUQUHgNk47vS66PcR16ix3GWQlJiEiRAc9Y9/wLjTPNJ7HkLCFChHONc0gp\\nKUzlp7hoCZPETStpOpHw2xyO23bbdILqtyC5EvJGHs/Xn8dMYwa6rCOjZpBSU7QAUHSuSBaP3t83\\nyyUA1k3YBYFOiadyU8hqWcy15tB22yiZJaTVNIIowEpnhcLftBzqXj1hvCxChCzJWO5QbzcGu5ZF\\nGTk9h7bXRs2u8VxiDpmJaYcsyigYBRSMAgISoOk0UbNrqHQqIMIaF9IPfD7Nnm3MwlAM5PU8TNns\\nK1ksiZQ7JILmmabbBAFB021iODWMnJZLqIwydThZlDGRmcCu7C6cXDnJr9/pymlcM3oNhzZz7rAH\\nSJC42A1rWHJ+kT4EZRsKmiiVnGT0Ks6y3zNqhtpEuC3ON1psL3KBiF64n08o3D5exLD9DBMHYHDs\\ntJamew+7ArSeu+Rz2sknW4uXfUGjaQI0TYDrXnxnjb2GIAjU4VxNYyw9xnGwLW89FpZ12pesJd5B\\n6eXdbARFY3+Pq6EAgKwAshIh8C+ej1P3l7HsnkcQBljsUHxtWk2j5bew0lnB3vxeTqbL6TnktTwd\\nn4ceTq6cxFMrTyHEGokzRIiG00DBKAAR0AypPwDQLRpEFYZC4UNpNY20QvHTrPu2UTKKw/YaToPj\\nq5lLdtOj7yMKIiayE9hf3A87sHG6ehoNp8Gfe7Z2FscXj2MoNYSJzARVwZK1BLY2IAE1/HQa3MBy\\nKjeF09XTXFntfPM8JrOTiCIqn8w4MXWnjsXWIip2hUMB4pLBYVfhCwCXlfYCDy5crnLGuj8sVEnF\\nZGaSTyGGzWHoso7X7HkNJrITG37Ge/N7EUURZhozCMIAz1aexbGFY9ib30s7d2IENAGE4AUe8/wR\\nBIFD3oioQ5NT0ANrw/fbKERjCEpqfEOJ0vhnIAgCOl4HNaeW+O4zFbR4ERMhoveXmuFFIktoTBAh\\nDlvrEAJRTkO7BEM00RiCZK7vQu7Ev834SecSXafrAJsKHJ04ippdw0xjBrONWaxaqwleDzMYfnzx\\ncaTUFHbndmMqN4WxzBgnarMCp5fozII1A5jkLD9fIQAkGQgvXn627i9j3p7GUmcJQRBQboxnoe7W\\nMZmdxGh6FEWjiJye41OOMApxunIajyw+Qrvj4dqxNZwGZEOGIAl0gxmT5VVlFbqkI62meU5lzYt+\\n3JlBhQ1bQ9jvzOiZFYJ5PY/J7CRSSgpzrTmsdtY24lW7itnGLNJqGmWzDEmU4IVeQuI4jELUnTqq\\ndpXnmZH0CFUC7U7cz1TP4LLCZVBEBQRrn08QUvNOBqNNaxTiZhELXuDRDXpX7Yw1bdpeGw2H+ukY\\nCoUNs8ZcSEJ4xIOu6MiEGSy1l6hxtKhgMjOJXbldG36+I6kREELw1MpTXHX0W2e+hSuHroQqqRRy\\nFgGQQGHd3alXPHeTiCDS8hDVPCSvvsG7bRyCXoaentySmWxAApiKCTdwsWAt8DxXc2owZAMls8SN\\nUlkRw0QrTNVcE6/oiibIogxd0Xke90IPzQiQd/LJTyxe9gWNIAjI5yWcOjWPYnH4gt9HUejze/kw\\nwBpOdlQYhRu4fHITx8ICVHHD7bjreDdsAew9F6Z40puU6PkAmUyEVlNAcBEqfw5pYzE4zc0zM2oG\\nS9YSmm4TJqEKMMvWMrJqFteMXANTXYMJBU6AslnGbVO3oWJX0HSayGpZeMRDJ6DFW0pOIaNlEtfL\\nDalUZqLIkVSoosqnC2mNksBlQU48Ny7jya4r66wxiBhApwoFowBdpn+byE5g2VrGM6vPYLYxyzta\\ny9YyVjuruKxwGQ4NH4KpmNzvhh2bIAhwQxcVuwLLs1BzalhsLcInPmzf5q7P8YWNiSSwv8uiDEWm\\nco8+ocmT+aJookYx0d2JiqmYMGXaNUpraeQ1aqbX8ihZ9nzzPDSJTnOYApgTOFSxpkd1BgAvpEpG\\nCS23hadXn8ZyZxmEEJwOT+Py4uWQmzLgAiDgHSh23dk504mNgLo5AWHmOEYKF97JFdUctOEjEPrA\\nEBnpkmn8O4GT6CabislV0PzQh+VaWBVWkdcoVCOjZaBJGj9uNtViuGdEgCitbQxJRCBLCoL8Qcj1\\nU5Auokjj57Pdslc78aLFheaSmZk69IsQzOjNJXFnetaZv3b0WtiBjdnGLGbqM1hoLyTuCcuzcHLl\\nJE6unIQiKdiV3UWnN7ld67gNcU4Aa6wwFTV2nqIoQEm78NsSSHjhk3+HtDHrPkW5JVoay9Yyqp0q\\nAkILm6bTRFpN4+j4UeSNNZhsx+8gq2dx665bUbWrWLVXkVNzCEH9W5atcUxbTAAAIABJREFUZRiy\\ngZyeS0ywvcCja4FvYcla4kR5TdJow6wL+dZkDaqorsvbbDrFNt2O72DJWkoolIqCyIswABhKDaHl\\ntjBdn8ZMY4Z7lTXcBhpuAyOpEVxZvhKGYqDhNtDqcjvYxC0gARZaC5RH2SWuK6KCql1Fy20hr+d5\\nzogQwfXXoLSCQM1WTcVETsshiOgGvON3qGEo1gobUaavwdY/phiZ1/NwA5dzP3L22jUNSIAVawU5\\nPbdOCSxeGJuqiT35PXhy+UlYvoUoinBi6QQVCogUdIeF620Mute7ezLw8wfQOfcQMtqFNwVENQdt\\n5PqBamDsu84gyWvvC5SNMip2hfJjQh91p47p2jTyRp6jG/JSfk1ooytMwzi1veatQRjADVyk1DTa\\nigGp+RzkMLnv2/I57eSTLcfLvqABgJWVZbzhDUfxqU99Drff/qYtv4em0QQkiv018+PHockU5lI2\\ny+uwsHHiWkAC1Jwaag4dPafVNDJqht84cU33XkgOl2uUBSjFCPV6eEH45/naDOzUEmRJ4sT9slnG\\n5cXL0XLpdIaAQJd1VJwKvvP8d3CwfBBXlK6gE4iYWsp4ZhxHxo6gald5scA0/f3Q5xtLJ1wzNGOS\\nlVEU0Q47aBHIrqMqqTwxmbLJla5IRMfjDLPMeBXsM2FwhF7oVtksIypFyGgZnK2dxUpnhY7/tRzq\\nbh33nb2PE1MVUUHFplCxptvkCQ+g36/Vzirc0IUqqag7dYxlxjifg20W2PsrkgJTMVHQC7zLk1JS\\nSKkpTpgUBZEvvOw92OdPCMFCe4FysyDShVfPw/It5PU89eXxHQ49Yw7i8YkQi6yWpdMKQqhPQHfC\\nJfoi92RhMqGCIKDh0ITMEqMsyQhbIW58y/vw2U+8Fz/92uu3/H0TjWFow9fxBMSKWzdwuSjDZlKZ\\nsiDD7iaKjJbh4hVMrY4VMbpMO2dtr83PkQXzp4h7LQXFQ1Baz4PYK1s+n3pHwtjum3fkNV9icSG5\\nhJAQd9zxM/jN3/zoJeWSuOEisMZ5AWghf7B8EAfLB+GHPs43z2O2OYtzjXOJ77Yf+ni+9jyerz3P\\nN+G787sxnhnnYiRA1x8lZnDMeTVdHgaJCMIcgdUCAn/rRU07rGLefwa6ogFCBFMxMZGZQEhCLFlL\\nHK7s+A5+dO5HmMpN4WD5ILzQw3R9mot1DKeHcWTsCFp+C5VOhR+nT3w4gcOhuWxiwaBXbL31Q5+r\\ncy6BFjmKqECRlDVIbgwV8P+z9+Zxll5Vvff3Gc88VdWpuau6O515ZggQMUDC4GUIMonoKwHuxatC\\nroDXBLwkhLyggK8iARREBRn8IIpEBTUq4I2ASTDETHSGHqq6a646derM55nfP3btXc+podPTvRLS\\nK5/+pKv61KnnPMNee631G6Q3zGp3lZXWimiMrV/2jJ1hPL9VlCFrZ5koTJC20hytHxXF1PqmN4gC\\n7l+8n4SZYDw3zlBmiJpTEwWL2+iR6I8iUQitdddIm2mablMQ/Q2btttWRYQk90ufm3g+7U/3M6gJ\\ncQIJD5fCNZuLEXn/zDXmsHSLlc4KOUvwbdJGmobXoLHaYDA9SDFV3LA12EbGuJQqMVGYYP/yfmBd\\ncXTt0EYxGIEWbfjgSDlrCS/WNR1CuOpNt3DDf3/ZKeUSed0VnzLYWX1UHFqErdusddZoeS0swyKb\\nyKp7UJ5fOflLW2kFu4+HVBuUEuQAum6RGHkOUeXBE8on232mM3Hs+LE9UyeShG688Ubm5+d44xt/\\nmje+8a389m9/HN/fuSJOJDTSaV3BzI6lTrZdxLGwUqlETm/ilb4f+qI7tT7OzlgZNUaPq2/FJTpl\\nGIZGX59Go+3QagUQ7Cxx++1/u4M//eqnmV07zOc/83mKSTEBkMaV8415Gk6DulPnUPUQS+0lkmaS\\nYqrIw0sP8+DCgwznhulP9wMC+jNRmMDQDUatUdquEApwA1eRHEF0jSZSEz3ynC2vRcfrbNl4qyLH\\nd9QkB8Rmu+21sQwLP/RJWSnK6bLotusmpWRpi3w2iMV2ujZNrVsTxEUzSTFZZLG5yOOVx8VCFbus\\nKSvFcHZYFSFAj0JWX6pPfcam06Tm1Nhd2E0xWVQeOLlEjrHcGKP5UcXtqXY2DL9ksSa7XjLhxmWG\\nlSdLIMw9ZSFVd+oKbuGHPqZuUu1UFflUeh/Ei+DVzipzjTnGC+OkzBQrnRUBlyMi7AthEQg3jCgr\\nnQodr6M2P5ZhUU6Xecv1b2F+YYnX/LdbecvPX8ttH7oRnMqO95ueKmPmJtFSZbqBi7MOn3B85wkL\\nGGmUJ+8zCQnseB1lxCk9FLJ2tucZ2zwZ1RBTsCiK1M8CCtOupQcI2ov4jeljJqJ/+t/38odf/Dtq\\nXZN//dfT56x+Jn404kRyyR/8wR9w113/xt13/zQve9mr+NSnPoeu7yy3ujmXbLfp2q6rLcMyLPaU\\n9rCntIcwCllqLSneTRyK5Yc+02vTHK4eBqAv3ceu/C525XepdTvOk9gSJhi6y1qrids1MKOdp7Hf\\nvusOvvIPn+dt73gro/2j5BN5pURWd+q03BbDmWGO1I8wW5+l5bbI2lkOVQ/x+MrjZJNZBtODamKw\\np7RHTFyTOfpSfSw0Fmi4jQ3xFVAqcBkrIzbwbpOG26Dtt1UjJ37+pMJhy20JNTJNeJfJvNF0m0RE\\n5O288lobzAwykB5QOT8+SVtuLdP22kREjGRH6Ev2UXNrzDfme373XGMO27AZy42JfJIqqdzqBsIU\\neSA1gB8IgZ26U2e5tcy55XPpS/aJBtU6Fydn5yimimp6Xu/WSUZJJQqQMoXZoyzUComCgug13aaC\\nwbfcFjo6LbdFpV3BsR0M3WDAGMDxHRJmgqX2kprEyKmXLEyk8XTLbVFOl7GHbB6tPEraSmMaJu1U\\nW0xoPEjoAqq9nSKfoRl8/JMf5667/53X3HMvr/wvP8FnP/H/YrMzXEvmEj01iBf5OE5DIT6OVcDA\\nxsRGGqlahsV4YZy21xZ5eT0XeYGHqZvsLu7G0Aw6fkfJeMdDCkKsdjY4pYZuUE6XhSro0BXHnU++\\n/Df/yqc/+1WSZ4qZE4of27N1vEnoO9/5Dn/6p3+qXveGN7yactnmuc+9imc+8ycZGRnjDW/4OfL5\\nHLoupCxNcyvkaaff/UQhndFziRxRVmys1rpr1JzaFoJzyxP+I0vaxrh9M+9Gjktll0d2+E0SZPV+\\nTGx0zSCMAnxcZlcO8cZf+mmCZgAOzN47y2Uvu0y9n23YTBYnqTt15hvz5BN5AdWqPMpCY0FhtOeb\\n8wxlhrho6CJ25Xf1GB+m7TST9iRr3TVW2isEYaCciueb86TMFIPZQaWmEoSBghpJgmjH6yhIlowg\\nDKg4FZrdJp1AEPMLiQKr7VXSVppisih8ZGJ68V2/y0p7RchJ0wtfylgZ+lJ9pK00i81FKp2K+gwd\\nr8Ph6mHmzDmGs6J4K2fKCjsrP4/sdFm6JWSe7TS2btOf6qcv3aeKuY7foek01TXWNR3btrdcc6Cn\\nCJRJeLUrFs2V9gopK4WhGQxnhrFNWxXApiES81BmCNMwlaqN3FisdlYVPK5voI+LjIs4WhdCAZqt\\nwRCwKMbni63FHofvlCV8ab7zne/w+c9/HhDPw+t+/pdJjz6Hq658Blc+fR9jwwO84Wd/hly+CEaC\\nINlPRxMdLKe+IUqwU0gCquocm9t3iDO2KPa90FMbMlmMb8fNkZLPkpAsQyZ++XozM4yZGSb0mgTN\\nOaKgSxT6aLqJZiRZrMHrfvHVeJ44N3//93/PS1/60if8XGfiyRPHm0sWFxd573vfq173nOc8nbGx\\nHP/9v/8K6XSJkZExXvKSn2L37sltc8lOkss7Hc/mY5FTmOHsMM8efzYr7RUOrR5iam2qh+MBsNpe\\nZbW9yoOLD5JL5NhT3MPu0m6lggjrPjFOXfFHeop+EmS0EgY2GjohAX7o8l9/8f/h7u98D1y4ePRc\\nfuM3fqMHGl1MCr5ltVtlX98+hjJDPLb6mPBoIaTltdDrOsVEkXP7z+WSoUuU/4mGpvJR022y0Fyg\\n43XQNNHAWGguYBs2Q5khJooTAMpEOQ75lqpq8fUsiiKafpO1zprazCZMIYGcNtOM58epdWs4gaMm\\nuoDa/G7m8hWSBYqpIiPZEeYb88w15tRrpMfL0fpRRnOjjOZGGcwMirXda9H22qSsFNPVaSI7ggjh\\nqRaJfFxKlshbQtlRNvc2q3Dl7NyW6QGIdTJjZxhiiK7fVbLPADWnRtYSqIdcIkc+mWehsUAQBaTt\\nNK7vsqe0R0DGpRKebkLEOrwqo37HUG6Ih5ceFve0DowA8+sQs3W4fPw+N3RDPD83bTw/Vzz3pRT3\\nPJ9f/sU3UUh0GRse4Kde8kImd+8FI0mYHMDVTRq+g9ucf8JmmCy+5N5Cvn6zUl7GytCX7MMJnB5j\\n1qm1KWVZEA9pV9H1uz3FjKmblDPlHtPXY+WTEIuX/PR13PldYYVw/mUf4+abbz7mZzoTvaFFJyKt\\n9SSK0dFR5ueFtOLMzAxjY1tJ0r7v8/SnP50HHngAgNe85jX85V/+JUEQkEwm8ddJKJ1Oh2Syt8t2\\nqoXM5veSHYv4QxlfhLt+V5HD4xGEgeIWSNLksY7DMixlZllMFkmYCa6//no+8YlPAHDZZZdx7733\\n9khdxn/XYnOR1c4qQRjwH4v/wf7l/RtFmZ1jND/KeQPnMVmYVHCw+LmJoohKp6KgA/HNZtbOMpQd\\n6hnnx7G8buDS8To03Ab1rpgWzTZmqa87UGto+IG4ZpIAK99DEtrlObJNwcexDItCskDC2Eb9RTOo\\nu0IEwDIsVVgkDZGw9vXtY7IwqbwD6k6dI/UjLDYXxWdGY09xD/lEnpBQTGDWOTGA6qDqmk4xWcQ2\\nd56ixaEnUmyg2qnyWOUxEnoCN3K5ZOgSNISJW9w8zNAMBtIDipe12lllvjWv3i9rZ9nXtw/LsJit\\nz3Jg9QCvfs2rWa2sgg93/fNdjI5sKMdISVHf93na05/Ggw8+CMCrX/1qvvqXX914fgIfTJhZmAFz\\nA852zPtTt4SM8rqakxRP2C7icDJ5z0hxhoYj4JxBJNy1JTzRNgQvy9RN9VzJsA1bQPBO8DmOPz+X\\nX345//7v/95D2j4TT+54xStewde//nUA/vqv/5prr71229ddd911qrg/55xzeOCBB0gkElxxxRV8\\n//tik/Ld736XK6+8sufnjmcqc6zYLEUsyeNyegyiC3+0fpSZ+oyCBm+e7Mv1opQqqfX8WBL7hmaQ\\nT+QFmT+RJ22l+dznPseb3/xmAHL5HIcOHaJUKon33yRO0HAa1N06YRjyaOVRfrDwA3xfTNlTVoqR\\n7Ahn9Z3FnuIe1dCJqx9K0ZeF5gJe4PVMoCVUOC74IXONNHzu+l01yVlqLTFdnVaNRF3TQYOclVNT\\nbvkepmFuuMtHUY9iYilV2tYbS05xJOfJ0Awlk23rNmP5MXYVRCOw63ZZc9eYWZvh4NpBVQgNpgfF\\nxIhA+boVkgVSZkrBuuX349zWzRH3Jup4HSrtCl2/ywNLD5A1s3SCDvv69pGyUirnSzPRKIqYLEzS\\nl+4TsG6iDU7QesHZlxKTpGqnyv2L9/Oe33gPd911FwTwpY9+iZ/56Z/pORZ5j73xujfyhc9/AYCz\\nzzmbBx94sPf5MeGOf76Dy55xmVJKO1YYmqFU3aTJ6HZFnjwOCSeTPNQoipTgRttrq4KxlCwpHx1Z\\n4DSchjLyhg30wvHac8iIPz/5fJ7Dhw/T19d3Qu/xVI4f24JmfHyc2dlZAI4ePcr4+PiW19x22238\\n6q/+KgDpdJr9+/czMTHB/Pw8o6NiAzcwMMDy8sZ48Im4MscbOxUxPe/JhkdAEAVqNL3UWqLm1JSC\\nVvzndU2MmtNWWvEI8om8gpHJzXQ8FhYW2Lt3L52O6FR/5Stf4XWve92Ox95229y/eD/LrWUxuVg7\\nTMNpMJIboS/Vh67p9Kf6Obf/XAbSA1iGteVzBmHAcntZLQLx5FpMFhnMDOKFgtzZcls9/2+6TY6s\\nHaHareKHPl7gKVUTQze27QJFCNUxuTnWNZ2slWU4N8xAeoCB9AClZIlCsqD+L6EF0pDzcPVwT1dP\\nbhxGc6Psyu8SY+UoYqo2heML92DDMJgoTAgRAN1ShWfLa5E0kqTMFPlkXiyiujgHhmb0FDCbO8TL\\n7WWCMOCRlUdUF6mcFupsEkcuYWgSZy25QVLgQeKuc3aOvaW9iiOjobHYXOTSqy9lZW0FEvC5z3yO\\nnzzvJ7FN0R2UCfv3PvZ7vPOd7wQglUrx0MMPMTg6yPTsNBddehEYUCqVuPfee7fe29oGWTVhiKLE\\n0AzRTQ2cEypi4iH5aXWnvgVGNpAeoJQqKa5V3MRzs6LdicSJPj9n4skVr3zlK/mbv/kbAG6//XZe\\n+cpXbnnNv/7rv3LVVVepr++44w5e/OIXA73NtenpaSYmxPRgOx4C0FNkHE9IYrUXeDs+N5omZM9N\\n3SQIhZDIdG2aA5UD1Jyakk3uySXo9Gf6Gc6IqU/aSpNLCEnifCK/rTmy7/tcdNFFPProo4CAc3/o\\nQx/a9pgjIvzA59DaIQ6tHsIPfI7Uj7DaWWUoO6QmpTk7x76+fQykB0QhsfmcRVDpVjZMnNGFylck\\nOIKjuVEswxIeLYQ9fEI/9FlqLTFVncIJHLzAw498QkLytoDJef7WzXPba9MNNtS6UoaYWMvJTMbO\\nkDJSJM2kQFBoG9dptj7L9Nq04v7J8xFGIeV0mfH8uCrgZuozLDWXaHktnMBhPD+OZVjKe8YPfbpe\\nV0yobTFVydk5DM3AMizFI5TF3OZ8stgUXKaFxgJNryl4N1aKycKksJlwm0qEQfJvdE2nL9UnzmHk\\nK/5nykopiWcNTUH3rn3rtXzv374HOtx6y61c/9rrVdEg7/U777yT5z3veeq4/v4f/p7nXf083MDl\\nnAvOYamyBMBdd921bXMaUApkUgim43WoO/UTKmLiIWF0sqiJi/r0pfpUASqbmTJsw6acKZ/wcwzH\\n//ycie3jKQE5287deWFhgZtuukl9fdNNN6lEMzMzo74fL4ROx1RGFjHHwndu3tS23JaCkNUdMY0I\\no1CoNK0XO/FjlKPglCn4JHKR28mEbHh4mOuvv56PfOQjANx88828+tWvxjC27y6sOWsUEgUAKu0K\\nzxx7Jlqk8djqYyy0Figmimiaxj3z9zCRn2CiMEExWVQb+iAKMHSDYrJIFEUcqR1huS0wyF2/K0jt\\nQVcpnMUX4iAMlNCATNKyYEuagj8iyfhEwlQtDEPaXpv+VD8pK4WlW+TsHP3pfgWZA+Hl4oYuNadG\\nspUkbW4UhXuKe9hb3Mt0bZrHKo/1SEQfWD3A1NoUE/kJzi+fz+VDl/N49XGB4w1FN7CYLaqOadNp\\nYumWUKTxmsqHJ22lVQdRZyMJxa+thCR03A6VToViUigDjeXGVGdTYpqbTpOV7oq6/w+tHVLH3Pba\\noMF4clxxiCxDqKKVM2X0jg7r3mQtr8X+lf1cNXmVKmbm5+e56ZabwAJM+NX3/ip6UWelvcKBIwdg\\n/dYZHhnumc5JDxiZ6OWEseN3TrqIgY3JjJy4SCNO+dlSlpCCXeusIf16ZEhFtJONE31+zsSTK54o\\nl/i+z9ve9jb19Wtf+1pVzHiex8LCgnqfkZERYPti5kSmMkDPpnzzscpcpXxD1jvFju8oc8WcneOC\\nwQuotCssNBdYbC7S9jeaACEh9W4dz/dYaa8wlh9jj7GHVDa14/Nimia33norr3/96wHRNHzHO97B\\n8PBwz+viExYv8JRS2CVDl5BP5DmwekDJ47e9Ng8uPchIboRd+V3Ku02dQ00YU6bNNPONeZY7y/iB\\nmMTPN+bZv7KfYqJIOV0WkvjrjaMwDFloLbDSEnC8hCk4jIOZQcqZ8gZU2XdUTuq4HdacNQzNIGNn\\n0CINwzAoJAro6AI94NQxdEN4kxiWmsynrJRoCqVKDGWGWGovMb0mpkJy7ZtrzDHfnGcwPchkcZKz\\nSmehoakmTxRFFO0iXiQaa27gqql8tVtVSnXFZBFDN9TewNCNLRts1xeIhzAKWemsCFsFYCQ7omDw\\nIJTeypkyByoHVBG33F5Wk6u17hpr3TUKyQJe4Cn1Ly8U4j8ZJyNgZ5poON03fx9PG3kahaTYQ/i+\\nz6+8/VfEbtSEl7/y5Vz0nIuodCp4nqeKGYDBwQ0lWqlelzATJIyEavoutZZOuogB8ex0fOEPFxGR\\nsTPYhq1MtFNmijAKma3PKh8zGVL46WSKGTj+5+dMbB9PiYJmu0LkhhtuoF4XVfW5557Lu971LvVv\\nmwuaU53KHG8RI/84vkOlW1FcmPhUQL42YwlJ3yiKlEqNoYlFND7mbPtt2s02CywoE7JcIqc6QPHz\\n8alPfYp6vc4jjzzCF7/4Ra677rqe10RRxFxjTnX+i0mBEdY1sZD3pfuYWptipj5DyxNEzweWHmD/\\nyn76Un2CvLi+ODcc4c0jz4mESSl5ZDSqnSoNp0EhWSBtptXUQS6qpmYykBkQsC47T9oWHcS0mSZt\\npzE0g6bTZL45r8h/ba+NoRkkraT6ntxXBGFA223Tpq2urzR3k5LRURQxkZ+gYlWYa8wpeELSSlJz\\na9w7fy+TxUlKyZLguRiocyXH8HXq6hplrAwhoZL4lF4qKTNFqIWqwJFQktX2KmEoyL8SJldMio6g\\nNDuT92XGzlBIFVhprXCkdoRqp6rgV7lkjl154S/Q9to03aYoHAyxgdAiDdaAEhCKrtMDiw9w3sB5\\nhFHI237jbTRpQhr27N3Dm//rm9V9IjdwRDA2OEYhUSBpJpVSjBcIdaJKu7LjMxEvYrYzyovfk9LT\\nafMGsZAsMJwdpuW1lJJepVtRggG2IfyP4pCSk43jeX7OxJMzniiXfPKTn1Swy3Q6ze/+7u+qf5uf\\nn1c/Mzw8jGma297zx7sB2skvJh6S3C8lgWUekRyQ+OfSNZ1ypkw5U+bioYsVb7HardLxOj0CAdVO\\nlWqnyg/mf0DWzjJZFH43w9nhnuN/7Wtfy6WXXsr9999Pp9PhN3/zN7ntttu2HOdSa0nBc6UoS3+q\\nn7bfpi/dx2x9lsNrh2l5LVJmirnGHCstUVjl7By2KfKJF3oEgZjI26ZNOV1mubXc0zVfaa9QaVfo\\nz/TTn+ynG3SZb8zT9buquEqYCc7qO4u8nVc8GXkuAcG/bK0wGAziBZ7wEwsCEmZCuMn7G0T0IAzo\\nhB3Fz1vRVoSX2HoukTzL4cwweVvwUp3QUYR/6ZU2lBliODfMcmtZwboGc8LsstKuMNecwzKEYpuU\\noa50KoJbuc6zLSQLSvXN0MQ+AQ3qbp0IYUYt9w+WYdGX6usprtO2yKcD6QGm1qaUUNFKe4VyukzK\\nEgWunHxXu1VVOKStNGZkwhIwLCwqOl6He2bv4eKhi0kYCT7+Bx/n4emHIQ2JZEI0yuQ9shQrZgYG\\nKWVKSvVN+vs0nAaLzcVTKmJkOL6jrADikbWzlNNlas7GNGalvULH61BMFtWeSopGnEoc7/NzJrbG\\nU7KgufPOO/nCF76gvv74xz+ObW90fuMFzdj41vHm8dywxwspM3SDIBQmW7WumMLEcf3bRcJMKAhZ\\nIVHombwcy+9GqmUtt5fFlGL9Ac9YGfr7+3nXu97FLbfcAsAtt9zCG97wBnVeoihipj7To5wjIQgt\\nVyiTTdemVcExVZ2i4Qp535SVQtd0SqkSxUSRlCUgcVJXPwxDdFOnbJbpel0x/Vg3sUqaScIgxMWl\\nlCpRTpfF5MROMZgZZLKw4aC7+ZpXOhXRLdOEE3LWznJO/zmkTOH9opRu1uFsru/iRZ6agEk5427Y\\npdqpqsLS0A1s3WY8P07X69JwG4Ljg0hoj1ceV6piUgzgaP2o4qkMZ4YV78nQDSIipbCj/FbCUCU/\\nOUIPwkAd20pnRbhMayZ7i3u3FKgykmZSwBVCh2KqSBAGFJNF9pb24oXeupfMhoPzTH0GJ3QIUyHU\\ngMY6/rst4BzzzXmah5t87favqd/x/lvej23balOwtrAGTcCHfcP7KKVKwhvCFbAJyXPafN1kESMT\\n1hM9Z5LUutkDIGEkyNpZVTTmE3labqtHcajhNJTD9+mIJ3p+zsSTN46VS+bn53uIuzfffDO7dm0Y\\nEW7OJSczldnMi9kuJE9QNpckDEZyK7YrfqJIyP8Wk0Wx8U0UepzkW25LmXnON3r9bppuk4eXHubh\\npYexDZtdhV1MFiYVJOoDH/gAr3jFKwD49Kc/zf/8n/9TISBAQJ2WWhub1ZSZUgqLAJVORZmEHqoe\\nYr45r6Bdy+1lBtIDQn7aEpP0hJVQOdfSLVKFFB2/w2JzkYYjpP8jIgEvW5sSXD0joSZYxVSR3YXd\\nWIalCpwIAV0Oo1CZZINQ6koaScZyY+QSOcXvdAKHjiskkjf7+8hrFIURLb+lpvWyYdaf7scNBDrA\\n8R1CI8SMTOYb88w35pV0cF+yj6XWktqg77P3Kc8ZP/QJogALofjpBA4LzQUWmgtkrAz55IbanKEZ\\n6vMst5eF5x0aI9mRHXkfSTNJOV2m6TYZyY6ovc1wNpbPEE3VIAwEz7NbpZkQjS+aosG60lkhjMR0\\nbCga4sO/+2H1O971zncpuL9t2NSWatAGApg8d5JisogbuAqtcjqKGEB5F20W5YnzZAD60/0kjAQH\\nVg8oSHO1KxqFo7nR0+IXo+v6Ez4/Z2L7eMoVNJ7n9cADXve61/GiF72o52d7JjRjvdybY92wx1vE\\ngEgIEkbWco9t4BdPOhJatVMcr9+NF3oKGyr9bt7yK2/htk/cxurKKlNTU/zhH/0hP//mn6fu1DlY\\nPchqe1V1w3VdTIniERLS8cUIeyw/Jvx0OlVabkuMbNsVGt0GA5kBOl5HdT3yybyCd6VM8afrd6m7\\ndSUA4Ac+DbdB0kxSSpYYy44xkhvZcv5hg58jJzmSeFlOl1VXT0GFQ/Z/AAAgAElEQVS8EJAB5Wvg\\nCRPHtttWncqG2+jZhAdhQKAF2LpNIVUgn8xTd4UKXMsTZmaWbmHoBgcqBxjMDnJW6Sz80GcsNyam\\nJIkshUSBiEhJDrc9ITEq/8jCVvqqSCJkpV0RvBNDQKkkVEDdYzE50em1abpBl6SZpOsLj4Kx3Jgi\\nb8oCqtFtMNecU58/TIUCcuZA0khSd+qYuonjOtxy2y0CaubDy1/ycl7+wpeTttKqCFmdE2IC6FAe\\nKytlu/jxyWslCbwSOnA8CUF6SkjZURmmbqrJS899uV4opq208mLI2BnlqyN9f0413vnOd/Lxj3+c\\nSqXC1NQUf/zHf8wv//Ivn/L7non/3DhWQbN50i85ZTJULtHYwuM81j0n+RYSQrvTcRnrioEyn0iC\\n9k6fQUMTRP6E6NzHOZWbn72MneGC8gVcUL4AN3AF72ZtmqP1oz2oATdwObh6kIOrB9E1ndHcKHuv\\n2Mszr3wm3//e93Fdl/ff+n4+9elP4Yc+s/VZFluLyi8mYSTIJXIstTcKnISZwA99bMPm7L6zWems\\nMFufpRN0MEKD5dYyq91VxrJjFFIFZcIsOSOGbiiRmbbbZrG9SK1TY6G5gOM71IIalm5RzpSZKEww\\nkh1RRYy6xhFKvKDtt8VECyElXUqUhIQxGglDSBHr6Jh5MSH3A7/HU0uKlLQ8kYfDQBQ5suAJjABD\\nEzDsjt9hpb2ijDGl4EC1WyVtpZksThJGIeP5cYXWGM4Oo6HRcAU5veE0FM8mCAPR5HQbzGtCqdTQ\\nDGWD4Aau4r6WM+Ud70k5BR9ID7DcWhZqaHZO2C/kJ+j4HdVMdTxHNQ0DI4AMoAlUxXJrWTUr3/fH\\n76MdtcGEPRN7uP6Xrlf+aZqmsba4JnKJAeXJMlNrUzs2fKUMv+R3Hc+aLnkymwsjXdNJW+ktey0J\\nR8sn8urzydfNNeYYzAz2NAVONl72spfx7Gc/m7vuugvXdbn11lv5oz/6o1N+3x/3eMoVNJ/85Cd5\\n6KGHAMhkMj3wABlHZzbkZGUSOtZGS5IMd1TdiFCa8nW3rkwgdwpd03uI/NupphxPbPa7kepPTbep\\nSKQSKyo31C9614v48z//c9Dgpj+/ifQVaRp+o+eBz9pZctYGhjr+WXK2cGGutqv0p/opp8sChx15\\nJIyESqIT+Ql2l3ZjaqZSyokvQH7oY7UsMWXS6CGsNr0m7aCNEzhq+qNpggTqBq7qAMkRfNpK9+Ba\\n48eraZrCxVu6hZWwyEQZbF3AAjJ2RkxyQiH16Ac+lm6BJopCqXxSSIgO51JriaO1o6y0VxT865HK\\nIzyy8gg5O8fTR58uxBIyA0KBa724ytgZBfeSOHY90kWCJVLa94ZucLRxlLwtPIKGMkOKN9WD9Y9C\\nDlcPK2PStJWmL9Wn3K3bXhs3cDF0g2qnymJrUSShQHwm0zNhPW/0JftIFVIcrh7m29/8NjPzM5CH\\nRDXBbR++TU05wijED3wOzx4WHTkNBkYHtmzINE0TeHLdPq5JTPwzxXkyMmRS385vKAgDhVGXinYS\\nagPiGlY7VXKJ3I78nOONfD7PjTfeyA033ADABz7wAd70pjeRSu3s2XEmfvRjp1xy55138sUvflF9\\n/YlPfGLLRO7o0aPKWFDlkmNMZbbjxWw+Ftd3lThK3alvmVD2vH69Uy2VyHJ2rqehEI/N62I8bMNm\\nb2kve0t7RXe9ucD02jTTtWnRLFsvwKIo4sDqAR6rPMYzfukZfL/1fWjCZ7/xWX7hgV8gXU73qEFl\\n7Axj+bEe7o90o5cb5obbIJ/IkyqlmGvOiQ2z75AkqeTk9/btVYVMxsr0TBlSpmgGrXXWMA1Ticgk\\nrASmJpo0rueKxsa6OqGu6QI54QjOXcYSDRBLF5As9f4RKvdEWqTUNnVdV9w9L/AoJApKdMAJHKW6\\nJTmlUkY6IiJlptiV30XTbQpOUHtZTeCm1qaYWpvCNmzOL5/PZUOXCUjZ+vqWs8VEQkpur3WFUaSp\\nm6q4qXVrrHSEnUG9Wydtp+n6XYayQzsWAXEfr6ydVQWRpmm03TYz4QzFRFEpi4VRSORFSn1OOiRk\\n9Sxnlc7i8dXH+eFjP+Su++6CAWAWPvpbHyWXzuFHPpEv7oFHjjwCRcCE0lhpy9p/MkWMvM/iPJn4\\n+8nG6uZnIIxC4fvmO1iGxVBmCD/yVZPaD33mm/P0pfpOWmBGHYem8cEPfpBrrrkGEOpnN954I2ef\\nffYpve+PezylCprt4AGbu2ZRFG3h0GyXfJ6IFyNH1HWnvsUNeLtjzdpZBSE7XR1jP/RpuSLxyQTY\\ncoWB5Wp3lZpTo+t1exLiRc++iG/c+Q2ajSZrwRpfuuNL/MRzfkJwSNbNvDJWRpk3pq200LZfd1yW\\n0K6MJTw+ltpLysdkvjGvTKpWu6u0llpMFieF9ON60son8riBS7UrvACUqgsCmiVV27zQY6o2RV+q\\nj6HMEJZu0fKEIklEpBKTLAo3J2v5dfz7UjxAdtHQUN0xmVwtwxKJad3boBt0VXHQ9bv0p/opJovU\\nujUWW4tiHB1prHZWqXaqzDZmObf/XC4YvIChzBC2bpOwEmpzLwnqEsYgDcKaThNNE7yiulNXxVvS\\nTCrvFR1dQdMOVQ8puAnAQHqA/lQ/S60lZeIWEan3ASE1mTATlFIlzM5GQZO385xTPoeEm+Cdf/FO\\nCAAbXv9rr8dP+yy3NlQAwyhkenFakEAjlNxzfBITL2I2b6y2kx0/Fk9G+gdt94z6oU+tW+t5RiWX\\nqeN1NuA4RNSduvKmOZV429vexkc/+lHm5+eZm5vj93//9/m1X/u1U3rPM/GfG9vlks2T/p/5mZ/h\\nhS98Yc/rIiJmZmOQs7GxbYsZWcTIgmBzuIGr1vCW29oymdwcaSutpjD5RH5bCNET8YLiE1T5tZwY\\n+aFP2kpzTv857C3tZbm1zHR9mrn6HNVuVb3H7j272XfpPg4cOEBExPV/dD1v+vk3MZgZpJgQvIOB\\n9IDYKEcbnEVJqDc0AzNhMpQdUtL4o/lRqt0qR2tHVZOr7tZ5aOkhxvPjDGYGRbGzzkX0Ao+5xhxe\\nKIQH8ok8q+1VhTCQa/tKZwU/8hnODZMyU7iBy6q7qviWgJLrV+co9p8U6VERbvCd5JpmaAaGaahm\\njmkIfx3Hd3BDV8GepBCBoRlCftofURMpS7eUyeVye5lDq4e4ZPgSRnIjAnoXg+xm7IyQ119fB9e6\\na7ihEAKIwkjwiJrzlJIlWm6LwfQgdadO0kz2GKxubiJZukU2nWWpvaQknSMiKlZFoQXiSJGslxUQ\\nZB1Seoo9pT0Mp4f56Ac/Ch5gw+WvuZzsOVkOrh5UkzI/9Hl04VFIABEMDQ2Je/IkixgZXV/k7M17\\nNzlp2+55kbLbcQEAyU9quS1W2iuK61ppCwPqk1U6k3H11VdzzTXX8M1vfpMgCHjf+97Hn/3Zn530\\n+z0V4seyoPH9iDe96VdIpTJkMlksq0SjEfDhD/9/NBqiY33eeefxjne8Q/1MfFGPFzRxPLRc1Lcr\\nYhzfUYSxhtPYscMmI22lFYRMSh2eaARh0FOoxAuXptvskaXdEpHYqObtvFjk3A5dv4thGrzgBS/g\\nb//2byEJ3/u37/GsZzxLdNJyY+zp28NgapDBzKBa6HeKhCmgBAvNBaXffqR2hIbbUJ2sg9WDDKQG\\nmCwIs7TF1iKmLgonTdeEKIBdYGJ0QqjN+B1lihUheDLVTlWRBKWai5TpTVvpbTfJ8UQtCxkJR4r/\\nu6VbZBNZkmZSvU/STJJECCzAhnmbJN26voubdTm7/2yqnSoPLT9EzRGqaEEQcGD1AGvdNdKWMGwb\\nzY5imza2aatNtUxK+URebOjdNpZuUe1UVfeolCopaU2ZwC3DUl1TWRDJpLbYWuzpgDbcBh23Q9pK\\nqwQ0mhslpxtc/6pXkEkYZDMpLsknyPoNPvKZL+IedWEARsdHecFLXsC/zf4bZxXPUqN527CZXZpV\\nBc2usV1kbXH+dtpYHauokXCa7ZJPnCezOSQZOr4xyyfyagojVdAabkO9d8fvCPWnU2gopNNp3vve\\n96rN7oc+9CF+8Rd/kVzu5FXUzsR/Xvh+xEte8iquuOJqMpks+/ZdRqMR8OUvf6Fn0v87v/M76mfi\\nCmYql0QwsWuiBw66E7nfD33qTl2t43HDxO3CNmwFIdvMqTyekM+gPB4Jc4t/HTchjkcURWQTWS4Y\\nuIDz+s+j6TaZbcwyW59lubXMC178Ag4cPgBJeOjQQ9x78F5B7k6VuKh8EVk7y0Rh4glziaEbJDIJ\\nGm5DweZm67NCWGT92OYaczTdJntLYloz35yn6TRJWklSxvqkJFng/IHzAeHoXnfq6vmX4gm5RI6k\\nkUTXdTVlz9k5MnZGXdv4NZbXLy7e4gauamLKCY6maWLyv359pMF02kqT0TLqvbxQICckHKzjd5go\\nTNByWxxYPbBxXwQ+C60FgvmA/cv7GcoMMZIbUcqctmELvo8l1CGHc8NEUcTR2lGSVpLV7qrawNuG\\nLdAjlfrG3iRRFJzH0O8xIrUNmwYNIYZjJnECR0x71snypVQJQzNImSmShPzc85/Dyy4+i2wmxRXn\\nn8uEafBHt3+L+R/MwxBYaYtrX3Ut98zew0huREHZk2aSoytHxS41gJHhEWWpIKGFJxLHy5PZHBLC\\nHodZSiEAQKmgLbWWelREZ+uzpwxB++AHP8g3v/lNAL785S/znve8h4svvvik3+/HPX5sfGiiKMJx\\nIlqtENfd+SP9y7/8I3/6p5/m13/9V9U4b3OXPpVO4bni5q3X66Qz6S28GNn1qDk16l1BhJcd8u3C\\nNuwNIv/6A/lEIQuWuP9KvHjZDku6WQ50u69lSO5M2k6rCYtt2HScDi99/UtZXhWd9599w8/yS9f9\\nUk93Svq4SNKd1J6PY7Xjf297beYacwIS1l5hpj5DEAVKPcwLPXV+ALXIFhIFBSWSMs4tt6WSlx/6\\nVLtVNQYezAxSSpbUQhKXv94cYRgKfPMmjgxs8DG2gzFt98h4gacmXbquY+mWcA7urrLSWmGhscA9\\nc/coiEjSTAqVOiJSVoqJ/AQjOYHj1jW9Rw0HoON18AKPRyoCuoYGlw5dim3aKom23BaH1g6pKZht\\n2IxkRxjIDPQcaxAGTNem8QJPiQ6MZkcYSyQJ6tOE3ZUtn0/GP3/nB/zh7X/HJa+9mrPPP5sojLB0\\nq8eI7VnPfBZBNwAPpg9NM1AYUMlCwr2261T3cN3Wk8/x8mQ2XwtpLCp/504bPQlji3feNLRTgqC5\\nrsu5557L1NQUALfeemuPRPyZ+NGOE80l11zzk/z6r/86sNUk88orr+Tuu+5ef/2/cOVzr9xC7g+j\\nUE3z625ddOe3kdmVYepmDw/mWJzKeOxUrMjJS/zzy+OSvFDFLdHY+r3YcUmlRUM3FDTtre99Kw9O\\nPwg67Dt7H9f93HUUE0X1c7qmM5wbZqIwwa78LsFvW18H4+uF/NoPfKWIWXfqHK4eFs04zcA0TBzf\\nEVDmZF79TMJIMJgZZCA9oI41ZQmu5nxjnmqnKojsXlO911B2iIH0AH2pvh5jz3jECxw5bdlyLrV1\\nOPO6LH78nPUgB9bXRHl+JXRN+nM13Sar3VUaToN7Zu5hqb2kTDolH9PUTYYyQwxmB1UxJn+3nHpV\\n2hUM3eCRlUdImSkCAnYXdpOxM0oEwQs81pw1BcGSyIx8ciuUarm1TNMV9gO2bjOcGWLAAP+Jcsl3\\nRS6xnzbCs656tircJwoTZO0sYRjynhvew2MPPgYufOmzX+Lq516tJvKycSnFMHaKIAxoe+1teTIZ\\nK3PMgsMPBQIhfk37Un3bTvKjKFJFsrqmmnbKELRrr71WNJgRnli33377Sb/Xj3v8WBQ0YRixthbg\\nOMf/URIJjUJBR9d7F6ilpSWh+a1BoVRQsoFhFFJ36qqIabktRRLcbsNs6qbqmBWTxW03xlI9ZXOh\\nIosXKfkIOxcmm7tE8VDdH1sUKxIaJouXpJnccuxe4DFdn+arX/sq77vpfWCJadIdd9xBvpDftmiR\\nI+CsnT2m340ck6+0V3B9l6P1o1TaFdxQaOmHUUjaSrMrv0tMVogE7yFREFCuVLHn/ZZby/xw+YcC\\nIraeBJJmkvH8uBjBrxNe4wal8c7/5klaFEUYmkE2kSVlblyv7a5vFG0kpiiKVHEp1Ws0NOF7EsOL\\nt7wWM/UZpmpTzDfEqN/UTbWxkMmonCn3yKVKAvxKewU3EFhvWbS1vbbq5C21lggJ1eI+nB1mKDOk\\nJjDSvLLpNtHRaXqiIMyYSYbdFUy3tu112y46Rpq72k3a6/4Ihm5wYflC/KbPpZdeCkCukFNdbNnN\\nk14ykvOzubjxA2E6Ks9nXAFtJ55MPNzA7eGo6Zou1OD0Yw+j4xA0GacCQTvj+PzkjJPJJZYVUSqZ\\nbN5TaWhMTEwwMzcDOjz40IPs2bNH+UnVnTo1p6bUkqRU8OaIu8IXEgXlV7U5Nhcq8WIlvs7JQkVO\\nauOb8nihsjmnyGLF1E1MY8PfRhYy23EOptemuf+H93PdG68TvDoTbv7AzYzsGtk2j2iapoj6k4XJ\\nLYIn8ZD+bH7oM9eYY64xp8j3aCIHj+fG6U8LGLBtiAl4LpHbcg5r3Rr7V/az1hHrdUSEqZmUs2Xl\\noxa/rpv5iq7vbvGDk+9hGqb6HrFTFD/v8esSn9rJokZDo+k11fTa8R1m6jNqGmYbNmk7La71enOu\\nlCrRn+rv2bDHoYsNt0E5XcYyLHbldlFza7ScFn7kK3SHhG4njSTlbFlA4u2cWstl42y5vUzLbaFH\\nEf3deZL+sYWO4tHQbP53Y4VajJx/Tt85jOZHueaaa1haXgINvvbXX2NsfAwdXTU3ZTN1u+JGQpU3\\nq70eiycTDy/wlIm1jP50/7bm5PGIQ9BkZOzMSfvT3H///Vx22WXq67vvvpsrrrjihN/nqRBP+oIm\\nDCNWVwM878Q/hmlCX5+hipqIiH+/99951rOfBcB5F5/HN771DdE5Wx9Na5qGwdbFWxL5JYxMdt+l\\npOJmHkvTbQpOwEkUKjI0TSNjZUjbG7wV6dqbtbPHfGBlAon/3Qs9ptemlcrWta+4lqkHp8CBG999\\nIze9/yalYnIsHPex/G5AwPPmm/OsddeYqQnHaskHkXLOhUSBwcyg6DAZFgMp4fIuN5hNt6l8TKRa\\nW8pKkbWyhIQKljCUHerptEuFrM2dVDWtOsZitROZtut3cbyNzpz8fdIEVdM0TMOkL9nHbGNWTB4C\\nj/nmvDIBjY/1NU1jODvMcGYYP/KF4o3X4tHlR7EMYU66qyA6mZZu4QdCOcgLPVXQjGZHGcwOiuLV\\nypJP5oVK2Xr3V9O0ddy3T1/zCMYJJCB1Lo0U9wXA+vOgaRrOrMOLX/hiMODc887lW9/8Vs/GSZ7H\\nuMGmXOSlqepmkqacID6ReIDjOz3dMV3TlcHccX2ewOuBoAFK3vxEE9Fmx+d3v/vd/NZv/dYJvceZ\\n+L8bp5pLSn0bDbIwDHE8h3wxL0RHTPjhwR/i4CiZd13XMTVz2/sza2fVBEbyBOIFS7xQkVOXuMLm\\n5kJl8zO4XcQLFgm3ksXKsSbdcjofd6OPoojp2rTweUHjhhtv4I6v3gEteNGLXsSf3f5nHKkdYXpt\\nmtXO6o7HlEvkmCxMMlmcZDAzuK2be61bo9qtcnj1MI9XH6fjdTB0g6QhpuCjuVHG8mNqYiGbezI/\\nuoGrnODXOmssNBcUAgFtg+M6mhvtaXCEUYjne9vC8Uzd3NE/Kz7p2gxfC6MQ13MVpFo2YqTptDy/\\n+USeSrvCclv401TaFWBDqMYLPOHPEwWUEiXF55itz+IEDofWDmFq4jr3JfuE8bVhoaGx1l2j43dE\\njo9EMVNMFZVnV9bKCrGhpFB6M3ShErrQmCVXP4AdHNt2YrtwjST3ugHheuMxjEJ25XZx4bkXEpoh\\naHDvvfdiWGLy50cbBXraTCuJZglFk9Oyzec/YQjz1Cdaz93AZbm13ANBl8bcxxNe4PVA0EDcEycL\\nQfvZn/1ZIdaEeH7+8R//8YTf46kQT+qCJooiqtUT66ZtDtuGXAHQhHzuX/ztX/DWt78VEvDMZz+T\\nj3zkI2oSs/khkONKuVB2vI6atsiCRT4QmwuV+Pd2CqnQpYj2MfJ9xsps26nbrlCJ/32npOT4Dkdq\\nR9SmXNM07vnne7juDcIcMJ1Oc/DgQeVYKyccDbdxTN8cuSHM2RtdMYm3nanPsNxexvVdFluL1Jwa\\nGSujuixRFDFRmGC8MK7OvaVbijAoQ9fEolx360IUYL27KM3EJMyv43V6FhjZ1ZFmnLIbdazrE+fe\\nSKx0x+uo18oFVRIP5SahL92HZVh4gcejK4+q45dJ9UD1AK7vgrYOhQu6uIErNv5GQpml2YaNqZvs\\nKuxSiWuhuUAYhaJrqpmCB2PnRPfUEBsSeZwSslVIFthdmMSq7ifsLm/5nMcbYaLEf3ghwfp9ftf3\\n7uLdb343uPCi//IivvJXXxG+Cuv/rjZdsXMrN2fys0nMueymyg3fsQoaeT/KMHTjpLhpEv4TL9hP\\nFoL2la98RTk+b35+zsSPVpyuXJLJh4QEOL7DY9OP8eyrng1JKPQV+NrXvqYgRJsLhJSZUs0ouWmW\\nxYoXrHtjsRUCdjyFiow4HExOVuJFy5Zcsgn2RURP0RKfeMPG8+mHPlNrUz0Ig+ZCk+c+7blKUfLb\\n3/42z3/+88W/uU2m19b9bprzO36WhJlgV34Xk8VJxnJjCglQ7VSZrk2z1l3DCzwqnQqrnVVKyZKa\\nSgcETOQnGMuPqVwiP5MbuD2Tk5ydo+21WWguqO68nIwUU0WGMkNq0xw/VyCEVSzdOq5cEj9nksvp\\nhq66rjJf+6FP022qQjFjC75HFEUcWjukGqOWbpFP5DlSOyLMkddzrRM4dL2usifoeB3mGnOq6Tpe\\nGBcqbesNWOnlo2magqnJ4zEMAx1dmXBmE1kG04OMZkcwVh8+pVxCsp/7vYj2+kSlUqnw+qtfD00Y\\nGBngwcceVGuzzO9BGPQUN3KfJhXmpIpo0kwe16QexF5oub3c04Arp8snXIicTgjao48+ygUXXLDt\\n83MmNuJJXdB0uyHV6s7qYccbDX2WFVfwO26//XY+9nsfA4QW+Dt/7Z1K3k/iVeVC0Q26avN8IoVK\\nPNJWWk1Y5IQgrhgmF9/txvPy+/G/n0x0/S5HakfU4q1rOuP5cVJmiqc97Wncf//9AFx//fXbOtbK\\nznbDaWyrRCXD0AwSxrq/gGmrrmNcIeShpYdouk2h9Z8sKaWW0ZxQy1rtrOIEjiLM5+wcg5lBldwc\\n3xHFUVfAp7zQo+W08CKPUrJEMVlUMCdZIMqR9eYEDb3XMk6clZ+x63fVayTvR/oBGJrYTCfNZA+E\\nreE0mKpNqa9Hs6Lzd2D1APtX9gvI1PqGpeE2IBJS1cOZYVJWipHsCNlEFjdwmavPiWMjIiSknC6L\\nRCXJpV6HareqpEptXYgP9Kf76SdkH73j+JOJoO9CHqjN4Yc+t99+O7/30d+DRfhvv/Df+MxnPgOg\\nlHu6fldtBBzfoe7We/hLuqaTsTPCQHW9AO7p/m5zj8spqAxDN9R1PtmQqmrxOFEIWhiGPc/P//gf\\n/4OPfexjJ31MZ+L/XJyuXNLU56i483T8Dvv37+dtvyLEIc7edzZ/8sd/QoTYiGma1uO9JSGq8UJF\\nFi/HGxKyFoeCxXkt8RyymZ+yHVflWLFTjvNDn8Nrh3sEaUZzo/Sn+3nLW97CZz/7WUBwi77zne9s\\n+T0SSjVdm2amPtNDxO75rLohVCLX80DKSikoX9JIkrWzPL76OJV2BV0X05aElSBn5ZgoTmDpFnWn\\nTsfvKGh22kpTSpbUxtUPhAzvSntF5XnZ6CilBORXbpDlREbCw3Y6f9vyZ9ZfKqdssKH4RiTgcLKY\\nlbLUMv+4gcvB6kGVPwvJAoPpQWYbsxxYPaAmT4CA5wU+Hb9DMVGkmBKCRH2pPgVpk9wdL/AwDVP5\\ntjm+oxRSIyLFV5L8nAENnp44MTGK7UIfuJT/qM3Sclvsf2Q/17/9eliGy8++nB/84AfA9ubhju8o\\nISR5bgzdIGcLJb3+dH/PBHKnRlfX76rrDShvnlOR9D9dELTjeX6e6vGkLmgqFf+YpM3jjTVvif+o\\n3UnH6/Dlv/oy//TP/wQWPP+Fz+enrvkptdjJDeqJRMpK9coa22myVlZ141T3+f9AoXI80fbaHK0d\\n7XEznihMqNHq17/+deVYa9s2jz/++DEdayXJWqr0xB9iCbWT3R7pjTJRmCCIAh5ZeYR6t85ye5mF\\n5gIpK0V/ql9p+Bu60QMJS5pJRnOjPaRNQE2ADq4eVBwWeS5NXUwwRnIjCtscDw2th5AbL2I2S2/H\\nsenSyM3UTepOfWPShSCkx69hFEVMrU0x25hVMLPdxd0kTOF2vdBc4PDaYardqpj6OU0qnQqFZIFd\\n+V28+rxXk7JSPFJ5RCiqrUs7j+RGSBgJZfjlBA4rrRUabkOZvPmBKCbR4PmZIsPWqTvZ66kyft+F\\n3L9wP3/w6T/gS1/6EkTw7re8m99631aYleM7VNoV6m5dbVjkfZIyUz0EXDmhSpgJBW2RkDkQ91S8\\n8JDctdMhe346IGgn+vycif+cOF25pBFUOND+AUEU8N3vfZcP/9aHQYenP/PpfOB9H+gRXznRiPME\\nDN3o5bSsT7W3m6CcSKFyorFZyONQ9ZCagmuaxnh+XPFgpqamOOecc/A88cx/4xvf4KUvfemO7x2E\\nAfPNeTW9iT/nba+tNvoApWSJyeIkzxx9JuVMWcjTd+tUO1WO1I8AqNwbhAEJM9EjcmNqQhUzn8xv\\nySUdr8OR2hEF64qf08HsIGO5sW1zCWzl22zXAJXfj3NwZHHU8TqKVyI9heJrTxRFLLYWObR6SFgJ\\nBA7D2WGlwLXWXWOmPsNKa4Vqt4obuCw2FymlSvSl+rhmz6f7su8AACAASURBVDWM58epdqp0/S5u\\n6AqvNdPC1EzlVxdvSEnofK0r+F9e6PHTA3vYnTp1JUc9VUYvX8598/fxd9/8O259/60AvOjyF/GP\\nX90Ks5LQLgnLjnOQTN0Uxam2LvW8/uzlEjllfB2Xp257bXWNQeR0yTE61TgdELQTfX6eimHccsst\\nt/xnH8TJhO9HNBrH3706ViSNDHfO/hNLrQXuu/8+FmcXwYEXPPsFXLjvQhJGYscNjBxlljNlxvJj\\n7C7u5pz+c7ho6CIuH7mcCwcv5Oz+s5ksTjKaG6WcKVNMFpXErhz/x6cE8W70/8lipuUKkrrcsBm6\\nwWRxsgcnevbZZ3PHHXcwMzNDEAQ0Gg2uvfbaHd9T0zQSZoJ8Ik9/ql91k5bbyz2kaw2NpCWkfKvd\\nKqudVdX1sQ2b0dyoKkwqnYpYONcX1oSZoJgsUkqVCKJAdWakIpjs3GTsjJCV9B3hSL1+XCEhHa8j\\nVMS2WayCMFAFgSwWIqItiSmIAuXdkrbTyqOm621A8PLJvCJxNhzh4iy9GiqdipC8RJh8lZIl0U20\\ns0wWJlXXsdKpKMW1fCLPTGOG/Sv7ezyALh66mJHciJrsSV8eQxfymZZmqQJS13TsKOBp6exJ3jm9\\nEfltUoXdDGRH+NxffI6Dhw6CBj/x4p/gGRc/Q20QZAe15bbQdZ2UlVLHmrEy5BI55RAt4RV+6Isk\\nui5DHS8qpXCGvC6WYZ3yZCYehm4ox/I4ZE4W18cDZ9v8/DSbzWM+P2fi/36czlyS0NMcbj5CJ2jz\\nwwd+yA/u/gF04LmXP5drX3wtKSu1430j1Q2lhLqEGhcSBbUBld4yUl0yYwuhjJSVEipT62uaZViq\\n8Nlp+nw6QuYoN3A5VD2kGhSymCkmi+r3FotFFhcX+f73vw/A/v37eetb37rjcUle6kRhgouHLmai\\nMIFt2BtTk1hRYGgGfuRzYPUAB1YP0PW7JA3h6TWUHcLQDOUJJ0VHWm6LpJlUnBBN00TjJ3CESadm\\nKL6SPN9SCl+qh3mhUFSUnjHbfRbpURNGggsieTnxCKJgixePH/o9hHbJL3UDV/jcuSKfhFFIyxPG\\nl5qmqVxiGiYpMyWknM0UISE1p6b2LBk7gxd4zDRmhClnIkfSSip1N5k/k4YQcpG2AjpifTUNUUSn\\nNbiqOHLyN1EsIr+NndvFcH4XX//W17nr+3cBcOEVF3LVlVf1QLVkcWXoBvlEnlKqJBrI683ipJVU\\niJowEnC+ptdktSOU4qR/ThRFwpuvs6oKUFlsnI5iBjamRTJ/wHrz12uia/pxFTUn+vw8FeNJ60PT\\n6ZyeBCTjGYNXMtXeT3elCy4QQbEkTPjiExaZRLJWlmxCdOR3kiv+UY6m22SmPqM6bKZuMlGY2PJg\\nadrJO9ZqmqamMeP5cZVEnMBRCikAXa9Lw9vgP6SMFJquMZ4bZ0Ff4GD1oOqq9aX6yAWiwyINuOTn\\nWWwtKkUgyWXJ2Tn6U/0EYcBqd1V1b5xAQBuydpZypqyS03aTmLhKmuSkSGUv+TkNzRAKXW5LEf01\\nTcNpOT0dS0AVR2O5MQ6vHRacoEDgpHcXd6tCJmElGM4OExFRc2o0nAaWbrHQXABgub1MOV3mebuf\\np6BQtmkTEbEarJI0kgL3HukUckIq3A2EgVs5bELYC6k6lXDqR0n1nUvncEcYbxrQX+7nwcUHuWjw\\nIpJmkpbX2gKhSVtpyumyIpbKQrLrdxUEQ0JvHN9RxH9JkE0YCSzDImkmydv50/7sSZW0OARNKh4e\\nDwRt8/Pz2c9+lhtuuOGM4/OPUJzuXHJu4RI8s8Y/LP8DrPdwhgeH0RACJxIaJuE6knchi48t3JUf\\n8XB8h0PVQz38y4nChNp8xrkI/+t//S/+5E/+hE6nw3333cdf/dVf8drXvva4fk/CEA2pK3ddSctt\\nMd+cZ6m5hB/5JAyRt8IopNKuqE67bdqMZkfpT/Uznhvn0dVHhayzbpKxM1Q7VbJ2b2PHCzxWvBWI\\nxFRH5pKsnWVf3z66fpel1hJdv6skjmfqM6y0VxjNjQrJYcmdleI+MZGfHuTFOndFE2ME8f31Zo7k\\nxsimmmzo9cDb1/8+lBkS0v6hJ9b/zirn9J/TU0APZAbQEAVP3a0LXqnfIYgCxV+9oHyBgvpKBTNH\\nd/Ajn5bfouULBbmMncE2bSHaoJ1ekE+3foRE6Vy0BU3sxWwoD5R5ZOURwihkODtM0232TLRA3B99\\nqT61r+h4HQVNc9bVOCVfsxt06Xa6rHRWlEJdxsoIGKidYjA1eFKInGOFpmn0p/tJmsktRpxdv3tc\\nELRTeX6eCvGkLWiC4PQ+RAPJITSrS/NQE44CLrzqgldxydmXABvyifLvsAnzGmMV9hAl/y/Axk40\\n6k6ducacSjSWYQkPlPVO2+Z47vOey/OveT7/8i//QkDAe9/3Xr7whS8c83cEYaD4LjJ0TWcsP0Y+\\nkVdwnkq7IrpM69AByfEIw5CjzaMst5fJJ/JqvG3rwiwMhAJOX6qPhtPo4bLUOjXSVlp4CKTFAhcR\\nkUvmWGmviGS33g1bbgl4W9bOUk6XlcJKT/dPN5SyXRAGBAQ90po6Om23zVJribbbxo+EBHM2kd3x\\nuksC59l9Z1PpVDA0Q23YbcOm1hVGnEdrRykkCozlxgRnpjGnFnIJObl79m4erTzK3uJeDM1gqbXU\\nY+pWSpcUd0lObNLdU+fOxKPdXWWxdoSjy0ehDgxAsb9I1+/yvaPfY1/fvh4JVku3yNrZng6YnO7J\\nSZoXeKq48QJBBPUDn7pbFwIKQEtrKeO4ltciYSQUJO10bgblJOlkjDivvvpqrr76ar71rW8RBAG3\\n3HKLgOWdiR+JON25xNaTOFGVhYUFUdyHMDEyQc4W94nkWch7xg+E1O6xRFx+VJtmHa/DdG26t5jJ\\nT2BoRg+vTUauL8db3/5Wbvs9wcV87/vfy4tf9mIMY+fNo/SzkZNt+XsuLF/I1buvxg99ZhozTK9N\\nc7h6uOdYAKbWpnhw8UGaXpNioqg2vBoapmYyvTbNSmuF0bzgacoCAmDNWRMw03VjTV3TsQ2bsdwY\\nq51VFluLhJFQlmy7bVbbq6TtNCPZkY3J9CZ42eZr2SPTvC4CUOvWhAF1KAyos4nsjmuMoQnu5mRh\\nkrnmnICKhQGVdoVypqykrJdby5iGyZ7sHiXOIo+fCDzd4+Hlhzm4epCRrDDoXHPW1Forj8827A1h\\nANuiGLYhOnFls52i3V1loTbNgYUDUAMGoNBfwA1c7lu4TwgF5cfV63fyk5GTy8HM4Baeryxsat2a\\nEpOpd+vYhs2uwi5W2isKGiphaafrmdvOiLPltnB85wkhaCMjI7z97W/nt3/7twG4+eabedWrXnXM\\n5+epFE9aDk216tPtnr5Dr3oLrHGU5z/n+Xh1D1w4evQohULhiX/4BCO+mB3P9+LfP9WHqtatMdeY\\nU19bhsVkYfIJR6t33303V111lfr63nvv5aKLLtr2tW2vrUbh6vfoFn2pvp7fE4QBlU5FmSjKzpnr\\nu6x2V5V8dM0Rm3sJT5PdspydQ0dnMCPkieV43jIs1VmT/g2mbqrjcXyHucacIIzGkoSmaZRSJQZS\\nAz2YdDad8pbb2oBARQGGZtD1uj1qb/lUvkdRxTZspd0vN90yptamqHeFEoqpm5zVd5bCND+w+ADF\\nZJGW21Ij9abbZLG5iKaLTY+cukj/lbHsGMVkkUiLFOZadtukB0yxPUsuOH0Tmq5VoJYZ5/zzz8dx\\nHDDgU1//FFgi4Vq6xfkD5zOSG9nRmOxYEYQBXb/LcmuZhtsgCsXUxjbtng6r4t2sS0LLRHS6ipvt\\nVNDk/fj/s/fmQZJkZ53gz+8rwuPK+846u7u6W2qpESONgBFCWgxm2TXbNcRKQraY0QZiVgMDBjJb\\nZkyy/QczBMZyjWawRcZpBmLGhDGzMytmZ0BCHCu1+lZ3VdeVVXlGxh3h7uH32z9evJfukZFZmVUp\\n0V30JytTdmZc7uH+vvd93+84jhfxd3/3d3j3u9/NP+NLL7105P3zVnxr46xzSTeuo4tN/MQzP4EX\\nvvoCEAF/8vk/wXvf+94zew/g5EIx36zCyIs83OndyYnJrJZWD93b41uMVruFK1euwHVowfNbv/Vb\\n+PCHPzzxPdzQxY6zc4h7sFBY4DwR9h4Mllx369gaUAXNYUj9pVgTKIgDRGnE+SGWamHGnMGUNQVJ\\nkDBlTmHKnOJKWqIg8umZKqmcJ8m660zUZt/d5+ebBVNEUyUVIDiURwA6DRpGQwQp5TcyBc9sMcjg\\nhNnjV0WVQwyzeabu1tFwGvyzrJXXaP6MQ1xrXaOvNZpkVIwKtVAY7HLDZy/2MIyGXG6bGVWnSEFS\\nCrPWFZ1PpyVRQnW4Czs5uwbZULHRs5bwoQ99CM8++ywgAP/yN/8l5s/P81x2vnIe5yvnUdbLKGrF\\nU13HjOe71d/CvrNP5a1HiIuSnue7ZiWhDdk40+LmflXQWq0W1tfXMRjQQux3f/d38bGPfeyBP8/D\\nEG9aDk0QpIjjez/upNENG3hl7zl84f/5AlAC1DkVH/iBD3BZYtaZOMvOGMn+jxyo2kz6l5CEyxSy\\nf+z32cflPAiy5o+jMfTuYBfAQadlrbx2Ipzo0tISnnvuOVy/fh0AsLu7ix/8wR/MPYZ5wgzCQa4r\\nVVTpJCW7iSeE0KJlJK1sKAbnjTihw6chADBbmMVccY4bZ/b8Hu5072Df2+dd8pjEmCvMoWJUOIEc\\noN22QTBAlEQQIXJtfku1YGt2DhMtCvTvXuRBV6hSjixR40tGQm24DbS9NpeAzj4HoEZkWV+gsl5G\\nzaxxJR5FUg5trgtqAV2/y7+7nt+DrujYG+zRQimh/2YLs3QTL6m4WLsIUzHRHraxN9jjym4MilH3\\n6qgZNcwUZjg3JSUp/NhH3+/DSH1YE/wT7jcStYi6m+A3f/M3AQUwbAM/87/9DHp+DzGJucmopVJO\\nFZuqRUnEIXjHFR0CBHixx1V+ZEnOSdwCBz5BzIPADV0OXWN/z/7//YQgCLzzyooaAgphJIQcWdQs\\nLS3h61//Ol5//XUA9P75oR/6ofv+HG/F2cVZ55JB3MG+v4Xf//zvw0s9oAh8///8/ZANGWFKN+Zn\\n2fHNKqJNyhdZvxomQsLgS2ESchGRKIn4Yxh3JJtrsvnFCRxs9Da4jKwsyVgrr01sVIxzQU3DRBAF\\n+MpffQUA8OLLL+KZH30m12UmhGDf28eOs5ODFjFOzbgfiB/7PJcUtSIuVi/icu0yDNWAKql82mvI\\nBuUqjppVPb+Ha61rtKkU9um5iENUjAps1YYoHtg1JCTh+Sb7/VmqhapRRUISXggAtHhq+9Rjx1So\\nXwtbg53QQS+g/jnDeEi5R6NT5IYul4lWRIUbPRfUAsoa3cAflUssxaI+ZyMPmY7fgSRIGAQD9Pwe\\nDMVAGIdUqnl0TJZGJ09Nr4m6Q+0ThjEtalrDFvbcPaiiijl7DvPFeZQNyotyAgcNtwEz9WGLZ7cv\\nShQLvlzAr//6r2PgDQAF+Gc/9s8g6RKFjpEEPb9H9zCyin7Qhxd5ucnacZwxQRDgRi4ECFxJtagV\\nUTNrHPLJoIBRSputHb+Drt+lKp0kzkl/3+99LAhUGEmVVAzjA/81Bh00lMk+gqZpIggCfOlLXwJA\\njTc//vGPvzWlwZt4QjMYJHCcs9uQbQ1fx9+8/v/ip37ypwAAi0uL+Df/+t8AONgAMZJi1kDTlE3O\\nFWFxP54z3+xoD9u8iwTQicFKaeWQnCeLSdOhF198Ee985zvpLwntOn/7t1MTUiYPnJ3KyKKMqlGd\\nuMnrDDs59ZaKXoETOYeMEYtqEXEaox9QxZo9Zw/tYZv7BARJAFmQMW/PY6G4gAvVC1gvrWMQ0TE7\\nI3SzBFFUi7A1O/edBnGAptfkG9Qojbj8o63aPHkSQuiCNuqkSSLV4ndDl2vfW4qFucJcTolr/HxO\\nikEwwO3ubQBAy2vBVm1s9DYwCAboB33MFeZ4J26+cKDQlqQJ9t19bPY30XBpZ85UTK7gIwjUpJM5\\nRrNuYy3qoxQebWh32pDLl/DcrTbe/b53AxKwfnEdf/pnfwondHC7ezsndHGhcgE1s3boNRicQ5VU\\naNIBwZkVeVnfB2aMBxyWhM76dGRDEiU+IdMV/WACd59xWhW0F154AU899RT/769+9av4tm/7tvt+\\n/7fibOKsc0kr3kQr3sT7vvt9IAkBCPBf/9t/haEbvOhmoijMT6ygFjipPJs/xn8+ieHyNzsGwQCb\\n/c0c/zIrJjNpCjTOGxkMBrhw8QK6bapC+Ru/8Rv4+I9/nCt7bfW3cnBlSZDoZlovH/o8QRzkJji6\\nrCNMQvSCXu5xAgS0hi3c6d7BrrPLFRLDJERr2OICI0W1iLXyGh6dehTfvvTtICAc0pzN6bqs8/yf\\n/Sx1tw4ndACA+wilSLmgA3s8g9Gyho4syty7R5VUqKJK+Z1jDcd75ZIwCXG9dZ3ziSSRCiIwo8mS\\nVoIu63BCh04cMgptYRyi4TWw7+5DADU1NhUTIkSESQhbtylUWDwQnZhNh5hNTm/MfFSIpfMIjAVU\\nF6sUii4Bf/PVv4EgC7jVvYUwDvnmfdlexkrpsGqkANqw1WSN5xK2D2H7BxZMLIeL94ygaW7kct7N\\nOF9HAlU1LWgF2JrNJ2X3m09Oq4LW7/exvr6Odpvm8M9+9rP48R//8ft674cp3rQFTRwTNBpn11YT\\nzC7+7L98AT/2kz8GaMCT3/Yk/o9PU8lArjg2YUQvizJszebmjSWtNNHwMhvHFTzfjMKo6TXR9Jr8\\nv3VZx7K9fGrTQQD4yEc/gn//7/49AOD9738//sN//A/o+l1u5AUcyEuWtFLOYIwltUE44AuKAJpA\\nnMjJQbYUUeEqI4zc50cHna2t/ha8kI7Hu2GXd8dtzYalWLg0dQk1o8YTSjZkUUbZKFMX+ZHpJCN6\\n7jq7fFFh59qQDUyZFIaWpAnfeJf0EpI0oThnpuQzcqZncIXspjl7TbBJAuuYxmmMzf4mtvvb6Pk9\\ndIMuOl6Hf/dr5TUYsoHF4iI/p1ESoR/2OYZagIB+2EfTa3ISJJN31WQNK6UVrhQkJQFK3ddO/f0f\\nFX7t7fjP/+1L+OhHPwoA+M7v+k584U++AEuxECQBvr77deqQntBp2rnKOUyZU/d8XSabKokSVJkm\\neeZQzf6eDWZ26sc+L0onGQ+ySQsrbsbFPU4ap4WgfehDH8LnP/95AMAHP/hBfPGLXzzV+70VZx9n\\nnUvUoou7e7fxjm9/B6AChVoB/+n//k98/TvKq4RJ2WdNlI/LJccVO5OKoaMee5pghsjZYoZJzp82\\nfuVXfgWf+tSnAACz87N44fkX4BKXchwzBPmCWsBicZF7ogAHUDqmgsjOpyJSpcmsOpgoiNxfJkmp\\nDLEXedzv5mb7JryI5pJO0EGaplx5Spd1XJm5gidnn0RVrx4yzAQoLMlUTTD/liAJ0B62sd3fhhfn\\nYb0srxW1IpI04UIRpmxCkiQ+9QfAu/ecXzN2zWR/Hp/EtbwWbndvo+7WEcQBul4XhmogSiIs2Auc\\nwziOmtBlnU+E2sM2Nrob6AU9qvw2Mq2URRnT1jQWigvQZR1KGmN5uHXq7/+oGNbehs1GC0+9nTZ/\\nSuUSrr12DZZqIU1TPL/3PPbdfUQJRVssFBewWl699/pN6N6DEAJFUqDKNJcclYeYoekgGMAJHQ4x\\nHy9uspLQDIlxP8XNaSFov/iLv4hPfvKTAICFhQXcuHEDhmEcetw/pHjTFjTA2XkHaJqAclnEv/2t\\nf4uf+ImfAAB85H/9CD7zf34GvaCHnt+jY9hRB+eo4oYF88Io69S4qqSXcv4pZxUnKYL23X003Sb/\\nnamYWC4t56Yxp4lr167h7U+9HSQlgAz80Z/+EZ5+19P875IgoWJUclr+2fAiL3fDKqLCSXosCmoB\\nNbNGO+DBAHEa5861LMgwFAM9v4fbvduoO3Vs9bfQ9/sQRFogsddYtpehSRoSkvAEEacxl2RWRRWW\\nah0okBGCzpCOl9lnEgURqqiioBWwbC+joBZ4AmdcIQaHy0Ih0jQ98LAhCdKUQkFiEuemDSwIIXh+\\n93l0/S6e23sOYRxirjDHvQ4WCgsQRYrpFgXaMeOmfEg42TBOY2z1t7DR3TjU5dRlHefL57FUWkKh\\nfwNS2Dv0OU4bsWJjWL6M3/u938PP/dzPASnw0R/6KH7vt3+PPyZMQry49yIvZOOUFjVlvcyVzVKS\\nHkrSg3CQU51jnWxFUvgkRxGVQ3BQQRC4Mpof+1yR6ChXdcZxYlCO0xY3JzXivHr1Kq5cucKhOl/6\\n0pdy3LS34u8nziqXqKqAalXC1579Gp9eX3niCr78t1+GEzpctpw1b1hxA0zuvDPTRwZhzU5yzipO\\nWhh1/A4vZgghHGaW3XSfJryhhyeffBL79X1AAv7Fp/8FfvB/OYAxi4KImcIMasbhaS5A14fsPSdA\\ngJ/4vLkggE49akYNoigijEO+xmTPuSRI2Onv4GrrKm51bmHX2eVEcUVWoElUQnvGouvwlDmFOWsO\\ntm7zhlSYhLw4yW5k+0E/N/1nn8lSLazaq6gYFa5ux6a9zEMlu3Ywvg5T4eSQwhEscJKZ9Sv7r2Cj\\ns4Fb3VsYBAOsluj7zRfmucCBJEgoKAXYus390rzI42IsKUnRGrYOFWciaNNmyV7CWnkNpcFtiGH3\\n1NfAeMSKDa98CS+++CK+93u/FyDAY5cew3NffY5f8ylJ8XL9ZbSGLX4dzBXmsGQvIUgCXuhkp4MM\\ncp+dgLACRBEVzkdi05zxZi+zHGCICQZxHC9uAHBj15Je4pyr0xQ3JzXi9DwP58+fp+IjAH75l38Z\\nP/3TP33i93kY402rcgYAliUiDB/c3dk0qfLM7s4u2LqwtrSGmcIMpq1p/rggDnIFTi/o8TFudgPE\\nOiRZkybmkcEKnLJePnLTf9KYBBXL/rjn7KHn9/jI2lItLNlLh26u00yHHn3kUXzkIx/BH3z+DwAV\\n+MVf+kX88R//MceDHucDwiR3WTCuQ/Y9KjothtpefvEBOeh8G7IBCEDVrKKgFTBrzaJm1rDd28ZG\\ndwOdYQf9kOJqu8Mu5ovzsDUbu84u/NCHIiswZEq0dOGiF/T4hkEURNSMGhYKC3TzEbmQRRlRGiEl\\nKbb6W6gaVSyVljhxMwtpY6P9IAl40ZJN9lkJaNbtY+fBizxIgoRbnVtwAgemYiImMS7XLuNi9SL3\\nQvBCD02vCSbBmZKUCi6ICk+Ga+U1rJRW0HAb2BpsIU6owlkQB7jauorX26/j8eIszkI8ODJnIQgC\\nXVhDABGwvrSeg8+okoq3zb2NFzWyKONu7y4MxcBcYY6fB4br9yIPvWEeZsa4QASEP86Bw/8uCzKH\\nGbD/Z0o3WUnoYTTMQREB8NfrB33IokwFHBQq4nCS4uakKmiPPPIIPvaxj+F3fud3AFAZzi9/+ctv\\nGNWqf6hxVrnEsii0MptLlpeWYet2jsSepAkvbtyQrjNM6j17vTECM4MwAQeqTtlJzjin5DSRyyNH\\nXIadYQcNt8HlkTVZw3p5PQeHuldhlP2ZEALbsvHJn/0kfuZf/QxgAZ/73c/h+/+H74dl0uNZLC7m\\nJxSZeyQlaW4Kw5pU45CwolpEmISIo8MNJFmUoQgKBEHAgr2AeXseTy88jbu9u7jWuoaX6y+jF/Tg\\nCz5vxDXcBldgZC7yDNLL4HSarNFcIlKI+rQ5jWE8RNfvQgBttKRIsTnYRD/sc2PplKScs6RKKm/m\\nMdL6JBgt37RnYGxO6MAJHHT8DjfUtBQLXuTh8ZnHsVBcQEkvUf6IYsFPfPSDPvY9KkU9jiqYMqdQ\\nM2pwIxddv4s4iaHJ1MC54TXQ8Bo4Z9i4cK8L7QSRmBRavb+3z3PJ6vwqVyplyIcnZp/AK/uvoOk1\\nIYkSGl4DmqzhUu0SfZ2Ml9wwGmLP2TtoSI+mfgW1AEIoTyYKD6M4WHHDYGvsOfPF+ZwkNIOmxYRe\\nY1lJaEWgkzBbt2GrNvcePC5OqoJmmiZ+/ud/Hp/4xCcAAL/wC7+AZ555BsXigxucvlnjTV3QaJoA\\nTRMQBPffWWOvAQBbWwdj05WlFQ4dYouwrujQZA0z1gx/nB/7uQKnH1D38/ENSpREaLgNznMA6MKX\\nLXBKWum+RveTYnewi65/0DEpakUsFhcnbpzuVRhlI0xC/POf++f4oz/7I8RxjOe+9hz+7it/h//x\\nv/ufQCIVgUtACCAIgCgBmgbIsoAopXwDSZSQpinH79IcSv9X0kpc7jn3+UBlK3VJR4qUd/PZ32at\\nWZS0Eqp6FWuVNdxo3cDOYAf77j723X00vAaKKj1+QzXgRz52h7sQRZEnPQY5mjanuRlc2SgjIQkt\\nDJ0RuT1N0A/7eL31OpVmHo3ti2oxDy8gtItFQPi5ZNdRQhJOImdkeE3SkKYpV9OxdTq6Xiou4e2z\\nb0fNrMGPfWz2NtHxO7ku6bQ5nVO60SQKlTAVEyulFbyDvAN3enfwcv1lvkCmJMVL/V2ULBszD0Am\\njNUSEpUW5+2tNjDKC0tLlHSavd40WcNT80/hxfqLcAK6QbvWvAZCCOaL81xBhk2Z5ovzHNLHiv9s\\nocivD9ZIIDGiKMoZuGYnOaqkwlKsQ5LQQRzkihsGNXBCh3OjdIUazI1zo7LBmhZZCFqURuj63RwE\\n7VOf+hT+8A//EFEU4Stf+Qq++MUv4oPvfy8SZwdp4gNpDIgyREmHVFiAqJyNAepbcXR8s3OJLMqc\\nuA8AgiTAFu0clCROY3ihxxspjN8BHN7MD8IBBuGBd5ckSIf80s4ql7S8Vk4ZU5d1rFfWc2tO9jMe\\nVxhlI0xCfN8Pfh8+8399Bnt7e+g1e/jTz/8p/tVPfho6SkgigjgAIACSBCgqgSjT78cNXX5Ovcg7\\nmOKPvr6CQiXhszBmFrIoUx+zEfc12wkvakU8MvUIIvIeHgAAIABJREFUFuwFPL3wNK41r+Hl/ZfR\\ncBtouk30/T50ReecxLu9u7jRvsH5DgvFBSwWF0EEgpJywJnRZR1lrYyG10DdqfNJfdfv4lbnFmRJ\\nRkWv0O9xpNiZLW7Hi7ps8RjGISXxRz4SUNVNAgJd0mkh7Rdh6xQWf7F2EevldQRJgK7fxfZg+0Dc\\nhBBuRMm/a0mnvGHd5mtwy2vhteZrcL2DdfbWsI+KIqP2AGKSiVpGolWgiAo6ux1a0IA2BCYVAU/N\\nPYVX9l9B3a0DALb720hJisu1y9SeQKSCEMzjJQX18jFk+nuG0gDyXC9BEDgMPJtLGHSb5ZOKXslJ\\nQvd9atzKEBkEBBGJ0Ak66AQdPtUqqAUOgTyquFEkBQvFhRwELU5j7Dq7OQjaM888g8985jO4e/cu\\nms0mfvVXfxX/+yd/6h9sLnlTFzSCIKBcltBuJ4ii0yciRaHPZzdwNgllN2S5RUTId5l0WYdeoO66\\nLPzYRy/ooet30Q/66Af9iRCjIA6wH+/nyPrMxTc7zTlODnY8CCHYGezkJiG2ZmOhuPBAXWBCCHda\\nnl+cx4c//GH8/u//Pj74nf8UFXkNg44MTFDNch1AVQliaQhRkpASWhCYinnQBRphx+M0BgTkjleX\\nqUQkG+8yAqUkSHwMzxamkl6imFp7AZZqYcfZoZKYSQASEgw7Q0yb05i1ZlHRK1SVJqFE8u6wC1+h\\nxp+maqKgFKDKVB1nGA+hSAp6Xo8Xq2w60xJbmC/Ow1KsQ1wdgCZPSaCQAibJmaYpNFE7pP6z0dtA\\n1+9S0r5RgyEbeGz6MVxrXcNCuIBe0Mu9h67oFLIwgpKxf9kJGSEEw3iIolrEe5bfg7pTx83OTTih\\nA03W8LduH99hFlCVT++InMgWkvIjqBoVyKKM7a1t/jd2/4yHIil42+zb8FL9Jd51vt6+DgKCRXsR\\nYUzJvByjL8mombVcJzglKZ+oMEGALIclm/xZYspCUxjniLmx25rNsfhMFY29RkpSDidjyoCGYnAJ\\nz/F76iRGnGtra3jmmWfw2c9+Ft/3/ndB96/C3zq8PiQAou7rEI1pyMVVSKNJ2Ftx9vGtyiXMrI8Q\\nAiKQXC6RRZl2cnW6WWGcDC/2+BTHi7zctc4iIQnPNSxkUT40yTltkcN8ulgYioG18tqhYua00Rl2\\nsOvsIhVSfPzjH8enP/1pfPC9/xTf9dh/j8S14U6AUHmuAFUVIWkhJIk2P3pBj/PrgAPOjSiIhyZG\\noihCERSawydMjJiLexAdNDhmC7MoqAVs9bfQDbroDrtwIiqbb6kWqnoVJb1E86NPz//19nXMWrMc\\nmlbUilzqOU5jFLQCml6TNvgECcOITtkbTgPT1jQ0W0OaHM6ljL8iQuRqaX5EIXaiSCeDikAhb7uD\\nXWqamSZYtVcpPLCyho0uFZqRRCk3zRIgcOgbWxOLavHQBC5KI8iijMdnHkc/6ONu7y7awzY0UcNz\\ngYunVREV6fTXRiJbiMuXYY/2O7vbu/xvR+USSZTw5OyT+EbjG6g7dUCg16ssyLg8dRlxGqPpNREn\\ndG0VIXK4XfaY2CSH5ZKseWm20EmFFHEYwxMy0LtRM1KVVExZU5grznFl1a7f5bwbAoIUKfphH/2w\\njx1nB6ZsoqgWUTEqXAUvG4JwbyNOTdPwqU99Cj/6oz+K73v/u/DOcxL8rb88fH7xDyOXvKk5NCzS\\nlKDbTU7VXaO8GQliRm7wsccew2uvUaL0iy++iCeffPLI5/PFcgxnPB7sonFDl17MPr2gx1WbjgtD\\nMXIFTkkrTZRaJoRge7DN8b8AJanPF+dP9D5HRZREaA/buUTa3G/htWe38E++64Mnfp1U9LGf3ERR\\np7jSOI25G3NuOkRoMp4kW8g2nkES5NTGxh/TcBvoDDvYd/fR9tuUIyEdTGMqo004U1Dr+T1u7gmM\\nXKl1mxcWAqixapiEuNu7Cz86wMAzKBgrlBRJ4V1AJuUZxAGHOTFowcHhEtzp3kHP72Hf3UfH76Bm\\n1CBJEhaKCxwTPGvRoplNrOaL8xQ6J2kcvsYUlIADuEqcxvx3kkQ7gL2gh5f2XsJmfxMyBLzHsjGv\\nnLxwTtQylOmnoGeSw2nunziN8VL9pdy1ulxahq3Z/F5ixQHbPB23VLHExP5lJaFZHKc6xxXWRJXf\\nzwzqke3gZkORFBiKAV2ik9tJU9mjVNDquzv46n/5HD7wne848pjGQzSmoc28E8IDbibfiqPjrHLJ\\nD//wD+MP/uAPAACf+9zn8CM/8iNHPv84Ej+LLOeDQTK9yOOwtUlFzqRQRCU3yWHwlklRd+q5Zpup\\nmFgrr92XmAyLOI2x3d/OTZfShODGV+t497u+68SvI8oxXHEPkiRCkRS+7hXV4iHiPuNACmPSwoxj\\nFyQBwjjMibuwYI08J6QSxXW3TrkyooIopfCuFNSYMiEJ5+yxTSwI9aOZt+axUlqhkOyRFHSURpz7\\nCYzI5RpVb5y1ZlEzajyXMMln9lmyRtLj61OYhOj5VHp5q78FS7bQj/qYtWY5IoBBzwWBmosyPxdb\\nsw++X3IgvsAaY1k+K7NbiJMYV5tXca11DRIheJdpYe4UDbJELUOaehvMDCTztPfPq41Xc4U38xPK\\nnpuqUeXw43FY5PjrMaXTbLGTfa3xic64sh9TVWPXmBd5vHk66T1VUUVRK9LvYayQBI5XQRNTgr/4\\nwq/jve969MhzNB4Pay55KAoagF6EQUDguumx5E5NE2CaIjTtMC7etm1uVtRqtVCtVk/83tmfjypw\\nxt/PjVxe4LBpTnaje1xYqpUrcIpaEXvOXs6Qq2JUOD/hfoOR4LI3oSpqEIbl+/JuSAQfgdKAGzkU\\n7jVaxJjqlyIqMBWTS0lGScQLGMa3YQv8UaGICu18xUM0vSZaXgsb3Q06PibgRlkVvYKyUeY+AMOI\\nmrCxhYsp4liKhbniHFV1UXTESQwncNALe7BUC4qo8GNgYgQEhE4OJkxtWMgCnd7c6t7C3e5dDMIB\\nbnZuYrpAp0hLxSU0h004oUNhWYV5zBZmMVuYRdU4/tocRkN4kZe7DhWJ4nkFUAhg26fjbNa1W1FN\\nrMoSpqSjcQOxUoJUXIFRXD60cTjt/ROnMV6uv4x+0OebtNXSKhbtRYiCyBXj7hVHLWFpmnKPjewk\\nZ1JCYTEuV84IpTGJIRDhECSDBZOENmSDTslG52aiChoh0LuvAWH/0OvcK0S1BG3+3Q9dInojxVnk\\nkve97334y7/8SwDAn//5n+MDH/jAid/7KFI+i0kiAlEacRliJj5w0oYZg2JmJznjypiWamGtvPZA\\nMufM1DlLpNZEHSWygiQ+fbc4FUIQvYuYRFBEJWeKSAhtdGVzBZvms40qOz/HdaplgRK6U5LSfB30\\ncbt7G51hh3uCWYrFpxv77j6HnYdJyJtkLL/Zqo218houVi9i1ppFSEK4oYvWsAVFVHhxRkDRH2xT\\n7oTOIdGRbBiyAVMxEcYhNvobaDpN3OzchCIrmDLo5t4NDwxGK0YF56vn6d5BPd6YkkHasht6NsmR\\nBFpo1d06t1LoBl2c020siUD1mMslVksQCkswCss56Wjg9PcPIQSvNV/D7mAXURqh5/dQM2q4VLsE\\nUaS82KN4Zkc1FMbzBIMps1yShb5nY1Kxw66h7H5mkmk3QCWhi1qRI3U4PHKCCpqIFFPuJoTIOfxC\\n94iHMZc8NAVNNuKYYDhM8Vd/9dfY2LgDxxngyScfx/d8z3dAliffuP1+H6US9e4wDAOu697XSO5+\\nixuG/3Ujl8PVej7l5BzVIWaRkpSS4wQJBa2AolrEankV5yvn77ubFqfxIVUQAQJsrYTI1R8Ia+6T\\nPqD1oSkax5syGUkCkitguPTwKDllj5kpvrBRPOs+AfkJWmvYQttrozGk+GXGPSnrVLp5rbwGXda5\\ndGff78NPRh0wAoiSCFmQKYdK0lAzatyIywkdtLxWbjoQpzFKWglT5tShTgsbTxMQOKGD1xqvoeN1\\n0At6aHktxCTGor0IS7WwbC9TdZnIg6Zo0EQNTy8+PdGLIXtenNDJFVKEUHU71p1iyjVxSoUCmErY\\njfYNbA+2IScRZiXAFEXIggAIMgythELpAgrW9KFNjSAI6Pf7mJ6eBgigGzr6vf4hbtZ4scA+77M7\\nz+a6a2vlNTw+8/gDdYLZcU+697LiA5O6b5NCEARONI3TmEOEjlJY48XNSBKaQ9AIgda9BukBFIFE\\nYxra7LseSsjAGy1YLrl69XV87WvPwnEGmJqq4mMf+9CRuQQALl68iBs3bgAAXn31VTz66Mm7pyyO\\nI9azmHhvjTZRYRLy4sYJndyG9rjYdyk53JAptHKmMINHph45FfQ5G0maYGewc8gXpqbXoEZTCMMj\\nnniCiAUPiumjoFk5qCkTD8l22bOT6nEJ/YRQBTERIi9OGBE9G0wcoD1sY6u/RSHIoH4tlmphxaam\\nnzv9HewMdrDn7uXEYQRBgAgRsiRDl3SsVdawXFrGqr2KmMScvM4K0yAJuMIa47Cw4zQVk5oMizIG\\n4QA7zg76QypcMAgHaHgNzBRmoEkaLlQv8OvBVExokoaV8goqeuXIc8umMtk9ACHUHsGQDzyVml4T\\nXuRBFOm5q+pVbA+2sTPYgZQEmBZS6IIAWRCQQoCiFqEVllG0ZifCrAQIePLJJ3Hr1i2AAM8//zwe\\neeSRXIGQfSz/LglVdnu1+So/R1PWFL5j+TugK/cnwDQ+zRkvdJigD7vGgjg48h7Lfv6EJBhGQw6J\\nZ+p3qqweypPMoJsJSXkRFQVK0wRl9y60+PTFDIuHLZc8lAUNi1/6pV/Cz/7szwIAPvGJT+DXfu3X\\njnzsq6++iitXrgCgyYg5ej9IjJ/aIztuk4ob5H1bWIHDhAfYayQkQdNrIowPFp2sBGNBLeTgarZm\\n37PL5oQOen4vP5WRVFSNKuJQRKfz4GpAodJEBDpNkiWZJx+2sWRJhblec/njlJIeZelAhWQ8OU2K\\nIA7Q8BroB33sOXtUUWxE5p82p7FcWsal2iUokoIwCdH2qAZ/y2shJZSsP4yHlP8ia6gaVVSMCn9/\\nNsnKhiBQDfmFAp3sEEI4TyNMQmx0N3iSCeIAHb+DolpESSthrjCHilGBAAF3encQpzEqRgUFtYBL\\n1Us0EWRReoSev+yEiXUpGQyDcY6YszLrHE2ZU5AlGWESYt/Zx83OTWwN8l4TukylKM9Xz2PFXjmU\\niF577TVuGnn+wnl845VvnOg68CIPfb+Pa61r6Id9bqa6Vl7DWnltYhE06Xfjvx+P8UbDJChjdpLD\\nsM9HBePxMIgJ49eoksqLHHafqZJKp46ijNDdgdq9eqJzc1yoM09Dth5s+vpWnDz+4i/+At/93d8N\\nAHjPe96Dv/7rvz7ysYQQmKYJ36ew1H6//8DKQ+MbqUm55Cj55+zGj7nUu6HLi53serHv7ufgYAxK\\nKwgCV3qyVIurQt6r6TAIBtgebOemRYqoYMlegpQaZ5JLdCuEpCac+5Yg4RvL7GY3xUETjMkdM8iV\\nKqu5e/a4YEa/Tuhgz91DZ9jhhPGSVsK0OY1Hph+BqZjwYx8bnQ1cbV7FRneDNppEIElGBdTI76as\\nl1E1qihptKnqRM6hJout2Vx6WYRIZYTDAaKECqFECZ3SDcIBGm4DAqip8nJpGZenLkOVVGz1t9AL\\nerxwu1S9lJuOZOG2XuTl1NWYQEpW4GIQDLiIjyBQUR1DoZzX7rCLrcFW7vsXIXKu56K9iGV7+VDT\\njxCCmdkZBD61HNje2UaxcO/7x499NL0mbneo/w6DLM8X5/H49EGD7KjCKPvzvTb4xxU6WV4vyyXH\\nQkIJVcRknjcpSSFLcj6XjCb+uqSjpFE56MjdRdG5fc/zcq94mHLJwzNrmhDLy8v8583NzWMfm/37\\nUSS008b4RpvfOGPCArmkJOSdooERREotckdchqVteS1ca12DIioIhZDjdYvqAYxrEFBpwU1s8tcv\\nqsWcESiTlWUKY1nvEjqVOZAc7blnY0CXhhocoQ5FVDg8guDgnMSE8k0ECFxZxFKsQwUMO87ceYeQ\\n47GoMnXxvVi7iEE4wJ6zh7pTx2Z/E0maoOE1uBrVheoFzBZmUTbKeJv+Nu78vDvYpXK/JIYfUBnP\\nhtfgHA8BNOH7sQ8CAkM2IIkSvNDD1eZVFPUiylqZY+BZcksJhUXVzBo1+tIqCNMQs4VZnjRWy6vo\\nBT0IoBuSHWcH88V5CORAAtqNXG7KxpIyI69nJWBZgajJGpiynCzJ3DjMUAw8MfsELtUu4W7/bk6V\\nz499vLL/Cq63r+Nc+VyOHLy5lbl/Fk92/zCIjCRKeGTqEdxo3+CJb6O7gYQkWC+vn/LKmlzw5JSC\\nKCs4B5ljCmuGbEDQ6XPYRCY7yeGJWThIzDaxefIaBANeCMmiDFVUoUgUSqKKKqrugXDCg0Q8uPPQ\\nJKE3Q6ysHLiR3yuXtFotXszYtn0mMqrZTRchhKtDZnMJ+1uWR8eue8bnUCUVNaPGzQRZk2UQDHC9\\nfR0JSSjpHCmKahEz1gy/n4IkQDAMuP8HcOC1lIWssUbU7mAXHb+TO46KXsF8cR6iIKLVOptc4g1T\\nREkbgiAcKljYJD9FmuM2MKWrk3Sm2dogCRL/eb4wjziN0fE7aA/buN25zYvFhCRwIgerpVUsl5Zx\\nsXYR56vnESURbnVv4XrrOj3XSYJhTOV/m16TbmBHHlhlvczX76pRhS7ThtiN9g2qmJYxcGY8SYCu\\n0QW1gCiNMF+gHMvLU5e53PZCYQF+7HM+5+ZgE+vl9UNFb5iE/FgBcCh4FtLHUByWQn3cCho10/Yi\\nD37sQ5M1nK+ex1p5DXuDPTS8Br9eU6TY7G1ie7CN+cI89YsbCVa0221ezBSLxRMVM17k8cJqvbJO\\nc+/IBmHf2ceLyYu4MnPl1JDJ44qd8cJIFETKOxIFLsgB0H0c49JkcwmffAng9gLT1jS/jgb+AN2E\\nmoazglkRFXT8DlRJxbl4cPgD30c8TLnkoS5oskno7t27xz52kirNWca9ihvgMBk0u3iwhMSeZykW\\nWmhhvbyO9fI6kjThBpFsmpP1Lsi+N1fDGSEAGCGaTXRszebFQ9Wo8g5KHJMzMZ8DAF0oYsv3EJJh\\nHjIG2rEyJIMXMhPPJyifQZEUKOKoeBkVMWwRnpSsGOnO1ugUa7O/ifawjfawzXHKU4MprJZWYSj0\\nM6yUVqCICnRZR92t0ySZjFSxHJ+rwqiSClM14YUUS0xAqFGjqGDoDNEddlHQCmh7bRBQGBghBOcq\\n57A92IYqqnAiB7PWLMfX2qqNslZG02tis78JQRDQ9JqcB8QWP/Y9sn9MWSf7vackpYXRCJrHRAsc\\n/+D5bKM0bU1jtbyKOI1xu3sbN9s3DySf0xQ32jdwp3cH5yrnsF5eR327zkXulheX8+89ASozCAc5\\nHwlN1vCPlv4RXmu+xhPTZm8TKUlxvnL+VNdWbhrDutrk8N+QHj/VEQQBsiRDlmSYxOSvx+GF8Qhi\\niJgXLUWtSIUrIh9+4lMp79G+TSMJZtOzSULpsIE0ch56Gc43SmRzwvb2NuI4hixPTp/filwysbgB\\nJjbLjipu2LWvSRrqcZ3K845EOUzFhK3bfJLjRd5E7tkwHlKuIg74NiB0wiCLMkzFhC7rUCUVi8VF\\n3hg7y1wipjp6voMwHeZ+z5phlmJBlWm3e5z3xyJbrPACZgzmfOg5ooRZaxamQtWqtvpb2HVo4yuM\\n6frQcBtYr6xTA0dJwaXqJcrJLMzhduc2WsMWOsMOnMjhXE5N1qhkdxqi6TZxvX0duqRjypqCrdpw\\nQgftYRtVo8pNG8t6GYqkYMqcQnvYRpImXDGVQdUECFAUBSv2Cm52bnK1zqbXxLQ1zdUgx00pDcWY\\nmIcZx0qS6HkyZZPzbbPnzVZtLNlLICDYc/aw0d3I8YFawxbawzbmC/NYLa+iXc/I/88t0WLuCOgl\\nAYETONzjh733uxbfhY3uBrb6W/w9Xtl/BY/PPH6qoiY3GX2Ay5UpHLImGHvtbHHDeFeySCW8K3ol\\nZyHghAdTu4IgomCcjSz7w5RLHuqC5jQTmm92EsrGpOIGONxxO6q4CZMQd3p3uISwAAHLpWWU9FLu\\nfZiCVxaulhUNAA7kPnMmlqBTobnCHMdulvQSSHD/5m2ToiLPYYA6LVxEKqObHT8zXCkrVljhki1a\\nxuMkHTdJpOphZb2MglbAvrOPu727CJIA2/1ttIYt7Dl7WCgsYMaawSCibvUlncL2mClekASIYiqr\\n2h62MQgGMBQ6mbF1mniYKo4pm9BkDVv9LRgKVbFh0I2UpDwJqZKKaWuaysjqZRRUusjMFGY4vyol\\ntLu1aC/moBwpoXC4olrk8rAsCAhVciNUkcdPfAiywGEZ7FpjHVe26MuijEu1SzhfOY87vTu43rrO\\nvR2iJMK15jXcaN/Ac9vPARKA+GjfABaDYMCPFaBdY6ar//a5t+MbjW9wU9o9Zw+SIOFC9cLEwmjS\\n746L7LFmnzfpujnqNVmXF+pBociSEZtuarIGVVapb1JEsdV26k58vfuNxNmBWLl0pq/5VkwOTdMw\\nOzuLer2ONE2xu7ubyy/Z+FbnkmxxQ3BvJADbrLJr9073DpzQ4c+btqYPlDFHIoYpSTGMhjlOzjAa\\n5oqclKRoe+1DXJmCWqAmv14DXuTRNS94MFPp8dCJjUQMuUcIyxfZyBUtkpybvNwvh0AQKIKBcRRr\\nZg23O7cpbDvowYkctIYtlLUyKkYFTuRw7uKF2gVcJBfhJz6HLO97+2h5LQyCAd0Ej9bRftjH9mCb\\nw7qY4qWt21grraGklyhHaoSy0CUdEIDZwoGyGbtOChrN7fvuPgghqLsUKZGDMINwT5xJRtxdv4sg\\npmtdmITQZR3DZEhfY3RJZAUTAHrdLRQXMF+Yx767T8VoRvBGAoIdZwe7zi5eu/EaoAAIaXNskqIr\\ni0Ew4DwjgArfTJuU5/m2ubfBUixs9DYAUCj9tdY1PDHzBLdRYMczSRTgLOMoHrUuU14ue08GZfYT\\nn8tHsyKoalThRR4GwQCzJJjwLvcfD0sueagLmvn5eUiShCRJ0Gg0MBwOYRiTN+XfyiSUjUn8j+Om\\nN2ESYrO/mSN9zxfn+cY4OxKVRRlVo5pTxIqSiBc5dbeO7f52rpiRRAkFtQBFVND1uzlzzlX9CmrK\\n4pkduyQoFG8aB0hEajQmxXTqwpJPlEYcz3tc3G9CkgQJukJH+DvODj0fcUinI5rNzbPYuL2oUrd6\\nURDhRz4G4YBjjvt+n6uXMAUYUzYRxAH2HDpyZ9Owjc4GLlQvoGpUcbNzE3uDPRTUAqpGFfvuPvfJ\\naQ1bOb5Uw21wQ8jN/ib1PyIjCJRCO6Gsc8Y4MgD4JIeps4zLtTKehxd5OUhJ7hxDwMXaRewMdg51\\n2V5uvww8AcABpDkJG92NQ89n8Ijs9aZKVK4yC00pqlSxj01q9t197Ax2sF45GfzsXgXPJKgn2wie\\nVSIjGDlQjwqdiERQSDJR1ea+3yM5bBr4VnzzYnl5GfU6NfG7e/fuG6Kgyca9ipvs75l0/J3uHT4p\\nJYRg2prGjDWTMy5mG2JLtXIeHsyjiQmj3OzczMmwS4KEmkkFVIIkyElA14RVFMSpszt2QnmYcUIF\\nO6Ik4lMWSaD/iEAmKr+dJSFaBFXUCpMQtzq3uEALmxRNWVO8ecNMKxWJTv+H0RCz1iyqehWtYQtN\\nt0l9yUY+ZqZqchI+K25qRg2vmq9irbyGolqEG7qoO3WutDkIBnBD95A3GUNqMHjYZm8TK6UVfr1o\\nkgZN1tDzD4pTdm0xPmqcxvATH5Zi5QxMWf5TRCV3PYzHkr2E9rCNu727uce9sPUCcBHAELDWLGz3\\nJ8N0mYQ1C0VUUDNrOYEZS7VQUArY7NOGdtfvou218dj0YydW0JxU7EycGI0mn5P+dj/BoGaGbFBO\\nZ0LhoKZiokQyleMZxMOSSx7qgkaSJCwuLnK42dbWFi5evDjxsX9fSSgbk7gh2elNkATY7G1S6dnR\\n35bsJd7Fz8IJ2OuNE9wUSaFk85ESzEpphRtBJSRBmlJY0iSHZQEPYAM8ISy5AF1bPDGZe1I8aDJK\\nSAJdot2PIA4QxzHqbh1+7FMpbb+PzrCDBXsBq6VVKg4w6kwWtSJUSeViAIqmwBZsKCKV3mTcnWFE\\ncdKsYPBjH0W1iBvtG5TI6DZ5J222MHtIHS1boFb0Cm52bgKgHBQncDBtTnMVlxxxGDSBRyn1EfJj\\nHylJOQQEoJsOUzEPGe4ddd4FCFgsLmKxuIi6W8dGd4Oq/nTbdNNUBNqFNl6qv4S18hpP3oQQTmBl\\nockav3Zz7yEIuFi9iBvtG7y4qrt1EFB43r1iomjAhMvkqK7ZpL+fdDrEiaEjHo0oUEUjQRCgEgk4\\ngcrUSYOcUJb3rTibWFlZwbPPPgvg+In/GyWXjBc32d8nJMGd3h148YG0+3xhHjOFGf4c4GCTNimX\\niIIIS7F4Y+Nc5RySNOEiGUW1iDAJc9BS/vnOOJeYsgVTv7dZ4KR7/rgp7WkiTmOqpkaomlpFq3Do\\nWRAH8EIPg3CAGWsG6+V1FNRCTpTBUi0MI3qu5gpznAMzTKjqWc/vIYgDDOMhXfsj6o3TG/ZwtXkV\\nqqRCgoS1yhokQcKUOTVx+sT+e8qcwrXWNVrcJgn23X0s2UvQJX0iNI+AcM6pG7qIScyFIgBweBqD\\nVE06x+O/q+gVVI0qun4XW/0tdIYdNNsj+KIBCHMCXqq/hGV7GRXjQJGt5/eoDcMoGDx+EpxstbwK\\nURBxp3eHPjfo4RuNb+DK9JV7FjXjDYH7jeOmQIeKJFYYCfS/oySi7y+AH9+D6X9O+HwPSS55qAsa\\ngCYhVtDcvXv3DV3QjEd2IRpGQ9zt3aWkTUGEKIpYLC7CVEfY/gnKTZO4N0ESoDPs5BScDNmgHiuZ\\nhSiIA/SCHnr+SEI66CE9w80YAMQkghs6+U5kOaU/AAAgAElEQVTaiOh4XJxF4gnjAylP9ppT1hTt\\npKnUh4FJbja9JsWKR0Nu/shCkzXMyrOAAF4EZpO/G7jo+l2uclXUijBlE8N4SLtwXpNCAWMXS/YS\\n5dVM6LwwmJss0aKm43cgCAKc0MFCcYFzkBjxn7kKJyRBfVCHG7kUwjdShwOhCVSX9Ynn8yTKcbPW\\nLOYKc2i4DfTrBwpvlUoFe84e9pw9TJvT3IwvW8zosp7r9k56/wvVCxA6Ap84MYjEucq5M+mqTprI\\n5JoI9yiMGDGWk5BHanxMbQkALyjjNIZPqMLRWcXD5B/wZojsROY4TuYbLZeMFzdxGuNW5xb82Oe8\\nufniPGpGjW+uxouXibkkDrA92M4VLIqkYLm0nEMFsLUrq66WntBv7eQHSdc6gQgTi6/suWDHMx73\\nU9gwjoMbubwYAaiksmRJMBQDHb+DulNHItBib6u/BSd0sFhcRM2s8ecokkLhcrICWZA5P4ZNyOIk\\nRt2ro+21UXfrMAKD+5q4gUttHvw+7vbuYrY4i+9Z/x6O0hj/LofxEClSTJvTqLt06uhHPlURVaTc\\neWL5KE1T7DlU1Y2AKmgyztW4AM1pz3tJK6E8U8YgGOC3G7/N/1atVilc3u+hoBWwbC9TdESm4apJ\\n2qFjHI/l0jIEQeDIgX7Qxyv7r+DKzJVjeVJnFfcqjBj6Juubxng1bK/GuLsRiRAIKXAEH+y+Pt9D\\nkksejqM4Jk7Ko3mjJaFssGImJWmOM8NwowAO4aXHb242eWEjWi4uoFKN8/HOhiZrmJFnMGPN8N91\\negH845FfpwpFlrBoLeYWO0EQcooyTL6Zfeb7DaYXzxReMMZxTNKET76SlHar7vTuYNfZhRu5MBUT\\nw2SIlteCJmu4ULkAW7dhyAafpjAIRtfvIkxCLr4wZU1BFERU9AouVilm+vmd57lKTE2nsIyV0gqa\\nwyZSpJgypmDrNjc98yKP+88s28u407vDBQAEQcBqaZV+p5lzOQgH2BvsoWSUUDbod1wxKiiqRViq\\nxaEM7DXuFUcVNqulVTj/nwMEAGrAxYWLKFv0s6ZI8WrjVZT0Es6Vz2HamoalWvlr95hYK6/hWusa\\n6k6d/86PfTwy9ciZQkXGjy372qxgYdLhWQnx8WDXEZOBzhanWtgFovv3nxkPQTpbHsJbcXycVOns\\njZxLmMhHmIS8yFmwF3gBMol7M14cpCn1sao79RyszVItLNlLhwjkbOObbQT1+hG8M6SU6YoCuzA/\\ncRqRJbhPavodFUetL3EaU/XQkbDJ+PGxolESJL4O75jUk6brd6FJGhXvCbqUS1O9gBlrhnNxWGMq\\nSiIO0Y3TGG7oYl1dx7nKORgyFaypO3W8VH8Jr+y/gu3+NkzNREGhkPEX6i/gZvcmZq1ZrJXXsFpe\\nxZQxhSAJUNDoVGWhuIDyoIwgCmgzEQQz1gxVW8s2VMMhGl4DsihzjiezLmA8maOKyElx5HkvAumN\\nFHgdQBk4N3sOU9aBIt/N9k2Igoil0hJmzBmYqomaUTvR+y7ai5gvzuN66zr/3b67j6fmn/qWFDXA\\nZEln9t8sJFGCIdLvl+UTptiHEXBDTj0gPTz5vN94WHLJQ1/QnCQJOY6DbpduNFRVxdTU2WF7HzTc\\n0MVWfyvnz7JsL3PX23HhgElSnmESoj1s5/DDAgRU9Erude61KBRMBb53dp21/3z7CxAlcNnGmcIM\\nVElFlESIRjInrDuVVZ05KYnzUBFzRLBFJk1T7uxc0Kjniq3Z6PpdOiUgVJ2r6VIT00u1S7kkzSAY\\npmJis7eJPWeP85okUULFqKDttxEnMeYKcxAEAcNoiIQknBgfpzH23X10/S7fZBBCuIBAUS2ioBVw\\nZeYKrreuIyUp/NjHnrOH+eI8VU6JA6pMFHvwE5+TY0taCTPWDF+8CQifLGQV0o6Ko7ps2ftH2Vfw\\nA0/8AG50bmBrsAU3dLnoQXvYxqw1iydmnzi2mzf+npdrlyFA4NjofXcfBASPTj16pkXNoYJlVMQc\\nt+lhGw/G9WL3qSiIXHWPFY6JKJ1pQSMVFs7std6Ke8ebdULDgvE62KRUFEUs2Uso6+U8xAxH8zjD\\nOMTOYCcH9wGhoiU1o8b9rthrHBWWKcM7IwsAAPh6428htYGaUUPNpP9UST0Ew2afi5HkTzqxyRYx\\nR/E5WQ5NCJ3QBiklbhNQbpKu6BgEAzSHNJcoogICgo7f4TLN7POw9aOsl+GFHnadXe5bw8RyRIhY\\nL6+jolfw6NSj+PKdL2PP2UMv6MFSqdFo3+9zJbMX916EKIpYKC5gyV7CYnERtmbjUvUSbnRuIIxD\\nJGmCzf4ml8uP0xhu5MKPfLSHbZ4filoRC8WFHDQ6C6O6V3Fz3Hnf2tqiKmcN4AOPfABFmyrIdYMu\\n3/i/3nod++4+nph5AsQ4UPK7V6yUViAKIq41rwGgk5rndp/DU3NPHSs+cJpgnNrxguU40032vGzu\\nYQ0zxrvN/kPkAc7NM/m8wMOTSx76guYkSWh7+4B0tri4eKS047c6nNDBVj9vcLhSWsnxHY6CBgmC\\nABB6wzLiOgtDNriOPXvecdwb9ndRIlBVPJCzM4vd4R248QBpnKLrd/FK4xVK6jNqWLQXUTWqvOvF\\nzC6RWQuyxQ0rdoCTFTEMC8yOmXXUWbBF05ANPDr9KGRRRstrcYlnN3Kx0dtAP+xjxV7BheoFXhgK\\ngoCm20Rr2MK0Oc2dlpeKS4iTGF2/Cz/2uVDA+ep5zFqzKOkl+LGPXtCDF3lwA5qETNmkAgFpAjd0\\n4aou9wWasWY4XKDhNWAoBh9dM68igCbOqlnFXGGOw9DGTdsYTA3APYub8Wtu/P4pG2U8pT2F2cIs\\nbrRuYHuwDQLqzePHPr62/TUU1AIu1i5iyV66p4ymIAi4PHUZoiBiZ7BDj9dtgBCCx6YfO1VRw3wp\\njpq2HDepYc+PkggxibnKIFNL0mSN/8yOifk7hUkIWSsjDmzIYd6A9X5CNKYfCpnNN1OcpDlGCHlD\\nFjRBHOB29zYvZgRBwEpphTdkslzNScUNAHSGHew5e7m101AMyrvISNFmZW4nTUYIOdtc0osaCFIP\\nJKGiIxu9DSpuo1CRlZJe4j45iqTwNZBF7jNm5KwnFTGT1gN2vlKS8tzCIkoiMCnhZXuZS/HuOrvY\\ndXZBCEHbo/zGhtvApamDJpkoiJyDVNJL9OdoCFOl8OWYxBy23PSaOFc9h3+88o+hSFTQZ6O7gV1n\\nF37sY9fZhSzIsHUbURLhbu8uNFnDYnERq6VV1IwaGgn1HHNDF/vuPkzFRJAEIIRwg2lmCbBeWadK\\nYUcQ37PTvUnnLXvu+XNGYgXZ++fcyjmUyiVYqoXbndvYHewiJjFMxYQqqbjWuobb3dtYKa1gyV46\\n0aRlyV6CAAFXm9TgeBAMaFEz/9SRNhGTYtynjBUw45P5oyILWY5JDBFizm9PlVSeU9i5YhBHIusI\\n5QLU+LA1x2njYcolD31Bc5Ik9EZMQMxhOVvMrJZXj73hsotDGNOpDHOoFQSqg17WyzBk49gbjsMN\\nUsJlGNlrG4ZwJv4B9eAOZEmmi78AyKNLse230Rq2YCgGLMWCJmvc54V5xzAvA5Y42IQlSiOA4BBU\\nDQDveBDkIRSMOJ89diaTqMs6dWUWRMwV5lA1q9jqbXGJ56bbhBM6aHgNXKzSzXnDa2BnsEPN5ZCi\\nZtRwrnIOe84eWgNKcOeKYyMOT5RGfGO+7+7jbvcuhSNE1Bxse7CNmlnDQnEBgiBgEA643GXP73Hf\\ngH7Qx7nKOYiCiEE4QJqmsBQLRb2ImlHj14Es0HOd5dtkg/2OqaQdB0kTBCFX0CwtLSFOY/T8HnRJ\\nx+Mzj+NC9QI/L+y9nNDB87vP42rzKi5WL2KltHJPgubF2kX6fiPVm6bXxDca38Bj048dUvE5CiI2\\nfqyTjidb1KRpiphkrg8QyJIMXdQnE24h5CRjhzEVkGDdv8iYPZOCRi6uPvBrvBWni5M0x3q9HlyX\\nTi9M00S5XP6WfLbjwo993O7czvEFV0urfB0dj/HiJk5jbPW3+JojCNQvbLowjSlj6ljC9FETEgAw\\nTBFhePz9eJJw0IQkSkjS5KBTT8C9O+QB5Q2qMpV0NlUKy2KGoIqk8M+Yg5NFw4nNPXYe2aadyxIL\\nQq6YIYTAVE0UtSIKSoGbMBNCUDbKOYlnN3R5Q2u1vIq18hpSkmIQDiCKIhdzmbFmECURb1K6kYso\\njdDwGjAVE2ES4sr0FViqhY7fwa3OLWz3t6mZtEv5N6ZiUhg0ROwOdrE72OWf35RNVM0q+kEfK6UV\\n6LIOJ3Tgxz7nPc4V53Iw8ElFMD8HGeGUk0xter0ePJcWj4ZpwC7ZaLgNpGmK1dIqFouLGIQDdP0u\\n39uESYgb7RvY6G5g2V7Gcmn5noXJok2h7q81XqPXUOjgud3n8I75dxx6bpREuSnLuMnyaSJJEz6x\\nlySqKMuKl0mNPWZZQQgt1ofxkPPefL0G1XnwguZhyiUPfUFzkiT0Ritoen6Pd6IBShZcLa2eeCTK\\njTNxsEFjxLmsJjwLQkgOWgBkOk/sV6OiRtEAVX2wokZVBXzw0j/Be8Kncbd3F5uDTdSd+sEkSQDv\\ndMiSDDMyMYyGaHpNvtnWZR26pENXdBiygYJa4MfGvEBYF04SJKiSmuucswiTkJtmqpKaW5ALaoE/\\nXpEUrJRWqOGVUcGd3h3UnTr8iJI8B8EAr+6/ioJW4GT3olrEamkV3YDCjOYL82gP2zzxKaJCFzZR\\nQt2tU7UxScNqeRWmZ6Ln93hB4cc+dpwdWIqFil7h4gmKpGCjtUFfT1LghR6WS8ucDCqJEopqceJi\\nyV6bEHIgJJA5/iwkjcHmJr1O9v5ZWFpA1+/m4BqzhVksl5ZxZfoKbnVv5TZXw2iIl+ov4VrrGs5X\\nqKv0cdf5heoFCBA4DHPP2YMXebhUu5Qb2d9PMGEKID+xUgWVH8t4MPgHc/mWRZl30ca9nURBhFFY\\nhhh2kQ4b9/UZAdpRk8zZ+37+W3F/MTc3B0VREEURWq0WPM+Daea5YOO55CwhkfcTXuRho7uRg6+s\\nldeOFeTIRj/oY2eww9cAgCpKLdlLfCqdjaOgW7mN7uhHVRUeOJdomoB3zj2BILmEzrCDhtvgJsns\\n/mVrghd70GQNw3iIntjjRYwkSlRVavTBDMU4gOWSA7uELHxYkRTa8MmgOZI0ocIvapHmI0HixZ4m\\n5TvtZb0MS7G4ufNWfwtJmtAJftPHdn8b88V5DjtmrwvQXFQ1qnBDF7vRLrdWYAIvfuIDIZ3Mn6uc\\ng63ZmLKmcIVcQRiHaA6b2B3swgkcXmQBdIq30d2AH/swZDp5e3LmSWrQqZUgSzJszaaiMmMxXgQf\\nN7Vhj5t0b2Tvn8XlRTS8Rk5MZsqcwnqFGonvOru407vDBQIYP+xO7w6dPJVXJyqusVgoLkAURLza\\neBVJmqAz7OBLG1/Co1OPAgL4xOV+pJdlkRbRkiBBFGmeZWiSez2PFTGSIHEz7HGTdAEC9MISxMR7\\nK5dk4qEvaMYnNJO4Im+kgqbrd3nHBKDJY6W0cqJihpHMsxspAQLKRjkn7TweWVUnNsWYBL1hm1m7\\nRNDtAPF97BtlGSiXRYiigJJRwhPGE3hi7glESYSm18RmbxMNr5Fzx+0ntEDTJI2bpgVxgDZpI01T\\nJEg4/MFUTJgK7cDZug1JpIsC6+awRcWQqSpLSTvomvmJf5BsR+Pe8ShqRVyeuoyqUcXd3l3ux3K7\\ncxteTIn7y/YyLtUuUdfjYZv62ozOYVGjHJhnt5+FJlNy6LQ5jc6QKuGokoqyXsZ8YR4LhQUMwgGc\\n0OHfX5RG1BxVAJIkQYoUM9YMdge7COMQu84uvNjDlDmFglLAtDXNE9BRPCk2vZMg8eJmHOubnWSN\\nQ9L4/SMC00vTudctaSV+7WqyhkenHsWFygXc6d3Bzc5Nbs4WxAFebbyK11uv41zlHM5VzvHzn52w\\nxGmMsl5Ga9jCVo++b9/vYxAM8MjUIyeCr407ggPgrx2nMSc6i2OSZOz8KaKSM3pl5zQlKQbB4JBM\\nrQCBX5eCIIDMvBPB7t8iDfMGhCcJUS1Bm3nn3/tG+R9iiKKIxcVFbGxsAKD55PLly7nHvJFyiRu6\\n2Ohu5PiXa+W1EwlyJGmCncFOziRTEKjvyWxh9kA1DYfzBIs0Tfm9NL4nPItcoigCymU6JdVlHfPF\\nec4jHMZDNN0mN5N2I5dK5kc+/MjnDTwGG8pK5xIQTtzXZR2GZBzy7cqaWhuKAVu1YakWL/L82M9J\\nt0/aWCuSgtkCNViu6lXc7t6mVgFBH02viX13HwvFBVyoXkDFpJLF2QlzkiYo62UKH5M0KCI1lfQi\\nD51hB5JIJflnLCruw/znamYNl2uXMYyHtJEYDNANuojTGLZmI0ioNPSN1g1sdDZQNauYL8xjrbzG\\nDT2P40lx/hUmFLOjOAqSls0ls+uziNOYN2WrRpUX4pIoYclewkJxgdsHMFhgSlJeJM4X53PXfNYA\\nmU1cdFnn8DOAcjQfm35sYv7PHScEvk9ghq5MqfUk/Et2HLIoH8olhBDemB4/f5ZiccoA0d7KJdl4\\n6AuaSqUC0zTheR4nL1cqldxj3ihJqD1s59ScmE/MSXChTuig5/dyFz/TZs8+/yjOTRYLPN49Gb/g\\nRVFAuQL0e+RUGGhNowlIFA/fQIqk8ITkhi5awxa6fhfDcIj2sM2lo9vDNoKULkJFtUgTDxE4x2QY\\nUzUWtvAX1AIKagG2SrtUJb0EUzX51CMMQ0iCdAB9G8HV/n/23jRIsqu8Fl1nPidPjpVZ89hzdUvd\\nmlpCCITAlp95l/E6wmBsZPww9xkxmHDYDocvD4f8Aw/4hgOMAYHDgAUOgy0cYF9zfUHmIgnJQi3U\\ng4aeu7qy5qqcpzOf837s2rvOycqsoSdN/REKoquyMvNM+9vr+9a31kYVTJ7j0R8ncy8ZNYOn559G\\nw2kwrnEQBIjLcTi+g5SSWkt8q4po05VpxOQYq3aFpRltz0ahVUCP1oM+vQ89MVKJW2ouMVlQH0S+\\nked4xCVyfJZnwXAMGK6BslmGLutk821KqNv1NUGB1U7WRhQyCm62SkmbmZ0hwvgKMDREhgsFXohQ\\nLNqv9e6e3diR3oF8LY9zpXPEj8H3YXkWji8ex/HF4xhMDEYEMMIxmhwFAmC2Rp7dqlnFycJJTGYn\\nSaeFF9YBF5psXN9lg/xNu9m1AkcTKU04FMS0z9gFQYCW00LLaa17L1VUI50+gEhkKoOvh7X8s21V\\n13itD0rfra8aic1XYoyNjb0iAE3DbmC6Mh0BMzvSOzo+S+1B6c7hTqfESxhJjqxbFzvRjdgmlkN0\\nwxpcm1zCcaSAMJYeg+uRzozhEC+XklnCSmOF5BbHgOURdS9FJJtRx3PgwYPpmKTj7az59ISpyDkt\\nx2YfZUFmm1daFHF8h+VRWsjoFnE5Di2tIaWmcL58HmeKZxCA0MmmK9NwfAe7M7sxkBhg6zMFbRWz\\nAg6kKKaJGmRBZkUiz/fQsBoMDKTVNPr1fiw0FlA1q1AEBb2xXqTUFIaDYUZx4zgO5VYZjkcMrWVL\\nxqw/i5pVw6nCKQzEBzCWGsN4ehxxOb4pjWwjcNNOSZudnSXS9jowMDjAXpfTc8TSoC2X8ByPwfgg\\nBvQBFIwCpspTqFpVdg1eXHkRxxePI62m0af3dbz/02oae3r24GyJqJ9ZHimuUVBDO/CKoEQAjCzI\\nazOVoetOi6edIiwWI/FSx3NH93LtRUVVJAbgYWB9PZdE49V1NB2C4ziMjY3h1CmCwGdmZl6WgKbQ\\nKmCluXZDqqK6pbkCz/fIJn+VZgWQJEIHxzcKumELg5nw7zoNc9LKFs9zSKUB2wIMY+Nk9H/+z//G\\nbbfdgL17J7ZUDVBFFVktC03UUDJK8OFDEiSm2U8lkRt2A1W7Cpkn/NP2xSpAAB486eb4ZDaH44jh\\nmy6RalpKSUERFVZxAwhVrOW0IqIDnb437RYNJ4bBg8dcncx2iLyIE0snkFSSmEhPYCI9gT69DwEC\\nGAahzokcmR/qT/YjISdYJ0bkReiyDi8gLXVN1JDRMphIT2CuNofZ2izbaPiBj6bTRI/ag3vG78GJ\\npROYr8+jZbew0lrBgdwBojqEIEJDjEkxJOQEEkpiwypUuAtD5086UdIuzl8ENAABMDg0CJ7jI6IT\\n4apTuBPi+i6SchI39t6IufocpipTpPu0GhfKFzBVmcJQYgg70zvXbabG0qRzOV+fJ50438dCYwG3\\nDNwCUVhb2qj0peVaESWybiFwAgMvkiAxWh477lCny3CMiDkeDVmQEZfjXYsRHC9C6b8DXmsJbn16\\nw2T0w0d/hoOv+7+xY+L2V1U17ZUYm1GYXw65pGYRL5Lw/OWOzI4N6TcAWU8W6gsom+XIzzNqBoOJ\\nwc1FQgJ0fbY4cODC4CNE8dpuLslkNLz1rT+3ZZVEqgRZs2pwXAcxKcbOheu7qFgVNO0mWm6LbDYh\\nEi8Wyhfj1qrxqqhCkzQYroELlQuIiTFmJqlLxNfLci12rLQ77vlehOXQHrSbMpQYgiIoyFfzKBtl\\nSIKE5eYyGnYDA80B7M3uRVyOw/RIB6jQKjAV0JSaQkpJwfRMMv8DjhXvqlYVoiMiLscxnhpHQSoQ\\n+W5/jT0gckR06I2jb8Spwik8M/8MlpvLqFk1ZLQMmzWar89jvj6Pp2afQo/Wg/H0OMZSY+jVezse\\nW/habDZvc3H2IrA6nz44OMi6gmHRHWBtlqldSYyKLszV51C36uy9W04L8/V5pNU0hpPDEXVSgFDZ\\nFFHBhfIFBjbKRhl3DN/BJK6BqKiM4Rib5hJ6bSiI2YhBYDhGZDaIhsQTM/Ruz+92c0kstxf3vu1t\\nr8pc8qoHNABJQhTQ5PN5HDp0KPL7lzoJLTeXUWwV2b81SWPyghtF0yamjeGFQeIJv3YzihoFMjTC\\ntLNOlbT21xBQw0NRfcgK4LoBLAvwPSAIAI4DHv7OP+JP//QBTE2dw4c//GF88Qtf7Pp9qMN0uzpZ\\nWk0jrabRsMjwfcksMdpR2Dk4CAL48CHzMlOACXNvw68xXANlo8w6DY7vMADYo/WQeRtXhMOt/T2d\\nr6DVfo7jMF2ZRtWqEhUdWceOzA4UWgWcK52DF3gom2UYBQOO50ATNfA8j6JRhOu54HgOGkeqcgCQ\\n0cimwXRNNnwLkIW42CJALKkksTOzE2WzjGKrCFmQoYka/MDHVGUKPMcjpaaITwA4Njtke3YkEdBu\\nwlJzCYqgML+bjaq3Ah+lpFFwY7omZpZmCFecI3MGuqQzH5Z2GWTKSW+P4cQwhuKEPjBVmWLgKwgC\\nLDQWsNRYwkhyBPuy+5CNZVknbSA+wIZr6fk6vnQck7lJBFjjvm8UPMdD4iU2B9PpuWsXCzAdEy23\\ntW5eR+RFNui5WXAcB1EfgKgPwHca8BrzCDwTge+C40V8++Hv4Y///Es4f3EB99+/hC9+8Y5N3/N6\\nXN3YTGTmpc4lVbOKmdoMu1clQcKO9I5N6TPUHiC8mRJ5EcOJ4U0LY+HKe/ssRVczwXD3BhwCBFA1\\nQFEDkktMwPMDlkuefOIn+Phv/7+YmjqHw4cP461vfbrr9/F8D3W7jppVi0gsK6ICRVRguiaKRhGG\\nTSTzE3KCeXzR4/F8ImUfk2LrCjPh11m+hUarwdY1yyPsgZgUQ1yOY0AfgO/7LK968CLFQvr/dE1W\\nRZV4w2hp1M06LlSIAWrLaWG6Mo2KWcHe7F5IPOkeGa5BOku+g2yMGKOqooqMmmG+aPTauL6LxQYx\\ni1ZFFTszO1E1q0QpMyCFRIETkK/m4XgOdvfsxv7e/Sx/+IGPleZKJJdQOf6jC0ehyzrGUmOYSE9s\\nCQC3z9tYroVzC+fY/dI/0I8etYcJ3rR7t3QqxAJre4aaVcN8Yx4VY00qv2bVYJQMZLUsdvfsxkB8\\nAIqosG7JzsxOPLf0HMtvRxeP4lD/IUiC1NV7rP3YwhSyzQrSACnQUvXTcAgcYTlQuvmmn7tBLnn8\\nySP4rU98CucvLuD222/HL7z9fZu+5ysxXhOA5uWchJYaSygZJfZvak62EZihw4PtXP2EnEBSSW6I\\nvNuBTDiYmhUXfX2n96D/TxdkWQIkKWrquWv3IKamzgEAHvrGQ/j0pz+NVGqNgkUrZ50klukgpuUR\\n7XaRFzGcHMZwchhNu4myVUbdqrNBTEVUoPAKRIG0h+m5cAOiWlO1qoxm4HM+VIlUO0yHuGW3nBYa\\ndgMVs4Kp8lTELC0pk//XZZ1tkKcr00xxRORF9Ol9iMtxpJQUNFHDxepFNKwGVEElhmp54itTaq0B\\nsoE4aalLgsRoSbqsM+8bKhFNr1fTaUKXdPTpfdiZ3omSSZKJ67moWTWi9uZaaDktjKfGCcCID0Di\\nCe2MzneEr6nlWVhprmCluQJJkFjnRpf0TedtqmYVZbOM+ZV5YvjFAbn+HJOSBsAUXbpRGMNcbJEX\\nMZGewO6e3SgZJVysXETFqrCNT82q4cj8EfTH+7GnZw/r2I0mR+H6Ls4UzxBpbKuCilXBDb2dXaAp\\ngKFdmK0kHfodHc9B3apH1APpe8bl+KZV8G7BS3Hwmb2Rn43tL+P8xT8CADz00EP40z/9U6RSqUt6\\n/+txZeLl3KEpG2VGwQRIl3BnZueGxS0/8LHUWELRKEZ+nlJSGEoMbfhsdJuPALBuYL5bVZ79bHVJ\\n4DkekhhASkRzz22H92NunpzvZ555Bk89/RTuuP2OSC7pBGJoUGVJP/AhcAKyWhaiLsLxHJaDvMCD\\nwivQFR0JOQFVUBkdTRM1uIFLJPXtJlOcCoKADf87PunyW57FQEjRKLIZurgcZ35iYR+upt2E6Zlr\\nuZSXMZIYgR2zkdEymKoQueIAAapmFc/OP0uOO+BguiZysdxakYcTGAijrIWW0yJ+NE6T5VnLtZj3\\n2WhyFFWLABvXc1G1qsxuoGSUMJmbhFQe4AkAACAASURBVCZpGIgPQJd15Kt5TFemiVhEaIPftJs4\\nuXISJ1dOQhZljCZHMZYa21B1jF6/ht3AfG0e+eU86fbzQKovhQuVC5F7iv5N+O/b7zGA3PvDiWHs\\nSO+A7dlYbC6yuSIa09VplIwSY1AAxMdof24/ji0eg+MTNbknZ57Ewb6DHWno4ZnM7eQSAEwNNOLp\\nhDWGzWZ7uW7RKZccev0gZhc+CgA4cuQInn76adxxx6uvQPaaADQbJSHTNFEoFAAAgiCgv//aKT4s\\n1NcUSgDCpR1JbqyMYzhkRiIMSqii1UZV4S0BmQ7RPuS5UVA5QRr3vOkeHDhwAC+++CJazRa+8Y1v\\n4P6P3B8BMeEqVRCQij+tvkiCxJRbwpFQEsjpOUi8BNu1UbEqEVUb27NRNIooGSVokoaMmsFQYgia\\nRHxQlhukjV40iigEBdieDQECm3GhPi2Uy0rfl1bf61ad+BzIcSiiQigArom6VWfAKxfLoWbVMFub\\nheVZWG4s41ThFJp2EzszO9lwLZWmZud4tepEP8v1XQZcacWHKp70xnqRVtO4ULrAEktaTaNpNzFT\\nnUFaS0PgBOzL7UMulkMulmMKXHWLAJzwBsPxHJSMEspmmW3Q4xLZpFNRADrsWLNqaNktmLaJSr1C\\nrrsPZHPZyLUKq6S1t9/D/7UD+ISSwHh6HMVWEefK5yKzZYuNRczWZpFSUhhPjzPPouHEMEuADbuB\\nF5aJpDPtvFAQcymu0J7vEYM514yC/IBQ+OjM0pWMN73pTbjhhhvwwgsvoNls4qGHHsLHP/7xK/oZ\\n12N78XItjhVbxYgypiIq2JHesSGYMRyDrU80BE7AUGKIdY67xYbUso26+xtQjtjPQuCGRl9fH97z\\nnvfgm9/4JgDgi1/8Im7729tYoabpNCOfAZBubdNpwvO9rhRQSZBIFVyKM2d20zXZ8fmBT2YTHYOI\\nyUgaYUDwEjzfY9Tnht1g9C/6voqoMNDHZuyaAVsLY3KMddIpDU4RifAN7YrkYjlSxIr1YapCJJ4r\\nFil2LTeXMZIcQS5G5nlUUWViBvS7086RKIiQfCki7EJVPQ3XQEbLIKNmmHcNQJgiqqRipjaDpJqE\\nF3jYl92HydwkJnOTcDwHszViY5Cv5tnsDkBsI86XzuNC+QKzPRhLjWEgPkDmfEJD+VWzygD1fGUe\\nUACYpNu/7t7AWiFV4AUiFBQaypcFueNsymhqlCn+LTYW2XvV7TqOLR6DLMoYjg8jG8tCERXsze7F\\n88vPAyBFvxNLJ3Co/xB0WV+Xw7Yb1COuPf8CYEXR7QCjrURvby/e+9734qGHHgIAfOELX3hVAhou\\n2EyG4VUQX/va1/DBD34QAPBrv/Zr+OY3v8l+d/78eezevRsAAT4bOUBfqQgCwkOltBoASCpJ5jPS\\nKfyAGFC2V5/oA9Dt75hyS4fLvBGQCf/9Rj/f7O+//OUv4/6P3A+IwK7JXXj08Ucjf+P5HkyPGE0G\\nCKCIClRBXTd4TZViNFGDIirrfEdM10TZKKNslpkZWDgoQIhJMegSWZTqNgEgzIgzIBWTilmJKMVR\\nqprt2VioL8BwDLYQZdQMkmqSeOXIScTlOBEfUFKwXAsLjQWcLpzG2dJZLDWW4HgOemI9ONh3EG/b\\n+zak1BS7RuFNc3hj4PouUUprP9UBIIsyU+qhktAST4QH3MCFyBH/okP9h9ZdKz/w0bSbRP3GqDCD\\nUQpCwr4t9LzF5Thsz2bt8fxMHm9769sAiwgCHDlyhBmwtQ/m06rhRsad3TqCxVYRp4qnMFObWdf2\\nTypJZlC61FzChfIFRg9Ma2ncOnDrJbtAU6+H8DWnP9dEon4U9mS40vHggw/i/vvvBwDs27cPJ0+e\\nfFVyn18pceLECdx0000AyPWgVGYa6XQa1SpRHFpeXkZv78ZzBVciVporWGwssn+rooodmR1dN1tB\\nEGClRbqy7TL1m5kTduvKbOYxslFs1OkJv/+RI0fwujtfByiAlJDwo8d/FJmH9XyPddq9wGNdkfZn\\nnwNHhGJWacbtx0tBTdMmHi+d5kvpBppubGmV3fM9GC6ZX2k5LdStegQwho+35bSIwtrq+yuigqyW\\nhS7r7LtrosaUOstGGedL5/HMwjMotAqoW3Wk1BTGUmN4+963oz/eH5mJpZS08OwOVZ6jxxEOgRNQ\\nM2twfKI4SkVtZmuzJCdxHAbjg7hj5I5154x2+i5WLmKqTNTa2unGFEyl1TQGE4MYSgxBFmRUzTWF\\nrne+451oFVpAADz++OPIZDJrDIy2oXwmg93l3uu2d2naTVwoX8BMbWbd9VVFFSPJEQzGB1G363h+\\n+XkECCByBMweHjq8KQWzW1AvmapVXVcQoGbnl5qnthJHjhxhIEZRFMzOziKXy121z3sp4jUBaB55\\n5BH8wi/8AgDg7rvvxmOPPcZ+9+ijj+LNb34zAOCuu+7CE088cVW/SxAE6wbWUmoKg/HBrgmBbtbD\\nqhcCJ6BH6+nKjb5aQIZGt1YvDZoUitUibrjpBjTrZMH/9re/jTvfcCdT5QLAFqv27yTyIpO7lQV5\\nSwmTJrWCUUDDinqBeD7ZqFMTq4yagS7rEHhiOBreYJuuSZTVzCqqVhXFVhHT1Wk2lxMgQEyMwYcP\\n31+bKdFl4i0QTpZlo4wzxTM4unAUXuAhqSSxL7sP/fF+3NB7A3ZmdsLyLOIAHErsHDhm/sZxHPtO\\nYd39klFCEARIykn0xfsgCzKWmksotopMpAAAxlPj2JvdC03S1hlOur4LzyOJmNIp2ilVNKjqjy7r\\niEtxnHnuDH713b8K+MCdr7sTjz/6OEs03VTSwkH1+ds/x/EcJrFJpZQB0nmhFIzw+wq8gJSSwmRu\\nEqqo4lzpHPudLus41H9oWy7QVEWokwqaIijrlMtoXGmw0Wg0MDw8jFqNFD9++MMf4t57772in3E9\\nth7lchk9PcQbJBaLodFosGter9eRTJJhY0VRYBjGVQefS40lLDeX2b9jUgwT6YmuFV7LtTBbm43Q\\nlZlx8KrnSae4GkBmq59DZ2LqVh1v+69vwwvPvwAA+J3f+R38xgd/Aw2ngYZFOvS0W9q+4RZ5kdF4\\nEkpnX65O38XxHBgu6dC0GzB7AZmzQQBIosQKbe2dINd30bBIF6fpNIlMcmj4m+M4SJwEWSQdE+qP\\nQ4tT4SJczarhYuUinpp9Ci2nhYyWwXhqHL16L1njc3sZu6C98KOJGuIKWbfCxTN6PMvNZViuBUVU\\nkFJSyMVyWGgsoGyUMV2dZnk+G8viUP8hVtxql0F2fZfZT9C/p8cZDsu1wHEc+vQ+DCYGkREyuPeO\\newGXUMaqxSqzNuh2b4SjEyUNWBWFWVUiCwMY27MxV5vDfGM+cm15nocmaphITSCjZfDCygvsXEqC\\nhFsGbtk2qGk5LQbywiELMjJqZtMZtysVd9xxB44cOQIA+LM/+zP8wR/8wTX53GsVrwlAc/r0aUxO\\nTgIAJiYmMDU1xX7393//93j/+98PAHjPe96Db3/721ftewRBgNnabMQkKaNl2CxFp9dXzMo6jmVM\\niq3bgIf/phuQ2UhlJfz33WKzxOX5HpPCDA/kf/L/+yS++vWvAgLw5v/rzfj85z4PVVLX/FFC31fi\\nJWiSxuhf7Z+/nQRqezZqZg0ls8QknRGAKV5R1RpKEetEb6Pvc750HlWrirpVZ9evaTeZizwPniUL\\nP/DZLIsXEOnMklFiLWZFVJj5JQD0qD3M24ZKC1O5X4EX1h2z4RAp65XWCmvzC7yAXCyHjJpBTIqh\\nZJRwfOk4lpvLDFQMxYeQVtPo1Xu7znrQ62C5FhoOcbB2PAcCL8D0TPi+z2SRVVHFYz94DL//278P\\n2MAvv/uX8Y/f/seO77sZuPF9P1LJa++GtIfjOZipzmC+OY/Vu4L9TpM0pJU0GnaDbexiUgw3Ddy0\\nJVBDq7PtspkSL62r+HZ7zq5k/PZv/zY+//nPAwDe9a534bvf/e4Vff/rsfUIggDJZBKNVYfuQqGA\\nbJbQLE+dOoX9+/cDAHbt2oVz5851fZ8rEQv1BRRaBfZvXdYxkZ7omheKRhFLjaXIs6VLOoaTw12f\\ni2sFZNqD0rlqVi2S/7773e/ik5/6JCABvaO9+PrXvo6kmkRcIUaW7bmEgph26eTt5pLwmm65FlEH\\nW1V1azkt8DzpSKflNDKxTFdJXt/32ZwPpcS5nrsmYsOE1dZo2F7gMUWtolFExaig1CoRHxIuwI70\\nDiaPLwsydvXswkB8gAEjOqNJqb3h70XB1kprhXVKKMhIq2moooqyUcZzy8/hYuUiAwYZLcNySbeh\\ndXodWk6LgZtSqwRBENj70M69LMiwKhb++0f+O1AFduZ24vyZ8xu+bzdw4wd+RE0znHM6rdd+4GO5\\nuYyFxsIaSF0NkReRUlJMmIf+7JbBW9YppXUKy7VQMSvrunQiLyKtprfkCXUl4+/+7u/wG7/xGwCA\\n8fFxnD9/HoJwZeltL2W85mZoZmdn4Xkeu4jXivPsBz5mqjMRyliP1oP+eOeZHcu1UDbL0crBaleh\\nmxpVN9WPzYDMdrox7UE7Me0gBgADN+947zvw1X/4KuACP/73H6NRbCA1vMbR1kQNmqQRYype2JDm\\nFq5ebZaQZEFGTicDk9SsrGJUULfrkHgJfuDD9m0sN5dRMSuISTFm3kUTvOVaOFc6B8d3iAeBQNRh\\nZEFmVXwq8UxnbhoO2ezEpBhaTgscSHeFOlBrooYLpQswXAOKoEAVVUxXpxk3Oa0QxR3TNddoW5zI\\naHjUublhN2A4ZHhTl3UCclZVaJJyEpPZSdiujZXmCnyQRZuq4ySVJHKxHNuct1PEKGVL4Ihvy3x9\\nHmWzzFRzFEGBLuuYX5wnQ5waoI/pmK3NRvxuaFCKGaVEOJ4D27eZH0w46bRT0qgQQdgPhud4DCYG\\nYbkWk3emzwrlvLecFjzfw2BiEC2nhWOLx3BT/01dq2GO50S6UzQEbm1eqj3C1cPwfXolN3sf+chH\\nGKD513/9V+Tz+cgsx/W4dsFxHEZHR3Hy5EkAZI6GApprOT8zX5+PKGMmlERXZUzbszFbm43kHg4c\\n+uP9yGrZrnSdaw1kwp2YMIhh9C27jgN3HUBiKIH6Sh0rF1Zw9uhZvOUtb2GvjYkxptpIZ/+60Vjb\\ncwnQPdfRAXtN0mB7NpoWMeqsWBUCPBAg8ImQTaFZgCzKjB5NC1dBEKBu1+EGLmSRzPWFvVFszyaF\\nN8eA4Rmso2O7NniOh+u58H0ifiBLMlJKCjExhmKriJJZgsCRmZLFxiIm0hPY37sfOW1tjaf7A+pc\\nD4DNBdF1mCqtLTWXMFubJUIJooI+vQ9Vq0p+5hO5aEmQYNUsZt5Ji2QcuHVzLTf23QhZIPToF1de\\nxOniaSzUF+D4DqODz5XmgAyADCDtlfDv5/6d+N2kxiMD+e3zWFSplPqLtRfNwvcs3QuxfLKaS7Kx\\nLPbl9mGuNofp6jQDIK7vEkW8Vc+fXIxQtI4uHMXNAzd3nTWjXar2EQGe45FSUpv691yteO9734vf\\n/d3fRbFYxPT0NP7t3/4N73znO6/597ha8ZoANLFYDNlsFsViEa7rYmlpiRkAhgc7r1YS8nwPM7UZ\\nRrECiO55J932ICCeIWHpXgDMj6RTwrrWQKYbiPEDIolsuRYs12KDkbfdcBvecPsb8MRPCJ3vm9/8\\nJh745ANMvz9iOhhSWduo29SekIANuLQglauhxBBiUgwpNUWUXByDLcK0dV6zalAEBQmFJMT5+jxL\\n7L7vI6kmGdjhOA4ZLYM92T3gOZ4pYNGkTBNAzaohJscYVak31ouEmsBcdQ4Fo4C6XceKsYKp8hSO\\nLx7Hwf6DGE+NM2U1AGyzzoFjw/u0Na5JGulweC47NxWzAp7nMZGegCzIKJtlNlDaH++H4ztYaa2g\\nT+8jSmgduLt0oLTpNBn1zw98+PAZH3hxcY2739ffx6qqVNknoSSQkBMQeIElTWokSquPnYw7AQIk\\nFJEAvjCFI3w/KKKC/b37sSe7B1PlKZwvn2c0w5gUQ9Wq4pn5ZzAQH8BQYoiAmoGbIh0qz/fQsBvr\\nqmhUtjWsSNQt2mWdrySomZycxL333otHHnkEvu/jwQcfxJ/8yZ9ckfe+HtuPsbExBmjy+Txuvvlm\\nANcml1DKMqXxAGSGbCw11vF+KxklLDYWI8+YJmoYSY50BOjXGsh0AzG089GwSZdY4iXSgcpO4Jff\\n+sv46t9+FQDwrX/4Ft7xi+9gqpZ0HaMAhQrVbCmXAFsqlnHgEFdIx0MQBJiOyeSaqbyx6ZgwHXNt\\n/mNVLjp8HainDZuhERRoMY29B+3itJwWGk4DC7UFoqrFiUx5bSQ5gqRNDJoXmsRDqGJWsNRcwtni\\nWezv3Y/dPbuhyzpUgQA82mGiqpjz9fk1psFqISm8VzEdMuM6nBiGyIkomkXUzBqqZpXNXDXsBjSR\\n2E10UgOjx1ixidrn60dez5Tp6lYdM7UZlEpraq/pnjTmanOYq83hP2f+E9lYFuOpcYynx5nXDJv5\\nXKWDdaWkcYTBQC0dwh5l4e/GczxGU6MYSY5gsbGIi5WLaLkEkGiShgABThVOIakk0a/34+giATVh\\nyW8/8FE1q+v2bxw4JBRyj26F7ni1QlVVfOhDH8Kf//mfAwD++q//+jqgeSXG2NgYikVS0crn8wzQ\\nXO2qmud7yFfzEY3xPr2PSc6Gg25UwxVialLYqTW5EZDZ7qBc+G+7HUcnEOP6LlMtsz2bDe21VyB+\\n8//5TTzxoycAF/iHv/kH/MWn/oJJJ3f7fqxytoWEBKBr94Z+X7rRpe1yWSSuymWjjJbbYkPwhkuU\\n5BYbixB4gVX7emO9jCYHEIpHRiVDqS2nxZJAXI4jLscxmBjERHoCxxePE1nlVc8Dnidtf9rKpsZp\\nPnzM1eew0FhALpZDn97HhhHjShxJOYmYHIPneQg4YhqqiApyWo6IG3gW6nadSJPya4agaS3NAFXJ\\nKDFeNgBG6eiN9aJH64nORiFA1apGrndCSUTuxVq+BrQAKFFVGipisdJageM5jPYQljamyZleQ0o/\\naJe/pB0dmmw7zW+JvIg92T3YmdmJfDWPc6VzMFyDCGaAw0xtBvP1efTr/TBdE68beR1kQV6jIoaC\\nAwdN0rpKV3eLqwlqPvaxj+GRRx4BAPzN3/wN/uiP/giqemkS0dfj8iLc8Q+DmKudS4IgwExtJjJE\\nnVbTHZUxHc/BXH0uQm/mwKFX70VvrHfd6zeTYL6SYKYbiHF9l83wtZwW6wIPJ4cjBY33vfd9+NqX\\nvobADPDUvz4Fa8nCxL6J6PG0KWIB68EN/X17bMQEoJtn2t1XRRWqqELiSaWfCgnQ17m+C9uymWgD\\nLdAkpETELJIqnwFgIjW0ECcLMnq0HsSlOESBdPhFQWQqZD58KGkFmVgGS/UllK0yPM/DcmsZixcX\\ncWT+CAbiA8zxXhVUVkx0PZeZa1LasiRIcD0XLbcF3/fJdxCJelgsE0PGXKU1mySX0BxoezbOl88z\\n1bX2Oa6SUYoYJ1PfGo7jcBd3F4798zFgAUAaEbGHAGS+Z6G+gCdnnoQqqgR4JEbQH++PdPLptaa5\\npJMSmR/467o24XuB4zgMJgYxEB/ASmsFFysXUbfriEkx7O7ZjXOlcygaRWTUDJp2E3eN3oW0mmay\\n4e0FOjoicCmKaFcjPvzhD+Mv/uIv4Ps+fvjDH+L06dPYt2/fS/21rki8PM7wNYjR0VEcPXoUAElC\\nd955J4Crm4Rc310nZzgQH4gYQtIIO7nTUASFzFW0LQzXCsh0AzFU5Yo6r1MQ066bLvESq0L9+n/9\\ndTzQ9wDy+TxKhRIefvhh3HfffRt+r27ghv5uK90b6uyLgMy80O6KKpEZFSiE+kfNNutWHWWjjJn6\\nDFmYPKBu1ZHRMqzKQlvsCSXBZJDDA5gcR1R0mnaT0LTcFuFXK2nc2HsjvIA41xuuAcuxMN+Yx8mV\\nk8TdG6RrsdhcRM2qYTgxzCgXS1hi/gC6pCOtpjGaHGXS1CkphayWheVbRMZ0VRJUl3XMVGdQMSts\\n9ooabtLrvNhYRMkooT/ej6SSZICEOlwHQUBUd9rojoszi0ATQBM4NH4IuqSjYlYiGykArGtXbBUh\\nCiLiUpwAS4UAyzAtI2zcya7p6nmhEtBUMa09GQm8gB2ZHRhPj2OuNoczxTMAiFfNTG0GCw3C5T5V\\nOIW7x+5GTo+qvFDH70uVzewEaujPLyfe/va3Y2xsDPl8HoVCAf/0T/+E++6777Le83pcWoTpfmFV\\nzKuZS4IgQL6aj+SIjJYh60PbvUUHssMzYIqgYCQ5su75vVZAphuIoTQr6uuiCip0WWe+KjTCQ/03\\n9N6Ad97zTnzve98DADz4pQfxuc99ruuxdAU35CC3nEtoR5mux/Tc0DUWIOtHuMhHjZLptbAtG4FP\\nilEBtwZY6OwlpRCHQxVVAnIcExWjgiAI2OaaA/G9adkt2JqNhJxAvprHxcpFVqihDvR9eh96Y72E\\niWDXYLkWalaNSFcrKTJLxctIK6QARnNly2kREBACACWjROSFQbrodI8TBAFWmiskl+j9jKJVaBWY\\nUhoARu8On+fSXAlYBLAIvKX/Lbh18FZMVaYwX5+PgISm08SpwimcKpxifjMT6QmMp8YRk2Pruvnd\\n7gm2Nq/e552ATZ/ehz69D8VWERcrFxEEAfb07MHZ0lmUTaKqeqF8AbcO3YrR5GjkMxRBQUbLbEuM\\n5lrExMQE3v72t+Nf/uVfABAJ9M997nMv8be6MvGaATTd/AOuVhJyPAf5aj6yOA0mBiPtSWBNqSr8\\nOg5cR4dYutlrj0sFMlsFMUEQMLMwy7WYUpgiKkiJUclo6l5P50XCcf/99+MP//APAZBW53333bep\\nWlqn39HFZyvdGyqL2bAb7HU8eOjSWlucesrE5TjhIxslJOQEDNdAw2wgqSbBg0fFJPM3/Xo/FEFh\\n8zHhza8kSNBEwklebizj+OJxVM0qYjKp0pTNMkRehC7p0DUd0IDh5DBuHbgVC/UFHFs8htk6kck0\\nHAMXqxfRp/dhLDnGWuWaqIGaya20VrDSWom0tJMK4ZADYK3vtJpGvppHoVWAIirQJWLgutRcinSw\\nZqoz5BquzjTRSKpJwkkPnWPHc5BfzBPfAAHIDeSIKpusM6BHq620A0P/4zgOFbOCmlVDXI5H5m6o\\ncSe939uH8wMEET+F8LxNN/oABTZTlSlisldtYPaFWRwePIwDvQfYcOuVqKK1gxr6vS5ncygIQsfn\\n53pc+7jWHRpq5BsuEmRjWQwlhiKv83wPc/W5dYUx6nnVLnV/tYFMNxBjOAaaDgExtmczENOr90ae\\nP0VQ2HrWDsQ++tGPMkDz9a9/HZ/+9KcRj8cZYNkOuOmUS+hrIsezSpOlbARJkAi4kNc61hzHEc+r\\nVQ+1QqtAfGVW5wU1USM0Nc+EZVhkhlJSIXCEkku79wARmpEFGY7nYLoyjRdXXsRicxGqqMIPfCxI\\nhIIWE2NQJRUqVEY/vLn/ZpwtnUW+lmcgaamxhJbTwq7MLsTlOGpcjZlwaqIGVVDZJl2VVCbTr0tk\\nptRwDPjw0aP2oG7V0bJJoU4SJOzM7MRiY5HNjHi+h/n6PJaby0x8h0ZCSSCtpiPn1/M9XJy7CMgA\\neGIBMJGewER6ArZnY74+j5nqDObqc3B8h83B8OCx1CRKf8/MP4OhxBCZu0mPMyGIrdwT7fdD+/XP\\nxrLIxrKomlVMVYio1IuFF5li3ffPfB8Heg/ghr4b0K/3I62mu846vxziYx/7GAM04efnlR6vCZUz\\nAPjMZz7DJOo+8YlP4LOf/Sxs24aikE0bz/MwTROSdPk64LZnI1/NR7oaw8nhdaoYdIg8/JDR9nJ7\\nlWE7ppjb7cZ4vscAC/3OfuCzChP1iKHVpLAPDB0A1ETSwt6osr2ysoKRkRHYNgFvTz/9NG6//faO\\nr93qbdnt2AMEsF0i+Wt7Nhp2gy2qCSXBZKDDi1jVrJIqDIgnTNWqQhPJECitdmUUMsfUdJrE/JOq\\nskkaEnICsijD9VwsNZcwX5/HxcpFiLyIhJzAjf03IqWkOiqM0fa47dq4WLmIC5ULsBwL4MA8UOIS\\n6ZAYrgFJkKBLOkuydLYlvF5zHIe4FGfdDAQgppk8Dw4cdmR2YFdmFzMipcow1KQ0ISfYrJciKmzo\\n0vEd2K4Ny7bWNm4cMDc7B1leq0bRIX6RF5lTN/WI6Hgt2+ZuwnM9m6mkUcoGfR7a7x/bI+f12YVn\\n8dzyc+yZU3iFUdX2ZPewiuKViCutgLad5+d6XL340Y9+hJ//+Z8HALzhDW/AT37yEwDATTfdhBMn\\nTgAgng+HDx++7M/yAx8XKxcjVJ1evXedMmbdqmOuPhcRkaHV6/BMw9UGMmEQQwVEgiBYm4dZdaun\\nICYmxSLPuS7prDCzUWXb933s378fZ86QQsWXvvQlfPjDH+742o2OORydjp/+reev+XJRY2WO4xjl\\nDIgWFqn5cNjsWeZleAHxDPMCDwJIrjRcA4ZLVMxY54aX2SxNyShhvkZyCcdxSKtp7EjvQEbLkBnU\\nNs82OnsocALbgLecFniOJ5/te6SoJutMwTIXy7HvTjtS7aFJGgERq+vsYnORnbeclsOe3B5YroXF\\nxiJsz2beOY5PgFx/vB8D8QGk1BSjEdP8HAQB3vimN+LkC2Q27ZH/eAS33nLr2jHxayI1hVYB+Woe\\n09XpyHPRHrlYDuPpcYylxtZJkm92T7TfC+2FvJnaDF5YeQE/m/sZnIDsmXiOx2RuEnt69mAiPYE+\\nve8lGfzfSmzn+XklxWsG0HzrW9/C+973PgDAL/3SL+E73/kOLl68iB07dgAgFYG5ubmN3mJLYbkW\\n8tX82hA3x2E4MRzRLXd9F2WjHBlC5sAxjXwaVxPIdAIxtDtDaU0AOoKYsMllN6njbvGBD3yAudV+\\n4AMfwNe//vVN/+ZSwA2tpPm+ouVCjwAAIABJREFUj7JZZnLIdL6nPcpGGTM1Um0NQDo6Q/Ehthm3\\nPAs8eBRN0sEJbxwkjrhNx6QYREEEF3CoO3VMV6ZRs2rQJR0TmQnsz+2PdCnaOxbh715sFXFi6QTm\\n6nPEW8dtwfVc5l2Ti+XQcBrMJ6dlEwqEF3jEFwd+xBiTDpkuN5aJ6ZxMjNv2ZfehX+9HSkmh7tQx\\nW5sFF5CuU4CASCCr6Y7uxdPT02zT1tffh5PPn4zwrbt1DKliUd2qr1MUC4cqqkjICSbQQIMe10Yb\\nM6ra5vou6lY90gGdrkzjsfxjaFgNZow3kZ6AKqro0XqwN7u3q/rgduNKg5pLeX6ux5WNs2fPYu/e\\nvQBI5396ehoAkM1m2WDzwsLCOqfz7Ybne5iqTEUGtPvj/ejT+9i//cDHQp0Mg4cjo2YwmBiMdGU2\\nKgZczj3ZCcRQnxPaofUDvyOIob4t9DnfTof0r/7qr/CJT3wCAHDjjTfixIkTmx7HpYIb119TGPN8\\nj3WSO/mRUDADrHVr6Uyp5RK/sZbdIv5mZjFCSec5nnRcRBXgANdzUbWqjBKsCioGEgM40HsAqqhG\\nzCapn1v7Om04Bs6XzmOqMkWKcw5RUNNlHbszu7Ejs4OYLK9eL0oNCzMfwiCHFgsLRgE1q8Zmcnb1\\n7MJgfBC6pKNm13CqcAq2ZzM6XUyKIRfLIRfLdQSrO3btQLVM5sNOnTyF4cFhRkfuNkhP/eHy1XxE\\n9a89qArgeGo80q2MzN92CXoveL63jk5dNsp4dPpRVK0qZEGGwBHKM517Hk+Nr3sOXy5xKc/Pyz1e\\nM4DmiSeewBvf+EYAwOHDh3HkyBH85Cc/wd133w2AGA799Kc/vazPMF0T+WqezVNwHIfR5GikQta0\\nm6iYlcgDJPESerQetshvRKHqNhTdLTYDMY7nsE4M3Vx2AjEiLzIQczkmUE8//TRe97rXAbh0t9qt\\n3LK0QlS36nB9lxh0gVS3KLWARqFZwFRlCl7gsYTTH+9nvgYxKYaUkmJVRsM1ULfqbOGnHGLLsyBw\\nJJk4voPFxiLSShpjqTHcPnz7ts24HM/BhfIFHF04GqmG9cR6cKj3ECZ7J9k943gOm8OqmBWm4hYE\\nQQTcWK6FqfIUGg4x8ZR4CYPxQTIkKqhsLsjyLMSlOGSRLNKSIKFXJ8IB9J448tMj+C9v/S+ABxy+\\n7TCefurpyPffyuJIOzd1q75uOD8cEi+xzg2lEnSbtwHAzOVoQqWS0bQL5HgOfjr3U0xXp1FoFSBw\\nAiYyE9BEQhNIKknsze7FUGLoiizy7ffspb7nlXh+rsflhWEYiMUIzUgQBFiWBcuyoOtknRdFEZZl\\nraucbydc38VUeSoiJjOYGIx0EJt2E7O12UhRQOTFdQW0q6FcRpUBqadKACJZ3HSaTHo4QNARxAic\\nwKhkuqxf8mavWq1ieHgYzSap0v/4xz/GPffcs+W/3yq48X2yvliuxbrjABCX4uB5PvJs266NQqsA\\n27fZ3KAsymydomsRfS+61rq+Cw4ckzamayEHDg2b+MQovIJdPbtwQ98NGIgPdFdh61JIKhqkSHam\\ncAYBCAVWl3RM5iaxv3c/W/v8wGdiKeGcFz5nQRCwua6iUSRUbo4nHUFJh+u5UCUVtmejbtXZPcBx\\nHHjwyMQy6Nf7GYA1DAPDA8OAT/Y4tmlHnp+t3KcNu0E6N5Xpdcp+4VBEBaPJUYylxjCSHFm372oP\\nuo9oB6kAEQBSBAVH5o9gukJyiQ8fOzI7mFiCIigYT49jODF8ybOZVyMu9/l5OcZreobmSnKeDcdA\\nvppnDxHl8FNFKM/3UDbLkQQFgMlNtldE2uNSgUw7iAmCgA31m67J6D+yIDOvDZpgKPe1k8nlpcYd\\nd9yBw4cP45lnnoFlWfjbv/3bbbvVbnYeKD2AOhdTNTVN0ogCzap5o+M5WKgvYLZG7gPqeDwUJ9x0\\nL/CQVIgkZsWqAAFYJSytpqEICgzHIAt6ELDhzobdILKqAbluoiCubai3sYGQBAm7enZB4AS8sPIC\\nZqoz4Hkevu/j+PJxzNZnccvALRhIENllyvOl18/2bNbBqZgVVM0qTNfEZO8k8tU847bP1ecg8AK7\\ndxWBHF+RL0LkCDVBl3Q0nSaWG8sYSY1gQB9AebEMrDY+xkbW+6JsZSCeUjZysRzzganbdTTtZiS5\\nOD5RACwZJVbVTSpJYnS56ilEDdWo1CmT2149rrgUj7iEv3709dBlHQ2rgbn6HKYr0xhLjSEmxVCz\\nanhm/hnoso49PXswmhq9rCrblVJAuxLPz/W4vNA0Db29vVhZWYHneVhYWIBhrIHx4eHhywIzjudg\\nqjIVqdwPJ4cZbcYPfCw1llA0ohXplJLCUGKIbZquNJDpBGJoASgse64KpNMZBjGyIK/Nw2xBBn0r\\nkUqlcN999+HBBx8EAHzhC1/Y1oasfb4CWF+pp0IAtONEN+ASL8H2bdjOGnCp2TWUW+VIVyMux1l3\\nmAPpoDe9JoIgYAbFiqCQWRZOQMttwfEcpNQUJEFiqmlxKY6UmoKu6EyNshO1Nnws4XPMcRx61B7s\\nSu8CDx4XKhfg+R40SUO+msdKawWTuUmMJsk6l1ASbK2k3YkwbZB2csbT4wx0tZwWZiozkESJgWyR\\nE9Gj9qBpN1E1q4zV4fgOqlYVQ/EhDCWGsDKzAqzi8tHx0XXPz1ZySVyO40DvARzoPcDmQfPVPGZq\\nMxH6P/WWO1c6B57jMZQYYtQ0ul+j14+OBYRp0kEQEBsNNQNZJH50rx95PRRBIcpozRXkK3kEyQA9\\nsR5YnoUzxTOYKk+tA1EvZaRSKbz//e/Hl7/8ZQDbf35ejvGa6dC4rgtFUeD7ZHNjmiY+//nP4/d/\\n//cBEDfuS1V6aDktzFRn1vwzeIGpTwEE7JTNcqRiIPIierQeZtDYDchwXNRLZitD/p1ADJuH8Sz2\\nPdo7MXQehoKYq1VNuFputbRq1HSaTFGLbhwFXljnFr3cXMZycxkAuYaO52A4OczORVpNs8U8bDYZ\\nV+KIS3G03BYsz4q08Zt2E6VWCReqFxD4ARJKAnuze5mBGlVJ6zRH0x6Ug0yv2UpzBTO1mYgHhcST\\ngcyD/QcjQ4jd+OANu4FCq4Dz5fM4XzqPQquAolFETCSqNn7gkw4cRzYmoiDCdEwC2EQCenVZR1bN\\n4j++8x/4zAOfAXzgIx/+CD77l5+FwAkdk852NzC0w1K36lueuxE5EbZvM28CujmhYJ1uRsLzNnWr\\njhNLJxiXe7GxyEAr3ewABHjt7tmNifTEZT0XV4KC9mp3e34lxOHDh/Gzn/0MAOn+W5aFn/u5nwMQ\\nnavZbtiejanyVIQiOZoaZWIyhmNgtjYboSsLnIChxBAz+buSQKYdxFDqKu3E0I1rp06MJmoMxFxO\\nV3+jeP7553Hw4EEApFs2PT2N4eHhy3pP+ozSOVLDMVAySjA94iNDuw/t1gCUikQ7x2HrAp7jGXND\\nEiQoggJJkJCQE0graRiewdZ5x3NY0bHYKjLbh7Saxnh6HKPJUUiCxPI3FSfoFhT40KIWQJTCSkYJ\\nK62ViJBKTsvhxv4bI/O+7XsQGqZrompWsVAnqpFVq4ql5hK5F1ZFd+JynIkkiJyIhkO65lR+WhM1\\nxOU4Fk8u4lff8asAgLtefxcef/zxyPrbfjzbCUrLpNS0jeZuevVejKXG0Bcj8y/0OQznkrSajuRv\\neh+Yjomji0fRtJvwfA9Fo0gsF9osLAROwEhyBOPp8ZdcAe25557DoUOHyPe6Qs/PSxmvmQ6NKIoY\\nHh6OdGeuRIemYTcwW5uNyMaOpcaYEkknt9i4HCf+GKtDf5sBma10Y6hJFgUxnu/B9Ii5l+3Z7IGU\\nBAkxIcZADJ2Hof9dC65nu1vt97//fbzjHe/Y1ntQOeb2/6iUdMNsMElpgRcQF8ncDD2Xi41FVuFs\\n2A0InIA9PXsgiyRJZNQMG7inwXNEHc32CX+YhsiLSCkpDMQHGMUt1oqRSo6kQZdJd6PpNAnnWFQR\\nk2IMHHTijdNZE7pxEXkRN/TdgP29+/Hiyos4UzhDlOh8B6eLpzFXn8PNAzdjIj3BBjsDP2BDqNSE\\nDCB84psHbkZMimGlucKkU+ngv+3a8EDkSX34iItxYhi22umpmBXM1ebwZOlJ4ACACiAMCpgqTzFF\\nIgr+6DDnVips4eA5nm2GNpq7CRCgbJbZrJEiKohLccQVos4Tk4iMZzcJ6Jgcw6GBQzixSIa5x1Jj\\nbDOy0lqB4zvgwMF0TTy//DzOFM9gZ2YndmZ2XlKV7UoooF2J5+d6XF6Mjo4yQDMzM8OEGoBLzyWW\\na2GqMsWqyZSynFJTCALixVFoFSL3ckJOMJ+WKwVk2kGMF3ho2k0GYmhxQRVUJLUkAzEciFw9Heq/\\nFr4bN954I+655x48+uij8DwPX/nKV/DHf/zH23oP1s1fLU5ZbvT/KbigQgB0s06LkLZrMxlnP/BJ\\nt1zLMqVImZeZcSUN6nXl+R5KZoldN44jtLOUmiK0tNX5KVpozGrZte/Em5B4KQJuOuXvIAiY5DPt\\n7IymRjGZm8RcbQ4nCyeZEMxyaxk/yf8EO9I7sCe7h91X1ACZshtc32WshPH0OHiOx7nyOWS0DCzH\\ngiZq0BV9jWoH4gHUJ/cxoYOmTe6nQquAJ6aeAPYDqACZiQyWG8uMMcJklRHtSm0nlwwnhzGcHMZd\\no3etiQpUplEySpHXLtQXcK50Dq7nIq7EMZwgf9ev9yOjZiKKduz8rt4Hsijj1sFb8ezCs2jaTfTp\\n5FjTappRDAHAg4fp6jRmajOkO5Qaf8kU0Q4ePIg3velNeOyxxy75+Xk5xWsG0AAkCVFAk8/nLxvQ\\nUGUZ+oCJvIix1BhzBS4b5UhlWeAE9Gg9UESFPOh+ZwnmrQIZP/AjnRjHc2B55MEJt1hpRYiCGIET\\nmLGWIijXfBCsk1ttpw0ZXUg7AZdurXaqwOUExMyR53lmkEgHxZcaxM9Fl3Q07AZ61B5MZCbAczwz\\nnaTSkHTeRhZl8OBRs9cbZynCmtBAw27A9EzkYjmogorhJOEUUyoBTUa0lU0Bjy7p0CSNXXvHd1C3\\niOQyB45JZwLALQO3YDQ5imOLxzBfn2ef++Tsk7hQvoCD/QehCAScUG5zexiOgYScQM2qQREUogiT\\nGsdwchgVs4KSUWIAombVULfrGJAGmIeB53uoVqpEsrkfqCfrODJ/hM1aheWjk0qSyYOyTpew9aWH\\n4zgmBz0QHyDeDladUdDCAg2WazFeuiUTwEeNUQOsF9nwAx+qqOJA3wE8v/w8PN8jHHfPwh3Dd6Bi\\nVnCudI4BS9uzcapwCudK55hK3Harz5cLarb6/FyPqxftFGbHWVtvLyWXmK6JqfJURExmPDWOhJKA\\n6ZqYrc1G6Mo8x2MwPoiMlukqHrMdINMOYhzfYR3nMH1TFVSk5TQDMXQwng71vxTDzx/96Efx6KOP\\nAgC+8pWv4JOf/GREbZEGXXsZYFkFMOH1Ixxu4DKKNhVuoUP31MuLzsWk1BSjj4W941zPjcxWBsGa\\ngXAYHNKgFF+RF4lNgFVnVf6h+BASSoKpg1FqtemapAsSAjcUYALk2hZaBfb5dH0GgLH0GHr1Xpwu\\nnsbFykUG7k4XT2O2NosDuQNIaSmWczuJEdFZUk3S4HkeknISI8kR7MvtY/OmtKvXclpo2k306/2w\\nPRtlswzXc1Eul8luNAcEwwFeWH4BiqhA5EUiYCPFWRGwHeRsl95JhQluHbwVDbuB6co0pspTOF8+\\nH6F5NqwGzthnMFOdQUpNMTno4cTwuiIZDUmQcMvgLTi2cAx1uw6e41E1q9iX3QeBF4hi4aqEuQ8f\\ns7VZzNXmMBAfwER6IjJvfa3iYx/7GB577DEAGz8/r4R4TQGasbExPPnkkwBIErocQFOzapirrami\\nSYKEsdQYJF5C2ShHdPcBIkdJKQFhE0YadMNNaVPdoh3EhOdhIspbbSCGygurovqStzkB4lb7mc98\\nBkEQ4Ac//AGeP/k8du7eyQALlRDeTjg+oddZnsUMEnWZnHeRF8GBI3Laq52billBTIphNDkKDhxz\\nUg53AOjQP018dKgxQACREyPKPE27iWKrCMMxIHES0moa+3P74QVkyJOq21CJTirXWbfqpEO2qv2v\\nimpkEyEJUkSZjeOI4/dbdrwFpwqncHzxOOoWMW+rmlVMlaewv3c/dvfsZrMxNAFQaWie49Gv90OX\\ndMzX5xFX4mg4hB/dH+9HSk2hYlbYJioIAhiuwWgmK80V1Et1wAXAAfFUHMvNZUL/kskmjNL5KOeY\\ngpyUmkJKTUU6Oe1KbxuFxJOkndEyiMtxxuE3XZN1GjmOi8zdCJzAqseUJx3eBMblOA72HWT0M9/3\\n8eLKizjYdxA7d+1EvprH2eJZtFzSbXV9F2eLZ3G+dB7j6XHs7tnN3ncrcbmgJvL8/OAHOHPmDFPe\\nuh5XP8JeNPl8Hp63tqZvN5cYjkFESVbzAs/xGE+PQ5d0FFoFLDWWIpsnXdIxnBxms2OdYitghoIY\\nOrNmeVbkWaJBCzYUxEi8xBQ5abHopYx3v/vdGBoawvz8PBaXFvGth7+Fd/3Su9Z1XLYiAECDMicc\\n30FMiiEmx6CJGrKxLBSBbLQNx0DDITQzWghJqak1xoRnMWNiGrIgk4LLqiQ/zSU8eOjyWtHKdE00\\nrAaR2V/1TZvITJBCVeCyY3I8h9HUHM8B7/IRcCPxEipGheVSgReQjWUjXQ5N0nBT/00Y0AdwdPEo\\nykaZyfevNFcwnBzGZG6SAbgwZZcaRKeUFDRRw0yNbP4DkI4iLeg1nWbknrI9m9G8i60i6sU6U1FL\\n9aQwU5tBXIkjq2WJapy55q0k8uIaw2HVK0eR1ndythIxKYahxBCSShL7cvuw2FjEbG0Wi41FVvil\\nctd07kbgBeZ3M5okc9Lt1hu3DN6Co4tHUbfq4MDhdPE09uX24c6RO1FoEREi5hfFgRk+9+l9mEhP\\nrLP4uJoReX4WF/HP//zP+JVf+ZVr9vlXMoQHHnjggZf6S1yrePrppxmgue222/CjH/0I9Tqpgn/q\\nU59CJpPZ0vtUzAqrjAPkBh5PjSMIAhSMQoTfzHM8erQe6LK+IbWsG18UWJuJoTMFYTWrptNkil6S\\nILF5AlrVSSpJpNU04zG/lCobdE7BdE0ouoJjLxzDuZlzgAw4gYO77r6L0eW6JWoaHEcMzBRRYT4w\\nqqiyOSAqoxz29JmuTqNiVuB4DipmBXE5jpHkCHmv1QQQXpgETgA4ROaOgDWKWVJNstcAYD42lmcR\\noJQaZdU6VVTZpkATNVbhcX0XfuCzORzDMbDSWkHVqsL3ic9NTs+x60YraIZDFGjichz9ej8BRnad\\n0amWGktYai4hq2WZhGRcirOOF6VPxBXynUyPJJuG3WBeOVTBxfEddn/pMvGJGEoM4UsPfAnNpSbg\\nAB/89Q8inUzDdm0YnkG8EASFnRs3IAmyZJQwX5/HVHkKs7VZFFoFonDmGGwTQc91e2Ki0qI1q8Yq\\nmwJPks5AfAATGZIIaKJtp5lZHnHGLhkl8owGiEiCyoKMbCyLQqvArstKawUJmRzvzsxOBqDCz3jF\\nrGCqMoWm02QVxK0EpX90+vlmkU6n8eyzz+L06dPkPAgC3vrWt27pc6/H5cfs7CwefvhhAETyv1qt\\nsmvxoQ99CAcOHNjS+zTtJqYqUxExmR2ZHZAECflqPiLHzIHDQHwAQ4mhrp0Qutnsdg95voe6VUeh\\nVcBifRHLLTJHuNRaQskooeW0iCrkqjBILpZDWksjrabRq/diMDGIgfhAxMvrpQjHc1iRqG7XUbWr\\neOq5pwAdyC/nce/b7mWU3W7zdzQ4kM4LXdvSCjlemjd7Yj1IKAn0xnqZ15rhGmi5rciMZUpNkbVn\\nVTmUXlNGJwMH27cjuYQKnLCiG0cMPstGGXO1OTTtJjRZQ7/ez5TNBE5gXRhKqab04CAIWI5wfZdJ\\nQ1NVs169l81/UCBE6VACL6BfJ3L1VbvK1COrZhXzjXkG6FSRyDQHQUA8ebg1T56B+ACjyRmuwXIz\\nnUuktDWaE6mh6ve++j2cO3EOCIB3vu2d2Dmxk8zoWMSnL2wPQWeb6lYdRaOIhcYClhvLqFgVmA4p\\n7LY/A53mSes2eQ7CtO60msZkbhJvHHsjxtPjUESFdSzDf1uzapipzuD55ecxW5+F5a6ZpAIkL/XH\\n+yP2HIVWASIvYig5hOHkMKGieVZElr3ltDBXn0PFrLDzfLVDEAQ0m038+Mc/BgAsLS3hgx/84FX/\\n3KsRrxlRAIBQMz7+8Y8DIEnnq1/9akQkgJpsbhQlo4SlxhL7N5UApBz/cGiixoY52yOssNIpPN+D\\n7dvM2LLd5JJGuBMjcAJ7CK7VPEx7UKWpTjSx9vjxoz/Gr76PDAImkgk8+7NnmfQpDUpTCv9HPWXC\\nQfnGDbsBgReYqo4kSMycrmbVYDgGalYNaTWNwfggky4Od60i2vuh4DlSReuk0mO5Fubqc3hu6Tlw\\nHIe0ksbhocNdN7eO76DltGDYBkuONLlUrSq7lj1aDzuOjWY2/MDHXG0Ozy0/B8MxmE+CyIuYzE3i\\nUP8hdg+FN/BJJYkAAc4Wz7KFVxM17O7ZHTnGltNiJmkAEdnYu3cvAi8AfODFsy/C530mylC367Bc\\nC5IgwfVcBooooGovltLPop1M2s1Jq2nWNTMdcx29gFaP2++H7frdxKU4YnKMOWKfWDrBzgcHDgd6\\nDyAXy7Hiw1JzCWeKZ9ZtOAEir7s3u7frs98pLkXW+Qc/+AF+8Rd/EQBRrJmdnX1VuD2/EuI///M/\\ncddddwEAbr2VGAA+++yz7Hd33nnnpu9B6S5hMZkd6R0wXGOd7KwmahhOEF+OTrFRVTrciaHKhk27\\nuU5sI9yJkQUZMSnGOjEvRVefFnpolyXccWlfm1cKK7j35++F65I8853vfAeTk5OR19AOfMS7ZXU4\\nPxye78HxHNTtOutqh+0KqKQxpUTTjhVAum1esCZIQhkX9H806AxNTIqty9Ou72KmOoMXll+A67vI\\nxXLY37u/63pC50nDRpWu7zKD5wABK8JlY1ny+V0U0ug9VDWrOFk4ibJRZlRt2tW/aeAm5slCgYMk\\nSOiN9ULgBeSreSY+IPBkNjV8jh3PYYVYGvfeey+eO/EcEAAP/8+HsfvAbgBgYMvyLCZcQ88vK351\\n2MFyHAdZlFkHR5d0xBWiiGm4xjrlMmBN3bNTzi60CpiuTGO6Oh0R5WmPpJLEWGoMYylC5fMDH8cW\\nj7HzAQC7e3ZjPDXOvicthK60VtZdh5SSwkR6ghifXsXiwcLCAsbGxtjzc+zYMdx0001X7fOuVrym\\nAM33vvc9vPvd7wYAvPnNb2aItK+vD0tLSxv8JYliq8hoNADZCA3GB1G1qpENE8/xXR3hOY4Dgs4b\\nFtqJoaidbkDDDz4QBTF0saUDiNeqYtYNtGzWWQmH7/u4++67MTU1BfjAX/6Pv8R/+83/tm0aEhUD\\nqJgVxhGmsyl+4ONC+QLrbjXtJrKxLAbiZB6EJm8aVBWufeOsido6z4TwdysbZZwqnMJKawWaqGEs\\nNYa92b1d1evYOVitNlGKwWx9FjWzRvxTeFK9o0mYDoZSlTTa3QvTC1zfxfGl4zhTPMMoLL5Puis3\\n9N6AoSSRpFZFlVEgAUJxOFs8y5Jub4xUY9ujaTdRNsuYmZthG7psNotjzx4DAqyrZgEE9OuSDsd3\\nmNJOxayw+yXckWu/3o7nMIpBQk4wsBOTYkRtRtoacKcVvbpdXyedHg6JJ10oHjzOlM5EJFf39+4n\\nPiCrctw8x6PQKuBM8UxEJIICm169F3uzeyPeIRvFdkGN7/uYnJzE2bNnAQAPPvggfuu3fmtLn3U9\\nLi/m5uYYtay3txccx2F5meSGmZmZTWlndauO6ep0ZP5yJDmColGMGPdx4Bjnv2M3rwuQCYOYqlll\\nVDJKd6URBjHUdJjOvl2rbj5dv9sH8zcqQnSK3/u938P/+v7/Ajzgfe99Hz77Pz77/7P3pkGSZWeV\\n4Hn75mtEuEdE7plVmapSVVZVZklVKqm1IFrWLYQ0ICGkgW4wA4SBaPUI0I/GbAxJNmN0W2NiMYO2\\nMdDwY8YQIGgzUItlmlFLGu1S7btyq8zKzIjw8PDd377Njxv3xnvuzz3cPTwrl4pTllaxeDz399zf\\n/e73fec7J5XATHI+cRwzM94wJp2XJOWX0vEGkxnmeJ+Umt+OJYN1S4mXUkWYwfew7bRxsXkR17vX\\nIYsyDuQP4HT1dCpJGgU/9BHEAfzAx/XudbTdNoIwADhgUV+ExEupwiCNG7RbTH8n8WT+9NXOq3hh\\n84UU9diPfBzIHWBS9oqopMwqwyjE+eZ5Nsebk3M4Xj4+9FqpGI0f+bjvvvuwtUXW0Kefehqrq6to\\nO+0hbzKqMiYJEpvxMn2TXeukAejgfUGTY8pk0SSNUbzLWnli+mTP7RFRgQ7xuxn1ftBi96H8IdTt\\nOpuJBYAT5RM712R7P9j3+rjcvpyimNLXk5NzOFY6hmVj+Ybt8T760Y/ir/7qrwAAH/vYx/Anf/In\\nN+R5biReVwnNk08+iYcffhgAcOLECVy6dAkAqbBRxZpRqJt1NlgHgN0EyeADkACR5aoOZAef5IbW\\n8q0dpbKBxTyZxMiCzJKYG1k5o4v74L9B9a9JkRoK3144/8sf/Rf8xq//BgCiuPHMM89MdcPSmRma\\nBNA2fEktIYojXGxdZGambuCiYlSwpC/BC72UEo8XegijcKgCSoPPOMWeMAqx3l/HM7VnmKrJQysP\\nDfFgs+S5k0IG6/11NKwGnJC0zRVeQcTtqODxHE8kMRUiIkApEVmdm7pZxw/WfoDN/iYTiaDqNo8e\\neBTL+eWhz+OWtZWiUlKKVdY1/x/f+h/4l+/7lwAP3Hffffjyl78MgND04jiGFVhDs2J5JY9lYxmK\\nqDB38bbdZkagHadDBl2b4myBAAAgAElEQVRj0p20PXuoisZzPDRRw4K+kOrilNUyRGEnUI/7DNHq\\na9LZPPNxgY/LncuEZy4SLvU9S/egYlQSF4N8rjtOB+ca55gBKrCT2JS1Mk4tnpooGE0r6/yHf/iH\\n+OQnPwlgtvtnH7MhDEOoqsoqmhQ8z8N1XYji6PWi43RwtXuVvdeSIKGsltG0m6nPu8zLOFg4mEk7\\nyYolySSmZbdSSUwSySRGkzSWwAzKy84TdLg+mbDQr6cpglEInMBiIU1Ynvj+E/iRd/wIAOIVdP36\\n9Ylp5BRBFLBiIs/xEHmRiR303B6jH0dxROTgpdyOMeb2taPdkmRBLo5jCJzAusCjLxRwvXcdL9Zf\\nhBu4O2tHbjn9sBFWD/S5t8wtrPfXSbEIEUpKaUjaXeRFqIIKTSamypqkZcY5qvB4tXsVfbcPKyBr\\nZkkt4ezyWZxYOME6OBSmZ+JS6xL7ftAUNome1UNhqQDwZK27du0aRFFksyttuz20H9IlHav5VeTk\\nHJvv7Lt95pNDBRdo4tl1uymaMAA2t7SoLcKQ050cgRPGUjcp3MDF1S7xu7nWvZYSY0qC4zjYPqHg\\nVY0qFEHB8fJxnCifYI+J45gpal5uX8Z6f32o0KeJGo6VjmE1vzp3Bk7SaH7W++dm43WV0GxtbaFS\\nIZsRTdOYGdoHPvAB/N3f/d3Iv6v1ayl5P1mQYchGmkYVAwW1wCQd2Y8zlEGS+vbUMyVpckmRTGKo\\nN8yoRWcvmEe3hYJWeZJJy7huS7vdxsGDB2FZZNj661//Ot7xjndM/Hx+6DP6BOXxUqPSi82L6Ht9\\nNjeznFtGQSkgjEKUtTJ4jkcQBUwlJnld6RB5sv086lbpuT2cb57Hte41SLyEg4WDeHAlu11Lk0Qa\\n3GllibbBKShHmQbLMAwBDixRlniJDcDT1jpVEqMIwgDfv/59PLf5HOs0UJ7w2dWzjFaWXBhfab3C\\nqJMSL+HU4qnM5Pxv/uZv8OEPfxhQgPf8+HvwJ59PV3N48EwMIXndOI5DWS2jYlRS15tyv+mMTcNu\\nEHU1t4cQJDDJvDzyc8RxHFNUK6pFlNUySmpppxo5ojqb3ARS6dIkqKpZkiN9ZuXMUPeK3ud9r0+q\\nq73rQxSTglLAycWTOJg/ODZQTpPU7PX+2cfsOHbsGK5cuZL62cGDB1NiM4No2S1m5AuAVbgHu4aL\\n2iKqRnXofc+aK6Odx4bVYJ/jwa6+IihMJIV2YajE+jzB1rZEx2WWbgvFIEWMfp91P8dxjDNnzuCZ\\nZ54BAPze7/0efv3Xf33i54riCF7gsfWPdoZlQUbP67GiV4wYikBmN+n8A5Vstn2bdM0TRSbqlUWv\\nNb2/swopNBF4pfUKGz5/aOWhsetXUpY/isg51Mwaex5d1lmHnDFEeA4ChJ0u/3anhn49KAEdxzFe\\nbryMp9afYkIIIkdobCcXTuKeyj1sHpF+Pjf6G6ibdXZ97irflfl5e+WVV3DixAlAAFaPruLpZ59O\\n/Z5u8ttOe2h9LigFrOZXU2wYSvPruT2s99dRt+qE3k1jUQxo8jbdD9lJAe3e5OQdCwA6qzSO2rne\\nX8eVNvG7GbTriGKiamZ6JopqERWjgjcfeDPOrJ5JPY4mNjRZuta9ltobUrU9qrg2r05qHMd46KGH\\n8OyzxMJg2vvnVsDrKqGJ4xi6rsNx0sHj4x//OP74j/848282+hspziTHcchJOdZGjuOYVdgGN2jJ\\nm5smMZZvoef22GI/eIPSJIbSpqiz7l4/tIPdlkE9+WlBq1dD8y0zvM5f+ZVfYW61P/3TP83anruB\\nBhBKNaOJpizIuNC8gL5HVGKiKMJKboVt/otKkQ2YA0jNxHDgRs7JJMGC0rY/xFMbT8ELPeTlPO6v\\n3s+q+BzHsaoZ5TYPBjIv8Haqs9uJ8ZK+RKgA4OCEToqCaAc2U89JmqHKgswWYlmQ0XW7RCHG7eLp\\n2tNomA0oosKqeyu5FTx2+DGSAG4v1H7o43zzPEvWi0oRR0tHh87/D/7gD9hi96sf/1X8x8/9RyJk\\nMPB55sCxVn8SPMdjSV/Cor4InuOJkaY7XE0Oo5AFazrQ3/N6O1Q1ZHOo6XMkldUWVNLVoZ2cwQoX\\nnf+h9ES6CUsmNQCR27xn8R4cLR1FXs4PJb0cSDXuUusSrnavkteYuB6GbODuhbtxpHhkZJVtmqRm\\n1vtnH3vD29/+9iEDzUcffRTf/e53Mx/ftJspZUw/8hndh0LiJRzIHxiSb01upGgS03W72DQ32Wd2\\ncE4xmcQk59L22tWn3Zasjsus3ZbBhIX6qkzbMfr85z+Pj33sYwCAu+66C+fOnZtY1tcPfUY1o3OY\\nhmQMJTOqqELkRbiBC4EnHWmqOqpJ6bihidqQoXMSg8nNRn8DL9VfQs/tIa/kcdfCXThSPMK6vWxe\\nZntNHFwnooiYSFLFT03enr0SZAicQOho27M2jCaXUFekFDs6pyoLMkRORMtpMVWyi62L2DA3iKpj\\nTNbDnJTDmZUzqOaqKcXWi62LKS+duxfuHlrzvvGNb7AizKOPPoqvffNrmZLWiIG+T7owg0WyBW0B\\nK7kV5pvTdbvoOJ1UrKUS2yIvMpEl0zOZ+ME4ETyqBseSnO1uDs/zmUlOHMdk7mbbzJPuIZNJDcXh\\nwmE8evhRHC0eTRUx6DkGYYBrvWu42rk6pMAq8RIOFw8zs9W94k//9E/xy7/8ywCmv39uBbyuEhoA\\neMMb3oBz586lfvY7v/M7+K3f+q3Uz+I4xnp/nVXNacdiQVtIDdRR/f3k39EbmiYxpmeydvVg2xPY\\nSWLokCBNYmZp/9Nuy6B/S5ZU9CTISlqmkdidBEm3WlEUceXKFRw4cGDXv6NzM37oM7UrTdRwsXUR\\nHbeDrtNFHMeoGlVIAuE6G5IBOyDJQdLVGsiek9kNtm/jQvMCLrUusaHJh1YeYkHHD3fUtrKuGV18\\n4ziGKIjQRZ205rnhTS0bkNz+v+VZcCOXcXCpzKTES7ACC4qgsAqjIRmomTU8vvY4oVltJzUCL+D0\\n8mncX7mfva9dt4vL7cvseQ8VDmFBW0i9lk996lP43Oc+B2Dn/oniiCnwDW5s6CZocNNFO2GyIKeK\\nBACY9DbjmnM7rtyUokY9c0zPRIT0PE4WBF7YoaopJUZdy6KqJeduum4XP9z6YaqSfqx8DAsqUdGj\\nktDJRDiOY2aW+Grn1XSVDaSbeNfCXThWOjbSXHUQWZ+hWe+ffewNP/uzP4svfOELqZ996EMfYupn\\nSWxZW1jvrQMAo1smJd/jOEZZK2Mlt5Ke09veLNEkpu20sWluMmpNlicWpc2U1TIb6p+lq09nOrO8\\nW2YBTVIGOy7zZBxYloWDBw+i3W4DAP7xH/9xIvW/MAph+RbzVKFUY9rtoveuzJMki/p7UXYF7Wok\\nzzW5dk0CN3DxSusVvLz1MlMke3D5QcYkoHsQmtxkrQUdp0MUyziBzN/kDkAUxKG1JFkoCsJtIYE4\\nYLGEXgOBE9ByWmxeSOSJTw4HDs/UnkHTbpLhfJDXdaRwBKeXT7PZRjdwcaF5gX1OF7QFHCyknej/\\n4i/+Aj/zM0QcKHn/UAbL4Gec3j9JdTBgR7RH4nfUSpOxhArMJK9dFEdsDqfv9XcodQPzOFngOX6o\\nk6OLOnieH9pDdN0uM/Nc76/jWudaalyhrJWxbCxDFVUcLh7GkeIRZphLzyOMQlzvXsfV7tXUPpLG\\n/kOFQ8wHcVaYpomDBw+i0yH73knvn1sFr7uE5t/8m59HpXIIBw4cgmHkYJp9PPbYo3jLW85AFHc2\\nItd719kQF20dVo0q+f22B8mCtkCkfuP0hpVthLaTmKx2O01iDNlgScykH0TabckynZxXt4XOu7xW\\neOc738nMnT796U9jNzVxKj9KFwXq43KlfQUtp4W+S36+qC9CEzWUtTI4cDB9k1EJ6PslC/KuczKj\\n0LAaeHL9SXTcDmReZvzWcaDBRuRIpYh2ijhwWNQX04priQoe/TrZ7fNCD47vwArI11FEOk9UFlPm\\nZZT1Mha1ReiSjiAK8OT6kyzI0GBRUkt47NBjqOaq4Dke17vX0bAbAMjn4+TCSSK76fcR9tfw//73\\nv0dtYw1908ajb30nHn7be8FLOfbe0MRmsBsVRiFTKaLdpiiOoAgKqkaVddhyco6Z0SUxKpH2Qg8d\\np4OO20HLbqHltFiVj8pBj4LIiyzJWdAWUFbLbBNINyR+SDxtvn/9+yn66bHSMVSMClPcoR2YvEJm\\nEmil0gs9XOlcweX25VRSx4E4g9Mh0azq+SRiAdPeP/vYO/7Tf/pd1GrtVCw5evQwPvjB97FYAoDI\\nIm8rY1q+ha7bRdWosuq+wAs4mD+YKoxxIJvmvtdHw2qgZtaGTC4paBJTUAtY1BZTn73dQGf4soby\\nd5M7zgLP8ZkUsddS4vk3fuM38Pu///sAgPe9731svm8UaOGBUs0EXoAuEil7P/R3JOI5IVWsND0T\\nMeKUUpnACSk/mWnQsBp4qf4SamYNsiDjYP5gZnc8CUrtlkUZfugzihdAYl/yM0XPdXD2xg99+JHP\\n1N0YfS2OiDk4Qogga2FBLaBqVNn5XWxexA8bP2SzUDFiKLyC08uncbR0FDzHo+20UzTLo6WjKCgF\\nFkuefvJ7eOH5Z9E3bRw+dhLv//AvslhC6diWbw0lNrSwRQ3FKSNB5EVU9ApLYEpqKVOgCRgtzkTn\\ncEyfFKMpXW2SJIdS/PJKHjkpx7xs6HO5gYsrnSv4+uWv40LzAis206SGFsx5nmefgcOFw4yGHsWk\\nC3elc2WIqkppikeLR2emk057/9xKeF0kNHEcw3VjmGYEzxt9urLMQdc5bLlr6Pt9sjHziJP6cm6Z\\nbYzoECU7PsiGpet02fBZckiQgiYxOTnHaE27SfFmDuXPoduSlEO+GfLOg/jiF7+Ij3zkIwCAlZUV\\nXLlyZaxbLZURjuOYnQcbqg8cRIiwoBL/AKr3HkRBStUsa05mElD9fsu3cLF5ES9tvURmQ7Qyzq6c\\nZe9pcpifSkNLgsSutxd6aFgNgCMbGLoRGYfBgET9GGyfyD/X+jVS1YoicBzH6FaUJkG1/zt2Bz9Y\\n+wFaTosdk+d43L1wNx5efRiSIOFC88K2X0uMMkJUYg+RszXytfFaBWL+KASdLMpU2rPv9VObMDdw\\nWSUxeY+IvIglfQlHikdYABq1PE2yOXICJ5XkNO0mo+uNo6oBYB09KjhATTzjOMYztWdQN+uwAgu2\\nb+NI8QgrdgBgiWIcxyS52e7iCpyAIApIYtMifkWD53+8dBx3Ldw1FIB3S2qmvX/2MRumiSWGwaPl\\nb2LLqiOKIzSsBtzIJTNU2wlLUSniQP4AS5wp7XHT3MRmf5PIn2d09WkSU9bKZOMq58dSm+isxWDH\\nZVrDSQqJl4YSFqq6ebNx4cIFnDx5EgC5Ty5cuEBmNEYgSTXjOI4ZSNJNOi1USAKhANMuuSqqLHbQ\\nQsaojfMo0OKkG7okltRfYkyQN1beyBISukbTGVXaLUn6k6331hkVWZf11Jo06rkHC2UsoQkDrPXW\\nYAUWiyV5Oc+U0gR+h5Lmhz6erT2Ltf4ao6ABQFWv4szqGeSVPK51rxG2SxwjF7tYQYDYaYx8bYOx\\nJI6JDP9gQu+FHjb7m9iyt1IJj8ARA9G7F+5m4jx7iSVBFMDyLSa00Xf7cEJnpGx0EgIvQJcSSY5M\\nkhzEwLO1Z/HSFkliN81NaKKG1dxq6jXR92k5t4wjxSM4WiQJYRzHqJk1XGlfYTPE7PpxPJZzyzhW\\nOrbrnmIQ58+fZybNk9w/txLu+IQmimK02yFcd/LT9DkTzfgKOm4bBaXAnHVFXkRZLbMFj3ZiaBIT\\nxdHIJKagFFgSk2xDUxWOrMRlL92WQf+W3ZSfbjZ838fRo0exvk5oGX/5l3/JNmhDj92ullPlLoBU\\nQenPvNBD1aiyjbwbusxXgfqITDInQ8GUyLadmWnFruN08FL9JbScFhRRwbHSMZwon2BVdzpoSSux\\nSURRhC17i1XrFUHBor44tcIbXdy9wMNGfwN2YLONisAJTOmF4zjIvMw8igSeGF9ebl/Gy42XEYQ7\\nsz26pONNB96E1dwqLjXPY9mtw4hGSx0PgtcqUKoPg9ve3ARRgLZD1MxoVwnYGcKN4mhoM1BSS4wq\\nSM81C9N+pm3fZnS1pt1kJpuTmLnKApm/MmQDm+YmCeg88cipGlXklfwQpY7O+sSIoYkaq9pR48RL\\nrUuwfZvRPAASjI8Uj+DuhbtTsxTjkppp7p99zIZZYomHPurRJWz01yEKItusCByppBbVIqOT1a06\\nav0a+l4/s6tPkxg6e5ZX8kMb6KRvSzKByfIB2w08x6doYjSBGRwYvxXx3ve+F//0T/8EgNBjf/d3\\nfzfzcXR2jyaNAieAGh7TQiU1CaYCBzzPp+L4bnMySQzOstL3pet2caFxATWzRiS8i4dw79K9Q1LK\\nNJakTIPjmBRYtpkktONHzZMnBT1uEAZY76/D9m1WQKVdJxpLWGdou/Mm8iK2rC28UH8hlXQInIB7\\nl+7F3Qt345XWBSxYa3uKJTSx6bk9tN02O+c4jhlFzZAN5KQdxb6cnMNqfpXM/GB+sSSIAjaHQ4Vl\\nmEfSLkuEyIvQZR26qGOtv4ae24MkSOg6XUSIwINHx+2k/ibJ1iiqRRwtHsWR4hEsaUto2A1c7lxG\\n1+mmzoPjOFT0Co6VjqVsGnbDpPfPrYY7OqGJohjNZgjfn/4U7aiHLn8VZY2YWRkSqbRSykDP642c\\nj5AEiXE2qWcIgMxOyyyBBsg2nLxVui2z4rOf/Syjyvz0T//P+Pzn/2+EYYw4BjgOEAQOqsqhH3TY\\nUJ0f+qjbdeJrEpJK16qxipySYzMh1GMBmGxOhiYwyfb7IKiR5Qv1F4CYcIMfOfgISlpp1yplFEXo\\nuB22GPPgsWQsDf3dpAssbb1HEWn5h1EIWZDZ58z2iXEnHWrnwEGVVEZztDwLL269iLbdTnkmHC0c\\nxMMSDymcPABR8HIRyupj4HiRtfB7LvHEsAKLvQ4680MLAkmaGcdxWNQWsaQvpSrYg9hrom75FjrO\\ndhfHaaJltxhvftTyGEYhXu2+SoL9Nof6vup9uLt8N/zYh+3bqco6pQpQWoYsyMjLeRiSgabdxMUW\\nUeRLUhN4jlAOTi6eHFtlpI9P3j8f/akP4P/6k99FFDpAFAC8CF5QIeQOMDrHPibHXmJJP2jjsvsM\\nqrkKq3Sv5ldh+RbWe+uom3WYfsYQNHYklqncPPWHyaKIzdptEXlxyGySFmRuV/z93/89fvzHfxwA\\n8NBDD+MrX/kmeF5MxRJN4xHAZdRyWlyklDLbt6GIClGc2l6fqAALMPmcDF2H6TB+Fq53r+OlrZfg\\nhz7KWhmnl0+zIfdxoGpe1FKCzt7QzTuwIx8/aSeibtbZ3iaKIuSUHBRBSXVwkvLENLGRBAl+5ON8\\n4/yQyuOiUsSbZBFSaGc97VgkYwmd0+w4HTbzRJ+HrsOULjYY40tqCav5VcbQmFdikwQ1DaVdHCoo\\nMS7JieMYlzuX0XbaTAzqaPEoTi2eQq1fw9Xu1ZRqHf0bet6apOFwgczdaKKGq92raNrNlFgBFU44\\nVjo2NA+bhS9/+ct4//vfDwA4++C9+MZ//2sIfHjLx5I7NqGJ4xit1nTVtEGEvINQakIWZaJz7vVT\\nXYHBJEaXdDbgLHBCijK2FwnkofmWW7zbMivW19fxi7/4cfzcz30M73zne0Y+LhZcRIINM2xiw9pg\\n6l9hHKKiVZBTcmyjTJOXcXMytGqWTGLGgcpIXmxdRMNqQBEUHCkdwf3V+yc6T9u3dxzmY6CoFlMB\\nKPM5x8yOUFEBYNvUVS2ySqMbuGzhZ8mNb7HASr0RVEHFte41vNx4GVEcQeIlvCNXxAFp9gFDXqsg\\nKL8RdiLo0NdMuzTJoOMFHpzQYd4uFAIvoKJXhgQ5Jr1G04JWATsu6eJQupof+UyJDiBJ7aA8Z9Wo\\n4nDhMJvJoXLgQRSwc6KJDXOI5wQmVrHWW0PH6TCuPj2n1dwqTi2eQlkrj0xq1tfW8Cu/8GH80s/8\\na/zo288MPYZikM6xj/GYRyxx0UOXuwZN1mD5Fur97Yp6xuWnHf0FbYFRYmnnmVJnpwXtGicTFtpx\\nuZ2LYKMQBAF+4Rd+FT/2Yz85NpZwYgBOchDxLryI0Mi80GPJTDLJoZYJlKo8KuFLDdxPwLTwQg+X\\n25dxvXsdEi/hUPEQHlx5cKL3xQ99rPfWGcU1p+SwqC+OPt8xyY0f+qhb9RSlnc6gAjuS3FQemrIW\\nko+nHbyW3cILWy/A9Mg856Oqiqowu1Irr1Xgl+5Fx0sLztDzHkzAgyhICSSw8+eIUe2ysZzJnEg+\\nbl7wQm+ok8NMV7cRxzGudK6kvA4XtAWcWjyFnJKDxEvoOB1s2VvYNDdT1zyZ3NDu3IK2gCiO0Hba\\nQ+95US3ieOn4SLNegNw/v/zzH8RP/qs331ax5I5NaBwnQqs126xJEo3oMhx0UtkurYLzHA9VVNni\\nNmtguBO7LdNiFjpHN9jCK/azMIM+oijCgr6AJX0Jiqgwzx6BE5BX8kNDmrtJKQ+CVaG2ucu1fg1P\\nbjyJIAqQk3N4aOWhiSofQRRgy9rh+1LBAmB0xWgQyeHCrttlP+c5HiW1lFkxpCo+NJmhiU7SJ0YW\\nZCAGzjXPQXBbeO/CwaHjTAu7eBKhsmPORYUwqOxplhu04xOxgMF7QBZkRiUEbkyFbRTobEPbaaNp\\nNUknx2nBCzxcaV9hwg4AsKQvDfHXVUGFKBIjO5ETkVNyUEWVVEETyQ1iwA1dbJqbsHwrZfBG6QOn\\nFk8NmdTFUQCv/iQiu45JMUjn2Ec25hVLLlhPouGvp2PJdjGF44h5a0kt7QhizPAxputUkiKmCMpt\\n3W2ZFrPEkpCzwWl9eBFRIuXBs6KCJEiMYpZkXLC/Tfi4UbnkcaDxnsaSulXHc7XnYHqELnXP0j1D\\nSmBZiOMYG/0N1nmXBCL5TYs+u8W05EbXCz3UzXrKyHFRW8wcLB9MZui8EZWApkIXPHi82nkV/d5l\\nvM3IDx1nWnRzR+HJO7Sp5MA/ZQEMDskPKqFSCLyAZWOZbepfy1hCXxdlLSSTnKudq9g0N9njyloZ\\nx0vHU3FQ4AWYnomW00LTaiLmyDgEfbuT73tBKUDkRPA8T2iRibUnJ+dwrHQMK7mV9MxOFMDdfOK2\\njCV3bELTaARjhzYnhR11sB7+kDmY8xz5YBSUAnRJn3gIMqvbQnmot0JmezOxFzpHL2jhyfZXUTUq\\nxIFXVFiCaUgGW5CTBmRJquAo0IBD52AG5XzPNc7hcvsyeI7HirGChw88vOv7GMcxWk6LLbp0CD4r\\ncd3ttqTzW2zughdQVIoTyYR6gQcrsGB5RDmGqsjQwMhzPA64myhx03cVBxHIRTilNzAZ1KyNlRM4\\naNmtoeHnvteHG7hDVWRN0rCSWxnLiX4t7qk4jomhodnAD9Z/gOvd6+h7fYRxyIwRR/2dG7ps3s2Q\\nDRTlIkv06Ea263Sx0d9A3+9DEzV2HTiOmJOeXDiJldwKEIdwN76L2OtkPt84JOkc+8jGvGJJ06vh\\n6c7XWTGF53jklByW9KWxSkyDoN2WwY6LLMhzM9m7XbGXWBJyLprxKxB4YnZKlSJpQkPnZJgXTOhP\\nxL6gSVFWoTKIApxvnMf5xnkAQDVXZaIsu6Ftk7lEgKx3K7mVTIGb3ZIbN3CxZW2x+RhaOJlELCcZ\\nV6MoYl0c2oHgOA653gVoM1DNBuFJOXTzJyDyIptlHEQQBTA9cyiWmJ7J/OqS94gsyFjNr6KkktGC\\n1zqxSYJafDyz8QwutS8xAZuSUsKJ8onsfQLInoIyCfzIZ+qmyfN0A2LiLQkSKkYFJaXE3mtd0nG0\\ndJQkw3EEd/07iG7TWHJHJjRBEKNen202JQuX3CegShIKaiEl0ZgFWn2hycpeDCdfD5gHncMMW3Cl\\nOgzFYDMyiqAgjHdkKHcLOgInsORlt25b027i8bXH4QQONEnD/ZX7d5VqBsiiSgf9OBBO6yRBY/AW\\ntX07pWEv8MLIzsxux6Xyz27oIgiJkovvdnGXv7n7ASYEt/JWaBN0rygVL+lzEcfEp8cLvSERh7yS\\nx7KxzKghmc/9GhULojjCC5svYMvaYmo4TFHO6TCPhyxQLwvqZ0GFA2i13gkcvNp9FU2ryTjWqqhu\\n0wsLOCuKkIPezK+d1ypQlh953RdWsjDvWPLV2n+FLIssiRkn7ytwQqaS2GCBZR8E84glHkz40hYk\\nUWKzl7qoI8JOEjNJAsMG+XeJJS27hec3n0fLJsIypxZP4Xj5+K6v0w1c5msEkEr+JEPfg8mNEzgs\\nmaGvncoyzzIk7wU7yY0f+Qi8Lkqdl6c6ztjnqL4Zeb2662ujA/uDnkldp4u20yYdpMT7oks6VvOr\\nTMkyC6/lPXe+cR5X2leILUPoQBEUHCocguVbKdrzIPpeHzWzRgphbh+KpEDhFUgimeuOoggNuwHL\\ntxiToKJXtuXWZTwgAkrQzz74BLjZseSOTGh6vRD9/t6ryxSR1Acn71QYaLdlMGnZrduyH4SGMS86\\nR6i0Icsx8UqJo109FKiUMjVEm5TeF0QBLjQv4FyDmLMuaot4y6G37JpM+KFPAsf2SpSTc2zQexr0\\n3X5qZkPkRRTV4tDrT1JaKAardMnfUVlKy7cgW2sw7NrUr20Uvvv8Jp671IOqqlBVFYqijP06FmPY\\nsMGLPBRFgSAICKOQJQa6uKMoRLsVFaPCXKKz8Frce1Ec4cX6i0SKexsHCwdxvHQcPa+Hlt1Cw26g\\naTfRdbuZ8ut+5DPKHZHMBnRZR17KQ+EVdP0uem6PKS2d0Ap4q773wUy5+iaIxsqej3OnYd6xxEQd\\nrtBK/SzLbFIRlLFryn4sGca8YkmktCErhB4LDrvaJIySUt4NcRzjUusSXqy/yIxVHz7w8K7zlFEU\\nYb2/zgbzVUklndvWoZ0AACAASURBVNopYXomGnaDrZl0VnGwOzRIkRx5PgkzSz/y4QUe0LsMsf/q\\n1K9tFL7zXI3Fkt3iiKqq4CUekRCBl3jIsgxRJN2Dlt1Cz+sNdcwKSgGr+VVCB77Jic3F5sWUwfWC\\ntoDT1dPwIg+mZ6Lrdon4gN9HHA2/Vjd0UevXUDNrZDYqJGJBkihB5EQ2F04lrs+WDuPtudKeX/fN\\njCV3ZELTbgew7fmd1oZ7GWvuOcgiGfbf77bMDwele2Hw5d0fuAta/iYuWE+MfYwoTB90BmF6Js43\\nzqPv9yHxEo4Uj4ztzlBOcdtpkyo9iIfDbslMViJClbOSkpiGZAxp1g9i2gX4OFwcmOP41v/5hX/C\\nv/9f/3j6P5QBqIAgCZBlGYqiQFZliHkRikxmBBRJgaIoUGQFOT6HglSApmqQFTkd4BQVmqZNFASz\\nvpakyaricRzjxfqLqeHOA/kDOLl4MvW4IArQdbtkHsduomE30Pf6qeovdWqnPkN0Y0XFHezAxs8f\\negh36XsPQrxWgbry6J6Pc6dh3rHkun0RrzovMrryfrdlfjgg3QuD3/u90PY3ccl5euTvOXDEh2V7\\nLzCr947lW7jcvoym3WQy3rsZacZxzBS+AFKYW9QXSTFnRNk+6+e2bzMjUYAobRbVHcryyM18IrmZ\\nBEdjByvc3pNMipljiQBAAjiRg6qqkGUZsipDLsgQdZHEEkWBLMmQFRl5IY8CX4Cu6lBUJR0TZPL1\\nrPFEUZSJr+Gl1iW80nqFfV/Wynhw+cEh6w/KCuh5PfTdPszATCU5YRwyWfiN/ga8gCivxSBy17Zv\\n4+Mn3oZ78+O9iybBzYwldyRxet4pWhwBdasOnt+u6m9X9mlLWeJnFwR4PUPi1LkkMwBQlqpQeB1u\\nlOheCCIECOT/26pfFGGUbtsOdS8wnFDEcYym3WS8ZZknyml09oQ+ZhCmZ7LBdw4cdFVPyV5OgqR/\\nC0CSIl1Mz5CMCkLJn0+ykIocD2B+Vel8bjbHYnjkXyiHsFUbtr3dJd0ACVAqyMtMMoIiACaA6ZWm\\nx4LjuMkDlqrAzbuI1IgETllGWSrjoHpw7N8uSAsIhAA2b8Pd/s+DB0VSkFNyCDmS4Fi+BZEXsaoV\\n55LMAEBk1xH5/VtOhvNmY96xhANxTu+4Hcj8tleVIO18ve01so/pQGLJfO6FklSF4upw451YQpOX\\nrIImLUKMnFMZ8WPqhRVGIRSJKNtRBbtRa7njO0xmGgByKrlfp1G+o5tfCjqTInACEI+fuUnKD0+S\\n3Mx7gzlzLAnJv1iIYYfbsaQDoAaAB6CDvNjkZYxBYomFXX1lpgVNbCaJJ0EugGd4kGQJskTk/o/K\\nR6Gp2si/kRUZkIBQCBEIAUI+JMbN2nGcKp5CP+yTBMesgQePQ9rCXJIZ4ObGkjsyoZl3wSuIfaaE\\nwSRnB/ajAi+kEh1ZkFMVuDuwEbZn5Pml3R80BcriCja8S4z+RxFGIULsvUrkBA62TEIb40EUxSRe\\nGvveeqGXSmbY4PeEiOMYVmClEiAqeDCIrE5NymRrQDaJ4we+B1Xxm19FDQCO33US/+4T/w6O48Bx\\nHLium/n1qN/RxAbK9j8eJECZACSQxCbY/scDyIMEqP72380BcRyz1zUxlgAk36Y+gNHm2NngQc5P\\nJ//n8zwkXYKkSvjND30I+Il7pjzgaIT9NfDlU3M73p2AeceSMA7YPelFHrxoOJbQIfJkkkNlaXmO\\n348lGcjzo6WKZ0FJXEbdv8KSmOQ6uhsFbRJ4oYeW3WLHMmQDhmSMfW+DMEipWqqSmqlCNg6mZ6YU\\nGUVeREktpQqyHMftxIKEmSP9XRLs5+Ayi7rRLFJ9Y3Di7lP4xL//xNg4Mi6+xGEM2CAFMRlkfY1A\\n1mYRZJ3lQOILByCHnViyd10DBtd14bouut3u7g8GgCKA5BiqC1LYm6buyIHES5n84zQOck6GpEv4\\nzZ/9EHD8kSkONh43K5bckQmNIHCYZ0q9nK8gX3hkJi8ZAClFmqTz8utd4WzedA5V0Im2POKxXjKz\\nbgjaTptxjhVRQV7ODw0dJhFFEboJ3XyqQkRf21CCMZB80FZy8lxkQYYu6akKWvI4WR5Jg0GJ/TxK\\nd27o7x1y0Lmheu9hfODe3QddsxDHMYIggO/78DwPjuug5/TQtbtwfReBF8D1XZgu0fjnQg5xsPM3\\nsR9DCiUEXgDP89hx6Ne+52f+3PM8eL5Hfu97JBDOggKA5J7DBjBhDMtC5EZwfReu7WLJmG8FLJ7B\\nQPVOx7xjSTW/BD3/5pk3xZIgMUnm5P9nGeK+kzDvWHIgdwirymRD9rOA0kypgtoblt4wUhWRom7W\\nkVfy4DhCeVvJraQTkRGLNv1cdJwO+v5OZ0YRFCxqi5mJSNZnaVQcGfrbROdGNtcA6/rYx0+D0296\\nE97wzg/M/PdBELBkwnVddK0uOlYHtmvDc8n637GI30voh4iCCK5H4kzkRxB9EZzLwXFJguR5Hkua\\nfM9nXyd/Pvh14M8gMhKAxA5KaFFB4koN0y9PMQAXiN0YbseFK7lY4u+MWHJHJjSaxs91kPPgwhJE\\nscJ8S5IOzUn99VGgj0m2eQGyaCQHQpNJz6y83NsJ8y408hCYP1DWxp6C/W6XhCIJP/TR88gwNg8e\\nC9oCynp56LHJ4cm+14coiNuvLc1R3g3U9yTmYnYMRVCmrsgNntduATiIApx3Ozg6x81yLR7uBk3y\\nWgDy2iVJgiRJ0HVCsVvBCqI4guVbMD2TBdgojpjUsyqpkPid4dacTFTDkiZrg88zDmEYZiY6qf9n\\nJEau66Lu1dELeizJEnwBsiPD9/zMRGrU/1kgjAA4QE6YkX4xAvEMho13OuYdSw4tVCCKVeYF5YZu\\n6v9e6I0tnPkhkZ3PiiUSLw0lOjSe3OmYO808JutJFq0qFSfGxIysxwCkw9N0mgjiAIIgoKAWsJJb\\nScWGwb/puT2EccgG9ivGZLLKFC27lTKZVESSzEyTBE9SJGO/3/bXakDAgYmfYXe4ShH8iNc8STwR\\nRRGiKMIwSOt8Fasptc9ou+VB1TWbdhMiLxKBiG0YsoGqUWWGo4PY7ZpGUQTXdUcmPfR3WV/XnTo2\\nXDID4/s+4AE5M0eSKWc7UfPcna9H/PPc7UJsDHIM+c6IJXfkrlkUOcgyNxfvAEXhIIrkA0r5zgbS\\ndB+m6hF6LCjRhGfcrEQcEyf35AwGBc/xQx2dO81rYN4FxQghuza0bU6rT8kkZxZYvoWu2wXP8ZB5\\nGRWjMnZuyg1dpoVPqWaTvm9RHMH0zJRSmyqqE/tUjMOo5CaKI3ScDukoRRGuiQIOKXtf5DbDEJsu\\nMYikCTu9bnt5P6hhqi7pMH0Ttm+D4zgU1SLCKCTDkdvSyZIgwfRNWL6FglJAQSmMfO9GvSYaCDVt\\ntmtyrXsNDXuHb1ZSSjhSPDLVNYjjOJU83afNd/ne96IZxo2KJSIvQpTFoVgCkKRlMNGh8WTcnBwt\\nnPWQlvDmOC6zq6OIyh1TOJt3LOE4ZNKwkv+fFf2gj5bdAgeShK7kVljRKgte4LG5TYDI1U9a2KLe\\nZ7a/w5dSRRUL2sKeziFZFBxMbpImxEEYQI/5uXiauaIBKwY4z8yUxJ71fDiOgy7r0CSNCbBEiFBS\\nSygoBTTtJjpuh+3BqJhDQSlgObecKpwNHjcLgiBA13VWoJsW6711nG+eZ98bsoHT1dNTFS7iOGZJ\\nlOu6KAc1kGGh+eBmxZI7YzXLgGHw8Ly9c111ffdhf9ppkQUyJJ5EFEcsQLHuznbSM26QL4ojpj4x\\nCOYGPZDw7KZ5f6th3nSOw6UDOKmPVhyjzs/036SBKYxCvLz1MktIlvQlvOXQW0Ze6zAiiiK00qpL\\nOjPu2g1RHKHttFOUlJycm6kzMynaThu1fg1+6MMObOKJEnmYB2k4V34D3qGkz10RFObxMC+EUYi2\\n00bf67PASg3jwjhEQSmwwEPlSctqeWwHb9443ziPtd4a+35RX8QbK28ce8+Oqzr67fMI2ufm9vo4\\nYe8J852I1zKWADuFs8FYQpOWrGRnt8IZ9TkahMALmR2d3WSjbzXMO5YYigbdGL/mzprk9NweBE5A\\nSSmhqBZxX/W+kcWqOI6x3lvHokZmhGRRxmpudWLFxS1rC4ZksJlLQzawMIEn2KywPAtNu0nMX3mZ\\nrMG8glK891giFo6hoqbnbuns8jzp+5TqbfkWYsRYzi0jiALUzTp6bi/V/W/aTSzpS1g2liem7u0V\\nVaOKilHBS/WX2M+uda/h7OrZsUnNUCxJ1FL8tnRHxJI7UrYZmI/JlqJwKJeFG7bBoS67gxQ2N3Bn\\nntehviqDvga3ojzovE3rygsAJ0RTXbtJkpy+18f3r38ffY9INd9XvQ9Hikcyj0eV0Gh3RuRELBlL\\nEyWaYRSi43ZSyUxeyc+lM5MFy7ew0d9gmx3btxHFERRBQUVfwqJ9HeIMjsEUnLoEr3QPnITUdBI8\\nR7xUNEmbW6U4iAKW2FDYvo26VQcHDnklz4KRLMioGtWREto34n652LyIa91r7PsFbQH3Ve9jn49p\\nluPIN+Fe/9rcXpt66F37KmcZuB1iSRRHLHYMJjzTKGAlIfJiZldHESaXnX2tMO9YsrDIQRCnn5FJ\\nMgOyrpHt23hq/SlsWVvgOR6nFk/h1NLo4emW3ULHIWswz/NYya1MVImP4ghb1laK/ZGTcyhr81EV\\nHYQf+mjaTVi+BSdwmBmyyIkoKgWsevU9GzZi8UEEcTDSmoCKMM0rEae0Ztu3U0WymlmDHdjQRC1V\\nJFs2lkfS+G7E/bLeW8dLWy+x62HIBs6snGGFwtdjLLljExoAiKIYzWYI35/+FCWJw8KCAD6D+/9a\\nIIiCVDcnmfTM8pYlu0iDFLZBI63XEo1GMDc6x8LCzqY4jgmHN/lvUiSTHA4cXu28iuc2nwNAEoy3\\nHX7byKDS9/pMiYYDh0V9caIAFEQBOk4n9ToLSmGuXQwKP/RRM2ss6Fi+hTAiso5L+hKKahEiL8IQ\\nVUSbTyCeIanh5SKU1cfAbZtdOgExixwloiALMjRRgyqqc1n8/dBH22mnFH26bhcNq8E6qTSJ0iQN\\nK7mVmTnR0+JS6xKudq6y+7islXF/9f6Jkt7B1+JsfA+RXd/za9r3oRmP2zmWUD+jrGRnL0I3WcnO\\nzSyc3chYEiNO/X9SDHZxNvobeGLtCURxBEM28OaDbx5ZUHF8Bxv9Dfb9gr4wkRlzFEeom/XUWltQ\\nCiiqu4scTAvKKOi6XbiBS/4fuuDAoaAWUJALRBZaMiA0n9tzLAFIrPRDf2SiTlUC5/VZzEpsTM9E\\nzazBj3zoos5iiSzIWM2vojhCUGLe98ZGf4MZs8ZxDF3ScXb17ET7hjsxltzRCQ1AAlG7PV11TVE4\\nlEo3LwCNQxzHZKA0g8I2TnFrHHiOHxIloAnPjaYdzMvduVwWoKrjN4RRHA0lOru+vsDBk+tPouW0\\nIHAC7lm6B29YekPm5tMPfWxZW2zRy8t55JX8rs9BuwpJqeWCUpj7MC+t2jWsBktkgigABw5lrcwM\\n2nJyjnWF4iiAu/nEVAsdr1WhVM9m8miTppBZ158DB1VUoUv6XBJtKo9KpbOpyWnTbkKTNOSkHPuM\\n55U8qno1MxjMIxAll9pXWq/g1c6Og3ZJLeH+6v1D99tuzxuYG/A2H9/za7uZ7s63C+60WAJgpDiB\\nG7p7KpxldXVudOHstYwlsyQ5fujjmY1nsGFugAOHo6WjeGjlocx7PIxCrPfW2aZdkzQs55Z3fQ5K\\nd05SEEtqaaI4NC16bg8tpwU3cNFze7ACMoNhSAZKaokkMmoReZkos807ltDZZT/0R8ZyOmszDwZA\\nGIUksQl26HNdt8uSTk3cYRroko7V/Oqu9gqzIvl52zQ38fzm8+xnmqTh7OrZIWbH6yGW3PEJDbA9\\nfO/GMM1obAVHUTjoOg9F2dvQ381CcjB0MOGZlXYg8MJIJbZ5zOvcbDoHTWySiU4SG/0NPLH+BOI4\\nhiZpePTgo4zbTmkFPMcDMdByWkxiWRbkiVRk/NBHx+2kkpmiUpx78G87bWyam3AD4jxPqQh5JY+K\\nXoEsyDBkA5qoDXsNxDFCq4agd2VsMOLVCsTCUfBadazKHIUbEJNISs8bhMiLjJK218+aG7hoOS02\\nRxBGIRn2dDrQZR15Oc/ez7JaxpK+lBkEpx3iH4cr7Su43L7Mvi+qRTyw/MBURYQ4juHWvr+nyhqv\\nVaAsP3JbrnmvNV5PscSP/JFKbLOACt1kJTvzKJzd7FiyW5LTsBp4fO1xeKEHRVRwZuUMKkYFwHAn\\nZ8vagumR7rLAC1jNr+66KadzHslYX9bKQ7NYe4Xt22jaTTiBg77XZ3OLiqCgpJagiApyco6YdQ68\\nr5PHkiUIiVhCFeRGvS9hFMKPSNdmFCWN+gTuNZaEUQjTN1ksoTTzulWHwAnQRI2dd0EhCnZZtPF5\\nxpK6Wcdzm8+xx6miiocPPDzV7O2dEEteFwlNEkEQw7YjRBGpuPE8B54n8pxUgeZORJJjPZj07MUT\\nIYvCNq0nwq1G56CJjRd6eGr9KTbIfaR4BA8sP5D5Nx2nA9M3wXM8RE5EJVfZNenzQg9dt5tKZmhl\\na16wfAu1fo0MOQYW3MBlPjpVowpd0qGJGgzZmGihj/w+wv4a4tBBHAWkciaoEIwD4DOqUUmM+kww\\nAYzAHpl4q6IKTdT2TMFzAgctu8WSKD/00bAb6Ht9GJKBnJxjdMMlfQkL2sLUPg3T4Gr3Kl5pvcK+\\nLyiF6ZOaKIC7/h1Ec6Bz7GNyvF5jSRzHmUnObuIE4zA4r5Ps8kyzAb3VYglNbqIowvObz+NS6xIA\\nIrv8yMFHMs/N9EzUzTrbyC/nl2FIxtiY6oc+6lY9FcsX9UXo0mxKWqOeo2k3mTlnz+0hQgSRI+ac\\nukxiSUktTVSQG4wl4ERwogreWB0bS8YlN5TB4kf+yH3NvIQEgiiA6ZksloRRiC1rC1v2FhReSRXi\\nFvVFVPVq5nWZVyxp2A08V3uOFWVVUcXZ1bPTJTW3eSx53SU0+xgG5VhnUdhm4VjTasgoJbYs3Ip0\\njrbTxrevfhtBFEDiJZxdPYuyVmYdHQoncNC0m+z7klpKBZKU6MB2R4fyjZOPobMr8wCdk+k4HTa/\\nEsdxak5GEUglbZ60wkmXk1GBxA99Nlg6TkhAl/Q9vW7bt9FyWqza7AYu6lYdTuAgJ+WQk3Ns0LSi\\nV1BSS3uuOo36+6udq2yjA5Cu2QPLD0z1WZg3nWMf+5gFURyNpLC9Vmait2Is6Xt9fO/a92B6pOj1\\nwMoDOJg/ONTJCcIAa701FndzSg5L+o6yV5aymhd6qJs7qpocx2FRW5ybMmZyTsbyiH1BEAepORlF\\nVFBWy3Ob+ZzGxBPIXlupwqwf+TdUSCCIAvS9PoslydhL7RZo/K8YFVT08ZYPkyLrnBtWA8/WnmWf\\nBUVUcHb17FSJ7e0cS/YTmn2MBTUTHUx4Ri0Su2GcmajACRPROb761f8Hjz12BseOHbihqkEvbr6I\\nS+3tippewVsOvSX1fHTB3DQ32fWgGv/j4AQOC2x0gLGkluaSWERxhIbVwJa1xRKZMApTczI0kbnR\\nnPa9JDdJszNK4xvEPIQETI/4JdDnMD0TdYvQNgpyAbqks8/ssrGcSd8Y9dzTvKbr3eu40LzAvp8p\\nqZmQzvHPX38CD7/9f8LBEw/elnSofdyemNVMdBSy5nVoPJF4aeJYUq0W8KM/+vYbei9cbF7EC5sv\\nAAAKagFvPfzW1Iwk7eSsd9dZ8UkSJKzmV8f7nQUutuwtIN4Rs6ka2XOAs4DOydBExovIpt2QDBTV\\nIlRRHSrgzRvzSG5eCyEBanhLY4nt26iZNZiemYpTIi+iqlczvYDmEUuadhPPbDzD7ilZkHF29SwM\\neTyDIolpYknpwP14x3s+eEvEkv2EZh8zYVYz0XFImYlCAx+q4CCCB6mc/cVf/Dn+83/+3/DKKxfw\\nmc98Bp/+9KfnfFY7MD0T3776beau/NDKQzhYODj0OMolBgAePJYMUk1LzuYkYft2SlJY4AWU1FKq\\ni5Ps5kyDjtMhkpK+zQb+gZ05GVVUkZNzN0Q5bTfsJbmZREhAkzQiozlDkpYygtvmYHecDhp2AzFi\\nFOQCmy0yZAPLxnLmwOVeF/S13hrON3YM03JyDg8sPzDTOWVRA7/wl/8V//vn/hQXL6/js5/9LH77\\nt397T693H/uYF2YxEx2HlJkop0GIDPCxCJ4TIPA8vv71r+KTn/xVvPLKBbz//e/Hl770pRtwVgRu\\n4OIH139A/Fk4Dvcs3YOTiyeHHtdxOmjZLfb9Sm4FsiiPnMlxAoeI0Gz/nHYAaOdqL0agTuCgYTWY\\noTQdhKdzMpqkoagUWSf7tQS9HuMwKrl5LYQEvNCD6Zkssem5PWz0N+AFHuvYcBwRv1nJrWQq1/H8\\n3jo4LbuFZ2rPsK6oLMg4s3pmpnmqrFjytf/vO/j4b34WFy+v3/D7ZxrsJzT7mDvo/EkWhW0vngj/\\n/E//jE98/BNACJw4egIvPPMCFPHGeCJcaFzAi1svAiBzDf/iyL8YWuAs30o5OC9oC0MbXSo2ECNG\\nzyXu9fSWoyow41zrqafBuCSHzsn0vT4s32Ktbzonk5NzbFbmVqii7CW5uVFCAlT2su/1ibFpHCKK\\nI7TsFlpOCzzHk8Rmm8ZBhz0Hk429Xt/13jrONXYMzgzZwIPLD86lm/bFL34RH/nIRwAAd999N86d\\nO3dLfB72sY9RmNVMdBwEXsDGtQ28593vAQJAgIBL5y/h4PLBG6Lqud5bx+NrjzNhmbcefutQtdwN\\nXGz0N9jaWNJKmWbMdDNveiYadgNRFLFzquiVsevEJElOEAVoWGSmsOf20PdJ8U3kSKzKyTnklTwK\\nSuGWMPHeS3Jzo4QE6LHcwIXpm+z4baeNTWsTYRSSedBtP6ecnMNqfnWoy7XXtbnttPH0xtMsqZEE\\nCWdWzsxF8e7ChQs4eZIk5aIoYn19HUtLS7v81Y3HfkKzj9cUWWaik9IOHNfBO9/5Tph9ov7y51/4\\nczz4wIOMYz1IYZu1fewGLr53/XtoO21w4PDGyhtx18JdqccEYYC6VWeLKW3Bj0Lf68P2d6SDBV5A\\nXs4DHDI7OaNAaQUcODaE2HbbsH2bdYronAytpO02UHozMWtys1chgXHPG8cxel4PHaeDMA4RRAGa\\ndhNdtwuRF5FX8iw5XFAXsKQvTS23PA4b/Q38cOuH7Htd0vHgyoN7lvG2bRsrKyvodsns1ne/+108\\n+ui+98w+bk/s1Uz03/7cv8VzzxJ/sf/wW/8BH/3IR+duJhpGIZ5Ye4JJ+x4tH8WDyw+mHhPHMdZ6\\nayxBU0QFK7mVkc9nemZqZlPgBCwZSxA4YWafnBikK911u6zwFiFKzcnk5Nxc5zznjVmTm70KCex2\\nvSnFnBbJGjahhANIJTZFpYjV/OrQOr+XWNJxOnh642l2P4i8iLOrZ+eS1Dz22GP47ne/CwD4oz/6\\nI/zar/3ano+5Vwif+cxnPnOzX8Q+Xj+gXFVVVGHIBgpKAQvaAipGBQsaMQ7TJR2KSKQ8OY5jiY4o\\ninj11Vfx8ksvAwBkWcY73vEOFtjsgNC5Ok4HTbuJLXsLHbeDvteHEziszUy7HaOw2d9kszOqqOL+\\n6v1Dla+m00QYk8VP5MRMPixFz+2xZAMgAaukliAKIgRegMiLEHmRdWB2W8DCKMSmuYkrnSvYsrbQ\\ndbtkhgcxFrQFHMgfQFkro6gU52ZUeaNAz3ea10gfLwsydElnAWAwGAVRQOaIfEJVE7jJ5Fg5joMq\\nqcgrRMo5jEMYMlFAc0OXmcjxHA8/8tF2SeI72AGb9brTjhoNen5ElNhGSUlPCkmScOHCBTz11FMA\\nAFVV8WM/9mMzH28f+7iZoPMINJYU1SIWtAVUjSoqeoV1FFRJZcUt2i0HAN/38c1vfBMA0Ol28MGf\\n/CCbi6SxpO200bAaqJk1tOwWel6PdcHDKNwpMI2417tOFz9s/hBRHEEWZbyx8sahYf2W3WLFLo7j\\nsJxbHtkpojMtFCIvYjm3zLoIPMdD4IWdWAIO2GUZol4qdbOOLXOLzfDoko4lfQlltYyKUWHr4a2K\\naWJJMvHhOI4kLALpxnDgECFdXB1Meqah8Ym8CEM2IPIiojiCLulMXKjrEXNrjuNId8xuIIxC6JI+\\ndK1niSd0pnfT3GQ0+JpZw4K2sGfqued5+Id/+AcAQLPZxC/90i/t6XjzwH6HZh+3PJLzOl/52lfw\\nEx/6CUAASoslfPUbX4UkTk/HoWaigypsAifgqY2nUDNrAIBjpWNDUs09t4ee1wNAKj5L+tLIVj/d\\n/FIoojKR2zM976QJaIwYbZv4yZieCSuwWHUoJ+dQ0SvQZZ0N/DOaGsYH3VsRs3RuqJBAkr88iFFC\\nAuOuTRRHrHoZI4bt20wRTREUZoIq8RKqRnWoUzfrda+bdby09VLKMO3B5Qf3FIi++tWv4t3vfjcA\\nYGlpCWtra5CkGysOsY993Eqg8zprm2t44+k3IkQICMB/+8f/hsOHD099vNS8TkKYQOZlvNx4GZdb\\nlwEAVaOKRw89mloPbN9GrV9j3y/qiyOr5123i46zI6crCRIqemVimlxyFieKIzYn03N7rCgGkDWy\\nrJZhyAbr8u91JudmYtbODRUSGEVtHCUkMO7asBjlm0wRsGbW0HN74DmeFeh4jseysYwlfWkuRbKe\\n28NTG0+xcxF4MhecRWucFFtbW1hdXUUQkO7P+fPncffdd898vHlgv0Ozj1setIIiCzJOHT+FP/s/\\n/gzdehdOy8H73vU+vPmBN7NKnCzIEHiBLdqjECNmqjuWb7HK1+XWZTy98TQs30IYhThROgFREBEj\\nJhX5kFTkKQpKIVMeM45jogqTMKFTRXXiZIaeN624+aGPjf4GCUBej6nNyIKM1fwqKkYFJa2U8pOh\\n14DSpmjLEue/egAAIABJREFUe7A6dStiqmrb9vwLrdjqkk4SFnAI4zB1vmFMJMrtwEYE0rXZbUPA\\ncUR0IC/n2fMVVWJ+avkWeT9CDwIvEH8Gr0eUlvY4X2PIBunU2KRTE0QBtqytPXVqjh49ij/7sz9D\\nt9uFZVl45JFHcOrUqZmOtY993I6gsWSxsIjHv/04zj17DrCBkwdO4oPv/SBhCch6yvCTduNHgcYS\\n0zfRdbto2S1c7VzF42uPszhwuHgYqqiyWAIAtX6NFSx0WR+pkEllkykUUUHFmDyZAXbW1CiO0HJa\\nqPfraNpNRi8TeAELGqHQLhlLWNQXU2tYMhmicSTpoXarYppYEsUREJM1nud4iLzIRBYGE6MYMZvD\\nieKI7VN2ey2SIEETd2Y8C0oBhmTADcnnx4s88BwPy7fQsltkLnRgjzHt9VZEBYv6IuvUxHGMTXMT\\nJbWUafo5CXRdx+OPP45z58jM5+LiIt71rnfNdKx5YT+h2cdtBY7jsLm5iW9961sAgDAM8dGPfBSK\\nqECXdOSVPEpqiSzK234rhmRAFVXSTua4kTzjOI5xpXMFHY/MTuRk4gFAA9RmfxOXO5fRc3tE9SUG\\nU3lJdkDiOEbH7aQqO5qkzcRbpYnMtd41tJ02U5uhiczh0mE2L0M3ueOqUSzJibKTnFsxMA0GpEm6\\nNwIvsM8EDcphHKaO40eEWkLpgJTiOAo8x0OTNOTkHAt4RbUIgSOJDJXs5DiOfUZUUU0lH7MkNTk5\\nh7pFpDNpUrOoLc4kFDB4/0RRhJ/6qZ+a+jj72MedAFEU8dd//dcAgGvXruGT/8sn2bpRUAooa4Ru\\ntWwso6SVkJfz0CSNVNF5fmzhbKO/Qcwu4xASL2E5t4ye10PTbmLT3MT5xnk07SZRpIwDLKgLmRQ2\\nmnRQqKI6k5cJ9ZOh9DIa53iOR0ktYdlYRtWoYslYIpvcCZaqZJIzGFdv91iSjKM0sRF5ERzPDcXL\\nKI4YJY3GhnHnn0xsaMerpJHkwvIt2L5NOmYcmb/tuB3GJhk8zqSQBRlL+hI2zU1S6Itj1Po1FNXi\\nzJ5Fyfvn6tWr+MQnPnFT3/d9ytk+bjs8//zzOH36NAAyB7CxsYFicfRAfhaSZqJUlKDjdPDta9+G\\nF3rgweO+6n0pU7Ou22WbXw4cFrQFVpGhiigiL8INXUZpk3mZJFVTaMADO34ym+YmTN9ktDXqJ7Ok\\nL7FZi6wFhFZhkpS1SUGDavLfzcSoJWrc0pXVpqdCApZvZVZcOXBQRGWkkMAggihA22mj7/URRiGa\\ndhNtp40YhH+el/MQeeKiXTWqe0psmnYTL2y+kPIWeGjloZkC0eD9U6vVUChM3jncxz7uFAwKZXzn\\nO9/BW97ylqmOQYVuksIEfbeP7619D12HHPeu8l04XNyhs1H/K4pFfTFVKZcECTIvMx8xWSS06KJS\\nHKIhTYKe20PDbqDjkJnSQTGbklpCUSlmdhiSVLVZRQduFarauFgyqhBIX3OSljaNkMAkhacojlgi\\nE8URmnaTJMNRCFEgyp0iJ6KgFLCaX019Vqa9pqZn4qmNp9iegud4PLD8ABb1xamOA8zn/pkn9js0\\n+7jtUK1W8bd/+7eo1WoIggCnTp3CmTNnpjpGUpyAqrd03A6cwIEhG6gYFTy0+hCrsLuBi6630/LP\\ny3nIYrpa4kc+k7w0PUI9oG3krtuF6ZlwAgdBFLAWdVay0HE6uNq5ippFpJiTfjIHCgdYtXCcZHWS\\nrkZ19emwKKOkTdHJSdIM6PFvFKaZnxn1L/Px4CCLMgzZmEhIIEYMgRNGJnSU82xIBiJEkAUZBaWA\\nKI6YhDal+9HNC+WjJ89hEmiShoJSYMp6YRyibtWHaCGTYB73zz72cSdgUChDURS8733vm+oYWbEk\\niAK07Bbr8jx84GHk5BxEQUQYhaibOwqZOTk35A8SRiFqZg1tp83ih+M7CGKyltAOMFUH5ZBNd3IC\\nBxu9DdT6NWxZW0zuXhEULOlLqBpVZhg81j4gUeSaVnRgHFWNHv9GYdZYAm60txh93wSOUBcnERKg\\n79G4aywLMitQ0TkmAOj7fXiBl1LcDKIAmqil3vNJryPt1NCEKQahn+WV/NQGqbea0Mx+h2YftyU+\\n97nP4VOf+hQA4N3vfje+8pWv7Ol4fujjW1e/ha7bBQcO91fvx/HycQAkuNCb3498cCDa8Unpacd3\\nSKU+Ufk3JGPXSj/lc8uCjCgi3GYq8UihiAoqegVlrUyC4hxlM1OiA7vMHQ0i6Y0zaydnVtO8eRyT\\nVtrswN5p8WdglJDAILzQI4pFgQ03cFG36rB8CxyIIWdOykEWZFSNKkpqaafyN0VAbzttPFd7jr1P\\nkiDhweUHp+4Azvv+2cc+bld87Wtfw4/8yI8AIHMAa2trkOXZJdKjOML3r38fm/1NAMDx8nGcXj7N\\nfr/eW2esgBgxFrVFeNGO/LQTOGjZrdT8JaXAjUNS6EbgBFi+xRQ+k5vwklpCWSvvaX4iC7dCJ2fe\\n8WQSQQEA7DVTIYFRsuGjhAQGEUYh6dgENvzQx6a5yYpikiBBF3WIvIiKUUHVqKZi76TXzvZtPLn+\\n5A7rhONwunoaFaMy0d9TDN4/6+vrN01oZj+h2cdtibW1NRw6dIgNg7/66qs4dOjQ7MfrruHx9ccB\\nAKqg4l3H38Wq+E27uTNnwQmoGGn+Mq3GOYHD1NhkngwSuqE7siVN4Yc+mnaTbYYZrUiUGa+5rJVJ\\nV2g7+bmRVa1kkjONRw6AFE0tqwN1IxKY3TDJc9JgRL1tshI7nuOZt824rogbuGg5Laa4VrfqRJoz\\nkdhokoZlYzk1VzXpeXacDp7bfC5lmPbA8gNTuUDP+/7Zxz5uV0RRhKNHj+LatWsAgC996Ut4//vf\\nP/Px2nYb37r6LUYXetvhtzHlw7bdTlHNDhQOpOYiojjCZn+TVOVDD17gQRaJAuckZqK0O9y0m+i7\\nfVakEXiByS9TiwSqzHYjKcU3Msl5rWPJNMkNQBgb1CoiC5Q5Ma5AGUYhTN9krIGaWYPpER8+WZCh\\nCirzLUpaR0x6nk7g4Mn1J1Oy4fdX70fVqE7098D875+9YJ9yto/bEvl8Ht/85jdx6RLxi1lZWcHb\\n3va2mY4VxRFeqL8Ay7cAAEdKR7CaXwUAWJ7F3JIBYEFbSG1mk3Qi6omwklvBkrHEZl0WtUWmnMPE\\nCcCx9vH13nW0nTbc0CULJkeUT5Zzy2wOwwkcdNwO49bS2Q3aWaAdnXnIM4+jq+3aHcGOsloYhfBD\\nwjGmidEk1bdJ6GPTns8kx6IVTkMyIAkS4jhOdcpixBMJCYi8iJycSzlBS7wEOySdGyuwEEQBq8Ap\\nQloRbbfXqYoqSmqJ0M+2u2p1s46yWp5Y0nme988+9nE7Y1AoIwgCfPjDH575eOea59CyiVfMkr6E\\nuxeJlK3jO8xbCgDKWjnVWaVMAD/yicGnoOBA/gAOFQ4xrzba3c0puR2J321xgp7bQ92so27ViXLZ\\n9kZaFVWU1TJKWgmaqLF50YZNZjSpabDpmXDDHVPSSX27xmGedLVkHJmU+jzPWDJ4HG6XF0/jiciL\\nzED7/2/vXJ7juK40/+Wrsp4oVAGFwoMAKZIiLUokLXskzUS0Wu22rYU8C7sdvXDYHfZ4NvZyemH3\\nxjsv7D/BCy8cE+HwyuGOkO0YS91ytKN72iG3JEK0mrQ5IgmQAAr1QL0zq/JxZ5G8tzLrhapCEUSB\\n5xfBgERmJbKAvHnq3POd7/gZxUhAlmTPDvxR1Y3LwkzbFAoRnvRUW1VRofNf8zB4lafQLIjfe76Z\\nR1SLjrxB1s+o6Sjr5yhQhYaYWX7yk5/gG9/4BgDg6tWr2NzcnOg8ZaOM3239DgwMqqTi1bOvIqEn\\nYDu26FkAPK2zv+xvORYqrUrAujKpJ0fqaaiYFezWdlE0imhYDVGmDikhMYl+kunUXIvL5+qI/1b1\\nqUrVeFDpruSM+jjxV3IOcxd7XIxyrS5zhSRtUiOBptVE2SwLKcmBeSAGvCZCCUTVKOYjnssQv3dG\\n+XlUW1V8mPswMAX6avbqyNbg01o/BDHr+I0ydF1HLpcb22gG8Ha8f3v3t2JY4ktrL2E5vgzGGB5W\\nH4q1Gta8jS+O7drIN/IBqRKXGI/yPfONPPbr+yi3ymg7ba8ywyCGjvYb1DgKPHb45+zoqn6oZGpc\\n+lVyxup/QSdxOu5Ywq/z0OoN85w2j2IkYLs26u06WnYLZdObSSfuKTUs5qKtJFYC/TCH/Uxadgvv\\n7b4nNnUlScKVzJXAPTqMaRg1TQNKaIiZpVarIZvNwjC8cukHH3yA69evj32eD3Y/wFZ1CwCwHF/G\\ny2svA/AGG/KSvSZrAXeZttP2Bi36khm/dfIgDMvATm0HJbME0zLF3/M+mUws4zmXQRLyNb8T2yiy\\ng0EMGibKZ/dMgv/xMSjJ6WbQw7XbWe04A9Moj0HLtWBYRkCT7keRFES0SE+zJoc7Gxm2gZJRQsWs\\niJkUCS2BWCgm7Mb97nnDqLVq2MxtdnZVZQXXstdGSmq618+NGzdw7dq1Q15FEKeTF198ER988AEA\\n4Mc//jG++c1vjn2OO8U7+Cj/EQDPxOW1c69BlmQUGgVhvSxLMlbnVkWssBxL9GhyFqILhzZo266N\\nYrOIXD0nZskAnT6ZTCwjYhIfJsr7dPjXttOeWLrVneTwr5NunHVfxyhytWGmOE/CXW3U5MZvGDDo\\nfamyCk3W+sYSy7G8xMZpodgsimo94Enmw2oYqUgKK4kVIWk87GfQdtp4b/c9IWkDgCuZK0KtchjT\\nWD9HhSRnxMyi6zr++Mc/4ubNmwCAeDyO119/faxzGJaBm/s3xY75C0svIBaKBSyaAWAhsiAeLC27\\nFRhyxn38hz3IbdfGTnUH98r3cGAewHY6Zf2l2BLOzp9FJpYRjeeS1BkmymfYzIfnsRBdQCaaQTKc\\nDAwTlSVZJBODGDRMtNAsoGSUUGvV0LSaaNktMZCye77OMPzygm65mqjCDHmm+uVqfEaO4zqdpPEx\\nBqZRZAmK1Jlto8hKjx02A0PbaaNpNcUOrV+2EVJCSIQSYuhmVIvCdm2RqDatJkzbRN2qQ4KEiNqx\\nZB50XbqqIx1Jo9AsiAQy38wjqScPbfjtXj+JRAKf//znR/6ZEcRpotFo4De/+Q0AL9n/+te/Ptbr\\nbdfG5v6maOa/tHAJ6WgazXYTB+aBOG4h1rFobjtt5Bt58RyRJAmL0cWhyQyfJ3O/ch+5eg6G4zky\\nSvAUAquJVawmVjGnz4mqDI8lfFYbl0MvxZaQjqanMky0ZJQ8yVsjj0qrIgwJLMcSscRfJRonnvCY\\nosgKZFkeSUL2JNzVRpWl8fiuKRoUyft595OkWW7HYMAfixVZEfOQdFVHMpz0DG4cw3PqdEyYtomy\\nWYbL3MB4h0HvW5G9zyIloyTu4XwzL6o+h3HU9TMNqEJDzDS/+tWvhM3m6uoqtra2oCijVxv+VPgT\\nbhVvAfD6Vl47+xosxxLT2QEgqXfmyJi2iVqrJv5NkZWB/v1AZ57MTm0HDashduEkeIO0VuIrmNPn\\nJhqSOOj78WqO34Wt7bQPNSfohj8aNEXrK2HrJzsYJUh0B5lxjAeErADSsVRyDrsuYfM8ppEAYwz1\\ndl30QuWb+U5fDhSRwC7FlkRD8bD32Wg3cCN3Q1TvZEnG1exVzIfnh17/UdcPQZwWdnZ2sL6+Dtf1\\nLPXv37+P9fX1w1/4iN3aLt59+C4Az9Dlr5/5ayiSgofVh+LZwEcCAN7GGN+IALz1nYlmhvbB1dt1\\n7NZ2PRc0N+iCxqu741rvDoIx1req07JbA128hp0L8GSx/ao6fFPOz6jP9ZPgrjbKNQKHj0qwXVuM\\nSejHICMBnlg22g3kGjnxGYVX0mJazOvtfaQyGfY+LcfC+3vvBz7nXF68jDNzw01jjrp+pgElNMRM\\nY9s2VldXkc97k9TffvttfPaznx3ptY7r4J177wjd6PXsdWwkN8QkXcDz6+cDpwzLCExsVmSvtD9I\\nm1wxK3hQfYBKqxJIJuKhuHAlGbWJexrwaoBfwsaTnnE0yxzer9NPwjZugtY9BHScwOTfxeOJzuMI\\nTEOnSj8K/qZtilkP3Wiyhojm2T+LWUCModqqotKqoGJWUGgWhMyRD1JLRVLIxrIiqR703ppWEzf2\\nbojdNV5xTEVSA6/7KOuHIE4br7/+Ot566y0AwA9+8AN897vfHel1jDH8+4N/R77hrSNu1Zyr54SD\\nlCIrWJtbgyzJMG3PIIA/U2RJRiaW6ZkEzzFtE7l6DvlGHqbjkyorung+xEPxY5NWdQ+m9ic8/qr6\\nOPA40p3wTOLqeZKTnFGSGz7/7TD7Z1VWA58/uLNmtVXFfmNffLYBgIjqzTJbji+LmDDovdmujfd3\\n3w8oUS4tXAoMh+2Hf/388Ic/xHe+852hx08bkpwRM40sy3jw4AF+//vfA/AW6Be/+MWRXrtb28VW\\nxeud0RUd15evo9qqip0vCRIWoguQJRmNdgMNq6Mt5RPg+yUzhmXgXvketqpbaLQb4gGmqzrWEms4\\nO38WqUhqqk36o9A9AI5/WM5EPa11Qk8gokWEowqAnmFh3SV1h3lTsnmyVzbLKBpFFJvFsYaJdkvV\\n+J+A5G2UQaA+uZp/ECj/HkdhmCyNa555NUaSpJ7v7zJXSMts14YsyeI1CT2BsBoWzbtc9mfYBuqt\\nOuqWZ8EaVsMD+2s0xevzKhgFMTAt38yL32s/utePLMsjrx+COG0wxvCLX/wCALC7u4tvf/vbIxt0\\n3Crc8qRVsowXV16EaQWr+dm4Z/rRtJooGkURF7jUp18yY7s2cvUc7pXvoWAUYLOOVHkhuoCz82ex\\nHF8+dEbWtOkXS9KRNJZiS1iILghVQ1gNQ1VUSJB6JGzdDmT+WFJr11A2yyg0C9hv7uPAPBh5mKj/\\n3N3uat4/Hv7+HqdcbRRZGo8NXAXxKC0LXB93EfXHVVVWEdWiIqaE1BBM2xRxsWk1UW1X0bAaIoHs\\n935kSUY2nvXcV21vg65oFEV/1sCfm2/97O3tjbx+pgVVaIiZ591338XLL3uN/PF4HLlcDtHo8LI7\\nYwz/tv1vKBpFAMDF9EU8M/9MQOucCqcQ0SLCHpmjKRqSerJnodqujd3aLvbqe4H+Gz67ZiWxgpgW\\neyKOXsBkvv2A1wzvNyXglZ1JzQm4nrtbwtZPdtBNdyVnnEGg/gDHqznT+F0M+7nyAG3aZt9A2m0k\\n4DIXFbOCA+MARaOIslkWwVRXdCT1JJbiS1iKLUGV1b7Xb1gGbuRuiEAkSRKezzwvKo3dTLJ+COI0\\n0m2U8f777+OTn/zkoa+7sXcD98v3AXiJy6dWPoWd2o54NiTDSaQiKTTaDZSMkngdt83t3txymYuy\\nUcaD2gPUWrWOTTGkwC77cW+KcSY1EuhX0eGxZRK4rTGPJ+OYExylisPfz+OII4M27lzmDh3aKUmS\\ncEiTJc/K27S9gd+FZiFgPCFLMiJqBIvRRawkVgYmxLZr48bejcDspAvpCzg3f67vNUzLqGlSqEJD\\nzDyrq6v42c9+hmKxiHa7jatXr+KFF14Y+pqyWRa9M7Ik41r2GmrtTuCIqF4jfq1VCyQnISXUk8ww\\nxlBoFvDn0p8Dfu4SJKQiKVxIXzj2XbRJA06/P4rcaYb3mxMsRhc75gSP5uvIkgwXw3tiuFbYtE3R\\nUHpgeOYEB8YB6u26Z07gG0rKm+sHmg74mu9HquS4/Ss5k/x+hlVuFFkRlRdFUuC6XhXJf61+IwFZ\\nkhEPxZEMJ725RUpY7Fw6zJs3UDErqLVrUCTv3N0BlVdqis1iYLYAt2/tZpL1QxCnEV3X8dFHH+HD\\nDz8EMJrRTMtu4Ubuhtgpfz7zPOrtemDwbSaWQb1dD2yYqbIqNib81Nt1fHzwMR7WHgZiT1SLYj25\\njo3kRqDh/ziYRjwBEIglQiEQyyAby3rDox/NWQmpISiSMpbRTbc5QaFZQMWsiMGUtmuDMSYMagZV\\ncbjUbKRKzhSrOIdVbrgKQJgAMRbovwIe2UI73lw6CZIwguADnQGgaTfBmBd3am3PGMhxHUTUSI9c\\nW5ZkZGNZVFoVcS8eGAfis003k6yfaUIVGuJU8P3vfx/f+973AABvvPEGfvnLXw49/r2d9/Cg5k22\\nXYmv4HzqvOh9UCUVi7FF4ffO0dVet49qq4r75fuotqqBB288FMfa3BrSkfSx7KId99Tkw3Bcp6ei\\nw3fixqmq+OHVnO6+nX7mBNxoYJJKDn+o+6s5kzDod8JL/6Ztig9B3d+fJ0EARG9NvpkXmmjGGCJq\\nBKlICmuJNcyH53uSKv5Byz8F+rnF50RTsh//+vnCF76AN998c6L3TBCzzq9//Wu88cYbAICVlRVs\\nb28PNcr4c/HP+M/8fwLwrJqvZ6+L3gNJkrCaWIVhG6iYFfEaTdGQiWYCkinTNvGw+jDQRwd4cujF\\n6CKW48sDpaPT5KTFEm5008+gYFyjG46maH1tp/v16zzpfpxhlRsxnNPp2D/3kyJrsrfZ2LSaqJgV\\n5Bo5UXVhjEGVVcRCMawmVrEUW+pJbBzXwWZuM1BdPDd/DhfSF3quyb9+jttohhIa4lTw8ccf48IF\\nb3EpioKdnR0sLS31Pda0TPzT3X8SuxjXs9ehKp2kYyGyICbxcrgmlWNYBrar2yg0C4GHqq7oWEms\\nIBvPDmzwnAYnLeiMA99R6+fENun76jYl4AmPP5n0z8Y57iSn3/viRgKGZYhkuicYPTISUCRFNHrm\\nm/nAz4o7HK0l1pDQE0OTGgD4xOInkI1nA9+ne/3s7u4ik+lNfAjitNNtlPHWW2/hc5/7XN9jXebi\\nn+/+M5ptb6Ph8sLlgNFLOpqGy9xAL42uegkKf4bYro29+h52a7sBQxHeJ7OaWB15avskzHosGSRj\\nO8rG2WHDRJ9UkjMsuXFcb2in5ViiutNdbeEqCtM2UWqWsNfYE3NnGGNQFRWJUALrc+tIR9KQ5U6c\\nc5mLzdwmis2i+Luz82dxMX0xcB3jrJ9pQ5Iz4lSQSqXw9ttvY3t7G4wxbGxs4JVXXul77J2DOyg0\\nPVtmbmfIiakxWMwK9IfwOTCA9wB9UH2AO6U7gcGaiqRgOb6MiwsXsRBdGNisOCnTKvmfBPiAz4gW\\nEfKqdCSNxegi5iOPzAnUiBj4eZjsAOhUhJpWUzSUFpsdcwIuYeMVEU3RPFlDl8xgkFzN3yTK5Wo8\\nORpFrtbv98AlBLyHRpZkOK4TkBFwI4GW3UJIDSEdSSOpezbOpuMN+LQcS0gtLMczDuD9NVyjXzJK\\nYte30CyIZl5O9/pZX18fuH4I4jTTz2jmS1/6Ut9jd+u7ondGlVUsx5fFGucSY78zZlgNIxPNeNJc\\n5qLQLOBO6Y7X38A6lv5JPYnzqfNYS6xN3QnztMUSTdFELOFy6Gw8i4XIAubCc4hpsU5PjdQ776Ub\\nLvHtntW239wXNvtcwgZ0rJTHkatNajowTJbGTQGGzaXjsUuVVcyF55AKp6ApmjAOcF3XS3bMEmrt\\nGsJqGLqii++5FFsSknDAUw/Yrh3oz3ySRjNUoSFODT/60Y/wrW99CwDw8ssviwXlx2Uu3v74bW/a\\nO2NYn1vHcsJLaFTJc9byu7Fw/SljDPuNfWxXtwO73VxLuj633rM7fhRmedfsccA1v/0kbOPORODw\\nh3+3hI1XdfwVnVEJmA4McHTrfl/d8GDaslt9kyVF8pIwwzKQa+RwYB6I65QgIRaKYS2xhtXEKjRF\\nE824m7nNwBToSwuXAlOgR1k/BPE08Ic//AEvvfQSAK8PYG9vD7FYrOe4f936V7FjPR+ex0ZyA4AX\\nFyJaJFBxiWgRLEQWIElSQKrs30SJalGcmTsTGOR8VCiWBGGMCaObaZsT9MzXkUOQZflYKjn+zTUO\\nNxKwXEvEB35u/lWGjJbTwn5jH/uNfdFrBHjVqsXoItaT62I4p8tc3Ny/KSzKAeDM3BlcWrgkztu9\\nfo7LaIYSGuLUUCqVsLy8DMvydqJv3bqFy5cvB47Zrmzj/b33AQC2Y+OltZe8KgBj3oc/345HPBRH\\nRIugYlZw9+Au6lY98ECKh+LYSG4gFUkdqUGTAs7RGDRM9CiyA/8wUU32qjmqrIpG1UmTnGEzcrrP\\n6TJvt8ywjICmvtuQomE1RCWKv19uLrCR3EA2loWqqLAcC5u5zcCO8bMLz2I1sQqgd/3cvn0bly5d\\nGvl9EsRpgTGG5557Drdv3wYA/PSnP8VXvvKVwDEVs4J/uf8vYrPlyuIVRENRMOZZN/tjQiwUQzqS\\nhmmZ2KpuodAoBCzxQ3IIK4kVLMeXjzxkmeLJ5LjMHShhO8rGWXeSE1I7vZ+PI8npl9zwXhu/aRE/\\nJ8e0TeQaOTEjyZ/YrMRXcCZ5BrqqgzGGm/s3sd/YF69dm1vD5YXL4j0dtn4eByQ5I04NkUgE7733\\nHm7d8tzLUqkUPvOZzwSO2cxtiv6YxegiFmOLYmaHJncCCZeY3Sndwf3K/cBOm67ooiEuFhrfhvk0\\nlfxPAlxCFlbDiIViAfecdCSNOX0OUS06luyA72wZtiHcc8pmGQfmgZActN12YDdrUFLLS/98FoBf\\nrgagE6C65QSP3ldUi4qyv8OCQ+t4/1BEjSCkhjxJAbNFfw53jtNkDfFQXMwW4DuRJaMETdYwp8+N\\ntH4I4mlAkiSUy2W88847AIBms4mvfvWrgWNuFW6hYlbgMAeqrGI9ue59IHbb0JWOTIzPadmubONO\\n6U7ATVORFGRjWTy7+OxEUuVpuVkSHlymy2MJl0MvxZaQiWY6rp5aWCQk3fPGuvHHknq7jkqr4jmx\\nNfMdFzbLhOVaAVvlgcnKCHK1fr9bLs8TbqT8tb5r1xRN3K+2a6PltgDmyfAqrYqoykS1KJbjy2ja\\nTVH1r7VqMB0Ti9HFnvVjGEbP+nkcUIWGOFX8/Oc/x5e//GUAwF/+5Wfw5ptvwXEYGAPabgtb1Xso\\nWjsJ8sFRAAAKdklEQVTYN3bxF+t/AVVR0bbbSIaT4hxRLYr9xj5267uBhn9FUrCSWMFaYg0hdfSG\\nf9oxO5lYjtVXwsbL8+MiQRJ6aj7FWZM9N53DPqjwHbd+lRz/tfBEhds8d5+jaTVRbBZxYBzAhSt2\\n4WRJRjqSxvn580iEE9jMbQYalc+nzmM9uR5YP3/16sv4P//4v8EcE3BtQFYhK2Eo8VXI2uNrUiaI\\nk8Ddu3dx/vx5AMDFi5fxu9/9HuFwDIwBDC7uVv4fCu2H2G08wLXsNcyH51ExK0hH02JzIxFKwLRN\\nbFe3A5tiEiSkwilszG+M1fBPseRkwo1u+jmxTfo702Qt4OwpFAMjVPAGVXK6KzfdVRugU7mxXRtl\\ns4xcIxeQ2QNexXEjuYGl6BJuFW9hr74n/m05vowrmSu4d++eWD+XL6zj//72HxENK481llBCQ5wq\\nDMPE1772P/C3f/t3eO21zw88rmoXEY1KqNoFLMY6jjNNq4m9+l7gw6IECQvRBWwkNxAL9eqou6Gg\\nM9twCUk/F7Zxh4nynTRebdFkTQSqw4aJ8h4cf6Ljx3EdGLYBwzJ6pnAbtoGd6g4OTG9mAA+CfMjr\\nxtwG7lXuCXtZAHgm9QwyoQy+8ZX/jq/9zV/hs6++OPB9yZEM1MRZKNEs3bvEqYQxhr//+3/AK6+8\\nNjSWlNp7iEZk5K2HSIfTgSb+olEMSDwBn1Q5nBqpL2JcaD2eHKbdr8MYC7h6djt7DhsR0Z3kAB23\\nNH6dlmMF1AsSJFiOhbyRR66eQ9ttQ0Fnc25On8O55DnkjTx2ajvi77PxLK4sXsE//K//iVc/ff7Y\\nYgklNMSpwXUZymUHrdbot7Qrt6DFDFRbFRSNYs9DJhFK4FzqXM8wTT8UdJ4euMbaX9HhCc+oMxGE\\nXODRAFJFVhCSQ4G+HR6suu8Tv3U0WEea0M9IgDGGRruB7do2DowDKJIinOO41KVpNWE63sA0mTG8\\noAK6Xe+55kHIkQz0pU9DekITywnicTBJLGmjDjnSgOkYKLfKgRlmgCdVPjN3Btl4drA8lWLJU4Pf\\n6KY74Rln48xvOCDLsogh3QYF/e45f3LD/5/bP/vl1ICnaNip7QjjAFVWxTlT4ZSQpQGADIYXFCDm\\nmhiVacQSSmiIU4HrMpRKDixr/NvZdOvYan8IWe4sbF3VRUN1dxP2uFDAeTroHibqNyo4rGenO8nh\\nx3dLDniw4rbMQFCuBnizZwzbEDICxhgqZgVblS2UW2UokiKkC9zhJqFH8TxaiGF8EwU5lIS+8t8o\\nqSFOBUeNJfdbm1DVzi62Iimiobp7B53iCdGPow4T5UmOv7+Hy59HGSYKePeZ7diwmR34nqZl4mHt\\nIXL1HFy40GTNc96UZTTbTShg+JQmIS6Nf28fNZZQQkPMPIwxHByMt5vWTcM9wK59G4qkYG1uDWuJ\\nNaiKSgGHmAqWY/WVsA0bJjooyQE8KUBPovNIwqZIithp44GQUzJKuF+5j4pZ8axGHyU2n0ALq6HJ\\n513IkQz07Mt07xMzzXRiSRl7zm1IkLAYXcTZ+bMIq2GKJcRU6O7X8Vd5Bm2c9QwC9fXRcElyv6qO\\nJmvieJ7c8IpOo93AVnULxUYRrutCVVWosoILTgPL2uROfUeJJZTQEDOPabo4OBhN7jOMhrKLtfkM\\nwlp4rNdR0CEmhWuX+0nY+skOhiU5HH+ioskaQnIIDMxzSHsUyErNEraqW2i0G1hWVfzXyNFnBISW\\n/gvU2PLhBxLECWVasaQibWN1flG4ZY4KxRLiKHCjm+6qTr+Ns2FJDkeC1KnkPLKbViQFiqyIfpya\\nWcNWdQulZgkZGbgemnyEBWfSWEIJDTHzFIs22u2j38ahkIR0+nDbTAo6xHHA7T4PGybKLaCHJTkA\\nxGA1F56FtAwZ5VYZz7oNZNWjzb4AvJ218PIrRz4PQTwpphdLgHT6cNkMxRLiOOjXr+OPJ/7jDkty\\n+HESJMiyDEVSoEoqTNtE1txF+uj5zMSxhETPxExj22wqAQgA2m0G22ZQ1d5GbII4bsT0abVXCsb7\\ndbolbFx20D2jgDutAYAMz1SgZbeQkJSpJDMA4Bp5uFadLJ2JmWS6sQQUS4gTgyRJnVjSFU4OGyba\\nL8nh97HLXDiug6bbhOK0ppLMAJPHEkpoiJnGMCabBD8I02RIJKa0KgniMaHICiJyBBEt0vNvtmv3\\nmBK0nBZM2xRDZBlj0FUdi2gDR1fYCJz6DuTUpemdkCCOCYolxNOILMkIq2GE1V6pvb8P0//VtEwx\\n5JlJDJqiYZG1nngsoYSGmGkcZ7qKyYeVXRQO7k31nARxEmCMeZUdty0GqkUVBqjTCwPMGd2mkyBO\\nEtOOJblaHrdrD6Z6ToI4KfAYwvs956Q2oEwvgZ8kllBCQ8w00+4Ak6XDe2gIYhaRJAmqokJVOo/9\\nhNsA2HjDQofBfL09BDFLTDuWSKDqDHF6UWUVqqwKlUDCKgNjzJ05jEliCa04YqaZtiTZZVOsmRLE\\nCcfFdBcQzaIhZpVpxxI2wUwngphVTkIsoehDzDSKIgEDnDgmYS25gk8kzkztfARxkrEO/gSr/Kep\\nnU9SxrM8J4iTwrRjSTaRwcUE2ZgTTwcnIZZQhYaYaSKR6d7C0z4fQZxklPjqiT4fQRwXFEsIYnJO\\nQiyhFUfMNKoqIRSaTqlT16Uem02COM3IWhxyJDOdc0UyZNlMzCwUSwhick5CLKGEhph5YrHp3MbR\\nKC0H4ulDTZw9UechiCcFxRKCmJwnHUto1REzj65L0PWj7YZN4xwEMYso0eyRd9bkSAZKNDulKyKI\\nJwPFEoKYnCcdSyihIWYeSZIwP69A0yYLIprmvZ6mOBNPI5IkQV/6NORQcqLXy6Ek9KVP0/ohZh6K\\nJQQxOU86lkiMTdt9nSCeDK7LUC47aLVGv6V13QtAskwBiHi6Ya6N1v5/wDXyI79GjixBX/oU2TUT\\npwqKJQQxOU8qllBCQ5wqGGNotRgaDRft9uBbW9clRKMydF2i3TSCeARjDE4zB7t2f2gwkiMZqImz\\nUKJZWj/EqYRiCUFMzpOIJZTQEKcW22YwDBeu6+24ybIEWfbsNMmBhiCG41p1OPUdMMcEc21IsgpJ\\nCUOJr5KbGfFUQbGEICbnuGIJJTQEQRAEQRAEQcwsZApAEARBEARBEMTMQgkNQRAEQRAEQRAzCyU0\\nBEEQBEEQBEHMLJTQEARBEARBEAQxs1BCQxAEQRAEQRDEzEIJDUEQBEEQBEEQMwslNARBEARBEARB\\nzCyU0BAEQRAEQRAEMbNQQkMQBEEQBEEQxMxCCQ1BEARBEARBEDMLJTQEQRAEQRAEQcwslNAQBEEQ\\nBEEQBDGzUEJDEARBEARBEMTMQgkNQRAEQRAEQRAzCyU0BEEQBEEQBEHMLJTQEARBEARBEAQxs1BC\\nQxAEQRAEQRDEzEIJDUEQBEEQBEEQMwslNARBEARBEARBzCyU0BAEQRAEQRAEMbNQQkMQBEEQBEEQ\\nxMxCCQ1BEARBEARBEDMLJTQEQRAEQRAEQcwslNAQBEEQBEEQBDGzUEJDEARBEARBEMTMQgkNQRAE\\nQRAEQRAzy/8HEA5vI9sQFiIAAAAASUVORK5CYII=\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1120x480 with 2 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"# visualize the attention across layers for the positive pair\\n\",\n        \"plt.close('all')\\n\",\n        \"for i in range(len(a)):\\n\",\n        \"  _ = plot_graph_matching_pair(nx_graphs[0], nx_graphs[1], a[i][0])\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"65g2TlJHPFb1\"\n      },\n      \"source\": [\n        \"Note that the left-to-right and right-to-left attention patterns are slightly different.  Also the attention pattern starts almost uniform, and then gets more concentrated after a few layers.\\n\",\n        \"\\n\",\n        \"If we train the model for longer, we can see a clearer matching pattern.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 1000\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 6908,\n          \"status\": \"ok\",\n          \"timestamp\": 1563980193552,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"yFI9m9TqL4Qd\",\n        \"outputId\": \"a1ee65df-ede9-4dc7-c1b9-8b51a51da200\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAzQAAAFpCAYAAABK/W13AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsnXmQZWV5/79nP+fut3u6Z59hWAyK\\nbCqIQcEiJFECKAFZjASxBCkLUBMtDVQIGFMqkTKlJiZBBVMlwS2GEgJuP3Fh35VVYIbp6W6mp7e7\\nnv097++Pt9+377l9by/T3dPdw/uhKOjue889597u9znv832e76NQSikkEolEIpFIJBKJZA2irvQJ\\nSCQSiUQikUgkEsn+Ijc0EolEIpFIJBKJZM0iNzQSiUQikUgkEolkzSI3NBKJRCKRSCQSiWTNIjc0\\nEolEIpFIJBKJZM0iNzQSiUQikUgkEolkzSI3NJI1xyGHHIKf//zn83rsj370I2zduhW5XA5PPPHE\\nMp/Z8qAoCl566aUD9npHHXUU7r333nk9diGfhUQikax2Xsvr36233oq3v/3ty3Lse++9F1u2bJnX\\nYymluPTSS1Eul3HiiScuy/lIDj7khkZyUPPJT34SX/va19BoNHD88ccvOgC9853vxDe+8Y3U9w70\\nhmOu81kszzzzDN75zncu+jgLCWASiUSyGlgt698rr7wCRVEQx7H43nJuOPbnfJaL3/72t/jZz36G\\nwcFBPPzwwzKWSOaF3NBIDmp2796No446aqVPY01wIAKVRCKRrEbk+rd62L17Nw455BBks9mVPhXJ\\nGkJuaCRrmiRJ8IUvfAGHHXYYent7cf7552NiYgJBECCXy4EQgmOPPRaHHXYYLr74YgwMDOCss85C\\nLpfDjTfeOON4k5OTOPPMM9HX14dyuYwzzzwTg4ODAIBrr70Wv/nNb3DllVcil8vhyiuvxCmnnAIA\\nOPbYY5HL5fDd734XAHDnnXfiuOOOQ6lUwh//8R/jd7/7nXiNQw45BF/60pdwzDHHoFgs4oILLoDv\\n++Ln//zP/4yNGzdi06ZN+Na3vtX12judDwDcf//9OOGEE1AsFnHCCSfg/vvv73qMQw45BF/84hdx\\nzDHHIJvNIo7jlIrleR4uueQSlMtlvP71r8eNN944I1P25JNPzriWZrOJd7/73RgeHkYul0Mul8Pw\\n8PCsn6VEIpEcSFZ6/bvrrrtw/PHHo1AoYOvWrbj++uvFz3hsKZVKyOVyeOCBB3DFFVfggQceQC6X\\nQ6lUAgAEQYBPfvKT2LZtG9avX48rrrgCnucBmFaJbrrpJvT392Pjxo245ZZbxGuMj4/j7LPPRqFQ\\nwIknnoiXX36563vV6XySJMHnPvc5bN++Hf39/fjrv/5rVKvVeb33w8PDOPfcc9HX14cdO3bgK1/5\\nCgDgm9/8Jj784Q+L6/zUpz4lY4lkflCJZI2xfft2+rOf/YxSSumXv/xl+ta3vpXu2bOH+r5PL7/8\\ncnrhhReKxwKgL774YsfndmJsbIz+4Ac/oM1mk9ZqNXreeefR97znPeLnp556Kr355ptTz2l/jcce\\ne4z29fXRBx98kMZxTG+99Va6fft26vu+OIcTTjiBDg0N0fHxcXrkkUfSr3/965RSSu+++27a399P\\nf//739NGo0EvuuiiGcdvpf18xsfHaalUov/1X/9Foyiit912Gy2VSnRsbKzre3nsscfSgYEB6rru\\njPfo05/+ND3llFPoxMQE3bNnDz366KPp5s2bU8/vdi2//OUvU4+VSCSS1cRKr3+//OUv6e9+9ztK\\nCKFPPfUU7e/vpz/60Y8opZTu2rWLAqBRFInH33LLLfTkk09OHeNjH/sYPeuss+j4+Dit1Wr0zDPP\\npJ/5zGfE8TVNo3//939PwzCkd911F3Uch05MTFBKKb3gggvo+973PtpoNOjvf/97umnTphnH53Q6\\nn29+85v0sMMOoy+//DKt1+v0nHPOoR/4wAe6Xit/Pwgh9E1vehO94YYbaBAE9OWXX6Y7duyg99xz\\nT8frlLFEMh+kQiNZ0/zHf/wH/umf/glbtmyBZVm4/vrr8YMf/GC/ywd6e3tx7rnnIpPJIJ/P49pr\\nr8WvfvWrBR3j5ptvxkc+8hG89a1vhaZpuOSSS2BZFh588EHxmKuvvhqbNm1CT08PzjrrLDz55JMA\\ngO9973u49NJL8cY3vhHZbDaVsZsPd911F4444ghcfPHF0HUdF110EY488kj8+Mc/7vqcq6++Glu3\\nboXjODN+9r3vfQ/XXHMNyuUytmzZgquvvrrj8ztdi0Qikax2VnL9e+c734mjjz4aqqrimGOOwUUX\\nXbSgeEMpxc0334wvf/nL6OnpQT6fxzXXXIPbb79dPMYwDFx33XUwDANnnHEGcrkcXnjhBRBC8MMf\\n/hCf/exnkc1m8cY3vhGXXHLJvF8bAL7zne/gb/7mb3DooYcil8vh85//PG6//fY54+8jjzyC0dFR\\nXHfddTBNE4ceeiguu+yy1HlLJAtFX+kTkEgWw+7du3HOOedAVaf35pqmYWRkBJs3b17w8VzXxSc+\\n8Qncc889mJycBADU63UQQqBp2rzP6dvf/ja++tWviu+FYZiSyTds2CD+P5PJiJ8NDw/jzW9+s/jZ\\n9u3bF3T+w8PDM56zfft2DA0NdX3O1q1bZz1e6887PbbbtUgkEslqZyXXv4ceegif+cxn8PTTTyMM\\nQwRBgPe9733zfv7o6Chc103FDEopCCHi697eXuj69K1eJpNBo9HA6Ogo4jhOXdNi48327dsRx/Gc\\n8Xf37t0YHh4WZXMAQAjBO97xjgW9vkTSilRoJGuarVu34u6770alUhH/+r7fdTFVFGXW49100014\\n4YUX8NBDD6FWq+HXv/41ABYk5vN8fk7XXntt6pxc18VFF10053M3btyIPXv2iK8HBgZmfXz7+Wza\\ntAm7d+9OfW9gYGDW4DLbNW3cuFH0EAFIndtczOe9kkgkkpVkJde/97///Tj77LOxZ88eVKtVXHHF\\nFbPGmvbvrVu3Do7j4JlnnhGxplqtotFozPnafX190HV93vGm0/m0x5uBgQHouo7169fP+tpbt27F\\njh07UjGyXq/j//7v/+b92hJJO3JDI1nTXHHFFbj22mvFojo6Ooo77rij6+PXr1+PnTt3dv15vV6H\\n4zgolUqYmJjADTfcMOfz27932WWX4d///d/x0EMPgVKKZrOJu+66C/V6fc7rOf/883Hrrbfi2Wef\\nheu6M15/rus544wz8Ic//AG33XYb4jjGd7/7XTz77LM488wz53ztbufz+c9/HpOTkxgaGsLXvva1\\neT93/fr1GB8fn3eTqEQikawmlnv9q9fr6OnpgW3bePjhh3HbbbeJn/X19UFV1dT6vn79egwODiIM\\nQwCAqqq47LLL8IlPfAL79u0DAAwNDeEnP/nJnOenaRr+8i//Etdffz1c18Wzzz6Lb3/7210f3+l8\\nLrroInz5y1/Grl270Gg0cM011+CCCy5IKUKdOPHEE1EoFPDFL34RnueBEIKnn34ajzzySMfHy1gi\\nmQ9yQyNZ03zsYx/D2WefjT/7sz9DPp/HSSedhIceeqjr4//u7/4On/vc51AqlfClL31pxs8//vGP\\n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\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1120x480 with 2 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        },\n        {\n          \"data\": {\n            \"image/png\": \"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\\nSURRhO985zv41Kc+hWw2i2OPPRYXXXRR38cGgG984xv4y7/8Sxx22GHI5XL4zGc+g5tuumne+Pub\\n3/wGExMTuOqqq2CaJg477DBccsklqfOWSBaKvtwnIJHsD9u3b8fZZ58NVZ3NzTVNw969e7Fx48YF\\n76/ZbOIjH/kIbr/9dpTLZQBArVZDFEXQNK3vc/ra176Gz3/+8+Jnvu+nZPJ169aJ/5/JZMRru3fv\\nxite8Qrx2pYtWxZ0/rt37+54z5YtWzA+Pt7zPZs3b55zf8nXu23b61okEolkpbOc9797770Xn/jE\\nJ/DII4/A9314noe3v/3tfb9/YmICzWYzFTMYY4iiSPx7ZGQEuj77qJfJZFCv1zExMYEwDFPXtL/x\\nZsuWLQjDcN74u337duzevVuUzQFAFEV43etet6DjSyRJpEIjWdVs3rwZt912G6anp8V/W61Wz5up\\noihz7u+6667Dk08+iXvvvRfVahW/+MUvAPAg0c/76ZyuvPLK1Dk1m01ccMEF8753/fr12Llzp/j3\\njh075ty+/Xw2bNiA7du3p362Y8eOOYPLXNe0fv160UMEIHVu89HPZyWRSCTLyXLe/97xjnfgrLPO\\nws6dO1GpVHDppZfOGWvafzY6OgrHcfDoo4+KWFOpVFCv1+c99tjYGHRd7zvedDuf9nizY8cO6LqO\\ntWvXznnszZs3Y+vWrakYWavV8IMf/KDvY0sk7ciERrKqufTSS3HllVeKm+rExARuvvnmntuvXbsW\\nzz77bM/Xa7UaHMdBqVTC1NQUPvnJT877/vafXXLJJfj3f/933HvvvWCModFo4NZbb0WtVpv3es49\\n91zccMMNeOyxx9BsNjuOP9/1nH766fj973+PG2+8EWEY4pvf/CYee+wxnHHGGfMeu9f5fOYzn0G5\\nXMb4+Di+8IUv9P3etWvXYnJysu8mUYlEIllJLPX9r1arYXh4GLZt49e//jVuvPFG8drY2BhUVU3d\\n39euXYtdu3bB930AgKqquOSSS/CRj3wEzz//PABgfHwcP/zhD+c9P03T8Od//ue4+uqr0Ww28dhj\\nj+FrX/taz+27nc8FF1yAz33uc9i2bRvq9TquuOIKnHfeeSlFqBsnnXQSCoUCrrnmGriuiyiK8Mgj\\nj+A3v/lN1+1lLJH0g0xoJKuaD33oQzjrrLPwp3/6p8jn8zj55JNx77339tz+b/7mb/DpT38apVIJ\\n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\\nro2eyNDfdVDiQ9SRQhY4kqyhKQ7OeSZY1ePwjvzo3I63wIWBu+66C49+9KMBAK7rYn19HfX6uMAk\\npMCZwRkIKfDP3/lnvPjqF2PYUZTlSy+9FDd94ia0Gi0IKbARbrBpJBVJTtRPzCyQ6aplvaSHtEi3\\nxQzf9tH0m6VkZ9Zxhn0TWTK/nVuvWMPZ/E5Fi9IEYhzT4e4TdTs822MvNp1SR2aXw2zI66RhGGj7\\nbZ4hIui0LAAsx78ZbuKB/gNsPBo4wbbOVzfuQkrJSpYrwQoM02DRFZq1tEwLvuWX5m52g5QSg2yA\\nXtwrMRgIpmEqM2S3zvGEkjEqHNLMJjBW4Wp6TVTcCovinB6cLsWShtfA8dpx2Nb4OxFlEeIiLs3U\\nEJuAQF2bgxTJTp8+zcwX0zJx2223Yam9tMur5geOBaKAgOYvN1Jj1R/ToSc0Sa6YEo83cxy3D07r\\nJhxWLFkkNA9T9Pt9rK6uIknUYnjnnXfi5MmTpefoZpD/8R3/EW/9o7fyY7/7O7+LP/53f8xDZBvh\\nBjajTV5wXNvFY5ceO3VzSa1vSgBykcM13amytLslNr2kh0EPMPLttIRzxf3Rnbi9/4+AOZ43cU13\\n6saWqF9pnkJIlUTYlpLTFFKg6TdZNawdtHmxIDimAzLTJCUy+rcu0UwD4EmR8GK/FW0hLmJ2Pm76\\nY64zSS9P/npTVbDqVEtD8fq1kTrbLN6uZVoc2CYRZzE24g30IjWIScGLhl9bfovV6dbDdXbTBkYe\\nR8EymkGzdEy6TkLFqbCXz7TlyzTMc+7axHGMJ/zQExAOVWfjC1/4An7wB39wX8eYxGS3ZfLvs5KU\\nvWCykpYUiXLkzkJcIiMcN+e3vC86NAvMwpOe9CR861tKTe/666/Hy172stLjuhnk5z7/OfzyNb8M\\nmarv5hXPuwIffc9H4Tpqg9yJOtiMNkumjidbJ0seKTpolg8YmzNPeqIBuyc2hSiwtZUjnWNCs1Wc\\nxr8MblbdFyhZ/sAO1JzpRDihWEPzNbaluvxtv60opIYF01SKiC2/VdrgA6oQRGIMcR4jzpRXC1F1\\n9bnTulfnDa1t2jznScqlraBVEhyZpk5mGibTsvWEZ7I410un2zEAinrd8BpT/V6SPMFmrPYUURZx\\n4mYZFqpuVVES/SY8y8MD/QcUXVmbrTxaO4olf6l03CRPSrHENpRoxE5034N0ba686kr84zf+EQDw\\n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\\ngg==\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1120x480 with 2 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        },\n        {\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAzQAAAFpCAYAAABK/W13AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsvXmUZVV59/898zl3vnVr7Kl6nmkm\\nQZyAxTJRCWAICrQREZcoiyBqYqKRFRa6fJeByOt6o4lJEMGsSFqjURYgIPATJwYFmZpumuqxpu7q\\nGu98z7h/f5zau86dqm513Zqa/VmLBdQ9Z5997rCf8+zneb6PQAgh4HA4HA6Hw+FwOJxliLjYE+Bw\\nOBwOh8PhcDicU4U7NBwOh8PhcDgcDmfZwh0aDofD4XA4HA6Hs2zhDg2Hw+FwOBwOh8NZtnCHhsPh\\ncDgcDofD4SxbuEPD4XA4HA6Hw+Fwli3coeEsO9auXYsnn3yyoWN/+tOfYvXq1YhEInjppZfmeWbz\\ngyAIOHjw4IJdb8eOHXj66acbOnY2nwWHw+Esdd7K69/999+Pd7/73fMy9tNPP41Vq1Y1dCwhBDfc\\ncAOSySTOP//8eZkP5/SDOzSc05ovfOEL+Pa3v41cLoezzz57zgbo4osvxne/+92yvy20wzHTfObK\\n66+/josvvnjO48zGgHE4HM5SYKmsf0ePHoUgCHAch/1tPh2OU5nPfPHb3/4WTzzxBPr7+/H73/+e\\n2xJOQ3CHhnNac+zYMezYsWOxp7EsWAhDxeFwOEsRvv4tHY4dO4a1a9ciHA4v9lQ4ywju0HCWNZ7n\\n4R//8R+xYcMGpFIpXH311RgbG4NpmohEInBdF2eeeSY2bNiA6667Dr29vbj88ssRiURw1113VY03\\nPj6Oyy67DG1tbUgmk7jsssvQ398PALjtttvwm9/8BrfccgsikQhuueUWXHjhhQCAM888E5FIBD/8\\n4Q8BAA8//DDOOussJBIJvPOd78Srr77KrrF27Vp84xvfwK5duxCPx3HNNdegVCqx1//pn/4JXV1d\\nWLFiBb73ve/Vvfda8wGAZ555Bueddx7i8TjOO+88PPPMM3XHWLt2Le68807s2rUL4XAYjuOURbGK\\nxSKuv/56JJNJbNu2DXfddVfVTtnLL79cdS/5fB4f+MAHMDg4iEgkgkgkgsHBwWk/Sw6Hw1lIFnv9\\ne+SRR3D22WcjFoth9erVuOOOO9hr1LYkEglEIhE8++yzuOmmm/Dss88iEokgkUgAAEzTxBe+8AWs\\nWbMGHR0duOmmm1AsFgFMRYnuvvtutLe3o6urC/fddx+7xujoKK644grEYjGcf/75OHToUN33qtZ8\\nPM/D1772NXR3d6O9vR0f+9jHkE6nG3rvBwcHcdVVV6GtrQ3r1q3DP//zPwMA7r33Xnzyk59k9/m3\\nf/u33JZwGoNwOMuM7u5u8sQTTxBCCPnmN79J3v72t5O+vj5SKpXIpz71KXLttdeyYwGQnp6emufW\\nYmRkhPz4xz8m+XyeZDIZ8qEPfYh88IMfZK9fdNFF5J577ik7p/IaL774ImlrayPPPfcccRyH3H//\\n/aS7u5uUSiU2h/POO48MDAyQ0dFRsnXrVvKd73yHEELIo48+Strb28lrr71Gcrkc2b17d9X4QSrn\\nMzo6ShKJBPnP//xPYts2eeCBB0gikSAjIyN138szzzyT9Pb2kkKhUPUeffGLXyQXXnghGRsbI319\\nfeSMM84gK1euLDu/3r388pe/LDuWw+FwlhKLvf798pe/JK+++ipxXZe88sorpL29nfz0pz8lhBBy\\n5MgRAoDYts2Ov++++8i73vWusjE++9nPkssvv5yMjo6STCZDLrvsMvKlL32JjS9JEvmHf/gHYlkW\\neeSRR4hhGGRsbIwQQsg111xDPvzhD5NcLkdee+01smLFiqrxKbXmc++995INGzaQQ4cOkWw2S668\\n8kry0Y9+tO690vfDdV1yzjnnkK985SvENE1y6NAhsm7dOvLYY4/VvE9uSziNwCM0nGXNv//7v+P/\\n/J//g1WrVkHTNNxxxx348Y9/fMrpA6lUCldddRVCoRCi0Shuu+02/OpXv5rVGPfccw8+/elP4+1v\\nfzskScL1118PTdPw3HPPsWNuvfVWrFixAi0tLbj88svx8ssvAwB+9KMf4YYbbsDOnTsRDofLduwa\\n4ZFHHsGmTZtw3XXXQZZl7N69G1u3bsVDDz1U95xbb70Vq1evhmEYVa/96Ec/wpe//GUkk0msWrUK\\nt956a83za90Lh8PhLHUWc/27+OKLccYZZ0AURezatQu7d++elb0hhOCee+7BN7/5TbS0tCAajeLL\\nX/4y9uzZw45RFAW33347FEXBpZdeikgkggMHDsB1XfzkJz/BV7/6VYTDYezcuRPXX399w9cGgB/8\\n4Af467/+a6xfvx6RSARf//rXsWfPnhnt7x/+8AcMDw/j9ttvh6qqWL9+PW688cayeXM4s0Ve7Alw\\nOHPh2LFjuPLKKyGKU765JEkYGhrCypUrZz1eoVDA5z//eTz22GMYHx8HAGSzWbiuC0mSGp7T97//\\nfXzrW99if7MsqyxM3tnZyf47FAqx1wYHB3Huueey17q7u2c1/8HBwapzuru7MTAwUPec1atXTzte\\n8PVax9a7Fw6Hw1nqLOb69/zzz+NLX/oS9u7dC8uyYJomPvzhDzd8/vDwMAqFQpnNIITAdV32/6lU\\nCrI89agXCoWQy+UwPDwMx3HK7mmu9qa7uxuO48xof48dO4bBwUGWNgcAruviPe95z6yuz+EE4REa\\nzrJm9erVePTRRzExMcH+KZVKdRdTQRCmHe/uu+/GgQMH8PzzzyOTyeDXv/41AN9INHI+ndNtt91W\\nNqdCoYDdu3fPeG5XVxf6+vrY//f29k57fOV8VqxYgWPHjpX9rbe3d1rjMt09dXV1sRoiAGVzm4lG\\n3isOh8NZTBZz/fvIRz6CK664An19fUin07jpppumtTWVf2ttbYVhGHj99deZrUmn08jlcjNeu62t\\nDbIsN2xvas2n0t709vZClmV0dHRMe+3Vq1dj3bp1ZTYym83i5z//ecPX5nAq4Q4NZ1lz00034bbb\\nbmOL6vDwMB588MG6x3d0dODw4cN1X89mszAMA4lEAmNjY/jKV74y4/mVf7vxxhvxb//2b3j++edB\\nCEE+n8cjjzyCbDY74/1cffXVuP/++7Fv3z4UCoWq6890P5deeinefPNNPPDAA3AcBz/84Q+xb98+\\nXHbZZTNeu958vv71r2N8fBwDAwP49re/3fC5HR0dGB0dbbhIlMPhcJYS873+ZbNZtLS0QNd1/P73\\nv8cDDzzAXmtra4MoimXre0dHB/r7+2FZFgBAFEXceOON+PznP4+TJ08CAAYGBvD444/POD9JkvAX\\nf/EXuOOOO1AoFLBv3z58//vfr3t8rfns3r0b3/zmN3HkyBHkcjl8+ctfxjXXXFMWEarF+eefj1gs\\nhjvvvBPFYhGu62Lv3r34wx/+UPN4bks4jcAdGs6y5rOf/SyuuOIK/Omf/imi0SguuOACPP/883WP\\n//u//3t87WtfQyKRwDe+8Y2q1z/3uc+hWCyitbUVF1xwAd7//vdXXe/HP/4xkskky6e+4447cP31\\n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\\nALYCgFh05Rd/jm0AAAAASUVORK5CYII=\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1120x480 with 2 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        },\n        {\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAzQAAAFpCAYAAABK/W13AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsvXl0ZNV17/+9c82DSlWaWq1WT3TT\\ndNPQNIOxgR/PMUMYQsAMfsYYL2OzCMZ24sSOWY+FvZzlQMzjrdiJk2AMzooJJjg2CzBgTIwHJgNu\\nGnqkB3W3hpZUqnm+0/n9cfseVZWqSiWpNDXnw/JyS7p1zrlV0tl3n733d3OEEAIGg8FgMBgMBoPB\\nWIbwi70ABoPBYDAYDAaDwZgtzKFhMBgMBoPBYDAYyxbm0DAYDAaDwWAwGIxlC3NoGAwGg8FgMBgM\\nxrKFOTQMBoPBYDAYDAZj2cIcGgaDwWAwGAwGg7FsYQ4NY9mxatUq/OpXv2rq2p/97Gfo7e2Fx+PB\\njh075nll8wPHcTh48OCCzbdp0ya8/PLLTV07k8+CwWAwljof5P3v0UcfxYc//OF5Gfvll1/GihUr\\nmrqWEIJbb70VwWAQZ5999rysh3HywRwaxknNV77yFXzve99DNpvFGWecMWcDdNFFF+EHP/hBxfcW\\n2uGYbj1zZffu3bjooovmPM5MDBiDwWAsBZbK/nfkyBFwHAdd1+n35tPhmM165ovf//73ePHFFzE0\\nNIQ//OEPzJYwmoI5NIyTmqNHj2LTpk2LvYxlwUIYKgaDwViKsP1v6XD06FGsWrUKbrd7sZfCWEYw\\nh4axrDFNE3//93+PNWvWIBQK4frrr0c8HkepVILH44FhGDj99NOxZs0a3HzzzTh27BiuvPJKeDwe\\n3H///VPGSyQSuOKKKxAOhxEMBnHFFVdgaGgIAHD33Xfjd7/7He688054PB7ceeeduOCCCwAAp59+\\nOjweD37yk58AAJ555hls3boVgUAAH/rQh/Duu+/SOVatWoXvfOc72LJlC/x+P2644QYUi0X683/4\\nh39AV1cXuru78cMf/rDuvddaDwC8+uqr2L59O/x+P7Zv345XX3217hirVq3Cfffdhy1btsDtdkPX\\n9YooVqFQwC233IJgMIiNGzfi/vvvn3JS9s4770y5l1wuh8suuwwjIyPweDzweDwYGRlp+FkyGAzG\\nQrLY+9+zzz6LM844Az6fD729vbj33nvpz2zbEggE4PF48Nprr+H222/Ha6+9Bo/Hg0AgAAAolUr4\\nyle+gpUrV6KjowO33347CoUCgMko0QMPPIBIJIKuri488sgjdI5YLIarrroKPp8PZ599Ng4dOlT3\\nvaq1HtM08a1vfQt9fX2IRCL41Kc+hVQq1dR7PzIygmuvvRbhcBj9/f34x3/8RwDAww8/jM9+9rP0\\nPv/6r/+a2RJGcxAGY5nR19dHXnzxRUIIIQ8++CA555xzyODgICkWi+Rzn/scufHGG+m1AMiBAwdq\\nvrYWExMT5MknnyS5XI6k02ly3XXXkauvvpr+/MILLyQPPfRQxWuq53j77bdJOBwmr7/+OtF1nTz6\\n6KOkr6+PFItFuobt27eT4eFhEovFyIYNG8j3v/99Qgghzz33HIlEIuS9994j2WyW3HTTTVPGL6d6\\nPbFYjAQCAfLv//7vRNM08thjj5FAIEAmJibqvpenn346OXbsGMnn81Peo69+9avkggsuIPF4nAwO\\nDpLNmzeTnp6eitfXu5df//rXFdcyGAzGUmKx979f//rX5N133yWGYZCdO3eSSCRCfvaznxFCCBkY\\nGCAAiKZp9PpHHnmEnH/++RVjfPGLXyRXXnklicViJJ1OkyuuuIJ87Wtfo+MLgkD+z//5P0RVVfLs\\ns88Sp9NJ4vE4IYSQG264gXz84x8n2WyWvPfee6S7u3vK+Da11vPwww+TNWvWkEOHDpFMJkOuueYa\\n8slPfrLuvdrvh2EY5MwzzyTf+MY3SKlUIocOHSL9/f3k+eefr3mfzJYwmoFFaBjLmn/913/F3/3d\\n32HFihVQFAX33nsvnnzyyVmnD4RCIVx77bVwuVzwer24++678Zvf/GZGYzz00EP4/Oc/j3POOQeC\\nIOCWW26Boih4/fXX6TV33XUXuru70dbWhiuvvBLvvPMOAOCJJ57ArbfeitNOOw1ut7vixK4Znn32\\nWaxbtw4333wzRFHETTfdhA0bNuDpp5+u+5q77roLvb29cDqdU372xBNP4Otf/zqCwSBWrFiBu+66\\nq+bra90Lg8FgLHUWc/+76KKLsHnzZvA8jy1btuCmm26akb0hhOChhx7Cgw8+iLa2Nni9Xnz961/H\\n448/Tq+RJAn33HMPJEnC5ZdfDo/Hg/3798MwDPz0pz/FN7/5Tbjdbpx22mm45ZZbmp4bAH784x/j\\n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\\nrkJggg==\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1120x480 with 2 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        },\n        {\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1120x480 with 2 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        },\n        {\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1120x480 with 2 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"# negative pair\\n\",\n        \"plt.close('all')\\n\",\n        \"for i in range(len(a)):\\n\",\n        \"  _ = plot_graph_matching_pair(nx_graphs[2], nx_graphs[3], a[i][1])\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"0MEhPuw9Y1tP\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [\n        \"HrOZEU_OrYTR\"\n      ],\n      \"last_runtime\": {\n        \"build_target\": \"//learning/deepmind/dm_python:dm_notebook3\",\n        \"kind\": \"private\"\n      },\n      \"name\": \"graph_matching_networks.ipynb\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1Ys7zuxnbz-5AbNTMmC5Rf4rEOXXvsVEV\",\n          \"timestamp\": 1563976318651\n        }\n      ],\n      \"toc_visible\": true,\n      \"version\": \"0.3.2\"\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "graph_matching_networks/requirements.txt",
    "content": "matplotlib==3.1.1\nnetworkx==2.3\ndm-sonnet==1.34\nnumpy==1.16.4\ntensorflow==1.14\nsix==1.12\n"
  },
  {
    "path": "hierarchical_probabilistic_unet/HPU_Net.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"colab_type\": \"text\",\n    \"id\": \"auxiImC5FRng\"\n   },\n   \"source\": [\n    \"# Hierarchical Probabilistic U-Net\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"colab_type\": \"text\",\n    \"id\": \"9l84MVIwFQ25\"\n   },\n   \"source\": [\n    \"Copyright 2019 DeepMind Technologies Limited\\n\",\n    \"\\n\",\n    \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n    \"you may not use this file except in compliance with the License.\\n\",\n    \"You may obtain a copy of the License at\\n\",\n    \"\\n\",\n    \"     https://www.apache.org/licenses/LICENSE-2.0\\n\",\n    \"\\n\",\n    \"Unless required by applicable law or agreed to in writing, software\\n\",\n    \"distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n    \"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n    \"See the License for the specific language governing permissions and\\n\",\n    \"limitations under the License.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"colab_type\": \"text\",\n    \"id\": \"ntSZbVLBTzIC\"\n   },\n   \"source\": [\n    \"#Colab: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind-research/blob/master/hierarchical_probabilistic_unet/HPU_Net.ipynb)\\n\",\n    \"If you haven't already opened this notebook in colab, you can click the button above to open it there.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 0,\n   \"metadata\": {\n    \"colab\": {},\n    \"colab_type\": \"code\",\n    \"id\": \"BZ37gJ-m8cLJ\"\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"!pip install tensorflow==1.14.0\\n\",\n    \"!pip install tensorflow-probability==0.7.0\\n\",\n    \"!pip install dm-sonnet==1.35\\n\",\n    \"\\n\",\n    \"from glob import glob\\n\",\n    \"import matplotlib\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"import matplotlib.gridspec as gridspec\\n\",\n    \"import numpy as np\\n\",\n    \"import os\\n\",\n    \"import tensorflow as tf\\n\",\n    \"import sonnet as snt\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"colab_type\": \"text\",\n    \"id\": \"fmnE1HsERYzQ\"\n   },\n   \"source\": [\n    \"# Clone github repo\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 0,\n   \"metadata\": {\n    \"colab\": {},\n    \"colab_type\": \"code\",\n    \"id\": \"0QkKLmQTRY8A\"\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"!git clone https://github.com/deepmind/deepmind-research.git deepmind_research\\n\",\n    \"%cd deepmind_research/hierarchical_probabilistic_unet\\n\",\n    \"from model import HierarchicalProbUNet\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"colab_type\": \"text\",\n    \"id\": \"1i5Lbz9ClJjr\"\n   },\n   \"source\": [\n    \"# Load LIDC test data from Google Cloud Storage\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 0,\n   \"metadata\": {\n    \"colab\": {},\n    \"colab_type\": \"code\",\n    \"id\": \"SY_lyR2BHRu9\"\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"!gsutil cp gs://hpunet-data/lidc_crops/test.tar.gz /tmp/\\n\",\n    \"!tar xvfz /tmp/test.tar.gz -C /tmp/\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"colab_type\": \"text\",\n    \"id\": \"3vudq22sH3Hk\"\n   },\n   \"source\": [\n    \"# Load pretrained weights from Google Cloud Storage\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 0,\n   \"metadata\": {\n    \"colab\": {},\n    \"colab_type\": \"code\",\n    \"id\": \"KbIWpjl4IDCO\"\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"!gsutil cp gs://hpunet-data/model_checkpoint/checkpoint.tar.gz /tmp/\\n\",\n    \"!tar xvfz /tmp/checkpoint.tar.gz -C /tmp/\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 0,\n   \"metadata\": {\n    \"cellView\": \"form\",\n    \"colab\": {},\n    \"colab_type\": \"code\",\n    \"id\": \"fh4tb7_vxrKs\"\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"#@title Utility to function to batch-up the data.\\n\",\n    \"\\n\",\n    \"test_img_dir = '/tmp/test'\\n\",\n    \"\\n\",\n    \"def make_batch(patient_ixs):\\n\",\n    \"  \\\"\\\"\\\"Assembles a batch of the first image for each specified patient.\\n\",\n    \"  Args:\\n\",\n    \"    patient_ixs: A list of integers specifying the patients to choose.\\n\",\n    \"  Returns:\\n\",\n    \"    A tuple holding the batched image of shape (b, 128, 128, 1) and the batched\\n\",\n    \"    segmentations of shape (b, 128, 128, 4).\\n\",\n    \"  \\\"\\\"\\\"\\n\",\n    \"  img, seg = [], []\\n\",\n    \"  patient_dirs = glob(os.path.join(test_img_dir, 'images', '*'))\\n\",\n    \"  for i in patient_ixs:\\n\",\n    \"    # get the first image for the patient\\n\",\n    \"    img_path = glob(os.path.join(patient_dirs[i], '*'))[0]\\n\",\n    \"    image = matplotlib.image.imread(img_path)\\n\",\n    \"    image = image[np.newaxis, ..., np.newaxis]\\n\",\n    \"    img.append(image)\\n\",\n    \"    # get the corresponding ground truth labels\\n\",\n    \"    gt_base_path = img_path.replace('images', 'gt')\\n\",\n    \"    labels = []\\n\",\n    \"    for l in range(4):\\n\",\n    \"      gt_path = gt_base_path.replace('.png', '_l{}.png'.format(l))\\n\",\n    \"      label = matplotlib.image.imread(gt_path)\\n\",\n    \"      labels.append(label[np.newaxis, ..., np.newaxis])\\n\",\n    \"    labels = np.concatenate(labels, axis=-1)\\n\",\n    \"    seg.append(labels)\\n\",\n    \"  img_batch = np.concatenate(img, axis=0)\\n\",\n    \"  seg_batch = np.concatenate(seg, axis=0)\\n\",\n    \"\\n\",\n    \"  # The images and segmentations have a spatial shape of 180 x 180. Crop to\\n\",\n    \"  # spatial shape 128 x 128.\\n\",\n    \"  return img_batch[:, 26:-26, 26:-26], seg_batch[:, 26:-26, 26:-26]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"colab_type\": \"text\",\n    \"id\": \"nYp0LoeRu9Kb\"\n   },\n   \"source\": [\n    \"# Run a pre-trained model on the LIDC Test Set.\\n\",\n    \"First construct a graph for the model. Here we set-up different sampling configurations to examine the sampling behavior when different latent scales are fixed to their means.\\n\",\n    \"\\n\",\n    \"---\\n\",\n    \"\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 0,\n   \"metadata\": {\n    \"colab\": {},\n    \"colab_type\": \"code\",\n    \"id\": \"ucwHxM8yl1Ut\"\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"tf.reset_default_graph()\\n\",\n    \"hpu_net = HierarchicalProbUNet(name='model/HPUNet')\\n\",\n    \"\\n\",\n    \"_GRADER_TO_RECONSTRUCT = 3\\n\",\n    \"_NUM_SAMPLES = 16\\n\",\n    \"_INSTANCE_INDICES = range(10)\\n\",\n    \"_NUM_CLASSES = 2\\n\",\n    \"\\n\",\n    \"img, seg = make_batch(patient_ixs=_INSTANCE_INDICES)\\n\",\n    \"img_placeholder = tf.placeholder(shape=img.shape, dtype=tf.float32, name='img')\\n\",\n    \"seg_placeholder = tf.placeholder(shape=seg.shape, dtype=tf.float32, name='seg')\\n\",\n    \"seg_one_hot = tf.one_hot(tf.cast(seg[..., _GRADER_TO_RECONSTRUCT], tf.uint8),\\n\",\n    \"                         depth=_NUM_CLASSES)\\n\",\n    \"reconstruction = hpu_net.reconstruct(seg_one_hot, img_placeholder)\\n\",\n    \"sample_full = hpu_net.sample(img_placeholder)\\n\",\n    \"sample_local = hpu_net.sample(img_placeholder, mean=[1, 1, 1, 0])\\n\",\n    \"sample_global = hpu_net.sample(img_placeholder, mean=[0, 1, 1, 1])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"colab_type\": \"text\",\n    \"id\": \"U4aZDVeDtcmX\"\n   },\n   \"source\": [\n    \"Restore the model from a checkpoint, run a reconstruction and the different sampling configurations.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 0,\n   \"metadata\": {\n    \"colab\": {},\n    \"colab_type\": \"code\",\n    \"id\": \"MrwcFOS5nw9S\"\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"saver = tf.train.Saver()\\n\",\n    \"with tf.train.MonitoredTrainingSession() as sess:\\n\",\n    \"  # restore checkpoint\\n\",\n    \"  saver.restore(sess, '/tmp/checkpoint/tf_graph_data.ckpt')\\n\",\n    \"\\n\",\n    \"  # sample from the full hierarchy\\n\",\n    \"  rec, s = sess.run([reconstruction, sample_full],\\n\",\n    \"                    feed_dict={img_placeholder: img, seg_placeholder: seg})\\n\",\n    \"\\n\",\n    \"  samples = [s[..., np.newaxis]]\\n\",\n    \"  if _NUM_SAMPLES > 1:\\n\",\n    \"    for _ in range(_NUM_SAMPLES - 1):\\n\",\n    \"      s = sess.run(sample_full, feed_dict={img_placeholder: img})\\n\",\n    \"      samples.append(s[..., np.newaxis])\\n\",\n    \"  samples = np.concatenate(samples, axis=-1)\\n\",\n    \"\\n\",\n    \"  # sample from global latent only\\n\",\n    \"  samples_global = []\\n\",\n    \"  for _ in range(_NUM_SAMPLES):\\n\",\n    \"    s = sess.run(sample_global, feed_dict={img_placeholder: img})\\n\",\n    \"    samples_global.append(s[..., np.newaxis])\\n\",\n    \"  samples_global = np.concatenate(samples_global, axis=-1)\\n\",\n    \"\\n\",\n    \"  # sample from most local latents only\\n\",\n    \"  samples_local = []\\n\",\n    \"  for _ in range(_NUM_SAMPLES):\\n\",\n    \"    s = sess.run(sample_local, feed_dict={img_placeholder: img})\\n\",\n    \"    samples_local.append(s[..., np.newaxis])\\n\",\n    \"  samples_local = np.concatenate(samples_local, axis=-1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"colab_type\": \"text\",\n    \"id\": \"_q9Ks_YTu4gR\"\n   },\n   \"source\": [\n    \"# Plot Examples.\\n\",\n    \"Plot batches of images, the corresponding 4 segmentation masks, a posterior reconstruction of one of the masks as well as a number of samples.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 0,\n   \"metadata\": {\n    \"cellView\": \"form\",\n    \"colab\": {},\n    \"colab_type\": \"code\",\n    \"id\": \"pnwcHuzeunaI\"\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"#@title Utility functions for plotting.\\n\",\n    \"\\n\",\n    \"def to_rgb(arr, cmap={0: (0, 0, 0), 1: (255, 255, 255)}):\\n\",\n    \"    \\\"\\\"\\\"\\n\",\n    \"    Transform an integer-labeled segmentation map using an rgb color-map.\\n\",\n    \"    :param arr: img_arr w/o a color-channel\\n\",\n    \"    :param cmap: dictionary mapping from integer class labels to rgb values\\n\",\n    \"    :return:\\n\",\n    \"    \\\"\\\"\\\"\\n\",\n    \"    new_arr = np.zeros(shape=(arr.shape)+(3, ))\\n\",\n    \"    for c in cmap.keys():\\n\",\n    \"        ixs = np.where(arr == c)\\n\",\n    \"        new_arr[ixs] = [cmap[c][i] / 255. for i in range(3)]\\n\",\n    \"    return new_arr\\n\",\n    \"\\n\",\n    \"def make_plot(img, seg, rec, samples, fs=6):\\n\",\n    \"  \\\"\\\"\\\"\\n\",\n    \"  Make a grid plot of a batch of images, set of ground truth segmentations and\\n\",\n    \"  corresponding reconstructions and samples. Each example is displayed in a \\n\",\n    \"  column of the plot.\\n\",\n    \"  :img: Batch of images, array of shape (b, h, w, 1).\\n\",\n    \"  :seg: Batch of segmentations, array of shape  (b, h, w, num_graders).\\n\",\n    \"  :samples: Batch of samples, array of shape (b, h, w, num_classes,\\n\",\n    \"   num_samples).\\n\",\n    \"  :fs: Font size, integer.\\n\",\n    \"  \\\"\\\"\\\"\\n\",\n    \"  num_samples = samples.shape[-1]\\n\",\n    \"  num_graders = seg.shape[-1]\\n\",\n    \"  bs = img.shape[0]\\n\",\n    \"  num_rows = 1 + num_graders + 1 + num_samples\\n\",\n    \"\\n\",\n    \"  f = plt.figure(figsize=(bs * fs, num_rows * fs))\\n\",\n    \"  outer = gridspec.GridSpec(6, 1, wspace=0.1, hspace=0.1,\\n\",\n    \"                            height_ratios=[1, num_graders, 1, num_samples, 1, 1])\\n\",\n    \"\\n\",\n    \"  img_spec = gridspec.GridSpecFromSubplotSpec(\\n\",\n    \"      1, bs, subplot_spec=outer[0], wspace=0.0, hspace=0.0)\\n\",\n    \"  grader_spec = gridspec.GridSpecFromSubplotSpec(\\n\",\n    \"      num_graders, bs, subplot_spec=outer[1], wspace=0.0, hspace=0.0)\\n\",\n    \"  rec_spec = gridspec.GridSpecFromSubplotSpec(\\n\",\n    \"      1, bs, subplot_spec=outer[2], wspace=0.0, hspace=0.0)\\n\",\n    \"  sample_spec = gridspec.GridSpecFromSubplotSpec(\\n\",\n    \"      num_samples, bs, subplot_spec=outer[3], wspace=0.0, hspace=0.0)\\n\",\n    \"  grader_std_spec = gridspec.GridSpecFromSubplotSpec(\\n\",\n    \"      1, bs, subplot_spec=outer[4], wspace=0.0, hspace=0.0)\\n\",\n    \"  sample_std_spec = gridspec.GridSpecFromSubplotSpec(\\n\",\n    \"      1, bs, subplot_spec=outer[5], wspace=0.0, hspace=0.0)\\n\",\n    \"  for j in range(bs):\\n\",\n    \"      # image\\n\",\n    \"      ax = plt.subplot(img_spec[0, j])\\n\",\n    \"      ax.get_xaxis().set_visible(False)\\n\",\n    \"      ax.get_yaxis().set_visible(False)\\n\",\n    \"      plt.imshow(np.concatenate([img[j] for _ in range(3)], axis=-1))\\n\",\n    \"      if j == 0:\\n\",\n    \"        ax.annotate('CT scan', (-0.2, 0.5), xycoords='axes fraction',\\n\",\n    \"                    va='center', rotation=90)\\n\",\n    \"      # ground-truth\\n\",\n    \"      for i in range(num_graders):\\n\",\n    \"        ax = plt.subplot(grader_spec[i, j])\\n\",\n    \"        ax.get_xaxis().set_visible(False)\\n\",\n    \"        ax.get_yaxis().set_visible(False)\\n\",\n    \"        plt.imshow(to_rgb(seg[j, ..., i]))\\n\",\n    \"        if j == 0 and i == 1:\\n\",\n    \"          ax.annotate('Graders', (-0.2, 0.0), xycoords='axes fraction',\\n\",\n    \"                      va='center', rotation=90)\\n\",\n    \"      # reconstruction\\n\",\n    \"      ax = plt.subplot(rec_spec[0, j])\\n\",\n    \"      ax.get_xaxis().set_visible(False)\\n\",\n    \"      ax.get_yaxis().set_visible(False)\\n\",\n    \"      plt.imshow(to_rgb(np.argmax(rec[j], axis=-1)))\\n\",\n    \"      if j == 0:\\n\",\n    \"        ax.annotate('Reconstruction', (-0.2, 0.5), xycoords='axes fraction',\\n\",\n    \"                    va='center', rotation=90)\\n\",\n    \"      # samples\\n\",\n    \"      if num_samples % 2 != 0:\\n\",\n    \"        xy = (-0.2, 0.5)\\n\",\n    \"      else:\\n\",\n    \"        xy = (-0.2, 1.0)\\n\",\n    \"      for i in range(num_samples):\\n\",\n    \"        ax = plt.subplot(sample_spec[i, j])\\n\",\n    \"        ax.get_xaxis().set_visible(False)\\n\",\n    \"        ax.get_yaxis().set_visible(False)\\n\",\n    \"        plt.imshow(to_rgb(np.argmax(samples[j, ..., i], axis=-1)))\\n\",\n    \"        if j == 0 and i == num_samples // 2:\\n\",\n    \"          ax.annotate('Samples', xy, xycoords='axes fraction',\\n\",\n    \"                       va='center', rotation=90)\\n\",\n    \"\\n\",\n    \"      # grader standard deviation\\n\",\n    \"      ax = plt.subplot(grader_std_spec[0, j])\\n\",\n    \"      ax.get_xaxis().set_visible(False)\\n\",\n    \"      ax.get_yaxis().set_visible(False)\\n\",\n    \"      std = np.std(seg[j], axis=-1)\\n\",\n    \"      plt.imshow(std, cmap=plt.get_cmap('jet'))\\n\",\n    \"      if j == 0:\\n\",\n    \"        ax.annotate('Grader', (-0.4, 0.5), xycoords='axes fraction',\\n\",\n    \"                    va='center', rotation=90)\\n\",\n    \"        ax.annotate('Std. Dev.', (-0.2, 0.5), xycoords='axes fraction',\\n\",\n    \"                    va='center', rotation=90)\\n\",\n    \"\\n\",\n    \"      # sample standard deviation\\n\",\n    \"      ax = plt.subplot(sample_std_spec[0, j])\\n\",\n    \"      ax.get_xaxis().set_visible(False)\\n\",\n    \"      ax.get_yaxis().set_visible(False)\\n\",\n    \"      samples_argmax = np.argmax(samples[j], axis=-2)\\n\",\n    \"      std = np.std(samples_argmax, axis=-1)\\n\",\n    \"      plt.imshow(std, cmap=plt.get_cmap('jet'))\\n\",\n    \"      if j == 0:\\n\",\n    \"        ax.annotate('Samples', (-0.4, 0.5), xycoords='axes fraction',\\n\",\n    \"                    va='center', rotation=90)\\n\",\n    \"        ax.annotate('Std. Dev.', (-0.2, 0.5), xycoords='axes fraction',\\n\",\n    \"                    va='center', rotation=90)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"colab_type\": \"text\",\n    \"id\": \"GK3e3emEdURX\"\n   },\n   \"source\": [\n    \"# Plot samples from the full hierarchy.\\n\",\n    \"When sampling from the full hierarchy of the prior, none of the latent scales is constrained to their respective mean(s).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 0,\n   \"metadata\": {\n    \"colab\": {\n     \"height\": 1000\n    },\n    \"colab_type\": \"code\",\n    \"executionInfo\": {\n     \"elapsed\": 29434,\n     \"status\": \"ok\",\n     \"timestamp\": 1568193363976,\n     \"user\": {\n      \"displayName\": \"Simon Kohl\",\n      \"photoUrl\": \"https://lh3.googleusercontent.com/a-/AAuE7mAV5aCJQ_5RldkCyse6s0nQKEvpBRdNbA80iGeZEw=s64\",\n      \"userId\": \"12229574298416150258\"\n     },\n     \"user_tz\": -60\n    },\n    \"id\": \"Zjb865P3yJwT\",\n    \"outputId\": \"b51443c1-e6c1-46ec-a7f5-16fb5f16424e\"\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAABH8AAAmlCAYAAABQWRQLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvbuPdNlV/r+qurvu3f1eZ2yPhzG2BbYwCXLiCCGQEATA\\nX4AQETIhMiBBAMhIyBYIyREBRCREJAgiAwI5skQK6ZjB45n31pfquvSl6hfM7zn9qafXPlX99un5\\naqxaUqurTp2zL2uvy7PWvpzWcrlcxpa2tKUtbWlLW9rSlra0pS1taUtb2tKWfiyp/f+6AVva0pa2\\ntKUtbWlLW9rSlra0pS1taUtbuj/aJn+2tKUtbWlLW9rSlra0pS1taUtb2tKWfoxpm/zZ0pa2tKUt\\nbWlLW9rSlra0pS1taUtb+jGmbfJnS1va0pa2tKUtbWlLW9rSlra0pS1t6ceYtsmfLW1pS1va0pa2\\ntKUtbWlLW9rSlra0pR9j2iZ/trSlLW1pS1va0pa2tKUtbWlLW9rSln6MaZv82dKWtrSlLW1pS1va\\n0pa2tKUtbWlLW/oxpt3/1w14Xfr2t78dR0dHERGxXC5juVzeuGexWFTXS/foeqvVqv50nf9F+j0j\\n3uv36Tcvn/dl7Svdq+u6pra32+2Vfl1dXcX5+XnMZrM4OzuL+Xxe8YX3ez3607UnT57E3/zN3xT7\\nflv6+Z//+XjvvfdWrrF/7Xa7qrvdbke73V7pq/q3WCyqtvOz98nL5LWdnZ1otVqxWCzi8vJy7Tio\\nDc4jjsHu7m4sl8u4uLiIq6urYnvUp2xMFovFSvleP8eO5eu+nZ2d6p7PfOYz8W//9m9pv25Lf/d3\\nfxfT6TTa7XZcXV3F1dVVtFqt2N3djd3d3Wi1WnF5ebmif4vFovrONvqYlXgvGeA9qlPXr66uijrO\\ncnZ3d2M4HMaTJ0/i4cOHsbOzE/P5vBon8X1vb6+qp9vtxmAwiFarFWdnZzGZTFbq09i57Pm4Uv/P\\nz8+rz/ota3+r1Yperxe/+Iu/uGZkNqM/+7M/i5cvX8ZyuYzd3d3Y29uLTqcTvV4vut1u9bnT6USn\\n06nG1NvkvKV+kgf+u19fLpexs7NTfSYvaZtZjstLqX1eX8l+1/VDbcjsS8YL3ttqtWIwGMSv/Mqv\\npPXeln7t134t3n///Rvtpl5R5mij6tpNu9Xr9WKxWMRsNqtkVCRdq/OTsqnSefGCz/EZtS8bQ7/O\\n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\\nAACoMMkfAAAAgArbuuwANtc73/nOWLx4cdlh9Bljx46NBx54oGnlqb/Wamb9qbvWU3/tS921N/XX\\nvvRb2pttr72pv/al7trbpuqvbZM/ixcvjmeeeabsMNhM6q99qbv2pv7al7prb+qvvam/9qXu2pv6\\na1/qrvdx2xcAAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABA\\nhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8A\\nAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY\\n5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFTY1mUHAAD0fm9605vi85//fJefOfHEE1sUDQAA\\nb4TkDwBQaI899oj58+dHRES/fv1ixIgRXX7+f/7P/xkREW9/+9tj4cKFPR4fAADd47YvAKDQAQcc\\nECNHjoyRI0duMvETEfXP/v73v49arRZXXXVVDB06tAWRAgDQFVf+AAAbOe+88+Jzn/vcFpXxkY98\\nJIYPHx4vvfRS4ftHH330FpUPAED3SP4AUClr1qyJiIgBAwaUHEn7+vznPx//+q//2pSyDj744Ibv\\nZbeJRUR0dnbGW9/61qZMEwCADbntC4DKOPTQQ6N///7Rv3//OOyww8oOpy19+tOfjnPOOSc6Ojp6\\nfFpZXfXv3z/22muvqNVqUavV4plnnok99tijx6cP7erwww+v/2TbTXd+jjvuuLJDB6AkrvwBoBJm\\nzJgRF110Uf3/f//3f3f1zxv0zW9+M0455ZSyw4hddtklrr/++nj00UcjIuKaa66J6667ruSooHf4\\n7Gc/G+eff/5mffeyyy6LnXfeOWbOnNnkqADo7SR/AGhr/fv3j4MOOihmz569wevZ7V90zxe+8IVe\\nkfjJTJo0KSZNmhQRr1/lEBHxu9/9Lvbcc88yw4JSTZs2bbMTP5nPf/7zsXTp0rj44oubFBUA7UDy\\nB4C2tmTJkth22203en3YsGElRENPGjlyZEydOjV++9vflh0KtLXZs2fHunXr4pJLLik7FABaxJg/\\nALStGTNmSPI0wa677hof/vCHyw5jk8aOHRuHHHJI2WFAac4444ymlTV37tw499xzm1YeAL2b5A8A\\n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\\n197UX/vSb2lvtr32pv7al7prb5uqv45arVZrUSx1b3/72+P++++P/v37119bu3Zt7LfffvEf//Ef\\nrQ4HAAAAoLJKGfB5yJAh8dvf/jb++q//uv7aI488EoMHD+52Ge985ztj8eLFPREeBcaOHRsPPPBA\\n08pTf63VzPpTd62n/tqXumtv6q996be0N9tee1N/7UvdtbdN1V8pyZ+TTz45/vmf/zn+7u/+Lnbc\\nccf44x//GHfffXfMnDmz22UsXrw4nnnmmR6Mkp6k/tqXumtv6q99qbv2pv7am/prX+quvam/9qXu\\nep9Skj+HHHJITJkyJW699dZYunRpvPnNb44TTjghxo8fX0Y4AAAAAJVVSvInImL8+PGSPQAAAAA9\\nrLTkz5133hm/+MUvYtmyZZGOOX3++eeXFRIAAABA5fQrY6IXX3xxnH322bF+/fr4+c9/HiNHjowH\\nHnggRowYUUY4AAAAAJVVSvLnhhtuiMsvvzzOOOOM6N+/f5xxxhlx6aWXGg0cAAAAoMlKSf68/PLL\\nsfvuu0dERP/+/WPt2rUxderU+MUvflFGOAAAAACVVcqYP7vssks8/vjjMWHChJgwYUJcffXVMWLE\\niNhmm23KCAcAAACgskpJ/nzqU5+KF198MSIiPvOZz8Rpp50WK1eujLPPPruMcAAAAAAqq+XJn/Xr\\n18eAAQPiLW95S0RETJ06NW6//fZWhwEAAADQJ7R8zJ9+/frFiSeeGAMGDGj1pAEAAAD6nFIGfP6b\\nv/mb+PWvf13GpAEAAAD6lFLG/Nlpp53iuOOOi3e/+92x4447RkdHR/29U045pYyQAAAAACqplOTP\\n6tWr4z3veU9ERCxZsqSMEAAAAAD6hJYnf9auXRtf/vKXIyLil7/8ZdRqtfp7e+21V6vDAQAAAKi0\\nliZ/fvjDH8bDDz8cX/va1yIiYvr06bHttttGrVaLVatWxWc+85mYNm1aK0MCAAAAqLSWDvg8b968\\nmD59ev3/AQMGxD333BP33ntvXHHFFXH99de3MhwAAACAymtp8mfx4sUxceLE+v/jxo2r/z1x4sT4\\nz//8z1aGAwAAAFB5LU3+rFy5MlauXFn//9///d/rf7/66qvx6quvtjIcAAAAgMprafJnwoQJ8eCD\\nDxa+d//998f48eNbGQ4AAABA5bU0+XP00UfHrFmz4o477oj169dHRMT69evj9ttvj3PPPTeOPvro\\nVoYDAAAAUHktfdrX+9///liyZEl89rOfjbVr18bIkSPjxRdfjP79+8dJJ50UH/jAB1oZDgAAAEDl\\ntTT5ExHxsY99LI488sh4+OGHY9myZTFy5Mh461vfGsOHD291KAAAAACV1/LkT0TEsGHDYr/99itj\\n0gAAAAB9SkvH/AEAAACgtSR/AAAAACpM8gcAAACgwkoZ8wcA6P3mzp3b5fvnnHNO/PGPf2xRNAAA\\nbC7JHwBgIw899FC8/e1v7/IzH/7wh2P9+vWbLGvBggWx7777Nis0AADeIMkfAKBu2LBhcemll24y\\n8RMRMWLEiG6Vuc8++0StVotPfOITcdlll21piAAAvEHG/AEA6nbdddf48Ic/3CNlf+tb34orr7wy\\nDjnkkB4pHwCAYpI/AEDL/K//9b/i+uuvjzVr1sSaNWvirLPOKjskAIDKk/wBAFpqq622iv79+0f/\\n/v3j3HPPjVqtFu9973vLDgvaxuGHH17/qdVq3f457rjjyg4dgJIY8wcAKN11110Xd9xxR8P3P/Wp\\nT8XixYtbGBH0Tp/97Gfj/PPP36zvXnbZZbHzzjvHzJkzmxwVAL2d5A8AULptttkmDj/88IbvH374\\n4fG73/0u9txzzxZGBb3LtGnTNjvxk/n85z8fS5cujYsvvrhJUQHQDtz2BQAAfcjs2bPjhBNOKDsM\\nAFpI8gcAANrAGWec0bSy5s6dG+eee27TygOgd5P8AQCANrDXXns1tbyzzjrLFUAAfYTkDwAAtIHb\\nbrut6WXOnTs3ZsyY0fRyAehdJH8AAKANfOc73+mRcmfPnh333ntvHHDAAT1SPpt27LHHxr333lv/\\n2XXXXcsOCagYyR/oplqtFhdccEFstdVWZYcCfd6OO+4YtVpto5/+/fuXHRo9aMqUKXHBBRfE1lt7\\nWCl903XXXRc33XRTj5S9//77xw477NAjZdO1yZMnx+WXXx77779//efpp5+ORx99NIYPH152eEBF\\nSP7AG3DaaafFbrvtVnYY0Geddtppcdppp8Xvf//7skOhJKeddlqcd955cfTRR5cdCpRi3rx5ZYdA\\ni0ycODGuu+662G677coOBagAp86gmw4//PC44YYb4sYbb4w999yz7HCgz7nhhhvisMMOKzsMeoHP\\nfvaz8eqrr8aAAQPi29/+dtnhQEtdeeWV8dhjj8X8+fPLDoUmueaaaxq+d9BBB8V9990XU6ZMaWFE\\nQBW58ge66cYbb4yTTz45dt9993jkkUdi2223LTsk6BMmTJgQs2fPlvhhA4MHD47LLrssarVa2aFU\\nytZbbx0TJkyIzs7OqNVqcdFFF8WECRNiwoQJ9nu9yK9+9auyQ6CJJk+evEXvA3SH5A+8AbNnz46n\\nn346pkyZEh/72MfKDgcq7+Mf/3g89thjnkQDLfLVr341HnvssZg0aVJERJx88snx2GOPxWOPPRZX\\nX3218UegJMcff3zZIQBtTvIHgF5p+vTpcdFFF5UdBvQpp556asP3DjroIFecQEm++c1vxoknnlh2\\nGEAbk/wB+oz8k6FmzpxZdkh9XkdHR8ycObPwyV3f+c53YtCgQWWH2Od0dnbG8ccfH6tWrSo7FEqw\\n4447xsMPPxwPP/xw4fvjx4/vsceNA40NHDgw5syZE3vssUfZoQBtSvIHNsPixYvjvvvuKzsMaHsX\\nXHBBzJo1q+wwyPnWt74VTz75ZNlhUIIlS5bE2972tnjb294WF1xwQf31008/vf7zz//8zyVGCH3L\\nbbfdFqeffnr9/9NOO63EaIB25mlfsBn+x//4H7FkyZKyw4C219UtJpTr3e9+d/z3f/932WFQos99\\n7nP1Wy8XL15ccjT0tFtuuSVuueWWssPok97znvfEHXfcERERCxcujPe85z1x5513Rq1Wi2nTpsXL\\nL78cv/rVr+KOO+6I6dOnS8ACm0XyB96gv/qrvyo7BDZTR0dH2SGQmDhxYtkh0IU//vGPsdtuu8U9\\n99wTu+yyS9nhFHrmmWfiwAMPLDuMynrttdckffqIBx98MN7//veXHUaf9eSTT8YDDzwQERH77bdf\\nRGzc37zzzjv1Y4At4rYvAEpx3nnnlR0Cm/DUU0/F9773vbLDaOjyyy+Pp59+uuwwoK19//vfj/33\\n37/sMPq0p556Kvbbb7964gegJ7jyBwBo6Ktf/WocddRRve6qx+233z5effXVssOAtnfnnXfG+vXr\\nyw4DgB4m+QMANPTqq6/GxIkT49Zbb62/9r73va+UWFasWBHz58+P4447Ll544YVSYoDeYPXq1Zu8\\nBeiBBx6Ifffdt/C9BQsWxN577x0rVqzoifAA6IXc9gVAKS6++OI49thj47vf/W7ZodANBx10UP3n\\nrLPOKiWGj370o3HQQQfFH/7wh1KmD+1k+vTpha8vXLgwDjvsMIkfgD5G8geAUtx1111xxRVXxCc+\\n8YkYNGhQDBo0KD71qU+VHRbdcN5558WXvvSlHp/OyDJKJwAAIABJREFUW9/61vq6MWjQoLj55pt7\\nfJpQdVOnTo2FCxeWHQYALea2LwBKtW7duli3bl1ERFx00UUxevTo2GOPPSIi4l3veleMHDmyzPAo\\nUKvV4pFHHombbropIl5/cltWZ83w8ssvx3HHHRe//vWvm1Ym9GU33XRTXHHFFfGjH/2o7FAAKInk\\nDwC9yplnnln/+73vfW/cdtttJUZDI9dcc01cc801ERExefLk+PnPfx5jx45tStnTpk1T77CFnn32\\n2TjyyCMjIuK6664rORoAyua2LwB6rdtvvz06Ojq6/bN27dqyQ+6TOjs7Y+edd44pU6Zs9lODarVa\\nzJw5Mzo6OiR+oAmWL18e1113ncQPABEh+QMANElnZ2dMmzYtfvCDH7zh7371q1+Nc889tweiAgDA\\nbV8AQNPceOONceONN8bVV1+90XuXXHJJ7LLLLvX/3//+99f/vuWWW1oSHwBAXyT5AwA0XVEyZ9dd\\nd42XXnopIiL+9m//1hOHAABaRPIHAGiZbbbZpuwQAAD6HGP+AAAAAFSY5A8AAABAhUn+AAAAAFSY\\n5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAA\\nAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+\\nAAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABA\\nhUn+AAAAAFSY5A8AAABAhUn+AAAAAFTY1mUHsLn23nvvGDt2bNlh9Bk77bRTU8tTf63VzPpTd62n\\n/tqXumtv6q996be0N9tee1N/7UvdtbdN1V9HrVartSgWAAAAAFqsba/8eec73xmLFy8uO4w+Y+zY\\nsfHAAw80rTz111rNrD9113rqr32pu/am/tqXfkt7s+21N/XXvtRde9tU/bVt8mfx4sXxzDPPlB0G\\nm0n9tS91197UX/tSd+1N/bU39de+1F17U3/tS931PgZ8BgAAAKgwyR8AAACACpP8AQAAAKgwyR8A\\nAACACpP8AQAAAKgwyR8AAACACpP8AQAAAKgwyR8AAACACpP8AQAAAKgwyR8AAACACpP8AQAAAKgw\\nyR8AAACACpP8AQAAAKgwyR8AAACACpP8AQAAAKgwyR8AAACACpP8AQAAAKgwyR8AAACACpP8AQAA\\nAKgwyR8AAACACpP8AQAAAKgwyR8AAACACpP8AQAAAKgwyR8AAACACpP8AQAAAKgwyR8AAACACpP8\\nAQAAAKgwyR8AAACACpP8AQAAAKgwyR8AAACACtu67AAAgPYyatSoOOGEE97Qd+6555647777eigi\\n6LsGDRoUp59++iY/d/vtt8dDDz3UgogA6I0kfwCATRo/fnzcdNNNERExcODAmDBhwhv6/pIlS2Kf\\nffaJJ598sifCgz7pW9/6Vuy3336xxx57bPKzJ5xwQrzlLW+JpUuXtiAyAHobyR8AoKFRo0bFDjvs\\nEAsWLNiicsaMGROTJk2S/IEm6OjoiM997nPx8Y9/vNvf2XHHHWPSpEmSPwB9lDF/AICGTjrppC1O\\n/GR+/OMfx/HHH9+UsqAvGzBgQHzpS196w9+7++674+ijj+6BiADo7SR/AICWufDCC+ORRx6JRx55\\npOxQoE+aM2dOfRu85JJLyg4HgBZx2xcA0NBzzz0Xq1evjoEDBzalvEGDBsWUKVMiIuKxxx6Lgw8+\\nOCIiVq9e7ZYw6KbujPHTyNChQ+vb4JQpU+Khhx6K73//+80KDYBeypU/AEBDc+bMiUWLFvVI2RMm\\nTIgFCxbEggULYv78+bH//vv3yHSgSo488sh4+OGHm1beIYccEv36OSQAqDotPQBQujFjxsS1114b\\nu+22W9mhQK921FFHNbW8Qw89NH772982tUwAeh/JHwCgVxgzZkwsWrRIAgi68J//+Z9NL3Py5Mlx\\n/fXXN71cAHoPyR8AoEtz585t6fTmzZvX0ulBOznllFM260lfm7LHHnts0VhCAPRukj8AQJfmzJkT\\nhx56aMum18ppQTs699xzm17mpEmTYtKkSU0vF6AdjB8/vv4kxBtvvLHscHqEp30BAJv0+OOPt2Q6\\nkyZNiieeeKIl06LY9ttvH6NHj97o9SVLlsQLL7xQQkTkrV69Oo499tj43ve+19Ryr7/++ujo6Ghq\\nmQDtYODAgRs8CXH27Nlx2mmnxZo1a0qOrHkkfwCAXuPEE0+MT37yk2WH0Scdc8wxscsuu8S+++4b\\n73vf+zZ6/9Zbb4358+fHOeecU0J0ANA6M2bMiIioVJ/EbV8AQK+RdbYy6WXY6U9VL8ku0/Tp02PW\\nrFmFiZ+IiIMOOihmzZoVjzzySBx55JEtjo68m2++OebPn9/UMk899dSmlgfQzvJ9knYn+QNUVmdn\\nZ9RqtYY/s2fPjgEDBpQdJpCTPe1rt912i8cffzymTJmy0c+hhx5qGy7JlClTYrvttis7jD7vxRdf\\njH333bepZf7hD39oankA7Wrp0qUxbty4ssNoKskfoM+aMWNGfP3rXy87DCBn/vz5MXPmzHjooYe6\\n/NyUKVNim222aVFUAEBfMWfOnHjyySfLDqOpJH+APq1ql3NCFYwZMyZmzZpVOOhw6u67747nnnuu\\nRVFB7/Otb32r7BAAKufxxx+PSy65pOwwms6Az0BlTZ48OZ544omGl2wuXbo03vGOd7Q4KmhPq1ev\\njueeey5GjRpVdigREbFq1SqJnybbb7/9Nvi/s7MzRo0aVa/zJUuWxPPPPx+//OUv49JLLy0jRHKa\\n+WSuiy66KG644YamlQfQTjo7Oyv/tEPJH6DS9tlnn7j22mvjgAMO2Oi9Kl7OCT3liSeeiLlz58bZ\\nZ59ddigR8Xo8VTwr15tMnjw5DjzwwDjwwAMjIuK2225r+gDDbJmPf/zjsWzZsjj99NO3qJwvfvGL\\n8fnPf75JUQHQG0n+AJW2dOnSOPLIIwuvVli6dGkJEUH7mjt3bnzkIx+p3ACINHbPPffEPffcU3YY\\ndOErX/nKFiV/zjzzzPjyl7/cxIgA6I0kf4DKW7p0qUQPNMHSpUtjwYIFvSL5s2jRorJDgF5h2bJl\\n8aEPfSjOOuusmDRp0hv67s9//vM477zzeigyAHoTAz4DAN32wQ9+sPTbrebOnRuHHHJIqTFAb3L1\\n1VfH5MmT48ILL3xD3/u3f/u3HooIgN5G8gcAeEM+/elPx5QpU0q5+mbOnDlx6qmntny60A5OP/30\\n+MY3vtGtz+6zzz7xgx/8oIcjAqC3kPwBAN6Q1atXR2dnZ4wfPz4WLFjQsqduzZs3L2bMmBGrV69u\\nyfSg3bz22mtx3nnnxaOPPtrwM6+88kocddRR8dBDD7UwMgDKZswfAGCzpU+EGj16dJxwwglbVN7c\\nuXMbJpO+8IUvbFHZ0Bd87GMfiz322KPh+5/85CfjmmuuaWFEAPQGkj8AwBbJngg1cODAmDNnzgbv\\nzZs3r1sDRE+ZMiUiXn+Euyt7oGe8+93vjrvuuqvsMAAogeQPANAU2e1gqfHjx2/0WkTEuHHjolar\\nxZNPPhn/+I//GE8++WSrwoRK+9rXvhZ77733Rlf/fO1rX5P4AejDJH8AgB41efLkjV476aSTolar\\nxdy5c0uICKrtiCOOKDsEAHoZyR8AoOXyt4cBANBzPO0LAAAAoMIkfwAAAAAqTPIHAAAAoMIkfwAA\\nAAAqTPIHAAAAoMIkfwAAAAAqTPLn/7F331FS1vf+wD9DaJbYkJKVouwSBFaNYrkqCgZbjoqgyDUa\\n9ZpEpay9xCsRgURNxK6AojEaawALlhg7UYTEhhFZlKbIoghYQCPuKs7vDy/7E+kwO8/Os6/XOXvO\\nzjPPfL/vw/cMDO95CgAAAECKKX8AAAAAUkz5AwAAAJBiyh8AAACAFFP+AAAAAKSY8gcAAAAgxZQ/\\nAAAAACmm/AEAAABIMeUPAAAAQIopfwAAAABSTPkDAAAAkGLKHwAAAIAUU/4AAAAApJjyBwAAACDF\\nlD8AAAAAKab8AQAAAEgx5Q8AAABAiil/AAAAAFJM+QMAAACQYsofAAAAgBRT/gAAAACkmPIHAAAA\\nIMWUPwAAAAAppvwBAAAASDHlDwAAAECKKX8AAAAAUqx+0gE2VMuWLZOOUKfk+s/b+uVXLv+8rV3+\\nWb/CZe0Km/UrXD63FDbvvcJm/QqXtStsa/szz2Sz2WyesgAAAACQZ077AgAAAEgx5Q8AAABAiil/\\nAAAAAFJM+QMAAACQYsofAAAAgBRT/gAAAACkmPIHAAAAIMWUPwAAAAAppvwBAAAASDHlDwAAAECK\\nKX8AAAAAUkz5AwAAAJBiyh8AAACAFFP+AAAAAKSY8gcAAAAgxZQ/AAAAACmm/AEAAABIMeUPAAAA\\nQIopfwAAAABSTPkDAAAAkGLKHwAAAIAUU/4AAAAApJjyBwAAACDFlD8AAAAAKab8AQAAAEgx5Q8A\\nAABAiil/AAAAAFJM+QMAAACQYsofAAAAgBRT/gAAAACkmPIHAAAAIMWUPwAAAAAppvwBAAAASDHl\\nDwAAAECKKX8AAAAAUkz5AwAAAJBiyh8AAACAFKufdIAN1aVLl6ioqEg6Rp3RsmXLmDBhQs7Gs375\\nlcv1s3b5Z/0Kl7UrbNavcPncUti89wqb9Stc1q6wrW39Crb8qaioiDlz5iQdgw1k/QqXtSts1q9w\\nWbvCZv0Km/UrXNausFm/wmXtah+nfQEAAACkmPIHAAAAIMWUPwAAAAApltg1fz777LN455134j//\\n+c8K2/fee++EEgEAAACkTyLlzwMPPBBDhw6NTTfdNBo3bly9PZPJxDPPPJNEJAAAAIBUSqT8ueaa\\na+K6666Lrl27JjE9AAAAQJ2RyDV/li1bFl26dEliagAAAIA6JZHy55RTTomRI0fGN998k8T0AAAA\\nAHVGIqd93X777bFo0aK49dZbY6uttlrhufHjxycRCQAAACCVEil/hg0blsS0AAAAAHVOIuXPnnvu\\nmcS0AAAAAHVOItf8+eqrr+L666+P7t27x0477RTdu3eP66+/PqqqqpKIAwAAAJBaiZ329cYbb8SQ\\nIUOiqKgo3n///RgxYkR8/vnncdFFFyURCQAAACCVEil//v73v8e4ceNi6623joiItm3bRseOHePI\\nI49U/gAAAADkUCKnfWWz2fXaDgAAAMCGSaT8OfTQQ6Nfv37xwgsvxKxZs+L555+PAQMGxM9+9rMk\\n4gAAAACkViKnfZ1//vkxcuTIGDp0aCxYsCCaNWsWhx12WPTv3z+JOAAAAACplUj507BhwzjzzDPj\\nzDPPTGJ6AAAAgDojb+XPyy+/HHvssUdEREyaNGm1++299975igQAAACQenkrf4YMGRKPPvpoREQM\\nHDhwlftkMpl45pln8hUJAAAAIPXyVv4sL34iIp599tl8TQsAAABQpyVyt69+/fqtcntZWVmekwAA\\nAACkWyLlz7/+9a9Vbn/ppZfynAQAAAAg3fJ6t6/rrrsuIiK++uqr6t+Xmzt3bhQVFeUzDgAAAEDq\\n5bX8mT9/fkREZLPZ6t+X+9GPfhSnn356PuMAAAAApF5ey5/LL788IiJ23XXX6NOnTz6nBgAAAKiT\\nErnmT8OGDeOtt95aYdtbb70VDz30UBJxAAAAAFIrkfLnuuuuix/96EcrbGvRosVK1wECAAAAYOMk\\nUv58/vnnsfnmm6+w7Yc//GEsWbIkiTgAAAAAqZVI+VNcXBxPPPHECtueeuqpKC4uTiIOAAAAQGrl\\n9YLPy5133nlx6qmnxuOPPx6tWrWK9957LyZNmhSjRo1KIg4AsB6aNm0a/fr1W6/XjB8/Pp5//vka\\nSgR1V+PGjeOCCy5Y4z4ffPBB3HLLLXlKBEBtlEj5s/vuu8ejjz4ajz76aHzwwQex8847x8CBA1e6\\nDhAAUDuUlJTEgw8+GBERjRo1inbt2q3X6z/88MPYZ599Yvbs2TURD+qkm2++Ofbbb7/o0KHDGvdb\\nunRpnHHGGdG9e/dYsGBBntIBUJskUv5ERBQVFcWpp56a1PQAwDpo2rRpTJo0aaNPzW7evHnMmjUr\\niouLFUCwkTKZTPzv//7vOn+W3mSTTaK0tDQ6duyo/AGooxIpf84///zIZDKrfO6KK67IcxoAYHUG\\nDBiQ02vyTZw4Mfr06eMUMNgIDRs2jEsvvXS9X/fcc8/FJZdcEo899li8+uqrNZAMgNoqkQs+t2nT\\nJlq3bl39s8kmm8Tzzz8fW265ZRJxAIA8ad68eYwePTratm2bdBSok4YMGRIPP/xwTJkyJUaOHJl0\\nHADyJJEjf8rKylba1rt37xg+fHgCaQCA1Rk8eHAcc8wx0bFjx5yNufwUsBkzZsSRRx4ZERGVlZVO\\nB4N1tLZr/KxNUVFRFBUVRWlpaUyaNCn+8pe/5CgZALVVIkf+rEqHDh3ipZdeSjoGAJAn7dq1i/Ly\\n8igvL4+JEyfG/vvvn3QkqPX69OkTkydPztl4PXv2jHr1as1/CQCoIYkc+TNp0qQVHn/55Zfx2GOP\\nRUlJSRJxAICELT8dzB3BYM2OPfbYnI7Xq1eveOONN6K0tDSn4wJQuyRS/gwcOHCFx5tuumnsuOOO\\ncdVVVyURBwBYg1mzZuX0tK/VWX462OpuCgFEzJ07N+djdurUKcaOHRu9e/fO+dgA1A55L3+y2Wzc\\nfvvtUVRUFPXrJ3aneQBgHfXo0SOy2WzSMYCIOPPMM+OMM87I+bgdOnSIDh06xLRp03I+NgDJy/sJ\\nvplMJnr06OHcYgAoIL169Uo6AvB/OnfunPMxO3bsmJcj/ABqo5KSkpgyZUpMmTIl6Sg1JpEGpkOH\\nDvHOO+8kMTUAsAFmzJiRl3lmzZqVl3lYvSZNmlQfBfLdn2222SbpaPyf1157LU4++eScjzt27Nic\\njwlQCBo1ahSlpaVRWloa2Ww2brjhhmjYsGHSsXIqkfOu9txzzzjllFOiV69e0aJFixXO7XeuMQDU\\nXY8//njSEeqs//mf/4nWrVvHvvvuGwcffPBKzz/xxBMxceLEGDp0aALp+L7XX389Zs2aFcXFxUlH\\nAUidsrKyiIg4/fTTE06SO4mUP6+99lpst912K93aPZPJKH8AoA4rKytb6YNW//79o1+/fitsmzFj\\nRhx11FH5jJZqxx57bNx4442x2WabrXafQw45JA455JA45phj4ne/+12MHj06jwn5vpoof84555yc\\njQVQ6Fb1maSQJVL+3HnnnUlMC9QxU6dOXe31C4488sg46KCD4txzz42qqqo8JwPWZPr06XHkkUdG\\nRER5efkq91l+WHbHjh1doDYH7rvvvhgwYEB06dJlrfuWlpY6BayWmDNnTk7He++993I6HkChWrBg\\nQey9995Jx8ipRK7507Nnz1Vu9w0ekC/jxo2LsrKyuOqqq5KOAnxPu3btory8fLXFz3Ljx4+PRYsW\\n5SkV1D6nnnpq0hEAUmn48OExe/bspGPkVCLlz6q+pchms1FRUZFAGiCtlh85sCbLz+cFCs9zzz0X\\nCxcuTDoGAJAiM2bMiJEjRyYdI+fyetrXBRdcEBERX331VfXvy82bNy9KSkryGQdIuZkzZ671eghu\\nawvrprKyMhYuXBhNmzZNOkpERHz55ZeKnxzbb7/9Vng8derUaNq0afWaf/jhh/HRRx/FK6+8Ejfd\\ndFMSEfmeJ554ImdjXXfddXH//ffnbDyAQjJ16tQVbkSVRnktf1q3br3K3yMidttttzj00EPzGQeo\\nA/bZZ58YPXp0dO3adaXnnDIC627mzJkxYsSIuOSSS5KOEhHf5knjt3K1SadOnaJbt27RrVu3iIh4\\n8sknY+LEicmGYgV33XXXKu/Mtr5+//vfx8UXX5yDRADUVnktf5afXrHLLrus9O0SQE1YsGBB9OnT\\nZ5VHKyxYsMCRAwBrMH78+Bg/fnzSMViNO++8M2bNmhUvvvjiBo8xcODAuPzyy3OYCoDaKJG7fTVo\\n0CDmzp0brVq1ioULF8aVV14Z9erVi3POOafWHE4OpMeCBQtiwYIFSceAgjd48ODYbbfd4ogjjkg6\\nSsyaNSvpCFArTJw4MY477rj47W9/u96nMv/973+Pyy67rIaSAVCbJHLB5yFDhsQPfvCDiIj4wx/+\\nEF9//XVkMhmHmwJALdejR4/ET7caMWLEau8cCnXRvffeG506dYohQ4bEU089tc6vu/vuu2swFQC1\\nSSJH/nz44YdRVFQUX3/9dUyYMCGeffbZaNCggVPBAKAAnH322RER0a9fv0Tmv/HGGxOZF2q7wYMH\\nx7bbbhvPP/98dOjQYY377rPPPjFp0qQ8JQMgaYkc+bP55pvHokWL4uWXX47i4uLYbLPNIiLi66+/\\nTiIOALAeKisro3///pHJZKK8vDxv184qLy+P/v37x7Rp0/IyHxSibDa7xuf/85//xLHHHqv4Aahj\\nEjny5xe/+EX07t07vvrqq7jooosiIuK1116Ltm3bJhEHANhA370jVLNmzTb6aKARI0astkwaPHjw\\nRo0NdcEvf/nLNR71c/rpp8df//rXPCYCoDZIpPw59dRT46CDDoof/OAH1bd8b968efz+979PIg4A\\nsBGW3xGqUaNGMXz48BWeGzduXBQXF691jNLS0oj49hbulZWVNZIT6rru3bvHs88+m3QMABKQSPkT\\nEbHDDjtERMQ333wTERFt2rRJKgoAkAOVlZUxderUFbaVlJSstG25tm3bxuzZs+OII46I2bNn5yMi\\npN6wYcNir732Wunon2HDhil+AOqwRMqfqVOnxtChQ+Ptt9+u/nYvm81GJpNxHj8ApEynTp1Wub1/\\n//4xYsSIPKeB9Ovdu3fSEQCoZRIpfy688MI44IAD4rLLLovGjRsnEQEASJjiBwAgPxIpf+bNmxdn\\nn312ZDKZJKYHAAAAqDMSudX7QQcdFBMmTEhiagAAAIA6JZEjfyorK6OsrCw6d+4c22677QrPXXHF\\nFUlEAgAAAEilRMqfkpKSKCkpSWJqAAAAgDolkfKnrKwsiWkBAAAA6pxEyp+IiH/+858xbty4WLBg\\nQTRr1ix69OgRe++9d1JxAAAAAFIpkQs+jxkzJs4+++xo2rRpHHTQQdGsWbM477zzYvTo0UnEAQAA\\nAEitRI78ufXWW+PPf/5z7LjjjtXbfvazn8UZZ5wRffr0SSISAAAAQColcuTPp59+GsXFxStsa9u2\\nbSxevDiJOAAAAACplUj5s9tuu8Uf/vCHWLp0aUREfPHFF3HFFVfErrvumkQcAAAAgNRK5LSvIUOG\\nxDnnnBO77757bLnllrF48eLYdddd46qrrkoiDgAAAEBqJVL+NGvWLO66666YP39+9d2+WrRokUQU\\nAAAAgFRLpPyZMGFCbLfddrHDDjtUlz6zZ8+ODz74IPbdd98kIgEAAACkUiLX/Bk6dGhsttlmK2zb\\nbLPNYujQoUnEAQAAAEitRMqfjz76KJo1a7bCtmbNmsXChQuTiAMAAACQWomUP61atYpJkyatsO1f\\n//pXtGzZMok4AAAAAKmVyDV/ysrK4vTTT4/evXtHq1atYu7cufHAAw/EZZddlkQcAAAAgNRK5Mif\\nAw88MG677bb44osv4h//+Ed88cUXceutt8aBBx6YRBwAAACA1ErkyJ+IiJ133jl23nnnpKYHAAAA\\n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\\nm81GNpvN2ZgA1C7KH6DOu/zyy2PevHnRrl27pKNArdK9e/ekI8S///3v2HvvvZOOAbVKZWVlHHzw\\nwe7KB8A6U/4AdVJxcXG88sor8corr8R5552XdByolWbNmhWjRo1KNEOLFi1i7NixscMOOySaA2qb\\nV155JQ466KCkYwBQIJQ/QJ204447RufOnVe4Ze7222+fXCCohb788sv44IMPko4RRUVFseOOOyYd\\nA2qdmTNnxjbbbJOTsd5///2cjANA7aT8AVKva9euMWjQoOrH/fr1i0cffXSl/f72t7/lMxYUhPHj\\nx8fChQuTjhGHH3540hEglR566KEYMmRIHHjggTFkyJCk4wBQQ1zdFEi9Aw44IC655JL4+c9/HhHh\\n9BFYD8vLn6ZNmyaa48Ybb0x0fkijF154IU466aRYsmRJREQMHjw42UAA1BjlD5BqvXv3jksuuSQi\\nYq2njXTs2DEfkaDgTJs2LdH3xwcffBBffvllYvNDbbZs2bKYO3dutGrVKqqqqmLq1KkREdGoUaO1\\nvm/333//fEQEoBZQ/gCpNmbMmHXa78knn4wFCxbUcBooTL179070FtA33XRTvPPOO4nND7XZkiVL\\n4sgjj4wDDzwwPvvss7jpppsiImKbbbaJX/3qV3H++eev8si95V+MAFA3KH8AIuLFF1+Mjz76KOkY\\nUGsdeOCB8fTTT+d93rfffjuuvfbavM8LhWTy5MkxefLkFbZ9/PHHMWzYsLjzzjtXeeH266+/Pl/x\\nAKgFXPAZSLVMJuMClpADs2fPjvfeey/v83711VfV1yMB1t/8+fOTjgBALaD8AQDW6p133onevXvX\\nilu/AwCwfpQ/QJ03bdq0GDZsWNIxoNZ7+eWXo0OHDknHANbTT3/606QjAJAw5Q+QerNmzYrPP/98\\ntc+/8MILsXTp0jwmgsK1ePHiKC0trdE5Pv/88/jFL34RmUwmdtpppxqdC+qCxYsXJx0BgIQpf4DU\\nu/POO9d4rZLTTjstj2mg8M2bNy9OPvnkOPnkk2tk/HfffTfuvvvuGhkbAKAuUv4AdcKuu+4anTt3\\nXuV2YP18+umncfvtt8ftt98ejRs3jsaNG8e0adOSjgUAwGoof4A6oaqqKl577bXIZDJx/fXXx3XX\\nXReZTCZef/31pKNBQausrIzKysro2LFjPPPMMzkZ06lekFuvvvrqStvuvPPOBJIAkBTlD1DnnHnm\\n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\\n6aSTko5TI5z2lSd33313tG/fPn70ox9FUVFR/Oc//4mIiLvuuivhZACF45VXXontttsuWrRokXQU\\n1mD06NE5GWfYsGE5GYd117x583jssceiQ4cOceaZZ8bNN9+c8yNNqJ123nnnuPLKK+OYY45x4XVY\\njfr168eVV165zvtfeeWVUVFRER9++KESqJZr0aJF9douXbo0Tj/99DjmmGPinXfeSThZ7jjyp4bV\\nr18//vjHP8Zxxx0XnTt3jqKiooj49pD2q6++Opo1a5ZwQtZV+/btI5vNRjabjdatWycdh3UwderU\\n6jX7/g+139Zbbx3t2rWLdu3axQ033BDZbDY6d+6s+KnFlq/VMcccs9FjXX/99TFr1qxo2LBhtGvX\\nLmbMmBHt2rVzakoNatmyZcyfPz86d+4cm266aXTu3DlGjRoV2Ww2pkyZUv1+bNeuXWy55ZZJx63T\\nGjVqFPPnz6+RsRU/sHrZbHa933stW7aMzp07x0svveTvzgKxySabROfOnWP27Nnx9ttvp+azh/Kn\\nhrVo0SIuuOCClba///770bNnz1iwYEECqdgQH330UfVFZCdNmhR77713wonYGH379o2IiH79+sWg\\nQYNi0KBBse222yaciuW22GKLuO+++2L69Okxffr0VZ5PT+3RtWvXGDRoUE7X6owzzoirrroqrr76\\n6pg+fXqUlJTE9OnTY+zYsd6rNWD33XePCRMmrPb50tLS6vfj9OnT4+c//3ke0/F9VVVV8b//+79J\\nx4A6Z2Pee82aNYt27drlOBE17cc//nFqPoc67Ssh++yzT8yZMyfpGKyHRYsWxfjx46Nr165RVFQU\\nDz30UOy0004KvAJ17bXXxplnnhk77LBDNGrUKCIixowZ40LBtcBdd90Ve+21V5SUlCQdhdUoKSmJ\\nRx55pPrxtttuWyOFzKo+bL355puxZMmSnM9V182cOTMWLVoUbdq0SToK6+jBBx+MX//617Hvvvvm\\ndNw33ngjdt5555yOCUTsv//+8d577yUdg9WYMWNGDB8+PAYMGLDK7WngyJ8aVlFREZlMJu69996Y\\nPHlynHbaaZHJZBQ/BWrw4MGRyWQi4tv2/plnnkk4Eatz2mmnRdu2bVf7fKNGjWLHHXesLn5Izjbb\\nbBM/+clPqk/JO/744xU/tVDjxo3jpptuimw2GzNmzIgdd9yx+idfR+KMGTMmzjjjjKiqqsrLfHXJ\\n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\\nAwAAAJBiyh8AAACAFFP+AAAAAKSY8gcAAAAgxZQ/AAAAACmm/AEAAABIMeUPAAAAQIopfwAAAABS\\nTPkDAAAAkGLKHwAAAIAUU/4AAAAApJjyBwAAACDFlD8AwEZ76KGHko4AAMBq1E86AABQOzVq1Cja\\ntm1b/XjhwoWxaNGi6sdt27aNWbNmVT/OZrOrHevGG2+MESNGxLRp02omLAAAq6X8AQBWqaSkJN58\\n883qx88991yMHz+++vGAAQPWeayysrIoKyuLfv36xU033ZTLmMD/2WKLLeKss86KUaNGxfz585OO\\nA0AtovwBAFbpwQcfXOHxAQccEAcccMBGjXnNNddERCiAIMfuuOOO2GuvvaJ9+/ZxwgknxJdffhkR\\nEYcffnjMmTMn4XQAJM01fwCAFQwePDiy2Wy0a9cu52M3btw4Ro4cGYcffnjOx4a6qF69ejF06NA4\\n8cQTo3379hHx7VF7paWlUVpaGu+++25ks9m44oorokOHDgmnBSApyh8AoFrTpk2ja9euNT7PI488\\nEn379q3xeSDtLr300rj44ovXut/5558f5eXlMWjQoOjcuXMekgFQmyh/AEiVKVOmxEEHHZR0jILV\\nrFmz6NatW17muuaaaxRAsIF69uwZU6ZMiQsvvHC9XjdkyJB4+OGHY4sttqihZADURsofAAreZptt\\nFg8++GBks9l4++2346mnnko6EuugcePG0alTp2jYsGHSUaCgNGrUKB588MEoLS3doNcXFRXF4sWL\\n4/HHH89xMgBqK+UPAAWvS5cu0bNnz6RjsAHKysriqquuSjoG1EnFxcWx8847Jx0DgDxQ/gBQ8L57\\n56izzz47wSSFb+bMmVFaWhqzZs3K25xlZWXxwAMP5G0+KHSvvvpqTsZp165dPPbYY1G/vhsAA6Sd\\n8geAgtWiRYv49NNPY/vtt6/eNnfu3OQCpUBlZWVMnTo1SkpK8jpvr1694oYbbnAKGKyDTp065Wys\\nli1bxldffZWz8QConZQ/ABSk1q1bx8MPPxxbbrll0lFSa+TIkXmdr6ysLIqLi/M6JyvaYost4sAD\\nD0w6BgCQY8ofAArSc889F3vssccK23bdddeE0qTT8OHD8z7nuHHj8j4n37rjjjvipZdecre8AuBW\\n7QA1p6SkJJV3I1X+AFAQiouLo0OHDnHbbbdFNpuNtm3brrTP1KlTE0iWXlOnTo0hQ4bkdc527drl\\ndT4i6tWrF0OHDo399tsv2rdvHxdccEEcddRR0aFDh+ofapc333wz3n///ZyO+cQTT8QPf/jDnI4J\\nUCgaNWoUw4cPj2w2GzNmzIiRI0dGNpuN6dOnx7bbbpt0vJxQ/uRRkyZNYtCgQSv8+EcWYM2W/935\\nz3/+M8rLy+Pkk09OOhKkym9/+9v45ptvolu3bnHNNddERMT9998f5eXl1T+nnHJKwin5rqqqqhg4\\ncGBOxzz44IPj4IMPzumYUBc1adIk9t9//4gIf3cWkJKSkujfv/9K29u1axejR49ORQHk0v55cPLJ\\nJ8ekSZPi4YcfXukbzVtvvTU+++yzhJJB3VJSUhIPPvhg9ePhw4evcJcoap/Ro0fHT37yE0eD1DEP\\nPPBAHHXUUUnHqDNGjx4db731VkREXH311au8Y951110XZ5xxRnTv3j0WLFiQ74jkydVXXx33339/\\n0jGgYC3/3LLFFlvEwoULo7i4OKqqquKOO+5IOhob4YADDoimTZvGokWLko6yUZQ/Naxly5Zx2223\\nrfK5YcOG+QAFNaxRo0Zx9dVXr7LJHzlyZIwcOTJmzJgR++yzT8H/hZ4W22+/fbRt2zaeeeaZpKMQ\\nEQsXLozKyspo1KhR3uZU9uXX8uJn++23j3feeWeV+2yyySZRWlrqluC1yKeffhqff/55bL755jkb\\ns3Xr1jkbC+qaJk2aRGlpafW/Yc2bN4+pU6fGI488knAycuGRRx7J+51Qc81pXwk6//zz4w9/+EPS\\nMSDVVncI53el6XDOQrf77rvH+PHjFT+1yPDhw+Pcc8/N+52/yL8777xzrfucc845eUjCunjooYdi\\n4sSJSccA/s8vf/nLla6R1qlTJ6erp8QRRxyRdISNpvxJ2N/+9rekIwDx/w/nJDlTpkyJcePGRZs2\\nbZKOwvcMHz48r3f+6tWrV97m4lvHHnvsOt0tz+eW2uXUU09NOgIABUL5U8MqKioik8msdOHEMWPG\\nRCaTiWeffTbpiJBqb7755jrvW1xcXINJWJ0tt9wyJkyYEKWlpVFUVLRRY1VVVeUoFd9XWVkZCxcu\\nrPF5OnbsGDNnzqzxefj/6tWrFx07dozNNttshe3f/dyydOnSOPnkk31uqWXmzJkTW265ZXzwwQdJ\\nR4E677bbbotp06attL158+ZOmS1wCxYsiMrKyqRjbDTlT5707t07OnXqVP3Tp0+fpCMB3+Oc7GT0\\n6tUr9t1336RjsBYzZ86MESNGJB2DGrUQzvoAACAASURBVNCoUaP45ptvYsiQIdV3+7r55ptX+Nxy\\n1llnxe23355sUFZpyZIlceSRR8aQIUM2eqwxY8bkIBHUTas67Svi20t9NGvWLIFE5MKCBQuiT58+\\nMXv27KSjbDQVJJBaDz30UNIRWIuGDRvG7373u6RjQJ22dOnSGDx4cERE1K9fP/70pz/FrFmzVthn\\n1KhRCSRjXb388svx8ssvxwsvvBBPP/30Bo/z17/+NYepgNLS0ogIN/kpADNnzqxer++qrKxMzRHJ\\nyh8gtdb1jkFffvllnHPOOS5om4BMJhMtW7bM6Zhjx46N3r1753RMvjV48OA45phjomPHjklHoYZ8\\n/fXXMXXq1KRjsIHefvvt9X7NvHnzYvHixfHUU0+5zTtshGHDhsVee+21wtE//j4tHJWVlalfL+UP\\nUCd99/D4BQsWKH5gHY0YMSI6deoU/fr1SzoK8D1LliyJp556Kg466KB12n/mzJnRu3fv+Pe//13D\\nyaBu8OUTtZnyB0i94cOHr1TupL3Zr8sOPPDAmDJlSuy0005JR0ml4cOHR6NGjSIicl4ADR8+PBXn\\n1ENSNqT8UfwA1A3KHyC1OnXqlHQE1iKbzcb777+/0Xf5+q4tt9wylixZkrPxWFllZWX0798/+vfv\\nv9p9SkpKYty4cVFcXBzZbLb61MrvF69NmzaNpk2bRnl5eUydOjUVd9OAJH331JPl76+lS5fGO++8\\ns9K+7733XgIJAUiC8geAxFRVVcVhhx0WY8eOjeLi4pyNe/bZZ+dsLDbMzJkzo1OnTjFgwIDIZrPV\\nR999v5Tt1q1bdOvWrfqCw8DGW37qyfL31/vvv++i3QB1nPIHgES9/vrr0b1799huu+3ixRdfTDoO\\nOTZ8+PA1Pj9+/PgYP358fsJAHeP9BcByyh8AEjdnzpyYM2dOZDKZiFjxmkwNGzaMkpKS9Rov13cQ\\nAwCAQqb8AaDW+e6pQdtuu22UlZVFRMQll1yyTq+/9tpr47rrrquRbAAAUGiUPwDUaosWLaq+HsyY\\nMWNWev7FF1+MLbfcsvrxU0895Zo/AADwHcofAArG9+8UFRGx1VZbJZAEAAAKR72kAwAAAABQc5Q/\\nAAAAACmm/AEAAABIMeUPAAAAQIopfwAAAABSTPkDAAAAkGLKHwAAAIAUU/4AAAAApJjyBwAAACDF\\nlD/w/9i79yir63p//K8pBOxGqTCCqAmMOcxkKZqJClYnL4UgYhy1vJDpwoEuitlNkcFjNxFb2oBa\\nejRvJxgRgyQ1C4yoc0KtYAa5h423gUKxElDcvz/6MV9HhtuwZ3/257Mfj7X2WjOf/dnv/aTX2rB7\\n+rkAAABAhil/AAAAADJM+QMAAACQYcofAAAAgAxT/gAAAABkmPIHAAAAIMOUPwAAAAAZpvwBAAAA\\nyDDlDwAAAECGKX8AAAAAMkz5AwAAAJBhyh8AAACADFP+AAAAAGSY8gcAAAAgw5Q/AAAAABmm/AEA\\nAADIMOUPAAAAQIYpfwAAAAAyTPkDAAAAkGHKHwAAAIAMU/4AAAAAZJjyBwAAACDDOiUdoL2OOeaY\\n6N27d9IxSkavXr3yup75FVY+52d2hWd+6WV26WZ+6eV7S7r57KWb+aWX2aXbzuZXlsvlcgXKAgAA\\nAECBpfbIn+OPPz6ampqSjlEyevfuHfPnz8/beuZXWPmcn9kVnvmll9mlm/mll+8t6eazl27ml15m\\nl247m19qy5+mpqZYs2ZN0jFoJ/NLL7NLN/NLL7NLN/NLN/NLL7NLN/NLL7MrPi74DAAAAJBhyh8A\\nAACADFP+AAAAAGSY8gcAAAAgw5Q/AAAAABmm/AEAAADIMOUPAAAAQIYpfwAAAAAyTPkDAAAAkGHK\\nHwAAAIAMU/4AAAAAZJjyBwAAACDDlD8AAAAAGab8AQAAAMgw5Q8AAABAhil/AAAAADJM+QMAAACQ\\nYcofAAAAgAxT/gAAAABkmPIHAAAAIMOUPwAAAAAZpvwBAAAAyDDlDwAAAECGKX8AAAAAMkz5AwAA\\nAJBhyh8AAACADFP+AAAAAGSY8gcAAAAgw5Q/AED069cvTjnllMjlcjt9nHLKKXHKKafEO9/5zqRj\\nAwCwCzolHQAASNYBBxwQ9fX18aEPfWiX9p8zZ05ERDz44IPx8ssvt7nP+eefn7d8AADsGeUPAJS4\\n1atXx1577bXbrxs2bNh2nzv77LNj4sSJ8V//9V97Eg3YBaNHj44bb7xxm+0+gwBs5bQvAChR/fv3\\njxEjRrSr+NmZvfbaK6655prI5XLxyU9+Mu/r037HHntsDB8+POkYtNOMGTO2ORVz6tSpsddee23z\\n2PoZ3Pq46KKLYsSIEdGnT5+k/xgAFJjyBwBK1MiRI6O+vr7D32f69Onxmc98psPfh12Ty+Xi3nvv\\nTToG7VBfXx8f+chH2v36W2+9Nerr66O+vt41uwBKjPIHgEzZ+l+82bkJEybEn/70pw5/n27dusW0\\nadMil8uZTxH4/e9/H3vvvXfSMWiHYcOGxQEHHLDH6xxxxBHxj3/8Izp1cgUIgFKh/AEgUzZv3hyP\\nPPJI0jFS48Mf/nBB32/z5s2xefPm+PrXvx7nnXdeHH744QV9f0izc845J6/rPfHEE9G3b9+8rglA\\ncVL+AJAZP/vZzyIi4oc//GHCSdJl9OjRBX/P73znO3HnnXdGfX19HHTQQQV/f0ijb37zm3ld7/DD\\nD4/jjjuu5fdvfetbMWvWrLy+BwDFQfkDQKp169YtRowYEblcLk477bTYvHlzvPbaa0nHSpV58+bF\\nq6++msh7V1RUxJo1a6KxsTG6du2aSAZIi29/+9t5X/POO++MHj16xHvf+944+uij47TTTsv7ewCQ\\nPOUPAKnUs2fPGD16dDz33HOtLlo8a9asliOA2DVPP/10fP/73080Q2VlZUyfPj2Ro5AgLVauXBmr\\nVq3K+7ovvvhirF+/PoYNG5b3tQEoDq7yBkDq1NfXR79+/eJDH/pQ0lHIoyFDhsSQIUPiox/9aFxw\\nwQVJx4Gi8+STT8Zpp50WDQ0NHfYe8+bNa/l58ODBHfY+ABSW8qeAOnXqFD169Gi17YUXXog33ngj\\noUQA6dGjR4848sgjY86cOUlHyawXX3wxysvLk44RxxxzTLz73e+OV155JekoUHS2niK5cePGDll/\\n0KBBERGxbt26DlkfgGQ47atAzj333Lj22mvj2WefbfWYMGFC0tEAito+++wT48aNi8WLFyt+OtCC\\nBQvi8MMPjzvuuCPpKHHYYYfFpZdemnSMkrf1s/e+970v6Si8xZYtW+IXv/hFh77Hueee26HrQ9Z9\\n/vOfTzoC7bTvvvvGsccem3SMvFP+FMB5550XN998c1xxxRXbPHfVVVclkAggHe655554/PHHY9Kk\\nSdG9e/ek42TaI488Es3NzTFp0qSko1AE3vzZe/zxx1u2P/TQQwmmYqvXX389Pve5z8Xvf//7pKMA\\nbbj44oujrq4u6RjsposvvjgWLlwY8+bNi/r6+li4cGHSkfLKaV8dbNCgQXHnnXcmHQN4i4MPPjjW\\nrFmTdAwi4j3veU+Ul5fHsmXLko5CRDQ0NERtbW1cffXVieaora2N6dOnx5IlSxLNUSq6desWjz32\\n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\\nN92Ut7UAKD7KHyDT+vXrF/X19Ts8PL6ioiJqamoKmIrtOfvss6Ouri7pGFBydqf8AQDSR/nTwRYv\\nXrzT52+77ba4+eabC5QISsuHP/zh2G+//Xa4z89+9rOYMmVKgRLRlr59+8bgwYPj3nvvjXe84x1J\\nx4GStGzZsqQjsJvyeZv21atX520tAIqP8qeDDRw4MK644oo2L/Y8e/bsOPbYY+MLX/hCAsmgNEyf\\nPn2n+4wcObIASdieo446Kh599NGYO3fuHq3zn//5n/H2t789P6GgBF144YVJR6AdJkyYkJd1vvrV\\nr+ZlHQCKk/Kng73yyitx3XXXxXXXXRcHHnhgHHjggbFq1ar485//HOecc0784x//SDoiZNZjjz22\\nS/s9+uijHZyE7enSpUs8/PDDeblF+6c+9al429v8swaFcO2117roc5G45pprWt2lrT369u2bpzQA\\nFKtOSQcoJU1NTRHhH1golE984hORy+V2ut+xxx4bF1xwQdxxxx0dH4pWBg4cGPvss0/e1tu8eXNU\\nVlbG008/nbc1oZSUlZW1+v3zn/98jBo1qtW2P/7xj/HFL36xkLHYgTfeeCMaGxvj5Zdfblcht2zZ\\nMtd7AigB/hMpkGnXXnvtTvdZvXq14icBF110UfzqV7/K+7qzZ8+OD3/4w3lfF0rR7bffHieccEKr\\nh+KneIwZMyYiIh544IFYtGjRbr++sbExhg4dGq+//nq+owFQZJQ/QKZdffXVse+++8bSpUvbfH7g\\nwIFx/PHHFzgVERGnnnpqh6zbt29fR1gCJWHo0KGxbt26WLduXRxzzDG7/fpnnnlmu/8+ApAtTvsC\\nMm3Lli3x97//PQ477LCko/AWZ5xxRuy1114xe/bsVtuPPvroeN/73pdQKoD0eOKJJ+Kkk05q12vf\\n9773xUsvvZTnRAAUK+UPAIl57bXXtrlV8amnnhrl5eUtv/fs2TO+/e1vFzoaQNH75je/Gd/4xjd2\\n+3U/+clP4l//+lcHJAKgWCl/ACgqc+bMafV7WVlZTJ48ORYtWhQVFRW7tMa9994bXbp06Yh4AKk2\\nf/78+PznPx9btmxJOgoABeSaPwAUtVwuF5s2bYpDDz00+vbtGw888EC8+uqrO3zNU089VaB0AMna\\n3Tsmzps3T/EDUIIc+QNAaqxatSrOOOOMGDJkSOy9997bPH/vvffGOeecE7/73e8SSAeQjIcffjhu\\n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\\nL46FCxfGXXfdlXQUACi4hx56KG699dakY5S8yy67LGpra/d4ndtuuy0+/elP5yERQLotXLgwpk+f\\nHo8//ngsXLgwFi5cGIccckjSsfLKrd5hF+VyuZafBwwYEM8++2zcdtttsXz58gRTAUDHev/73x9H\\nHHFEzJgxo2XbRRddFBERjz/+eJx22mmxYcOGpOKVpFwuF3/+85/jn//8Z7zzne9s9zrdunWL2bNn\\nR1VVVV5OJwO2td9++8X73vc+/5+hyA0YMCAiInr16tWybdWqVfH+978/1qxZk1SsvHLkD7TT1772\\ntVi2bFnSMQCgwwwePDj+8Ic/tCp+3mzQoEFx+umnFzgVEREzZsyI3/72t3lZ6+yzz87LOkBr48eP\\nj5kzZ8ayZcti/PjxLQUD6TF79uykI+SN8gf2kFPAAMiiQw45JOrr62O//fbb4X7f+c53YsmSJQVK\\nRUeYOHFi0hEgc+bMmRO1tbVx3HHHRUREbW1tHH300QmnopQpf2AXbe9w6E2bNhU4CQB0vNWrV0dd\\nXd0O99mwYUO8+OKL8eqrr8Z1111XoGRsdfLJJ0e3bt3ir3/9a7vXOP/88+O1117LYypg//33j8rK\\nylbbbrvttrj55psTSkR7VVdXx/jx45OOkReu+QO76IQTTogLL7wwvvrVr0b37t0jIuLaa6+NK6+8\\nMuFkAFBYM2bMiN///vexevXqqK+vTzpOSduwYUN897vf3WlRBxRG9+7do76+Pg4++OBW27/whS8k\\nlIhdccUVV0RExLhx46K8vDzhNB1D+QO76O9//3tcd911cdddd8URRxwRDz30UEyZMiXpWADQYSZP\\nnhw//vGPW37/wx/+EEcffXSsX78+/vnPfyaYDKA47bPPPi2nepEeW49eveCCC1qVPwceeGBmbmqg\\n/IHd9MILL8ScOXOirKws6SgA0KE2bNjQ6ktvz549E0xDvv3iF7+In/zkJ0nHgExZunRpXHjhhTFq\\n1Kiko9AOVVVV8Zvf/CYiIs4999xoampKOFH+KH8AACCl3vGOd8TIkSOTjgG8ye233x6333570jFo\\npxNOOCHpCB3CBZ8BACClXn311fj5z3+edAwAipzyBwAAUiqXy8XTTz8d69ev3+3XnnrqqR2QCIBi\\npPwBAIAUmzVrVnz2s5/dpX2XLl0ao0aNcsFugBLjmj8AAJByc+bM2aX9Dj/88Ni8eXPcd999HZwI\\ngGLiyB8AAMiA/fbbLxYvXrzd5+fMmRObN2+OiIhNmzYVKhYARUD5AwAAGfC3v/0tzjzzzO3e/esL\\nX/hCgRMBUCyUPwAAkBFLly6N6dOnR1lZWVx99dWxZcuW2LLl/2Pv3qO0quv9gX+G25AKpCIojnI3\\nYAbU1AyFzOMlPWqIgNVR8xbGLU2ITkthnPGSylG0jEu5UtQyBUrIW5oWBpqZmQUzKPf5OSbirdBQ\\nEHl+f3ic48hVfObZs/e8XmvNWjN77/k+b/2sgYf37Mt7ERHx4osvJpwOgKQofwAAIIMuv/zyaNGi\\nRfTo0SN+9rOfxbp16+K4445LOhYACVD+AABAhq1atSrOOuusOOWUU2LChAlJxwEgAcofAABoAn73\\nu9/FUUcdlXQMABKg/AEAAADIMOUPAAAAQIYpfwAAAAAyTPkDAAAAkGHKHwAAAIAMU/4AAAAAZJjy\\nBwAAACDDlD8AAAAAGZZI+XPffffF8uXLIyJixYoVccYZZ8TXv/71um0AAAAA5Eci5c+NN94Y7dq1\\ni4iISZMmRb9+/eKwww6LysrKJOIAAAAAZFaLJF709ddfj/bt28f69evjL3/5S/zwhz+MFi1axOc/\\n//kk4gAAAABkViLlzx577BE1NTWxZMmS6Nu3b7Rq1SrefvvtyOVyScQBAAAAyKxEyp9Ro0bFaaed\\nFs2bN48bbrghIiL++Mc/Rq9evZKIAwAAAJBZiZQ/p512Wpx44okREfGpT30qIiIOPPDAmDx5chJx\\nAAAAADIrsUe9v/POO/HQQw/FzTffHBERGzdujPfeey+pOAAAAACZlEj589RTT8UJJ5wQ9957b0yd\\nOjUiImpqaqKioiKJOAAAAACZlUj58/3vfz9uvPHG+OlPfxotWrx/5dmBBx4Yf//735OIAwAAAJBZ\\niZQ/L774YvTv3z8iIoqKiiIiomXLli77AgAAAMizRMqf7t27x/z58+tte+KJJ+KAAw5IIg4AAABA\\nZiXytK/vfe978c1vfjO++MUvxjvvvBPl5eXxu9/9ru7+PwAAAADkRyJn/hx00EHx61//Onr06BFD\\nhgyJkpKSmD17dvTr1y+JOAAAAACZlciZPxERHTt2jOHDhyf18gAAAABNQsHKn/Hjx9fd3HlbJk2a\\nVIA0AAAAAE1Dwcqfzp07F+qlAAAAAPhfBSt/xowZU6iXAgAAAOB/JXbPnz/+8Y9x//33x5o1a6JD\\nhw5x0kknRf/+/ZOKAwCoPrpgAAAgAElEQVQAAJBJiTzt69Zbb42xY8dGu3bt4qijjopPf/rTMW7c\\nuLjllluSiAMAAACQWYmc+XPLLbfEbbfdFgcccEDdtkGDBsW5554b5513XhKRAAAAADIpkTN/Ija/\\nAfR+++23Q08DAwAAAGDHJVL+fOtb34pLLrkkVq1aFe+8806sXLkyJk6cGBdeeGFs2rSp7gMAAACA\\nTyaRy77Ky8sjIuL++++PoqKiyOVyERFx7733Rnl5eeRyuSgqKorFixdvdY3DDz88SkpKCpKXiE6d\\nOuV1PfMrrHzOz+wKz/zSy+zSzfzSy/uWdPOzl27ml15ml27bm19R7oPmpYBefPHFHTpu3333beAk\\nAAAAANmWSPmTDwMGDIja2tqkYzQZJSUlsWDBgrytZ36Flc/5mV3hmV96mV26mV96ed+Sbn720s38\\n0svs0m1780vksq8333wzbr/99li8eHGsW7eu3r4dfdx7bW1t1NTUNEQ8CsD80svs0s380svs0s38\\n0s380svs0s380svsGp9Eyp+LLroo3nvvvTjuuOOiuLg4iQgAAAAATUIi5c+zzz4bf/rTn6Jly5ZJ\\nvDwAAABAk5HIo94POeSQWL58eRIvDQAAANCkJHLmzzXXXBPDhw+PAw88MPbcc896+8aMGZNEJAAA\\nAIBMSqT8ueGGG2L16tVRUlISb731Vt32oqKiJOIAAAAAZFYi5c/9998fDz30UHTo0CGJlwcAAABo\\nMhK5589+++0XLVok0jsBAAAANCmJNDCDBg2KUaNGxZlnnrnZPX/69++fRCQAAACATEqk/Pn5z38e\\nERGTJ0+ut72oqCgeffTRJCIBAAAAZFIi5c/vfve7JF4WAAAAoMlJ5J4/AAAAABRGImf+vPXWW3HT\\nTTfFn//853jjjTcil8vV7Zs3b14SkQAAAAAyKZEzfyoqKqK6ujpGjRoV//znP2PChAmxzz77xDnn\\nnJNEHAAAAIDMSuTMn8cffzweeOCB2H333aN58+Zx7LHHRt++fWPEiBEKIAAAAIA8SuTMn02bNkWb\\nNm0iImKXXXaJtWvXxl577RU1NTVJxAEAAADIrETO/OnVq1f8+c9/jv79+8chhxwSlZWVseuuu0aX\\nLl2SiAMAAACQWYmc+XPllVfGvvvuGxEREydOjNatW8ebb74ZkyZNSiIOAAAAQGYV9MyfRYsWRatW\\n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\\nowARMWbMmOjevXvSMdgJDzzwQAwfPjzpGOyg66+/PkaNGhURET179ozq6uq4/vrrE06VX8qfBtax\\nY8cYO3Zs0jHIk1GjRsXChQvj7rvvTjoKZMrXv/71WLhwYVxyySX1tn9w+vTMmTOjsrJyh9aaPHly\\nQ0RsktasWRPz5s1LOkY9H1wO8cFl1N26dUs6UqZUVlZGZWVlzJ8/36ULjdghhxyS9zVd9pWM7T1l\\nccqUKbFixYoCpSHffvCDH8TZZ5+ddAx2wOjRozfbNmbMmExdfqn8aWB/+MMftvjbs7fffjtee+21\\nBBLxSXTo0CHKysqitLTUZXuQJ+3atYtdd901ysrK4qqrrqp3qc+wYcOirKwsOnTosMPrXXzxxTFk\\nyJAGTExj8MFl1A8//HDSUTKjS5cudZ/36NGj7tKFD34eJ02alPfHjLNznnnmmSgqKoqioqKorq6O\\nl1566ROv2a5du2jbtm0e0rGjKioqYtCgQVvct3z58robQa9fv77AydhZs2fPjmXLltV9/alPfSpm\\nzJgRnTp1SjAV27OtXyT17NmzgEkalvKngW3tvhTf/va3Y8aMGYUNwyc2b968eO2111y2B3lSXl4e\\nM2bMiCOPPDLpKKTUKaecknSEzLjjjju2uX/8+PFRXV1doDTsqNLS0rjyyivzstawYcPysg47Zt68\\nefHKK69scXv//v23eT8gGqehQ4dG//79686ijIh4+OGH480330w4Gdty7733bnXfXnvtFV/4whcK\\nmKbhtEg6QNatXr06ysrKYtasWfX+Qq2qqkowFTvrg7+MW7VqFatXr046DqTajTfeGBdddFHSMUip\\npUuXxuDBg10OkUdf//rXd+j/54wZM+Kcc85p+EDssLvuuivOP//8+OxnP/uJ1vnKV74SX/3qV/OU\\niu35oPzZa6+96rYtXbo0Tj/99C2WQqTDq6++GhUVFRERMWvWrFi9erXyp5EbNGhQlJWVxT333LPZ\\nvmOOOSbWrFmTQKr8U/40sI0bN0ZVVVX06dMn6SjkydKlS5OOAKk3bNgwxU8KFBcX1/tHSWOwZs2a\\nePXVV6O0tDTpKJmzcuXK2GeffeLRRx+NiIhWrVpFjx49Njvu7LPPjpqamqisrIxNmzYVOiZb8Prr\\nr8e6deuSjkEerF+/XvGTIX7hnw7Lli2LZcuWxZgxY+L666+P4uLiiHj/8ssszdBlXwAUXHV1dSxe\\n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\\nV9avXx8//vGP46c//WlGxtu2bZvfnwkbPnx43HvvvS6sDlnUrFmzuPbaa+Oaa66JiHS+D5U/QOrU\\nrFlzn//gJPumTp0ab731VsYu1lu3bt044IADMjIW++bQQw/N2r6OPvrorO2rKti6detOH3T35RpM\\nZM+2bdvi9ttvj9tvvz0KCwvjH//4xz6Nk5eXl+Fk7K2//vWvO93FEMiO4uLiuPbaa+Paa69NOkqF\\ncc0foMq7/fbbk45QpZ155pnu0gSQoKuuuirpCFXasmXLYuDAgXHqqacmHQVIMeUPUKV16tQp/ud/\\n/ifpGFXaU089FY0bN47GjRu7vXsltjenYWXLnXfeGfPmzUs6BlQaH3zwQQwdOnSvX/fwww9nPgzl\\ntmbNmnjooYdi7dq1SUcBUkz5A1QZH374YUyePDkmT54cLVq0iMmTJ8fSpUuTjlXlbdq0KdasWRNr\\n1qyJu+66K/Ly8iIvLy969+5dNl8LFy5MOmaVN23atOjTp098+OGHSUeJadOmxaOPPho33nij68/A\\n52zbti3mzJkTGzZsKNf2q1atitNOOy02b95cwckASJpr/gCps3Tp0pg4cWKce+65ZctuvvnmmDNn\\nTkyYMKFsWffu3ZOIRzmNGzcuxo0bFxHbbxXevn37snXDhw+PRo0a7bD9Y489FtOmTXPx3wr05JNP\\nxsaNG6OoqChjF5fdWxMmTIi+ffvG+vXrE9k/VHbjxo2LTZs2xcSJE/e47fe+97344x//mIVUACRN\\n+QOkzrp166Jnz55RvXr1smUlJSW7vYUjld+bb74Zb775Ztnzp556quzxsmXL4tBDD43NmzfHtm3b\\nlD8VbMKECTFx4sS4++67Y9asWXHUUUdlbd916tSJLVu2ONoH9mDSpElRp06dnZYvXLhwhwt4b9q0\\nKZuxAEiQ8gdIpS1btsSWLVuSjkEF+fwfLAcddNAO69yxpuKVlpbGpk2bslaozp07N7797W/7QxX2\\nwq7eL4WFhQkkAaAyUP4AAPvk2muvjQYNGpQ9b9asWdxzzz07bff+++/Hf/3Xf33pNp8f84u3Gp89\\ne/ZOywAAKD/lDwCwT1588cWdlg0fPnyPr/vKV74SQ4cOLTtKa+vWrVGjho8kAAAVxSctACCrbr31\\n1qhbt24cdthhERFxww03JJwIACDdlD8AQNbdeOONSUcAAKgyqiUdAAAAAICKo/wBAAAASDHlDwAA\\nAECKKX8AAAAAUkz5AwAAAJBiyh8AAACAFFP+AAAAAKSY8gcAAAAgxZQ/AAAAACmm/AEAAABIMeUP\\nAAAAQIopfwAAAABSTPkDAAAAkGLKHwAAAIAUU/4AAAAApJjyBwAAACDFlD8AAAAAKab8AQAAAEgx\\n5Q8AAABAiil/AAAAAFJM+QMAAACQYsofAAAAgBRT/gAAAACkmPIHAAAAIMWUPwAAAAAppvwBAAAA\\nSDHlDwAAAECKKX8AAAAAUkz5AwAAAJBiyh8AAACAFFP+AAAAAKRYjaQD7KsTTzwxCgsLk45RZRQU\\nFGR0PPOXXZmcP3OXfeYvd5m73Gb+cpfPLbnNey+3mb/cZe5y257mL6+0tLQ0S1kAAAAAyLKcPfKn\\nc+fOUVxcnHSMKqOwsDBeffXVjI1n/rIrk/Nn7rLP/OUuc5fbzF/u8rklt3nv5Tbzl7vMXW7b0/zl\\nbPlTXFwcS5YsSToG+8j85S5zl9vMX+4yd7nN/OU285e7zF1uM3+5y9xVPi74DAAAAJBiyh8AAACA\\nFFP+AAAAAKSY8gcAAAAgxZQ/AAAAACmm/AEAAABIMeUPAAAAQIopfwAAAABSTPkDAAAAkGLKHwAA\\nAIAUU/4AAAAApJjyBwAAACDFlD8AAAAAKab8AQAAAEgx5Q8AAABAiil/AAAAAFJM+QMAAACQYsof\\nAAAAgBRT/gAAAACkmPIHAAAAIMWUPwAAAAAppvwBAAAASDHlDwAAAECKKX8AAAAAUkz5AwAAAJBi\\nyh8AAACAFFP+AAAAAKSY8gcAAAAgxZQ/AAAAACmm/AEAAABIMeUPAAAAQIrVSDoAAACwb3r06LHL\\n5Rs3bozJkydnOQ0AlZXyBwAAcky3bt1i4MCBeyx/Bg0aFMuWLctyOgAqG6d9AZDTatasGTVq+C4D\\nqBpq1KgR9evXjz/96U+7LX4iIurXrx89evSIDz74IEpLS+P666+PmjVrZjEpAJWJ8geAnNSkSZPo\\n06dPrF27Np577rmk4wBUuD59+sTrr78eGzZs2OvX3nnnnVFSUhJ9+vSJPn36RK1atSogIQCVla9K\\nAchJkyZNihNPPDHpGABZM2bMmIyN0adPn5g+fXrccsst+z0mAJWfI38AyDnFxcU7FD+nn3569O/f\\nPxo2bJhgKoDcccopp8SPf/zj6NOnT9JRAMgC5Q8AqfDQQw/F2rVrk44BUGEq4u5dJ598clSr5k8C\\ngLTzmx7KqXnz5nHRRRclHQOqvP79+8fBBx+cdAyArHvssccyPubSpUujtLQ04+MCULkof6CcWrRo\\nEaNHj47S0tLIz89POg5USQUFBXHsscdG7dq1k44CkHXjxo3LeAG0YsUK5Q9AFeCCz1BOU6dOLXv8\\n+9//Po4//vgE00D61KlTJwYOHPil29x99917HOecc86JSZMmZSoWEBFNmzaNZs2axcyZM5OOUuX1\\n69cvLrnkkoyNd99990Xt2rXj5z//ecbGBMhljRs3jr59+8aoUaNizZo1ScfJGOUPlFOPHj3imWee\\niYiItm3bxve///349a9/nXAqSI/p06dH+/bt93ucd955JwNpgM975ZVX4vHHH1f+VBKdOnWK1157\\nLWPj3XnnncofgIgYO3ZsHH300VFUVBQXX3xxzJ49Oy688MKkY2WE076gnH7729/GlVdeGSUlJVGv\\nXr1o165dVK9ePelYkPMaNGgQf/7znzNS/EREvPfeexkZB6q6mjVrxoMPPhilpaWxdevWmDRpUrRp\\n02aHI2FJxhtvvBH//Oc/Mzbe/PnzMzYWQC4qKiqK0tLS6NWrVxQVFZUt6927dwwZMiThdJmh/IG9\\n8OCDD8bixYsjIuKGG26Ipk2bJhsIUuCCCy6Izp07Jx0D+IJ77rknrrjiioiIaNeuXcybNy/mzZsX\\nzZs3jw4dOiScrmorKSmJ//7v/97vcYYNGxbDhg2Lo446KgOpAKjMnPYFe+n000+Pr3/962WngAFA\\nGg0aNGiXy1u0aBHPP/98fPWrX40NGzZkORWfefbZZ+OSSy6J//iP/9ir182YMSN+8IMfRETEu+++\\nWxHRAKiElD+wlxYtWhSLFi2KvLy8pKMAQIX461//+qXrN2/e7A5RCVu/fn387W9/26vy55133okT\\nTjihAlMBpMsnn3yS0dNsk+S0LwBS5fvf/37SESDn3X///XH99dfHSy+9tMv1d9xxR2zcuDHLqfii\\ngQMHxtChQ8u9fffu3SsuDEAKDRw4MB599NGkY2SEI38ASJXzzjvPnfhgP40ZMyYiIkaOHBkNGjTY\\naf3atWuzHYnduO222+Lxxx+P3/72t9GxY8ek4wCkyqhRo5KOkDGO/AEgVRo3bhyNGzdOOgakwoYN\\nG6K4uHinn48++ijpaPzLtm3bori4OE444YRo2rRpvPrqq/Hhhx8mHQsgp8yePTvy8vJizpw5ERGx\\n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\\niLgwhT8iIiIiIiIiIi5M4Y+IiIiIiIiIiAtT+CMiIiIiIiIi4sIU/oiIiIiIiIiIuDCFPyIiIiIi\\nIiIiLkzhj4iIiIiIiIiIC1P4IyIiIiIiIiLiwhT+iIiIiIiIiIi4MIU/IiIiIiIiIiIuTOGPiIiI\\niIiIiIgLU/gjIiIiIiIiIuLCFP6IiIiIiIiIiLgwhT8iIiIiIiIiIi5M4Y+IiIiIiIiIiAtT+CMi\\nIiIiIiIi4sIU/oiIiIiIiIiIuDCFPyIiIiIiIiIiLkzhj4iIiIiIiIiIC1P4IyIiIiIiIiLiwhT+\\niIiIiIiIiIi4MIU/IiIiIiIiIiIuTOGPiIiIiIiIiIgLU/gjIiIiIiIiIuLCFP6IiIiIiIiIiLgw\\nhT8iIiIiIiIiIi5M4Y+IiIiIiIiIiAtT+CMiIiIiIiIi4sIU/oiIiIiIiIiIuDCFPyIiIiIiIiIi\\nLkzhj4iIiIiIiIiIC1P4IyIiIiIiIiLiwhT+iIiIiIiIiIi4MGtNN6Ci+vdfTGxsWk0347LRpIkv\\nP/88udK2p/1XvSpz/2nfVT/tv7pL+65u0/6ru3TcUrfpvVe3af/VXdp3dVtZ+6/Ohj+xsWnExKTW\\ndDOkgrT/6i7tu7pN+6/u0r6r27T/6jbtv7pL+65u0/6ru7Tvah8N+xIRERERERERcWEKf0RERERE\\nREREXJjCHxERERERERERF6bwR0RERERERETEhSn8ERERERERERFxYQp/RERERERERERcmMIfERER\\nEREREREXpvBHRERERERERMSFKfwREREREREREXFhCn9ERERERERERFyYwh8RERERERERERem8EdE\\nRERERERExIUp/BERERERERERcWEKf0REREREREREXJjCHxERERERERERF6bwR0RERERERETEhSn8\\nERERERERERFxYQp/RERERERERERcmMIfEREREREREREXpvBHRERERERERMSF1Zrw57777qvpJoiI\\niIiIiIiIuJxaE/707NmzppsgIiIiIiIiIuJynA5/Vq5cyZEjRwCIiopi0qRJ3HnnncXLLtX9999f\\nKdsREREREREREZESToc/r732Gn5+fgC88MILdO3alfDwcObNm1euJ5w2bRpr1qwhNze3fC0VERGR\\nOsPiAQEdTQR0NNV0U0REREQue1ZnH5icnExwcDC5ubls3bqV119/HavVSp8+fcr1hL179+add97h\\n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\\n\",\n      \"text/plain\": [\n       \"<matplotlib.figure.Figure at 0x1c58439bd6d0>\"\n      ]\n     },\n     \"metadata\": {\n      \"tags\": []\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"make_plot(img, seg, rec, samples, fs=2)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"colab_type\": \"text\",\n    \"id\": \"TcHaNVj0dGmC\"\n   },\n   \"source\": [\n    \"# Plot samples from the global latent only\\n\",\n    \"When sampling from the global latent, all but the most global latent scale are constrained to their means.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 0,\n   \"metadata\": {\n    \"colab\": {\n     \"height\": 1000\n    },\n    \"colab_type\": \"code\",\n    \"executionInfo\": {\n     \"elapsed\": 16249,\n     \"status\": \"ok\",\n     \"timestamp\": 1568134290653,\n     \"user\": {\n      \"displayName\": \"Simon Kohl\",\n      \"photoUrl\": \"https://lh3.googleusercontent.com/a-/AAuE7mAV5aCJQ_5RldkCyse6s0nQKEvpBRdNbA80iGeZEw=s64\",\n      \"userId\": \"12229574298416150258\"\n     },\n     \"user_tz\": -60\n    },\n    \"id\": \"K_L4aKY4dKqj\",\n    \"outputId\": \"672fc01e-bf6e-4873-90e8-31c434785e03\"\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAABH8AAAmlCAYAAABQWRQLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvbuPdNlV/r+qurvu3f1eZ2yPhzG2BbYwCXLiCCGQEATA\\nX4AQETIhMiBBAMhIyBYIyREBRCREJAgiAwI5skQK6ZjB45n31pfquvSl6hfM7zn9qafXPlX99un5\\naqxaUqurTp2zL2uvy7PWvpzWcrlcxpa2tKUtbWlLW9rSlra0pS1taUtb2tKWfiyp/f+6AVva0pa2\\ntKUtbWlLW9rSlra0pS1taUtbuj/aJn+2tKUtbWlLW9rSlra0pS1taUtb2tKWfoxpm/zZ0pa2tKUt\\nbWlLW9rSlra0pS1taUtb+jGmbfJnS1va0pa2tKUtbWlLW9rSlra0pS1t6ceYtsmfLW1pS1va0pa2\\ntKUtbWlLW9rSlra0pR9j2iZ/trSlLW1pS1va0pa2tKUtbWlLW9rSln6MaZv82dKWtrSlLW1pS1va\\n0pa2tKUtbWlLW/oxpt3/1w14Xfr2t78dR0dHERGxXC5juVzeuGexWFTXS/foeqvVqv50nf9F+j0j\\n3uv36Tcvn/dl7Svdq+u6pra32+2Vfl1dXcX5+XnMZrM4OzuL+Xxe8YX3ez3607UnT57E3/zN3xT7\\nflv6+Z//+XjvvfdWrrF/7Xa7qrvdbke73V7pq/q3WCyqtvOz98nL5LWdnZ1otVqxWCzi8vJy7Tio\\nDc4jjsHu7m4sl8u4uLiIq6urYnvUp2xMFovFSvleP8eO5eu+nZ2d6p7PfOYz8W//9m9pv25Lf/d3\\nfxfT6TTa7XZcXV3F1dVVtFqt2N3djd3d3Wi1WnF5ebmif4vFovrONvqYlXgvGeA9qlPXr66uijrO\\ncnZ3d2M4HMaTJ0/i4cOHsbOzE/P5vBon8X1vb6+qp9vtxmAwiFarFWdnZzGZTFbq09i57Pm4Uv/P\\nz8+rz/ota3+r1Yperxe/+Iu/uGZkNqM/+7M/i5cvX8ZyuYzd3d3Y29uLTqcTvV4vut1u9bnT6USn\\n06nG1NvkvKV+kgf+u19fLpexs7NTfSYvaZtZjstLqX1eX8l+1/VDbcjsS8YL3ttqtWIwGMSv/Mqv\\npPXeln7t134t3n///Rvtpl5R5mij6tpNu9Xr9WKxWMRsNqtkVCRdq/OTsqnSefGCz/EZtS8bQ7/O\\n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\\nAACoMMkfAAAAgArbuuwANtc73/nOWLx4cdlh9Bljx46NBx54oGnlqb/Wamb9qbvWU3/tS921N/XX\\nvvRb2pttr72pv/al7trbpuqvbZM/ixcvjmeeeabsMNhM6q99qbv2pv7al7prb+qvvam/9qXu2pv6\\na1/qrvdx2xcAAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABA\\nhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8A\\nAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY\\n5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFTY1mUHAAD0fm9605vi85//fJefOfHEE1sUDQAA\\nb4TkDwBQaI899oj58+dHRES/fv1ixIgRXX7+f/7P/xkREW9/+9tj4cKFPR4fAADd47YvAKDQAQcc\\nECNHjoyRI0duMvETEfXP/v73v49arRZXXXVVDB06tAWRAgDQFVf+AAAbOe+88+Jzn/vcFpXxkY98\\nJIYPHx4vvfRS4ftHH330FpUPAED3SP4AUClr1qyJiIgBAwaUHEn7+vznPx//+q//2pSyDj744Ibv\\nZbeJRUR0dnbGW9/61qZMEwCADbntC4DKOPTQQ6N///7Rv3//OOyww8oOpy19+tOfjnPOOSc6Ojp6\\nfFpZXfXv3z/22muvqNVqUavV4plnnok99tijx6cP7erwww+v/2TbTXd+jjvuuLJDB6AkrvwBoBJm\\nzJgRF110Uf3/f//3f3f1zxv0zW9+M0455ZSyw4hddtklrr/++nj00UcjIuKaa66J6667ruSooHf4\\n7Gc/G+eff/5mffeyyy6LnXfeOWbOnNnkqADo7SR/AGhr/fv3j4MOOihmz569wevZ7V90zxe+8IVe\\nkfjJTJo0KSZNmhQRr1/lEBHxu9/9Lvbcc88yw4JSTZs2bbMTP5nPf/7zsXTp0rj44oubFBUA7UDy\\nB4C2tmTJkth22203en3YsGElRENPGjlyZEydOjV++9vflh0KtLXZs2fHunXr4pJLLik7FABaxJg/\\nALStGTNmSPI0wa677hof/vCHyw5jk8aOHRuHHHJI2WFAac4444ymlTV37tw499xzm1YeAL2b5A8A\\n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\\n197UX/vSb2lvtr32pv7al7prb5uqv45arVZrUSx1b3/72+P++++P/v37119bu3Zt7LfffvEf//Ef\\nrQ4HAAAAoLJKGfB5yJAh8dvf/jb++q//uv7aI488EoMHD+52Ge985ztj8eLFPREeBcaOHRsPPPBA\\n08pTf63VzPpTd62n/tqXumtv6q996be0N9tee1N/7UvdtbdN1V8pyZ+TTz45/vmf/zn+7u/+Lnbc\\nccf44x//GHfffXfMnDmz22UsXrw4nnnmmR6Mkp6k/tqXumtv6q99qbv2pv7am/prX+quvam/9qXu\\nep9Skj+HHHJITJkyJW699dZYunRpvPnNb44TTjghxo8fX0Y4AAAAAJVVSvInImL8+PGSPQAAAAA9\\nrLTkz5133hm/+MUvYtmyZZGOOX3++eeXFRIAAABA5fQrY6IXX3xxnH322bF+/fr4+c9/HiNHjowH\\nHnggRowYUUY4AAAAAJVVSvLnhhtuiMsvvzzOOOOM6N+/f5xxxhlx6aWXGg0cAAAAoMlKSf68/PLL\\nsfvuu0dERP/+/WPt2rUxderU+MUvflFGOAAAAACVVcqYP7vssks8/vjjMWHChJgwYUJcffXVMWLE\\niNhmm23KCAcAAACgskpJ/nzqU5+KF198MSIiPvOZz8Rpp50WK1eujLPPPruMcAAAAAAqq+XJn/Xr\\n18eAAQPiLW95S0RETJ06NW6//fZWhwEAAADQJ7R8zJ9+/frFiSeeGAMGDGj1pAEAAAD6nFIGfP6b\\nv/mb+PWvf13GpAEAAAD6lFLG/Nlpp53iuOOOi3e/+92x4447RkdHR/29U045pYyQAAAAACqplOTP\\n6tWr4z3veU9ERCxZsqSMEAAAAAD6hJYnf9auXRtf/vKXIyLil7/8ZdRqtfp7e+21V6vDAQAAAKi0\\nliZ/fvjDH8bDDz8cX/va1yIiYvr06bHttttGrVaLVatWxWc+85mYNm1aK0MCAAAAqLSWDvg8b968\\nmD59ev3/AQMGxD333BP33ntvXHHFFXH99de3MhwAAACAymtp8mfx4sUxceLE+v/jxo2r/z1x4sT4\\nz//8z1aGAwAAAFB5LU3+rFy5MlauXFn//9///d/rf7/66qvx6quvtjIcAAAAgMprafJnwoQJ8eCD\\nDxa+d//998f48eNbGQ4AAABA5bU0+XP00UfHrFmz4o477oj169dHRMT69evj9ttvj3PPPTeOPvro\\nVoYDAAAAUHktfdrX+9///liyZEl89rOfjbVr18bIkSPjxRdfjP79+8dJJ50UH/jAB1oZDgAAAEDl\\ntTT5ExHxsY99LI488sh4+OGHY9myZTFy5Mh461vfGsOHD291KAAAAACV1/LkT0TEsGHDYr/99itj\\n0gAAAAB9SkvH/AEAAACgtSR/AAAAACpM8gcAAACgwkoZ8wcA6P3mzp3b5fvnnHNO/PGPf2xRNAAA\\nbC7JHwBgIw899FC8/e1v7/IzH/7wh2P9+vWbLGvBggWx7777Nis0AADeIMkfAKBu2LBhcemll24y\\n8RMRMWLEiG6Vuc8++0StVotPfOITcdlll21piAAAvEHG/AEA6nbdddf48Ic/3CNlf+tb34orr7wy\\nDjnkkB4pHwCAYpI/AEDL/K//9b/i+uuvjzVr1sSaNWvirLPOKjskAIDKk/wBAFpqq622iv79+0f/\\n/v3j3HPPjVqtFu9973vLDgvaxuGHH17/qdVq3f457rjjyg4dgJIY8wcAKN11110Xd9xxR8P3P/Wp\\nT8XixYtbGBH0Tp/97Gfj/PPP36zvXnbZZbHzzjvHzJkzmxwVAL2d5A8AULptttkmDj/88IbvH374\\n4fG73/0u9txzzxZGBb3LtGnTNjvxk/n85z8fS5cujYsvvrhJUQHQDtz2BQAAfcjs2bPjhBNOKDsM\\nAFpI8gcAANrAGWec0bSy5s6dG+eee27TygOgd5P8AQCANrDXXns1tbyzzjrLFUAAfYTkDwAAtIHb\\nbrut6WXOnTs3ZsyY0fRyAehdJH8AAKANfOc73+mRcmfPnh333ntvHHDAAT1SPpt27LHHxr333lv/\\n2XXXXcsOCagYyR/oplqtFhdccEFstdVWZYcCfd6OO+4YtVpto5/+/fuXHRo9aMqUKXHBBRfE1lt7\\nWCl903XXXRc33XRTj5S9//77xw477NAjZdO1yZMnx+WXXx77779//efpp5+ORx99NIYPH152eEBF\\nSP7AG3DaaafFbrvtVnYY0Geddtppcdppp8Xvf//7skOhJKeddlqcd955cfTRR5cdCpRi3rx5ZYdA\\ni0ycODGuu+662G677coOBagAp86gmw4//PC44YYb4sYbb4w999yz7HCgz7nhhhvisMMOKzsMeoHP\\nfvaz8eqrr8aAAQPi29/+dtnhQEtdeeWV8dhjj8X8+fPLDoUmueaaaxq+d9BBB8V9990XU6ZMaWFE\\nQBW58ge66cYbb4yTTz45dt9993jkkUdi2223LTsk6BMmTJgQs2fPlvhhA4MHD47LLrssarVa2aFU\\nytZbbx0TJkyIzs7OqNVqcdFFF8WECRNiwoQJ9nu9yK9+9auyQ6CJJk+evEXvA3SH5A+8AbNnz46n\\nn346pkyZEh/72MfKDgcq7+Mf/3g89thjnkQDLfLVr341HnvssZg0aVJERJx88snx2GOPxWOPPRZX\\nX3218UegJMcff3zZIQBtTvIHgF5p+vTpcdFFF5UdBvQpp556asP3DjroIFecQEm++c1vxoknnlh2\\nGEAbk/wB+oz8k6FmzpxZdkh9XkdHR8ycObPwyV3f+c53YtCgQWWH2Od0dnbG8ccfH6tWrSo7FEqw\\n4447xsMPPxwPP/xw4fvjx4/vsceNA40NHDgw5syZE3vssUfZoQBtSvIHNsPixYvjvvvuKzsMaHsX\\nXHBBzJo1q+wwyPnWt74VTz75ZNlhUIIlS5bE2972tnjb294WF1xwQf31008/vf7zz//8zyVGCH3L\\nbbfdFqeffnr9/9NOO63EaIB25mlfsBn+x//4H7FkyZKyw4C219UtJpTr3e9+d/z3f/932WFQos99\\n7nP1Wy8XL15ccjT0tFtuuSVuueWWssPok97znvfEHXfcERERCxcujPe85z1x5513Rq1Wi2nTpsXL\\nL78cv/rVr+KOO+6I6dOnS8ACm0XyB96gv/qrvyo7BDZTR0dH2SGQmDhxYtkh0IU//vGPsdtuu8U9\\n99wTu+yyS9nhFHrmmWfiwAMPLDuMynrttdckffqIBx98MN7//veXHUaf9eSTT8YDDzwQERH77bdf\\nRGzc37zzzjv1Y4At4rYvAEpx3nnnlR0Cm/DUU0/F9773vbLDaOjyyy+Pp59+uuwwoK19//vfj/33\\n37/sMPq0p556Kvbbb7964gegJ7jyBwBo6Ktf/WocddRRve6qx+233z5effXVssOAtnfnnXfG+vXr\\nyw4DgB4m+QMANPTqq6/GxIkT49Zbb62/9r73va+UWFasWBHz58+P4447Ll544YVSYoDeYPXq1Zu8\\nBeiBBx6Ifffdt/C9BQsWxN577x0rVqzoifAA6IXc9gVAKS6++OI49thj47vf/W7ZodANBx10UP3n\\nrLPOKiWGj370o3HQQQfFH/7wh1KmD+1k+vTpha8vXLgwDjvsMIkfgD5G8geAUtx1111xxRVXxCc+\\n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\\nAgAAAEhPJuXPLbfcElVVVbHddttFu3btGraXlJTEfffdl0UkAAAAgCRlUv5ceumlcfnll8chhxyS\\nxe4BAAAAWoxMrvnz9ttvx4ABA7LYNQAAAECLkkn5M3LkyJg6dWq88847WeweAAAAoMXI5LSv66+/\\nPlatWhXXXntt7Ljjjo1emzdvXhaRAAAAAJKUSfnzs5/9LIvdAgAAALQ4mZQ/Bx54YBa7BQAAAGhx\\nMrnmz7p16+KKK66IQw89NPbee+849NBD44orroi33norizgAAAAAycrstK/HHnssKisro2vXrvH8\\n88/HlClT4vXXX4+zzz47i0gAAAAAScqk/Lnrrrti9uzZsdNOO0VERI8ePaJv375x9NFHK38AAAAA\\nCiiT077q6+u3aDsAAAAAWyeT8ufII4+M0aNHxx/+8IdYtmxZPPjggzF27Nj48pe/nEUcAAAAgGRl\\nctrXD37wg5g6dWpUVVVFXV1ddO7cOY466qgYM2ZMFnEAAAAAkpVJ+dOmTZs47bTT4rTTTsti9wAA\\nAAAtRtHKn7/+9a/xuc99LiIiFi1a9IHvO+igg4oVCQAAACB5RSt/Kisr47bbbouIiPHjx2/yPSUl\\nJXHfffcVKxIAAABA8opW/mwofiIi7r///mLtFgAAAKBFy+RuX6NHj97k9vLy8iInAQAAAEhbJuXP\\nn//8501u/8tf/lLkJAAAAABpK+rdvi6//PKIiFi3bl3D4w2effbZ6Nq1azHjAAAAACSvqOXPCy+8\\nEBER9fX1DY83+OQnPxmnnHJKMeMAAAAAJK+o5c/EiRMjImK//faLESNGFHPXAAAAAC1SJtf8adOm\\nTTz55JONtj355JMxa9asLOIAAAAAJCuT8ufyyy+PT37yk4227brrrhtdBwgAAACAbZNJ+fP666/H\\nDjvs0Gjbf/3Xf8Xq1auziAMAAACQrEzKn549e8bdd9/daNvcuXOjZ8+eWcQBAAAASFZRL/i8wZln\\nnhmjRo2KO++8M7p37x7/+te/YtGiRXHNNddkEQcA2AKdOnWK0aNHb9Fn5s2bFw8++GATJYKWq127\\ndvHDH/5ws++bO3duLFq0qAiJAGiOMil/PvvZz8Ztt90Wt912W/z73/+OffbZJ8aPH7/RdYAAgOah\\nV69eceutt0ZERNu2baN3795b9PlzzjlH+QMFdvXVV8fBBx8cffr02ex733jjDeUPQAuWSfkTEdG1\\n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\\n+d6Sb3738s388svs8m1z88tt+VNbWxvLly/POgZbyfzyy+zyzfzyy+zyzfzyzfzyy+zyzfzyy+ya\\nHxd8BgAAAEiY8gcAAAAgYcofAAAAgIQpfwAAAAASpvwBAAAASJjyBwAAACBhyh8AAACAhCl/AAAA\\nABKm/AEAAABImPIHAAAAIGHKHwAAAICEKX8AAAAAEqb8AQAAAEiY8gcAAAAgYcofAAAAgIQpfwAA\\nAAASpvwBAAAASJjyBwAAACBhyh8AAACAhCl/AAAAABKm/AEAAABImPIHAAAAIGHKHwAAAICEKX8A\\nAAAAEqb8AQAAAEiY8gcAAAAgYcofAAAAgIQpfwAAAAASpvwBAAAASFirrAMAAPlxwQUXRLdu3bbo\\nM9/97nebKA0AAB+F8gcA+EATJkyICRMmNDxv1apVlJSUbNEa3/zmN6OqqirOP//8QscDAOAjUP4A\\nAJvUvn372HvvvaN169bbtE7r1q3jvPPOi9deey1qampi7ty5BUoItG7dOoYMGRIREbvssktcddVV\\njV4/9dRT4/nnn4/HHnssnnrqqSwiAtAMKH8AgE26+eabY/DgwQVb77LLLotXX301Ro4cGTNnzizY\\nutBSTZgwIT73uc/F1772tQ98zxVXXBER0VD+1NTUREVFRbEiAtBMKH8AgI1UV1dH3759C75uhw4d\\nYsaMGQ372G+//WLdunUF3w+k7nvf+15UVVV95Pfvs88+sc8++8Sxxx4bdXV1cfXVV/vdA2hB3O0L\\nAMhEv3794q233oqzzjor6yiQK23bto1f/OIXW/35n//85/HWW2/FYYcdVsBUADRnyh8AIFMTJ06M\\nO++8M771rW9lHQValF//+tcKIIAWQvkDAGTuyCOPjF/96lfxhS98Idq3b591HGgROnXqFHPnzo3O\\nnTtnHQWAJqb8AQCajUWLFsXixYvjgAMOyDoKtBgrVqyIww8/POsYADQh5Q8AsJHvfOc7me27a9eu\\ncdRRR2W2f2iJRo0alXUEAJqQ8geA3OrQoUOUlJRkHSNJDz/8cKxYsSKz/VdWVkafPn0y2z80dy+/\\n/HJB1zv22GNj5MiRBV0TgObDrd4ByJVDDjkkPvvZz0ZExLBhw+LOO++M//znP3HnnXdGTU1NxunS\\nsu+++8Ytt9wS/fv3zzoK8B5r166NcePGxXXXXVfQda+55pptuosYQF517NgxTjjhhEbbrrvuunjp\\npZeyCdQElD9F9NBDDzV6ftlll8WNN96YURq21O677x6/+93vIiJi8eLFcfzxx2ecCFqehx56KLp1\\n6xa77rprw7YNxUR5eXn07t071q9fn1W85KxYsSKGDx8eCxYsiB49ehR9/zNnzow1a9bE1Vdf7S+k\\n8D5z5syJP/3pT/GFL3yhoOs2xZoAzd38+fOjX79+jbadeOKJUVZWllGiwlP+FMFOO+0UCxYsiL59\\n+zbafsMNN8T9998fzz//fEbJ2BLt2rVruABp27ZtY6eddir4IdfAu1q1ahV77LFHRET06NEj7rrr\\nrs1+5lOf+lTsueeejv4psH//+9/x5JNPZlL+bPgSds0110RtbW3ceeedRc8AzdWLL74Yq1evLvi6\\n+++/f8HXBGju3l/8bNj2+OOPx957751BosJzzZ8m1r59+/jNb36zUfGzwbhx44qciK314osvxvz5\\n8yMiYuedd3YtCiiwdu3aRUVFRVRUVMRPf/rTWLJkSSxZsuQjFT8bVFdXN2HClqs5XHz5jjvuiJNP\\nPjnrGABAC9KpU6f40pe+lHWMgnDkTxNr3779h9468/e//30R07AtVq1aFcOHD4+OHTvGmjVrYvny\\n5VlHYgvMmTMnevXq1Wjbz3/+85gyZUpGiXi/v//977Hnnntu8zqXX355nHbaaQVIRHMzduzYuOqq\\nq7KOAc3GSSedFM8++2zWMQCS1aVLlxg4cGA8+OCDWUfZZo78aWK1tbVxwgknxJtvvrnJ15cuXVrk\\nRGyLVatWxT/+8Q/FT44MHz486uvr46tf/WrstddejX4mT54c9fX1WUds8XbeeedYuHBhQYqfiIhu\\n3boVZB2an7KysqioqMg6BjQbtbW1BV/zb3/7W8HXBCB7yp8imD59eowZMyYuvvjihm21tbXxwx/+\\nsEnO1Qb+z8yZM7OOwIdo1apV3HjjjXHQQQdlHQUgl84999yCrnfggQcWdD2APLjkkks2uf2FF16I\\ne++9t8hpmobTvopk+vTp0apVq7j88ssjImLdunWxYsWKjFMBZOvjH/94fPnLX846BkBuXXHFFQUr\\ngFxXC2ippk2btsnr8X7mM59J5u/tjvwpovXr10dtbW3U1tYm818gACiWN954I/71r39lHQOalZdf\\nfjmGDRsWCxYs2KZ1zj///Lj66qsLlAogX6qrq+Okk06KBQsWNPzsscceSf29XfkDJO0nP/nJh75+\\n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\\nXUamP5XRQZHUQlc6kJaoeTAXYGCimQyXtPYAACAASURBVFaKIqZhKjBDchNy5KZppimD4v79Uc5x\\n5DbCnv3s/czrtdZei3n23t/nTZ/2OPPmuURtbW0cfvjh8f7777fIviCtMpnMdr3va1/7Wnzta1+L\\nMWPGROfOnWPdunVZTgZAvnK3LwAgEWVlZbFhw4a49NJLk44CBaN///5ZWWft2rVxwgknZGUtAPKf\\n8gcASNT48ePjN7/5TQwbNizpKJD33nrrraytdc899yiAAFoJ5Q8AkLgBAwbElClTIpPJxB577BHF\\nxcVJR4K89Pzzz2dtrY4dO8ajjz4anTp1ytqaAOQn5Q8AkFfefPPNmDZtWnzuc59LOgq0CmvXro0v\\nf/nLSccAoAUpfwCATZxxxhmJ7n/gwIHRpUuXRDNAvmqJU7XOOeecrK8JQP5Q/gAAm3juuedi7dq1\\nSccgRyorKyOTyUQmk4mamppo27Zt0pHYit///vcxYsSIrK55yimnxNlnn53VNQEKTadOnaJNmzax\\n++67Jx0l65Q/AMBmHXrooTF37tykY5BjlZWVUVZWlnQMtmHhwoWxYsWKrK552223xUUXXZTVNWm+\\nb33rWzF69Og46qijko4Crc5ee+0Vo0ePjvnz58f48eNj2rRpseeeeyYdK6vaJB0AAMhPa9eujYqK\\nipgzZ04ccMABOd//tGnTYv369RERMWTIkHj55ZdznqE1+OxnPxuXXHLJFp+/77774t13343hw4fn\\nMBXbMm/evFi8eHF07949q+ted911ceONN2Z1TbbtnHPOiZtuuinat28fq1atitWrV8cRRxyRdCxo\\nNWbPnt34Dx/f//73IyLiiSeeiPLy8iRjZZUjfwDIa7169YpevXrF8uXLG09L+eRj9uzZ8dnPfjbp\\nqKm0evXq6NGjRyL7Lisriz59+kSfPn1i+fLl0a1bt0RypF1RUVG0a9euybbnn3++8fM1ePDgOP30\\n0yOTyUTfvn2jpKQkoaR8Un19fdbXbNu2bdx1111ZX5et69q1a7Rv377xz3369IkFCxYknApah27d\\num32iNeysrJ46aWXUnMEkPIHgLzyrW99K6qqqhofixcvjsWLF8f++++/xff069cvvvGNb+QwJUmY\\nNWtW0hFS6a233oqxY8c267VPPvlkPPnkk9GnT58WTkVznHXWWXH99dcnHYMd1LFjxzjuuOM2u71f\\nv34JJILWZeDAgVt87sADD4xRo0blME3LUf4ArcIDDzwQixYtavKorKxMOhYf06FDh1i0aFHU1NRE\\ndXV146O5xo8f7yK1KderVy+f2zzQvXv3mDVrlqPt8sQPf/jDpCOwgzp16hT9+/ffZHvnzp03ux3I\\nrpqamqQj5ITyB0i1ioqKyGQyMXDgwDjooIOaPGpqaiKTySQdkYjo0aNH/P3vf4+DDjoodt111+1a\\no2vXrllORb5p165dHHzwwVFcXJx0lNSZOHFizJkzp9mv79KlS+y0kx8j88EhhxyS1fXef//9OPPM\\nM7O6JltXW1u72X/seO+992LNmjUJJILWZfr06UlHyAkXfAZSbdq0adt8zUUXXeTilgmbOHFi0hEo\\nEAcccEDstttujReChtbsrLPOip///OdJxyALHn300fjnP/8Z3/ve92LBggUxf/78qK2tjTvuuCPp\\naJB6H/1j8easWbMmfve73+U4UctQ/gCt3j333JN0hFZtyJAhWbumwbJly2K//fbLylrkp6eeeir+\\n9re/JR0jlU455ZRYu3Zts1572WWXxVtvvdXCidiWoUOHZn3NJO7sx7++tz311FPxi1/8It577714\\n991344MPPkg6FrQaJ5xwwmZLnsMOO6zZ/23Md8ofILXuvvvuZr0uLd/QC9Vuu+2WtdN49t1336ys\\nA63RunXronPnznHfffdt9XXHHntsjhKRS6+//noMGTKkRe4gRvP5mQSS8fvf/z7OOuusGDFiRBx+\\n+OHx/PPPx/Dhw1P1mVT+AKk1fPjwOP3007f6mquvvjpHaciFCy+8MOkIqTVu3Li4/PLLE82watWq\\neOihhxLNkHbr1q1T7rRSw4cPj8cffzzpGACJmTx5ckyePDlOPfXUuPfee5OOk3Wu1Aek2l577bXF\\n2+Bed911n+puUuS/SZMmJR0htX75y18mHSF69+4d8+bNSzoG5I2KioqsrPP5z38+Hn744aysBVDo\\n0lj8RCh/gJR744034pJLLomioqK47bbb4owzzohu3bpFUVFRXHrppbFx48akI7Z6d955Z4wfPz4e\\ne+yxHVpn4cKF7t7WgrZ0N5pcWLp0aXTr1s01ZuAT3n777cbvnc8++2w88cQTn+r9r7/+enzpS19y\\nRymAVsBpX0Crce655yYdgS247LLLYpdddolhw4ZFRHzqu5ssWLAgBg0a5OKYLWzmzJmxYsWKnN59\\n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\\nTASt00EHHRT33ntvdOjQIekokGpTpkyJL3zhCxERMXjw4PjrX/+acCI+ad68ebF48eKslj8R//oH\\nrj322COuvPLKrK4LkM969OgR06ZNa3JU+YgRI6K8vDzBVNml/Glhbdq0iXHjxsUPfvCDJtv79OkT\\nERFf+MIXlD8FoLS0tMnXp59+erzwwguOAIIWUFJSEu3bt2+y7YILLohRo0Y16/2O+oHt169fv5g9\\ne3aTbStXroyIiOuuuy5uv/32WLJkSRLR2IyvfOUrsWTJkujZs2fW1iwqKsp6oQSQ75YuXbrJtrKy\\nsliwYEEcfPDBCSTKPuVPC+vSpcsmxc/HPfnkk1FUVJTDRAD557TTTosePXpExL9Oje3WrVvCiaB1\\n+mTx83GXXHJJXHLJJfGtb30r7rrrrhymYmv+67/+K1WnJQDkk44dO0a/fv3iiSeeSDrKDlP+QDMM\\nHjw4Xn755aRjQCoNGjQobr311thtt92SjgI0w8SJE6OhoSHuvffepKMQEW+99VaMHTs2qqqqko4C\\nkDqdO3eO/v37p6L8cbevFvb+++/Hq6++usXnFy5cmMM0bK8VK1bE/vvvH6tXr46IiHfffTfWrVuX\\ncCoofO3atYtf/epXWS1+pk+fnrW1gE3tuuuuscceeyQdg3/78MMPY+3atVlb7/33348zzzwza+sB\\nFLL33nsv1qxZk3SMrFD+tLC1a9fG4MGDN3vq16xZs5pcTZz8tmLFihgyZEj84Ac/iPPOOy/uvvvu\\npCMBAGTV//t//y/pCAA5N2HChM1uX7ZsWdx22205TtMynPaVA88++2w8++yz8ctf/rLJ9rfeeive\\neeedhFKxPZ566ql46qmnko4BAC3iyCOPjGeeeWarr3nmmWf8A0hKjRw5Mm699dakYwDk3OTJk+N7\\n3/veJttPOOGEBNK0DOVPDtXX1ycdASCvrF+/PutrnnLKKXHKKafEfffdl/W1Ie2effbZKCoqittv\\nvz0OPPDAzb7m2GOPzXEqtuarX/1q1NTU7PA611xzjeIHaLVqa2ujqKgo7r777sY7Hg4fPjyrp9Um\\nTfkDQOp85zvfUf7ADjjrrLOSjkAzPfTQQzu8xoUXXhg/+clPspAGoLANHz486QgtRvkDQCJa8lbR\\nAwYMaLG1AfLFtGnTdniN888/PyZOnJiFNADkMxd8BiARLX03mQ0bNrTo+gBJ2WmnneKGG26IioqK\\n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\\nceaZZ+Y4Fc0xbNiwuPHGGz/Ve5588smYOXNmCyUCKAwDBw7c4nMHHnhgau4mq/wBWo2ePXvGokWL\\nYtGiRUlH4WMGDRoUt956a1RXV0d1dXV069Yt6Ujkqc6dO0f//v2TjpFq3/ve97b5mm9/+9s5SML2\\nmDBhwqd6/dlnn91CSQAKR01NTdIRckL508IWLly4Q88DO6a4uDh++tOfRiaTiSVLlsRBBx0UBx10\\nUGQymchkMlFaWpp0xFatqKgoDj744Nhtt92ytub06dOzthb5p7q62uc2Yf369YuRI0cmHYPNqK+v\\nj6KiovjlL38ZdXV1m33NO++8E88//3x89rOfdZFogGg9Pzu65k8LO/roo2PkyJFx4YUXxj777LPJ\\n81/5ylcSSAWtR48ePeLcc8/d4vOjR4+O73znOzlMxMftsssuUV1dnXQM4N+uvfbauOyyy7b6muXL\\nl8cf//jHHCViewwbNiz23HPPOOusszZ5rr6+Pn75y18mkAogP1VUVGzx2oZr1qyJ3/3udzlO1DKU\\nPy3s7bffjhtuuCF+8YtfRNu2bTd5fu3atQmkgtZjW9+szzrrLOVPynz1q1+Nr33ta/HQQw8lHQUK\\nTlVVVUTEVgug+vr6eOGFF3IVie30xhtvxA033JB0DICCcMIJJ2z294bDDjssNb+zK39yJC3/h4FC\\ns2rVqujSpcsWn+/du3cO0/BJH93GO5t23XXXOPzww5U/KbVy5cp47733ko6RWhs3bozLL788unTp\\nEgceeOAmzw8aNChef/31BJIBQMv5/e9/H2eddVaMGDEiDj/88Hj++edj+PDhqfo9XvkDpNoZZ5yx\\nxWtrPfjgg7FmzZocJyIXrrnmmhg3blzSMVJl3LhxcfnllyeaYdWqVVFRURErVqxINEdrsLnThQAg\\nzSZPnhyTJ0+OU089Ne69996k42SdCz4DqfaXv/wl9tprr3jppZeabN9rr71iyJAh8eabbyaUDApL\\nPlwjpHfv3jFv3rykYwAAKZbG4idC+QOk3MaNG+ONN96Igw46KIqKihofb7zxhlNHUu6EE05IOkKq\\nvPPOO7Fs2bJE9r106dJ45JFH4q233kpk/wAAhU75A0BiRowYEbfffnuLrO2aP9m1cuXKqKioiFWr\\nVuV0v/X19VFRUeHumAAAO0D5A0Bi7rzzzjj33HOjuLg462vvvvvuWV+ztXvhhRdi//33jz59+rTo\\n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\\n/7N370FS1Wf++J9RQLIVxSg4wI4KAuowGI3guhJUiAZdYzCIYNYsUWKhomgKSTaJyqzjRhONl5QV\\n8LJRk9VgCRhhVTQgARUxFy9RYQiIq+iogHgJMauD4Pz+yNf5gVzFM336fOb1quqqmb48/a56qqF5\\n0+c0QLJK+smfhQsXRrt27WL//fePiIi33norLr/88li6dGl84QtfiC5dupQyDgAAAEDySvrJnyuu\\nuCJWr17d/PvFF18cL730Unz961+P559/Pn7yk5+UMg4AAABA8kpa/rzwwgvRr1+/iIhYs2ZNPPro\\no3H11VfHN77xjbj22mtj7ty5pYwDAAAAkLySlj/r16+Ptm3bRkTEn/70p+jYsWN07949IiK6dOkS\\na9asKWUcAAAAgOSVtPzp2bNnPPDAAxERMXPmzDjiiCOab1u5cmXz178DAAAAkI2SnvD5O9/5TowZ\\nMyYuvfTS2GmnnWLy5MnNt82cOTMOPfTQUsYBAAAASF5Jy59+/frF3Llz46WXXopu3brFZz/72ebb\\njj766DjhhBNKGQcAAAAgeSUtfyIiPvvZz0afPn02uX6//fYrdRQAAACA5JX0nD8AAAAAlJbyBwAA\\nACBhyh8AAACAhCl/AAAAABKm/AEAAABImPIHAAAAIGEl/6p3AAAgG8OGDWv+edq0aZvcfsEFF8Rr\\nr70WERH3339/vP/++yXLBkD5UP4AAEDBDBo0KM4777yNyp/Nuf7665t/njlzZjz55JNRW1vb0vEA\\nKDMO+wIAgALZdddd47e//e02i5+PO+GEE2LChAnR1NQUe+21VwulA6AcKX8AAKBA1qxZ86lnrFy5\\nMo499tgM0gBQBMofAABohSZPnqwAAmgllD8AANAKderUKWbPnu0QMIBWQPkDAAAFcvPNN2c6b+XK\\nlTF48OBMZwJQXpQ/AABQIBdccEHmM88666zMZwJQPpQ/AABQMG+//Xam84YNGxajR4/OdCZAEaV6\\nKKzyBwAACqSxsTEGDx4cL730UqZzb7755hg3blymMwGKYM8994zx48fH+PHj45lnnonx48fHHnvs\\nkXesTLXJOwAAAOWhsrIy7r///k2u79evXw5p2Jonnngili5dGt26dct07pVXXhnXXXddpjMByt3D\\nDz8cNTU1zb9fffXVMWrUqOjTp0+OqbKl/Cmhtm3bNv8F/fzzz+cbBgBgA1VVVbHffvtF3759N7mt\\nqakpIiKOPPLImD9/fqmjsQXHHXdc826yVFlZGStXrsx8LkC52rD42fC6JUuWxBFHHBFvvfVWDqmy\\n5bCvErrmmmti6dKlsXTpUsdUAwBl5c4774yHH354q/d59NFHo7a2drMFEWlo27ZtXHXVVXnHACgL\\n+++/f4wdOzbvGJlQ/pTQ+eef3/zz2WefnWMSAIAdU1dXF4cddljeMfh/Dj/88LwjAFAAyp8Sevrp\\np5svjp0HAMrJ0qVLt/u+N9xwQ+y+++4tmIbt0aNHj/j973+f6cwPPvggTj/99ExnApA/5/wpoUMP\\nPTTvCAAAm3XmmWfGt771re26769//et47733WjgR2zJp0qTMZ/7gBz/IfCZAUa1YsSIeeuihvGNk\\nwid/AACIiO0/hGj27NnR2NjYwmnYlm984xuZz7zmmmsynwlQ7o499tjNXn/IIYfEggULSpymZfjk\\nDwAAERHxhz/8IU477bQ499xzt3ifI488soSJ2JrVq1dnOmv48OGZzQMokjlz5sSZZ54Zo0aNar5u\\n5MiRSX3zofIHAIBmd955Z9x55515x6DERo4cGfPmzcs7BkBubr311rj11lvzjtFiHPYFAAAF1bNn\\nz0/1+PPOOy/23HPPePDBBzNKBEA5Uv4AAEBBvfDCC1FRUREVFRXxyCOPfKLHXnHFFTFp0qR46623\\nWigdAOVC+QMAAAn4l3/5l5gyZcp23Xfs2LFx8cUXt3AiAMqFc/4AAEAC/u///i9OO+20+OY3vxnv\\nv//+Zu/Tvn37iAjf1gbQyih/AAAgEevXr4/169dHRUVF3lEAKCMO+wIAAABImPIHAAAAIGHKHwAA\\nAICEKX8AAAAAEqb8AQAAAEiY8gcAAAAgYcofAAAAgIQpfwAAAAASpvwBAAAASJjyBwAAACBhyh8A\\nAACAhCl/AAAAABKm/AEAAABImPIHAAAAIGHKHwAAAICEKX8AAAAAEqb8AQAAAEiY8gcAAAAgYcof\\nAAAAgIQpfwAAAAASpvwBAAAASJjyBwAAACBhyh8AAACAhCl/AAAAABKm/AEAAABImPIHAAAAIGHK\\nHwAAAICEKX8AAAAAEqb8AQAAAEiY8gcAAAAgYcofAAAAgIQpfwAAAAASpvwBAAAASJjyBwAAACBh\\nyh8AAACAhLXJO8COOvzww6OqqirvGK1G165dM51nf6WV5f7srvTsr7jsrtjsr7i8byk2r71is7/i\\nsrti29b+KpqamppKlAUk3xdtAAAgAElEQVQAAACAEivsJ38GDBgQDQ0NecdoNaqqqmL+/PmZzbO/\\n0spyf3ZXevZXXHZXbPZXXN63FJvXXrHZX3HZXbFta3+FLX8aGhpi+fLlecdgB9lfcdldsdlfcdld\\nsdlfsdlfcdldsdlfcdld+XHCZwAAAICEKX8AAAAAEqb8AQAAAEiY8gcAAAAgYcofAAAAgIQpfwAA\\nAAASpvwBAAAASJjyBwAAACBhyh8AAACAhCl/AAAAABKm/AEAAABImPIHAAAAIGHKHwAAAICEKX8A\\nAAAAEqb8AQAAAEiY8gcAAAAgYcofAAAAgIQpfwAAAAASpvwBAAAASJjyBwAAACBhyh8AAACAhCl/\\nAAAAABKm/AEAAABImPIHAAAAIGHKHwAAAICEKX8AAAAAEqb8AQAAAEiY8gcAAAAgYcofAAAAgIQp\\nfwAAAAASpvwBAAAASFibvAMAAMXSs2fPuOeee7Z5v4kTJ8aNN95YgkRARERlZWU89NBDG1134okn\\nxvLly3NKBEC5UP4AANulU6dO8fjjj0ePHj226/433HBD3HDDDfH888/HSSedFC+88EKsXbu2hVNC\\n67HPPvtE165d4/HHH9/ifV566aXmnwcNGhQvvviiMgigFXLYFwCwTZ06dYopU6Zsd/GzoV69ekV9\\nfX1cc801LZAMWqeDDz445syZs9Xi5+Pmzp0b8+bNi9ra2mjfvn0LpgOg3Ch/AIBteuyxx2LgwIGf\\nasbYsWPj17/+dTaBoBVr165d3HfffdGzZ89P/Nhu3bpFXV1dPPXUUy2QDIBypfwBALZqv/32i169\\nemUya+jQodHU1BRNTU1RXV0dHTt2zGQutCYVFRVRVVX1qWZUV1fHo48+Gh06dMgoFQDlTPkDAGzV\\nvffe2yJz6+vrY8qUKQog+IQuvvjiTOYMGDAgbrvttthpJ/8kAEidP+kBgNwMGjQoFixYkHcMKJTp\\n06dnNmvo0KHx7LPPZjYPgPKk/AEActWrV6/Yb7/98o4BhbFo0aJM59XU1MS0adMynQlAeVH+AAC5\\nW7BgQRx11FF5x4BWq7q6Oqqrq/OOAUALUf4AALmrrKyMKVOm+AQQbIe1a9fGJZdckunM3r17x4MP\\nPpjpTADKh/KnhD76H5WPLnvssUfekQCgbFRWVsYuu+ySdwwionv37tGjR4/o1KlTtGvXLu84fExT\\nU1MsWrQo3n333Uzn7rPPPj79A7RKQ4YMaf420o8uJ554Yt6xMqX8KYH+/ftHbW1t1NfXb3SZPHly\\n7LrrrnnHA4CtmjRpUsme69xzzy3Zc7F5/fv3j8ceeywef/zxmDJlSvzkJz+J2traOOKII/KOxgam\\nT5/eIidLf+aZZzKfCVDuZsyYscl19957b5xzzjk5pGkZbfIOkLrKysq4++67o3Pnzpvcdtxxx8Wu\\nu+4af/3rX3NIBgDbZ+LEifGzn/2sJM81duzYOP/880vyXGzq4+9bBg4cGAMHDoyIiDFjxsTq1avj\\noIMOyjEhAJTOddddFxERN954Y85JPj2f/Glhbdu23Wzx85FXX321hGkAYMf06dMn7wiUwIoVK7b4\\nvqVz587Rp0+f+OMf/xif+9znSpwMAEqvffv2sddee+UdIxPKn5xde+21eUcAKJxx48ZFbW1t9O3b\\nN+8o0Or069cvTj311LxjEBF33HFH3hEAKAjlTwtbsWLFVguea665poRpANIwfvz4qKuri8MOOyzv\\nKAC5uf322zOfecghh2Q+E4D8KX9a2Lp162L8+PFRUVGx0cmep06dGhUVFfHaa6/lHRGgcJYuXRr/\\n/d//ncTx11BOunTpEitXrtzqff72t7/F22+/XaJEbEuW3x77yiuvRH19fWbzAIrihRde2Oz1M2bM\\niMsuu6zEaVqG8qeEampqmi8jRozIOw5AYX3pS1+K008/Pe8Yrcobb7wRDz/8cN4xaGErVqyIYcOG\\nxeuvv77Z26+99to4//zz46677ipxMrbk/fffj5kzZ37qOfX19XH88cdnkAigePr377/J+5xJkybF\\n1772tZwSZc+3fQEA27Rq1aqYN29eHH300XlHoYU99thjceSRR0b79u03uW3JkiWxbt26HFKxJe+9\\n916MHDkyunTpEgsXLtzhOccff3y88sorGSYDKI5Vq1bFiBEjolOnTs3XLVu2LMdE2VP+AADb5dJL\\nL41DDz00vvrVr+YdhRa2pY+/U57eeuuteOutt2Lvvff+RAXOu+++Gy+//HIcfPDBSj2g1Vu1alWs\\nWrUq7xgtxmFfAMB2GzJkSNxwww0tNn/SpEktNhtSt2bNmqirq9viYXsbuvLKK2PMmDFRU1Oj+AFo\\nBXzyBwD4RMaNGxcREWPGjMl89s9+9rPMZ0JrsWbNmrj00kvj9ttvbz5s77777otu3bo136dPnz4R\\nEbF48eL48MMP84gJQA6UPwDAJ9LY2BjnnntuVFVVRY8ePaJTp04bHSO/I95///248MILY/HixRml\\nhNZrw8P2unfvnmMSAMqF8gcA2CFDhgyJiIiBAwfGwIEDY6+99tqhTwNNmjQpFi1a1KKHkwEAtGbK\\nHwDgU5k3b17Mmzcvdtlll5g4cWLMmDEjevTosc3HPf/88zF06NBYtmxZNDY2liApAEDrpPwBADLR\\n2NgYixYtip49e+YdBQCADfi2LwAAAICEKX8AAAAAEqb8AQAAAEiY8gcAAAAgYcofAAAAgIQpfwAA\\nAAASpvwBAAAASJjyBwAAACBhyh8AAACAhCl/AAAAABKm/AEAAABImPIHAAAAIGHKHwAAAICEKX8A\\nAAAAEqb8AQAAAEiY8gcAAAAgYcofAAAAgIQpfwAAAAASpvwBAAAASJjyBwAAACBhyh8AAACAhCl/\\nAAAAABKm/AEAAABImPIHAAAAIGHKHwAAAICEKX8AAAAAEqb8AQAAAEiY8gcAAAAgYcofAAAAgIQp\\nfwAAAAASpvwBAAAASJjyBwAAACBhyh8AAACAhCl/AAAAABLWJu8AO+rwww+PqqqqvGO0Gl27ds10\\nnv2VVpb7s7vSs7/isrtis7/i8r6l2Lz2is3+isvuim1b+6toampqKlEWAAAAAEqssJ/8GTBgQDQ0\\nNOQdo9WoqqqK+fPnZzbP/kory/3ZXenZX3HZXbHZX3F531JsXnvFZn/FZXfFtq39Fbb8aWhoiOXL\\nl+cdgx1kf8Vld8Vmf8Vld8Vmf8Vmf8Vld8Vmf8Vld+XHCZ8BAAAAEqb8AQAAAEiY8gcAAAAgYcof\\nAAAAgIQpfwAAAAASpvwBAAAASJjyBwAAACBhyh8AAACAhCl/AAAAABKm/AEAAABImPIHAAAAIGHK\\nHwAAAICEKX8AAAAAEqb8AQAAAEiY8gcAAAAgYcofAAAAgIQpfwAAAAASpvwBAAAASJjyBwAAACBh\\nyh8AAACAhCl/AAAAABKm/AEAAABImPIHAAAAIGHKHwAAAICEKX8AAAAAEqb8AQAAAEiY8gcAAAAg\\nYcofAAAAgIQpfwAAAAASpvwBAAAASJjyBwAAACBhbfIOAAAA7Jhhw4Y1/zxt2rRNbr/gggvitdde\\ni4iI+++/P95///2SZQOgfCh/AACgQNq2bRt33nlnRGxc/mzO9ddf3/zzzJkz48knn4za2toWzQdA\\n+VH+AABAQbRp0ybWrl27Q4894YQT4oQTTogJEyZEZWVlrFq1KuN0AJQr5/wBAICCmDJlSiZzVq5c\\nGccee2wmswAof8ofAABohSZPnqwAAmgllD8AAFAQJ598cmazOnXqFLNnz4699tors5kAlCflDwAA\\ntGIrV67MOwIALUz5AwAABdISh2pddtllmc8EoHwofwAonM6dO8fJJ58cTU1NzZdvf/vbeccCKIk5\\nc+bEqFGjMp05YcKEGD16dKYz+eS6du0au+66a94xoFVL9VBY5Q9spz322CPGjx8f48ePzzsKtFqV\\nlZUxfvz4+POf/xx33333Rrf99Kc/jX//93/PKRlAaS1cuDBeeumlTGfefPPNMW7cuExnsn369+8f\\n48ePj1dffTWmTp3q/SaU2J577tn8b71nnnkmxo8fH3vssUfesTLVJu8AUBSPPPJI1NTURETEIYcc\\nEiNHjsw5EbQud999d1RXV0d1dfUW73PllVfGVVddVcJUkKZf/epXccABB0TE308w/PLLL+eciI97\\n4oknYunSpdGtW7dM51555ZVx3XXXZTqTbRs8eHD8x3/8R0REHHfccXHcccfFP/3TP8Wpp56aczJo\\nHR5++OHmf+tFRFx99dUxatSo6NOnT46psuWTP7CdNvzD4N/+7d/8jwy0kKqqqujVq1fz5aPDuk4+\\n+eStFj8fmTZtWglSQpqOOuqoaGpqitNOOy369u0bffv2jeXLl0dTU1P8+Mc/jl69euUdkQ00NDRk\\nPrNt27bxy1/+MvO5bFlNTU1z8bOhESNGRG1tbQ6JoPXZ8N96G163ZMmSZD4BpPwBoCzU1tZGbW1t\\nzJ8/P5YuXdp8AUrn4Ycf3uJt3/ve92Lp0qVx+umnlzARW3PmmWf6tGPiBg4cGB07dsw7BrRa+++/\\nf4wdOzbvGJlQ/sB2OuGEE/KOAMn6+c9/HnV1dVFXVxf77rtv3nGArZg0aVJ8/etfzzsG/8+Pf/zj\\nvCPQggYNGhSdOnXKOwaQAOUPbKcHHnggzjnnnHj66adj8uTJcc011+QdCQqvoqIiamtr48wzz8xs\\n5u677x677757ZvOAjf3DP/yD11jCPvjgA5/uAkiQ8gc+gZtuuikOPfTQ+MY3vpF3FEhCu3btoq6u\\nLtOZxxxzTBxzzDGZzgQoV5deemneEWhBs2bNilWrVuUdA1qtFStWxEMPPZR3jEwofwAAiIiIww8/\\n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\\nAIMR/gAAAAAAABiM8AcAAAAAAMBghD8AAAAAAAAGI/wBAAAAAAAwGOEPAAAAAACAwQh/AAAAAAAA\\nDEb4AwAAAAAAYDDCHwAAAAAAAIMR/gAAAAAAABiM8AcAAAAAAMBghD8AAAAAAAAGI/wBAAAAAAAw\\nGOEPAAAAAACAwQh/AAAAAAAADEb4AwAAAAAAYDDCHwAAAAAAAIMR/gAAAAAAABiM8AcAAAAAAMBg\\nhD8AAAAAAAAGI/wBAAAAAAAwGOEPAAAAAACAwQh/AAAAAAAADEb4AwAAAAAAYDDCHwAAAAAAAIMR\\n/gAAAAAAABiM8AcAAAAAAMBghD8AAAAAAAAGI/wBAAAAAAAwGOEPAAAAAACAwQh/AAAAAAAADBZg\\ndQGV1a3bXCUnZ///9u47PMoyb/v4d5JJIQFSCCnUEJAiKDV0hEVclfogAj6gLAsvKE1U1HUBWaKA\\nigquCKKuLCCwoLAgVR8FKWKEACIIkRYSenoICamTef8YQHpmyCSTTM7PceQguWbu+/pN7iMzwzlX\\ncXQZ5UaNGpX58cdhdjufrl/Jsuf107Urebp+ZZeuXdmm61d26X1L2aa/vbJN16/s0rUr2wq7fmU2\\n/DlzJp24uDRHlyH3SNev7NK1K9t0/couXbuyTdevbNP1K7t07co2Xb+yS9eu9NG0LxERERERERER\\nJ6bwR0RERERERETEiSn8ERERERERERFxYgp/REREREREREScmMIfEREREREREREnpvBHRERERERE\\nRMSJKfwREREREREREXFiCn9ERERERERERJyYwh8RERERERERESem8EdERERERERExIkp/BERERER\\nERERcWIKf0REREREREREnJjCHxERERERERERJ6bwR0RERERERETEiSn8ERERERERERFxYgp/RERE\\nREREREScmMIfEREREREREREnpvBHRERERERERMSJKfwREREREREREXFiCn9ERERERERERJxYqQl/\\nRo4c6egSREREREREREScTqkJf1q2bOnoEkREREREREREnI7V4c/69es5ceIEADExMQwePJghQ4Zc\\nayuqZ5991i7nERERERERERGRP1gd/nzwwQf4+PgAMHPmTB588EHCw8OJiIiwqcPRo0ezadMmcnJy\\nbKtURERERERERERsZrT2jikpKQQEBJCTk8PevXv58MMPMRqNtG3b1qYOW7duzeeff87kyZPp1q0b\\n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\\n\",\n      \"text/plain\": [\n       \"<matplotlib.figure.Figure at 0x1c5906f07a10>\"\n      ]\n     },\n     \"metadata\": {\n      \"tags\": []\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"make_plot(img, seg, rec, samples_global, fs=2)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"colab_type\": \"text\",\n    \"id\": \"whYBzCFlWhPO\"\n   },\n   \"source\": [\n    \"# Plot samples from the local latents only\\n\",\n    \"When sampling from the local latents, all but the most local latent scales are constrained to their means.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 0,\n   \"metadata\": {\n    \"colab\": {\n     \"height\": 1000\n    },\n    \"colab_type\": \"code\",\n    \"executionInfo\": {\n     \"elapsed\": 14843,\n     \"status\": \"ok\",\n     \"timestamp\": 1568134333457,\n     \"user\": {\n      \"displayName\": \"Simon Kohl\",\n      \"photoUrl\": \"https://lh3.googleusercontent.com/a-/AAuE7mAV5aCJQ_5RldkCyse6s0nQKEvpBRdNbA80iGeZEw=s64\",\n      \"userId\": \"12229574298416150258\"\n     },\n     \"user_tz\": -60\n    },\n    \"id\": \"MIbB8BFPWmir\",\n    \"outputId\": \"043f11ce-1c0d-4073-967d-d53cbf665bb9\"\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAABH8AAAmlCAYAAABQWRQLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvbuPdNlV/r+qurvu3f1eZ2yPhzG2BbYwCXLiCCGQEATA\\nX4AQETIhMiBBAMhIyBYIyREBRCREJAgiAwI5skQK6ZjB45n31pfquvSl6hfM7zn9qafXPlX99un5\\naqxaUqurTp2zL2uvy7PWvpzWcrlcxpa2tKUtbWlLW9rSlra0pS1taUtb2tKWfiyp/f+6AVva0pa2\\ntKUtbWlLW9rSlra0pS1taUtbuj/aJn+2tKUtbWlLW9rSlra0pS1taUtb2tKWfoxpm/zZ0pa2tKUt\\nbWlLW9rSlra0pS1taUtb+jGmbfJnS1va0pa2tKUtbWlLW9rSlra0pS1t6ceYtsmfLW1pS1va0pa2\\ntKUtbWlLW9rSlra0pR9j2iZ/trSlLW1pS1va0pa2tKUtbWlLW9rSln6MaZv82dKWtrSlLW1pS1va\\n0pa2tKUtbWlLW/oxpt3/1w14Xfr2t78dR0dHERGxXC5juVzeuGexWFTXS/foeqvVqv50nf9F+j0j\\n3uv36Tcvn/dl7Svdq+u6pra32+2Vfl1dXcX5+XnMZrM4OzuL+Xxe8YX3ez3607UnT57E3/zN3xT7\\nflv6+Z//+XjvvfdWrrF/7Xa7qrvdbke73V7pq/q3WCyqtvOz98nL5LWdnZ1otVqxWCzi8vJy7Tio\\nDc4jjsHu7m4sl8u4uLiIq6urYnvUp2xMFovFSvleP8eO5eu+nZ2d6p7PfOYz8W//9m9pv25Lf/d3\\nfxfT6TTa7XZcXV3F1dVVtFqt2N3djd3d3Wi1WnF5ebmif4vFovrONvqYlXgvGeA9qlPXr66uijrO\\ncnZ3d2M4HMaTJ0/i4cOHsbOzE/P5vBon8X1vb6+qp9vtxmAwiFarFWdnZzGZTFbq09i57Pm4Uv/P\\nz8+rz/ota3+r1Yperxe/+Iu/uGZkNqM/+7M/i5cvX8ZyuYzd3d3Y29uLTqcTvV4vut1u9bnT6USn\\n06nG1NvkvKV+kgf+u19fLpexs7NTfSYvaZtZjstLqX1eX8l+1/VDbcjsS8YL3ttqtWIwGMSv/Mqv\\npPXeln7t134t3n///Rvtpl5R5mij6tpNu9Xr9WKxWMRsNqtkVCRdq/OTsqnSefGCz/EZtS8bQ7/O\\n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\\nAACoMMkfAAAAgArbuuwANtc73/nOWLx4cdlh9Bljx46NBx54oGnlqb/Wamb9qbvWU3/tS921N/XX\\nvvRb2pttr72pv/al7trbpuqvbZM/ixcvjmeeeabsMNhM6q99qbv2pv7al7prb+qvvam/9qXu2pv6\\na1/qrvdx2xcAAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABA\\nhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8A\\nAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFSY\\n5A8AAABAhUn+AAAAAFSY5A8AAABAhUn+AAAAAFTY1mUHAAD0fm9605vi85//fJefOfHEE1sUDQAA\\nb4TkDwBQaI899oj58+dHRES/fv1ixIgRXX7+f/7P/xkREW9/+9tj4cKFPR4fAADd47YvAKDQAQcc\\nECNHjoyRI0duMvETEfXP/v73v49arRZXXXVVDB06tAWRAgDQFVf+AAAbOe+88+Jzn/vcFpXxkY98\\nJIYPHx4vvfRS4ftHH330FpUPAED3SP4AUClr1qyJiIgBAwaUHEn7+vznPx//+q//2pSyDj744Ibv\\nZbeJRUR0dnbGW9/61qZMEwCADbntC4DKOPTQQ6N///7Rv3//OOyww8oOpy19+tOfjnPOOSc6Ojp6\\nfFpZXfXv3z/22muvqNVqUavV4plnnok99tijx6cP7erwww+v/2TbTXd+jjvuuLJDB6AkrvwBoBJm\\nzJgRF110Uf3/f//3f3f1zxv0zW9+M0455ZSyw4hddtklrr/++nj00UcjIuKaa66J6667ruSooHf4\\n7Gc/G+eff/5mffeyyy6LnXfeOWbOnNnkqADo7SR/AGhr/fv3j4MOOihmz569wevZ7V90zxe+8IVe\\nkfjJTJo0KSZNmhQRr1/lEBHxu9/9Lvbcc88yw4JSTZs2bbMTP5nPf/7zsXTp0rj44oubFBUA7UDy\\nB4C2tmTJkth22203en3YsGElRENPGjlyZEydOjV++9vflh0KtLXZs2fHunXr4pJLLik7FABaxJg/\\nALStGTNmSPI0wa677hof/vCHyw5jk8aOHRuHHHJI2WFAac4444ymlTV37tw499xzm1YeAL2b5A8A\\n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\\n197UX/vSb2lvtr32pv7al7prb5uqv45arVZrUSx1b3/72+P++++P/v37119bu3Zt7LfffvEf//Ef\\nrQ4HAAAAoLJKGfB5yJAh8dvf/jb++q//uv7aI488EoMHD+52Ge985ztj8eLFPREeBcaOHRsPPPBA\\n08pTf63VzPpTd62n/tqXumtv6q996be0N9tee1N/7UvdtbdN1V8pyZ+TTz45/vmf/zn+7u/+Lnbc\\nccf44x//GHfffXfMnDmz22UsXrw4nnnmmR6Mkp6k/tqXumtv6q99qbv2pv7am/prX+quvam/9qXu\\nep9Skj+HHHJITJkyJW699dZYunRpvPnNb44TTjghxo8fX0Y4AAAAAJVVSvInImL8+PGSPQAAAAA9\\nrLTkz5133hm/+MUvYtmyZZGOOX3++eeXFRIAAABA5fQrY6IXX3xxnH322bF+/fr4+c9/HiNHjowH\\nHnggRowYUUY4AAAAAJVVSvLnhhtuiMsvvzzOOOOM6N+/f5xxxhlx6aWXGg0cAAAAoMlKSf68/PLL\\nsfvuu0dERP/+/WPt2rUxderU+MUvflFGOAAAAACVVcqYP7vssks8/vjjMWHChJgwYUJcffXVMWLE\\niNhmm23KCAcAAACgskpJ/nzqU5+KF198MSIiPvOZz8Rpp50WK1eujLPPPruMcAAAAAAqq+XJn/Xr\\n18eAAQPiLW95S0RETJ06NW6//fZWhwEAAADQJ7R8zJ9+/frFiSeeGAMGDGj1pAEAAAD6nFIGfP6b\\nv/mb+PWvf13GpAEAAAD6lFLG/Nlpp53iuOOOi3e/+92x4447RkdHR/29U045pYyQAAAAACqplOTP\\n6tWr4z3veU9ERCxZsqSMEAAAAAD6hJYnf9auXRtf/vKXIyLil7/8ZdRqtfp7e+21V6vDAQAAAKi0\\nliZ/fvjDH8bDDz8cX/va1yIiYvr06bHttttGrVaLVatWxWc+85mYNm1aK0MCAAAAqLSWDvg8b968\\nmD59ev3/AQMGxD333BP33ntvXHHFFXH99de3MhwAAACAymtp8mfx4sUxceLE+v/jxo2r/z1x4sT4\\nz//8z1aGAwAAAFB5LU3+rFy5MlauXFn//9///d/rf7/66qvx6quvtjIcAAAAgMprafJnwoQJ8eCD\\nDxa+d//998f48eNbGQ4AAABA5bU0+XP00UfHrFmz4o477oj169dHRMT69evj9ttvj3PPPTeOPvro\\nVoYDAAAAUHktfdrX+9///liyZEl89rOfjbVr18bIkSPjxRdfjP79+8dJJ50UH/jAB1oZDgAAAEDl\\ntTT5ExHxsY99LI488sh4+OGHY9myZTFy5Mh461vfGsOHD291KAAAAACV1/LkT0TEsGHDYr/99itj\\n0gAAAAB9SkvH/AEAAACgtSR/AAAAACpM8gcAAACgwkoZ8wcA6P3mzp3b5fvnnHNO/PGPf2xRNAAA\\nbC7JHwBgIw899FC8/e1v7/IzH/7wh2P9+vWbLGvBggWx7777Nis0AADeIMkfAKBu2LBhcemll24y\\n8RMRMWLEiG6Vuc8++0StVotPfOITcdlll21piAAAvEHG/AEA6nbdddf48Ic/3CNlf+tb34orr7wy\\nDjnkkB4pHwCAYpI/AEDL/K//9b/i+uuvjzVr1sSaNWvirLPOKjskAIDKk/wBAFpqq622iv79+0f/\\n/v3j3HPPjVqtFu9973vLDgvaxuGHH17/qdVq3f457rjjyg4dgJIY8wcAKN11110Xd9xxR8P3P/Wp\\nT8XixYtbGBH0Tp/97Gfj/PPP36zvXnbZZbHzzjvHzJkzmxwVAL2d5A8AULptttkmDj/88IbvH374\\n4fG73/0u9txzzxZGBb3LtGnTNjvxk/n85z8fS5cujYsvvrhJUQHQDtz2BQAAfcjs2bPjhBNOKDsM\\nAFpI8gcAANrAGWec0bSy5s6dG+eee27TygOgd5P8AQCANrDXXns1tbyzzjrLFUAAfYTkDwAAtIHb\\nbrut6WXOnTs3ZsyY0fRyAehdJH8AAKANfOc73+mRcmfPnh333ntvHHDAAT1SPpt27LHHxr333lv/\\n2XXXXcsOCagYyR/oplqtFhdccEFstdVWZYcCfd6OO+4YtVpto5/+/fuXHRo9aMqUKXHBBRfE1lt7\\nWCl903XXXRc33XRTj5S9//77xw477NAjZdO1yZMnx+WXXx77779//efpp5+ORx99NIYPH152eEBF\\nSP7AG3DaaafFbrvtVnYY0Geddtppcdppp8Xvf//7skOhJKeddlqcd955cfTRR5cdCpRi3rx5ZYdA\\ni0ycODGuu+662G677coOBagAp86gmw4//PC44YYb4sYbb4w999yz7HCgz7nhhhvisMMOKzsMeoHP\\nfvaz8eqrr8aAAQPi29/+dtnhQEtdeeWV8dhjj8X8+fPLDoUmueaaaxq+d9BBB8V9990XU6ZMaWFE\\nQBW58ge66cYbb4yTTz45dt9993jkkUdi2223LTsk6BMmTJgQs2fPlvhhA4MHD47LLrssarVa2aFU\\nytZbbx0TJkyIzs7OqNVqcdFFF8WECRNiwoQJ9nu9yK9+9auyQ6CJJk+evEXvA3SH5A+8AbNnz46n\\nn346pkyZEh/72MfKDgcq7+Mf/3g89thjnkQDLfLVr341HnvssZg0aVJERJx88snx2GOPxWOPPRZX\\nX3218UegJMcff3zZIQBtTvIHgF5p+vTpcdFFF5UdBvQpp556asP3DjroIFecQEm++c1vxoknnlh2\\nGEAbk/wB+oz8k6FmzpxZdkh9XkdHR8ycObPwyV3f+c53YtCgQWWH2Od0dnbG8ccfH6tWrSo7FEqw\\n4447xsMPPxwPP/xw4fvjx4/vsceNA40NHDgw5syZE3vssUfZoQBtSvIHNsPixYvjvvvuKzsMaHsX\\nXHBBzJo1q+wwyPnWt74VTz75ZNlhUIIlS5bE2972tnjb294WF1xwQf31008/vf7zz//8zyVGCH3L\\nbbfdFqeffnr9/9NOO63EaIB25mlfsBn+x//4H7FkyZKyw4C219UtJpTr3e9+d/z3f/932WFQos99\\n7nP1Wy8XL15ccjT0tFtuuSVuueWWssPok97znvfEHXfcERERCxcujPe85z1x5513Rq1Wi2nTpsXL\\nL78cv/rVr+KOO+6I6dOnS8ACm0XyB96gv/qrvyo7BDZTR0dH2SGQmDhxYtkh0IU//vGPsdtuu8U9\\n99wTu+yyS9nhFHrmmWfiwAMPLDuMynrttdckffqIBx98MN7//veXHUaf9eSTT8YDDzwQERH77bdf\\nRGzc37zzzjv1Y4At4rYvAEpx3nnnlR0Cm/DUU0/F9773vbLDaOjyyy+Pp59+uuwwoK19//vfj/33\\n37/sMPq0p556Kvbbb7964gegJ7jyBwBo6Ktf/WocddRRve6qx+233z5effXVssOAtnfnnXfG+vXr\\nyw4DgB4m+QMANPTqq6/GxIkT49Zbb62/9r73va+UWFasWBHz58+P4447Ll544YVSYoDeYPXq1Zu8\\nBeiBBx6Ifffdt/C9BQsWxN577x0rVqzoifAA6IXc9gVAKS6++OI49thj47vf/W7ZodANBx10UP3n\\nrLPOKiWGj370o3HQQQfFH/7wh1KmD+1k+vTpha8vXLgwDjvsMIkfgD5G8geAUtx1111xxRVXxCc+\\n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\\n77///hklAgAAAEhPJuXPfffdF6NGjYrtttsutt1227rtZWVl8dhjj2URCQAAACBJmZQ/1157bYwZ\\nMyYOPvjgLHYPAAAAUDIyuebPxx9/HD169Mhi1wAAAAAlJZPy59RTT40bbrgh/vWvf2WxewAAAICS\\nkclpX7fffnusWLEibr311thxxx3X+1xVVVUWkQAAAACSlEn5c9VVV2WxWwAAAICSk0n5881vfjOL\\n3QIAAACUnEyu+bNmzZq47rrr4tBDD42vf/3rceihh8Z1110Xq1evziIOAAAAQLIyO+3rb3/7W4wc\\nOTJat24dr7/+eowfPz7ee++9uPDCC7OIBAAAAJCkTMqfP//5zzF58uTYaaedIiKiQ4cO0bVr1zjy\\nyCOVPwAAAAB5lMlpX7lc7gttBwAAAGDLZFL+HH744TF48OB48sknY/78+fHEE0/EGWecEd/5zney\\niAMAAACQrExO+zr//PPjhhtuiFGjRkVtbW20aNEijjjiiDj99NOziAMAAACQrEzKn2222SbOPvvs\\nOPvss7PYPQAAAEDJKFj589e//jX222+/iIiYNWvWJl+3//77FyoSAAAAQPIKVv6MHDkyHnrooYiI\\nGDp06EZfU1ZWFo899lihIgEAAAAkr2Dlz7riJyLi8ccfL9RuAQAAAEpaJnf7Gjx48Ea3V1ZWFjgJ\\nAAAAQNoyKX/+8pe/bHT7M888U+AkAAAAAGkr6N2+xowZExERa9asqft4ncWLF0fr1q0LGQcAAAAg\\neQUtf5YuXRoREblcru7jdXbdddc488wzCxkHAAAAIHkFLX8uv/zyiIjYe++9Y+DAgYXcNQAAAEBJ\\nyuSaP9tss028/PLL6217+eWX4/77788iDgAAAECyMil/xowZE7vuuut621q1arXBdYAAAAAA+HIy\\nKX/ee++9+OpXv7reth122CHefffdLOIAAAAAJCuT8qdjx47xyCOPrLdt6tSp0bFjxyziAAAAACSr\\noBd8Xue8886LQYMGxZ/+9Kdo27Zt/OMf/4hZs2bFzTffnEUcAOALaN68eQwePPgLfU1VVVU88cQT\\n9ZQISte2224bF1xwwWZfN3Xq1Jg1a1YBEgHQEGVS/nzjG9+Ihx56KB566KF44403oqKiIoYOHbrB\\ndYAAgIahU6dO8Yc//CEiIpo0aRKdO3f+Ql8/fPhw5Q/k2U033RQHHnhgdOnSZbOvff/995U/ACUs\\nk/InIqJ169YxaNCgrHYPAHwOzZs3j1mzZn3pU7NHjhwZzz//fDz00EN5Sgalq6ysLH7+859/offS\\no0ePjueeey6qqqrqLxgADVYm5c/5558fZWVlG/3clVdeWeA0AMCmnHHGGXm7Jt+DDz4YgwcPjhtv\\nvDEv60Gp2mabbeLSSy/9wl83bdq0+NGPfhR33HFHPaQCoCHL5ILP7du3j3bt2tU9vvKVr8QTTzwR\\nTZs2zSIOAFAg1157bcyZMyc6dOiQdRQoSePGjYs5c+bEnDlz4oYbbsg6DgAFksmRP5WVlRts69+/\\nf4wbNy6DNADApowYMSIGDBgQXbt2zct62267bZSXl8f8+fMjImLs2LExfvz4WLVqVSxYsCAv+4DU\\nfZ5r/GzK9ttvH+Xl5RERUV5eHosWLYorrrgiX9EAaKAyOfJnY7p06RLPPPNM1jEAgAKqrKyMmpqa\\nmDlzZhx00EFZx4EGb+DAgfHCCy/kbb3LL788GjdunLf1AGiYMjny59N3Gvjoo4/ij3/8Y3Tq1CmL\\nOABAxlq2bBkTJ06M7t27OwIIPsNxxx2X9zVfeOGFuqOBAEhTJuXP0KFD13u+3XbbxZ577hlXX311\\nFnEAgAagZcuWMX/+/OjYsaMCCDZh8eLFeV+zW7duMWnSpOjfv3/e1wagYSh4+ZPL5eL222+P1q1b\\nR6NGmd1pHgBooCZPnhxf//rXs44BDdLZZ58dZ511Vt7X7dKlS3Tp0iVeeumlvK8NQPYKfs2fsrKy\\n6Nu3b2y1VYO53BAA8BmOPPLIgu7v6KOPLuj+oNjsu+++eV+za9euebuwO0Cx6dSpU92dEO+7776s\\n49SLTA696dKlSyxcuDA6duyYxe4BgC9g3rx5UV5eHi+++GLB9kd2dtlll2jRosUG25ctWxYrV67M\\nIBGf9uKLL8brr78erVu3zuu6kyZNirKysryuCVAMmjRpst6dEK+//voYMmRIrF69OuNk+ZNJ+fPN\\nb34zTj311Dj66KOjVatW6/2Sca4xAEDh/ehHP4p27drFAQccEIcddtgGn3/kkUdi5syZMWrUqAzS\\n8e9Wr14dQ4cOjdtuuy3rKABJqqysjIiIM888M+Mk+ZNJ+fP888/HbrvttsGt3cvKypQ/AMB6Tj/9\\n9Bg8ePB621555ZU45phjMkqUnuOOOy7Gjh0b22+//SZf06dPn+jTp08MGDAgLrnkkpg4cWIBE/Jp\\n999/f5x66qnRvXv3rKMAJKmyslL582X95je/yWK3QImprq7+zOsXjB07NrnDOSEFc+fOrbvOUE1N\\nzUZfk+oh2VkpKyv73Kf7lJeXx84771zPidict99+O6qrq/Na/vgjLMAnamtrY//99886Rl5lctXl\\no446aqPb/QUPKKTKysq4+uqrs44BfErnzp2jpqZmk8XPOuXl5dG0adMCpUrb3XffHc8//3zWMfiC\\nBg0alHUEgCSNGzcuFixYkHWMvMqk/Fm0aNEG23K5XCxZsiSDNEApW3c+L1B8pk2bFsuXL886BmTm\\npptuyjoCQHJeeeWVuOGGG7KOkXcFPe3rggsuiIiINWvW1H28zmuvvRadOnUqZBwgcd26dYt58+Zt\\n8s6CKR7OCfVl1apVsXz58mjevHnWUSLik7sdufBwfh144IHrPa+uro7mzZvXzXzZsmXx5ptvxrPP\\nPhs33nhjFhH5lHzemWvMmDHx+9//Pm/rARST6urq5O92WNDyp127dhv9OCJin332icMPP7yQcYAS\\n0L1795g4cWIcfPDB622vra2NgQMHJnc4J9SXefPmxfjx42P48OFZR6FAunXrFj179oyePXtGRMSU\\nKVNi5syZ2YZiPYMGDYq33nprgz+qflG/+MUv4qKLLspTKgAaooKWP+tOr9hrr702+OsSQH1YV/J8\\n+miFVatWxbx58zJKBcVp/Pjx8YMf/GCTR9ORnqqqqqiqqso6Bp/hiiuu+FLlz9ChQ+Pyyy/PYyIA\\nGqJM7vbVuHHjWLx4cbRt2zaWL18eo0ePjq222irOPffcBnM4OZCO2traqK2tzToGFL3a2tqoqalp\\nEOXP/Pnzs44ADcJbb70Vxx9/fNx6662x3XbbfaGvfe+996K6ujpyuVw9pQOgocjkgs8jR46Mrbfe\\nOiI++WvF2rVro6yszOGmANDA9e3bN0aOHBnTp0/PLMP48eM3eedQKEV33313nHnmmXHttdd+oa8b\\nPHhwTJ48uZ5SAdCQZHLkz7Jly6J169axdu3amDFjRjz++OPRuHFjp4IBQBEYMWJEtGjRImbOnFnw\\no4DGjRsXQ4YMKeg+oRhMmDAhGjVqFLlcLs4999zNvr579+4xa9asAiQDoCHI5Mifr371q7FixYr4\\n61//Gh07doztt98+IiLWrl2bRRwA4Auqra2NTp06RU1NTcFutz558uSorKyMVatWFWR/UGzWrl0b\\n1dXV8dFHH23yNe+//34cd9xxih+AEpPJkT8/+MEPon///rFmzZq48MILIyLi+eefjw4dOmQRBwDY\\nQv9+R6gWLVrE4MGDt3itqqqqzzydbMSIEVu8NpSKCRMmRGVlZey9994b/fyZZ54Z99xzT4FTAZC1\\nTMqfQYMGRe/evWPrrbeuu+V7y5Yt4xe/+EUWcQCAL2HdHaGaNGkS48aNW+9zkydP/lynhpWXl0dt\\nbW3BjiKCUnTooYfG448/nnUMADKQSfkTEbHHHntERMS//vWviIho3759VlEAgDxYtWpVVFdXr7et\\nU6dOG2yLiOjYsWPMnz8/xo4dGzfccEOhIkJJWLBgQTRp0mS9bVdddZXiB6CEZVL+VFdXx6hRo+Lv\\nf/973Xn7uVwuysrK4qWXXsoiEgBQT7p167bBtjPOOGODo4SA/Ojfv3/WEQBoYDIpf372s5/FIYcc\\nEpdddllsu+22WUQAADKk+AEAKJxMyp/XXnstzjnnnCgrK8ti9wAAAAAlI5Nbvffu3TtmzJiRxa4B\\nAAAASkomR/6sWrUqKisrY999941mzZqt97krr7wyi0gAAAAAScqk/OnUqVN06tQpi10DAAAAlJRM\\nyp/KysosdgsAAABQcjIpfyIinn766Zg8eXLU1tZGixYtom/fvrH//vtnFQcAAAAgSZlc8Pnee++N\\nc845J5o3bx69e/eOFi1axHnnnRcTJ07MIg4AAABAsjI58ufWW2+N2267Lfbcc8+6bd/5znfirLPO\\nioEDB2YRCQAAACBJmRz58/bbb0fHjh3X29ahQ4d45513sogDAAAAkKxMyp999tknrrjiivjwww8j\\nIuKDDz6IK6+8Mvbee+8s4gAAAAAkK5PTvkaOHBnnnntufOMb34imTZvGO++8E3vvvXdcffXVWcQB\\nAAAASFYm5U+LFi3it7/9bSxdurTubl+tWrXKIgoAAABA0jIpf2bMmBG77bZb7LHHHnWlz4IFC+KN\\nN96IAw44IItIAAAAAEnK5Jo/o0aNiu233369bdtvv32MGjUqizgAAAAAycqk/HnzzTejRYsW621r\\n0aJFLF++PIs4AAAAAMnKpPxp27ZtzJo1a71tf/nLX6JNmzZZxAEAAABIVibX/KmsrIwzzzwz+vfv\\nH23bto3FixfHfffdF5dddlkWcQAAAACSlcmRP7169YoJEybEBx98ENOnT48PPvggbr311ujVq1cW\\n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\\nXkw9mDlzZrz55psF298hhxxSsH1BsZs0aVLe1vrud78br732Wt7W44vp3r17DBkyJIYMGRL7779/\\n1nGg5Oyyyy4xadKkeO211+Kxxx6LIUOGJPcz0bvkAsrnL2iAUvHss8/WPX76059u8nXHHXdc/PWv\\nfy1gstIwZcoUR+NAA3XLLbdkHYE8Oeyww2L06NExevTomDRpUuyxxx5ZR4KSMn369DjssMM22H7P\\nPfdkkKZ+KH/qWaNGjeKXv/xl5HK56NevX93pCp07d47OnTvH1ltvnXVEgAajadOm0blz57qflblc\\nLvbdd9+6x+bss88+seuuuxYgaWl59dVXC7av3XfffaPb27dvX/e7c5tttilYnlLTpk2b9b7/xowZ\\nE507d4527dqt9xqg/rRu3Tr23HPPrGNASenWrdtGt//Hf/xH7LzzzgVOUz+UP/WsVatWccEFF2yw\\nfe7cuTF37tz45S9/mUEqgIZn2223jd/97ncxd+7cL7XO9ddfn6dErHPEEUcUbF8PP/xwnHbaaRvd\\nvu5359VXX12wPKXmnHPOWe/5WWedFXPnzo1Zs2bFxRdfHBdffHE8+eSTn6uMpTCuvPLKvK43bNiw\\nvK7Hlnn44Yfj4osvjoMOOijrKFDSvva1r0VlZWXWMfJC+VPPNncLziFDhhQoCUDDNnv27IKWDDRc\\nv/rVr+L000+ve15ZWRkdO3ase/7nP/85i1gl4cEHH9zo9tatW8fIkSNj5MiRsfvuu8d+++1X4GRs\\nyhVXXJHX9dxxr+EYOXJkTJo0ab2ffwBbqlHWAVL261//Ojp37lz3vLq6Orp27ZphIoCGpaysLPba\\na68YP358fO1rX8s6Dp+hvLw8XnzxxYLsq0mTJjFu3LhYunRpbLXVVusdzTV8+PCC336+lMybN2+z\\nr3nvvfdixYoVBUhDoS1cuDA6dOiQdYyS9uGHH8bLL78cEZ98Pw4cODDjREAqlD/16JRTTlnv+YEH\\nHhinnHJKnH/++dG8efN46KGH4oknnsgoHUD2Ro8eHeeee27WMWigfv/732cdgY0YNGiQm1g0ICNG\\njMjLOnPmzIn+/fvnZS2+uKlTp8Zpp50WP//5z+O2227LOg7w/1u6dGk8+uijWcfIC6d9FdDKlSvj\\nqquuioqKimjbtm0cf/zxcdVVV2UdCyATN998s+IHGpg33ngjLrvsss98zd13312gNHweZ511Vl7W\\n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\\nG26If/mXf0k4Wfa4OEKOHXvssTF79uxNth9xxBEREVFaWprvSACtUps2baJHjx4REbH//vtv8ruz\\nS5cuUVFRsdU/QPfcc8/Yc88947333stZVnKjS5cusXTp0jjwwANj2bJlSccpas8991z069dvo213\\n3313vPLKKzFnzpyEUvFFDQ0NWZ/51a9+NTp37py30pfPTJo0KUaOHNn889KlS6O+vj6OOeaYWLVq\\nVYLJoDhs7vdpRUVFVFVVpeK6aI78ybEzzzxzi4+PHz8+T0kAWq9zzz03rrnmmqivr4/6+voWS/Nt\\n1a1btzjggAOymI58+/Of/xzHHnts0jGKUrt27aKqqiq+9KUvtfj4n/70pzwnIt9KS0vjRz/6UdIx\\niIhDDjnEndiArHHkT45ddtll8cknn2z2cLEJEyak6lAygO2x6667xvz586Nbt25ZO91n8eLFUVdX\\nl5VZJKNz585x//33x9tvvx29e/dOOk5RefbZZ+Pggw9OOgYA5M2sWbOSjpAXjvzJsfXr10dTU9MW\\nn/Ozn/0sT2kAWpeSkpLo1auX67ywiU6dOkWvXr2a7+iWyWSiV69eScdKvQEDBsTy5cu3+JydOTIP\\n2HYffvhhvPnmm0nHgNTr3r37Fh+/4IILUnEdLkf+5MHs2bNj+fLl8f/+3/9r3tbY2Bg//vGPIyLi\\n+uuvTyoaAGzVjTfeGD//+c+TjhEzZsyIvn37Jh0j1VasWBHDhg2L4447brOn/hx00EFx9NFHuzBw\\nK/Dd73436QhkyaOPPhrvv//+RttWrlwZd955Z0KJgIiIN998M0aMGBEvv/xy0lF2mvInD55++uk4\\n4ogjorS0NMaPHx+XXHJJrFixQukDFL1cXKz0lFNOiVNPPXWLdwRj+/ziF7+IZcuWxX/9138lmuPE\\nE09MdP/F4umnn46nn346nnnmmXjsscc2ebxbt27xla98RfnTCowaNSrrMz/++OO45JJLsj6XLXvy\\nySfjySefTDoGFKVvfvOb8cYbb7T42Fe+8pXUXABf+ZMnG/4fZvz48S7yDPBXXbt2zfrMv/mbv4nd\\nd98963OL3dKlS+PVV19N5GLay5Yti+OPPz41H74KxRtvvBHLli2L1157LV588cX43ve+l3QkvmDR\\nokVx8sknZ2XWypUr44UXXoiBAwdmZR5AoXjzzTeje/fu8ctf/nKj7d/5zndS9dlD+QNAIs4///yk\\nI7AdXn755RgxYkTMnDkz9t9//7zt9/XXX48RI0bEK6+8krd98pkVK1bEiBEjYt68eUlHYTMmTJgQ\\nS5Ysaf556tSpOzzrO9/5TvzhD3/IRiyAgvPyyy+nvvxW/gCQiFNOOSXpCGynZ555Jnr37h0VFRUx\\nZ86cvOxz1apVyoeEvPPOO/5vXwCmTZvW/P2OlD+VlZXxm9/8JlatWpXNWAC0Mu72BUAihg0bFrvu\\numssWrQo67MPP/zwrM/kM++++248+eSTMXr06KipqYm5c+cmHQn4qyeeeGKrz6mpqWn+KikpiWnT\\npil+AIqA8geAxHz88ccxdOjQrBdA++67b1bnsam77747Bg0aFKeddlqMGTMmXn/99azvY+LEifH9\\n738/63MhrU455ZQYM2ZMLFu2bLPPGTRoUPMXAMVD+QNAohoaGuKrX/1qdOnSJSvzysrK4uKLL87K\\nLLbunXfeienTp8dBBx0URxxxxE7P69evX5SVlUVZWVlcd9118fDDD2chJRSHDz74IKZPnx6HHHJI\\nlJWVxTXXXJN0JABaCdf8ASBxH3/8cbzxxhtRUlIS11xzTfTu3Xuzz62oqIiePXu2+NjMmTNj7dq1\\nuYrJFqxbty6ee+65KCkpiYjPbgd+8803R0TE0KFDt/r6m2++Of75n/85pxmhWKxbty4iIq644oq4\\n4oorEk4DQGug/AGgVZk4ceIWHz/ssMPi0EMPbfGxBx54IBeR2AGvvfZaDBs2LCIixo8fHzfeeGOL\\nz6uuro77778/ZsyYkc94AABFRfkDQEFZsGBBLFiwIOkYbIcpU6bElClTYsGCBVFeXh4REX379o3F\\nixcnnAwAoDgofwCAvDjssMOSjgAAUJRc8BkAAAAgxZQ/AAAAACmm/AEAAABIMeUPAAAAQIopfwAA\\nAABSTPkDAAAAkGLKHwAAAIAUU/4AAAAApJjyBwAAACDFlD8AAAAAKab8AQAAAEgx5Q8AAABAiil/\\nAAAAAFJM+QMAAACQYsofAAAAgBRT/gAAAACkmPIHAAAAIMWUPwAAAAAppvwBAAAASDHlDwAAAECK\\nKX8AAAAAUkz5AwAAAJBiyh8AAACAFFP+AAAAAKSY8gcAAAAgxZQ/AAAAACmm/AEAAABIMeUPAAAA\\nQIopfwAAAABSTPkDAAAAkGLKHwAAAIAUU/4AAAAApFjbpAPsqKOOOiq6du2adIyi0aVLl6zOs375\\nlc31s3b5Z/0Kl7UrbNavcPncUti89wqb9Stc1q6wbW39SjKZTCZPWQAAAADIs4I98mfAgAHR2NiY\\ndIyi0bVr15gzZ07W5lm//Mrm+lm7/LN+hcvaFTbrV7h8bils3nuFzfoVLmtX2La2fgVb/jQ2Nsay\\nZcuSjsEOsn6Fy9oVNutXuKxdYbN+hc36FS5rV9isX+Gydq2PCz4DAAAApJjyBwAAACDFlD8AAAAA\\nKab8AQAAAEgx5Q8AAABAiil/AAAAAFJM+QMAAACQYsofAAAAgBRT/gAAAACkmPIHAAAAIMWUPwAA\\nAAAppvwBAAAASDHlDwAAAECKKX8AAAAAUkz5AwAAAJBiyh8AAACAFFP+AAAAAKSY8gcAAAAgxZQ/\\nAAAAACmm/AEAAABIMeUPAAAAQIopfwAAAABSTPkDAAAAkGLKHwAAAIAUU/4AAAAApJjyBwAAACDF\\nlD8AAAAAKab8AQAAAEgx5Q8AAABAiil/AAAAAFKsbdIBAIB0qKqqanF7U1NT3HbbbXlOAwDABsof\\nAGCHPPzww9GjR4/mnysqKlp83kcffRSVlZUxZMiQWLp0ab7iQVEaM2ZMjB8/Pvr27Zt0FABaEeUP\\nANCi3XbbLbp37x6zZs2Kv/u7v9vosXHjxsWQIUO2aU5ZWVlUVFTEkiVLNtreo0cPZRDspKOPPjr+\\n93//d5PtmUym+fva2toYOXJkRER88MEHsWzZsrzlA6B1UP4AAC06+OCDY9GiRRERUVdXl/X5c+fO\\njVGjRsUTTzyR9dlQDM4999y45557tvq8Pn36NL+HX3nllbjzzjsjIuKqq67KaT4AWg/lDwDQooce\\neiin8zt37hzV1dXRv39/RwDBdjrzzDN36FpaBx54YEyePDkiovlooH79+sX69euzmg+A1sXdvgCA\\nFvXs2TPn++jcuXOUl5fnfD+QJrvttls89NBDseeee+7UnIqKiqioqPAeBCgCyh8AIFGzZs1KOgIU\\ntfnz5ycdAYAcU/4AAC0aOnRo3vb14IMP5m1fAADFRvkDALTopZdeytu+hg4dGplMJk4//fS87RP4\\nP127dk06AgA55ILPABScSy65JPbaa6/mnxsaGuLXv/51gonS6a233orZs2fHcccdl7d9zpo1Ky68\\n8MIdupAtsONuuummGDFiRNIxAMgR5Q8ABWXChAlx3XXXRWlpafO2P/zhD8qfHGhqaorHH388r+VP\\nRERlZaXyB/LsxBNPjJNOOikeffTRpKMAkANO+0pAjx49ko4AUHB69OgRmUwmbrjhho2Kn4iIwYMH\\nx+jRoxNKlm6TJk2Kurq6vO6zoqIiqqqq8rpPPtO2bdvo3bv3Rl8vv/xyHHTQQUlHI8fat28fNTU1\\n0bt376SjFLUN77tdd9016ShQVHbbbbeYOnVqZDKZyGQy8ZOf/CR69+4d3bt3Tzpa1ih/8qB///5R\\nVVXV/PXUU0/F+eefn3QsgIJx3HHHxVNPPbXF55x55pnRpo3/rOXCtGnTko5Anvzwhz+Murq6jb4O\\nPPDAmDNnThxzzDFJx+OvPvnkk5g5c2ZOZrvzV3IuvPDC5vfdjTfemHQcKBoXXnhh3HjjjXHRRRc1\\nbxs3blzU1dXF3Llz49hjj00wXfb4lJxjnTt3jgceeCAmT57c/NWxY8e4+eabY+HChbHffvslHRGg\\nVVu4cGFUV1dHx44dt/i8oUOHxoIFC/KUqrhMnTo16Qjkyfjx41vc3qVLl3jwwQd9bmkl1q9fH3//\\n938fc+fOTToKWTRu3LiNvl+4cGFccMEFCSaC4jBu3LiorKxs8bHOnTvH8ccfn99AOaL8ybEVK1bE\\nlClTNtm+++67R6dOnRJIBNB67bPPPhudblJXVxcVFRXb/Adnnz59cpyweFVUVOR1f5MnT47TTz89\\nVYdbt3Z/+tOftvj4l770pSgvL48vf/nLeUrElrzzzjvx3nvvZX3u4sWLsz6THbM9//0D2BrlTx7M\\nnTs33njjjY22TZ48OYYNGxZNTU0JpQJoXcrKyuLuu+/e6HQT154obrNmzUrV4dZp8Nhjj8Xjjz8e\\nRxxxRNJRit7hhx+ek3J0xowZWZ/Jtpk2bVrceuutzT83NTXF7NmzE0wExaFYTm9X/uTBk08+GQMH\\nDtxo26RJkxyqC/A5zz33XJx22mlJx6CV6dy5c1RXVzsCqBU58MAD42tf+1rSMYpev3794uCDD876\\nXBdbT87UqVPjxBNPjKlTp0ZFRUV84xvfUP5AHhTL6e1u9Z4nS5YsiZKSkqisrNzoQlIAxa59+/bx\\nu9/9zlE+rVj37t1j0aJFie2/c+fOUV5eHkuXLk0sQzEYOHBgZDKZrT6vrq4uVq9enYdEUHwOOeSQ\\npCMAnzNz5sy46qqrko6RFY78ybOpU6e6JgXAX+2yyy4xffr0+MY3vpF0FLZg1qxZSUdoFRmKwedv\\nUNGSKVOmRJ8+feK+++7LczI+b5dddokhQ4bkZPbVV1+dk7kArdnnT7ncYNq0aXHmmWcmkCY3HPkD\\nQGLmz5+f9UJ8ypQpm71jETtmyJAh8dJLLyUdgzyYNGlS8/efv/ZLeXl5fP3rX49/+7d/SyAVX/Tp\\np5/GvHnzcvJHifIHKEaXXHJJTJ06NWbOnNlcrjc0NCScKruUPwAkJhdHQh5wwAFZn1nsGhoaomfP\\nnjF37ty83amyqakpVq5cGRERt9xyS4v/Ikdu1dbWbvS9CwG3HplMJmpra6Ouri522WWXOPTQQ3d6\\n5po1a2LEiBFZSAdQeNauXRu1tbU5uZZaa+G0LwBSZcNt4smuhoaGGDVqVLz11lt52d+G06T79Omj\\n+IEWPPzww9GnT5845phjsjLv/PPPj0cffTQrswBofZQ/ACQmF7eLLi8vj/Ly8qzPJeLxxx+P/v37\\nx9ChQ3O+r4suusgdviAPJk6cGBUVFVFdXZ10FAByyGlfACTmueeei5KSkoiIaNeuXbzwwgux//77\\n7/Tcrl277vQMWtbQ0BANDQ1RUlISv/3tb6O8vDx69OiRldkbTvV66aWXUnWBRcil1atXxznnnBNX\\nXHFFRER06NAhOnfuvNXX7bPPPvHOO+/kOh4ArYTyB4BWYc2aNTFkyJA47bTTol27dnHJJZfs8Kxv\\nfOMbcfPNN2cxHS0544wzYr/99ovq6uo47rjjdmjG448/HrNnz46IiMcee6z5e2Db3XvvvXHvvfdG\\nxGe//0466aRNnnPSSSdF//79Y9myZTF9+vT46KOP8h0TgAQpfwBoNZ555pl45plnom3btvHzn/88\\nIiIWLVq0Ta+dOHFizJw5MyIiXnvttZxlZGNNTU0xatSo6NSpU/Ts2TMeeuihbXrdkCFDYsmSJdHU\\n1JS36whBMXjyySfjySef3GT7rbfeGh07dowPPvggXn755QSSAZAk5Q8Arc769eub7zS04bSwiM+u\\n5/P5Ow5dddVVcd999+U9HxtramqKpqamqK2tbV6vDevXo0eP2G233ZpP6crFHd6ArVuxYkWsWLEi\\n6RgAJET5A0DBqKurUx4UiA3rVFlZGZ06dXJKFwBAgpQ/AEDOTJ06NekIAABFz63eAQAAAFJM+QMA\\nAACQYsofAAAAgBRT/gAAAACkmPIHAAAAIMWUPwAAAAAppvwBAAAASDHlDwAAAECKKX8AAAAAUkz5\\nAwAAAJBiyh8AAACAFFP+AAAAAKSY8gcAAAAgxZQ/AAAAACmm/AEAAABIMeUPAAAAQIopfwAAAABS\\nTPkDAAAAkGLKHwAAAIAUU/4AAAAApJjyBwAAACDFlD8AAAAAKab8AQAAAEgx5Q8AAABAiil/AAAA\\nAFJM+QMAAACQYsofAAAAgBRT/gAAAACkmPIHAAAAIMWUPwAAAAAppvwBAAAASDHlDwAAAECKtU06\\nwI466qijomvXrknHKBpdunTJ6jzrl1/ZXD9rl3/Wr3BZu8Jm/QqXzy2FzXuvsFm/wmXtCtvW1q8k\\nk8lk8pQFAAAAgDwr2CN/BgwYEI2NjUnHKBpdu3aNOXPmZG2e9cuvbK6ftcs/61e4rF1hs36Fy+eW\\nwua9V9isX+GydoVta+tXsOVPY2NjLFu2LOkY7CDrV7isXWGzfoXL2hU261fYrF/hsnaFzfoVLmvX\\n+rjgMwAAAECKKX8AAAAAUkz5AwAAAJBiyh8AAACAFFP+AAAAAKSY8gcAAAAgxZQ/AAAAACmm/AEA\\nAABIMeUPAAAAQIopfwAAAABSTPkDAAAAkGLKHwAAAIAUU/4AAAAApJjyBwAAACDFlD8AAAAAKab8\\nAQAAAEgx5Q8AAABAiil/AAAAAFJM+QMAAACQYsofAAAAgBRT/gAAAACkmPIHAAAAIMWUPwAAAAAp\\npvwBAAAASDHlDwAAAECKKX8AAAAAUkz5AwAAAJBiyh8AAACAFGubdAAAoPU6+OCD4+CDD97s4++9\\n917MmTMnj4kAANheyh8AYLO+/e1vx5VXXrnZx1evXh2zZs2KiIjGxsaYOHFivqIBALCNlD8AwA7b\\nZ599YvTo0RERkclk4tJLL93o8cMPPzwWL16cRDQAAP7KNX8AgKwoKSmJ0tLSjb7q6uripJNOSjoa\\nFIXhw4c3f2UymfjNb34Tw4cPTzoWAK2AI38AgJyaMWNGnH/++TFjxoyko0AqDR48OL73ve9tUvSc\\nddZZcdZZZ8UDDzywyWvOO++8eP/99/MVEYCEKX8AgJxq3759VFdXx+GHHx4LFixIOg6kQps2bWKX\\nXXaJdevWbfW5LR39M3z48CgpKclFNABaIad9AQB5MX/+/Bg9enSMHj062rdvn3QcKFht2rSJn/70\\np9tU/GzJiSeemKVEALR2jvwBAFr05S9/Oc4999yszrzrrrsiImLOnDnx3nvvRUTEP/7jP8arr76a\\n1f1AmpWWlsb3vve9nZ7z61//Os4555z4r//6ryykAqA1c+QPANCiZcuWxa9+9auczB4wYEAMHjw4\\nBg8eHMuWLYtMJhPXXXdd7L333rH33ntHWVlZTvYLhW6PPfaIjz76KCuzOnXqFI8++mjst99+scce\\ne2RlJgCtk/IHANisZ555JlatWpWXfV1++eWxevXqWL16dcyYMSMuuOCCvOwXCkm2j8aLiFixYkX8\\n6U9/iu7du2d9NgCtg/IHANis3/3ud/Hmm2/mfb+nn3563HrrrTF9+vS87xtas9tvvz0nc/v16xez\\nZs3KyWwAkqf8AaBglJaWRpcuXaJLly7RsWPHiIjYf//9o0OHDrH33nsnnC69+vTpEytWrEhk30cc\\ncUQi+4ViVF5evtMXkQYoVHvttVe0bZveyyIrfwAoGD/60Y9i+fLlsXz58vjzn/8cEyZMiIaGhpgz\\nZ048+uijcdlllyUdMbW++c1vJh0ByIM2bdrEKaecknQMgLzq0KFD3H///XHttdfGhAkT4phjjkk6\\nUtalt9ZqZX71q1/FoYceutG2m266Ke65556EEgEUhnnz5jV///mjQLp37x433HBDRET06tUrIiLG\\njRuX33AACejfv3/MnTs3J7N32WWX+Na3vhW///3vczKfzauuro7u3bvHT3/607jjjjuSjgNFZfbs\\n2dGnT584+eSTIyLi9ddfjwEDBsTLL7+ccLLsUf7kSe/evaNfv34bbbv77rvjf/7nf+L1119PKBVA\\n69K+ffvYb7/9Yv/994/Zs2dv9+ufeuqpKCkpyUEyKD6lpaVx4IEHxiuvvBJt2rSJAw44ICIiXnrp\\npYST8dxzz+VsdiaTSeQ6X8Vu0qRJMXLkyIj47LpOt99+exx44IGxbNmyhJNBcejTp89GP3fp0iWW\\nLl0ap59+epx88slx6aWXFvxpsU77AqBVKCsri1/96ldRX1+/Q8XPBhs+PJNdb7311k6ty47q1KlT\\nHHvssXnfb7EbO3Zs3HjjjVFfXx833HBD3HzzzVFfXx/19fVx3nnnJR2v6E2cODFns6+88sr413/9\\n15zNZ9uddtppSUeAovef//mfcfHFF0ePHj2SjrLTHPmTB9/97nejd+/eSccAaNXmz58fhxxyyE7P\\n+fnPfx7vvvtu1NTUZCEVGzQ1NcXjjz8exx13XF7327lz5zj++OPjiSeeyOt+i9XixYsjIuLAAw+M\\n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\\nyaqoqIibb745Lr300li3bl3ScVJvw/vti1566aU8JyEpWzutltzo0KFDTJw4Merr6+P222+PxsbG\\n+P3vf590LCh6L774YhxzzDGxatWqpKPsNEf+5EH//v3jqaeeij/84Q9JRwEoCO3atYuqqqqoqqqK\\n+vr6qK+v3+bih+x6/PHH46233ko0w8UXXxw33nhjohmKwd///d83v9+++LXh/bjXXnslHZPPOffc\\nc7M+s6KiIusz2bJOnTrF/fffH/X19c3bHnnkkbjgggsSTAVERBxyyCExbty4pGNkhfInD1544YVY\\nvXp1i4/Nnj07z2kAWqf27dvH4sWLY/HixfHss8/G5MmTY/Lkyds9p6amJmpqanKQsDi1hvInIlLz\\nwas1+5//+Z/NPrbh/fjcc8/F4sWL41vf+lYek9GSoUOHur5ZSrz77rtRW1u7yfbKysoE0gBppfzJ\\ng1WrVsXatWs32b58+fLo379/AokAWodMJtP89c4770SvXr2iV69ecfDBB+/wzAULFsRf/vKXLKak\\nT58+SUeIiIiFCxcmHSHVXn311a0+5+CDD45evXrF3nvvnYdEbMknn3wSn3zySVZmPf/883HDDTdE\\nSUlJVuaxfdatWxfjxo2LkpKS5ktDRET06NEjxo4dm2AyYNGiRXHVVVclHSMrlD95cvPNN8dll10W\\nl112Wbz11lvR2NgYQ4cObRX/mgqQJmm7OF8x++KpXlOmTEkoSfG47LLL4ne/+13SMdgGv/3tb7N2\\nceavf/3rfne2EiNHjoyIz37/VVZWugMb5EkxfMZwwec8ueuuu5q/v/vuuyOTycSKFSsSTASQrFx8\\noO3Ro0fWZ5Kcn//85zFhwoSIiPjmN7+5xdOSyI7rr78+IiJOO+20hJOwLc4999yd/ofESy65JD7+\\n+OMsJWJnvfjii9GtW7d48803Y/369UnHgaLxi1/8IsaPH590jJxy5E8C3nzzTcUPUNQ6duwYhx56\\naNbnvvbaa1mfyWeSuAhsXV1dRERceeWVip88uv7666OkpCRKSkriu9/9bsyZMyfmzJkTZ599dvP2\\n2267LemYRMTKlSujXbt2MWfOnHj33Xe3+/WrV6+OF154IQfJ2FHr16+PxsZGxQ/kWW1tbfN/8557\\n7rnm7Z//vtApfwDIu/bt20f79u2TjsF2eOONN+KRRx5JZN+nnXZafOlLX0pk38XuF7/4RQwcODAG\\nDhwYv/nNb5KOQwv+8pe/xMCBA2PMmDHb/do///nP7kYL8Fcb/pt30kknRWVlZVRWVsZ5552XdKys\\nUf4AkHdLliyJpUuXZn3uG2+8kfWZfGbVqlUxYsSIePHFF/O+78cee8w18mArHnrooTjssMO26zWj\\nRo3KURqAwrVq1aqYNm1aTJs2LekoWaX8ASARzz//fNZndujQIesz+T8ffvhh9OrVK+bOnZvzfTU0\\nNERNTU2UlJTE5ZdfnrW7GkGaLVy4MEaNGhVr1qxp8fHZs2dHTU1N1NTUxF577eXOiABFRPkDQCKu\\nuuqqnNzCtrKyMusz2Viubz3c2NgYI0aMiEGDBuV0P5BGM2bMiO985zsbbXvllVdizJgxceqpp8ag\\nQYNi0KBB8d577yWUEIAkKH8ASMwdd9wRZWVlUVZWlrWZJ5xwQtZm0bK6urq45pprcjK7X79+0aNH\\nj5g/f35O5kMx+O1vfxuHH354RET07ds3Dj300Jg+fXp88MEHCScDIClu9Q5AotauXRsRESUlJc3b\\nOnToEHfccccmzx06dOhW540YMSJ74WhRJpOJK664Iq644opNHjvrrLPirLPO2qa1+rw1a9bE+eef\\nn5PTAaEYLViwYKPfqwAUN+UPAK3O22+/HcOGDdtk+8iRI5u/r66ujoiIMWPGxPvvv5+3bGzZfffd\\nF/fdd1+MHDkyRo0atc1l3MiRI6OmpibH6QAAipPyB4CCMWPGjObv/Yt26zZjxozm9erTp88WT+Pq\\n27dvLF68OF/RAACKjvIHAMip2traaNvWRw4AgKS44DMAAABAiil/AAAAAFJM+QMAAACQYsofAAAA\\ngBRT/gAAAACkmPIHAAAAIMWUPwAAAAAppvwBAAAASDHlDwAAAECKKX8AAAAAUiyR8uc///M/Y8mS\\nJRERsXTp0jj33HNj9OjRzdsAAAAAyI5Eyp+bbrop2rdvHxERP/rRj+Kwww6Lr33tazF58uQk4gAA\\nAACkVtskdrpq1aro2LFjrF27Np599tn48Y9/HG3bto2jjz46iTj8f/buPN7qus4f+PsICI5CGjte\\nN+AadxFSbBzRcZkmIFtItmYkSWskWdJRyvq5INdGy91JQaSRoqZG5MqSiokLkKgVijDAJQQUDEyI\\nRNESEDq/P4o7IiCL55zvPd/zfD4e59E92+f7evR+nMu5L78LAAAAkFqJlD8f/ehHY/Xq1fHiiy/G\\nCSecEAcffHC88847kc1mk4gDAAAAkFqJlD/Dhg2Lvn37RqNGjeL222+PiIhnn302unTpkkQcAAAA\\ngNRKpPzp27dvfPrTn46IiEMOOSQiIrp16xa33XZbEnEAAAAAUiuxS71v3rw5Hn300fjBD34QERHb\\ntm2L7du3JxUHAAAAIJUSKX9+85vfRO/evePBBx+MsWPHRkTE6tWrY/To0UnEAQAAAEitRMqfG264\\nIe6444649957o3Hjvx551q1bt/jf//3fJOIAAAAApFYi5c/atWvj1FNPjYiITCYTERFNmjRx2BcA\\nAABAjiVS/nTq1CmeeuqpnR575pln4vjjj08iDgAAAEBqJXK1r29/+9vxta99Lc4666zYvHlzjBo1\\nKp588sn68/8AAAAAkBuJ7Pnz8Y9/PH7+859H586do1+/flFWVha1tbXRtWvXJOIAAAAApFYie/5E\\nRLRt2zYuuuiipDYPAAAAUBIKVv5885vfrD+58we56aabCpAGAAAAoDQUrPw55phjCrUpAAAAAP6m\\nYOXPiBEjCrUpAAAAAP4msXP+PPvss/Hwww/H+vXro02bNvGZz3wmTj311KTiAAAAAKRSIlf7+uEP\\nfxiXX355fOQjH4kzzzwzDj/88Bg5cmRMmDAhiTgAAAAAqZXInj8TJkyIiRMnxvHHH1//WJ8+feLC\\nCy+Mr3zlK0lEAgAAAEilRPb8idj1BNBHHXXUPl0NDAAAAIB9l0j58/Wvfz2uvPLKWLVqVWzevDle\\nfvnluOaaa+KSSy6Jv/zlL/U3AAAAAD6cRA77GjVqVEREPPzww5HJZCKbzUZExIMPPhijRo2KbDYb\\nmUwmli5dusc1TjnllCgrKytIXiI6dOiQ0/XMr7ByOT+zKzzzK15mV9zMr3j53lLcfPaKm/kVL7Mr\\nbnubXya7o3kpoLVr1+7T64488sg8JwEAAABIt0TKn1w4/fTTY82aNUnHKBllZWUxd+7cnK1nfoWV\\ny/mZXeGZX/Eyu+JmfsXL95bi5rNX3MyveJldcdvb/BI57Outt96KH//4x7F06dL485//vNNz+3q5\\n9zVr1sTq1avzEY8CML/iZXbFzfyKl9kVN/MrbuZXvMyuuJlf8TK7hieR8ufSSy+N7du3x6c+9alo\\n2rRpEhEAAAAASkIi5c+CBQvi17/+dTRp0iSJzQMAAACUjEQu9d69e/dYuXJlEpsGAAAAKCmJ7Pnz\\nve99Ly666KLo1q1btGzUHeK5AAAgAElEQVTZcqfnRowYkUQkAAAAgFRKpPy5/fbb47XXXouysrJ4\\n++236x/PZDJJxAEAAABIrUTKn4cffjgeffTRaNOmTRKbBwAAACgZiZzz56ijjorGjRPpnQAAAABK\\nSiINTJ8+fWLYsGHxpS99aZdz/px66qlJRAIAAABIpUTKn5/+9KcREXHbbbft9Hgmk4knnngiiUgA\\nAAAAqZRI+fPkk08msVkAAACAkpPIOX8AAAAAKIxE9vx5++23484774x58+bFxo0bI5vN1j83e/bs\\nJCIBAAAApFIie/6MHj066urqYtiwYfHGG2/E1VdfHe3bt48LLrggiTgAAAAAqZXInj9PP/10zJgx\\nI4444oho1KhR/PM//3OccMIJcfHFFyuAAAAAAHIokT1//vKXv0Tz5s0jIuLv/u7vYtOmTdG6detY\\nvXp1EnEAAAAAUiuRPX+6dOkS8+bNi1NPPTW6d+8eNTU1ceihh8axxx6bRBwAAACA1Epkz5//+I//\\niCOPPDIiIq655ppo1qxZvPXWW3HTTTclEQcAAAAgtQq658/ixYvj4IMPjuOPPz4iIl5//fW4/vrr\\n48UXX4wTTzwx2rdvX8g4AAAAAKlX0D1/brjhhtiwYUP9/auuuipWrVoV//Iv/xLLly+Pm2++uZBx\\nAAAAAFKvoOXPypUr4+STT46IiE2bNsVTTz0Vt9xySwwaNChuu+22mDVrViHjAAAAAKReQcuf7du3\\nR5MmTSIiYsGCBdGqVas47rjjIiKiffv2sWnTpkLGAQAAAEi9gpY/nTt3jkceeSQiImbMmBGnnnpq\\n/XPr1q2rv/w7AAAAALlR0BM+f+Mb34ihQ4fG6NGj46CDDoqf/exn9c/NmDEjTjrppELGAQAAAEi9\\ngpY/J598csyaNStWrVoVxx57bBx22GH1z5155plxzjnnFDIOAAAAQOoVtPyJiDjssMOiurp6l8c7\\nduxY6CgAAAAAqVfQc/4AAAAAUFjKHwAAAIAUU/4AAAAApJjyBwDYb507d45DDz006RgAAOyDgp/w\\nGQAoXjfccEMceeSR0a1bt1i1alW8+eabe3zt1KlTY9q0aQVMBwDA7ih/AIAPtHDhwqioqIiIiMaN\\nG0cmk4mIiG7dun3g+wYNGhQnnHBCLF26NO8ZAQDYM+UPALBHlZWVccQRR0STJk32+72NGjWKurq6\\n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\\nPRs2bIibb7456fEyIPkAACAASURBVBhQUiZMmBCrV6+Oxx9/fKfHP/nJT8aTTz6ZUKrcU/4kIC27\\njQF8GH379o1sNpvTNV0RKn/mz58fJ510UtIxyLPf/OY3kclk4t57743jjz++/vFly5bFv/3bvyWY\\njPdq2rRpPPHEExERsWnTpnj44YdjzJgxH2rNDRs2xB//+MdcxAMoOk888URkMpmIiHjqqafi3nvv\\nTVXxE6H8ASAhF110UdIR2A+DBw+OxYsXJx2DAvnqV7+adAQ+wNatW+Mf//Ef6+8PGzbsQ685Z86c\\nmD179odeB6DYvff3a5o45w8ABdenT5+46667ko7Bfvjtb38bN910U9IxgN249957P/Q51C644ILc\\nhAGgQbLnDwAFN3369Lj++uvjtNNOi4i/nhC/VatWH3rdrVu31u+yS25t3749vvWtb8URRxwRVVVV\\n0aNHj4Jsd/HixXHdddcVZFtQrLZs2RLbtm07oPcuXrw4TjzxxAN+PwDFQfkDQCLe+wd9z549o0OH\\nDhER8f/+3//b6VwjNCxDhgyJww8/PH70ox9Fnz59ko4D/M0NN9wQM2bM2O/33XzzzYofgBKg/AEg\\ncTNnzqz/+Wc/+1n93ju/+tWv4uMf/3hSsdiDN954I/r37x+NGjWKqqqqeP7555OOBCXvkUce2efX\\nXnLJJfWXLn733XfzFQmABkT5A0CDsnXr1vqfTzzxxN2+5gc/+EG0bNkyunXrFh07dtzpuW9+85su\\nk1sA27Zti23btsX8+fN3e6jd448/Hp/85Cf3+P7HH3883nrrrT0+f99998X999+fk6xQKlq1ahWz\\nZ8+O6urq+scee+yxePvtt+vv9+3bN4loACRM+QNA0dlxpbCTTjop5syZE4cddlhERJx33nnxP//z\\nP0lG42/69u0bvXr12uPzjz76aGzatKmAiSD9/vjHP0b//v2ja9eu9Y898sgjO5U/AJQm5Q8ARWv+\\n/PnRvHnzpGOwG5s2bYrJkycnHQNKzrJly2LZsmVJxwCggXGpdwAAAIAUU/4AAAAApJjyBwAAACDF\\nlD8AAAAAKab8AQAAAEgx5Q8AAABAiil/AAAAAFJM+QMAAACQYsofAAAAgBRT/gAAAACkmPIHAAAA\\nIMWUPwAAAAAppvwBAAAASDHlDwAAAECKKX8AAAAAUkz5AwAAAJBiyh8AAACAFFP+AAAAAKSY8gcA\\n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\\nb+nSpXH44YfH/2fvzqOrqu+1gX9DICIoZcYiCDIpEL0izhecBTs4oIAdrEOtE2BboRet2ggOeK1D\\nvSo41bm1VhxqUbFQvFKp+qoFKxDUSgUEKwETBkHClPcPrqnIFODk7Jydz2etrJWz9z6//chvnbjz\\nZA977LHHTo3TrVu36Natm/InZYYMGRLt2rWLk08+OekoUGM8+uij8eCDD8aBBx6YdBSqweDBg1Pz\\nSyfUZFt70mGaPofu+VPNKioqYsGCBbFy5cqNlq9cuTKmTZsWa9asSSgZQPJ22WWXqKioiIqKith3\\n3313uvgh3U466aS46667on79+klHqdUmT56cdAS+JD8/PyM/O5csWRJLlizJQCIyYdasWbHffvsl\\nHQNqhZNOOmmLfzQsLCyMoqKiLCeqHsqfarZw4cI48MADY9CgQXHzzTdXLr/44ovjwAMPjEWLFiWY\\nDiBZo0aNyviY06dPj+nTp2d8XGqGiy66aJN70JA5S5cujeeffz7pGCRg0qRJnq6XkIULF8bw4cNj\\n4cKF8cknn8Tw4cOjd+/eSceCWuXII4+MiRMnJh2jWil/suThhx+On//859G2bdto27ZtPPLII0lH\\nAkjUvffeG0OHDs34uO+///5G9ywhfc4777yYN29e/PSnP006SuosX748vvvd78aMGTOSjkKWXXjh\\nhUlHqLUWL14cN910UxxwwAFxwAEHxE033RSffvpp0rGgVlm8eHG8+uqrmyx/77334rbbbksgUea5\\n508WrV27NubPn590DIAaoXnz5tUyrnv9pMPcuXPjo48+2uJ6fxWvPsuXL4833nhjk0uARo8e7RHg\\nNVCjRo1i2rRp0bFjxx0eo6CgwK0IaoBPPvkk6QhQq40YMSIGDBhQ+bCmqVOnRs+ePRNOlTnKHwAS\\nce+990a/fv0yPu4vfvGLjI9J9j3wwANxzTXXJB2j1jrvvPOSjkAVLV++PG699dYYPXr0Dr3/kUce\\niXXr1mU4FUBuuu666+Kxxx6L559/Pn7wgx8kHSejXPYFQCJefPHFpCNQRUcccUQ0a9YsfvnLX2Zt\\nn5dddll06dIla/uD2qhZs2ZxwQUXxPr165OOAlAj/O53v4tmzZrFgAEDoqysLOk4GaX8ASAxBQUF\\nMWHChFi8eHHGxiPzli5dGqWlpXHZZZfFfffdl5V9fvzxx7Fq1aqs7Aty3UcffVTlX1LKysri29/+\\n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\\nuHFx6qmnVsvYN9xwQ4wfPz6+973vVcv4kHa9e/eOwsLCnRrjscceUwAB1BLKHwBgs3r16lWt4594\\n4onx29/+Ng477LBo1KhRte4L2FSLFi1i4sSJ0bJly6SjAFDNlD8AQKJee+21mDVrVlx00UXRpEmT\\npONATnj33Xfjo48+yshYCxcujD59+mRkLABqJuUPAJC41q1bx1133RUTJkyIhx56KOk4UOO9/vrr\\nMWvWrIyN99vf/jaOOuqojI0HQM2i/AEg5+yxxx5RUVFR+TV+/PikI5EhBx10UJx99tlx8803R926\\nHkoKW9O3b9+MjdW8efPo0qVLxsYDyFV169aN1q1bp+44RPmTkDPPPDPpCAA5p1WrVjFs2LB49913\\nN1revn376NatW0Kp0ivJM3CGDRsWnTt3Tmz/UBvde++9SUeo9c4+++ykI0CtdcQRR8SwYcPihhtu\\niAULFqTuOCRdVVYN9tvf/jb22Wefytf77rtvRET85je/SSoSQI121llnxY9//OONljVo0GCzjx3f\\nd99946CDDori4uJsxasVbr755jjnnHMS2//YsWN3+mlGkHbHHntsvPTSSxkb7/XXX4/DDjssY+NR\\nNRdccEFccMEF0a1btygoKIj77rsv6UhQq3Ts2DHGjh0brVu3rlyWtuMQ5U81a9OmzRZvxvfoo4/G\\nSy+9FB9//HGWUwHUbBUVFdv9nj322KMakpCk7t27x3vvvRff/va3N1o+d+7cWL16dUKp0u3II4+M\\nyZMnb3bdjTfeGFdeeWWsW7cuy6nYmqlTp8bChQujVatWGRnvwAMPjFatWsXChQszMh5V07p16+jZ\\ns2dEbDgDa/78+S5phizad999Nyp+IjYch6SJy76q2bJly2LixIlbXD906NAspgGo+Xb0TJMbb7wx\\n6tWrl9kwJK5Lly7x/vvvb/TVsWPHpGOl1paKn4iIyy67LGMFA5mzdOnSuOaaazI2Xp06deKII47I\\n2HjsmBdeeCEuuuiipGNArfHcc89tdnmaPofKn2q2rfLnj3/8YxbTANRs3/3ud2P06NE7/P7p06dn\\nMA3/+Mc/dmo+SJ/JkyfHo48+mnQMqtH69evjmWeeSToGETF48OCkI0Ctd9ttt8WgQYOSjpERLvvK\\ngpKSkpg2bVrssssuG92QdMGCBRl9RCdALmratGnstddeMW3atJ0ea5999on27dvHnDlzdj4YsXr1\\n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\\naZJ0NL7igw8+yPiYBx54YMbHpGratWsX7733XuXnDsiO7t27b3H59OnTs5ym+ih/suBHP/pRdOvW\\nbZPlPXr0iAYNGiSQCKBmOfbYY+P999+PcePGxZQpU2Ly5Mk7NM7MmTMznIw77rhjo8vtSLdGjRrF\\n448/Ht26dYsOHTrEkCFDImLDfZh+97vfxe67755wQkivF154Ibp06VL5ubvooosSTgSkifInC+6/\\n//4oLi7eZPmECRNi+fLlCSQCqFmOOuqoiNjw1K527dolnIavGj16dJx00klJxyALGjVqFH369Nns\\nur59+8bUqVPj0UcfzXIqqJ0GDx6cdASo9Tp37hyDBg1KOkZGKH+yoLS0NLp3777ZAgigtmvatOlm\\nz47cEQUFBRkZh019+OGHSUdI1anXNdVHH3201fWdOnWKM888M66//nqXrtcAHTt2TDoCGTRr1qyY\\nNWtW0jGgVrnwwgujQ4cOW1y/yy67RPPmzbOYqPoof7Kod+/eMXz48Fi0aFHSUQBqjJNPPjkOP/zw\\njIx1ww03ZGQcNjV06NCkI5AFo0aNqtJ2V1xxhUvAaoAxY8ZkfMyf//znGR+Tqunfv38ceeSRMXHi\\nxKSjQK1xzz331Jqz7JQ/WVRaWho33XRT7L///tG2bdu49957k44EkCruTVN9fvjDHyYdgSwoKiqK\\ntm3bxowZM7a63RVXXBFLly7NUiqy5aKLLopbbrkl6Ri12uLFi6N///7Rtm3bOP7445OOA7XCAw88\\nsMXP23vvvRe33XZblhNVD496T8Ann3ySdASA1Np3333j3XffTTpG6kydOjXRpwBNnTrVE7+yYN26\\ndTF//vzYb7/9Kpc99thj0bZt2xg9enQ8/vjjCaajOi1evDjee++9pGMQEcuWLYtly5YlHQNqlUmT\\nJsV5550X5557buWyH/zgBzFnzpzkQmWYM38ASEzdunXjzDPPzOiYzz33XBxwwAEZHZOIE044IV54\\n4YWs7/fjjz+OwYMH+wt4gr73ve9F7969FT810J133hnDhw/PyFiTJ0+Ol19+OSNjAeSiBx54IHr3\\n7l35labiJ0L5A0CC8vPz47jjjsvomB07dnQT1GpQWloa/fv3z/qZAd26dYsxY8ZEWVlZVvcLuWDc\\nuHFx8803R7NmzeL111/foTEGDx4czZo1i3POOSez4QCoUVz2BUBiysvLIy8vL0aNGhWHHXZYHHPM\\nMTs9ZlFRUTz11FMZSMdXff7557HvvvtGu3btYtKkSdVesnXr1s19ZWAbKioqorS0NA4//PCoqKjY\\n5vZlZWXx5ptvRkRE3759qzseADWE8geAxF1xxRVRUFAQ3/ve9yIi4sEHH9zhsa699tpMxWIL5s6d\\nG/37948DDjgg9txzz7juuuuqZT/XX399nHbaadUyNtRGQ4cOjXfffTfGjx+fdBQAssxlXwDUCKtX\\nr46HHnooHnrooahfv37Ur18/3n777e0e57HHHquGdHzV22+/HQ899FCMGjUq6tevH7Nmzcr4Pvr1\\n65fxMaE2GzVqlOIHoJZy5g8ANU55eXlERPTo0SMiIs4444w444wzonHjxlu9NOzZZ5+NadOmZSUj\\nG1RUVER5eXl069Yt/vznP2fkHk7PPPNMRET8+Mc/3umxoDbJy8ur/P7pp5+u/N4ZdAAofwCo8X7/\\n+9/H73//+zjwwAPjb3/7W1x00UXRqlWrGDlyZERsOAtl1KhR8dRTT8X69esTTlt7nXbaaXH//fdH\\n//79Y968efGzn/2sct3AgQOjf//+G20/cODAzY4zduzYas0JtYHCB4AvU/4AkDOmTp0av/zlL2Pc\\nuHHx8ccfR8uWLeOqq66KJUuWJB2NiFi2bFkMGDBgs+sUOgAAyVH+AJBTLrvsssrvhwwZkmASAADI\\nDW74DAAAAJBiyh8AAACAFFP+AAAAAKSY8gcAAAAgxZQ/AAAAACmm/AEAAABIMeUPAAAAQIopfwAA\\nAABSTPkDAAAAkGLKHwAAAIAUU/4AAAAApJjyBwAAACDFlD8AAAAAKab8AQAAAEgx5Q8AAABAiil/\\nAAAAAFJM+QMAAACQYsofAAAAgBRT/gAAAACkmPIHAAAAIMWUPwAAAAAppvwBAAAASDHlDwAAAECK\\nKX8AAAAAUkz5AwAAAJBiyh8AAACAFFP+AAAAAKSY8gcAAAAgxZQ/AAAAACmm/AEAAABIMeUPAAAA\\nQIopfwAAAABSrG7SAXZUmzZtko5Qq2T639v8ZVcm/73NXfaZv9xl7nKb+ctdjltym89ebjN/ucvc\\n5bZt/ZvnVVRUVGQpCwAAAABZ5rIvAAAAgBRT/gAAAACkmPIHAAAAIMWUPwAAAAAppvwBAAAASDHl\\nDwAAAECKKX8AAAAAUkz5AwAAAJBiyh8AAACAFFP+AAAAAKSY8gcAAAAgxZQ/AAAAACmm/AEAAABI\\nMeWOx9n7AAAgAElEQVQPAAAAQIopfwAAAABSTPkDAAAAkGLKHwAAAIAUU/4AAAAApJjyBwAAACDF\\nlD8AAAAAKab8AQAAAEgx5Q8AAABAiil/AAAAAFJM+QMAAACQYsofAAAAgBRT/gAAAACkmPIHAAAA\\nIMWUPwAAAAAppvwBAAAASDHlDwAAAECKKX8AAAAAUkz5AwAAAJBiyh8AAACAFFP+AAAAAKSY8gcA\\nAAAgxZQ/AAAAACmm/AEAAABIMeUPAAAAQIrVTTrAjurV64GYP39Z0jFqjTZtGsWUKT/M2HjmL7sy\\nOX/mLvvMX+4yd7nN/OUuxy25zWcvt5m/3GXuctu25i9ny5/585fF3LlLko7BDjJ/ucvc5Tbzl7vM\\nXW4zf7nN/OUuc5fbzF/uMnc1j8u+AAAAAFJM+QMAAACQYsofAAAAgBRT/gAAAACkmPIHAAAAIMWU\\nPwAAAAAppvwBAAAASDHlDwAAAECKKX8AAAAAUkz5AwAAAJBiyh8AAACAFFP+AAAAAKSY8gcAAAAg\\nxZQ/AAAAACmm/AEAAABIMeUPAAAAQIopfwAAAABSTPkDAAAAkGLKHwAAAIAUqzHlzwUXXJB0BAAA\\nAIDUqTHlT8+ePZOOAAAAAJA6Nab8ufDCC5OOAAAAAJA6WS9/Bg0aFOPHj4/y8vJs7xoAAACg1sl6\\n+XPIIYfE/fffH0cccURcdtll8corr8T69euzHQMAAACgVsh6+XPOOefEk08+GU899VS0bds2Ro0a\\nFb17947rrrsu21EAAAAAUi+xe/60b98+hgwZEr/61a9in332id/+9rdJRQEAAABIrbpV2WjdunVx\\nzjnnxP333x8FBQU7vdN58+bFc889F88//3yUlZVF3759Y9CgQTs9LgCQOV0LFlV+v64ionTNxuub\\n1ovIz/v361mrW2QpGQAA26NK5U9+fn7Mnz8/I/fmOf3002POnDlx7LHHxvDhw6NXr16Rn5+/0+MC\\nAJlzceM346bmL8SbSza8XrE2Kr//wsENIxp+6UhixOKjNixvnBcN8iv+b2lelKxrEHcvObj6QwMA\\nsFlVKn8iIgYPHhwjRoyISy65JPbYY4/Iy/v3n/rq1Kn61WPnnXdeHHvssVG/fv3tSwoAZMWgxm/G\\nLS3/FMvWRLy8eMvbfbUMOjomR0RE0xURdfMiDm6y4WvV+vwY3OTNOGX+d+Kfa5pWY3IAADanyuXP\\nVVddFRERzz77bOWyioqKyMvLi1mzZlV5h9/85jejrKwsXnzxxVi0aFGcf/75sXDhwqioqIg99thj\\nO6IDAJnWvaAkRu/xQpSujhjz4Y6N8cXlYc8vjGhUN6JpwbpoFYvi9TZ3RLcPB0XD/IgG+S4TAwDI\\nliqXP5MmTcrIDt9444245JJLorCwMKZOnRrnn39+zJ07Nx544IG4++67M7IPAGqvomYvR0TENZ8e\\nnWiOXDZnZcQTC7a8vkF+xMGNqzbWx6s2fM1ZGTH384jBMSba7xLRvsGGy8TaN4hot6tLw2BH1c9b\\nE8Ob/vVLS/IiomKT1xNXdIzXVrXNbjgAaowqlz977rlnRESsX78+Fi9eHC1bttyhHY4aNSpuu+22\\nOPzww+Pggzcc5P3Hf/xHvPPOOzs0HgB82cgWGy49Uv7smNI1G4qflev+vew7e0Z8Gk2j34IzIiKi\\n7vqIpsu3PMazbR6PjgVlGy37bG3E/XMjytZsKILmrNxwmVjD8oiGayN+3n7DpWEREf9Y3TROW/Cd\\njP+3Qdrcs8e46L3rvHi7vFVcv/jIzW7zXNvHon29pXFxk7fiPz68KErW7ZbllADUBFUuf5YtWxYj\\nR46MP/3pT1G3bt14++23Y9KkSfHOO+/EpZdeWuUdLliwIA4//PCIiMr7BtWrVy/WrVu3tbcBwFa1\\nrrss5nT8n8rXq/e5Ngre+0WCiXJPh3ql8Vqbuza63KtBfsTyOk2i10eX/HthRcS/Vm95nE7//HHM\\n3Hv0JssXRcTXCza+idCKdRElqyPu/XBdfLfNhqeLtSpYFEWNX4gx/3cmUMP8iH+tbxKrK6p82AKp\\n1SiWxqVxW+zXeJe4den34sJPTtrq9nvP/ml0KyiJv7R7KG7c5Zb46cqfxNKo4ql7AKRGlY+irr76\\n6mjUqFG89NJL8a1vfSsiInr06BE33njjdpU/HTt2jFdeeSV69+5duezVV1+NLl26bEdsAPi3jvVK\\n48k9n4h6eTv/VMra6qgGc+KJ1mMjvvK3mEOaRJy98LvbPV73DwdvdvmYVs/HxU3eqnz94YoNZwFN\\n/jRi9JdKp7x4MwbHhjOB2u8S8Xz5wTFnXYt4K1waRu3VIkpiQIyNiLx4dO2p8erne1XpfcWrW8b3\\nPj49xu75RETJQ3HF0oHxr2hdvWEBqFGqXP689tpr8corr0S9evUqz9hp2rRpfPrpp9u1w8svvzwu\\nvPDCOProo2PVqlVRVFQUL730UowZM2b7kgNARPx1r/ujdb3l0b7e0o2WH/DhhQklyk3HNJgTLeuu\\njJJqPhH30pK+MbpsQ4Ezo8NdsXfDiL0bbih/tmTOyoju8Wa0COUPtVuLWBQtYnH8sH1+tJuz73a9\\nd8KKjnHI3POjomJ9DGk2LU5u9IeYsnKvuHjht6spLQA1SZWf0b777rtHWdnG1+9//PHH0aLF9j2p\\n44ADDog//vGP0alTpzj99NOjTZs28eSTT8b++++/XeMAwB75y6P7Los2KX4iNvylm6rZJW9ttMhf\\nsdl1K9ZGrKvY7KodUl5RN2aubhkzV7eMzrOHRHF58ygubx7fbNMkGuRv/b2FBYuiqNnkzIWBHNMo\\nlsUZe0Z8Gjv2pLz3VjeP99e0jCs/7Rv7fTgovrHbP+KsRm9nOCUANVGVz/wZMGBA/PjHP46f/vSn\\nsX79+pg2bVrceuut8Z3vbP8NGVu1ahXnn3/+dr8PAL6wV90l8eSeY+Nr+eWbrBu7rFsCiXJXp3ql\\nMehLl2J92ZtLIkqrab8frGlWeXlYy/wVcWOTsVFSNnejm01/1dEN5sSYJQfF4nUNqykV1Fx9Y0JE\\nRBw4JzNnNh4/7+z4fqN3ok6sj/VV/5swADmoyuXP+eefHwUFBXHNNdfE2rVr44orrogzzjgjzj77\\n7Crv7IMPPog77rgj/va3v8WSJUuicePGcdBBB8WQIUOiU6dOO/QfAFBVnep9Gs+0+f1m140uO9hj\\npnPM/+71cHQoWLLJ8okrOsSPtnEDVGqeknUN47KyAfH99fdHoyjb4nbHNJwTr7Z7ILr885ItbgNp\\n91b7e+OgORfs9DgfrGkaexcsiXf2vjsKPxyUgWTAF74bj0Xj+PdxysfROp6NUxNMRG1X5fInLy8v\\nzjnnnDjnnHN2aEdz5syJgQMHxiGHHBKXXnpptGzZMhYuXBgTJ06MgQMHxpNPPhkdOnTYobEBtqVD\\nvdL4R8c7t7j+rj1eiMkr28es1Tt2Kj3Z0X/34hi759itbrNs/S6xbH39LCUik0rWNYxfxY/jkrg9\\nmm6lAOpcUBod6pXGP9c0zWI6SN7Y6B/fWPNk/EfDkoyNec6/To23298d4/Z8NE5fMDBWxy4ZG5uq\\na5G/Iprnr6x8PXuNJxzmsgaxIlpGSTSOf1+W/nnsmmAi2Eb589prr1VpkC8e3b4199xzT5xyyilx\\n9dVXb7S8f//+ce2118Z9990XN9xwQ5X2l6t2jZVxSLwREXkR8e8bKEyOo5OKxHY4Kl6OOdE+5kb7\\npKOwDUXNXv6/7/79WRvc5M2k4pAhgxu/EXfuMb7y9cuLN93myGZZDJQii9Y1jJGLj4pBjd+MiJWb\\nrB/U+M24Zsk3tznOlz9713x61A7neTy+E4Pirk2Wr1i34ebP7RtEvNru/hi4YED85fP2O7wfNnbO\\n16bFXnWXRkRe3LvkwPhk3e5JR+IrFkWLeLSkWaxYXxon7/Zu/PGz7bvp85YcMOeiKNl7ZBxWMDv+\\nstpls9nWIFbEoF3Gxn+1nhsN6274OfdfCw6O5ru3cFZyDjoqXo72MWej4oea7eLGb37p3od5UbKu\\nQSo/e1stf6688sqNXpeUbPgrQ+PGjWPJkg2nsLVq1SomTZq0zR29+eab8eCDD2523bnnnhtnnXVW\\nlQLnqgHxRLSKhdFsM3dOUP7khqNjcqyIN+O+OD+WRuOk47AFf9jz8Thl9/eSjkGGDWr8ZtzSckLl\\n64fnRXy4aUcRvZU/O6RkXcMYsfjo+M3S/eKvbTY9Q25IkzfjgIbL4rQFW77P31c/ewfU/9dWt9+a\\nyXv/PmaXRbz1lav6VqyLGLsg4rx2Ea0KVsbRDeYofzLovK9Ni14NPoqIiB987e8xq7xFnLzguwmn\\n4ssWRctYFC3i1U8/jYc6PRvfmt8wXvu8bUbGbrHLhq9YnZHh2A4NY0XEyg33O2tYN6J5QUSvOm/G\\n19bkRzSOVP4SmlYD4onoFrOSjsF22HCM+adYsXZd/H7+hmV710vnZ2+r5c9LL71U+f3dd98dS5Ys\\niZ/85Cex6667xueffx633357NG5ctV+CS0tLo02bNptd17p1602eJJYWdWJdHBeTtvhD4NNwynqu\\nKI0m0TTKokUsUv7UYJ0LtvK86G3oWFDqsq8E1Yn1sc9m5q9DvbIYvccLUbo64oZ/bnuc03efFT9p\\n8nr8T9lh1ZAy3T5Y0ywKP7x4s2fddC7Y8m2fRzR/eZPS9RsNP4iLG78Zd23ngdPMvUdH111Ko+se\\nEcvWRrz/2cbrV6yLuP2fEU3rRaxsmLddY7N1c9Y0jl7xUaxcG/G1irI4rKAsihq/EGP+bw53y4+Y\\nv65prI1tPJaNavVEnBHNK0bH5JLFsVteZpuaJ/ccG3nvXr3tDcmofQpK45tN/q98i4jd6kb8pGPE\\nox+ti5ubvxDz1zaK5z7bJ9mQbNW2fuej5mpZd0XUr7MullVEfLYu4kftIpoWrIuSRYsiP9bGuqrf\\nKafGq/Jt/R966KEYNmxY7LrrhmsVd9111xg6dOgWz+bZnLy8zR+k1alTZ4vrct3x8ec4IjZ/+dzs\\n6BD3xs7frI/s+HX8KOZEu/h+PBYHxt+SjsNmHNVgzkbXy2+vcW0ez2Aattf1LV6K4g5jNvl6ru3v\\nYs7KiPvmVH2s21r9qdpypl3D/Ih223lbgpdXtouRize+zGtYSd/tLn4iIsaU/fs932sTcVSzzecp\\nXRPRYPUcj37PoEkr946XF0c8+XHE62URM5ZFtC9/MwbHmBgcY+Ka+mPixDrbPtub6ndPbHja15lf\\neycj413Z7C8ZGYcd80qH38chTTZd3u/rEYtWOz7JBVv7nY/cULw8YuCeEU0LNrwe0ODNGNVswtbf\\nlGOqXGM1aNAg3nnnnejZs2flsunTp1eWQduyatWq+P73v7/ZdRUVFVFevumjetPg8Hh9i+tmR0c3\\n1cshn0eDGBsD4vy4L06MF2Nd5Mff44CkY/H/27vzOB3r/Y/jr1ktY5sxJoTsqQhZDpVIizgkCUWr\\njtNBaV9+6hSncjotdCpLndLpVNqoTqFVaBOjckpRhhBhZswwGLPfvz+mSKm5h1nM7fV8PHp0z3Xd\\n9/f7uecyM/f9vr/Lj5pHbeXF+i+RELk3/HluA6T/xoeio/azvnz/DUNKqTr9nnOqreTOOu/RulLK\\nfs9PWVP4SczugjIu7DAVE1G4ps663cE/ZkFmExZkNuGljL1rhXyVk3BA/U/e1nmftZ0a1Ixj+LYh\\n7PrF/VpEpfF2/Rd4bfNaXj7ywKeYaa+4zM9ZWgAXN4LYKIgKh515kJlfeP7jNOhQsIjOlZNYHnUK\\nL+5oXb4FH+ZW7oBhNb/gw0bpnLx++AG3c1f8PP6v9ocAXLflzJIqTyWgWmThfzr0/d57Ph3apqR3\\n4sIaX/B1Rjo94vcebxIDN8UkcvPWotc8rCiC/nUyZswY/vSnP9GzZ0/q1q3L5s2bmT9/PrfffntQ\\nj7/77rt/9/ygQYOCLSVknMk7bKIea2lS3qUoSJnEkE8EUeRRdT+Loqr8VArL3yf4AeiVsDe9358l\\n6fBWMvz1x5HUq3JcMKastau0iVcavLDfc5l5MH09pLr+RIVxoIHPL63OiaVZdDqrc2J/c0v3lNwE\\nbk7tzQP132ZV7m9PSVPw0nPhgV+sH/zzN5/n1INtubA2M4XM3BTCKaAg+EHkKmFZBfDEehjX6nsC\\nrcZz4Q8DeDbj+GK1EROWw3GVUgj/cQD++ryapVCpijJlzf4/lPq5b5s+zInrhpOaH1M2RalYUihM\\nDWJJJ5L8PcdziWTbj8tFbHPZiENScn4M2YFfT2felQePrytc0/CcEPmAKejw55xzzqF169a89dZb\\nJCcn06RJE0aOHEnz5s2DevyAAQMOuMhQdgn/YTzOrZZKw3MboHMsdPpxKPUvp6X0qLqWXgnryqEy\\n/eTzJo+xKQu+2fnrc+szDX7KQ0p+DOvCjqJqxLo9Iz7K2onrLmdUbCKT039/2tjynAS2FziCtiQt\\nSoOuv7Mc4aWN4NVN8MfK7/NhShe2Fbh18aHimfqv0CwqjZ92uvzb1h5FPmZq3dmc4yYJh6xdeYXT\\nvhpXLVx37cX6Mxn8w3kGQIegKYwGoANL6cucPcffohef0rG8ytJBWJJe+KHINSES/EAxwh+A5s2b\\nBx32SNKhIDF9b/gzLrXHPufGxS+gZda6/c6zV+l7MOFN8gpgxgbYkVfe1egnyfkxrKMx8eUY/vy0\\n+1hRTq26loTITJJ9I1Ri3kmGz3/cZe23RiKszYTpu04hw+Ct3PWru+/X4+vsXQNrUI2v99xu892o\\nPbc7VP6Bf9d7FeA3p9uqbA352Z44W3PYs+NQXgCOr1kY/gCcGrOWOhGZhj+HsE/puE/4Y/BTMfTf\\ncD5zj3iEKT9uLBIXDX3rwnE1YPx35VtbSSpW+DNv3jwSExNJT08nEAjsOX7vvfeWeGGhYhLXcC0P\\nkk4tHuJqOrGEM3mbSPLZSQzT+Et5l6gD8DXHsIgTy7sM/cxXOQlcubk3DyS8TaXwwneso5vC098X\\nfnIWs5/fdkvS4aqjIKsgguuSe7nTVxm6NnYRV8ctZtzK8q5E+5OSV5VGkRGQszf9qRSWT3zErkPm\\nTUelsDzqRPxyJSAdjCcZzldNJu/5+tnvUzmnXuGaP5O/K1wPqmoE7IqIp2pUHQp2OOXrUPbzYCfQ\\nanyR91+YFs3nOwz0ysO32bGkpaXTORamrS3czTAtF7IDEdyY2oulqZ1IavoQzaLT+brpFHdkk0pY\\nUm5tBiSPZHnTfXc73VIQWp8QBx3+PPLIIzz//PP06dOHN998kyFDhjB79mz69AmdBZBKQzaVWEh3\\nllK4UHYinQkjQBV2s5pm7KJaOVeo4lpCZ5bwh/IuQ/sxeVtnRsUmcmyl1D3HBtSDxB8/xe4dsYBO\\ntQDC2JUfoHXkWuKiYXl23AHtSqQDN/GI0No9IdQsz0ng9vqVWJKaydJthUHpH+umMapWYlBTSUpS\\nnYhdjKyVyE9TWQqFEcNOjs1fyq48mFrE9DAF77jvRu+5PS5+AaN/gHWZhd/55pWhYZUfR1FmlVuJ\\n+pnXN8PufDj5IJesez8VRqf2Yw3NSqYwFcvQzeczvdZUlmfA4vDudKpR+Hs3OT+GpRT+fvtpOqyk\\n0pGSH8PCzKPoXrVwSYgFmUcxeGNorUscdPgza9Yspk+fTsuWLXn55ZcZO3Ysffv2ZcqUKaVZX4WX\\nTWUW0GOfYwYHFZvX79DWf8P5tK6UsmcR4WqR0LFW4SfXT9dYSO0fF4DOK4Bsd48qV29sKe8KtD8/\\n3znvrB/Xb07cVjg1b1TdRJ7JOJ41ub+zKEwJ++io6bSI/vWCzsnZhdM6B28awtxdrfbzSB2sX069\\nW7gLfrXtmsrdR1sPLvyZlwIXbv0zm6lXckWpWDYVxHHVjpEAfJWfwJzUX98n2OmwKl+DeLG8S9AB\\nSs6PYfDGQXtGFSfnx5ByiIx2LilBhz8ZGRm0bNkSgKioKHJzczn++ONJTCyZBHr27Nn07du3RNqS\\ndPhKyq1NUm5trtzc+9efkAVgS/YvHpC/71oIKjvbc0u3/Zyj7yT6m7+Wbich6seNf4gMh4RKEBEG\\nK3dC9dRMjo5KKbPw56smk/cb/ADkEcG4bb1YisGPDm+7C2DmRugeD3WKOWsraSdcv7W/wU85yw5E\\nlthuiSo/7ficOqSQQjxL6Lxn1JYqjuT8mJBeRzDo8KdRo0asWrWKFi1a0KJFC5577jlq1KhBzZol\\nsyXktGnTDH8klZjJ2zozeVvn8i5Dv2FmxjHAilLt487UU0q1/VCVlFubKds6cUd84cKxPy2IPndL\\n4Qig0bWe56joPkwr56mSd6f38oW1DlsFhLOA7nuC2gU74JEd0D8hi2vjFgfdzsMZ3dlM3aLvKKlI\\ny2jPMtqXdxnSbwo6/LnmmmvYtq1w4YwbbriB66+/nszMTO64o2QWHJs9e3aJtCNJOvRdvvlsBpPF\\nkZTeFgp3bu1eam0fbjrH7t1tBuCbDW8xkkTOP7JwR4zJ6Z3KJAzamgNrdsFdu4bw2k5H/OjwFSCc\\nhb9YVgDgo+R8AoRxXdwnRbZx4rrhLNrdsBSqkyQdioIKfwoKCoiOjqZt27YAHH/88bzzzjulWpgk\\nKXRlFFTmcS4GoBUr6Ml7HBudyu582FkC24t/n1v94Bs5jI1L7cGg6l/ts3h6ws+mk1zSMJ8n1qXw\\n3kYY3QTuj5/LhrwazN559EH33TQqjUphhf8IduXl8/ONqOckR7AkqpfBj/Qb8ohgwtZu9I5J4phK\\n+1k4BthVEMXlm842+JGkw0xQ4U94eDijRo3i888/P6BOhg4dSlhYWJH3e/bZZw+ofUlSxbWSY1jJ\\nMfyj5jsMq/oxL2yEjLwDb+/r7HgGbRxccgXqV2pHQ6dasHBr4RbgjavC9VWfp0Hk3ulgt9de8OO9\\nw0jOrxrUyKDuVddyY9WXiCGTxlULF3Venll4bsq2jiRUT3BnPqkIw2t+/pvBD8BVW3rzwo7WZViR\\nJOlQEPS0r06dOrFs2TLatWtX7E4GDdq7Rdr69euZNWsWAwYMoH79+vzwww+8+uqrDBw4sNjtSpJC\\nx9iU08iNj2BUow/I/XFH7xc3QmpO8do56/sL+T6vZNajO5z133A+q5o98pvnO8XCcTUKby9JhwWp\\nMKnlW4yOTeS5DXDEjsIxO+c3gKqREQC/GwAtOHIK8zfv4rPdmdSMLAyXGleFVTlxDNgwhKSCOLK3\\nBf2yRdJ+nLb+Yt7LbFLeZUiSykHQr6Lq16/PiBEjOO2006hbt+4+I3muvvrq333sgAED9twePHgw\\nTzzxBC1atNhzrF+/fowdO5YxY8YUp3ZJUgjJJ5zbUntyVNQ2Tqi8CYCeRxaOLAlW9Dd/oYCIUqrw\\n8JKUW5vWa0ayvOnU/Z6vFln4H0DfuoWjtTLz8knJSCEqF5J/vN9Da2B0k3z+FjuXz3fVYPWPO4Wl\\nE0tkGDSNSuf1Bs/x9Jp0qkZATBSMbgrJeVVZl12V474bXQbPVgod96WdxB+qbOSY6JRfHD/R4EeS\\nDmNBhz/Z2dmcfvrpAGzZsuWAO1y9ejWNGjXa51iDBg1Ys2bNAbcpSQodF206t7xL0I9S8mMYn9qd\\nUbUSqROZ+bv3HdqgcATQ/vwU4J3F83uOLaET1cID3Ft3KY2jYRdVWVepE42rwvhUmJ/ZmIWZjUvo\\nmUiHl/Oc+ipJ+oWgwp/c3Fz+/ve/A7B06VICgcCec8WdBtapUyduueUWrr76aurWrcumTZt45JFH\\n6NixY7HakSRJpSs5P4ZxqT14Znub350C9pPOsbAzr3A62JQiRmx1JpG4cKgTXfj1dIaTllkbfj9j\\nkiRJ0gEoMvyZMWMGn3/+Offddx8Al19+ObGxsQQCAbKysrjhhhv2WdOnKPfccw/jx4+nb9++5Ofn\\nExERwZlnnsmECRMO/FlIkqRSk5Rbm7CVdzC61hIeSHibSuG/vSXbT9PBxu1nQ64718Ty16aFw4NW\\n58TSfM0Yrk4qraolSZL0kyLDn//+97+MHz9+z9fR0dEsWLAAgBUrVjBu3LhihT+1atVi0qRJFBQU\\nkJaWRlxcHOHh4cWvXJIklanJ2zoDcFylFEbGLg36ceNTuxc+Pr8TBamJhbfT3bVLkiSprBQZ/mzY\\nsIFWrfZ+fNesWbM9t1u1asX3339frA47d+7MkiVLCA8PJz4+fs/xrl27smjRomK1JUmSytbkbZ2p\\nFJZXrPDmq5yEPbfHpfYohaokSZL0e4oMfzIzM8nMzKRq1aoAPP/83sUad+/eze7du4vVYW5u7n6P\\nFRQUFKsdSZJUPrIDkfsEOpIkSTq0FRn+tGjRgo8++ogzzjjjV+c++OADmjdvHlRHQ4cOJSwsjJyc\\nHIYNG7bPuc2bN9O+ffsgS5YkSZIkSVKwigx/LrnkEsaPH09YWBg9e/YkPDycgoIC5s2bx5133skt\\nt9wSVEeDBg0iEAjw5Zdfct555+05HhYWRu3atenSpcuBPwtJkiRJkiTtV5Hhzx//+Ee2bNnCjTfe\\nSG5uLrVq1WLbtm1ERUUxevRo+vbtG1RHAwYMAKBt27b7rBskSZIkSZKk0lNk+AMwfPhwBg8ezOef\\nf056ejq1atWiffv2VK9ePeiOli9fTnR0NC1btgQgLS2Nu+++m1WrVtGuXTtuvvlmYmJiDuxZSJIk\\nSZIkab+C3mO9WrVqdOvWjbPPPptTTjmlWMEPwIQJE0hNTd3z9a233sratWsZMmQIq1at4r777itW\\ne5IkSZIkSSpa0OHPwVq9ejUdO3YEICMjgw8++ID777+fYcOGMXHiRObPn19WpUiSJEmSJB02yiz8\\nyc/PJyoqCoBly5YRHx9PkyZNAKhXrx4ZGRllVYokSZIkSdJho8zCn+bNm/PGG28AMHfuXLp27brn\\n3JYtW4o9jUySJEmSJElFC2rB55Jwww03MHLkSMaNG0d4eDgzZszYc27u3LmccMIJZVWKJEmSJGQT\\nck8AACAASURBVEnSYaPMwp+OHTsyf/581q5dS+PGjalWrdqec927d6dPnz5lVYokSZIkSdJho8zC\\nHyjcMax169a/Ot60adOyLEOSJEmSJOmwUWZr/kiSJEmSJKnsGf5IkiRJkiSFMMMfSZIkSZKkEGb4\\nI0mSJEmSFMIMfyRJkiRJkkKY4Y8kSZIkSVIIM/yRJEmSJEkKYYY/kiRJkiRJIczwR5IkSZIkKYQZ\\n/kiSJEmSJIUwwx9JkiRJkqQQZvgjSZIkSZIUwgx/JEmSJEmSQpjhjyRJkiRJUggz/JEkSZIkSQph\\nhj+SJEmSJEkhzPBHkiRJkiQphEWWdwEHqkGDGuVdwmGlpL/fXr+yVZLfb69d2fP6VVxeu4rN61dx\\n+bqlYvNnr2Lz+lVcXruKrajveVggEAiUUS2SJEmSJEkqY077kiRJkiRJCmGGP5IkSZIkSSHM8EeS\\nJEmSJCmEGf5IkiRJkiSFMMMfSZIkSZKkEGb4I0mSJEmSFMIMfyRJkiRJkkKY4Y8kSZIkSVIIM/yR\\nJEmSJEkKYYY/kiRJkiRJIczwR5IkSZIkKYQZ/kiSJEmSJIUwwx9JkiRJkqQQZvgjSZIkSZIUwgx/\\nJEmSJEmSQpjhjyRJkiRJUggz/JEkSZIkSQphhj+SJEmSJEkhzPBHkiRJkiQphBn+SJIkSZIkhTDD\\nH0mSJEmSpBBm+CNJkiRJkhTCDH8kSZIkSZJCmOGPJEmSJElSCDP8kSRJkiRJCmGGP5IkSZIkSSHM\\n8EeSJEmSJCmEGf5IkiRJkiSFMMMfSZIkSZKkEGb4I0mSJEmSFMIMfyRJkiRJkkKY4Y8kSZIkSVII\\nM/yRJEmSJEkKYYY/kiRJkiRJIczwR5IkSZIkKYQZ/kiSJEmSJIUwwx9JkiRJkqQQFlneBRyok0+e\\nzoYNGeVdxmGjQYMafPjh8BJrz+tXtkry+nntyp7Xr+Ly2lVsXr+Ky9ctFZs/exWb16/i8tpVbEVd\\nvwob/mzYkMG6ddvKuwwdIK9fxeW1q9i8fhWX165i8/pVbF6/istrV7F5/Sour92hx2lfkiRJkiRJ\\nIczwR5IkSZIkKYQZ/kiSJEmSJIUwwx9JkiRJkqQQZvgjSZIkSZIUwgx/JEmSJEmSQpjhjyRJkiRJ\\nUggz/JEkSZIkSQphhj+SJEmSJEkhzPBHkiRJkiQphBn+SJIkSZIkhTDDH0mSJEmSpBBm+CNJkiRJ\\nkhTCDH8kSZIkSZJCmOGPJEmSJElSCDP8kSRJkiRJCmGGP5IkSZIkSSHM8EeSJEmSJCmEGf5IkiRJ\\nkiSFMMMfSZIkSZKkEHbIhD9//vOfy7sESZIkSZKkkHPIhD8dOnQo7xIkSZIkSZJCTtDhz+zZs1m9\\nejUAa9asYdiwYVx88cV7jh2sK664okTakSRJkiRJ0l5Bhz8PPvggNWvWBODee+/l+OOPp1OnTowf\\nP75YHY4aNYo33niD7Ozs4lUqSZIkSZKkYosM9o5paWnEx8eTnZ3Np59+ykMPPURkZCRdunQpVoed\\nO3fmiSee4LbbbuP000+nb9++nHTSSYSHHzIz0CRJkiRJkkJG0IlLXFwc69at4/3336dNmzZER0eT\\nnZ1NIBAoVoeXXnopM2fOZNasWTRs2JAJEybQrVs37rrrrmIXL0mSJEmSpN8XdPgzatQozj33XG69\\n9VYuv/xyABYtWkSrVq0OqOPGjRtz5ZVXMmnSJI4++mieffbZA2pHkiRJkiRJvy3oaV/nnnsuvXv3\\nBqBKlSoAtG3blokTJxa70/Xr1zN79mzmzJlDeno6vXr1YtSoUcVuR5Ikla8qdaD1yMKXE4l/yyvn\\naiRJkrQ/QYc/AFlZWSxcuJCUlBRGjBhBXl5esad9DRw4kLVr19KzZ09uuukmTj75ZCIiIorVhiRJ\\nOjR8+vpUajYP47Fal9B8UCwAc/pnk7GmeK8PJEmSVHqCDn+WLFnCVVddRevWrfnss88YMWIE69at\\nY/r06UybNi3oDi+//HJ69uxJ5cqVD6hgSZJUdnrens3zYx6jzqdp5L0KmXmQ/S6szIBvCuCjvkA2\\ntM2+lz8E4A8N4CGANkAXePqiS5g6qCapcXFsXx2gIKd8n48kSdLhKOjwZ8KECTz44IN07dqVTp06\\nAYXTvr744otiddinTx/S09N5880394wg2rJlC4FAgLp16xavekmSVGqq1IELOi/m+8fT+Op+2JkJ\\nEZlQ+QzIO6UpR57QBKKBVCAFXhmTx+Tv4PJLE6mTlAkroFGvp5h2Wgy7LzyRL1/IJbl5DC8s7swP\\n7xeU99OTQsql539Oo1rb4b0wSAjA8UAacGQYm7ZU41/PdCjvEiVJ5Sjo8Gfjxo107doVgLCwMACi\\noqLIz88vVoclNYJIkiSVrkYRabR4fgnvvQjVAhB/Y1eWXdCFqnVhR1w1XhgQxfbVe0OcNAqnejW/\\nriMJCQV0y1xEj0s/4ZU5u6iy8B1GXwiVW0Uy+rJEzuw9hDXr4srrqUkVWnR0Hp++/VjhFznARPj6\\ns23sKMilwRZonAZNomDhalhfFepnRVLl+kqkXNqRdy/NoWazMJJeLN5reElSxRZ0+NOsWTM++OAD\\nunXrtufYxx9/TMuWLYvVYUmNIJIkSaWnRtMwPrvrYb65CC64KY6kvgk8VuvswpPJ8MXteXz32v4X\\neE5aG0d+m0heZAAsHMANdzzAksd2sXzaLlo3yaNZq2RW93uY5pNHsT28Kqn5MWX4zKSKb/yOHRy1\\nOIXsefDKFIgKq0ybO2pyV6vrePW0bNgBzN97/+v+u51r/v4s773xCl3r1mPtHUOY8V11NieW21OQ\\nJJWxoMOfW265hSuuuIIePXqQlZXF7bffznvvvceUKVOK1WFJjSCSJEml48ju4dz91Gesbwe7ToXr\\nK1/ICyfFAllBPX7O2Tl0Hrd3wefB4WNo0X41t9Z/gTWvZpKzBLKXwL/Cp7ClRWMe++P5pOyKYfk0\\ndwuTitJ8cAQ33vcQ/7kN4mtA3RdOY9oDCVw2uiWQvd/HTOxfk5fOvJJhp3zE6UdvpfM9E6ncpwcz\\nW/Tk2xm+Bpekw0HQ4U+7du147bXXeO211xg4cCD16tVj5syZxV6np6RGEEmSpJJXs3kYvV6sxLq4\\nltTZBV+t7cir71cvdjtLxuXu+zWNWNxkONe/v51BKU9TcCvsXAtfrF/L1GX/4sHZNwIYAElF2Lyo\\ngMAyqFkNet0Pda/tRvrKonfX+/7tAu55uyv/bpnHWTedxN++fJSjclewdemZ3NalKQX+6ElSSCvW\\nVu9HHHEEI0aMOKgOS2oEkSRJKnn95lZi9cw87jrrKRZFwrE3x1Lvv5VYO/vgRwckfVebkcfVZiR3\\n8MfXorlz5CQ6VMnk2w+20qv+LfR/sCtXfXcGSW+FlcAzkULPDfnh1Nq+nawboPJS2BRfM6jg5+c2\\nfxvJv/8Uy7+5hQ/PnkSVc57m+VpX8EWqG69IUij73fDnxhtv3DM16/fce++9QXdYUiOIJElSyftp\\nCkjW0gApkdCgOvR9vRKPhGWWaD9zzs5hDqPpcdJ3TOkyk53zM9k5chGTb4Trm/RxBJC0H8fkfMPw\\n5TP4fDpwGty/5pyDau/SDy5hwtkv8s/vHuXU9+8omSIlSYek3w1/jjrqqFLptCRGEEmSpJL303St\\n3TcGiMymcBv3UrTgoyac/cNwjg1L4Z+tXuDDCYuY23cNE07owLTPOpVu51IF8+ENuQzvDi0aw/qV\\nMO6vr/EIYw64vaT0OK59eyiLn/kn//z7O3wyqR/PtQlubS9JUsXyu+HPlVdeWaKdJSUl8fDDD/Pp\\np5+ybds2atWqRceOHbnyyitp3rx5ifYlSQptRzTPI25zOoMWVuKlvtlsr1mDH1ZWKu+yQkKb0ZHk\\ntIwnEEilV8Y73Hh0C6BOqfWX9F1tvqtUm+3X38VZjzxEysItTH1wLu0G1uGmNk3IWFO8aS1SqJqX\\n1JrE0V/RPvpr1q6Fjknp/GlrFR6vvfuA29y4qQYNTvsrHyRMIndBHG8e05H0Ff7MSVKoCS/OnRct\\nWsRtt93Gn//8Z2677TYWLVoU9GPXrl3L4MGDyc7O5tprr2Xq1Klcc8017N69m8GDB7NmzZpiFy9J\\nOrzUO2IHt1+/gNsbLmBS37eYUm8Kp/aaxPyOU5g19nW63BFR3iWGhC8n53HxsmHE5sKqdGgzslhL\\nBB6Qkx6Ios2oKLrGQuJ2WPsgXDHrKf74XwM96Sfr3yrgtRdbA5AJZD9Zcm3fVrMX/f89m/uHfMg5\\nvVeWXMOSVMFUqQP1TylWVFIhBP2MnnzySa677jpq1qxJ9+7dqVWrFtdffz3Tp08P6vGPPvoo/fv3\\nZ9q0aQwcOJBu3bpx3nnn8eijjzJgwAD+9a9/HfCTkCSFvr6vV+KCx3LoOmchJ2xdyJeXdyPr6eN5\\nc95IZvYZwIbRXzFh5iO89PE7NDwj9P5gl7UvJ+fxh4GwFTj+ykj6vBxdqv19/24BAC1joXddmPc/\\nSP8IRjzzn1LtV6poPj2+LfwLagJh6+Hm/Kl0HHvwAe3nm5ryzbCmdPzbuwyoteLgC9UBqdk8jAu+\\nrEyNpi58L5WlL5+dwlO1pjCKKYzKmMrtKyZzxau7yrusEhX0X4rp06fz1FNP7bMle//+/bnssssY\\nPnx4kY9PTEzkySf3//HEZZddxsUXXxxsKRXSkaRTqUk+A2dXonoUJC0r4P1Lc9iQFUdegZ9US9LP\\nhUdC/ea7yQmLptamNC46dwn/V2cpL18fSdvHErizzgimHhPJ3xkAQGRMAv8ZsIb/zfgfjS5L5o6Z\\nTflTm2bl/Cwqvp4vj2Ry+FS2XQo1W5RuoPbdq/kELl9AXJ+tsAKaAP95FHqflszgCenMf7oGKSv8\\ne1naIiPzaVE7DdLhkqWZtM//hsS6XXm2XRY7YquxMakKAdfiLncpzevQtloKC7+HQenJVK1/8EFB\\nxs7KPNLwckbH3Urrunm06JXHqrdKf9SfCt1UawEjchbyv3Do/TREL4CoRi7CLZWFprXSeHNYGs2H\\nxxJ5zaWsWBNL1qUfcs2Nk7jkqThOvGRUeZdYIor1G/2XC0A3bNgwqN3AANLS0mjQoMF+z9WvX5/0\\n9PTilFJh1KiexbD2i7nsi6VsaVHAihe60ioWTv3fPEY0hvH9buLdf1Qp7zIl6ZAy7tqFnBK9kW8i\\n4mg2ZzHh78KDb3Zi40VHcP97Xfj8gdx97l//5HCaXhtBnedh2w5Imu6705IQnQCRraHL4kXM6nR2\\nqfc3eXpn2oyM5IoLX+fY2cD/YMWirdzX+CGefv86bqtTvdRrONyd9n/Z/C1xCkcsha2XQdYKOLXN\\nIga0h93nteDmLeez8dsoVj6VX96lHraSXshn8PJR/Puy8SQ+DLwIxJZc+388CRZvTqNGwY6SbVi/\\nqUodiO4QTv0CeLljd/5TI5LGj3zCtb2W8sLuzvzwfkF5lyiFtAeaPUd+II4B00fBdIAcoDOcC+1H\\nLuSURmt5f33j8i2yBAQd/lx11VWMHTuWq666irp167Jp0yamTJnCmDFjKCjY+wspPPy3Pxn8raAo\\nPDw86BCporngNRg7YgFzZwxj4vBYUjbGA3D94uP5w8r32Xi1L54kqcej0TTpksN1s6bw/T9gzcsp\\nLFsNBUDbBfDsix0Z++iZ5PwjEsj91eM3fVTAQ+vO4LH3ljGnTwGrHvd3a4mIhch2ELh+ESNe38Zz\\nDC71Lm++oAPhC2sx4ounid0GiWtg1r9h0Jqn6D8iHI6H/vefz5p1caVey+Hm9Keimfr0ZDYmw39f\\nHMbGqDq80C2bmUfNIP7D7SR+sIrBjaZx7LyGXLb7HJJe9OesPKx6IZ/1lfJo+ArUeRmqBLLotes9\\n3qfbQbd97s7ZfPMGpLTdRo2dhj9lpVHtNG66fAnPtLqYsR2bULN5GP3vb8dZH/4TToJJ73cs7xKl\\nkNVmVCSV3gznzekXQY99z02e3pm1T7/Bmv9tZNnLFX8DiqDDn9tvvx2AOXPmEBYWRiBQ+MRff/11\\nbr/9dgKBAGFhYaxYsf85wllZWQwbNmy/5wKBANnZ2cWtvUL4+vJNVDoFpl4Twzeba8Pmwu/brdVq\\ncN+YaL4ueIAwHNIp6fAUdwzEp6Vw/c7XSe78PRsTqnD0ydWptjWB2g8W8PipF1GnbY0i28ndCTPO\\nrUzBsru5Pev/eK5uGOwogycQ4vKIpGG1GL7M2EWXvyVz6m3ZzL+rdBdg3p4U4Mbuzag08WzOeOYT\\n4r9PpnEuvDJ/Kze3ARrBwLciua9VqZZxWLpjyTT++0Ua1ef0ZtxFLUhfWfiapdOL1zD0q8oAHHPq\\nozQ94TPOOrYek8M7EnBAQrnIWn83LIPIcFgxPsDJE3ZT76RwNn104Bek4RnhHH/aDhblQMMmFC74\\n5dI/ZaJgVR4ZV+9iYko18nMh7asA2Y3i6fC/PL5O2UV4NBTklHeVUmiqkhDGp5XgoR7V9nu+80Uj\\nGT4uiYgQ2H8i6PBn3rx5B9XR3Xff/bvnBw0adFDtH4qOuTSC8ePXsHsgDK3xKcvou+fc6bftps0H\\n35OfCq0uiXD4tKTD0tOLPiD6/PcomA4X3hXJ3+sO4vbVLcnZHmDZNcWfupX0Uh5xR0CnSdG8Gnp/\\nVsrc+rQ43i3oTGzsfL5fv5VubRYx/5cfi5WC7UkBxk7swPsvnsg0biEqDLa/Bt++AWG9m/L8Oa5D\\nUho+6d+RlKe388D/dSF95b4hwozjsn68dQlfDBlP+s5wwqMhP+vX7ahspH0HOzdDShUIPwuOqR3J\\npo8OPCHYuSHAzqcDbAKqxx/L6ozGFI6/VGmLPhI2doVOLyQS9Zezqf1FEueu2sj2KMg6MpzobZCV\\nUt5VSqGpRc5qqgV+e2Hn6hHQomoZFlSKgn71dOSRRx5URwMGDDiox1dEGxcWMCOiN9VX5HFC1Ce8\\n3mg962d25ZZBJ/Bk78fZPiWNgrPhh4X+YZV0eDpz8HvMWgsD/gl3dRrDA21qkLnp19O6gtXp9ii2\\n/xtOu+d1vvj8Fl5o7zvTg7E7GTamFTCgJiwu4743Lihg5olZPD4Hmq2EXfNg4QY4f9UWKhdkAyHy\\nSuwQsqhKJ7qH/5dLqn7M3XT5zfu9ecUgLnv9DV5feBwZhMBHoRXQvbFXcU3Uw4RHQvV8aLVhGWde\\n3InqR9Xlv2cUfzT9kM8q07Z6Elk3J5EXAY2uA64s+bq1fynVa5PUogsd+IQe767n6G07WP2XTDbE\\nQsRR+WQtKO8KpdD1zmO1OSIjmj4vRzP33F8H6JkFMHdSLhlpFXvKFxQj/NmxYwf/+c9/WLFiBZmZ\\nmfucC3a798NNxncBHm+QA/Ti7RsyyJuTStTF83h292u8OTCSo0bXoefUi8lIrfj/kCSpuJ65+wUm\\n3Qr9+lXi1NuH8nFideDgfh8+3zaLW4C6m7ZzbEIKMfVrsOsHf8cejFmczkVHrqBjcjJb64SV6fSD\\nj6c/ArWAbKiUDwW7IfOlXXz76kO0PGcM36fFkpVaNrUcDl7uls0dTQtI3/AWDZbV4eaBzclYvffn\\np0oCNGIrtc98ibCbq3GwP686cJsijyA6HKqEQYdmwI7d3Jz+EBntqjHy0eG8PKY6WdnBvcyPqR9G\\nXOswjng6mbSXsxnbJ5xTXjyX9W8eeBCv4kn+KoJhX/Vi4UfpxL+6FfpV5aVao0haE8vcc5zvJZWm\\n5NQYevynDgPGTmT39SOY/8DeDzXGvLGL/3v5Mf72aS/yN5VjkSUk6PDn6quvJj8/nzPOOINKlfyU\\np7iu23EBVYeE0SJnNS0S17A9qjp/ndeJ5FRH/Ug6/MQdG0bS02G0jgznsRoD+fj1RiXS7pMff0xu\\nG6AB3Dr1QVbMuZs3BmWzPck3qQfqy8l5bKhVwIoa0OacKGo+FUb6irL5fn5QpSvH8jpbvoQVGXBy\\nfYg5EagCt769llsvqc1GR8+WqDmDu9O52kb+cPMzjOx9Onmf5fJpzxM5ZcPH5KdHcNmuj/i6aU1u\\nnj6IjJ2Vy7vcw9bSu3IhBgqqweI0qBvZgK+rHk3lQDZ3Dvovn0w+jzVf7H/9il/qMiGKPo+/R8uH\\n32ZbP/hby1NYNNbgpzxcOeNCvpycB/f9dMTgRyoLZ198AbdWncOwl54nb+T5RNWGk1ct4vzLE3n7\\njDimftapvEssEUGHP8uWLWPx4sVERUWVZj0ha/mjhWtXLKER8NObHF+wSjo8nRSdRKv8NZzZPJyp\\npx0Hz5bMC9zeu97luzYQSAKGQvwx4dRsHmb4c5BennEJFw98gBZvf0x8/jGkl8EOQG1GRdJ5WRK8\\nD998AlXyIeH12jzU/GKoCstXJrBxodP6Stpt9/fgjL/n0P7hLG5cOYmaJ0HaGV+RMDOVna1hcvUR\\nPNqvCt9tcheo8vTR7QFuu/hULmg+nzmL4ITHt9L2uOW0O+8KYgoy+f67mKDaqXdSOGOqvEvLUfNZ\\n2RF2/6svd9btUMrV67d8Obn4a91JKhn/yOzFkevTmHHhTN6q04+hpy+k/r1w9l+Hl3dpJSbo8KdD\\nhw6sXr2aVq3cXkOSdHAqN8oiIjebqDYRzBtecp9sbo5MIL/qZsiEwBuQFiggd2eJNX/YSsqLY9qL\\n13DxFQ9yzdPbWVU/mmndYkp1ylWd+F00OHUL33WH8CrQ6zO4qv1NAGxfXcBzbQx+SkNBHrx1YzRv\\n3RjNPe5GesgKEMZzGadyxsydXPXHRB55czdr3tzNV4sn8tgxf+bpCwv45rXwIts564hEjntyPm9V\\ngb4d6/CnIbXKoHpJOvTkEck6EjjppGEM/aoy5/3xTpZfGFqBbNDhzz333MOIESNo27YttWvX3ufc\\nlVce/Ipws2fPpm/fvkXfUZJU4X39TR2qHV2bJYvTGH7zt8x86Wgy1hz86Jx74q7hqg23QAN4Y/hp\\nzIg1ICgJc87O4bhG2VzTDY4b+BR9ro0h8h8X8MjNR5ZKAFSlDlxQfzFhN6TxTjqcdQt80LwLS8YX\\nTkX5YrJTUqQ1r+YzceQAZp2aSKtv4Ytd8MXpOxk+aiLdh/+B52rHMeXJzvt97FF9whma+QFnV3qX\\niFXQdEZPTnuiB0kL3X1WkvbucBlagg5/Jk2axObNm2nQoAE7d+79GDUsLKxECpk2bZrhjyQdJr76\\nJoE/b7qIxNoPMnj3KzS8/1KWJzRi1snF36Xml77+DDrcB5eedBIuSFtyUqrXZuaD13LESU+R8bc0\\nRh//HMMfjWFlRiznXnZ+ifY18KPKVHolnJdfh0Dz2jxz8cWkVItnyTjXv5B+bv6fc3howUhG7p5K\\n/suwZAusfwg6PLGYiV0jGPnwUvr+YyjrNhSO6Dnn3Upc8+AkFnwaRv38FKpnwb+O7cmj153C1q8M\\nfiQplAUd/syZM4e33nqLhISEUilk9uzZpdKuJOnQ9H1GTW5ceCfnDX2YBv83nXZrc5g2Ap4dPIRH\\n+9WGavBdeixZ+UH/qeLBlWOZdVYlbvl2MGlfG/yUtFNjFtFtVBppT8GML3axa+AuTotNZseI8Txz\\n+SU8dHoMKdFVSU0Lbr2Rn4s9JowTR2XT+qxsrvh4PHNvLlwZb8Ql2/j3qtVsaH1EyT8hqYLbsS7A\\n9U0SmHbB33j41Vn06/M/FqfDJ7uh3vJ8GixP4dPu/yTQEKgLz50Nn2VC3QRoXjueNZOa8Nw9PQx+\\nJOkwEPQr6oYNGxIZGfwLcEmSivJMpzy+uW0MnbM+pV10BrO+3ED93i/weDwktIA3Ah1I/UM1VkU3\\nIymqyZ7HLZuUR+6Ofds6lZV8NTrA9oQWbD+1FUx1lEiJ2pLFNx9UYWfX0+gdP49LZ8DXmZCWCbP/\\nBce89BSP1YWPExqT9nVjtvevyrSnit4do3ujtXRvtI4O50URvWk1m7us4ZWt0LYRtOoL18/sxZSx\\n7Wkz2qle0m9Z9Vw+Zz13Dvd3q8yAwGI2AB8ugqYtYNc6KFhXeL/2J0DtE2vxdb8OjPvoZN7vCmDw\\nI0mHg6DTnP79+zNq1CguvPDCX63507Vr19997NChQ4OaHvbss88GW44kKQQE8mDJuFyWcDxxx4UR\\nsz2TXk9m8/eG/6QS0PfGT3lzDjQIW8ql4dVo3RYYCdt6BSjIDfBmzGn02P0Rlb/IYuUtOzhqQ4Bz\\nvjidze8a/JS05NQYxlx2ClXqhFEvuyVsKzxekF94s/e/KzE+/UEiLlvLtqi1bHk/gjNIBKDlAni/\\nalc+rLL39cKZ/Z+iTfZWdqfuIjMzk6wbIT0Xup8Hdw+9hscuzCbybfgqqXDEsbvgSEW75aMzWHxD\\nJx66/AWm5l7Iiuowe2A2kTFwRKdwVvw7n5zUKLbOiSN9haMjJelwEnT481MwM3HixH2Oh4WFMW/e\\nvN997KBBg/bcXr9+PbNmzWLAgAHUr1+fH374gVdffZWBAwcWp25JUohJ+ypAGlV4/KIqPP7jLkO9\\nZ0Zzf8IkqmwKo/IPATZMTWbJAKAA+lWFdtnP80kNaNM4mu9fGUKd3k0pMCMoNbuTYXdygDR+PQV8\\n+jkwnTsYPXwJo2onEvt2OFtPhO+/2MqaHvkcyWtcyWtER0GrBrBhA3wYAUdVg6Nqwur8eLY/cCLt\\n7jqBjJk/vilNKuMnKFVweQURvHRvbV66d9SvTy788f+p4HpoknT4CTr8ee+99w64kwEDBuy5PXjw\\nYJ544glatGix51i/fv0YO3YsY8aMOeA+JEmh543zcniD0RzZI5wje0TQp/87kAhkw5ORkJEE1frA\\n223jefnpFhTkOX2hvE2e3pnJdKbzuCiO7BHO5FUPsuHDnby5qg4Nu64jE9gC1AL+dCSsatWUVxIb\\ncvMdPWA4+KZUkiSp5JX5Ij6rV6+mUaNG+xxr0KABa9asKetSJEkVxMYFBWxcUMASevz65MMQVQ3C\\nIg1+DiVLxuVSJQFOjRtCfnaAjB2VeSFtF8sXTt1zn5u2XsOLA6PYsKZqOVYqSZIU+oIOMx7nqwAA\\nBIBJREFUf3bu3MnDDz9MYmIi6enpBAJ7P5lbsGBB0B126tSJW265hauvvpq6deuyadMmHnnkETp2\\n7FiswiVJ+knuzvKuQPuzOxm+SY7b83VyagxhR9xRjhVJkiQdnsKDveO4ceP4+uuvGTVqFNu2beO2\\n226jXr16XHrppcXq8J577gGgb9++tG/fnn79+hEIBJgwYUKx2pEkSZIkSVLRgh7589FHHzF37lxi\\nY2OJiIjg9NNPp02bNvzlL38pVgBUq1YtJk2aREFBAWlpacTFxREeHnQGJUmSJEmSpGIIOnUpKCig\\nevXqAFStWpWMjAzq1KnDunXritVh586dCzsODyc+Pn5P8FPUdvGSJEmSJEkqvqBH/rRq1YrExES6\\ndu1Khw4dGD9+PDExMTRu3LhYHebm5u73WEFBQbHakSRJkiRJUtGCDn/uuuuuPYs8//Wvf+WBBx5g\\nx44d3HvvvUE9fujQoYSFhZGTk8OwYcP2Obd582bat29fjLIlSZIkSZIUjCLDn+XLlxMdHU3Lli0B\\nSEtL4+677+bbb7+lffv21KtXL6iOBg0aRCAQ4Msvv+S8887bczwsLIzatWvTpUuXA3wKkiRJkiRJ\\n+i1Fhj8TJkzgyiuv3BP+3HrrrSQnJ3P++ecze/Zs7rvvPsaNG1dkRwMGDACgbdu2NGvW7OCqliRJ\\nkiRJUlCKDH9Wr15Nx44dAcjIyOCDDz7g9ddfp0mTJvTs2ZPzzz8/qPDnt0YQrVq1inbt2nHzzTcT\\nExNzcM9GkiRJkiRJ+yhyt6/8/HyioqIAWLZsGfHx8TRp0gSAevXqkZGREVRHEyZMIDU1dc/Xt956\\nK2vXrmXIkCGsWrWK++6770DqlyRJkiRJ0u8oMvxp3rw5b7zxBgBz587dZ0v2LVu27Nn+vSj7G0F0\\n//33M2zYMCZOnMj8+fMPpH5JkiRJkiT9jiKnfd1www2MHDmScePGER4ezowZM/acmzt3LieccEJQ\\nHZXUCCJJkiRJkiQFr8jwp2PHjsyfP5+1a9fSuHFjqlWrtudc9+7d6dOnT1Ad/TSCqE+fPgc1gkiS\\nJEmSJEnBKzL8AahWrRqtW7f+1fGmTZsG3VFJjSCSJEmSJElS8IIKf0pCSY0gkiRJkiRJUvDKLPyB\\nkhlBJEmSJEmSpOAVuduXJEmSJEmSKi7DH0mSJEmSpBBm+CNJkiRJkhTCDH8kSZIkSZJCmOGPJEmS\\nJElSCDP8kSRJkiRJCmGGP5IkSZIkSSHM8EeSJEmSJCmEGf5IkiRJkiSFMMMfSZIkSZKkEGb4I0mS\\nJEmSFMIMfyRJkiRJkkKY4Y8kSZIkSVIIM/yRJEmSJEkKYYY/kiRJkiRJIczwR5IkSZIkKYRFlncB\\nB6pBgxrlXcJhpaS/316/slWS32+vXdnz+lVcXruKzetXcfm6pWLzZ69i8/pVXF67iq2o73lYIBAI\\nlFEtkiRJkiRJKmNO+5IkSZIkSQphhj+SJEmSJEkhzPBHkiRJkiQphBn+SJIkSZIkhTDDH0mSJEmS\\npBBm+CNJkiRJkhTC/h8BOi8WQI9RGAAAAABJRU5ErkJggg==\\n\",\n      \"text/plain\": [\n       \"<matplotlib.figure.Figure at 0x1c59301ed310>\"\n      ]\n     },\n     \"metadata\": {\n      \"tags\": []\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"make_plot(img, seg, rec, samples_local, fs=2)\\n\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"colab\": {\n   \"collapsed_sections\": [],\n   \"last_runtime\": {\n    \"build_target\": \"\",\n    \"kind\": \"private\"\n   },\n   \"name\": \"HPU-Net\",\n   \"provenance\": []\n  },\n  \"kernelspec\": {\n   \"name\": \"pycharm-7906112d\",\n   \"language\": \"python\",\n   \"display_name\": \"PyCharm (segmentation)\"\n  },\n  \"pycharm\": {\n   \"stem_cell\": {\n    \"cell_type\": \"raw\",\n    \"source\": [],\n    \"metadata\": {\n     \"collapsed\": false\n    }\n   }\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "hierarchical_probabilistic_unet/README.md",
    "content": "# Hierarchical Probabilistic U-Net\n\n![](media/architecture.jpg)\n\nThis package provides an implementation of the Hierarchical Probabilistic U-Net\n(HPU-Net) as published in [A Hierarchical Probabilistic U-Net for Modeling\nMulti-Scale Ambiguities (2019)](https://arxiv.org/abs/1905.13077).\n\nThe HPU-Net combines a hierarchical VAE with a U-Net and learns an\nimage-conditional distribution over plausible outputs, here segmentation maps.\nThe hierarchical latent space decomposition allows to model independent\nvariations across locations and scales and increases the granularity of\npredicted segmentations as compared to prior work ([the Probabilisitc\nU-Net](https://arxiv.org/abs/1806.05034)).\nThe architecture, depicted above, interleaves the U-Net's decoder with a\nprior that is used when sampling at test time (see Subfigure a) above). Training\nproceeds as is typical for VAEs, i.e. a separate posterior network is employed\nwhose latents are injected into the decoder (see Subfigure b) above).\n\nThe animated gif below shows 16 segmentation samples when sampling from either\na) the full hierarchy or fixing some of the latents to the prior's mean: b)\nfixing all but the most local latents and c) fixing all but the most global\nlatent.  The first row depicts CT scans showing potential lung abnormalities and\nthe rows below show individual samples and the standard deviations cross them.\n\n![](media/animation.gif)\n\nIn addition to the model code we provide the preprocessed version of the\n[LIDC-IDRI\ndataset](https://wiki.cancerimagingarchive.net/display/Public/LIDC-IDRI)\nthat we employ as well as pretrained model weights. Both can be loaded in a\npublic colab, see below.\n\n## Colab [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind-research/blob/master/hierarchical_probabilistic_unet/HPU_Net.ipynb)\nTo quickly tinker with the pretrained model and the dataset without the need of\ninstalling anything locally click the `Open in Colab`-button above to follow the\nlink to the colab.\n\n\n## Installation\nTo install the package locally run:\n```bash\ngit clone https://github.com/deepmind/deepmind-research.git .\ncd deepmind-research/hierarchical_probabilistic_unet\npip install -e .\n```\n\n## LIDC 2D crops\nWe provide a preprocessed version of the Lung Image Database Consortium image\ncollection dataset\n([LIDC-IDRI](https://wiki.cancerimagingarchive.net/display/Public/LIDC-IDRI))\nas used and described in [A Hierarchical Probabilistic U-Net for Modeling\nMulti-Scale Ambiguities (2019)](https://arxiv.org/abs/1905.13077).\n\nThe original dataset consists of 3D lung CT scans with semantic segmentations of\npossible lung abnormalities, as graded by four expert readers. We have cleaned\nup the data resulting in a slightly changed number of images for\neach data set split, see below (which leaves the results the same). The data is\nhosted in Google Cloud Storage ([this bucket](https://console.cloud.google.com/storage/browser/hpunet-data/lidc_crops/)).\n\n#####Preprocessing:\n\nWe resampled the CT scans to 0.5mm x 0.5mm in-plane resolution and then cropped\n2D images of size 180 x 180 pixels, centered on the abnormality position. The\nabnormality positions are those where at least one of the experts segmented an\nabnormality and we assumed that two masks from different graders correspond to\nthe same abnormality if their tightest bounding boxes overlap. We only used\nthose abnormaliies that were specified as a polygon (outline) in the XML files\nof the LIDC dataset, disregarding the ones that only have center of shape. That\nis, according to the LIDC paper we use the ones that are larger than 3mm, and\nfilter out the others, that are clinically less relevant ([2], see below).\nWe also filterd out each Dicom file whose absolute value in the XML element of\n`SliceLocation` differs from the absolute value of the last element in\n`ImagePositionPatient`.\n\nThis preprocessing results in 8843 images for training, 1993 for validation and\n1980 for testing (corresponding to 530, 111 and 103 patients respectively).\n\n#####Directory Structure\n\nThe GCS bucket contains tar.gz-files for the training, validation and test data.\nEach tar.gz-file contains a zipped directory with two subdirectories, one named\n`images` and `gt`. Their subdirectories comprise a directory for each patient\nthat is part of that data split. Each patient's directory holds the\ncorresponding cropped 2D images in .png-format. The naming scheme follows\n`z-<imageZposition>_c<crop number of the slice>.png` for CT scans and\n`z-<imageZposition>_c<crop number of the slice>_l<labeller id in [1,4]>.png` for\nthe binary segmentation maps, allowing to match the images and their\ncorresponding four annotations.\n\n\n#####Citations & Data Usage Policy:\n\nThe [LIDC-IDRI\ndataset](https://wiki.cancerimagingarchive.net/display/Public/LIDC-IDRI)\nwas published in [1, 2, 3] and is made available under the [CC BY 3.0\nlicense](https://creativecommons.org/licenses/by/3.0/).\n\n[1] Armato III, Samuel G., McLennan, Geoffrey, Bidaut, Luc, McNitt-Gray, Michael\nF., Meyer, Charles R., Reeves, Anthony P., … Clarke, Laurence P. (2015). Data\nFrom LIDC-IDRI. The Cancer Imaging Archive.\n([Link](http://doi.org/10.7937/K9/TCIA.2015.LO9QL9SX))\n\n[2] Armato SG III, McLennan G, Bidaut L, McNitt-Gray MF, Meyer CR, Reeves AP,\nZhao B, Aberle DR, Henschke CI, Hoffman EA, Kazerooni EA, MacMahon H, van Beek\nEJR, Yankelevitz D, et al.:  The Lung Image Database Consortium (LIDC) and Image\nDatabase Resource Initiative (IDRI): A completed reference database of lung\nnodules on CT scans. Medical Physics, 38: 915--931, 2011.\n([Paper](https://www.ncbi.nlm.nih.gov/pubmed/21452728))\n\n[3] Clark K, Vendt B, Smith K, Freymann J, Kirby J, Koppel P, Moore S, Phillips\nS, Maffitt D, Pringle M, Tarbox L, Prior F. The Cancer Imaging Archive (TCIA):\nMaintaining and Operating a Public Information Repository, Journal of Digital\nImaging, Volume 26, Number 6, December, 2013, pp 1045-1057.\n([Paper](https://link.springer.com/article/10.1007%2Fs10278-013-9622-7))\n\nWe make the `LIDC 2D crops` data, accessible from above GCS bucket, available\nunder the [CC BY 3.0 license](https://creativecommons.org/licenses/by/3.0/).\n\n\n## Pretrained Model\nWe provide a pretrained model checkpoint ([Google Cloud Storage\nbucket](https://console.cloud.google.com/storage/browser/hpunet-data/model_checkpoint/))\nthat can be loaded as exemplified in our colab.\n\n\n## Giving Credit\n\nIf you use this code in your work, we ask you to cite this paper:\n\n```\n@article{kohl2019hierarchical,\n  title={A Hierarchical Probabilistic U-Net for Modeling Multi-Scale Ambiguities},\n  author={Kohl, Simon AA and Romera-Paredes, Bernardino and Maier-Hein, Klaus H and Rezende, Danilo Jimenez and Eslami, SM and Kohli, Pushmeet and Zisserman, Andrew and Ronneberger, Olaf},\n  journal={arXiv preprint arXiv:1905.13077},\n  year={2019}\n}\n```\n\n## Disclaimer\n\nThis is not an official Google product.\n"
  },
  {
    "path": "hierarchical_probabilistic_unet/geco_utils.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Utility Functions for the GECO-objective.\n\n(GECO is described in `Taming VAEs`, see https://arxiv.org/abs/1810.00597).\n\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport numpy as np\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\n\nclass MovingAverage(snt.AbstractModule):\n  \"\"\"A thin wrapper around snt.MovingAverage.\n\n  The module adds the option not to differentiate through the last element that\n  is added to the moving average, specified by means of the kwarg\n  `differentiable`.\n  \"\"\"\n\n  def __init__(self, decay, local=True, differentiable=False,\n               name='snt_moving_average'):\n    super(MovingAverage, self).__init__(name=name)\n    self._differentiable = differentiable\n    self._moving_average = snt.MovingAverage(\n        decay=decay, local=local, name=name)\n\n  def _build(self, inputs):\n    if not self._differentiable:\n      inputs = tf.stop_gradient(inputs)\n    return self._moving_average(inputs)\n\n\nclass LagrangeMultiplier(snt.AbstractModule):\n  \"\"\"A lagrange multiplier sonnet module.\"\"\"\n\n  def __init__(self,\n               rate=1e-2,\n               name='snt_lagrange_multiplier'):\n    \"\"\"Initializer for the sonnet module.\n\n    Args:\n      rate: Scalar used to scale the magnitude of gradients of the Lagrange\n          multipliers, defaulting to 1e-2.\n      name: Name of the Lagrange multiplier sonnet module.\n    \"\"\"\n    super(LagrangeMultiplier, self).__init__(name=name)\n    self._rate = rate\n\n  def _build(self, ma_constraint):\n    \"\"\"Connects the module to the graph.\n\n    Args:\n      ma_constraint: A loss minus a target value, denoting a constraint that\n          shall be less or equal than zero.\n\n    Returns:\n      An op, which when added to a loss and calling minimize on the loss\n      results in the optimizer minimizing w.r.t. to the model's parameters and\n      maximizing w.r.t. the Lagrande multipliers, hence enforcing the\n      constraints.\n    \"\"\"\n    lagmul = snt.get_lagrange_multiplier(\n        shape=ma_constraint.shape, rate=self._rate,\n        initializer=np.ones(ma_constraint.shape))\n    return lagmul\n\n\ndef _sample_gumbel(shape, eps=1e-20):\n  \"\"\"Transforms a uniform random variable to be standard Gumbel distributed.\"\"\"\n\n  return -tf.log(\n      -tf.log(tf.random_uniform(shape, minval=0, maxval=1) + eps) + eps)\n\n\ndef _topk_mask(score, k):\n  \"\"\"Returns a mask for the top-k elements in score.\"\"\"\n\n  _, indices = tf.nn.top_k(score, k=k)\n  return tf.scatter_nd(tf.expand_dims(indices, -1), tf.ones(k),\n                       tf.squeeze(score).shape.as_list())\n\n\ndef ce_loss(logits, labels, mask=None, top_k_percentage=None,\n            deterministic=False):\n  \"\"\"Computes the cross-entropy loss.\n\n  Optionally a mask and a top-k percentage for the used pixels can be specified.\n\n  The top-k mask can be produced deterministically or sampled.\n  Args:\n    logits: A tensor of shape (b,h,w,num_classes)\n    labels: A tensor of shape (b,h,w,num_classes)\n    mask: None or a tensor of shape (b,h,w).\n    top_k_percentage: None or a float in (0.,1.]. If None, a standard\n      cross-entropy loss is calculated.\n    deterministic: A Boolean indicating whether or not to produce the\n      prospective top-k mask deterministically.\n\n  Returns:\n    A dictionary holding the mean and the pixelwise sum of the loss for the\n    batch as well as the employed loss mask.\n  \"\"\"\n  num_classes = logits.shape.as_list()[-1]\n  y_flat = tf.reshape(logits, (-1, num_classes), name='reshape_y')\n  t_flat = tf.reshape(labels, (-1, num_classes), name='reshape_t')\n  if mask is None:\n    mask = tf.ones(shape=(t_flat.shape.as_list()[0],))\n  else:\n    assert mask.shape.as_list()[:3] == labels.shape.as_list()[:3],\\\n      'The loss mask shape differs from the target shape: {} vs. {}.'.format(\n          mask.shape.as_list(), labels.shape.as_list()[:3])\n    mask = tf.reshape(mask, (-1,), name='reshape_mask')\n\n  n_pixels_in_batch = y_flat.shape.as_list()[0]\n  xe = tf.nn.softmax_cross_entropy_with_logits_v2(labels=t_flat, logits=y_flat)\n\n  if top_k_percentage is not None:\n    assert 0.0 < top_k_percentage <= 1.0\n    k_pixels = tf.cast(tf.floor(n_pixels_in_batch * top_k_percentage), tf.int32)\n\n    stopgrad_xe = tf.stop_gradient(xe)\n    norm_xe = stopgrad_xe / tf.reduce_sum(stopgrad_xe)\n\n    if deterministic:\n      score = tf.log(norm_xe)\n    else:\n      # Use the Gumbel trick to sample the top-k pixels, equivalent to sampling\n      # from a categorical distribution over pixels whose probabilities are\n      # given by the normalized cross-entropy loss values. This is done by\n      # adding Gumbel noise to the logarithmic normalized cross-entropy loss\n      # (followed by choosing the top-k pixels).\n      score = tf.log(norm_xe) + _sample_gumbel(norm_xe.shape.as_list())\n\n    score = score + tf.log(mask)\n    top_k_mask = _topk_mask(score, k_pixels)\n    mask = mask * top_k_mask\n\n  # Calculate batch-averages for the sum and mean of the loss\n  batch_size = labels.shape.as_list()[0]\n  xe = tf.reshape(xe, shape=(batch_size, -1))\n  mask = tf.reshape(mask, shape=(batch_size, -1))\n  ce_sum_per_instance = tf.reduce_sum(mask * xe, axis=1)\n  ce_sum = tf.reduce_mean(ce_sum_per_instance, axis=0)\n  ce_mean = tf.reduce_sum(mask * xe) / tf.reduce_sum(mask)\n\n  return {'mean': ce_mean, 'sum': ce_sum, 'mask': mask}\n"
  },
  {
    "path": "hierarchical_probabilistic_unet/model.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Open Source Version of the Hierarchical Probabilistic U-Net.\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport geco_utils\nimport sonnet as snt\nimport tensorflow as tf\nfrom tensorflow_probability import distributions as tfd\nimport unet_utils\n\n\nclass _HierarchicalCore(snt.AbstractModule):\n  \"\"\"A U-Net encoder-decoder with a full encoder and a truncated decoder.\n\n  The truncated decoder is interleaved with the hierarchical latent space and\n  has as many levels as there are levels in the hierarchy plus one additional\n  level.\n  \"\"\"\n\n  def __init__(self, latent_dims, channels_per_block,\n               down_channels_per_block=None, activation_fn=tf.nn.relu,\n               initializers=None, regularizers=None, convs_per_block=3,\n               blocks_per_level=3, name='HierarchicalDecoderDist'):\n    \"\"\"Initializes a HierarchicalCore.\n\n    Args:\n      latent_dims: List of integers specifying the dimensions of the latents at\n        each scale. The length of the list indicates the number of U-Net decoder\n        scales that have latents.\n      channels_per_block: A list of integers specifying the number of output\n        channels for each encoder block.\n      down_channels_per_block: A list of integers specifying the number of\n        intermediate channels for each encoder block or None. If None, the\n        intermediate channels are chosen equal to channels_per_block.\n      activation_fn: A callable activation function.\n      initializers: Optional dict containing ops to initialize the filters (with\n        key 'w') or biases (with key 'b'). The default initializer for the\n        weights is a truncated normal initializer, which is commonly used when\n        the inputs are zero centered (see\n        https://arxiv.org/pdf/1502.03167v3.pdf). The default initializer for the\n        bias is a zero initializer.\n      regularizers: Optional dict containing regularizers for the filters\n        (with key 'w') and the biases (with key 'b'). As a default, no\n        regularizers are used. A regularizer should be a function that takes a\n        single `Tensor` as an input and returns a scalar `Tensor` output, e.g.\n        the L1 and L2 regularizers in `tf.contrib.layers`.\n      convs_per_block: An integer specifying the number of convolutional layers.\n      blocks_per_level: An integer specifying the number of residual blocks per\n        level.\n      name: A string specifying the name of the module.\n    \"\"\"\n    super(_HierarchicalCore, self).__init__(name=name)\n    self._latent_dims = latent_dims\n    self._channels_per_block = channels_per_block\n    self._activation_fn = activation_fn\n    self._initializers = initializers\n    self._regularizers = regularizers\n    self._convs_per_block = convs_per_block\n    self._blocks_per_level = blocks_per_level\n    if down_channels_per_block is None:\n      self._down_channels_per_block = channels_per_block\n    else:\n      self._down_channels_per_block = down_channels_per_block\n    self._name = name\n\n  def _build(self, inputs, mean=False, z_q=None):\n    \"\"\"A build-method allowing to sample from the module as specified.\n\n    Args:\n      inputs: A tensor of shape (b,h,w,c). When using the module as a prior the\n      `inputs` tensor should be a batch of images. When using it as a posterior\n      the tensor should be a (batched) concatentation of images and\n      segmentations.\n      mean: A boolean or a list of booleans. If a boolean, it specifies whether\n        or not to use the distributions' means in ALL latent scales. If a list,\n        each bool therein specifies whether or not to use the scale's mean. If\n        False, the latents of the scale are sampled.\n      z_q: None or a list of tensors. If not None, z_q provides external latents\n        to be used instead of sampling them. This is used to employ posterior\n        latents in the prior during training. Therefore, if z_q is not None, the\n        value of `mean` is ignored. If z_q is None, either the distributions\n        mean is used (in case `mean` for the respective scale is True) or else\n        a sample from the distribution is drawn.\n    Returns:\n      A Dictionary holding the output feature map of the truncated U-Net\n      decoder under key 'decoder_features', a list of the U-Net encoder features\n      produced at the end of each encoder scale under key 'encoder_outputs', a\n      list of the predicted distributions at each scale under key\n      'distributions', a list of the used latents at each scale under the key\n      'used_latents'.\n    \"\"\"\n    encoder_features = inputs\n    encoder_outputs = []\n    num_levels = len(self._channels_per_block)\n    num_latent_levels = len(self._latent_dims)\n    if isinstance(mean, bool):\n      mean = [mean] * num_latent_levels\n    distributions = []\n    used_latents = []\n\n    # Iterate the descending levels in the U-Net encoder.\n    for level in range(num_levels):\n      # Iterate the residual blocks in each level.\n      for _ in range(self._blocks_per_level):\n        encoder_features = unet_utils.res_block(\n            input_features=encoder_features,\n            n_channels=self._channels_per_block[level],\n            n_down_channels=self._down_channels_per_block[level],\n            activation_fn=self._activation_fn,\n            initializers=self._initializers,\n            regularizers=self._regularizers,\n            convs_per_block=self._convs_per_block)\n\n      encoder_outputs.append(encoder_features)\n      if level != num_levels - 1:\n        encoder_features = unet_utils.resize_down(encoder_features, scale=2)\n\n    # Iterate the ascending levels in the (truncated) U-Net decoder.\n    decoder_features = encoder_outputs[-1]\n    for level in range(num_latent_levels):\n\n      # Predict a Gaussian distribution for each pixel in the feature map.\n      latent_dim = self._latent_dims[level]\n      mu_logsigma = snt.Conv2D(\n          2 * latent_dim,\n          (1, 1),\n          padding='SAME',\n          initializers=self._initializers,\n          regularizers=self._regularizers,\n          )(decoder_features)\n\n      mu = mu_logsigma[..., :latent_dim]\n      logsigma = mu_logsigma[..., latent_dim:]\n      dist = tfd.MultivariateNormalDiag(loc=mu, scale_diag=tf.exp(logsigma))\n      distributions.append(dist)\n\n      # Get the latents to condition on.\n      if z_q is not None:\n        z = z_q[level]\n      elif mean[level]:\n        z = dist.loc\n      else:\n        z = dist.sample()\n      used_latents.append(z)\n\n      # Concat and upsample the latents with the previous features.\n      decoder_output_lo = tf.concat([z, decoder_features], axis=-1)\n      decoder_output_hi = unet_utils.resize_up(decoder_output_lo, scale=2)\n      decoder_features = tf.concat(\n          [decoder_output_hi, encoder_outputs[::-1][level + 1]], axis=-1)\n\n      # Iterate the residual blocks in each level.\n      for _ in range(self._blocks_per_level):\n        decoder_features = unet_utils.res_block(\n            input_features=decoder_features,\n            n_channels=self._channels_per_block[::-1][level + 1],\n            n_down_channels=self._down_channels_per_block[::-1][level + 1],\n            activation_fn=self._activation_fn,\n            initializers=self._initializers,\n            regularizers=self._regularizers,\n            convs_per_block=self._convs_per_block)\n\n    return {'decoder_features': decoder_features,\n            'encoder_features': encoder_outputs,\n            'distributions': distributions,\n            'used_latents': used_latents}\n\n\nclass _StitchingDecoder(snt.AbstractModule):\n  \"\"\"A module that completes the truncated U-Net decoder.\n\n  Using the output of the HierarchicalCore this module fills in the missing\n  decoder levels such that together the two form a symmetric U-Net.\n  \"\"\"\n\n  def __init__(self, latent_dims, channels_per_block, num_classes,\n               down_channels_per_block=None, activation_fn=tf.nn.relu,\n               initializers=None, regularizers=None, convs_per_block=3,\n               blocks_per_level=3, name='StitchingDecoder'):\n    \"\"\"Initializes a StichtingDecoder.\n\n    Args:\n      latent_dims: List of integers specifying the dimensions of the latents at\n        each scale. The length of the list indicates the number of U-Net\n        decoder scales that have latents.\n      channels_per_block: A list of integers specifying the number of output\n        channels for each encoder block.\n      num_classes: An integer specifying the number of segmentation classes.\n      down_channels_per_block: A list of integers specifying the number of\n        intermediate channels for each encoder block. If None, the\n        intermediate channels are chosen equal to channels_per_block.\n      activation_fn: A callable activation function.\n      initializers: Optional dict containing ops to initialize the filters (with\n        key 'w') or biases (with key 'b'). The default initializer for the\n        weights is a truncated normal initializer, which is commonly used when\n        the inputs are zero centered (see\n        https://arxiv.org/pdf/1502.03167v3.pdf). The default initializer for the\n        bias is a zero initializer.\n      regularizers: Optional dict containing regularizers for the filters\n        (with key 'w') and the biases (with key 'b'). As a default, no\n        regularizers are used. A regularizer should be a function that takes a\n        single `Tensor` as an input and returns a scalar `Tensor` output, e.g.\n        the L1 and L2 regularizers in `tf.contrib.layers`.\n      convs_per_block: An integer specifying the number of convolutional layers.\n      blocks_per_level: An integer specifying the number of residual blocks per\n        level.\n      name: A string specifying the name of the module.\n    \"\"\"\n    super(_StitchingDecoder, self).__init__(name=name)\n    self._latent_dims = latent_dims\n    self._channels_per_block = channels_per_block\n    self._num_classes = num_classes\n    self._activation_fn = activation_fn\n    self._initializers = initializers\n    self._regularizers = regularizers\n    self._convs_per_block = convs_per_block\n    self._blocks_per_level = blocks_per_level\n    if down_channels_per_block is None:\n      down_channels_per_block = channels_per_block\n    self._down_channels_per_block = down_channels_per_block\n\n  def _build(self, encoder_features, decoder_features):\n    \"\"\"Build-method that returns the segmentation logits.\n\n    Args:\n      encoder_features: A list of tensors of shape (b,h_i,w_i,c_i).\n      decoder_features: A tensor of shape (b,h,w,c).\n    Returns:\n      Logits, i.e. a tensor of shape (b,h,w,num_classes).\n    \"\"\"\n    num_latents = len(self._latent_dims)\n    start_level = num_latents + 1\n    num_levels = len(self._channels_per_block)\n\n    for level in range(start_level, num_levels, 1):\n      decoder_features = unet_utils.resize_up(decoder_features, scale=2)\n      decoder_features = tf.concat([decoder_features,\n                                    encoder_features[::-1][level]], axis=-1)\n      for _ in range(self._blocks_per_level):\n        decoder_features = unet_utils.res_block(\n            input_features=decoder_features,\n            n_channels=self._channels_per_block[::-1][level],\n            n_down_channels=self._down_channels_per_block[::-1][level],\n            activation_fn=self._activation_fn,\n            initializers=self._initializers,\n            regularizers=self._regularizers,\n            convs_per_block=self._convs_per_block)\n\n    return snt.Conv2D(output_channels=self._num_classes,\n                      kernel_shape=(1, 1),\n                      padding='SAME',\n                      initializers=self._initializers,\n                      regularizers=self._regularizers,\n                      name='logits')(decoder_features)\n\n\nclass HierarchicalProbUNet(snt.AbstractModule):\n  \"\"\"A Hierarchical Probabilistic U-Net.\"\"\"\n\n  def __init__(self,\n               latent_dims=(1, 1, 1, 1),\n               channels_per_block=None,\n               num_classes=2,\n               down_channels_per_block=None,\n               activation_fn=tf.nn.relu,\n               initializers=None,\n               regularizers=None,\n               convs_per_block=3,\n               blocks_per_level=3,\n               loss_kwargs=None,\n               name='HPUNet'):\n    \"\"\"Initializes a HierarchicalProbUNet.\n\n    The default values are set as for the LIDC-IDRI experiments in\n    `A Hierarchical Probabilistic U-Net for Modeling Multi-Scale Ambiguities',\n    see https://arxiv.org/abs/1905.13077.\n    Args:\n      latent_dims: List of integers specifying the dimensions of the latents at\n        each scales. The length of the list indicates the number of U-Net\n        decoder scales that have latents.\n      channels_per_block: A list of integers specifying the number of output\n        channels for each encoder block.\n      num_classes: An integer specifying the number of segmentation classes.\n      down_channels_per_block: A list of integers specifying the number of\n        intermediate channels for each encoder block. If None, the\n        intermediate channels are chosen equal to channels_per_block.\n      activation_fn: A callable activation function.\n      initializers: Optional dict containing ops to initialize the filters (with\n        key 'w') or biases (with key 'b').\n      regularizers: Optional dict containing regularizers for the filters\n        (with key 'w') and the biases (with key 'b').\n      convs_per_block: An integer specifying the number of convolutional layers.\n      blocks_per_level: An integer specifying the number of residual blocks per\n        level.\n      loss_kwargs: None or dictionary specifying the loss setup.\n      name: A string specifying the name of the module.\n    \"\"\"\n    super(HierarchicalProbUNet, self).__init__(name=name)\n    base_channels = 24\n    default_channels_per_block = (\n        base_channels, 2 * base_channels, 4 * base_channels, 8 * base_channels,\n        8 * base_channels, 8 * base_channels, 8 * base_channels,\n        8 * base_channels\n    )\n    if channels_per_block is None:\n      channels_per_block = default_channels_per_block\n    if down_channels_per_block is None:\n      down_channels_per_block =\\\n        tuple([i / 2 for i in default_channels_per_block])\n    if initializers is None:\n      initializers = {\n          'w': tf.orthogonal_initializer(gain=1.0, seed=None),\n          'b': tf.truncated_normal_initializer(stddev=0.001)\n      }\n    if regularizers is None:\n      regularizers = {\n          'w': tf.keras.regularizers.l2(1e-5),\n          'b': tf.keras.regularizers.l2(1e-5)\n      }\n    if loss_kwargs is None:\n      self._loss_kwargs = {\n          'type': 'geco',\n          'top_k_percentage': 0.02,\n          'deterministic_top_k': False,\n          'kappa': 0.05,\n          'decay': 0.99,\n          'rate': 1e-2,\n          'beta': None\n      }\n    else:\n      self._loss_kwargs = loss_kwargs\n    if down_channels_per_block is None:\n      down_channels_per_block = channels_per_block\n\n    with self._enter_variable_scope():\n      self._prior = _HierarchicalCore(\n          latent_dims=latent_dims,\n          channels_per_block=channels_per_block,\n          down_channels_per_block=down_channels_per_block,\n          activation_fn=activation_fn,\n          initializers=initializers,\n          regularizers=regularizers,\n          convs_per_block=convs_per_block,\n          blocks_per_level=blocks_per_level,\n          name='prior')\n\n      self._posterior = _HierarchicalCore(\n          latent_dims=latent_dims,\n          channels_per_block=channels_per_block,\n          down_channels_per_block=down_channels_per_block,\n          activation_fn=activation_fn,\n          initializers=initializers,\n          regularizers=regularizers,\n          convs_per_block=convs_per_block,\n          blocks_per_level=blocks_per_level,\n          name='posterior')\n\n      self._f_comb = _StitchingDecoder(\n          latent_dims=latent_dims,\n          channels_per_block=channels_per_block,\n          num_classes=num_classes,\n          down_channels_per_block=down_channels_per_block,\n          activation_fn=activation_fn,\n          initializers=initializers,\n          regularizers=regularizers,\n          convs_per_block=convs_per_block,\n          blocks_per_level=blocks_per_level,\n          name='f_comb')\n\n      if self._loss_kwargs['type'] == 'geco':\n        self._moving_average = geco_utils.MovingAverage(\n            decay=self._loss_kwargs['decay'], differentiable=True,\n            name='ma_test')\n        self._lagmul = geco_utils.LagrangeMultiplier(\n            rate=self._loss_kwargs['rate'])\n      self._cache = ()\n\n  def _build(self, seg, img):\n    \"\"\"Inserts all ops used during training into the graph exactly once.\n\n    The first time this method is called given the input pair (seg, img) all\n    ops relevant for training are inserted into the graph. Calling this method\n    more than once does not re-insert the modules into the graph (memoization),\n    thus preventing multiple forward passes of submodules for the same inputs.\n    The method is private and called when setting up the loss.\n    Args:\n      seg: A tensor of shape (b, h, w, num_classes).\n      img: A tensor of shape (b, h, w, c)\n    Returns: None\n    \"\"\"\n    inputs = (seg, img)\n    if self._cache == inputs:\n      return\n    else:\n      self._q_sample = self._posterior(\n          tf.concat([seg, img], axis=-1), mean=False)\n      self._q_sample_mean = self._posterior(\n          tf.concat([seg, img], axis=-1), mean=True)\n      self._p_sample = self._prior(\n          img, mean=False, z_q=None)\n      self._p_sample_z_q = self._prior(\n          img, z_q=self._q_sample['used_latents'])\n      self._p_sample_z_q_mean = self._prior(\n          img, z_q=self._q_sample_mean['used_latents'])\n      self._cache = inputs\n      return\n\n  def sample(self, img, mean=False, z_q=None):\n    \"\"\"Sample a segmentation from the prior, given an input image.\n\n    Args:\n      img: A tensor of shape (b, h, w, c).\n      mean: A boolean or a list of booleans. If a boolean, it specifies whether\n        or not to use the distributions' means in ALL latent scales. If a list,\n        each bool therein specifies whether or not to use the scale's mean. If\n        False, the latents of the scale are sampled.\n      z_q: None or a list of tensors. If not None, z_q provides external latents\n        to be used instead of sampling them. This is used to employ posterior\n        latents in the prior during training. Therefore, if z_q is not None, the\n        value of `mean` is ignored. If z_q is None, either the distributions\n        mean is used (in case `mean` for the respective scale is True) or else\n        a sample from the distribution is drawn\n    Returns:\n      A segmentation tensor of shape (b, h, w, num_classes).\n    \"\"\"\n    prior_out = self._prior(img, mean, z_q)\n    encoder_features = prior_out['encoder_features']\n    decoder_features = prior_out['decoder_features']\n    return self._f_comb(encoder_features=encoder_features,\n                        decoder_features=decoder_features)\n\n  def reconstruct(self, seg, img, mean=False):\n    \"\"\"Reconstruct a segmentation using the posterior.\n\n    Args:\n      seg: A tensor of shape (b, h, w, num_classes).\n      img: A tensor of shape (b, h, w, c).\n      mean: A boolean, specifying whether to sample from the full hierarchy of\n       the posterior or use the posterior means at each scale of the hierarchy.\n    Returns:\n      A segmentation tensor of shape (b,h,w,num_classes).\n    \"\"\"\n    self._build(seg, img)\n    if mean:\n      prior_out = self._p_sample_z_q_mean\n    else:\n      prior_out = self._p_sample_z_q\n    encoder_features = prior_out['encoder_features']\n    decoder_features = prior_out['decoder_features']\n    return self._f_comb(encoder_features=encoder_features,\n                        decoder_features=decoder_features)\n\n  def rec_loss(self, seg, img, mask=None, top_k_percentage=None,\n               deterministic=True):\n    \"\"\"Cross-entropy reconstruction loss employed in the ELBO-/ GECO-objective.\n\n    Args:\n      seg: A tensor of shape (b, h, w, num_classes).\n      img: A tensor of shape (b, h, w, c).\n      mask: A mask of shape (b, h, w) or None. If None no pixels are masked in\n       the loss.\n      top_k_percentage: None or a float in (0.,1.]. If None, a standard\n        cross-entropy loss is calculated.\n      deterministic: A Boolean indicating whether or not to produce the\n        prospective top-k mask deterministically.\n    Returns:\n      A dictionary holding the mean and the pixelwise sum of the loss for the\n      batch as well as the employed loss mask.\n    \"\"\"\n    reconstruction = self.reconstruct(seg, img, mean=False)\n    return geco_utils.ce_loss(\n        reconstruction, seg, mask, top_k_percentage, deterministic)\n\n  def kl(self, seg, img):\n    \"\"\"Kullback-Leibler divergence between the posterior and the prior.\n\n    Args:\n      seg: A tensor of shape (b, h, w, num_classes).\n      img: A tensor of shape (b, h, w, c).\n    Returns:\n      A dictionary with keys indexing the hierarchy's levels and corresponding\n      values holding the KL-term for each level (per batch).\n    \"\"\"\n    self._build(seg, img)\n    posterior_out = self._q_sample\n    prior_out = self._p_sample_z_q\n\n    q_dists = posterior_out['distributions']\n    p_dists = prior_out['distributions']\n\n    kl = {}\n    for level, (q, p) in enumerate(zip(q_dists, p_dists)):\n      # Shape (b, h, w).\n      kl_per_pixel = tfd.kl_divergence(q, p)\n      # Shape (b,).\n      kl_per_instance = tf.reduce_sum(kl_per_pixel, axis=[1, 2])\n      # Shape (1,).\n      kl[level] = tf.reduce_mean(kl_per_instance)\n    return kl\n\n  def loss(self, seg, img, mask):\n    \"\"\"The full training objective, either ELBO or GECO.\n\n    Args:\n      seg: A tensor of shape (b, h, w, num_classes).\n      img: A tensor of shape (b, h, w, c).\n      mask: A mask of shape (b, h, w) or None. If None no pixels are masked in\n       the loss.\n    Returns:\n      A dictionary holding the loss (with key 'loss') and the tensorboard\n      summaries (with key 'summaries').\n    \"\"\"\n    summaries = {}\n    top_k_percentage = self._loss_kwargs['top_k_percentage']\n    deterministic = self._loss_kwargs['deterministic_top_k']\n    rec_loss = self.rec_loss(seg, img, mask, top_k_percentage, deterministic)\n\n    kl_dict = self.kl(seg, img)\n    kl_sum = tf.reduce_sum(\n        tf.stack([kl for _, kl in kl_dict.iteritems()], axis=-1))\n\n    summaries['rec_loss_mean'] = rec_loss['mean']\n    summaries['rec_loss_sum'] = rec_loss['sum']\n    summaries['kl_sum'] = kl_sum\n    for level, kl in kl_dict.iteritems():\n      summaries['kl_{}'.format(level)] = kl\n\n    # Set up a regular ELBO objective.\n    if self._loss_kwargs['type'] == 'elbo':\n      loss = rec_loss['sum'] + self._loss_kwargs['beta'] * kl_sum\n      summaries['elbo_loss'] = loss\n\n    # Set up a GECO objective (ELBO with a reconstruction constraint).\n    elif self._loss_kwargs['type'] == 'geco':\n      ma_rec_loss = self._moving_average(rec_loss['sum'])\n      mask_sum_per_instance = tf.reduce_sum(rec_loss['mask'], axis=-1)\n      num_valid_pixels = tf.reduce_mean(mask_sum_per_instance)\n      reconstruction_threshold = self._loss_kwargs['kappa'] * num_valid_pixels\n\n      rec_constraint = ma_rec_loss - reconstruction_threshold\n      lagmul = self._lagmul(rec_constraint)\n      loss = lagmul * rec_constraint + kl_sum\n\n      summaries['geco_loss'] = loss\n      summaries['ma_rec_loss_mean'] = ma_rec_loss / num_valid_pixels\n      summaries['num_valid_pixels'] = num_valid_pixels\n      summaries['lagmul'] = lagmul\n    else:\n      raise NotImplementedError('Loss type {} not implemeted!'.format(\n          self._loss_kwargs['type']))\n\n    return dict(supervised_loss=loss, summaries=summaries)\n\nif __name__ == '__main__':\n  hpu_net = HierarchicalProbUNet()\n"
  },
  {
    "path": "hierarchical_probabilistic_unet/model_test.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Tests for the Hierarchical Probabilistic U-Net open-source version.\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nfrom model import HierarchicalProbUNet\nimport tensorflow.compat.v1 as tf\n\n\n_NUM_CLASSES = 2\n_BATCH_SIZE = 2\n_SPATIAL_SHAPE = [32, 32]\n_CHANNELS_PER_BLOCK = [5, 7, 9, 11, 13]\n_IMAGE_SHAPE = [_BATCH_SIZE] + _SPATIAL_SHAPE + [1]\n_BOTTLENECK_SIZE = _SPATIAL_SHAPE[0] // 2 ** (len(_CHANNELS_PER_BLOCK) - 1)\n_SEGMENTATION_SHAPE = [_BATCH_SIZE] + _SPATIAL_SHAPE + [_NUM_CLASSES]\n_LATENT_DIMS = [3, 2, 1]\n_INITIALIZERS = {'w': tf.orthogonal_initializer(gain=1.0, seed=None),\n                 'b': tf.truncated_normal_initializer(stddev=0.001)}\n\n\ndef _get_placeholders():\n  \"\"\"Returns placeholders for the image and segmentation.\"\"\"\n  img = tf.placeholder(dtype=tf.float32, shape=_IMAGE_SHAPE)\n  seg = tf.placeholder(dtype=tf.float32, shape=_SEGMENTATION_SHAPE)\n  return img, seg\n\n\nclass HierarchicalProbUNetTest(tf.test.TestCase):\n\n  def test_shape_of_sample(self):\n    hpu_net = HierarchicalProbUNet(latent_dims=_LATENT_DIMS,\n                                   channels_per_block=_CHANNELS_PER_BLOCK,\n                                   num_classes=_NUM_CLASSES,\n                                   initializers=_INITIALIZERS)\n    img, _ = _get_placeholders()\n    sample = hpu_net.sample(img)\n    self.assertEqual(sample.shape.as_list(), _SEGMENTATION_SHAPE)\n\n  def test_shape_of_reconstruction(self):\n    hpu_net = HierarchicalProbUNet(latent_dims=_LATENT_DIMS,\n                                   channels_per_block=_CHANNELS_PER_BLOCK,\n                                   num_classes=_NUM_CLASSES,\n                                   initializers=_INITIALIZERS)\n    img, seg = _get_placeholders()\n    reconstruction = hpu_net.reconstruct(img, seg)\n    self.assertEqual(reconstruction.shape.as_list(), _SEGMENTATION_SHAPE)\n\n  def test_shapes_in_prior(self):\n    hpu_net = HierarchicalProbUNet(latent_dims=_LATENT_DIMS,\n                                   channels_per_block=_CHANNELS_PER_BLOCK,\n                                   num_classes=_NUM_CLASSES,\n                                   initializers=_INITIALIZERS)\n    img, _ = _get_placeholders()\n    prior_out = hpu_net._prior(img)\n    distributions = prior_out['distributions']\n    latents = prior_out['used_latents']\n    encoder_features = prior_out['encoder_features']\n    decoder_features = prior_out['decoder_features']\n\n    # Test number of latent disctributions.\n    self.assertEqual(len(distributions), len(_LATENT_DIMS))\n\n    # Test shapes of latent scales.\n    for level in range(len(_LATENT_DIMS)):\n      latent_spatial_shape = _BOTTLENECK_SIZE * 2 ** level\n      latent_shape = [_BATCH_SIZE, latent_spatial_shape, latent_spatial_shape,\n                      _LATENT_DIMS[level]]\n      self.assertEqual(latents[level].shape.as_list(), latent_shape)\n\n    # Test encoder shapes.\n    for level in range(len(_CHANNELS_PER_BLOCK)):\n      spatial_shape = _SPATIAL_SHAPE[0] // 2 ** level\n      feature_shape = [_BATCH_SIZE, spatial_shape, spatial_shape,\n                       _CHANNELS_PER_BLOCK[level]]\n      self.assertEqual(encoder_features[level].shape.as_list(), feature_shape)\n\n    # Test decoder shape.\n    start_level = len(_LATENT_DIMS)\n    latent_spatial_shape = _BOTTLENECK_SIZE * 2 ** start_level\n    latent_shape = [_BATCH_SIZE, latent_spatial_shape, latent_spatial_shape,\n                    _CHANNELS_PER_BLOCK[::-1][start_level]]\n    self.assertEqual(decoder_features.shape.as_list(), latent_shape)\n\n  def test_shape_of_kl(self):\n    hpu_net = HierarchicalProbUNet(latent_dims=_LATENT_DIMS,\n                                   channels_per_block=_CHANNELS_PER_BLOCK,\n                                   num_classes=_NUM_CLASSES,\n                                   initializers=_INITIALIZERS)\n    img, seg = _get_placeholders()\n    kl_dict = hpu_net.kl(img, seg)\n    self.assertEqual(len(kl_dict), len(_LATENT_DIMS))\n\n\nif __name__ == '__main__':\n  tf.test.main()\n\n\n"
  },
  {
    "path": "hierarchical_probabilistic_unet/run.sh",
    "content": "#!/bin/sh\n# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\npython3 -m venv /tmp/hpu-net-venv\nsource /tmp/hpu-net-venv/bin/activate\npip3 install -U pip\npip3 install hierarchical_probabilistic_unet/\npython3 hierarchical_probabilistic_unet/model_test.py\n"
  },
  {
    "path": "hierarchical_probabilistic_unet/setup.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Setup for pip package.\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nfrom setuptools import find_packages\nfrom setuptools import setup\n\n\nREQUIRED_PACKAGES = ['numpy', 'dm-sonnet==1.35', 'tensorflow==1.14',\n                     'tensorflow-probability==0.7.0']\n\nsetup(\n    name='hpu_net',\n    version='0.1',\n    description='A library for the Hierarchical Probabilistic U-Net model.',\n    url='https://github.com/deepmind/deepmind-research/hierarchical_probabilistic_unet',\n    author='DeepMind',\n    author_email='no-reply@google.com',\n    # Contained modules and scripts.\n    packages=find_packages(),\n    install_requires=REQUIRED_PACKAGES,\n    platforms=['any'],\n    license='Apache 2.0',\n)\n"
  },
  {
    "path": "hierarchical_probabilistic_unet/unet_utils.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Architectural blocks and utility functions of the U-Net.\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\n\ndef res_block(input_features, n_channels, n_down_channels=None,\n              activation_fn=tf.nn.relu, initializers=None, regularizers=None,\n              convs_per_block=3):\n  \"\"\"A pre-activated residual block.\n\n  Args:\n    input_features: A tensor of shape (b, h, w, c).\n    n_channels: An integer specifying the number of output channels.\n    n_down_channels: An integer specifying the number of intermediate channels.\n    activation_fn: A callable activation function.\n    initializers: Initializers for the weights and biases.\n    regularizers: Regularizers for the weights and biases.\n    convs_per_block: An Integer specifying the number of convolutional layers.\n  Returns:\n    A tensor of shape (b, h, w, c).\n  \"\"\"\n  # Pre-activate the inputs.\n  skip = input_features\n  residual = activation_fn(input_features)\n\n  # Set the number of intermediate channels that we compress to.\n  if n_down_channels is None:\n    n_down_channels = n_channels\n\n  for c in range(convs_per_block):\n    residual = snt.Conv2D(n_down_channels,\n                          (3, 3),\n                          padding='SAME',\n                          initializers=initializers,\n                          regularizers=regularizers)(residual)\n    if c < convs_per_block - 1:\n      residual = activation_fn(residual)\n\n  incoming_channels = input_features.shape[-1]\n  if incoming_channels != n_channels:\n    skip = snt.Conv2D(n_channels,\n                      (1, 1),\n                      padding='SAME',\n                      initializers=initializers,\n                      regularizers=regularizers)(skip)\n  if n_down_channels != n_channels:\n    residual = snt.Conv2D(n_channels,\n                          (1, 1),\n                          padding='SAME',\n                          initializers=initializers,\n                          regularizers=regularizers)(residual)\n  return skip + residual\n\n\ndef resize_up(input_features, scale=2):\n  \"\"\"Nearest neighbor rescaling-operation for the input features.\n\n  Args:\n    input_features: A tensor of shape (b, h, w, c).\n    scale: An integer specifying the scaling factor.\n  Returns: A tensor of shape (b, scale * h, scale * w, c).\n  \"\"\"\n  assert scale >= 1\n  _, size_x, size_y, _ = input_features.shape.as_list()\n  new_size_x = int(round(size_x * scale))\n  new_size_y = int(round(size_y * scale))\n  return tf.image.resize(\n      input_features,\n      [new_size_x, new_size_y],\n      align_corners=True,\n      method=tf.image.ResizeMethod.NEAREST_NEIGHBOR)\n\n\ndef resize_down(input_features, scale=2):\n  \"\"\"Average pooling rescaling-operation for the input features.\n\n  Args:\n    input_features: A tensor of shape (b, h, w, c).\n    scale: An integer specifying the scaling factor.\n  Returns: A tensor of shape (b, h / scale, w / scale, c).\n  \"\"\"\n  assert scale >= 1\n  return tf.nn.avg_pool2d(\n      input_features,\n      ksize=(1, scale, scale, 1),\n      strides=(1, scale, scale, 1),\n      padding='VALID')\n"
  },
  {
    "path": "hierarchical_transformer_memory/README.md",
    "content": "# Towards mental time travel: A hierarchical memory for RL agents\n\nThis provides an implementation of two components of the paper \"Towards mental\ntime travel: A hierarchical memory for reinforcement learning agents.\" The\narticle can be found on arXiv at [https://arxiv.org/abs/2105.14039](https://arxiv.org/abs/2105.14039)\n\nSpecifically, this repository contains:\n\n1) A JAX/Haiku implementation of hierarchical transformer attention over memory.\n2) An implementation of the Ballet environment used in the paper.\n\nWe have also released the Rapid Word Learning tasks from the paper, but to\nsimplify dependencies they are located in the `dm_fast_mapping` repository:\n[deepmind/dm_fast_mapping](https://github.com/deepmind/dm_fast_mapping) see the\n[documentation](https://github.com/deepmind/dm_fast_mapping/blob/master/docs/index.md)\nfor that repository for further details about using those tasks.\n\n## Setup\n\nFor easy installation, run:\n\n```shell\npython3 -m venv htm_env\nsource htm_env/bin/activate\npip install --upgrade pip\npip install -r requirements.txt\n```\n\nNote that this installs the components needed for both the attention module and\nthe environment. If you only wish to use the environment, you do not need to\ninstall JAX, Haiku, or Chex.\n\n## Using the hierarchical attention module:\n\nPlease see `hierarchical_attention/htm_attention_test.py` for some examples of\nthe expected inputs for this module.\n\n## Running the ballet environment\n\nThe ballet environment is contained in the `pycolab_ballet/` subfolder. To load\na simple ballet environment with 2 dancers and short delays, and watch a few\nsteps of the dances, you can do:\n\n```\nfrom pycolab_ballet import ballet_environment\n\nenv = ballet_environment.simple_builder(level_name='2_delay16')\ntimestep = env.reset()\nfor _ in range(5):\n  action = 0\n  timestep = env.step(action)\n```\n\n## Citing this work\n\nIf you use this code, please cite the associated paper:\n\n```\n@article{lampinen2021towards,\n  title={Towards mental time travel:\n         a hierarchical memory for reinforcement learning agents},\n  author={Lampinen, Andrew Kyle and Chan, Stephanie CY and Banino, Andrea and\n          Hill, Felix},\n  journal={arXiv preprint arXiv:2105.14039},\n  year={2021}\n}\n```\n"
  },
  {
    "path": "hierarchical_transformer_memory/hierarchical_attention/htm_attention.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Haiku module implementing hierarchical attention over memory.\"\"\"\n\nimport functools\nimport inspect\nfrom typing import Optional, NamedTuple\n\nimport chex\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\n\n\n_EPSILON = 1e-3\n\n\nclass HierarchicalMemory(NamedTuple):\n  \"\"\"Structure of the hierarchical memory.\n\n  Where 'B' is batch size, 'M' is number of memories, 'C' is chunk size, and 'D'\n  is memory dimension.\n  \"\"\"\n  keys: jnp.ndarray  # [B, M, D]\n  contents: jnp.ndarray  # [B, M, C, D]\n  steps_since_last_write: jnp.ndarray  # [B], steps since last memory write\n  accumulator: jnp.ndarray  # [B, C, D], accumulates experiences before write\n\n\ndef sinusoid_position_encoding(\n    sequence_length: int,\n    hidden_size: int,\n    min_timescale: float = 2.,\n    max_timescale: float = 1e4,\n) -> jnp.ndarray:\n  \"\"\"Creates sinusoidal encodings.\n\n  Args:\n    sequence_length: length [L] of sequence to be position encoded.\n    hidden_size: dimension [D] of the positional encoding vectors.\n    min_timescale: minimum timescale for the frequency.\n    max_timescale: maximum timescale for the frequency.\n\n  Returns:\n    An array of shape [L, D]\n  \"\"\"\n  freqs = np.arange(0, hidden_size, min_timescale)\n  inv_freq = max_timescale**(-freqs / hidden_size)\n  pos_seq = np.arange(sequence_length - 1, -1, -1.0)\n  sinusoid_inp = np.einsum(\"i,j->ij\", pos_seq, inv_freq)\n  pos_emb = np.concatenate(\n      [np.sin(sinusoid_inp), np.cos(sinusoid_inp)], axis=-1)\n  return pos_emb\n\n\nclass HierarchicalMemoryAttention(hk.Module):\n  \"\"\"Multi-head attention over hierarchical memory.\"\"\"\n\n  def __init__(self,\n               feature_size: int,\n               k: int,\n               num_heads: int = 1,\n               memory_position_encoding: bool = True,\n               init_scale: float = 2.,\n               name: Optional[str] = None) -> None:\n    \"\"\"Constructor.\n\n    Args:\n      feature_size: size of feature dimension of attention-over-memories\n        embedding.\n      k: number of memories to sample.\n      num_heads: number of attention heads.\n      memory_position_encoding: whether to add positional encodings to memories\n        during within memory attention.\n      init_scale: scale factor for Variance weight initializers.\n      name: module name.\n    \"\"\"\n    super().__init__(name=name)\n    self._size = feature_size\n    self._k = k\n    self._num_heads = num_heads\n    self._weights = None\n    self._memory_position_encoding = memory_position_encoding\n    self._init_scale = init_scale\n\n  @property\n  def num_heads(self):\n    return self._num_heads\n\n  @hk.transparent\n  def _singlehead_linear(self,\n                         inputs: jnp.ndarray,\n                         hidden_size: int,\n                         name: str):\n    linear = hk.Linear(\n        hidden_size,\n        with_bias=False,\n        w_init=hk.initializers.VarianceScaling(scale=self._init_scale),\n        name=name)\n    out = linear(inputs)\n    return out\n\n  def __call__(\n      self,\n      queries: jnp.ndarray,\n      hm_memory: HierarchicalMemory,\n      hm_mask: Optional[jnp.ndarray] = None) -> jnp.ndarray:\n    \"\"\"Do hierarchical attention over the stored memories.\n\n    Args:\n       queries: Tensor [B, Q, E] Query(ies) in, for batch size B, query length\n         Q, and embedding dimension E.\n       hm_memory: Hierarchical Memory.\n       hm_mask: Optional boolean mask tensor of shape [B, Q, M]. Where false,\n         the corresponding query timepoints cannot attend to the corresponding\n         memory chunks. This can be used for enforcing causal attention on the\n         learner, not attending to memories from prior episodes, etc.\n\n    Returns:\n      Value updates for each query slot: [B, Q, D]\n    \"\"\"\n    # some shape checks\n    batch_size, query_length, _ = queries.shape\n    (memory_batch_size, num_memories,\n     memory_chunk_size, mem_embbedding_size) = hm_memory.contents.shape\n    assert batch_size == memory_batch_size\n    chex.assert_shape(hm_memory.keys,\n                      (batch_size, num_memories, mem_embbedding_size))\n    chex.assert_shape(hm_memory.accumulator,\n                      (memory_batch_size, memory_chunk_size,\n                       mem_embbedding_size))\n    chex.assert_shape(hm_memory.steps_since_last_write,\n                      (memory_batch_size,))\n    if hm_mask is not None:\n      chex.assert_type(hm_mask, bool)\n      chex.assert_shape(hm_mask,\n                        (batch_size, query_length, num_memories))\n    query_head = self._singlehead_linear(queries, self._size, \"query\")\n    key_head = self._singlehead_linear(\n        jax.lax.stop_gradient(hm_memory.keys), self._size, \"key\")\n\n    # What times in the input [t] attend to what times in the memories [T].\n    logits = jnp.einsum(\"btd,bTd->btT\", query_head, key_head)\n\n    scaled_logits = logits / np.sqrt(self._size)\n\n    # Mask last dimension, replacing invalid logits with large negative values.\n    # This allows e.g. enforcing causal attention on learner, or blocking\n    # attention across episodes\n    if hm_mask is not None:\n      masked_logits = jnp.where(hm_mask, scaled_logits, -1e6)\n    else:\n      masked_logits = scaled_logits\n\n    # identify the top-k memories and their relevance weights\n    top_k_logits, top_k_indices = jax.lax.top_k(masked_logits, self._k)\n    weights = jax.nn.softmax(top_k_logits)\n\n    # set up the within-memory attention\n    assert self._size % self._num_heads == 0\n    mha_key_size = self._size // self._num_heads\n    attention_layer = hk.MultiHeadAttention(\n        key_size=mha_key_size,\n        model_size=self._size,\n        num_heads=self._num_heads,\n        w_init_scale=self._init_scale,\n        name=\"within_mem_attn\")\n\n    # position encodings\n    augmented_contents = hm_memory.contents\n    if self._memory_position_encoding:\n      position_embs = sinusoid_position_encoding(\n          memory_chunk_size, mem_embbedding_size)\n      augmented_contents += position_embs[None, None, :, :]\n\n    def _within_memory_attention(sub_inputs, sub_memory_contents, sub_weights,\n                                 sub_top_k_indices):\n      top_k_contents = sub_memory_contents[sub_top_k_indices, :, :]\n\n      # Now we go deeper, with another vmap over **tokens**, because each token\n      # can each attend to different memories.\n      def do_attention(sub_sub_inputs, sub_sub_top_k_contents):\n        tiled_inputs = jnp.tile(sub_sub_inputs[None, None, :],\n                                reps=(self._k, 1, 1))\n        sub_attention_results = attention_layer(\n            query=tiled_inputs,\n            key=sub_sub_top_k_contents,\n            value=sub_sub_top_k_contents)\n        return sub_attention_results\n      do_attention = hk_vmap(do_attention, in_axes=0, split_rng=False)\n      attention_results = do_attention(sub_inputs, top_k_contents)\n      attention_results = jnp.squeeze(attention_results, axis=2)\n      # Now collapse results across k memories\n      attention_results = sub_weights[:, :, None] * attention_results\n      attention_results = jnp.sum(attention_results, axis=1)\n      return attention_results\n\n    # vmap across batch\n    batch_within_memory_attention = hk_vmap(_within_memory_attention,\n                                            in_axes=0, split_rng=False)\n    outputs = batch_within_memory_attention(\n        queries,\n        jax.lax.stop_gradient(augmented_contents),\n        weights,\n        top_k_indices)\n\n    return outputs\n\n\n@functools.wraps(hk.vmap)\ndef hk_vmap(*args, **kwargs):\n  \"\"\"Helper function to support older versions of Haiku.\"\"\"\n  # Older versions of Haiku did not have split_rng, but the behavior has always\n  # been equivalent to split_rng=False.\n  if \"split_rng\" not in inspect.signature(hk.vmap).parameters:\n    kwargs.setdefault(\"split_rng\", False)\n    if kwargs.get[\"split_rng\"]:\n      raise ValueError(\"The installed version of Haiku only supports \"\n                       \"`split_rng=False`, please upgrade Haiku.\")\n    del kwargs[\"split_rng\"]\n\n  return hk.vmap(*args, **kwargs)\n"
  },
  {
    "path": "hierarchical_transformer_memory/hierarchical_attention/htm_attention_test.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Tests for hierarchical_attention.htm_attention.\"\"\"\n\nfrom absl.testing import absltest\nfrom absl.testing import parameterized\n\nimport haiku as hk\nimport numpy as np\n\nfrom hierarchical_transformer_memory.hierarchical_attention import htm_attention\n\n\ndef _build_queries_and_memory(query_length, num_memories, mem_chunk_size,\n                              batch_size=2, embedding_size=12):\n  \"\"\"Builds dummy queries + memory contents for tests.\"\"\"\n  queries = np.random.random([batch_size, query_length, embedding_size])\n  memory_contents = np.random.random(\n      [batch_size, num_memories, mem_chunk_size, embedding_size])\n  # summary key = average across chunk\n  memory_keys = np.mean(memory_contents, axis=2)\n  # to accumulate newest memories before writing\n  memory_accumulator = np.zeros_like(memory_contents[:, -1, :, :])\n  memory = htm_attention.HierarchicalMemory(\n      keys=memory_keys,\n      contents=memory_contents,\n      accumulator=memory_accumulator,\n      steps_since_last_write=np.zeros([batch_size,], dtype=np.int32))\n  return queries, memory\n\n\nclass HierarchicalAttentionTest(parameterized.TestCase):\n\n  @parameterized.parameters([\n      {\n          'query_length': 1,\n          'num_memories': 7,\n          'mem_chunk_size': 5,\n          'mem_k': 4,\n      },\n      {\n          'query_length': 9,\n          'num_memories': 7,\n          'mem_chunk_size': 5,\n          'mem_k': 4,\n      },\n  ])\n  @hk.testing.transform_and_run\n  def test_output_shapes(self, query_length, num_memories, mem_chunk_size,\n                         mem_k):\n    np.random.seed(0)\n    batch_size = 2\n    embedding_size = 12\n    num_heads = 3\n    queries, memory = _build_queries_and_memory(\n        query_length=query_length, num_memories=num_memories,\n        mem_chunk_size=mem_chunk_size, embedding_size=embedding_size)\n    hm_att = htm_attention.HierarchicalMemoryAttention(\n        feature_size=embedding_size,\n        k=mem_k,\n        num_heads=num_heads)\n    results = hm_att(queries, memory)\n    self.assertEqual(results.shape,\n                     (batch_size, query_length, embedding_size))\n    self.assertTrue(np.all(np.isfinite(results)))\n\n  @hk.testing.transform_and_run\n  def test_masking(self):\n    np.random.seed(0)\n    batch_size = 2\n    embedding_size = 12\n    num_heads = 3\n    query_length = 5\n    num_memories = 7\n    mem_chunk_size = 6\n    mem_k = 4\n    queries, memory = _build_queries_and_memory(\n        query_length=query_length, num_memories=num_memories,\n        mem_chunk_size=mem_chunk_size, embedding_size=embedding_size)\n    hm_att = htm_attention.HierarchicalMemoryAttention(\n        feature_size=embedding_size,\n        k=mem_k,\n        num_heads=num_heads)\n    # get a random boolean mask\n    mask = np.random.binomial(\n        1, 0.5, [batch_size, query_length, num_memories]).astype(bool)\n    results = hm_att(queries, memory, hm_mask=mask)\n    self.assertEqual(results.shape,\n                     (batch_size, query_length, embedding_size))\n    self.assertTrue(np.all(np.isfinite(results)))\n\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "hierarchical_transformer_memory/pycolab_ballet/ballet_environment.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"A pycolab environment for going to the ballet.\n\nA pycolab-based environment for testing memory for sequences of events. The\nenvironment contains some number of \"dancer\" characters in (implicit) 3 x 3\nsquares within a larger 9 x 9 room. The agent starts in the center of the room.\nAt the beginning of an episode, the dancers each do a dance solo of a fixed\nlength, separated by empty time of a fixed length. The agent's actions do\nnothing during the dances. After the last dance ends, the agent must go up to a\ndancer, identified using language describing the dance. The agent is rewarded +1\nfor approaching the correct dancer, 0 otherwise.\n\nThe room is upsampled at a size of 9 pixels per square to render a view for the\nagent, which is cropped in egocentric perspective, i.e. the agent is always in\nthe center of its view (see https://arxiv.org/abs/1910.00571).\n\"\"\"\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\n\nimport dm_env\n\nimport numpy as np\nfrom pycolab import cropping\n\nfrom hierarchical_transformer_memory.pycolab_ballet import ballet_environment_core as ballet_core\n\nFLAGS = flags.FLAGS\n\nUPSAMPLE_SIZE = 9  # pixels per game square\nSCROLL_CROP_SIZE = 11  # in game squares\n\nDANCER_SHAPES = [\n    \"triangle\", \"empty_square\", \"plus\", \"inverse_plus\", \"ex\", \"inverse_ex\",\n    \"circle\", \"empty_circle\", \"tee\", \"upside_down_tee\",\n    \"h\", \"u\", \"upside_down_u\", \"vertical_stripes\", \"horizontal_stripes\"\n]\n\nCOLORS = {\n    \"red\": np.array([255, 0, 0]),\n    \"green\": np.array([0, 255, 0]),\n    \"blue\": np.array([0, 0, 255]),\n    \"purple\": np.array([128, 0, 128]),\n    \"orange\": np.array([255, 165, 0]),\n    \"yellow\": np.array([255, 255, 0]),\n    \"brown\": np.array([128, 64, 0]),\n    \"pink\": np.array([255, 64, 255]),\n    \"cyan\": np.array([0, 255, 255]),\n    \"dark_green\": np.array([0, 100, 0]),\n    \"dark_red\": np.array([100, 0, 0]),\n    \"dark_blue\": np.array([0, 0, 100]),\n    \"olive\": np.array([100, 100, 0]),\n    \"teal\": np.array([0, 100, 100]),\n    \"lavender\": np.array([215, 200, 255]),\n    \"peach\": np.array([255, 210, 170]),\n    \"rose\": np.array([255, 205, 230]),\n    \"light_green\": np.array([200, 255, 200]),\n    \"light_yellow\": np.array([255, 255, 200]),\n}\n\n\ndef _generate_template(object_name):\n  \"\"\"Generates a template object image, given a name with color and shape.\"\"\"\n  object_color, object_type = object_name.split()\n  template = np.zeros((UPSAMPLE_SIZE, UPSAMPLE_SIZE))\n  half = UPSAMPLE_SIZE // 2\n  if object_type == \"triangle\":\n    for i in range(UPSAMPLE_SIZE):\n      for j in range(UPSAMPLE_SIZE):\n        if (j <= half and i >= 2 * (half - j)) or (j > half and i >= 2 *\n                                                   (j - half)):\n          template[i, j] = 1.\n  elif object_type == \"square\":\n    template[:, :] = 1.\n  elif object_type == \"empty_square\":\n    template[:2, :] = 1.\n    template[-2:, :] = 1.\n    template[:, :2] = 1.\n    template[:, -2:] = 1.\n  elif object_type == \"plus\":\n    template[:, half - 1:half + 2] = 1.\n    template[half - 1:half + 2, :] = 1.\n  elif object_type == \"inverse_plus\":\n    template[:, :] = 1.\n    template[:, half - 1:half + 2] = 0.\n    template[half - 1:half + 2, :] = 0.\n  elif object_type == \"ex\":\n    for i in range(UPSAMPLE_SIZE):\n      for j in range(UPSAMPLE_SIZE):\n        if abs(i - j) <= 1 or abs(UPSAMPLE_SIZE - 1 - j - i) <= 1:\n          template[i, j] = 1.\n  elif object_type == \"inverse_ex\":\n    for i in range(UPSAMPLE_SIZE):\n      for j in range(UPSAMPLE_SIZE):\n        if not (abs(i - j) <= 1 or abs(UPSAMPLE_SIZE - 1 - j - i) <= 1):\n          template[i, j] = 1.\n  elif object_type == \"circle\":\n    for i in range(UPSAMPLE_SIZE):\n      for j in range(UPSAMPLE_SIZE):\n        if (i - half)**2 + (j - half)**2 <= half**2:\n          template[i, j] = 1.\n  elif object_type == \"empty_circle\":\n    for i in range(UPSAMPLE_SIZE):\n      for j in range(UPSAMPLE_SIZE):\n        if abs((i - half)**2 + (j - half)**2 - half**2) < 6:\n          template[i, j] = 1.\n  elif object_type == \"tee\":\n    template[:, half - 1:half + 2] = 1.\n    template[:3, :] = 1.\n  elif object_type == \"upside_down_tee\":\n    template[:, half - 1:half + 2] = 1.\n    template[-3:, :] = 1.\n  elif object_type == \"h\":\n    template[:, :3] = 1.\n    template[:, -3:] = 1.\n    template[half - 1:half + 2, :] = 1.\n  elif object_type == \"u\":\n    template[:, :3] = 1.\n    template[:, -3:] = 1.\n    template[-3:, :] = 1.\n  elif object_type == \"upside_down_u\":\n    template[:, :3] = 1.\n    template[:, -3:] = 1.\n    template[:3, :] = 1.\n  elif object_type == \"vertical_stripes\":\n    for j in range(half + UPSAMPLE_SIZE % 2):\n      template[:, 2*j] = 1.\n  elif object_type == \"horizontal_stripes\":\n    for i in range(half + UPSAMPLE_SIZE % 2):\n      template[2*i, :] = 1.\n  else:\n    raise ValueError(\"Unknown object: {}\".format(object_type))\n\n  if object_color not in COLORS:\n    raise ValueError(\"Unknown color: {}\".format(object_color))\n\n  template = np.tensordot(template, COLORS[object_color], axes=0)\n\n  return template\n\n\n# Agent and wall templates\n_CHAR_TO_TEMPLATE_BASE = {\n    ballet_core.AGENT_CHAR:\n        np.tensordot(\n            np.ones([UPSAMPLE_SIZE, UPSAMPLE_SIZE]),\n            np.array([255, 255, 255]),\n            axes=0),\n    ballet_core.WALL_CHAR:\n        np.tensordot(\n            np.ones([UPSAMPLE_SIZE, UPSAMPLE_SIZE]),\n            np.array([40, 40, 40]),\n            axes=0),\n}\n\n\ndef get_scrolling_cropper(rows=9, cols=9, crop_pad_char=\" \"):\n  return cropping.ScrollingCropper(rows=rows, cols=cols,\n                                   to_track=[ballet_core.AGENT_CHAR],\n                                   pad_char=crop_pad_char,\n                                   scroll_margins=(None, None))\n\n\nclass BalletEnvironment(dm_env.Environment):\n  \"\"\"A Python environment API for pycolab ballet tasks.\"\"\"\n\n  def __init__(self, num_dancers, dance_delay, max_steps, rng=None):\n    \"\"\"Construct a BalletEnvironment that wraps pycolab games for agent use.\n\n    This class inherits from dm_env and has all the expected methods and specs.\n\n    Args:\n      num_dancers: The number of dancers to use, between 1 and 8 (inclusive).\n      dance_delay: How long to delay between the dances.\n      max_steps: The maximum number of steps to allow in an episode, after which\n          it will terminate.\n      rng: An optional numpy Random Generator, to set a fixed seed use e.g.\n          `rng=np.random.default_rng(seed=...)`\n    \"\"\"\n    self._num_dancers = num_dancers\n    self._dance_delay = dance_delay\n    self._max_steps = max_steps\n\n    # internal state\n    if rng is None:\n      rng = np.random.default_rng()\n    self._rng = rng\n    self._current_game = None       # Current pycolab game instance.\n    self._state = None              # Current game step state.\n    self._game_over = None          # Whether the game has ended.\n    self._char_to_template = None   # Mapping of chars to sprite images.\n\n    # rendering tools\n    self._cropper = get_scrolling_cropper(SCROLL_CROP_SIZE, SCROLL_CROP_SIZE,\n                                          \" \")\n\n  def _game_factory(self):\n    \"\"\"Samples dancers and positions, returns a pycolab core game engine.\"\"\"\n    target_dancer_index = self._rng.integers(self._num_dancers)\n    motions = list(ballet_core.DANCE_SEQUENCES.keys())\n    positions = ballet_core.DANCER_POSITIONS.copy()\n    colors = list(COLORS.keys())\n    shapes = DANCER_SHAPES.copy()\n    self._rng.shuffle(positions)\n    self._rng.shuffle(motions)\n    self._rng.shuffle(colors)\n    self._rng.shuffle(shapes)\n    dancers_and_properties = []\n    for dancer_i in range(self._num_dancers):\n      if dancer_i == target_dancer_index:\n        value = 1.\n      else:\n        value = 0.\n      dancers_and_properties.append(\n          (ballet_core.POSSIBLE_DANCER_CHARS[dancer_i],\n           positions[dancer_i],\n           motions[dancer_i],\n           shapes[dancer_i],\n           colors[dancer_i],\n           value))\n\n    logging.info(\"Making level with dancers_and_properties: %s\",\n                 dancers_and_properties)\n\n    return ballet_core.make_game(\n        dancers_and_properties=dancers_and_properties,\n        dance_delay=self._dance_delay)\n\n  def _render_observation(self, observation):\n    \"\"\"Renders from raw pycolab image observation to agent-usable ones.\"\"\"\n    observation = self._cropper.crop(observation)\n    obs_rows, obs_cols = observation.board.shape\n    image = np.zeros([obs_rows * UPSAMPLE_SIZE, obs_cols * UPSAMPLE_SIZE, 3],\n                     dtype=np.float32)\n    for i in range(obs_rows):\n      for j in range(obs_cols):\n        this_char = chr(observation.board[i, j])\n        if this_char != ballet_core.FLOOR_CHAR:\n          image[\n              i * UPSAMPLE_SIZE:(i + 1) * UPSAMPLE_SIZE, j *\n              UPSAMPLE_SIZE:(j + 1) * UPSAMPLE_SIZE] = self._char_to_template[\n                  this_char]\n    image /= 255.\n    language = np.array(self._current_game.the_plot[\"instruction_string\"])\n    full_observation = (image, language)\n    return full_observation\n\n  def reset(self):\n    \"\"\"Start a new episode.\"\"\"\n    # Build a new game and retrieve its first set of state/reward/discount.\n    self._current_game = self._game_factory()\n    # set up rendering, cropping, and state for current game\n    self._char_to_template = {\n        k: _generate_template(v) for k, v in self._current_game.the_plot[\n            \"char_to_color_shape\"]}\n    self._char_to_template.update(_CHAR_TO_TEMPLATE_BASE)\n    self._cropper.set_engine(self._current_game)\n    self._state = dm_env.StepType.FIRST\n    # let's go!\n    observation, _, _ = self._current_game.its_showtime()\n    observation = self._render_observation(observation)\n    return dm_env.TimeStep(\n        step_type=self._state,\n        reward=None,\n        discount=None,\n        observation=observation)\n\n  def step(self, action):\n    \"\"\"Apply action, step the world forward, and return observations.\"\"\"\n    # If needed, reset and start new episode.\n    if self._state == dm_env.StepType.LAST:\n      self._clear_state()\n    if self._current_game is None:\n      return self.reset()\n\n    # Execute the action in pycolab.\n    observation, reward, discount = self._current_game.play(action)\n\n    self._game_over = self._is_game_over()\n    reward = reward if reward is not None else 0.\n    observation = self._render_observation(observation)\n\n    # Check the current status of the game.\n    if self._game_over:\n      self._state = dm_env.StepType.LAST\n    else:\n      self._state = dm_env.StepType.MID\n\n    return dm_env.TimeStep(\n        step_type=self._state,\n        reward=reward,\n        discount=discount,\n        observation=observation)\n\n  @property\n  def observation_spec(self):\n    image_shape = (SCROLL_CROP_SIZE * UPSAMPLE_SIZE,\n                   SCROLL_CROP_SIZE * UPSAMPLE_SIZE,\n                   3)\n    return (\n        # vision\n        dm_env.specs.Array(\n            shape=image_shape, dtype=np.float32, name=\"image\"),\n        # language\n        dm_env.specs.Array(\n            shape=[], dtype=str, name=\"language\"),\n        )\n\n  @property\n  def action_spec(self):\n    return dm_env.specs.BoundedArray(\n        shape=[], dtype=\"int32\",\n        minimum=0, maximum=7,\n        name=\"grid_actions\")\n\n  def _is_game_over(self):\n    \"\"\"Returns whether it is game over, either from the engine or timeout.\"\"\"\n    return (self._current_game.game_over or\n            (self._current_game.the_plot.frame >= self._max_steps))\n\n  def _clear_state(self):\n    \"\"\"Clear all the internal information about the game.\"\"\"\n    self._state = None\n    self._current_game = None\n    self._char_to_template = None\n    self._game_over = None\n\n\ndef simple_builder(level_name):\n  \"\"\"Simplifies building from fixed defs.\n\n  Args:\n    level_name: '{num_dancers}_delay{delay_length}', where each variable is an\n        integer. The levels used in the paper were:\n        ['2_delay16', '4_delay16', '8_delay16',\n         '2_delay48', '4_delay48', '8_delay48']\n\n  Returns:\n    A BalletEnvironment with the requested settings.\n  \"\"\"\n  num_dancers, dance_delay = level_name.split(\"_\")\n  num_dancers = int(num_dancers)\n  dance_delay = int(dance_delay[5:])\n  max_steps = 320 if dance_delay == 16 else 1024\n  level_args = dict(\n      num_dancers=num_dancers,\n      dance_delay=dance_delay,\n      max_steps=max_steps)\n  return BalletEnvironment(**level_args)\n\n\ndef main(argv):\n  if len(argv) > 1:\n    raise app.UsageError(\"Too many command-line arguments.\")\n  env = simple_builder(\"4_delay16\")\n  for _ in range(3):\n    obs = env.reset().observation\n    for _ in range(300):\n      obs = env.step(0).observation\n    print(obs)\n\nif __name__ == \"__main__\":\n  app.run(main)\n"
  },
  {
    "path": "hierarchical_transformer_memory/pycolab_ballet/ballet_environment_core.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"The pycolab core of the environment for going to the ballet.\n\nThis builds the text-based (non-graphical) engine of the environment, and offers\na UI which a human can play (for a fixed level). However, the logic of level\ncreation, the graphics, and anything that is external to the pycolab engine\nitself is contained in ballet_environment.py.\n\"\"\"\nimport curses\nimport enum\n\nfrom absl import app\nfrom absl import flags\n\nfrom pycolab import ascii_art\nfrom pycolab import human_ui\nfrom pycolab.prefab_parts import sprites as prefab_sprites\n\nFLAGS = flags.FLAGS\n\nROOM_SIZE = (11, 11)  # one square around edge will be wall.\nDANCER_POSITIONS = [(2, 2), (2, 5), (2, 8),\n                    (5, 2), (5, 8),  # space in center for agent\n                    (8, 2), (8, 5), (8, 8)]\nAGENT_START = (5, 5)\nAGENT_CHAR = \"A\"\nWALL_CHAR = \"#\"\nFLOOR_CHAR = \" \"\nRESERVED_CHARS = [AGENT_CHAR, WALL_CHAR, FLOOR_CHAR]\nPOSSIBLE_DANCER_CHARS = [\n    chr(i) for i in range(65, 91) if chr(i) not in RESERVED_CHARS\n]\n\nDANCE_SEQUENCE_LENGTHS = 16\n\n\n# movement directions for dancers / actions for agent\nclass DIRECTIONS(enum.IntEnum):\n  N = 0\n  NE = 1\n  E = 2\n  SE = 3\n  S = 4\n  SW = 5\n  W = 6\n  NW = 7\n\nDANCE_SEQUENCES = {\n    \"circle_cw\": [\n        DIRECTIONS.N, DIRECTIONS.E, DIRECTIONS.S, DIRECTIONS.S, DIRECTIONS.W,\n        DIRECTIONS.W, DIRECTIONS.N, DIRECTIONS.N, DIRECTIONS.E, DIRECTIONS.E,\n        DIRECTIONS.S, DIRECTIONS.S, DIRECTIONS.W, DIRECTIONS.W, DIRECTIONS.N,\n        DIRECTIONS.E\n    ],\n    \"circle_ccw\": [\n        DIRECTIONS.N, DIRECTIONS.W, DIRECTIONS.S, DIRECTIONS.S, DIRECTIONS.E,\n        DIRECTIONS.E, DIRECTIONS.N, DIRECTIONS.N, DIRECTIONS.W, DIRECTIONS.W,\n        DIRECTIONS.S, DIRECTIONS.S, DIRECTIONS.E, DIRECTIONS.E, DIRECTIONS.N,\n        DIRECTIONS.W\n    ],\n    \"up_and_down\": [\n        DIRECTIONS.N, DIRECTIONS.S, DIRECTIONS.S, DIRECTIONS.N, DIRECTIONS.N,\n        DIRECTIONS.S, DIRECTIONS.S, DIRECTIONS.N, DIRECTIONS.N, DIRECTIONS.S,\n        DIRECTIONS.S, DIRECTIONS.N, DIRECTIONS.N, DIRECTIONS.S, DIRECTIONS.S,\n        DIRECTIONS.N\n    ],\n    \"left_and_right\": [\n        DIRECTIONS.E, DIRECTIONS.W, DIRECTIONS.W, DIRECTIONS.E, DIRECTIONS.E,\n        DIRECTIONS.W, DIRECTIONS.W, DIRECTIONS.E, DIRECTIONS.E, DIRECTIONS.W,\n        DIRECTIONS.W, DIRECTIONS.E, DIRECTIONS.E, DIRECTIONS.W, DIRECTIONS.W,\n        DIRECTIONS.E\n    ],\n    \"diagonal_uldr\": [\n        DIRECTIONS.NW, DIRECTIONS.SE, DIRECTIONS.SE, DIRECTIONS.NW,\n        DIRECTIONS.NW, DIRECTIONS.SE, DIRECTIONS.SE, DIRECTIONS.NW,\n        DIRECTIONS.NW, DIRECTIONS.SE, DIRECTIONS.SE, DIRECTIONS.NW,\n        DIRECTIONS.NW, DIRECTIONS.SE, DIRECTIONS.SE, DIRECTIONS.NW\n    ],\n    \"diagonal_urdl\": [\n        DIRECTIONS.NE, DIRECTIONS.SW, DIRECTIONS.SW, DIRECTIONS.NE,\n        DIRECTIONS.NE, DIRECTIONS.SW, DIRECTIONS.SW, DIRECTIONS.NE,\n        DIRECTIONS.NE, DIRECTIONS.SW, DIRECTIONS.SW, DIRECTIONS.NE,\n        DIRECTIONS.NE, DIRECTIONS.SW, DIRECTIONS.SW, DIRECTIONS.NE\n    ],\n    \"plus_cw\": [\n        DIRECTIONS.N, DIRECTIONS.S, DIRECTIONS.E, DIRECTIONS.W, DIRECTIONS.S,\n        DIRECTIONS.N, DIRECTIONS.W, DIRECTIONS.E, DIRECTIONS.N, DIRECTIONS.S,\n        DIRECTIONS.E, DIRECTIONS.W, DIRECTIONS.S, DIRECTIONS.N, DIRECTIONS.W,\n        DIRECTIONS.E\n    ],\n    \"plus_ccw\": [\n        DIRECTIONS.N, DIRECTIONS.S, DIRECTIONS.W, DIRECTIONS.E, DIRECTIONS.S,\n        DIRECTIONS.N, DIRECTIONS.E, DIRECTIONS.W, DIRECTIONS.N, DIRECTIONS.S,\n        DIRECTIONS.W, DIRECTIONS.E, DIRECTIONS.S, DIRECTIONS.N, DIRECTIONS.E,\n        DIRECTIONS.W\n    ],\n    \"times_cw\": [\n        DIRECTIONS.NE, DIRECTIONS.SW, DIRECTIONS.SE, DIRECTIONS.NW,\n        DIRECTIONS.SW, DIRECTIONS.NE, DIRECTIONS.NW, DIRECTIONS.SE,\n        DIRECTIONS.NE, DIRECTIONS.SW, DIRECTIONS.SE, DIRECTIONS.NW,\n        DIRECTIONS.SW, DIRECTIONS.NE, DIRECTIONS.NW, DIRECTIONS.SE\n    ],\n    \"times_ccw\": [\n        DIRECTIONS.NW, DIRECTIONS.SE, DIRECTIONS.SW, DIRECTIONS.NE,\n        DIRECTIONS.SE, DIRECTIONS.NW, DIRECTIONS.NE, DIRECTIONS.SW,\n        DIRECTIONS.NW, DIRECTIONS.SE, DIRECTIONS.SW, DIRECTIONS.NE,\n        DIRECTIONS.SE, DIRECTIONS.NW, DIRECTIONS.NE, DIRECTIONS.SW\n    ],\n    \"zee\": [\n        DIRECTIONS.NE, DIRECTIONS.W, DIRECTIONS.W, DIRECTIONS.E, DIRECTIONS.E,\n        DIRECTIONS.SW, DIRECTIONS.NE, DIRECTIONS.SW, DIRECTIONS.SW,\n        DIRECTIONS.E, DIRECTIONS.E, DIRECTIONS.W, DIRECTIONS.W, DIRECTIONS.NE,\n        DIRECTIONS.SW, DIRECTIONS.NE\n    ],\n    \"chevron_down\": [\n        DIRECTIONS.NW, DIRECTIONS.S, DIRECTIONS.SE, DIRECTIONS.NE, DIRECTIONS.N,\n        DIRECTIONS.SW, DIRECTIONS.NE, DIRECTIONS.SW, DIRECTIONS.NE,\n        DIRECTIONS.S, DIRECTIONS.SW, DIRECTIONS.NW, DIRECTIONS.N, DIRECTIONS.SE,\n        DIRECTIONS.NW, DIRECTIONS.SE\n    ],\n    \"chevron_up\": [\n        DIRECTIONS.SE, DIRECTIONS.N, DIRECTIONS.NW, DIRECTIONS.SW, DIRECTIONS.S,\n        DIRECTIONS.NE, DIRECTIONS.SW, DIRECTIONS.NE, DIRECTIONS.SW,\n        DIRECTIONS.N, DIRECTIONS.NE, DIRECTIONS.SE, DIRECTIONS.S, DIRECTIONS.NW,\n        DIRECTIONS.SE, DIRECTIONS.NW\n    ],\n}\n\n\nclass DancerSprite(prefab_sprites.MazeWalker):\n  \"\"\"A `Sprite` for dancers.\"\"\"\n\n  def __init__(self, corner, position, character, motion, color, shape,\n               value=0.):\n    super(DancerSprite, self).__init__(\n        corner, position, character, impassable=\"#\")\n    self.motion = motion\n    self.dance_sequence = DANCE_SEQUENCES[motion].copy()\n    self.color = color\n    self.shape = shape\n    self.value = value\n    self.is_dancing = False\n\n  def update(self, actions, board, layers, backdrop, things, the_plot):\n    if the_plot[\"task_phase\"] == \"dance\" and self.is_dancing:\n      if not self.dance_sequence:\n        raise ValueError(\n            \"Dance sequence is empty! Was this dancer repeated in the order?\")\n      dance_move = self.dance_sequence.pop(0)\n      if dance_move == DIRECTIONS.N:\n        self._north(board, the_plot)\n      elif dance_move == DIRECTIONS.NE:\n        self._northeast(board, the_plot)\n      elif dance_move == DIRECTIONS.E:\n        self._east(board, the_plot)\n      elif dance_move == DIRECTIONS.SE:\n        self._southeast(board, the_plot)\n      elif dance_move == DIRECTIONS.S:\n        self._south(board, the_plot)\n      elif dance_move == DIRECTIONS.SW:\n        self._southwest(board, the_plot)\n      elif dance_move == DIRECTIONS.W:\n        self._west(board, the_plot)\n      elif dance_move == DIRECTIONS.NW:\n        self._northwest(board, the_plot)\n\n      if not self.dance_sequence:  # done!\n        self.is_dancing = False\n        the_plot[\"time_until_next_dance\"] = the_plot[\"dance_delay\"]\n    else:\n      if self.position == things[AGENT_CHAR].position:\n        # Award the player the appropriate amount of reward, and end episode.\n        the_plot.add_reward(self.value)\n        the_plot.terminate_episode()\n\n\nclass PlayerSprite(prefab_sprites.MazeWalker):\n  \"\"\"The player / agent character.\n\n  MazeWalker class methods handle basic movement and collision detection.\n  \"\"\"\n\n  def __init__(self, corner, position, character):\n    super(PlayerSprite, self).__init__(\n        corner, position, character, impassable=\"#\")\n\n  def update(self, actions, board, layers, backdrop, things, the_plot):\n    if the_plot[\"task_phase\"] == \"dance\":\n      # agent's actions are ignored, this logic updates the dance phases.\n      if the_plot[\"time_until_next_dance\"] > 0:\n        the_plot[\"time_until_next_dance\"] -= 1\n        if the_plot[\"time_until_next_dance\"] == 0:  # next phase time!\n          if the_plot[\"dance_order\"]:  # start the next dance!\n            next_dancer = the_plot[\"dance_order\"].pop(0)\n            things[next_dancer].is_dancing = True\n          else:  # choice time!\n            the_plot[\"task_phase\"] = \"choice\"\n            the_plot[\"instruction_string\"] = the_plot[\n                \"choice_instruction_string\"]\n    elif the_plot[\"task_phase\"] == \"choice\":\n      # agent can now move and make its choice\n      if actions == DIRECTIONS.N:\n        self._north(board, the_plot)\n      elif actions == DIRECTIONS.NE:\n        self._northeast(board, the_plot)\n      elif actions == DIRECTIONS.E:\n        self._east(board, the_plot)\n      elif actions == DIRECTIONS.SE:\n        self._southeast(board, the_plot)\n      elif actions == DIRECTIONS.S:\n        self._south(board, the_plot)\n      elif actions == DIRECTIONS.SW:\n        self._southwest(board, the_plot)\n      elif actions == DIRECTIONS.W:\n        self._west(board, the_plot)\n      elif actions == DIRECTIONS.NW:\n        self._northwest(board, the_plot)\n\n\ndef make_game(dancers_and_properties, dance_delay=16):\n  \"\"\"Constructs an ascii map, then uses pycolab to make it a game.\n\n  Args:\n    dancers_and_properties: list of (character, (row, column), motion, shape,\n      color, value), for placing objects in the world.\n    dance_delay: how long to wait between dances.\n\n  Returns:\n    this_game: Pycolab engine running the specified game.\n  \"\"\"\n  num_rows, num_cols = ROOM_SIZE\n  level_layout = []\n  # upper wall\n  level_layout.append(\"\".join([WALL_CHAR] * num_cols))\n  # room\n  middle_string = \"\".join([WALL_CHAR] + [\" \"] * (num_cols - 2) + [WALL_CHAR])\n  level_layout.extend([middle_string for _ in range(num_rows - 2)])\n  # lower wall\n  level_layout.append(\"\".join([WALL_CHAR] * num_cols))\n\n  def _add_to_map(obj, loc):\n    \"\"\"Adds an ascii character to the level at the requested position.\"\"\"\n    obj_row = level_layout[loc[0]]\n    pre_string = obj_row[:loc[1]]\n    post_string = obj_row[loc[1] + 1:]\n    level_layout[loc[0]] = pre_string + obj + post_string\n\n  _add_to_map(AGENT_CHAR, AGENT_START)\n  sprites = {AGENT_CHAR: PlayerSprite}\n  dance_order = []\n  char_to_color_shape = []\n  # add dancers to level\n  for obj, loc, motion, shape, color, value in dancers_and_properties:\n    _add_to_map(obj, loc)\n    sprites[obj] = ascii_art.Partial(\n        DancerSprite, motion=motion, color=color, shape=shape, value=value)\n    char_to_color_shape.append((obj, color + \" \" + shape))\n    dance_order += obj\n    if value > 0.:\n      choice_instruction_string = motion\n\n  this_game = ascii_art.ascii_art_to_game(\n      art=level_layout,\n      what_lies_beneath=\" \",\n      sprites=sprites,\n      update_schedule=[[AGENT_CHAR],\n                       dance_order])\n\n  this_game.the_plot[\"task_phase\"] = \"dance\"\n  this_game.the_plot[\"instruction_string\"] = \"watch\"\n  this_game.the_plot[\"choice_instruction_string\"] = choice_instruction_string\n  this_game.the_plot[\"dance_order\"] = dance_order\n  this_game.the_plot[\"dance_delay\"] = dance_delay\n  this_game.the_plot[\"time_until_next_dance\"] = 1\n  this_game.the_plot[\"char_to_color_shape\"] = char_to_color_shape\n  return this_game\n\n\ndef main(argv):\n  del argv  # unused\n  these_dancers_and_properties = [\n      (POSSIBLE_DANCER_CHARS[1], (2, 2), \"chevron_up\", \"triangle\", \"red\", 1),\n      (POSSIBLE_DANCER_CHARS[2], (2, 5), \"circle_ccw\", \"triangle\", \"red\", 0),\n      (POSSIBLE_DANCER_CHARS[3], (2, 8), \"plus_cw\", \"triangle\", \"red\", 0),\n      (POSSIBLE_DANCER_CHARS[4], (5, 2), \"plus_ccw\", \"triangle\", \"red\", 0),\n      (POSSIBLE_DANCER_CHARS[5], (5, 8), \"times_cw\", \"triangle\", \"red\", 0),\n      (POSSIBLE_DANCER_CHARS[6], (8, 2), \"up_and_down\", \"plus\", \"blue\", 0),\n      (POSSIBLE_DANCER_CHARS[7], (8, 5), \"left_and_right\", \"plus\", \"blue\", 0),\n      (POSSIBLE_DANCER_CHARS[8], (8, 8), \"zee\", \"plus\", \"blue\", 0),\n  ]\n\n  game = make_game(dancers_and_properties=these_dancers_and_properties)\n\n  # Note that these colors are only for human UI\n  fg_colours = {\n      AGENT_CHAR: (999, 999, 999),  # Agent is white\n      WALL_CHAR: (300, 300, 300),  # Wall, dark grey\n      FLOOR_CHAR: (0, 0, 0),  # Floor\n  }\n  for (c, _, _, _, col, _) in these_dancers_and_properties:\n    fg_colours[c] = (999, 0, 0) if col == \"red\" else (0, 0, 999)\n\n  bg_colours = {\n      c: (0, 0, 0) for c in RESERVED_CHARS + POSSIBLE_DANCER_CHARS[1:8]\n  }\n\n  ui = human_ui.CursesUi(\n      keys_to_actions={\n          # Basic movement.\n          curses.KEY_UP: DIRECTIONS.N,\n          curses.KEY_DOWN: DIRECTIONS.S,\n          curses.KEY_LEFT: DIRECTIONS.W,\n          curses.KEY_RIGHT: DIRECTIONS.E,\n          -1: 8,  # Do nothing.\n      },\n      delay=500,\n      colour_fg=fg_colours,\n      colour_bg=bg_colours)\n\n  ui.play(game)\n\n\nif __name__ == \"__main__\":\n  app.run(main)\n"
  },
  {
    "path": "hierarchical_transformer_memory/pycolab_ballet/ballet_environment_test.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Tests for pycolab_ballet.ballet_environment_wrapper.\"\"\"\nfrom absl.testing import absltest\nfrom absl.testing import parameterized\n\nimport numpy as np\n\nfrom hierarchical_transformer_memory.pycolab_ballet import ballet_environment\nfrom hierarchical_transformer_memory.pycolab_ballet import ballet_environment_core\n\n\nclass BalletEnvironmentTest(parameterized.TestCase):\n\n  def test_full_wrapper(self):\n    env = ballet_environment.BalletEnvironment(\n        num_dancers=1, dance_delay=16, max_steps=200,\n        rng=np.random.default_rng(seed=0))\n    result = env.reset()\n    self.assertIsNone(result.reward)\n    level_size = ballet_environment_core.ROOM_SIZE\n    upsample_size = ballet_environment.UPSAMPLE_SIZE\n    # wait for dance to complete\n    for i in range(30):\n      result = env.step(0).observation\n      self.assertEqual(result[0].shape,\n                       (level_size[0] * upsample_size,\n                        level_size[1] * upsample_size,\n                        3))\n      self.assertEqual(str(result[1])[:5],\n                       np.array(\"watch\"))\n    for i in [1, 1, 1, 1]:  # first gets eaten before agent can move\n      result = env.step(i)\n      self.assertEqual(result.observation[0].shape,\n                       (level_size[0] * upsample_size,\n                        level_size[1] * upsample_size,\n                        3))\n      self.assertEqual(str(result.observation[1])[:11],\n                       np.array(\"up_and_down\"))\n    self.assertEqual(result.reward, 1.)\n    # check egocentric scrolling is working, by checking object is in center\n    np.testing.assert_array_almost_equal(\n        result.observation[0][45:54, 45:54],\n        ballet_environment._generate_template(\"orange plus\") / 255.)\n\n  @parameterized.parameters(\n      \"2_delay16\",\n      \"4_delay16\",\n      \"8_delay48\",\n  )\n  def test_simple_builder(self, level_name):\n    dance_delay = int(level_name[-2:])\n    np.random.seed(0)\n    env = ballet_environment.simple_builder(level_name)\n    # check max steps are set to match paper settings\n    self.assertEqual(env._max_steps,\n                     320 if dance_delay == 16 else 1024)\n    # test running a few steps of each\n    env.reset()\n    level_size = ballet_environment_core.ROOM_SIZE\n    upsample_size = ballet_environment.UPSAMPLE_SIZE\n    for i in range(8):\n      result = env.step(i)  # check all 8 movements work\n      self.assertEqual(result.observation[0].shape,\n                       (level_size[0] * upsample_size,\n                        level_size[1] * upsample_size,\n                        3))\n      self.assertEqual(str(result.observation[1])[:5],\n                       np.array(\"watch\"))\n      self.assertEqual(result.reward, 0.)\n\nif __name__ == \"__main__\":\n  absltest.main()\n"
  },
  {
    "path": "hierarchical_transformer_memory/requirements.txt",
    "content": "absl-py\nchex>=0.0.8\ndm-env\ndm-haiku>=0.0.5.dev\njax>=0.2.17\nnumpy\npycolab\n"
  },
  {
    "path": "himo/README.md",
    "content": "# Accompanying code for Value-driven Hindsight Modelling\n\n`himo_example.ipynb` contains code for the illustrative task of Section 3.2 in the [paper](https://arxiv.org/abs/2002.08329).\n\n## Requirements and Installation\n\nThis is a Colaboratory notebook: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/himo/himo_example.ipynb)\n\nIf your runtime doesn't include [Haiku](https://github.com/deepmind/dm-haiku) and [Tree](https://github.com/deepmind/tree) please run the cell labeled \"Install extra dependencies\" which contains the following pip installation commands:\n\n```!pip install dm-haiku```\n\n```!pip install dm-tree```\n\n\n## Reference\n**Value-driven Hindsight Modelling** Arthur Guez, Fabio Viola, Théophane Weber, Lars Buesing, Steven Kapturowski, Doina Precup, David Silver, and Nicolas Heess\nNeural Information Processing Systems 2020, URL: https://arxiv.org/abs/2002.08329\n"
  },
  {
    "path": "himo/himo_example.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"7lyGjcyb5S8B\"\n      },\n      \"source\": [\n        \"Copyright 2020 The \\\"Value-driven Hindsight Modelling\\\" Authors. All rights reserved.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"you may not use this file except in compliance with the License.\\n\",\n        \"You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"     https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software\\n\",\n        \"distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"See the License for the specific language governing permissions and\\n\",\n        \"limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"BVWs0Qh1HL00\"\n      },\n      \"source\": [\n        \"# Hindsight Modelling: Illustrative task of section 3.2.\\n\",\n        \"This implements the task and experiments defined in Section 3.2 and Appendix Section A3 of the \\\"Value-driven Hindsight Modelling paper\\\".\\n\",\n        \"\\n\",\n        \"#Task description:\\n\",\n        \" This is a value estimation problem in a 1-step Markov Reward Process (no actions), namely \\n\",\n        \"each episode consists of a single transition from initial state $x$ to terminal state $x'$, with a reward $r(x,x')$ on the way. The agent is trained on multiple episodes of each MRP instance. This learning process is repeated independently and averaged for multiple instances of the environment. \\n\",\n        \"Each instance of the task is parametrized by a square matrix $W$ and a vector $b$ sampled from a unit normal distribution, as well as randomly initialized MLP (see below), which together determine the uncontrolled MDP.\\n\",\n        \"Initial states $x$ are of dimension $D$ and sampled from a multivariate unit normal distribution ($x_i \\\\sim N(0, 1)$ for all state dimension~$i$).\\n\",\n        \"Given $x=\\\\left(\\\\begin{smallmatrix}x_1\\\\\\\\x_2\\\\end{smallmatrix}\\\\right)$, where $x_1$ and $x_2$ are of dimension $D_1$ and $D_2$ ($D=D_1+D_2$),\\n\",\n        \"the next state ${x' = \\\\left(\\\\begin{smallmatrix}x_1'\\\\\\\\x_2'\\\\end{smallmatrix}\\\\right)}$ is determined according to the transition function: $x_1'=\\\\text{MLP}(x) + \\\\epsilon$ and $x_2' = \\\\sigma(W x_2 + b)$ where $\\\\sigma$ is the Heaviside function, and MLP is a randomly sampled Multi-Layer Perceptron. $x_1'$ acts as a distractor here, with additive noise $\\\\epsilon \\\\sim N(0,1)$. The reward obtained is $r(x,x') = \\\\sum_i x^{(i)}_1 \\\\sum_i x'^{(i)}_2 / \\\\sqrt{D}$. The true value in the start state is also $v(x) = r(x,x')$.\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"_7-a7M9ANbS5\"\n      },\n      \"source\": [\n        \"#@title Install extra dependencies\\n\",\n        \"!pip install dm-haiku\\n\",\n        \"!pip install dm-tree\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"grsC1l3BF3eM\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Imports\\n\",\n        \"from __future__ import absolute_import\\n\",\n        \"from __future__ import division\\n\",\n        \"from __future__ import print_function\\n\",\n        \"\\n\",\n        \"import functools\\n\",\n        \"from functools import reduce\\n\",\n        \"\\n\",\n        \"import haiku as hk\\n\",\n        \"import IPython\\n\",\n        \"import jax\\n\",\n        \"from jax import numpy as jnp\\n\",\n        \"from jax import random\\n\",\n        \"from jax.experimental import optix\\n\",\n        \"import matplotlib\\n\",\n        \"from matplotlib import pyplot as plt\\n\",\n        \"import matplotlib.cm as cm\\n\",\n        \"from mpl_toolkits.axes_grid1 import make_axes_locatable\\n\",\n        \"import numpy as np\\n\",\n        \"import seaborn as sns\\n\",\n        \"import tree\\n\",\n        \"\\n\",\n        \"sns.set(rc={\\\"lines.linewidth\\\": 2.0})\\n\",\n        \"sns.set_style(\\\"whitegrid\\\")\\n\",\n        \"\\n\",\n        \"ipython = IPython.get_ipython()\\n\",\n        \"ipython.magic(\\\"%config InlineBackend.figure_format = 'retina'\\\")\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"eRFwE0SdIZ7W\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Functions to generate dynamics and trajectories\\n\",\n        \"\\n\",\n        \"def gen_dynamics(rng_key, x_dims):\\n\",\n        \"  \\\"\\\"\\\"Generate dynamics (transition+reward functions) for one problem instance. \\\"\\\"\\\"\\n\",\n        \"  x1_dim, x2_dim = x_dims\\n\",\n        \"  x_dim = x1_dim + x2_dim\\n\",\n        \"\\n\",\n        \"  # Sample dynamics parameters to compute x2' from x2\\n\",\n        \"  rng_key, w_rng_key, b_rng_key = random.split(rng_key, 3)\\n\",\n        \"  w_dy = random.normal(w_rng_key, shape=(x2_dim, x2_dim))\\n\",\n        \"  b_dy = random.normal(b_rng_key, shape=(x2_dim,))\\n\",\n        \"\\n\",\n        \"  # Sample MLP parameters that controls the x-\\u003ex1' transition\\n\",\n        \"  rng_key, w_rng_key, b_rng_key = random.split(rng_key, 3)\\n\",\n        \"  w2_dy = random.normal(w_rng_key, shape=(x_dim, x_dim))\\n\",\n        \"  b2_dy = random.normal(b_rng_key, shape=(x_dim,))\\n\",\n        \"  rng_key, w_rng_key, b_rng_key = random.split(rng_key, 3)\\n\",\n        \"  w3_dy = random.normal(w_rng_key, shape=(x_dim, x1_dim))\\n\",\n        \"  b3_dy = random.normal(b_rng_key, shape=(x1_dim,))\\n\",\n        \"\\n\",\n        \"  @jax.vmap\\n\",\n        \"  def transition_fn(rng_key, x):\\n\",\n        \"    \\\"\\\"\\\"Sample x' from x.\\\"\\\"\\\"\\n\",\n        \"    x2 = x[-x2_dim:]\\n\",\n        \"    x2p = jnp.heaviside(x2.dot(w_dy) + b_dy, 0.0)\\n\",\n        \"    x1p = jax.nn.sigmoid(x.dot(w2_dy) + b2_dy)\\n\",\n        \"    x1p = jax.nn.sigmoid(x1p.dot(w3_dy) + b3_dy)\\n\",\n        \"    x1p += random.normal(rng_key, shape=(x1_dim,))\\n\",\n        \"    xp = jnp.concatenate([x1p, x2p])\\n\",\n        \"    return xp\\n\",\n        \"\\n\",\n        \"  @jax.vmap\\n\",\n        \"  def reward_fn(x, xp):\\n\",\n        \"    \\\"\\\"\\\"Compute reward from x and x'.\\n\",\n        \"\\n\",\n        \"    Note: this is also a deterministic function of x by construction.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    x2p = xp[-x2_dim:]\\n\",\n        \"    x1 = x[:x1_dim]\\n\",\n        \"    r = jnp.sum(x2p) * jnp.sum(x1) / jnp.sqrt(x_dim)\\n\",\n        \"    return r\\n\",\n        \"\\n\",\n        \"  def data_generator(rng_key, batch_size):\\n\",\n        \"    def body(rng_key):\\n\",\n        \"      rng_key, x_rng_key, xp_rng_key = random.split(rng_key, 3)\\n\",\n        \"      x = random.normal(x_rng_key, shape=(batch_size, x_dim))\\n\",\n        \"      xp = transition_fn(random.split(xp_rng_key, batch_size), x)\\n\",\n        \"      r = reward_fn(x, xp)\\n\",\n        \"      return rng_key, (x, xp, r)\\n\",\n        \"    body = jax.jit(body)\\n\",\n        \"\\n\",\n        \"    while True:\\n\",\n        \"      rng_key, data = body(rng_key)\\n\",\n        \"      yield data\\n\",\n        \"\\n\",\n        \"  return data_generator\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"height\": 860\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 6090,\n          \"status\": \"ok\",\n          \"timestamp\": 1584470940976,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": 240\n        },\n        \"id\": \"IIr1786RQQ9z\",\n        \"outputId\": \"c42a28b9-bbc1-4e8c-c505-3f90bdc5af93\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAACfgAAAaXCAYAAAAg7p07AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAAWJQAAFiUBSVIk8AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XdYVNe6BvB36CBNEEHAgsYCKigi\\niBpjwRKj5mgs16gxmIAlEksSY0nRHI0xdkRFYzcWbERFTRRbLAiIKIpSRDCCHQQGkCZz/+CB48ze\\nwMxQNe/vee5zz6w9a+1vimTvWd/6lkQmk8lARERERERERERERERERERERERERHWKRm0HQERERERE\\nRERERERERERERERERERCTPAjIiIiIiIiIiIiIiIiIiIiIiIiqoOY4EdERERERERERERERERERERE\\nRERUBzHBj4iIiIiIiIiIiIiIiIiIiIiIiKgOYoIfERERERERERERERERERERERERUR3EBD8iIiIi\\nIiIiIiIiIiIiIiIiIiKiOogJfkRERERERERERERERERERERERER1EBP8iIiIiIiIiIiIiIiIiIiI\\niIiIiOogJvgRERERERERERERERERERERERER1UFM8CMiIiIiIiIiIiIiIiIiIiIiIiKqg5jgR0RE\\nRERERERERERERERERERERFQHMcGPiIiIiIiIiIiIiIiIiIiIiIiIqA5igh8RERERERERERERERER\\nERERERFRHaRV2wEQEb0tpFIpoqOj8eTJE0ilUkilUmhqasLAwACGhoZo1KgRbGxs0KhRI2hqatZ2\\nuERERERERERERERERERERERUxzHBj4ioEh48eIADBw7gzz//xP379yGTySrso6enB3t7e7Rr1w6d\\nO3dG165dYWRkVAPREhERERERUV0RGhqKTz75RK5t8eLFGDZsWC1F9OZITk5Gnz595NqmTp0KHx+f\\nWoqIiIiIiIiIyrJnzx7Mnz9fri0gIAAdOnSonYCIiN5ATPAjIlJDeno6Fi9ejMOHDyuV1Pe63Nxc\\nREZGIjIyEjt37oSWlhYGDBiA5cuXV9g3OTkZgYGBcm2urq5wc3NTKYa3XWhoKMLCwuTahg4dCltb\\n21qKqGYFBwfjzp07cm3jx4+HsbFxLUVUOXfu3EFwcLBcm4eHB+zt7WspIiIiIiJxYklHNS02NrZW\\n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\\n78zYlCPHcdTS0qJTp06pubm5//zldruVk5OjiRMnqqSkRDNmzBh0x3IAuBUQ8AMAAAAAAAAAAAAA\\nAAAAIAsRXQYAAAAAAAAAAAAAAAAAIAsR8AMAAAAAAAAAAAAAAAAAIAsR8AMAAAAAAAAAAAAAAAAA\\nIAsR8AMAAAAAAAAAAAAAAAAAIAsR8AMAAAAAAAAAAAAAAAAAIAsR8AMAAAAAAAAAAAAAAAAAIAsR\\n8AMAAAAAAAAAAAAAAAAAIAsR8AMAAAAAAAAAAAAAAAAAIAu5RruAbLZ//37F43FZliWv1zva5QAA\\nAAC4BcTjcaXTaXm9Xt11112jXQ4AAAAAYIi4TgQAAABgsDJxnYiA3zXE43HZti3btpVMJke7HAAA\\nAAC3kHg8PtolAAAAAABuAteJAAAAAAzVcF4nIuB3DZZlybZtmaapQCAw2uUAAAAAuAX09vbKtm1Z\\nljXapQAAAAAAbgLXiQAAAAAMViauExHwuwav16tkMqlAIKB58+aNdjkAAAAAbgGNjY3q7u5mfBMA\\nAAAA3OK4TgQAAABgsDJxncgctlsCAAAAAAAAAAAAAAAAAADDhoAfAAAAAAAAAAAAAAAAAABZiIAf\\nAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAA\\nAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAA\\nAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAA\\nAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAA\\nAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZ\\niIAfAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAf\\nAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAA\\nAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAAAAAAAAAAAABZiIAfAAAAAAAA\\n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\\nx0mn0+Ie4E2iP6V7YiwWw3EcVaPbb7+d4eFhenp6GBoaIpvNMj4+ztDQkDqOz+ejurqasrIy9u7d\\nqxwDJ7v3TX4sm81y7do1Ojs7qa2tpaamBp/PRzAYpKysTIFz1dXVpFIpIpEIsViMsbExDMPA5/Mp\\ncM+2bUpLS9m8eTN79uwhlUopcHI6SeewyW3Mb6vf72fjxo1cu3aNrq4uNZflNUTWqaKiQsXrptPp\\ngmNPV+uxsTEFatbU1LBgwQK1nYQSM5nMFEiyubkZ27aJRCL09PSwaNGiWzqTer1eFZVs2zZ33nkn\\nDQ0NVFdXMzExwalTp1i5cmXBnJTQVyAQ4A/+4A84evQoZ86coa5O3LNtaWlhw4YNBXXKVz68FQgE\\nSCaTZLNZTp48qeaFjMXt7e3l8OHDBfs3NDRQW1vL+fPnGR8fx7Ztnn32WdasWcP/+B//g0uXLlFf\\nX8/DDz9csN/g4CCBQID58+fzb/7Nv5niNJh/HZP1XLRoEf/23/5bfvCDH2CaJm+88QYej4ePfOQj\\nPPTQQ2qcpWOez+djxYoVvPHGG4TDYZYvX86WLVvYvn07x48fV/2WY3vvvfeyadMmmpublePes88+\\ny5YtW1R75NdkMkl5eTmPPfYYjzzyCC+99BLXrl3jU5/6FLNmzaK0tJTZs2fT2tpKaWkpL7zwwhTH\\n13x4Veq2227jC1/4An/5l3/J3r172bJlC/G4SE3LB1J1XWfjxo289tprtLS0sHz5cnXtklCcZVm0\\ntLSwa9cu+vr6lGumfF6KxWJks1mqq6v56Ec/ytWrVzl27JiKJpduk8lkcorrY742btzIb37zG1pb\\nW3n88cd58MEHeeKJJ7h27RpjY2Ok02lCoRAVFRVUVlYSDofVdbqyspJsNsvo6Cjbt2/n6aefLhjz\\nm62XVCqlIo83btw4xQlWOikmEokp+xZV1O+qDx3wmzt3LosXL6ajowOA06dP09bWNq1zSTgc5qtf\\n/Sqf+cxn1MUZpl+U+b8zDIP/9t/+GzNmvD93taL+/ynbtvn+97/PocMtJE2NwMz107reeUI1JIcv\\nCTDAFhGPDvx+kJ+T/WAbP428Xi8vvvgiCxcuZMeOHfT13yA9cprEwEkcy8S23TZoHuW8lLVBuN5Z\\n6L4Q3soFeMpmY8VvEB+5wJVr1+m7iQOUVH608cDAAJ2dnUSicRxPSIA9Jc2F7leOk3MTS1wXEFi8\\nRwBB1SsFpJIaBGwaGxsoKytjPNpDOmO5Vyw3sjTfdUzFlupgGG5OpftPAlRmBHQ/eqAcX/kcMqMX\\naGk5xuLFu9i6dWtBn9atW8e+/ftJ9R1B031TvZ4SI2RGL4va5bmL4bhojAs3Gd5SNN3ACFara5Yn\\nVIO/9g4y410ku3bhZOPErvyW0Kx1eMtn5xiisgVoqUGc2DXo3+MCdY0CBpocpWplINENo6dEfG6g\\nHtKjok51a0HTcaxsXpysLsCzoUMC7tO9bjzuLBewTIu66T7hDFa+GAaPQPSCgPtmPAC+creheU6C\\nmkfE+sauQjYqfrYTkB6BssXCuW7wIKSHxPm95VA6V0BfyrVLRIJiRgU8pvtEW6ZIyzu3k3so1CD+\\ngZhHfTsEOBXrhFi36xAnHN4020IPVhKouwu8YRKX38TJxsV+pfNdN8SIO7/0wnNLZ8ACd8pJL+gc\\nU5zPWwqNDwn4cLwNEv0oR0BNF//KFwsHNRDzSR3/Jn8kSlzPi172COc+CffJ44I7P9KFUKGvHCqX\\nwchx4XpYuhBu8eZNrbloj4DPvGViXphzRTxv7Kqoef5ztYw/1g0INwsYMD2uokuJXhZ9Vn8Ey1vL\\nBdHHLuRoZ8U8j11z3Rcd0A00w49jZ27uCOgJuP230A0PpAexho5DNolR2oC3amGuyY5Devi86Gv1\\ncuHEZ6VdiHMaF0U572Q9h1vENSc1JKC/urx1IusvHf00AyYuiu9DM2HkaKGDppQ5IcbaWyrqnhoU\\nIG7dOjHe+XCfY6s66LqBt2wOthEi3rmdnbt2c/r0aerr66mtraWjowMbj3CL9JVNPW/ekCj5K8V1\\nYvCQcN903QbzY2hhKsQ22RHVcRwyI+dJD5/HTkdx0ED3o1w53Tmg6Tq+6oVkIr046Qi6Vvg8Kt30\\nhOugjYo5lgo2iIhqMyacOktmFV4f1Kc8xXOFYeReEmcj3Riuq6x5owVfqBIjWJVn/HeT9ZIeg6Fj\\n08KjoqlecD9VWlRRRRVVVFFFFVVUUUUVVVRRRRVV1P9enTx5UsF9H//4x3n00UenvWlfX1+v3Ndk\\n7GwsFqO0tPR3juuVsNOHmUKmaRpPPPEEq1atYu/evezbt48bN27Q19enHPUkQCG/5sMh+fddZSRn\\nKpXi6NGjDA8P86UvfYny8nJ1PscJ3C/2AAAgAElEQVRx6OjoYPfu3bS2tmLbNtFolFQqxdjYGGfO\\nnFHAm9w+v17pdJoLFy5gWRYzZ85U9c3vz5YtW9i1axdAASRyM9jQsizS6XTBPWZZcwnJGYbBhg0b\\n2LBhA3/5l3/JoUOHePrpp6mqyn0Ieu7cuZw+fZojR44ooM/j8ahjyajP0dFR9VVG1cqY1/r6erq6\\nuvjBD37AmTNneOGFF/D7/ei6zt133813v/tdPve5z9HX18dXvvIVHnzwQdavX08oFMLn8/G5z32O\\nr3zlK4yMjCiwUUaQynt1MqkpH4rUNI3nnnuOw4cPc+nSJRobG6murlaAl8fjIRwOc+rUKX76059i\\nWRYPP/wwq1evVjWT8IkELCsqKpTT3MjIyLT37SUMGAwGCQQCBbGyqVSKy5cvK/ByeHiYy5cvk0gk\\nKC0tVdvG43EVxdzU1ERVVRWapinA673kOA6Dg4Pqb9Pz5s1TMO7o6CgTExNomqagN03TWLlyJVu2\\nbOH111+nq6uLbDbLxYsXmTFjBvPmzVNzVNZczgc5DyTMOd21QDqPeb1ewuEwS5cuxe/3097ersZL\\nrotMJqOgRAnI3YqTyGazjI2NqbbNnTu3YD3ruq6ic+Ux8q8/TU1NTExMMDg4yLx58xSEfDMNDAyo\\n+S55jFmzZtHe3q4g4fzY1Pw5O2fOHJYsWcLJkyfZv38/uq5z7tw5+vv7laNfvitjKpVS7n0yolhC\\nkQcOHCCdTlNTU0M8HufgwYOAmKsVFRWAcAfs7+9XDpbhcJh4PE5raysHDhygv7+fdDpNU1MT4+Pj\\nlLrGApZlsXfvXvx+v4qXjUaj+P1+tXZlG+V1Uroo3nnnncydO5dz585hGAaPP/44jzzyiKqr3F4C\\nyCdOnGBgYICamhpM0ywwy6qpqSEYDJLJZBgaGuLYsWMcPXqUZDJJKBTiX/2rf8V9991HJpMpcLtL\\nJpPqOinH+4UXXuAb3/gG169fp7u7G7/fT1tbG47jsHr1aubNm4dlWb9TJPmCBQt44IEH2LNnD++8\\n8w7t7e0AU1xepSNpJBIBBAA4NjZGLBajrKyMv/3bv+XkyZOAcLm8//77mT17Nh6Ph2g0yrFjx7h0\\n6RKWZbFt2zYFpOanJFqWVeCqKR1I8+dwZWUlK1as4OjRo/zsZz/jueeewzAMFixYoMbQtm31/Cxr\\nkM1meeWVVwgGg2SzWX79618TCAR45JFHbgnzJhIJvvOd79Dd3U1dXd20CYKTI6eLKur96EMH/AC+\\n+tWvFlhN3upTHuvXr+eb3/wmX/7yl5U9682eUBzHIRgM8rWvfY0tW7Z84O0u6v9t7dy5Uzj3mRol\\n8x4RN+9vIs0XxslMCDczf6WATTT95u5ak+VGaU62lf2gpes6W7duZfPmzZw9e5a9e/dy4sQJxsdd\\n10FPGK10HravGkf3oKEJGCVyCdtMkB5sw85ECc16AH/tHZgT3Td1gJou2tjMZLAtE8dT4sItFXmu\\nXnmxqqK1oPmEc1miR0SHpoZEHGVqCGyTiYkJIpEIlmUJOMSjuZGj+W+CJ0FFTjYPZtIElAk4aCLu\\nV9PQfSECTWtI9h5gx44dbN68WfXLNE3279+PmckCBo4REs5qoRmuA2EKBltw0iMCrDJKoGw+WqgR\\nR/MKICjZB7FO7GySZO9RsvFBQrMeQHNjRDVNx185F8P3BLFLvwIzTqp7LylviYg39VYJ4CWbEu13\\nEiIG1BMudEN0TOFoFr2cc6SS2ZWeIGTjONFOAboUxMl6BdgVd+G+hs1irNAojEV1wZnIJeHcpknw\\nKfcmXkGbKubXjbpVk9IrxiTSIX6P4zoArhDt0r3K4RIQ8GfFYoj3wo29oi3JAeXE+N7Kmw+pIRQc\\n6NiiWZpfgGHZCGgO3qrF+GuWCCt3XymOGYPRVvA8AN6wAPwyo6Lm+bKzwmXNNkHXpgfkkgPiq7dU\\n1NIICHDR8AuoK94tjuE4As70lYn5rxkCSpRRvAVxzAiIaPioO8810c5QE4WQYR546LigoKa70Ksm\\nnPzGXVfBZL8LPd3ij1GZnDskwTrR30AtTOA6LeaDnnltlq6cpQvBPJkD98yocEsMN7vndUFc26IQ\\n6HTfwNpZEYNrJVyQy3X1s00BvJUtEBHqk0HRrPgEkaNpmCMXMDxX8eqAR8dJjRK78IZyOrWSI9jp\\nCbGmg9J5zcnF5U7rGOq2N9Qg2pEZE22rXiGcMBUY6BT2L9EvaoAj4FOYNm5XuZ1mImI+G/48mFOC\\njq5zn6wt4Dg20UgEy/LhVC7DGWrhxsAgQ6NRdO0C2UwGx1cBoQblTPo7qWQWeEI4ZhRt4vyUGFqY\\nCrFJR9RsrB8jUEmiZ7+I5gU3mjfv+uqYkBiAyCUcK0Fm5GKudqlhIPcpVummpxke1zXVcp+T3Xks\\nnVCHj8LISRdMzXsO1txxtLNoWu4NlZUcJdV7mFAwwOzZM+nqvk786jYCTWtx9MrceE4X1zx0DM0x\\n8VbMwVe9eEr5HFtAv8Fg8Herd1FFFVVUUUUVVVRRRRVVVFFFFVVUUR+KbNvmpz/9KYCKbLyZKisr\\nKS8vV25Xzc3NCuzw+/3veS7TNDl58iSmaRZEFH5Yqq+v5/HHH2fdunWcP3+et99+m56eHhV/G4vF\\nCqJVPR4PgUCAQCAwxRnOcRwSiQRXrlzhW9/6Fn/6p3+Kz+cjk8nw8ssvc+zYMUDcm5o/fz6nT58m\\nnU5z7ty5gshfqXwwoqysjMbGRmpqahQ4ORnK27ZtG9lsVkE+mqbd9B5zJpMpcEXyer14vV7Ky8sJ\\nBALcd999RCIRuru72b9/P5cuXeKOO+6gra2Nd999l6eeegqAY8eOsXv3bgUrSWBNKp1OY1kWpmnS\\n3d3N9evXyWaz+Hw+AoEAsVgM27YZGhqirq6OpqYmDh06RDab5XOf+5yCSEKhEN/+9rf5/Oc/z9DQ\\nEG+++Sbbtm1j7ty5ClSSDln58E2+Y1++M5v8m6Nt2/z1X/81gUCAdDrNtm3bWLJkCdXV1QqOdByH\\nV199Fcuy2LRpE6tXr1bHN01TAZIyavTIkSOk02kVnTx5TDVNo7y8XMFpEqbMj54dGxtD13XS6TSX\\nLl0ilUoVwHL5SqVSXL16VdW0sbGRK1euTDuPbiZN02hoaCi4pwkigruuro7r16+j6zoPPfQQd999\\nN+Pj4/z4xz+moqKCgYEB3n33XZqbmzEMg5GREWbNmjWFV5AueaZp4vV6p/RFgob19fVomsbly5c5\\nd+4cXq+XjRs3cuDAAUzTxO/3k8lkiEQihMNhNb75yncOsyxLrWnp3ievRbKN+bCdYRjKiU6ufb/f\\nLwxWxse5fv06c+fOndadLJvNqnlu2zZer5fLly8r8NmyrCmR2vljIK8nK1euVA6iEs567bXX+NSn\\nPqXOZ5qmAtTyayzhrdbWVgYGBhQEqGkac+bMYdOmTaxatUrVwDRNWltb2b17NxcvXlTz8OzZs5SV\\nlVFbW0s0GuX06dOcOnWK2267jbvuuovh4WH6+vpoaGhQMc+2bau44XxYbzpXx/vvv5/Lly+jaRpP\\nPvmkim7OHz8JIR84cEDBZefOnSMUCrF27Vo2btyoADkQLo3vvvsub731looV37BhA6lUSj0Hmaap\\n6jpZ1dXVPPnkk/zoRz+iqamJj33sY7z00ksYhsG6desUTPq73rPYtGkTe/bsYe/evei6zuLFi2ls\\nnJRk5M41OY+bm5vp7e3l6NGjdHd3q1jij3/846xdu3bK8+jDDz9Md3c3v/zlLzlx4gSnTp0inU5z\\n8uRJIpEIZWVlan57vV41n0zTnALOPf300xw8eJATJ05QUlLCJz/5SRUnnQ8GyvUrkx/b29uprKzk\\noYce4o033uC1116jra2NtWvXsmTJEizLUv2MxWLs27ePnTt3Mjo6Snl5OV/84heVW1++Ojs7AdQ1\\nvqii3o/+lwB+S5YsmWLveStJC+zvfve7bN++vSCyV6q0tJRHH32UT3/609TX109zlKKKurls22bH\\njh0k01kCM9ffEu4DMMrmY8d6BWhRthCc7O8ORTgySjPLvHnzPqAeTK/p3PRi8SS2EcTfuAZKGkkl\\n064DoQvKBWtdoOo6ztBRzPFOEkBo9gZ8FXMw/GXEr27j8OEWFi5cyNatW6eNNvZWLYSR8+Ak0Gru\\nE/CIBDM0HQX8OAhYbOKCgNJAAF7SaSzZp2Jk4/EE4ODoXuH6FpzBVJc02flMzjVMwTi6C9xo4K/G\\nwcFKR0n2HsVb0YylB+jrv8HZs2dZunSpcnU8fOQothGCyrtxQo1onqALRzkweEZAYJ4S4VAYELCT\\noxmuO6IPvAvRKm6H5I0pNc1/YewpqSUw+0HSXbsF0JXJYA8dQ3PyQjKNkIiaTPYLWGnsjPg3uQie\\nsADmotcg1Y9yuBs+nnPck+6NjuO6hzHJ+S3nAIbmEWMydFgASI4tHPdKZovfKV7ThOEjAr4SnZoa\\nyZzohehVF7ZyHRyD9WJcpo231SE8S0BSw8fEuitfrJwnpwBv0z3m2GI/2xJxq96w63iXFWCapqGZ\\nEczhszgzlqJpOoH65SR7DuBkEzCwX7gLggAcyxcXgqUSXHNs0cfJLm/y/ADhOQLmGz4q6htqFM5p\\n6RHImGAExeMD+8V4lORevOf65DrbSddL2xSwl5URboPK1dGVcrTTcm1zo7nRPeDowoFtvE38C9aj\\nXDbz5djuOY+6zo6aAE/lcXDEHChorTbJ9dIRa1fT3ahpS4B6w8dF3wuAUVCumLIPjiWgxrFTuYhp\\nTRcQbM19wvlQjY0bEVzgEirbbuEx4LnnnqOvr489e/YQi4+T6juWc5jTdJzyOWh5n8RyCypikZnG\\nKVCeOzwXxqOI+TvXdRnNly4ioh3LXVNmDrituU9An8qRj8J+jJ0RLohGSFxzdEO0xzEh67YPxPEc\\nC8vKg5xLZsP4OTQrjq9+JZmRDhxzFCc8R7RJgodT2juNNF3AlKOnIJtAD1VPiaGdDLGtX7+eIy1H\\niQ13YCWGMSe6BAxdO3nsXCnIVzwnkY2BY2NPXMFpWp5z2VVLPn8tSsjPVekCsV6sBAzsg5pVhed0\\nnTINw4Ph0cmMXyPVe5ig12Ht2tU8//zz/N3f/R2HD7eQvL4PR/NDyRyxho1ADsKMXAYrgQZ4K+YI\\noHsa6Dcb68MwNBVDUFRRRRVVVFFFFVVUUUUVVVRRRRVV1P8etbe3MzQ0pCIAbyWv18v999/Pb3/7\\nW/bs2fP/sXfmUXJd9Z3/vFev9qX3Vbtakq3N1mLtsmTJQsaAQ3wwBEJMOJMZAgzxwSGZzElmErKd\\nHDgeCFkIJiQxxMEzECcYgzEIydbWWmxrX1pLa+ldvXfXXvWW+eO+e+tVd0syJGQmM/U9x8et7rfc\\n+7tLdb/61PfLxz/+cRVV6gU4bqc33niDsbExNE3jgQce+InaOTk5SWdnp4pLTSQSLFmyZEb3n1wu\\nx5EjR9i3bx9dXV0KzpPubtlsdkYIREJ/6XSaRCKh+uR11Mpms1y6dIkDBw6wfft2vvCFL9DR0UE4\\nHGb37t089NBD/NM//ROnTp1ibGxMQSczOfj5fD6WLVtWBjgMDw9jmia6rhOJRIhEIhiGocALwzBo\\nbm5mYmJixrhSL9wnXedkFGZ1dTXRaJR3vOMdVFdXMzY2xre+9S36+/uVK9jrr7/Oz/3cz9HX18dX\\nvvIVUqkUhmFgmia5XA6fz6cimmVNL126xK1bt1TfZEyvBKr8fj9jY2NkMhkWLVrEG2+8wXe+8x3e\\n9773qXZHIhH+y3/5L/y3//bfVNzkqVOnymq1YMEClixZwsmTJ0mn02UQlK7rhMNhqqurefDBB1m3\\nbh1f/epXuXbtGrquK9Dwr/7qr/jkJz/JwoUL0TSNCxcuMDAwQCwWY8uWLao9xWJR1dEwDF544QWu\\nXLmiIEJZCy/MpWkatbW1+Hw+TNNkeHiY3t5exsbG1DE1NTUK5jQMg5UrV3LmzBnl6DfTfHYch4sX\\nL7J27VpaWlq4fv26cp68mxzHUdCbpmnk83kKhUJZ3GooFCKTyfDDH/6Q+++/n02bNvHiiy8yMTGh\\nAN5r164p4HFiYoJEQqTheAFGeT/pDilBVNM0VfxwJBLhwIEDjIyMKAfJbdu20dXVRX9/P48++ih7\\n9uxhfHwc0zRpaGhQ95kaCZvJZBgYGFDrRdd1mpqa1JyZGttsGMY04EpGnNbX1zMxMcH169fJ5XI0\\nNzcTDocViDk4OMitW7cUfLtkyRKuX79OZ2cnDz30kKrNnUBnOV4ygnvlypX4/X6OHz/OG2+8QSKR\\n4L3vfa+CI72R5hJGzOfznDt3jm9+85uk02kCgQA+n48nn3yShx56qAwkBLFnb9y4kY0bN3L8+HEV\\nnWsYBmvXruWxxx7j5Zdf5vjx42QyGU6dOsXZs2cxTRPDMFizZo2CIuWaBsrc8QAVp+z3+0mlUqxe\\nvZr/9b/+l4IPZ3ptkDHkFy5cIJPJoOs6c+bM4dd//denQV+aplFTU8N73/teTp8+TTabZevWreTz\\neXRdx7IsJicny8BMOQ8Mw1BjuXHjRr797W/T19fHxMQEgUCAWbNmsWjRIgUHypreTXPmzGHBggWc\\nO3eOQCDAzp07px3jde4D2LFjB+3t7Xzve99Tr2P/9b/+V2bNmnXb+8ydO5dPfepTvPDCC7zyyitq\\nr3jttdd473vfW9bnYDBIJpMpgzClwuEwfr+fZDLJ0aNH6erqYteuXWzevFnB6iDAyx/96Ef8+Mc/\\nZnBwkHA4zKc//WkWLVpEc3MzX/va17h48SLnzp2jurqaefPmEYlESKfTXLp0Sa2t2bNn8+lPf5r6\\n+vppfSoUChw8eBCgDKquqKKfVP8mgN9Po7q6Oj772c/ye7/3e+qXpLGxMWKxGE1NTSxbtuxtbTQV\\nVTSTzp07R//ALQGmVc296/HB6rmYgxER35ntF05RKhLwLvMwLWItfbrGz/3cz72t9nlBvcHBQXK5\\nHKFQiMbGRrZt28aKFSvKPglyVze9hq1ktSrIuGDOVBc8TYfYXPDHcfr2Uhy/QSHaRLB+Kb5wrXC7\\n6znInj172LFjx4zRxmaqn/xAVgBesbloju26KhUF9CYjJIeOiJpAuWOV4zpl5YcEpGZlcOwimmML\\nd6rkdahegQJ4pDMgeOA+D8ykue59yU7x/Zr7xH3ywy50dxM9mCBXyHHgwAFWrlxZ5uoYW/RO8nZI\\n/OFi5dH0ACSv4qQ8rnfBmhKY6FglwFA3RJTubWoKqJjKwvBFbMcGfOi6AT7HBYlK0I0WiEP9A5C7\\nJfpTdN36dL8A1+JtEG4WLmeBarTh4/g0U0A+lgur1a0WoKCmubCgCynKWFgV7+m4c1qHocNufLIj\\n+pNY7HHbc90Yh98QcJ+ClGZNXxOBKtHGbL8Ag3KDMHJCAJLTA5BLl4+3wfgFAealu8S/Z4rCnel7\\nMsJW3n/WoyXYK9sP/hiO5kMrpihOdBGonk+wfhm54Ys4mUFRt/EOwALTEfePunuFY01xmpvq8qaL\\nyGQzLWox/Ka4HggwqG6tANsSSwS0FWkV56S7RfypERFQYLBeRMw6zjRHOiKtUHDnQbi51A7ZPrke\\nfAFKMb/SVU8XYGW4CcbPCTe5nu+5a7ERtIAAx6beM9wM2UGwXJdG2xRt0/xl9S//A9t179RcOFP3\\nQ8u70AYP4uRuweBBqF3j1sCFZDW9VFvHFi6UI2+JyGYZMe0LQstOsQa9ffNK08WYGXEY2IvjmOQL\\nBV544QUs2yFXsASYa5tgO8oZUAs1EgwGCYfD6mFNqU+efUe2V7oPhhpErX2hmWE5earmE3Anjji2\\n5WEXsp3SD3W8LsZAD7rQqXRlBOVWKqFIBTnLvVCAn058EYydJj/Zh+O4QHK4BOY5VgFNm/K6MNNS\\nAwEYug6GM8XQToXYVqxYQUtzE1c7b1AYnxTAbevDnrGbQfI1yRfBGdiHZqbRzaRaq6o+bkM13Si9\\n3kj3URBrHh1N9wvwcPCwWF+JRaV+2EX03ASp3qvoVpZo0GDTpo0qlv4Tn/gES5YsYc+ePXR195AZ\\nOwtj58rGWAP0YJxg/TICdffO+Ie749gURi4R9fvYtm3b7fteUUUVVVRRRRVVVFFFFVVUUUUVVVTR\\nz1wy9nXHjh13fa/R5/OxZcsWXn31VU6ePMnNmzdpbGxUcYsyunMm5XI5Xn75ZQqFAosWLaKuru6u\\nbXMchytXrrB3717eeOMNFVUJKDjiwQcfZOfOnQrsefXVV3nppZeUk5aE4ySAMz4+Xgb2SXBoqhPb\\nxMQEVVVVM0J+uVyOvXv3cu3aNTo6OqiqquI3f/M3mT17toILs9ksIyMjGIaB3+9X8ASgoJP777+f\\nSCRCsVikp6eHnp4ecrmcuqemiWeLLS0tVFdXq/60trYqRzsv5GfbtoLSQqFQGSxWX19PKBRixYoV\\nhEIhbNumtbWVj3/84/z1X/81PT09FAoFlSb1yiuvkEql8Pl8hMNhBUVKqEi6IHZ3dyu4z1tTEECV\\n12Uwn89z8+ZNAoEAe/fu5d3vfjd+v59isciePXvYt28flmURDAbVXJJzS0KSS5Ys4SMf+Qjt7e10\\ndHQo4DMWi7Fq1SrWr1+PpmmkUimefPJJPv/5z6s4zFwuR3d3N8888ww7d+7koYceUg6FDzzwgALz\\nJEADApJ85ZVXuHr1qgLJvLG2XrhGwn2pVEpBSFOfj05MTDAxMYFhGNx3330qrlY6W94urjKZTJLJ\\nZAgGgyxatIhLly7dYeWU3psIBAIsXrwYn8+nXA5lnKl0+5KRy2fOnOHQoUNs3bqVT3ziE/z+7/8+\\njuPQ3Nys4pFN06Szs5MlS5aUvTcrIUzvmEn3Qxn3C3D+/Hl0XScUCvHwww+zcuVKAoEA69at46WX\\nXqK3t5enn36av/iLv1BQbyAQIBqNKpe+fD7P2NgY+XwewzBobGykWCwyOjqq3DdlDXI58V6wjJae\\nWh/pnBiJRNR5w8PDDA0NzVjXRCLBggULqKur4/r16+TzeXw+H/39/di2TUNDw4zRpd4ocLkX1NXV\\n8fGPf5wDBw7w1a9+lX379jE0NMQ73/lOlixZoqBMuaaHh4fZt28f+/btI5lMKrfKj370o2XP2W8H\\nfq5fvx7DMPizP/szJiYmeO211zh+/DiBQEA5RFqWRS6XU2s4Ho8TDAbVzyQI7L2PfA8JUGlGfr+f\\nSCSCbdtqz/DOFXnu8PCwGseWlhZ+67d+i1gsNq0P8t/ZbJbr168TDofZuHFj2XESKA4EAmWxxuFw\\nWI1tMBhkw4YN7Nu3j9OnT+M4Dg0NDUSjUSYnJ1V7o9HoXWPkHcdR+3JVVRVr166ddsyxY8cAEXUO\\nItq3tbWVCxcukEgk+PSnP31HuE9K13V+/ud/nt7eXt566y2KxSIvvfQSbW1tLFmyRLUnEAiouOxM\\nJqPmdT6f58///M/RdZ01a9YwNjZGf38/f//3f8+3vvUt5syZo16nuru71RxtaGjgqaeeUk6K69ev\\nZ/ny5Rw8eJAf/ehH3Lhxg/7+fiKRiKrXypUr2blzJ/fdd99tf6c4duwY6XSaefPm/cwNoSr6f1v/\\n1wJ+Upqmce+993LvvdOjziqq6KfVgQMHyBctAnX3lNyA7iB/wI9WtRhn5LQAhJofAiOKY1tod/rj\\nLz8GQ8fBMWlobGDlypV3vM9MoJ5luTCHpuG73MnRY8dpbWlm165d7Nq1C8uyprnpaYmF2KMdOI4O\\ndetFVKRtUiI2XIpfxWm6CtZAwzqcwXbywxcUqOCvmkeu/036+gf4xje+MWO0cWH0ikBTEotLgIWE\\n8+yCAGGGj5ZiYaXzloSPHDdiMlgjYhVzgzB8XECVjiUAl0yvC1k5pa6UwUxTABUJeRlR12mvHGS0\\n8uM4OAwODk5zdTTCtfjc35EKhQKOmXeBLwfq10GwulRP3V/mjqb5vJGz5TXVEoso5HOYt47gpHpF\\n1wPVEJuPHp9FJBYnm05RmOxxQccszsgptPwINGxyo1RnkGODY6JFZ6FNxrDz42j+KLqmYxXTYt6O\\nXxBgS6ZfnBNv84B9HlBID7gRvj0uRBgXcaLhpvJ7Jq9Mifm9TXylvG5kNgTqYGCvGMtgrYDcbgfJ\\narpwLxs9IYDAQJWA3so7Pv1eKsLWBXD9MQGseWGvwiQ6DpoGud529EAcx8rh5MbE9ZSDnAOWDYPH\\noDk4xW1OL0E+juXW0obCBAy9IcBPCV0ZUQFYxhaWYKxwE4wh4L/WR4RT4OQlAXCOn0PFLXv/GDai\\nYtwSS6Dvh24zvICd4651+f2Z9jf3WF+k1BYzLWDDsRkOl20PNkB2r2if5nMjkB1RX9nGMhAOlIOn\\ndPnTDTQjAK27BGyVdqFLL+wro7Az/ZC+DsW0OF8PAWZp/wjU3JYP9TaBYI1Ys4OHcaw8Y2PjaKE6\\nQvUrCcZb0Hx+HKtIuvNVLEvsVfIPIflJUfnJVvWHk+534T4HLG+9ccdcQoDalAa5+7mZFv2sX+dZ\\nNx45U74oum6nEspzPJ+y9QXFteUclGCn1+ku3IQzBlZ+sjQ/fEEBDdp5wBF7nM+Pphk4MxbWcSPD\\n3YcAvuC0GNqZIDZd19m1axdXr34FHEPAyneC+9TFbBx/FK12NdrIG+AUyPYcxhdM4AvX4tN9mJrb\\nZ90ovd5YeTEWxUkBIGsa1K0Vf8xOXMIpJgVorB5mgB4MEPb7aJ07W8Xcyz/MdF1X3zt79izPPPMM\\nk5MpNCOCHoihB+IEahdjxFrv+Gnt4sRNdCtL69zZLF++/O79r6iiiiqqqKKKKqqooooqqqiiiiqq\\n6GciabAAvK0PYkrgbOvWrRw4cIAvfelLPPXUUzQ0NNwR8MvlcvzZn/0ZN27cwLZtnnjiibveK5PJ\\n8Fd/9VecOnVKQUkSRAJUTOpLL73ED37wA97znveQzWYVJDZ37lzWrFnDnDlz+OY3v6kcwfx+v4Jt\\nvNCehG+8z7WSySS1tbXTnmGRlY8AACAASURBVHUVi0Vu3rxJV1cXkUiEz3zmM8yeLQwERkdHVYyl\\nhCQk6GKaprrP8uXLlevRiRMnFIgkx0U6oMn429HRUebPn6/iRFtbW+nr61Ptl/GZEgL0jkU8Hqep\\nqYlwOMzatWvL+h4KhfjoRz/K5z73OVKpFH6/n6GhIY4dO0Y+nycejyvnNV3XFegnndF6enrK6uid\\nK6FQaBokk0qlSCaTjI6Osn//fu6//36ee+45Lly4gKZpzJs3j82bNytnw+HhYc6fP097ezvj4+M8\\n//zzXL16lf/4H/8ju3fvnjZvLMsilUrhOA4LFixg4cKFnDt3jpaWFhUNm0qleOWVV3jllVfIZDIY\\nhsE999xDMpkse/bt9/sZHh7mzJkzmKZJa2sr3d3d0/rpOI5yZZPj6XU4m1oD6T735ptvsm7dOqLR\\nKPPnz+fatWszLQVAwJIdHR2sXbuW2bNnY9s2V65cmfFYL3i1atUq5R4GYt3kcjmCwaByhZNOX7lc\\njq9+9ascPHiQrq4u8vk8tm0zPDwMiOfDjuOQTCbp7Oxk4cKFylVSuvVpmqZc/YrFIt3d3QwNDWGa\\nJpFIhJaWFlavXk1bWxvBYFCBX/JD8pOTkyxatIh3v/vdHDp0iK6uLnK5HJlMRrn+gYCNa2trWbt2\\nLdu2bePZZ59V4+EFyLxOfd76SPhPwprSnS4ej9Pc3Mzw8LAyPPD5fCQSCZqbmxWwKterbduMjIwo\\nwG/t2rUzuuhJd7hQKMT169cBAfhJF8NwOMzf/M3fcP78eS5cuMCsWbNYvXo1kUiEyclJbty4QUdH\\nB7lcTrnWhcNhVq5c+RN9iH7NmjVs2bKFvXv3qnmwY8cOdu/eTVNTk4LB/sf/+B+cPXtW7Su2bROJ\\nRIjH4xQKBfU+kYQ1ZV3lvJfxyd55I7/vlTSWiEajPPnkk9OiXKeCfhJsTiQS1NTUKChPuteFQiEF\\nA0s4WY6HHBMJl8sxlG2Kx+NMTEwoJ9dQKKT20anOgNIJVu7n73nPe8oAUhCvBSdPnkTXdbZv367O\\nb2xs5PLlyyrS1zRNtX5uJ+m8uXv3bs6fP6/g3D/90z/lySefZMWKFWquR6NRUqmUmr/JZJJnn32W\\nGzduUFdXx6/92q8Ri8V46623ePnll+no6FBrPBwOYxgGS5cu5eGHH2b16tXTIL1oNMo73/lOdu/e\\nzR//8R9z8eJFGhsb+eAHP8i8efOU6+bt1NfXxwsvvACIJNO7Of9WVNGd9H894FdRRT8LDQ4OYlkO\\ngdhtYKkp0oBQwzKy2SGcTB8MvA61q4RbmW+GT5Y4tgCfho6DmcFv+HjiiSfuSL7PFHsbqLuHQKwE\\noJipftIjl+i83kPfN57n8uXL2LbN0WNvCDe9Wdso+OspTvbiWHnXoW0O6C5s53jiCz0xsGUvJNE5\\n4Itg55OYqT788Vlomk6g7h7yI6d57bXXyOatadHGdl5Y7hIpQWCaLyB+AXAsmOy4DQwm5amNLwSx\\neQIs6/uxG61quSBQXMB10kXNC7rYxZIDWGFcwB1Qcq6TcqE7bh3GtoV1+0yujpoGkagAfHJjN7Ek\\nLBiZXQ4WqXhUB20m5y63plZukvRQJ076ZrnrXbgVnCKmpmESQgsakIhA1VIR/zh8HCfVLXilxi1T\\noCHAtnDsAhoQCIYoxhfgFM5ghGtxbBvNzIMREdGzo2eEE5ruF2PgjXKV8JFjC9AMRPtkJLDueVAx\\nY8yv/Jk715SjnAceDNaI4wcPi9jeWNvMDBqIsYy3Qeq6iFoeeE1EbEZmiPWU9/FG2KKLbkXnKQCy\\nBHu141gFbA18ZoZkxz+CbogW6y4c5dPdeWaClRJgYp0b8SmPkYChZojj0jcFjGhlxFqLzhdQZbjJ\\njZe1S2tQutrZReEqmBsUcJgeEMCo7T7cCFQJGDI6X+w56nyjdL6muWPneNrkdWNzxFxK3QAzK2oh\\nXTP91VC3DtLXBBRlmyWwM7bQBTsdyLpAn5kRsG52WNQnNt9zT3ceSbDRtkQsbdb9NKMRw3Fcx7va\\ntWLeyPhmL2DouC6WjiPaqhlufzURRx2ZfZtJUzaB5MXE8UYUrII7K33kk7fQI7X4w3XiE2vBBHZ2\\nFDQRMaweREUjBIIBzKJJOp3Ctl0XQQ1PvXXRTihFF6N5gEePsgPi50ZUjOc0lW0u7rdMFMSMx+FQ\\n091/u/AdlDn3qeupuWKW1rFTFK8NuPMNR9RHc/dRPNfwulbaRfHJRLduXk2F2OTD0qNHjwqTRCMq\\nIF0zh+abEmvtlWdP8yXmYk+cxy4UoJhi8sr3MRrXY1TNEUNgm2guWO2AWGfJbjfSOY8WaRXuk44J\\nsQVoExfFHHbEJykXLljIokWL2LZtG8uXL7/t67Su69x///08+eSTfOMbz5MuOERmbyl7HbydrOwo\\nud4jRIMG73jHO+76KbiKKqqooooqqqiiiiqqqKKKKqqooop+dpJOPxIaezsKBAI8/vjjDA0N0dHR\\nwTPPPMPDDz/Mtm3blIuTlGmaCiK4du0auVyOhQsXzuh05FUmk+Fzn/scly9fVqlO1dXV00CDYrFI\\nLpcjmUzy7W9/GxAw3Qc+8AEWL15MJpOht7eXwcFBBT8Eg0EFPtzOJcrriCehnKnHZbNZDMNgxYoV\\nXL9+nZs3bxKLxQgExHtBXpdATdOIxWIkk0kVO5pIJMjn87z11lsKtJqp1lLJZFJBIcFgkJYW8Z7e\\n9evXFaQknbVM0ySZTOL3+2lsbKStrY2qqip27txJa2trWdwpCLBl9erVwhAkn+fUqVOqf97ndxJ4\\nyWQy5PN5hoaGbtt2QAGH0rFQgj7Dw8NUV1dz8OBBTp06xcWLF4nH4/zKr/wKS5cuVeeFQiGi0Siz\\nZs3iscce4/Tp0zz33HMcOXIETdP42Mc+pvoho2QlfGgYBsFgkM2bN3P58mWqqqoYHBwkGo3y1FNP\\n8eabbyqI0e/3EwwGFbAkwUrTNDl27BimaVJTU6PmwUxAioQ4Ozo6ymKDZzpW1kM+M96wYQNNTU1c\\nv369zJFx6lyYmJhgbGyMmpoa5syZQ01NDb29vQwMDJRF5MqatbS0KKBV1l7WVsJdMkJVRrCOj49z\\n+PBhbNsmm81SLBbx+/0K5JPXmZyc5OLFi7S2tiowTMpxHMbHx+nt7VXQ5KpVq3j00UeVw50EsyQU\\nJWNWL1y4wEc+8hHlCCjjYWU7GxsbaWpqYvny5dx///0KwJIgVz6fL3Mt846DXCPj4+MMDAwoFzzZ\\nZuneZts2K1asUFHUMuJaHmdZloLIZFSqaZrE43EFfxmGoWoSCAQoFosqIvzIkSM4jsPGjRuZnJzE\\nNE2WLFnCb//2b3P48GGOHDlCT08Pvb29ygnRtm3ljBgIBLAsC7/fz8MPP3zb9TfTvHMchx07dnDw\\n4EGy2SzZbNZNdDvK2rVrefjhh5k/fz7Lli3j8uXLKlK9UCgoiA4EMCnXi4TnvLHco6OjCp6NRCIz\\nQsAAN27cQNd1WlpaWLp06dvuhxxX6TrnBWnl+1leJ1RvZLM8X86ZkZER5eQYjUZJp9PKAU/eQ/ZT\\nRpDL9TY2NkYoFKKqqorh4WEikYh6HfzOd76D4zisW7eORCLB2bNn+fGPf8zBgwcJhUJs3bpVjYHP\\n51PAq3fPtSyLfD6v5nJbWxtz5szh0qVLGIZBOp3ma1/7GnV1dWzZsoVNmzZRW1uLaZpcunSJgwcP\\ncv78eYrFIlVVVTz++OP09fUxODjIgQMH6Onpwe/3k81maWtr4z/8h/9AY2PjXSE9Wf9PfvKT/MEf\\n/AHDw8P8+Mc/5j//5/98x3OuXr3Kl770JTKZDKtXr2bz5s1va8wrquh2qgB+Ff1/qVwuB44jAIO3\\nqWAohNmymWL/EZxMDwwdA39UOGmFm10Xt6KANybdWEu7gGH4eOih7ezateu217Zte8bY26nugkak\\nnmDDcooTXaR729l/4BC2ZWLpYaJtIlK2WCjgpG6IExKLPTGCnnhOlf0o4jMdPL88azokFuGMnSE3\\nfImCXoNlWzhaFXa+SD6bB83AvnWa3MAJNN0QYEwx4zItU2qqaSL+Mtkp/l2/DgLVMNUhSv4erOkl\\ngC1YC7WrYVjY+WIVBGRVu1rUvKw+Lkgox2D0pPg6OkdASqrvrqJzBGBTEJ+4uJ2rowYEgwHMfC+2\\npuEkFrlQjPfWLkzlWDhmodR+TUfTfTjowp1s7LRwZismp8T8OmAV3U8wZd3TNRcQ87jOpbrQgvVQ\\ndY/bX1vE8jrCiU5YSvspBBpQcJGEOpt3olkZSHbiJK+LNvoClMWiyqhjN1ZawYzjF9yJWiz1OTtQ\\nivmVsJWE4VR07RQ5lnALC7eI88y0iB2OzfNMAO+ccJ0ga9eIcTezbsRm9A5xspnS3MmNQCAhIrVB\\ntM3nc2GvCI4l9gHTMkHz4/iiEJ8PwUaxtm1TgJjJTtFWqyhii8erxdoKN4naOaZ7/yuibk5RQGhz\\nHy/BeHIyCYLQbU9egGy5Iej7kTsWHqhKQXKmcLWULpRS/pgAH7O3IFjnrjUvZIa4fvKKgDHN1NQB\\nEdcrTsDYW+Ie9RtcoM7niWN2VRhz7c58kOoqAbWBGjDzbjyxu99omtsP1yEyeVV8Pzq31EZNE+MY\\nXyzmU/qGqLOZEWsEB83dTxzN54KpPgF9vg3n1TK4TnPXYPEE2EWc4iRWcZJ0ugdfME6wfil6IA7Z\\nUcgNoYXqcKy8+gPOcRyxD3ocCjU0HBXLLR0NbRG/7I3ynapUpwuvLrhLBzzujWo8TdAjboy3e4zq\\nq+ve551DEkBU8GFQzO3CuIhbDtaLttue9joOynFxhjZpqRtgF7FyY0x2/JN6DTCiTeQGThALGuza\\ntavMjTaVSuPgE3123V0dM4/c5zQJRXr2NDQBSVqWjROdj1Y448ZCZzD7D2EOR3FiC4SzpBEBbLTs\\ngHDClOsQXayP3le8VUULxNCsLIva5vO5z33uJwLudu3axeXLl2k/coz0tVcJzdo84+u1KKVNceIm\\nud4jhP0OmzZt/IkePlRUUUUVVVRRRRVVVFFFFVVUUUUVVfSz00/ioKNpGlVVVfyn//Sf+Id/+AeO\\nHj3KP//zP/Pqq6+ybt06WlpaMAyDiYkJ3njjDcbHx8nlchSLRRobG/nN3/zNO0YB27bNX/7lX3L5\\n8mXy+fyMYJ+UBI9yuRyTk5NomsaaNWu45557SKXEM+CrV69SLBbLAKipbkzer6cCVhKEAuE+Z9u2\\nip+0LIvTp0/T0dGhzvH5fOTz+Wk19UIpMpLx2rVr0wA5edxUN0FN0xgeHmZycpKmpiYCgQCNjY3E\\n43EGBgbo6+tTYIumaTQ0NNDa2kpVVRXhcJgNGzbw6KOPMjk5qdrp1caNG2lvbyebzdLf339bR0YJ\\nXTmOo+Afr7wgj2maqu4SIpOgmnRBlPG6v/M7v0NLS0tZlLG3Nn6/nw0bNtDQ0MDnP/952tvbmTdv\\nHg8++KByR5QKBAJEIhGy2SyzZs1SsblybOfPn8/atWv5wAc+wKc+9SnlUChhMjnuo6Ojyi2rpqYG\\nn8+nAEBd1xVQKWNhU6kU4+PjZWMn55Q8VoJEsh65XE7FQTc2NiqHsqmS52UyGaqqqlREdTwep62t\\njWw2q6Av6baoaZqChyTE440hDgaDyk0wHo8rYG18fFwBWhJOldGnkUiERCKh+iSdLGOxmIIWU6lU\\n2ZpbtWoVH/7wh2dcxxJgunXrlgLYYrEYixYtYsmSJYRCIfL5PO3t7XR3dzMyMsL8+fMJhUKkUilq\\naoThxuLFi7l58yYDAwPU1NRgmqaaS/KZdy6X4/Lly8p5DQTwK2E12eYbN27Q1dXF4sWLqa+vn+bY\\naBiGivDVNI3OTvGe74IFCxSMJecIlOJ5Lcti//79ZLNZ6uvrlWNjIpHA5/MxZ84cPvCBD/Ce97yH\\nkydP0tHRwf79+1WErWEYCvYDqK2tvWtanldyLi5cuJA5c+aQTqfVXE2n0xw4cICDBw/S1tam3sc/\\nfvw4TzzxhIruvd1+Jdc7iLV65MgRisUiDzzwgIpJn0k3b97E7/ezadOmu7Zf0zTi8TggnB7z+TyB\\nQKBsnGU7NE0r27+8+750q5s3bx6XLl2iq6uLrq4u5s2bRyAQIJvNKghaOuV5+yr15ptvcv78eUzT\\n5Nlnn1Xj3draSnV1NefPn8cwDLZu3crv//7vc/PmTbVugsEg999/v9pHZLx6NptVc1K6YMr2a5qG\\naZrcd999XLlyRa33VCpFOp1mYGCA7373u9NgxFwuh2EYZLNZvva1r5X1Qe5dfr+fX/qlX/qJE5fq\\n6ur4jd/4DZ555hk6Ojp4+umn2bhxIzt37mTBggWqzSdOnGDfvn10dHQAsHz5cj7+8Y/f8XeBiip6\\nO6oAfhX9f6lQKCRcmqzbQQzTpQHRWJx06xaKt96C8fM4+aKI+iuDkxzhcIRDMBhk27YH+dVf/dU7\\nAgTikwLTY29nbIemE6iejx5MkLzyfTDzBOrnYulRCrmsYOysLA7a9EhV1ZMpX09J1STcDKOnMbPj\\nOIWC+LktgTHAsbBS/QI60XwCirFyAu6zcoDnU2+OLZzJzIwLg82Z0gZP3WZSdBaMuzCY5hOQ0tBR\\nca1EG4SaBYjkuC5oky6M5RQFGFf/gAJ9ytz1NF04+41Oksvl7urqKB0KtUhzCboBsE0XSJHAjaPu\\np2AVdBGTDGiFMRzNL0CqYG3pHLdNDg6OLf+4FqCOEyq53jkTlyAyV7TBTVj2Ge6nHIIBMukMjm6g\\nabpythIyRbxvpAWtmMTJu1G0vmCpL9I5Ln1D/Du+SNRpKkgGkLpWfoyEA8WFXNjLBY0kfGTLCFFb\\nuL6NnxeOd9E5twe2dMN1yfSJr/0xAX/dLk7WHxeuaJNXRY0SS8DnL8XtOraYR7EFkB8V4JgvAnWr\\n0SKtYt1AySktWCdgvkwPjJwUznyFMbHu1TxwryvBtVAdND1UDvd55ViiXpk+FJTlrxLwU7BBnGcV\\nRY2TnWAmofdV18mvQQBu4WbhfpjuFvBc1b0loFOOgWOJtZLuFt+S8b4SSC5mIH8LUjcFEDXyllir\\ntaumj4dju5CeJmK/x8+ImoZcQEzGEzPDnpq6IcbMsWDsPKS7BOgXagLDjZeNzRPOiPkR4ZAqXRHl\\n2pAR2FrABSu9tXe/lO6Bt4vtDTWKuugBaN0N2Vs4yatY+STZ3uP4Ig0Cy5u8AtX3gubDsU0BhGta\\n+XUdR8TYOh7QLnVNzHEjOv14r4opUd9gQ8nh8LZynQCNOOTHxRoMVJd+LIHKMvfAKXAfmuugqIn1\\nE1so5sTkFTFvNF2cZxddqNQGF/ouAxrTN2DyCk5+1F3ztoj8BcgMUxi5hK7BrIVLuHTpEseOvaHc\\naDEAM48WnY3jC3lgYPF66dhF5IYm+WZHdkHThAvf+AV80Tr8idkURi5hFybQxs7goIteunC4Bujh\\naoxYC7aZxymmcKwims+PHogrEDEaCbN79+6f2E1P13V+9Vd/FU3TOHLkGNmeA+T6wwTq7hExvbof\\nxy5ipvpETaws0aDBpk0b+djHPlZx76uooooqqqiiiiqqqKKKKqqooooq+jeU4zh0dHRw+vRpBTtF\\nIhEVNZhOp1X85N1kGAbV1dV85CMfwbIsDh48SKFQoL29vQz4kDGOwWCQ2bNn8xu/8Rs0Nzff8dpn\\nz57l9OnT5PN5qqqq3hYAIB3bLMvi4sWLjI6OEggECAaDZDIZBdjcTTNBfhKwAFTErmyTdK0KBALM\\nnj2bYDBIZ2en+p508pKSMZdVVVUUCgUGBgamQXxQApKmPj/TdZ2+vj6qq8VzUb/fj8/nY+HChcyb\\nN085aEkYSEJG8rxsNqvuI6FFqbq6OmKxGMVisQyGu129vSCN93u3k4THJFzmOA6pVIpEIsHHPvYx\\nWltb1XEgwCsJCHqhuIULF/KRj3yEv/7rv2bfvn2sX79eQUrSiU+OT6FQUO5bxWJRRXCOjIxQV1dH\\nTU0N8XicVCpFNpslEokwODioXP1u3LiBaZpEo1EFC8XjcYrFIuFwWEGkoVAI27bp6+srcwuzLOu2\\nc0+Cgpqm0dfXpwC/ixcvTnOMlJJ9k+BeLpcjGo2WRd3KsUgmkySTSerq6ggGgypqVQJ+EiqS61Ou\\n1xs3bijnMu/YynpKIFFGUsv+TkxMqGOls1swGGTr1q1s3LhxRuB1aGiI4eFh8vm8chlbuHAhn/rU\\np5g1axaWZZFMJjl+/LgCMCWIdujQIYLBIMuWLWPjxo2sXbuW119/neHhYcbHx6ftG7lcjgsXLlAo\\nFBQcGQ6H1RqTawdQ80HCgHPmzFFtlpJj3dTUxPDwMKZp8sgjjyiHUC8YJuvS1dXFd77zHeUQ9/Wv\\nf12l5TzyyCPcc889Kg64paWFb33rW2qNFYtF5WpoWRY+n4/GxsbbrtGpYzdVzc3NXL58mQ9/+MM8\\n8sgj3Lp1i/3793Po0CE6Ozvp7u6mqamJgYEBDh06pAA8uc6kQ6L3+rZdMjxpb28nn8+zbNmyabXz\\n1kTCkE1NTRQKhWn70tTjQ6EQbW1tdHZ2cvToUR588EH1c/kaAJRFRnvf3ykUChw7dgxN01i9ejWZ\\nTIY9e/awb98+PvrRj6r+FQoFBXHLfVNe4/r16/zP//k/6e7uxjAMotGoeq1KpVJ0dXVx+fJlTNNk\\n06ZN/O3f/i3j4+NUVVWxefNmvv/97xOLxaiqqlL7ptfhUbpVzjSefr+fmpoagsEg69ev553vfCft\\n7e289tprTExMkMlkCAaDNDc3U1VVxaZNm3jggQc4ffo0Fy9eVFBnLBZj5cqVnD59mpMnT9Lc3Mx9\\n991329rfSXPmzOF3f/d3ee655zh79iyHDh3i0KFDZbWUCgQC7Ny5kyeeeGJapHFFFf00qsyiiv6f\\nlrR6PnDgAIODg8rWfGhoCA2LYrIPI1L/tq+naRCNRUlPxilO+jF0GwcLx7KFCx4amk8nFAkxZ/Zs\\ndu/ezcMPP3zHN/Rt22bPnj1k8+a02Ns7yTESwslu6BhWZhAzlxOmR76AxyHrNg6FGsJ1TsIfoNov\\nXqxLcY6a7hfQk+k6Q/njoPtF3CsOWrhJgDqjp3CwBbQUqBbtkErfFP9PuDCYh81RhZ3qSKXa6sJY\\n42cFPOgLCBcqKwtj54BzU85zRMSvrQvHv+E3RBSopjE1DtIJiojJUCh0V1dHZ4aaOlahVGsJteFx\\nIPTGWsoq2xYEqwTMVLqQe20dTTdwTBHN6jgOmi6cwojOwTGiaGYavTiMHm1G18Wnhwy/oXpv2RZY\\npls6f8mVLOOB8/xxyI0KV7eJiwKatE0B+Rgx4e4FpWhWCQRJkEzTBaQkj1Fwn+bGg055+KAB+ATI\\nJF0Wg/Xi2sW0+LceoOT65j3Xjb7VNOF4V71JtDPZKdrt2GJM/DEBDdomjLwhgKfoXOEOp3l+mXcs\\nFxTNiXsZEWjcBoGECwm5a8CxS06NvpCYg/44DBxw3Tld9zGvM6Y/IeoTmz8DIOeJyC26AGphQrQz\\nvhgaNqIc+yYvl9wIfcESRGZmwLwhAEw9KGpmFcTPU9emxL06JbhPRkGraGPZPz+EaqB6pRttfFwc\\n71gCQPUq0yP6bcREXTVdHO+Onaa5c1u2VcJlhQkBQ0p4zJwU/2V6xbWq7hEQJjake4RDouXWVkO4\\nvsn5JCE/x3HnhBfYfRuftpWAr+YCt8E6MV6ZXpzh45jpQXEZKyNcLsMS9hWwoebzCSjckWtaL+1h\\nmR7hMAkCpnPs0hyY+sekhPF8AXEdOSdLnQGPwyo4AkaWUF5iiedQF+T07CHTaqHgTEqApxET6yfd\\nA7G57v0FBKv5AjhWAd2nY/gMCvkszvCbIp4eXBh1oYCvNV048eVuoaWu45gZrl69ypXOa9h6mLDr\\nRpu89B0xV/UAmu7GCut+sa+68K2u40YnyE+9aeJ1RPeJsZcW8q3rCbWso5jsIX/rFGayT+0/Rnw2\\nweZV+OOzZ/gUbclNLxKATZs2/NRuen6/n0984hMsWbKEPXv20Nc/QH7kNNnBU2K8NQ2fTyPq99E6\\ndzbveMc77vq7QEUVVVRRRRVVVFFFFVVUUUUVVVRRRf96yufzHDx4kL1796rIR69rnYRRvvzlL/OJ\\nT3yCWCz2tq4rwYauri4FjEmgSV47GAwSi8XYunUr7373u5Xb1p20b98+CoUCoVDobcN9Mn3EMAwV\\nMbthwwZCoVBZf6Vu59wnHaAk3DbV7c/rvObz+aiurlbOVl1dXWzevJlf/uVf5gtf+AJXrlyhtraW\\n/v7+MnCypqYGx3EYHBycFpUr7yPvNdVBzzAMBgcHWbRokXKbk3Gd0nHPC7XI9pqmyc2bN3nuuef4\\nhV/4BXWcV4VCwU1GCtz22Z0cXznG8ripcN/UqGPv1964WMdxaGlpUWCJHEsQMFswGFSOg7ZtK2hn\\nw4YNfPvb3+bWrVv09PRw7733TosTltdPpVLKoe/ee++lp6eHgwcPsmSJeLZ83333cejQIb75zW8y\\nPj5eBqNI4CYcDqs+1dTUMDExQTgcVnGu0tFQ3kvCj17gaapkHaUDl1wvEvAJBoNlbo4gnsUmEgk0\\nTSMajaqIzpGREdU+OUaxWIzm5mblnjY5OanmtbeNjuMoKO3GjRtqTsr4XOls543SdRyHW7du0dLS\\ngq7rKp5Y1i6RSNDc3EwgEKC/v5+XX36Z+vp67rvvPpqbm7lw4QLt7e309fWpcZIx0/l8ntOnT5NI\\nJOjt7eUrX/kK4+PjZLNZ5Y5nmia6rhMKhXjzzTc5efKkarPP51NubF5Ht0uXLqk5XldXp34mawYo\\nMDYUCpFOpxkdHaWrq4tQKMTs2bPV8SMjIySTSQzDYOnSpZw9e5axsTFSqRThcJhwOKxqK9vb0dHB\\nc889RyqVYvbs2SxbtoyJiQk6Ojo4efIkp06dYvXq1WzatIn9+/dz6tQpUqkUuq4TCAQIh8PU1dUR\\nCAQYHh5mdHQUn8/HQxubMQAAIABJREFU5OSkcm30rrc7wbayfj6fTzkvtra28qEPfYj3ve99PP/8\\n8xw6dIje3l4KhQIvv/wyixcvZvbs2Wp/8I6ZnKPy/i+++CJjY8KV5MaNG3eEDSWsqOu6cuS7k6Os\\njBi+evUqe/fuZcuWLer+st4zwcny3sePHyeTybBgwQIWLFhAMBhkz549HD58mG3bttHW1lZ2jhxL\\nub8eO3aM559/HsuyaGpqYvPmzWzfvp2qqiq1ds+ePcvhw4e5fPkyx44dIxQKsXTpUp5++ml0XecH\\nP/iBAsdl3eTem8vlVIy2hMQltC0hV7mHVldXs2jRIhYtWsT73/9+XnrpJb73ve+RTqepr6/nqaee\\nUq+5u3fvZvfu3apvg4ODfOMb3+DcuXOEw2Geeuqpf5GbXl1dHZ/5zGcYGBjgtddeo729nWQyqfaE\\nWbNmsWPHDjZv3kwkEvmp71NRRVP1fxzwu3jxIm+++Sbd3d2Mj48ri+JoNMqf//mf/59uXkX/TmXb\\ndlk8YL5oYVmOeuNdw8EsFCj2HUXTfQTrl93xxbNMjo09cZVEPML7n3gfPT09DA4Oks1mCYfDNDY2\\nsm3bNpYvX/623sw/d+4c/QO3sH0R/FVz33YfC4UCTqQVzR/DyichPeA6c/k8cY5eNy0PdKb5mWYv\\n5eA6UpXO03xB4XDmAFlhvUy4GRo3Q7oXho/jZAfRfEFofkg4byWvQ3yRgKUk5Fd07bVnchTUcIEd\\nGXU5ZVvSdAi5kbMaMOtR4WCVGRDRo1MhLwmwFMah/8cCYAnUuLG2HtmW6xCmqV9eva6ODmAWhZ21\\nZVtYjnCic+wCmgOOLeE+L9TmApNyLmmuC5kE/ST0JF3v5J3cvmvS9c6NsBTQinucrqMlFsHYGYx8\\nL9HmxdNrKRueGxTNCsQJ1C6mOH6j5Eom22sXIHnZE8Pqtjk/JgArX6DURi8QlOkRgJeElCRgpNwA\\n77KONB/4BNyD47ixsY5oz0xwIEBuGAVJDrULh7TofFFHI4qKyB15S0BoINrYsHEG8MuFw7I94n61\\na0TUr5WnbE1I4FHOO80Q87dhHQy2i/HxV4l55tjCTQ8EwJe8Kq7tTwg4sjgpal2cEpErI3kzPdD3\\nquhPbgQyMzjuoQnANT8k1piZdvvq1m7kpBijQEIcO3mlBPe1PCzWgCqBU4pblm3wREGLWOJrUC0+\\nZUR+TMB84EasApFWEfVqpgS4GG1Fc38RFuCr61A4dkrAkJFWqLlf1KowIq5vpmDkTQE0WkURFQxi\\nThpRj6OhX4zH0CEBidlFF/jyxAjf8ZOo7s9M10bd8Dys03Sc2By0QBz69ipwmZG3oPFBsfdIaE7T\\n0HwGjumuZ8MQtchPCJAY0IwIjpUtgXMzSZP7s3QnLIJPwq3aFADb3VNCzW6stQvlhRvFuVPnbRk9\\n7Z6b6RZwqD/mRptrYj8ceUvEn/vjwh1Syo3stS0bf8iPdesIVqYPR/cLd8dwi6ibdNzzhfFF6gg0\\n3481+AaF4QtghPC3PIS/ulX0aqbXJA00nwG6jmPlhQGl434iGPH6o/YgW74miYd7mqYRSMwhkJiD\\nmRkl1fkKFNM42UFyvUex/w3c9HRdV+De+fPn1QcJftrfBSqqqKKKKqqooooqqqiiiiqqqKKKKvrX\\n0fj4OF/84hfp7OzENE18Ph+tra2Ew2E0TSOXy9Hf3086nebIkSPcunWLz3zmM7S0zJzuM1Xnz59n\\nfHycBQsWsHv3bi5cuKAiRuPxOPfddx+bNm26rSPZVA0NDXHq1CmKxeLbBg29rnoyhvTMmTNs2bJF\\nQVNTQTMJSZQnd5R+7o1U9UJs8utAIIDP52PWrFnU19czMjLC1atXOXz4MIZh8LGPfYw//MM/pKWl\\nhZ6eHvWcDFDQnnSFmioJ5c3kZCUhpkKhQDgcLnPok5GkwWBwGsAn3bauXr1KR0cHa9euFe+ruX2S\\noI4EuWQErGVZGIZBoVBQbozeayYSCQYHB9/WOHnPi8fjqs47duwoc0uUkJaE+WQsqXTjkzXcvn07\\n3/3udzl27NiMzlNyXE+cOAHAggUL2LFjBz/84Q85cuQIH/zgBwEBumQyGbq7uwkEAtTU1CgwdGBg\\nQLncyehMCXBZlkVVVVVZTLGcM3eD+7zyRtlKJz3pdOj3+8uAp6qqKoLBoII//X4/oVBIuX9J5zwZ\\nuykjRpPJ5IztkevMcRxGRkbI5XJUVYnn497xLhaL6ppShUJBuR6uWrWKhQsX8qMf/Ug58vX09JRF\\nm16+fJkjR45gWZaad36/n6amJnw+H4VCgYmJCUZHR3nxxRf5x3/8R2zbJpvNquhSCT45jkM2m8U0\\nTRKJBDU1NcIAxAUSJfw2e/Zs5RSYzWYxDEPBfbJd3rHyAk7RaBTbthkfH6erq0vBjBMTE1y4cAGA\\nuXPnKjhufHycF154QYFjPp+PkZER3nrrLQ4dOsTNm8L8ZcOGDXz0ox9VkNzY2BhHjx5VroT79+9X\\ncygajdLQ0MCWLVvYtGkT8XicSCTCxYsXeeaZZ5Qbm3TdjMVid4Xj5NilUikFaXsVDAb5lV/5FXw+\\nHz/4wQ8oFAqMjIzw5S9/maefflo5N8rxKxQKCsh2HIeXXnqJvXv3YhgG4XCYY8eO8a53veu2rykS\\nTJSwbCaTUQCYFwzMZDIcPnyYc+fOMTk5STab5dq1a+zbt49169YpiNXb16nufRMTE7z00ksA7Ny5\\nExBxutu3b2f//v188Ytf5Nd//ddpamoqu78Eby9evMg//MM/YFkWO3bs4D3veY/ap3I5YVYj44a3\\nb9/O3/3d3/HDH/6Q2bNnK3jetm0F8vX396u6yHvJ1wkZay+vGY1G1TE3btwAUE6u8rwPfvCDJBIJ\\nvvnNb3Lq1Ck+/elPs2HDBrZs2UJdXZ0Cy/fv38+ZM2cAiMViZeP6L1VzczMf+tCH+NCHPqT27VAo\\nVHlfqKKfmf6PAH7Dw8N8/etf51vf+lbZxiPlOA6JRGKGM0v6/Oc/r0hogMcee4zNmzf/q7e1on9/\\nKhaLPPvssyLy1o0HDNTdQyDWgubz41hFzFQ/xcELUEyR7T2KlRkiMufB8gjX211/4ia6laV17mwe\\ne+yxf/EGfeDAAfJFi0DdPWi3iymdQZbtwl+JRTB6Bid1E026wvk9cY7StU03wLI8YNtUyWhLDXJu\\nnKMRczkRjwNUrE1AF7G54j79e3FS3WjBBrRAAqeYElG5kVkeWO0ujoLSEUseP1VyXIxYCVSKtECo\\nVrRNxqnKbEccAQG6sbYkr0FiiXLGE/e00RzxiY1wOExDQwO+y52YqX4sX9z9Rd4WJXEQMa6MQ+YW\\njr+qBPdJCGUmwEh+SzegMIqCbux86Rjb23fX4t7nF65YtulCb+6x4WYYO4NdSM5cRxAuiqnraDgE\\nahdjxFrRg3EBgaa6INODk+oS1zWiYv6EW1zgzhTg5MhbLmmTFcfofqhaAiMnBOhlxEpzyMwLhzvd\\nz13hPiXPcVbeBW9xHdo0N/pZxvtapejT6FwBOJlpERGLNn2++OPC4Sy+2AP3eR38HMj2lvoWaRXX\\ncKHH0oMNF7wsA041iM4D44xoQ90a4SSYvAapTg8s6aowLn4uY4H9CRH3G2p0r18U8yJ5DQpJUVtN\\nB194uuMebn2CNQIEzPYLZzwrJ+aJmYZbB6FutYDBJi+Lc+rXT4H7rFJc8dSxCNZ41sxVUcdsr4DX\\n7KKoVWyhe5oOUddZc+QtsQ6ks2dmAFLXhcsmlGBL6RwYrBaOiNl+ASZKgNMTl0y4tRT9q7v7RqhR\\nQIOFURFvLaOOp9Z9JsmocJxSNLbHgJFgjYA3+/eL65oZGDzkGQcJ7fpKAK5VFLDdyAmxpmMLhDPl\\n6Ekxlv646Gt5Q9zI63HIDQmwzrFcdzsJuLoNU66P1wQcamXFOIwcF/BhoEocp1wZnbLbAC6cKeBD\\nEveU+pFYLOqR7ob+vSLKPFiv1pOmGzh2kdzQeeykC4o2PgiBBLpe+hSs10UUxyGZGQQ9gFO7mqIW\\noZAvEAwG0IOJ6U6iUpqOpgvXwEKxAI7r3Odd29kBQEDLU2VEaonM2UKuaz8Bw8EwChT+Dd30dF1n\\n5cqVrFy58l/lehVVVFFFFVVUUUUVVVRRRRVVVFFFFf30SqVS/Mmf/ImKEVy6dCn19fXTngXNnz+f\\nnp4euru76erq4o//+I/57//9vyvI4XbKZDK8+OKLAOzatYtHHnmERx555F/U5osXL1IsFlWs6tuR\\nF8STbmXj4+Mqcri1tVU57slj/X7/jM5+MzlMSTjR6/Ll8/kIhULU1taiaRr19fUEg0H14dd7772X\\ntrY2stks9957LxcvXiyLjr2dJKwnHZ2myusuJ9s61S3PNM1pcKB08ysUCrz11lusWLGi7DqO4zA0\\nNEQ6nVaOi+3t7Sqq1Ns+6VbnOA5NTU1cu3btbcNsUrNmzVLX8cJx8l5eKDMcDpNMJhX8J+fFsmXL\\n+O53v3tbwFBCjcePH8dxHHbu3ElzczPLly/n/PnzfP3rX1fzvqqqinvvvZfVq1cza1YpHejEiRO8\\n/PLLyhUvm80SCoVobW3l5s2bZWMggSevw+Ht2jV1nnmdIb31KBQKZRHRbW1tCihqaWmhpqaG/v5+\\nhoeH1b2lJJTpPV+21etcJ+OFR0ZGVPsikYiqt9cZbSqom0wmicfj9Pf3s3TpUgX3WpZFdXU19fX1\\n+P1+HMdhYmKCgYEBte7q6urYsWOHcm6TroQjIyOcOXOG7u5uTNMklUopeMpbO9mPiYkJ0uk0zc3N\\nRKNRFUE8NDREJpOhvr6ewcFBxVt43SMlbCglIWg5x6LRqLr/4OCgcjl0HIfm5mYV3dvY2EhnZyej\\no6N89rOfVeMoI6Z9Ph/RaJTt27fz2GOPEY1GyeVyZLNZampqeNe73sWaNWv48pe/TG9vL5ZlkUgk\\nWL9+PR/60IeIxWIqttUwDNra2ggGg3R1damYa8uySKVSaozkmvcCynJejI2N0dHRgWEYzJ8/f8Y5\\n+v73v5/vfe97BINBampqGBoa4rOf/Szr169n586dLF68mEAgQKFQYHx8nNOnT7Nv3z66urrI5XKs\\nXbuW3t5ehoaG+K3f+i0ef/xxHnnkEQXvyfYsXryYEydOcPLkSR544AGKxSLpdFoBzENDQ7z88ssc\\nPXq0bP+Tcc3PP/88juPwwAMPqEhYCc1695fx8XG+8IUvMDIywoIFC9i4caO61pNPPsnY2Bhnzpzh\\nT/7kTxQUt3ixMJeRc/i5556jUCjw8MMP8/M///NlLqsSHJdwtWVZdHR0EA6Hee9736vmpWEYbNiw\\ngYMHD/Laa6/xi7/4i9PqHwqFyoBdL9w3OTnJ8ePChGTDhg3Tzn3Xu97FtWvXOHz4sNr/5PFeGYbB\\n+vXrefzxx6mvr+fChQucPHlSwcDRaJR77rmHtWvXTnOSfbuSjpgVVfSz1L/5DPubv/kbvvSlL5Xl\\nuv80CofD/O3f/q1a3AMDAxXAryJs2+bZZ5+l/cgxskWNkBsPOBWcMyL1kFhEdrgTZ/QkhfHrAETm\\nbr8j6W9lR8n1HiEaNHjHO97xrwIIDA4OYlkOgdjb+3SYklw+4WbgjACfZD/jCyHlxjnKSNWpznBl\\n8Zae6zk2TAqYz4m7ME+mx3WAiov7yWTfYA3Uu45mk5cFQDJyQoBHRgwnWCNgNQmD2eW/VIubeN3E\\nXMc0bydts+Tu5wsLwEcCLzL20x8X0FO4ufz0yGzX9SotzpviIOhkB3Fsi0KhwIMPPsjRo8dJDl3E\\nMWbhuFG7moTNEktERGXyqgB5NFwgZ6b5MtUd0RagFwjIMd0l4pUp9V3zgmQeyMexTeFyBQp0ki6D\\nM0nP9GObaTQjIBysNI1g/VIyPcdg4ACO7hPxrnVrXXcyX7nzXqAW8qOQ6RJuccEaYZ4XXyyApHQ3\\nDOwTbm84kL8ljpnJeU/VQpv+dW7I/bcLXoWbKQGQnv6le0pOdcE6aHpQAGFDh8UcMCLCSc8fE/CZ\\ndCibWn9ve9I3xJfxBaV2u65l4KDrGrbttmMqdKpJqPa0iMC1C8Lt0BcR1wu3inraRdcJr7PkKhiq\\nE+c6tmiH5hPQXNUy4aQ2eRn0EDRtcyFAj+yie54mgMp4mwAGB/a7cbW6gMyGj4s5ZufFzyOzRI0d\\ne0pctLvo7QIqXlrTRXuMiHAd7P5OaSwirWLOaFoJcgs3wriGlhuGvh+Jtaz6pos5El8g1qYvKL5v\\n5sT/dQOicwQs2r9X3MeIuBBZtVtD+YeLOwaxBSV3wcS9wg3OsQTkqMbcdc30OmQ6jgBJU2KfJ7aw\\nBJWqaeEAPnBMEVeu+QSsOHjIdRNcDJFm0P1oVg4n3edCjBlxbdep00ldR8PGKSah+2WoWSkikL3w\\neKxNzOvkVQHayXbKsdB0AYxOuA6lZW10xF586yDUrYLoXDQjJFwTHdPd2919PtPtwpmmqLW6F6Je\\nDZtEvdLdAur0RSDR5sLZPiiksYZPg23hNDyAFqwiEAi4ny5jmoqpPux8EowoWmw+jm0Ke/lgYLqT\\n6FQwV64/+Xuht17ua5IGBGpndi71V80j54/i9xfflrOubducOXNGue7lcjlCoZA6bsWKFZVPV1VU\\nUUUVVVRRRRVVVFFFFVVUUUUV/TuT4zj85V/+Jd3d3QSDQVatWjUjMAYCTGhqaiISidDZ2cng4CBf\\n/OIX+aM/+qPbvjmfTqf50pe+RE9PD01NTWzfvn3aMbZtc/36dcbHxykWi4TDYebOnXvHmN5UKqUc\\n3H5SeaNppcMXwKpVq9i7d2+ZI5KMc7Usa0bgyntN6XYoz5VOYU1NTWXvocXjcebPn8+NGzfYu3cv\\nn/zkJ/nDP/xDTNNE0zS6uroIBoPqPeGpsJSE52Tk6dRncrZtq2vJsczlcmXHBYNBdZwEwaAE05im\\nSVdXFyMjI8o5Sh5/4sQJ8vk8VVVVtLW1EYvFlDGNYRjTnAFTqRSmadLc3KyiVmXNvJoalxkKhcoi\\nUr/73e8qN7x77rlHRVVKSdhTQmbS4Ur+/3ZOiJqmceDAAZLJJK2trcydK1JmnnjiCTo6Oti7dy9+\\nv5/m5maeeOIJVUcZEwoCqAuFQmSzWTVP5PPTpqYm+vv7lauibdvU19czNDQ0Y3tmqo1UQ0ODmrtV\\nVVXKnU6ChZqmsXDhQuXg5/f7GR0dZdmyZTQ2NnLt2jWuX7+unNy84NrUe3pdGCUIKgFKL8gjXcbk\\nOpEQnhcelbG5fX19vPDCC1iWxaxZs1SUrHQZ9Pl8hMNh6uvrmZiYoLu7m8nJSY4ePcrq1avVnJfj\\ncfbsWQXqDg8PE41Gy0CqTCaj1q6MjJVuaLFYjJaWFvL5PLlcTsUOS9hIAobe+vh8vrL4afk9Oc8m\\nJyc5d+6cakNra6uKcpWujjU1NRSLRYLBIPl8nlRKvJ+xdOlSHn30UZYuXYrP51PwqhfkDYfDBAIB\\nPvnJT/K7v/u7BAIBHnjgAT784Q8TiUTUPizXdCwWY9OmTRw8eJD9+/fz+OOPqxhZCVlKyRhv6cSZ\\ny+U4evQolmWxZs0a5ewmlc/nOXr0qHJQlO55sk+vv/467e3t1NbWEo/HyeVyyv1RxpX7fD4uXbqE\\nruvK/e6FF17gn//5n9m+fTvvfve7FUC+detWXnzxRc6dO8fw8DC1tbXKwbK7u5tnn31W1XLZsmU8\\n+OCD1NfXA/D973+f9vZ2/v7v/54zZ86wbds21qxZo2KZi8UimUyG119/nX379jE5OUlzczNPP/10\\n2Vw3DINf+7Vf4xvf+Ab79u1jz5497N+/nyVLltDQ0ADAlStX6O/vZ/7/Zu/Mg+O47jv/6Z6eewaD\\n+yZAgDfBQ5RIiqQkkhJFH/JVYTku24nsP7Q+5HUcO4qTVBxX4mRTSSpbcdV6y7aiJGs7WkcuWbbW\\nsmxZPETxJkiJpHgTBMEDNzA4557p7v3j9XvTA4I6EtubbOZbJRHA9PGO33szA3zm+124kA9+8IOu\\nvw/Nv6Zlf+rr67nrrrsUcGsYBjt27ODgwYMcPHiQXbt23fZcIOtC7jvuexw4cADTNFmzZg3RaJRE\\nIlFSyz6fj3e/+92cPHmSQCDAjh07uHz5MslkUsGCd911Fw888AB+v1+NzfDw8G19eOWVV4hGo2zd\\nupWdO3eWOAaWVda/F/3aAL9sNssXv/hF9u/ff8cnWKm3A/791m/9Fk899ZR6UXj8+HFGRkbe8tM1\\nZf3/rT179gjnvrxGuPM9eILVdzzWHwhiVnWS80awRw6Sm+zFE6onULfytmNt2yI/fYPMwFGCXpvN\\nmzexY8eOkmMsy+LcuXPvGBjIZDJg2yp68G1L8SyGwMmkoxxAsAnNG8bOJ11RkTIu1om49LjaYrsu\\n6sQ5at4IdqCxxAFKq1iGPXfdhheAEcLOJ9C8UbTIAuEQN3pQQGzRhQK+yk+7HAUdkMPtJqZ5SqEO\\ncIAkuwiD5SZh5NXbxyI/LSDEue5tmiZAqMk3RL/CbUWY0S5Asg/bytPXd50DBw6gaTZ2bhY7NYgW\\n7SxtT6hJjEk+IVzNQgtEm5XFn2tS5iZmJm4JyMsbBcsS7l03nxdgXLhdwFNzo4l1w4kizYPuQD9z\\nYirnykxPYI2/hmYXsPEhgTpfzQqy8cuYyREBkDVuF/Ng5RxAKlsajxvtFOOVuCHGEufNT/U6cXxq\\nUMB/VkHExcZWzNOaeRzi1EMuR0jNI4DHYINwYrNyxXNz0wIWtfKADskbULlCOLDVrIexowJ2a955\\nOzDklmWWfi8jo/11rnHX1JjbNgoCUmOjS+gSBxS1IT8rartmfTHKFURbPQEB80UXibEaPyFAKtuE\\nmg1OlLYrHjkzLr6vWSfqxA3h2ibFGGSf+NfKi+Oq10H8hADlKpYKSDA7LvoSaXdBchTbphtO7RaK\\n0J/703XhhcIhsZAU7n/RTgHF6R4HnvOIc1T7nbVs5sUIhZqwq9YIRzi74BoXZ03atjjXtgSEKK9T\\nvU640s11g5Rfhha4YmqvO/CivL/bvc5xN5VzZuUhNSBgPG9MOFZigxO7zUwPzFzGzs049eDEz4Jw\\n1jNzkH8dJj0KJNQss2RsbdsUexCaONfjE+2YOC32n3AbVHYJuFa60+VnRU1Lt1MQbR1/TawxKI1p\\n1r0C7hvvFnvhWDdMnseuWIQWbBSvnSwT8pMC0i6Jq958O/iqeaB+C9rMFRg7DuYUTJ6DqfPiOcly\\ngEF/JZ7oAgKBID6/744+nbmJHrFyK5aAxwu2iWmaFPKFUifRO8UXa45j49x2Jm+BmULzRclqlaRn\\nZxUr7HE5CPpqlpGNn6G/v5//+l//67xttCyLl19+md27dzM0PEI2b2KadtHp70ovx45309zUyMMP\\nP8zDDz9cBv3KKqusssoqq6yyyiqrrLLKKqussv6D6Nq1a5w/fx6AtWvX3hHuk/L5fITDYRYtWsTF\\nixe5evUqP/7xj/nwhz9c8vfLZDLJwYMH2b17N/F4nFgsxhNPPKFcmUDAQtKdSEacSsjL6/Wybt06\\nduzYwcqVK+/4+6Z3YooyF2Kb+/NIJEJXVxfd3d0KgpGgUjqdVm2b757SdU8CIxLECQaD6m+wboCt\\nrq6OGzducO3aNbLZLF/+8pf5q7/6KwCqq6uZnp5mbGxMQZU9PT2qrRL6kfeYKxlPWl9frxzCZKyu\\n28VQxvVKVzkJx8nrFwoFbty4QWdnZ8mcnTt3DtM0mZmZ4Stf+QpTU1OqX+Fw+La58vl8ZLNZOjs7\\nmZ2dVTDgfH/3lj8zDIOVK1cqoErXdW7evMl3v/tdDMOgtraWhx56iO3bt5ek27nhJAkNSbBPgn5z\\ndfDgQX7605+SyWRKYB7p3vXSSy9RWVnJhz70IRUHnUqlyOVyKh43Go2yePFiLly4QCqVoqKignw+\\nTzqdxuPx0NjYyPT0tILqGhoauHTp0rztuRMHoOu6cg20LIuKigqmpqbUeHu9Xjo6OmhublaAZTab\\nRdd1bty4QU1NjYINJbznruW5de0G/OS4SGc0y7KYnZ1V8Jk8XkJ+EuJyu1Hm83kymQw+n4/Ozk5q\\na2sVryBBLVmrhmHQ1NRELBbj/PnzDA8Pc+XKlRIAeXJyktHRUQqFAtPT0wqqlG3NZrMUCiIpTcYG\\nyzjheDxOOBwml8vx0Y9+lBs3brB//37lvOgG++TakP2QfZT7lbyHBBoty6K6upqWlhaqqqrwer1q\\nHNLptAJlU6kUhUIBn8/He9/7Xj7xiU9gWZaC1O4ETbsjsyORCL/5m7+pgED3nMlaevjhh9m3bx+v\\nvvoqGzZsoK6uTvVH7mdyv5N9ARFTe/DgQTwez21/279w4QLf+ta3SCaT5PN5GhsbWbx4MYFAgEwm\\nw8WLF5mZmWFmZoZkMqkAt5mZGWzbxufzUVFRQW1tLVu2bGHhwoV4PB5GR0fp7u7mypUr7N69m337\\n9vHQQw/R0tLC1NSUgq9/8pOf8MlPfpJAIMD169f5xje+QS6XY9WqVXz84x+/Leb3s5/9LB0dHfzo\\nRz/itdde4/Tp0zQ2Nqq42WQySW9vr5rTJUuW8MUvfpFodJ50JMPgk5/8JNeuXePqVfE3297eXnp7\\nhWHN1NQUgUCAbdu2EYvF3tKZ7uzZs4AAGIPBoHLjtCyLhQsXsmjRInp7e3nyySf5/Oc/f5vTotfr\\nVXu+VE9PD88//zy2bbNp06Z54eZ8Pk9dXR2tra3cunWL9vZ2fvM3f/O246anp/mrv/or+vqEGUgs\\nFmPr1q0qinpiYoIjR47Q39/Piy++yKFDh/jSl740r+NjWWX9v9SvDfD78pe/zCuvvAK89QvPt6Pq\\n6moeeOAB9u7dq661d+/eeW09y/rPIcuy2L17N+lsgUDr1jeF+0AwI+INWD25/DoYO066/xC2lccb\\nbUHTvdhWnkJikFz8MrqZJuw32Lx5E5/+9KfVE49lWezZs+dfDQwEAgHQtDd1ZZtPHt1DQROQiQbY\\nuoGiHjQNYsuYkKJ5AAAgAElEQVRg/HVXVGSVE3npmR/qghKYz65Y4jhAdYNVQIssgJjjnmSj+ld0\\nNHtDOOvVbRbtme2DsePYU+fR/HXYEuqKLXWM21xuYpqEnVx7gG0VXcsSfU5crXE78GLlRXzjbK8A\\nZuKvCUe4uk3iuk6sLfmkgv40TROQiZlB91WQMW0OHDxMIZ8VrOHEaQjUijFTBeOM6ehxESvqqwTD\\n74L5bDRNx1ZRx85cZCbFGIJot2UKeCo/LSI3U4No3qgYl4qlRYDIicgEG9vMoum+O8ZUugHUkA88\\ngQjJdIH89E18lQvFQZYpxrh6nXBKM7NFgFFGnUrILdAggLFCwnHXayg6g9VsAP81mOmFXNxxRxya\\nH9iZFwWyHUfIpANrpYsgkgSmbFsAThOnBZQlnf7yswIGDLUIhzsj5Ny/X0BM88l21Rk2oBejY3VD\\nxKxqeaetxeem4hp1nNUsbU50sFP/TmxpUbq4n6wLj1+0zYgK58PUoBi/ShdInB4ujke43XFiKxTX\\npgQUda+4vnRqQxMOedMXHIC0AlrfBzeeFevFX4faD3A576mfGeDxOLCtvCZibDWPaHPTw+JYXUZR\\nm8Id0HbgRznPsux9lcKBUPc60DHcMRLcyov6sgui78GmYjvnHCqmxgGBrZxYg0ZUuCKqeG4ocSqU\\n0KIERdEcR1OH8rVNAYkmbwkozxuByELRDk/AgYCHYOYiWiEJdgHN48cTrEHzhinMDmAVUqA5cdfR\\nDlGbus/Zl4bEOpFAYvIGaD5xf8txH4yfElBjoE60N94takT3OvHAjpueRhGMbHpY7HczlyE/Jfqm\\nYFC7ON9GWOxZrn2lZExB/NwIgu5F9wYwIk1YuVmsfAorPQG6F1/NckKx2FsGcFtZ8cssQuKXfHIP\\ny+VyeL0h/LUrSA90Y485z0m+KrFfKs3zi83sJIydANvGCi3EzOdLAOqCJhxYPR4PXl8tpmnfMZ4i\\nn8/z5JNPig8BZAtYnhC+mmX4Ik3CadbMU0gMkYxfprevn8HvPU1PTw+f/vSn/9V27GWVVVZZZZVV\\nVllllVVWWWWVVVZZZf36tG/fPgqFAk1NTbfFtd5JgUAAXdepr6/nxo0bPPPMM7z22mu0tbXh8/mY\\nnZ3lwoULysmutbWVL33pS9TU1KhrHD58mP/1v/6XcnyybVvBaNIJ6vDhw5w8eZLFixfzhS98ocTR\\nLxqNKgjt7UqCFm5nLk3TSlyR7rvvPs6fP6+OMU1TRZpms1l1nASRAAV4Sfc+6SIWCARYuXIlfr+/\\n5H4gHLbq6+sZGxvj4MGDfPKTn+S//bf/xu///u+rOFMZ66tpGs3NzYyMjCjHML/fPy/cl81mFYQl\\n423z+TwTExMqUlG2PxqNUlFRoeAj6QrodjdMpVKq3blcju9973sUCgXWrVtHIpHg+vXrFAoF2tra\\nGBsbI5FIqPhTKQlI+f1+1qxZw6VLlxgfH1ftcP/927ZtgsEgXV1dKiY1n88r6DAajZLNZhkaGuIH\\nP/gBP/vZz/j85z+vooTdf0eU7m0SoKmvL00AGh4e5uWXX2bfvn0q9nV4eJjLly+zbNkyLMuip6eH\\nQCCgXKxSqZSaAwmnSbCtq6uLy5cvMzExUQIGSRjT6/USiUQYHBzE6/XS3t7OtWvXbpvDO0Grra2t\\nCpaU0JjP5yMQCNDY2Eh9fT1+v19FZk5NTTEwMKDcGCORCH6/n7q6OjKZjIo0nk/zxVLPbaNpmmr9\\nueFX+W8+nyefz+PxeDAMQ7kFVlRUUFlZWeKSaRhGCYAq12ooFGLZsmWcP3+emzdvsm7dOtWGnp4e\\nFdMqYTXZJgl6SgdMuVdINz8QayWZTHLz5k2WLVvG4OAgZ8+eVbUr3Tvnchgy/haKsB0UHSQNw2D5\\n8uUEAgEVmSphPjkugIoZDofD3HvvvczMzKixc/9uXdZ0oVBQgNzhw4eVe18wGLwNInPPXW9vr4rb\\nffLJJ/n93//924yfbNsml8upuNeZmRmefPJJ4vE4K1asYNWqVaptp06d4pvf/CaFQoHOzk62bNnC\\nXXfdpfZ32d+jR4+ye/duBgcH8fv9/NZv/RbPP/88IyMjNDc3s2vXLlasWKFgQwkHP/jgg1y/fp3/\\n83/+D6dPn+bFF19Ue4rc306ePEltbS0f+chH+Md//Eey2SwbNmzgM5/5TMlYyH0rk8mwbds27rrr\\nLg4fPszPfvYz+vr6uHnzpqobj8fDli1b2Lx5M11dXYTD4dvWgNyj/uVf/oXBwUHq6ur48z//c/r7\\n+0kkEiQSCb71rW8RCAR48MEHVVvezMRLAp21tbUqyleuHb/fz2OPPcZf/MVf8Prrr/M//sf/4FOf\\n+lQJKO8G/izL4syZM3z7298ml8uxZcsWli9fjtfrVQ6W8jgJu3Z2dtLT00NfXx8bN24saVsymeSv\\n//qvGRoaora2lo9+9KPcddddt9Xbe9/7Xq5evcqzzz7LlStX+Ou//mu+8pWvqGjqssr69yDPn/3Z\\nn/3Zr/om3/zmN/n+979/24ubjRs38rnPfY4/+IM/4Itf/CJ///d/rx73+/186lOfetPr5vN59uzZ\\nU3LOe9/73l9au+PxOLlcDp/Pp6xPy/r3q7Nnz/KLl3eTswMEWze9LWBU08Dr86L5KihM96GZGbTs\\nKPnJXvLxSxSmrqJlRgh6bdoXNLNr12/wkY98RG34+Xyeb3/727z44s8Zi0+TswMYNavwN9yNr64L\\no3IRthEhk5hiaiLOhfPnGB4eYt26deqF1fnz57nZ349tRDDCb9+BUtM08rkcduIGWmYM/LVo4QVF\\nJyh/DVp+WgASyRsC2PJWOLCNA0wpZzBLAG9jhwUw6I1CekwAe7aFFnEcoHQd7TZnLQfIme1F0zwC\\nVAsvQLNNtNQgmpUTcZ/SLc4bEeCJjPHUjTlRt44LlXRySw1A4rr4umE71K4XwJkRFPCUERRwTMVS\\nARelh4W7VX4WQm2Oy1yPuEfFMtHc3BSMHELDIti8Hn/DXaTGr2IXcuiBmIBvEjdEW73RYtv8NWhT\\nF8HKCAjHkI+LcdB0xw4fzXG6uyUiPq28AHWq7xLtSFwXUE9shYB/HEhOy0+73LzEOOi6s2eaeYh3\\no1kZfDXL0Tw+rFyC3ORV0rcOYk33EvLrbNmyia1bt3Lp4gXSU7cwoi2YmUly45dEdGbtemecndjW\\nYjaz84+FcOyzBXyVGRHAnycgakf3inGOdgrIyM4Jx7hgs5iLt1J2UoyJbYlr5OLi1sEG4U6WvAUT\\nr4uaxYRAkwAjczMCLMvGnfl3flGRGRVzHmyc5/42tznY5aZh+qIY43C7cx27uCbkmSUvdl1jY5si\\nGjhxXdRHVZd4TEYd64bjUufE6TqxyhhBUStJx83RDV1NnhHAZ+VKJwLbEm3RPOLedgHhSOdcS/ZJ\\n9zmuZyZkhsU5kTbRNisnwFuP33Eg9M5x0pszThLuk/HQs71ohuNCKME6CR5KUDLdL8ZfxvqaGQGU\\n+WsoxiJLMNL52jZL7zd9QazVyhWOu6fLec8d94smYLz0iHNdSzhpeiucNSjBRVfcsFUQ+8d4t4A6\\nIx1iDUoXz7EjYj50n9jfqlaLNngrRL0bIbG3xJaj+WshM46GhSdcL37plZkSx9VugOq1AgrW/a5z\\n64WbnS9WdLzUddADaFYODQvNLqDN9AonzKlzYr2BcIWMdBRrxLaKe6LHixasF66KRggtPSTgQ82D\\nZuVF/6rXQc3dxRhuqbkmfu69sGk9weYN+GuWgW1hJgbQdC+h5g1YiGiCTDZDNpsjm8tRKIhfIOge\\nHQ3Ijp3HNrMCovQ4v0C1THTd+dRvsBYrO42ZmcBOXBf7pxEtNkpz16GOlriFPXKwuH9WrUbzeMV/\\nuhdN9wio2nkTZ+Yz2DO9VERDvOtd7yrpp2VZfPvb3+bI0eOk8hr+1vsJtm7CG2lE94bQjQC6N4QR\\nbsBXuxzNX0l66hZDg/2MjY6wfv36d/QhlLLKgvL7iLLKKqusssoqq6yyyiqrrP9fVH5/9x9DyWSS\\np556ikwmw8qVK9/RBzY9Hg8VFRUKIJLQ1c2bNxkZGcGyLLq6uvjYxz7GRz/6UcLhsDr3F7/4Bf/0\\nT/+knNzC4TDRaJRgMEggEFD/ScBsYmKCU6dOsX79egU2RCIR9u7dSyqVUu5cbyVN0ygUCipe07Is\\n6urq2Lx5s4LlJFjX09OjYCPbtvF4POpceS9N0wiFQgpEA1TUaDgcZtWqVSX9drdDXjcej1NdXc3m\\nzZuJRCJcunSJRCLBmjVrGB8fV8BUKBRicnKSYDBY4ormvlYmkylx72ttbUXTNG7cuEE2m1X9kcpm\\ns8zMzGCaphpDt5OfrussWrSIpUuXMjw8zHe/+10GBgaora3ly1/+MuvXr+fEiROkUikef/xxZmZm\\nmJqaKolFlfGX0llMuu/JOEsJIxqGQWVlJYsWLWLJkiUEg0E8Ho+KYZZQXXt7O6tWrVLxtNPT05w4\\ncYL29nYVt2pZFj6fT8XFfuc732FqaoqlS5cyMTHBxYsXef755/n+97/PtWvXsG2b3/7t36a9vZ2e\\nnh5OnTrFmjVr6O/v5+WXXyYSifC+971POTS641nlmFmWRSQSYXR0lOnpaWZmZhT06fV6CQaD6lxZ\\n97FYjEwmc0fIzq36+npWrlyJpmnE43Gi0SixWIyWlhaam5upra1VLoLvec976OrqYtmyZbS2tnL9\\n+nUymQzT09NUVVURjUYVYCnnwL1+pDudWxJYlVGmElg0DKPk70IyQldCUxKIMk2T+vp6BTb6fD4V\\nxyuvJQFZCclJBQIB5d4WiUQUSHby5ElmZ2eZmJhQ7ZV1JsEuXdfV2pYwnoyhlXBvIBCgs7OTGzdu\\nMD4+rqKN3Y6i7vGxLEuBhPJx2Z+ZmRlVp3Luk8lkScR3b28v4XCY3/7t3+bixYt0dHTwyCOPqPu5\\n2yjXtoSgQey9zzzzDLlcjo9//ONEo1E1F9KlUF7jzJkz/P3f/z2GYVBVVaXWi9frpampqSTOWM7l\\n0aNHefrpp1VU+Ne+9jW1P1y7do2vf/3rFAoF3vWud/H4449TW1uroGP3tTo6Oti+fTsjIyP09/fT\\n3d1NLpejvb2d3/u936O5uVmNidthVO4RGzduZGZmhsHBQXK5nLp+IBDAsiwuXrzIc889RzweV89B\\nMro3FothWZbaE0E4eMZiMdra2ti5cydnz54lk8lw7733Eo/HldPm3XffTSAQUBHJmUyGQ4cO8eqr\\nr7J//36eeeYZXn/9dQzD4IknnqCtrY3Gxkba2tq4ePEip0+fpqWlhUceeYR0Ok06nSaTyZDNZhVU\\n5wapT548SX9/P/fccw9tbW2qtjwej4KCOzs7ee211+jv72fv3r1MTExQXV1NRUWFckZ87bXXePrp\\np3nppZfI5/PcfffdfOITnyiBuCVMKeOYvV4vPT09XLp0iZs3b7Jt27YS4P1//s//SW9vLy0tLfzx\\nH/8xnZ2d87rpappGTU0NmzdvZnBwkJs3b3L69Gm2b9/+lg6GZZU1n34V7yN+5ZUYj8d56qmnSl6Y\\nhUIh/uZv/oadO3f+m669fft29bVt23R3d/+brlfWf2wdOHCAbN7EV7MM7c3iOudIw3HRq19BYewU\\nDbVV1NXVkU6nCQaDKmK3q6urZLO3LIsnn3ySI0ePk85rBFq34o213XZvI1SLv66L/PRNkgNHOHzk\\nGACPP/44uq6zdetWjh3vJhm/jL+u62233fAa6DqYs9cACy3Sjm0V0GTkqKYV3fQSt2D0sIBOKhY7\\nzl62AE4yY8Ihr5AEO4+GiI7UANsIo8WWC2hPvuhzcXjKqU6T4FG+eO+KxTB9CU0X0bKaBradx46f\\nEmCHr9IBT1yOZ273LRBg4MRpARVVrYFoO0WrMHdDnHsqp7S9AtwJXHUcvjTRRluAjPZ4N7pdwFu5\\nEF/NcgoFUwAxY8dB9+KtbCI/dR179DB4QlCxCNtf6zgNegVoZuacMXU7CvrAdhwFSyIyFziOgoYr\\n1hQBh1WuEHDleDd24pboVf19oq0aGIYXPTtGduSUgOOwSd86QEbT0RwHPg0Lw2sQi1VhWRbNzc3c\\ne+8Gjh7rJnntJTRv1BWd6URs2ia2ZRZjkGV0q4SqIoshOyEAqdFDAowKtTqwmCZgI6MCcuPi6+G9\\npY5jSi44TsJWEtgJNML0JQG3De4pHq95nLjlZRBdLMY0uhhGD4h6HTkINfdAxXIRd5y8JdzxajeI\\nNkroTcY/O/0lNeTUkyVgotwkhBqdQyzHcU7Wk0dEIdsWtlVwAWsUI6N9zqcsJWgnF4U8VjdK6zTU\\n6rgWJoW7m4yYzYtPtRBwAF/dI9zcbNcnNpXbooQy9eI4Bxtg0nUdzbmv7bTHylEE53QHpHKuNafP\\n6F6wHSc23Stc2MycC5R0QYuzfeL76CKYuiCgulBr0cHObbWmXC3d4KQmoE4QteD+uYIKTdHG5DUx\\nzx6fiJievizcHOeuQc3rrMERAfbmE04kuU/Uh9zHZq84cJ8XmnYIt04zo9adaLPTVl2HaBv4otiD\\ne8lP9jquhgFo3oHmrwLLFOOkxltTcb9E2kU9D78i5t4sYGuacOW0TWyN4l4hYef4SZi5JOo+vLDY\\nJt1A8zh7iJaHaCe2EUIbOwZGGDtYIWpr+oLoc7AFDEP0JT0MiV4xJnbeifOdBU3HqOrEV7Pc6bZF\\nLn5Z7NlAMpXF8iRK08gpdc/z+33F5x5butHK133FebWr74FsztlXnLmrWOzEXntEPWTGIXkdW45J\\nqAWtfrMTT+2WADo13RDjnxPrdHx8HMuySp6v9+zZI5z78hrhzve8qcOvpun4Khfi8VeQvPYSR48e\\nZ+nSpf/m16xllVVWWWWVVVZZZZVVVllllVVWWWX96iTBiUgkcsf40jeT1+ultraWqakpPvCBD9Da\\n2ko+nycUCtHW1nabSxTAiRMn+N//+3+r2Ea3E5Fb0tEpGAwyPT3NwMAAf/d3f8dXv/pVAoEANTU1\\nrFu3jsOHD5PJZO54nbny+/0KBvH7/axdu7YE1AFYs2YNmqbxox/9qCSKVUI3EoqRAIgbjAuFQjQ0\\nNNDc3FziYjfXpU6eI8E8+Zh0Vjp//jyRSIR169Zx+vRpbNtmxYoVKk7ZfW3p9iRVV1fH8uXL8Xg8\\nxOPxkrjRuZJwiGVZJVHC8viJiQm+/e1vq3jGhoYGvvzlL1NVVUUikWDbtm288MILHDt2jD/8wz/k\\n6aef5sCBAySTSeVM5b6mdESMxWJEo9ESkMw9jvJ72U/ZHjl2NTU1CsTs7+/nm9/8Jl/96ldVXK9l\\nWRw/fpwXXniB/v5+bNvmJz/5iQJcJKTl8/nw+Xz8/Oc/Z9u2baxYsYKLFy/yl3/5lzQ3N2NZFmvX\\nrlUuc36/n3w+TyKRUOCldHO0bZsPfehDPPvsswwMDDAwMKDgVb/fr2pPAoGaptHV1UU0GuXmzZsl\\nDpFyvPx+PwsWLKCjowOAGzdulMCYEtqJRCI88sgjKk65UCiQyWSoqanhIx/5CM8++yypVIqzZ8/S\\n3NzMsmXLVESwx+NRde6GzOQcSIhVQr3T09MlTnsSppTxs5lMhmg0SigUIpvNkk6nCYVCav1EIhEF\\n17ldKCUE546OlWPR2NhIT08PV69eZenSpUAR2JMugtJV0e3qKeEiOd9u9z257uW4B4NBtU6li5rb\\ncW8+SVhKtl+CsRKGnJ2dVfcMhUJcvXoVTdNYs2aNcverqakhFAphWZZy+stms2pskslkiXOnYRgk\\nk+LvADKK1g0hSpfHbDbLM888g23b7Nq1i507d/KNb3yDixcv8vTTT/Pss8+yYcMG6uuFOcPExATH\\njx8nlUqpeli7dq3aW23b5rnnniOfz/PAAw/cMR3SXTs+n4/Pfvaz/OVf/iWnT58mEonwxBNPUFNT\\no1wDZZyz3PskmKnrOh/+8IeVs2IqlVIwo4RipcsiCCe8V199lVdffZWFCxeya9cu2tpEilkoFFJO\\nqrK+3vOe9/Av//IvTE1N8YUvfIGnnnqKM2fOcObMGbq6uli7di1Xr17l1KlTZDKZkrUh4eXnnnuO\\nHTt2sHHjRnRd58iRI6ou5gN33U6JEnCVsd9uV1O3stksTU1NfOlLX+K5557jypUr7N+/n/3796u6\\nkOCghIkffPBB3ve+96kam0+yLuW6SKVSPPnkk/zhH/4hADdv3uSNN94gGAzye7/3e8RisTstAyXD\\nMPjMZz7D6OgoN2/e5OjRozz44INveV5ZZf069CsH/P7hH/6BdDqtnsB8Ph//9E//xF133fVvvnZl\\nZSUtLS0MDg4CIjt7bGxMfVqirP9cGh0dxTRtfJGmtz54HhmRZvKjp6mrq+NrX/vaWx7/ywIGVq1a\\nRVNjA9euD5RGqr6FNMDIjWKZSRGha4hPgYkoVucNke6B+vvQAj0wfRk7n4CJMwpAEjChhW3m0LDR\\nvGH0QBUefwWFQAumUQvegMtdT/ZHc0XRUnSW0o0iVCRhmUKOaDTKpk0bMU2TQ4ePkh09CNXrsEPN\\n3GYpJe+RGcYePykiWgN1ULnKTYoUXbikG5mkT/yVAjQbPSwAGbND/NzOQ/9PFUjjqWgntOAB9ekX\\nO9SM5o1g5xJ4WzbhCdWTHXkdKzeJHX8dFR9p5QREVLG4GK06+Yb4TwyO+Ne2XRGZy1w/l7GlHgcm\\n0oXrmjcKQ3sF5BfowQ4tQJvtxUz1UcjNFiN2NdFZ27awCwKi0jwesnkYGp1kNH6M490naGpsoL2t\\nlZs3+0kkBgX0FagtOsupmFYJMXldEJnT3fr7nQjTGwJ+9J6D6BIB42ge8HgBjxPnm3TBVg6wo3nB\\nzkF6VMQzK+CxTQCP0+JNF56A6FtBgm510LRTgFWm4/yoGyKadOSQcEYcOwpTZyGyCAJZ4Xw2ekRA\\nrOGF4hq64UCso8LVzgUMkY0LB8LY8iJo6jGKYKBtYlsamsdXBIisnJiHRJ8ouehCpybyAnp0u1CC\\nyzHP9X10sXDsS1wrAn6yJnSvsxzmnOe+ljrW7crmAHcSrPJGBLyYjQvAdW5k7XyS7ozYYr7kdeQY\\nKkdCpwaTN51Y4YiYz6lzrj54ihCoBIl1oxi5LSFBGfkLYuxL+qwVXflsSwB92GJtB2rBVyPmeOay\\nANbca9AtB6JD8zpryBmD6cvi39qNpVHcsgklRqXSwbNKOIgOvSLaX+c6V/egaX7sQqZ4Ecv1ZtkI\\nQdVaGDuORh5b82Jrulj30U7RH90j2pibcCLHEwJIzYxC7QY06RAJTp+csQnUY3uCkJtCi7SDbmAn\\nb4k16wmJPTE35URTu9a8bWNrAhC2MhPk4hfx1awgP30DrSDiGQq2hZXPgSci1oGcEwdkta0ChYKJ\\naabR9RAwAakRx41RvvkVX6VSKfIFE7t2A1qyAWZ6nOckOW9W8flD8xTBzdgKESX9ZtI9aLkJsG1m\\nZmbZu3evAvIsy2L37t2kswUCrVvf9LnaLU+wmkDLZtL9B9m9ezc7duyY9xNdZZVVVllllVVWWWWV\\nVVZZZZVVVlll/b+XjF99J859cyXhlpqaGrZs2fKmx5qmyQ9+8AOSySTBYPBtQXm6rhOLxZicnKSv\\nr49XX32Vd7/73QDs2LGDkydPkkgkShyv3kyyr5ZlUSgUWLFiBSDGwu22t3r1ahoaGjh27BinTp1i\\nenpawVRer7fEza+xsZHKykoF/BmGUQLgSblBCzeYJIGVQqHAyMgIuVyOQCDAI488woc//GGmp6f5\\n4z/+Y/r7+1m3bh2Dg4MMDw+XxINqmkZ1dTVNTU1UV1djGAaTk5NMT0/PC/fNTY+T0brRaFS5R+Vy\\nOc6cOYPX6yUUCrF+/Xre9773UV9fr9q/adMmXn75ZU6fPk0ikeCBBx6gu7tbRdnKe8mxkoCLhNPc\\nscByTmRc5nxjJ0EtCeksWbKEXC5HPB7nJz/5Cbt27eLFF1+ku7ubRCJBNpstAcbcwFZtbS0NDQ3M\\nzs4yOTnJ888/j67rVFZWMjY2xpkzZwCUa510OJNApnRMk7AdCDfKj3/84/zkJz+hp6eHqakppqen\\nmZqaUq5wUtK9sa2tjQULFhCPx5Ubma7rVFdXK/gKoK+vj4GBAbXOxsbGsG2byspKLMvixz/+MS0t\\nLTQ1NdHR0UFFRQVer5fKykoee+wx/vEf/5FkMsnQ0JCKCc7n8wq0y+VyCtKT7nOhUEg5UobDYcbH\\nx4lGo0xPT5fUswRypXtjMplUIKLP56OmpkaNrZzbdDoNoEA2dy3PrdnqavH76enp6dtqeb4akfCe\\nnBfp7CdrYT4tWLBA1XFVVRWGYah6lHCXu31yrcvvk8kkuq7T0NBAOBxWa8/j8RAKhSgUCly/fh3D\\nMNi5c6cCC+W15BgmEgkVkyvbKgFBt+Od7I/sm2ybBPzOnTvH8PAwVVVVvP/978fj8fC7v/u7HDhw\\ngIMHD9LX18fBgwdv25fa29vp6Ohgz549jIyMMDs7S0VFBaOjo5w/fx6fz8dHP/rRkntKeHe+fc+2\\nbaqqqvB6vaxfv15FrWuaht/vV+Mr9wA51rKPDz30EJcvi79N5XI58vk8TU1NbN26ldWrVxOLxQiH\\nw4yOjvLqq69y6NAhrl+/zje+8Q0+9alPsX79euW+KR0iTdNk7dq1PPfcc5w/f54NGzbw1a9+lRde\\neIEjR45w/Phxjhw5ogDgxYsXs3btWiKRCLZtMzQ0xNGjR+np6aGnp4eTJ0+ybNky+vr6sCxLwc1y\\nbck6tCyrJAo5mUyydOlS9uzZw6FDh/jABz5QEqOez+fVOuns7OQrX/kK/f39vPLKKxw/fpzZ2VlS\\nqRSZTIbKyko++clP0tXV9abw/Ny5kXPq8Xi4ePEiN2/epK2tjX379gEitl66Zr4deb1e3vve9/Lk\\nk0+yd+9etm/ffsc1V1ZZv079ygE/GaErN/XPfe5zvxS4T2rFihUMDAyo7/v6+sqA339SZTIZsG3h\\nuvWvkNGf8fQAACAASURBVKZ7wbbVE8yb6ZcNDOzcuZPvfe9pkgNH8Pgr3tb1zPQE5uhJvB7QvT5y\\nI4fQqtYKUE0LFoEgTRMOfNFFaJNvwOQ5sAtoHj+6P4aVmRAvVHQvvsa7CdSvBiCZTGHmckUIbe54\\nyTdM2Co20/aEQAIuqUE0bGKxKI8++ig7duzANE0MwxAxiZOvYU2fFw5UvlpszVN0FExeh0JSxPtq\\nXuz6+x0QyHEmu+35cw7kF2oRcEg+IeJYzazTD4+A+CKdWJVLFCRlWiagQ8Vi7Mmz5CauoGk6ViEP\\nmiEAH49fHF/QsW0TPEEBoWVGBABXSIJtYngDmJofO9Qu2qHP2WZlBKcRFu2SYJ2/SjiMjR6BqYuQ\\nHIT0IBZgG0G0WAdGtBlNN8hnM9gOtKYVktgaGNEW/PVrMVOjJOOX6e3rx2tAwO9D02xsK4c9elTE\\nhYYXivhQzT1+EiBz/qdpArKpvw8moxB/XcTbTr4h3OLAAb8cF8DKVUUnyMkzxWPc8kZFNG10ibjH\\nbK+4b8NW4b6WjcPIqwKcvPkj0cZwm3C2M/yinY0PwvgxAWjlpgTkZzvRnrYpxjQ/QxGSAxVH7a0U\\nMbiRxTDwogAKUwPiHmooPODRxXWsQhGxk658qUEoJEWtBxqLkJWVK8JtJZrzC4e5bnvgOO7hAHoO\\nfOm+53zXc69JCfZJ0C+ySLjTzV514lIdmFTF41rFvqIJaNA2AY8Yy9mr4rhIh4iGVo6EjrtcdgrG\\nT4ifxZaKtsg+KBdPJ1LYyon2mdIp0gUJuvtuFkS8bcmLY8cFL9kv5soIC0e61FARgAMBiNomaM51\\nda8DeraBvxaG90AhLdZesFFESsvrhVtL7yc6QQlkmR6C2WvC7S6fEjNghCHYMCfp2Cq9lqwNOR6h\\nVtC6sdGdaN+Nzs80BZWieyHUJKC21C0xzqlBtIlTYi1ahTmOks59Ih0w9Qb2xGk0fw1auBWSg9j5\\nSeGQqXsdYK5DOLjqhgA+c+Mwew0zO0t6oJv89C0KqTEMO49p2+I5NTcBkWZKNcc9z8phhRZA4hbM\\n9EDlcqQboq57yDmfVrNBRD9XLofYMrT0sDOXswIstQuge7HrNov17/E7IKhreuaTbcGMcFa00Eqe\\nX8+dO8fQ8AiWJ4Q31vYmF7ld3lg7maGTDA4Nc/78eVavXv2Ozi+rrLLKKqusssoqq6yyyiqrrLLK\\nKuvXIxmLOTeO851Invt2IMGzZ88yPDwM8LYd9wDlUJZIJNSHVHVdp6uri3vuuYfu7m5mZmaoqKh4\\nS8jPHZFoGAY//OEP2bhxI0uXLlVuZVIVFRU0NDTg9/sJBAJUVFSwatUqLl++TDweV8dVVlbS2NiI\\nbdtMT08r+O9OUYZSU1NT6LpOTU0NhUKBixcvqujFv/3bv1VQU1VVFX/7t3/LN77xDc6cOUM4HKa9\\nvV05qcmYUTmf0pVvYmKiBJSaD5xyfz8zM0MkElHQUjgcZvXq1WzcuJHNmzerCE0JANq2TSwWY/Xq\\n1Zw+fZpXXnmFn//85ySTSWpra+ns7FRRuhK4k/eTkZxSgUCgJK7X7ago224YBhUVFSQSCQWeaZrG\\nokWLGBkZ4cSJE9y4cYOBgQFyuRyhUIj6+nqi0agChpLJJJOTkyq6s6amhj/5kz/h2rVrvPjii7z+\\n+utMTEwARUe2/fv3c+rUKbq6uujq6lIOdLLm546x3+/nwx/+MDdu3OA73/kOhUJBRRXL4yX0dfr0\\nadrb26murqauro66urqS69m2zdjYGP39/UxPT9Pa2orH4yGTyajxTKVSNDU1Yds2169fZ2BggFOn\\nTtHS0sKmTZuIRCKEQiEefvhhdu/eTSgUwuPxKGc96QCp67qKQZV98fl8rFmzhvvvvx+v18u3vvUt\\nYrGYcpqbW9uhUIjZ2dkSJ71QKEQsFlOwrs/nQ0bJptPpkvjVue6B8ms3BCpjG+V1DMNQbnvyGtKV\\nzB2NO3f9SdhP3rupqYmqqipGR0dJpVKEQqESx07p4iZrVa4FWa/S1bGuro6pqamSeG3TNDlx4gSF\\nQoFFixaxcuVKrl69CggjHrerZygUIpFIlOzLEh6WfQgGgySTSaamplR9S8k2Hzx4EBDJjkNDQ7zy\\nyivK8VRep1Ao0NzcTEdHB42NjSxevJi2tjYsy+L8+fPcunWLP/3TPyUSiaiY5HvvvVfB0G6gMJfL\\nKSfYW7duKQgtlUoxPT1NJBLhvvvuU3Xnnk/ZfglH53I5DMMgGAxy77338p3vfIeJiQlisRiPPvoo\\nW7duxTRNUqmUikVvaWnhYx/7GLt27eLpp5/m0KFDPPXUU1RVVdHW1lYSUy4dJBctWsSJEyf43ve+\\nxy9+8Qve/e538+lPf5qvf/3rhEIh7r77bh555BFaW1uVW6Xc1z/ykY9w5MgRfvjDH3L06FH27dun\\n9v3Z2Vlu3brFkiVLyGQyal/2+Xwqil7uQYsWLaK6upqxsTHOnj3LwoULVX2644UlCNva2sqjjz7K\\no48+Si6X44knnqC/v5+7776be+65R9Woe2+6E2B3+fJlBgcHqaqq4p577mHfvn3s3buXj33sY8qN\\n8KGHHpr33DfT+vXr+f73v09/fz+9vb0sXrz4HV+jrLJ+2fqVAn63bt3i1q1barGFQiE+8YlP/FLv\\n0dxc+kdn6eZX1n8+BQLCac4272wx/GayrTw4LybeSr9sYODhhx/mypUrHDl6nOS1lwi0bJk37hfA\\nti3y0zfIDBwl6LXZvGkrmqaJONb4CaypIHakAy3ULCASyxUZa6bQdANv5SKMigVkB7sJh4IsX7aE\\nKz1XS2KC5adcSmJ/50oDTQFBoMc60AwPYGElrxMK+njiiSdYu3ateFzXefzxx1m6dCm7d+9mcGiY\\nbPIShWkLy3SDK0UXLzvS5kBAAkySbVEv8uZ7Mtc8jlPaaQEK6oaIyaxYLAAfU7z4KeQLeL1G8XbB\\nRph4g8LMLQE66T7h0hVqEXDQzFVse1wAZIlrIvI21CLOE6gjlkd3XljpaB7DZTooYBlmroqBi3aK\\nn1k5sJz4VGfO7OwE5KexPQGoXocWasbn92MD+Vwe2x9ECzZA9RoBP411U5gdRPP4CC7YCppOduQM\\n6fQs6UxeQJI6aIWkAPBSg+ANY0c6IdLpOPFpRbhP/eN8HWqBibPiOM1TdGe0LcASLotGEJreJZzj\\nEtfEGFl5MYbeqLhPsLE4X8lbjgNcGHzVYhy8Uai6S8T45hPCvS81IFziYssEGKhpAoxKj0Jh1onJ\\ndaJmNU+xfblJVx15RMRw9V0OdGWL8Z98Q9zLGy3G7UIpnGa53tjlpoWjmpUX7dEkxEVxLtFLx/A2\\nVz9XnLVtivZKx73UiHByU0XjcrMzcw7o5PqZlAPY4o0U69iIOABjv4iIlmMj3TXRi3HRlgNImjkB\\nsznzYnsrXS50ct5uCuhMxiyHFzrwpNOHtOPepjnjPl+UtnvNyvMyw+BdxG3SDHFP2wZvBQz8rOj0\\neJvyjqPgAgG8yftEFom5HjtadIq0TXHN/l+ALyqc4vzOJ3esgnCPnL2KNnMZO58s3sLKirUa7RBg\\nm50R+4tuiP3LGSvNEGCaXZCxvwakesU4eEIO1Npw+1xrHqfduhM5XgHD+0TMuu8iRBY6xzt7hnyO\\nCDXD9HmxzeRnID+DphliDowQ1KyDYLMDNWuiPZoG4UYRFZ7sxx47Tn76Brpug8fA1gMCKJy9KtaL\\ngsadeHAJs0r3wkA9mhESMbvJfvE94lOL6XQK20bEC7vh81CT+C9xQwC7libabLvWM2J31d6M8Eve\\nAjOFJ1CJbZklz68HDhwgmzfx1Syb9zn1zaRpOr6aZWTjZzhw4EAZ8CurrLLKKqusssoqq6yyyiqr\\nrLLK+neqqqoqNE0jmUze0X3pzSShFgnuvJX27dunIJB36ujj8/mUc9KFCxdYtWoVmqbx+OOPk0gk\\nuHDhAtPT0wrGc4N+0m0unU6Tz+cJh8Ns3bqV69ev09/fz0svvcQrr7zC8uXLqaioQNd1ZmZmOH/+\\nvAKfVq9ezdKlSzl8+DCpVIr6+nre9a538YMf/IDh4WEaGhoUwCEdmiRkMZ9M02R8fBy/38/DDz9M\\nNBrl2LFjGIbBb/zGbyi4TyoSifBHf/RHXLp0iT179nD06FHlCiZBNOmCJaGlyspKFb87F+6bb/yz\\n2Sz5fF5FR37mM59h27Zt6vF0Ok0mkykBeUC4N1qWxQsvvEA2m6W5uZlVq1aRSqW4dOkSg4ODZLNZ\\ndX85pm73MQmyuN323JCkx+OhqamJYDBIPp9Xbmk+n0+51I2OjjI7O4vf76ejo0PVQaFQUMBibW2t\\ngiOvXLnCa6+9xpNPPkl9fT3nz59XkaHJZFK1ORQKkU6nmZqa4uTJk6xbt477779fQWeyxuS/8mfV\\n1dX4/X58Pp9yvQNU/Gg4HKampoYrV64QiUSorq5W15SRt9KpEYQ74MKFC9F1/TZnxvHxcZqamtTc\\np9Npbty4wdDQENu2bWP16tUsWbKEQ4cOkcvl+MIXvkAkEiGdTuP1evH7/ezdu5fdu3crABZEXPXq\\n1atZvHgxXq+XJUuWcOHCBRoaGhgZGbkN8gOxVgOBAH6/X8X7SmhUxujOhfGkm+jcMZSSrm66rpPJ\\nZPB6vTQ2NjI5OUkoFCIej6t14K5vCS/OV+/hcFiBYfKcrq4uJiYmmJycxO/333FP9Pl8KlpWuvdZ\\nlkUkEqGiokK1w+PxMDExwYULF0gkEtTU1PDYY4+RSqVoaWkhGo0yMDBAb28vS5YsAYqQm+yvhDjD\\n4bBqz5IlSzh16hTd3d3s2LHjtnkIhUJcunRJgXo//vGP1WM1NTUEg0FyuRzj4+OMjY0xOjpKS0sL\\nXV1davw3btxIf38/w8PDKl7aNE12797NkSNHWL58OY888ggrVqxQ7njxeJx//ud/pqenp6Q9uq5T\\nW1tLS0uL2mekw6Mb4pR7pnS40zRNretQKMRjjz3G/fffr+pGyr0W/H4/jz32GIZhsH//fr71rW/x\\nJ3/yJ2rPcc9rRUUFfr+faDTKxMQE3/3ud1XM/M6dO/ngBz+onEb9fr+aDxB8xQMPPEBrayt/93d/\\np1xQY7EY8Xic3bt3s2DBgpJxyGQyKupb9j+dTrN582Z++tOf8oMf/IDPf/7zRCIRdF1Xe5c7ytqt\\nl156SblpXrx4UbktSuj0zWTbNj//+c8B2LZtG5s2bWLfvn0cPXqUBx54gFwuR1NT021M0duR1+tl\\n7dq1HDp0iFu3bpUBv7L+XehXCvhJm1EQTyYbNmx4R59keTuKRqMl30ur0LL+86m+vh7PlV4KiSGM\\nUO07Pr+QGMTj0aivr3/LY3/ZwICu63zmM58RoN7R46T7D5AZCuKrWYYRaUbTvdhWnkJikFz8MrqZ\\nJuw32Lx5E5/+9KfxeDwsW7aMl19+mWt918lPnoXJc9iaRCI0wdV4Q3gCVRSSY9izt9Q1/st/+S/i\\nkz2umGDDa+Dx6BQKVmns71wpsKKCaP1iNE0jN9VHzs6yYEHrbUCEdCzcsWMHZ8+e5ZlnnqGvr4+s\\naWF7DGyKbyJs20JL3YT8FEQ6saOdoOvqmDdVsB4mnCf9unuF05icA93AtvLkcjkB+MnLaSKi1S7k\\nBXjW9BBkx6D/RRElKRomgJ28A0+FWnDDVqYp3c4kqONEGdvOWBVSaF4HQrLNItQoP8HijQrQRQ9A\\n/QPgi2GD88kP1QFs20TTPCre1x7cS26yDzM9iZkR9nm2r1IAQY5jlw1o2Tj2TA/kkzB5Vrjm1W9x\\ncViuCE/Z38mzYOeEC5uMVpV1b+UE7BU/BQ0RMe7BBgFCoQsHrrnKTgqwDhxwCBSwFO0QrouFBIQ7\\nxPgXEhB/TUSV1m0S0E/FYgFtGUEB/LllmTDwcwEASoez9LCIEI52gr9eAGDZuAAIh/YW3dR0CdFp\\nAiJMXhdjZaYdMMyJmPU3O5Cjq3aQ0KNqCEUnOFkLDjAnI2s9uoDLpONexeJSd7biRKDibMGB0Lzi\\nWAewJdJRPC22TIzZeLeA3vzVxeuoS7vimS3bmZeTwjnT24CdmypG9ObiMNvnijluhpq7RR+tHIQW\\nFPtQuUL0W3P1U97UtorgJ3bRbXDmqtP+edZ2PinGLT0oHnfHQOveIsQ82yvmaPIN4dJXc4+oFQnu\\nmS7YTtNFuzMj4tjETQEbRjsEtBg/AckBx60vJGDeYAOMHhXwarBJ9cc2c64YY9sBzXOlfTBzwnVS\\n8wjYzuf6JaHtqhsz6+wbjoOmcvY8LJzxwgvB4yuCejLSVnccLn0VUNkF8VPYZkr0s/5+EdMLDrjs\\n2pssGxsR80v9/WgjB7AKCWw8IjbZTIPtOF2qSGkRzasc/JzoXs3jx44uFk6xY8eh/n48ITH2pmmJ\\ne873PJKdhLETaIC3qpPc5DWYOAW+SjACzp5bLKE3O99fuxLbypc8v46OjmKaNr5I0zwnv7WMSDPp\\n0dOMjo7+q84vq6yyyiqrrLLKKqusssoqq6yyyirrV6/GxkYWLlzIlStXGBsbo7Gx8R2dPz09rWC3\\nlStXvumxtm1z7tw5crkcFRUV77it0nEpl8tx7tw5Vq1aBQiY4w/+4A/4h3/4B44dO0Y2my2J04Wi\\nE5vf7yccDrNr1y7e//73k8vlOHr0KHv37qWvr48TJ06UQEa2bVNRUUEsFqO3t1c5bi1YsIDf+Z3f\\noaqqil/84heMjo4yPT1NZWWlAvyy2Sxer/eOgNDw8LACitra2nj99dd54403MAyDrVu33nEM2tvb\\nyWQyClrMZDLE43HlTGjbNvX19YRCIaqqqqioqJg3zvdOymazBAIBGhoa2Lx5c8ljEmqS0IkcJ8uy\\nVNxodXU1K1as4MyZMwwMDNwWbyrhtju5Rs6NDrYsSwE2ra2thMNhstmsgqtkuph0x/P5fLS3tyvA\\nRcJxmqapc3w+H7FYjK6uLs6dO8fBgwcVpDU6Osrg4CAzMzOqTR6Ph9raWurr66murubEiRMkk0l2\\n7dp1G+AnVSgUeO6550gmkyqC2R3pKs9rb2/Htm3Gx8cZHh5WoNjc8YlEIqxZs8b5YHiadDpdAhjK\\nWpCwXl1dnYoG3r9/Px6Ph5UrV9LW1sbVq1eJx+MsWbJEAVZ9fX0KspPwlEx6uXjxIi+88AKrVq3i\\n/vvvJ5PJ0NfXp0BYGSmr6zrRaJRoNKrWnruvACMjI8RiMTU/EtDMZrMKUjNNU7nmyfa5I09lBOqi\\nRYu4cuUKoVCIkZGRkqhbdySzrD+5ZrxeLz6fTwGIbvho2bJlXL58maGhIYaGhkr4DNM08fv9ClAO\\nBAKk02lmZ2dV+yorK4nH48go57GxMRXv3NTUxGc/+1lisZiC0zZu3MjevXvZt28fixcvVmPl8/nU\\nepZ7SiqVUnzH9u3bOXbsGIcPH+ahhx7CNE3lJijXQyaTIZVKceXKFQKBAPfddx8PPvggra2tql4n\\nJibYv38/Bw4cYHBwkK9//et89rOfZeHChdTV1eHz+Vi6dCkf+MAHmJycpLu7m3PnzpHNZjl58iSn\\nTp3C5/NRW1tLLBbj+vXraJqm3PoefPBBcrkcX/va14hGowoslGtXzot080smk2o92bbN7Owse/bs\\nwTAM1q5dy7Vr13jttdcUmFpTU8OmTZtoaGhQa1W6Oz766KNcuHCBkZERLl68yL333nsb+C336Ucf\\nfRSAf/7nfyYejxMKhfjABz6AYRglsbruiGe5Tuvr67n33nv56U9/SqFQIJFIkMvleOONNxgbG6O9\\nvV3VTy6XU46ePp9POWjed999HDt2jL6+Pp566il+53d+R+2pbtdAt15++WV+9KMfoes6ixcvZnBw\\nkKeeeorf/d3fLdmX5gNmbdvmxz/+sYpg3759O9XV1dTW1jI+Pq7+ruOOrX+nikSEucrbSYAsq6xf\\nh36lgJ+0/pVatmzZL/0eclFJpVKpX/o9yvqPoa1bt3LseHeJC93blW1b5OKXCXs9d3zD4davAhjw\\ner23u9vFz5AePS0AB03D49EIez00t7UqSE4+Gc6F5q5fvy5slm0QgJ+BZmbQsyMEfR6am0qvMV9M\\nsN/vxzTT2FYOTfPD3DGdA1ZomoaZniAzcJSw31D28vPJNE0OHjzIrVsD5E0d/FX4a5ZhRJrQPF4S\\nM1OYyWHh7FRIwuQbAk6rvUfAb5o+v3sfFN25cByjKpaUPu5EPlqWeOHp0T0UNFPFsuLxQu16mL4g\\nnLOwS6GiZL9wy5o4DUZUQDXFm+OQTerFho0NGQm12QLiwnbG09UH2xYucbpXQECBagf8syl5T+UA\\nQQqy8UZFe4f3U0iNCoewmnUCQiqZMw07UCdiclMDoj2pQQXjFNvvGsfRoyKCWDrxzQWrkrdg6rxw\\n8Rs5KO4bcmJP58I8tiWgyPFuxwGuWQBeuo+SaNvoYhHziwmt7y+ek7wlxqtui3Cpm3yjCJzJcZzt\\nFZCZlRFtxKmT3KT4L3nTmctOAfXFXxM/Gz0sfh5ZJM51YMyS8dAM0GxRI+OHoGoNhNuLsJzudwA2\\n8WJV1NKcp1nptmdExDlmVgCYRkhAo8mbRWjUAaeK0+I4FWILhzPLFmBbISngtKDrl1bRJQKITNyE\\nwZcdh0IJGDqugdEl4hzbFNGqE6fQzBS6ZmMlB0QUruq7A50ZESfye4nDLDoAcMDpQyEpxi7S7pzn\\nqj8JC9pm0aEt2Oi46iWFe2CopehsCM6acPKedZ8r1tYVoYsmIL7YcqdWRKwtADUbitHC3phwzsMS\\nUeAy5tcuiHrMTqBl4xB/XQy35hNRuWZCrIHZXtEW2xKxt/5acX9Lxhg7bZHQnVuZYQEfekKiJseO\\nifqyRAw43rCopUB9sZZtU/Qz2Chqs5AU9w+3uPouvxTxzprHjx1pF/M0clBAjPkpCNYWQUIrD5Q6\\n3WqaJmC8qiWYY6ewLBNNy4s5tXJir/NVC1BQzrmEG21L7LO6R8Cq6UERKzx6EE/TJrJ6kxiZuU6w\\ntiVqZewEmp3HW7mQ4IKt5Gf6sQspGN4PtfeKmtD021385jnfV7McMx0veX7NZDJg22iet45WmU+a\\n7gXbLr95K6usssoqq6yyyiqrrLLKKqusssr6dyxN09ixYwfXrl2jv79fudC9XfX392MYBtu2bXvL\\niN50Oq0cme7094+3ksfjUQCFWz6fj8997nO8//3vZ+/evRw5ckTBI/Lxmpoatm/fzvbt26mqEsk0\\nfr+f7du3s23bNq5evcqFCxe4du0a165dY2xsDK/Xi23bKkr37rvvZseOHaxYsUKN08MPP8wPf/hD\\nrly5wqpVqwiFQgrISSQSRCKR2yC/iYkJbt26RSAQ4N3vfjenTp3im9/8JgAf+tCH7ghAZrNZ/vt/\\n/++cO3eOyclJhoaGmJycLHHGSyQSXL9+ncrKSjo6OqisrKS5uZnBwcESyG8+uWGQjo4OTpw4QUdH\\nh3JwckMjElYrFAoqEtfr9dLR0UF3d7dyVNN1XYGOMqbW6/WquF/3vSUM5nbuk/epq6vD4/GQSqVu\\nA+Asy2J2dhZd11mwYAE+n0897q41CfxJUCcYDBIOhxkdHSWdTisXSAnJyTE3TVOBbGNjYyxevJgL\\nFy5QVVXFjh07boPxMpkMzz77LDdu3MDv99Pa2sqKFStoaWlRsZtDQ0MKgly4cCG1tbWqHW5nslgs\\nRktLC3V1dRiGoaCx+cBR6XI2OztLVVUVNTU1GIZBPB7nlVdeobGxUTmkSUjU5/OxZ88efvjDH6oI\\nWrlGZdRrPp9namqKY8eO8frrr/PBD36QWCzG+fPnCYVCZLNZstksfr9fAXWJRILJyUkFVFZUVBAO\\nhykUCpw5c4aOjg6qqqpUPYTDYWZmZkqgPHcNSCC2ra0NXddL3PoMw6C2tpbJyckSAMsNtEqoyrIs\\nMpmMgteWLVt2G/S1cOFCtV5kvKqUruskk0mi0ahykpS1rOs6/f39DAwMqGsFAgHq6+vZtm0bO3fu\\nVHyGhL22bNnCnj17OHbsGFu2bFHOpLJNco5M08Q0zf/L3plHyVHd9/5TVb13z75pZrTvIAGS2YQ2\\nkARmlx1McEISOwlgx8FZ7HcSP5+cPJ+TEzt+5+Wg+OWRGHNO/JzYxPAMHPwMyKAN7RICLaCd0Wgk\\nzT7TM9P7VlXvj1v3dvUskkiMk2fqe440M93Vt+793VvVXd2f/n5VveS8DA4OcvDgQVasWKEAQAmM\\nyvjaWbNm8ZWvfIXa2tqKuoBw83vooYe4//77+e53v8uRI0d49tln+Yu/+AvlWBeLxZSD4y233MIr\\nr7zCa6+9poBCTdMYHh5maGhIQZptbW2cPHmSY8eOkcvlSCQSXLp0if7+fmbMmEGpVFJAqTzu3WCm\\nnN9MJsPWrVvJ5XIcOXJk0gj2bdu2sWjRIu644w6uvfZa5TQaDAZZt24dzz//PPv372f16tUV4y8W\\ni3R0dKBpGjNmzGD69Ok0NjayadMmMpkMBw8e5L777sM0TRVBLI9Nt0NjIBDg2LFjWJZFMBhk6dKl\\nBAIBjhw5wtNPP82f/dmfKZdICalLJ1QJnmezWWprazl37hwnT57kr//6r1mzZg0333xzBdNjmibv\\nvfceW7du5b333gPgt37rt7jpppv46le/yunTp3nqqad44oknmDlz8iTFsbExXn75ZXbs2IGmafzh\\nH/6hcoyVzqxynO4Y9Q8rCVdf6bWBJ0+/LH2kgN/o6ChQfjFzNbbWH1aSgJaa7ITo6eOhpUuX0jqt\\npcKF7mpVHOtCN7O0zZzOkiVLrrj9RwUMuN3tjh8/zs6dO9UL4XA4THNzM2vXrmXJkiWTXjjqus4N\\nN9zADTfcoOyKr7aNqWKCAyXx4sw282i6A3FMAlb46xdSGO0sRwfftoINGzZMOn7LsnjmmWfYu+8A\\n2aJGaPraCZHEWkgHowbqljoQ2kHIdKMNgd1wkwBfdF8lGGabZQBKuoZZJnRvduC0uWXnLRQDWI4j\\nDxmz0wAAIABJREFUTpwRNxhRtPRF7PQlsY/Gm4VDmea4kgXqhTtc+iIM7IKGmwSY437DQHN2YNto\\nGVErGWtqR2dBKU+FLZXuF45xVk7APOFW0Xcxsw4sp7uc9sZBNgXnW1gy/jPUUN7exomPddwHNRn/\\nWQV9Wx0HtTMOCCmd5mwRaZrucoDBTzixp+51ZznuZvNhYLeA1wYPgO99sW20DbSg477WL8C7Cge4\\nm4RD13hbrnALjCDgq8n6GjoLoWnlOUcTkNbwu2Wwy18jIDMJz9lmZR9G3hNOiY23QqhRuKMVEhA/\\nJMav+R0QcI7jgBhAgWGJs6KN+GHh/la/vNyXijeN7ImwmnTbq5onbrfNcrSvXSg7lwUbKuui2YBP\\nAIO2qYA0hg6I+6sXTtx3oB7oEs51+QEU7IgmALXMJce1UkJqJcByoGDQdQPbzAnHzNgsqL5GxKnK\\nmGMQ8yP7VDW/MvY4WF85BtsqRx/bpth3IS6ASLsoxu6LifEbDvw6dlL0y4gIR81AZZxDhTRDQHK+\\nKujbJtZC6IKYXzSxDkKOu2uwUWw/ehxKBXV82XKeMMWxOHrUAUWdusljauht4chXvVBAodKZUTMc\\nEJRKKDPV5cRI58tz5lZxzInOjonjMDav0tkvNlv0NdXpAvxcUjHNVWi6gR2ogfpPwPBBtGSHcFXU\\nNIRrqFkGEm0bXdeIRsWbc4muc9iaISKaG2+GcDsM7RfHXd+2MmDpXodWSQF8Wq4XOz+Crtn4tAJ2\\n/z6KBIXzYKxdQLDjY+MBf+1sIjPWoOk6mj+GVspjWwUHvI2ItRVpEcfh5R6vaROeX0OhkOOq+G+7\\ngLOtImhaRVSHJ0+ePHny5MmTJ0+ePHny5MmTp/98WrFiBT/+8Y+Jx+OcP3+eOXPmXNXjent7GRwc\\nJBqNcscdd3y0nbxKzZw5k9/7vd/js5/9LOfPnyeTyWAYBrFYjDlz5kz5WaimaSxYsEBFZAKMjIww\\nPDxMLpcjHA7T1NQ0KXj34IMP0tnZyaFDh3jvvfeYN28e9fX1WJZFqVQimUwqtzDbtunv7+fChQsE\\ng0FWrFjB7t27eeedd7Btm3Xr1vHggw9OOb7vf//7HD9+nOHhYTo6OhRA4R6H/DcyMsLo6ChLliyh\\nubmZadOmcfHiRbXtVHG9Mhr07bff5ujRowAsXryY9evXs2zZsortg8Eg/f39CjSJRqN0dnYSj8eV\\nC5v8PE3GjcpYXr/fj2VZyuFvMkk4UMbqlkqlCghRxlz29PSoKF1ZZ7eTlzsGVAJ+pmkyPDzMyMgI\\nhUKB48ePk8vlKtzn5FhlpGgwGCSZTHL27FkWL17MgQMHWLZsmYq6lg5xL7/8Ml1dXVRVVbF69Wqm\\nT59eUWPLsmhsbOSBBx6gs7OTbdu24fP5qKqqYubMmQq0k+tGuh4mEgmGh4enBGTz+bxad3J/NTU1\\n5PN5MpkM7733nrqvqqoKTdN4+eWXef3110mn04RCIaqqqtR7xBJ0FKYmpnKE++lPf8qnPvUp1q1b\\nx969ezl06JCK3h0eHqanp4dkMqnWRCAQIJFIUCgUaGpqorW1lXPnzjFr1iyamprI5XIqgtQwDCzL\\nUvWW44rH42iaRnt7u1ov77zzDiAYh/r6ejRNI5FIVNTaDQHKyNOWlhZCoRB1dXVcf/31attUKsXr\\nr7/O4OCgWpcyTliuX7/fTzqdJp1Oq/3IOklosqmpid7eXgKBAJ/73Oe48847J0SmyvU5Z84c7rrr\\nLt58803+/u//ni9/+csTEt4syyIUCqnY6A8++ICnn35axea+8MILhMNhbrjhBlX3t956C8MwmDlz\\nJn/2Z3+mILHJjnt5LD355JN85zvf4f333+fFF19UznP19fVEo1HGxsb4u7/7Ozo7OzEMgzlz5nDb\\nbbfR3t6Oruv09/ezefNmenp66OjoIBAIKAAwHA6TyWT4y7/8SxYtWsTGjRtZtGgR6XRaHbtuEEy6\\ngj799NMkk0lCoRCxWIyVK1eyePFiQqEQuVyO48ePs2/fPs6cOcOZM2e49957uffeexXIeeONN/LS\\nSy/x/vvvk0gk1Dnctm0OHTpEMplk5syZzJw5k0KhQEtLC5/73Od49tln2bZtG3fffTeGYRCJRAiH\\nwxWRzLZt4/f7ee+99zh//jyRSIS1a9fyu7/7u9i2zVNPPcXJkyf55je/yac//WlWrVpFNBpV61qC\\niEePHmXz5s188MEH1NTU0NTUxODgIP/n//wffvrTn3LttdcSi8UoFApcuHCB4eFhte5+7/d+j5Ur\\nVwJw99138/zzz3Pu3Dm+8Y1vMG/ePG6//XamTZuG3+9ndHSUffv28c4772CaJoZh8IUvfIHly5dX\\nnEMAmpqaAPE8n8lk/k1Jo52dnQAKLPXk6T9aHykNJ+l5qVwu9wvfx9jYWMXf3sH18dVULnRX0tU6\\nzrn1UQMDuq5z3XXXTXjx82H0YduYMia4fhE+Xx0lE2yzBPlBtFSniJrVwBdrRQ/Vkjr90oTo4Klq\\nKb7FcZBsUSM6955J50m56oGKoaVnK2R70FLnsKvmTepEJWQLEAtLuOflR8W/1EURj1u9ACIzFQ/l\\n8/vQdTBTXaAbaIEaB+7zO1BRLWVXLVv82rRC3Ja+IEA4n3TgEnG4FFOQG8BOdqBJCKVuDv5pt1Es\\nCYtp8c0BDYyggBvT5wRMVSVBOgf808Z/g8kWEJHPJyA/Mw+pc2Xnv2CduF/KHZUq41E1hBtX480w\\nsBcSp8uubGiQPC3GZgREVHCosQz3ScBLwkd6AFrvFi5fo0eFy9hoEsZOTJwanxODGpvrxPdO8i1K\\nzXnxa5fKtwXrBFw0sFfAiBL00gJi/wMHBCCl+x3XrzYHnKO8n2C9iK6VLm+OI6DWvAqqF2J3vyFA\\nOCMk4KhIW7mAso1QswBFM91ivGnnjYT6T4j+2s54FLxXLMNqmUsCDPRFhaOehC2TZ6GYBAwwi45z\\n2XinuooCCcBp+G3hAhdshKqF5VrapgNnXhSPD9YJ4DLYWHbRyw+WI3etImCh+evBKmCbGRFjjSbW\\nke6HuhsEdCijXd1rS25Xc40AHjM9rtjjNle/bWct66IPmV4YPiSa81WJ+RrYJYDJcJtoM3lW/GxY\\nDv7xbzpJt8xxUmtlj3i8BGX9jmuibQoHPTl3gfoyDKrpAlLMDTjHmAN5hqaJOOhSVrjxpc6LORt+\\nR5xrGm9GOYfqMmLXFnOqI9wJMcU2vqgAPMPTXBHDDnxaTIm469ywc45B3C/dAouub/TKaXDHNFfN\\nEwAfQGwGjB3HLqbQsn0OnGmgGWXg1C7l0HUDyzJJ9x3DKjoug9PWizqiQdNtqHOddLqUTp6a7tRk\\nEDvViVZKo1lFYlVRfvu3f5vt27dz9mwH5ugxcT5wvSGhAXqwimDjtQQaFquLcN3wY+l+tNrFIia5\\nmISRo2gjXNXjxz+/Njc3Y5zpoJTqxRdpnLherqBSqgfD0Ghubv7Qj/XkyZMnT548efLkyZMnT548\\nefL0y1MwGOSJJ57gf/7P/8n58+exLIs5c+ZM+TmFbdt0d3dz9uxZQqEQjz76KI2NV37/KBwOK3jM\\n7c71YSQdAMenlI1XJBK5YmTwlVRXV6ec/i4nwzD4wz/8Q7773e9y6NAhPvjgAwzDoKWlRTnJJZNJ\\nkskko6OjyiEtEAhw4MAB5Zb26U9/mo0bN07poNjf38/evXsZGxvj3LlzE+A+2Re3bNvm+PHjhEIh\\namtrqampYXR0dFIASj4+EokQCoVYu3YtpVKJY8eOcerUKU6dOkV7ezu///u/r+APv9/P3r17yefz\\n6LpONBqlr69PxaC6wTopN2glxy4BKkDFzhqGgc/nY9asWSpCtVgskslkFJAk38vs7e3Ftm01X+Fw\\nWEE04xUKhRQc1NvbS6lUor+/n7GxMYLB4IQaBgKBivjYYDBIKpViaGiISCTC4cOH2bBhg6rpu+++\\nS0dHB6FQiDvuuIPGxsaKeksnNk3T8Pv9LFq0iJkzZ/LSSy8Rj8fx+XwKdpPzk81mGR0dpVAoXNZh\\nc3y8tNy2traWZDLJyZMniUQiaJp43/bUqVMK7ovFYgSDwQmOXe55kW59EvL70pe+xCc/+UmOHTtG\\nMpmkv7+f3t7einkdX8/z58+TSCRYuHAhFy5cwO/3U1tbq+obCoWUa2I+n8fn83H69GnlshaLxSiV\\nSgwNDTE8PEwoFGLp0qUcP35cPT6VSlUYxUg4r7q6mlgsRiAQwDAMVq5cqc4lqVSKV155hXg8rhz5\\nZA3Ln0uiIl1lbKo8ZqZPn64S4rLZLD6fj0gkwsKFCyfAfW7pus6jjz5KIpHgwIEDbNq0iRtvvJHb\\nb79dub5JkOzcuXPs3LlTgZq33HILzc3NvPHGG3z/+99n1apVrFq1iqamJvbt20coFOKRRx6pcAOU\\nmmwd+Xw+Hn/8cf7Lf/kvHD58WAFaS5cuJZ1O8z/+x//g0qVLNDY28vnPf54lS5aQyWQolUr09vby\\n3HPPkU6nqampYfHixaxYsYLW1lZisRjDw8McPHiQt99+mzNnzvDUU0/x6KOPqshn6Uzo7t8LL7zA\\nyZMnqa6u5jOf+Qzr169Xx7zs/y233MIjjzzC9u3beemll9i8eTOapvHQQw+RTqdVfHBfXx9jY2MK\\n8DNNky1btgCwfv16kbTnzPHy5ctVVO17771XATbLWspzWD6fZ8eOHfj9fpYsWcLv/u7vqm2+8pWv\\n8Mwzz/DOO+/w3HPP8ZOf/IQbb7yRpqYmdF0nmUxy+PBhBgYGlENgNBrl9ttvp6mpiWeeeYZ4PM7R\\no0cr4PTGxkbWr1/P2rVrK54L58yZo2KQdV3ngw8+ULHy7vnWNI3ly5fz4IMPMnfuXGzb5tSpUxw/\\nfpwLFy6g6zrd3d3MmzePjo4O9u3bN6Ux0VTq7Oyks7OTcDhcAdF68vQfqY8U8JM2mPJgGx/Z+4vQ\\nmTNnKv72AL+Pt6ZyoZssrte2LYpjXVflODdev6rAwKQxwfGjYNroloVtWdi2pcArTfdhZfrRC4NT\\nRgePl2VZvPnmm2TzJULT104JYSpXPaskoh2DddAkYDQt3Ykdm1uOgJWgmSRebBvS5wVM1HSreGy2\\nHxJnsYsp4fSW7UdrvU2MA/AVBrCsArbmF85uIKCdQG1l2/IRmk9ExYaaBHBWTIrY3lHpbCYdvwB/\\njFDLUoIOhOIPQjKRADQn2tKpVTEp9hMUF5UYMhbZLrNMFa+dnfZzAwL08sUch8LJXmDLOGBbgFS6\\nX7QdmS6AnWJKQGPRNjBLwuHOtgVsFayvBAbVZDogkWaI8TY42/ZtE/cFq8U+dZ8LgGwu12aqGG3l\\nhjZun5HpTpRtUrjoObUl+UEZ7mvdIPpgj/+mnAu8U46A2wTklTwrwKtCHIxwZRtmrtIZT9MEUBhp\\nF/Ue2C3aCNQLEEzuR/eBhWjXzIt41qGD4r7qhQ7o5rgwJjvEwxpvFSBYpmcSkMovHP6yA2UXQtup\\nv3usti0gyIwDqDbe7EQma050sIy0rXPiVPuEc14pg11KCJDMzIv4Z8NAC7WIumT7HFdBJl+DII7H\\nptsEXKjGEBHubaEmAYuSEhGuiQ4R64wmHOnqlwuwLn1R1MmIiL4UU078cKsTeWxMvu/xcq/rxElx\\nW2ye40zpwH0SBo1Od+Y6L6DJ/LCAPBtvEfu1TRSc6IuJSO6qhQKSHDoowDeA+htBs8rgpozrHdzv\\ngJ5RaHKDm67+V0QMHyzDh00rxXnAcaWjlBw3UFvApqWMgJfD08Q4QDymej7Ej4k1FhkfKS8m0rJM\\nMukM9pgLpgy6oGbNmHiuGzkCcfdCsFznA410Osv27dvZsGEDxWKRc51d6CFxPtAMP3qgikD9Anyx\\ntgkX4HqwGrJxEcU+4wG0TA924gM0M42u2ZM+3rZtisluCvGzlJI92MUMFy5c4H/9r//F9OnTCfh0\\nMsOnCTYtmfT1wFSybYvC8GmifoO1a9de9eM8efLkyZMnT548efLkyZMnT548/cfoE5/4BI899hj/\\n9E//xKVLl+jr66OtrY22tjYFShWLRfr6+uju7iaXyxEKhXjooYe46667rmofmqaxZMkSDhw4QC6X\\n+9COQLZtk8vliEajLF269EOP8aNUMBjky1/+Mtu3b2fLli10d3fT19enICHpVOd2ljNNk9ra2gmx\\nwVNpx44dZLNZRkZGlMvSeElwMJ/Pq/f/bNumq6uL6upqampqGBsbUwCdhKrkY2tqaggEAtx66638\\nwR/8AQCZTIa9e/eyefNmLl26xKZNm/ja175GdXU1XV1d7Nq1S7lBjY6Oqt8nA4jkbYZhoOt6hYOf\\nGySLRqM0NjbS1NQ0AZCTj3cbgUijHOngNxXcB1SAb2NjYxSLRfr7RdKL20nQHcspHycdBP1+PwMD\\nAzQ3N3Ps2DHWrl1LIBCgv7+f7du3Y1kWy5cvp66ubkI8pQTo5O2aphGJRHjggQd47rnnyOfzjIyM\\nKBc/OUfuuNmp5HZkc28nnQCl81xDQwPt7e383d/9nTqWJVTohsAkiOiunXRIzOVybN26lVgsRjKZ\\nVBGt0plR1lkCm3LMgUCAeDxOZ2cn8+bNo6enh5qaGgVXaZpGNBollUqRy+U4efKkisT9xCc+oQDZ\\nrq4ubNtm1qxZzJo1i3A4zNGjRwkEAkQiEeXUKGHiUCikom3l2pd9sCyLzZs3E4/H1WNkDeXx666x\\nBP7C4bCKXO3p6SEcDqt5mz17toLaxruijo8QlkYyNTU1bNmyhbfffpsDBw7Q2Nio1lA8Hqevr0+5\\nHd5///3ce++9Kgb4pz/9KXv27GHnzp00NTUxNDTE7NmzmTt3LoVCQTlZTraG3GurtraWG2+8kX37\\n9tHT00N7ezvXX3893/ve97h06RKtra187WtfU1xJMBhkYGCAf/iHfyCZTDJ//nwee+wxWltbyeVy\\nKuK4qamJmTNnsnHjRnbt2sX//b//lx/+8IcEg0Guv/76iphjgN27d7Njxw7C4TBf/OIXWbp0qTLI\\nGt//aDTKAw88wPTp0/n7v/97Xn/9debMmcPy5ctJp9NqvuV507ZtfvzjH3Pu3DlisRi33XZbRR0M\\nw2D9+vW88MIL7N69WwF+7nrJbU3T5NChQwQCAe69994KEE+6Ih4+fJif/exnHDt2jG3btqnjQkKw\\n0WiUxYsXMzAwwNjYGD/5yU9ob29n2bJlvP3226xYsYLly5crGHbevHmTsgTLly8nFouRyWT4r//1\\nv9LT08PBgwdVqmc0GmXBggXccccdNDQ0kMlkeOONN9i2bRt9fX0qMti2bf7lX/5FuSC++uqr3HHH\\nHZPGgk+lrVu3ArBmzZrLno89efpl6iMF/BoaGir+fv/993+h7ReLRY4dO1bxzYmpcrg9fTw0pQtd\\nwyIBAuh+bKtIKdVDYfj0VTvOjdfatWvZf+Ag6V9BYOByMcHyhSOI409aul8pOtit999/n96+fiwj\\ngr9m6uPV5/dhGDqlkgOO6AZEZ4ARwS6mhdNaqGXco5wXQ5luAfbIyN5AfRmgSV8SEZmZbuyht7Fj\\n67ByI5gDhxzuzMY2swLkiUwf1/Y4xzBNE7BW1QIBQKU6IHlOAJCaIZzeIjOxQ01osZh6sVYqljBN\\ny4HFXC8kLOciVPeVAbzx0nBc4hzozyqJGF1wYl/Hu+yZjrOcG3hzID8J31XNE3DV2AkojsDoCVG/\\nQK2ogT5JFLVtIgg2vbKf0RnlONuqeaI+EkTTdCf+1Bb7nUoqbnSSby/GZou+Jk6J/hfT5e0bb3GA\\nTLu8T3CiYd1RznalI+DoKeH0qNqoK9dOdLyyD5oh/gVqoG6ZgMKSH4i+qU0dENDMCVgrfgTMrAAH\\ng40C+DPzYr0URkWkcKRd1Dt43hUlfFTEFY+XLypc+RIfQDEB2W4Bd42dLsN9rRucscgYYFffJGSp\\nQMVdAhLND4taWSb4Ith1S6F/pwDEaq6ZGsqU61EPQMOtEPxAOAQW4lA8RkU8MICZF+Bu060isto2\\nhQtioF7sqzAqnCB1n1NXCbpaTHS0HNcPOb6q+QJEK6XF8R+eJmBOCffJ+sh+pc5VgqIB+UaUT8yV\\nbZbBPM0WtZu2wYmOviDmNjabilhmuT9f2HHCbK6sQ8W6miKOunpheRszV3YRBciPlMHRmkWVMCqI\\nMXOs0vlPlUrE9FoWAhIuJl2QsOyTVv5ZvVA4b/ZtEyCqbYs++6LCXTHSDqFG7GwvVuo8HZ2X6PmX\\nH1FdHcMfDGHULyTUfGVH2UD9Aoqj57ETZ6F2sQBcg/X4AwGi0co3S23bJj90gvzQSax80klFNkHz\\nM5rM8tbufQT9BsVCHko5CqNdBOvmTLrfyVQc60I3s7TNnM6SJUuu+nGePHny5MmTJ0+ePHny5MmT\\nJ0+e/uO0Zs0aamtr+dGPfkRPTw8XL16ks7NTATqmaeLz+fD5fLS1tfHwww+zatWqD7WP9evXc/jw\\nYbLZLOFw+LKw0nhJ97LW1tZ/tzvfRyHDMLjzzjvZsGEDJ0+eZM+ePQwPD5PP51XE7/z584nFYui6\\nTiwWY9asWVPGBrtVKpXYuXMnmUxGxTNOpWAwqGolPwMeGhpSUKWMEh0fiyudES3L4sSJE7z22mvc\\ne++9RCIR7rzzTlasWMF3vvMdzpw5w9NPP83nP/95/uEf/oFisUh9fT2jo6Ok02ksy6qA16YC0yRk\\nKD8bk/CNpmncdNNNCm5zw6Bym/HAiITwJCw3mca7CY6OjlIsFkmlUgqAkSoWixW3SShTRvuapkmh\\nUCCRSBAMBnnppZfI5/OcP39eRcvKms+dO5eamhrVrgT83MAVCCOeuro6BgYGCIVCJBIJ5Twn3cLc\\n43CDilKhUEjFyMptSqWSclSU7odjY2P86Z/+KZlMBtM0qaqqUu25XQIlfCnBHlm/YDBIPp/n1KlT\\nKsJ4cHBwwnzIdeCueyQSUVHVbW1tJBIJLl68yLRp0/D5fBSLRZLJJN3d3SoqV7oYvvXWW/j9fgVl\\nBoNBpk8Xn0c2Nzezbt06uru76erqIplMVtRJ13UaGhqYOXMmkUiEPXv28P777xMIBKiurqa/v19B\\nZpqmqfXnrnsoFCIcDqvPeSW8FovFME1TAaCapvHwww/z3e9+l507d/Jrv/ZrE1wZx8swDB566CFW\\nrVrF7t27efnll0mlUly4cIFQKFThHPfwww/z6U9/GsuyyGazrF+/nmuuuYaf//znvPXWW6RSKUKh\\nECtWrFBjKRQKExIkp9Ltt9/Ovn37KBaL3HHHHcTjcd5++218Ph9f+cpXKkyj/H4///zP/0wymWTx\\n4sV89atfVWMNhUKYpkmxWMQ0TXRdVyBcTU0NP/zhD/nf//t/89/+23+jpqamIpb5tddeA+A3f/M3\\nmT9//lUBrsuWLeOzn/0szz33HK+//jo333wzwWCQbDZLsVgkEomQTCb58Y9/zO7du9F1nSeffHJS\\ncHDx4sUAFetayh0rvmvXLkqlUoXT6Ph5nT59OoODg0QiEWpqali4cCF1dXVEo1FmzZqlHHMty6Kz\\ns5MXX3yR7u5uRkZG0DSNs2fP8gd/8AdXBOwCgQBr165l8+bN7Nixg9/6rd9i+fLl6rzvVldXF089\\n9ZRK/KypqWHp0qVEIhF0XefChQucOHECXdfp7OzkG9/4Bn/1V391VTzI/v372b17N5qmsX79+itu\\n78nTL0sfKeB33XXXqYx5aZ8cj8eVs9+/V6+++irZbFadqOrr6yc96Xj6eGlSF7rho2QHjjhAgoZh\\naFftODeZli5dSuu0Fs6d76Y4doFA7eyrfuz/L8DALyImeDLt3LmTfNEk0LDosmCkhnhxbZpZbKuA\\npjludtXzIX4UUl0O4OdAahIgyo8IKMouidvi74rY0KbbypCgLwZ9WzETF8hc3IWZvETYbxOI1BEf\\nGXPgvHlTgzgTOqsJd6xIi4BzRo8JeCY6S0AvVoF8Pk8gGEBDXBTYCAfECllFsUat0uSOeaoy0qnQ\\ngeyKzgVa2AU82g7EpyA1XYxf00XfrJJoxyqW42LTFwS4YzkOelZBxMX6Y8L9LDzNAQet8jZucE5D\\n1C42V0T+JjvKcJJmCPjLypfBoMmgSXfcaGxueZxWSYw12FjeXvcL0NMqCWAvPM3ZnrKbGM7vug/l\\nqCblOALaxTFxn7+qEup0OxSOlx4Q9Ym0wmhYwGjD7wqoU/cJqCw3IAC8Uqpcr0ICet8o98MqOJDl\\nnDI8VzVHgGK5AQFvljIONOoHfxQiM8qgmG2J9db3FtQsEZApCOc+f5Xj5ua8wSHnXtNAD5ZrG6gV\\noOLQQWfNOECkjPX1RcR4MpcEgFYhe6JhpOFAo3oIhvaL9mwnGjpYL5z8Mt3Y/hq0moViNq2ScA2U\\nY+/fKZz+0CHoHOdyvRouWHAKO3gAws3CZc62RSy3BlritIgebry1DPDZzjZJWbtbXHAfYj+6X9RG\\nriUZdx2sdcUBfyCOec3lJDp2Wvxef6MAQrG44ksvd8Rw4owAiHODKMAx0yuOden2ZxXRYjPFGMdL\\nxl1bxQl32RIoRkNLXxTTKNehciEcp6H9AgL1Rcvuh2hifVpFbE2HQDX+xiUESkOku/dSjI9imwXy\\nQ6euCoj3xdrQg1WY+SSkL2GHmtGg4o0D0X+TzMVdAgYE4fpYNQ87UI/hDxKJBCilekkPnwazgGXm\\nyXZtxQh8Cl+06bJ9ADCzcXLd+4gGfdx1113/pqgVT548efLkyZMnT548efLkyZMnT/8xuu666/ib\\nv/kbTp48ybZt2zhy5IgCkgzDYPHixWzYsIFly5ZdlZtPV1cXO3bsoLu7m2w2q6AmCexcrYufZVmk\\nUimCweCH/lzqly1N07j22mt/oRDi8PAwY2Nj5HI5MpnMZbeV0bbFYlFBI7ZtMzQ0JFI7AgHleCf7\\n644U1jSNkZERfvSjH3Hx4kUee+wxFUP6J3/yJ3zzm9+ks7OTv/7rv8bv93Pdddcxe/ZsfvSo2L7/\\nAAAgAElEQVSjHymIZ7yD3OU0HryTcZFLliyhVCpRKBQIh8PYtl0RbStVKpUoFotqHFcj6c5n23aF\\nG6KmaRVwn8/nIxgMqvUWCAQUpCfhqkKhMMGop1QqcfKkSMh55513aGpqYuHChbS3t6NpmorQHK/l\\ny5fzxhtvqPtt26aqqgpAAX/j3d/cisViGIZBVVVVBUzoBgWrqqqoq6vj4sWLlEolDMNQwK2E1ORY\\npQuerL+7Tn6/X4Gi0glRpca4IMbJFI1GyeVyDA4OEg6H6e3tVSCVnEe5j+bmZvx+P11dXQwMDODz\\n+dQ6aGxsVPCbhMfmzZvHrFmzGBsbUzG9MnZa9kfTNKqrqxkaGuLIkSNqbUmA0+3aJ/shayENXXw+\\nH6lUilKpRDabpaWlhdHRUXw+H9dccw2LFy9m+vTpdHd38+abb3Lfffep9qZSIBBQccXRaJR0Ok1t\\nbS1PPPEELS0tbN68mf3799PQ0KDWQiQSwbIs5YT37rvvqvZmzpyp1qyEEa/kpmbbtgL4pJPda6+9\\nhm3b3HzzzRMS9mQUazQa5Y/+6I8mzHkoFKJYLFIoFIhEImQyGQqFAitXrlTxrzt37uTBBx9UYzpx\\n4gR9fX3U1NQo9zy32+jldPvtt/PKK69w7tw5BajLCNyf/OQnHDt2jGKxiM/n4/Of/zwLFpQ/H5LH\\nZKlUUtCf+1wp6yPPHcFgkD179uD3+7nhhhsqnCulSqUSmzZtIpVKsWzZMr785S8TDAYrzntjY2PK\\nvXD58uVce+21/O3f/i0dHR2USiVGRkZ45513uOWWW644/nXr1vHGG2+wb98+2tvbWbNmzYQ56ezs\\n5Nvf/jb5fJ45c+Zw3333sXDhQgXzVlVVoWkavb29vPnmm2zZsoUTJ07wta99jW9+85tTHteWZbFj\\nxw5++MMfAvDII48wbdq0K/bZk6dflj5SwC8Wi3H99ddz+PBhQBz8zz//PF/60pf+3W0XCgWeffZZ\\ndeKQ34Tw5Aku70L3YR3nLMvi/fffV21Im2fDMPD7INe9FyNYPWXUrFseMAADAwOYpk0gNj4ucqIC\\nwSClkngxapt5ND2ALSG2UloAQxIWse1yvKdVFIBRZDoMH3IiNC0RM6lpArRpuBG7fw+FweP4/T6C\\n0Wrxwso2BYOjGePYs3Eg2mSyLRFjiS7aGToI09aDLyIuKIol/H4fpmU6zbnmPz8i4oM1BEATbZ+k\\n/XFdUPDeeBBNc8F9DpzkhtQ0XUBYMm5ZOfQ5cKHuF4+TsbX5ISdGVgd/HdQuFfCU7nNARLu8X4Ca\\nhcJhr5gScxJpmwSSm6KWmUtibv1VAtgbDyn6QqIfgVpoXg2DB6A4WnZOk3OHC1CyXS6Q7n1Ll7fh\\nt8U43A6IUzkUui825fqLzYXRowLwkm6KmuaURUDF+MTFq2ZmsM2CaFf3O7XTIdjscm10YLbodMdN\\nTQJ6jnOgdF/UdAH6oQtwcvS9MrAXbCxDXZouxqcZjhOdK0ZWMwQwF2kX0FahiFhPPgemdJwYR94T\\n69kXEwCarOFkfJ2mQ2EMRg6XwU7bFJBtdIaYr2wf6IHyxbRmiPhdBZ+6au8Pi5haq4iKPB6/psfL\\nNstzZQREpG62T7h/+iIOmOZSts+JuY6Oc+6UYzJEfySgpxnlvoRby3HAuYGyA162T8CdvkgZvrVK\\n4ti7klTEcFKAjhJ61XSIvwO2hVYSb87YkXYBBCq3PQfQs01U3PV4F07LVK6emhEQ5xw0sQ7l/eP7\\nmTgjHFBVFLZrHVA+1sTFdQh/bDZGsJr0uc3CsdFKXBUQr2kawcZryHYfxB48AM2rMSIN+Pzl/ti2\\nXYb7NL8TfdyGbRXRgFAkgi8YwBdpJNi0hOLYBTIXd2OX0qTOvkJ41gYCtbMmhQ1t26I41kWuex9h\\nv81tt61gw4YNl+2zJ0+ePHny5MmTJ0+ePHny5MmTp/98cgNqEmawLOtDOe4dOnSI119/nY6Ojgn3\\nSQe0ZDJJsVikurr6su1KgMjn8zF79uz/lAlPH7XS6bRyY7sayYjTUqmkQDHpquaG4GQcal1dHcFg\\nEL/fT3V1NaZpkk6neeuttzAMg0ceeUQ5gd111108++yzpNNpGhsbOX36NEeOHJkQJevWldaNBLbk\\n59ajo6OcOnWKOXPmKPcx2W935GuhUODIkSMKjhkP40wldx3Hw1wSoJSxtuPHEQgEFDTljnHVdR3D\\nMAgGgxiGoeYrn8/T3d1Nd3c31dXVrF27lpqamgp3uZGREeLxOLlcToF41dXVFWY94/sx3sXP7/cT\\nDocV4JlKpbBtuwJSNAyDefPmceutt/LSSy/R39+voEa3U58ce6FQoFgsqjbd+/b7/eTzeUqlknIB\\ns22bTCaj9ivbky53Pp9PraNsNlsxX9IVTToQyr/7+/uVC5yM15XzFYlEiMUmJlrZtq3mCFDzYVkW\\ngYD4fCUSiaio52QyqdaZlOyH3+9XDqaWZVEsFhUIK+OJfT4fiUSCfD5PMBhkwYIF6LrO/fffz/e+\\n9z1+8pOfUFtby8qVKy/rRGcYBjt27GDr1q0KJrz99ttZtGgRoVCIc+fOAcJt7fTp04yNjWGaJpFI\\nhFmzZqn6SYfFUChEJBKhWCySyWSUk5081sfXrFAoKHhN0zTq6uoIhULs3LkTYNL3+7du3Yqmaaxe\\nvZpoNDrpmHw+n3I3dEN+q1atYs+ePbz11lsqAnZoaIgf/OAHFAoFbrvttoq5k06Ul1MwGGTNmjXK\\nxU7XdRX/vG/fPvx+P0uXLmXjxo20tLSQz+fVuvT7/apGqZRId3JHgQNqDYCIL7948SIy3lzWUAJ8\\nIADf/v5+WlpaePLJJ9U5ZTwwC6hjJhKJ8Kd/+qf8xV/8BcPDw5RKJX7wgx8wY8YMWlsvzwi0tLTw\\nyCOP8Oyzz/L888+TzWb51Kc+pfY7OjrKpk2byOfz3HLLLTz22GMKBpbPB7I/ra2tfO5zn+Paa6/l\\n6aefpqOjgyeeeIL77ruPO+64g6amJjRNI5lMsnfvXrZt28bAwAAAGzdu5J577rlsXz15+mXrIwX8\\noGxTLZ8ov/e973H//ff/u6N0/+Zv/oaOjo6KJ46NGzf+e7vr6VdM/x4XOsuy2LJlC2+++Sa9ff3k\\niyamaSsXQF0Hu1TAtvIkP3idyIxV+GtmesDAFZTLiYhJzbj8ixcQ6Ij85puE/ESepI1m5rFLaQE7\\nZQfKkaYgIKKmFQLC8VeLSMn0JQicFLCSbQvwBgHAWfgYS4mLe+FsZgnnv+QH5Qjeqa7b5DnItsvu\\nXpouoCKrKPbdcCN2qJlCoYDf73NBUY4DW/oiDL6NhimYm1Qn1C11gWUu174KSTjKqWUpD0YI5aiF\\nJsCoCRGzWtlFT/NXRtEGaoWLV7DJcSorQX5QxK2W0lAYgoG3wF8LtdeI2mA7EcXnoJR0XOMQ4x9+\\nV4BK4fFxypJWdLn4ueNGQ80wsNuJWnagQ3+VgM5sW4wz5PRRMyDchoISnfFIh0TbLIi+aBoCGpNd\\nsAWoKCNPpQOgdIoDl/OfVY5hln3SfMLdMNCAiE22HPjOmRc9UB6jlXdadoBL5YLo3O+POre7YEnd\\nEPuwzTLcJqOWJVzpizoQnLDGx8yWXQTRHLBPOt7hxO86YKfmfDtF08U6ic0RboAy0kD3i38114jI\\n3PRFsZ4bbxFAoIIR3dNqQeYiDB4UfQm3QG5Y1CnULMaR6VPnUfp3T6xnbO44B0ZnLUvXRBU57HKl\\nVG5+DsyJVZ7zQL34mewQc1O9gHJctCPpfOiGPMdL1c50HP1ARWBHZwvAMnFGjMFMOyCe6YoYdtaW\\nO8J3Kmm6EzF8VLRbSguHulIGLTcEvhBGqBqjdiGFwHRs20RzoE1NN4Q7n2WKNQuVcde25UCmOGsE\\nAT6CAGhx1rJtopxEbVu4ckLZ/bACOC6vA8MwFIxnhOsJtd9G7sJbYOXJXtpzVUB8oOEaimMXKI5d\\nQBvYhdG6AuyoqmNh+GQZ7mvbAP5q4fSKeNMmECx/80rTdAK1s9ED1aQ6XoNimvyFbeT7qgk0LMIX\\na0PT/dhWkVKqh8LwaXQzSzTo47bbVvCFL3zhYwnje/LkyZMnT548efLkyZMnT548/SpJxlJerSzL\\n4rvf/S67du1SkM3SpUv55Cc/SW1tLYVCgbNnz/Lyyy8zODioYIpYLFYBRci2stks2WwWv99PW1sb\\nX/3qVycAFx8HScjoat9vk/BRKpVSYJKEWILBINXV1fh8PqqqqhRU4vf7qaqqwjAM5aCWSqXYsWMH\\n1113HQsWLMA0Tc6fP6+gz3g8rlyrJLBiWRb5fL6inStJxqJKd7twOEw8HieRSNDQ0EBrayvV1dVq\\nbJlMhkuXLtHb26vgQF3X6e/vp7W19Yr7lDCbrIfcP1ABxV2pxu4o0kgkomrs3sayLHK5HOl0mkQi\\nwWuvvcaMGTNYt24d/f39nDp1ir6+vgrnOAkMWZaloK2ponlt28YwDBobGxVQ19fXN6Gv8p+so6xb\\nMBhUEaoSCJWQYjgcVmCYhMIkLCX7IkFGebxKF8doNEogEKCuro7a2tpJ166EKSUg6fP5KBQKJJNJ\\nCoWCilHO5/MEAgGamprI5/MTQL+p5sbn85HL5VRt3XMmx37rrbeye/duMpmMOrdM5gYp+ybH796P\\nZVlkMhm15mOxGNXV1axcuZLh4WFefPFFnn32Wc6dO8ddd91FS0sLpmly/PhxDh8+TCqVIpFI0N/f\\nT19fnzLMCQQCrFmzBoDDhw/T09NDIBDgn/7pnxgdHa3on2EYTJs2TT0WhOsjlJ0Us9msih2WwKc7\\njlgqnU6j6zo1NTWkUimSySSRSIR58+ZV7LNQKHDwoPhs8nJRrBLwM02TUChELBYjm80yffp0Zs+e\\nzYkTJ/jzP/9zAoEAuq6TSCQIh8Ncf/31ag1K2PxKgB/ADTfcwObNmzl//jx9fX0K7Jw/fz5f+tKX\\naGtrw7IsEomEcjdUBkVOBPTRo0cBAcxJWZalYsg1TePkyZNq7UrJtSq1detWAO6+++4Jz6XuY9o9\\nTwDV1dWsW7eOV155hXA4TDqd5lvf+hZPPvmkig+eTJcuXWLbtm3KqfXVV19lx44drFmzhttuu43d\\nu3czOjrKokWLePTRR8lms2oM0Wh0UhfUm266iccff5x//Md/VOew119/XZ133cdEfX09Dz30EKtX\\nr77iPHny9MvWRw74Pfroo+oErWka2WyWJ554gh/84Af/JjtL27b55je/yb/+679WfAti/vz5H1tg\\nytMvVpZlceTIEZ599ln6+vrFi3rNwAg3EGhZjK+qDawSpVQv+aFTAkoqpsh2bScXiHnAwBUUCoVA\\n07DNiZGRk0nTIBKN4PMZpDOZcoxtcQwuvVq5sb/KBeQ5FwbBehFXOrAXkufQYrPRRt7FTnWD7sf2\\nRaB2AeH6WWD4ScSHBdCW6hLuWcPviHjMplupiM3V1H9C0vFNgkmBOgHVpC/B4H4wwhSr51LS5mIX\\n81AoQCoOiQ4wMwJz0wNlcDF9CWIzK/dnUwklyV/9Mcdpr19EhkpgTzrxXU5WEbL9orFwK7SsccFI\\nDkAVmSZc+zKXYOhtEQlcGBE1HTyIQzqVYTJwwMEimBkY2AUNNznxrhKIHOewJ9s2c2K/iQ/KcyhV\\nGIXUeQF82Zaohe28WDeCAqo0HcBOE+5vtoIXbQFAFoZFGxIqE0VwhuuC6bDLrm2JMyJqtZSaWL/C\\nCKQulJ3SNL+rXU3MTdU8UVvdgGKmEpi0S06dcmBXV7Zd4W6nO+CkvE3WztmvLyL2ZxUEfKcHp2jL\\nBZq579OMshsgiNor5z+E+x4IyG9gjwALq+YLyLIwJpwLC6POmCxRU90P+THRVtU8UV+zACPvC+Ax\\nNzgRpiuMiH3IOZDwaKgBBfnZJRfEN/mFL+hiruUcgJhzcGDTccCsuu8yr0vG1046E9olCDWK2zLd\\nwvESrew0GGpx4ERnTDJmeKpjU55bIi0wgjg+9YAABROn0LQg0bl34Yu1idqmMxUupwp6tEqQOCva\\nrHIuWC0T2w2hAnZJxjg7gKw7gljCk9lecdxPcD+UlF+5vWAwWDEyf80scv4oesnE0Eukz20m1L7y\\nikC8mR3G59PRtAJ2/z6SQ0cINCzCiLaSH3hfXCw23YhthMEsCJYzECASiUxaWV+knsiMVeQuvEXA\\nZ+PzFSgMHyU7cEQBp4ahEfUbtM2crlyAP67P1Z48efLkyZMnT548efLkyZMnTx9HZTIZ9u7dy/PP\\nP8/w8DCGYSiXqxMnTtDZ2cmqVatYv349999/P/fccw/PPfccL730EqZpkkgklGMWoGI+/X4/kUiE\\n+fPn8yd/8ifU1dX9B4/0FyPbthkZGVEua9FolPr6+infU6upqVERpDJ290rSNI2qqipyuRzZbJZY\\nLIau68RiMeXSJN21QqEQoVBIgWMSXJJOYLt27WLhwoU8++yzvP/++wqYApRr19jYmPrs2e14JuHE\\nqSSdveS4fD4fv//7v8+LL75Ib28vFy9epKenR5layChVCaK1trYq16h8Pk88HqehoeGKtQmHwwpy\\njEQiyq0Opo6WlZLjlEBkc3OzivqV0Iscs4SGQqEQw8PDCpL8/ve/XxHT6Yb45OPq6uoYGRmhUCgQ\\nCAQUWOleJ6FQiIaGBnXsSFDL7S7odig8deoU7e3tFSCPjOOVznwyQlveJsGmydwZpWuZdDyTa6yx\\nsZGmpiYFMI2OjiqnPJ/Pp+J13bG+cj8XLlwgHo8rICqZTALQ0dFBS0sLM2fOJBwOc+HCBW666SbV\\n5/FrTtd1QqGQgpjcEGcqlaqokaZpyqVwMsmaj6+BnBfbthWUKd3QAB588EECgQA//vGP2bp1K1u2\\nbKGhoYFkMkkmk1EOmxKULRaL6u/777+f2tpaAoEAL7zwgoopN02T1tZW2tvblXvgqVOnOHfuHIVC\\ngXg8TjgcZt++fdx6661qXmV0t1xHcl24ATO/36/gtnnz5lXEHI8/jsfGxigUCtTX11eAcOM1PlZa\\nQpCWZbF48WJOnz5NNpvFMAxqampUhG5TU5OCZiVImslkrhjtLs9JZ8+eJRAI0NbWRjweZ9myZbS1\\ntan5lE6nMmo6HA4TDAbJZrO89dZblEolbr/9drW20ul0Bcwm5w8EWGcYhtouFovR09PD6dOnCYVC\\nrFy5suL4lvVwn0vHn3fuuOMOfvazn5HP51m0aBGnT5/m29/+NnPnzmX9+vUKgMzn85w+fZpt27Zx\\n/PhxAObPn88999zD1q1bOXfuHD//+c/ZvHkziUSCaDTK3XffXQG9SsBxKq1cuZLXX3+drq4u5s2b\\nR29vrwJ6/X4/ixYtYsOGDVx//fVXHZXuydMvWx854BeNRvniF7/It7/9bfUE09XVxUMPPcSf//mf\\ns3Hjxqv+8HTPnj089dRTnDhxYsJ9X/7yl3/RXff0MZPbse9c53mKJRswnChIDTOfINdzED1YRbDx\\nGoJNSwk2LaEw2kX2wg6wCuilBNbHBBiYKrpYxh8vXbp00nE2NzdjnOmglOrFF2m8qn1pgK4baGjY\\nuUEBbxgh4Wil+4RLX2yegHMmu8CKzChHaA7swc7HsXW/AP+Cjdg+P0akWniphWzsYJ1wLcv2CUe5\\n9AXAhqZVrvbdcJ90Y0M43IHYX/3NAvRLfACFUez4UVKjx8WLHNuBl7DRAzGCzTdQiJ/FzAyK24cO\\nOo51da79jbvokDcFG4XbYLITqhdTjjed6sWH41hnlUS/U50C5Km9tgz0TIj1BSIzIRYXLm/yxZt0\\n1/NFXc5/ftFurh9GTwjoa2Av+I8KKCxQ78TbaqLGyQ6xjQLrdBcYN63cXrZfAEullIDJBvcATh+l\\nG57ud1zeLAEuac5MJc9hJz8QMawT5Mxl0Yl9BlQc7uAeAZzJOa2aLwAx1Sen/0UHNjQCYDnOifXL\\nBNinueZCDwrotGq+ANyG3xZ9GjwI9Z+A9LlJHO3mCchSjs3d52y/+OmvErAxTIxjnWysk8knoUAJ\\ndfVDsKFcj6ZVEDoj5qCQEPCrdIrUHRhS1k3BrhnRRnS2aGdgl3D20wOintXzXXNcEiBZogPsVBm2\\nTHaItQkokNQdMS2PC+luKOOIk53i79g8sY0ELzWXi6Zy4HTu0yd5WSSBO3uSWGI5Xp+8ELPFHPti\\nZcDQ55yn7FL5uL9izLAT3SxB1kgbRKajJU6jhxrwVbWrmax0OS2I9YcGmR4optB8UXGeKznuqVoF\\n3oeKQrbN8pxrjoOf7GfScTiU7ofYir8Uv5ffiHO754kS6wQaFmENHaWxoYZEIkX20k5yveHLAvGx\\noI8VK+5g/vz5bNu2jZ7ePvLDR8n3HcIqFbD9tRBqRsPG8InIiEAwcFmkWcKGfn+RX3/4M1y6dImB\\ngQGy2SzhcFg9fy1ZsuRX4nnakydPnjx58uTJkydPnjx58uTJ09Xr/PnzbNq0ieHhYSzLoq2tjWXL\\nllFdXU2hUKCzs5OOjg62bNnCli1b+OxnP8s999zD7/zO77Bq1Sr+6q/+irGxMQWbSeggEomwbNky\\nNmzY8CvzvlM2m2Xfvn1s27aNixcvVsR1trS0sG7dOtasWTMhdrS6upolS5aQSCSor69naGjoqvcp\\nwZW6uroKRz0ZAzvedU5KzsHIyAjHjh3jO9/5DqdOnSKXy2EYBqVSScWVyhhNtxuVhDzckabjJV29\\nJGyoaRrNzc1MmzaNP/7jP2b79u288soryl3OXS/pODhv3jwGBwdpaWmhr6+Pjo4OAoEAVVVVl62L\\nruvKHay1tZXOzk4Fn10JUCkUCkyfPh3DMKiqqlLRrhLSGz9W6fA2Hu5x18v9U8KuxWKR+vp6TNMk\\nl8uRSCQwTVMBtFVVVaq28viQdXQfLxJ8AxgcHORnP/uZArYkoCPn0A06WpalHit/lwCaG+INBoMK\\nIotGozQ3N9PQ0IBlWfT29nLp0iWSyWTFeHVdZ9q0acyePVuBkslkksOHDytATsbJyjk3TZOhoSGy\\n2axyk9u6dSvRaFS5IMr6NzU1MX/+fAXBucG57u5u0uk0tbW11NdfPjXHPV+TyQ10yrjS5557ju3b\\nt9Pc3KxiVb/2ta/x85//nJ07d5LJZAgGgzQ1NbFixQrx+a9hkEql2LdvH11dXdi2zfbt25k/fz6v\\nvPIKFy5coKqqiuXLl7N69WoVAyz7Njo6yr59+9i1axdDQ0OkUimOHj3K0NCQAl4lFCshQbkmpMuh\\nBBx37doFCFc+WX93fLEct4RaJYg53l1y/HEw/m8Jg0pY9jvf+Q719fV8/etfp7e3twKUlGMtFArq\\nnDbVcZpOp1U89owZM5g/fz579uxR69Qdax2NRlVksAQLjx49Sjwep1AokM1mSSaTFSCedLeMxWL4\\n/X5yuRyHDh3iN37jN9B1nVKpRDKZpKurC4AlS5ZM6jwrjzfpGjq+PvX19cyZM4eOjg42btzIqVOn\\nFLAn45rHy+/3s2rVKj772c8SDodZtWoVnZ2dbNu2jXfffZd0Ok17ezsLFiwQnw25oHF3zLp7vBJ+\\n3bBhAz/4wQ8wDIN//Md/VOfkq3FV9OTpP4M+csAP4HOf+xx79+5l586d6okhHo/z9a9/nb/9279l\\nw4YNE2w4Lcvi0KFDXLx4kePHj7N9+3Z6enqA8olV/vz1X/917r777l/GUDz9iqpYLPLMM8+wf/9B\\n0tkCph7FrpuDFp3uuDQVIdOPnTiLmU+S7T5IKT1AZMYagnVz8IVqSHW8jt8oMWfOTAKBwK8sMHCl\\n6GLjTAf7DxykrXUad955J3feeWfFuNeuXcv+AwdJD58m2LRkUgenySReHFho6fMCJmq6zXEcQ8B+\\nkzmTScm4y+F3sLP9Arhp3QCBGjDzmKZJMpEkGAyUbXhtS0T9+qqgb6uAvEJnhUOggoLsSsc32xIg\\njFUQ0FauD2Lz0My8cNizHGcz20azHecr3Y9VzFEYPumMQUfzV2MXU9C7VcShRqc7kNi44dm2cPob\\nOSb2XUqLeNRIuwNcTSHZhmUKCMjMinEGG1EuaeMvUm0TBveJOmh+0By6xwgJUDLSXm5TOuIF66D2\\nOgGxJc5AfhSKR13zIiN6Zac0MMLQdAtEpk+EnwK1EJsloLr4YdEXGWub7RPgnIqNtTEMHUPXsIfe\\nxkxcANvG9kVd4KBPAEyD+6GYEM56wTrxeM1fhvt0vxNLO33cOtMEDFW9QECg8cNi3jUdpq0XbUn4\\n0zZdA3EgtdhsAeb1bhOub70/d9XDqU9+CFIXIVAlnCn1IGS6xH5s04H6LBGZXEg4c3A5d8zJL97K\\nc4doz8zB0AGxtoyAgGl9MTEHRhUwBphlUK9qDoSmiW1LOcgPCMDOzIjY5uFDota5AbF9w/Iy/Cil\\nB8TcxOYI0G/oXTBTAnhMX3QcIF3SdcDlVGiZwhnQtiDbI44HX7TsyicdOCerj7pPAoPOPIx36pzk\\nz4o2NT+03yuOi543hCOhdB1VbTrg3mQxw9jiPGGZUBLfKMMIQsONkOjAxsbUQup8FQgGXS6nPvJ5\\ncT6zCyMQPwJWEdvMQOo8WqQNwyeim8UFjgR5nfVuFsT5q+aaiXHIhYToW6i5DPcq2U7dnDddJimP\\nL9ZGduAIjY2N/Nqv/RpvvvmmAvauBoj/5Cc/yfHjx9m5cyeHDh0iPmqj18zDFwypiIJSqUQmncG0\\nTHE6dsU8iFONhqEbGLULyI++x6VLl3jyyScn6a0nT548efLkyZMnT548efLkyZOnj5s6Ojr47//9\\nv1MoFJgzZw7r1q3jlltumQCodXV1sWXLFnbt2sXzzz9PJpPhM5/5DHPnzuXrX/863/rWt/D5fDz+\\n+OOA+HLu9OnTr+jE9v+Ttm3bxgsvvKBcoAzDUF9CzmazXLx4keeee44XX3yRBx98kI0bN1YAHxs2\\nbODo0aM0NDR8KMBPzo0E1yTI5XZMnEpym0wmw/HjxykWi4TD4QoALJVKTfoZnhwjCLOj/B4AACAA\\nSURBVJDP7c5ommaFE5YEXQAuXrzI97//fZqamti/f79yHmtpaaG5uVn93dXVRTweZ9++fco97tZb\\nb2X//v2cPHmSmTNn0tTUVAEByfjgTCZDPB4nlUqpaNO+vj7S6bSqD0wEkmRfA4EA06ZNw+/3KwDK\\n7drnhohKpRIjIyMKhhnv4iUd3MbfJmFX99/RaLTCJVGOTd4m4b7xEb6yDenUl0wmKRaLCkaSgJ8E\\nfGQNisUipVKJXC5HPB5ndHS0Isq1qamJ1tZWmpub6e7uplQqUVNTQ0NDg4qgle6K48domib9/f3E\\n43GuvfZaGhsb0XWdYrFIsVhUY8tmsxVsgwQfT5w4wQ033MDAwICKmZXSNI3u7m76+vqIRCJcc801\\n2LZNV1cXiURCQWKjo6McOXJkwhxPJrcLoru27njn0dFRtb57enro7e1VbnjSeTIUCtHe3s6nP/1p\\nlixZgt/vx+/3q8/HV65cSU9PD6+++ionTpzgW9/6FsVikZqaGh5//HFWrFhBPp9XwKLsU1NTEw8/\\n/DCrV6/m6aef5uzZs+TzeV566SUef/zxSaFTOSc+nw/TNMnn8+zcuZNkMkl7ezvz58+nVCoRCARI\\nJBL09vbS2tqq2pDAnHT5m0pyzbiBRNkfCX7OnTtXzX9dXR29vb2cPXuWtrY2BaCFw2FyuZwC6CRk\\nKtuVNT558iSmaVJdXc0Xv/hFNm3aRKlUYtq0aSQSCUKhkDpu5eNlTc+cOcO//uu/qjFt2rSJOXPm\\nsGrVKpYvX64ixHt7e9m3bx+ZTIZoNEqpVGL37t3cd999Kho9Ho8DqOPWvW7kT3nemyoSXD6XFgoF\\nPvOZz/DAAw9w8OBBduzYQV9fn4rPbmxsZPXq1axevVo5GErNmTOHxx57jGAwyJYtW1izZg01NTXK\\nFVG6dbr7JuVeN0uXLsW2bc6ePatgaE+e/n/SL2XF6rrOpk2b+M3f/E3OnDlTYRU7NDTECy+8oLaV\\nB1w6neZ3fud3JtwOlQfhDTfcwF/+5V/+Ekbh6VdVlmXxzDPPsHffAbJFDbvxFuzgNDRfqBKSCjZA\\n7WJIX8IePEhx9DwZIDLzdoxwPeHpKylc2oVpmnzjG9/4lYD5xssNQmbzJSwjQqBhEYFYK5rhxzaL\\nlFK9pIdP09F5iZ5//iFnz57lC1/4grroWbp0Ka3TWjh3vpvi2AUCtbOvat+mZUK6R4BN/ih2sLkM\\nylRo/IWK4zQVanbc5gIC1pLwlaNSsYSZ6nHiW9NlZzp/lYADR09A4rT4XUZZWi73MHAcs9ICVsnH\\nYXCvQHasImgB8Mcw6hYQqZ9FOpPHLBbQCnFIdmDmk2VHMrOEFp2Onb7kxKFGyk5n+MAulJ3OlPOd\\nJn4OHxYgloQfp5JtCfhoxHnRXzVXgD4S+JG1QxPjkXCf7hcwX+q8+L11g4C+ZN2NcTG3dhHqlwsH\\nt/4dTgSvBlgC4Au3iRonO8EXdrU3bkptuxwZGpslXAD7tgpoTIKVNdeArou1aIkLJ234bUqJC9ia\\nH7vpZhekJ2NW81B3vRhf6rwT7wyMnSyPt3WDcGJ0r6kKB0db1MQXg/5dAoiSsKCml2Ep91qR5xZf\\nTDj9DR0U2+j+SujNNkUNc8MCjtN8lQ59Egwbfa+8nt3Oe5PNuypqxR2ifVz364bYfykr/uWHIOmK\\nLzbGg3r6/2PvvIPkuO47/+nuyTM7szlhgSUSiUgABBEIIi0gSpSOkkhLVLAs6aQjdaZc9p3K5VOd\\nfCerrmyfLft4rrIpW7RLLkXrRPNMUZZBAwRIIgMEQBBhgeUGhMWm2byTp3u674/Xr6dnsQBJn0lb\\ndH9LK2JnOrz3e+/1hP309yvmjhYSUdGJFTaodxKy18V60aLQvMNej7Mc+Jzz+sQ4NUcF/GgWxTF8\\nMQFxSplz7Y+Y12Ovin9XLbL7pNlR1pMulzrXPr6o/dxw5TluiuG+Re2yg+I8wRpRA8uY43z22rAs\\n27HwTWKG82OgKCjR+ViKTzhtmkUsXxRD1+27PUv2HYoQDAbwB3wUxvsoJI+jUkAL+DBKhg3ZxlCr\\nF6OrNWWgsTAqHEaNjOiHkRZx2bH2ygjiCofDWfW2TOexW30QUmwQN5/PO+CeBPbeioOeqqqsXr2a\\n1atX8/Wvf53pdA/h+oVokQjFQoFUKkupZNqGgreGWA2lhKIkUArii5PZMRCePHny5MmTJ0+ePHny\\n5MmTJ0+e/u1pcnKSP/mTP6FYLLJhwwY+8YlPOJG6s9Xe3s5/+A//gZUrV/L000/zs5/9jKamJrZu\\n3cpdd93F4sWL6evrQ9d1tm/f/i/Qm3dWzz77LD/96U/RdZ26ujqWLl3qOMABjtNZd3c3w8PDPPvs\\ns4yOjvLFL37R+R5u3bp1NDU1kU6naWlpYWho6E3Pa1kWNTU1TiSrhMCkO9Nsx625pGlaBYSiaRqF\\nQsE5lnR3m+0aJ+EnaQ4ht7mVExrggDyXL192oiZXrFjBjh07aG1tJRqNkkqlUBSFaDTKlStXOHTo\\nEG+88YYD7uzcuZNXXnmF69evc/36dRobGx03v2w2y8zMjBMnLOM7R0ZGuPvuuzl37lyFUyDcDPkF\\nAgGWLl1KKBQiFos5Y+h2MZSSkI+EHX0+H/l8/qbjuiE/Cd24QbrZtZX7BINB8vk8qqpWAIZSEuKS\\n7dY0jVAoRD6fp1gsOq540r1NjqeqquRyOXRdZ2xsjOHh4ZvqYVkWExMTNDQ0EA6Hqa6uZnp6mvr6\\nekzTpKury4H75Pbuf8s+maZJZ2cnd999N/F4nLa2Nq5cueIAoLKubqCxWCxSKBQYHBzkjjvuQFVV\\nx2VNOgqGQiFM02RmZoYTJ06gaZpTZ1kvXde5evWqM7/dUOpszY5vdo+1rEk4HCYQCLBmzRqWLFmC\\npmlks1kuXbrEa6+9RiAQYOHChfz6r/+6E1Er6y/HXFEU7rrrLhYsWMCf//mf8+qrr2KaJtFolBdf\\nfJFTp06xYcMGNmzYgM/nc+aFBDGrqqp44okn+MM//EOGhoY4fPgw8XicT3ziE1iWRaFQcFzj3LIs\\niyNHjjjsyYMPPuhAXJs3b+bgwYMcOHCAz3zmM872oZAwEpicnGRwcJDW1tYKAFXWVDrxzY6gleCw\\naZps2bLFGdv777+fzs5ODhw4wPbt2wkEAg7YF4vFKBaLFItFSqXSTXChaZocPXoUVVX58pe/zI0b\\nN5iYmKBQKDA+Pk57e7tzzZIR0RKmPXXqFN/73vdIp9PU1dURCoUYGxujp6eH3t5efvSjHxEMBjEM\\nwwE+Zf98Ph/PP/88K1asYOHChRQKBQeAnKveIJwTbxXPKyXnpmQFgsEg27ZtY9u2bXNufztlsyKp\\nLZFIzBk57J777sflWPp8PgKBABMTEwwPDztxx548/aJI+8Y3vvGNd+NEgUCAhx56iJ6eHq5cueJc\\nFN/sTZCUe3sQF9z3v//9PPXUU7ekgf9/NT4+TrFYJBAIUF//1qJEPf3iad++ffz853vI6grBBQ9Q\\n1KpBUVG0OV6EFEW4vkVaIH0NMz+B6gvhizSgBhMUJropZGe4886lNDU1vfudeQdlmiZ/8Rd/wdFj\\nJ0St2rYSbtuMP9aM6o+g+kKo/gi+aBOB+mUowWpyU/0MDd5gNDnCvffeW7GGOy9eIDfVj69qHqr/\\nZkvf2crPJLFGj6NYpgC5QnVlwE9RbhF1aZVZlOygALb8Cai/txxJaZYgcxVl/DRWqhf0lHABM3UB\\no+kzAmyyDAGT+RPgC80CCxUByIydAEyoXgnReQKWKRXFY6F6aN6BFm0mHKtB0YIYlg8rWItSvUwA\\nZLkRcV5TQGdKpAlFT4lj50bsGN5uAbPlhsoOX9E2EZ9qFQVYmB0Ujm/+qlkuebIspoCFRk+Ic8Xa\\nBYylaC54zBVFnOqG6cviueZdMN0loKuGzTZ0KK0FpUOZPR7uGvlCAtDKDZdhIUWxncpSokYN95Xd\\n1txtkC5iEixT/QIG9McEjCRhy2A1SqDa5gdLkOqhNNmFpdiQXrip0pnQsmNIfVHIDog6h+oEhDb+\\nqhiLhvvEer9JrrbJmFrNjmbNDYo+VS21a6GU55usk+IXtccS/cj0i+frNkDdPcLFzh+zAU7D3lcR\\ncdSJZVCzRsBr0QXimmRk7HlrCNc8t9OkWxK8rAAJbffJsWO2A6Hfdl9cCTWrhKtetN0G1mznPgnq\\nRefZY40YQ7ngFJ+AwXxRcZ7skNhPVcUczQ3Zz8dtBztf5ZiAAAV9MeFKaRlirP0xMfamhM7KUddY\\nJTGOYydFDXwxqF1v91cV/cpcE+syvrS8NuQ8zfbf/NyctQuUIVHLdjscPy2uDw1bRPsU240yfdV1\\nTNcckKCmvG7J88m5ovjsOWig1N+DYsygpHpRzBKKPo2S7ceySpgmlIwCipVHn+wh138IUleIhjR2\\nbN/K7/3e79HU2Mj01DiF3Az5yX5IXUFJX4F0n33NMVB8EQGSWqaIjg632v2wY5fTV0Q/YwvtOGJZ\\nH8vlXgiRcARNuxmYM4tpjKke5rWKeA4Z1bFx40Y6Ojp44IEHnLuim5qanDsVz58/zzPPPMPf//3f\\ns2fPHg4dOsTVq1fJFw0C9SvJF0zy+QKmadm184lxVn32v1WcGGGwfzdgpodMepqJiQnWrVv3plEV\\nnjz9U+R9jvDkyZMnT548efLkyZOn94a8z3fvfT3//PNcvHiR5cuXO857MvLvVmprayMWi3Hu3Dmu\\nXbvmJBlpmsaZM2eYmZlhx44d71YX3hXt27ePn/zkJxiGwYYNG1i/fj3V1dUVwJaiKMTjce644w5q\\namro7+/n+vXrGIbBypUrAQF0LViwgNdee82BuaRz3a2USCRYsmQJwWAQv9/vxNK64bs3c2Fyu4UF\\ng0EURXGgGvl3ZgkqychdCYfMdpObK6JT/r3b5/PR1tbGvHnzHMgNBASzdOlSampqCIfDDlxTKpVo\\nbm5m7dq1ZLNZhoaG6Orq4vHHH2fVqlWk02mmp6dJp9OMj4+TTCaZmpqiUCgQDodZu3YtDz/8MP/u\\n3/07kskkk5OT1NbWOqknswG7QCBAU1MT7e3thMNhQqEQtbW1FWDebOBramrKgX/i8TjZbLbCaW62\\n5oo0lY9J97rq6moKhUJFpKY7ehnKcKWUdImTx5NwmxsOCwQCFXDhXHCfPLa7fX6/34krLZVK1NfX\\nk8lkuHTpkrPNXO5lcj7K+ZNOp2ltbSUSidDf3+/s546/lSCWhCRzuZwDGV2/fp10Ou2Mu6y1PI/P\\n56O2tpa6ujqqq6tpaGigrq7Omc+ynvKcbkknQwk4ufshocJIJMLDDz/Mr/7qr9LR0cGiRYtobm5m\\n4cKFzJs3jxMnTpBIJPjP//k/U1VV5cwh2X83UNXb28szzzzjwG8SKpuenmZ4eJjTp09z4MABpqam\\naG1tdeJoJdAZDAaJRqOcP3+eQqFAf38/PT09BAIBEokEIGAt6YY5ODjI888/z549e0in0yiKwvve\\n9z6i0Sh+v5/6+nrHMa6jo8MBVXVdZ2pqiv7+flRV5e67775pTsv430Ag4NROgnnd3d288MILxGIx\\n/uN//I+USiVUVaW9vZ0DBw4wOjrKqlWraGhoIJ/PY5omgUDAATjl3JCvIX6/n56eHice+VOf+hTf\\n+973GB8fx+fz0dnZybFjx8jlchiGQTqdJplM8vLLL/P0009z4sQJLMti165d/Lf/9t946KGH+PCH\\nP0xnZ2cFUG1ZFrFYjB07dtDe3s7Q0BB1dXVkMhleffVVZ8zz+TxHjx7FMAx2795dsUala54blJwt\\nXdf5yU9+QrFY5EMf+hDxeNx5rlgsMjIyQjKZJJPJOGCrbF9PTw/PPPMMP/7xj/m7v/s7XnjhBfr6\\n+jAMgzVr1jgR2hIUDofDTnyz/JF/b5JrIhgM8vd///cOmLlp06Y5o4c9efrn0DvxOeJdA/xAvEF6\\n6KGHiMVinD9/nnw+XwHu3e5HyrIsqqqq+I3f+A1++7d/+x21zfQ+uL33Jd37RsenCbZtxfDVYJRK\\nwm3odtGxvjD4o5DpxyzOEKhbjqKoWFYJIz2EgsnGjRvfvY68C3KDkNFFD+KvarnlHVGKoqCFqvFV\\nzSM73svI0ADxeBWLFy8GhI3u0NAgw4M3yI73ogSqUIPxW9iEm+jTVykOHEQxsiiRZqzqNTbAYQMz\\nFgJCmb2/fK+tIOJTSxkBR0korZS3na16BKTiiwp4sHaN2C62UEBCRrrsYlUYF8CTdE5TfJAfEU57\\npi5AqPoNAhSLtgv4qjAhwCkjgxJtIxQKovl84u6KUklEDwdqBCyV6RegVm5ItKP2bpRQPYplCDcv\\nI49iFsX5a9ZA804B+PlCIvJ15g0wcwKoSl8tA5CmIfqRvgpjxyHVB2ZeOM/VbxTubdOXxM9Ml3g+\\nPyLqOnFewD8N9wl3rNQbdszqvbdYJxJUUspgGkoZZDOLoEbsmhZF3fxx4QYnx9ACsJ0AHSBQs+Eq\\n+zT+KtEfCf/lR1AirQKsKukiFtbUofE+rFCTa0JQdgQUExbHwS43LEC9TH+5jxWgl9u9z7LPTRn4\\nClaLuF4jIyKP/VV2PSTc5Tq/E0tsQ+r5pIC+4ksFRBVqsN0Kq6A4LrYJNwnoTguIH39MzOf4ncL5\\nMHNNjLW/yo4bdjddwoiq7cTmUvqKcFG0TGjcCg2bxLnUgA1URkQEb+aa2KZ+vYBWQTzvrEezfK6Z\\nN2z3vhtl6FNRxPzWU6JOmauiTb4qHEBQUQWQZ1miH5kBAexhikjq9FVxfEUDxRLHy9wQ4525asf0\\nWmJ9F8fL8dH+qvLYBKoFrCvhUV9EtNPIiDUbqHbNF6US5JTOhjJ6OTsg6uJPiDksxzlQI9pjZMXx\\nAvHyXLbMcjSvYgOOqlb+d/aGAHl9UYjOR0keRcEiULNItEvPCBAv1Yc53Y0x2YNaSBL2W7TPb+WX\\nfukR507jxYsXs3v3bjRN5cKFc5gmqKGEWCfBepT69VB/L0rmuqiZZdnzP2ZDwqpYF/qMeCzcUB5j\\nCT0CPp9GOBKeM6K3ONmDkh9h5YplbNy48Zbw3sWLFwkGg7z++us8/fTT/OPeffRevc5IcoKJyWmS\\nY5PkchksFIq+ZgzFDygCyFf9OC6SKDbUqdlumXJuinmhpK9iWSYjI8kKAN2Tp39OeZ8jPHny5MmT\\nJ0+ePHny5Om9Ie/z3XtbMrVI13WeeOIJx40qFAq96U2hd9xxB0ePHmVsbIyFCxfS0tJCIpHghRde\\nQNd1PvShD71LvXjnlUql+OM//mPy+TybNm1i4cKFb7pPPB6npqaGK1eu0NfXx6ZNmxwHuoaGBlpb\\nW+ns7MTv95NIJJx4SXeEaE1NDfPnz6e5udmJoJQwTDgcRlEUdF134KHbSYJSMuJVRqjKeNdisUg6\\nnebq1av09PTQ39/P4OAgqVTKAYgkhOOG1dyOd5qmUV9fT3Nzs+N8VV9fj2VZpNNp+vr6WLRoEXV1\\ndU5Eq2maTpTrsmXLGB4eJplM8tprr/HFL36Rjo4O1qxZg6qqDAwMONGf73//+/n85z/Pzp07icVi\\nKIrC6tWr6e3tZWZmhkQiQX19PbFYjFgsRiKRoKmpifnz51NfX++AL4lEgnw+TyqVcsCyTCZDJpNx\\nImAleJNIJByHtTeTGy6TkcpybC3L4q677qKjo4Ouri4HLpMwnNuxTx4rEAjcxATIsZPAp4w2lW6L\\npVKJfD7PtWvX3tRsKJ1OE4vFCIfD1NaKlB9ZS9lmKXfMrnTTk23PZDK0tLQQDodJpVJO7dw1cbtJ\\nSje62tpawuGw4zgo51c+n2dychJd14nFYqiqSiQSqXAy1DSNaDRKPB5nYmICRVGcOrjjZGVM8Ozr\\nm3Tc0zSNL3/5y3z4wx8mEok4Yy9dIvfu3cv169fp6Ohg06ZNDkApYTW/3+/Aha+99hp/+Zd/yfDw\\nMJqmsWnTJh566CF27drlgIOTk5OMjY3R29vL2bNnWbFiBbFYzAHFDMOgqamJY8eOkUqlKBQKDA8P\\nc+rUKc6dO0cqleLGjRt0dnbys5/9jOeff54bN25gGAbV1dUUi0UOHDjA4OAgwWCQ6upqent7SSaT\\n9Pb2smLFCseRs6WlhVdeeYWhoSG2bdtWcT3Rdd2Z836/35lX0o3vueeeY3h4mA9+8IOsWrXKcZWM\\nRCJkMhl6enq4ePEia9asceZwqVRyYFXpiikB1omJCf7sz/6MfD7Pzp07efHFF+nq6qK5uZlPfOIT\\nTt26u7s5duwYBw8e5NixY3R3d1MsFmlra+PRRx/lox/9qDPO+Xyen/zkJ/j9fp588kkefvhhdu3a\\nxQc+8AE2bNhAW1sb+/fvp1AosGTJEpLJJEePHqWzs5OWlhZ6e3sZGxvjrrvuor6+3okIly6qiqI4\\n16HZOnHiBMeOHWP+/Pl89KMfRVEUBgcH+elPfyr+DvSP/8jBgwd56aWX2LNnD93d3QwMDPA3f/M3\\n/PznP+fGjRtks1nnOp3L5SiVStTV1bF8+XL8fj+xWMy5Rs/+kdHREkAdHR3lpZdecn7v7Oxk+/bt\\nXtqTp3dEv/CAn9TatWv5zGc+Q3V1NUNDQ05295uptbWVX/mVX+F//+//zX333fcOt9L74PZvQefP\\nn+cf9+6jaIUIt20mXyhgliwUzR1Tegv54wKI0TP4oo1owTgoGsWJbmKREB0dHe9OJ94FzQYh/VVz\\nOZrdLNUfRgnEKExeZXJizCH7FUVh3bp1jCZHGBkaoDB5hcJEN5YN7VglHbOYpmg7UpnTvWiIO6us\\n6B0CLFL8sxyxJHAHZUc5W4oC42fEtjV3CzjTLAnQLTsoIKaG+2wwr1EAnFrIhprqBXDlrxZATSkH\\n+jRoVcKpbeykAHEsU7ipNWwuu0SBgLzCrQIsKk6j+oKE4i0oiDeCDuRnlgSgEqhCyQ4K579Mvx1H\\nXAeRecK9MJ8U7Zr3AQH0ORAdos/FGQHiqH4BLuWHBawnnf/yIy5oThHRuZNnhZuXPiMAH7NYdi9M\\nXxHQkxaE+k0wdU48nlgB4UZucjlz/+60TUJbfnHuQlIcr+5eAUepGiTuEtGoVsn1Ix3hbCDNHU3r\\nHN8Q46IFUUwd0tcFFKWnhEuZL4pVd+8sRs8sg0mKfWx/AowZ4VCXsYG0xHK7j7MlI5pdroKy/loQ\\nMIUzGpaYE45rHy5XQwn3BcpwXKpX/De+2D6H7dznT0BkvnCY06fFPsGa8v4SqAwkbAe2YRHvGm6y\\n3dbs80kYUfWV2ywd20aPCzCueiUkltrPz3InzCXLcGf9BhtSNO0f6Tyn2VHRp0R/3OBsYoWImq5a\\nIsAxIy3mVj4p/h1tQ/EFUbQAihMFa7vk5ZJlyNYsQHFCQHWp3jKMauoCQKteBbHFAsbVpwTAi2pz\\npoqoTX5YxOZK0FFe7yXkGW4R1wHp8CdhUHDNTcR8GTtpX1tWC7BXrkfVJ/bPDQpgN1gnrivy+mSV\\nyo59bhUmIXlYnCPUBNMXBdysagTq7iI8fxu+WKOou2mAniES8rNt6xY+85lf5pd/+ZdZsmTJTXeU\\nvvjii1y/MUSg6V6id3SgB+dhhlpRAtJFUYGsjGmWMOUVew5KZ8q0uGZYeiWwCgQC4gP87CuCZZnk\\n+g8R9lt8+lOf4ty5c3z729+eE9673n+Dl19+iVdfPcnE5AxFIvjrVxFsuodAw0p81YsxsmOYek60\\nKVgv1r7jIkl5nMu9L89NqwTpayiFJP74fPRi7iYA3ZOnfy55nyM8efLkyZMnT548efLk6b0h7/Pd\\ne1vHjx/n+PHjtLe388gjj1TAYm8G+CmKgmEYXLx4kWw2y5YtW1BVlZ/97GeUSiU++tGPvku9eOe1\\nf/9+zp49S1NTE2vXrn3L+1VVVZHNZpmamsLn81U4Y82bN49ly5YxODiIaZrEYjFqa2upr6+noaGB\\n5uZmGhsbqa2tpbm5mVAo5DjuaZpGMBhEVdWK2MhbmcJIwA5woBoJO0nw6fLly/T29pJKpdB13QHE\\n0uk0Q0NDTE1NkUgk5nSZk5BOU1MTra2tmKbpQD6hUIh4PE6hUHDAuXvuuccBTwqFAl1dXVy+fJk3\\n3niDYDDI9evXmZ6e5uLFiyQSCVpbW/H7/Zw8eZL6+nr+x//4H6xevZpgMEg2m3UAQ1VVWb58OSdP\\nnnTcFCORCPF4nOrqauLxOPF4nLvvvpvGxkaSySS5XM5x4SoUCo6jmYRfCoWCU7dwOOw8/3bkBiCl\\nJicnefTRR51YYllDGXcrfw8EAs6YQaWTntt9rqGhAU3T0HXdARMlzJPJZOZsl3Tzku2anp52XOlK\\npRKXLl2a06nQ5/M5sbLuiGgZmer3+6mtraVYLDI+Pl5xPtl++SMd7ySMKcFK2T9ZaxnlGolEKJVK\\nDiwrXSNlu1RVJZvNOu6GPttsRK4dn8/nxI9LuFSCq7t27eLBBx90zimBWwlH/dVf/RWmafLYY49R\\nXV0N4EBXcnwDgQBnzpzhr//6r7Esix07dvAbv/EbbNu2jdraWuLxOM3NzSxatIgdO3awatUqrl69\\nytDQkANaSVhLju/ExARXrlxxQMNoNMr09DR9fX1cvnyZ7u5uJiYmCIfD7Ny5kyeeeIKHHnqI3t5e\\nJicnuXbtmuMWOD4+TiaTYWJigqtXr7JixQqi0SihUIienh6SySTd3d1s3LgRv9/vAGXuueaOtn3x\\nxRd56aWXKBQK7Nq1y3EiBGF8tWjRIk6cOMHAwACvv/664+Lpvka4oeGenh6efPJJpqamaGpqYmxs\\njEuXLpHNZh1Dhy996UusWrUKRVEYGxtjenqa2tpaNm3axGc/+1k+/vGP097eXnGd6uvr49ChQyxa\\ntIgPfehDDqgo10ltbS2FQoGenh7S6TT33nsv4+PjjIyMcPr0aWZmZigWi2SzWVasWHFTBLicC1Dp\\nxGlZFt/97neZnJzkkUceoampiSeffJIf/vCH9Pb2YhgGjY2NNDY2Eo1GyeVy52qRHQAAIABJREFU\\nDAwMcPbsWZLJJPF4nA9+8IN87nOf45d+6Zf4wAc+QFNTEydPnmR6eprdu3dXgIWzjcOk5PXWMAz2\\n7t1Ld3c3W7duRdd1hoeHmTdvHm1tbXNeJzx5+v/RO/E54p2zv3sTRSIRvvCFL/CFL3yB8fFxTp48\\nSU9PD1NTU47VbyKRoKamhtbWVjZv3swdd9zxL9VcT+9RHTx4kIJeIlB3F4oT5Qc3Q0tzSFEhvgRr\\n8hzFiW78VfOE85/9YeC9pAsXLjA0PIKpRfAnFrytff2JdvJDpxgcGubixYusXr1aPO7388QTT3Dn\\nnXeyb98+BoeGKYy/Ti55VoBDioKmKUT9Gi3z51EoFLh69TpW+lo5flRRyiCbqYOmgjUH3GeZAiRS\\nNAEqWZZwqcsOiv1bdle6nbnd1bCdx2Lzxb4jhwT4kh0qw0H+KtGmqqVliMtyQU/BWuGSlzyCNdOD\\nZa0FeWdZZhCm+1D0NJZpCMDRjjtVjDSMHEHxR6FqEUqqVyBP9feKc5YKlX3FgtgCyA2AGhRRxOmr\\nduxwsRyZGm2HiQugj8PMJdFOX1SAV+GmMoiXGxFgoJ4W+48dh2JKnCp8uwhqV5tUnw0U2jUJNQKq\\naJOli7rrKQg2lEEnCU/JqFJ3lOxshZtgEtAiWKGogCOTR8CyxNZVi+0xsWE0syT+C1REEvs0AXmO\\n2u6GlgoBGziUcJiMoTVlNKw8RsCO25VtagbOCRhKbIQDKjr9UMqOYyCOAWWgDss+D2I71xwi1Qex\\nRWKzUtEV9WpB7VoBqeVHYPglAWWGW1ygpe0QZxli3+wATJwVDnmhBgH4WSZYrv6ofvFYqlv8XrXY\\n7rci5oVlglW066QJmFaurfqNEGkrw56mLrYJ1QuoMzsAY69CdhBl/DQ03u+cVtECosqhBnt/FbQI\\n1KwUsdkyvtiZ1wtFnLLqF30NJkQNjIwAU6c1MQ8sQ8y9kYPCcS/cIuZY1RI74noAhveLtrtrJ4pR\\nnk+5IQEylrLiqenLog4BGxwsTIk1Kq8/I4egbr0AcyW8aRbtueATp8jdgLFTArBFFZAvJih+LAvy\\ng69Syo4Smb8Nf9U8LMskdflZNJ/Ojh07nOvrXEomk5RKFoGYAIyDwSClUg7LLKIoQYjfiZIfxUpd\\nL4+7kYGJc2Dac8KyBGgqXRFdKhQKGIZBMBggEAw6r6L69DXUUo7mtlaee+45zp2/gGEqWFoUJb4U\\nLdpCIBhBU0yyk9coTXWDJb5wCUTrCdavQFHLX/yEWjeS6fk5VuqKgEZRZn2QvMXrtztu2NQJNKwE\\nUyd34xD79u1j9+7d3h1anjx58uTJkydPnjx58uTJkydP/8b0xhtvAHDffffdBG29Fd1///385Cc/\\noaurC8BxeZKRle8FlUolDhw4QKlUYunSpW97/6VLl9LX18fhw4f5+Mc/XuGMtWzZMn7/93+fy5cv\\nc+DAAc6cOVPhXrZ48WJ27drF+vXr+d3f/V1GR0cr4mPdLlm3q707plYCUPI4+Xyec+fOORDY7ChW\\nCXFNT0/z2muvsW7dOqLRqANTaZrmRKbK2OB8Po9lWRVxsq2trVy6dIm+vj7Gx8dRFIXjx49z5syZ\\nmwA06YrV2dnJ1atXmTdPfB9rmqYzV1OplNNOVVWJRqNkMhmqqqpYtWqVEz25YMEC0uk0xWKRYDBI\\nW1sbwWCQH/7wh05kayqVYnR0lMnJSeeYmqZRV1dHQ0OD45Yo40XfqmbDeO741mKxyLVr1xzISW4r\\nIbdSqeQAf3NF47rPIbVjxw5Onz7N1atXnfPNZTIkY3L9/rKphHRivH79OsuWLXMAJr/ff1Ocr7st\\n0n3QLbfb22ygT4KAQEUt5/puenZE9OTkpOP+mM/niUajzhhKl8m6ujpKpRLJZJJAIECpVHKiqaXT\\nn9vpUMJYtbW1fOYzn3HOK6E22X45VvPmzaOlRZjABINBCoUClmVRLBYpFotkMhm++93vAvCRj3yE\\nRx55xOmPz+dzQEUJtS1dupSvfe1rfPOb3+Tq1as8/fTT/Jf/8l8AnHkXj8cdqPHxxx9nxYoVXLp0\\niWQyST6fJxwO09TUxL333lsR7/qbv/mb/O7v/i7Xrl1D13UymYxT52w2y4ULF/jv//2/s3r1au6/\\n/34+/vGP861vfYuenh5+7/d+j09/+tPO2vP5fBWAai6XY8+ePezbt49sNksoFOI73/kOP/3pT1m0\\naJETR9zV1cXExAS6rjMwMMAf/dEfsWzZMrZs2cKiRYscd8Du7m4OHjxIX1+fA12OjIw4znjz588n\\nmUzy7LPP0t/fz5e+9CXuvPNO3ve+9/GNb3wDy7L47Gc/e0snU8ktSDBUURSi0agDNGcyGT7+8Y+T\\nSqU4cuQIJ06cYOXKlTQ1NdHV1cW1a9fIZrOcPXuWw4cPs23btgowUYKC2WyWXC7nROU+99xz9Pb2\\nEgqFyGazPP744xSLReLxOBs2bOD+++9n/vz5TvTxzMwML7/8MocPH2Z0dJRSqcTixYsr4LtNmzbx\\n7W9/m5mZGS5cuMDWrVvnXJ+zJSE/GW+8c+dORkZG+P73v8+BAwfYtGnTLff15Olfk/7FAD+36urq\\n+OAHP/gv3QxP/wblBh4AFxfgjuG8jcLNMHkO04aeLFMH2xr8vaSbQMi3IUVRCdTdRWH8dQ4ePFgB\\noKiqygMPPMDu3bu5ePEiBw8edO4YCofDNDY2snXrVg4ePMjRYycE5GNkBFhTZbucqRpYtjNTqeCC\\nnVzK9AvIRrqLlQqQ6hHP1W+6OcrU7QAoHQEthENa7VrbscsUznzxxRBqEbCTZVW6fUkHL0URkJMv\\niqVnyE5cRc9OYk13YxnZW1RORVEsQkEVlAJG6iJ6sYDlrxauVU68rIz41AQsFGoUrm1GVkBEjVvE\\ndm4Y0LLAsiFUNWBDWPPKdZNTP1gHVQvLEFjmujiGxc1ueo5mrR1nvsjYTDk2pnBWkw5mEnDSAnYN\\ni/Z5bn+XJIpsRwnqNmAFelEmXkOxDCw1KGJSS4VZ+7hiUStK7oeG+4WDm6mLc5u3uhNNtV3P5ngZ\\nVWz3udn7KrN+ccdKWzpl6A8XZKqWx8WeQ47rXbiZsjOfDYmhQksHXP1bEeM6ckjsE1soYEgtAqUJ\\nAW9Kd0ZTF/OgZXcZ5nODkNLtULeBRRlxrWiU14oitp/pFvGyEpwNyLVlcROoqajC4dAfh6H9WOl+\\nlFA3JO4sV0kLYGlBsb7VgIBWo23AEtdUU+YAQRWxTuo3leOzbchVUQJg5rGMDIyeEI6eVUtEv6pX\\nCrgun5xVu0Yb5CxCbhQyfaBnAQsl2CDcR400TLyOs+bdUKmiikjssRMwdV4AmsF6e47ZLpRyPCzd\\nGXclUCVAyKrFkB3AGj2JPnWVLBBZsOO219fZyudF/K6iiTkWCAYxDPFB3ioVUGwnUwWw0v0CANX8\\nAhY2UlCy58LEa3bkcK0zpxUsLNPAMEqUSjkMQ9xJaOYnyA8cw6+a9Pf3kyvoWFrYBitbsRQVUwFD\\nB0XRMKOLILwQpTAKY6fQp66R5ZDdV9cCsqzya0GFS+abvG7nhuwaizl4KwDdkydPnjx58uTJkydP\\nnjx58uTJ078NSbCqpkZ8jynhD8MwCAQCb7p/PB534jANw+Dy5csA7ym3xxs3bpBMJgmFQjQ3N7/t\\n/WtqaqitrSWVStHZ2cm6desqnlcUheXLl7N8+XJM03RiLyORiOPi9YMf/ID+/n4HjnKDYtJZLpfL\\nOe5yMi5UwknS0cw0TQfuk/GuPT09NwF2bihL/q4oCoVCgc7OTu655x4CgQANDQ3EYjFnrrgjK2Xb\\n5PeaPp+P6upq0uk0f/d3f8e1a9cciKy2tpbW1lZ8Ph+6rtPf38/k5CSGYZDL5bhx4wb5fJ6qqirW\\nrFnjAITSyVCeJx6Pk81m2bx5MxcvXuTkyZMsXryY9evXk06nHaDsyJEjDA4OUigU6O3tZXp6+iYw\\nRkJiQ0NDtLa2Mn/+fNLp9C1dEm8lWUsJR7ljeo8fP17hvijBs0AgQD6fp1QqObGbc0G3EkCDshtf\\ndXW1s71hGBVzRcod9Tz7WNLxbnasrns+yDko93G7h7n/695nrra7n4tEIiiKUgEMyra74T/pVJdK\\npZxIcTdgpyiK45yZTqexLItgMOhEMkvXNgmoStDxIx/5CHV1dYCIpJU39Mtj5/N5Bwpz9zMQCFAs\\nFp0I5pdffhld11m7di0PP/xwxdi5YTC3IpEIX/nKV/jqV79KZ2cn/f39zJ8/HxnFPTAwgM/nY+HC\\nhWzevBmfz8eWLVsc97u5agsQjUZ55JFH+Na3vuXEIH/+85/n3LlzHD582HF6PHPmDOfPn3dqnslk\\neOONN/iDP/gDFi9ezI4dOxyocXp6mlOnTnHmzBkKhQI+n48vf/nLFAoF9u/fz7Vr15xrlQRAw+Ew\\nO3bscK4fFy5c4MKFCxVzSzr6CROFIKFQiMbGRjo6OtixYweRSITXX3+dv/iLv+DkyZMEg0G++MUv\\ncscdd7Bo0SL6+vo4f/48995775zzTa5bt/umpmnEYjHS6bQDin7qU5+ipqaGPXv2OO1MJBIO4JjN\\nZnnmmWcA+OAHP1hxPXDPm5mZGfbu3cu+ffscl8fvfOc7aJpGe3s7v/Zrv+bEl0unUOkW2tHRwYMP\\nPsgzzzzDSy+9xFNPPcV//a//1UlhOnz4sONA+Oyzz7Js2TLnNdd9TZhrXvzN3/yNE7s9NDRUAekP\\nDAw4QKcnT/+a9a8C8PPk6V9Ks4EHTdUwFDt+8a2AbDaMY5XEC6KRHkTTFBob54r1/MXVTSDk25Qv\\n1kouKex055KqqqxevXpOuGLv3r2cOPEqeUMl1HwP+ZGzWBIwCTUgwCYbvHEcsSR8pUJ+SgB5AFgi\\nZtKfEACcL2rDQrPk8H1W2RFQuspFWkU0pJGFWLuA4KyigF9uOo5aBn1sx0cmXqc4cETAoCDaELed\\n8xTpnDcMM91YepqiblBTnSCVSom5ahkwfgor2o4SbQPNvnvIQtRBKQlYafKccEbzVQmAUTrpgQCJ\\nSkUBezVut2NoZztguSCsyDwB8wwfEP1GuQ34dovIXkURoJCulB/XpwTcBWWgTIKYqPbvpUpg0wHi\\nZHyrdLmzo2qLU2AZ5d6oc7zMWVSCQA6MpYCqCnfE4lTZQW+2s6Dqd4F9LqdHKLvUQRn0c59X9l22\\ny3arJDcsfvfF7Mdlv9x9t13mJl8X8bQVLoqzgMLESph6XTgL6gZMX4TpTrtmczhU1twtxkeeR/O5\\n+iIbLqNnXXCnnFeKCtgxwyCg0UD1rI4rrl9dQFawRkT+Jo/CdJeIxHbHy+aTWNJl0nHocx1PkWu0\\noshCEoosTor9GreiRFsI6jfI3zgm5oqRhcnz4gdQzBIW9uuArgsgb8o9rwW0pwCWooFloCSWgZ7B\\nmjon6uCP2zBx0YZ/bSdRsyCAU/0sZUdHu91WCQVF7BtqtK8LzeVaxBaAvwprcD/61FWK0SaC9cvf\\n9PoqFQqFQFGc1ysFHCt+AfkVQVFQ6jehBOvFNag4I4A4AC0KgZiIJR5+Geo3okTnizUDIlbZLGGZ\\nRYqFPGbqOub4GVQzh14yKJUsLH8UpWWXcKR0oopNLNPAkh/qVQ2q7oBA4qa+AuiTPfb6sVzXODnX\\nbqPCpNgeC1Qf+mQPgXjbWwYkPXny5MmTJ0+ePHny5MmTJ0+ePL33JAELCZwEAgEKhQLFYtFxj7qd\\nJFwDAl7Zv38/ANu2bXsHW/32lcvlOHbsGK+++iqpVMoB6JYsWUJHR4cDr8ylmZkZLMsiHo/fNgFD\\nAirS9cwNfsTjcWZmZpyY3FtJVVXnO0ups2fPsn//fvx+Pzt27ODQoUOUSiXHuQtw4KVcLue4SEnw\\nyjCMCgc/N5BVKpWYnJy8bZtmg1gzMzPMzMwQCAQcwMh9fDf05QZ4AGpra5mcnOT8+fOEw2HuuOMO\\n7r77bpqamirmmq7rXLlyhQsXLjAwMOC4qWUyGf7sz/6MefPmsXHjRjZt2uSAc7KdkUiEtWvXsnPn\\nTl5++WV+/OMf8+EPf5glS5ZgmiaTk5OcOHGCTCZDX18fU1NTbzrPh4aGAJg/f/5tt3szSUc+Ca51\\ndnY6fdc0zQH8qqqqKBQKTkzyXLHIbmdARVEIBoOMjY1x/vz5mxwY3fvKGF0JU4VCoQogT/5XVVUC\\ngQCqqhIKhdB1nWw26+zvbotpms55pKsk4ETtziV3G2tra4lEIhiG4bj/ud373JqamqK5udkBICWk\\nJ4FG2ba6ujpnPTQ2Njpxu5lMBkVRqKmp4dOf/jQvvPACExMTbNiwwTmHXL+GYTh9ls5wmUzGcbz0\\n+/1EIhGamprw+/0EAgGOHTsGCPjrVmDmXCBkPB5ny5Yt7N+/n3379vHv//2/d9wbL126RDAYdCJV\\n3c6Yt6qp1D333ENVVRWpVIrFixezZs0aNm3aRENDA3v37iUWi7Fp0yYuXbrkQLXFYhFd19E0zYnO\\ndq9luY2ETzs7O3n00UdJpVIkk0mamppYt24dXV1dXL9+HcuyOH36tDOuhULBcVUEHFh4/vz5tLS0\\nkEgkWLJkCatWraq45q5du5bf+q3f4g/+4A84dOgQa9euZf369bS3tztr+VZKJBIADAwMYBhGRaxz\\nVVUVuVzOgfx2797Nxo0bOX78OIcPH2ZoaAjLsmhsbGTdunUcOXKEZ599lpdffpmOjg62bt1KdXU1\\nPp+P6elpDhw4wCuvvMLU1JSzfnO5HJqm0draym//9m87UL27JvL1Q0abf+5zn6NUKnHw4EF+8IMf\\n8Du/8zsAnDlzhkAgQEtLC0NDQ3zzm9/kK1/5ym1fx0qlEj/60Y945ZVXnNeZM2fO8MADD7B27VpO\\nnDhBT0+PB/h5+oXQLzzg19fXV/FCumTJkn/B1nj6RdNs4EHeaWCZhoAV3kw2UKNofizLpDjeRdSv\\nsX379ney2W9bpmly4cIFxyEvn8879P/27dtvepMwW7NBSLcsy8JID1Kc6MYszDi1U4NxArVL8cVa\\n/8nRxaZpsm/fPnIFg1DbdvyJdoxsEmPmBpaMH43Ot4GkgIDELEOANCVDxIROnLUBFdvpbOL1spOf\\nv0qAVeGWWzg/ycesSthLAnTZfgH8SfDrpghZpfKxUBOWdELzx1zxparrdIpwPbNMrJnLGEaGsYlp\\nUFQsNYBi6qJf2UGYikHiLhQ7sti+zwkSy+2o0RsCyqvfKNwG7ZMo6T4sRYW6eyBQZUN07jbMoWC1\\nHRF72I52HRJw45z1cmtWTQqjLse+EpRyYr/iuDiHBPpUX2X0svvY7jfpuRHxnC8Ko0che0M491kl\\ne0xV0GxLfqtUBgnNIk687uw3/f4qAYQVRgWIJME3CZHO1UdFKx8/N1I+TkVN3Pu61ptZEm6GWFC1\\nqLJus0FjGUks5zSqCxa0gUgsAW1O2zXWouALgZETLnOKKuZd1RKYvADGjADnZktRXfCs7URnFmH4\\nFVFbxSfmcaRNgGiF8TI4O0eEa7lP9v+5wbxIG/giWHoKMv0o0bKjpDXTDaqGUrVQgH6zAWxn/GaB\\nhLIPVYuE6xyqHRENwfoVmNlRipNXUFAhWI1llVBMA4USFGcQvnQaTty2FgRfGHwxlGgrlEqQ6hFO\\ngOOnUCwTRQ3ga7wHI9xug7eWcAPMXBNjZuRR9BkwdXHHqAX4E1jBOpT4UjEOt/syJVgDDRuwkkcp\\njHUSqFv2lq+vjY2NaG/0YqSH8EXE3UyKApGouBNWfmFiWYaI8Y4sENfPVLfod+N28EdRJuwI5tGj\\nMBEpg4h2tLeSG8Ka6cYwMmiKuDaWShZoQZSGzSKeuTxAoKgoik9ElNtx3lapiDJXXxUFszAj3A3D\\njVi50XKcsuNCOqt+lilcXMdeFe2LtEJuxHHefauApCdPnjx58uTJkydPnjx58uTJk6f3nmRcoQSY\\nfD6fA7YUCoU3jdodGRHfBUejUW7cuEFXVxeBQIAtW7a8sw1/i0qlUjz33HMcOXLEAYfc6uvrY+/e\\nvSxfvpyPfOQjLF++/KZtpONXoVBgaGgIv99PLBYjFAphWRYjIyP09PQwMDDgAI8SIFq6dCnt7e0O\\niOMG4d6q9u7dC8DHPvYxHnjgAUZGRrh06RLpdNoBu6STmN/vd5zMdF13XNYkhDXbzU1VVTZu3Mjo\\n6CjXrl1zHKRuJ0VRGB4epqamhnw+T2trq3Ns6RjndoBzS7qcWZbFxo0bufvuu2+CyxRFIZ1O88Yb\\nbzA6OoqmaQ5IpCiKAxh2dXWxZ88eHnzwQe6///6K86mqysc+9jFM0+TQoUM899xz1NTUsHr1asbG\\nxigUCoyNjZHNioQpCajN1VfZNtln6ZD3T5WE5yTQB2X3Pvm8BHxyuZzj6DcbZJTtMwzDcTLcv38/\\nlmURjUYdoGg24CehMTlO8u+lbmWzWSKRCC0tLQwPD1dE2c52d5RtMk3TGavWVvH3uLGxsYpz3yoG\\nvK2tDUVRmJ6envN5t9zugaZpEggEiEQiqKpKsVh01oV0liwUCuTzeVRVpVAoEAgEWLFiBV/+8pfx\\n+/389Kc/BcrXQrd8Ph+xWMwB1zKZDJcvX+bJJ5+s2C4ej7Nt2zYaGxtJp9O0tbXNGect1797TNz9\\n7OjoYP/+/Rw9epQPf/jDRKNRpqenmZycpKamhnXr1qHrugP5Qfn6JOeNe5xkze+55x6SyST19fWO\\nC+ijjz7KtWvX6Orq4uTJk3zuc59jxYoVFItFzp07x9NPP00mk3GidquqqojH48Tjcdrb21myZAnn\\nz5/n9OnTnDlzhtOnT2MYBqqq8sUvfpE777wTXddJpVIcP36cy5cvc+3aNec1Y+vWrVy4cAG/38/v\\n/M7vUF1dPecYzNbixYv52Mc+xo9//GP279/P+vXrnVq43flma/78+TQ3NzM8PMzZs2crnP6kk58E\\nbGWE7vvf/34WLVrEn/zJnxAKhXjiiSdob2/nnnvu4ZlnnnEig5999llnXcnxlK6PpmlSVVWF3+/H\\nMAw+8YlPEI/HK5z2NE0jHA4TCATIZDIOiBqLxfiVX/kVTp06xZUrV7hy5QoLFy4klUqhKAqPP/44\\nP/jBD+jr6+PrX/86mzZtYteuXSxevNg5djqd5tChQ7z00kskk0k0TeOTn/wk/+f//B8HOK+uFgYS\\ns51cPXn616pfeMDvk5/8pLMAJSXtydNb1Wzgwef3oWkqhmHDLG8WD2q7bqmBKvTpa6ilHK0L2li5\\ncuW70Po3l2mavPjii+zbt4+h4REKekmAFrZrmPZGL8dPnKS1pZn3ve99vO9976t4Ey/BwNHRUUp6\\nnnTvC6i+MGowjr9mCWZhhuL4JcxC6ia0jdwE+tRV1GAVvvh8LHjb0cUXLlxgaHgEU4vgTywQ9s8L\\nP8DMhe8LqCZ5xOWA1ywc8KwiZIcFlFJMg6WjoAinLQl8yShUPSVgJX8M4neKH+cNtmL/T8EybWhK\\nuo5JyErP2G5ibvhMughSdoWzD1d281Ps+NJZDmeWvf/oMQGkAARqsWLtEGwA1Sf6kRsRYJGehrHT\\nKLlRaLwPxZ6vlqKKaN7R4yJWV9Yp2g6qJiAqX8yGsGzw8SbHShvgclzXzLIbWqkIM5eheoW9320i\\nrR340QazZuxo5OpVMNVZjodN9YkoVKdeWhmac0cvu2Euy7Kjli3IT4A+KVwJ69ZB5oaI48wnIdxg\\nH9Puk3Smk2OluqMWFBGfmr4KqStQZX8IkeAoCNhTm3VtUOx5ZRli7oGIVXUznqbrywN3ubI3BPzl\\nr4LQ7IiDWXWVkcSmgdsBTbg3IuJlQQB9imqvCR2KReEepwagYVMZwJucw5VvttJXYaYL9BlxTCNV\\nbldxUsxVX9QB8qha4ppPbgdD11wAl5MgYmyqFgtwNtWHFawv71OcAkXDF2vBUBDul2rA7ruBAwk6\\n4OCsuN5AHQL0DAgQ1rIoGSUi88VdtPrUVaziJIoWxordgRpthuFDmHpG1LFugw0SazaX6HIiTNwl\\n+j/+KpaRRQEC0Vqi8QQlO/7WDMzDjLWIiN2xM4QiEVauWMYb3T1k9ADWvAcoGRb4greH+6Si80GL\\nYBZSGOlBFE3s92bX1+3bt3P8xEky410EG1Yi49YVIBgMEAgGMHTDtqUvYZoWZnFUzI36zVjBahQs\\nou0dWDM9FMY6xbV/8pwYN5cUe42ZWFj4BaDsi4hYYiMvoD5VK0OcEpLVFHF9MQ0xhrP66q+aJ0BA\\nRYG69ShTF7HSrmtc1RKINJfnfW5YXHPsKHQlNl/EMN/YQyk7RuqN57GMPGYxS19fH+fOnXtT4N2T\\nJ0+ePHny5MmTJ0+ePHny5MnTe0fr169n//79HDx4kI9+9KMOKCSdtCTwdyu9/PLLAKxcuZI//dM/\\nBWDLli309vaSSqUwTZNoNMrixYuJx+MV+2YyGcdNLxqNkkgk/lm/lxoZGeF//a//5dzYeuedd7Jz\\n507a2trQNI3p6WlOnDjBsWPHuHTpEl1dXXz2s5+lo6MDEDDO6dOnef7550mn06TTacbHxwEBZNTX\\n15NOp8lkMg7Y5oZ1JET22muvORG20Wj0bfVhcHCQS5cuEQgE2LlzJ36/n69//es8/vjjpNNpstms\\nA+HIcXLDW+6Y1qmpKfr7+52o0XA4TFNTE3V1dTQ2NlJTU8PFixdv6zIovxuemZlxYBgJdUnpuu5E\\no0r3Kinp6BYKhVizZs2c50gmk+zZs4d8Po+maSxevJjFixdTVVWFpmn4/X56enq4dOkSyWSSH/7w\\nhwwNDfGxj32sAmpSFIVPfvKTtLa2snfvXoaHhxkeHqZYLFIoFBgYGKgAGmfHprr7626bhHVuBaDd\\nTtL9TtM0GhsbGR4eJpVK4ff7K2KU0+k0wWDQMWUpFApomuYAe7JtssaqqnLx4kUnnralpYX+/n50\\nXaeqquqmMZVRvNLxrlAoOKCoZVlMT087xxkcHHRgOvf+s/vv7lcgECDQe9NiAAAgAElEQVSdTlcA\\nexJqk32Uam5uduJF3dvfTu5xlhBZLBariDsOhUL4/X5UVWXZsmVcu3aNmZkZqqur+cIXvoDP53Oi\\ne7PZ7C3hMOka2d3d7UC0d911F4lEglKpRH9/P8lkkp///Ofouo6iKKxevfqmuSPdGGXtZ9dPURTa\\n2tqoq6tjbGyM6elpNE3jlVdewbIsYrEY0WiUQqFANpt1Ilpnz1sJ+waDQcf1UkbMBgIBLMtC13Ui\\nkQj/6T/9J5566ikuXrzIU089RXV1NZs3b3bA0Wg0yn333cejjz5KXV3dTWDitm3bGB8f5/vf/z6n\\nTp0ik8ng8/n4y7/8S3bv3s3OnTudqPFkMkkulyORSPDZz36W4eFhLl68yKZNmyrG7q1o+/bt/N//\\n+3/p7OxkaGjImd+z3U9n12XXrl386Ec/4sUXX5wzyleCdu6/Nb366qv4fD527drFggULCAaDbNiw\\ngfXr19PZ2cmLL75IZ2enc20Lh8OsXr3aOdfFixfRdZ1MJkNLSwutra1cvXqVcDhMdXU1oVDIWdOq\\nqjqRwdIlMRgMsn37dl544QX279/PY489VhHB/NWvfpXvfOc7nDx5kiNHjnDkyBFqa2uJxWLous7Y\\n2JgDltbX1/P4448TDocxTZP+/n6+/vWv09/fz8zMDC+99BJ1dXWsX7/+bUeRe/L0buo9MTv/KW8i\\nPHmCuYGHYDBIqZTDMosoSnAO8MmWDSspgC/aRH7gGJGAxvLly/nWt751S6c84P/LTe+tStd1vv3t\\nb3P8+ElyBQNTixCou4tArEU4DpZ0jPQQmfEueq/cYPB7P6C7u5svfelLaJpWAQZmsnksxYdVzGLq\\nOciOUxzvEidS/QIWiy+FSFMZrMiOYM10UyqkKCXPoSqW8yb1rergwYMU9BKBurscGEXVfIRaN5K7\\ncQzMIpZhwcQ5wA2YSIhRAE6Wogn4wwXKYRoCTkr1Cke98TOQH4WG+yrG3HJHrmLDbDKe1ZKQlUtu\\nMA3b+UuCfYb9YcmfEC59s2VZZbhP9Zcd/iSEB8JNLlgrwKLsAIydxMpchyQojfeDqoiYT80HTffD\\nTCNMd2HpMzB1DsUqiXrE2qmAFq2bP7yJPtj9Mw3hhFe1BPTXBJCWvQHRBbcfxJIB+REB3BXGBKyl\\naqLmagCMouirkRFAXqRVQGqqz1VnCU3KaFtVNCt7XTjSlYpiH18MmrZBICHmYW5IAIDVy8sAngMS\\nqQIctGzXR8X1chhqFPUwMiLSObpglnOfDdUpsyA/1QepftE3XxRCTWW+zZkP5UOgYMeG2hHSFYDp\\n7A3lr3r5XIoq5sxcoKKECUMNULNGxMzmhgTMGrbd+lS/vU+2fNyKU5dsSFTCpgmI3QHBJvBH7Dhp\\nAZtiZEQ9tYAdHTzLvRJcLpia6zlX38LNAhSTMdBYwinOdnU0TAVLtfcz57iT0l1rGRls2aC2ojj1\\nsSyLYrGIPxohsmAHxWiTDatNw+R5zMnXxfhqUWi055Opg2qhKFrZmc8yRZ/CTWK7kUNYRoZs7z+g\\nhqoJ1CwhEF9AKTdEcbwLtZQjHPJx3333Cctx+9pW0vyUSsWbnQlvJTvu25o8R3GiGy1c+5ai4Vet\\nWkVLcxN9VwfQp68TqL6j8rCA3+/D7xdrQU8NkDGyWDIa2TTQfBr+gB+lfjmBumVl99ZiCquko2h+\\n1EAV/urFZK4fxipOAUVxzUGBoZec9Wb5oxC7AyUyr+xCqai2E6DtpOsLVfTVXzXP5a5rQuP94po+\\n3SWuBZOv3wQbAih+4XZKbCFWftQeOx0jN2G/VvhJZfJ884/++JbAuydPnjx58uTJkydPnjx58uTJ\\nk6f3npYvX17haiTdkILBIIVCgXQ6TSQScSIh3SoUChw6dAjDMOjs7GR6eppIJMLx48c5cOBAhcuY\\n3+9nw4YN7Ny5k1QqxYEDB7h48aIDpyiKQlNTEx0dHWzbtu0mGPDtanJykj/8wz9kYmKC9vZ2Hnvs\\nsZviVefNm8eKFSv45Cc/yc9+9jP27NnDd7/7XYLBIA0NDTz11FOMjo460Z6WZVEoFBy4SUZPyj7M\\nBTxJSANEjO7ChQvfVj+OHj0KwObNmx14JRKJ8JWvfIUnn3ySQqHguFe54x01TXOieUdHRxkcHHSg\\nPOkylclkGBoaIhgMsmLFCmpra1m1ahWvv/6642znBrnccJZ0m5ur7z6fD7/f7ziNScBPAoEg4jLn\\ncsGbmppy4L7W1lZ27tzpwCgywSUcDrN27Vruvvtuuru7OXz4MAcOHCAYDPLQQw/dBPnt2LGDLVu2\\n8LWvfY2RkRFM02RmZoZcLnfLCFWp2S51k5OT6Lr+tuAXOSYSxpOPDQ8PY1kW2WyWpqYmCoUChmE4\\n0Jr8txwvNyDmduFzHzcUCtHc3IzP56OmpoZsNktNTc0toU0J+cnjyNqpqoqqqoTDYdrb2x0YUtZD\\n07Sb6mZZlgNk+v1+UqlUxfOzAT9FUWhubmbZsmVomkYymXxLDpduV8JIJOI4VUoo0l0fwzAIBAI8\\n9thjvPLKK/zDP/wD9913H42NjeTzeSzLIpFIMDExQX9//01/w52amuJ//s//STKZJJFIsGPHDu69\\n915qa2sdtznTNOns7OTAgQMcOXLEAfhmS9Zv9nOz14GMRldVlVwuxyuvvOKcR65xEOtdbifXmFyb\\n0rVQHl9VVfx+f4ULpIwp/8pXvsKBAwd48cUXGRkZ4bnnniOfzxOJRNi1axcPP/wwiqI4IKobJJZR\\nt5///Ofx+XycOHGCYrHI6Ogo3//+9/nrv/5rJ9rYsiyqqqrYuXMnmzdv5qtf/SoAu3fvRlGUijjq\\nN1MkEmHz5s0cPHiQQ4cOcfbsWQDa29tvu9/WrVv527/9Wy5fvszevXt5//vff9vtp6enOXXqFACb\\nNm1yHFNBzOdVq1Y53IOcuxLezOVybN26lZ6eHtLpNKqqMj4+zte+9jVnTCRA2dHRQVtbm3PccDhM\\nJpNxHCd37tzJCy+8wOnTp3nsscec14LJyUmampr41V/9VR555BH27t3LsWPHmJiYqIhel8Dh6tWr\\nMU2TM2fOOC69169fp1QqEQ6HGR4e5s///M+Jx+N0dHTw0EMPOa8vnjz9a9J7AvB7szcgnjzdSnMB\\nD4FgEMN2XrJKBRQ1MLeTX6YfSlkULUBu6DQBRUdVA+w/8NKcTnnHjp8gGgmLF7Z84W276b0dmabJ\\nt7/9bY4eO0FOV+x42wUOJCfli9QTbFiJPn2dzMBRjhw97nwgOXHiVQcM1BpWUFISWKr9ITZ5DKsw\\nIWIba9dBdL4AMdwK1kH1MsjcwBo9jlnKMTU1dUur77mUTCYplSwCscr40GD9Ckqz4jWRMbqqH7Qo\\nVikngDI1BHX3CmhLUagAjyLNAv7KCFDOAZkattibmVDScZFDdoFt2E7xcxPEBGXAz+30ZpnCTQ5L\\nRFTO5dQ180YZ7mvZLSBABZcToA1zqX5AE+5WvioRUZm5jjXTAIk7y2+IFQUSd0J8KUryGMx027yY\\nKqAYsRE3gXOyvaYbSrPPHW4S+5uGqJkvJoDD/8fem0dJdR5m+s+9dWvfet8b0TQ0IJBZBEJICEkg\\nrMUejz3jxBnLJzOOfeQ4TsbjREmOkzhjzzk+4zNn4jh/OXGcjG2NJVneFMWyhBBIQmKTQOyNgIYG\\neu+u6q32qrv8/vju91VV00jIM/nNJFPvOX0auu7y7bdu1XPf13GEW1baBSbtkmgn6Sin6a7TnFeU\\nKzvsApJu/WwLkscFGCeBquvklP9enIOptwTchy3Ax8bbwed+8BFoASMkwLPMMEQWgoiaAokEEFZx\\nOcyNiNftklumiHBb1L3lMiwWHVxMwcwJActZWTfCuUvUV5ZbtoNjCqfJxJvitfASAU8uBN8WQl8y\\n/tcIi/Gna9WgohwneTdu1BsVcFb6kgDcoitEPSSw6I0I0DU36TrdyaZ2ynCfgk07XUhPOgZ6xDyX\\nsOn4KxUOiwu7zl5QtwpnS6SzpftG2bEETFpIiPZ093MqHRBVH0q3vgo3Q1u6LdoV55aAn9hO3mxo\\nmoavaTVabDn5xDtYYweQ40lr2oAebAAcbNvBcUwcc5FxqWliTjdvhsmDOLaJnZsnn3sTRt9E03V0\\nDbx+P93dneomSq5tHu/7jIYHBUPahXms7NRNRcPrus6uXbv4wQ/+J5mRg3j8MTzBhhtuX5y+KFo+\\n1ovjmGia+BBOeZxqGt5oJ95odRyz4wjbcyfcA6WTws3PsURsuGwvzSNg3+yoAAijyyG+ygX8PGDL\\neWKV6+pG6ur+GOSmITvhjr8+4f6YGYLMNTQr5wKZXjG+o70QbBPOj3ZJjHUc4SbYeheg4Zh5NHOa\\nTGrwOuC9dgNXU0011VRTTTXVVFNNNdVUU0011fQvV5WuRk899RTLly8nHo8TDAbVg8KZTAZdF+YQ\\nEvSzbZvvf//7zM3Nkc/nFZAkgbfm5mblyJfJZBgdHeXVV19l9+7dgIA98vm8AlYMw1AOcz/96U/5\\n4Ac/yK/92q/dFOyxmL7zne8wPT1Nb28vf/iHf/iuUcOhUIhPfOIT1NXV8dRTT/Htb38bj8dDKpXC\\nsiwFxki4T0ar2rZNqVSiUCig6zo+n6/qux8JZkkIxrIs9uzZwyc/+cmbrkcikQBg5cqVVX/ftGkT\\nn/nMZ3jiiScwTZNYLEZ7ezv19fX4/X7eeOMNstksY2NjDA4OUiqVFIDl9XrJ5XLqe+VcLsfbb7/N\\nunXraG5u5tZbb+Wtt95SdahUZRQocMPvuoLBYNWYkI5gMlpSwiwL9dprr1EoFOjq6mLHjh0KJqp0\\nnCsUCoTDYXRdZ+XKlQSDQXbv3s0LL7zArbfeyrJly66DpgYGBshmszQ0NDA9Pa0iWysB0xtJtoEE\\n6fL5PMFgUJVnYftUOjnKuFQJL2UyGYrFooJ4pHuXjCKudJFbCCpWxn/KdpVxv5FIhHw+T3NzM7qu\\nYxgGsViMiYkJwuEwoVBIQZsLJY9dKpUUvFRfX69ikbu6urAsiytXrqiYUenWVxn5LMFL6X7W3t5O\\nMBhkeHiYZDJZBZo1NTXR3t6uXBmTySSzs7PXlauy/aXq6urweDwKPJbuh5UAqWmaJJNJ5TA5MTHB\\n4cOHARGD6/P51Lp1xx13MDg4yL59+9iwYYM6z/DwMH/1V3/FxMQES5cu5T/9p/+kYEnLssjlcgrG\\nW7NmDWvXrsVxHA4ePKj6WTp3yshsWTb52mLjToJ5xWKR7373u8zPz+M4jnLslOf0er34fL7rgMHK\\nmFk5PmZmZtA0TcVLV0KhAHfffTebNm3iwoULfOtb38Lj8bBixQr+9b/+11Vxv6VSSbVx5fgMBAI8\\n9thjjI2NMTIywvbt2zlx4gTDw8PKHdLn81EqlXj55Zd5/fXXmZmZIRAI0NPTQy6Xo1AoUCgU3tWF\\nr1LLli1j//79nDt3jmw2S09PD0uXLn3XfUKhEP/hP/wHvvOd7/Dkk09imiYPPfTQDdexkydPks/n\\nue2222hoaKhy21uoSvAxn8+Tz+er4tk1TVNQpuwX2R779u1j3bp1fPazn1UOobquq3VDmlvkcjks\\ny6Kvr48rV65w8OBBVq1aBUBraysf+9jHeOSRR1Q/eb1e4vG4ckiU7XzkyBEsy+K2227j0UcfVdey\\nsbExXn31VUZGRviHf/gH+vv7+eIXv0gkErmpPqmppv+/5PnqV7/61f/Thfhf0d/+7d9WLaa/+7u/\\n+7/t2PLi5/P53rfzWE3/PCQvLP1nz5CbHcKIdqJ7g3i9XmEVbVkCKnGsap+2wjRMvAFWDs2xMDQT\\nByhaGkUngNG4Fn/rRnzNazDqerE9IXLTQ6TTKTK5IkUniLfxNvxt5W0cI0I+PcvsdJL+s2cYHx9j\\nw4YNv9IN3J49e3j++RfIljTCyx7CG22/4Rt0TdPwBOowop1kEgNcGxzg2tAIBcuDv2sbwa478Ubb\\nKdkebLxouVERiejxQ9sOAUkscDTT3HhbNM0FwJrQcqOk5maIx6L09vbeVD1eeOEFpmfm8DWvQa8A\\nCDVNwxvrxi7OYxdmXYhMh1ivgI3sAmSuCKCn5R4INCqoRDP8ZXczTRdl9sWFq1nmqoCddEOAUc5C\\noMhV+ioUpgTUE76FMrDk/kiIC6cMH9lFSB4Vvxs3ieNXynFg6qB4vflO1wWNimNShpYq41SNoIBY\\nMkPCwSq6gqoYUXFwSB5HwwLbQtM8wnHRExBtpHvdtlhQB91TURdciMyNxdU8oizpqyK6dfoEpC6I\\nf5s5sDKiH6R7YrxPRGPGVwmYx4gIpzbpPqd5RD/mxkV9jEjZIW8hwOU6F2LlxDhEE2Bf40YURCaj\\ng/OTwrku2C7qWylVN3fsappw1Jt8wx0jLjSXGxOAnzde4T7nwkeynbND7n4meIJi/+wQpAcFgCfL\\nY+VF5G3iLUhfFucPd7vOkZVzXXPbm7K7mWND4rCAlOrWgi9aLrfsG9lGibcEZOjxi9ji9DWw89Cw\\nTvSHPLYnKOZKKSXGBIg+mNwv3PM8fmi914VS3THi2C6s6bqyaZpon8yw6PNwtxiXlf1WCWw6tjsf\\nF9wImGnhqGmEhRPg5AGwS2hye29UAF0S1pPjtoycuePWoGrcZoaEO2egRThXOiJyOxAIUiwKO/dC\\noSiemktfEUX0xqBhPYD6cEp+eKPGju5B83jRPD403YPmi6PND6LZRTC8OI4lgD3Ng6Z7sdGZnZvn\\nyJHDTE1OYpZMfM1rMfwhSqUitu0ICPtmXPxsUwC7WHjsIrd0d/DJT37yXT+IAejp6WFsbJTx0WGy\\nyUtovii6P7bofoXJU9ilLE58NZoRxOfzEQgGbhTGLdoNYdlfmn5HRFVbBbc/vOK32x7CUdHtJysv\\nXD6Lsy4Q684xF8zUcGD+Ipruxd+0Gs3jpTRzWYzZeJ+AvB1HxCmHu9HqVonrQGy5AHu9URfuM8V2\\n02+La3rr3RBswUFDMwKEG5YQbLkVzV9HbnaIsdFhpiYn2LRp03u2a001LabafURNNdVUU0011VRT\\nTTXVVNO/DNXu7/7lq7u7mzNnzjA6OsqpU6dYv369gmckBCXd6GQ85A9/+EP2799PNptVEIvf76ev\\nr4/777+fzZs309vby7Jly5RD1+XLl8nlhBHC4OAgIyMjJBIJkskkU1NTpNNpBYVduXKF0dFRNm3a\\n9L6NIIaGhnjmmWcIBAJ85StfuelY3OXLl3Px4kUGBgYUABYIBJRjWKVDngSiZMSrBBulcxiUwali\\nsaicqYaGhvjABz5AQ8ONHzyu1IEDBxgfH2fr1q10dlY/aLxs2TLa29s5d+4cuVyOmZkZ5ufnmZqa\\nYmJigsnJSfr7+xUM5vV6CYfDVYAilF34pqamFJQ1Pz+vQCNAQWMS7mxpaaG5uZlwOEx9ff11faTr\\nugLBbNvGMAzy+TwTExMYhqGiOys1NTXF0aNH8Xq9fOhDH6p68Fh+PinLXQlsxuNxTNNkYmIC0zRZ\\nv3591T6O4/DjH/+YRCJBU1MTExMTzM3NKaBsIUi3UAv/3tTURCgUIhwOVznomabJ/Pw8V69eZXR0\\nlEgkgmEYFItFRkdHOX/+PFevXiWZTJJMJpWrIqDA2Up4ElCxrIFAoAoqlHBWKBTiU5/6FO+88w6O\\nI1LEJAwpwcJCoUAwGCSbzS7qkCf7VJajtbWVWCxGXV2d+k4gGo0qeFCOZ7lvKBSip6eHVatWEQwG\\nKRQKqv7hcJjW1la6urpob2+nq6uL7u5uWltbVf9PTExcB/ctLFdlH3R2dhIIBGhoaFDx0LKdK+Nq\\np6enFZR79OhRFdUtwWE5Z9vb23nllVcYGxtj8+bNvPPOOzzxxBP88Ic/JJlM0tHRwe/+7u8SCAQw\\nTVN9fy7Ht2xr2X/Hjh0DYPPmzQpqqwRqAbWvdEqUmpqa4rnnnqNYLPL222+TSCRob28nFosxNzdH\\nfX09y5YtIxwO4/f7F10bJUQpYcxcLscTTzyBbdt86lOfIhKJKCdIEN9nyJjnlpYWnn32WXw+H5/8\\n5Cfp7u5e1KVTHt/v9xMKhfD7/apNjx8/zsDAgIKjOzs7ufPOO9m4cSO9vb14PB7Gx8cVJBmNRlm5\\ncqXqP3ndeS+Njo5y9OhRNXY+/vGPs2TJeySuIa53oVCI06dPc/bsWQ4dOoRlWbS3t6trWS6X4/XX\\nX+fpp58mk8mwbt061qxZA6BimCvjiislnW9/+tOf8uSTT1IsFgkGg3R2dtLT00Nra2tVJK9cnycn\\nJzl27BgbN24kHA4rWFj25y9+8Qscx+Ff/at/RVtbGy+//DKjo6M88MADqtxyvDc2NtLQ0EAsFquq\\nkyzb008/jWEY/Nmf/RmNjY0EAgGamppYtWoVO3bsYOXKlZw9e1atW1u3bv2VYfuaavqnuI/4F+Hg\\nV1NN/yt64IEHuHDhAgcPHSFz+UUCnXfhjS8hFA5hGAaFQkG8SbVLYNsCepk5jmZmMQydcChIvlDC\\nxKf2rXTKcxyHwtQZATIYYZyG9RDqwPIH8IdCCpZYzE0P4POf//z7uoGzbZs9e/aQK5gEura/q0NT\\npTzBBoxYN8XEOcBPdMVDGBX7+v1+LDOLM3cecISjl79R/Fs6iNlu9KKErBwRLav56/C130l+4hB7\\n9uxh586dN1WnQCAAmoZjXe+apemeBfGaKZyZU5A8iWPnBQDUsL7s6KZ7QfMIBko6t1U67PnroEk4\\ncDF/UYB70mlKM1yQywEzL6AtxxIwiu1GzFZiLxpuDHDRdZLyCSjNzAhwLdh2fWVzY+Vo11AXCoxS\\nqmgv2xLHdxDbhLrEfqWUgLNC7eVygAv/ZdzYaXc323Jd2Crc1KpUCTL5XNdCx41PdQQUaYQFFDl/\\nXgA83ghEegWsk58Q+zXeLqJqNdelrZCAzDVRV00TIFgp4x7fFrDP1BFx7NhyURfNJ1zxsuMCGiql\\nxf+NqIigzY4KaLDySSZNg8gyAexlh2FsbznyWNfLTat7xLy2iwIGlI56vpgoq4NwCZw8KMoUXV6G\\nL62CAMfSgwKmAwESxlbBXL/o88KMgB5lRCmU54o3AvHVYnsJAKryuxGzCiT0iHqYGTf+t0WUU7Mr\\nxp+7f3ZUbOc4kE/AxKvliGPHphzHawtwz4iIsZM4IrYvpQSop/uEQ6eEXR1LlEnCc1ahArJDzCFz\\n3oVfGyk7WZaq66Yipxc48OXcON7cqPgBNM0Q7VRKQ+qyC4cGKuq7AGSVA1/GMJs5sZ9jCSc3tx/k\\nE1/i5kGMF62QRAK0WnwFePw4tolp2phW3j2dhua5QXS77eDoHgQY6gFfA07kFrRAC75QBK+hqVh0\\nu5THsS3yI4cJ9+y6+Wh4da4SOA52MU0kEmHXrl03tabqus7nPvc5NE3j0KEj5Ib3kx8L4mtciRHp\\nQNO9OHYJMz2KmRnHwaPAU8uyyGbEB5aG11h01SjkspRG3xBjEAT4Ge1x553XBWYnxBor15JAIxTn\\nxXyZOiigbM0DlJBRugCaR3ygZUQ60P1RrEKqwp1zkYhx1Vam6zypQWESzByaNyrWYVuAsR7Do+rk\\nq1uKxx8jc/lFDh06Ql9fH7t27XrPtq2ppppqqqmmmmqqqaaaaqqppppqqumfp3w+H1/60pf4xje+\\nwejoKH/yJ3/CXXfdxc6dO+nq6sLn82GaJrOzsxw4cIDXX3+d8fFxisUia9eu5dq1a2iaxkMPPXRd\\nDC7AlStXOHToELlcjuHhYS5fvlwFnEmlUilSqRThcJienh4OHz5MOBzmM5/5zPt6AHXfvn2AcKV6\\nv1G/qVRKQWmBQECdVzrfSRhDglOVkn+XoIuE+6Rbk67rFAoF9u3bx/Lly2+qPNINrRK2q9SWLVtY\\nt24dhw4d4qWXXmJwcFC5PAUCAT7wgQ+QSqUYGxsjEAgoSCcYDGKapoJUZNmHh4dZvnw5HR0dzMzM\\nVMFCUoVCgY6ODjweD5FIpCrGubItQqEQ8/PzCgxNJpMKpGlsbLyuLv39/TiOw4oVK5S7WSVUVDkG\\nstksoVBIvX7rrbdy6tQpTpw4QSqVIhqNqu1ffPFFzp49i2VZDA2JFKtKZ8CFx67898Lzy3ELKODF\\nNE3m5uYYGBhgbm5OlScYDCp3xEwmg2EYhMNhOjs7aWhoUFGepVKJmZkZ4vE4Pp9PufFJYFDGzspt\\nPR6PmpN+v19F1FbWWbpiNjY2KqhvyZIlJJNJ5ubmqkA/CadFIhFaW1uJRCLEYjF6e3s5deqUePA9\\nECAcDhOPx1myZIlyzJN1kp/NZzIZxsfHMQyDXC5HPB7HMAz8fj+GYag42WAwSDKZVGDqjWApwzAo\\nlUrKMbCpqYlAIKDKJJ0pA4GA2lYeSzrsPfjgg7z99tsKyP3Lv/xLHnvsMeVq5vF4uP322zlw4ACP\\nP/44fr9ftXUgEODDH/4wDQ0NCqyshOOkM5/P58Pv97Nx40ZisRiDg4MMDQ3R3d1dNeds21ZRvXLf\\nyojdF198kVwuRy6XI5vNous6V69eVePswIEDPPLII3i93iqQuFLy74ZhEIlEeP3110mn0zQ1NTEz\\nM0NjY6Ny1JTjwO/3EwgEeOWVV7Asi7a2NjZv3ozX61XQpnSAlDG9lSCpXO+ampqUy+DKlSt55JFH\\nWLZsmQLV5DoxPDzML3/5S9544w2eeeYZcrkcDz30EKVSiUwmQyQSec/vezKZjALCb7nlFu644453\\n3b5SH/zgB6mvr+epp55icnKSp59+mh/96EeEQiE0TVMOjJlM5jrQXfa7dLWV8xMEn5BOp/nud7/L\\nuXPn8Hq93H333dx9992sXbtWrWumaXLs2DH27t3LhQsXsG2bYDDI5OQk3/zmN/nTP/3TKkdACWHK\\n+PO2tjbWrFnD2bNn+dnPfsanPvWpKmh7YdsVi0V1vdq9eze2bbN+/Xri8TiZTEaNATmebr31Vr7y\\nla/w9a9/nUuXLvHjH/+YRx999Kbbt6aa/qlVc/B7F9WezPp/Q0grgwoAACAASURBVJqmsWHDBqYm\\nJ5gYG6EwM0hh+iI4FobXh9fQ8Th5nNRVnMRR9MwVPJTo7Ghj+/btDF65RsHy3NApr5g8R2HqLI7m\\nhY4H0ELtOI5wBxRP/XiqyiLd9LLJS0yMjRB7H453AKdPn2b3S3soOgGCXXfe9I2f4zjkx4/hmEVo\\n2oQv1onHU74IegyDUmoEe8512GrcVIbDpIMYCBhORWUKKMzv9xGMt1CYvkghO09f3wpaW1sXK0aV\\nzp49y7XhYRwjghG+fntN0zBCzfgaV6MHmzFzs8IFzLFEucycgI00A7yxCkc4WV7XYU8CRt6ocFcz\\nMxBsEdGzmqe8jaYLyEoCQ7GVroOcdOqrLFyFi19hWsBTdh7qbhXRwNWNLxzwSvMC+Kpy73MhJs0p\\nt7F0S5Tn1BCv5ScAE0LdgCMAnHwCZ/INNCuP3+dF08ByXEAv2MLicJ88aEX/yjbLXIP8uAAdcVzQ\\nLghNm6B+HZRmBfCm+0TMcLBNtH/qMiTfFL9L8wLkU/G4Ff3hbxL1M1MCuEsNChgodUmc1y6J6F3s\\nMpjnWFC/FjwVzobSBSzYLpz+ijMCdExfEdvrHgH9mGlIXYHpo26/2mKf0px43VcP9R8Q25lp0cap\\nS+Inc0X8XzoRgvh35oqoo2MK9zxfXDjl6QaaN4qm+13XQl30t8dH2UGR6nZ3LFGm0pxwtHNsiN8q\\nxoiKoXVQjoqleQEpOrZwTAx3CGBPAnpmRkTtqvHquvHlRqCQFNt4fOKY3piAIpUjHuXzVUZGO5YL\\ntfoE8FlKQ6QHFbEq+6MyGliNfXcbuwCJY6J8mseFT93z2kUENGeL/vBXQssVbqFVY9f9LeerXRSA\\nqBxjiKfTBLDnE057U0fEWNG90LgevJFyZK50A1SQpO0uf6JdHMcWcFp+UsSCN22Gpi0CxNS9WI6O\\nxx/BH+/A37QKkzBWbhK7MItdTOFv6MWxHeEa61jCle7dIL/5y5AbxfBobN++jV//9V+/6bXe4/Gw\\nadMmYrEoM9MJCtl5zPQYxemLlJLvUJy+gDk/7AKkhoCdPQFs28GyLUoVdvoeowz62Y5D5sqrONlR\\nN9b5Tqi/Tawz3ohw0DRCAsqN9Qn4Lzcu+jzQLIDR4qxYU/2NYv5oGlpmCPITGOFWfHVLVT3N1Ijo\\n01B7eb4j4O/K8eBYEk7OwOQh0XcNt4G/QUHP4unP8rVY9wbRfBEKM1eYmU6wc+fOmotfTe9btfuI\\nmmqqqaaaaqqppppqqqmmfxmq3d/9vyG/38+dd97JyMgIIyMjXLlyhX379nHw4EEOHz7Mvn37eO65\\n5+jv7yeXy9Hc3MwXvvAF9u3bR6lU4uGHH17UPcmyLJ577jmmp6cZGhpibGxMuZBJ96uFMEKpVCKV\\nShEKhZicnOTWW2+lubn5pupRKpX467/+ayzL4rOf/ez7AvxGR0f5yU9+Qj6fV6BepWuR1+tV38cu\\ndAurlGEYKvLQtm00TVPwlWmaTE9Ps2PHDgVUvFeZzp07h8fjuSHAUiqVOH78OO+88w7pdJp8Pq/c\\nwfx+P7FYjI6ODgVEmaapylLpziXBliVLlhAOhxV4JWNmperr62lvb1egTzAYVG5dC0G5QqGAbdtM\\nT08zMzOD4zhs27atCvCzbZtcLsdrr72G4zhs375dgY2Vx5Jxx3IfCbxomobf7yeRSChQbsmSJWQy\\nGZ599ll2795NOp1WY01CcpOTk9c55i2UhN/kTzAYpKOjQznZFYtFZmZmOH36NLlcDhARsj09PZim\\nydGjR8lkMsTjcVavXs3y5cuJRqNVsJt0QpPtHI1G+dCHPsTFixerHM08Hg+BQIDe3l5+/dd/nfr6\\nekZGRshkMkxPT+Pz+ZQrnoTeSqUSkUgETdMolUqEQiHq6uoUJBcMBolGowq6jEQi1NfXc99993Hm\\nzBnS6TQ+n49du3bR2tqqxo90MJSugpX9IN3DpFtkc3MzjzzyCKtWrWLdunXKyW1ycpJ8Pk8oFGJ2\\ndlaN2YXtLsdoY2Ojclnr7OxUDorSZbAyPnh8fByv18u2beK7g3vuuYeuri5GR0cZHx/n/PnzbNmy\\npQpKfeONNzAMg/b2drZt28bQ0BCxWIzHHnuMQCCg4lkl6LUwurlQKCjY8/Lly5imyW233aaARp/P\\nV7WGVAKsMr75hz/8IbOzswSDQZqbm2lrayMajSonvkKhgMfjoa+vr2ptupH7ZCKR4O/+7u+YnZ1l\\nZmaGN954g9dee41isUhTUxPBYJBQKKRif7///e+TSCTYuHEjd911F7ZtUywWyefzVfWVcKA0CALh\\nmPgXf/EX2LbNtm3b+MIXvkBXV5eKnpbQpOM4NDY20tfXR2trK6dOneLChQu0t7fT3t6OZVkKfFwM\\n/JTnf+aZZxgZGSEcDvOVr3yFurq6G87jxdTZ2ckDDzxAJBJhbGyM6elpcrkc6XSadDqtrk8ej4eO\\njg62bt2Kz+fD4/FUudpKV0dN08jn83zve9/j1KlTxGIx/vAP/5C77rqLurq6KhDQ4/HQ1dXFPffc\\nQzwe5/Tp0xSLRcLhMNPT0ziOw6pVq9RadfDgQU6fPs2qVau4++67AWhpaeHgwYNcunQJgKVLl6r1\\nceG6LYHc3bt388orr2AYBp/+9KcVKCpBxUqFQiH6+vp47bXXGBkZ4YEHHqiaLzXVdLOqOfjVVNM/\\nkbxeL5///Ofp6+tjz549jI6NU0ieJDd5QsBXmobh0QgHPHS0L2XXrl3cf//9fPnLXyb/Lk55juNQ\\nSJwT2EHzHeCvB0DTfTiWIMZ9ft91iJUn2ECgcyu54dffl+MdwP79+ymULHyNK6ucBN9LZnoUu5AC\\nbwQn1OHm01cvEfb8oPhHtLcaqNE8gF52W1LgUcUmmo6vcSWF5En279/Pbbfd9p5l2r59O4ePvEkm\\neR5/85pF6+M4DoXkOfITZ7FLaYQrmOuAVZoTP9lR132tV4AluutK5ZiivJ6KWNrocpg5iZa5ihOq\\ntnynMAPJY279dJg6IFwCg+0uoFXZXm6Ma2ZYwHtWVvwp0FoBC+HCTZaAsGBxdz95ONGS4j/SPU33\\ngKOJ/WZOld3XHFuANjMn0KwcdfEo27dv5xe/+KUY06nLAi6rioV9F2keUYb0FdcNCwHNGWHhuOWL\\nu8cVb6ZoukPAWI4FU4cEXAflfgi2uU6KJQH5pAYEGFZMCqAoPylgK29MtK3uFU5zkR7R3tkh4apn\\nZsoRtpXtIyFPDRe0aob5C+Ic06eAU+WGdUzRJ/5G4fqnGQJU0w0RW1u3Soyb2bPCrdDKu5ClLmCu\\nUIuYD2ZWAI+aV/wuzkKoQ8BeOGgenwDBrBIk3xLjcvJ14ZIXdCGlSkc7abeYHYKZE8JJMNwt+k13\\nx6t0z8QRY23mhOifcKeASXFEm+XGIHlctOv0CREJjCPKUkiW69K4QZQrOyLmQmVMssd4F0e+kgC2\\njJDok9yYqDua6/In+8h1JVzoUJkdK8N9DRsFtKV7RJ1z4zB7ToyH5DEBiwVaysdwtAWcqntcNV9d\\n9zY7K2Kyp98W7di4Bc0XEHVLXxVzVDotal6wTRzbrJ6vguYT88s2UTHfqUtijOs+aNkm1nrlFClu\\nVHPZHJZpEQqFCDT2Ymp+nInXKc1ewQi3EmpcLaZVsSigNFtzI36rI6odqwjzF9Ediw3rN/LYY4+9\\n75gOgNbWVrq7uzFNk0QigWmaFIslbMsUbaqLp6kozQhQlHK9TdPCsnKYbn00DfKTZ7EzI6K/23cK\\nYNouUdU57vUUTVfxuYztFaBsZKlYX+bOi7EHou3nB4SzXsMKdRhf42rMzCSl2Ss4oy9Dw3q0UAfC\\n8bWApvvctdF1y8yOw8xxsE20SDdElontEE9o+/y+69rHG7+F/NhRRsfGOXv27E1ds2qqqaaaaqqp\\npppqqqmmmmqqqaaaavrnq3A4zJe+9CWGh4fZt28fBw4cYHJyUkVbAqxZs4adO3eybt06fvnLX1Is\\nFlm6dOkNoxEHBweZm5sjlUoxOipTSzS8Xq9y1JJORZXK5XJMTEwQCoXYt28fq1evvqk6zM/PUywW\\nicfj10Xa2rZNf38/g4ODZLNZDMMgHo9z++23U19fz759+1TEody+Uvl8vspJbTHZtl3ltifBm2w2\\nSyQSUXV7++23uffee9+zPtu2bePnP/85b7/9NjMzM9TX11e9PjMzwze/+U3Onz9PJpMhlUoxPDzM\\n/Pw8pVIJr9dLS0uLivmMxWJcuXKFqakpVbZKaKlYLJJOp4nH4wQCAdLpdNX5gsEgy5cvJxQSCWDS\\n6Soej6PrOtFotKotMpkMc3NzVY5vlmUxPz/P2NhYVWysjLKUznyVsacyThVQznemaZJKpZTDYHNz\\nM9euXWNgYIDh4WGOHz+uoKhgMMiaNWsYHh5W+zQ0NJBIJN6zDyrV2tqqwBkZMXr69GkFTWqapsbd\\n1atXyWaztLa2snbtWnRdx7IsxsbGGB0dVdCUjO9sa2vD6/UyPT1NKpXiox/9KC+88AI9PT3ce++9\\nBINB2tra6OnpQdd1brvtNo4cOcLly5cpFAqEQqGqvpSQqmmatLW1UV9fTyKRYG5uDp/PV+VOCAIK\\nWr9+PatWrWJiYoL5+XnlmieBSBkpXOkeJ53cgsEggUAAr9eLz+ejvr5eAcESkPP5fOTzeQzD4MEH\\nH+SFF15gbGyM5cuXMz09reCmSifCWCxGQ0ODijyur69XwGwgECCXy1EqlTAMg3Q6zezsLF6vl97e\\nXj7+8Y8r2PH222+np6eHb3/724yOjvLDH/6Q3/u932NsbIynnnqKcDjMhg0bePTRR9m7dy8AW7du\\nrYKaJKSXy+WUO6cEDSXQu23bNvbv38+RI0dYunQpjzzySBWk5vP5KBQKqq8kfPm9732PmZkZ6urq\\n+OIXv8jatWvVOJuZmeHHP/4xr776Ks8++ywAH/7wh1X86mIaHx/nL//yL1WfyX5KJBL87Gc/44UX\\nXuDRRx/lkUceAWB4eJiBgQFk7LJlWQp0g7KLqfwuRtZZ/jz//PNks1nWr1/PJz7xCQXnSRBYznPp\\nJOf3+9mwYQP5fJ5nnnmGf/iHf+DOO+9U7pWZTEY5iEqYUYLTIyMjnDt3Dsdx+LM/+zPa29vfxyzm\\nOgc9WR7LstQ639nZycMPP8zTTz/NyZMnFSArgVzTNNX6lU6LpKmzZ89y7NgxgsEgjz/+OJ2dnaTT\\n6SqXxoW6//77cRyH73//+2pM7d+/n4cfflj1mxyPO3fuVPutWLGCz3zmM3znO9/h2Wef5fz589x3\\n33309fWp8SmhwtOnT/Pqq69y/vx5NE3jN3/zN2lqasJxHAX6Lqaenh76+vq4cOEChw4dYseOHe+r\\nnWuq6Z9KNcCvpppc6brOrl272LlzJ2fPnmX//v1MTk4qG+OWlha2b9/OmjVr0HWdU6dOMTY+ge0J\\n4Y0vfvOmoDlPCMJdFSfzgC3emJgl8zqQDn51uGBychLLcvBFyhd0x3Ew06MUpy9iF+ZxbBNNN9D9\\nMXwNKzAiHRSnLwoWJbYc0LHtaqetYqGAU6yE0BYAOjLq1HHhLwm+2AIaMYwiRqSD3OSJqhvid9Pa\\ntWtpb2vl8pURSnPX8NUtrXrdsS2yQ69TnL0i3lAbYQGJ+JvAGxLgXG5CwGNmRgBwhYSIjVVgmyMg\\nIhk1GmyFGU2AYBVQDZnhcnxrtKcMXiXeEu5s0WXCGU33gVOE7IQAyswMwiXNdfnLjQlQKXPVjaYt\\nlR3acGDiDTD8LszWK8qjaShgUnfLbZtuBLDuAovuGLIK4rypQTQrg9cD62/fwOOPP87v//7vYzsI\\nJy0zIyCu8JIF7mdumzhcr7zrtiVf1H3C6cwXF3WTbnYyZthxynCf7i1H5FbFAjvCkS2+Wjj/Jd8W\\n5fJGRR39DQKYktvK/cLdAiYrJMHRVYxnueCuq51jiTEZWwHRFQIWS18ux/yCOIa3DjoeEuNj8nVR\\ndt0dD3PnBdhXcm/mlesj4hi5EdFf8ZXiPGjimKMvCSdCHNANAfdJKKx5qxg7mavlSOJIjwARdUNs\\nJ+N/TXecaJqA1ubPubHHXgFzZkfL2zmmGIsNG8rt5QkIcNGIiLplhsouatlLYkx6gtC6XbT7nHhD\\nX3aSrJDmEXChjGzWvQi41wTNEWDW9AkBExoRcZ7K+GG5TlSuH8U5ASYCNG8RzphSXgTMF1sF4y+L\\nNhl/TczhyNLy2K28GXdsMYbkfPW7EbC+qDi3mRbtXpiGJR8R7Tb1ljAC9EWwzQKOma2AErVq8FI5\\nlFrl33PnxaZNm8V8kPtpuP1ZUrbzIJ7+8QQbMOs34CTfopDox9e4avFo+Mq5qIGWHUGzsrS2NvPl\\nL3950Q8AbyTbtnn55ZfZs2cPY+MTFEoWllX+gEiYjmrovije+C0Ukxdg/pKARd1xr+kG2BaOXVT1\\nCYaCbry7bIM6sa6C244VbqSV8teXo9HzCXGtNNMiotnf6K6XWXR/FCPSUW4GTSPUfQ8Zs0Bp7gpa\\n4giaN4oe68XyNuBohhiT+SkBM1tZQEMLd+M0bAC7hKahnupc7BnVXwVKr6mmmmqqqaaaaqqppppq\\nqqmmmmqq6Z+/urq6+M3f/E0+8YlPkEgkyGaz+P1+4vE48bj47M+yLF555RVs22bNmjU3PNaZM2co\\nFApMTU1V/V3GaUooZrEHeJPJJG1tbRw9enRRuG0xSXhEAguO4zA3N8cbb7zBq6++qspRCdw8+eST\\n3H777Zw7d45isVjlOCXlOI5yz5JQzkJAqlISAtF1nXQ6jWmayo3Jtm0V5fpeqq+vZ+PGjRw9epTd\\nu3fzG7/xG+q1TCbDf/tv/40LFy4oh8SZmRkF00l3s+npaS5dusSSJUvo6elRTk/j4+OqLSR4J12p\\ngOscwurq6li6dCmxWIy+vj7WrVvHnj17SKVSTExMkEgkVCSrjKqUEFs8Hqe7u5t33nmHt956iyNH\\njqhyVgJ8hUKB//E//gder5fW1lZWr17NkiVL8Hg8yilMxr3m83kVcypjaovFIm+++aaKQ45Go2zb\\nto2PfexjPPHEE8zMzIgkMY+H9vZ2Zmdn1XHfS4FAgMbGRjVWbdtmbGxMtVc8Hqe9vZ22NmFiUVdX\\nx9q1a2ltbUXTNIaHh7l48WJVPC4IsHF+fp6BgQH6+vro7OzkpZde4j/+x/+IYRiMjIxwxx13EAwG\\nFVwo23T16tUcOXJEgaWVLmuFQkGBSKVSiWAwyNKlSymVSiqmV869iYkJDMOgr6+P2dlZjhw5ouAs\\nTdN48cUXVTvLdpcgnozLlY5u69evp6enBxDx3NlslkKhQDweVy6HoVAIn8/Hv/k3/4a///u/R9M0\\n2traaG5uJpfLKWBSQoEej8dNhDOYn58nl8sRi8XUOiIjZGXbrl+/nk9/+tOqbNLNMB6P89u//dv8\\n1//6Xzl+/DhjY2O88MILZDIZ1q1bx+/8zu9QLBZVHG1jY+N183x2dpZDhw4xNjamvj/v7Oxk69at\\nao38d//u3/Gd73yHH/3oR5RKJR555BEF40nAT467ZDLJk08+yblz54jFYvyX//JfqhLgPB4PLS0t\\nfO5zn2PJkiU8+eST/PznP+fUqVM88MADVU6EjuMwNDTEK6+8wsGDBykUCioh7/Lly9xxxx1qvchk\\nMvzgBz+gWCyydetWvvnNb6rI4nw+TyqVUv/3+/3XOXTK8xWLRebm5jh06BAgwMOFznvSXVH+lkCq\\npmls2bKFvXv3kkgkOH36NO3t7czMzFAoFAgEAjQ3N1etRY7j8PLLL+M4Dg8++OBNx51LzczM8K1v\\nfUtFH8to5Xg8TjabZXJyknPnzjE3N8ePfvQjAoEA+XyeQ4cOKcBOzo1oNEo6ncayLLLZLPv370fT\\nNB588EGWLFmixntl5Phi0co7duzgwIEDDAwMEIvFSKVSHDlyhE2bNnHkyBEmJiaor69n/fr1VXWR\\nLovf+ta3OHbsGGfOnKGjo4Pe3l78fj+FQoHz588zMTGBbdtEIhH+/b//96xZs0Y5blZG0S+mHTt2\\ncOHCBfbv318D/Gr6v0Y1wK+mmhZIPvnxXl/m34xTXhmaW3Fd3KKmGzh2aVGnPPjV4YJ8Pi9gF4+X\\nYrFEfuos1uwFAZOVjy44i9w0pdkr6P6oG2OIcpCr4mUQN4aOVRLA1MwpARbZpoA3vK6zmq9eACCG\\nr8r5S7oVhnxecBx1UX8vSejyBz/4n2RGDuLxx5RTouM4ZIeE+5WjGcIhMdQlgCvHdqNzNQGJ1K12\\nAb0jAoZCE7CZJivquMCS65qGI1zaCknXXe6SC7YhgLjmO0X95i/C/DsCFJo5KRzeKlERy42xrb8N\\nzVuPM3VAtJ3udV3ArLK7mO66IJoZsDIC5MoMibaN9UFoiWsy6LoPanrZXcy2XbjLRivNwWw/2AXC\\noSC/9Vu/xc6dO3n55ZcZH5/A0TwC9koNCADKG1POkteNj8pBoNzQpEOdJaC0YIfYrjAlgDWrIMo3\\n+pLYRkZutu8U46NqVFWeT4PILeKYk6+7AJ7lxvkWyu2jufs6NoSXij7CFuf3NwiYyqlw5ZOQn3Q8\\nDLWLH6nZfuF66G8Q7mHTx8VY8PhEEWdOCUgUXAivV5QlNybKaOXcaNFp0Z65SWjZKtoIxBzRDTR3\\nHgjgznWYbL5LAGjpQSgWYTZdAQ465XoaERG7XJoV/Tx9srq7pEsZbvRy050V48pXPqavHurXCxe7\\n+YsQWVGG+ZruEDCeGpO4zoiVC4FTAUimyhGuvpgYU8F2ER+cmxDw68Tr0LhROPkpV8IF0cCuyyR2\\nSQB70T4WlccLHbtg7FUBf00dgtnTAigMtrljsijaXwK9IOZrbIVwidN80L1LxEwn3xIg2dWfguNB\\n0yy8dUvFBykzl0U9vfEy+CvHqfytu46djiXWFjPjzod2lHukGt4eoCTmLOKGzzAM8URUuANnLoiV\\nnyM/eRI7P4tdmAfbxKN5cDxhiN4CgVZ0XYPSPPbsScLhAL/2a7/2vuC+UqnE3/zN33D48JvkCia2\\nJ4SvcSW+SDsl0yGfTePkJ9HSV7GtLKXpi8JE0syIOkYqQHbdg6b5cawCxWIRLT+JU0pXwL2ui2sl\\nDFs5jipvmCSsa6bFnM5cEVCeZqAl30YD/E23Vt1kOY5Naf4aVi4hIuADfmzHpJDuxylZ7lN1jgvV\\nWmKdi6/EiS5TH2D5/f5FHXQr9X6h9Jpqqqmmmmqqqaaaaqqppppqqqmmmv7lyO/3X+eCJzUxMUEy\\nmSQYDNLd3b3oNvl8nuHhYfL5/HVOafIzKsuyME1zUScqGXcZi8U4fvz4TcEFMmYwl8uRy+W4fPky\\n3/72t5mfn0fTNBoaGti0aRPRaBTLshgaGuLEiRO89dZbKiZUwiSVn8dJcFD+XcZ1Vrr9SZDKMAzl\\n1ifLJKEoCR7eyAFwodLpNBs3buTw4cM8//zztLW1cd999wHw/e9/n4GBAZLJJAMDA1iWteAzxPJn\\n26ZpKqe3VatWsWLFCgUyye+rpDOeBHl8Ph+xWIxoNEpzc7OK8lyxYgU7duzAMAx+4zd+g4GBAV5/\\n/XUymQzz8/Nqf+k+5vf7+b3f+z3eeecdTp8+TTKZrIpelRGn0nkum83i8XiUG2E0GmXdunXccsst\\n6LquxoosTyXkp2ka9fX1xONxxsfH+fSnP82OHTs4f/48586dwzAMBUOFQiF6e3sZGBi4YdxyZR+u\\nWLFCQZvSQTCRSNDV1UVbWxvhcBhAQYuNjY34fD5M0+TKlStcuHBhUShUtpVpmvT392PbNkuWLOHp\\np58mFAqpdl2sjOvWrePtt9/GNE0VLR2LxRQ8aZqmApQKhYJyU6uMSUwkEui6TktLC1evXuXkyZMY\\n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\\nHQEciURoa2uTcZW2O6MdfXv27Fl6enpkX0HANVOmTMlK5Mp08hvOjc/e314vNnCTl5eH3++X8+j3\\n+6WTmd1Wj8dDRUUF48aNo7e3l4MHD8rY0mnTpkno1AbNAOkQmAkhmqZJLBaTa9Fea7Zrmx1papom\\nPp+PW2+9FVVV5WO6rtPd3c3zzz/PK6+8gtvtprKykvvuu0+CSnb9duSq7cx27bXXEgqF+PWvf83q\\n1atpbm5m1qxZzJo1C4/HQ25uLoqikJeXx5e//GXGjRsHCAju9ttvZ9myZezZs4ef//znJBIJCb15\\nPB6uvfZaVqxYwdSpU2lqauLRRx8lHo8zduxYli5dSklJCb29vRKcbGhokHOdTqc5ceIE//qv/0px\\ncTFLly5l2bJljB49mnvvvZdvfOMbrFmzhmg0yi233CKd3saPH8/EiRPlPK9evZq6ujpmz55NeXk5\\ngUBAjn0ikSCZTKIoipxrWx6Ph3e/+93813/9Fxs3bmTVqlXyONu1axc7d+6U0bL33XcfhYWFcj1p\\nmoZhGBL6zHRlKysr45577uEHP/gB69evp6amBkVR+M1vfkMkEqGgoEC6bdbV1UkY1B4Tl8vFnDlz\\nWLp0KbW1tezZs4fNmzezePFiwuGwBGHT6fSQGGx7PkG4utnx46FQaFhXUBtW9Xg8pFIp2Z/e3l4J\\n4jU0NLBmzRoqKiokDP3BD36Qrq4u1qxZw549e7jzzjuHhads90Ofzyfnwu12k06n5bVh6dKlfO97\\n36Orq4vS0lKuueYaVFVl2rRpHDt2TLqpDeewmqlYLMa3v/1tenp6qKysZMaMGezfv1/C6Jnyer28\\n4x3voKamRqQIXqWKior4yle+QlNTExs3bmT37t0yftnu46RJk5g+fboEqIHLQoVut5sbb7yRV155\\nhY0bNzJt2jSCwSCLFi1iy5YtbN++nfe+970AHDx4kO9+97vyHD179mwWLVokY8/b2trYvHkzZ8+e\\n5dVXX+WNN97gs5/97FVHHv+pav/+/bS0tFBYWMhnPvOZEeG+TJWXl/O5z32Of72wsa4AACAASURB\\nVPu3f2Pnzp3cdtttlJaW/i+09o9Hbwvgd6XOfG+3g5/P5+Pmm2/m85//vPy2iiNHf25SVZVVq1ZR\\nU1PDkSNHJAQRj8cJBAISgpgxYwa6rvODH/zgqmLudu/eTWvbeQxXEE/e1eXcZ7oW5eeJF5ceX4A0\\n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\\nzJfelqCU875bqgw8k7CVpou6oejqpk7R7TZXwNAuAbKhifrC84r1gj03moh1NXMC3pNwn+4TUFZ4\\nHsq9TypQI8YhPSQiaZO9RUe8/BRkhyFYU+bMKN38HHBlesgB5uWhkLGBSa8A3wpJGDsuyvVWiOPG\\nTgjHPssS7nkDbwjgrFy5SQF5SkCxclnxsegimDoHuSl7DJyAnS0JG2qaqK9isaMPZfMDAooDqGwX\\n14mKdkiPQqoPhnaL/euNijrTwwLG1DyAve4lrAfifgmyYhbrTYkPifBG7XZ7RGyukS265zlBSllG\\nvEv8XdFWbK+qz9GfSIsANgtJMTeRecUx0P1iTpLCVpqKxcWxY7Z5BtIjWBIGjMxHOQKaJpZpoJV/\\ncKd5ivdVLsKaOo9pxjFNk29+85sqctz0hPHX3YY/2oTm8WEZeQqJQZLjnVy73s/N736fq1ev8vTT\\nT7/vF9CmaSrn02TWwqq/T1xrNI8DikVEHFfdLpw7x45DagBrDHL1azGzk1iDvzrwmxs7+8H1YTsp\\nunLlypUrV65cuXLlypUrV65cfRBVVFSQTqcZGhpiyZIlH/j84eFhVc4vSxUVFXzhC1/gL/7iL5iY\\nmKCzs5P6+npqa2tLvjc1TZNYLMbY2BjpdJpIJMLnPvc5li9fXlKeZVm8+uqr/PM//7P67rW9vZ2W\\nlhYF0Fy8eJFLly6Rz+cxDIOJiQkymQymaeLxeKioqCAej9PT08MPf/hDNE0jGAzy+OOPc++99ypY\\nJRKJ4PP5ePjhhxkcHGTXrl0cP36cF154AcMwiEajM9oHcPbsWb72ta8xOTlJIpFgdHSUZDKpygOU\\n81h1dTU1NTX09PTwJ3/yJwD4/X7uvvtufud3fgdN05RDl2zX8PAwr7/+unLfk8DQ2NiYclwzDEM5\\nnN3KGW56epr6+nrliCedq8oVCARIJBJMTEwQDodZv349O3bsIJ1Ol6wtJzwm656YmEDXdQVwSUDI\\neV+5bt68yaJFi4hGo8rtLxKJKAcwCfc5IQvpmBcKhdT6kji4fNsAACAASURBVC5m0tmsqqoKj8eD\\nruvk83kGBwdndRLM5XIMDg6i6zonT55k8+bNPP300wrS/PrXv05np0i96e/v58qVK9x2220KpEql\\nUgr2k/Gpsq2VlZUlznG3kvy+To6VpmkK8iqfJzmm7e3tDA0NcfnyZdVP57HldRqGwejoKGfOnMGy\\n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\\ncnKS+vp6rl+/zv33318CiMnvrHRdV5CUTHJzgh2pVErBRVKyTl3XFaRWHlsrJWNC5Xwmk0lM0yQU\\nCtHZ2YlpmrS2tpacM2/ePC5fvkxlZaX6vls6sJVDa8AMQKympqbESc2p6elp2+ShikWLFvFf/st/\\nob+/X7mkSac46cqm6zqRSIRsNqv60tLSQjKZvGXssbPfMoa1qamJaDTKb/7mb9LT00NnZyfZbHaG\\n058cSzm2sk9OMA2KTomWZVFbW0skEiGXy3H69OlZ16hULBbj3LlzLF26lPnz5/O1r32NP//zP6em\\npoZUKkU+n+fcuXPU1tZy//33q/qrq6t57LHH+P73vw/A1atXaWlpoa6ujsbGRjU/Pp9PueEtXrx4\\nRr9krPXtt99OW1sbpmmSTCZnJBNKqEz2cXR0VD0mnSf379/Pxo0blcOaBCHlmnAeL9e+nLNUKsX4\\n+Di6rnPbbbep8XTuL+mwJx0fx8bGALFPTNMkkUiQSqVK9pU8PxwOEwwGSwBEGcF9+fJlDMOgurpa\\ngaPlLoflksdIyDQWi1EoFFizZg2WZeHxePjkJz/JX/3VX9HR0cHIyIiKmB4aGiIajfLUU0/R3d3N\\niRMneOONN3jzzTdZvnw5c+fORdM0JiYmOHv2LJlMhv7+fi5cuMDKlStL9r90rJSw4Ze//GUOHDjA\\nvn376Onp4bXXXkPXdQWmyj11zz33sHXrVurq6kgkEgpCbmpq4umnnyaRSNDX18c//uM/cunSJebN\\nm8f169eZmppSjpPvJRk1DgIMv3DhAgAPPfSQAqYLhYKCbLds2UJHRwfvvPMOq1evprKyUq016Xwo\\n57KtrY2FCxfS29vL4cOHufvuu4FSqPdv/uZvGB0dZeHChTz77LMlLo5O6DSbzeL3+3nyyScJBoPs\\n3LmT69evMzY2xqVLl/inf/onQLhc/umf/qlqVywWU9BjW1sbbW1tfPzjH+f555+nu7sbn8/HV77y\\nFerq6giHwwo+vOOOO3jsscd44403+M53vkMulyMQCHDnnXfy4IMPUl8vDCpGR0c5cOCAci5NJBIl\\ne86Vq19XfaSAX01NMRLRsizOnj37odchM87lk3Ft7c+PVXXl6lby+Xxs376dpUuXsnPnTm4ODpEd\\nP0N65LQCrDwejYjPQ/OC+Wzbtk2Bcr8onT17lp6eG4Ln8ASLwMVs4FT1Mkj2Y40eJz/VA1gYepCb\\n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\\nc/jwYSMBS5IkkpKS2Lp1K1u3biU+Pt4Yfv369VRWVrJ///6o6mIjDA4OommasV3GEgh1XScQCISf\\nEanDX9Y3mUyYTCZD9hqLhoYGnnrqKXw+H1dffTVf+tKX0HWd559/nsOHD1NVVUVlZSVWq9WoeR0c\\nHDRSzZYuXcqePXvIyMiYdH0iy3cpL4xHxo1Upo6kvb2dlpYWYmJiWLVq1ZSnn5KSwrJlyygvL6e8\\nvJwNGzZMOPzJkyfp7OwkOTmZT3ziE1Oe14oVKygrK6Ouro7PfvazU17euXPn8sgjjxj7ZEVFBQMD\\nA7jdbmP/0TTNSG9UlAvPhkbsS3Fxcdx88828/PLL1NXV8cILL3DVVVcxd+7cYTLm4OAgFRUVlJeX\\n4/V6SUhI4KGHHopabPyg4HK5WLduHYcPHyYlJYV77rmHQ4cOUVZWxuDgIPHx8bhcLiwWy6hzTOT5\\npMViGXbOkmWZjIwMGhoayM/Pn1DwixyPU63sjhBJWPX7/XzmM5/h+uuvp6ysjJMnTxqVuzExMSxb\\ntoyVK1fS0tJCbm4uR44cITY21khx1DQNm81GfHw8V199Nbt27WLBggV0dXWRm5tLYWGhUeU8lGAw\\niNfr5eWXX2bbtm0ixU8g+AghBD+B4EPEmMLQyEQoRcJpVsiYlUVOTs6005suJfns/UqP0jSNffv2\\nkZubS0trG/6giqrqF7fNmWqKS0rJmJHOrl27jDdctmzZQnFJKe6u01hTlk5JOtO1YNjZk03DfnDr\\nhOs1wzHQGnrkwwuEJJVAIICs+kHTxhXixpIsLfHzCDhP4e+svJhs1vOuMY6k66AFkGS4eu2GKSUp\\nXkqaIYS3BxfePBuPK5ESGOFKyoRjIcuycRyOFLzq6urwBjQkSUc2KUiShHxB/DSZwxXLF5dFwjFz\\nMx4IS37th0FxgHM2xKSj+rTLLvi+n0S223PP/Tfu5iKc867DOXsb7roDBAJupNhsGKtOW9fC1cZS\\n+IbS8G0Y/fd5uUVXWZZZvnz5hPPctWvXsH3k/Pnz9PUPINtTsGdeExa5L4h9/s5K/J1V4eN/5IS8\\n3QR7a5FkBY83wMGDB4XgJxAIBAKBQCAQCAQCgUAgEHwEcDgcPPTQQxQXF5Ofn091dbWRhjaUuLg4\\ntm/fzo4dOyZNOBuPoqIi+vr6iImJmVTuiyBJEkuWLKG/v5/u7m6OHTvG+vXrpzX/6dDT08Nvf/tb\\n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\\neOaZZxgyZMgNWefNoKOjg8LCQqDnAU2TyUR2djZvvPEGmzdvloCfENcgAT8hxDX19+jTm5mu65SU\\nlISb5EJveEJNchkZGTfd83QzNbXdCJFuL7tRAcpI3k/oPFdVFV3z4jq3HXdAxWxPwGq1YraY6eot\\nXH+14kl4OXIKCgrw+jWsCRN69P0APg28JkzA2xj8VJ8E/IQQQgghhBBCCCGEGHiWLl1Keno6Gzdu\\nZO/evRw4cIADBw5cto2iKEyfPp3FixffsJDOQNfR0cHOnTvJz8+nurr6stumTJlCdnY2t912G6qq\\n9tMKe2bYsGGkp6dz+vRpCgsLr9l69nkFBQVomsa0adMYPLh711IGuoKCArxeL5MmTbpmuC9EVVUe\\nf/xxzpw5Q11dHYcOHeL2228nNjYWu91OfX09eXl5TJ8+naSkpG6vpb29nf379wMwceLEq247e/Zs\\njhw5Qn5+PllZWT0OE+bn5wPB8ocPPviALVu20NLSgtfrxePx8Mtf/pJvf/vbZGRkYLVaO72momka\\nb775Jps3b0ZVVR577LEbeu0lNzeXqKgo/vCHP4S/p6WmppKWlobVasXtdlNaWkpraysQHEv87LPP\\nkp6efsPWeDM4ePAgPp+PiRMnkpqa2uP958+fz9q1azl+/Ditra3h0KgQ4koS8BNCdEt/jT69Wem6\\nzqZNm8jLy6O6phavX0PTjM8CkSfLKCreTerQFHJzc8nNzb1pnrebramtr0WivexCVTXr16/n/Pnz\\nlJWVEfB2oF0oQutowJowPhg468abq54EKCMV1LTb7Xz/+9+nuqYWjy+ArhtgdKBVbUUbPB2fIxXV\\nbMFms2K12cJBv4HQiifh5cioq6tD0wyszqG92t/sTMVdd5C6+sQbxAAAIABJREFUuroIr0wIIYQQ\\nQgghhBBCCBEpaWlprFq1itbWVnbu3EltbS1utxubzUZiYiILFizodHTvF5Gu6/z5z3/mo48+wufz\\nAWC1WomNjUXTNC5evEhpaSmlpaUMHjyYb37zm9x22239vOruycnJ4fTp02zcuJH58+djtVq7tV9H\\nR0c4FHarTMjRdT08WnbJkiU9CslZLBays7P54x//yJ///Gd2795NcXExLpcLv9/PmjVrcDgcjBs3\\njuzsbGbOnBkeh9vQ0EBFRQUdHR1YLBYGDRrEuHHj2LFjB4FAgIyMjGs2zM2aNYu33nqLiooKysrK\\n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\\nJE+tEEKIu2a320FRMLTQtMYbeggUBYfDMekx8+nI1PkY5zs7z3V0dhEIhtH/2HgOk3KRNyqryMrM\\nYP/+/dPuPDd+BPXzz7+Ap6sK1RaL6ki44zjNN4S/6wROm5n9+/fP6N/BTHTd03WdgwcPUnWiBl9I\\nwZ5ZgCVu2Q0dCs1RSdiS1xMabcfTVUVlVTUATz75ZMR+/+bieRNCCCGEEDdnsViw2Wz4/B6Cfg82\\nx9Rf4vs8oyiKMukFAF3XaWhooLS0lDO1tejaWKGTokBCQgIPPPAA999//7R388+Uzs5O/vCHP1Bd\\nXY3PF0DTDcaqzMYW7g4fOULeqlUUFxezffv2Gf3+HA6H+bd/+zeOHTuG3x8krBtY7dFY7A4MXSfg\\nu0btuTrqGy6QmLCET33qU2zZsmXKn6MoCn/1V3/Ft771Lbpba1EUhbyNhSi3mYt7tJ/ayhdBD7Jp\\n80Z27NhxN1O9jq7rvPjii/z+5ZcJv911Lz4xi+i4ZEyqmWDAy0B3IxcuNtLY1Mzvf/97vvSlL5Ga\\nmnrdfY4fP87LLx8mGNLJ3/7npGbevCufophISsslMSWbi7Ul9LSd4/vf/z7//b//90kv7E1VbGws\\nigKeawPTGh/wuwkF/VgdFpzO6XUBFEIIIYQQfxQTEwOMHbc6XQMDY9/tJpsT+f1+Tpw4QWlpKZ2d\\nndf9bMWKFXe9kWcmGIbB6dOnOXr0KA0NDTe95sUXX2T79u08+OCD5OTkzOjn9/f384Mf/IDGxkbC\\n4TAmk4n4+HisVivBYJCRkRGOHTvG8ePHWbVqFZ/5zGem9R0+NTWVD37wg/z2t7/l9OnTbN68mbS0\\ntNuO6ezs5Pz589hsNh577LEZLXJ0u908++yzXLp0CV3XUVWV1atXExs71jl/aGiI5uZmqqurOXny\\nJPfddx+PP/74Db8rzz33HI2NjROdN2+1nmI2m0lPTycxMZG6ujra29t59tln+epXvxqxNaLY2FgG\\nBgbo7u6+IZebjK6uLuCPz64QYuGQAj8hhBB3LSUlBfVyM2G3C3NU0pTHh93dqKoyqeRhPh6ZOt/i\\nDIVC/PCHP+T4G5UEgjqGOQojdjXYUsBkxtDD6IE+NHcrl5vaaGv/MZcvX+aJJ56YVsJbXFzM5cuX\\nqTpRg6flVewZu25aDAdjnRJCo234u07gsBjs3LmDoqKimZg2MHNd944ePTp2j5CCM/eh2xYtKooJ\\na3w2qi0WT8urnDhRQ15eHvv375+xeb3TbD5vQgghhBDizvLz8zlR/SbdV86Rs3bXlMYauo6rrQ5V\\nNU3qqK6mpiaee+45XD29hMM6ugFWm3OieKvb1c+/H/oN//Ef/8H999/PX/zFX8zJrvyamhqee+45\\nfP7g2NGuyctJycjDYrGj6WGuDvfQ015PXcNFLl1u5PTp0zddVJmOYDDIM888w+kzteiGypLUlaRk\\nriM6fimmt3OUcDjIUE8jfZ319PT28/TTT/P444+zb9++KX/eqlWrePLJJ/nBD/4v3a1nGOhpITN3\\nM+nLN2CxjS0CGYbB6FA3nc1n6Ou6hEWFNatX8dnPfnbGjqIyDIPnn3+e0rIygiGD9JxNZOXeizP2\\n+q57mhait+MibZdr6Oh08c1v/hN///dfn1iE0zSNl176/9m78+C2zvve/+9zsIPgvu+bRFG7ZFG7\\nRFmkJG/x7tjXsuvm3thy0qZtWsfTuZnxNPO795e2aRK3cZPaTXzzi+3Yc+PESeRYsrXS1EYtFCVR\\nJGVx3wCCIAiu2HHO7w+ItBWREkCRsqs8rxn9kQDn4Dkg4DkPnu/z+f4WXyDEghU7pi3u+yxJlild\\nsR2fd4xhRzsfffQRf/ZnfzYr1/XHVq1axa9//Wvs3U3MX7oVnT66FrvWjno0ssSKFStEYoUgCIIg\\nCMIsKCoqwmQy0dnZSVdXV9Qp3V1dXXR2dmIymSguLr7uc1VV5aOPPuL3v//9ZIcavV5PfHx8+J57\\neJjW1lZaW1t5++23efLJJ9m4ceOMr22mQqEQb7zxBlVVVZNjXLt2LcXFxej1ejweD+fPn6e+vp7j\\nx49TU1PDV77yFbZsgUElcgAAIABJREFU2TIrr9/T08M//dM/TSbkrVixgsWLFxMfH48kSZPvVUND\\nA01NTTQ1NfEP//APfPvb3yY3Nzfq13vooYcYHh7m0KFDnD17lqSkpMnEu4l1L0VRsNlsdHZ2MjQ0\\nhMFg4MEHH5zVdZSxsTG++93v0tPTg9lsZsOGDSxfvvya4ryRkRHOnj1LTU0NNTU1jI6O8sILL0zO\\nDzo6Ojhz5gyhUIhly5ZFFJZgMBhYsmQJZ8+enXxP56JzFUBZWRltbW1UVVWxcuXKqI+f+FyWlZXN\\n8sgEQZhrmu985zvf+bwH8UXldDrx+/3o9XpSUqJfQBcEQfhTYTQaOVlTg3dsCH1KaVRR3qqq4Ok+\\ngkmn8tTOndfdbTJRuPbBB3txOIfxq0a0yUswpN+BPnUx2oRiVK0F79gQQ4NOGhsu0tdnY+XKlbO2\\naBKJz3OciqLwk5/8hKrqI/gVHWpyGSStRDJnIuljkXQxSHoLkjEV1VKIqosjNG6ns7MN54CD1atX\\nRx3FLkkSK1euxNFvx27rxedqxzfYjKqGQNKghgIo/jH8rhY83UdQhlsxG2Q2bFjHrl27Zm1RRVEU\\nXn31VY6fOIk7IGHI2YQpZx06SwayzoysNSLrzGhj0sOfU0MCnqFubNYeHP12ysrKkCRpMr3P4RzG\\nkLMJXWxmRK8v60xIegs+VweuwQEqKyvnpGXbrfq+CYIwc7fTPOJ2uhZBEIS5YrFYOHHiOMPDTnKL\\n75hyo8t0nH1tWDvOkZWZztNPP33de7u6ujp++MMfMuAcQqOLIXf+Ghav/hJFCzeQO28V+SVrSEjJ\\nwefzMeRy0NnZQWtrC6tXr76lhUwnT57kJz/5D9yeAGk5i1i69kHy5q8mLjETS3wqsQnppGQUk1N8\\nBwZDLAP9XfT2dNPT3X3TSX6qqvKTn/yEmppTaPQWFtzxJTLzl2OOTUanM6LV6tBodWj1BizxaaRk\\nlSJLMi5HD3V1ZykqKiIzM7L7/8/KyspiwYIFNDd/wviYi0F7B53NZ7B1NdDbcYGOS8fpba3F53ai\\n12vYvGkj3/jGN8Lp3LPkww8/ZPf7fyAQlFi2/mHy5pWhN1zbnkyWNcQmpJOZt5ihQRtDg/00XKxn\\n06ZN6HS6cCurQ4fQGuJYVHZPxPMNSZKIiUuhu7WOAYedbdu2zcnnLjY2lsuXL2O396EzWIhPyor4\\nWEUJ0Xj6AzRSiD/7s6fFpidBmEO30zzidroWQRCEuaDVahkaGqKtrQ1VVVmxYkVUx7/33nt0dnZy\\n5513cscdd0z7PFVV+eUvf8nu3bsJBoPMmzePL3/5yzz33HPcfffd7Nixg7vuuouUlBScTicDAwOc\\nPXsWrVZLSUnJzV5mxFRV5Wc/+xlHjhxBp9Px6KOP8uyzz1JWVkZeXh7Z2dnk5+ezdu1a1q9fTygU\\nor29nbq6OhISEm46yc/lcvG///f/xuFwkJeXx6OPPkpJSQkJCQmYTCYMBgMGg4HY2Fhyc3MpLS3F\\n4XBgs9mora1l48aNUXf/kSSJ5cuXo9fr6ejoYHx8HKvVSkdHB729vXR0dFy5h7cTDAaJj4/nqaee\\n4r777rupa/0sRVH44Q9/SFtbG8nJyXzlK1+huLh4yk1kBoOBgoIC5s+fz6VLl7BarQwNDU1+/t57\\n7z1aWlpIS0uLag1Fq9WiKArDw8MEAgHWrl07a9f3WRkZGeFwEZuNjRs3RpVM3t7ezu9+9zvMZjPP\\nPvvsLV07FYQ/NXMxjxAFftchJm6CIAiRSU1NpabmBEOuQSRDAhpj5K2gAsMdKMOt5OdmsXPnzmkX\\nD2areGuufd7j3LdvH+/99ncEVT1qejlSTA6S1gCSHO7ZNflPRtLokPQJqMYU1LFeujvbSEpMvOEu\\nualoNBrKysqIi4vFNTiAzz1CcMyGf7CZgPMSwaEWJK8dk04lPzeLRx55mMcff3xWF3z279/PBx/s\\nxX0ldU8XmznteylJEhpjAtrYbNzOVuy2XuLiYikuLqa+vp6P9u3Hrxox5ayL6u8hG+LxDTbjc49Q\\nUjJ/TgrobsX3TRCEm3M7zSNup2sRBEGYKykpKZw8eRLXoBOQSEyNLLEi4Pdy8fQfkEI+Hnjg/usu\\nOrW0tPDyyy8z5vaRmb+MlZu+TFJqHlqtfvI5kiRhikkgI3chKRnF2Hua6e+zYbNZWbNmzS259+vp\\n6eEHP/gBbk+AgoUbKVlWMWWRGYQLzeKSMklOL8Ta1YTdFm4TtGjRohm//oULF/jlL99G1hopXfUA\\n8ck5aLV6ZEnms1cvISHLGrRaPbFJWaiqimugh4v1F7j33ntnVGSYkpLCtm3bKCoqwuv1MOjsRw35\\nUYNeJEIkJyVw11072LVrF+Xl5bO6kOLz+fi3f/s3Rsc9LF59P2lZ8294jKzRkppdQr+1hWHXAAkJ\\n8cybN4933nmHnh4r+SXrSEjJiWocBmMMg/YO3GMuUlNTZr3N2OTrGAycPnMGZ38PqZnzp/2M/bHm\\nC4cZGugkOzuTJ598UsyHBGEO3U7ziNvpWgRBEOZKSkrKZLvcRYsWkZQ0fUecz2pubuadd95BURSe\\nffbZ67YM3b17N3v27EGr1fL888+zc+dOcnNzr7qv1mq1FBQUsHXrVuLi4qivr6exsZHExEQKCgpu\\n9jIj8tFHH7Fnzx4MBgN/+7d/e91WwWazmWXLlmGxWLh48SIXLlxgyZIlEb9/U3nrrbe4cOECOTk5\\nPPTQQyQnJ6PT6a6Z40iShFarJSYmhoKCAnp7e+nr62N4eHhGhWmSJFFSUsK2bdtITEzE5XLhdrsJ\\nhUKTrXILCwt57LHHePbZZ5k//8ZzlmjU19fz/vvvYzKZ+MpXvhJR21+LxUJBQQHnzp2js7OTDRs2\\nIMsyP/3pT3G73SxYsCDqlHmz2Ux3dzcDAwOUl5dHXSwZCYPBQF9fH93d3XR2drJu3bqI5pdut5tX\\nXnmFkZERKioqoi7GFQQhOqLA7xYTEzdBEITITPwo3thwEc9QN9rYbGTdjW9aQ55BPF1VmA0yjzzy\\nMPPmzZv2ubNVvDXXPs9xKorC9773PUbGvajJZUiWXJBvcFMvyUjaGFTZgDLeS1dnO/fdd9+MFjok\\nSaK4uJjKykpKSuYjoWAxG4mLNZOdlc7iRaU8tXMnO3fuZN68ebO6mDKbqXu//vWvae3oQpu8BJ0l\\nI6pxhOPtQwTHbEgorFmzZiaXc8PXgLn9vgmCcHNup3nE7XQtgiAIc0WSJFJTUzlz5hSOvg5kWUt8\\ncvZ173cDPg/njv8G76iDvLwc/vzP/3zahQNVVfnhD3+I3eEkM28ppXfcdcMCNIPJQkpGMT0dF+nr\\ns5Kbk0N2dvZNXWckfv3rX3O5uZW0nEWULKuI6J7fYLQQl5hBT0c9NmsP27dvn/FGoJ/+9KdYbX1k\\nF68hLWcR8o3mQ1xJtEvMZLCvmWHXAPn5eeTl5REIBPB4PMiyHHHBnyzLZGZmsmHDBrZv387mzZvZ\\nsmULX/rSfTz00EMsXbo0qnSFSB07dowTNSeJic+kZHlFxMfJsga90UJfdxODzvB86M0332Tc7WNR\\n2b1odfobn+SPKKEQzr424uNjWbVqVdTHRyIzM5Oe7m5s1l5s3ZdISsvHYLRM+3xVVWipr6KntZYY\\ns4G//Mu/FOl9gjDHbqd5xO10LYIgCHMlNjaW4eFh2traqK2tZcGCBTcsUmtubuZf//Vf8fl8VFRU\\nsGnTpmmfa7fbeeWVV5Akib/6q7+6YWtRSZIoKioiPj6e8+fP09DQQGVlJXp99Pe30QgGg/z4xz/G\\n6/Xy3HPPsWTJkoiOKywsxO1209bWhsfjmfG6wkQBlyRJPPTQQ6Snp0c0JzMajaSmplJfX09nZyf3\\n3nsvOp0On8+H3+9Ho9FEvJ6j0+km14m2bNnC5s2bqays5IEHHuCee+6hsLBwTpK+3377baxWK5s2\\nbYqqeDA2NhaXy4Xdbker1WI2mzl8+DBGozHqdtMQDsMYGRnB5/OxYMECsrIiTxyPRmFhITU1NVit\\nVlpbW1m5cuV1ixFHRkb44Q9/SGdnJ+np6Tz33HNz/n0QhD91czGPuHX9OQRBEITb2rZt27h8+TLH\\nT5xkvO1DjNkb0MXnTdmeSlUVAsOdeHtPYNKprF+/jsrKymnPrSgK+/fvx+MLYswpR2OKbPeSxpSE\\nMXs9np4j7N+/n8rKyptq93Qjn/c46+vrGRhwomrikCwF4dS+SEgykqUA1XURh2OA3bt309PTQ39/\\nP16vF6PRSFpaGuXl5SxZsuSGY5NlmaVLl7J06dKor2GmLl68iK3PjqIxo4uPbtKli8/HazuD1dZH\\nQ0MD/f39hEIqekv0rbkAtJYsPP3n6O/vn9HxkZjL75sgCIIgCIIQvRUrVvDMM8/w//3iF7Q1VOO0\\nt5NbfAcpmcVXFZn5vGNYO+rpaT2LEvSQnp7C3/3d32E2T59AdvnyZbq7e9BoTSxYuT3ihZWYuGSK\\nF2+mtf4ghw4dmpPNJ5/ldrs5ceIEwZBCQen6qDb0JKXlE5eYxdiYnRMnTnDnnXdG/fr9/f3U19ej\\n0epJz1sSUXHfBK1WT1ruUjpGnfzsZz/jV7/6FUNDQ5OPp6SkUF5ezp133kl8fHxE57RYLFgs0xed\\nzaaDBw8SDCrkFEWfwJCSUYTeYMHWZ+fixYu43W5UiDgV74/pjTGoqsr4+PiMjo+ELMt87Wtfw+N5\\nmYsNjZw+/CapmfPJLl5JYkru5Gcv4Pdg7bhIb/s5fO4hzGY9zz+/i4ULF87Z2ARBEARBEP5UPf30\\n0wwNDVFXV8c//dM/sWHDBioqKq5Jzuvo6ODgwYMcP36cUCjEypUreeqpp6577sOHDwOwYcMGVq5c\\nGfGYtm7dypkzZ2hoaODo0aPcddddUV9XNOrq6hgaGiIjI+O67Yancvfdd1NVVUVtbS0ul4vExMSo\\nX7+6uhqfz0dhYSHZ2dffdPbHsrOzycnJoa2tje985zsMDQ3h9/uBcMHkvHnzqKiouG4i4WdJkkRS\\nUtJNpRFGamBggPPnzyPLclSfjwmrV6/m/PnzHDlyhOLiYlRVvaniN71ez/j4OG63e8bnuJGkpCS+\\n9a1v8b3vfY/GxkZefPFFysvL2bp161WbmaxWK4cOHeLYsWN4PB6Sk5N54YUXbtlcVRCE2SUK/ARB\\nEIRZIcsyzz//PJIkceLESTw91XhtJvTJC9BaspBkHaoSIDhmxe/8BDnkIcagZf36dezateu6RWOz\\nWbw1l0Vnn/c4f//73xNSZYgtAk10seFodGApJDR0gTfeeAON3kQopIKqgiShudxKzclTZGVmsG3b\\nNrZt2zanxZLRqq6uxhcIoU9eMGWR2/VIkow+eQE+53mqq6vxer2gqkjRvocT55N1oKp4PJ4ZHR+J\\nufy+CYIgCIIgCDNTUVFBTEwMr7/+Ou6hXhpOdaPVm4lNSEfWaAn4PQw7rciSilYrM39eEd/85jdv\\nuHAzWbw1f3lURWsAmXmLabn4MY1NTfT09JCTE13L1WgcP34cj8dHYmo+MbHRL+LkFK/kUu0e9u3b\\nR0xMDG63G1mWsVgsLFy4EKPReN3jT506RSCokJJVhNF043ZMn6Wikpw5n67Lx3A6Bxl3+0DSoNHq\\nCAX99PTa+dW7v+H3v9/N+vXrePrpp+ek1dJM+Hw+Ojs7UZFIyymN+nhZ1pCeuxBr2xkuX758pbVT\\nEFVVkIh+3qAqISSJOUnl+CyDwcALL7zAW2+9RXV1Na7+ZhzWT9DqzegNZkKhID7PKLKkoNXKZGWm\\n8eyzz95UC2hBEARBEARhehqNhm984xv88pe/5NChQ1RXV1NdXU1ubu5kctHAwADd3d2Tx1RUVPDU\\nU09dt72o3+/nyJEjADPauF5ZWUlDQwMHDx5k+/btc/rbeFVVFQB33nln1B2MEhISWLlyJWfOnOF3\\nv/sdCxcuxOPxYDAYSE5OZv78+Tcc++HDh9FoNCxdujTq+3FFUVi8eDGdnZ20tLQQGxs72drX5/Nx\\n+fLlyZbK999/P9u3R775bK41NzejKArz5s2bUWJ6VlYWycnJDA0NMTg4CIST9GdKURSAiNrm3ozc\\n3FxeeuklXn31Vdra2ti7dy979+4lJSUFo9GI2+2evB6A0tJSnn/++RkVjwqC8MUgCvwEQRCEWaPT\\n6fj6179OSUkJ+/fvx2rrw+c8j6f/3KeFYhqJGJ2GrLwctm/fHlFa3WwWb81lgd/NjlOXVILHcZb/\\n+I//ICUlJer0vPb2dkBCMkefPKeG/GBMRUUmqCjoklegt2QiaXSooQDBMRvjzk9obe/B+sZbNDc3\\ns2vXroh2at0Ks5m6ZzQaQZJQQ4EZnUtVAiBJc77gN1ffN0EQBEEQBGHm1q5dy9KlSzl69CgHDx7E\\nZutjdLATAAkwGTSsXLmCyspKFi1adMN7s1AoRG1tLcGQQnbh8qjHo9UZyMhdhKO7njNnzsxpgV9X\\nVxchRSU1K/J2SBNUVUWnM+L1emhsbKSruyd8SwtIEsTEmNm4cSMVFRXTthpubm4GwGRJjGo+pqoK\\nAb8XjUaH3hBD0O9l4eovkZm7CEmSUFUFl6OL7tY6BmwtVH18hK6uLl588UXi4qIrJJwL4+PjqIBO\\nb0KjmdlPvQZTLKoKHo+H2NhYxt0+xkedxCakRz+e0UEkSSI2NnZGY4mGTqfjv//3/86DDz7Ixx9/\\nTFVVFa6hIUK+cNKIUS+xZMlyKisrWb58+ZwvsAmCIAiCIPyp02g0PPPMM2zfvp3Dhw9z5MgRuru7\\nryrqM5lMbN68ma1bt5KZeePf85uamhgfHycvL4+ioqKox7R8+XLi4+Pp7++np6dnRm1XI9XV1QUQ\\ndXofhDfuGI1GRkdH2bNnD4cOHZp8TJIkMjIy2Lp1K5s3b542fc1utyNJ0lUJbpEIBAK43W4SExOR\\nZZmEhAS+/e1vT6bv+Xw+zp49y9GjR7Farfzyl7/Ebrfz9NNPfyGK/CbSw29mDjLRqlej0SDLcjjZ\\nXFVndH0Tm9VuxZwoLS2Nl156iba2Ng4dOsTJkycZGBiYfFyv10+mac7lZ18QhFtDFPgJgiAIs0qW\\n5clCooaGBqqrq+nv78fj8WAymSaL1RYvXhxxodF/hZapMPNxqqqK39mE33kJxe/D2uegzzEUdXqe\\n1+sNr4DJ0UWHqyE/KEGQdeG2vrpYjGlXF0JqzSkYUhcTGO5ivPc4x47XAPD1r3/9C1EwNpupe3l5\\neWgutxIcs6E1p0R9ruCYFY0m+kn0TMzF900QBEEQBEG4OWazmR07dlBWVsZvf/tbWltb8Xq9aLVa\\nUlJSKCsrY8GCBRHdn3k8HoLBIBqdAaN5ZsVkMXEp2FUYHR2d0fGRCidYq+j00W10Cfi9XDy5G2d/\\nB5Iko9EZiEnIxWiyoKoq7rFBBl029n64jwMHDnDXXXfxxBNPXFOsNZGgHU3KoYpKwO8Np9VJMrKs\\nRaPVExObOrmQI0kySWkFJKUVMD46yLljv6atrYN//dd/5e///u8xGAxRXe9skyQJiZtLmFAVBUkK\\nzy/KysrY++E+etvPU7pyR1TnUZQQvR0X0GrC54mWz+ejpqaG9vZ23G43Wq2WuLg41qxZc93F3KSk\\nJB5++GEeeOABhoaGGB8fR6fTERcXN6MED0EQBEEQBOHmZGZm8uSTT7Jy5Uo++OAD+vv78fv9mM1m\\n8vLyKCsrIyMjI6JzjYyMAMx4s5JGoyErK4vh4eHJc82ViTmJ2WyO6rjOzk7+/d//HYfDgUajwWQy\\nkZOTg16vJxAIYLfb6enp4e233+Z3v/sdX/va16ZsRRsMBoHo0rSDweBkgZzBYECj0RAXF3dVa12D\\nwcD69etZt24ddXV1vP322xw4cACz2cyjjz4a1bXOhYm59URy3kwoioIkSWRmZpKamkpPTw8ulyvq\\nFsOjo6O43W5SUlIoLY0+Yd3pdHL06FEcDsdk0Wd6ejobN26cNnlPkiSKi4spLi7mmWeeYWhoaPLY\\nhISEm2o3LAjCF4so8BMEQRDmjKqqk/+m+t+R+q/QMhVmNk5VCeHuPkJgqCP83ugSUOOLMaUURp2e\\np6oqqIAajHzQSjD8DykcjQHhQr8pSJKMPqEAjSGO8bYPOXHiJCUlJWzfvj3y15sjs5m6V15eTs3J\\nU4w7P8GQujjq9A+/8xNidBrKy8ujGoOiKFy8eHGySC+aBEdZllm6dOmcJlQKgiAIgiAIkeno6OAP\\nf/gDtbW1+ANBQiEVlfBenO4eKxfqL/L2229TXl7Ol770pesWIE0s0NzMZo2JYwOBmd0rR2pi0UAJ\\nRT4fCfi91Fa/w9iQA43OSEbBStKyF5GWkUX4HQsbHe6nt+0c1o569u79kJGREXbt2nXV+zIxPwr4\\n3BG/fijgnyzu02gNBPyeK+eaumgvJjaJsjt3cvrwW1y+3MKePXt4+OGHI369uWCxWJBlmYDHg9/n\\nRm+IbjERwD02iHTlXGVlZew/cABbVwPzlmxBO817MZUBWytB3xj5edksXLgw4uMcDgf79u3j6NGj\\njI6NEwqphCe34cWqPXv2UlRUSGVlJRs2bJg2iU+j0ZCcnExycnLEry0IgiAIgiDMLlVVOXHiBB99\\n9BGdnZ1XPTY0NITVaqWmpoacnHDXmfLy8uumpE3MiW4mjXmi4G2u50Q6nY5AIEAgEIh4I1BLSwsv\\nv/wybreb+Ph45s2bR2FhIfHx8ZPPURSF7u5uGhoasNls/Nu//Ru7du1iw4YNV51LlmVUVWVsbCzi\\nMbvd4fmTXq/H7w8nYU/XnUiSJO644w6MRiOvv/46u3fvpqysjPz8/Ihfby5MJOU5nc4ZHa8oymQr\\n2/j4eLZu3co777yD1WqNusDParWi1WopLy+PqrCusbGR/fv3c+7cuSnXUN977z1WrVrFjh07mD9/\\n+tR8g8FAenr0SeyCIPzXIAr8BEEQhFmlKAoHDhxg//792Prs+AKh8I/zUabRfdZ/lZap0Y5TVdVP\\ni/skHaSWgSEVjV6H1vxpdHck6XmKoqDRaFAJgLsPDJ8uaEhIn10bu3oMypXFN1kH3nDCoaSbOt59\\ngsaUhDF7PZ6eI+zfv/8L0fY1LS1t1lL3lixZQmZGOm0dvQSGu9AnFER8nsBwJ3LIQ1ZeDosXL47o\\nmLn4zgiCIAiCIAifj9OnT/Pqq6/i9vhRFEjJmk9G3iIMBjOKqjA+4qS3/RwDzn52v/8BdXV1vPDC\\nC6Smpk55voniv4DfhxIKIs+gBavf677S5nZuk8wSEhKQJIkRl42sghtvPFFVhfqa3zE25MAYk0Dp\\n6gfRaPRX7nWvnsDExqdRunIHadkLuHDitxw7dpzk5GS+/OUvA+FFqUAggBIK4uxroWDxnciyNnyW\\nKwl317w+KqErxYganYGh/nZCQR9Gczx64/TvlcFoYdGqezh39FdUVVVx//33T5mQ4fP5qKurw+Fw\\n4PV6MZlMpKens2LFims2a90MnU7H0qVLOX3mLNaOegoWrI3q+GDAh727CZ1W5o477iA7O5tFCxdy\\n/kIDTWc/YsmaL0W06cnnGePy+UNotTIVFRURz1kaGxv50Y9+xOjoOIGQQlxiFuk5pegNZhQlxNiw\\nA1vXRS590kJraxunTp3iL/7iL+Z8fi8IgiAIgiBELxQK8dZbb3H48GEgPAeZ2LxuNBrx+Xw0NTVR\\nVVVFT08PP//5z7l06RJf/epXp02dm0jDu5n0vYljp2ttO1uSkpJwu910dHSwZMmSGz7f4XDwyiuv\\nMD4+TmFhIWvXriUQCFwzX5Blmfz8fPLy8qirq6Ouro6f/exnJCUlTabE2Ww2IPw3aGxspLi4ePL4\\n6QooA4EAiqIgyzJGo5HGxkaAG7ZyXbRoEZs2beLIkSMcPHiQ//E//seUzxscHKSuro6RkREURcFs\\nNjN//nyKi4tntbXv4sWLMRqNdHV1MTAwQEpKdGtELS0tjI2NkZmZSXZ2NvHx8bz33nu4XC7sdnvE\\nBXNOp5P+/n5MJhNbt26N6BhVVfntb3/L7t27gXAha1lZGQsXLsRoNOLxeGhoaODs2bOcPn2a06dP\\n8/jjj3PPPfd8IdojC4Jwa4kCP0EQBGHWBAIBXnvtNWpqTuHxBVE0ZvTJC9BbMqNOo/us2SzemkvR\\njtPvbPq0uC+rEnSxoASmbCk1XXpeZWXlZHGY2+0BRYHRFohfGG63S3jhCqYo9FNDoCqAHE7vG2kB\\nQBM3feujCbr4fLy2M1htfTQ0NFyTHHczaXQzMZupexNtb9944y3Ge4+jMcShMd14l1bIM4i39wQx\\nBi3bt2+P6Prm6jsjCIIgCIIg3Hp1dXX8+Mc/xuMNkpG3hOLFmzGYrl5ASkzJJbtwOSODVprq9tHV\\n1cs///M/89JLL12V0DBBp9ORl5dHc0s7/b2XychbFNWYVFXF3tOERpauWuCZC+vXr+f9P/yBvq7G\\niJLfnH3tDDq60OpNLFrzCBqdESUUuG7KQVJaPkvXPcT5Y++yd++HbNiwgX379nH8+HHGxsbD9/be\\nUZy2FlKzF4RnQqqKioQkXZkTXRFOGlSRZA2yrMHWeR5VVUnPXYxWe/10kMTUPEyWRAYHXdTV1bF6\\n9erJx+x2O4cOHeLIkSOMjI6hKp8mOMqyREJCPFu2bGHr1q2zljRXUVFB3bnz9LafI79kdVTzob7u\\nRlQ1QOmCReTm5gLw1FNP0dHx/zJg/YSG0zKLVt193eJS99gQ5479GiUwRmlpCRUVFRG9dmNjI9//\\n/g9we3wkphdRtHAjcYnXtmorXrIZe/clmuurOFt3npdffpkXX3xRzIkEQRAEQRC+QFRV5c0336Sq\\nqgqtVsvOnTvZtGnTNff3ixYt4sEHH+TEiRO8+eabnDhxAkVReP7556f8Tb2oKLxe0dDQwOjo6GRa\\nW6SsViudnZ3o9Xqys7NnfoERWL9+Pe+++y4ff/xxRAV+H374IaOjo2RnZ7Nly5bJ5L3p5kQTCXoT\\nhZK/+c1vePKc1CbCAAAgAElEQVTJJ3n33XdpamrC6/USCARoampi27Ztk5tiJhLh/rggbCKxT6/X\\n4/F4aGxsRJIk1q1bd8Oxb9y4kerqak6cOMF/+2//bbIQU1VVmpqaOHjwIGfPnp1MYJwgyzJ5eXlU\\nVlayfv36iJMOr8dsNrN+/XoOHTrEmTNnuPvuu6M6/vTp08iyzNatW5Flmbi4OHbu3Mkbb7zB5cuX\\nUVX1hi2lBwYGuHTpEgaDgYceeijiosB3332XPXv2IEkS999/P5WVldf8NrB161ZcLhf79u1j7969\\n/OpXvyIUCnH//fdHdZ2CIPzXp/nOd77znc97EF9UTqcTv9+PXq+PutJbEAThT42iKLz66qscP3ES\\nd0DCkLMJU846dJYMZJ0ZWWtE1pnRxqSjTylFMiTgGerGZu3B0W+nrKxs2t0mRqORkzU1eMeGwsdG\\nsStFVRU83Ucw6VSe2rlzTqOpoxnnRHqfEvJD2nowZ6CG/EiE4881mmlasepMSHoLPlcHg04Hly9f\\nZs+eD3E4hwlJBgj5woV7hkQwXLtACJ9O4lQlGC7wk7Xg7oXRViRtDKbsdTeMu5ckCVUNERyzIaGw\\nZs0aIPw52L9/P6+99hof7dtPa0cX9v5BBl3D9A+46Orp4WRNDSdP1qCqKoWFhbOyyyg1NZWamhMM\\nuQaRDAlojAkRHxsY7kAZbiU/N4udO3ciSRKFhYXYbFb6rD24na1I+lhkQ9yUY1VVhcBwB56uKkw6\\nlQ0b1vH444/f8Lrm8jsjCMLn63aaR9xO1yIIgjCXXC4X3/3udxn3+MlfsJaS5ZXTFrhJkoTRHEd6\\nzkIG7B24nP30dHexadOmaZ9//vx5PO4xsgqWRTcuRxc9LbWkpibx53/+53OaBB0XF0dTUxP9/XZ0\\nRgvxSZnXff7lC4cYHx0kb/46EtMLCQa8V5IGzdctUDNbEhgZ6mdsxMHxY8f45HIzbq+fhNQCFCVI\\nwOfB5xkhNXvhtUVpnynyCwb9oKpotQaGB7vpaT6BLGtZuOpuDIbrp8OF50MqTnsbkgRr14ZT844c\\nOcK/fP/7NDV9wpjbizkug9SchSSkFhATl4bP72PI5eTy5ctUVR0mOzubrKysCN7d60tNTeXEieO4\\nBp0oikpSWmQtstxjQzSc/gNaSeGJJx4nJycHCLelKioq4ty5s7icVnra6wmFAphjE9FqP11sHHH1\\n0dpQzSfn9oHipbAwnxdeeGFyce96XC4X//iP/8jomJvMghUsXn0vRtPUi7WyrCE2IZ207BJsXZdw\\nOPoYHxtjxYoVEV2nIAi33u00j7idrkUQBGEuHTt2jPfeew+tVsu3vvUtVq9ePe06w0Qi3ZIlS6ip\\nqaGzsxOLxTLlpqSYmBja2tqw2WzExsZetz3pVHbv3k1bWxubNm2aXMeYKxkZGeFOPTYb69evv+59\\nsdvt5uc//zk+n4/t27ej1WoJBAJoNJobplVnZGTQ0NCA3W7n6NGjDAwMoNfr2bBhA52dnSiKQigU\\nYt68edccO7k+pKqT7XlNJhMff/wxvb29zJs3L6KuTRN/F4fDQVZWFnl5eQSDQV5//XXeeecduru7\\nURSFwsJCiouLyc7OJiEhgaGhIRwOB+fPn6e2tpZly5bNStp8cnIyVVVV2Gw2CgoKptxAN5X6+nqO\\nHz+OXq/na1/72mRxZVFREYqi0NraSn9/P4ODg8iyjNlsnnwPFUVhYGCAlpYWent7MRgMbNu2jSee\\neCKitZuamhreeecdZFnmr//6r6moqAh3CpuCyWRiyZIlpKenU1tbS1NTEwUFBTcsPBQE4fMzF/MI\\nUeB3HWLiJgiCELn9+/fzwQd7cQckYoruRhebOe0NrCRJaIwJaGOzcTtbsdt6iYuLnTZRYraLt+ZK\\nNOMMjlnxDzSBxgypq8OFdkoIrVaDyWyarqMuALIhHt9gM0ODdrp7evGGNOHisNyN+Acvo4a84HWA\\nKQu0pnA63x+RJAmUAKBCYBz6j4KqICcuxpyUfd3X//QkGvyDzVjMRrZu3UogEODVV1/lgw/24nAO\\n41eNaJOXYEi/A33qYrQJxahaC96xIYYGnTQ2XKSvz8bKlStvWFB4w6FcucbGhot4hrrRxmYj627c\\nsinkGcTTVYXZIPPIIw9PTnglSWLlypU4+u3Ybb34XO34BptR1RBIGtRQAMU/ht/Vgqf7CMpwK2aD\\nzIYN69i1a9e07QQ+ay6/M4IgfL5up3nE7XQtgiAIc2nv3r1cqL9IQloRC++4O6J5h0ajJSVzHt1t\\n53A6+1m1atWUixCZmZkcOnSQIdcAcYmZmC2JEY1JUUI01u4lFBjj3nvvYfHixVFfV7QMBgNnzpzB\\nae8kKb3wmgTDCZ7xIT45dwBZ1jBvxT3hND1VRafTYTBMvaDxWTqdge72esZGR4iJz2RV+ZPkl6zG\\nYIqjr7uBYMDD2HA/yRnz0Wj+KOXtSpFfKBieD42POPikdjdKKEhmwQqy8xdGlICnKgrWzovExVrY\\nsmULBw8e5P/8n5/j9QZIyS5l0ap7KFq0keT0AhJTc0lOLyS7cAVJaQV4vR6GBvuprT1DRkb6ZHLe\\nTMmyTEZGBmfOnGKgrxNVhYSU3Ot+DsdHnJw7+i5qyM3y5ct47LHHrlrES01NZdmyZTQ3X2ZsdAiX\\no4uu5jNYOy9i7bhAe9MJultO4xsbQK+TWbNmNX/zN38TcduzPXv2cO78BeKT8yNuA6zTm0hKy6Or\\n9Rw2ay9btmyZdgFMEITP1+00j7idrkUQBGGuqKrKT3/6U0ZGRnjmmWcoKyuL6LjExETS0tI4c+YM\\nNpuNbdu2TXkPazKZqKmpobe3l/Xr10d8D2i323njjTcIBoN89atfjbjoa6YMBgN9fX10d3fT0tLC\\nmjVrpl0rqK6upq6ujvT0dBYvXjxZbGc0Gm+4vqDRaBgbG8NqtRIKhaisrORb3/oW69evp6Ojg46O\\nDhwOx2Ra3h+/pxMblnw+H5IkUVtbS01NDVqtlkceeSTiojGbzUZHRwfz5s2juLiYV155hVOnTiFJ\\nEqtXr2bHjh0sWbKE3NxccnJyKCwsZMWKFSQmJk62sz19+jSrVq266SK/+Ph4xsbGaG1tpbGxkZyc\\nHBISrr+WeOHCBd5//31kWebJJ59k4cKFVz2+aNEiEhISaG9vx+Px4HA46OnpwW63TyZDDgwMoKoq\\nsbGxfPnLX+axxx6L6PcAVVV57bXXGBkZYefOnWzcuDGi68zNzUWWZZqamhgcHGTz5s0RHScIwq0n\\nCvxuMTFxEwRBiIyiKLz22ms4nMMYcjahi71+UsOEz6bRuQYHqKysnPLGd7aLt+ZKNOP09p0l5B2C\\nhEVgTEFV/EhSeKJ6o3ZQkiQRCPgIjNoIKQqW+fdfKQ6TQdYQHOkOF++5e0AbG279K8lXteeVkEDx\\nw3gPDNSAEkAyZ2PKWo0uguI0ADUUIOC8RFysmcrKys89jW62U/c0Gg1lZWXExcXiGhzA5x4hOGbD\\nP9hMwHmJ4FALkteOSaeSn5vFI488zOOPPx5Rcd9cf2cEQfh83U7ziNvpWgRBEOZKMBjkP//zPxkZ\\nHad05d2YYiJfNNJq9Xg9o4y6+pBlacpEMq1WSygU4vInl+jraSY+JRuT+fqvoSghGk5/wFB/OynJ\\niXz1q1+9JYVQWVlZOBz9dHd3Ye1sIjYhA7Pl2kUVh7UZh62FpPRiEtOLUJUQsixjsVgiur9V0GHv\\nbiQY8HLHpieITQwntcfEJTNga8UzNoTfO4qrvx2NRofJknR1AZkk4R4bwNZeR8elakLBAEkZxcxf\\nVhlxiyi/bxxrxwUSE+JJTU3l1VdfxeMLUrKskvlL78QwRRrdp+mNpQAM2Dupr7/AkiVLSEpKiuh1\\np5Oenk5SUhIX6y8wYO/EYW1GkiRiYpOQ5U/nmOHUvSNcPn8ASfWzoGQ+3/zmN6e87oSEBCoqKliw\\nYAGBgI8BRz9qyIca9CIRJCE+lu3bt/Hcc89RWVkZcctcn8/HK6+8wtjoOCnZJQQDPgD0xhsv6hmM\\nFkZddsZHncRaYliwYEGE75AgCLfS7TSPuJ2uRRAEYa60tLTwwQcfEBsby3PPPRfVhv7MzEyOHz/O\\nwMAARUVFUxaXpaamcvHiRWw2G01NTaxateqG9+0Oh4Pvf//7DA8Ps2LFCu66666or2smSkpKqK2t\\nxWq10tjYyNKlS6dM5Nu7dy+9vb0sX74cg8GAemXD043S+yBcHKYoCu3t7VgsFv7hH/5hMnkuPz+f\\nI0eOMD4+Tm9vL3a7HYvFck1x48TxR48e5cKFC0iSxEMPPcSKFSsi/vu1tbXR1tbG/Pnzqaur4+jR\\no2i1Wh599FEWLFgwZathWZZJSUmhtLQUm81Gf38/DQ0NbN68OaK1letZsmTJZIHl+fPnsdvtmEwm\\nEhISJueZoVCIS5cusXfvXmpqapBlmfvuu48HHnhgynMWFhayfft20tPTGR4eZnx8fPIxrVZLXl4e\\njzzyCM899xyLFi2KeL2mvr6e999/H51Ox4oVK3A6nVgslojmo3l5eRw8eBC73T7tRkFBED5/osDv\\nFhMTN0EQhMjU19fz0b79+FUjppx1URUcTaTR+dwjlJTMn7aF7q1omTobIh2nr/8CStADiUtRJQ0S\\noNfrMZqMN0zPUwGv14c60o7GEIcp69PdcBpzKiH/CIrHFS7gc/fCWHu4ba+kgVAAgmPh/2/gFIx1\\ngBpCislBl7keU4w5svQ+QPGPERxqITsrnWAw+Lmn0c1F6p4kSRQXF1NZWUlJyXwkFCxmI3GxZrKz\\n0lm8qJSndu5k586dzJs3L7LFSEVh9+7dfPxxNYFgEMU3hH+wJdzuWKND1sde9zyRfmcEQfj83E7z\\niNvpWgQhGqqq0tvbS0dHB93d3bhcroh/aBf+9NTV1XH4cBX6mGTmLdkS9bzDaI6nu/Usjn47d911\\n15SLKSUlJTgc/fT2dNHb2YASUjBbEq9pA6wqCs6+Nhpr9zLk6CAu1syLL75IZmZkG0puliSFixSt\\n1l76rD30dlxkwNaGJMuYYhKQZA2qqmDtuIDL0U1ccg7xSTmTxX2RLCQpioLH42HQ3koo6COrcBlG\\nc9yV15dJy16Ao/cyPs8oft84Lkc79q7zeMddjLr6GHJ0YGurpfPSEUYGe1BVlfS8JcxfVnElfS6y\\nv9/Y8AD9PY3k5mbT2NiIta+f/JJ1FJSuj+h9SkzNw+cdZ8hpZWxshPXrb3zcjeTn55Ofn88nl5pw\\njw3hsLbQ1XIWe+8lbJ0X6fikhq7mk1dS9yTWr1/HX/3VX133v22SJJGWlsbatWvZsWMH5eXlbNmy\\nhfvuu49HHnmE5cuXR5zaNzw8zL59+/jRj35Ef78DFYmxITv91mZ62s7htLcjazTEWJKQrtMSTKc3\\nYutsYNDpYMeOHWLTkyB8Ad1O84jb6VoEIRqBQIC2tja6urqw2WyMjIwQGxt70wU4wu3pt7/9LV1d\\nXWzfvp2lS5dGdawsywQCARobG/H7/axdu3bK56xYsWKycO706dOYTCYyMzOvmUO43W4+/vhjfvrT\\nnzI4OEh+fj7f/OY3I96McrMMBgPLly/n3LlzWK1WDh06RG9vL7GxsSQkJCDLMj6fj927d+NyuSgq\\nKiImJgatVktMTExE97Z+v59gMMjly5eJj4/nvvvum3wsLi6OwsJCamtrcbvduFwuGhsbJxPfenp6\\naG5u5vDhw9TW1uJwODCZTDz22GOsWbMm4g1PAOfOnaOnp4fS0lI+/PBDAoFAxAmAWq2W4uJiWlpa\\ncDqdpKWlUVBQEPFrT0WWZVatWkUgEKC9vX2yFXBdXR2NjY3U1tZy+PBh6uvrGRkZwWQysXPnTu6/\\n//4bjrWgoICtW7eydetWNm/eTGVlJQ888AD33XcfxcXFEX++Ojo6+M1vfsMvfvEL/H4/ABcvXuTU\\nqVPs27cPm81GfHw8SUlJ034WdDodLpeL9vZ2ZFlm+fLl0b1RgiDcEnMxjxB3YYIgXENRFC5evEh1\\ndTX9/f14vV6MRiNpaWmUl5ezZMmSq9q2CEJ1dTW+QAh98oKI2up8liTJ6JMX4HOep7q6etrJnyzL\\nPP/880iSxIkTJ/H0VOO1mdAnL0BryUKSdahKINz61vkJcshDjEHL+vXh4q1b9ZmNdJyKbxhVVUBV\\nJ4v7zObIiuuCgSCKqkGVJJCvnrxKkkRM3hbGkQi4WiHkQ1X84KwLp/hNUJVwah8qxOShy9oYnjxG\\nca3BMSsajURqair79+/H4wtizClHY4oseUJjSsKYvR5PzxH2799PZWXlTf+ddDodX//61ykpKWH/\\n/v1YbX34nOfx9J8DVQVJQqORiNFpyMrLYfv27RG9rizLLF26NOofJz5LURQOHDjA/v37aWvvIBAC\\nJA0h32j4CZ5BAkMdyIZYDCkL0ScvnCbRMrLvjCAIgiAI0fP5fJw4cYKDBw/S3dUBhMK7KyQJSdax\\nfPkKKisrWbx4sZgTfUGoqkpTUxPHjx/H5XIRCAQwmUzk5uayZcsWUlNT53wMfX19KIpKenrhjAqN\\nLHEpGExxeL1uhoaGSEtLu+Y5sizz3HPPYTabOXDgIN3NNXR+UkNyZjGx8WnIGi0Bn5v+3sv4vCPo\\nNDJpqUn87d/+LYWFhbNxmRHTarX85V/+Jbt372bfvn2MjvXzydkPaTyzF1mWURQFJegPz4cAvV6H\\nyWSO+Dvl9/tQw19MJEm+Zg5jMFlYs+0r1B19l5FBG8GAl2DAS1/neZAkUFVUVSUU9CNJMuk5i5i/\\ntAKz2UykxX0A9t5P0MgS8fHxnKipQZJ15C9YF/HxAEULN2LtqOf8+QsMDAzMyg++K1eu5OWXX+bU\\nqVMcOnSIlpYWAp7B8NxTkkhOjGPz5s1UVFRE3HprgtlsvvI+Re/48eO8/vrreH0B/P4AMXFpWBIz\\n0Wr1BAM+hga6GHL2Mjxopa3xGCs2PEpMXPKU50pKy0fSaHE6nYyPj0dcYCgIgiAIwo0NDAxQVVXF\\nxx9/zOjo6FWPmUwmNm7cSEVFBVlZWZ/TCIU/5vP5qKmpob6+nrGxMQAsFguLFy+Oqp3tzejr6wOY\\n8W/Vy5Yt491338Vut0/7nPj4eL797W/z8ssv09XVxeuvv84777zD2rVrSUpKQlVVHA4HJ0+enCyc\\nWrhw4Q03tMyF9PR0XnrpJd58801qa2s5c+YMZ86cAcKdg0KhEGNjY5NzIIPBENUYJ65PkqQp56Ar\\nV67k7//+7/nRj37EyMgIbrcbn89Hf3//ZHveYDA4WXjyxBNPTCYJRioYDHLx4kUg/N+NQCBAUVFR\\nVJvLDAYDq1evZv/+/Rw8eJDy8vKb3ryj0Wh44okn2LFjB9XV1Rw+fBiXyzXZAhkgOzubiooKNm3a\\nFNX8RpIkEhISbtj6dyrBYJBf/OIXHDlyBAivZS1cuJDMzExkWcbpdNLU1ERNTQ01NTXccccdPP/8\\n89P+TVatWsXBgwfp6uqKeiyCIPzXJQr8BEGY9NniE1ufHV8gRCikfloUc7mVmpOnyMrMYNu2bWzb\\ntk0san0BfBEKMvv7+wmFVPSWmaVCaC1ZePrP0d/ff93nzVXx1myLZJxq0IMkaZFlBaPZjN6gj3gp\\nye/3oypBJEDSXBtxLskaYvLvxG/JwOtoQPEOhxP81EB4gfoKWZYAGRQ35hgT0cybVFXB7/yEGJ2G\\n3Nxcak6eQtGY0cXnRX4SQBefj9d2Bqutj4aGhlkpVpNlefJv39DQMPnd8Hg8mEymye/GrVyYDwQC\\nvPbaa9TUnMLjCxKQLKiJBUgxOSDrw38btx11pJmQbxRP7ymC4/2YczcjydemmET6nREEQRAEIXIX\\nLlzg1Vf/A/fYMKheLCY/+ZkKeh24vRIt3TLnao9yru4MuXmF/M3f/I1IcfkcBYNBDh8+zMGDB7Fa\\nbQSDCor66c3umdqzvP+HP7Bi+XLuueceSktL52wsXq8XFdBor703j5RWZyAUcuPxeKZ9jkaj4Zln\\nnmHNmjUcOnSIM2fOMOJoY6i/9TPPkcnNzqCiooLy8vLPrfBJo9Hw8MMPc++993Lq1CkOHz5MV1cX\\ngUAAWdai0ZgYGRlDDXqIiYlujOH5kILfG1681OmvXQgzmmJZU/EM9p4melrPMeTsQQ0pqGoIVVFQ\\nVRW9XgdIjLmsmEzGqBaSAn4v9u5GDLpwwWIwqJCZvwxtlJ8BvTGGtOwSBvs+oaqqisceeyyq46ej\\n0+nYuHEjGzduxOl0Mjw8TDAYxGw2k5aWNmWrrLl04MAB3njjTXz+IEkZxaTlLMZoSUOnN6LRhJMu\\nQsEADuslrO21uMcGOV31FqvKnyQ24dqCV0mS0elMqEr4OyMK/ARBEATh5imKwm9+8xv27NmDeuW+\\nOiMjY7J7yODgIN3d3Rw4cIADBw5QXl7OM888IxL9Pkcul4u9e/dy5MgRxsbGCIVCVz1+8uRJ/u//\\n/b9s3LiRe++9l+TkqTdPzAav1wsw480gE0WI15sPASQmJvLSSy9x8uRJDh48SHt7O4cPH77meaWl\\npVRUVLBq1aqo2gXPpvj4eL7xjW/gdDr5+OOPOXbsGIODg4RCIbRaLbGxsXi9XhRFiaq4LxQKEQqF\\nGB8fn0xCn8rSpUv53ve+R1VVFYcPH8bpdBIKha7MX4KoqhoOnZAkmpubWbNmTVTXd/HiRUZGRsjK\\nyqKxsRFFUVi2bFlU5wCYP38+1dXVdHZ20tbWdtOdniYkJiby4IMP8qUvfQm73X7V+5WWlnZLU8CD\\nwSA/+tGPuHDhAjqdjq1bt7J69WpSUlKIi4ub/Iw6HA6qqqo4dOgQZ8+e5V/+5V948cUXpyzym/i7\\n3+g7IwjC7UXcdQmCAFxbfKJozOiTF6C3ZCJpdKihAMExG+POT2ht78H6xls0Nzeza9euWxZrLVzt\\ni1SQ6fV6w2kAmpl9FiRZB6oa0Y3oF7F4aybjdDgc2AdcaNURDIb8qM4dUkLg6QckZH3slM+RJOlK\\nClxpONVwsBnFP4oaCgAqisdJYWE+Wq2Wto5egsNd6BMKIh5DYLgTOeQhKy+Hrq6uOU9wnInZSN2b\\nDYqi8Nprr3H8xEk8AQljTjkhKTH8fdUamaysNCRDQimM96A6ThEY6sANmPOubfMWzXdGEARBEIQb\\nq6mp4T9fexUlOExRtp9ta4OsXqSg+8yvJiNjUH02wMHTXro7LvG//tf/w//8n9+OOgFLuHkej4cf\\n//jHnD9/gUBQQauPIbdkOXFJmcgaLUG/l37rZfp7LnHqdC3nzp3n6aefYvv27XMyHoPBgASEQoEZ\\nnyMUDB8bSbpGaWkppaWluFwuamtrGR4eJhAIYDabKSgomPNNXna7HYfDgc/nw2g0kp6ePm2xq8Fg\\nYPPmzWzevBkI//ag0WgYHh7m7/7u7xi0d+D1jGI0TT2vuZaKoigMDXQR8LsxWxIxWaZOT9BotGTl\\nLyUrfykjrj5cjm6CAS/DgzacfS2Ub96I3W6nta2T3rZz5M5bFfF70NV8CokQixcvw2azEQqpZOQu\\njPj4z8rIXYSj9xItLS0zOv5GkpOTJxdzVVVlfHwcl8uFLMvExsbOeaJLXV0db775Fl5/kPlLK8ib\\nX4bH4wkXxn6mKFej1ZGRt5TU7FIu1+1h0N7KuWO/Zk3lMxiM1y5aKkoArYT4TUoQBEEQZoGiKLz+\\n+uscO3YMWZZZu3YtlZWVzJs376rfJbu6ujh48CDHjh2jurqawcFBvvnNb4oiv89Bd3c3P/jBDxgY\\nGCAUCpGUlERRUdFk0c/4+DhtbW0MDAzw0Ucfcfr06TlN954oQPL5fDM6fuK4SBLkdDodmzZtYtOm\\nTbS3t9PY2MjY2BiSJGGxWFi+fDnZ2dkzGkckQqEQXV1djIyMTBbn5eXlTVvcmJyczCOPPMIjjzwy\\nmZyn1Wqprq7mZz/7GZcvX45qQ5qihJPQOzo6kGX5ukV1iYmJPPzww9x///3/P3tnHh9Vee//9zln\\ntuz7SggkQMIS9h1kTahet1ZftrZatVWLF2/ttaK3t63t7766aBdtXVqXal2oC1atVURkSUIIEAgE\\nSICQBLLvIeskmfUsvz+GDIQEyAYGPe/Xixcw85yZ55w5Z+Z5zvfzfD4UFBRQV1eH3W4nJyeHhoYG\\n7r77bt59910OHz7MmjVr+nWT7w9ZlsnIyEAQBBYuXMi///1vr5P+YDEYDEycOJETJ05w8uTJERP4\\n9SBJUi/HUUVR6OjowOFwYDabr0j0+Ntvv01BQQH+/v6sX7+ehIQErFZrH1FuREQE3/zmN1m6dClP\\nPfUUp06d4m9/+xs//OEP+9SIelwcr/TiLR0dnS8WfcSlo6PTr/jEGBTfR6hj8A3HHDENd0cV3bV7\\n2bN3HwDr1q3TnfyuMKNNkGmxeERK2hALWprqBkEY1CqlL0K8NRS3xAv1s6CggD/88Sm6W4oxR0wb\\nlDBOU1XoKkcQwBQ66aJtBUHAGDAGY8DZCa3i6MB28t8YjUbS0tLYsOEtumv3IpkDBxSvq9hbcdTm\\n4Gc2sGbNGrKzs6+Ig+Nw+CKdLnfs2OG5Vt0CfonXIfmE4ujsBEXhTObf2caCCP7xYAxAq0vH3V6B\\nyy8Kc3jvYuFQrhkdHR0dHR2d/ikuLuaVV/6GKrdzwzVObkuV+3U2DvSHG5crrF6g8Ny7GkWVdTz9\\n9NP8v//3/3T3qCuI2+3m2Wef5eixQhBMTJ2/hojYSYjnuR5HjknCNWM1lSW5VJ3M5R//eAtBEEhL\\nSxvxPoWHhyOIAu3N1UPa3t7dgcPWgb+fmaCgoAFvFxIScln2pz9kWebgwYNkZGRQXFyMqmrekawo\\nCqSkpLB69WpmzZp1UYcMVVVpbGzEbreTlJREwdHj1JUXkDh1qbeN22WnvvI41rYGZNmJKEqYLH5E\\nx00hMNRTmDldcxxBEIhLnD2guVRgSDSBIR4xbkNVIdaWSgwGAzfddBMvvPAiJ49mYvYNJDL24vMr\\ngNryfGM/ECgAACAASURBVCqK9+FjNnLjjTfy6quvoqFh6keENhBMFj80zVOEvVzYbDZycnLIyMig\\npqaGHl2dIHhiy1JTU5k9e/aIF7Y0TeP999/H6ZJJmHIN8ZPmAZ55MgLemOZzkSQjyXNu5Pi+D+hs\\nq6P6VB4TU1b0amPv7sDtcmDxM+vfvzo6Ojo6OiPARx99xJ49ezCbzTz00EOkpKT02y4+Pp7vf//7\\nrFy5kj/96U8cO3aM119/nR/84AdXuMdfbRoaGnjyySdpb28nNDSUuXPnEhra977+hAkTaG9v59Ch\\nQ5w+fZrf//73PP7448TFxY14n8LCwigtLaWoqIhJky49pj6foqIigEG75CckJFw20eL5WK1Wb+Rr\\nS0tLr+dMJhOLFy8mNTWV+PgLpxwJgoDdbqetrY3w8HAsFgtNTU00Nzf32ve2tjZOnjxJZ2cnsixj\\nNBoJDg5m0qRJmM1mXC4XFRUVGI1GVq9efcm+GwwG5syZw5w5cwCPU1xrayvBwcEsWrSIffv28fLL\\nL/Pggw9e0ulRlmXeeustqqurCQkJYerUqXz00UdeN8Ch4OfnB1xeN7rGxkYyMzPJzs7uNfcyGAws\\nWrSI1NTUy3IuNTQ0kJmZicFg6CWy7TlWsiz3mUPHxsby6KOP8utf/5q8vDxKS0uZOHFirzbl5eUA\\ng7qHoKOjc/WjC/x0dHT6FZ9cCEEQMQWPRzIH0l32OTk5+0lKSrpsTgg6fRmNgszIyEikklLkrnoM\\nvoOPKZO76pAkYcCrg640I+GWeL7AzG63I7tdqC4njtZyLGETEPAUQLyOe06rJ4pXNCCaAzGFTsLg\\nHwu2WgS5G8Hs7/n/IDlXHJaWlkZJSQl7c/bTXfY5ljFL+j2fwFN8cXdU4qjNwceosXixZ9Kzffv2\\nK+bgOFi+aKdLVVXZvn07dqeMJW659/tVEiVkQQFN9Yj6zsccAhHz0Zr24mwuxBQ2udfkeLRfMzo6\\nOjo6OlcTGzduRHF1kLbAyTfT5Eu297XAw3e4ePJ1qGysZtu2bdx6661XoKdXD06nk0OHDtHQ0IDT\\n6cRsNhMREcG8efOG7Rb2wQcfcOx4IYJkYe6KO/D1D7lgW5PZl0nTV+LrH0LR4a289dZbJCQkjLgj\\nwOzZswnw96OlrR5rW4NXSDZQasuPYJAEFsyff9nd1IZCWVkZzz//PM3NLbgVFUEwEhASjWQworhd\\ndLTVcehwPgUFR4mJieZHP/pRn6JhTU0NmZmZ7NmzB5vNjoaGLCvYbTYqivcTGpWAwWCk6uQBGqpP\\noKpKL3c3gJrSw/gHRWD2Cab9dBVGk5nY8YNf8CW7nYBnPrRo0SKqq6v5ZNOnHNv3b+KTFhA3YU6/\\njoK2rnaqTh2gtuwwFpOBO+74DlOnTkWSpDNzub5itYGgqSoIXBbXCE3T2Lx5M5s2baLbZkeWVRAM\\nmCy+aKqG09lFfsExjh8vJDQ0hLvvvpu5cwfuZHgpioqKqKmpxWDyZXzyQu/jRqMRwS6gKjKaUUOg\\ndyFQFCXGT1lGwd6N1JYXkDBlKZJ09vj0XDPz58/XHYN0dHR0dHSGSWtrK59++imiKPLDH/7wguK+\\nc0lISOCRRx7hySefZM+ePaSlpV0xkdXVQmtrK3l5eVitVmRZxtfXl8TERKZMmTKs+8+KovDMM8/Q\\n0dFBVFQUy5Ytu+gCm+DgYFauXMmePXuoq6vjmWee4Xe/+92Ij6GWL19Obm4umZmZXH/99YOKxdU0\\njYyMDACv8/doY9u2bbz33ntex7WwsDBiYmKQJIn29nYqKyvJysoiKyuLuXPnsnbt2l5uhIqicOzY\\nMdLT0ykoKPA+brPZUBSF7Oxsrr/+eurr6zl+/Dh1dXVomtZrTiQIAocOHWLMmDE4nU5kWWb27NlD\\nShWw2WyAx7zj3nvvpampibKyMp599lluuOEG5syZ08csRNM0Tp06xZYtWygvL8fX15f169cjiiKC\\nIPRxoxsMPdteDhMGm83G3//+d/Ly8ryP+fn54efnh9PppKOjg927d7N7924mTJjA2rVrvdHkI0HP\\nub148eJe9yJMJhOyLONyufp1royNjWXVqlV89tlnpKen9xL4nXvNLF68eMT6qqOjM/rR74Do6HzF\\nuZD45FJIPqFYxizGXpPN9u3bSU1N1V38znC5ncJGoyBz+fLl7NufOzQ3Ok3F1VKMn1Fi+fLlI9qv\\nkWC4bokXE5ipqoKmyDhq9+JUjBiVdpSOk6jOTrTzO2Jvxd1egWj0QXV1g+pGsoQOaUXUueIwURR5\\n4IEHEASBnJz92Gt24aj3wRSWjME/FkE0oqluj+iwpRhRseNnNrB48SLWrl2LKIpfiIPjQBgNTpfH\\njh2jvqERVfLFGHR25Z7JZMLlcnkFnP3iNxYkX1RnJ3JXndeFcbRfMzo6Ojo6OlcTZWVllJedwtc8\\nMHFfDxYzfOc6md+94SArK4ubb75ZF5ngWRGfkZFBdnY21s4uVPXsqFYUBfzfeotrrrmG1NRUYmIG\\n7/5ss9nIzMzE5VaYt+KWi4r7zmVMwky6rM00VBxm69atPPjgg4N+74vRE0O7efMWqk/lMW3+DQPe\\nVpZd1FUUYJBEUlNTR7RfI0FhYSF/+vOf6eqyY/ELZfyEOUTHT8VgPFuAcLsc1Fceo7r0ENU1dfz2\\nt7/lscceIzExEZvNxiuvvELeoUPIsoqsqPj4hWAy+WCQ3TgcNTgdnRzc+XYvgVxwxHjCY5IwmnxQ\\nFZlu62kaq49hbWtEaapEVVVix6dgNA1eENncWIYoCt5C2G233YbJZOLDD/9FzakDVJUcIDx2IiER\\n8UiSEVl20dJQRmtTBQZJwNdi5K677vJ+XoGBgQhCPd3W5gGfk+fS3dmCIHheZyRRVZXXX3+dnVm7\\ncLpkgsPGEpc4i4gxSV7HS7fLQUPVcWrKDtPQ1MJzzz3P3XffNWLnYkZGBm5ZZWzSzF4um6IoYjQa\\ncblcKLIbg6FvrJR/cAx+gRHYOptpqi0mJn4a4InCri0fvdeMjo6Ojo7O1cbOnTvRNI358+cPKi0n\\nISGBlStXsm3bNjIyMrjvvvsuYy+vDjRN48SJE6Snp3P48GFvlOq5REZGsnr1apYvX37BSNeLkZ+f\\nT11dHRaLhWuuuWZAQjpRFFm8eDFbt26lsbGRgwcPsmjRokG/98WYOnUqkZGRNDU1cejQIebPnz/g\\nbXsEbUFBQV6HudHE+++/z+bNmwGYOXMmqampfep8dXV1ZGRksHv3bvLy8vj973/PY489ho+PDxUV\\nFbzwwgveBCNJkoiJicFsNtPR0UFpaSn19fW8++67npqBpiGKIrGxsQQHByNJErIs09LSQlNTExUV\\nFbjdnlrMTTfdNOj9sdlslJSUABAdHY3ZbOaxxx7jueee48SJE2zcuJGPP/6Y+fPnExUVhSRJdHR0\\ncOjQIRobGxEEgZCQEH784x8THx+P1WoFoLOzE5fLNaTI2NbWVmDk50Tt7e384Q9/oK6uDoPBwMKF\\nC1m9ejWJiYne2lqPw96uXbsoLS3lN7/5DY899thFnRgHitPpJDs7G6CP06LJZPIYgciyN7b5fHoE\\nfrm5uXznO9/xHp8TJ05QX18/aq8ZHR2dy4d+91lH5yvOhcQnA8EYNA5H/UHq6hs4fvz4FY1KHY1c\\nCaew0SrITElJISY6irKKWtwdVZiCxw94W3dHJaJiJzY+jmnTpo1Yn0aC4bol3n///bzyyisXFJip\\nsgt7dTZK92nUmq04BQFBkMDgB4GTwDcKBCNobrA1ollPojg7QZMRRZDtbWiaOmxBpdFoZN26dSQl\\nJbF9+3bq6htwtuRjbzpy9vyVBPyMErHxcaxZs6bXOTQaHRxHi9Plrl27cLoVTGHJvd7bYDQgSaLH\\nQUNVQOznRowgQuBEtLYCXK0nvQK/0XzN6Ojo6OjoXG1kZGSA5mDZbAXzIO9BJ49TGRPhpralmby8\\nPBYuXHjpjb7E5OTk8Morr+J0unArKgHBMYRFjUMymFFkF22nq2htreWzLVtJT0/ne9/7HitWrLj0\\nC5/D3r17sdkdBIePJShscE7W4ybNp6b0EAcP5tHe3k5wcPCgtr8Uq1evZvv27TRWHycoLJa4xNmX\\n3EZVFY7u+xhVdjJxUmKfyJ0vmtraWp577jm6uuxEjZ3G5DnX9olCBjCaLMRPmseYxJkcy/2U1oZT\\n/PnPf2b9+vW8+uqrlFdUomgSMfEzGJM4i4Cgs+N+h72LnK2vYOtuw2C0EDFmCvGTFuMb0DsWKjR6\\nItEJs2mpL6GqeC9OeweNNcVMnSf3cna7FPbuDloayvD3M7N0qScWWBAEvv71rzN58mR27NhBXl4e\\n7U2ltDacgjNBxJIoEOBnZtGiRaxZs4bx48d7X3Pu3LkUF5+kpuwIEQOI+D0fjxudOKLOeeApRO7c\\nmYVbEZmx6FYiYvueX0aThbET5xI3YQ4VxfspK9zFmxs2EBAQwIIFC4bdh8LCQhRVJXZcXycgs9mM\\n2+1CkV2IotTn3BIEgci4aZQX7qStqZKY+GlomkrhwS1oioNxExJG3TWjo6Ojo6NztSHLMllZWUBf\\n8clAWL16Ndu2bSMnJ4fbb78df3//ke7iVYMsy7z55pteMY8oisybN4+4uDgMBgNWq5WDBw/S1NTE\\nxo0b2bp1K4888ghjx44d1Pukp6cjyzLTpk0b1CIzg8FAUlIShw4dIiMjY8QFfqIokpaWxjvvvMNr\\nr71GTEzMgKKAm5qa+Nvf/gZ4zqfRtnAuIyODzZs3I4oi999/P0uWLOm3XWxsLN/97ndJTU3l6aef\\npqysjBdeeIHrrruOZ599FpfLRXh4OKtXr2bZsmUEBJx1DD906BBPPPEEnZ2dGI1GEhMTGTt2bB8T\\ngoiICOLj46mrq6O6uhpZltm8eTOTJ08e1D7t3bsXl8vF5MmTvYuefH19efTRR8nJySE9PZ3y8nKy\\ns7P7OAiGhISwcuVKVq9e7Y2GDQwMJDk5mcLCQoqLiwddK+7s7KSiogKTycSsWbMGte3FcDqd/PnP\\nf6auro6YmBjWr1/fbwR0dHQ03/nOd/j617/OX//6V44fP87TTz/NL3/5y0vGFV+Kqqoq7HY7Y8aM\\n6eNyKggCJpMJp9OJzWbD39+/T00qIiKCyZMnU1RUxMmTJ5k7dy5tbW28+uqrAKxcuXLUXTM6OjqX\\nl8t+xR84cOCyvr5wxvEnMDAQf39/QkIGv1JWR+erzIXEJwNBEERMYck4W/LZtWvXV1rgd6Wcwkar\\nIFMURdasWcOGDW/RXbsXyRw4IPGhYm/FUZuDn9nAmjVrRp0L5HDcEvfm7KempobKqpoLCswkM0iT\\nbqbzxD9RXJ0g+qKFzQa/+DNxtwKggaaiBfiB3zgEex1C2xFQ7AiudlztlZhDBh5/cCFxWM9nmJqa\\nyvHjx3tFCfv4+HgdKKdNm9bnc7pcDo7DccMcLU6XTU1NKIqGyb+3Q42Ap6ClKHY01YUgmPuP6vWJ\\nhrYCVFcnMPqvGR0dHR0dndGGzWYjJyeHgoICOjs70TQNf39/pkyZwrJlyzh69CioLpbNGXyUjCDA\\nstkKG7c5OXr06Fda4Jednc0rr76K06kQMSaZcUnzCQzp69DX2d5E9amDNFQd4+9/fw23201aWtqA\\n32fnzp3Isjog8dz5WHwDCY+eQEdzOXv27OGGGwbusjcQoqOj+d73vsff//4axUe243LYGJe0AMnQ\\n/3zPYbNy/OBnWFurCQ8N5sEHHxySO/fl5IMPPsDa2U1YTBJT5l53yXG+JBmZvvBmjuz5gJbWan77\\n299iszkwWIKZf81t+Pj1FVW6HF2oiozR6ENM4hxiE+chCiIup817PDzRVJ4Y2/CYJMIi48nf8z72\\n7laOH/iUGYu+MeB9qjp5wBuHfL47RHJyMsnJybS1tZGTk8Pp06dxOp34+PgQFRXFkiVL+i1aL1++\\nnA8//JDWpgpsXW2DcvGztjVgbasnLCSwz3dITwRWeno6J06cwGbzHJOAgABmzZrFqlWrLlg0raqq\\nYvNnn+GSNWYuuYWwqPEX7YcgCCRMXoQgCJQd38Ubb7zBzJkz+42KGiiapmGz2dA0MPcTeWwwGDCb\\nLTidDtwuBwaTGek8d3OzxbOd2+VAdjspzNtCS/1JgoP8Wbt27ai7ZnR0dHR0dEYjjY2NZGVlUV5e\\njs1mw2g0EhwczIIFCwgJCaGjo4PIyEiSk5MH/drR0dEkJydTXFxMcXHxiC9YuFpQFIUXX3yRvLw8\\njEYjN954I8uXL+9Ts7799tvJz89n06ZNlJeX88QTT/Czn/1swCK/06dPc+zYMQRBIDExcdD9HD9+\\nPEeOHKG4uJi6ujpiYwe3aOpSpKamcuLECQ4fPswTTzzB2rVrmTlzZr9jth63w5deegmr1crUqVNH\\nfI42XBwOB//85z8BuPfeey8o7juXmJgYHnvsMX79619z5MgRjh07hqZpLFq0iPvuu6/f2Nu6ujpM\\nJhOiKDJ16lSCgoJwu929HCB7/m00GklISCA4OJijR4+yZ88eVq1aNWAXN5fLxY4dO4C+ol6DwcCy\\nZctYtmwZZWVl5OXl0dnZiaIo+Pn5MWnSJGbPnt2voGz16tUUFRVRUFBASkrKoMbpx48fB2DevHl9\\nrhm3282BAwfYuXMndXV12O12TCYTYWFhLFmyhOXLl19QWPz5559TWVlJZGQkP/3pTy/pDujr68uP\\nf/xjnnrqKYqKinjvvfeG7f7f1dUFQGho//Upi8WCLMsoikJXVxd+fn59XDl7RIbd3d3U1tbyzDPP\\n0NrayoQJE0bdNaOjo3P5uewCv7vuuuuK3mzx8fFh6tSpTJ8+nVWrVo3IalMdnauVgYhjLiQ+GSgG\\n/1jsTUe81tJfRa6kU9hoFmSmpaVRUlLC3pz9dJd9jmXMkn6PA3hEXe6OShy1OfgYNRYvXjTqonWG\\n65Zoq8qiqKgIzeCP/4S+AjNN05C76rDX5aK6usDgC5HLwBQEmoImK3hkYJ6/BEAyGjH7JyGFxdJ1\\nagu4u7BX7cRgCRoxQaUoikyfPn1Q58dIOzgO1w1zNDldOhwO0LQzgs3emMxmZFnx2O4rTgTR1NfJ\\nT/RspykuXO3lo/qa0dHR0dHRGU20tbXxySefsHfvXpx2K2guoOfmuMDR/AP868MP6ezqwiSpRIZo\\nF3u5CxIRogEqnZ2dI9X1q46SkhJee+01nE6ZCSkrGZd04fswAcGRTJ13PQEh0ZTk7+Af/3iL6Oho\\nUlL6unudj6Zp1NfXo6ga4dEThtTX8JgJtDWVUVdXN6TtL8WKFStwOp28/fY7VBbvperUQWLHTSc6\\nfiomix+aqtLd2UJt2RGaG0oxSAJREWE88sgjREVFXZY+DZWWlhYOHz6CokLyrNQBzz9FUSJ51hpy\\ntr5C0+nTBARFMnf5tzH7nC26aJpKa2MlNWWHqa/yFHPCY5IZkzj/zPMaGgoCQs+MCEkSMZnMZwpf\\nwUxdcDNHst+lpuwICZMXExB86eNXW55PTdkhfC1Gvva1r12wXUhICNdff/2A9hfA39+fRYsWkblz\\nF4UHP2P2stsH5Coou52cyPsco0Fk2bJlvcR0+fn5fPDBB1RWViErnmhjTfPMCzus3dQ3bGP7jh1M\\nmTyZb3/7233cIDIyMpBlldiEmfgHhtPWXI3idiEZTPj4BWHx7b+4NS5pAafrSrB2NpGbm8uyZcsG\\nfBz641L3hH18LGiahsvlRHY5UEQRSTIiSgYEBDQ8380drXXs/uxF0GRCggP47//+70G73ejo6Ojo\\n6HzVKCoqYvPmzRQUFGC3273Rn+CJCN27dy8BAQHY7XZCQ0OHXMuNiIiguLjYK2T5KvKvf/2LvLw8\\nfHx8ePTRR5kwof/5iiRJzJkzh+nTp/PCCy9w+PBhnn76aX7zm98MyP2wvr4eVVUJDw8fUgyq0Wgk\\nMjKS06dPU19fP+ICP0mSWLduHS+88AJHjhzhmWeeITo6mtTUVKZPn47ZbMbpdHpjjGtqagCYMmUK\\nP/zhD0edE1lOTg4Oh4OJEydyzTXXDHi7qKgorr/+et566y3sdjsrV65k7dq1vWoNDoeDnJwcduzY\\nQWFhIaIokpyc7HXF0zQNRVF6XZcGgwGTyYTJZCIwMJDOzk7Ky8t58cUXefHFFy95/GRZ5uWXX6ah\\noYHw8PCLigITExMHJSKdN28ewcHBtLS0cODAgQHrMxoaGsjLy0OSJFatWuV9XFEUNm/ezPbt22lr\\na8PtdqMoivc7rLm5mfLycj788EOWLFnCt7/9bfz8/Hptn5mZCcDdd9+N1WqlpqYGt9uNn58fsbGx\\n/UZkGwwG1q5dy6OPPsrBgwdpa2sblrnUpb5XRVHE39+frq4uFEWhs7PzzEIoMwaDAUEQUFUVWZb5\\n7LPPaGhoAGDcuHE8/PDDQ/oe0NHRubq5Yr+U51q4Xk5sNht5eXnk5eXxxhtvkJiYyPe//31uu+22\\nK/L+OjqjgcGIY9rb29FUtV/xyUAQRCNoGna7fYT34urhSjqFjWZBpiiKPPDAAwiCQE7Ofuw1u3DU\\n+2AKS8bgH4sgGtFUN3JXHa6WYkTFjp/ZwOLFi/pMbkYDw3FLNASNQxEtIDuwhE3udU5omoar5QTO\\n5hMoDisoTjTRCKGzPeI+TytAQBQFBMFT1BDOuPk5XU4k0YI5ZiHO2mwE1UVX6RZ84pZ+YYLKkXRw\\nHAk3zJ7PThF9QJTortyJ6rSiqTKCaEA0B2IKneQ5L8+bYI2006XFYgFBQFPcfZ4TwDuJ9Ij8XKAK\\nCKLhjJufAKoTNBXF3oqrJntUXzM6Ojo6OjqjhaqqKp5++mk62hpAtZM8XmH5bJmoMM99iZYOgT1H\\nHBScsoGq0eWE4gqR6ZPUS7xyX3TzKPjkk09wON3ETZh3UXHfuYydMAeXo5uqk/v4+OOPByTwk2UZ\\nWZYRBPGCrniXwmC0oHF5569f+9rXiIqK4uOPP+bUqVLqKw5RU5rnFSqJgoAkifj7mpk/fx7f+ta3\\nhh37cznIysrCLctExCZhtgwuas0vIJTA0DG0NJYSEhHfS9xnbWvgWO4mbF1tqKqKqsgYjBZiEuYg\\niCJomuceouYpEBqNRmRZRlVVHA4HTqcDQRAJDI4kJGI8LfUl5KZvYOaSWwmLTuh3PuR22qk8mUtl\\nyX4sJgN33XXXkBxPLsZtt93G8ePHaWyqI3/vh0xf+HWMJssF27ucNvL3/gt7VzNj42K4+eabvc+l\\np6ezYcM/cLpkJKOFMRNmEDMuBYtPgMcVr6uNuooCGqoKKTh6nLKyJ3jwwQeZPdvjbGmz2dizZw9O\\nl4uu9iayP3uhz/uHRo4jbsIcwqMTe0XjCoLAmMRZFB/6nPT09GEJ/ARBwM/Pjy6bE3t3O34B/Z3n\\nAr6+vkiSiMPhRNNUZLcT3E4AujqaUGQ3ju42/Pz9mJw8hbvvvntAcW86Ojo6OjpfZTIzM3njjTfo\\n7Oz0xj/a7XZUVUUQBIxGI76+vt6FSidOnKCjo8MrLtIZON3d3WzduhWAhx566ILivnMxGo08+OCD\\nPPnkk5SVlbFr164BLTDpmccMJhXqfHoEQZdrTmQymXjooYfYsmUL27dvp6GhgbfffrvftgEBAaxe\\nvZqbbrpp1In7NE0jPT0dYFCu8z0sXbqU999/H7vdzg033NDrXn5GRob3ObfbUzfw8fEhOjr6jHv5\\nWU2F0Wj01k0URfFey5IkMW7cOKqrqzl9+jRPPPEE9913H2PGjOm3P7W1tbz99tsUFhbi4+PDww8/\\nPKLH3GAwcM899/D888+zb5/H3GT+/PkXFbjV1tayadMmAJYtW+aNGna73bz44ovk5ubicDgwmUxE\\nRkYSEBCAJEmoqorNZqO1tZX29nbS09M5deoUjz76qHdufeTIEdra2rBYLLzzzjt9FvmZTCYWL15M\\namoq8fG963+hoaHMnj2bvLw8du3axde//vUhH5eeKObGxkY0Tev3ePSI/HrOh54/4JlT9TgXVldX\\nY7FYWLJkCXfeeaen9qSjo/OV44r9Wl5JF79zf/hKS0v5xS9+wbZt23jiiSf6zVbX0fkyMVhxjKo4\\nUVUN1e1AMg9+8qapbjgTlf1V5Eo7hV3MDWwgXG5BptFoZN26dSQlJbF9+3bq6htwtuRjbzpyVmAq\\nCfgZJWLj47yRsKNRqDQct0RFVsE/AdqOorqs3sc1VcFWnY27vcJT3hONaJoCxgBPe0EETQFVBrSz\\nFuyC4Dl+Z5AFBUEMBckHERmTKOP6ggWVI+HgOFJumFlZWdjsdjQUbOXp9FliYG/F3V6BaA7AHD4F\\nU9gU7zhlpJ0uIyMjkUpKkbvqMfj2HYMIAvj6+WIwGHA6nZ5VaKobb6e7ahE0FaNBYELC6L5mdHR0\\ndHR0RgMNDQ38/ne/o7uzkaR4B3ff6CYusvdoYOJYjYUpKqfbZN7cpHKoyMyf3jby8/tcTBw7uMWJ\\nLR0CIA7IbeHLSGNjI0ePHkVDJGHy4kFtOy5pAdWn8iguKaG6uvqSblwGgwFJktA0GVVVeomSBooi\\nuxBgWLGjA2HmzJnMnDmT8vJyMjIyOHXqFDabDUmSCAgIYN68ed4ooRMnTnDkyBEcDgdms5nw8HBS\\nUlK+8AJXQUEBsqIRO37GoLeVZZmw2GTaTlfictq8j7c2VZK/90Nk2Y3ZEoBfYAStjaUEhMQSHDEO\\nAFVVUBU3iuIRdMqKfI6PX8+0SMHuUIiIm0JbUxkuZzf5OR9i8Q1iTMIsAkOiESUDbpedptoSGqtP\\nIAoqPmYjd955x2Vxwg4JCWH9+vX84Q9/oKW1mr1b/0bs+BmMSZiFr//ZaOJua8sZ58JjCJpMTHQE\\n69ev936H7N27lzff3IDDJZMweSnjkxcinucGGBgSTWBINBNTVlCSn05D9XH+8pe/8JOf/ISkpCSy\\nsrJobm4GRNqaaxBECf/ASCSjGUV20W1toqWxgtamSnz8gpix6Bu9HBCj4iZTkp9BWXk5p0+fJiIi\\np2GmqgAAIABJREFUYsjHZebMmWRkZlFXXsCkGasu2M5stmA2m3G53DhdThRZQdNUmuuKAIUFCxZy\\nxx136K59Ojo6Ojo6A2DXrl289tprtLe3Y7Va6ezs7GPC4nK56O7uRpIkgoODaWtr449//CM/+9nP\\n+nW1uhgtLS0AvdyzvkpkZ2cjyzLTpk1j6tSpA97OaDRy00038eyzz5KRkcF11113yXu+PfMYRVGG\\n3F9Zlnu91uVAkiRuvPFGrrvuOg4fPsyuXbtobGzEbrdjsVgIDw9nxYoVzJ07F7fbzcGDB+no6EBR\\nFHx8fEhMTGTcuHGXrX8Dob29nZqaGnx8fIYUPW0ymZgxYwa5ubmUlZV5Hbc/+OADPv30UwAmTZqE\\n3W6ntLSUhIQEb4Ss2+3G4XAgyzJOpxNBEHrpLDRN836OkZGR1NbWcuzYMX7+858zefJkrrnmGiIi\\nItA0jebmZrKzsykuLgY8grNHHnnksiyYmTt3Lvfccw9vvvkm+/bto6SkhOnTpzN58mTv+aZpGpWV\\nlRQUFFBRUeF1tfze977ndat75ZVX2L9/P263m/j4ePz9/XvtvyiKBAYGEhgYiNPppKqqivLycp56\\n6ikef/xx/Pz8+OSTT7BarbjdbpxOJwEBAYwZMwZJkrBarVRXV5OVlUVWVhYzZ87kgQce6PXdt2rV\\nKvLy8sjNzR2WwG/cuHEEBgbS1NRESUnJBaPQRVHEz88PVVVxuVw4nU5UVaW+vp7S0lIEQeCb3/wm\\nqampXtGgjo7OV5MrcrfwQu595/8YXYyhtu1pn52dzXe/+13ee+89fQWKzpeWoYhjbNW70ZRu7DV7\\nMCTfMmgxrtxVhyQJREZGjuSuXDUMx+VtKE5hF3MDGwhXQpDZ4+aWmprK8ePHvRHRdrsdHx8fb0T0\\nlClTKCws5IUXXrhghPQXKWIajluiy+VCs0QiCKInfhfPb5FX3CcYIWIBdFVCdw0ETgKx5ydZAEH1\\nCP28/zcgSJLn32igqWiqDH4JKO1HsVhMRERE0NDY9IUJKkfCwXHbtm3DdsNcuXIlhw4dQnbLIIpg\\n8PMcX98oEIygucHWiGY9ieLsxF6bi9zdhO/YZQhnisQj6XS5fPly9u3PpbulGHPEtH4Fj54iswmT\\n2YTslnG5XJ7CpqqidldgNAjcfdd3uemmm3Rhn46Ojo6OzkVQFIVnn32W7s4mZk6y88Pb3Rgvctcj\\nIkTjgVttbNisknPUh2ffNfHH/3ZiGWCdQ9Ng1yEJRNOgCjlfJjIzM5Fllai4qRjNg5tjGIxmosdN\\no7Eyn4yMDO65556LthcEgdDQULptDbQ31xAaOfiCT3tLDaIgXDHHvISEBO67774+j1utVrKzs8nM\\nzKSx6bRnYY/HxBtREAgNDWHlypWsXLlyWHFAw6GrqwtN0/DxC7504/Nwu92YLIEIooTscgDQ2dFE\\nfs5HyLKbiDFTmDjja1QW7QZBICTqrMuJKIioPZI+QTgzpzF6Im8FEdDQVBVFcRMYOhZRMqLITiLD\\nQ+iwdlJxIvtMxK9nnC2JAhaTyIwZs/mP//iPy3qtjh07ll/+8pe8+OKLnDpVSl3ZQapOHsDiE4hk\\nNCG7nDgdVgySiNEgMnXKNB544AHvZ9zW1sbf//53nC6ZSdNXEz9p3kXfz2A0M2XufyBKBuor8vnr\\nX//Kj370IzZu3IggGvDxCyVm/Cwix6ZgNJ29PmW3g6aaQuorjmDraudg1rvMXnobweGeIp8kGfH1\\nD8Fla8ZqtQ5L4Ld69Wp27cqmrvIoidOuQbroYkXBGzkG0NJYjuzsZFx8PI8++iiSNHhRr46Ojo6O\\nzleNmpoaXnvtNTo6Omhra6O7u/ui7WVZprKykvj4eIqKinjzzTdZt27dgN/v9OnTnDhxAkmSSEpK\\nGm73rzo0TSMjIwPwjHsGy4wZMwgLC6O5uZljx44xY8bFF9eEh4cjCAItLS0oijLo8ZGqqjQ3N3vn\\nVpcbg8HA/PnzmT9/fp/nqqureeedd9izZw8ul6vP84mJiaxevZqFCxcOy7FwqPREToeGhg7p/d1u\\nNxERERgMBq9T5vbt2/n0008RRZF7772Xa665hv/5n/9BVdVeNdaexV49wr6eaF6j0ehJfNI0r3At\\nNDSUuro6RFHEaDRSVFREUVFRn/6YTCaWLl3KjTfeeFnnw6tWrSIwMJA333yT9vZ2du3axe7du/H3\\n90eSJGw2Gw6HA1EUsVgspKWl8a1vfct7Lu/Zs4ecnBxcLhcJCQmXrGWazWYSExMpKyujsrKSjRs3\\nEhcXR2FhIb6+vkydOpU1a9YwZ86cXovo6urqyMzMZPfu3eTn5/Pkk0/yv//7v16hco8TotVq7fd9\\nB4rBYGDFihVs2rSJ9PT0Cwr8eug5LhaLBU3T+PTTT72C2W984xvD6ouOjs6Xg8su8HvyySe9/7Za\\nrbz88su0tbUBZ4V6UVFRpKSkMGnSJIKCgvD398flctHV1UV9fT0nTpygsLAQt9t9jsOOwLXXXsuK\\nFSu8meTt7e0UFRWRn59Pe3u7t13Pj11FRQUPPfQQb7zxhl4g1/lSMpSoWFXyxV6+FcV2GmfzCSwR\\nA7/ZrWkqrpZi/IwSy5cvH4lduOoYjsvbUJzCLuUGdimupCBTFEWmT5/eZ796IqQ3bNhwyQjptLQ0\\n0tLSvpDv7OG4JSqqAoIBOCvGdLWcOCvui00Fcwi0H/ds4NPjlqCB6joj7hNANJ6NakXgTJULBNET\\n4+oXC+3HsFo7mT9/PnfddRe7d+/uV1A5bdq0y34ch+PgOBJumNu2baOoqIi2diuawRchfCH4jz1z\\nDM/BHAbBk6G7Bu10Lu72CmyAb/wKz7hhBJ0uU1JSiImOoqyiFndHFabg8RdsKwBGowHjGSWCq70c\\nF04mJCbo4j4dHR0dHZ0BcOzYMerrqggLcvDgNy8u7uvBx8fMt9Ks1DdLVDeZ2XdMYuXcgbkhlNYI\\nVDcY8AsKYcGCgUXTftkoLS1FUTWixk4Z0vbRcVOoKz9CaWnpgNovXbqUDz78FzVlhwkO9zh5ne9m\\ncCHcLgeN1ScwG0WWLl06pP6OBMeOHeMvf/kLXV023IqK2SeQ8PB4JIMJRXHT3lxNQ2MLH3z4LzZv\\n3swDDzzQb0HsctPjJj6UQA5N07yeez1LdEvy05HdTsJjkpk08zoEQUCRPTGsBuPZaCFZdqGemUNJ\\nRvNZp0ahx8dPQBAlRFHCYDAjGUyc0RDyg/vvo7CwkPb2dlwuF76+vowdO5aVK1cSFXXWoe5yEhER\\nwS9+8QvKysrIyMhg3759uN3dKEo3AhAU4MuSJUv6jYLKysrC4XQRFj3xkuK+HgRBIHlmGm3NNTS3\\ntPLkk09ic7gIiZrApFnXYTb3dRc1GC3EJswhetxMTh75nOb6YvL3/ov5q+/C198jNhRFCc4UDodD\\nYmIiiYkJFJWc4tTRLJJnDSzeTHY7OXl0J0aDxKpVq3Rxn46Ojo6OzgDZvn073d3ddHZ2XlLcB56x\\nhCRJVFdXYzab2b9/P7fffvuAxV+ZmZmAJ4qzx33sq4TNZqOpqQmTycSsWbMGvb0kSSxYsIAtW7ZQ\\nWlp6SYHfmDFjSEhI4OTJk1RWVjJ+/HiAAd83rqmpwel0Mn78eBITEwfd35FA0zQ+/PBDr4sdeJzs\\n4uLiMBqNWK1W8vPzKSsro6ysjE2bNvHII49csfH8uf0cDj3zKVEU0TQNq9XKxo0bAbj//vtZsmQJ\\n0Dd2WdM0urq6UBTF6+rW8/meq5HoWRjjdHrmVG63m8mTJzN9+nQKCwu9AkV/f39SUlJYsmTJoN05\\nh8rcuXOZOXMmeXl5pKenU1xc3Ov7KDo6mlWrVrF8+fJe3xuaprFjxw6cTicxMTEDNiqRJIn4+HhO\\nnjzJzp07EQQBi8XCrbfeyo033tivQDM2NpY777yTtLQ0nn76aaqrq3n++ed59NFHMRgM3m16nBKH\\nw8qVK/n00085ePAgBQUFl7zOeygtLSUrKwtBEIYkINbR0flyctkFfrfccgsARUVF/Od//mcvcd8N\\nN9zAHXfcMSBr246ODj799FP+9re/0djYCMDWrVuJioripz/9aa+2PSKBl19+mcLCwl4ivwMHDrBp\\n06Zh2anq6IxGhiqOMQdE4gyfg9q4D2fjEczhUwZUHAFwd1QiKnZi4+OYNm3acLp/1TIclzcYnFOY\\nqqrExcWhyi6cTYU4zfEIoogkSphMJgxGAxf75EaDIPP8CGlF9EEITEazhANGwI3maMZtLaO0vIa6\\nDW9x8uRJ1q5de8VXaQ3LLVHjTMwunmhsTcPZfMJT3IpY4BH3cbYNwpl9U5Wz4j7JfCaat+cltV7R\\nVABIFhBEFFVm375ckpOT+a//+q/B93cEGaiD4/mCw5Fww6ysqqa6ugZVtEDkcvCN7Cvu60EQwT8e\\njAFodem42ytw+UVhDp8yok6XPcdjw4a36K7di2QOHND3s2JvxVGbg5/ZwJo1a3Rxn46Ojo6OzgDI\\nyMgA1UnqfBmzaWDbSJKE2SSxYo6NDZtNpOdKrJijXFLU5JZh4zYjiBaWL1/+hTgKjAZsNhuaBibz\\n0OK4TBY/0DRsNtsl28qy7IngcdhprCkmalwNZh9PNI0kGTCbTRiNpgvOZ+sqChBQmDZtBjExQ5u/\\nDZfDhw/z3PPPY7e7CAyNI3r8TPyCouGccX5M4gK6rY00VR2j/XQ5f/nLX7n//vtYtmzZFe2rJwap\\nCYfNOgQXPw2X01NQMposdHWcpu10NZJkZML0NO9n1BM9q56ZF6mK7BX3GYwWr8M2aD3rhXohCAKa\\nqiKIIi2t7ezfv5/HHntsSPs7kgiCwIQJE5gwYQJ333037e3tOJ1OLBYLwcHBXoe6c5Fl+YwjpsbY\\niYOLABNEkbGJsyk6/Dk2Wzfh0ZNImLEGUbz4bV9RlJg06z9QFTetTWWUHs9m+sKbAXA6uhEEYUSi\\n9u644w5+97vfU1t2GFEyMDFl+UUXSLqddvJz/oWjq4Vx8WNYs2bNsPugo6Ojo6PzVcBms7F3717s\\ndrtX3DMQzGYzVquVjo4OfH19ycrK8tZ2L0Ztba1X4Jeamjrkfl/N9IiWAgIChrwgoSd1biBzos7O\\nTkJDQ3E6nRQWFhISEuIdWxuNRsxmcy+XsnPRNI2SkhIMBgOpqamDTvMaCTRNY8OGDWRmZiIIAitW\\nrGDJkiV9HKNvvfVW8vPzSU9Pp76+nt/85jf8/Oc/Jzo6+or1tWcc3N7ePiS3RMCrifD392fXrl0o\\nisLMmTO94j44K+zrEQQ6HA6vuC8gIMCrb4AzC6nO+9x6HP40TePo0aPMnDmThx9+ePA7PMIYDAYW\\nLlzIwoUL6erqwmq1oigKvr6+hISE9FvvKCsro7y8HGDQaYxmsxl/f3+sVitms5nbb7+dlStXXlKo\\nGRUVxU9+8hN+9atfUVRURG5uLkuWLPE6943EfCgsLIwbb7yRTZs28Ze//IWHHnrokoYvJ0+e5Jln\\nnkGWZVasWNFncZiOjs5XlysS0VtaWso999yD1WpF0zRCQkJ45plnWLhw4YBfIygoiDvvvJNbbrmF\\nX//613z00UcAbNiwAbvdzq9+9StvW1EUufbaa0lNTeV3v/sdb731Vi+R30svvcTNN9/8hQxedHQu\\nF0MVxwiAOTQRe+tRVFcHrpYizOGXdl/QxScehuPyBgzIKazH8a7HEU2W3UAXSmc1+MYhCwoul8tT\\nnDSbMJnN/Qr9vmhB5rkR0t1OEMLmoVqi0QTxrK0DgF8Qgm8COBrobDnMnr37AFi3bt0VPc+G5ZYo\\nAA6PaFM0BSB31aE6O0HyBb+4s+16Ci6aG0/07hnBn2jEW+QTBI/7nXbOa/dwRogmWUKwOx1s3779\\nskXwDpYLOTheiJFww3TUHUDQFAwxK3Cbg0BTLyzw68EcAhHz0Zr24mwuxBQ2ecSdLtPS0igpKfGc\\n+2WfYxmzpN/4dPAIcd0dlThqc/AxaixevOgre4NMR0dHR0dnMLS1tZGffwSD5GTZ7IE58AEIeET9\\ns5K6+GinyqlqifJagcS4C98EdrrghfeNnKq2EBwWw7XXXjsSu3BVYjAYQABVHfgxP5ee7S5UhOph\\n//79vPPOO7S2tqGqGprq4mT+VibP+zqSZESWZWRFRhTsWCwWzGZLr+3bTldTejwbs1H6wsRCVVVV\\n/PWFF7DZnESNm0ls4nxAOCNcE8+o1zzO5n6B0SSkRNFQmU9taS6vvf46ERERTJ48GThbvC0pKaGr\\nqwtJkggICGD27NnMnj37ksdzIEydOpXS0nLqK48REjG4YoIgCDTXlYCmEho5jppyj6N3xJgpGIxn\\nM7DNFo9As7OtHhI8Aj8AyWDyivvOFrT6LnmydTajKC4sPgGomua5L1Jf/4UJOPvDbDYPyG2kqKiI\\n1rY2LH4hgz7eAFFjp1Ccn4GqOBiXvAhJlFBVpf+FYucgiiKJKam0ZVbQVFuC09GF096Jw9ZOeGjQ\\niBRRk5KSeOCBtbz00kvUnDpA2+kq4ibMJipucq/IXqe9i9ryfGrLj6DKdqKjwnnkkUeumNOIjo6O\\njo7O1c7+/fvp7OzE4XAMynVKFEVMJhPt7e0EBQWxdetWvvGNb1y0hlpbW8tTTz2F3W5n3rx5TJw4\\ncSR24aqjZ9w9HJevnm0vNoaXZZl//vOfpKenI8syqqp6U+2mTp3qjWx1u91IkoSvr28vQZqmaRQU\\nFNDc3ExQUFAvgdmVZOvWrWRmZmIwGLjvvvu88xtBEBBFsZeYbd68eaSkpPDaa69RUlLCn/70J/7v\\n//7POzZsbGwkKyuL+vp6HA4HJpOJiIgIli5dSkJCwrD7GhoaSlRUFI2NjRw5cmRAZkXn4nA4yM/P\\nR1VVkpOTefbZZ4G+Uc6hoaHU19fT1taGj4+PN67Yz8+vl2PfhYRq7e3tSJJEcnIy5eXl7Nix4wsT\\ncF4If39//P37Ooufz969e3G73RcUAF6KoKAgOjo6EASB6667DofDgcvl6neB1bmEhYXxjW98gzff\\nfJOMjAyWLFnC/v37AUbM6fKWW26hra2N3bt38+c//5l58+axevVqkpOTvZ+Vpmm9nOB7BKF33XXX\\niPRBR0fny8FlF/i5XC5+9KMf0dHRAUBgYCD/+Mc/hjzY8/X15cknn8RgMPD++++jaRrvv/8+c+bM\\n6ZM9bjAYePzxx2lra2Pz5s3eL8iKigoOHz7MnDlzhrdzOjqjiOGIY8wWH1xBk1CaD2Ov2YNg8NHF\\nJwNkWC5vcEmnsPMd71TJF0NQJO7OaoTWI2AOBVMQmiojywqKYkeWPatgzh2/jwZB5o4dO8jZt59u\\np4YWuQzVGOSJWRIN58TQaqCpaKqMYolFiPSlu2k3e3P2kZSUxJo1a1BVlWPHjnmd4RwOBxaLxesM\\nl5KSMiL7t3z5cvbtz6W7pRhzxLRBXVeiIEB3OaBgCp2Eq/WkR58XOKm34MwYAM52sDeCKdgjSEME\\nof/VYH2KM/YGACS/CBRbM3X1DRw/fnzAorrRxHDdMLFE4in7ifiEJiB329BU2XN+XQq/sSD5ojo7\\ncXfWjLjTpSiKPPDAAwiCQE7Ofuw1u3DU+2AKS8bgH4sgGtFUN3JXHa6WYkTFjp/ZwOLFi1i7du2o\\nEGzq6Ojo6OiMdhobG0GTGT9GJWCQC6yNBiOBAb5MGutiT4EvL//LyLevlZkxSUU652fY7oS9+RLb\\n90k0tPrgGxDB+vXrCQ4erLvZl4fAwEAEAbqtzQSFDn4c121tRhCEi8Z5ff7557zz7rs4XQo+/mEk\\nTVpKXXk+tq5WSvI+JWnOjZh9AlAUN6qqYLfbUVUVHx9fNE2lsaaYE3lbMBlgzZq0IUVnjQSffPIJ\\n3d12QqKTiDkj7hMlI5LBiHjOHEFDQ1VkFMVN9LhZuF12Tlcf5d///jff//732bJlC3v37sVmc6Co\\nKj11HkEQyM7eTWhoCCtXruTaa68dljBq1apVbNmyhcaaE0yavgqjeeDu1m5XN+3NlSiym5j4FHIz\\n3kQDosf1jiIKj51MRfFuWhtP4bR39nH2O8tZ8eO5E92GygIAYsaloKoqp2uOkZGRwZ133jmUXf5C\\naWlpQVUhNCx2SMU4VRPw8Q/F7bJhNJqQDAZkt4yqyL1EdP1h9gkgNCqR1oZS6soLsHd3YJREli1b\\nNmLupAsXLsTX15eXXnqJDutpig99zsmCTPyDIpAkI26Xg862BkQRjAaRSUkT+dGPfkRISMiIvL+O\\njo6Ojs5XgYaGBmRZ9kZ2DgYfHx9sNhuqqlJfX8/rr7/O1772NeLi4nq1a2pqIjMzk507d2K325k4\\ncSI/+MEPRpWY6Ericb0W6OzspKOjY9CuY+ARS4LHBbA/3G43zz33HEePHgVg1qxZTJgwgX//+99U\\nVlYiSRKzZs1CVVVcLheKotDV1YWvry9GoxG3201+fj6nTp3CYrGwbt26L2QBhdPp5OOPP0bTNO68\\n804mT56MKIqYzWZMJlOve+CK4jG1EEWR++67j2effZba2lqys7MZM2YMW7Zs4fjx4/2+z44dO0hM\\nTCQtLY3FixcP+dzsiUV99913SU9PH7TALy8vj+7ubsLCwlAUhZaWFkJDQ/vUbpYsWUJRURFVVVVE\\nRESgaRoGg2FAjoGaplFVVYXBYODmm2/mjTfeoKGhgRMnTjB16tRB9Xc04JkTqUM+P3tEoiaTCbPZ\\njNPpxO12o6rqJWssixcv5r333uPUqVOUl5ezc+dOoK8gc6iIosi9995LSEgImzdvJjc3l9zcXCIj\\nI4mIiEAQBFpaWqivr/dus3r1au68884hu4Pq6Oh8ObnsAr+NGzdSWloKeH4M169fPyIrOR5//HFy\\ncnKora1F0zT++Mc/cv311/erwv7lL39JZmZmL4es3NxcXeCn86ViOOIYAfAJHUd3awGi5sali08G\\nzLBc3uCiTmHnOt7Z3QKWuOVn3BkFbFVZuNsr0OozIWIBgl8caB4ni54VPr5+vjBKBJk9EdJdNhda\\n2Hw0UxCCaALx/IGpAILoEWWpCpoQDCGz6G45wNatW71uhvUNjTjdCopytsgjlZSyb38usTHRpKWl\\nkZaWNqxzMyUlhZjoKMoqanF3VGEKHj/gbSVHA4LcDZqK5BeNWp/necL3POeGgEToqgbrSfA/s6qs\\n1zERzv51/gItTQXrKQTAFJqE4hOGsyWfXbt2XZUCv+G6YcpnTGNEgwWjyYTkcCDLqif2uM95dh6C\\nCIET0doKcDYeuSxOl0ajkXXr1pGUlOR143S25GNvOnL2HJYE/IwSsfFx3pjjr/L3q46Ojo6OzmCw\\n2+2gafiYLx6/ciHMJjMBfp6bwVWNPjz7rkJYkJvEMSomI3Tb4US5hNNtAtFCZMwYHn74YWJjYwf1\\nPt3d3bS1teFyufDx8SE0NBSz2XzpDUcp8+bN4/CRfGrL84kdP/gxaG3ZEQySyLx58/p9fs+ePbzz\\nzrs4XDITU1YRP2kegiAQPXYyh3e/j62zmcNZrxMcMZ7o+Bn4BoSjqgoOm5Xashoaq4/jtHVgMkms\\nXLGCO+644wspPra1tXEwLw9ZVomdMA9RkDCaLP0uIhIQkCTjGWdCF7EJczldU8jhI0coffxxum0O\\nZEUlOHwsMfHTMFsC0DSV7s5W6iryaWhs4cMPP+LAgQM88sgjhIcPfp4KnqiiGTNmcDDvCCeP7WTK\\nnOsGdOw0TaW8cPeZxTYC3V2tuJye+3E+/mG92pp9AgiNnEBr4ykaKo/8f/bOPLyK8tD/n5k5+8ke\\nEkhCEpawBsISdglLgkpRi4Ja663W+ihcaxfRem1vfz597q211KdqrW29ar1trVVQiuJtFYGEPRC2\\nEBJ2ErLve86Ss8zM74/DORLITgKhzud5fATOvDPvOzNnzrzv+32/X2JGzbgUK+t3quj6OF6Pi9qK\\nUwiCQNyY6aCqVJWcYP/+/TfsOl8Lvn68itjP/pDH40GUdIiihOz1YDEYkb1eZK/v37tz8QOIjp9C\\nQ/UFqstO0+5oxqgXWbp0ab/q0hVTp07llVdeIScnh8zMTC5eLMbZUomK74pbzDpSU1NJT09n0qRJ\\nN9011NDQ0NDQuNE4nU5UVQ1EffYFQRCwWCyBsrt27WLPnj2MGTOG6OhoBEGgsbGRs2fPBsrMmjWL\\nxx9/vE/9GVVVaWpqwmazIcsyQUFBRERE3LQCFoPBQEpKCnl5eezdu5c777yzT+VtNhuHDx8G6FRA\\npigKb7/9Nvn5+QQFBfHUU08F5tjj4uJ44403uHjxIiUlJSQmJjJ27FgkScLlctHc3ExtbS3FxcWX\\nFkCZWbNmDdOmTbv2hveDgwcPYrfbGTVqFNOnT8dgMFwyqrj6nU+SJMxmM0ajEVEUWb58OW+++SYb\\nN25EluVALO28efOYNm0aZrMZl8vF2bNn2bt3L0VFRbz11lucPHmS73znO/12OF+4cCGbNm3i1KlT\\nHDt2rNe6gqamJrZt24bb7cbpdAaiemNiYq4a758/fz4ffvghTU1NNDY2YjKZenSc81NbW4vL5SI+\\nPp5p06axZMkStmzZQnZ29k0p8HO5XJ3GEPcGVVWRZd8kkSRJiKKIXq8PXIOu7jU/JpOJuXPnsnv3\\nbjZt2kRLSwuxsbFMmDCh3+25ElEUWb16NUuXLmXXrl3s2rWL2tpaamtrA9tYrVbS0tJYunRpr5zg\\nNTQ0vnoMusDvb3/7W8A6NjQ0lPvuu29A9ms0GvnWt77F+vXrAWhsbOTzzz9n5cqVV20bGhrKqlWr\\nAlG9AEeOHBmQemhoDBWuVRwjSnokUSQqMorQ0NABF59cL9e16821uLypqtKtU9iOHTt8zn0eAeuY\\n5UjmiMBnlvg0HOAT+dXu90W/hiQhmKNRVRW3y4va0ozScmFICDILCgooKS1DlcyollgEydhzdKoo\\nIQhGVEssSpOJwsJCyisq8XhBkSwYIidgCIpBkPSosgevrQp7w1kKL5ZT+e57nD9/njVr1vSQYLuq\\nAAAgAElEQVTbcUAURW699Vbeffc97BXZSMaQDtegK2RnI56aQ0goIEp4W8tQlUsW/cIVdTHHIOit\\nqB47OCrAEvvleempD2MvA9mBaAz2CXElI87a4x06AzcT1+qGKXtdoIKgN/uix41GZNmJqrgRhF7c\\nb+YR0JiH11ZFSFDQoDhd+u+pjIwMTp48GXgeOp1OzGZz4HmYnJx8Uz4PNTQ0NDQ0biRGoxEEAZe7\\n/4IQjyxhMVuYPXchxcXF1NdV03BaBr/8RNAzftJEMjIySE1N7fUkgaIonD59mszMTI7n5qIo/vcd\\nAYPRzPz588nIyCAhoe+xnDeaefPmsWHDBhqaKmltqiYkvPdxnva2BprqSwkNtrBw4cKrPnc4HLz7\\n7ru43F7Gp2QQn/TlhJfZGsbsJd/ifP4uqstO0VJfQnNdceBzVVFQVRmz2UhcbDQrVqy4oTFFPocT\\nF2HRozEYg9AbzL2qi05nAFMQQeGx1FeeQVEEhsWOI2nKYoJCOgr3hsWMJWHcLJrqSjl7fAfFJWWs\\nX7+e559/vl9OIgCrVq3i9OnTVJcWoNebSJq6uNs+r6LInMndRmP1BSxmI7KiUFiwB1X1TzJf3eaY\\nUdNprLlARdERrCHRhEdfHqfV+TlSFJmzuf9E9rqJiEogONS3YE4QJOx2O263+6YTzprNZgQEvJ72\\nfpVXVRXZ60YQRHR6AwaDHpdLwuuV8bjbfYLSbjqZZovPKa+lsQKrxcr8+fMHJJ73SoxGI4sWLSIt\\nLS0QReYXPMfExPT7XtXQ0NDQ0NDwja8KgnBNjmWSJBEcHMzixYs5dOgQRUVFFBUVBbbR6XTMnTuX\\n9PR0xowZ0+tjuVwuDh48SGZmJqWlpR0+i4yMZOnSpSxatKhbZ++hSkZGBnl5eWRlZfG1r32tT2LF\\nPXv24PV6mTp1aqdintzcXA4dOoTZbOa5554jPj4+8Flqaio/+clP+Oijjzh9+jQlJSUUFRWhqmpA\\n6KmqKlarlcmTJ3Pvvfcyfvz4AWlzf8jKykJRFBYuXIher+9RcAW+8fSgoCBSUlLQ6/U0NTURGhrK\\n3XffzbJly66KfU1NTWX16tVkZ2fzwQcfsH//frxeL2vXru3XeLvVamXlypVs2rSJN954g+9973s9\\nCiQbGxt5+eWXaW5uxmQy4fV6A3Gvnd0bZrOZhQsXsnXrVk6ePElKSkqvxhocDgf5+fno9frAXO24\\nceMAnxPezYj/nuiPSNl/34PvuoGv7+HxeAJukP5nZFcMHz4cWZY5cuQIZrOZlStXDsoYQkREBKtW\\nreLrX/86JSUl2Gy2QL0TEhJ6LfDU0ND4ajKoAj//qgH/C2VaWtqATlinp6ezfv36wMN1z549nQr8\\nwKeyf++99wDfQ/5yi1MNjX8FBioqdsSIEfzsZz8bMPGJ33Ft+/bt18V17XpzLS5vnpaSLp3C/I53\\nTpcX08hFVwnLBFHCkrAYt3U4rvpTKK421KYT0ASC6ou59QoQHGQeEm5gu3fvxuWWUcNGI0imnsVW\\nfgQRQTSiChKyAk6PiCV+YacR0jrLMIxRyXhaSrFXZLM/+yAATzzxRL/bvWzZMs6dO0f2gRzsRVsx\\nxS3odXx14tjxlJaW46jIBunS5JJ6xfdTECB0AtQfg8ZjoLOC2d+R76bj4GqCusM+Iduwyb7fWVEP\\nqtrBrfZm4lrdMFVnLaAgGnxRBgajEa/XZ+Wvyq4uHCMvR0RFQUJl/vy5g+p0KYoiU6dOvSmdFjU0\\nNDQ0NIYqUVFRgERJlYijHSymvpWXZThf4nOSvu2220hKSuLChQs0NjYGxCdxcXF9duwrKyvjjTfe\\noLKiFJR2RMHFiAgFo94X+VvbKLF75+fs3pVF8pQU1q5de1NNahmNRtLS0vjnZ59z6ujnzFr8IDp9\\nz8Iq2evh5OHP0EsiCxYs6DSCJzs7G7vdSWhkfAdxnx+90czkWV9jXMoSKosLqC47ictpQ5G9eDzt\\nqF6F1Jkz+eEPf3jDHUHOnTuHV1aIHDEOnc7Qp0kCVVVpa6pEpzMyLHYi0+Z9HaGL/o0gCEREJzJr\\nyb+Ru+9DKqtqeOONN/jxj3/cr3qPHj2aJ554gt/9/veUFx6hpbGS+KRZRMUmIV72bi3LXmorzlJ2\\n/gj21lqCrCbWrFnD3/72N2rqqpC9bkRJj8ftwGjqOAkXNiyB2NEzKTufw/njnzN26m0Mi5uIKHZ+\\njjwuB+eOf0ZzfSkGo4VJqV8LfCbp9IAvlu5mE/jFxcUhigINNcXIshfpqpji7nE527C31iGKAuag\\ncEDAag2ira0NRZHxuJxIOsMlN7+OqKgoiveSMFZhwoRxPProo70+dlNTE1VVVTgcDvR6PREREYwc\\nObLb+1wQBGJjY/v8TNXQ0NDQ0NDommHDhqHT6TAajdjt9j6X1+v16HQ6QkNDefTRR3nwwQc5d+4c\\nbW1tgE98kpSU1GWUbFfs3buX999/PzBubTabiYyMRBAEmpubaWhoYNOmTXz88ccsX76c1atX33Rz\\nRNHR0dTW1rJx40YefPDBXpUrLS1ly5YtQNcxoFlZWQCsXLmyg7jPz9ixY/nxj39MRUUFWVlZ5Ofn\\nY7fbURSF+vp6RFHkO9/5DkuWLOlf4wYIl8vFxYsX0ev1zJgxo1fiPj+CIHDx4kXa29sJDg7mscce\\n63SBmB+j0cjSpUtJSEjgpZdeIicnh9GjR7N8+fJ+1f2OO+6grq6O3bt389prr7FgwQIyMjIYPXp0\\nh+2am5vZvXs3O3bsoK2tjdjYWO68807efvtt9u/fj6IotLS0dHqMVatWcebMGU6dOsWJEyeYM2dO\\nt9+zpqYmjh07BkBKSgrLli0LtB3oV0z3UCA2NhZJkmhtbe3Xwh+HwxHYD/gEyRaLBbvdTnt7O7Is\\nYzKZkCTpqvtPluWAGFBVVVauXMncuXN7dVxVVamoqOgwfhQbG0t4eHi35XQ6HWPHju1zOzU0NL7a\\nDKrA7/Tp0x3+HhcXN6D7j42NDTyAVVXl1KlTXW6bkpLS4e9d/YhqaNysDGRU7ECJTzweD2+++abP\\nhc7lvS6ua9eba3F5a684gNWo69QprKCggKrqGhTJcimW92oEQcA4bBKGyIm++OTG8yjuNlTZjexs\\nRCcJ3Hfvau66664b3iEuKiryJcyahvccl3oltkLwtKFKFoQRizCEde1sIggihrBRSMYQ7EVbOXAg\\nh/Hjx3Prrbf2q96iKLJ27VoEQeDAgRycfYivfuyxx3j77bd94kBHEyCCowaMHWOpCBmP0F6H2loI\\nNXshag5Y44HLzpM/aU5VwF7uE/epHvRhozBETrz0kU+kazab+9XWG821umGqrUWgyuiCRwKXIp4u\\nTRT7RH5uUARf/LMgEsg9VhWfw6LXiQCEh4f12unyX9WZVENDQ0ND42YkKiqKCRMncfbUEQ6c8JAx\\nR+5T+bzzIo1teqJjYklKSkIUxWt2Nzh//jyvvPwyTnsd4cEulszysnimTNhl4/SVdQJZhz3sP+7g\\nZP5hXnihjueee47IyMiudzzE+PrXv05eXh6lZZUc27uRaQtWYzRZu9ze43aSd+BjHK3VxMYM5557\\n7rlqG1VVycrKwisrjBw7o9vj6w1mEsfPJnH87MC/tTZVc3jnu5w/fx6v13vDBX719fWgquhN1j5H\\nsNaVn0SRvQSHx5IwIa1Lcd/l6A0mpi1YzcFtf+TUqdMUFRUxZsyYftU9NTWVHz3zDL/73e9oa63m\\n1OFP0RkshA2LD8QIN9WVonjb0elEooaF88Mf/pCkpCSio6NZv349tbVOFNlLbdlJRo6be5XALGHi\\nQhqqL2BrqeF83udUFB1iROI0ImPGozeYkWUvjtZaakrzaag6h6LIGE1Wpt9yL5agMMDXJ5C9bvQG\\n8absE40aNYpRoxI5d76I2oqzxCQk91zoMuoqTqPIXsKHJWIw+vpBoigSHBzsi8BTZJ87oFe4JB78\\ncjxVkT04bI2oqISGhPDss8/26BpxuTNpbm4uXq8c6LaKgkBCQjzp6enMnz//prweGhoaGhoaNyN+\\nd22z2YwkSYG4yt5itVoDbmLCpXHma41z/fTTT9m8eTPgE6NlZGQwe/bswPyPf3w1MzOTvLw8/vnP\\nf1JXV8fatWtv+Dt8b/GL6H7961+zbds2AL7xjW90W/8LFy7wm9/8BpfLxZw5c5g+ffpV21RXV3Py\\n5En0ej1paWnd1iEuLo6HHnqow799/PHHbNmyhVOnTt1wgZ/fZXvYsGFYLJY+j5lv27YNvV7PihUr\\nen1Pjh07lscff5zf/e53fPHFF9x66639uqcEQeCRRx4hJCSE//u//2Pfvn3s27ePxMREYmJi0Ol0\\ntLS0cPLkyYDz3IQJE/j+979PUJBvwc0HH3yAzWajqKiI0tJS4uPjOwjMzGYzP/jBD/j+97+PzWZj\\n7969REVFkZCQQGRkJJIk4fF4qKuro7S0lObmZvR6PVOmTOHJJ58MOP75hb2dLaC7GVi0aBGffvop\\nra2teL3ePkcr22w2VFXt8H3x92scDgcejwePx4MkSej1+kACpV/cV19fj6qqzJgxg7vvvrvH43Xn\\nTCoIAikpKWRkZGjzRBoaGgPKoAr8/DGB/rz0K61yrxX/ShS/Er2mpqbLbcPCwjr8WGoCP41/NQYz\\nKrY/KIrCm2++SfaBHJweAdPIRdfNde16cy0ub/Pnz+vUKWzPnj24PDKGyAk9XktBENAHx6EP/lJE\\n3V57AqUhj/Ly8iFxHv2W4IKujy4KqgotZ32CrMgZqLreuZlI5ghMcfNxlu9l+/bt1+ReqNfreeKJ\\nJxg/fjzbt2/vU3y1Xxy4d+8+HE4naus5hJAkEP0TKpcEZhEzwFEFXhvU7gddEIQk+WJjBT0obnDW\\nILRdANmBAOjDRmGJTwv8tl0u0r0ZuXY3TAeqwJdxyPgMEi1WCzqdDpfLhSzLPiGkellhwXclBE89\\nkiSRmprao8D4X92ZVENDQ0ND42YlPT2ds2cK2HGoncWpMrpejt2rKmw7qAPBRHp6+oD8bldVVfHq\\nq6/gtNcye3I7a1Z50HcyAhMbpfKtFV7uTPPy6t9USqov8sorr/DTn/70phmUDwoK4plnnuGll16i\\nsqqGA1+8zYiEycSNmR6ITgVfJG95YS5VpQUIqpfh0cN45plnCAsLu2qflZWVlJdXIOnNRMWO63Od\\nQsJHEBw2AputjlOnTjFjRvciwcHGZrOhAqIgdufTfRWqqlJdkoeAwIjEaSBe6kP0Yi9Gk5XYUSlU\\nXjxKVlZWvwV+AMnJybz88stkZ2eTmZlJRUUlzTXnfTURQCcIJCaNZtmyZcybNy/gHDFq1Ch++tOf\\n8sILL1BTU0t1aR5R8clIkv5SP+ZSdJgiMzx+Ko62ehTZi9PWyMWTO7l4cudVdREEgaiYsUyYvgyz\\n9ct7p6GmGFCJioq6aRYMXo4gCGRkZFB0sZjS84cZHjcBsZcufh6Xk9ryU5f6Qh2fX36Rn9vtxu32\\n9Ylk72XO8oLvGjbVXMCgk1i+fLkvIaIbmpqaeO211ygquojHq6CoEBIRi15vQpG9tLXUcqGwmOKS\\nP/PRRx+xZs2aG/4d1NDQ0NDQ+CoQEhLCnDlz2LFjB1arldbW1l6XFUXfIgmTycTSpUsHpD67d+9m\\n8+bNCILAww8/3Ol+RVEkJSWFlJQUTp06xeuvv86hQ4cIDg6+SrA2lJk0aRJr167lzTffZNu2bRw7\\ndoz09HTS0tICTmxXihkBpk6dyuOPP96pm92RI0cAmDt3biBytC8sXryYLVu2cPTo0X6JpQYSQRDw\\neDwoitLn+NHKykrOnDmD2WwmLS2tT/GtM2fODLgrHj9+nNTUq53he4MgCKxevZpbbrmFnTt3snfv\\nXkpKSigpKemwzcyZM8nIyGDSpEmBcYXly5djNpv5wx/+gNvtZtu2bdx///3odLqAwMzj8aDX65k6\\ndSp5eXno9XpaWlrIzc3t0F5RFNHpdISHh7NkyRJWr17doe9z/PhxgJvWJTsqKorp06dz8OBB6uvr\\nGTFiRK/L2u12PB4PgiBcJW42GAxIkoTb7Q7ME125jSzL5ObmYjQaWbVqVY8Ok/n5+fzP//xPQFRp\\ntVoZNWoUBoMBh8PBhQsXyMvLIy8vj/j4eH74wx8ybFjfzXk0NDQ0rmRQf839wjv/Q3CgM98dDgft\\n7e2B/bvd7i639Wert7e3D2gdNDSGCoMVFdtfduzY4XPu8whYxyzv1tVuoF3XrjfX4vLWlVNYbW0t\\nsqxiCIrpV510QbE4a48HhNY3GlmWffNQau87XwA4q1A99kvRtX07F/rQRNqrjlBZ5Vvpdi2OlH6n\\nxoyMjD7FV/vFgePGjeOPf/wj7R4bqq0ELCO/3Lng+w4IUXNQq/eA4kX12qHxBHACvxpNwPd7KhqD\\nMQ6bjCFy4mUutgMv0r3eXKsbpskooShGPI3nMEVPCQhjBcBoNGAwGvB6vLjdbhRF9mvxEEUJvV5H\\ne3UxFrOBxYsXd3u8r4IzqYaGhoaGxs1KamoqEZHDqapz8udPVR5d6aEnrZ6qwt8zdZwpNmCyhvTo\\njNBbNmzYgKOtnunj2/n3ez1IPdQjLBj+49tuXngHKsqK+OKLLzp1thuqREdH8/zzz/PWW2+RX1BA\\nTekJKi4ex2C0IukMyF43bpcdnSSi14lMmjiZtWvXEhHR+fteS0sLqqpiCYnoEAXbF4JChlFvq+vT\\nxOZgIYoiqCrtjr4tNm1tLMdpb8JgshI6LBEIrCnpFXFjplN64TAHDx7kwQcfvCbRqMViYdmyZWRk\\nZFBYWEh9fX3AwXr48OGMGjWq00mQ+Ph4XnnlFZ566ikam1uprzhF1MjJHXSKoigQOyqZyqLDeDwu\\nRk1aRFNtMfaWGtxuB6qiIEk6LMERhEbEMixmzFVRv+VFuegkccAmpAcbVb3Uz7vsnM2bN4/NmzdT\\nU1fHySOfkTz7jh7vf6/HRd6BzahyO5Ik0tpYSbujDZPlS6tQQRAwGo0YjUa8Xi9erzdwfFEUUBUv\\njTWFmIyGLuPh/NTV1fHiiy9SU1uPqDOTMGEGcaNTOlwPRZGprThHeeExGpsqee2113qMUtPQ0NDQ\\n0NAYGJYtW8b+/fsJCQnB7Xb3ak5UEAQiIiKwWq1Mnz69T6KarnA4HPztb38D6FLcdyWTJ0/mqaee\\n4qWXXiIzM5O0tDRGjRp1zXW5XvhjVd955x3q6+v58MMP+fvf/05oaCg6nY62trZATLEkSaSnp/ON\\nb3yjS+Gd36hm5MiRnX7eE/5rarfbcTgchIT0zjxhMAgKCkJRlEBd+hK/umvXLsB3fvvqDC2KIunp\\n6WzYsIFdu3b1W+DnZ8SIEXzzm98MROq2tbUhyzJWq5UxY8Z02b9dvHgxoaGhrF+/npycHBYuXMjw\\n4cM7bCNJEsuWLeP8+fMMGzaMpUuXsn//furr67HZbIDP6S8+Pp5x48Yxa9asDveOw+EgOzs7cLyb\\nAUVREAShQ59o+fLl5Obm0tDQgNFo7DHmFsDpdFJeXo7BYEAQBHbv3n3VOZAkKSBi9ng8PjOISwZV\\noihy9OhRbDYbiYmJPaY55OTk8Oabb6IoCmPGjGHZsmUdnEkBWltb2bNnD1lZWZSVlfHzn/+cH//4\\nx8TE9G/OV0NDQ8PPoAr8rvwhO3PmzIDu/8oI4J4e8pdnzt8sK+E1NHrLYEXF9gdFUdi+fTtOlxfT\\nyEW9qgcMrOva9eZaXN46o729HVQVoY/xTX4EUQ+qGugw3mh87VTAWQOmPqxSaSvy/T94zKVY1d4j\\nCCKGyAm4GvLYs2fPNUdOA/2KrxZFkdtuuw1VVfnTn/+Cs+k4oikUDGEBgZnBYEAKC8XWko/c3ooQ\\nNhk8NnDVo3rsCCggigh6K6IpAtHYsTM+GCLdgaY3cbbX4oa5YP4CiouLuVhS2anIWQD0eh36Tqxz\\n3M0Xe3X+vkrOpBoaGhoaGjcjOp2O733ve/zyly+yL68Blwe+tcJDaBdhAo522JSpI+uwEVEXyhNP\\nfLdfzghXUldXR17ecSSxnUdX9izu82M1w0MrvLz0rpNdu3Zx11133VCXhb4SGhrKs88+S3l5OTt3\\n7mT//v0+F2uPC1GA0GArCxbMJyMjg4SEhG735V9N319xH3DJ/cznhnCjiY6OpqKyitqyk4xISOl1\\nOYetEYCQyATfxIffBbyXPoCWoHAsQZG43S00NDQMyFiYIAgkJSWRlJTU6zJWq5Vvf/vbvPXW25Sd\\ny8ZiDWFYzDgEAQRRRK/zOfrFJCZTXpiLraWOqLhJeD3tuN1OJEkPAjhsTThsTVSXnUJvMBM3OoX4\\nsam43Q4aqosIshoHTKQ70KiqSmFhIVlZWeTn52O321FVFavVyuTJk1myZAkOh4OUlBQyMzOpKTuF\\nq93OuJSlhIZfPcmuqirN9WWczcuk3dbAiOG+CK/DR45xPn8nU+bc1angUqfTdXiuqKrKmWO7EAWV\\nlJSpV000Xo7D4eDll1+muqYea+gIpi9Yjd549SSrKEqMiJ/E8JETuXg6m+Iz+3nnnXcIDw8fsv1V\\nDQ0NDQ2NfxWSkpL4xje+wYYNG3zvC83NAYepzpAkifDwcEJCQkhISODRRx8dkHpkZ2fjdruZMGFC\\nnxZgTJgwgYyMDLZt20ZWVtaA1ed6MWnSJH71q19RUFBAVlYWeXl5NDY2Bj6PjIxk6dKlLFq0qEfB\\nndfrS6q5lj6hv+yN7hPp9XpMJhMul4u9e/dy55139rpsZWUlqqoyadIkgB6d1a5kxowZbNiwgcrK\\nyj6V6w6j0djn+Orp06ezcOFCDh8+zFtvvcVTTz1FdHR0QGCm0+mYPXs2H374IQ0NDQQHBzN79mx2\\n7txJe3s7oigiy3LAOXDHjh3Ex8eTkZHBwoULycrKwu12M3HiROLi4nqu0A3A6/Vy5MgRdu7cSWlp\\nKU6nE51OR1hYGHPnzmXOnDlUVlYyfvx48vJ8CWUOh4Po6OhOzRMURaG5uZnq6moMBgOzZ8/mzJkz\\nFBUVcfDgQebNm3dVGUEQrnKRtNvtfPrpp4AvGaK7e+zcuXO89dZbKIrCihUruPfeezud8wkJCeHO\\nO+8kPT2d3/72t5w5c4aXX36Zn/3sZwFXTw0NDY3+MKgjxVFRUYE/q6rK4cOHaWxs7FLB3lc+//zz\\nLo93Jc3NzQElOHBDVypoaAwWgxEV2x8KCgqoqq5BkSzoQ7ufuLmSgXRdu9701+WtM0wmEwgCqty/\\njpeqeEAQ+ryiabAYNmwYLa0XofUChE3qvVjP0waoYPCJAvsqjhpKToa33nor58+f94nDavZ2+v00\\nDpuEozwHmk+BZEKV2y/Zc0iAgOJxoLSU4G0pueTkNwnJMnzARboDSW/jbENDggkODkaSJHSSAE47\\nzpKdOPVBGIf1zg1z586dgypy/io5k2poaGhoaNysjBkzhnXrnub13/6Ww6caOHamnVmTZRbPlImO\\nUBAEaGwR2Hdc4sAJHW6vAckQypo1a/s8QN8VO3fuBKWdOVNkQvqoF5w0WiFmmIeqxnpyc3OZPXv2\\ngNTpejJy5EgeeughvvnNb9La2kp7eztGo5GQkJBeOxpbLBYQBNwuR7/r4Wq3IyAMiGjzWhk7dizH\\njuXS2lSJvbUOa0jX41eXI3vdoKpIOt95E4S+T2jp9EZcLhWHo//nciBYuHAh1dXVfPrp/3E2dyu2\\n5ipGjplBUOiX5yJ+bCrlRXlUFx+jtuwEoqRHbzATPXIyluBhCIKIx+2gruI0jrZ6is/kUF6Y65uk\\n0YksSksbkuN9p06dYsOGDRQXl+CVFbyywiUDPewON7W797J9+w4A9AajL8LM7aS+6gKNtcWEhMcS\\nO2oqFmsoKipOWzMVF/Nw2hrQ6STiR8bwzDPP4PF4OHPmDHWVZzl73MyEaRkI3fRvVFXhQsEeqkry\\nCbIae3QNzcrKory8EpM1gum33Ive0H2UryAIjJl8C7LsofzCYT744AN+/vOf9/ke1tDQ0NDQ0Ogb\\nd9xxBx6Ph82bN6PT6QgKCsLhcOB0OgPzpHq9HqvVislkwmKxkJiYyDPPPENYWNg1H19VVTIzMwH6\\nNee0dOlStm3bxoEDB3jggQduOsMWSZKYNm0a06ZNw+l0YrPZ8Hg8WK1WgoODez1+7293fx3JvV5v\\nh/jQG01kZCSVlZXs3LmTFStW9Po8+O9bk8n37tnX+Q9/2290fwjg8ccfp7GxkaKiIl566SVWrFjB\\nokWLCAryrUqUJInbb7+dv/71r7z22mtYLBYkSSIuLo4FCxYQHh6OoihUVVWxb98+ysrK+POf/8w/\\n/vEP6urqEASB5cuX3+BWXo2qqnz++ed8/vnntLa2oqpqwFFclmVqamr4+9//zvvvvx9w2vNH6tbX\\n19PY2EhQUBBhYWHodDoURcHpdNLU1AT45lPnz5/P448/zs6dO3n//fd5++230ev1Pbo22mw2Xn31\\nVaqrq4mLi+OWW27pdvsNGzYgyzIZGRncd999PfZtLBYL69at48UXX6SkpIRt27axevXqPpw9DQ0N\\njY4MqsBv6tSpiKLY4SH90ksvsX79+mved1FRERs3bgzk0wuC0O1g/Pnz5wN/FgThps2f19DojsGI\\niu0Pe/bsweWRMURO6FRc2B2D4bp2vemPy9uVREdHI50rxGurQmfpg+PdJby2SiRJIDo6ut91GEjG\\njBlD0cWLqF4b2MshqJfCT8W3Ss2frdbX1WpDycmwN99PwRiBIIDidfnijPVBEDIOLCNA0IPqAUcN\\naut5ZFcbjvIDCKhYzL4OzECJdAeK3sTZtjeX0dp4jlZbLSiVPmcSUQ+IqIoL2t20Vx5GECVE34xm\\nl26Ygyly/io6k2poaGhoaNysTJ48mZ/+v//Hpk2byMs7Ts5JJzkFbt/7FVxSSRlAMDFpSjKrV6/u\\nkxtZTxw7dgxUF0tmeftcVhBgSarMB1+4OHr06E0p8POj0+n6vcAzNjYWs8lIc2sd9j6Tl/IAACAA\\nSURBVNYGrCGRfSrvcbfTWHMRo15g9OjR/arDQJKcnMyWLZ/ilT0U5u8ged59SFLPfRtBEJFlL4rs\\nBYFLZfomjpJl3+Ivo9HYz9oPHKtXr8ZisbBx48ZAjHNo5EhCI2KRJD2udjtetxMEAb0xiIQJC4ga\\nORm9rmPd48bMorWpktJz+2muLUGWXUyaOJEHH3zwBrWsa7Kzs3n7j3/E6XQj6ozEjkkhdlQKZmso\\nXq+XpoYaaitOU19xBrfLjtfrZUTCZMzWCGrKTtLWXEtTXTEtDWVIkg5JkhAEAZ0kMGL4MBYvXszt\\nt98emLh88skn+c1vXqOq+DhtzTUkjJtFVOy4Dm6YiiLTUF1E6YUjtDSUYzHr+fd//3fGjBnTZTtk\\nWSYrKwuPV2Hy1KU9ivsuZ+zkhVSVFFBaWsb58+d7jLzS0NDQ0NDQuDYEQeCee+4hLi6OTz/9lOLi\\nYtrb23G73YH5WkmSMJlMBAUFsWDBAu69994BWyhRXV1NVVUVwcHBzJw5s8/lY2JimDhxImfOnCE/\\nP5+5c+cOSL1uBGazud8mDGPHjgXg4MGD3H333X0eU87NzcXr9RIbGxsQx91IZs6cSUVFBTU1NXzy\\nySesWrWqV+VUVUWWZdxut+89uI9zRP50v6HQHzIajTz77LP84Q9/ID8/nw8//JDNmzczc+bMgJtf\\nSUkJNpsNk8nE2LFjueeee0hJSbnq+q9evZpDhw6xceNGSktL8Xq9PPDAA0yfPv0Gta5zZFnmf//3\\nf9m3bx+qqjJixAgWLFhASkpKIEL64sWLHD58mFOnTuF2uwOpWG1tbRw9epSWlhZaW1tpbW1Fp/P1\\niURRxGQyBSJyFyxYEDBhqaurY/v27bz++ussXLiQjIyMq8YF7HY7+/btY9u2bTQ0NBAeHs7TTz/d\\n7X1y8eJFioqKMJvN3H///b1euGQ0GnnwwQf55S9/ye7du1m5cuVNldagoaExtBjUp0dkZCSpqakc\\nPnw4IMTbsmULEydO5JFHHun3fuvq6njyySfxeDwdHp633357l2VOnDjR4e+JiYn9Pr6GxlBmoKNi\\n+0NtbS2yrGIIiulX+aHkunajWLRoEQdzDmFvOIsxKrlPQklVVXA3nMWql1i0aNEg1rL3LF68mL37\\n9tHe7oa6Q6APBmP3seoBVMUn9BO4yjq756JDy8mwu++nqigo8qVBFr0VImaAOQZEne8/QcR3EsIh\\nJAnVVgqNx0B2Eh4WwmOPPTakhGM9xdmqqm/VnMc8GjUmEZxVCI25qIoHXXAcxuEz8NqqcNcVgMeG\\noMgEBQeRmJjIiBEjOnXDHEyR81fVmVRDQ0NDQ+NmZeTIkTz11FM0NDSwa9cujh8/js1mQ1EUgoKC\\nmDRpEunp6YOy+K+trQ1UhZhhar/K+8opvv18RTGbzdxyyy18sW0H5UW5TJi+rE/lq0oKEJBJTk5h\\nxIir402vNykpKcTGxlBcUkJbUyWnD3/CxNS70Om7njyQZQ91FadRFC+2lmpQ+z4p5XE5cbQ1YjII\\nhIf3sv81iAiCwIoVK0hJSSErK4v9+/djb63C0VyJCrhcvoVZ5qBIJsy8E5MlFMXrwaOqiKLON7aI\\niqoomKxhJKXcTsnp3TRUnaOtrQ23293nPuNgkpuby1tvvYWz3UN80mzGJKcFhJ1erxeHw4nBFEzC\\nuPkkTlhIReFhyi/kUFd5galzv874lCU42po4e3wHNRVnUGQ3wyKjmT59OjNmzGDmzJlXTQylpKTw\\nH//xLL/97W9pba3h1OH/Q2ewEB6ViE5vwOt101xXhttlQy+JhIcG8eSTT/bYRzlx4gR19fUYLaFE\\nDO/bmKoo6YgbnUL5hUPs2LFDE/hpaGhoaGhcJ+bMmcPs2bO5cOECmZmZFBcX43Q60ev1hISEMHfu\\nXBYuXDjg7m7+fkx0dHS/RSwxMTGcOXPmK90nmjZtGuHh4dTW1nL69GmSk5P7VN7vopienj4Y1esz\\ny5YtIzMzE4fDwZYtWxBFkZUrV3YrkqqsrOTChQsoisLFixeZPHlyn9/3/QZAkZF9WzQ2WJjNZtat\\nW0deXh5ZWVnk5+dz6NAhwCdmbG1txWw2M3PmTB555BF0Oh2tra0YDAZ0Ol1Ab+HxeEhOTmbdunW8\\n/vrrVFdXU11dfYNb1xFVVXnvvffYt28fOp2Of/u3f2PKlCmBa+50OpFlmYSEBJKSknC5XLz//vsU\\nFhZy9OhR1q1bx0MPPcSJEyf45JNPKC8vB2DcuHFMmDCBW2655apFSoIg8OCDDxIUFMTHH3/Mvn37\\n2LdvH4mJicTHxwfOZ35+fiC6Oj4+nqeffrrHPnNWVhYAaWlpfe6bjx8/nri4OCoqKjhy5Ein8cEa\\nGhoavWHQ5cHf/OY3OXz4MEDgR+dXv/oVRUVFPPPMM4SGhvZpf7t37+a//uu/qKys7ODel5SU1O0q\\nju3btwP0yu1PQ+NmZyCjYvtDe3s7qCqC1Lv4pSsZSq5rN4opU6YQM2I4RcUVeFpKMYSN6nVZT0sJ\\nouwkNmFknzt9g8WUKVNIiI/n/IUinytbZSZEzQHryM7jelUF7GXgavIZVLjq0FmHodP37WdrqDkZ\\nQtffz6qqKurqG1BEC5ZRt4MhBJfLjSzLPqHi5fPDAgjWOERjCGr1HlpabezZs2dIxb92F2er4hP3\\nud1uVEDQmSA0CUyRUJmJt60SfUg85uEpmKKn4Gkppb0iG6/sW+H1xBNPdPnsGiyR81fdmVRDQ0ND\\nQ+NmJTIyktWrV1/XCBRF8TkFSv3saukkAJ9LwVeZ9PR0MrOyqCopID4pFUtQ7wRqbpeD0vNH0Eni\\nkHG4liSJ2267jffee592l4uWhlKO7f4zw+OnMCIhBaM5OLCt22WnprSAmtITtDtbQVVxtNbjbKsj\\nIqJvIr3KknxEQSElZUafx98Gk5EjR/Lwww9z3333kZubS2NjI83Nzfzzn/9E1kmkLrofS1AE7e0u\\nPB4PinLJxfAyBAH0egOTUr/GyZx2Wlqq2bNnDytWrLhBreqI0+n0iftcXhInLGBs8sLAZ4qiYLfb\\nUVUVUdKj0xsRgMQJt6DTGSg+s5dTRz4jIioRS3A4M9Luo6mujLzsTdjsduLi4pgzZ06Xx544cSK/\\n/vWvyc7OvhSrW0FT9VlUVAQERFEgMT6W9PR00tLSejWpf+LECWRZJSFpap/7QwCxo1IoPnuQ/Pz8\\nPpfV0NDQ0NDQ6D+CIDBu3DjGjRt33Y7p78dIktTDll3jL+v19t0V/V8FSZJYsmQJH3/8MZ988gkT\\nJkzotWDy1KlTnDlzBoPBwIIFCwa5pr0jISGBSZMmcfLkSVwuF5988gm5ubmkp6czb968DoKp4uJi\\nMjMzOXjwYMC978CBA9x55519ntP0i7KGynkA3xzRjBkzmDFjBjU1NRQUFGCz2Th//jy5ubmMGTOG\\nH/zgBwiCgMvlwuv14nK5Am6ElxMVFcUzzzzDf/3Xf3Hs2DEqKyuHTIqhX8QoiiJr1qzpIMZzu92B\\n9pjNZvR6PSaTiccff5w//vGPXLhwgY0bN/LEE0+QkpLC1KlT2bp1K1988QVVVVU89thjjBo1qtPj\\nCoLAypUrmTdvHjt37mTPnj2UlJRQUlLSYbvk5GTS09OZPn16r55XfjOp/hirCILAokWL+OCDD8jP\\nz9cEfhoaGv1m0AV+K1asYNOmTWRnZ/ti9y6J8j766CO2bt3KihUrWL58OVOmTAlkzF9JSUkJBw4c\\n4JNPPiEvLy9gIX05P/vZz7pU+ZeVlXH8+PHAsYF+2UJraNxsDERUbH8wmUwgCKiyp1/lh5rr2o3A\\nLwJ79933sFdkIxlDehUJKjsbaa84gNWo49Zbbx0yjm5+S+2qqr9iczhBdaPW7gfJAiFJYB4Boh4U\\nDzirofUCyA4QBATFC7aLGEZM61MY1VB0Mrycy7+fiqLw3HPP0dBkwzRyIYbgKAAMRiNejxe3242i\\nyH59GqIo+VZs6cPw6BfQPsTiX3uKs3W7XF+K+yTjlyJPYzhEzUatzcZVfwpD5ESfOC5sFJIxBHvR\\nVg4cyGH8+PHdihkHQ+SsOZNqaGhoaGho9Baz2YyzTaDFJmA1993Fr7kNQMRisQx43W4m4uPjSZ05\\nk0OHj5K77yNmpn0Ds7V7kZrH7SQvezOyx0bS2NEDHk9kt9s5cuQIDQ0NuN1uTCYTcXFxzJgxo8fJ\\ntiVLlvjEVhVVKAp4XXbKL+RQUXgIc1AkOp0B2evBYW9EVWQEQcBkDsKp+ARudRWniEuc0Ou6KopM\\nedFxdDpxyLh2XInZbA5MtG3evBlR0hE5fDzBob4FWlarDkVRcLsvLXxSVV/CtiAGHCwARk2Yx4mD\\nm8nKyuL222+/psnkgeLAgQO02ewEh8UwZvItHT5zuVwoqoIoSuivcHGMHTOL5vpSWhpKqSzJJ3G8\\nT8gXHhVP8py7OHFgM5999hm33XZbt+4lFouFZcuWkZGRQWFhIdXV1bS3t2MymYiKimLcuHF96jv6\\nBYk9fQe7wmQJCbi4y7I8JK6RhoaGhoaGxuDgXzzQ3Nzc7334y3Y1b/xVYenSpWRmZnL+/Hneeust\\n1qxZ02O/o7CwkNdffx3wJd8NdL+yqqqK48eP09bWhqqqWK1WJk6cyNixY3uMLL3nnnsoLCwMxEWX\\nlJTwpz/9iQ0bNhAdHY1er6e1tTUwhq6qKsOGDaOsrIzGxkZOnjzZJ6FeaWkp586dw2QyDSmB3+UM\\nHz6c4cOHo6oqzz//PHq9njvuuCMgeDQYDHi9/jkiJWBkJEm+OSJJkggKCmL+/Pns3r2brKwsvvWt\\nb93gVvnIzMxEVVWWL19+ldNee3u7r39xSdznR6fT8dBDD/HCCy9w9uxZamtrA/HFy5cvp6WlhZyc\\nHD777DO++93vdnv84cOH88ADD7Bq1SpOnjxJa2srXq8Xq9XKqFGj+uz2b7fbAZ+osj/4jUhsNlu/\\nymtoaGjAdRD4Abz44os8+OCDVFVVAV86+bW2trJx40Y2btwIwIgRIwgNDcVqteLxeLDZbNTU1OBw\\nOAL78v9w+REEgSeffJJZs2Z1efx33nknUBZg9OjRV2Wta2hoDBzR0dFI5wrx2qrQWYb1ufxQdF27\\nESxbtoxz586RfSAHe9FWTHELOkScXo6qKnhaSmivOIBZrzJ//rwBd6tQFIWCgoKAWMo/OeAXS02Z\\nMqXbCQJ/e/ZnH8TR7kGUDKiyA7XpBDR1jFEXAEEyXJr0EEB2IrZXg2lUr+s7FJ0Mu6Kr+FcB0Ot1\\n6LtxLhyK8a/dxdn6ordcPrGiZLjawdEaD5IFxdWG11aJPjgOAMkcgSluPs4+iBkHUuSsOZNqaGho\\naGho9Jbx48dzsK6MAyfcrM7ou+NE9gkJBMN1ddnoD7Isc+LECY4cOUJbWxuyLGO1Whk3bhy33HLL\\ngEwkrVmzhsbG9VwoLOLwrr8yZuItjEiYfFW0rSJ7qak4y8XT2XjaWxgePYx169YNmIiotLSU7du3\\nc/DgQZxOF8plC08lUSAsLJTFixezdOnSLqOfrFYrTz/9NL/4xS9obGpBZwzCYLBga63DaWsIbCcg\\nEBYVjyTpaKwpxmw24/V4aKw+T3nRcUaO6Vm0qKoKp499gbu9hfi4GFJSUq79JAwisiyze/duvF6F\\nkWNmdPhMFEXfIsJuiBw+GqMphJraOgoKCgY8tcPlcnHy5ElaWlrweDxYLBZGjx5NXFxcp9urqkpW\\nVhZer0J8UuoVE50qbrcbVJD0Vwv0BEEgZtR0mutLKC86TsK4WYExgKiYJILDRtDaVkdOTg5paWk9\\n1t2fepKUlNSvtl/epkt77Pc+eprw1dDQ0NDQ0PjXICYmBqvVSm1tLYWFhYwdO7ZP5e12O3l5eQDX\\n/A4z2DgcDvbt28eFCxew2+1IkkRISAipqamkpKRcc38kJCSEdevW8ctf/pJDhw7R2NjIXXfdxdSp\\nU68aG29ubmb37t384x//wOPxMGvWLO65555rOr4fWZbJzc0lMzOT06dPd7pNQkICGRkZzJ8/v8uF\\nKMnJyTz88MP85S9/QVVV4uLi8Hg81NTUdHBXM5vNJCUl0dbWRnGxr08kCAJ//etfSUxM7PI9/HJa\\nW1v53e9+B8DChQuHvKFIYWEh5eXlBAcHk5qa2uEznU7Xo7AzIyOD3bt3s3//fu6///4+Rxn3RGNj\\nI2fPnsVutyMIAkFBQSQnJ3cpwq2pqSE/Px9Jkq5KYPR6vSiKgiiKndbTarUyc+ZMcnJy2L9/f+A+\\nFgSB22+/nZycHI4cOUJzczNhYWE91t1gMDBjxowet+sJf5/oWvs1nRlZaWhoaPSW6yLwGzFiBH/5\\ny194+OGHqaqqCjj5QceHWFVVVeDzrh5uV5Zbu3Yt3/ve97o8tsfjweVydYjo6M0AmIaGRv9ZtGgR\\nB3MOYW84izEquU/xLUPddc3PtYrdeoMoiqxduxZBEDhwIAdn+R7aq8wYIiegC4pFEPWoigevrRJ3\\nw1lE2YnVqGP+/HmsWbNmwJzcFEVhx44dbN++narqGlweGVlWv4w7PVfIwZxDxMaMYNmyZSxbtqzT\\nY1/ZHke7B0XSI+rMgAqKDKIECKheJ6LqIchqIj5+LKVl5Tj+BZwMu2Iox7/2517vrj1ejxdZVi5Z\\nEXYywCGIEJKE2nQCd+P5gMAPbqyYUXMm1dDQ0NDQ0Ogt6enpHDywn11Hnaxc4r0Uuds7ahoFCi7o\\n0JmsQ3bsor29ne3bt7Nz504aG2pAcQHKpU8FDh3cy0cffcj8+Qv42te+1udV8ZdjNpt57rnneP31\\n1ykoOMn5/B1cKNhN9MiJWILCAAGXs42a8tPInnZ0OpHRoxJ4+umnCQ/vW5xtZ6iqymeffcaHH36I\\nx6vglRXCoxIJixyJKOnwetqpry6itq6Ojz/ZwrZt23jyySe7FJjFxcXx/PPP88orr1BVXYOjzY6k\\n0/v2J+pQBXDZW2lpKEcniZhNOu6++27Cw8P53//9E2ePb8Pjbidx/GzEzt6lAY+7nTO526ivPEtw\\nkJnvfve7Q94traWlhabmZnQGM2HDRva5vCCKRMWNo/riMcrKygZM4FddXU1WVhZ79+7FZrOjqIA/\\n5lYSmDhhAhkZGaSmpnaYcCsrK6O0tAxJbyY6bnyHfbrdHhRVQRDFTq+hCoRFj8JoDsZha6K+poTI\\n6ITAtiPHzOBs7lZ27tx5XZ8Rvok7gXZHa7/Ku5w2UFUsFsuQvx81NDQ0NDQ0rg29Xk9aWhpbt24l\\nKyurzwK/ffv24fF4SE5Ovqa+xGBSXV3NZ599xoEDB/B4rh4v3rdvHxEREaSnp7Ns2bIeF6x0x+jR\\no/nJT37Cq6++yoULF3j11VeJiopi9uzZBAcH4/V6KSsr4+jRo4F45LS0NL797W8PyLyI0+nk97//\\nPQUFBYBPLDV79myGDx+OKIo0NTWRk5NDaWkpf/rTn9i2bRtPP/10lwufli5dislk4p133qGiogLw\\nOa3FxcWh0+nwer2UlJSQn58P+PqEP/rRj8jMzCQ3N5cXX3yRJ598kkmTJnWb7Pf6669TW1tLQkIC\\nq1evvubzMNj4BY7Tp0/v4GjXWxISEoiOjqa2tpba2lpGjux7v+pKFEXh9OnTgXN/pXZDp9Mxd+5c\\n0tPTr/qeHzx4EFVVmTFjRsDV04/PAELtEMt8JfPnzycnJ4dDhw5x5513otPpEASB8PBwpkyZQkFB\\nAXv37uWuu+665nb2lqCgIFpaWqivr+9XDHJDQ0NgPxoaGhr95boI/MAXrfLxxx/z3//933z22WcA\\nHYR+flRV7VEBraoqkZGR/OxnP+O2227r9rh6vZ5f/vKXA9ACDQ2N3jJlyhRiRgynqLgCT0sphrBR\\nvS471F3XBkrs1lv0ej1PPPEE48ePZ/v27VRWVeNqyMNZe/zLY0oCVr1EbMLIQCzpQAnaPB4Pb775\\nJgcPHsLp8qJIFgyREzAExSBIelTZg9dWhb3hLIUXy6l89z3Onz/PmjVrOu2EdNoej/3Lc6j42mM0\\nScTGxHPrrbeyePFi1q9fz/G8PFrPbEI0BCPqrYjGEAwR43xix4D4e/CdDAeDoRj/ei33enftCUTz\\nip28gqigooJ5OEKjitvRBHbHpThi3aCLGbtDcybV0NDQ0NDQ6C3jxo1jZHwi5SV2vjjg5Y6Fcq/K\\nqSr8fYcORCPz5s0bkoO+TU1NvPLKK5SVXADVSXS4hyWpMjFRKqIIrTaB7Dwnpy/a2b3zc3JyDvL9\\n7//gmvp2FouFH/3oRxw+fJisrCzOnD1LfUUB/rkFAZAkkTFJowOOEd1NFPSFzZs3s2XLp7S7ZeLG\\nTCdhbCqW4I4LjsYmL6KloYLiczk01hTxm9/8hu9///vMnDmz033GxMTwwgsvkJOTQ2ZmJhcvFtPa\\nUHLpPds3FhYeGsQtt9xCeno6YWFh7NmzB6vVQmtrFaePfsaZY1uxBEeQMG4OcaNTEAQRh62Riot5\\n1JSdRkAhNCSIH/7wB0M2wcJut7Nv3z4KCwupq6vDbrMj6ow0VBcROXw0Qh/7tHqDBZUvY5OuBVVV\\n+cc//sGmTX/H65XxyArBYSMICo1GFCU8bicN1UXkF5zi9OkzJCTEs27dOoYN8/UTGhsbUVSV4PDh\\nV4n4ZNkLKohSx/6QTzuo+vpDCFhDh9PuaKW1uQG9KQydTo/RaGT4yAmcOvo5RUVFAdeL68HkyZPZ\\nsSOTqpICEsfP6bNrRWVxPpIkMnny5EGqoYaGhoaGhsZQYunSpWzdupWcnBxuu+02EhMTe1WupaWF\\nrVu3Ar6FU0ORgoICXn/9dVwuF+B7T5o/fz4hISEoikJVVRW7du2itraWTZs2cejQIdatW3dNC5BG\\njx7Niy++GIhgraurC8y1+xEEgRkzZpCRkUFycvKAuCe7XC5+/etfU1hYSFBQECtXruzUrf2BBx7g\\n8OHDbNmyhYqKCn7xi1/w/PPPd9nm+fPnM2HCBHbt2hU4V1fObURFRbF06VIWLVpEc3MzISEhuN1u\\nmpub+c///E+MRiPjxo1j5cqVTJ06FbfbzdmzZ8nKygq4DMbHx/P0008P2UX3lZWV7Nmzh5qaGi5e\\nvIjNZqOoqIjy8vJ+CfSCgoKora0dkBQhh8PB73//e06ePAn4DDxSUlKIiIhAURRqa2s5ffo0+/fv\\nZ//+/SxcuJBHHnkksPCpsbERVVU7/e57vb6kgyvnEP36EFVViYmJQZIk7HY7LS0t6PV6DAYDBoOB\\nmTNnkp+fT2Fh4TW3sy8kJyeTnZ3Nvn37uP/++/tUVlVV9u7dC6D1iTQ0NK6J6ybwAwgLC+OVV17h\\n7rvv5k9/+lNAvQ1fivk6e+G4XBEeERHB6tWrefTRRwdkNbaGhsbAI4oit956K++++x72fyHXtYEW\\nu/UW//nMyMjg5MmTASc1p9OJ2WwOOKklJycP6DlTFIU333yT7AM5OD0CppGLOo0I1lmGYYxKxtNS\\nir0im/3ZBwF44oknunTy6017Jk2aRFZWFj/96U+pqqpBRQJBRfE4UNwOcNTjaS5C1AehCxuFIBnx\\nNJ4bNCfDgeRKV7yzZ88iu120Vx/DGJXcQbTYGwY6/vVa7/Xu4mxlReaSwu/Lf/QL+wI/93rfH2UP\\nLrcbt9uNJEkYjQakoFg8Ayxm7A1fBWdSDQ0NDQ0NjYFBEARWrVrFb18r4aPtMkEWF4tndi/yUxR4\\nf6uOQ6eMGC3hHVIIhgo2m43169dTU1VEdJiDh+7wkjxG4crX7bQZMpV1XjZlejl2xsMrr7zMs8/+\\nBxMnTuz3sSVJYt68ecybN4/y8nLy8vKw2WwoioLVamXSpEkkJSUNaATogQMH+P/svXd0XOWd//+6\\nbZpGvVndcpWrbOMCrrjQYQmEmKVlQ3KW/WZTSfttCCGck90khKWEQJZAyllKAiHBhNCF5Sb3blmW\\n1azeuzT9tt8f4xlLSLYlg43x3tc5Pj5n5j73PrfM6PnM837e77///U2CqsHsxTeRnj16/wVBICEl\\nm8LkLKqPbqGxei+/+Z//4ScPPUROTs6obex2OytXrmTFihXU1dVRV1eHz+dDURTi4+OZO3cuhmHw\\nyiuvsGPHDoJBFVU3UOwuTCMsAgv4Bjl+4H3K97+LJCnIioIiS9gVkVmz5nDHHXec9vjnE4/HQ09P\\nD8FgEIfDQXJy8rAJwJaWFt59991o3LFuGBiGiYmIroU4tONvOF3xZE2aR87kBUjy2GppQw9PEn2c\\nKCrDMAgEArzyyisUb9pMMKSTmTeb7MkLiEsc7h6jqUFaG8poqNpHbV0DP/3pT/nRj35EWlpa1MXl\\noyI+GD3WyYwK+yIISJJyMuHEwDTDNZqmqciyjCTbMM1wXz+JKOyxMH/+fJKSEmlr76a3q5Gk1Nwx\\ntzUMnebaQyiy+JlYgGdhYWFhYWHx8UlPT2fFihVs27aNxx9/nO9///tnFSwNDAzw+OOP09vbS35+\\nPvPmzbtAvR07x44d44knnkDXdS677DJuu+02MjKGL3KfP38+1157LUePHuWll16ioaGBRx55hAcf\\nfPBjLeJyu93ccMMNXHvttZSWllJbW4vf70eWZeLj41m4cOFpXfPOld///vfU1NSQnJzMD37wA9LT\\n00fdTlEUli5dSmFhIY8//jg1NTU8/vjj/OQnPzlttGxSUhK33nor//RP/0RpaSnd3d0EAgGcTicT\\nJkxgxowZ1NfX89RTT1FZWRk9TlxcHBAeu1dXV0dNfpxOZ3QezmazsWzZMtavX3/BxX2madLT08PA\\nwAC6ruNyuUhLSxt2HQ4ePMj7779PeXk5hmFE/wmCQHV1NT/60Y8oKCjg6quvHhHXeyYidcjHmY/U\\ndZ2uri6efPJJWlpacLvdXH311axatWpEHG57ezubN29m48aNlJSUMDAwwDe/+U1kWSYUCgFnrs9G\\n1ERD9CCiKKIoCrquYxgGpmkSDAYJBoPRffp8vnM+z3NhzZo17Nixg61bt3LLNOlkfwAAIABJREFU\\nLbeM6zqfOHGC+vp6YmJiRkQWW1hYWIyHCyrwi7By5UpWrlxJfX09xcXFHDp0iNLSUjo6OqKq7Qgx\\nMTFMmTKFwsJCFi1axJVXXvmx/jBZWFhcGNatW0dlZSU7du7Ge+I9HFlLRxWHwWfDde18id3GgyiK\\nzJkz54K5ln344YdhgZcqEDPp2jOKNAVBxJYwEckeh/fEe+zcuZtp06Zx1VVXnbbNmc5HVVWeffbZ\\n4QKzCXMwbSmENBNDC2IGOjAHazGDg+htBxElkRiXi6zz4GQ4FsYSZQuM6oqnayamoKAONKMNtiDa\\nY7GnzMCWfHqb+aF83PjXoX1vb2+nvr6ewUEPBiL29Pm40ueNcJ4407N+xjjbaI0WcV0cKuyLEG4n\\nSDYQFUxDQ9N0dN2Pgob5CYoZx8ql7ExqYWFhYWFh8cmzYMEC1t9+B3959c/88e8DVNaprLtcIz9z\\n+MDHMOBojci72yXK6+xItkS+9rWvn1Pcy/nmt7/9Le2tdWSn+vj//iVEbMzpt81MNfn6epUX3zbZ\\ntL+Xp576Fb/4xSPRyZiPQ3Z29icSN3QmDMNgw4YNhFSdqXPXnlbcNxRBEJgyexXBgIfuluO8++67\\n3HfffWdtk5+fP8Jlr7u7m8cee4z6hkZUzSQpbSLZk+eTkJyNJMkEAj7amiporTuCt78Dw1CxKSLX\\nXHM1V1111biizFRVJRQK4XA4zjk61TRNysvLKS4uZv/+/QRDIXRNxzRNRFEkP38iN998Mw6Hg9/8\\n5jd4vH403SApdSLpOTOw2V14PIP4PD10tVbi8/ZRfXQLHc0VFC79PHbHGR62kwz2tSEKwohJp+bm\\nZjZt2kRDQwN+vx9FUUhMTOTyyy9n/vz5yLIcjeItKSmhp7eXgN+PaYLDFY/N4UaxjayzZMVOzuQF\\nTMiZyZGdG+jobOaxxx7j4Ycfxul0IgCaGhilp8PrO8M0OVUQCYTLPwFNDTvC2B1ubI4YdF1D10KE\\nVBVdUzEl8bSTpecDWZa58sor+evfNlBdupnLVt4xZvFlfeUetJCPiXnZzJgx4zz31MLCwsLCwuJi\\n4Ytf/CJdXV2Ul5fzX//1X1x77bWjioT8fj87duzgnXfeobu7m9TUVL797W+f89j0fDEwMMCvf/1r\\ndF1n7dq13HXXXaedf4i4nT344IP88pe/pKmpieeff57777//Y/dDkiTmzZt33gWQLS0t7NmzB5vN\\nxne/+93TivuGEhMTw/3338/DDz9MY2MjBw8eZNGiRWdsI8sy8+fPH/H64cOHeeaZZwiFQtjtdpYt\\nW8aqVatIT09HEAQ6OjrYtm0b27dvp7e3F7/fT0JCAjfffDPLly8f80IY0zQJBAKYphkex5/jorFg\\nMDjEpb2WUCgUFaa5XC5mz57N7bffzs6dO3nnnXfQNA1Jkpg+fTrZ2dlIksTg4CAdHR3U1tZy9OhR\\njh8/zlVXXcUdd9xx1s+Dz+ejvb0dgPj4+Ojruq5z9OhRtm/fTnd3N6FQCKfTSWZmJqtWrSI/Px/D\\nMDh27FhUszEwMICmaYiiSEZGBvHx8aPOPaWnp3P77bezePFiHnvsMY4cOcLLL7/Mv/zLv0Sv/1hE\\neIZhAMPNoHRdJxgMIggCycnJCIIQFfj5fD50Xb+g9RDA5MmTyc3NpaGhgb///e/cdtttY2qnqiqv\\nvvoqENbIWDoXCwuLj8OnIvCLkJeXx7333jvsNb/fz8DAADabjbi4uItuAGdhYTE2RFHk3/7t3xAE\\ngZ07d+Nv2kqg1YkteXrYnUxUMA0VzdNCqLvionddO99it4sNwzAoKirCH9RwZK8ckwMjgORMwpF1\\nBf6mbRQVFZ2TyO5sYkoHoKkaoVA6elIBpqcZo2s/ohCiYPo0fvjDH551YD8WMd5Y+/3RKFt/QEXT\\nDYg6M5SzafMW0tNSiYuLo7GxmUBIH+aKFwhqhIJ+hGA35uAJ9OAg/uY9aN4OXDkrEMQz/y08Xfzr\\n2c5z5syZFBcXDxMcqqqOYehgSiCIBDtKUfvrRhUcnu5ZP2OcbbS5ybC5rPAOw//728MbKrEgyuE4\\nX0PHNEKoQT+CYYRFhBeQS9WZ1MLCwsLCwuL8cf311+NwOHjpxRcoOeJj8/4ALoeB0wGiAIJg4vUL\\nBFUJQXTidCfwjW9886KMa2lqaqL0yCHsso/v3n1mcV8EUYS7b9Bo7QpxvKGXbdu2ccMNN5z/zn4C\\nlJeX09bWjmx3k5VfOOZ2giAweeZy2hvL2bV7N3fccQexsbHjOrbP5+Oxxx6jrr4RmzORy664hZiP\\nxAK7YuKYNH0R+dMW0ttZT+nuN8FU6evrIzU19azHaG1tZdOmTWzfvh2PxxN9PTMzk9WrV49rQqy1\\ntZVnnnmG+voGgiEV0xRxxCSgOBV0LYTf28vximqO/eIXCIBic5CeM4vJs1bgcp9K5nB6vYRCIbIm\\nL2awt5nask0M9LRyYNurLFx1J4rt9ON/v7ef7vZa3DH2qMNFaWkpb7/9NuXl5ajaSZfAcPotogB7\\n9uwlPj4ORVHo7u5B1w1U3QDBhtPtCgvqdJW647uor9hNWtY0ChZcM6Ifis1B4dJb2bf5ZZpbWtm2\\nbRsLFy5ElET6u1sIBbzYhggURTGy0Mk46VAxVNwXfk9Tg/R3N4avS2wypmkgCiKCbMfb345haAQC\\nxgWf0LrqqqsoKSmhpbWdwztfZ+7ln0NWzhyH3VC1jxPHtuG0K9x+++2fqMumhYWFhYWFxcWNoijc\\nf//9PPfcc+zbt4/XX3+dV199lYSEBBRFiY4L+vr6ME0TQRCYOHEi3/72t4cJlC4WtmzZgt/vZ8aM\\nGdx5551j+p03Li6O73znO/zHf/wHhw8fpqWl5aJczDUaxcXFACxdunRcfXa73VxzzTW8/PLLFBcX\\nn1XgNxpVVVX8+te/RtM0li9fzl133TVCYJaTk8Odd97J+vXreeedd3j99dfxer04nc6z1jIRQdvG\\njRs5cuRI1HxIkiRmzJjB2rVrKSwsHLNGYdeuXbzwwgv09vYSDAajbnwQFhD29fVRUlJCSUkJoiji\\ndDq54oormDlzJna7PbrdwMAAubm5LFu2jIqKCnbt2sUHH3yAYRjcc889ZxxL79ixg1AoREFBAYmJ\\niWiaRlFRERs3bqSrq2vE9pWVlWzevJnU1FR8Pl9U1BcR9jkcDgzDoK6ujt/97ne88sor3Hjjjdxw\\nww0j+pGfn8/999/Pz372MzZt2sS1115LdnY2giBQVlbGqlWrhm0faa/revQaC4IwbL/Hjh3DNE3S\\n09MRRRHDMFAUBVEUaW9vR9M0+vv7x3R/PikEQWD9+vU8/vjjvPXWWzgcjlGvx1CCwSC/+c1vqKys\\nJD4+nquvvvoC9tjCwuJSRHr44Ycf/rQ7MRRFUXC73Tidzk99EjyiZLfZbKSkpJy9gYWFxTAkSWLh\\nwoXExrppbqrHO9BNqL+BYNcxQp1HCXUfh0A7Thvk5WZx6623sH79+gv+I/XZiAjOOrv7sWcvR4nN\\nOHsjQFScCDY3wd46enu6WLt27Wfmx+zS0lLe/6CIkOnAmX35uPot2uMJ9lQR9A0wbdrUMa3sGkpR\\nURFvv/0uvpNiSiU2Y7ioDJAkEZtNwW534IhNxRaXQ6ivnoG+HuLj45g8efKo+44IF3/729/y/gdF\\n1NQ10N7RQ09vPx1dvTQ0NbF71y527w5HyOfn55/x3CNOg2+9/S7tnb0EdBuGewpmwizM2KmYMXmY\\ncgy66mWwv4/Ozg5CqoEjdyWu7KUo7gmIigtBdqAaEqY9GSFxJtgSwNeGEejBCA2gxOedth+maeBv\\n3IZTMbnrzjtJT08f03nu2rmTN//+d/bu209Pr4eQ6UBOno0eW4DhnoIQNwWUOFAHMVUv2mAzRrAf\\nJS5nhHPlR5/1G2+8kd27dxHw9GFLKRjWd03TwzG9CIB46qZGtjEN6NwFhoqQVIgpOcBQw68jgKce\\n/K0kJyWybt26szxNnyz5+fm0trbQ1tKEr7sGwRaLaI8b9d6EnUnr8DdsxqmYLF16OevXr//MfAdY\\nWFh8PC6lOuJSOhcLi0+DrKwsVE2j5kQDXl8ATTfxBcDnB49PwBsQCGkyk6dM59///d+ZPn36p93l\\nUXnjjTeoPVHOqgUBLp9jjLmdKECs22TXEYGOzoEL7rIdIRQKcejQIY4dO8bx48dpampC13USExMR\\nBAFN0zhw4ADFxcVR95Ce3j7SswpIy5o2rjGcYnMw0NOKfzBcm0ydOnVcfX3ppZc4eOgwNmciC6+8\\nC4fr9AJBQRBwxiSQMmESzfVltLY0kZyczMSJE0fdvquri2eeeYY//elPHK+owuP1oxtgmBLBkEp/\\n/wClpaV8+GERHo+HGTNmnPF+1dbW8vOf/5zmlnZMwU5a7lzyZ68hI38+E3LnMCGvkNSsGUiyjaB/\\n8GSMrsiUwquIT0wfdl1FUUBVQ2CaxMSnk5I5nZ6OWvyDPfg8PUzIOb3zW13FLrz9rSy94nKWLVvG\\nO++8w3PPP09LazuaKTEhdw6TZq4kZ8plTMidjSsulf6+Tjo7Wugf8GAik54zkylz1pI5ZQkZE+eT\\nN20ZCSl5GIaGz9uDt7+LrtZq0jKnISvDY6ZEScbmiKG98Ti9vd3ceOON1NXV0dLSiqQ4SEg55Tgp\\nCCKhUBDDNBFF+eQCqOGTWe2NR+ltryEuKYvUzJkYuoqhaxiGRkvtAQZ7mjENnWnTpo2IhDuf2Gw2\\n5syZw/59++jr6aC18TgALncS0pA4YtM06G6vpfLwRppPHMBhk7nnnrtZtmzZBeurhYXFp8+lVEdc\\nSudiYXGhkSSJiRMn0t7eTkNDA6qqEgwG8fv9eDwePB4PPp8PQRBYsmQJX/va1z4R1+9PGl3Xee65\\n5/D7/XzpS18al2O20+mku7uburo6BEFg7ty557Gnp6e3t5f9+/dz7NgxqquraWtrIyYmJiqG83g8\\nbN68mW3btlFSUkJxcTGqqnLbbbeN63wBMjIyKCoqor29nSVLloxr0ZOmafzsZz/D5/OxevVq7r33\\n3jM6nomiyPTp04mNjeXIkSMcOXKEFStWnDbt6PDhwzzxxBN88MEHtLa2YhgGNpsNWZZRVZWOjg52\\n795NSUkJ8fHxZ3WPf//99/nDH/5AT08PmqahKAp2ux2n04nb7cblcqEoSjSG1zRNUlJSWL58+bA+\\nCoKAaZpRZ7qcnBwmTJhARUUFtbW1pKamkpeXN2ofDMPg97//PYODg6xfv56kpCSefvppiouL8fl8\\npKSkcMMNN/C5z32OtWvXsnjxYmJiYqipqaGlpQWv14skSWRlZZGXl0d6ejp5eXnk5+fjcDjw+/30\\n9/dz/Phxenp6mDdv3ogaOSkpiY6ODhobG1EUhTVr1vDhhx/S2dlJYWHhsHjqyHmapoksyyPEfRD+\\nDaKnp4crr7ySlJQUQqFQ9N+GDRvo7e3F5/Nx3XXXXVBHvLS0NBISEqK/L1RXV0djmIfWzn6/n61b\\nt0Zjrl0uFz/4wQ/G/VmysLD4bHM+6oiLS0VjYWFxSTHU2ax/YBAkBUwJIepsZoJpkJgQz9q1az+1\\nyZ6zcfToUVrb2jEkF0p87rjaKvF5BFr30dLaRllZ2QWL1x3KWFzcjh07Nuz9zs5OPB4vclIOH40Q\\nOhuCIGJLnk6w+zBbt24d1zmfT+dAVVX57W9/Ozz296SDniApmLqK5mnF211BTW0TLS+8RFVVFffd\\nd9+oBcJQp0Fv0MRMWojpzARRCjvOCSIgQMwEzLjpmL4m6DkIhkqgpxYlflJU0yYrMpIkomknnf/c\\nuaDEYrZsRO2rIxSTjj1l9Amtj8a/juU81cEWPK37wtG+sgs5bTHutKnouoHh8YT7LTvAmQoJBeBt\\nwuzcg9pXhw9w5a4aUXANfdaB08bZ2mw2QqEQpqGBJHFS3XdqR95G0Lwgx2AqiWBop94zDfDUYhoa\\nVVVVvP/++xfUFe9Scya1sLCwsLCwOL8MDAzw5JNPcqL6OJh+8jI0ls8LkZGiIQomgz6RvcfsHK8T\\naGqo5NFHf8nXv/6NT6VmOBOhUIjt27eDEWDNQn3c7edMNkhJ0OjqbOXYsWMX9Pza29vZtGkTW7du\\nZXDQE45DNQFBQBIFsrIySU5OpqGhgd7ePnTDxDTNk3FKJi31pQz0tZM9aR6ZE+cgSWObOEjPmUFf\\nZy01NTXj6q/X62X79u2omsFll3/ujK51Q3HHpzK9cC3HD7zLhx9+yKpVI8frjY2N/Pd//zedXT0Y\\npkh6zmyyJ80jNiEstDMMna7WGppOHKS3s5533n2PxsZGvv3tb0ddJYbS1dXFE088QU9vP+7EHPJn\\nr0WW7UiyDVGSoyN8OTaF3GlLSc+ZQ01pEYM9LZTv/Qfy0i+QlJxGpBaQZQVRlNB1HU0NYrPHMHPR\\nLRzc+r90tlTh8/QOc/yL0NNRR2P1PuyKyLp163jvvfd45ZVXCYQ08guWkTt14QiXOZc7kcbq/SiK\\nE1d8GlPmXoMrJjyRrGkakhx2lIlLyiIuKYtcXz/le9/AM9DFoR1/5bKVd4zYZ0rGZGSbi5aWVsrL\\ny1m7di0HDh6iseYgWfnzovdSkiQkSUbTwoI9UVKG3StdC9JaeyA88Zc5AzDDC6wEAV1X6W6pCAsl\\nBYFf/vKX3H///SxZsmRMz8knQWZmJj/+8YM88cQTNDe3cOJoMTVHt5CYloeiODB0jYG+doL+fmRJ\\nJNbt5N5777XEfRYWFhYWFv9Hqaio4Fe/+hU+nw+Hw8GUKVNYvHgxCQkJGIZBW1sb27dvp7Ozk/37\\n99PR0cF3vvMdEhNHjvs+TY4ePUpPTw9paWnn5Li+Zs0aNm/ezPbt27n99tsvmCDJNE3Ky8vZuHEj\\nBw4ciIqqICwoE0WRqVOnIssyVVVVUfe5SE0E8OSTT1JYWMi6devGXMu5XC4KCwvZu3cvNTU141qU\\ncuDAAXp7e8nIyODuu+8e82KrtWvXUl5ezr59+9i8eTO33nrriG02bdrECy+8gGEYJCUlsWrVKlas\\nWBGNjY7UY8XFxXR0dPA///M/dHWFDQ1GY9euXbz88ssMDg4iyzI2mw1FUXA4HMPc/yJpRMFgkFAo\\nRHd3N8XFxaxbt26YyM9ms0VjaGVZJjs7mxUrVrB161bee+89li9fPuJ6mKbJX/7yF1paWoiPj2fu\\n3Lk89dRTHDt2DLfbzb333su8efNGuBGapklRURGKopCSkkJGRgYOhyN63202G6Iokp6eTnp6Ol1d\\nXRw/fpwtW7bgdrv553/+5xHXY82aNWzfvp2tW7dy6623smzZMjZu3MjGjRu58847o3232WwEAgFU\\nVcVut4+YN2loaKCqqgpZlpk7dy6CIET7X1lZSVdXF6Zp4vV6+d73vsePf/zjCyqcW7VqFU6nk9/9\\n7neUlZVRVlZGcnIy+fn52O12vF4v5eXlBINBAFJTU7n//vs/M+6dFhYWFzcXnYPfxYS1MsvC4tyJ\\nOJu9/fa7dHb3EzIdKClzcGRchj1tNrakqYj2eLSgB+/gAMfKymhra2X+/PkXXTT3a6+9Rk1dA3Ly\\nbBT3+AaJ4VU3OpqnFQGDxYsXn6dejuRsLm71jY1s27aFv/3tb2zdVkJdY3P0fV8giGmCEexF7asF\\nQHKmjN25QpAI9VThdjlYvXr1mPt8vpwDDcPg2WefZcfO3fhUAXv2cpzZl0cd9ETZgai4kGPSw45z\\n9gT8fY20tjTR2dHOwoULR/SlqKiIt95+NyzuS1uB6UxDkOwIki0s7hOEU/9MPRw368oCbyNmsBfN\\nELHFTRgmb9M0DdPUEQQJZBcoMeBtxAgNjIjHhXD8q79hMy67yK233sKkSZPOep6C7ETtO4HmbceU\\nnZC2AsOWTEhVMXQD3TAQROWkQJFw/23x4MoATz1GoAdRdiC7hkd/DX3WRcFk0aJFHCs7ir+vETk2\\nC1EJF6qiFHasME0zfIyh8cPBXujYFhbyxReAPQVEGURb+H9/K3hOhO+pKVBWdpSOjvbTfm8YhkFp\\naSmvvfYab731Fu+++y7btm2jrKwMh8NBamrquB31Is6kcXGx9PZ0EfQNoHlaCfVUoXYfR+urRgi0\\n41RM8nIyL1pnUgsLi/PLpVRHXErnYmFxIfH5fPziF7+gvrac5DgP990S5J4bNGZNgpx0kex0iUnZ\\nIivmGyyZrdM/qNHYGmTP3kNMnTp1TDGrF4rOzk7ef+8dUhL83LZOO3uDjyAI0NEjcKJZIW/iZKZM\\nmXIeejmSDz74gCeeeILy8go8vgCuuHSS0icTm5SFw5XIQH83rS1NNDU24/EFsLsSyZ68kAk5s4hJ\\nzMblTiYY8BDw9tHdXktPez2pGVOQZNtZjx0K+GhvPEZyUiLLly8fc5+Li4s5cOAQ8cl55E4bX5RV\\nTGwSTScOMdjfy5w5s0lOTo6+193dzc9//nM6OruJTcph0ZV3MyFnBnanOzoeFgSRmLhkMvJmk5yW\\nT1tzFR1trTQ3N7F48eIRky4vvPAC5ccrccZlMHnuNciKHcXuRBSlYUvETEBTA4iiRGrWDAZ6mvF7\\netC0EHFJOcMmNyVZQg2pmEZ44tHmiCHg7cM30IEoSiSn55/ar2nS0VzJ0d1vYpPhhhuuJzMzk2ee\\n+Q2BkMbMy64nd+pCRGn4ONw0DUp3vUFvZyOuuDQKFtyIrNijjhqCICDbnMPOQVYcpGROp7utGp+n\\nB0EQSEob7p4hCCKhoI/+nmZSU1NYtWoVhw4epKe7k96uZtKypyOKkfipsHDWNE1ESYo6pOu6SsWB\\nf+Dpa8fhimfizFUoNieSYkMUZWqPFuMd6MDpTiImLpWAb5CDB/cTFxfHpEmTRjwTkQnd1157jddf\\nf51//OMfbNq0iX379qHrOhkZGedUp7jdbq688kry8nLx+3309nQS8PXhH+wi4O0BUyVjQho33XQj\\n991337hdLP8v0NraSnV1NfX19XR2dqLr+kXpVmRh8XG4lOqIS+lcLCwuJNXV1Tz66KMEg0Hmzp3L\\n17/+dW666SYmT55MVlYW2dnZFBQUsG7dOiZPnkxNTQ2tra0cPHiQyy+/fNRFJp8WBw4coKysjKVL\\nl1JYWDju9vHx8Wzbto2BgQGWL18+zM3sfBEMBnnmmWf461//SmNjI6ZpMnHiRHJzc0lPT8flctHW\\n1kZDQwOtra1omkZmZiazZs0iLy+P1NRUnE4nfX19tLS0sGvXLvx+P7NmzRrTb+oR57mCgoLTJi6N\\nxosvvkhXVxef+9znxl07xsXFUVJSQltb2whjgL179/L8889jmiY333wzX/va1ygoKIiK7yAsPJs8\\neTJr1qzB7XZz9OhRysrKiI+PJz8/f9ixVFXl0Ucfpbu7OyruczgcuFyuEbWTrusEAgFEUSQmJiYa\\niZucnExCQkJ0biPSTtM0VFVFFEXS0tI4duwYfX19zJgxY9jfIU3T+POf/8wHH3yAJEl84xvfYMeO\\nHWzfvp3Y2FgefPBBpk2bNqI/Pp+Pn/zkJ/T395OamhoVnoXnp8yoC+FQXC4XsbGxtLa2Ultby9y5\\nc0lKGm7QkZiYyO7du+nt7WXBggVMmzaNLVu20NzcjCAITJo0KerWp6pqtAaz2U7V2J2dnTz//PME\\ng0Euv/xy5s+fj8vlwm63EwgEeOGFF6LfKZIk0dPTw549e5gzZ86o0d7BYJDt27fzyiuv8Oabb/LW\\nW2+xZcsWKioqiImJOac5IginNaxevZrY2Fg6Ozvp6uqipaWFxsZG2tra0PWw4/r69eu55557LsrY\\n8U8TXdc5ceIEtbW1Jxdc9uJwOIZ9Hi0sLgUsBz8LC4vPBEOdzfyqgCN7JUp87ohYT9mVgj11Fmp/\\nA97mHWzfsQuAr371qxeV01VHRwe6bmJzn1v0jezOxN9xiI6Ojk+4Z6fnbC5uhhrA37SdkK8TBBkU\\nB1LCVFyJeQiygmegD8PbBp569OAg/uY9aN4OXDkrEMSzCzAFUQHTxO/3j6vfW7duJajq2JKnj3he\\nznrMMzgHfvjhh+FrcTL290zOgIIgYkuYiGSPw3viPXbu3M20adO46qqrottExJM+fyjs3GeLR5Ds\\np0RxQzH1k/GyIjhSIGUxdGxH760gmFyAwxEulGx2O5qmhyd69CCCaIOYHJBcGMFBNE8LSmxWeJem\\ngdpfT6B5J07F5IorLmft2rVnPE/TNAl1lxPoPIbh68IUFUiaHxbvAYZuYOhGdNsRJY09EVIXYXbs\\nINh1DFtywYjCZ+iz/tWvfpXKysqww+GJ93BkLY1+D4TvrRGO3o1cM28jdO0Jv+bKgrgCkGSi8sdg\\nL3TtA0SElEWYooK/99Co3xtD3UNb29oJqjq6bobdEQUBqbKGXbv3kJkxgXXr1rFu3bpxfeeIoshV\\nV13F2rVrKSsri7pf+v1+nE5n1B1z1qxZF9V32cXA2RxFZ8+ebV0zCwsLC4tLgj/84Q80NVQxIdHL\\nf9wbIuEMiUSZqSb//gWVl9812bi3l1//+il+/vNfRF0EPm3CY3oTl908533EOAHGXx+cKxs2bGDD\\nhjcIhDQm5M4me9J84pNO1XPegW46WqqQFSfuhHSyJi0iPjmL2NhYJEmmv78PwzCZOHMVvW011B3f\\nxkBPC/u3vsLCK+86q7OeaYSdDsfrzLFjxw403SBr8vxxn7MoyWROnEtzzV5KSkqGiapeeuklOrt6\\niE3MZv6y20aI3j5KfHIml628k32bX+LAgYOUlJSwatWq6PsDAwPs2bMXVTMomLESSVJQbA6EUdzf\\nDUMDM+xCpygOJs9Zx+FtL9LdWol/yuU4HI7o+E+WZGJiYvB6vRi6SsjQSM2eSUdTGc11R5g8eyWm\\nodPaUE5j9X48/R2YhkpCagr9/f38+c9/JqTq5ExZSEbe7BF96WiupOrIJvp7WpAVB5Nmrxkm2DQJ\\nOziqIR+ybI8K8gAUm5MphVdzdOdfaK49Qv6MZcPeB3A4YzHNsPOHKIo8HutMAAAgAElEQVR861vf\\n4qc//Skdnc3s3/Inps5ZTWJqblgEKYCJgaYGkGQ73v526sq34ultRVLszFh0Cza76+Q11Kk+/AFd\\nLceRJBszF92MYo+ltf4AzdW7efHFl0hISGDhwoXh8zBNSkpKePvtt2lpaUXVDAzDxCRc5zU0tlB2\\nrJxXX32VFStWcMstt5w2wux0yLLMokWLWLRoEW1tbTQ1NeHz+bDZbCQkJDB16tSLbvHmp42qquzb\\nt4+NGzdSWVWFbp6KO5cEkcmTJrFmzRqWLFkybJLTwsLCwsLis4jX6+VXv/oVqqqyfPly7r333tOO\\nDURRZO7cuTz00EM88sgjNDY28uyzz/L973//Avf69ETqmEic7bngcrno7u6+IDVRMBjk0UcfpaKi\\nIjpumz179jBhYWlpKVVVVdjtdiZNmsT06dOJj4/H7Xaj6zoej4fp06cjSRIVFRUcPHiQ9957D1VV\\n+eIXv3hWUZSmhReHjWdBSXd3N8ePH8dms7F06dJxn/f06dPJysqiubmZsrKyqBjT5/Px+9//HtM0\\nue2227j++uvPuB9RDLuD2+12/vjHP/Lyyy8zf/78Yc6Se/bsobe3FwjXfRGB32hEnNxkWUaWZZxO\\nJ8FgkIqKCrKzs4fVjQ6HA9M0CQaD+Hw+JEli2rRpHD58mM2bN1NQUEBXVxfFxcVs3bqV3t5eQqEQ\\nU6ZMYf/+/Wzbtg2Ar33tayNc7TRNY8OGDbz99tv09fXhcrmi7oqR+2maJqqq4vV6cTqdw36rT0xM\\nJDMzk/b2doqLi0cINwVBICkpiba2NjweD/n5+dx333385je/4f3336enp4d169aRkpKCJEmoqoqm\\naXi9XhRF4ciRI7z55pt4vV6mTJnCbbfdFn1+urq6eO655+jt7WXy5Ml897vfpb+/nz/+8Y+Ul5fz\\n2GOP8fDDD0fvUSAQ4I033mDLli0jPnP9/f20tbWxd+9e0tPTuf7661m5cuW4hX5ut5vrrruOa665\\nhpqaGnp6eggGgzidTrKysizHvlHo7+9n69atbNq0iZ6enmHviaLIwoULWbNmDdOnTz8n4aWFxf8F\\nLIGfhYXFJ84nLab6tAkEAuEJiTHGMX2UcxW7nStnE1iapkmg7SBGcABkN6QsxHSkogsiQWy47C4E\\nhwhSPCTOBl/LWeNZP4ppqCAI454kOB9iyvMR+xuJbdZFJ6YzMyzGO40gMTK5F3aqE8KiPTkGU/MS\\n7GvAPmFq1MUv8gNBWOQXAkFAiJ2E2VtKsLMMQbKjeVoIdlWA6kFAQ3bE0NrayjPPPMPx48dHPU/T\\n0PE1bkPtqwu7YQgCKG5w55/sdzguOxyHa4Khhid/pI9MKpxGcBhh6LN+pjhbU4gHQwgfL9AJ3jrQ\\nfOGduLIgbSmISqTzJ8V/e8FQEdw5ED8d9BCiIx5/+7Zh3xufdBTzmRBFkTlz5lx0MXoXI+dbdGlh\\nYWFhYXEx0d7ezr69e5BFH9+9Rz2juC+CKMJd12m0dQcpq+1jy5Yt3Hzzzee/s2MgIjQJqee+j2AI\\nQLggLhw7duxgw4Y3CIZ0Zi68gYzcWcPe1zWVQzv+ihoKkJQ+mekLbsQwNAxdw+PxEhsbe7J20hEQ\\nSMmcTlxSNmW7/4p3oJuje/7B/OVfOGMfPANd4YjXcTpy9fT0YJgm8UnnNhEQn5xFY9WpiSYIT4Qc\\nPHgI3RCYveSms4r7IsTEJjFt7ppo7O/QCY+tW7cSDKnEp+Ric8SGI21HEfcBmEZYxCSIEggCMXGp\\nxCZmMdjTTFdrJa6YBcPqRkVRiI114/P50XUNZ0wiis2Jb7CbTW88iWGoGLqOYWiYhoGs2OjtG2TT\\npq34A14Um4sJuXM4mcUc3W995R6qSjejqSEEUSI+JZe4pCwEBEzCi6gMPfwcmIaBGvIj2xxI4qnr\\nFZeYhSs2Bb+nm47mSibkzBh+rqaJIJxy3khJSeGHP/whjz/+OM0tbRwq+QtOdxLpOTMxRRsCEAp4\\n6GqpwOfpBhNszlhmLr4VV2wyQf8A7Q2ltDeUooZ8iJJCwcJ/IiYuDVUNMiGvEEWWaajcyUsvvcT8\\n+fMRBIGXX36ZoqIPCak6ss1F7rR5pGZORbGFI3T7e1poOnGI7t4W3nnnPcrLyz9WFN6ECRMuaCTW\\nZ5H6+nqefPJJOru7CBk6hiziyExBtCkYqoavtYuyqgoqa6p57bXX+MY3vmE5H1pYWFhYfKYpKSlh\\ncHCQKVOmnFHcNxS32813vvMdHnjgAcrKymhoaCA3N/cC9PbsROqYSHzpuRAReV2Imuj3v/89lZWV\\nuFwuPv/5z49wWmtpaeHDDz/ENE2WLFnC9OnTCQQC6LoejVOGsMuW2+1m3rx5pKamUlRUxMaNG8nJ\\nyWHNmjVn7ENzczPAuGqiSB2TnZ19TmLKiEtcc3PzMPHQzp078fv9TJs2jeuuu27M+1uxYgVHjhxh\\n//79bN68mVtuuSX6XnFxcTRKVxCEMzqP6Xp4jigiVnM6nfj9fpqamhgYGMDpdA4TQjqdTiRJwu/3\\no+s66enpqKrKhx9+yN69ewmFQqiqGn0eXS4Xra2t1NXVoaoqM2bMGCG+CwaDPP300xw+fBiPx4Mk\\nSWRkZBAbe+oHi4hzoK6HjSh0XScmJmbY5zczM5Pm5mZ27drFHXfcMcKN0jhZ/0VqoiVLlgDw3HPP\\nsXfvXvbu3UtBQQEFBQUoioKmabS2tnLo0CE8Hg+CIDBz5ky+/OUvI0kStbW1lJSUcOjQIQzDICcn\\nh/vvvx+Hw0EwGOQrX/kKzz//PJWVlbzxxhvce++99Pf38/jjj1NfXw/ApJMLaSZPnozNZsPr9XLw\\n4EE2bdpEe3s7f/zjH6mrq+Puu+8+p0VKkahrizOzceNG/vSnP0U/D6mpqWRnZyPLMgMDA1RVVbFn\\nzx727NnDtGnT+MY3vjHs+bSwsAhjCfwsLCw+Uc6HmOrTxuFwgCBg6uc2o3WuYrdz5WwCy1B3eVjo\\nJSiQuRbsiQimgakHCYVCyLKMJEpowklhmjsXlFjMlo2ofXWEYtKxp8wY5cin0DwtSJJAWlrauPp+\\nPsSUETGeIblQ4sf3g4ASn0egdR8trW2UlZVFhVxbt27FH1DBPTks3DuTq2FkVb4gRToJcVOg5zDG\\nQC1acj6KEv5zLAjginEhyzLBYBBd1zHtyQimgdZXi9fTEhYMGhoIJogKg94QxypOUF5RhRYKYdoS\\nkB3p0eks0zRPifsEBRyJEOyBuGnh2NsoIkjSSaGfCoYW3sdQkd/Jvpu9Rwj1VI0Q+H30WVcUha9+\\n9atMmzaNoqIiWlrbCHYfxgyqJ108wrG+GHp43xHnPs0P5gD422CgOir+E9w5kHrFKTGlLWHY98bq\\n1asvKffQS4ULKbq0sLCwsLC4GNi0aROYQS6fo5OaOHbXO1GEG5brHKny88Ybb+D1egGIiYlhxowZ\\nTJ069VNZwZyQkIAgynT0ivQNMibB4kepahABCZvNRk1NTXRVe1paGjExMZ9YX3Vd5/XXXyeo6kwt\\nXDtC3AfQ3nQcv7cfV2wK0xfcgCTJiJKMavoxTJ1gKIjNpuAP6Oi6iihK2BwxzFx8Cwe3vkh3ey2D\\nfe3EJqSP2gfTNGiuPYwsC1FHtbESCoXABGmMIryPIp2soyKThwCbN29G1TTSsqZjd4wvCiwtu4DK\\nI5uor2+gpqYmGpF14MABNE0nNbMABAFxDPXb0Gc3PXcOg73N9HXWMSF3Nk6ng6FiPEmSiY2NRdM1\\nQsEQkmwHAYL+/vC+RImktInkTVuM3eHGMDTqKnYTbKkiISUPHRmPx0tMTAyCINBce5iq0s2YJjhc\\n8aghHxPyCqN1QvjIIpKsIEkKuq5i6CpaKIBgcw6J1hWYkDuXE2XFtDeWjxD4+by9CDDsmZ4wYQIP\\nPfQQRUVFbN68mZ6eXurKt6Gq4dpJICw6NQwdUZLQ1QDH9/0dw9BRgz7CQkVwxaYwtfBa3PHDa+yc\\nKQvpaCqnu7uHQ4cOUVlZyQcfFBHSYPq8a8jImzXCadAVm0RG3mwGels5uuctak7U8dhjj/HAAw98\\nLFcai9Gpqqri0Ucfpc/nQUx0k1g4ldjpeYi2U58bQ9PwVDbQd6iK1q4ufvGLX3D//fcze/ZIJ0oL\\nCwsLC4uLHcMw2LhxIwDXXXfduAQziYmJXHHFFbz//vs8++yzzJw5E0VRiI+PZ+HChZ9aTHZEIFdV\\nVXVO7Xt7e+nqCi8CCgQCVFVVRcVTGRkZ43K5Oxv19fXs3r0bURS59dZbR4j7APbt24dhGMyYMYMZ\\nM8JjWofDgd/vR1VV7HY7kiSh6zqqqqIoCllZWSxbtoxt27bxzjvvsGrVqtPe28bGRqqrq3E4HMya\\nNbImOx0RwdrHcTOOCCgjNZFpmhQXFwOwZs2acdfUa9asiQr8brrppqgYqbq6Gl3XsdlsKIpyxnkF\\n0ww7hUcQRRGbzYau6zQ3N5OYmDjiGbDZbNhsNlRVxefzRWNtu7u7gbCo7+qrr+aKK67Abrfj9/t5\\n9tlnGRwcZNmyZXg8nmjkqWEYPPvssxw+fDjqNmgYxohFOpIkIUkShmFE56e8Xi9utzt6fk6nk4SE\\nBHw+HwcOHGDlypXR9oZhRM03hgqzlixZQmZmJu+99x67d++moqKCo0ePYhhG9DkLBoOYponNZqOx\\nsZFHHnkEn89HIBCIxvouWbKEL33pS9GaxTRNZFnmi1/8Ig8++CA7d+7k5ptv5oknnqCxsZHU1FT+\\n3//7fyPEjsnJyeTm5nLjjTeyY8cO/vd//5dNmzYhyzJ33XXXmJ8Ni7Hz97//nQ0bNgAwb9481q1b\\nx8yZM4d9bnp6etiyZQvFxcVUVlbyn//5nzzwwANWvLGFxUf41AR+AwMDlJWVUVFRQW9vLx6PB7/f\\nP+wP3HgRBIGf/exnn2AvLSwsxsvHEVPJcbn4kaipOcH3vvc9ZFm+KKIb09LSkCpr0DytyK7xF5Ca\\npwVRDA+On3766fMaS3k2gaVpmgS7ysNTBKmLw7GrAIKIINow9VB0si0UCmEaGoIojyme9dQxDELd\\nFcQo0rDB/Vg4H2LK8xH729HRgaYbmI608PUZL84JwGFMzUMoFIoK/CA8uWS327DZbWiqRpAAmiAg\\nCoARnvDDFostdTZKbGZUIOVr2Iqp9mC6J+L3B9F1E5fLNVLQ2bkrfBTn6BOSCCJINtBDJ4WE4nAh\\noHMC9B7BCA2OaDqasHO0ONsdO3Yw6PEiOVMRBAk9OICpejH9rRDogI+4fwiKO+zaFzc1rII8KZoU\\nhOEizBdffPGScg+9FLjUItstLCwsLCzOhqZpbN26FYwAaxdrY26n67D3mMjGPTK+gIEU6uLdt/+G\\nJIogiGwQbGTn5LF69WqWL19+QVwfIsTExDBv3nwO7tvG1gMq/7RKH1f72maB43USmqnz4osvIBBp\\nLyDJNhYtWszatWuZMmXKxxYwlpaW0t7Rgd0ZR/akeaNu03TiIKZpkjXpsqggTgBk2YYa8hMKhoiN\\ndRMIBMNuboqJgIDdGUda9kxa6w7SdOIQMxZcM+r+u9vrCPr7yc5MZ+7cuePqv9PppG/Ai6YGkZXx\\n32M1FAgP9YfUQ7t27ULTTLJOcz1M0ww71xk6smIbNk6TJJnMiXNoObGPXbt2RQV+g4ODGKaJPSYh\\nHDc7hr4N/bXP6Q7XoZoawDQNVFVDFMO+5qIoRPsgSzKySwZTRyAck5szbTH50y/H5hguDG1vqkCS\\nbSSmTwIEVE3F4/EgSwbHDxZhmiaT56yjuWYfashHTNxwoVx48ZEJAtHYXkNXUdUANntM9Bxj4lIB\\nCAV9w66h3++lte4omhqesH311Ve54ooryM3Nxe12c8stt3DTTTdx4MABduzYQUlJCSYSWfmF2Bwx\\nVJdtwzR0DF0n6B8I90mUSE6fwoSJhcQlZg37fJhmxBlDInvSfE6UbeJvf/sbTU3NhDQoXPp5ktMn\\nnvGexCVmsPDKu9i3+U/U1jXw5z//ma985StnuZOfbfx+P11dXfj9fmw2G4mJied1wqi9vZ0nnniC\\nXq8H59Rs0q9ejDDKRLgoy8TNnERswUQ6N+1noKyWp379a3784IPk5OSct/5ZWFhYWFicDyoqKujo\\n6CAxMZF580Yfg47G4OAgmzdvZu/evXi9XsrLyzlx4kRU3PPKK69QWFjI2rVrmTNnzgVd/LRgwQIc\\nDgfV1dU0NjaO++9zUVERfr8fRVF46KGHog5WoiiSmJjIqlWrWL16NcnJyR+7r8XFxRiGwdy5c0fd\\n3+DgIDU1NQiCMGwxgSiKKIoSdYaz2Wz4/X6CwWB0EfaUKVM4cOAAHR0dlJaWnvb+RgSey5YtG5fx\\nRcQFL7LY7Vzw+cLj9IgIrKmpiaamJuLj41mwYMGobUzTJBAIRIV3Q5+tgoICMjIyaG1tpbKykpkz\\nZzIwMIBhGNFn82yCxMh2Q4kI6QKBAJqmRZ+JyLaR7SOCPEEQkCSJ1NRU7rnnHi6//PJRRYGKokTv\\nSyAQAMI14YEDB1AUhZtuuom//OUvKIoyon2kJhJFMeoyqOs6fr9/2CImt9uNx+NhYGAg+pqu6xw8\\neJDOzk5M0+T9998nKyuL5cuXExcXR05ODv/6r//KHXfcwbZt29i8eTM1NTWkp6ezaNEiOjo62Llz\\nJ4Ig4Pf7oyYe8fHxrFy5kiuvvJLU1NTo8QzDOOmgLpCVlUVBQQHHjx/nqaeeorGxkbS0NB588MEz\\nOkhKksSKFStITk7mscceo6ioiJkzZzJ//vwz3s/POr29vfT19aGqanTh5fn8jamkpIQNGzYgCAJf\\n/vKXWbFixajbJSUlccstt3DllVfy2GOP0dTUxJNPPskDDzxgGUFYWAzhggr8TNPkrbfe4rXXXmPv\\n3r2f+L4tgZ+FxafPuYipTNMk1F1OsKscQ/NjmFBT13xyMuvTj25cuXIlu3bvwdtdgT111rhEYoah\\nE2g/hKj7OVZ+HN0Uzmss5dkElpqnBSM4CJILYrKHvylKYAjRQkKSRDTNCLuridJZ41kjqP31iLqf\\nzNzsca3Ogk9GTPlRgdlosb+maaJ5Wgj1VGEEB6JCRtEehy1pKrI7M1pAjRb7G3EaRJBPG817RoST\\ng1FDQ1VDDAzq0QQpSQw7m8iKHBb+2WU0QQAzHKvrzFo6qkBKEGUQZQRXFiYnY35NE+Ojgk5DG96H\\n6A4YMusmhiNyjSEiz+hb4XYREaYJYSFiMIDaUY6kBaiurubpp58eJl4dGmdrmiZbSnYiJk3DkTYH\\nT90m1N4TCLb4k8dVw/8rboidHBYVDi2ATQOE8GRWRIQZ6DpEcXEx/qB+ybiHfpIYhsHRo0fZunXr\\neRUZf5RLLbLdwsLCwsLibPT39+PzDhIfq5OfNbYFjL4APPWKjeO14QFZcrzGgukBMlIlbIpMz4DA\\nrlKJpnoPL/7vCTZu3Mh3v/vdT2TyZ6ysXbuWgwf2smlfgOuW6Shj/DWprkXg4d/a8YfAaQ+gCD6y\\n0gzsSvi8mzskdm3fyK6d25k0eSpf//rXR3WYGCvFxcVomsHEqfNGrdsGetsY6G1DVhwkZ0wf9p4o\\nSgiiiGkaaJqOoiiEQiG0UADZ5kQAJuQV0lp3kLaGMqbOuXKECC8Y8FJxsAhFFlm9evW4430yMzPp\\n6Oyms7WanMkjJ5/CkxjGyXJSQJTEYdG4Xa3VSCcnOCBc9/T19WGYJnEJp9wZTNNk4GRMa0dzJfrJ\\nsb0gCMQnZZI1aR7pWdMRJZm4hHSaT+5naD/CubbCWevjSF1lGvqQ18STrxkYhnkyiulUG1lWsNvt\\nKIqMd7CPgG8A0zSZWriWvGmLRz2OroXdPhTFic3mQg350HSNppqDmIZB8oRpTMidS2PV7nAfzuTC\\njhkWfBp6NLo34qoYiTg2dC3qNBEKhehsLicU9GEaOgcPHeHQ4VLefucdpk2dytq1a1myZAmyLLN4\\n8WIuu+wympqaaGxuIz27gMH+DhTZRlrOHPIKlqOrQURJRh7iHjgUwzQwDR1RFJBlmYy82VSVbqai\\nogKb3cmkmSvOKu6LYLO7KFx6C7uK/sD2HTtYv379JRmDVFtbS3FxMbt27SIYDJ0Uc4YX0s2dO5c1\\na9Ywd+7cc4rkOhNvvvkmPYP92Cemk37NEoSz1FyCKJK6ZiFGSKW/uoXXX3+db33rW2M+nqqqVFdX\\nh0W4hkFMTAz5+fkjotMsLCwsLCzOJ5Fo1sLCwjH/ba2treWJJ56gu7s76iDndrujoiK/309fXx+7\\nd+/mwIEDrFq1ii996UufqPPdmXA4HCxbtoyNGzdSVFTEl7/85TG3LSoq4pVXXom60wUCgehv94qi\\n0NfXR1tbG//4xz9Yt24dd9555zmPSXw+Hzt27MAwDAoLC0fdprS0FMMwyMvLG+HeLMsyoVCIUChE\\nXFxcVHwWDAax2+0IgsCMGTPYv38/mzZtGlXgd+TIkfCiNzhrjO9HSU9PR5IkGhsb6ezsHCbogpOL\\nk04Ku+BkTSSK0ZpDVVVKS0sBojVRpI7Jysoa9rxomhY9j+rq6mi0rM1mY8GCBdFIV0EQyM3NpbW1\\nNbqvyLYRziY2FUURXdfRdX3Yb/CR89E0jcHBU4YKgiCgKErUSbGxsRFdD9eoD55hAUjE7S4hIQFR\\nFPF6vfj9fj788EN0Xef666+PCt7GMhfgdDrxer2oqophGNE2kf8jz0owGETTNIqLiwkEAkiSxPbt\\n2wH429/+xqJFi7jmmmui49LrrruOWbNm8dBDDxEKhfjCF77AI488QkxMDN/85jeZNGlS1IjkoxHB\\nESKfp0hE8qpVqzh27BjHjh3D5XLxzW9+c8zx0DNnzuTzn/88f/nLX/jggw8uSYGfpmkcPHiQjRs3\\nUl5ePsxwK/L9tmbNmk98cZGqqrz66qsA3H333acV9w0lMTGR73//+/z0pz+ltraWXbt2jaldhIGB\\nAWpra/H7/UiSRFxcHJMnT75gfy8sLM43F+xJrqmp4YEHHuDIkSMAH8upz8LC4uJlNDHVmTAN/VR8\\nKIAch+nOQ3JPwBWbcFFEN86ePZuMCemcqGtG7W/AljBxTO1MQ8db/Q6m6scQFYLm+Y+lPJvAMtRT\\nFb7OcVNHFab9/+ydd3Bc12Huf7dsX2DRO8AKkASrWCR2saqZVrcUF714ZEua2ImtPCdW8uzEGTu2\\nkoxi+bnIUqzIkWxLciRb9ItFiQUkRVJiLyAEkARA9I5dAAtsv+39cbFLgCgkKNGWNfubwYDD3Xvv\\nOede7J7yne8TRBlDN3do2Ww2NC2MoccQBNsV41kBtHAfkfbDuGwyW7dunbJgaCIxZVxEFovF0PTx\\nxXBM4Bw4MvZ3lJg0OsSYb6JwH8pAE6ItBVvWPKyZ88aN/Y3vJDPFclfYKSiIpiDN0C61uW4OPhBl\\ndN1AH7HYpQoasVgMSZKw2awoAy2mk4MgkjKJQMqIC/ckG4Jkw9CiKINtcLmgMy7WM8ZzSRyh8hMk\\nYGTZhwdR+vDin2QhGo0OW7XrGME2BCWAZmg0tXbR1tkzoXj18vtsxIZMEWnuarBdeaHa0FUELln1\\ny+4Col0nCChRsKZ/aFHMHwd0XWfPnj3s3r2bzq5uoop2XUXGl1/7DxXZ/scSMCZJkiRJkiSXY/YZ\\nDZz2q5vzCEfhX//LSnOngMetcvfNAW6YEzajRO0OHHbT7eDBW1RO1Chs3xejo7WOf/7nf+Yf/uEf\\nPpAYbiqUl5eTl19EV3uYn72h89h9CtIVvlrPNYo8+XMLimowLU9hy006Ny81cI9YQ/IOwP4TCu+c\\nCtNQX8W3v/1t/u7v/m5MVNDVcuHCBTTNIH/a+BuNhgZ6wID0nBnjxuCKkgVNMRcnLBZ5eCFDQ4mF\\nsFgdON0ZOFMyCQf6CAX6SU2/VM5wcIAz776OGhtiTtnsa9qksHHjRiorK6mtrKC79TyaGkOSLVhs\\nbjLyS3F78kYtHsXdIqxWG5oapbvtPHabxM033wyYc2+KogzXTcIwdAa8HVyo3EPA3018ai6+cUbT\\nFPq9bQz42qmt3MuMeauxO1IwDBLngWE3DAGUWBCYvP8uSjIoUQxdw9B1BFEgGg4AIFmG3THiPwbD\\njn4KqqogiiJt9SfRNJWUtNwJxX0AkmyOoTUthiAIyFYH0fAQXc3vY2CQP8NcfJQtVmIRUJUwMPGC\\nj8Hw86BG0TQl8bwow859omxhaGjIHGNGArRfPGEu/pXdhCerkMH+Lrpaqnm/5jwXaus4ffo0jzzy\\nCBaLBUmS2LRpE796+VXaGk7jdKdjYDobWqwOLNbJXU501bwXcScPi9WOLFuIRjQsSBTOuHqnHABX\\nSiaZuTMY8jVz8OBB7rjjjikd/1FmcHCQn/70p1RX16BqOqqm43RnIltsaJpCONDHiZOnOVNZSW5O\\nDl/60peYOXPmh3LtQCDAkSNHUHSN/JuXXlHcF0cQBLLW30DzxXZOnz6Nz+e7oqDb6/Wyb98+Dhw4\\nQL/fjzE8rhcAm8XKypUrE4vUSZIkSZIkyfXmcge1K9HY2MiTTz6J3+/HbrdTXFyMIAjouo7b7U6I\\nMhRFwev10tXVxf79+wmFQnz5y1/+0AX6E7Fp0yYqKio4cOAAc+fOZfXq1Vc85vXXX+eVV14hFAox\\nMDCA3+9ncHBw1Bq5y+UiMzOT9PR0duzYgdfr5a/+6q+uSYzS1NRENBolNzd3wrFi3Mhg2rRpY14T\\nRTHhLKeqKlarlUgkQigUQtd1HA4H06dP5/jx47S0tIw5/uTJkzz77LPous62bdsSIrurxeVysXz5\\ncg4ePMj3vvc9MjIyiMViOJ1OioqKWLly5ZiYZkmSEnG2J06cYGhoiOLi4kSfLj6Oia+5aZrG3r17\\n+f3vf5+4F/Fo2Lhb3XvvvceRI0coLi7moYceShwbF5W5XK7EM3o1eod41K45zjTPNVJQONK1Ly76\\ni4vnJEmiuroaTdO47777JhVg2Ww2FEUhGo3i8XjQdZ3q6mpaWyI4fpAAACAASURBVFtxOp3Mmzcv\\n4bqnKErCPGkiBMHcUKSq5tpcfF1MUZTEa3G3xbNnz/L+++9js9l4+OGHEQSBM2fOUFlZyZEjRzh2\\n7BgPPfQQGzduBKCkpITZs2dTX1/P4cOHEwLHgoIC0tLSJm1PwzASEcxx57mcnBxiMXMsOH/+fIqK\\niiY7xRg2bNjA9u3bOXfuHB0dHRQUFEzp+I8y58+f57nnnsPn8yVEph6PB1mWiUaj+P1+du/ezd69\\ne1m8eDGPPfbYKMfGD8LJkycZGhqiqKhoSoJfj8fD3XffzfPPP09FRcUVBX6GYVBbW0tFRQUnT55M\\nGNmMPN+GDRvYsGED6enp11SXJEk+KvxBBH61tbU89NBDozotH7Z1clIwmCTJR4ORYqorYRjGJXGf\\nYDEdxpyFZjSoLCHZzF3jf+zoxnjE6Esv/ZJg+3tIttQrClUMwyDYuBs10AmyE0v+SpxZs657LOWV\\nBJZ6dNgy2zlJPKthoCgxNF2KVwZDjYBoQZggntUwdBR/M5H2wzgsBqtWrWTz5s1TLn95eTme1BSG\\n2jsZPPe6KThExJCcGK5pGPYcRgrqRorhpGjnuM6B8djfWDhIrPU4eqDVLLPsgtTZZp1Eiyl4C3Vj\\nDNahRYcItx9DDfZgzZw3JvY3JycHQTgH0R5w5TGZyE8QJVN8p2umuM4Awl3mi7LbbFdRIiGuM3QM\\nXUVVNTQ1CH21YKjY8lZM7n42UrgXj1wONCEYxmhBpyUFogMQ7p5ATDeiLqIEuukOkYgRGi67LjoI\\nhczFZxQ/Qt8ZBFHAlnsjltSSScWrl4tmjYlcBcdD18AwkGTJFHYCgmjB0FQMQcL+IUYx/6mjKArP\\nPfec6aAXVdGl6y8yHskHiWy/WtHlH1PAmCRJkiRJkoyHuQFBIKZc3ZzHf/zWQnOnQE66wtcf6iMr\\nTSMchUhs9PGyBCsX6iwqjfH9X0J9extPP/003/rWt67rLmRd1xkcHCQcDvPpT3+aZ575Cceqe1E1\\nePguBfcEOqSWLoEnf25BVQ1WLQjzhbtVXM6xkS9ZaXD/FpXb1qj835cN6lrb+P73v88//uM/Ttlx\\nSlVVczwqCFht409Gq4oZUTSRgCruhmduZAEwMAwwNI1oOGDGIsn24XNFh53wOmlrOE1323lkyWDG\\n9BIef/zxKUfcHD16lB07dhAOR0AQ6e9tueRibUB32znsTg+5JQvJKV6AgDAc6WRuuulsPIUo6Cxe\\ntCThaB6PVgpFBhno9+H3tVNftQdD15AtdnKK55NXsgi7y5zg1tQovR0X6Go6Q2jIS21lBWmZhYAx\\najw0Z84causu4uuqw5Mx+cKJgIAoWdA1xRTKCRa8HefAMEjNKEK22BElOTEKMTAjgzVVQYnF6G6t\\nRtcUShdtnPQ6DlcaAgJ+byt5JYsQBZHAQOdwHG8Wqenm4qLbk0doyIe34wJuz6Vx8dh5RQNRktBU\\nwRQnGjqCIOLtrAXA7swwxX3RILVndqDGQmTkTmfODVsRRYmCaQuZveBmulqqqa96h/cOHyEajfKV\\nr3wlEQX1m9/8Bl93A5pm9pWvZhyj6xqapiAIYLVeesYUJYooyuQUzsFitV/xPJdTNPMGzvY0cuDA\\ngY+NwM/n8/Ev//IvtHd0YQgWCqYvoWjWDTjdlxZ0lGiYjuYq2hrO0NbexZNPPsnjjz8+5TSC8Thw\\n4ADhWBTHtHwsnql9nskuB65ZhUQvdrJ//37uu+++cd9nGAbbt2/nd7/7HVFNRdE15IwULGkpCKKA\\nGggz0OWj4p39HDx0kGVLl/HYY49d2rSYJEmSJEmSXAfim7LjYqjJGBwc5Omnn8bv95Oamsr06dMR\\nRTEh9hm5lmyxWMjPzyc1NZW6ujqOHTtGfn4+n/rUp65PRYZRFIXBwUFEUeSuu+5i+/bt/OxnP2No\\naIgtW7ZMKDDcsWMHL7/8MsFgkNraWkKh0LjvDQaDBINBvF4vM2bM4OjRo6SkpPCFL3xhymvpcbHV\\nZGOp+H2ZaLwSF5mNjMk1hg0QwuFwQtQWF3LGnfAqKiqorTX7yjfffPOE/ZeJiEaj7Nixg8rKSiKR\\nCJ2dnXi93kR5zp07x+7du5kzZw633norc+bMQdf1hCgvEAiwY8cODMNg06ZNibaLj2MGBwfx+/38\\n9re/5Z133sEwDHJyclixYgWLFi3CbrdjGAb9/f2cOnWKU6dO0dzczL/927+Rn2+ut8VFq+np6eTk\\n5DA4OJhw5ptsXG6xWBBFMVFeQRCIRqNYrVYKCwtxOp2jng1dNzc9KYpCe3s7fX19iKJ4xTbNyckh\\nEAhw7tw5Vq5cmRA9xh0dZVnG4/HgcrkYGBhgaGholMvd5WMiwzDGCPx0Xcfr9SKKIgUFZhJWTU0N\\nL730EqIo8sADDySEXBs3bqS3t5e3336biooKXnzxxcT9AVM0W19fz29+85sx7oCTEYlE0HUdSZIS\\n7S6KIrFYDIfDcU1rk06nk1WrVvHOO+9w8OBBHnzwwSmf46PIqVOn+PGPf0w0GiU1NZX58+dTVlY2\\n6u+/r6+PmpoaamtrOX36NN/97nd54okn8Hg8H/j68bjuzZs3T/nz7MYbb+SVV16hqamJhoaGCTdi\\nBYNBfvKTn1BTUwOYn2Fz5szB4/Ggqirt7e10d3fzu9/9jv/5n//hgQce4NZbb/2DxrwnSfJhct0F\\nfuFwmEceeQS/3z8mYz4pykuS5ONHXEwVj++cjJjv3CVxX8FmMz7UMHetXP69+oeObrzcDSocDmOx\\nSAiRAIGLb+EoWjNuTCqYYrdQ6yEUf7Mp7ivajDOjYEIJ2IdZtysJLCcVUhmXPpdNVzl19OvDca0Y\\nOnoshBbxY+iKGXXru4CohXHZZFatWsmjjz46JRHNSJFOr9eHgYgeHUIQxOF95/0QbEewuCG1zPwR\\nuCSGC/nQeo5iERQ2bdqUuHZ8p5OqxFDbDmGoQVPMl3UjOIsgcf5h0jLAMweCbeA9jjLQhBbuQxIZ\\nFfu7fv169u1/By3QCGnlIFknrpwgXXLxizv1DV00f6fMNkV/iQdeGBbnyaBrGIMNoAQRDANrzviW\\n+nFEWyqE+yA0LNwTJVCDptmhY4SgM2UmBFphsA48cy8J/+INcWllDYi/pl/6PVgPhoHuKDYXuSI9\\n4D2JYKhY0mZiz73B3L11BfHqSNEs0vBgYlxXwREY+rCjpDkBkSiqrpiCLlFAvkr30MsZL4r5Txld\\n13nuued47/BRwoqAvWj9uJ9Z11NAfS2R7XGuRnT5xxYwJkmSJEmSJOORmpqKKFno84v0+SFjkvnQ\\n1m6B0+dFbFaNr33WFPcBqBqAMO53sdMOj382xj89K9Da0sCZM2dYvnz5h16P/v5+9u/fz/79+/EP\\n9BPvLGo6qKqN4zUCZ+skVi7Q2LBcpSDbQBJhICDwXqXEa7tldMNgxbwIX7xHwemYXEzidsDXPhfj\\ney9AS1cLb7755pQn1BNRsIZBwvL7MkbGq15O3LnBwBjRNxZGauwwMNDUGLFIkNOHXkO2WNGUCLIk\\nYrdKrFixnIcffviq3UrA7Le98sor7Ny5i5iiYXemkZlfRmpmCVa7G8NQGezroLulimh4kJYL7xIY\\n6KLshjsQRAlNVehtq6a17hgYChs2bEic+/z58/j9fjRVo6XuOL1t1RiGTk7xAmaUb0i0hzHc3xcl\\nC7nFC8gpmo+vs476szvxdjUgS+Ioh4+NGzeyc9cu+jrrKJp1E7LFNml/T5JNgZ+uKSixMH1d9SCK\\n5E1bjCBKo+6UgIAkWRAEifqzO4mGhzAwsNknj43NL5lPQ/UhfN31xKJBrDYXihJBAFwjnA/zShbR\\n01ZNT2s1JWWrE22QuP6o5+jSAqdhGKhKBG/HBQzDwJ1eQGvdEbwd59FVBXdaDotX3TMqUleWrRTN\\nvAFPZiGnDrzKqVOneeONN7j//vtJSUnhgQce4Fe/ehlv10UEQSQaGb2R7nJMN8nI8HjInlgE1DQF\\nVYkiCCLpOWOdWK6G9OwSdN3A6/Ve0/EfNUKhEN///vdp7+jC4c5m8Zr7sNnHLnRbbA6mld1I8exl\\nnD+1k+7Wan74wx/yjW98g5KSqW1SupyqqioUXSe7fMY1HZ86fybddW1UVVWNu5hrGAYvvvgie/bu\\nJawpuMqKyVpUij0/c9T8e2xgiMH3LzL4fgNHTxxnYGCAr3/966NEu0mSJEmSJMmHSdx59uLFi1d8\\n7759+/D5fNjt9oS4zzCMhPvSeGMil8vFzJkzqaurY9euXXziE5+YUv/7ajAMg4aGBvbu3cvRo0dR\\nVXXUa+FwmJdffpm33nqLDRs2sGrVKtLS0tA0jY6ODnbt2sWuXbuIRCLU1tYSDAavuDErFArR0NCA\\nJEns37+fm2++mdLS0imVO95ek62/X+pDamNeix93uVnPqL5FLIau63R1dfGVr3wlkfID5pz9nXfe\\nyR133DEl8Yzf7+fpp5+msbERwzCYPn06y5cvp7CwELfbTSgUorKyklOnTnHhwgXq6ur4zGc+w9at\\nW1EUhXA4zEsvvUR9fT1Wq+leHK9HTU0Ng4ODNDQ0JMR9oihy5513snDhwkQ54456aWlpbNq0ifXr\\n17Nz505OnDhBdXU1Tqcz0T8URZENGzbQ0tKColxKxJqMuBtivK0EQSA3N5f8/PwxbSWKIjabjVgs\\nxnvvvYeiKLhcLhRFmXRee+3atYnnduXKlaPEsnFHOkmSWLJkCQcPHqSrq2vcGNv4GChelpHt4/V6\\nUVWVadOmEY1GeeGFFxLpjVu2bOETn/jEqHNlZ2fz0EMPUVBQwC9+8Qt+8YtfUFxcTGlpKTfddBOH\\nDh2ipqaGSCSCzWajr69v1FrcSAzDIBKJJKKIHQ5Hou36+/sTor+5c+dOcicmZt68ebzzzjv4fL5r\\nOv6jRn19Pc888wyRSIT58+ezevXqcT9TMzIyWLt2LYsXL+att96ipaWFH/zgB/z93/99QrB9LUSj\\nUerq6pAkiVWrVk35+PjfckVFBVVVVeMK/AKBAN/73vfo6OjA5XKxadMmNmzYMMoBPS4Q3rt3LydO\\nnODVV19lcHCQBx544JrrliTJH5PrLvD7z//8T7q7u8cI+/Ly8rjrrrtYsWIFpaWlpKamJicWkiT5\\nGJCTk4NUexE10InszJrwfYZhEPWeM9dNsm80xX1gCogERk2Kj+RaohunwmRuUAZg6DqGFiDUtBfB\\n6saWNRfZXWA6iA2L3aLe8xiRPhAtyDk34kqfWNz3YdftSgJLYYJ4VsMw4itWkyCYkbSGgR7xMXT+\\nNUTJgiyLuCwSBSVFbN26dcrlHivScSNlT0eVMjDE4cFKpBeG6jGUIPhOI0S9kL3KFMNFuqH3GKhh\\nDFmkvr4+sRPqueeeo6mpGXQFI9YPsgvy42LSRO1HNASACK4SDDkFo6sCI9SLxW4dFfu7YMEC8nJz\\naO3owQi0IHhmT1pHQZQxtJgZbxvuAjVoOuk58hMuIWMbZhD6z4ChgiCi9tchZc2b8BrWjFJTMDtY\\nB2mmcE8wNPO2CpccMXDkI1hcZlsG28A9etFCQACBRKSP2S66ee+DbWbZJRtGtB+hrxK0EAJgSZuO\\ns3jdZZFhE4tXt2zZQm1tLe8dPkow1G+2e2giV0FMwaMeS0TzWm2XBhZqoAMEcxH3atxDx2O8KOY/\\nZfbs2WP+TSkCrkmineH6CainGtl+OZOJLj8KAsYkSZIkSZJkPOx2O8uXL+fY4b3sP6lw76axQrI4\\ne4+ZY561i8PkZpiLK5oOqmZujrRYxp9IdTvgllUqL78doaKi4kMV+MViMX7xi1/w7qGD6FoYjCgu\\nu4rLYaCoAgNDIggWwhEIRWTeOWPnUKUyvCHEAEQ0QyYUVUlPUfn8XdoVxX1x7Db4X9sU/vn5MAcP\\nHuTee++dkihfkiTcbjfh6ADhwADOlLH9H5sjBQQI+LtH/b8+LAqMC93A7COJkmyOTQXBdDqPRYiE\\nBjAwiIQGsdmsZGVlsWHDBjZu3DjhQsRkvPrqq7z99k5iKpQu2kzB9IWEwhGUmDLsGGglNaOYwlk3\\n0tdVx8WqPfR1X6T21JvMXLCFruYztF08hqbGsFhldu3axaJFi6isrOQnP3kGRdXRNJWOhuMIgojD\\nlYESC9NQvRdXajbZhfOQLXZGCiIFAbIKypBkC+eOb0dRwqPEToWFhcwvL+fkqTN0Np5ievl6ZHni\\nBS1xuC1VJUbLhUPomkpGXik2R8qYzX0ASixMfeVO+nsah6OfbFyo3MNNmz8/4UKh3ZlKVv4sejrq\\n6GqupKRsNejmmGZkHLM7LQ9Xag7BwR46m05TOGuFuVloxI4nwfxljpMFAUM3UGJh2uqPDQvpBOrO\\nvJXYyJxVMIsFK7YhW8ZvgxRPDgtX3s3pg6+yZ88etm3bht1u55ZbbmFgYIDf/e7/EQwF6W2roah0\\nJbJsGzVKjLv26ZqKIIDFYsUx4u+qu+08YCCIArI8+nMjGg7g624kFg0BBrLFTnp2Ca7L/j7iQkdF\\nUdA07Q8WdXe92L17N83NrVgd6dyw7sEruhqKosS8Zbeh6Rq+jgu88sorPPHEEx+oDMFgEAMDOfXa\\n4q3kVBc6BoFAYNzX33zzTSr27iWCRt62Nbhmjh+BZ01LIWvtElLnz6Jj+ztcqK/jmWee4a//+q+T\\nY6IkSZIkSXJdWLRoEU6nk8bGRhobG5kxY3yxu6Zp7N+/n1gsRklJSeJ7Ke4wJ8vyhH2/1NRUUlJS\\nCIVCHDp0iFtuueVDK39XVxf/8R//QUNDQ+L/PB4PNpuNUChEIBBICKfC4TBvvPEG27dvH3WOaDSK\\nqqr4/X7C4fBVu66Hw2F6enpwOp3s3bt3ygK/lBRzU0x/f/+E8atxdz+fzzcqxjQu4Ir/FgRz01nc\\nfS4eSdvT05MQfzU3N+NyuZgxYwabNm1i9erVU17rD4VCPPXUU7S0tJCens6f/dmfMXPmzESUrCRJ\\nFBYWUl5ezl133cW+ffvYs2cPv/rVr5BlmdmzZ/PrX/+as2fPEolEEgLJ2267jZdeeol9+/Ylokjf\\nfvttBEFg5syZXLhwgZaWFmbPnk1paemYeyTLMnfccQeGYXDkyBE0TSM7Ozvx+vr16/ntb3+Lz+cj\\nGo3icDgmvc92uz3hPGcailiYN29eoq0vp7e3l127dhEOh7FarRiGwY4dO7j//vsnvMaqVav47//+\\nb2praxN/e5dHFAMsXbqU9957D5/PRzAYHDeOdaTID8znYmBggMbGRlRVpbe3l+eeey4R63zvvfdO\\nKuzcvHkzPT097Ny5kx07dvDVr34VSZL4y7/8S5566imqq6sJh8Ps37+f2bNnj2pLwzCIxWJEo9GE\\nA6LD4RhVp4MHDyae+cvFlo2NjTQ0NBAOh5EkCY/Hw+LFi8fUO35cJBKZsI3/lPjlL39JOBxm3rx5\\nrFmz5oqi25SUFLZt28Ybb7zBxYsX2b9//wf6bI2PY9xu9zU7iMcjuUc6isZRVZUf/OAHiUjlr33t\\na6OEfXEEQaC8vJzy8nKOHDnCz372M3bs2EFmZuY1uT0mSfLH5roL/H7961+P2v0qCAJf+MIX+OpX\\nv/qBVL9JkiT5aLJ+/XqOHD1G0HcBW/b8CXfxq4EO9OgQSE5wXRpEGLqaEPBMxNVGN06Vq3GDUoY6\\niPZUghLEiPQT6zqBIsqX4iAlAbuoExUlDGsqrtzScRcsrlfdriSwHOPyxghxHwD6yHebLnDCiIn9\\nmI/4wh2GRlpKCkuXLmXDhg3Mnz9/ypPDE4l0olEFddjiHQBLKqTOhnAneI9jBJoRov2mI54eRgBk\\nzzS0sJcjR45RVlaWEI+F1Xj8rWhG4nqPmmI1QQaLG9yzwJE31jbSlg6ZyzB63kOJxZg9+5KIL77D\\n69ln/wO17xRY08AxsaAVUTajp2MD4DtuLoCmlIIojDUWMXQItkLvcQRdwbBlQ2yAqLcGa+bcCTvh\\nsrsA0ZaCFh26JNyLCyRHCjoFwXQp9J4C7zFTaGhNG36NRHnMAdwIcX6k13y/HkXQFQR/jbnoaUvB\\nllU+adkmEq8+9thjCILAwYOHCIXDGIO1CKnDroaXRRZjGMMxVFacTucl9z5DNx0kRRHES+JWwzBM\\nd8m+OvTooPnZIsqItlSsGaWmMHfk5gNdGRPF/KeKruvs3r2bcFTFXrT+ipHicT5sAfVUItvHYzLR\\n5UdBwJgkSZIkSZJMxKZNmzh29D32n4ywbZ2KdZyvwnAU3q2UAINNyy/1e6PDKVZWqxVxkoHE2iUa\\nr++Jca6mmq6uLvLy8j5wucPhMP/+7/9OfW01IgFWzNPYtEJj7nQ90VXuH4T9JxX2n5ToG7Si6TKp\\n6TlomoaqqrhcLlMY1N3CykUxMj1T6wfMKjIoyVNp6e3j+PHjrF69ekrH33DDDezd9w7tjZXjRrpm\\n5k5HttgI+LsZGugiJS3vkuOfgeliboAkW5Fk65j+7UBvI7qm4EzJQlOioMdYtmwZDzzwwJTjXfx+\\nP6+++ip79lSgaQa5JeVm7K6mYehGYtONpsbQVAVRksnInYXdlUb1kdfp7ThPb2ctkmQufJYu2kBH\\nUxXV1TVs376dt956i0AoQnrONHo76tF1U7QViwaIdZsT7b1Ay/l3ySyYQ8GMpThTzDGNIJjOKanp\\nheSWLKSz8RRvvPHGqNjSu+++m5qaGrqaK5EtdorLVo0S0hmY7alrKoZhbsBqv3iM3vZzaEqUwf42\\n2uqPklMwD4vNZTrhD3npaqnC13kBXdeQLTZmLt1G4/sVBPy9+H3tpGVNHAlcPHsZvZ31tNUfxe3J\\nRbZYMQA1dmmBRhAEiktv4vzJ/6H5wiGsdjdZBXPM10ZsvxIYTiEZHod0t75PZ+MpM+ZZELA7UiiY\\nvpCimTeQknZlYWdGdgmejEICQ10cPnyYjRs3IggCDz74IOnp6Tz33HNEIwG87efJyJs92knQMJ8H\\nQRCw2W047KPHLG0XzyCKApIooapmdHS/t5X2i6fp6agzhavGJQEjglmeollLycqfhShKaMPjKKvV\\n+icv7tM0jX379qGoOvOXbLnqyGJBEJm7ZCuHOuqoqalJLBRdK9czuSYQCPDGG28QUmPkbls7obhv\\nJNb0FAruuZn2X+/hTGXlhzqfliRJkiRJkozEZrOxbt06du7cyZ49e3jkkUfGfV9lZSVerxer1ZoQ\\npgGj3OAmIzs7m6amJvbu3cvWrVs/lLjFxsZGnnrqqYToaf369aM28ox09jty5EhCCJSSkpIQ8rnd\\nbgYGBggEAgwMDEx5ftXn85GXl8fRo0f59Kc/Pa7D2kTMnDkTj8dDX18fHR0dFBaO7SPMnTuX6upq\\n6urqWLhwYSI6Fsx55fi/HQ4HkiSNaldJkmhsbESSJIqKihLuz/fcc881bTxrbm7mmWeeobGxEbvd\\nzty5c4lGo4kyxN0cA4EAkiRhtVq55ZZb8Hg8vPbaazzzzDPY7fZE9Ox9993H9u3bef311xkYGGDf\\nvn2IosiSJUs4duwYoihitVppa2ujra0NgBMnTuDxeFi2bBk33XRTYn0gLmhcv349dXV1dHV1ceDA\\nATZuNMeZqamp3Hbbbbz22mtEo1EGBwdJT08fY3gUi8VQFCXRtpFIBMMwUBSF8+fPI0kSxcXFWCyW\\nRCRvdbU5zhcEgby8PJYvX85bb73FO++8w9133z2hkNDhcLB+/Xp27drFj3/8Y775zW8m6jNyjt3j\\n8bBo0SLOnDnDuXPnmD9/fkKANdrA4dK/dV2nsbGRQCCArusMDg4yffp0Nm7cyPr166/qOb399tvZ\\nvXs3Z86cwefzkZmZidPp5IknnuBHP/oRhw4d4tixY3zyk5/E7XYnHD3jsdBgrs05nc5R4r6+vj7O\\nnDmTKG8kEsFisXD06FEqKipoamoaUxaLxcLKlSvZvHkz06dPH9VG1ypG+yjR0NBAY2MjFouF1atX\\nX/XnYzyqeM+ePR/aZ+sHOf5yh/2RnDhxgvr6etLS0vjbv/1b0tPTr3i+lStXoqoqzz//PK+//jpr\\n16694ndNkiQfNaR/+qd/+qfrdfLz58/zwgsvJFTegiDw+c9/nq9//et/EpNFPp+PWCyG1WpNKIST\\nJEkyOdnZ2Rw5cpiB/j4EWxqSPW3c90W6TqFFBsx4U8fwZLiuga4hyxIOp2OSSFsBw9BQA50I6Nx4\\n440fuNy6rvPss8/y3uGjhBQBW9FaHEUrsbjzEC1ORNmOaHFicediy1mI6MhCC7QjouFJcVJclE9h\\nQS7zy+fidrnw9vuxZC3A4p7aQtsHrZvdbufokSNEAgNYs8YKrgTJgtLfAMoQeMoYXjUa0RDDK4qi\\nxYydFYbdKoRhsVXvUdNRLm0eqEF0NcaMGdO54447phzJW1VVxQ9+8AOOHz9BNBpDtKWaLneSlYgq\\nmusPccdBhh1BZBfYcyHUBoofwVCR7B7seTfgKLwJ0ZZCtL+JpsZ6GhqaCMXA4s5HC/tMvZiugBYx\\n66lFTJe8YBMEm83LWDNG11e0QbAVQ4vQ3NTEunWXHOpmzpxJZeUZvL3dGKE2BNkF1tTRQkFDM8Vp\\nWnQ49vcYaCGzPkoAAd1sY10FJQBDjdBzBAINCOgIriKMrJsQwh2gBJFdOUi28QdK8XKpQ+0Q6gJn\\nvikoVAbB4kZwjFh0smUiKH6I9pv1t7jBkmIKckcUXzA0MFSkaDdC71FEPYJg6ICENWMWjoIbcRTc\\niOzKvmInXbR5iPbVEQ0NUlZWSm5uLpIksXz5cjweD2fPVqKpMQzZDZLLbBNdA3RTwClLOBwO7A77\\nqCZW/E3o/ou4nDZ0BHTJhR7xEWo9SMx7Di0ygK6GMbQouhpGiwyg9DegDJg7MCVHFoIgEOuvR4h0\\nM7987ofymfLHpKqqip27dhMz7DiKVk5pADXefbpWDh48SI+3HzltFqJl6jEZeiyAOlBPYUFuYuIE\\nLgmDe31+bEVrsaRcnUOgaHEgWN1E+5vo7/OyefPmD2Xi2M4EGQAAIABJREFUL0mS8fg4jSM+TnVJ\\nkuQPRWZmJidPnqa3t59Or86ych3xsq+cli6BfcclinIU7r7ZFFvFFAjHzB0XTqdr0v61RYbmToEO\\nr4WZs8ooLi7+QGXWNI0f/vCHnK85Q7o7wP95OMaWmzSy041RfS+HDebN0Nl6k0af36CjF0TJzje+\\n8Q0eeughbr/9dvbv309wqIfP3R4ja/zh4IQIgmm6drZWRJDsU+6XpaWlceDAAfwDXopnLx3jDC+K\\nErFoiEFfB4ahk5E3O+Fcresauq4iiCIWi31MP8EwDOrP7kKJhZi5YDPZhfPwdTXQ2tpEVlZWYlHg\\nStTX1/PrX/+aF174OTXnzqHpIEoSoUA/vu4GWutPEg4NYHOk4nRlDEcG6xiGjq6rSLIVpzuDvu56\\nNDVGXvE85i29lcIZi5Etdno76rlw4RyRmIrV5iI46AMDrPYU8qYtJH/6DWQVzCU1sxjD0IkE+wkN\\n9tLTVo3dmZYQ+cUjda2OVHrba2hva6G8vDzRP8zKyiIrK4vjx4/h97UR8PdgsTmxOT3DkbERdE1F\\n1zUGfK20nD+Et/MCGAY2hxtViTLY10Zn02naLh6j/eJxetqqCQ/1ApCdP4uyJbdid2Vg6BqD/R3o\\nukZu4ZwJ29bhSsMwdAa8bXg7a7E50xjq70CJBsmffkPib8rpNiNM/b5W+rrqUWMRHO50rNbRwjnD\\n0An4u2m/eIye5kpEQUcURdKyS1h9yxfJLZqDzX717myiJNPTVsugf4BNmzYl/n/WrFmkpKRQVVVF\\nKNBPZt7s4WfXQAAkScRus+NyOcc4e3a1nqO94SR2mxVRENER6e2oo75qP4FBLyCQnj2D9JyZpGYU\\nYnWkEgn5CQX66Gm/QF9PM9kFs+nracbXWUtJcdGosv0pcvr0afbt24/FkUbpoo1T6vNLkkwk6Gdo\\noBuLRWbRokXXXI7jx4/T2d2NoyQXa+Ykee0TEO0dIHS+mcK8/FHjITA3PJ2qPIN1Wg6Zq65epCfZ\\nbWasYGs3SjSWiK9LkuR68HEaR3yc6pIkyR+K7OxsKioqaGlpITMzk2nTpo15z7vvvkt1dTUZGRkJ\\ncVAoFEJV1YSIZzJsNhtdXV1Eo1Fuu+22Kbl/j0dPTw//+q//SiAQYNGiRXzzm99kyZIlo1y+BEEg\\nIyODZcuWsXr1aqqrqwkGgxQWFvLkk09y9913J2Iu+/v7aW9vn3I5dF3H4XDgdDqZMWPGlMZ6oigS\\nDoe5cOECsViMsrKyMe/xeDycP3+eoaEh0tPT8Xgu9VPiQjSr1YrVOnbD09DQEMeOHcNisfC5z30O\\nURRpb2+nqqqKVatWjesEdzmapnHkyBH+67/+i9dee43Ozs6EoK+5uZnTp09z/PhxYrEYxcXFuFyu\\nhDhOVVVisRg5OTkEAoGESO/222/nkUceYenSpTQ1NdHe3k5NTQ2iKOJyuWhvb0cQBDIzM1m+fDnz\\n589n9uzZ5ObmMjg4yMDAAE1NTZw7d46ysjIcDgeGYRAKhRLisqamJs6ePcvtt9+eeNbmzp1LV1cX\\nzc3NxGIxYrEYFosFQRAIh8OEw+GEQ3bcgQ5MEZXD4WBoaIimpiYqKys5ffo0lZWVNDU1EQwGsdvt\\nLFu2jE2bNpGWlkZzczMDAwMUFhaOcl68nLKyssRmlePHj5OXl0drayuCICQcA8Ecg7S0tNDf3093\\ndzeiKCZEnSNRFIX+/n7a2toS0bg2m417772Xxx9/nLlz5161QMput9Pe3k57ezsOhyNRHlmWWb16\\nNXV1dXR3dxONRpk3bx6GYSSEXbIsJ/4uRpbRMAxefPFF2traEmJGj8fDCy+8wMGDBxkYGMDpdHLT\\nTTcxf/58Zs6cidVqpbu7m5aWFvbv308kEqG8vJy3336b1tZWli5dSnl5+VXV6aPKb37zGxobGykv\\nLx/383cyPB4PNTU1+P1+5s6dO8q5ciqIosjvf/97FEXhtttuu2on05EcOXKEhoYGFi9ePCZ6+cUX\\nX6Svr48HHnhgSverpKSEqqoqenp6yM7Ovuq5nCRJroXrMY64rgK/w4cPs3v37kQHIC0tjWefffaa\\n/oD/GCQHbkmSTJ3433tN9fuEB1qRUwoRLWMdsaI9Z9HVMGQuBtk57NIVQxAYtrK+gghYkIj11eF2\\n2sdMdF4Lu3fv5s033yI07AZlScmfcBJYEARkRzqW1BJi/mYkweDee+/hC1/4AjfeeCMVFRV09/Rh\\ny116TaKWD1K3KwksRWsKykCDGc9qTcOwjhCLGZr5g2CK+y6XWAZbYKgBwZKCkLsOw5aFFmilp6sD\\nT2oKs2bNumL54s5izz33HDt37aa9swfdEGE4wjYuvjKGWsymcOYhSBYEUbxUHtkBsgsh3IVodZIy\\n934srhzTMn5YnBQa7COm6oj2DJShVgxBNsV3nnmQsRg8c8E9w3SvU4bM2NlwpymGcxYOR9LGhi9p\\nIER66e3pJjMzI1FPQRBYt24dh997lyF/vyngCzQOtyEYagiifgg0g+8EBJpMcaQt3RQOaiGESA8M\\nXYTBOvN3pBvBUJBsKdjzbkDzzMMwRHNRNdIDho41bfqE7Ss5stCjfvRIn3ldRy5EvaaY0FN2SXwo\\nCOAsNEV+sX7TMTDQZAr6RggOjcGLCL4TiKEW3HaZrKwMIoqONW8FzsKbkGypV71YMpF4VRAEZs2a\\nRWpqKtXvV6EFu5Hc+YgWJ5IkYpEtOBwOHE7zc2Hk1bRwH+GW/ThtIps3b6K5uYlwXyvqUAe6FjMd\\nQtPKzc8Zz1xImWG6OCpDGEoQdagdPepHTikk3PYuDovBZz/zmQ8kavso8Nprr3GxqQU58w8vMh5J\\ndXU1LW1tGLIb2TX1Np1IdPlRETAmSTIZH6dxxMepLkmS/KEQBIHS0lKOHDlJS0eU1i6DBbP1UU5+\\nHT0i752VKMxWWLM4TCwG4agp7nM4HFgniOcdybkmkaZOK/PKFzFz5swPVOZ3332XnW//nhTHEP/n\\nCzEKsid3nhJFuGGOTpfPoLldoaWtm5tvvhmA7du3E4sM8KmtCvZrCG6IRAXerZRJTcth7dq1Uzo2\\nPT192Amkl2gkRFberDF9BYcrjbaLpwkM9uBwp+NMyTSdIVRzsUWWrYm40pG0XDhEX1cdFquT0sW3\\nYrWnYLE66OtuxOfrveLmAcMw+P3vf89Pn32WpqYWIjGVtKwZ5BQvILtwLp6MYlN4E+wnNOijt/0c\\ndqcHT0YhoiSb+5AQTfc4Vzr9vY3ousLs+evIyjfdxl0pGbTUnyQY8KPrhunaJ1uZNmcNM+ZvJKtg\\nLq7UbJwpWbjT8sgpKiercC6aqhD0d9PXVY/DlYbNkYI+7OjmcKYRGOgkHOynpaWZW2+9NVGnadOm\\nUVxczLGjRwgM9tLbfh5fxwVCQ14C/Z0MeJtprT1MT8tZQgEfgiAwZ+k2SuauJyUtD11Vhq9jIMsW\\n7M5UCmcsZsGKT1A8aymiZEXVVOzONLpbzhIO9DN97qpJ2zk9uwRdU/H72hnqazc3Eek6dlcartRs\\nwGwXR0oWoijh97UR9HfT1VRJYKCLWCRAcMiL39dKy4V3ab3wHuGhXtwuO3PnzqGv38+0spWkZ09d\\nVOtwp9Nw7jDRSIg777xzVD2Ki4upPHOG/j4vwaEeCqbNx+FwYbfbh11JLGPq3dtRT/Xx32OzStxz\\nz93U1dXh7WohFOhHkq0UzVpB6ZLbyZu2iPTs6aRlTyMrv5T8aUuw2twEh3oJDfno7awn6O9BV0Lc\\nddedVzW2/yjz5ptvcrGhmZKyGyd1fJwIm8NFe0MlweDQqOd9qgwODlJd/T4xJUbKnKktqgH4DldB\\nf5Cb160f5Z6p6zo/+9nP8A36yVy3BGv61bv6AFjSU+g/U0t/Ty9r1669ongiSZJr5eM0jvg41SVJ\\nkj8Ubrcbt9vN2bNnOX36NHa7nRkzZozaxHTixAnq6urweDw4nU7C4XAinjfu3jUZgiDQ29uLKIps\\n3rz5A3+nPf/88zQ3NzN//nwef/zxK6bQuVwuVqxYwYkTJ+jo6MBut1NWVkZXVxd79+6lv7+fvr6+\\nayqL0+nE4/GwYMGCUclCV0Nubi67d+/G6/WSnZ1NRsbo5JO4KU9zczNdXV0UFxdjs9nQNC0R5+pw\\nOMb0PRVFoaKigkgkwoIFC1i8eDFZWVn4fD68Xi82m21Un2U8QqEQP/zhD3nzzTfp7OxEVVXS0tLI\\nzMwkPT0dh8NBOBxmcHCQpqYmqqqqmD9/PllZWQk3wXgkbG5uLsePH8dut/P444+TlmauhblcLt59\\n911CoVAimjcjI4MNGzawevVqpk+fTmZmJllZWRQWFrJ48WIKCwvxer34fD5qamooLS1F100XclEU\\nKS4u5vjx4wwNDZGSkpIQGomiyIoVKxgcHOTixYuoqkowGCQUCqEoCqqqous6sVgMVVUT9+fTn/40\\ny5cvJzU1lXA4nBCxORwOsrOzWbNmDdu2baOsrAxN0zAMA1mWaWxsRJZlVqxYMWEby7LMsmXLuHDh\\nAh0dHTQ2NhIOh/H7/SxevBiLxZIQS06fPh2v18vAwAADAwN0dnYSjUaJRCIEAgH6+vpoaGigt9fc\\nhFVQUJCIC/6Lv/iLqxJ0Xo6u65w4cQKn0zlms0lhYSFHjhyhubkZi8XCokWLsNlspvGD3T7GUVLT\\nNH71q19x8OBBrFYrt99+O+fOnePEiRNEo1Hy8vJ48MEH+eIXv8iKFStYsGABCxcuZO3ataxcuRJR\\nFGlsbKSuro7Ozk6OHTuGYRg88sgj11S3jxLPP/884XCYDRs2TNmRUBAEYrEYnZ2duFyua970JMsy\\n77//Pj6fb0qbIuPEYjGef/55FEXhU5/61KjPstbWVl5//XXsdjtf/OIXpyzwlmWZU6dO0dfXx4YN\\nG5JGEEmuG9djHHHtuWtXwciOiyAIrFmz5mNha5okSZLJ2bJlCytX3ojDYhBseJvYQJMZCTMCQzc7\\nswgW0DUMLZqI5rXarrwKNFl041QZFWdZuHrqcZZRld27dyd2GV3PWMorIYoiW7duxWGTibS/hxYe\\nPYAUBAFb1jxTJNV7DCL9w6/oprsdDMe6XtaZifaD97j5b88ckGRTqJZxA6GIMqr+E6EoCs888wwv\\nvfRLGpraCcQsGGkLMPI3Q/E2KLwF0hdjSE4MNQj9Z6Hn3WEXN2nYVdBm/qTMwJDd6GoUNdg5on4i\\nUlopmi6gaypa2Ich2SH7JijaZoq9bBmmsM+WaQr+irZBzmrTLTDYYl5Ti2I6+MkIriIQJFRVG1NP\\nm83G008/zfzyuUiCCrF+DN9JjPZd0L4TuvbBQJUpotNjkFoGeZuhYCtkrwJHgSnEtKUiOzOxpk3H\\nNXMrKXPuxZY1D1mSzVthN9339NjQpG0sCALO4nVY0qYjGAoM1IAeQ1ADEGgxY5kMHXQVQ1cwMpYh\\npC9CtLoRtZDZ5h27oO1NaN+J0H8WSR1i9owi/vzPHyIzMxNdB9l9dY5plyO7C9A0g56enjGvbd26\\nlbVrVuOyCdB9ELvuw+12DbtUyKOeSMPQiQ00Emx4G4fFYNWqm/jsZz+LKJhRu4YgQ84aKPkkpJeb\\n99qaav5OLzf/P2cNhmBBGWgi2PA2ghqiID/vipMQfwr09PSgacZ1uU9TYf369dgsEjHfhTHfAVci\\nHr1ss0isX79+1GsHDhwgqmhYM+dMGAM/EYIgYs2cQ1TROHDgwJSOTZIkSZIkSaZCcXExf/2//zcO\\ndw6nLzh5/Ck7z79h4WKrQCQ6HF9qQEwVGAxAKCpgIGC3269697uqmoLAD2MTZUVFBehhHtiqkptx\\ndbGSoggP36ngsEW5WF+biL2J95cvdy28WuLzqlcaX0zE5z73OZwOG51NZ6mtrMC47DxOdzqzF96M\\nIAjUnXmLruazqLEIhqEjCiLiZeM4XddorNlP+8XjCIJI6ZLbEEUJSbaQkTcb2eqkvb2Dc+fOTVqu\\n3/72t/z3a68TiWoUzFjG0psfYvbiWymcuZT8ksUUzlrOgpX3s2T9/yKnZAFgOgZ2Np8BBETJgmSx\\nIltsyBYbedMWAwJtDZWJa0iyhayCMhBEwEC2Oliw8gGyi8qRZNuISWszltgwDOzONGYt3Epx6Srz\\nmpU7CfrNfqBssSNJMu60PARBpHVElFWclStX8tOf/pQblixGUyIMDXTS1XyGjqZTdDVXEvB3ocRC\\nGIZOcdkqUjOLEUSR1MxiZi26hYVrPsvyzV9k3ba/Ys1tj1K6cAMOl7k4Z7VaERCwWB2Iooyua4ko\\n2YkQBIHShRtYsGIbgihh6CqaGqPj4nEiIT+xaMiM2UWnYMYSlqx9kIJpC5AkiQFvE03nD9LwfgXN\\n5w/S192ApkZYs3ol3/nOd8jMzBxu12ub25QkGVGS0TQt4d4Rx26387WvfY2c7AxC/i5OvfMrOpvP\\noqkKl4/PB/u7qDnxFmePvIHVInDLLVu55557SElxYwzf94WrHqSkbDU2u3tMOWSLjYIZN7B4zWdw\\npGQRHPTR23URu93KmjVrrqluHyWGhoYwDANnytXN7VyO052BYZjn+SCsW7cOh9VGuKkTxR+Y0rFq\\nMEKwvg2bJI/Z+NnT00N3TzeCw4pz+tTHfLLTjnN6PjFNpaamZsrHJ0mSJEmSJFfLli1buP/++wF4\\n9dVX+drXvsb27dvp7e1NCMkMwyASieD3+4nFYgiCgNvtvuoUOF3XEQThA7v3+Xw+zpw5gyRJPPro\\no1c9xvJ4PDz00EMA7Nu3D03TrnkcMx7Xcq7MzEzuuusuRFHkzTffpL6+fsx7Fi9eTElJCZFIhF27\\ndtHb25von1qt1jHiylAoxM6dO/H5fKSnp7Nxo+mSbLfbWbJkCbquc+DAgcR9HY9oNMpTTz3FmTNn\\nUFWVkpISSktLycvLIz8/n9zcXIqKili4cCGzZ8/GarXS29vLj370Izo7O0c5uDmdToqKipg7dy6K\\novDuu+8mrlNeXk5GRkbC/a2wsJB7772XwsLCUfc1Hv0K5vj9/vvvp6CgAL/fzyuvvIKiKIiimBCr\\nZmRkIAgC+/btG3VfJEniscce49vf/ja5ubmJWGFNM40g4iI/wzCwWCzcdddduFwurFYr8+fP5777\\n7uPzn/88X/7yl/nqV7/K5z//eZYuXZqYF4gLTd1uN4ZhMDg4eMVnwO1288QTT3DbbbcRiURQVZVI\\nJMLBgwcZHBxkaGiISCSCLMt88pOf5K677mLWrFlIkoTX66WlpYXm5mba29sJhUKIoshnP/tZvvOd\\n7ySEitcqgHO7zfHJeOufs2fP5tFHH008u9///vepqqoaE8+qqirHjx/nySefpKKiAkmS+PKXv8zm\\nzZsJhUIIgsDcuXP51re+xbp168YV6+bl5fGZz3yGv/mbv8FqtXLw4EFCoRCLFy++Zse6jwpxoSkw\\nyqFzKng8HgzD+MBjorg7fEVFxbgxu5Nx7NgxgsEg06ZNG7OptaqqCoAVK1YknBunwo033ojNZqOl\\npYVAYGpjtSRJ/thcVyu9+IdzPJ53xowZ1/NySZIk+YggiiKPPfYYgiBw+PBRwm0HiHQ6sGbOQXYX\\nmAK2eMyQEgTBgiCYHVWn0zlhNO9IDF0BQbimL+7Lef/99+ns6kaXnFg8JVM61uKZRqTzBB2dXVRX\\nV7Nw4UJTyCwIGFdYeJiID1q3LVu2UFtby3uHjxJseBt74WosnpKEEMaaOQ812EOsvxG6KiBzuSkg\\nEwTTvW1kjJWhm+5u3uOgKwjuYkgtBUAQZQxnAbq/elT9xyMeqfne4aOEFQF70XpichaaoprPQzyK\\n15ZpCgiH42yNQKu59pS9enT0LSKkzMboryTUVYNhzcJqs5kpvFZz0QXAECyQu84U9CWEQCMXtTDP\\n6yo2nd269kKoHWxZ4CkzRZqaxbyfgjBuPW02G9/97nfZvXs3P//5zwmFQsNnFkZczwDBCu7pl+rh\\nyMVw5GImEcu4U1K4fJOI1WolFothIJhnuYpnShAlnCU3E3XmEG47ZEbq6jEM7zHTOdCaBoJZKski\\nY8tbiMW6FC3QQayvDj02hKGE0aIDWCSRbdu28ed//ueIosju3buvm3j1aj43DF1BDXQQ811A1MK4\\nbDKrVq3k0UcfZd++fURjCshOjNx1ZiTxROIvQQR3CVhSMDr2oA51YLdZ2bp165Sipj+q/DFFxiNZ\\nsGAB+Xm5NDS1o/hbJnWfvBzF34yohSkoKRojuowLGK0fQMAY7jnzgQWMSZIkSZIkyZUoKyvjH/7h\\nH3n55Zd5v+osh85GOVQZAUNH0yAQhk6vTEwVsVpEU9xnvTpxH0BbjwCCeM0TtnEaGhpoaryIyx7j\\npgXalI61WWHtEo3dxyLs3buXhx9+GLfbTWhIoH9QIMU1tQlcgP4hgCtHck3E7Nmz+dKXvsRPfvIM\\nHY2n6etppmjWDeSXzEe2mO1bUrqCwKCX1vqTXKzaTUfDCXKK5pM3fXHC0SIWGaK7pYru1vdRokEE\\nUaJ00a2kZ08HQBREJNlCduE8uptP884770wYC3P06FF+97v/R0zRWXDjneQWzSEQCAwvGo1evHS4\\nM5i1cAuu1Bwaq/fS8P4+HO4MUjOKGDmWScs2HcECg16GhoZwucxYZ8niwND/P3vvHR3HdZ/9f6Zt\\nRSF6IcEGgkXsYq8iAVGyJKqRjiw32ZJjOVZs2Vb8S/LmJDk6dvI6PpYSJ3Ec23JiW5JlR7JkWV0s\\nYAEpdgIsIEgUAkTv2AW2T/v9MdghQAIkQFIR5Xc/5+gAWs7O3Dszu7h3vs99HgNRcTH71s14UjJR\\no6FL5tmDc5T4zEWAiTOWEwn56GquorO5khkL7rDbJkkKgihh6AalpaU88sgjw/aWnp7OrFmzOHuu\\nGlUD2eEmHOjFNA2EwX2IooysDHECEQQEQcQ0DTRdZ2CgH683aVhxVhRFFEUmFlMHt9UvE2yORlrW\\nZGuql5SEAIQGuqk/U8qMBXcgyzKKw4FDcSCkTiA7bxozFxTT3lxFOOhDjYbpbK1GQGf+vIV885vf\\nRBCEwcKQtZjsWjBNw3qvIo9YhM7KyuLv//7v+Zd/+RcuXGik7tROak/vISNnOg6nB8PQCPi7GPC1\\nI0sibqfMli0Pct9999HV1UVfnw9ZcVO08BO4ktKu2h6HK4lblj1I+Z5fosZCJCUlsWPHDpKTk1m0\\naBFpaVffx81IvOAqjOnp0uUIgmiJsK+zOJ+cnMyKFSsoLdtD195y8u5ZM5hOcGVM06S7rBzZFFi0\\naNFlq/yDwSCGCXKyZ0z7GwklxYsGiWJWggQJEiT40Nm8eTPZ2dm8+uqrdHR08Prrr/P6668D1jPM\\naDRKKBQiJSXFFnCNVdwXi8XQdR1Jkq7bvW/37t2YpsmSJUvGPb+aP38+WVlZdHV1cfLkSbKzswfH\\nsdcuOlQUxY6XvRYeeOAB/H4/paWlvPnmm0ydOpWFCxcydepU2wFv8+bNvPjii3R1dfHOO++Qm5vL\\nzJkz7Vq+aZp0dXVx9uxZezFXWloaDz30kN0uh8NBTk4OmZmZ+P1+jh07dpkrW5xf/OIXnDt3DoC5\\nc+fidDrx+XwAw4R3giCQmppKSkoKdXV1+P1+nnvuOf7yL//yssVws2bN4uzZszQ2NhIKhXC73XbE\\nsCAIJCcnc//999uiu6HHiIuN4j8VRWHz5s289NJLdHV10drayty5c+35S1z42NPTM2ItbO7cuaSn\\npxMKhUhNTUVVVXp7exFFEafTSSQSQVGUYdHH8VpE3OVP1/XL3Cvjkb9xweLQflwJh8PBxIkTSUpK\\nwuVy0dvby/Hjx5kwYQILFiyw2yXLMhMmTGDhwoV0dnZy7tw5QqEQfr+fs2fPoigKn/3sZ7nnnnvs\\n/aqqSiwWuyZTp7hL52gOmStWrMDpdPKf//mfVFVVUVVVRWZmJrNmzcLlchGJRDh9+jR+vx+w3C6f\\nfPJJZs+ezbZt23A4HEyZMoVHH330qi6cYAlCH3vsMX74wx8SDoeRZZl33nmHjIwMFi9ePKZ93GzE\\n7+nrcaUbem9eD8uWLeOll16iqamJ3bt3jzm1rr+/3/5bUVxcfFlf4gLGa3VEUxSF1NRUOjs7CQQC\\nJCcnX9N+EiT4KPhQBX6XfhhuhBAnQYIEHw8UReGrX/0qM2fOZPv27bS2tRPtOUG4swJME0OLAiJC\\npAPJk4HT6cThdIz58asWaEWSBLKzs6+7rTfEDarnBHv37mX+/PlkZ2cjVdehBdqQPeMfXFxv38Yi\\nlHJkzCEW6IJor+VYJ3sheboVT6s7wFQh3A79taCFrL4mFViuc3ZBRgREhOTpRINn7f6PxI4dOzh4\\n8DDhwQhkyZ1OZGDAqiddes4FEbyTQU62BIjBRnBlWe53Q28Qdw70gaEOEAqF0TQdj8eDbgpg6pii\\nAyFrOThSLaGidbDBYwDmJXebMx0yl1vnI1AHE+ZYrw86G4qOJNv169J+iqKIYRioqgaChCA6MGWP\\nJehzZkHPMdDiD85FYPigWNM029596DhVVmQkSUSLqOMSbAmCgKi4kWUnudlpmKZJe0cXemcZYtYS\\npOTJOJ0u5CHOeGLyROSkPFT/BSItB0jyelmzeqUt7gM+dPHq1b43EAQkScCrSORPnsSmTZsoKSkB\\nrJht3RCRs5ejOVItV1DRMVyweilyMmbSVIS+02iayrZt2ygrKyM7O5v169czb968j6Xg76MWGceJ\\nO4o+//yLBFs+QHKmjMkhVQ/3Emk5gNcpjyi6vFkEjAkSJEiQIMFYyM/P59vf/jbt7e3s3r2bI0eO\\n0N/fj6BpyFqA/mCUmuYJrFo4PjFKfatAfYuMOzl1VFHZWDly5AiYUdYs0ofFCI+VjUt1th+McuTI\\nER577DFmzpxJZ3s9+0/EmJw3NiGUiYmqqhi6QdkxDzHNGtMGAgF7hf94WLJkCX/5l/8f//mf/0lv\\nb58tlPIkpSNJMmosQnCgG8PQMbUYATVKJOSnqeZ6ZqSqAAAgAElEQVQAoihjYmIaFwsnnuRMps/d\\nSGrG8FhWQRBJzZxMe8Nx2traLm2G1TfT5M033ySm6syYt5GcSbPs1wf3MuL7cqcsJBrup/X8UVrq\\njg4e++IiIlmxiim6rtrziaSkJIL+TkRRIjktn9SMAttJ2eTi8awC0fDjCYLAxMLldLVU0dNew7Rb\\nNiI6rLG0GgsjCiKmYXD69OnL2hqNRtm9ezcxVUOWnajRILLiIj1nOtkF8+jtqKOz6TSGriLJDsuF\\nzzQxMRElxSpWGZbLQFKSF1m+eCM6nU4i4RCaZrmsy2OIr9a0GCcOvIYsCaxYvoytW7fyj//4j/T1\\nNlJ74l2K5t2G15s/rEigON1Mmr6Ino4Gak7uQkRn0uQCHn/8cU6dOkUwGGRgYABD1/D1tDBx2sKr\\ntuNSBnydCAKkpKSMWrjOyMjg6aefpry8nJ07d3Kmqgp/Z+3g9RMQBchIS2HdunUUFxeTm5sLWI4x\\nIJA9aRZJqVmWK6XsQJKVEb9bDF2js6WKtgsVxKIhBFGmuaWN3/7PK4iCgKJILFmyhOLiYubMmfOx\\niizyeDwIAkQj1yZei0YCljj0BsRy3XfffZRXVNBd30bH9sPk3L4cQRp9jmkaBl17jhOubiLNm8zW\\nrVuvuw0JEiRIkCDBR83y5ctZtmwZVVVV7Ny5k+rqaoLBIG63m2g0av8+VifzON3d3XYc6fW6mh85\\nYqUXjVV8MhRRFNm4cSMvv/wyR48e5dFHHyUjIwOfz4fX67WFKFfDNK05UVyYZpqmHe063v4JgsAX\\nvvAFMjIyeP3112lsbKShoQGv12vX7gcGBvD7/XY0b3NzM11dXezbtw9FUWynNkGw5g9FRUXceeed\\nw+Zn8cjcKVOmcOLEiVHnRB0dHRw4cABVVW2TDHtRxijjTFEUKSws5MyZM3R3d3Ps2DHWrl07bJt4\\nlHA0GiUajdrivp6enmERr3F3wqHCp6Eivzgul4sFCxbwwQcfUFFRwbx58+x/C4VCttju9OnTl9WI\\nTp06RXt7Oy6Xi0AggKZppKens2jRIhYvXsxLL71Eb28vhmGgKIo1/x10oIx/FgzDsMVG8fMSX2gU\\nCoXQNG3MwtELFy7w4osvIggCn/vc54hGo7zwwgvs2bOHUCjEihUrLruvsrOzSU1N5eTJk5w4cQKH\\nw8Hq1atZsmQJx48fJxwOI0kSmqZRV1fH4sWLx9SWodTX1wPYkcojsWjRIp599ln27t1LaWkp3d3d\\ndHd3D9smNzeX4uJi1q5di8fjwTRNSktLcTgc3HPPPTgcDgKBAB6PB1mWR7zP+vr62LFjB3v27LEd\\nRMvKyjhw4ACiKJKSksL69espLi6+IbXo/y0URcHpdKKqKuFw+JoE0MFg0EoMu07xtKIofOpTn+K/\\n/uu/eOGFF1AU5bLP8aX09fXxz//8z3R3dzNlyhRWr159XW1IkOCPjQ9V4DdlirWaOP6l2dfXd6XN\\nEyRI8EdGXNxRUlJCZWUle/fupbOzk3A4jKZpXGhsQg81kjRlGeI4hHXx6EbvCNGN18KNdoNav349\\nBw8dJthzDmfW3KuKBk1AUzVrsqarGJ1VSHqEnp4eTp48eU0io7EIpVBjlrubGcOMqeCrtCJdL0FQ\\nkixXvZSiS1z04k502ej9VaO6YQ2LQJ60/qLAx547jTSBM60I4Ljgrr/aEvgN3Va03BME08Dk4sof\\nwh2YCKAkgXcSGJol8DMNy6EwfsyRDustsMSOasASOHrzrZ+A5EpHD3eO2E9N03jppZdQNR1kL2bG\\nreDKGXREVKy+aEGI9lhuiaY+KBw0LUGjaaJpGqFQCI/XM6RsZxW09N5OMHVLsDYGbIGUS+HBBx9k\\nw4YN/OxnP7MEnz1HMXyV6BmzEK7gjLdy5QpWrVrFj3/8Yzo7O4lEInR1dWFoUaLdVUgFa8dd5BmL\\nePVK3xtut9sW382dO9f+XJw8edJ24UzKLiIcjljOh3oMDAFBlAeFpINOJYaO6T8HA5aA1RRlNFOg\\n5nyTtYKxuo6Dhw6Tn5fL7bffzu233/6xEvp91CLjoVzNUXQopmnYAlMrenmlLeAcys0iYEyQIEGC\\nBAnGQ25uLg8//DAPP/yw/drOnTt54Vc/Z/cxndULY+PaX+lhGUQn69atG3ch7FL6+/vBNJiUPX63\\nPYC8TBNRNAgPFhxKSkrYV7aHsvIwW0u0K4oGDdMgGo0Si8UwDIMun8jpuhRCYZVjRw5w6uRJVqy0\\nxgSXRrJcjdmzZ/Pss89y/PhxSktLqaqqQg33oA6mTLidMqYuo5sKApA8IY9gfyeGYRWyREkhPXs6\\nuVMXkpI2cdSxr6Q4MRk5YgigtraWxsYmJMUSkMUZy1g6f/pS2hrK8XVdIBz029G1wGB0K1b0rihh\\nGDrBYBB/TzOiJJM96RZUNXJxZ6aJaVx01Bvp+J7kDFIzCvD3NNHVUkX+tMWYpkFve63tuDe0QKnr\\nOhUVFbz66qu0t7ejGwaGYTIhcwrT5m7E4UpCVlyYhk5n02m6284xqWgloqRg6Bq6FsXQVUTZgSAo\\nGLpKMBgkJSXFHi/KskJ/zwVMQ8cwNNounCZv8rxRnctCgT5OHXqD8EAXE/Nz+OIXv0hqaip//dd/\\nbRUJelo5tufXeFOzyZs8D6c7GUyDUNBHa8MpomE/iiSSl5vNtGnT+Lu/+zsikSimOXi/xqJcOHcI\\nQRCZUrQMb0rGVa9jnOa6chRJZNWqVVfcTpZlli1bxrJly2htbaW+vp5QKIQsy6SmptqOJ3FUVWXv\\n3r1ousHUoqU4XW4ikTC6FkPXVCRZRhRlaz5vmoRDfs4d/QOhQC+CIOB0J5GaORWH04PTqRAK+Ohp\\nq2P/B4c4fPgIa9eu4bHHHrshceD/G8yaNYsPDhykrbHymoSYbY2VSKLIrFmzrrstubm5fPMb3+CZ\\nZ57BX91EU7eP1IVFJM+agqhcPJ+GphOoacRfUYPW5SPZ6ebP//zPKSgouGyfXq8XUYDoQGjwMz3+\\nuaraH0SAaxJQJ0iQIEGCBNeCIAjccsstly1OeuaZZzh69Ch9fX32woWxYBgGXV1dKIpiR0BeD/HY\\n00mTJl3T+/Pz8+39yLLMbbfdRltbGxkZGVcV+Om6TjQaRVVVTNMkPz8fSZJQVZVf/vKXvPnmm2zY\\nsIENGzaMy2FZEATuvfdeNmzYQFlZGaWlpXR1dVmLp7koHDNN03ZzS0lJsUVo8XjaefPmsWjRoisK\\nsuIuZ6PNiXbv3o2qqmRkZNjPZOPzkdFiO+Ptys/Pp76+ng8++IA1a9YMm8fEhXvJycmIooiqqnR3\\nd+Pz+XC73RQWFhIMBkd1vxtpTjRv3jwOHjxITU0NPp+PCRMm0NLSgs/nw+VyYZrmsGsaDAYpKyvj\\nd7/7HT6fD1EUcbvdbNiwgRUrVpCUlITT6WTatGn09fVx7tw5NmzYgMvlsmulkUgEj8dDJBJB13VC\\nodCwxSZut5uamho0TaO6upqGhgamTp066nmrqKjgZz/7GdFolJUrV7JmzRpEUUQQBF544QWOHj3K\\n0aNHKSoqoqioCJfLRSwWo6WlhVOnTqFpmh1z6/P5+Ku/+it7/7FYjEgkwrPPPsvnPvc51q1bN+aF\\nMZqmsWfPHoCrzomSkpK4++67+cQnPsHZs2fp7u4mEongdrvJycmhqKho2PWrqqqivb2dCRMmsHLl\\nSjuaOBAIIEkSDofDns+Ypsnx48d57rnnCAaDaJqG2+3G7XZbbu+KQn9/P11dXbzxxhu8//77PPbY\\nY6xbt25M/bwZmDlzJuXl5dTU1LBw4fjmRKZpUl1djXiD5kTr1q2ju7ubP/zhD/z85z/n2LFj3H77\\n7dxyyy3DrmFfXx979uyhtLSU/v5+srOz+da3vjWiqDV+z10q/BwrqqraLpCJOVGCjxsf6pOZhQsX\\nIsuy/QezpqbmwzxcggQJblJEUWT+/PnDVrQYhsFf/dVfcb6hBe0GRjdeCzfaDWqssZQmEBtcWaTr\\nlkiNQDOCGkA3dU5WnqW65plrFhldTSjV2NhIX38QQ3QjqCFw54ERtYRnomIJ5JILwZ17ibBvaA+s\\nqN4ruWGNGoFs79JkZLUdlkBvqODOM0SEaQ6Ke0QFQXJi6lZhEH+d5dqWNNUSeMUxNLiavb8gQsoM\\n6D0BA+fBkwv9tQiAMmE6sVDHsH4agw4Wzz33HP7+AUzJC9nrwJFi9UlyWvtMLrRih/trIHW2FUks\\niKBHB4WHMpg6sVgMWZZxOi8K+RSHghBswDQ19GA7MV/DuAVSoiiO2Rkvr2AiEydOpKGhgYOHDhNV\\ndXTdtB02DFMg1n0GPdSJM3MOjoyxuTmMV5g70vfGaAx14RRFEY/XWpVlfbZ0S9AVf05g6tBzFEKt\\n1l036F5pOjOQnG5cThkt0Eaw5xx19c20Pv8iNTU1PP7449cVq/C/yXhFxkO50QLq641eHuk772YS\\nMCZIkCBBggTXw+rVq3nllZepbgzz/gGdO1eNLWqn/KzIvgoZJLddzAqHw/YK63gBYaxYzgwmsnRt\\nAj9BAEkEw7Qekk6bNo1p02dQX3uCN/fqbC0Z2cVP1VS72AImAiZv70vFQGD2VJ3MCf2crg2xv2wb\\n+/ft5f4HtvDAAw+Ma5GJLMssX76c5cuX09fXR19fH7FYDI/HQ3d3N//yLz8kFIkhCCKF84rxpuZg\\n6CoIIpJ09UdmpmlgaKq9MGckdu7ciaYbTCxcgDhknxcjb/TLYnrjOJweMvNn09VcSUfjSabOuTg+\\n6+9pBsDlSUFxuFCjYVQ1RjTcj+xwk5o5xY6SNTHBBF3XkEc5Vrywlp4zA393EwFfO7FYGH93I9HI\\nAG5PKpGw9QBcVVXee+89du7cSU9PL8FQBMMwkSQHadnTKJy3CVGWkWXrnKTlFOJwJhEO9NLf00Rq\\n5mQkWQEBdDWKocUsIaBpYAzOi5xOl92ujqbTSJKAQ3Fytvx9zp/5gInTF5EzcSaK042uawz0ddB8\\nvpzejnoUWaRgUh5/8Rd/YUesTZkyhaeffprt27ezd+9e/P4ezlfuxrSWhyEIApIkMik/B4fDQXNL\\nC23tnWi6QUpaPi5PCgCKv5uAr4PmunJaG04yqXAxMxcUj3oN46jRMO3NZ3Ap4riK0Pn5+XbBeDTa\\n2toYGAjg9EwgJT1vsC8S0ahV1NI1FR1r/hyNDHD2yB9QoyHc3jQmzVhOZv4sjEEBpdfjxeFwEAkP\\n0Fp/ksaaw+wt20cgEOAb3/jGmCPzPkpWrVrFyy+/TF9PMwF/F0mpWWN+r2HotNafQJHHd52uxKxZ\\ns/ibv/kb/vVf/5Xu3h76dh2nZ98JXPmZiIqCoapE2noQohoOSSInPZOvf+1roxbTsrOzycnOob61\\nmVBDG97pE8fVHi0UIdTQRpLkuG4H2AQJEiRIkOB6KSkpsZ3fUlJSxuQWZZomjY2NmKZJQUEBs2fP\\nxjAMgsEg4XAYRVFITk4e1+KEuFvdtY514sdSVWvMtWHDBt544w3S0tLo7u4mFAqN+L5IJEIkErHH\\n4k6nk4KCAjs+MhaL0drayiuvvMK2bdv4+te/Pu6/38nJydx9993ceeeddHR02OI0r9fLjh072LFj\\nhx23+vjjj9txsYqiXPV8xIVz8fM30pxIVVX27NmDqqrk5OQM+7d4MtKVXArT0tK4cOECLS0t1NfX\\nD1v4VVtbiyBYz3m9Xi+BQIDy8nLAWmgRd8qLEz/WaLGrpmnicrnIz8+nqamJhoYGioqKOHjwoC12\\niscMx8VfBw8etB0EwVqc/olPfMKOd40fa+XKlRw/fpyTJ0+ydu1aO5I6EonYTmvxPsTd/eJzRp/P\\nR2NjI4IgEIvFePrppykqKqKkpISioiKcTiehUIgTJ06wc+dO2tst04qlS5fypS99yd5PSUkJU6dO\\n5f333+fo0aPU1tZept2IOyd2d3dz9uxZwLq/CwsLcbvdqKpKQ0MDPp+PX//617z22mt8+ctfZtmy\\nZSOe06EcO3YMv99Pfn4+s2fPvur28faM5Z6PX5dVq1ahKIpdH4rXiIbW9SoqKvjFL35BJBIhOTmZ\\nvLw8UlJS6O/vxzRNJkyYYCcKtLW10dfXx3PPPUc0GuX2228fU7s/akpKSjh58iSVlZUsWLBgXM9R\\nOjo66O3tJSMjY0zXdSw8+OCDJCcn85vf/Iby8nLKy8vJzs5m0qRJyLLMwMAA586ds509i4qK+PrX\\nv05KSsqI+5s/fz4vv/wyR44c4bOf/ey446IPHz5MNBqloKAgIfBL8LHjQ4/oXbt2Lbt37wasD0tc\\nWJIgQYL/t7kR0Y233347p0+ftoVrkUgEl8s17njNG+0GNZa+maZl6R2LxaxoJEFAUAegr8L6PW0e\\nqugk1n+egdoLNDb9kurqar7yla+MW2Q0mlDqRz/6EXv2HUDVTQxRgowF4By7+4AlTMNyAbyCG9Zo\\nEciSKKEJ+uB+hlynoXVFW3B3Egbqhgv8Bp31UJKs7UQFU4tAzGc55zmzBqN5h+x4mIsfl/zb4K+u\\nwUmm2o85UI+gBRFdKYiuNLufhmGwY8cOWyw3MNCPKTggY/GguA9LJInlkIA7DxQvqEFL6Jc02W4z\\nRgwwrPYbMaLR6LC4as1/AdmM4k1NQddNItcokBqLM97q1avZt28fhw4dIRzVMCQPjoxZOJLyECQF\\nU1cJdNdj+OvQI/2EWw6jBTvxFKyznUBG40YLc4dyqQunVWB14HA6bHdMq2BlYnYdxgy1Wg6QWcst\\nESmAFsWUJWRPMrInE2fWXFR/I8GWD9j/wUEAvvrVr34snPzGKjIeiQ/jOl1r9PJo5/pmEjAmSJAg\\nQYIE14Pb7eYLX/giP/3Jj/nNeya6HuWuNfrIa2sGOXRa5LnfOzHFFO699z5qamr46U9/Sv3580B8\\n7Csya/ZsNm7caMcfXakwYxXRBPyBa4vgDEdB1QREh2Q/VN26dSvPPnueN/fqeN0mn1g9XLyoairB\\nQBATA0UykSX4zfZUKmpcJLkN/vQ+H1lpGl19EmUVbnYf9/L7114hHA7zmc985pramZaWNszxwioC\\neQgEgkiKA39vC0kTcpHksblmG6aBaRgE/O1IkkhGxshzqYaGBnTdsKN54zgcDmKxKPpgbO2g1/QQ\\nrDlKZl4RXc2VBP3DncTbL5yw+jHJio2SZAc97bWDThcyDqfXip3CxNR1dF3FNDRMUwHEERwzrJ+y\\nYhXlNC2KrsVoqTuCpkatqN/BgtcPfvADzlSdRVUNXN4J5GbNpL3xFE5XMoXz70AQxUHHOGu/giCS\\nM3k+TTUHaKz+gLnpExFFCUlSMA0DQ1cxDA1JUtBUnWg0NlgcFOhoriLU30VOdhZbtmzhvffeo629\\ngwtn93H+zF57vZgoCMiSSHKSi1WrVvHQQw9dVgxIS0vjoYce4sEHH+TIkSNUVVURDAaHuZNs376d\\nyjNVaIZI/tQFTJq+GG/yxfm8qsboam+ko6mSnrZqmuvKiYWDzF9x36hOaoahc+rQH5AEk/nzF4zL\\nnWYsBAIBqxjpTrKvq6IoKIqCruuD95mBrmvUnngfNRYiOT2fW5Y9YEc921HOg/eDy53M9FvWkJlX\\nSPm+VzheXsFvfvMbPve5z93Qtn8YeDwe1qxZw3vvb6f29B4WrtoyZpe7xpqjaLEQ06dNviFuFXGm\\nTZvGD37wA44cOcLOnTupqa1Fb+pGGwxY8AgC02ZYRdoVK1ZcUaQdjwFs+c1L+E/Vjlvg1195HtmE\\nRQsXkpk5/gVTCRIkSJAgwY1k0aJFrFq1iv3791NdXc2MGTOuKLYwDIOmpib6+vpISUnhk5/8JK+/\\n/jq7d++23ZjAEiStWLGCDRs2MHnyZBwOxxUFLh6Ph1gsRn9//zVFUsYdAOOuUunp6WzatIm33nqL\\n6dOnU1dXd5lBQjgcJhqNDnPQmzt3LklJSSQlJZGRkYFpmkSjUXw+H11dXfzgBz/gL/7iL4ZFx44V\\nSZIuWzgyf/58du7ciaqqBAIBent7SU9PH7NYJi5qa29vRxCEEccWPT09BAIBFEUZ5vQWdxCMRCK2\\n8cFIiKJIWloaPp+P5uZmW+DX19dHZWUlkiSxcuVKRFHE4XBQUVEBWHU/j8djR/HG3fFUVbWjduPE\\nhYpx4v0Ph8N0dnZy+vRpO9I4Hp38ne98h4GBAQDmzp2LYRi2mOrWW28FLgoeTdNk8uTJTJw4kebm\\nZg4fPszq1asRBAGXy4Wu6xiGga7rKIpCLGbVidxuN6ZpsmfPHgRBoLi4mNTUVMrKyqipqRnVWCk1\\nNZU777yTT3ziE5c9Yy8sLOSJJ57A5/Oxb98+WltbCYVCOJ1O0tPTKSoq4he/+AX9/f2kp6ezdu1a\\nli5dOqz+NzAwwJkzZzhy5AgNDQ38x3/8B48++ii33XbbiO0B6x55/vnnAUt8Nt50qKsRF9HGnSbj\\n59bpdKJpmp0a0NjYyPPPP08kEiE3N5eCgoJhccimaWIYBpIkkZSURFFREe3t7XbkcW5u7jV9/v63\\nWbBgAZmZmbS3t3PmzJkx13p0Xefw4cNIklU/uZGmF7fffjtLlixh79697Nq1i87O4YlpoiiydOlS\\niouLmTPnysYiBQUFzJgxg9raWg4cODDuePXS0lK7TTf6XkyQ4MPmQ89W+MpXvmLbrUYiEX75y1/y\\n1a9+9cM+bIIECT4GXE90Y0HBJLZt20Z7R+clDmMgVp1j167dKIpMSkoKOTk55OTkjCr6+zDcoK7U\\nN5Mh4j4GHfBCrZjdhy33PM8kzOS51lNebyFmuJVQbzk7du6ipaWF7373uzckGicukolFI5bYLNQx\\nLoGfaWgIgBjrQbiCG9ZoEchWQStm7Ucc7M+wipYJpmA5CHIStMDQg0N/rfV7cuHg5EuEUJvl0CZI\\nIHtAGpyIGurFWFxJAFMcdCUcIuyL/yIMtkWPQPcxMKIYaphoRzmiCJmZmfz4xz/m4MHDhKMaOjII\\nCijJ4J0CpoalfBSHdEiAlFnQcxy6D1vbOtMGxYaiLZYEAV3X0VQNRZGHCVo/97nPIQjCdQukRhN8\\nGobBj3/8Yw4cPExYFXBNWj/i59Gdk0woqdASyfVWoPoaCAGeybeNOhAe2o9NmzbdcJHcaC6cAqAo\\nMspg9FG0+wzh4KC4L7/EugZgncOLP6z3CiKOCVORnCkEz7/HgQOHmDlzJps2bbqhbf8wuBEC6ht9\\nna4lenk0bjYBY4IECRIkSHA9rFq1ioGBAV769Qu8vGOAsgqV4mU6axbqeAaHsqpmCftKj8icb5ZB\\nSqZwxix27NhBOOgHM4IsqiR7TXQdevwCR44c5NDBgwiD8UBZWVmsXr2ajRs3XjZuLywsZFepg0On\\nJe5aMzYXwaEcPCWBoDB9+nR7PDhv3jw+//kv8PyvfsFvtw1w7kKMO1bqzJ5qObQFg5a4TxZNqi64\\neO+Al9omB5Jo8ti9fWSkxjAMyEjVeeC2GDMmRfmvNwxef/1VkpKSuO+++4a1Qdd1Kisr6e7uJhqN\\n4nK5yMvLY+bMmaOOLVwuF2vWrOHNt95G1TTaG0+QP+3WMT/c1TUrQqur+QyyJI4a1xMOhzEBxTm8\\nUCjLMpIko2kahq4iSQojSPyQHVYhRdOi9uv9vS0E/O3IiouM/JlWEcLUaWsoB0xMUx8U2Q0KOyUF\\nM2pgGDqaGkFR3EOONGyFFYahW2bksoMLZ8sY8LVhGjrBQB+GFqOnp4f2jk4Eyc3C1XeTnjOF4/te\\nQxQksgsuzret/sRliyY5kxfQ0XiKgb5Wqo+/TdGiuxAlGVGSLYGfrllCR0G02qlp+LoaqTr2Lk6H\\nzP33309xcTEbNmygsrKS0tJSGhsbCYVCOBwOUlNTWblyJevXr7/qCnxFUVi9ejWrV68e9vpPfvIT\\nKiurQHKxdN2fkDzh8jmuojiYkJGPOzmDjLyZ1J54j87WaqpP7WLWwpLLto9FQ5w+9Ab9vU1kZabz\\nhS984YptGw/xOLAPPvjAivB1q4PFUxmHw2k7+bnd1r3XduE0kWAfLs+EYeI+4NJbzyYlLZdFq7dw\\nbM9vKC0t5Z577hlXNNxHxV133cWBgwfp66yn6vh7zL71zqu6LLbUn6Cucg8up8zWrVtveKFn6H3X\\n0tJCR0cHkUgEp9NJVlbWsOLi1Vi/fj2vvvoqvoZ2AnUtJBWOTeQX8w3gP34Olyh/bNxHEiRIkCDB\\nHzeCIPDlL3+ZSCTC8ePHOXfuHCkpKWRlZZGammr/bYzFYnR3d9Pd3Y1hGCQnJzN9+nR+9KMf2Y5P\\nbrcbj8dDKBSit7eXd955h7feegtZlklKSmLy5Mls2LCBVatWXSbimzFjBkePHuXQoUPcf//94+7H\\noUOHAGtuFefhhx+mq6uLQ4cOIYoiXV1d9PT0EIvFbAGXaZo4nU5ycnLIz8/H6/XidrvJzMy0++Vw\\nOMjKyqK3txefz8f3vvc9vv/9718WJxwIBGwhmq7reL1eioqKrri4JC4CioujysvLKSm5fEw7EnGh\\nW19fHy0tLXi93hHdvkKhEKZpXiaqi/ct7mAXd6wbKrSL/x4XGQ0VSZaVlWGaJkuWLLFduzs6Oqir\\nqxv2vqELYHw+H7qu22YhcUHX0GMKgmBH1EqSxOuvv04kEkGSJM6fP4+qqhw5cgTTNJk7dy6f//zn\\nSUlJ4amnnkIQBDt6VpZlZFketu9Nmzbxq1/9irKyMtxuN4sXL7bbFo1aCVVut9u+R5xOJ6WlpVRV\\nVeHxeLjvvvuYNGkSW7Zs4eDBg+zbt4/u7m77fXl5eWzYsIHFixdftYY4YcIENm/ePOy1gYEBnn76\\nafx+P0VFRTzyyCMjij2TkpKYM2cOM2fO5MCBA5SWlvLLX/6SjIyMEcVvtbW1/Pu//zvBYJAFCxaw\\nYcOGK7ZtPLS2trJ79272799PNBolFAoRCARwOBz29Y8vfgLYtWsXkUiEjIyMUcffl76Wm5uLqqq0\\nt7fz+9///mMh8JMkiS1btvDcc8+xf/9+HBy4ZrcAACAASURBVA4HRUVFV3yPruuUlpbS3t5ORkbG\\nhzJfSEtL4/7772fz5s3U1tbS39+Pqqp4vV4mT548rrnm7bffTm1tLX/4wx9YtGjRmN+7f/9+6urq\\ncLvdrFy58lq7kiDBR8aHLvBbvHgxn/nMZ/j1r38NwM9+9jPWrFnDggULPuxDJ0iQ4CbnWqIbPU6J\\n1JRkGhubicR022FM8eai9TcS66tFjQ2ACaquE4r20dHtx1F9noOHDo8Yd/thuEFdqW+mI5NYTLeE\\nbbFezP460CxbdDwTEbJXXnR/wwR5GqaSjN6xlzNnzvJ3f/d3fOc737EHpPGY2PE6GcZFMsHzF9AN\\n3YqPnTB7uJveaBg6mCaiJKD7aq7ohjWa+EpWZCRJRNMMa3+iZEVHwcW+W1sOHnOIw2KwCbQQgpKE\\n6cqxNo36LAfE+PtM3dqPIIDkuBiHq8cGz2/84f7QYzIo0APUfkuAJzgwdRXVV48iS/T09FBdU2eL\\n4FRfPTFfAyTPuLgvUbaOO1Q8mFwEkU6r7W07IHM5eCZZccKGYR1XlDFNjWg0ghnsGha1G79nxyqQ\\nMgyDkydPjvm+2LFjhyVaVAW80z8xqiDM4XSiaToxYRKmkgQd+1B9DcS8OTgz5wzbdrTI4BvB0Pu+\\npaUFXdcJDPiQNQWHw4GsyMOCn03TJNpdZV2SrOUXxX3x68PISdSSOx3XxFWEm8vYvn37FZ3lbiau\\nR0B9I6/TpYwnevlK+7jZBIwJEiRIkCDB9XDHHXeQlpbGiy++SFtvN79+N8Jv34+R5DGRBOgPgaY7\\nQHDhTk5l4sSJ1FRXIRgBpk3UKF6ms3SOzjv7ZXYckpAlE6/LWowjSyaaHqOvO8C7b7fz7rvvsHDh\\nIh555BHbcW758uX85qWXaGgNcr5FZfrEsUf1miaUHpFAdF0WZ1lcXIzb7ebnP3+O8uog5eei5Geq\\nTMuPIYleoqrAuQtO+gYkTBM8LoMv39/LnKkqDgXEweG0YcDiWWEe3iTwwrvw/PO/Yvbs2cycOZO+\\nvj727NnD7t276enpxTAhbukmiQK5uTkUFxezbt26YW4RQ9u4fft2otEBIkEffZ31pOdMv2y7SzEM\\nHUNXGehtJhr2k5eTaRdnLsWet+mXRxU7nU50XUNTY4MOY/HxyUVhXPx9cXFSNNxPdfnbAORMno8o\\nSuiaSnX524T6uwavi0HQ30HShDy7OCE7XMQiQUzDQFXDSJLD2qcQP55FwN+OaZr4uy+gxsLIiotb\\nlm+ho/EUPW019PX58CSns3Lj53F5UtA1lb7O8yAIZBdYCygEQbQd08zBa6I43cxeeh+VB39Hb0ct\\npw/8D/nTl5KeW4ggWqI+XVMRRIngQA8tdYfouHAKh0Nk06bb7eLCWMeTcQeNoUJARVGYMGECK1eu\\nZN26dSQnJ9vbnz9/ng8+OIBuSixZ+yckp468gA3A47GcNFLScpmx4E7OHX+LC+cOkT91Psmp2ZiG\\nQb+vnZbzFXQ0VyEKJlmZ6Xz7298mK+vyuNiuri5OnjxJIBDAMAy8Xi9z5syhoKBgxOMPjQMLh6PE\\nVBVN0wgHfcSiUVRNJRyO4HA4cLmc9r3TfL4C0zSZNGP5cHEfliMlgCBePilKzZhIZn4Rvs4a9uzZ\\nwwMPPHDFc38zkJWVxTeefJJnnnmGjqZKggO9TJm5nMy8wmFCP9M06e9tpanuOJ3NVbgcMg9/6lMs\\nWbLkQ23fxIkTmThxfM57Q0lKSuKBBx7g5VdeofO9Awh3r8Y77cpRzrG+AVpf34OiGixatDix4ClB\\nggQJEtw0KIrCN77xDV5++WV27NhBJBKhvr4esEQq8QhYWZZRFIXc3FwEQaC6uhpRFFm+fDnFxcXk\\n5OTw/PPPU15ejtPptF37ZNlaVHPhwgVeeOEFXn75ZYqLi9m6dastgiouLubo0aPs3r2bzZs3jyuq\\nt6urixMnTiDL8rBFP5Ik8bWvfY3k5GR27dqF1+slJyeH/v5++vv7MQwDp9NJRkaGHSkaF2m53W5b\\nnBTvvyRJ6Lq1WOof/uEfePbZZ/F6vdTX17Nz504OHjxoR+UOZe7cuRQXF7No0aLL+iVJEhs3buS3\\nv/0t4XCYU6dOsXbt2iu6CceJRCL2mFsUxRGFk/HrC9iCxUuPH4/RDYVCI87ZTNNE1/Vh+zpx4gS7\\ndu1CEAR7QX5zczM//OEPbeFkZ2en7cQGlmjL4/EQDAZRVWuxlsPhsJ8RC4KAIAgYhkFXVxe6rrNj\\nxw5UVWX27Nls2bKF559/nubmZvx+P2vXruXJJ59ElmUOHTpEMBgkPz+fvLw8otGofW/FryHA7Nmz\\nufvuu3n77bfZtm0bTU1NLFmyhNzcXKLRKKqq2oK6CxcucPr0aRobG3E4HDzxxBO2qNPtdrNx48ar\\nupaFw2EOHDjA/v37bSFgPIL4tttu49Zbbx0mBNy2bRvd3d0UFBTwxS9+cdQoY0EQSEpKIhAIsHr1\\naiKRCGVlZfz3f/833//+920XwoqKCnbu3GnH586ZM4cnnnjisvvQNE2qq6upr68nHA4jSRKpqanc\\neuutw+ZsQzl9+jRvv/02VVVVwMX7sb29HVVVUVXVdnWMizn7+vo4duwYmqZdJu4zDMO+TiOJ/vLz\\n82lvb6empoYLFy4wZcqUK577m4G1a9fS2dnJ66+/TmlpKc3NzcybN++yOamu69TX11NRUUFvby9J\\nSUl861vf+lAXdkmSdN2O6UuXLrVd/OLupqMlK8Q5dOgQ//3f/w3AJz/5yTF91yVIcLPxoQv8AP7P\\n//k/NDQ0sH//fsLhMF/5yld45plnWLNmzf/G4RMkSHATM57oxryCiciyTMOFJiKaaDuMYZqEmspQ\\nfQ2WTEdOgZQicGVZgjFDQ9N60QbqqatvpvX5F6mpqeHxxx9HUZQPzQ1qtL7FoqoleBsqtJG9CKmz\\nIHXWJSojywlO8ORC5jLMjv1UVZ3lpz/9KX/2Z39GaWkp27dvp629Y5iTIYKAVF03qqgRLopkWn/1\\nAgOBgCUyjMfHXgnTwDRiCALIsU7Mq7hhjRaBbMWoOtH18OD+nNiFJQHLvQ8TTNX6KQ4KBKN90H3E\\n+j1l1mDecZPljGfEELBiqAjHHQnjmU1O0MPW/xuxwddkIO7mZ1gCwGCL7cInJE+DzBUQasHsPoym\\nhzl16jS66Cap0BLBRTtPWm1x53DRBVAavHYMsYXTIf1WS3gYaoXO/SB7IbkQHGlWWwwdIp2owQYg\\nOmrU7pUKWoZhsG3btnHdFwDbt28nHNVwTVp/RbGUAPZEPcYEzLRF0H2ISNtRRHcmouQYU2RwvK3j\\nFacOjUeO9y8WCWMiYATa0aVUYrEYkiQNxvQ6EbCcNo3oAEiei7G8cQYdFEdzdFBSpxBpO0prWzuV\\nlZXXJU773+JaBNSjXaebkZtVwJggQYIECRJcK8uWLWPx4sWUl5dbK/TPnMEfuhi5O3naFEpKSvD7\\n/bz26svIwgBf2hJl9UIDVYMf/Y/CiWrLQbqoIEbxsiC3zooCJsGwQGOHg0OVKRw94+BE+Qd8p6GB\\nb3/72xQUFOBwOFi3fj3vvfN7XitV+dZnVaQxDgWOnhFpapdJmpA+olvDqlWrmD17Nrt372b37t20\\n9HRR2xQAnLgc1jA8K01l7cIQ6xaFSE8xL1t0IYmgyHD7shA7Dnupb4vxve/9Xz71qYf53e9+RzgS\\nRdNMXN40MjInIckKmhqjp7OBC02tvPjiS7zxxhs8+eSTzJ49e9i+J06cSElJCW+//Q4xNULtyfeZ\\nv/rTuL0TRu2zYeioaoRIuJ/6M7txKBLFxcWjFgFTU1MRW9oZ8HXiSRr+gNzhcKBpKtFYDDUaQZId\\niJJkrRUanA8F+63IGsXhwd/TRE35u8SiAVLSJ5I/bSmdzWdoPX+McKAHUVIQJQXT0GlvPMmMCbmD\\n0wABQRCRZAe6FsM0DDQzioCAKMnWGEoALRahq/kMWiwMponDlcScZffj8qbjTclGkh10Np3GNAw7\\nyjcWtUSDTk8qTlcymhoZNqe1ClqgazEcriRmLbmXmop3Cfg7qKl4B8XpJS1rKqKsYBg64f5u+ntb\\nkCQBl8vB/ffdx5YtW8bsbGaaJmVlZbz11lu0tXegaQa6YdjTws6uXs6fb+DVV19l5cqVfOpTnyIl\\nJYXS0lI03WDitMVXFPcN9gqv10MkIiFk5JORO4PO5kr2v/tTHE635T4igCyJOBWRBQsW8sgjjwwr\\npBiGwalTpygtLaXixAk0bWhBCSRJZNbMmZSUlLB06VK78FZbW8sPf/hDevv8aLpBWtYUiqbMp+bU\\nLiLhAAO+NiZkTsYwdLtI6PV6CQd68Pe2IstOMvOHF1JM08A0dMvdQh45gmnS9EV0t1aza9cu7r33\\n3nEVvT8qZs+ezV//9V/zwx/+Kz5fB5WH/4Ds8JKROx3F4ULXVPy9LQT9nciSiMft4JFHHhl3vNNH\\nxebNm+nu7mbnrl20v7kP78wCUhcU4crLGPZ5ifkG6D9VR3/leRyayawZRTzxxBM3/ZwvQYIECRL8\\nv4UkSXz605/m3nvvHRbfGB8fud1ulixZwm233cabb75JdXU1mZmZPPXUU+Tn59Pa2sp3v/tdent7\\n7cjWkpISpk2bRiQSIRgMUllZyYEDB6ipqeHdd9+lsbGRJ598EqfTyZw5c8jNzaW9vZ1du3aN2bnK\\nNE1ee+01wFo4dakYSZZlvvSlL7FhwwZKS0s5ePAgHo/HdpyTJGnQcdlNSkoKGRkZI8YJW8+6nUiS\\nRE1NDe3t7TzzzDMUFBSwd+9ee7s5c+aQl5eHKIr4/X4qKiqorKyksrKS6dOn881vfpOUlJRh+y4u\\nLmbfvn3U1NQQCAT4/e9/zyc/+clRHeDiscGRSISamhpOnz6Nw+EY9XlramoqoigSDodtoeZQPB4P\\ngUDAFi+6XC5EUbRNDMByARQEAbfbzZ49e3jjjTcQBIGtW7eSkZHB66+/zrZt24hEIqSnp9PZ2Ukg\\nEKCuro6ioiL7fDqdTjuqV9M0NE1DFEUURbHdA2tra/H7/cRiMRwOB3PmzOFrX/sapmny1FNP8W//\\n9m9cuHDBFmWCFRcMDBN9CZfMiQzDIBQKsWDBAgzD4L333qOqqoqqqio7hUySJFRV5cKFC/T19aEo\\nCklJSXz9618f1+KMaDTK7373O8rKyiwDjiGEw2E73jg1NZU77riDu+66C8Mw2LNnD4ZhsHnz5lHF\\nfXFEUSQ5OZlQKMT69espLy+nvr6eRx99dLDudzEdwOFwsHHjRv7kT/5k2PUPh8N88MEHtvhsqAhU\\nEASef/55VqxYQUlJyTB3zHfffZf/+Z//sfe9atUqpk2bxs9//nMqKip4+OGHkWXZdmvUNA2v18vu\\n3buJxWKkpaVd1r9YLDaq0yRYn8GsrCx6enooLS3l0UcfHcOV+Oh58MEH8Xg8/Pa3v6W2tpbq6mqy\\nsrKsZDtJIhqNcuHCBaLRKKIokpWVxVNPPcXkyVepE98EyLLMN77xDb73ve/R2trK3//939uu/0OF\\nfqZpUlVVRWlpKUePHgUsx/dEjSjBxxXp6aeffvrDPogoitx11100NjZSU1NDJBLhrbfe4vz58+Tm\\n5l7RHvijJG6V7HA4yMwcf2xnggQJxoYgCBQWFlJSUsLMmUUIGCR5XKQke5iYn8PcW2bz2c98hqys\\nLMrK9tsOY0qyFfkaatprifsEBbJXQdYycGeD4kWQ3ZiigulIx5V1C7Ing7CvibbWZro6O1i6dKn9\\nUPNM5WnCvibk5ImIivuq7dbDvYQbd+NximzZ8iAzZsy4at96e7ro6GjFNEF0Z2A6MiBtPkLmYJuv\\nVLRwpEKgAVOP0NrWRkV5OWVl++nq8RMzXcgZ83Dm3Iojay7yhEJMOYlIwIevt4czladpb29j8eLF\\nwx7ET5s2jfb2NpqbW9C1mOUw58kHeZT+G7olxgNkM4jR8cEV+w9QWVlJY3MzppyE7M0Z9m+SLGMY\\nBoauYw513Iv/BxCoh0iHJYLDsIRxhorgzsGU3NB9CAbqLNGkOw+0IIKpW2K+lCIuigbjDn1DVoqZ\\nhiW4M7XBCF8Neo6BHkGYcAtkrbTEiZILwZ0DoVYMLYaSNgNnplUcjHZVYmpRSJ09KBg0Lzr42edN\\ntY4hCOCeBLLLihzWglbfAvUwcH6wr+2IepgZhVPZunULDz300JgjmVVV5Sc/+Qlvv/3uuO4LRVHY\\nvmMnMdOFe9LKqxbPBAEUhzXpNSQPZuACpjqA5q9D661G89UiRDpwKyZTCvLZsuXBYf0wDIPt27fz\\n05/+lPe3baeuoZGOzl56+/x0dvfR2NzMoYMHOXToIKZpMm3aNARBGLV/cupU9ECb5eqYOnPQ6cWw\\n4s4MA0VRiLQfR4/4YMIt1mdtCKZu3dNutxtphGq2VZTU0QJtCBgsX758TNfjo0aSJJYuXUpKSjJ9\\nvd1EQ/1ogTZivTWoPWevep1uZgRBYPHixXR1dtDR1kK0r55ob431PSJImLqKEQsQ66sl3FSG4a/D\\n4xRZvdoSMH4c+pjg480f0zzij6kvCRLc7IiiyMSJE1m7di133X03GzcWs2nTHTz44IPccccdeL1e\\n/v3f/xV0P098MsrK+QaGAT97VeH4WRGvS+epz/SydWOAghwNWQJZsgRyXrfB/MIId6yWqG8xaWkP\\ncbz8NMuXL8fj8ZCXl8e+/QdoaY/S5zdZWGRwNe1HZZ3Ij152YAgpbNn6yVFXX7vdbubMmcOmTZsY\\nGAhy/nwdOekaD98ZY/0iP/etH2DOtBgp3itPh0QRDATOnHcQDMU4dqwcVYO0nOnMWrSJogUbycov\\nIiN3Oln5RRQU3krShBxCAT/+vm4OHz7E9OnTyckZPieZP38+LS3NNDU3ocYi9LTX4k3NxuVOHTYu\\nNkwDTYuhqRGCvlZqTryHSIyFC+bzhS98YVSxTDQa5dSpU0QiIfKmXB7loygKpmHF51r/DbpuDDqC\\n153cTiwygKZGaW8oR1NDKE4v3pRsGqp209N2Di0WxuWZwJTZa/F11mMYGrHwADmT5yNJF8c94qBT\\n3sVFSObgAi4d09DpbDpNX2cdgiAxedYaihbcgcOVhKGrCIJAakYBA32txCIDuDwppKTlEQ0P0Hy+\\nAofLS+7kBRiGhoCANCgUM00TXY3a/XK4k8mdshCnO4VoeIBo2M+Ar53+nmYCva2Eg33oWpSpU6fw\\nN3/zN6xatWrM4j7DMHjppZd45ZXf0dPXj6QkUVC0nNmLNjH9ljUUFC4lNbOAaDSCr6+bpsZGysuP\\nU1hYaLmWRFRuWXYPiuPKzwN0XUdVrQVssiyhOL10tlRhGioetxOnQyYzI52SkmIef/xxNm3aNMyN\\nJBqN8h//8R+89trvaWpuQdVMMvJmkp5TSGpGAU53CgP+Xjo6Ozh29CiVlaetsW9XF//0T9+nz9dP\\nauYUFq3+JJOLlpGUmoUgiPR2NqCrEXKnLESSrDgww9BRNRVfVwO97fVk5s8iM2/mJf2xRJ9xp5uR\\ncHlSaamvIBoOsnbtmqvGIN8spKens2HDBtLSJtDX10NgwEewv4NAXyvB/g5MLUxaWip33nkHjz/+\\n+MfK1U4QBBYtWoQoCJyvqUXt8eOvrCNQ20SosYNgbRO+8mp6953E6PDhEkSW3rqEb37zm7jdV3/m\\nlSDB9fLHNI/4Y+pLggQ3O/EYyU2bNrFp0yY2btzIPffcw9atW1m1ahWnTp1i165dpKam8rd/+7fk\\n5OTQ19fHP/3TP9Hb20thYSF/+7d/y7p168jIyLDFWwDZ2dmsXr2axYsXU1FRQXNzM83NzSxbtgxR\\nFPF6vRw7dozTp0+Tm5t7WQTupZimySuvvMKuXbtQFIU//dM/tYV7l5Kens6SJUsoLi7mzJkz+P1+\\n0tLSyMzMJCUlhdTUVFt0dKWxr8PhIBgMEovF6Orq4vz587jdbu644w6+/OUvc+edd7Jw4UIWLFjA\\n8uXLKSkpITU1lebmZtra2jh27BjLly8fFruqKAoLFy7k6NGj+Hw+/H4/TU1NTJ06ddh2pmmiqirh\\ncNh2+ysrK0NRFD796U+P6oDsdDo5d+4cHR0ddlzyUIa6LMbH2bqu2456kUiE5uZmAOrr6zlx4gSx\\nWIzp06cTiUR44YUXOHv2LLqus3TpUgoLC2loaLDfO3v2bPucxmN3NU0bFp0bryVomsb+/fvp7e0l\\nLy+Pz3/+8zz00EPouo6u6/8/e28eXVd1n/1/znhHzaNlS7JkWbZlG8+AwcjYGEIchgQnkJD0DSkp\\nJCRZpElXmmSlWW2TNEADLXm7mkWmX2IoGaCBBnDA84AtD3i2NVmeNM/Dne890++Pc++1ZMm2zNSQ\\n93zWAsu6R/fsvc+58t7n++znQVVVampq2LdvH11dXdx00014vV4aGhrSIsrKysq0kHF0PSQlYgQo\\nLS1l8eLFqKpKf38/w8PDtLW1pa9TMBgkkUiwdu1aHn300Us6e09EIBDgiSee4NChQ+i6zsyZM7n3\\n3nu5//77ueuuu1i1ahVFRUX09fXR399PfX09HR0dmKbJ7t27KSoqYu3atVdcg2lJF/FUBG4kEqG1\\ntTXdd0mSmDp1KnfddRd/8zd/w+LFi8esmTs6OvjBD37Anj17GB4exu12M2fOHCoqKiguLkaWZfr7\\n+2lra2Pnzp1Eo1FqamrYvHkzv/3tbwG4++67+fKXv8y1117L9OnTaW5upqenh4KCAmbPnj3mvtJ1\\nnY0bN9LR0cG0adPGzIctyyIajWJZFl6v95KbmWRZprfX3oD3QRGHCYJAVVUV119/PbIs09PTQyAQ\\noL+/n76+PgYHBwFbnHrPPffwwAMPfKDmOi6Xi+uvv56zZ8/S2dlJc3MzmzZtor6+nuPHj7Nnzx5e\\neuklNm7cSGdnJ6Ioct9993H33XdP+jmDg8M74b1YR7zn1c1vfetb6a9VVSU7O5uRkRFM02TDhg1s\\n2LCBjIwMZs+eTU5OzoT2vZNFEAT+5V/+5d1otoODw/8Cl3MmM02T9evXj3MYSww0XBD3ldxyUewm\\ntvudqGIZCRIJjYzs6UiuTMJnXqeubh/V1dXceuut77kbVKpvO3bsQFY9qHkLSbjLsXQTQVLtmNYr\\nIYiQWQWDR4hGYzQ0NILix5N0Mry4rbI3H1fBXLSRVsIde9i9Zy8AX/ziF8e4wT388MMAbNu2HU0P\\nY3VusgWHvtKkE12q6KPbIjpM5EQv5sAhvJPo/+UikMe4wSUSWKOd9QTJFuAFW2zxXawXIu1gaQiI\\nEOmxXfoAQcmw3Q/VXIh22TpBI4IVaQdfWerCgSCDYKYd+sbFEUc6wYgiuPIgf9kFt8LkeOq5i6Bv\\nH0bE3j0oCAKCKNvvZWogXWTnbCXdAlPiRVGx+5VdA1lzINoNI/UQagVRQpAzsPQggiBQXl5+VXGw\\npmnyzDPPsKduXzo+eLL3xcmTJ4lrBmrerMtGVFuArukkEgk71tkCQRQRM2fA0DFyMn0UFBRMGBmc\\nQtM0nnnmGTsOOK6nY7ZV/xQEScEyNPRQF+GBpjGOm5///Of52c9+NmH/LMsiMdCAEQ9CtBvBX5YW\\noyYSCXt84gG7Ad6xBd1U3LQkS8jKpadFsr+EaO+R9ALug0LKqXOy0c4fJK7GAbakbFp6HD5o/XRw\\ncHBw+H8Tl8s1Lipk27ZtWEaM6+frLJtrb1rZd0Jk/0kRt2rwzc8OUFo0QQysCgndQjcsPGqcv/sr\\ngX9dD81tXaxfv56//du/JS8vj0cf/Sr/+sQT7DoyRN+QwB21OjUV44V+A8Ow5YDM63UKJhmsvPkW\\nPvShD12xT7Iso2kaLgU+erPO8vkRYrE4imzhurw5QJrr50b5zcZMrLiJhUVx+Txqlnx4wgezoihR\\nWDKTguIZNB3dQue5I/zHf/wH3/3ud8dEY0qSxKOPPkpWVhYbNmwgFhniZN0L+DILKCybR1ZeKaIk\\noyfiBAY76Os4SSTYj9ulMH/+PL785S9fdvPAihUreOGFFxjqO084OIAv4+LIGAGv14ckyUQiYSzT\\nwrDsOWxgsINwsA9dj2OEbSd4uy1R+ruasCwLX2YhJRWLyS+ppr+zCUEUcauZ6HqCU4c3MHvZR9NO\\n1YahExzqJBoexjINFJcXf2YRbl8WoZFeOk7vB0Fk9tI7ySuqwjA0OzY3FVcFTKlYRMvRN2g/c4Sp\\nFQuRFReCIGBo8bRC07JMLMsEBAw9Je4T7GNFCUEQmFKxiOLpCwkMdtDatJvhvrPkFM3ANHUCA+30\\n9fURjUYnd2MkefHFF3lj40YSGsxe9CGmlM1LRwWnKPBUUTClikhoiBP7/kh7h+1+Eo3Fyc4vHeey\\neAGLREIjHo9jGDrpNGhA9ebg8eUSC/XxiU98grVr116yKJRIJPjRj35EQ0MTpqAwfc6NlEyfj+oa\\n+zy0esEtdLfVc65xH03NLXz/+99H13UCwRD5U6qZe+0dYxzIp5TP4/TJnQz3t9LTdpKi0rkoqhtN\\ni2EaOuFQALBQXWNjz9LRyAK4LvNBFAQB1e1Di8aJRCKXPO7PEa/Xy2233catt95KU1MTHR0dRKNR\\nXC4Xubm5XHPNNenC/wcNQRD42Mc+xooVK9i+fTs7d+5kaGQEc8T+7IhAtsfH9ddfz+rVq8c4nzg4\\nODg4OPw5k4oAHS0GsyyLzZs3A/DpT3867dD0m9/8Ji3u+8Y3vjFuHZWKZg0EAmiaRmVlJd/61rf4\\n/ve/z5EjR3jzzTdZuXIly5cvp7Ozk1deeYWf/OQnNDc3c+utt44zqUm5vL366qscPXoUQRD4whe+\\nMCkRVkZGBsPDwwiCQGlpKdFoFMMw8Hg8k96QnJOTkxYjaZrG1772NWpqaiY81ufz8aEPfYjrrruO\\nJ598kra2Np5++mm+/e1vjzlfQUEB3/ve93jsscc4deoUZ86c4T//8z+prKxk/vz55OXlYVkW4XCY\\nlpYWGhoaiEajKIrCPffcc8X1YOrZHaICfAAAIABJREFUdE9PD0VFRRM6FPr9fqLRKPF4PC3KAujp\\n6cEwDEzTZGBgAEEQcLvdtLW10draiiAILFmyhDVr1jBnzhyefvrp9KaVtrY2Dh48yNKlS9Pnikaj\\ntLW1EQgEEEWRzMxMpk6diqqqHDp0iM7OTjIzM/nhD3+IqqpEo1HboTvpKJifn8/SpUvZv38/27dv\\nZ926dXg8nrSgMNW3VFxyatxSccFerzftRvjhD3+YNWvW0NjYyIsvvkgoFKK2tpb6+nr6+/tpamq6\\nKufseDzOk08+yfnz5ykoKOBLX/oS06dPH3dPrFmzhltuuYUjR47w05/+lLfeeoumJnt9uWzZsksK\\nn0zTJJFIpGOQR3PNNdewY8cOFEXhn//5n8dF4I6mvb2dH/zgBwSDQfLz87n22muZOXPmuL4ODw9z\\n9OhRDh06xOuvv05nZyfHjx9HEAQefPDBMZHYYN9njY2NvPTSS8ybN4/i4mIyMjIIBoMYhkEwGEy7\\n9I0m5eooiuJlP4eKoqSv5weN4uJi7r//ftatW8exY8cYGhpC0zQ8Hg+lpaVUVVV9YAVvPp+Pb3zj\\nGzQ3N7NlyxbeeustmpubxxyTlZXFzTffnNz89d5FDzs4vB+85wK/l156acJfCKMz5wOBAAcOHHhH\\n50kJLRyBn4PDXyYnTpygq7sHU/LasbwkrcD7G+xn6gXXjhf3pRAlMAV7l4amo3hycU9dTrR9F5s2\\nbUoLPt6POMve3l4Mw0J0F2IYpl0AmYy4L4WnGFsWJ2BaFt7ixZeNFBYEEfUSosYUiqLwyCOPUFVV\\nxfPPP8/ISBCrZzeW7AN/BbgLQZIRTB0h0Y8QOotgxvBPsv9XikAWBPD6vMiyTCQSsf9tMDVAsyOD\\ntRBCsiAkiCKCnAWiiiVIWKIXIWMG+KbabzR4AiwTQZSwjITt7ie5ku5/oi0SDJ4GLWiL/EQVFD/4\\nZ9gRvoOH7UZlVmEZ8WSUsi1Qt7CwvCUIih8zHkQPdaJkTEV0ZUJ00HbiU5IW/JZhiwct44K4TxoV\\nQZzu+BSID9pCRV8ZFF4PsT6s3jfZu3c/s2bNGnOtLsfmzZtt0VzS4fKyMbsX3RfRrm4sUcXnnzLh\\n8RaQiMeTxSxzTDELADUfwbIXQhPFQad4JyLE9vZ2WlvbJ+yfIAi48ucQ7diP1bffvg6uHATBhWXE\\nSSQSiEYiefCoxduouGlXMsr3kmMmKpDcyfVB5ErRzh9U/pIFjA4ODg4ODqPRNM2OXjJjrLn2gohv\\n8z7bQfq+W4MTivtSuFTQoxaJeIKMTBdfujfB154SOXr0CH19fRQUFDBr1iz+/pvf5N//7d9obB2k\\n8dkYhTkaS2tM/B6LhC5wtkPg2CkZCxeIbm7/8Ee49957J/0g2H4QbpLpN9MbMVwql52HjSbDZwIW\\nimw/A9K1+JXdp0WRWQtvQUtEGexu5tVXX01vckohSRIPPvggt912Gz/96U85efIkgaEOQiM96fha\\nAFEQUBWJwvwcVq9ezUc/+tErFuK8Xi833HADm7ds5cT+V1hS+6l0vO1o7BgjnXg8AYKAHo9yrmEn\\nlqGTkV3EjJoViKKElojZoizTwuXNJSu/FEm029DTdhLLNFBdXuKxEEO9Z6nf+yJTq65juO8c/Z0N\\n6Fr8goNfcuw8/lyioUEs06Jgag2ZudOSUbuk3UxCoRAA+SWzON+wi9BIH4GhLjKyi5AVF4l4mHCg\\nF7c3G8s0MA0dQRAxDfu+lFX3hJuJMnJK0DU7nri4fAEZOSW0ndrDYGcDv/jFL3jssccmNY+rr6/n\\n1VdfI6FZXLP8HvKLKy9/Xfw5LF75KQ7v+h39A21YlkWeN3PCY03TJBwO28I+yx43UZTT955lmahu\\nP6GRbp5//jecP3+ehx56aEI3vF/+8pc0NDSB7GXpTffhy5h43SYrLqZVLqKgpJojb75Aa1sHWiJG\\nRk4JNcs+MkbcB6CobmZes4rGw5s4fXwTAEWlc5EVN5plC/KsZFsv9MuOmxYEUF2uMW6PE2GZJgJ8\\nIOJ5J0IQBGbPnj0uqvsvgYKCAj7xiU/w0Y9+lJaWFoLBIKZp4vV6qays/MA4Ljo4ODg4OFyOhoYG\\nuru7ycrKYvHixYAdjfrWW28hiiKPPPLIOHFfipSTXyJhbwgvKSnh/vvv5+c//zmbN2+mtrYWQRC4\\n55578Hg8/P73v2fLli1s2bKFmpoaZs6cicvlIhKJpN3/wK4bPPLIIyxcuHBSfRjtFAakRUVXikMd\\njSRJaYFYSvR2JbKzs/m7v/s7/umf/okzZ85w+PBhli1bNuaY3NxcHnvsMerq6njuuefo6uqioaGB\\nU6dOpTf8pGrxiqJQUVHB3XffPam0m0WLFpGbm0t3dzetra1jomxTiKKI1+tF0zQsy0KSJILBIEND\\nQwiCwPLly6mtrSUajaY3nIiiyOzZsykvL0cQBEZGRjh27Bi6rlNcXMy5c+fYsWMHwWCQkpISmpqa\\nOHPmTPocqfdQVZWsrCz6+/txuVw88MADmKaZrgXIsozL5SIcDiNJErfccgv79+9nx44d3HPPPZSU\\nlCAIAk1NTdx11132WjWZLmTXVIx0/y5evyqKwpQpU9A0Db/fz2233UZtbS2//vWv6erq4n/+53+4\\n//77rzjGYG94Son7vvOd71zSURIuJOR885vf5Ic//CFdXV3pDTAToes64XB4zLjJ8oU1UW5uLoIg\\nEAwG+e53v8tnPvOZCaOuw+EwTz75JMFgkIqKCu64445LbrbJzs5m5cqVVFRU8PLLL7N//35EUeSO\\nO+4YJ+4DWLx4Mddccw3Hjh3jiSee4Gtf+xrTpk3D7/cTCATGjf3ouGlgwutz8fHwwV0Pgf3c4eLP\\n/l8CgiAwa9YsZs2axcjICOfOnSMSiSDLMhkZGVRVVTmpTg5/Mbxvd/LFSu7UZOBSrzs4ODiMZufO\\nneMcxvRQJ2Y8CJIXfJe3SxdEGcvUSCQSKIqMklVOrOstOru6OXnyJPPnz39f3KBisRhYtnuGlWzX\\nVSEqtq5KciFYBnq4B1f+nCv+mHQJUWP6bUWR22+/nTVr1vDss8+ybds2gqEg5sgJCNiCQlEUkGUJ\\nlypRMmXy/U8JcNavf45wxx4kV+Y48ZmA7RYgiiKhUMj+N0ELwNARBMtA8hfhKbnWFlsm/+0IBIOY\\nmgFyctE+3GjH61omFipggR6B7h0XhHT6xU4DYUgMQeh80tVPBF8Zlq8cAdvVzeVyobpUgsGg/Xpm\\nFdbQcRKDp1AypqLmzkQbPgeBFqyMmfbbmobtFmjp6es2YdnSMmyHQkDIqMQydQQ1G9eU64l275nw\\nWk1EKvL2YofLK5G6LyJn3sDCBGn8QsqyIBKJ2A6LyWKWIMpJ90PBHmfDjYVAJBJlfdJx76GHHhq3\\nMHsnIsTGxmYQRNzlt0z4c2reHPRwr+3o2bnFFv36pqUdPE2Siy5LSw7ahbhpVVVRr2AbY5kaJB+c\\nOPz58ZcqYHRwcHBwcEjR0NBAKDhEaZHOjGn285PzXQKn2wU8LoMb5l9+E4IigyhYGKaBYZhk+SWu\\nnWtQdyLGtm3buPfeewGYOXMmP3zsMbZv3862bdvoHexlwx4NWxokACKS6mXZMjvuaebMmVfVD/uB\\nqkAibtoOBqKFLIGFNXYDCdjzzou+ZZj2cW7VQhBM+rtOocWjKK7Lz9EEQaRq3kr2dDSxb/9+PvWp\\nT5GZOV7MVVpayve+9z1CoRAbNmzgrbfeYmRkBF3XycjIoKioiNraWq699tqrcvxat24d9fX1tLV3\\ncnDn75h33d14vP5xIi3V5SKRSBCNjHD66BtosSC5RdNZUvtJJHnsfDUUCqJpdhyuZVmcb9rNYPcp\\nEAQi4WFEUbZFjb1nGOw5jSSriKKEL6sIb2YBoiCRSIQZ7j1HeKQHw9CRFTdTKhchCiBJMi6XiqKo\\nSR1gspghymTllTLQ3Uw0NExWbgkl5fM5f+oAPeePUzFvVfI+09Jrd0lWx4n70pt+BzuIhgZQXT4y\\nc6eBYDFz/moODbbT1d3DiRMnuOaaa644xps2bULTTabPWn5FcV8KWVa55vqPsePV/4t5UUxXCjtO\\nK4hhmAiCiKwoiJLMxXenKMmIkoxhiezdu59QKMTXv/71MfdJZ2cnu3fvQTNg/nUfAdEuEqaKihMV\\nilxuHwtXfJy9m/4/4rEo2fmllxTiTatcRDwa5mzjHlqOvUFv+0mmlC8gq6A8HTscDQ3aAlFDS4ow\\nQVFUvFdY5xi6RiwSQJVt5xmHP08URWHOnCs/I3JwcHBwcPggkjKKqa2tTQs1tm/fjmmaLF26NO3o\\ndylcybl2IpHA4/Fw3XXX8dvf/pa2tjZOnz6ddrBau3Ytc+fOTT7L3kt9fT319fVj3isjI4OVK1ey\\natWqK573YlJzvng8DpCO5Z1oLjqR2Ch1XElJCd3d3ezatWtCsdPFZGVlsXbtWp577jm2bNkyochH\\nFEVuvPFGbrzxRs6ePcsbb7xBfX19WpSYnZ3NjBkzWL16NdXV1ZPe6CXLMg899BD/+q//Snd3N4Zh\\nUFpaiiRJY2ofgiDgcrmIxWKEQiE6Ojrwer3ceeed6TVrCtM0GRkZSesNQqEQTz31FIODg7hcLgYG\\nBtIOfHv27EmLEy3LGiP0ScUOp95r5syZzJ07N+305nK50m70qTZWV1cjyzKBQIB4PM7s2bMpKiqi\\nq6uL5uZmpk+fTiKRIBaLpX/ucuKxffv2AbYQMuVQ+KlPfYqnn36aXbt2sW7dukuKV1NEo1F27doF\\nwJe+9KXLivtGU15ezmc+8xn+/d//HdM0J7wPNU1Lu9alxI4Xi6VkWUYURVwuF6Zp8uyzz6Zjhkez\\nY8cO+vr6yMvLY/Xq1SQSCTRNQ5KkS0ZUl5WVsXbtWv7whz8Qi8VYtWrVhH2RJIlHHnmEH/3oR7S0\\ntPCP//iPXHfddaxevZqioiL8fj+CIBCJRFBVNS2+BPv6XGmNH41GEUXRWQ/9mZOVlcWCBQv+t5vh\\n4PCe8b4J/K64o/od2n46AkEHh79sUs536iiHscTgKbvEkDlzfNTqxQgiWPYOdUiKh/JmER84ys6d\\nO9OikPfaDcrtdoMgYBhxEN3pdlnjqlnYBYOLfzWaSXGS5AEjgpkITvrcE4kaL0aWZT73uc/x2c9+\\n9l3rv2maFBYWkpHhI9zTR+DUa4gFS5AyynC53MiKnO6mrMiIIhiBDoSkuE/Jq8ZbtnL8vxNW+gTQ\\nvxcreM6Ov1WzEDKrwZOPMHACK9Jqu/YJiu3Wl1EFniI7BthI2DG5wTOghxEsE0EUkBUZl9szpm3p\\n83mKYeh4euxlfwmiKyMZD9tlOx6SjAG2TEBMRh1fhGXZDoV62HaccxeCqdmiwuxKQn2HL3utRjOR\\nw+VkUbLKsZJRzHo8huy6sPCzGCXug0vESdsiP0EQEd25hBP6hHHQKRFiOJZAKFhOWFcgELTNDUV7\\n8TZmvJNInlyUomuJte8A00DOnDjqQBAEvKU3EQFb5Ne72xb/ZlbZDo6CkhzzTizJN8ad0ev1XtE1\\nRg91IkkChYWFkxtYBwcHBwcHB4d3kUAgAJbBtCIrZbpG3XF7Xnbjgigu9fLPRARAFO19KLaDl8Tq\\nZTp1x+Ps3bt3TLEkMzOTu+66i4985CMcO3aM1tbW9APw7Oxsli5dOuliwcVkZmaCINLeC3OmJ8V9\\nljle3AfpTVb2ssjudHuP/cA902fi8wqc7TaIRYNXFPgBeHxZ5BVXEug/x86dO7njjjsueazf7+fe\\ne+8dV0R6OwwNDbFz5047bioWIR4/T90bPyW3uIrisnnkFZaiqnaxJjDYydnG/Qz2nMY0DbJyp7Dg\\nhnXjxH029piYpsHp42/Qc/4YkuLC7c1iSvlCsvLLaW/ZR2/7SSRFIb9kFoXT5uHLLBjzLroWZ6D7\\nFD2tx0nEgpw69BpLaj+Fb1zRwp73W4AkK/Z+Kt12YZxWuZDWlrfo72xk2szrECUZLAvT1BEEwf77\\nKFLP8CzLovOMXagtmFYDWAjYBa2pFQs53/gmW7ZsuaLAb2BggMOHj2BaAlMrJ+eeksLl8ZNbUEZf\\nVwvh0NBFr1pJ5z7bJV5R3eOEfal+xKMBJEmhZslaWk5s58TJen7961/z+c9/HoBz587x9NNPEwpH\\nKCq7BlnNSLtYAsTjMSRZxqW6xjm4KKqHwtJ5tDbtJhYZuWx/Zsxdgcvj59TxbQSHOggMtiMrbmTV\\njZ6IMdhzmnCgD9XjTxdQPR43V/LR7GlvwDI1ZsyodiKNHBwcHBwcHP5XGBmx50FlZReef9fV1QGw\\nevXqK/58SliXmosqisJNN93En/70J+rq6qiqqkofW15ezoMPPsgnP/lJDhw4wODgIPF4HI/HQ0lJ\\nCYsWLbqqDT8pBEEgMzOTQCBALBZDkiRkWcY0zQmPT4nSRtdGYrEYoihSWlpKd3f3pBz8Utxwww38\\n/ve/p7Gxkc7OTkpKSi55bEVFBV/4whcm37nLcPbsWfbu3YthGGiaRldXF/39/WRnZ1NQUIDP50NR\\nFEzTJBAI0NHRQSwWw+12s2bNGj7+8Y+Pe8/RY9Lb28vjjz9OW1sbfr+f6upqVq9eTUFBAT/+8Y/p\\n6OhIX3dBEMaMtyiKo5y5LU6fPs1zzz3Hl770pTHXePT5Ug6KwWCQaDSK2+1m1apV/Pa3v2Xnzp1U\\nVVWlo2wFQRgnZBxNMBjk4MGDgC3wSwkQy8rKKC8vp62tjb1797Jy5crLjnFdXR2xWIzq6upxsbxX\\n4rrrrsPlcqHrOv39/WNeMwwjLe5TVfWSBghDQ/ZaqqCggI997GM8++yz/O53v6OoqIglS5ZgWRZ1\\ndXU8++yzmKaZ7mtKAAm2gE5VVVwu17jNT6WlpRQXF9PZ2UlzczNTp06dsB1ut5tvfOMb/OpXv2LP\\nnj3s3r2b3bt3k5eXlxYTdnZ2ptdcKWfFyXyee3t7kWV5TOSzg4ODw/vN+yLwc8R3Dg4O75SU850w\\nymHMjAfsL7xFk3iH1AT9wndkfwnR3iP09vaOO/q9coMqLCxEaj6NEekFf2by9+PEvyNTor/RQj8r\\n2m1/T/GDEcEytAl/diIuJWqciHej/6ZpsnnzZjZt2kRXdw+xhG1JjhXG7K7DGDiG5q9A9BWjurzI\\nsoAR6oT+RoREEEwdOWs63tKbJhaBC9gXtK8OK9wKkgq5ixD85fbXlmU70gly+jU8U8aKQUWXLa7L\\nnIkQ64H+gxDpRBg8iFy2cmyJI/UXwf6nMzX2o+Nh6T+AVbwSZN8FMaYopY3u0lgWxIegf7/9Hpkz\\nsSwtHRUrXsW1gokdLieLIIhInlyM6BCJQDvuzAufp0Q8Pkrc57q0kDZ5X0q+QtyF14yLgzZNk1/9\\n6le0tJzGkDOx1ALQjPSP64JBIpFAkiRcLhX1orhcw12MJfsQ9BBGuBsxY+LFmyBKeMtWkvAVEe+v\\nx4wHsYaOIVim7ZZoGljBFoSMSiRZSbszXkncZ1kmiYEmfIpEbW3tJEbVwcHBwcHBweHdRU+6i/UN\\nCTz7mkw4KlB/RiQaB5dipbVwl+PijSsVUy2wDIaHh9OFo9FIksSiRYtYtGjRu9aPpUuXsnXLRt48\\nonLzYrvtY+bJqSYkv2dZ1gXzQEFg+0EvFgKL52ic77LjiQ09wWSZUjaXoZ4zNDU1XVbg925gmiYv\\nvvgir7/+OvGEhq5bePx56IkYiUSE3rYT9Hc0IsoKkqRgGhoCJoIAeiKCIEoUTp2F6vJO+P6iKGJZ\\nFi3HNtLbdhLZ5WF6zUqKS+chijKdZw8z2NOC4vJSvXAtWfllmIY+JqJVFCVcnkxKZ17PlPIFNBx4\\nmeBwF8f2vsS1q/7KFvKNOp9hGFimjqFr9kad5OvejFwKplTR19lC41svU7PsnvQNKYgSE4nHLMui\\ntWkXw33nECWFvCm2A4jP50MURaZOn8/Zhjc5evQo8Xj8so4VdXV1aLpOQUk1Lrfvqq9Vxezl9HY0\\nMTLQQSQ0hNdvC9g0TcMwdHQtiqFrRAIakqTg8mShjjpPaLiLaGgQ1eWlcNos/Fn5HNj2HLt2vcmd\\nd95Jc3Mzv/jlLxkaHEJW3LbAT3HZY2SBZRnJ8+gYuo6ua3i93vS4GYZJXsksOk6/xWDveSKhYbz+\\n7Ev2Z1rlQopL59DVepL2M0cIB/qJRwNJ5z6d/s4GZsytRVXVSW3csyyL9jNHkGVxUsVzBwcHBwcH\\nB4f3AsMwME2Tw4cPc+LECaLRKK2trcDVOQxblpVe/1RW2s7PKXHSxfh8Pm6++eZ33PbRLFu2jO7u\\nbkZGRsbFoU6UfDe6vZZlMTg4iKIoLFu2jAMHDqTjRSeD1+tl8eLF7N27l8bGxssK/N4NAoEAP/nJ\\nT6ivr0/3Z8qUKQwNDZFIJOjr66O/vz8tsktF85qm7fiuKAo33njjhHPWlPAxGAzy5JNP0tPTw/Tp\\n03nggQeYNWsWpmny1FNPMTAwgCiK+P1+NE1D07S0wC8VN6yqKoqioOs6wWCQAwcO8MILL4yJxk21\\nIRW9mxp3t9sNwE033cQrr7zCuXPneO2117j99tuJxWJpJ8CJiEajrF+/nlgsRnl5OYWFhbaRgdde\\nAy5fvpzW1lb2799/RYHfm2++CUxO7HoxiqKwZMkS3nzzTQ4cOMCqVavS92I8HseyLILBILquo+s6\\nHo+HgoKCMWu0/fv3IwgCc+bMYfny5QSDQV5++WVeeukl5s+fzy9/+Ut27txJLBajoKCAGTNmoChK\\n+rqnrk3KZdPr9Y7Z+GQYBjU1NfT09LBly5ZLuviBLUR86KGHuPvuu9m2bRu7du2iv7+fQCCAYRhE\\no1ESiQQ5OTnpNlyJeDzO8PAwGRkZTo3IwcHhf5X3XOC3ZcuW9/oUDg4O/w/gcrkwLYNoex2WkbCL\\nCtFBW7QTGwI19woVrdTunAvfEUTb0SsavXyc1btJbW0te/fuJx44Db7KC8UqGFvzsC78eUHoZ0HA\\njnPFWwKx3jGCx8kwWtRomiYnTpxIu/SldkSlXPrmzZv3tlwKwS6EPPPMM3Yca1zHlLyo+fNRfcXo\\nwTYSg6dsB7yh45hDJ4gJSQGiIuNXJQTVTSyeQIv2owXaULLKxgnXJFFCDzVihc7bAr7Cm8CdZ38N\\nEGjGCreD5IYpq0HNAlNPqjyTRS1BBFGxi05KBajZWJ1b0IbPkfAVjYk/lkQJXTDAtAuIo8d+dDws\\n3TuwchfZLoGCmHZpTGOZEGm3xX2mhuArxfKVjYuKvZwA9WImcri8GtS8OUTbdmIMt2BNXYQgiFjY\\nwlor0oMQaQM9ZI+fKNuiyIxKWzCZvC8FQM2dOS4Oura2lp/97Gds27YdwxKx/JWjxIJJ5aNlYpk6\\num5gGFF03Uha1tvtMy0LfBUwUp+ORr4UKcGlmjcbPdRJYvAURnQAI9yLKApgRFGtIdyZM64o7Euh\\njZxHNKKUlE1j7ty5b2uMHRwcHBwcHBzeLsPDwxw5coRAMMbxFoGWNnterOn26y/v8HP0lIvVSyPc\\ntDCCcoknPanNToJoz4IkEUTRwjQMDMMYF7HzXjBnzhwKCqfQ0TbMidMurpsbTc/5Rq/VrNQ0keSf\\nlkUkJlB3wgMW1C7W+ekfFEBAUiZyt5sYlycDCwiHw8Tjtnvhzp076erqIhaL4XK5yM/P56abbmLF\\nihXpwsrVYhgGzzzzDHV1e0loJnlTqiidsYicAntdEwkN0X76MG1nDpGIhUkkC0xZWZl87GMfQ1EU\\nfv/CC5xr2E1gqIuyqiXpn00hSxLnG3bQ03oMRfUya/Gd5BSUI4oShqHR2rwHgJkLbidvSjJKWbHj\\nkvREFMuyXekk2XbRVlQPNdd+jGO7f0M40E9X60mmjXLDc7lUItEoWiJOYLADAK/vgsisZula3tr+\\nX4QD/ZzY+wJls1fgzy5Otnn0whdikWHamuvo72wEYMb8Nbjc/jHOCarbh+LyYZpRgsHgZQV+/f39\\nmCZk5097W9crt6gCMSmybD9zmOprVmNZJj0dp+k6d5ShvnOYhr2WtOOkLVyeDIrLF1BavZyu80cR\\ngKkV1yBJMhnZRRSVzmGgw3bxO3HiJNFYHElW8Gbmk513cTtlJFnFNHR0LUE8kcCywOezRX4WForq\\nISu/nJH+cwQGOy8r8AOQFRelMxYzrXIRscgIDQffYKj3NIIg0Nt2guJpsyGrIC0OFkXpksWt1lMH\\nCA33kJebyXXXXfe2xtjBwcHBwcHB4Z1w5swZTp8+TSAQYOvWrem6haZpWJbFP/zDP7Bw4UJuu+02\\nampqJnyP0Q5uqTlPau452kXsvWbVqlW8+uqrBINBsrOzJ3TpS7UzJe5LtT8QCGCaJsXFxWknw0s5\\nql2KlBtzJBJhYGCA7du3s2/fPkZGRtLirYqKClatWsWCBQvGOalNlsHBQR577DG6u7tRVZUlS5Zw\\n7bXXkpeXh2VZnD17lj179nDixAni8TimaSIIAtOnT+euu+7iwIEDHD9+nMcff5xVq1axevVqiouL\\nx5wjGo3y5JNP0tXVRWVlJV/5ylfSCTz19fUcP36ceDxOZmZmOgIWIJFIEIlEsCwrLe4DO+HK7/cT\\nCoXYuHEjH/rQh9IRzCm3RV3XaWxsRNM0/H5/WuDn9/v56le/yuOPP86+ffsIBoOsWLGC3Nzc9OYs\\nuHBdz549yx//+Ed6enrIzs7mnnvuQRTF9IYnIC3ATLlXXo6Uk+OsWbPe1vW6+eab2bVrFz09PZw5\\nc4YZM2YQi8XYu3cvBw4coKurK73x0LIsRFGkpKSE22+/nXnz5qUjtFNCxNWrV7N582ba2tp44okn\\nOHXqFGALImtqavD5xm7MUlU1LZxMXZ/U91NUVFSwa9cu2trarrgJDKCoqIhPfvKTrFu3jr6+Pr7z\\nne8QDAaRZZmenh78fr+9iS35GZRlGVmWx30WTdPk9OnTafe+t5to4ODg4PBu8J4/vb2URaqDg4PD\\nZEi5wJ07dw5TT2AGOy+4iAkKnKFWAAAgAElEQVQCFiL070MYaYCsasisnljoZ5mQfGh94VsaJK20\\n3y9qamoQBAu0sB3n6p8+cXxr2rkiZV0BVrgNQQ9jyT47WwsQ1cnvTIMLosauri7+/u//nq7uHuKa\\ngWFY6Qgsqfk0e/ftp2RKMWvWrGHNmjVXJfQzTZNnnnmGPXX7iGoC7mm1YwR6iq8Ad9GipPiqGSPc\\nhxEbQhQFCvLyePjhh5k9ezY///nPqavbR7R9J7EuD2reLGR/CYKoYJka1kgbwsAhLEG23fnceXaE\\nbGrcRprsr/OvBVdyJ5wk2a9ZSaGeBcLo8XflQMEyrN49xPvrUfNmpyfzqqrabnaRLjvibNTYXxwP\\ny8B+LNEN/grwlYDgAkuDaA8EW+xYXgDvVKzcRQiCMC4q9moEqBM5XF4Nst9eKAp6GG2kFSWrnGjv\\nScy+k6BHxkZIWxbE+iFw2naS9EwBPYzozky/z+g46Mcff5zGplNohgmCguCfZosEL4weCCKCKNsO\\ne2YiHVXl9SXHw8KOMB6pn3QstSAIKBlTUTKmYsRGiJx6mfzcDMKRGOGuveiCG0vJTNcaLxUTbEQH\\niXXU4XPJ3HrrrW9b9Org4ODg4ODg8HY4e/Ys//Zv/8bwUDc+j8G0wgQrFkTJyTCJJqC9V+ZAvYf2\\nXpn1G7LYc9zDV+8bxO8d6xJumKCbdtEoNZ+JxsE0BRSP+r6I+8B2O4jFYsQTAi9tz2TG1ARlxfq4\\nJZyQ/F/KCFs34Bd/zCahicwsSyBLJl39EggKbk/mpM+fcq/r7u7mq1/9KsFQGF03MU17xhsKxxka\\nDnL27HleeOEFVqxYwb333nvVa8bf/OY31NXtRbdkFq74KLmF5WNe9/pzqF6wmpnXrMIwNLrPn6Tp\\n6BYsyy54fPjDHyY/P5+f/exnBPrPcaT7DG5fNtl5UxFlBT0Ro7/7LJHgAJKsUj57BTmF5YjJtU1/\\nZxOGHsefPYX8krEFHlEUkRUXmhbDNDRQLhRFZMVN6czlNB/ZQPuZw0ytWDBmPRSNxhjoOU0iHsKf\\nmUdm7gXHD0V1s7j2Po7s/m+Cwz00HXwFtyeTwrL5+DILEEQRLR6hv7OJ4b5z9lpMkqiav4b84krc\\nbve4+1AUJTCvXHCNx+OANcZx8GoQBAHV5SUeDdBx9ig5+aW0nNxFYKgbLAtRksnIKUaSVAxDIxIa\\nIJGIcK5xF+cb3wRBQFZcTK24IIicVrGQ7vMnqKurQ1E9lFQspPPccVSXf+I2ICBJ9uYzLRFF0xLE\\nYhJu94VYYNVlC1w17dIuLaahk0hEMQ0dWXGhqG48vmwkWUGSJbKzsuju6eXonhepWnA7GTlTUg1A\\nTDqYxMKDhEZ60RJRRgY66O9qweNx8dnPfvZtRdE5ODg4ODg4OLwTNm3axHPPPUcsFkNRFHJzc5k2\\nbRqKohAIBBgaGmJgYID9+/dz6NAh7rzzTtatWzfuOW7qmfPoOWcoFAKuXiT3TjAMI+0C19/fj9vt\\nHiNiGk1K+GdZFolEgo6ODhRFoba2lhMnTgC2iOlqsCwL0zTZsWMH//3f/z0uhS8UCnH8+HGOHz9O\\nbm4ud9xxxxhHt8kQjUZ56qmn6O7upri4mL/6q78a47KYck+srKzENE0ikQgbNmzg2LFjBAIBysvL\\nueGGG1i/fj07d+5k48aNbNy4kdmzZ1NUVIQoigwODnLkyBFGRkbIzs7m4YcfTjvgAWzdupVEIoHb\\n7R4nUlRVFV3XiScTjEbPcRVFQVEU4vE427dvZ926denXUjG2W7duxbIsbrppbPpUdXU1X//61/nx\\nj39MQ0MDJ06cYPr06SxZsoSsrCwMw2BgYIADBw6kjR3y8/O5//77yc3Nxe12j7lvU+3Wdf2KY26v\\nibii6O1SpBzzdF3nlVdeYcWKFbz00ksEg3Y9xuPx2AllkkQ0GmVoaIiOjg6eeeaZ9DmrqqqoqKgA\\n7M/ZjTfeyGuvvcbRo0fJz8+npqaGffv24fdPvCZKxeWmzhGJRJAkKT0OkmSvjxKJBOFw+JJ9jUaj\\n6c+2z+fD6/VSXFycdoUURZFgMEhzczPTpk0b8ztBFEUURSEajRKPx9F1nYGBAeLxOFOmTOHee+99\\nW+Pr4ODg8G7x/jzBdXBwcHgbjHaBC8c0213NX2kLhAQFS4/Y0aChc1haCPoPIcT6oGC5HYs6CsvU\\n0w5pKfRQJ5IkpHf0vB9s3bqVeDxhi70GD4OckYwYvsTiSEiWtGIX4lzxV0LwdNox7WowDQ3DNOnr\\n62dgKGQ76+XNQvVPQZAULENDD3URHmji9Nl2Otc/x6lTp3jooYcm/SB/8+bNtnOfJuCrvB3Jkzvu\\nmNHiK7BFVOEzrxMIhOjt7WXBggV88YtfpLq6mk2bNtHZ1U184CjR3iNpIaKAYX+t+MBXekHcBxDt\\nwtLCIHvBN9odIW1bgj3mJpYRR5DkC0JLXylIXsx4ED3UmW6jrMiIIhjBM2AZ48b+4nhYIzKANXwM\\nRurHD5Lsg4wZyahYecKo2KsRoLrdblvwehWRzWOwdERJQcAg2r6bxEAjWrDLFvZJPsiYDq4CW5hn\\n6hDvg+BZLD0MI02240furPRiNhUHHek5xNGjxzAlL5IrG0OLgHCZ+0iUEAQXlmEvrGVZxuVS7Usl\\njo1GHtcFy0o79pnxgP2ZF2VEVyaStxAzaYUvClFMLYzRvjUZ21wCgmjHBMfjiIl+hEgrgh7G1EKY\\niRCyJFBdveCytu8ODg4ODg4ODu82ra2tPP74Y8TCfcwui7P2xgBlhRG8bgu3CrGELdL76E1BGltd\\n/HZTFi1tKo8/m8e3HxjA47pQqIknp1D2fMguGBxssAVypaWl71uf9u3bR2CkH1WB3iGZp3+Xx99+\\nqp/SIuOSP6Pp8LOXczjU6MGlmqxbFWDXoUx0U6Vw2mwU1T3p80eCgxi6Tk9PL5LiIjOnhGmVC8kr\\nrkSWbfHWUF8b7WcOM9R3no2btnD69Gm+/vWvT3qXfltbGxs3bSKhw6IV95BTcOnxtV0CVKbNWISi\\nujlx4BVeeOFFbrzxRq6//npmzZrFzp072bZtGwODgwx0BrCwEBAQTANRFFHdPnKnVKdFYADd548C\\nUFy+YMz5LrhGiLZrt2mQiIUQJQVJtu+NvCkzUeq9hEb6GBnoSLviCYJd6OhtO46hJygumzuuyOdy\\n+1m68lO0thzkTP2bhAK9RBt3jdlohwWCKJJfMpNpVUvIySuZ0BXEsky0RBRVYpy7w8XYayYBXZt8\\nXPOYc5kmlmUXewRT463tzyPKCi53BgXTasgvmY3bm2X3QxDQElF6207Q03qcaHgQQ4sjurxjBIaZ\\nuVNQPZnE4xEKps6iuLSGznPH7c2Hl0EURBTFjZawC0out8uOLAMM07Cv/0Xu9pZlMTLQQfuZw/S0\\nN42JYXa5fZSUz6evqwUtHrFPb1kk4mGaDr1CTmEFhaXz8WYW0Nd1it72k0SC/WCZmJaZ3CBnYRom\\nR44cIS8vj6qqqrc1zg4ODg4ODg4OV8sbb7zBf/3Xf5FIJKisrKSoqAi3201mZiaiKBIKhZg6dSqS\\nJNHe3k5TUxN//OMf0TRtTLxqSiAHY2tEBw8eBHhf10QvvfQSLpcLQRCIRCJ0dHQwY8aMyzrlJRIJ\\nzpw5gyiKzJw5k+XLl/PUU08BXDG69WK6urqIRqO0t7fj9XpZunQpq1atoqysDEVRCAaD7N+/n61b\\nt9Lb28v69evp6Ojg05/+9KQ3v2/evJnW1lby8vJ44IEHLuuMnorP/cQnPoEoihw9epTnn3+eb33r\\nW/z1X/81q1atYuvWrdTV1dHY2EhjY2P6Z2OxGKqqsnjx4rQzIdgO30eOHEHTtHHnTq2JUoYO8Xgc\\nwzBQVTV9XVwuF+FwmB07dnD33XenBWApUenBgweJRqMTxjfX1NTwj//4j/zpT39iw4YNNDY2cu7c\\nuXFrp4yMDJYsWUJtbS1ZWVkTCijDYdsoYjLO8m63m1gsRjgcfltO9NFo1E5SM03OnDlDc3MziqJQ\\nXFzM3LlzmTFjBi6XC0mSEASBvr4+jh07RmNjI+FwGF3XyczMTLvhgR1H/dprr6HrOl/4whc4fvw4\\ngiCkI5IvhcvlwjAMEokEsVhsjKuhYdjPDi7+vGiaxoEDB9iyZQstLS1jXpsxYwYzZ85MtzPlFhiJ\\nRDhz5gzZ2dnp+2doaIiRkZG0O+ho50VN09ixYwerVq0aF6/t4ODg8H7hCPwcHBz+LBnnAld6M1Eh\\nG8PAjmAVJQTFZztwZVTbgqP+A1ihNrusUXjjBSc/0xaCSbKEnMyrsiyTxEATPkWitrb2fevTpk2b\\n0E0RyT8VI9SF1bsT8paBv/yCM+FoLBPCbek4V7xTQXKBHkJ0Z6Ud0yaDBUQHz2OZBqYgjnPWSyF7\\n83EVzEUbaSXcsYfde/YC8MUvfvGKC7hUH6NxHfe02gnFfRNxcazrLbfcgiiK3Hrrrdxyyy2cPHky\\nHSUcjUbxeDz09fXR1TOAkVGRjEkyL4xh8Iz9Z+bMZETuqMzjFKJsj6llYOnGBRc5UYbMKqyhY2Pi\\nYAVATvRiGmEwdQRpfCFxdDxsqGUDerADJBVLVOz3lX0I/nJwFyFIIm6XO7loHD8mVyNALSwsRGo+\\njR7qQvbmT2rMLz6XrCgU5GbR09uLNhLGkj1JAdwUEGRbNJsSQXqLIWsOhFth4DCWESHRdwxX3mxE\\nyf6MSf4SYp1vgWngLbuBeO8x0CK2uPVyCCKCqGIZ9uJadal2PLKlA+NdCi3LIjHQQLy/ATMexLr4\\n/aKDMHgKTI3OLg1BVJNugXHoP5AUW1aCEccKt2LokQtNEQBBwkKgubmFb3/722/L1dLBwcHBwcHB\\n4WqJRCI89dRTxML9LJ0T46F1CXTNJBZLOe+BKCYd7gRYVhOluizOY+sLaOtR+Pn/ZPOVe4cA270v\\noQEIY3a4b6yT0AyF8vJyDh06REZGBhUVFeniRaoIFo/H8Xg874pz19atWxGsOJ+7S+PlbTJtPQrf\\n/WkR182NcsuyMFXTEum58cCIxPZDXnYc8hEIi7hVkwfvHiLTZ7L7mIJuqpRWLrqKs1u0thxG1xOo\\nbi+Lb/okOfljC3miJFM4tZrCqdUER3o5VvcyLafP8tRTT/Gtb30rHb90pT7quklJxYLLivsupqh0\\nDl1t9QT6z7Fz507uuOMOcnJyuPvuu7njjjtoaGhgcHCQWCyG1+tl//79HHjrMIWlcxFFkUQiiqK4\\nMQ2d0EgPoiiTP6Xa7rllMWYtJIAkyeiWaTt4GBqmoSGIErKskl8yi+5zhxnsPU9mbkmyQGPR3rKX\\n4HAXlqnTceYoeUXTyUw5wCWRZJWK2cvxZeRxaNfvEICMnBJ7Ta648GcVUVAyC8VlO0RcyglkoOcc\\nppEgr7Dwkg4PKUpKSpBEgYHu05RVLZn0mF8411kEAaZOm0ZXVxeCKJKRPYXy2Tfh9uXg8mSMaafq\\n8jGt6jpKKhZz6sjr9Hc2EY8GeWv781x7y/9BllXAQlbcCEBhySxUl11ki4aHME3zsusJUZQQRBHT\\nMtESGqqqIkkysfAwlmmk3wsgONJL/YENBEd6k9fZdiMUJRk9ESMWDXHq+A4MU0NRPBSUzqVsxhK6\\n2xtoaznEcO85BrtPYyQ3UomSjKJ6yC6oQHF5bDFgdITh/lZ27HyT3bv3cOuta7j//vvfdlybg4OD\\ng4ODg8NkqK+v5/nnnyeRSLBw4ULKysrSAp1QKJScI0lpd7M5c+aQk5PDvn37eP311ykrK2PFihWA\\nLf4xDCPtzgV2pOnBgwcxTRO/38/Ro0cpKChIx6IC6chQ0zTxeDzveP4zODjI4cOHURSFRx99lMcf\\nf5xQKERDQwN5eXnk5eWlBYiWZRGJROjv72dkZARVVSkvL+fzn/88TU1NdHR0kJOTw+LFiyd9/r6+\\nvrTwbf78+XzlK18ZI4wDyM3N5fbbb+e2225j7969/PKXv2TLli2oqsp99913xXMYhsG2bduwLIu1\\na9dOWmwmCAJ33HEH9fX1NDY20tHRwdSpU6moqODBBx/kvvvuo6GhgWAwiGma+Hw+1q9fTyQSYcWK\\nFei6nha3NTc3o2kasiyn592jxVqQdDaX5fS9EYvF0oLB1Lov5VJXWlqaFmT+4he/IBwOY5omL774\\nIp/+9KfJzs4e05fi4mI+97nPEYvF2LJlC36/n4KCgrRD3ezZs5k1axaKolzWce/w4cMAaVe8y1FS\\nUsLw8DDHjh3jlltumdSYj+bo0aOIokh1dTUHDx5EURTmz5/PvHnzyMnJGbcWLioqYs2aNSxZsoSX\\nX36Zvr4+9u/fT3FxMR//+McBeyNWKvp2/vz5nD9/HrgQJ3w5Uk59KaGdqqoMDg6mhYijN4Ht2rWL\\n3/3ud2m3QVmWyciw13CBQICWlhYOHz6MaZq4XC4qKirIy8ujubmZ4eFhhoaG6O/vTwsPBUFAkiR7\\nA1jSRdMwDPr7+3nxxRf505/+xMMPP8yyZcuuepwdHBwc3imOwM/BweHPktEucN7K27HkTIRoFNCx\\njDiYoi3cSjnceafClEzo2mKL/Nyn7Mhey8Qy7SKRy+WyC2CWRaz7EGZsCB2VZ599FrfbTWFhIbW1\\ntdTU1FBfX58WlMVisTGvz5s3722Je06cOEFXdw+W7MM/43bCLa+ih3uwenfD0DHIrAJPse1wZmm2\\nO2GgBVKCI+9UyJyB0LsHTA01b85V2aLHY1GMkVNgGXhKa1Gzp1/yWEEQUbOnI7kyCZ95nbq6fVRX\\nV3PrrbdOqo+m5EXJKpt022BsrOvJkyeZP38+YC+05s+fn/57iu9+97t09w0jZ0xFB9uJT7TFn2jJ\\nGFdPUVLcl1q4jRqvtLBRsP+zTCwjAZaJ4CmGwaMkIkMYgaAdD6YFMHsOoEggKiqRs2/gnnrDhCJJ\\nQRBwFc5HD3ViCRJMuSXtGpiWGpp2/G4ikcDlUlGT9ydcvQC1traWvfv2Ex5owlUwd1x7LkfqXF5F\\nory8nM6uLiwEW9Q30gyRLshI3psXAoRBVCBjBqjZ0L0NMx4g1PIKGdUfTe7CEmzhpSCiZJWhjZyz\\nxXaRHnDlXb5RogSmvWjSNXtHVSLWC5aJqF4o7lmmQaRtF9rwOXtcJa8t6vQWXfgchbuxBg+DIGEI\\nbuSCa8koqEIfaradFmMBGDiYbKuSFPxV2I6FkoJblRASA+/I1dLBwcHBwcHB4WrZs2cPw4M9lBdH\\n+T9rR4iEE/ZOeOzpbTyBPYVNTi6jMYGcDJOv39/PPzxTyMFGN539EsW5BuEoWJYdvSlLMue7BH63\\nUeb4aQlZirF1y+ts2/IGCCJZ2XksXboUwzA4ePAgwUAAey4tkJuXx8qVK6mtrR1XBJoMZ8+e5czp\\nU3hdCVYuNlg4y+DRJ9wMBSV2HvZSd8JDhsfE5zFJaCLDITHZP4FphRp/fecwXo/JM3/IYXBEwp9b\\nPCYi9kr097QSHOoCy+La1Z8lI+vyG2kysgpZdvOnObD9vzh9+ix/+MMfxriATEQkEmHPnj3ohsm0\\nUXGtk2Va5SKO9Zxh27ZtfPjDHx4TRTRv3rwxx7755ptYlkXR1CoUWUHTNbRElETcXj/KqhtRkseL\\n+5JzelGUEUiAICJKMqbx/7P33tF1XPe972fK6Qe9gyBIAqxgByEWUWKXVS1Lom3ZspU413mW7GRl\\nOXJ8tZbjl+vcFZe4PcuW35MiV1lyLCnqXSRICiwiSIIEwQKAIHrv5dTp74/BGQIi2JT4xpbOZ62j\\nJeKcmdmzZx9g9vy++/vVsUwDTY3h8vjtyOLQGBMT42hqjK6maoZ6G/F7XeTMLmRgYIije39HakYB\\nRSWrSc0sQJJcaGqMwZ7zdJw/hqGrCC4febOXk54zZ9KJ3W5NoliqKAoulwu/3z9tftvVcgJZEtm2\\nbdsV598bNmzgmWeeYWSgjWh4FH/w2sZnV8sJZNF2ZIjH7Wir8Hg/Z6ufBwGC6QXkz1lJVv4CxClF\\nXVGSWbj6dkxTZ7i3ifGRHs7V7qas4jZUVcWyTARRwhdIJZCahT+YQSQ0wuhAC1n5l3fBkyQXuqag\\nqIodlaWECI/2Yhi646o4OtjJyUPPo2kKLrefvOJl5M1egddvx1ZblkVPSw3nT+3C5fJRvOh6ZpWU\\nEwwGSc0sYM7CtbQ1VtNy9gCCIBFIzSZ/7moycktskaEgEAwG7YiqyBhdLbV0nq/hnXd2EQqFePDB\\nB5MLn/4ImKZJX18f4XAYy7IIBAIUFBQkBZVJkiRJkuQjx+uvv46maZSWlpKTk8PExITznmEYxGIx\\nJ75W13VUVSU/P58VK1ZQV1fHa6+9xsaNG9F1nWjUvkf2er2Ypu1M/Mtf/pKJiQk8Hg+//vWvnXvR\\nkpISFi1axMDAACdPnnQcw8B2Atu+fTvXXXfdB3o2/O6772KaJtdddx0VFRX81V/9Fb/4xS9QVZXh\\n4WEGBwcdUZphGE6kaCAQYP369Xz605+mr6+P3/3ud8TjcW666aZp8aJXorKyEkVRyM3N5Rvf+MZl\\ntxVFkeuvv57U1FR+/OMf8+abb7Jy5UoWL1582WPU1dUxPDxMRkYGpaWlV902sK/PqlWrOHbsGHv2\\n7OH+++933gsGg9MEVbFYjMceewy3283SpUsd8efExARjY2PTFtW8X9yXEG25XC50XUeWZcehTVVV\\ndF13RF19fX2kpqbS3d3N7373O7q7u8nOzkbXdY4ePcrx48dZs2YNmzdvJjs7G0EQGB4e5sCBAxw4\\ncABN09A0jXvvvddxCEy0yTRNYrEYsVgMr9c7TUQXj8epqalBEISrShbavHkzZ8+eZc+ePWzbtu2a\\naoeJeaxhGDQ2NmKaJqZpcurUKU6fPo0kSSxYsIAVK1ZQUFAwbd8ZGRns3LmTZ555huHhYd58803m\\nz5/PqlWriMVizrUTBIHy8nKef/55Ghsb2bJly2XFjQkxrqZpKIqC1+vl/Pnz6LpOfn6+M3Zfeukl\\nXnzxRQCKiorYunUra9eudfatKAqPPvoox44dw+PxsGjRIrKysvB6vaxZs4aJiQnOnTvH4OAgYNeR\\nE2LehNAvNTXVuSZjY2OMjY3x6KOP8sADD3D99ddfdT8nuXoURaG/v59IJILL5SI9PZ3s7Gs3N0mS\\n5MNIUuCXJEmSPzmmusBJeRuIajJGPDzdmcsyp0fbmCq40yD7Ohg4BOONECzBsjQnmtfldqEMnUUZ\\nOIURHwNBIq7B+ZZOEASkc81U7T8w6QQnYCJhTsbXJN4/XH2EwoL8D+TiVVVVhaIZuLMWIUouAgs+\\nQbjpZYxwP5Y6CiO1OGKzKQiuoC1aEl1YA4cQjag9AZGvHN3qdBegjLSAFkF0p+DOuvwkLMGlnPWu\\n5hyvRWQGF2JdleGTVFVVXSToez/xeBwsC18gBcVw2QUUQwVTQDA17OwnmURBcvrBsK1OEv+QPGAZ\\ntqOfqV+Y7BkauqZBtAdGTyAYMVJSAsyaNYvOzm7iXVXEe324sxYhBwsRRBeWqaGFuoj31Nj70yMQ\\n60NImTslGtiaFJ/q6LqBYcTQdWOyqAXaeDuiEaOwuIilS5dese+WLVtGQX4eLW3daOMdlxVvvh91\\nrA3UCTRToLr6CBaSLbAz4vZLG4doF7iCkLoQUhYkrO3sHXhzIHstVv8BjHA/ylA93pwyu7BogegO\\n2Nc2c4EtxJtogvTFMztWTr1Eooxl2hNqn98L4VY7Sth9oVjliPsEF+SsteOY37/f2ID9MymAlXcj\\nujuNeFzBn70EV+YiIi1vood6QPJCZjn4C22nQsu0dYw+P570wg/sapnk6jFNk9OnT/+Xi6uTJEmS\\nJEmSPzcsy2LPnj0YRpTNq8cxjDgAsmThkgHLwgJ0A3RDwLJA1QWsmEBuhsH6ZTHePRFg15EAd22a\\nwLQEJElGkgM8+oyLw6dFNA1SfAbzZhlkpWuYJvQOCfQOjvPKyy1ouoDXDQGviddjxwGPDI7z4vM9\\nvPzyS2zYcD3333//VTnaJaivrwdLZe0yA48bct3wj19U+cHvXMQVAUGHiYhEODYpahMt1pTF2V4R\\nZWGxSluvzKPPZnC+y4OiSaS7fM5c7UoYusq5k3swDY384qVXFPclcHsDLFv7cY7t+x379+9n586d\\nly1CNDY2Eo3GSM0oJJiWc3UdM4WsvLm4PSkMDg7R2dnJ3LlzL/lZRVGwAFn2EAwGiMXiqKoC2K58\\nWNa0qNbE/bsAIEwuxplEkl1Ikgtj0snP0DUs00CJhWg+vcd2eNNVTEPDJfvJzMykrKzMFoGGB2g4\\n/qZdNAMSEj5VidrCQVOnt72WrMKFyFPcuE3TmDyejqqpGCGDYDCIKIqMD/cw3NdCMOC5qgVPiYJn\\n5Z59tJ87wpLym6+6zyfG+unvbsTUNaLRKKLkQnb7kN0+LNNEV6OERnsIj/XSVv8uc5dsImfWEudM\\nBUmkdPkOxgbb0ZQIPe2nKV22GU03iEcnEEUJl8ePIIgUlaziXN1e+tprryjwEyUZNAVzsqDc13ka\\nyzIQRYHmM/spKi3n5HsvoGkK2QULmb/yFiRp+mNeQRAYGWhBlj0UlKwhf85KdMN2NgkGA0iym6He\\nZmSXl7Ss2Sxa83Ek2XZVNHQNQ1dRlDgulwtfIJ0Fy7eQXVDKyYPP8957hykoKODuu+++6r5OcnlC\\noRD79+9nz5499A8OTAqc7YizrIxMtm7d+oEF1kmSJEmSJMmfG319fZw6dQrTNMnPz0fTbLdhl8s1\\nTbSl6zqmad//JuJM58yZQ0NDAz09PdTW1jJv3jwsy8Lj8TA0NMQjjzxCZ2cnpmmSmprKnDlz8Pl8\\nqKpKV1cX9fX11NXVOS5xiXjQWCxGc3Mzzc3N/P73v+cTn/gEO3bsuCYh1ZkzZwAcZ8HbbruNkZER\\n3nrrrUkjAI9zfrIsk5aWxqZNm9iyZQuZmZlUV1fzm9/8huHhYQRBuKYo1tbWVnbv3o2qqnz5y1++\\namHgsmXLuOOOO3jllVXWgHEAACAASURBVFfYvXv3FQV+x48fx7IsKioqPtCz3IqKCkc4N1Xg937i\\ncXue7PP5HMe2aDSKruuOKDMhokuQEPa9H0EQ8Pl8eL1eotEohmFgGAayLHPu3DnefPNNzp8/78T5\\nulwuKioqUFWVuro6jhw5wpEjR6btU1VVYrEYkiQRjUY5duwYt95667TjJ8RrCQdB0zSda7p37140\\nTaOsrIyioqIr9tuaNWtIS0uju7ubkydPsmrV1S84e/vttxkdHXVEpQnhrGEYtmFKPM6pU6doaGgg\\nNzeXm2++maysLOdc0tLSWL9+vTO+KisrWbVqFb29vZimSU6OPTeeNWsWixcv5syZM5w9e5bVqy/v\\nyJ8Q+JmmiWEY1NfXo+s6g4ODnDhxgpGREV588UUEQeC+++5j06ZNF11fVVVpampyFs253W7i8bgT\\nxWyaJhMTE05UdCAQcMZJ4tiJ72ZijCRifH/xi1+Qm5vL/PmXn9sluXq6urqorKzk0KFDKIoy7b3S\\n0lK2bdvG2rVrk+YbST7SJAV+SZIk+ZPj9OnT9Pb2owteLCkLS7cFd4IogzDp4mBZgAmmHdsJ2GIk\\nXwHIfiwtBJEuBH8ebrcbn9dDrH0f6liL/XF3GlL6AvyZcxAkF5auER1txxhrAi0Clobkz8FXvBHR\\n5cUyNPRw73/KxWtgYADDsHAH7QgjURRJWXAnkY4qtNGWyXOZFJvJfpCD4C+wfz7eCHoEwVQJBHwI\\ngkS05z1kb9pVxeAqoQHMoeNg6XjyVl3TpPNSznpXc47XihwsJDZQy8DAwBU/6/V67WKeqeEPpCHL\\nsjMZshJRsqbGdNc+pvzbmvIzbFGXJIChgqHY75sa9O62+94yQJCJxHQ6u3ooLi5C0zT6+gdQhk8S\\nG6h1iq2WodrbS5OufCO14M0CT8aFhiQigU0Dy1RRVRUAjxgn3v0eAY/MTTfddMlJ8PvFUOPj45h6\\nnGjbbqyijbizFl/xOuuRQWLte8A0UHFjSilY3hz7/I2YPfYsw/5uqeMwVAPxIchZb0cOJwgUgyuI\\npYyiDJzEk70EI9IHWEhee3zKwUJETwqGYn83CV7B4VEQ7UtgGujj7UhmHEQBdbgBd/o89EjfBXFf\\n4fYpfTu1kwys8UZ7d9nrwJeLZSioqmo/wAidx4gMguRHeP8+TGNaTPAHdbVMcmVM02T37t3s2rWL\\n3r5+FM3AMKz/MnF1kiRJkiRJ8udGU1MTba3NZAZVls+P43ZZeN0gTf75s7DdoD0uMC0LRRNQVQFN\\nh1BUZEt5hHeP+zl00sctG8L4vba4719/46GpQ8DnNdlaHmPLGo2SYi8CAoZpEAqFOdchcbDWx4km\\nH5YlsPU6g8/dakde1bdq7D6icqIhysH9lXR2dvIP//APzmr2KxEOhwGTrLQLwrJl802++lmN//c5\\nF6pm+10vnquybmmM/GwdWYS+YZlnd2dxvstNJC6gaiKyLNLXeYZd/3GetKwicmctoqhkJS73xYug\\nNDVO7aEXCI12A1BWfss1XY+0zAJSMwoJhfs5fPgwmzdvvuRnJyYmMC0IpFx6jmZZFuGJQZRYGNPQ\\nkV0eAqnZeLz2whh/MJ3oeGSyvy5NwqFe1207x0SxwSXLCICmxtA1BdnlAYRJHeSU+UFiOiQICAhY\\ngoUk23NbJTaBYegM9TVNxs1CevZsPN4A48NdnK1vZGBggK997Wt0d3fz3nvvMTIy4hQ+enp6AD+B\\ntDzisRCR8X7O177NwtW3Ior2XE0UJURRwpItNC2GYRhEImEw4px873ncLpFtW7decnxpmsaxY8eo\\nqqqiv7+fUChELBqmrfEwuqZQVnErknT5uXosMs6Ryt9i6hqyy4s/LY9AShaxyCjhsT6nnyzTAFFC\\njYVoqn0LNR6haP7aC9fCl0pmXimD3fXomkpPWx2C5EFTIviC6fgCdmRXwZzlnD+zn7GhDvo7T5M3\\ne9lMzbKvCxecPUYG2uhtq8Pn9SDLEr3tdfR1nEHXNbLyF7Bw9W0XLbCzsAiPDTA+3IkkuZi9YB2y\\n7EZVY+i6vZCqv/MMscgY/pRsllR8AmnyWoMt+jR0zSmQJtzjMrJns3z9J6g9+BxvvPEGN998sxO1\\nnHSY+2BYlsUbb7zBCy+8QExVUE0Dwe9BTgkgCKCHonQN9vPMfzzHSy+/zK233MInP/nJ5JwoSZIk\\nSZJ8qNm7dy+xWIzCwkInxjRxzwEXHNncbjeGYTiua5FIBK/Xy5w5c2hqamLv3r3MnTsXr9dLX18f\\n3/nOdwiHw2RmZlJeXs51113n3G+qqsr4+DgNDQ0cP36c/v5+XC4XX/7yl1m1ahWKonD48GF2795N\\nZ2cnTz/9NP39/Xzuc5+76npLQoSYlXUh4ea+++5DEAR27drlCBErKipYuXIlWVlZaJrGwYMH2bdv\\nHyMjI04MKcDPfvYznn76acrKyrjxxhtZs2bNjPdkLS0t/OhHP2JsbIzi4uJrEn8BbN26lddee43j\\nx48zOjp62QUHExMTWJZ1WbctTdPo6ekhFothWRZ+v9+51tnZ2ViWNe08ZyKx2Cyxj4RAyzRN0tLS\\nJlOGrizuA7tWl3gvEAgQDofRdZ1YLMbbb7+NKIr4fD7HVb2hoYGjR4+yePFivv3tb/Pee+9RV1dH\\nJBJxRIW9vb2kpKSwevVqamtr2bNnD1lZWaxbt845rsvlclwEI5EIqqoiCAK1tbVUVlYiiiJ33HHH\\nJftgfHycqqoqjhw5wsTEBKOjo4RCIb73ve/x4IMPsnnz5iuOzYMHD/LUU09hGAaCIOD1ep1aWyL+\\nGkDXdXRdp6uri2effZa77rprWpz14sWLOXDgAPF43ImQrq6uRtM01q69MHfatm0b9fX1HDp0iDlz\\n5pCZeem589Tv+/79+4lEImRmZqLrOo888ogTw/wXf/EXbNy48aLtE3HRiqKQmZlJTk4OmmYv7IrF\\nYrhcLlpbW9F1nUAgcNHcMxEBriiKs9BPEAQyMzMn568RXn75ZR566KFpTpBJrp1oNMoTTzzhxFID\\nFBQUkJKSYtdh+/ocgfUf/vAHvvjFL17z77EkST4sJAV+SZIk+ZPj3XffJRKLY6UuxRLEC7GrkyRS\\neS3EC05bCcc2S4fAHBg7jRBuwpuSiYRGuOlNjOgwluxDyFyNK30ugUAQQbDrGlE9ihEoxfLPQ4gP\\nwtAxTGUCdbgef7F9Eyz7s/9TLl4JxzlhSpFBECUCc7agBvNRhs5iKiEsTNDD9ituFxUEQHD5MRU7\\nmkvT4hiKwsTZP4DkQQ7k4clbhStl1rQbSMsy0cbbiXceBD2K5M/Bk73kmq7HtTjrzXSOU7EsCz3c\\ngzrShKlMYJk6gigjelJxZy5AkANgWY519+XIzc1FOteMHu61r43HjdvjRtd0ou5UDHXcjjn2ZL1P\\n2JdoTMJaf6rgbzJ6Nj5ov6+FQXKDHMBKKUUIzsVU+gkPn6C9o4vrN6zj/vvv58CBAwwMDBCLxYhG\\no/T29YPgxV9yC+rgKVuI1lM5s8ucKCEIHiw9hjragjZ6koAHNmxYz/bt2y8670uJoSzLwhRcdmxt\\nRxXxvhN48lbiyS67aFJhWSbqWBux9j22q4fsRwjMwooNQqRzSr8kqn7ipGumBqFWW3iVd8MFtxRB\\ntF0mh49jKiG0UBfWRAtYOq70EvsjgoAnewmx7iNYg0fAlTKzKM/B3rcZHyM+8B5+n5vi2fNo7+gi\\n3PwmTtxxztpLi/sinXbEtRyAYNGkqNKNZaj2Kq2h+kvv430xwS6XfcuUcLWMdL7Lk08+abtWTlrE\\nJ53mrh1N03j88cftSHZFx5T8uLMW4Q4W2OLr/wJxdZIkSZIkSfLnhv0QPMqy0jipfguPe/r7AgKI\\ndj6viIXPbSGLEFUEdAPSUwyy0gx6h10cOZNOaorEc7tc9I9AYbbOg/eMUlwg2e7RCJiWSSQcwbIM\\nlszRqViscKIxzv/3Qjq7qyUy0yxu22hQVmJSVmLSO6Tz/zxt0NHWyE9+8hMefvjhy7ravb/1U5KR\\nAFi92OT//r9UXquSOVYv0tDmpaHtwv4sC1vEqNn3hz6PiSSq4LKwLIOJoXMM952nsXYX+bOXULr0\\nRlLS84hHJ+huPUl360mUWAjT0JhXdiMef8o1X5Oi0tU01LzBwYMHLyvwcwpIM7hV65pCb8cZulpq\\niUwMTe8VQSCncCFFJauce+ypUWAzkZeXhyieYWSgjay8uc5+/IEgmXlzGRloZ6i7nvy5q2csMpim\\n4Wwz/ZJYjPQ3Y5o6Xl8auUVLySlagseXCgIYmkrL6d0MDPbws5/9jH/6p3+a1ie//vWv6eruIZie\\nz5pNnyEaHuXYu//OcN85Tr8XYvaC9aTnzHXaJAgCLrePWHiUvo56eluP4xItVq1awWc+85mL2m0Y\\nBq+++iqVlZWMjY2jGSamaYEFstuHoet0NZ+gt+MMxfMrWLBi60XOdpZpMtTfwslDL6ApUVyeANmF\\nCxnpbyU6PmCvxxJEZLcXLNC1OJZl2s6Zaoy2s/twuX3kFV+YG+cVL2O4rwldi9PTVofk8mGaOlm5\\nF87V5faycMU2Gk68Q/Op3ViWRX7xzPPrxDUZG+qk7Uwlblng9ttvp6ysjJ/85CcMD4/g8aUyp2zT\\npAO9PfZspw3bGbG/ow4BgexZi3G57AKoLHvQtTjxuEJX8wksy2L2/HXTxH1g/56RZBlD11BUBb/v\\ngjtMVt5c0rJmM9rfwpe+9CWniBwIBCgvL2fbtm2UlJTMeF5JpmNZFk899RTv7NpFVFfxzS0gb8V8\\n/HPyEaa4E8W6BhivO89ESzevvPYqw8PD0/o+SZIkSZIk+bBx8OBBTNMkNzeXQCBw0d+8qfe3kiTh\\n8/mIx+NomkY8Hic1NRVd12lsbKS+vp7h4WF+//vfY5omixcv5o477iAtLQ23274HSsT4JpzZNm7c\\nyOuvv86RI0f4+c9/zje/+U3mzJnD5s2b2bRpE9XV1TzxxBPs3r2bQCBw1a7GUwVLCURR5HOf+xzz\\n58/nrbfeorW1lUOHDnHo0CHnMwmHt4Rj4dRnz8PDw1RVVbF//37S0tK4/fbbueWWW0hJSaG5uZnK\\nykqOHDnC+Pg4AF/96levWYSUkZFBeXk5x44d4/Dhw9x6662X/Gzi3GZ6Pj4yMsLRo0epqam5aEFT\\nIBCgoqLCcXWbKs6bCa/XS1paGuPj45w/f54FCxY4x121apUzJhJOfDOdc8IZcmpbBUHA7XY7hgxz\\n5sxhw4YNVFRUOPPezs5OnnjiCerr63nmmWf4u7/7O3bu3AnYY+lrX/saHo+HW265hXvuuYfdu3fz\\n7LPP8txzz9HR0cGmTZvIy8tzjinLMoFAgLa2Ng4fPkxtbS2iKHLfffc5osKpjI6O8swzz3D06FF0\\nXZ82nvx+P7qu89Of/pRnn32Wz3/+8zPGyEajUXbt2sWTTz7puBJKkoSiKI5oMvFK9J0oiui6zujo\\nKC+88AL33XefI9Bzu90sWrSIEydOoGkae/bs4fTp02iaNu34a9asYfXq1Rw/fpxnn32We+65h9zc\\nmR32E8d/7733OHnyJB6Ph4ceeojTp0/z4osvYhgGy5YtY82aNY5AEezvi6IoaJrmRA8nXBATokpN\\n0xgfH2dkZATLskhJufg5QUL4aZommqZNq0dkZGQwMTHBwYMHqaurQxAERFEkMzOTG264gc2bNyed\\nt6+ScDjMv/7rv9LZ2YnH4+GGG25g69at05wrEwLryspKOjo6eOSRR/jrv/7rGYWdSZJ82JG+9a1v\\nfeu/uxF/qgwPD6OqKm63O5nrnSTJ/0GefPJJxiYiWOnLEDzp08R9DsIFpwEE4YIACWwRT7gNQR2H\\nUCvacD2mGgbZj1SwBV/mHHx+n6NNUhWFeNyONxJkry308RdAuB0zPoIoe5H9toW0IAhI3nTklFlE\\nh5vp7+0mNTWF0tLSK57X/v37GRgaRU4vRXRdeDhuiwdzcGctQQ7kgmUiiBKC6ELyBJH8uUiBXIzo\\nAJahohkWhilgCfJkBK2JGR9HG2m0RYKGDqILbayZWOd+zPFmMG27cv+8m5A8wWu/KIKEOtJE0O9l\\n69at13yOlmWhDtcT7dyPOlSPER/D1GNYhoKpxzDiY2ijLWgT7VhGnFmFBZc9DtgTuOrDh4mHx3Bn\\nL54cDyBJIpYgo4+32iLJtIUzFNgsMCZFoZKbKTZ+9s+GqkGPIngyEXI3ImSVI3izbbcUOQV8uWgT\\nHQz0dbNgwXw+85nPsHXrVrZv386+ffsYHY/gLboRd0ohrtTZmOoEZnzEFs+FWm3xoCDZDnlaGMJt\\nCENHIdSKZKls3nQDDzzwwEU2+Zqm8dhjj/H6628yODyOanmRs5bhySvHnbMUd/p8DNGHpUWwtCj6\\neBvaRAeiNxNMA1MNo46eJ9a5H2Ok0XaikP24AjkYoS5bKCsHIK0MslZC2mIIzrPdJPXIpMhPB3XM\\njrT1TvnbKEgQakawdCwtiqWOgWXgyS9HcgcAkHzZmMq43Rfhdjv215Uyc6yaZUC4AwYPE/AIbLx+\\nPQ899BBDgwP0dLahKhEsVwpC1uop21tgGZNRzQbC2BkELYSQvhR8k5NEQbT3He3DmmgGyQ85183Y\\nBgFbDGnHfLuwmPx9YciYE20o0QkGh8cYHQsxMDRKR1cX1YcPU119GMuymDdvXnLF1mUwTZPHHnuM\\nQ+9VE9UEPEU34CtajyuYj+jyI8peRJcfOZBnf8c96cTGOunt6WJwoJ+Kiopk/yb5k+XDNI/4MJ1L\\nkiR/LvzmN78hNDHMyoUKqxeqM35GYLI4JNjObAl3P8MQAIGj9T76hmXOdfqpqXczOmGRk67z0H0T\\nzC3y4PV6HYewWCyGpqtIokWKH0QRCnN0CrJ1jp71cq5dYvtaA/fks+wUP1QsNTh62qSnbwKX23vF\\nmCaAjo4Ozpw+SXaaRvni6cWatCBct9Rk0xoDv2dSqOYTSA3CRMQWLrpdFkW5GrdsCHPT2gibVkdZ\\nNj+OIMB4RALLYHS4n87zNXS3nqL9XDWh0W5k0USWRRBk5i/fgi+Qds3XRJJcdDXX4JIl0tPTnciY\\nmpoaGhoakGWZ7OxsBgcHOXLkCJLso6B4qbP9QE8TNe/+nsGeJtR4BJfbT0pGIf6ULFwuH0o8THhi\\nkL6OM0QmhpFkiY997KbLuhmkpqayv6qK8bFBZs8vd5zxEu3t72xAiU+QV7zy4nsmy8LQbdfyRCSr\\njcBg11mG+5qwTINgWh6LK+7E40tBkCR7MZcgkpFbwsRoH+Ojg4yPjzmODIlV99G4SvmN9+LxpeDx\\nBsnOn8dQ73li4VEGe+oZ7G5AUyNEQ0NMjHTR33maljN7GO1vQVdj5ObmsGTJEnRdJzc31ym4KYrC\\nT3/6U/bu3cdEKIonmM28xRtZtHI78xZfT1HJanwpWajxGGo8wshgG13NtXj9KeiaQjQ8Qn9XI2eO\\nvU53ywnUeBTZ7SOncAGD3eewLAN/ag6zF17PwtW3UTR/HYUla8ifuxq3J4ASD2EaOoamMDrYRmFJ\\nOWJicZsFfe21mIaGripo8TCGoZGVO4fsgguRTakZ+QCMDnUw0t/M2GAbgijhC2RMEXSZDPedp72h\\nip6WGjxukU2bbuT+++8nPz+frq4uOjq7yZ5VRkbuXLtNhuYI+yzLjtXqbTuOqoSZu+RGvH7bRVAQ\\nRQxDY2Kki962WtyeAKXLd1zkAJgYD6ahIyA4xUxVVW3nGUFkqK/ZjhJDQtNNYnGF9vYOqqqqqKur\\nY/bs2Zcdw0ngtdde45VXXyVq6eTdtoGs61fgzkiZ9p0VBAFXWpCUhcV4C7MZa+qgt7MLVVEuuwAz\\nSZL/bj5M84gP07kkSfLnQCQS4amnnkIQBBYsWEAwOHM9Y6ojmyAIyLKMaZpOZG9HRwfhcJgzZ85Q\\nU1ODaZqUlpZy7733kpqaOk2sk3CLS8RwCoLAwoULGR0dpauri+HhYUekJAgCRUVFFBcXc+TIERoa\\nGpx41CtRXV3N8PAwy5cvp6BgegpSUVERW7ZsYcWKFU5bAoEAfr+fkZERNE1DEASCwSA5OTnk5OSQ\\nkZFBIBBwImXj8Th1dXW88cYbHDhwgF27dtHV1eVEnGZmZl429vZyDA8Pc+bMGbKzs+nr66OqqsoR\\nXnV0dJCZmUkwGOTkyZN0dnYyd+5cZs2aBdjPgd98802effZZWlpaiEajuN1u/H4/brfbdjkPh2lv\\nb6e6uhpVVcnIyOC22267ZHsEQSASiXDu3Dk0TaOiosJ5z+Px0NfXR0dHB6ZpOkLOqST6KxHPm9in\\nIAjEYjEnwnX79u3ceeed+P1+RFF0xGBlZWXU1NTQ1dVFbm4uxcV2YlFNTQ1VVVXk5+fz4IMPIggC\\nJSUlpKamcubMGbq6ujh48CAtLS2Mj4/T09NDU1MTu3bt4u2336a9vR1FUSgrKyMtLQ2fzzdNKNbV\\n1cV3v/tdmpqaME2TsrIy7r77bu6880527NjBunXr8Pl8jI2NMTY2xv79+6mvryc9PZ3x8XE6Ozt5\\n++23eeKJJ6ipqXFc8FwuF7FYzBlLiVfiO/V+waWiKIyMjEy7Hx0dHaWzsxPDMBgeHnaMPDZs2ODE\\n9IqiyOrVq2lqaqK/v5+6ujqGh4fx+/2kpFy4D47H45w4cYJ9+/bR1taG1+vlS1/6EuXl5SxZsoTd\\nu3djmiZ33XUX6enpqKqdxpQQ9pmmSSwW4/XXX8c0TZYsWTLt94WmaXR1dREKhfB6vTPGXSeiik3T\\nRJIkp14Xi8UcwW1CJOr1ejFNk2g0SkNDA7t27aKnp4clS5bMOP6S2Oi6zo9+9CNaW1vJy8vjH//x\\nH7n++usvclOUZZm5c+eyZcsWTNOksbGR2tpaSktLLykQTZLkT4E/xjziAzn4HT16dMafX3fddVf9\\n2T8WM7UhSZIkfz6Ypsng4CAAguyb0flgGsKkg4UgAbYzlyh7QBTxe7wUFRXR2dlJXBVxz7oeb9bs\\naT5uFvaNqGWBILkvHM+TATnXYQ0cQhk6e1HcacLFK9a1n127drF9+/YrOna933FuKpdythNcASwt\\ngjZ63nYsdGdgpZQg+AtsJzJLh2gfhM5jaWEsLYbSewSlrwa310fALVNYXMTY2BiDwxOIk6v2rxVB\\ndNkuB0NDPProowwMDBCPxy9yLZvpHC3TINq533axA1tQlboA/HkguGxXuGg/1kQTlhoGU2doaOii\\nFTHvZ9myZRTk59HS1o023oE7fa7znuHKsmOO9cjMcbCmAZiT11vEce8DiHaDEbX/7cmEwAWbcSdS\\nV0iHjFVEho/yzjvvONf/9OnT9Pb1Y0p+XGnFk9tI+Is3owbyLrg0jtbBaN3UAWAL50wdU4Dm5mYe\\nf/zxaW5wpmny+OOPc+i9amKagLdoE6604umFGA+kBLJRspeijLRgDtVgRAeJNL2MKLkRRBFJEvDL\\nIpopoOJG8qajh/uwRBdkXwf+2XZVN9EflmW7IKYvtvty6IjdryM19nVMFBIFl72NBXq4F5csYYlu\\njEgfrsAFgax/9o1EwR4PAwcnx8N88OXb7ommZjsvTjQhaGFcMmy8fovj2PblL3+Zrq4uzjach+Bc\\nLMsAfYq7iWC3XJIlLDOOKQj2WJs2nmWscBuCZdnncKnfM1Nigi3LLliqqmq7zgRLEMZOIwUK8RVt\\nSDrNfQB2795tO/dpAoGSWy4bN56MSE6SJEmSJB8V+vv76e3tAcCyrixkFxL/FcDrBlUD0xIwTQmX\\n28OyFRV0dHQgjPZw2w0mpcWBadublomq2SLCgG/6mofryuIsLVE40+LlQK3EzRsu3HNlpMD/+ITG\\nD38XY9++fdxxxx1XdJJavnw5z/zBw5EzUT57i4Z/ytTEsuB8p0DlUZkzzSKRGJgWRGMComhRkKXx\\nqe0TLJ8fx+cBWZp0vgA2r44xMCrywt5UDtX5CcUgFh7E7w9yww03sG3bNn7/+9/T2NRykZPb1WLo\\nGpqm0NbWxqOP/hzdsEh4rAmCwDvv7KKwsIB169YhSyKjg+0osTAeX5CetjrO1ryFZVmkZsyiYO4q\\nMvPnTxPkKfEw/R2n6Os4STwyRjwWnbHAMJWSkhLmzZtL47lmettPU1Sy2nkvI28uLo+PWHiE3tbj\\nzCqtmLatfX9r2gJRpx0CSnSCzqbDtmuFJ0g0NEQsPEIgNQdJEJHcsu0SrynMW7qVugO/5+jRo05M\\n14EDB4jFFDJy5hBIuRA7lpKex/od/4PutpN0tdQSj47T1VSNYdpiNMu0X2DPnwYGh3n9jbd46623\\nyczMYMuWLWzZsoXf/OY3nDhxElNws3Ljx8nMnTNtnu7y+Jgzv5xZc1cw2NdK4/E3iUfHOHnoedwe\\nn1Owk2WRoN9DBAt/ai5DvecRRJGSZdvJKVo6+TkACwGQXR4K5q0mf+4qelpqaG+oQldjNJ+qZOHq\\n2ycN4y+IJA1dxRsIIEs++roaWLBimxN/DFBSthGPL4WmU3sJj/fRdLKXljN78XiDIAio8QiaEsEw\\nNPw+D/fcfTd33XWXc64NDQ2Iksy8xdfh9ngnXTtsh0GsyTWQgoiuKYDtbIjTOlsAGh610wKyChZO\\nG4tTeb/DTDweIxaPgwVp2XNxubyIosiNt/8Nbo+PWHiM7taT9LTV0dDYxHe/+12+8pWvUF5efpmR\\n/NFldHSUF158kaihknf7RoKlRVfcxj87j/yP30DvS1W89fbbbN682SmcJ0mSJEmSJB8WDhw44ESu\\nXs3i3qmiHY/Hg2EYzvZ+v59Vq1ZRXV2NKIp84hOfuMipS9M05/MJoVdif7feeiunTp3i1KlT9Pf3\\nT3NdW716Ndu2baOyspLKykq+8IUvXLGtK1as4Ny5c7z77rsX3SNpmsaxY8fYu3cvnZ2djjgqFAph\\nWRbBYJDc3FyCwSCSJE2rR+Xl5REOh+nq6iIajaIoCu3t7eTl5bFjxw7Ky8v5l3/5l2twXr+YiYkJ\\nIpEIb7/9thOPzfcZ4gAAIABJREFUO5WXX36ZZcuWkZOT48TMrl27FtM0efbZZ6mrq0PXdbKyssjP\\nzycYDE673wyHw/T19TE4OIiu647A7HLzzC1btvD6669TU1PD0NDQNPHExo0bOXjwIJFIBI/Hc5GZ\\ngqLY98qJZ/eJuUIimjYxTg4dOsQnP/lJwHaL9Hg86LqOIAjceeedPP3001RWVnLDDTcAUFlZCdix\\nxlOv0ebNmyktLWXv3r1UV1fT3NzMuXPnpp2radoLdVwuF+fPn6e5uZlXXnmF0tJStm3bxvz58/nB\\nD37A6Ogo8+bN4/77779oQU0wGOTOO+/kpptuYv/+/bzxxhvU1dXR0NAw7bpZloUkSY5wLSHuSzgC\\nzvTdm3pNRFGkpaWFjo4OR9yY2MY0TcbGxggEAsiyzN69e1my5EKymMfj4etf/zpPPvkkBw4coKmp\\nicbGRgKBAD6fD8MwmJiYcFw5CwoK+MpXvuK4Gba2tqIoCvn5+ZSXlzt9mJi3JNpv13IsXC7XtPOR\\nZRlRFAmHw5imecW5d2KflmURiUScPvL5fGiaxpIlS/jWt76FruucO3eOyspKTpw4QXV1NW1tbXz9\\n619PLhC4BAcPHqSpqYn09HQefvjhKy4QEwSBnTt3YhgGb7zxBk8++STf+973kolaST5SfKAnm/ff\\nf/9Fv9gFQeDs2bNX9dk/FpdqQ5IkSf58OH36NJqugyWRiJi5aiYjNS1DRRLtFVY7d+7k+z/4IQJu\\nvJnz3h/Siq7pGIZd2LjIKTAwGyQ/phJCD/fgSpn+0NSVNod47zF6evs4c+bMFVdOb9q0icPVR4gM\\nN+LJWYogiI6znTJUPxnPOwXLgnDvBVFc1moIzJkUItofEcB2UUsvs+NIh45g6RFELHIy03jwwQdZ\\nvnw53/rWtxgaDWMZ2rX1KfaNqzLSiKHH6entY2B4DMOw7PYJAtK5Zg5XH6GwIJ/FixfjcUnOOYJw\\nQdwnuGaOqAVHQGZNtCCMHGd4ZIx/+7d/u2z8sSiK3HTTTTz55FNEug8heVIdgZBpmZAy3xbRDb0v\\nDtaJdAZEmWniPnUUhiaF6YJsC9kuOvBkpK6/EHPMR0dHp3P9q6qqUDQDd9aiacK7RDytO2sxergH\\nZfgcRnQIUxmzXfycNghYgkRzWzddvQNOv+7YsQPLsq5KDCVgrxbyFJahpGQTb3sH0YyRk5VKQUEB\\nubm5FBUV8dx/PI9iGhixYfvaFGwDdzoJkR7C+7LTECFQDHIK9O22+2b4GGSvnbS6swvDFhYSFitX\\nLKfxXBPRKeMdrlLwCGAoSCLccfud/OVf/qUzDkRRtO3iZReuzLkYktsR4FmWhYU16UZjYRqqPU55\\nn8BOEEGbvLbvE/9d3JtMivsiKKo2Oe5F8OYAFnqkH1MNIwcL/9Mx3h8lTNNk165dxBQdb9Gmy4r7\\npvJBxNVJkiRJkiTJnxP79u1DxAAR2nuvbZGAIIDbBaMhGBgV8Xn93Hvvvfzv//3PeNwGW9ZcPL9y\\nHnhLluMCOJVtFRHOtHioPCJx0zqDqX92y+aZ5GVq9I8MUFtby5o1ay7bvqKiIhYtXkLj2WMcOqmx\\nY50tGDzdLPLMOzKdfZNu2pOzokhMAMFidq7G3356mPxMA5c8vdCQEFblZVo8cM8YmWkmrx0IEo7a\\nC1tuvPFGFi9eTCAQQAB0VbmmPgUIjfVzvOoZTNNCkl3I3gyKipfi9aVgWSbR8Cg9badoa++iq7sH\\nWRIRBYvutjrSMgqoP/42lmVRvHAjRfPXzviMzOMNUrxwA9mzlnDu+KtEJ/qdKLCpRcapCILAzTff\\nTGvr45yr20MgJZuMnNmT/SIwe9H1tNTtpr2hCkEUKZxnFxAt03SEX5J0YYzFI2PUH30RTYmQmjUb\\nQRAZH2pHiYUIpOZMOa6Iy20XhjJy5zHad459+/Zx9913c+TIEXTDZNa8VRe11+XxMXfRejKyi2k6\\nvY/hvlZH1CcKIpYkTgoLA6TnFJOanstgzzn6+of5j+df5JVXXkFRVJC8VGy+j0Bq1kXHSCDLMgVF\\nC0hNz+bYvqdRY+NkZ6VTXFxMeno6a9as4Ve/+hWRSJzw+AAgsGDVLWQXLmLqHGCmPp9VartIt57d\\nS197HfOWbsfl9qLGQ1M+afHZz36G2tpazpxtpLfjjB2/PIVZ81aQP3sxfZ31dDWfIDQ+QCwyMnls\\nE0NX8Pm8fP/7358WTZQodlmmhdeXjiAKiKIbw9BRJ4vT9qMU05l3m6aBOenqJyDY4j/dnr+5vZd2\\n+J/aBdFoxFkcyWTxU3J5iccmaDixi5IlG0hJz2PBiq2ULL2Bc7WV9Hac4tFHf87//J9fvyqXz48a\\n+/btQ9FU/KVFVyXuS+AvyiOlbC7K2Xb27NnzgV14kiRJkiRJkj9FLMti7969Ttzl2NjYNQljEsKj\\niYkJxwFw+fLlHD9+nOLiYvLz8y/aJiH0mkn85vf7WbFiBbW1tezZs4fPfvaz095PCPwOHTrEpz/9\\n6SsKhTZt2sSLL77IyZMnGRwcJCcnB9M0eeONN3j77bft+7wp0ajhcBhBEEhPT6egoMB2Yp/sm6mI\\nokhqaioLFy7k/PnzRCIRLMvC4/Fw++23OyK5aDR6UcTv1bB3715eeuklRFHE4/GwcuVKJwZXVVXO\\nnTvH4cOHOX36NJZlYRgGnZ2d9Pb2cvz4cerq6hwXtZmcDgVBICUlhWAwSEpKCq2trYyNjfHv//7v\\nfP7zn79ku7Kzs6moqODIkSM88sgjPPzww47j45w5c1i7di2HDx8mFAqRkpLiiPxUVXUieKe6qymK\\nQjQaJRgM8qlPfYrnn3+esbGxaYK3hAAvJSWFiooKXnrpJRoaGmhtbSUrK4v6+npcLhfr1q27qL1F\\nRUXcd999lJaW8uqrr9LZ2ek444mi6Izf/Px8FixYgNvtpqamxhH7iaKIYRjMnz+fBx544JLGAoIg\\n4Pf7+djHPkZWVhZPPvkk8XicgoICsrOzKSgooLCwkF/+8pdYluW40SX65Eq6jqliurfeeosvfelL\\ngB21mvi5LMt89atf5Wc/+xk1NTWMjIxME2+5XC6++MUvctddd7Fv3z7effddR9SXcNgzDIN58+bx\\n/e9/f5pAc2JiAtM0ne9zQrCn6zq6rgPTY7ATrp5Tz02SJOezV/t9CIVCzjZT44DPnj3Lq6++yqZN\\nmygrK6OsrIzBwUEeeeQRurq6+NGPfsQ3v/lNAoHA5Xb/kcOyLPbs2QPAJz/5yWtyf9+5cyeHDh1i\\nYGCA+vp6li5deuWNkiT5kPCfqohOvcmwZnrydZnP/rFeSZIk+fOmqqrKdqoQBIj2X/P2gihjxQfA\\nMsnNzb2k4CqBqqq2lkmcQe8siJA6347lHGm6+G1BxJ21CEUzqKqqumLbEo5zohFFG++wne063iXW\\nfQRDCWFJfshYCbM+BkW3Q9oi2y9A8kPeJgiW2A5nM91biyJCyhyEwh0IcgALgeHhEQYGBhBF0XbW\\nkwT0cO+VO3EKiTYqA3UguDDlNMSsVfhKbsO/8C58JbchZq0iorlpbu2isnIvAhbC5Dmqw/UXxH2F\\n220nvUu5pVkW+GchFmxBNWXee6/aWe10KXbs2MH69WvxuSwiLW+hjrXZThQJh7XAbFvM11tpR8Ia\\nKhh2FBWiPOn8iC36i3RA7x77877CyQjdSwgiBRFB8mIF5hFXDd59910ABgYGMAwLOVgw83ZgR9TG\\nhjGVMbt8KbqxJC+W5LFfSCB7MT35hFUXza1d/PbJp3jqqaeIxjW8s66/KjGUAHhTcvHP3ogoeUhP\\nT+d//a//xd/8zd9MulomJjpgZV83Ke6bej2YXtFJ4MmArArbsS90fnIHTH5f7YluRoa92qawIN8Z\\n79PaNil4TFl0D4GSm3Cnz0X2ZyF5UpH9Wfb/yy7mz58/TdxnmiZ1dXW0tbVh6DqKamA44r6EVbyF\\nYZjoujkpNQTLtAvXF85HAEu3/ylcrnBub2CYhl1MTNxnWCYIkn1cLUakZRehxhdQhs4CAu70uQRK\\nbiGmCVc1jj+KzOR2ebW40uZgSj5HXJ0kSZIkSZJ8mGhtbcUl63g9cK7DTdfAta3LdMlQfdpHTJEo\\nW7qMjo4OLCPOqoUGqTPoeOw4GYtLJcasWqCQ4jcZGBEYGps+ERFF2FphgKlw+PDhq2rftm3bQPTy\\nSpXM0BhUHZf48VMuOvsg6DO4bWOY7/3NAN9+cAC/1yLFb/LA3SPkZtjivsshCgKf3h6ifFEcn9dC\\nVSK89tprAMyaNQtRFBjsO39V7UwQHh+kpuoPKEqEtOxilq//JOt2/BVzF60jv7iMgjnLKF16Ixtv\\nfYClaz+B6EohFlNQ4jE6zx+j4cQ7mKZJ0fy1zF6w7rKFEtMykSSZhatvw5+aQ3t7J3v37r1s+zZs\\n2MC2bVtxS1B78Dm6W+ucxS+ZeaUUL7ZdJNrO7uP0e88w2HUWJR4GLERRRpRcRMMjtJ7ZR93Bp4lH\\nxwik5rJ4zZ3Isj0ozBkWiQkIuNxecmaVYSE48+Hx8XE7sir94ogcyzJpOrWPo/ueYnSwE0GUyMgt\\nYdb8tRQvuoFZpdfhDWRgGBrDfc30dpxh2do7WXXDp/Gn5jMRihKJRJi7aP1lxX1TCQQzWL7240iS\\nC1EUeeihh5xCWCgURpDdYAlkFyyaFPddHYUla0jLmo0gQE/zEcBioOsslmkiIJCTk8PHP/5xtm/f\\njsslcf7UPkJjAxftR5LdzJq3krXb/5Ibb/sK63Z8gYotnyMlPRefP8DGjRunifva29v59a9/bfcz\\nApFYlEgkSiQaIR5XbMcPRGSXB5fbZzsCAtHQ0OQ1sDDfV9iyzEsvrEy8Z8eXKfazE0FAFEQ7Ttgy\\nwbLo76qnuvK3HN//DKoSRZJcLC6/mcJ5q4jGFB5//HGnEJbERtd19u3bh2oapK2Yf+UN3kfa8gWo\\npsHBgweJx+N/hBYmSZIkSZIk/z3E43F6e3sdx7XW1tZrqv0mxFfd3d0ArF+/nrq6OizLmtFV2DRN\\n5z7lUjGaa9aswbIsTp8+fdF7s2bNYtGiRaiqSm1t7RXbl5qa6iTRPfXUUyiKwmOPPcZzzz3H2NgY\\nubm53HXXXXzzm9/kjjvucKJDCwoK8Hg8Fzksvx9ZliktLXXEUMPDw+zfvx+Px0NWVha6rl+zUU5l\\nZSW//e1vkWWZHTt28J3vfIe///u/Z+vWraxfv55Nmzbx13/91/zkJz/hU5/6FLIso2kamqbx6quv\\ncujQIXRdZ/HixVeMMdY0Db/fT0lJCYZh8M4779Dbe/ma1he+8AUKCwvp7u7m29/+Ns3NzY4g7957\\n72XlypX4fD5CoRDhcJhIJEI0GgXA5/MhiiKaphEOhx1x3y233OK41E8dI1ORJIn09HTWrVuHZVlU\\nV1czMTEBQFZW1oxiz1AoxA9/+EN+9atf0dfXh8fjYdGiRaxZs4a1a9c6ca5DQ0NUV1czOjrKN77x\\nDe69914CgQChUIhoNMrnPve5q0oNEgSBiooKtm7dSiAQoKSkhK997Wvcd999tLW1OYK+S53j5UiI\\n/IaGhhgbG0PXdRobGx13w02bNlFeXk5FRQWGYfDzn//cEdNOJSsri507d/LjH/+Y73//+/zzP/8z\\nf/u3f+sIPnfu3OmMZ8MwqKmp4ZlnniEWi2FZFtGoPU+MxWLTHPsCgcBkXVRC0zTnXKfqSa7GoOqC\\nm3kcwzDshU6TzoeJ7TVN47nnnuOhhx7i+eefxzRNcnJy+MY3vsGsWbPo7e3lueeeu6b+/SjQ0tJC\\ne3s7gUBgRkHs5ZAkia1btwI4IsEkST4q/KcEfgm72mv57B/rlSRJkg8HAwMDkw5pwEST/cD4Wgm1\\nIlgGmzZtuqLgyjCNSbeyS/w69NkrQEw1NOPbcrAQw7Dsdl+BhOOczyMT6zpIpHXXBfFb7kYo/jhk\\nlNludq4UOypWkGznPm/2ZBuvIGb2ZNgueaIbRVF45x27oLRp0yY8Lgl1uNEWwF0FlmVdcN8TPZCz\\nDv+Cu/DmLkf2ZyN50pD92Xhzl5Oy+B7cRZuIagLxuIpgacS6DqIMnLIlUjlrLzjozXgwE8tUEQTw\\npubZDl2Kzq5du5wVTJfq0wceeICN168n4Aa1q4pQw/OYYw2gjkF6GYIvF4wY9O+HrtdhvBG0CQQj\\nDvFhGDsLXa/BwCFb0BeYDRlLJ10dLzNJEiXw5WJh34iCfZOPZSFIF283XdA5gSWnQMYKKPwYFN0B\\ns26BzJXgCoKuoIe6kQPZuGZtJKJYjIciGKaBnDr7qq5fgpnEUAMDA7aNuKFhyX7wFzGzcvQSBGaD\\nHJiM0+0Fy5gU+xkgSJSXl+PxeJzxHu8+hBEbuWg3giDgSplFYM4WUhZ8nNTF9+Av2oilhgj4vHzs\\nYx9z4onfeecdHn74Yb7/gx8yPmHHEhiagq7pkxbsiVVYIoLsQZC9CO5U+0CxfrCmTt4sEGT7jK3L\\nuFpaJmBhmYnvnGiPCclrfx8FEVwpWJIfQwkR6z5CtONdLNO44DR3FeP4o8iVxNeX41rF1UmSJEmS\\nJMn/z957R9l1lmffv91On141TTMqM5JH1epdsiQINtjIdkzANga+z5RQg73CG0IgkBBiCA6xjXmd\\nfCwC2DgQgwEXbMlW73VUZqTpvfc5/ez2/bHP2dNlmfdlBZlzrTXL9tnt2c/z7O3n3vd1X9fNhFAo\\nhCDAygoDEHjzzFtbxUyEacLRix5iqsCOHTsIBoOASU7GzDFEYo0yk3ofgCRBZqqltBcIT98+d44J\\n6IyOjt5Q+1avXs2ixUsZC3n56g8c/H+/ljEMk9s3BfjXv+rlvp1+8rN0jlz0YJhwa0WY7HQdp8O0\\nl6vXK/AUBLh9YxBFMlFVnWtXa+jo6GDbtm3IskhPa7WtXvdW0DWVqmMvoMYiZOSWsWjVe8nOL53x\\nG5QoSuQWlrNm+/24Uy1yWyQ4ythIDw6nl+KFG657LcM0UGNhEMDjTWXh0u2ousGBAweuu44UBIEH\\nH3yQ227bgSJDXdXrHH31B7RcO45/uJvUjCKKF6zDNAyGepuoPf8yl44+S+25l6i98DIXjzzLxcM/\\noae1Cl2LkZk3n8oN9yErznGVP2VmGy8BgZT0PBAEOx7WNKuIZqrlq2maXLuwj9a604BAXslylm78\\nCypWvZd5t+xg7uItzF+6i1t3/D8sXHE73tRcIqExzh1+HsXpZumGe8jMX4AkO2itO4Mau3FCU0ZO\\nCZ7UHEZGRjl37hxgKT5EozHUqNXn+aUrGI+HbiyBnFu8BFFU6O+8ihoLM9h1DV1XQYBbbrkFsBLK\\nG9avQxJ1zh/5L4b6WmbuS0HA6fahONzUX9pPJDBEwZw8W61E0zR++MMf8ndf/Sr7DxyKPwMGpqFb\\nRE1RttX5rMInHUGUbNJib9uVSfdnmgayYilDJlQDZ4Kuq/bzJogikuxEcXpQnG4EQURVI8gOF/lz\\nVyDJDoZ6Wzh78DkiYT+CIFCxbCdOTwYDA4M3lPD+U0JraytDw8NIqR7cRdMJsW8FZ046jtxMAqEg\\ntbW1f4AWJpFEEkkkkcT/DBLEq9TUVDIyMgiHwzeUe5mIQCDA0NAQgiCwYcOGeEzEjOpQibhiIlln\\nKjIyMuzzzoS5c+cC3HBMtGfPHrxeL1VVVTz66KOcPHkSRVF46KGH+PznP8+6devweDycPHkSVVXJ\\nyspCluVJVrXXyxEpikJ2djaSJBGNRtm/fz+mabJ9+3aAt1WMXldXx7PPPotpmtx33338+Z//OQUF\\nBTPu6/P5uOOOO3j00Ufxer1Eo1Hq6uqIRCJkZ2eTmpp63Wupqmqrt+Xk5JCbm4umaW9Z9OT1evnr\\nv/5riouL6e3t5Zvf/CZf//rXOX78OJ2dndx1112sXLkSWZaJRqOEw2GbzBaNRhkdHSUcDiPLMhkZ\\nGXzwgx/kQx/6ELFYzLajnWrvm4CiKHZBTnNzs33emfYPBAJ85zvfoa6uDqfTyZo1a7jnnnvYtm0b\\nW7ZsYePGjbzrXe/iwQcfZN26dSiKwpUrV/jhD3/Irbfeyic/+Uny8/ORZZmXXnrpun0yFZs3b7ZJ\\niIl5PDIyYt9jQuFu4jNwI8TaxLGXL1+msbGRYDCIYRjous7GjRsBuP/++8nOzqaxsZFvf/vbDA8P\\nz3guWZbJzc0lFArxox/9iGg0yrp169iwwYqlBwcH+drXvsaTTz5JR0eHbZfrcDhwOBy2+mFC/S9h\\nvbts2TIkSaK7u3va/SXGaTZyo2mak9T/JEnC5XLh9XrxeDzIsowsy5SWlrJw4UJisRi//e1v+Y//\\n+A/7+n/5l38JWFbPifdbEhYSMeKmTZtuiLA6FVu3bgXgwoULyfxbEn9S+L0Jfm9HNS+p3JdEEknc\\nKCKRCAIiouIDPQTBjhs/2DRh6DJCbATD0PnpT39KXV0duhqxbEhneldMVPSaCXGC12zWtoKogGkS\\nDs+Q7ZoBCcU5hRjqaCumIM+sbBfuxoyNWSQqd+G40lzCPvV6r704+cpEoL2jg+rq6mnqgTeCcfU9\\nGXK3IqXORZmlik0QRFu1TMUBpolkRNAjI5YCofc6djOGjqlHEbCq5ERRJCbnoOKkvr6RRx55hKee\\nesqWcZ8KRVH41Kc+xUMPPcj8siK8ioo4chmhZz90vg7hXsv81lAR1FGE0WqEngMW2a9rr2UNqwUt\\nYl3WKotsGemPn3x2uyIAQbKsqQYGLEUEl8sFgjBtvkwiSwoyZvZai9iXsQzcueBIi9sU3wJF78XM\\n3YQpKKgjrWhj7QhztmFKbkzTQB2qu26bprVxBjJUJBLB0FRLITJlQZysZlkE31BCS5DAV2b9M9Bs\\nkVG1oPUMGrotgz+rwuIMME2D2EgzwabXcCsmGzasY+fOnaiqytNPP81PfvIsTS2dBFUHojvHanNs\\nCERn/DmNPz+mjmlo1v2kzrfuyd8wThY2LbIlSlwOfTalUHPKcy86QHLGlR9FiFhWXnjyLXKuPWYt\\nhNqPWJViSaW5WXEjapfXw9shVyeRRBJJJJHEzQTro6bAqsUWqe7AOS/nrrpu6Fh/UOAff5RFY6eD\\nmGry1FNP8dxzzzEWiNLQIRCaiRMVX/oloiHDgFBEIBAS0BPLNptYN0N746p6lhLgW0OSJD73uc9R\\nUDSf7gEZXTd53xY/9+zwo8RzILoOhy9YxMbNK0I4FJPESlWYSPKb5RrlJTGK81Qciomqhjh48CDF\\nxcUsqqjANFU6mm6MaNTTfpVI2I/Hl8W8yp3IsmPSR2fTNFBjEQxDt39zuLys3PTnONwp6LqKIEhk\\nFSyyVPVmaLFpmmhazCL3YaLICk6nA09qPpLioaGhkYcffpgvfelL/OxnP6Onp2fGPv3IRz7CJz7+\\nMAvmlyIRo7PxDFfP/JrLx39Ge8MpEIQ46c4kFgkQGOlmbLCd0FgfgiiRW7yE5VseZNHqu5BlB2os\\nzNhwJyDg8c2uHi4pLkAgFAqhaRoejwcBgVg0OGm/tvozdDZfRBAlFq9+P8UL1+HypCErLksJLg5R\\nlMguKGfJhg+QmTcfNRah6ugLhEMByipvIyWjgFg0SHfrdPWUqVBVlXA4TDgcJrfwFiJRlVdeeQXT\\nNGlqaiIWi2KaBp6UbFIyCuLJnunfBWYrLE7PKcXh9hGN+Gm+sh9D17GKgwzbaksURR5++GFWr7oV\\nCZULR3/B6f0/pav1MmosYhUt6RrD/W1cPvVbjr/2DKGxXubk5/Doo4+Snp6Opmk8+eSTHDh4iJgK\\n+aUrycqfjyAIDPc1IykOZMWF4vAgStb7w9A11FiYrIIKJNlJYKSb4FiffR+GrpGeY6loD3bXx+ef\\nBRNrXuqGbsVNgCgpKIobSbIeUtM06WuvxjR0MnJKWbB0Fyu3PoQnNYegf4iqYy+gaTEEUaRo3go0\\n3Uiqmk+B3+/HwERJT/m9C9eVjBQM08Tvn7kgNYkkkkgiiSRuRiTW24ZhsH79eiRJoqqq6obzL0ND\\nQxw7dsy2YP30pz/NpUuXCIVCtLS0TMsvzJQz0nWdYDBIJBKZtP16qnlw4zFRXl4eX/jCFxAEgY6O\\nDgRB4IEHHmDRokX2uqClpYX+/n5kWcbn89nXuFECVnZ2Ngmr3O7ubq5evcrWrVvt/uzouLG826uv\\nvophGOzatYvNmzfjcDgmtUHTNEKhELo+HhMtXryYj3/843g8HltRLS0tDVVVZ+3vxLpdEAQrxwKk\\npaURjUZ54YUX+MxnPsPXvvY19u7dOyNJKiMjgy9/+cvccccd+Hw+2traePbZZ/nud7/LP/7jP3Ll\\nyhWcTidOpxO3243X68XtduN0OvF4PJSUlHD//ffzve99j9tvvx1BELhw4QJgqTTOtl4TBAG3222P\\nZUK1z+/3T7pXwzD4wQ9+QGdnJ2lpadx1112Ul5fbCo0T4Xa7WbFiBXv27MHj8dDc3Mzzzz+P1+vl\\n/vvvx+12c/78efr7+687dqZp2pbDHo+HhQsXEgwG2bt3LwD19fW2Cp9hGJNElW6Ud6FpGqZpUltb\\ny6lTp9B13bYaThShpKen8+ijj5KVlUVjYyOPPvooTz/9NNeuXbPnRCgU4ujRo3zjG9/g29/+NsFg\\nkJUrV/Lwww8jiiJ9fX184xvfoKOjg+zsbO677z7S0tJobW0lFArhdrtJTU3F5/PZ75BwOEwkEmHH\\njh3IskxXV5d9nwnFwvT0dERRtEnAE/susU+C+OhyuXC73ciybHNT/H4/siyzZs0aPvjBD3L//fcj\\nSRLHjx/n5z//uT1/Fi9eTCwW49ixYzfUr38qSChe5uXl/V7HZ2Rk4HK5MAwjqWqexJ8U3p7XSxzf\\n+ta3/iD7JpFEEkm4XNYHfim9FKO/BrP/tKVmd131NxPG6mC4BlMdAVHCEEQamtotVS8EQu3HCPVc\\nQkidj5C2AFmSLcl1IX58qMsiKql+MDSLxKOkgDN7VkU2ANNQIb6IvxEkPvCfOnWKqGZgZq4AyY1g\\naHGCX5wnSYthAAAgAElEQVRgNRa3jkopAylhyyvYWTUTE2E2UmLcWpihKiLRGIcPH2bp0qXs3r2b\\nn/zkWYKdx5Gcqde1eTVNk+jAVWuhmrUCwZmG0+kE00QNdBEbqseIjmEaGoIoIzpTcWQuRPYV4C7a\\nSLT9MCKqZWPqmwt6zLJBnniPpmERsUwTQbASU5quEQtYtsl4S9FHLtHU3EpHdx8nT52mYE4+u3bt\\nYteuXbZta6Jfd+/ezc6dO6murubFF1/kQlUVumEge/MQnakoGZbtjTrcgBHzY+oqugGm7LVIbp5C\\nK2NoGhP6f/5bjKilAJkIYHNzc5HqGtEC3ciebHuviVbFZt4Wa26JjunKkQk1SV8JOFIxu95EHWkB\\nKQ0yVsLgGaIDNTiyFs0aVJqApmpW9VVcodIU0jBjGo2NjRiGYQUsCcKbJ288UzoThJkyuia4cgAB\\nYsMQ7gHTsqMSBKipqbETWp/4xCcQBMuqNtxxmEi3G0dWBbKvAEFUMA0VLdBFbLAWUQ/jdcps2LCe\\nj3/84wA888wzHD9xirAq4CraipJWghboJtC0D/yNkLbYel5FGQzdUhU0LOUQwT0HQfFiqkGLhOgr\\njpMQNQTfXEt9cKwe0heNj4VpPV8YOnbGW3TG+yFu8zt1jiTGTEmxxyzmzcOZvdgiVw5etJ/DJCxc\\nT+3yRvB2ydVJJJFEEkkkcbPAUjUQicYE9tym8eJ+mad/mc5H3jvK5uXhGZdt4ajAc6+n8sZpL7oO\\nHqeBLIFgDCFj4nKYXKkX+dy3FdZVRrhrmx+3S8LpcIJgkfouNzo4eM7LxQYnhjGu9FVeEqOzT8I0\\nwTeDmKA/ZJGipiYlEh/529vbCYVCOBwOMjIyWLFiBR6Phw0bNtDUeJVFpTF2rAoyFhSQRRNBhFG/\\nSCAskuIxmJuv4pAT9jnx1ZlpX2TGdawgwPKFUVp7HKiaRnNzMwDvec97uHatlqbqw3h8GeQWls86\\nDqZp0tF0HtMwyC1ZiiTLOJ2Wql1Pew0dTVUERwds0p7icJFffAtF81biTc2isHQZDVcOIUoyOQXl\\n6FoMXYshSvIkWy1D1+w2JxIFVjIIsuaU0xEYYmh4lEAwSntHF6+//jqVlZXcd999lJaWTrhngc2b\\nN7Np0ybq6+s5dOgQR48eZXR0DG9qNhnZxcwpXUpm7lxCgWFikSCGoROLaSjuNJyuFCR5fF3W137F\\nIm/lluF0z660oasRe0ACgQBlZWU0t7TR236N1AyrkEPXVJqvncA0TcqX/xkpmQV2X0xV+ktAkmUq\\nVt7BlZP/TWCkh57WK+TNXU7h/DXUXXiFjqYLFC9YNS0mMk2TWCxKNBqzrYoBXL4cDMPgypVq/uZv\\n/oaBgQErUYOANzVnhtjKZCrZb2qiSxRE3N4MoqEx+ruuYWgqoqwgyAKDg0PU1NSwZMkSFEXhs5/9\\nLL/97W/Zt28fY/4+as+/xlXjd/ZUFgUBWRbwuGRWrVrF/fffbyvFPPfcc5w7fwEDhVu33ktaZgG9\\n7Ve5dOq39LZdIq9kOaIogCAgi05MSUFVw5iGjikI5BVX0tV8noaLr7NkwwcQJRnTNHC608jKK2Ow\\nt5m+9moK56+Ok/sMK8ZVo7ZynzxFxdE0DXraLmKaJrnFVozjcPmoXHcvl44/T2C0n47GC5RWrGPO\\n3CU0Vh+mpqaGkZER0tPTZ51Pqqpy7tw5zp07h9/vR9d1PB4P5eXlbNmy5S1VX24m2HNJ/P1daWzC\\nZlKtIokkkkgiiXcQEqpYoVCIpUuXUltbS2NjI0eOHGH9+vWzrgdGR0epqqqip6cHVVXRdZ1YLGaT\\nwQRB4KWXXuLkyZNs2rSJZcuWIcuyTQaKRqNcvXqVM2fOTLKEVRSFuXPnous6Xq93xmsnFNGmxkTR\\naJSqqiqGh4eJRqO43W6KiopYtGgRCxcuZO7cudTW1rJjxw6ys7MZHR21lQRbW1vRNA2v14sgCJNy\\nIYl16VTFtYlwOp24XC4ikQiaptHS0kJlZSWbNm3i8OHDPP7443z5y18mOzt7xuPBEjW4ePEikiSx\\nbds2S3Xa6aS/v5/9+/dz/PhxRkZG7Dbl5+ezfft2tmzZwrp163j22WcJBoO43W5cLhfhcBhRFCep\\n2+m6btueJuyVY7EYhmHgcDhwuVwEg0GGh4cJBAK0trbywgsvsGHDBj7wgQ9M6nOPx8N9993Hnj17\\nOHPmDEePHuXUqVOYpsmSJUsoLy9nx44d5OTk0NHREVfPt8heBQUFZGRkTOrnRIFKwgZ0NoRCoXgc\\nEiMzM5PU1FRGR0dpaGhg4cKFAFy9etVW7nvf+95nE8iczpnV0sEiL91xxx388pe/5MKFC6xbt478\\n/HxuvfVWTp8+zfHjx7nrrrumHafrOtFo1CZXJlBUVMTly5f5+c9/Tm1tLb2948IHMxH6bsTGNrHP\\nwMAATqcTVVVxu92Ypsnhw4e5++67cTgczJkzh7/7u7+zYptz5zh9+jSnT5+2zz/x+l6vl927d3Pn\\nnXciSRKhUIjHH3+c0dFRysvL+fznP4/X66W7u5sTJ05w+PBh9uzZA2Ar6iWe/Ugkwvz588nLy6Oj\\no8MekwSxMCsri+7ubmKxGJqmTSLvJcYILGGSycV+JqqqEo1GSUlJsfM+CxYs4C/+4i947rnneO21\\n19i2bRsFBQXcdtttXL16lRMnTrB79+5Z+xOsd9mRI0eor68nFAohSRKpqamsWrWKVatWzaomeTMi\\n0b8Tn7u3i2RMlMSfIn6vt0DiRfl/e98kkkgiiQRBSpBcKOmlFimq603L4tVbNJ0QZejQdxwz0Gr9\\nt5IOKWXIKQXIigstFMCM9EGgBdQA5uBFCA+gZ68iFo2Cvwn8DZhaiGnV+tERy+7X0DANbcaASQt0\\nIUkCubnjlipW4uAKhw8fpq+vj0gkgsvlIjc3l61bt1qSzgiIjlRIKcYwTIsoOHENrcYrsJ05cfW+\\n+HWFOMkvse9sa2t3PiBg6oatcLVr1y7q6uo4fuIUwabXcBVuREkrmdEeU/V3oEdGMGUvgqcARVEw\\n/Q34B65iRP3TtSfCQ6gjLYjOFBxZizAkN2Ysiigq4M3HYIZ7FKzmS7JF+rOqhax7FEQZfIUwWoPo\\nSkXMLCc4WEtjcwddP3mW+vp6Pv7xj0+TbRZFkaVLl1JZWcmXvvQlmlo6ceQuw5Feau/jSB1XExwe\\nHrH6U1TGk4PBdtBCCIrPtmieFeE+wLDl8bdu3crJU6cJDtbizKlEEMRxsiRA9mqL3IdoWfzOAgEh\\nbre8BrPvOIw2QN5tIHsxon60QBdKSuGkY0wgFo0SjUbjxFbG+9sQEUyD5uZmvvSlL9mKg5ZV7QRV\\nxklZ0wnEPkEYn3tgEdxE2fotOgiigoBp/SY56e7ppbq6mqVLl9oKi+Xl5ezbt4+u7h6igxcJ91XZ\\n55YkAa8iUVBSZBM1RVFk7969nDx5mrAq4J33ZzYpVfIVgOwBNQihDvDNjU+AOIlUj1pEXUGEtAoY\\nOA8DcbKwkmLdnysXyZmCHvVbSqG+EiuQTBD4jHjFpSBPf++E2izFQnnKHJkwZgkipuwrINxX9ZZK\\nc2/13liyZMn/UaDzx4bZ1C5vFG+XXJ1EEkkkkUQSNwvWrVvHhfOnOXA2wjc+GSMcEXjtuMQPf5vO\\nq8d97FwdZOOyMB6XiWlCU6fMt3+axbBfwqmYLFsQZcvyEMsqJCTRIBCMca1F4chFDw3tDo5cdNPW\\nK/OJu4fwujSuNjt4YX8Gg6MygmCt9VwOA0GwiINXW5yEIgKiIHC1SSQvU5/U3rPVEggKJSWWGlii\\n8n7//v30dHeAqTK+tpRwe1LZuGkT586dw+WAd280cTpdqGoMzTDBAH9YAhPcTusDrS02zeS6JzO+\\nlpwpJPK6DHv5mkjqrVy5kj173s+vXvw1V079htJFGymefyuKc/p6Yri/jZGBThSnl6y8eciyQnv9\\nKdobz6Nr44kSSXJgGBqxaJj2hnO0N54nM6eEooUWWUoQRNKz8tBUFVXVMIzJ1j+JJJYoikSjUfue\\nJFnGm5qDJDvILSyntHwtnS2X6W2v4ULVJerr6/n0pz/NihUrpp2vqKiIefPm0dfXx4WqiwiiTFnl\\nDtweD6Io4UvNhlQrkef3++P2RRoSVmylqVF6Wi8CkF+y/LrzdbC7DtMwEEXL/mvHjh0cPnyErtbL\\nzKvcjCQp9HZcQ1Oj+NLyyZpTbqv7idMKPSZK1QuIkkxx+QZqTv+K3vYr5JYsJTNvPg6Xj1BgmOH+\\nNjJz59pHG4ZOIBC0i5wEQUSSLUKlw+UBQcQEmppbiURCVu2OaUxa61vJpcltSYRAU9VSTNOw4j1D\\nx9BVJNlBSloOuQXldDSeYf/+/SxZsiQ+TyT27NnD7bffzunTpzlw4AAdHR1Eo1HbCmzjxo1s3759\\nknVcT08P+/fvR9Vg1dZ7SMu07NByCstRHG5C/kEGu+vIKVw0fg+iiKK4UWNhDF2jcN4ahvuaCfkH\\nqD75AgtW/Bmy4kQQILeokqG+FjoaT5GeW4rbl2kpvahRDNN61hVl/PlI9EF7/SkiwREcTi8p6QUY\\npoEoiCgON2W3bOfqmV/T2VTF3IVrUBwu3L4MtMgwo6OjMxL8QqEQr776KocOHWJkZBRNN8brywQ4\\ne+4Cv/zVr1i3di133HGHbYN2M8Pr9SIgoM3kfX6D0AJWUno2skESSSSRRBJJ3IyQZavg4eTJk5w7\\nd44HH3yQ//zP/6SlpYUDBw6Qm5tLWVkZubm5iKL17b2xsZGqqioikQixWIze3l56enoQBMFWdcrN\\nzaWwsJBIJMIrr7zC4OAg27ZtIxqNcvz4cc6dO2eTfhJEtgRJ8OrVq0SjUQYHB2lra7NjH7AKFBJK\\nbwmr3sQa7siRI4yMjNgqYKIooigKhYWF3HrrrTQ3N+P1elm3bh2CIKBpmm0VGg6H7WNmIljdCMkv\\nkbNIWJkCPPDAA3R2dtLY2Mg//MM/cP/993PrrbfOSBp69dVXiUQirF+/npSUFGKxGE888QRVVVWo\\nqjrpvgzDyj20t7fzy1/+kq1bt7J48WI6Oztt5bNoNIphGNOUDkVRxOFwTNomiiJOp9N2CvrYxz5G\\nWloab775JlevXuXQoUPU19fzyCOPkJWVNel8iqIwf/58enp66OjoYGBggJKSEu69917bQWrevHn2\\n/gnLWFVVbcJdXV0d9fX1uFwu2yJ2Npw5c8Ymh8myzLZt23jppZc4ePCgTfA7dOgQhmGwdOlS3G43\\ngUDAjgWnYuKYZmZmUlFRQU1NDWfOnOHOO+9k48aNnD59mlOnTnHHHXdMGrsEsS0RryZIrIIgkJKS\\ngizLGIZBVVXVJDW7iZhYkDaReDdTcVUCCRVGn8/H9u3b6ejooKWlhdOnT7N582bAIix+5jOfYWho\\niEOHDnHs2DGGh4fRNA2n00lRURE7duxg7dq1k4iPhw8fpqenh8LCQr7whS/YpM7t27dz/Phxjhw5\\nMi2OcsSdyEKhELFYjIceeojHH3+crq4uTNMkPz/f7p/c3Fy6uroYHh6255KltD8+v6cSMU3TZHBw\\nEFmWWbRo0SSL33nz5rFixQouXLjA/v37eeCBBygrKwOY1Z4YoL29nZdffpmzZ89OUsRM4PTp06Sm\\nprJt2zbe8573TCMU34xIPN8JovDbRSQSsQUgknmiJP6U8M6h+SaRRBLvCNgEqaE6fOVW9Yk60oLZ\\nd8yyek1dYBFqRAX0GPSfwIwOgeyGzJXgnoMgSiDLRDQN05EOjnRIWQjRAYvkE+pEGATTMCHcZV1Y\\n9kLqQnDngaBYiahwD4zWY2oB9PAwobZDeIq3WOcnbik6WItXkWzi3htvvMG+ffvo7uklquroujlO\\nYqpr5OSp0wiYhMIRHLlLcKWl2WprCYUBQQAdA0MQLMLSLLiuil/CWphxhau3o6YW6TprqWv5yqwA\\nYOAMkdEWK8Uheay+8kzoq1Av5lg9etRPpOsMojMVwzRAAF9qOqbonXaPoijhcDiIxaLEYqqVAJMc\\n48Q3WzVNwJW7FGdOJepoG8HO4xw7fhKAT33qU5NITxNJUqFQCEOLEmw7QtRQcKXkISvypB4TRdFa\\nLBu61dfRERg4Y21Mq7i+sl1Cxc3U7Uq3hBVyU0sn6mgbjvRStEAXRtQPkgfTnR8nx00gbdrnm+CP\\nltjkLbb6Ww1Y8zd1PubwZWJD9ZMIfonEpVWVxThJMqGYqAcAAd2UaGhqRVdjxDNaYMYmt0MAzIlW\\nvROIfXZHa9afaSkxCqYBgoQjowzRlUF06NIkxbqpCosJEls4HMbtdtsktsrKSns8DcNg3759hKMa\\nrqKtkxQndU0H33zLXnngDCip4yqfgmjNfyNmKUymliNE+jED7dD9BmSuAPccTFFEzqjA6DmL2X8a\\nU/ZZ7wqb3JdQVFDG+wUBokPjcySlDNNQrXmbQHzMEkRMUfFdV2nuRt8bs6lX3qyYTe3yRjETuTqJ\\nJJJIIokk3glYvXo1KamZdPQFqW9X+Yt3a+Rlmfz6oEz3gMKzr6Xx7GtpKLKJrsNoQEKSTIpyVT6x\\nZ5jcDB1BEBFMHVXVcDpgRXmE5eURBkYk/vevMmnrUfjRSxmsqgjxizfTME2BzFSNHauDbFsZIs1n\\nfeAPRQQOnPNw6LyP7kGZ/3xJpn9E4N6dGoIA/iCcuiKB6GL79u00Nzfzr//6r4yN9IMZId2nsqJC\\nx+sGVYWmTpGG9iB7X/8NgYBKRqrOrRUCsuzBMN3Wutw0ieoCgigQ0xIFJ1M6aeJSdQalNYCoKtib\\nJiZN3v/+9yOKIr/85a9oqztOS+1J8ooXk51XhqQ40bUYwwPtdDScxzB00rNLcLhcNFx8nYHuRkzT\\nJDWzkPy5K8jKmx9XQzMJ+fvpbr1If+c1BvtaGRvps9WtJVHC6XXGLX7GbakEwVKvSFiAmaaJJCtI\\nsiN+rLXmEyWZtKxC0rIKWbh0O3UX36S3o4YnnniSL33pr6moqACgu7ubvXv3cuzYMUKhCJpuoKkq\\nIf8ANWdfZsGy3SgOF06nE4fDsnKVZdlKZBo6pmFgmDq1518iGh7Dk5JFRm7prHPVNE162i5h6Boe\\njwuXy0VeXh7z5pVxrbaB9oZzlFasp6PpAqZpMqd0ubXWjq9zxSlFNOMhx3iUm549F5cnnUhohNGB\\nNnIKF5OVv4Celir8I702wc8wDPz+gJWkEkVkxYE4IZY248mr9KxCHE4f/d0NSIoDLRZGjQYBc0rI\\nM3GSTSb6ARh6DBMTTY1gmgaiqJCakc+KTfdimgat9adobGyc1mdOp5MtW7awZcsWANvCarak7IED\\nB9A0g/ziStKyxuM/wzCZU7qC1trjNF7ai+Jwk54zTnYURBFRkjF0FUGSuGXt3VSfegH/cCeXjjxL\\n1pwF5BZV4k0vIKdgIf1ddVSfeoHylXfg9mbYNV+SpCCIgn3vpmnSUX+SjvqTgEDpLdsRRAE1Fsbh\\n9CIAGTmluDxphEOjDPY2kz1nPpKkoGGpmkxFf38/jz/+OO3tnaiajic1h7lly/GmZCEIAtFIkJ72\\nGgZ7mjh0+Chnz56dkdx6s6GkpASfx0N//wjRgRGc2bMrG84E1R8i0tFPmtPN/Plv5TyQRBJJJJFE\\nEjcXdu7cyalTpzhz5gw7d+7k4Ycf5uWXX+bcuXMMDg7S39+PYRj2WjYajaKqKr29vTQ2NqKqKpIk\\nWUILcbJUZ2cnXV1dlJSUUFZWxsmTJ3G73fT19XHt2jXAstJctWoVFRUVNmlqaGiIU6dOUVNTQygU\\n4pvf/Caf+9znqKysBLCVh4uKiliwYAF79+7lueeeIxgMEg6H8fv9Vp7CMGwlrrGxMerr6zFNk7Vr\\n19qqhLqu2232+Xw3ZJV6PYJfgrg1kUjmcDh45JFHePLJJ7l69SpPP/00aWlpbN++neLiYhRFwe/3\\n2wpxiqKwfPly/H4/3/ve9+jp6UHTNHJycigoKCAlJcUmiQ0NDdHV1cXIyAivv/66nTMxTdO2x9U0\\nzbaFTSgTyrJMOBy2yX0ej8cmaCWU/Xw+H6tXr2b16tV0dnby/e9/n66uLv7lX/6Fr3zlK3bBw8WL\\nF9m3bx9XrlwBLAvZcDjMwYMHycnJYdu2bSiKgtPptMc4kSOKRqM4HA66u7t58sknAbjttttsy+CZ\\n0NbWRkNDA5qm2d+pd+zYwSuvvML58+dpb2/H5/Nx8aJVQLV48WKbvDUTqXKm8V6yZAnV1dVcunSJ\\nd73rXZSUlJCZmcnw8DBDQ0P2dWOxmE3kTKgfJkieYBEYFUVh9+7d7N+/3ybERqPRGdswkUQ6EyYS\\nA03TJDU1lS1btvCRj3yEN954g5aWFhobG22CXwKZmZns2bOHPXv22Cp5E9s59Rr79+8H4N57751E\\naisuLmbhwoU0NDTwxBNP8IUvfGFSMZHD4SASiWAYBmVlZTz88MP8+7//O+3t7fT29pKbm0t2djYF\\nBQUMDw8TCoUYHBy05/REa96pberr60PXdXJycti0aZNNcEyQzNasWcO5c+c4evSoTSxNjNFMOH/+\\nPD/4wQ9QVRVBEFi5ciXr168nLS0NwzDo7Ozk4MGDdHZ28tJLL3H+/Hm++MUvTiO33mwoLy/nd7/7\\nna1G+XbzXidOnABg4cKFs86hJJJ4JyJJ8EsiiST+qDCRIKX5O/GUbCPmzSM6UGMpxw1fskg9YNlw\\nmppFzsvbZhF8DGtxrGlxi07JaSk9YVgWrHN2QfcbmP5WQADZBdlrwFNkKeVNDIaUNPDOtYh+Q1Wo\\nIy2EAE+JJUeujrYi6mEKSoooLy/n6aefttTGohqG5MGRVYHDNwdBUjB1FS3QTXCwFiM2hqlrCIEu\\nyKlEUWQUZfLr2C87MGOmZWE7FZMSWrMgrj4mMFnh6kbV1ERBw0DGkVaMOXQOddSyl51VSdGZZdmc\\nBjsw+0+jR0bBMBFEE3QVxTn9HoG4VLhqj9Wk8ybuIa7sIAgijvRSJGcqwabXOHHiFOXl5ezevXtG\\nkpSmGRimCVoItWM/WuZKxJRiXC4XDqcTAZBlKZ5I1MDfBYPnwVARfMUWifF6CLaDFkAQsCu+EkS2\\niVbIsaF6a7gmnk+YuticUAk1MUFp2y1fhGArpC+2uibmn3SkTe5jCkkygXAfCCKOjDKMaAC0HkAE\\nDAh1g2OmQCAx0aZMNtOwfov0A5Ytb4Lc5ynegh4ZJtx/cUbFuoTC4o1Y1V65coXunl4MyYOSVjJp\\nWywWw0yZhxAbwgx2QvebkD1hbooSGGK8rQZkr0NQA5jhHug/BYoXfGVovjnIKQWoYx3WOeLkP3se\\nisqEbjAspb+BMxa50VtskQwTSoGJBGJ8zMzhS8SG6nHmLJlVaU5VVZ555pkbem+8lXrlzYaZ1C5v\\nFFPJ1UkkkUQSSSTxToIsy2zfvp2XfvMCP/y1yt/9vzF2rNbZslLnwjWRN8/I1LUKqJpAOAqiaJH7\\nvvyRQRyKgW4ImJjohoYkmnjdlgVvIAy5GTr/66F+/ulHudS2OrjS6MDlNHnfljHu2uJHlpnElVNk\\nk43LwmxcGqaqwc1PX03jlSMSPrfJezbpvHpMRjOcLF2xDL/fz7cfe4xYZJB5hVHu2Kyxotxg6jfW\\nth6V109EOHROJhAS+c0hmXt2aoiCgBhPcGSlgSJZ5MXBUQmvy0SSJq6X35LfR327A92wbFTT0tLG\\njxUE7rrrLubPn8/rr7/OpUuXGeysob+jOl4oY9mliqKVZHB5vDRfOcBAdyOS7GTRqveRllU86VqC\\nIOBNzWXB0t2ULtpC7YVXGelvwTQNDEMnGgkg+9LjyhTTK/+DoQS5z4EsjxeOxMJj1jg4xhMKisPF\\nLatvR5IVulsu8v3vf5/vfve7XLlyhaeffppgnNiXnl1MbmEFhq7RcPkQI/2tXDv/MsULN+BLy0VV\\nnXg8nrgFGBimychAK+11JwiM9qA4PCxeddd112hdzecJBYYwTB23200kEiEtLY277rqLpn/9Ho3V\\nR3A4PIwN9yAIIllzKiaUEAmTYm8raTTdAkoQBHIKF9FefxL/SA9Zc8qRFTcmoKkRexIEgwlyn4Ti\\ncE0rhBvus2yaPSlZRMN+JFkht2gJHQ0nGR1oIxYJzajkOBkJop9lrRwJjhIc6wegeOEqypftQHG4\\n0NToJOXI6+F6SYhYLMaRI0dQdYOi+SsnbdN1nZziJYRDY/R3VHP1zIsUzFtN/txltqWyJCkYuoqu\\nqUTCozicPgIjvehajIHOa/R3XkVxuC3nAzWGGo1QffIFMnLLyCmqJCU9HzFu26xrMQa6rtHTepGQ\\nfwAEgflLdpFdUIEWC1tzXdeQJBlBEMkrXkpr7VH6uurJnjMfNRae9m0CLPupxx57jM6uHhyudBas\\n2Eh6djFOpwdRGv9+kF+8mHBwlIbqw/R3XuPfnniCRx95xE6s34xwuVxs2rSJV/e+xuilBnJvW/22\\njh+70ogsiKxevfq6tsdJJJFEEkkkcTOivLyc4uJi2traePHFF7n33nu5++67efe7383Zs2c5ffo0\\ng4OD8QIaS/Wuv7+ftrY2mySWIFE5HA7cbjfhcJhYLEZnZyeGYdhkvMT2O++8k3nz5k0jmHg8HjZv\\n3szmzZs5ePAg1dXV/Nu//Rtf/vKXKSgo4JVXXgEsUuJLL73EL37xC4aHhxkYGGBgYGBa0XdnZyep\\nqalkZmaSlpbG5cuXaWpqYt68eUiSZK8Ps7OzbXvS38d6UtM0IpGIrUA2cb3g8Xh45JFHOHjwIG+8\\n8QY9PT385je/mfE8kiThcrl44okn6O7uxu12U1lZaROWEhBFkezsbLKzs/H7/VRXV9Pd3W1b1yaQ\\nULmbCFVV7X18Pt+k7dFodJpicWFhIX/7t3/LP/3TP9HZ2cnzzz/PRz/6UX7+85+zd+9e+zrr16+n\\noqKC+vp63njjDV544QX6+vrYtWsX6enpeDwenE4nkiTZBL+qqir+67/+i1AoxJIlS7j77rtn7WNd\\n1zns1BsAACAASURBVPnZz35GJBJBkiQ8Hg+hUIisrCw2b97M4cOHeeKJJ3j3u9+NrusUFRXh9Xpt\\nQt3UuTZRkXFiTJSZmUlWVhZDQ0P09PSQkZGB1+tleHjYnl+6rtvxh8tlFV9NJX7W1NQA1twyDIP0\\n9HRSU1OpqalBEIQZVeNmU/MbV7SX7HF76KGH2LlzJ4Ig2KTVBOFwNgiCcN2YqKamhr6+PjIzM1m2\\nbNm0/vrYxz7GU089RVdXF9/61rd473vfO0kB0Ol0Eg6HCQQCRCIR3G43o6OjRKNRenp66OzstBX1\\nE3bRCZthp9OJoij2fFRVlUAgQCAQQBRFsrKyeOCBB8jOzmZsbIxYLGb3e35+PkVFRXR3d3P16lXy\\n8vKA6TbeYJFSn3rqKXRdZ+XKlbzrXe+isLCQlJQUe47ccsst7Nq1i9raWn784x/T2dnJY489xle+\\n8pVZbctvBixbtoysrCz6+/u5fPkyy5df30FgIkzTtG20d+7c+YdqYhJJ/FFC+vu///u//59uxB8r\\nBgcHicViOBwOu9IgiSSS+MMisWCsqb5CeKQdJaUIJa0ER9ZiZG+upRYmSiDImHoEQZARcjYgeAss\\nQpgwIWUgOUGUrE/7pm4RdBSvZe0Z6gB0KHiPpQgoTJBNE4S4ilfMUkJzZYG3EAKtGJEhRNmFIEiE\\n2w7icYrs2fN+9u3bx/ETpwipAs6izbiL1qP48hEVD6LsQlQ8yN48HNmLiBkujMgARmwMIzaGkjZ3\\nBuvfbvTwMCg+cGXPQAizmjtbdRb+Zgj3IIqwbOkS1q5dO6mP58+fz86dOykvX4iAgc/jIjXFQ2FB\\nHpW3LCIajRIIRZAcHmKDdRa5r2AnePInJWKmDB440sAzBwKtYEQRBBHRmYbszZu2e4KYZhjmzKQ0\\nfzNEeq1+m2CxKypuBIeP6HALw0MDbN26lWeeeYZXXvkd/YOjxEwXctYSnPm34sipxFSDGNFhCHZi\\n+FvRYlE03UQSAC2IOtIEg+csu2Z0BF8J5GyA2apFTBPG6qH3GBgxK+ACW7J97dq19PR009PVQWiw\\nEUMNWyTTrOUgOqw7T9jbJs53vTEVJPA3WVVDniKEQBOCqODMtsh+sWiUSCQ6TpKc2o+mAX0nEUwV\\nd8FaS1FQjWAqKaCFrL+UBbOM6wwqg4ZqnXPwHGhhJFca7oLVuOasRhBFTF1FHbxGaoqH3bt3z9yH\\nN4D//u//prGlDTlrCYpvslVyJBqx5o1vLoLmh+iwRbgMNFvPuiBZypJqAIKtCANnQB1DwFKOxFAR\\nwr3W/moAU49ZiqDhbgi1x4mB8fHXg+Bvgf6T1hwxDYvcl7PR6mtTB0xLMXHSmDUiiJL1F+ml8pZF\\nk55DwzD4wQ9+wJGjxwlFopYdtihiRMcwoqOIjhRkbx6Kz3pvCM50wiPtdHd10N/Xy+rVq2d//m8C\\n5OTkcPLkCUaGhxCc6UiuG09KqaMtGKONzC0u4EMf+tBN3Q9JvHPxTooj3kn3kkQSNwvKysq4dLma\\n7t4xLtYaLFtokOKBwlyTzSt07tyms3ONzvGLlq3uX31oiPQUHd1IxDQmkmji84AkWstaXQfdsIhz\\n8wpjHLvkIRIV+cCuMe7e7p9kgSsIoGoQDFvrIbcTFhZr5GVqnL3qoqZJwjTh5SNOBCWVe+65l2ee\\n+d+Eg32sXxrh8x9UKco1Z1xOp/lg6fwomSlhrrY4qWsVyc4wKckfXxNLIvQMirR0iSiySXlJDKcy\\nuejEjvqmJD8Augcknt+XRjgq4nZ7uPOuPZNstMBSE964cSMbN27A43GTmZFOTk4W88pKWbliOZWV\\nlZYCmyAz2NOEKCks3fDnpGQUXHfsREkme045gZEeQv5BQMDp8pKZUzLj/rGYpTYiihKKMk7kM02T\\nhst70bUopRXr8aaOF+QIgkBWXhm9XfWE/MNEo1F+9rOfEQzHyJ5TwZJ1d1Javo60zDmkZxWSU7iQ\\nwZ4mwoFhBjqvMTLQiqqphINjaLEggz3NtFw9THfTOaLhMVzedCrX3YPblzmtvWacCFh74WW6Gs9a\\n6nXxZNDBgweora2ltLSUkpJi6mqv0d1xDU2NoTg9FC9cB5jouhq3IVYmJInGyX1TyXnhwBDDfc24\\nvemkZZfgH+4iMNxJVl4ZGTnFqKoWT/yJKE73tONN06D+4msYeozyZbfR31VPLBpCEEQiAcsiSXG4\\nSMksis+l2eMi00yo9pn0tF4kMNJD4bwVLFl7B1KckKZrKm11p/F53bz3ve+dZaa8NZqamtj3xps4\\nPZksqNwyaZuma2iqRmbePDBNxoY78Q930t1ygcBoH5HgCIGxXkb6WmirPUp303likQBOt49b1tyO\\n25fOcF8raiyEIpnomoqua1YhTXiMga5rDHTVMthdR09rFW11xxnqbbD2d3goX3k7OYWLxhN+ho6J\\niRQvzotFgwx21+H2puFLzaal9gQpPg/33nvvpITtY489Rm1dfdziTaW/q572hrO01p8hHBzB6U7B\\n6fbZY5RbUI4WizDU38Gli1Vs3bp1ml3WzYSsrCwOHjhIoH8Ib1kBsnd2dZiJiI346d9/FhciD334\\nw8n1WRJ/tHgnxRHvpHtJIombAYIgUFZWxokTJ2hvb2dkZISKigpcLhelpaVs2rSJ2267jaKiIi5f\\nvszY2Bh1dXXTyHROp1XUkiARWQ5DBqFQCEVRcLvdSJLEhz/8YTtemKiIl1AGBEhJSWHRokWMjIzQ\\n1dVFY2Mj1dXV1NXVkZWVRWVlJT/+8Y8ZGhqitbWV3t7eSbadExGNRuns7LTJc42NjSxfvnxSMURG\\nRganT5/G7/fj9Xpta9nZ+msq+vv7CQQCmKZJSkoKH/3oRyetmxI2tTt37rQVCzMzM8nOzrb7WBRF\\nhoeHGRkZoampCbfbzbJly96y8NzpdJKVlUVPTw+qqtpKZ1NJgQmEw2EMw8Dtdk/aJxQK0draSkpK\\nCh/84AcnXdfhcFBZWckbb7xBZ2cnfX19HDx4EEmSuOeee/jkJz/J+vXrmTt3LitXriQ7O5vLly/T\\n2trKoUOH6OrqIhKJMDQ0RG9vL8eOHePZZ5/l2LFjxGIxVq1axac//ekZ2xyJRDh8+DD//M//TH19\\nvW11OzQ0xL59++jr62Pbtm309vbS2dlJdXU1sViMOXPmMG/ePHRdR9M0JEmy18azkfsSaG5uxu/3\\ns2jRIrKysjh58iTBYJCtW7eSkpJCOBxG13WbsDr1HO3t7fzud7/D6/Xy/ve/n4MHD+LxeAgGg/j9\\nfpvgl7h+4m+imt/EtiV+T9go/9Vf/RVbtmyxtzc3N3PhwgVKS0tZtWrVdefL9XDgwAEaGhrYuXMn\\nS5YsmbQtGo0iSRKbNm2ioaGBrq4uLl26xMGDBxkcHKSrq8u2CX7++edtG+5Fixbx0EMPoes6LS0t\\ndr8lSKYOh8NW2Y9GowSDQcbGxhgdHUXXdRRFYe7cuTa5L9F3CXX2xJi2tLTQ19fH0qVLaWlpoaam\\nhoqKCtavX2/fw+DgIF//+tfx+/2Ypkl/fz/Hjx/ntdde48iRI0SjUfLz823iYHZ2Nhs2bKC6upqu\\nri7a29vZuHHj792//9MQRRFVVampqaG7u5uNGzfOqGw5E44dO8bBgwft91tSwS+JP1b8IeKIpIJf\\nEkkk8UeHXbt2UVdXx/ETpwg2vYarcCNKWglKSqFtS6r6Owk27cOUPOApxNSj8U/uln2MIDkmqHDJ\\nccKeBnoUXHmW6p8WBCMaJ/SBnSYy9HGLTlG2/pwZkLMGs+84kZ4LgInHARs2rMc0TUuBSxXwzvuz\\nSVaiUyEIIkJKMYge6DuKOtJCzJtnk7UScGQuJDbcZJHcUsrj6mA3SGJJWMcaKi6Pa1aFq+upqX31\\nq1+ls2eQ2HCD1Ss5a8ctUN8KzgxLFbHnMKahEZtFoUtTNXTdiPv1zkBKG2tAwOqLqVDS5hLpPktX\\ndw+PPfYY12rrCasCrqKtKGklk67lnfduYoPXiA7UoEdGYPgy2sgVAoKIJEmImoqpx8dbcoGneGay\\nm2nCaC0MX8HUAtb8Eiwb4Zb2Htq7em0r1R07dgBw8uRp/P4hTNGy2cI0IdxrEUzVgKUcKMgWkTNl\\nPoJnzvTr2ipyOuiqZZ0sJSyYrUBm2pyfiGA76CFEZwqyrwBDPxknv/kBw3oOgi3gK7uusuAk69pQ\\nF2hBJFcaKYs/MOnjgmmosyrWvR1YMucmDt8MfZJolihD7iYEVz2M1mKqARi6BFyydjINhDj5TnSl\\n4sy+BSWzAnW4IU7QVcjKyqKjsxPDFBEdHkwtgjl8GRNh3OI4cUElBVIrLDVGIf57QikwQSyEcYts\\nPTaj0pxhGDzxxBMcOnQI3QBEB6Y6QeEjPIQ60oLoTMGZvRhH1uJZ1StvVsykdnm9d2cCeniISOcJ\\nvE6Z3bt3vyPsipNIIokkkrhxdHV1cezYMQYGBohGo7jdbgoKCti8eTMZGTe4Vr0J4Ha7+eIXv8h3\\nvvMdujoa+V9Phlhzi85tazQWlpgIAlxqEPGHYO4clZw0FU0XEEXJVnfwukGcQNrzuCEQskh+hbkq\\n+VkarT0KRbmqFQ7FlzuaDjF13B7XoUAiD7R+SYSL9SEOnffyX687cHtSeeCBD9PU1ERgbIDKeREe\\nfr86TbVvGgS4dVGEqAq/eCONFw8obFgWRZrwv/Xb1mgcq3Jw8oqHd68P4HZinXcyH8z+14mr9zfO\\neDENAVEQ8PkyWLdu3axNycvL49577532+7lz5xAFgeG+NhAE5lZsxpua+xY3ZkEUJcpvvZ3h/ha0\\nWJiulkvMW7QBYYZ1SzQas8LOKUmy0cE2IsERXJ5UsudMt98URJHi+bdSW/U6L774IpLionjBGhYs\\n2TYtmZOSlsvanR+mrf4sXS2XCI0NEBjpBRKKCyZqLGpZI8kK3pQcDGO6ekM4OELNmRcJjvYCAorT\\niyclG1lxIAgmwbEBLl66QnV1DTk52bzrXbt5/fW9jEXCmIaOGguj6xq97VcY7K5DjQTQdRVJduDy\\nZpBXsoScgkU2SSwB0zTibVXANK3rCwIOlzfeh1Y8JCvKNHIfwEBXnWU57MsgK68UBBFNjRAY6cbh\\n9KKqYXraLpE1pxynJzVu7TvxPCaYJoahWeRE0yQaCTDQdQ1RkihZOJ6wMk2T4cFOTNPE4/GgadoN\\nJyimIpGQdblTpm2zFBCtf5Yu3kpm3ny6Wy8y2FPPcG8jw72WPbChW212uVMorVhPYdlymzA33NdG\\nLDzIhx98gJ8++yyaIbH2tg/T3VpN3cU30dQIamw8RknJKCB/7nKy5pRbRVNxiJKMrsUskp9pWN88\\n4nGpaRp0NFchSyIbN260k8qBQIDvfe97nL9wAVGUkWQnisODJDswdI1YNEBn8yW6Wi6TnlVI5Zr3\\n4vamIQgCC5ftIDA2gH+4g8OHD/8fkSj/p1FUVMTmTZs4dPQIXb85RMH7t72lVa86GqD714dwqAYr\\nVqy0LbqTSCKJJJL404BhGFy5coULFy7g9/sxDAOv10tFRQVr166dlUB1M6KsrIzPfvazPPnkk5w/\\nf57a2lrWrFnDunXrSE+31LHPnj1LMBikq6vLVgpLqLFJkjTp+7Qoivh8PgKBAJqm0dbWRm5urq3E\\nJYqiHUvFYjFUVR2Prbxemzxyxx130NjYSG1trU0++/znP89TTz3F2NgYHR0dDA8Pv+X9CYJAfX39\\n/8/ee0fXVR1o+89pt+uqN0uWJdmyJVs27r3Jpn8QkpCEkGQImQRngJAhYX2kz2J+kBVIAsxKKE6Z\\nhAzky0zCEAgd28K2bMtFxlWWbKv3Xq9uO+33x9E9lizZ2EBI07uWFyzp3Hv22Xufo73Pfvb72k5h\\nZWVl3HTTTfbvZVlm2bJlvPXWW/T39+P1ei84rjw/ptcwDHp6ejAMA4fDwbJlyy7o8iUIAnPnzmXu\\n3LkTftfW1kZVVRWVlZXouk5RUdElQzRut5v8/HwqKyutzTEdHcycOXFeE4PdBEGY0H/b29tRFIU1\\na9ZM6nyWkZHBFVdcQUVFBaWlpfh8Pr7+9a9Pei0bNmwgOzubN954g8OHD3PkyBEqKioQBAFZlolG\\no4TDYdstMCcnh3A4PGEzyaFDh9i6dSvDw8NIkkRaWhrp6ekoikIkEqG5uZmysjLKysqYO3cuxcXF\\nvPPOO3YUbigUYmBggMrKSlpaWmzo1Ol0kpmZybx588jKypowp4v1RUmSCAQC9Pb2ApZznmEYNog6\\nmXOfaZqUlpYiCALr1q3D6/WiaRotLS14vV7i4uLs69E0DVEUJ/2OycoiSRLp6enjID5d16mtrUXX\\ndZxOJ4ZhvOd3+LH7erIo2lgZfT4f3/rWtzhw4AClpaXU1NSwe/du+7hY/HNxcTFXX301K1euRFEU\\nCgoKOHHiBHFxcaxdu5bXXnuNJUuWcP311/M///M/HDp0yL6HYnU7b948li9fTnZ29rg6cjqdthNl\\nrM/ErlnTNDtmeNOmTfZnampqePjhhxkaGsLlcuF0OklISLBjsvv6+njhhRd46aWX2LBhA5/5zGeQ\\nZRmv18u9997LN7/5TU6ePElLSwvZ2dnvqX7/GlRSUsLbb79NY2MjTzzxBHffffdFY7EBKioq+PWv\\nfw3Axz72sb/5tKspTelyNQX4TWlKfyOKTd52795NV1cX4XAYl8tFWloa69evp7i4+AMBHT6s81xM\\noijy5S9/GUEQKC8/QKhlN+F2N47kOci+aQiiQqTrBKZpYPpywdAQBGvSo2napMCYIDmsNSBj9Pe+\\nPBg8BcM14B51lzN16/ex1SJBtFy5YnFB7kxMyYURHcDjdrNm9Vq+9KUv8d3vfpdQRMOVvf6SABVJ\\nlNCcCZCyBLP7AJGeUziSC8cNCGXfNCRXPHpoADPUClLeuWuKwYjmmBW7sRppBm0EAZPp2dnvKbYm\\nLS0Nseo0anQYZL8VfXo58kzDVHyI6gBoAdTBpnEufMC5SFlxkj9F50Fp50sQRBzJcwh2vsOxY8cx\\nJM8F4UpBEEYhqUK0QBuRrpOoQ42IaExLt6yu6+oaCEWi1uJm9z7o81jRuO4MC9bSw9C1HzPaNwrk\\nxUNcHjhTERUXikOCcNe5KNW237Fy5XI+97nP8MwzzxAMa5iDZy2HOG2SqKbogBX/qvggfjb4Z5+D\\nDEejikXZgRHpAlNHEK1JxUUhSbCc7boPIQDOFGtia6oBqwvJLnDnw3At9B4B2QeOROt7xoJtMTg2\\ndl+ow9B3FMHUcaUvRBRFy8ki0Ea07yzacBumGqSpqYknnnjiPT83wuHwOJhxfKPG/se0yho/G/wF\\nCKEO63rUgNVm0X4EyYk3/yrr2TFap5I7CUlxMXt2AampqXT29CMmL8SZWowWaGOkfjtoIVASQHJj\\nyj7w5Y/2B3F8QUQJDAPT0BFiLzhG2wxDRzTCTMs5dx+qqsrWrVvZtasM3ZTBEWcBg550EBQLvgx2\\nYg6dRY8ME2o9iDbShWf6OiR3Eq6sVYRayti2bRubN2/+mwbcLgRzTxYFZ5oG6mAj4dZy3IrJqlUr\\np6zXpzSlKU3pH0SmaXLkyBG2bdtG1alKMCPWJomYBIU/vvC/LF6ylGuuuYaCgombQy5HmqZx5MgR\\n9uzZMw4kzMzMZOPGjRQVFX0o7rGJiYl897vf5de//jWHDh1kf2WY/SfCOBw6bid09AiIosnq+UEQ\\nRBRFQZIkwuEwimSOg+XAgv18HgiGIKrBuitG6OiNZ9cRL3PzrIgg3RDQ9XPsnCRa/6IW04SmwfJ5\\nIcqOeghFRbbcdjvr1q3j3nvvBSPMJzZr7w73cS7GZ2VxkLcrvHQPKBw/K7JozrnoqZnZJnlZJmeb\\nJH7zWgJ33NRPgs+YsA/HNC34CsECng5Wutl+0MtIWMDtdrF+w4b39LJ3/vz5uFxO62W7J4HU7ImL\\nRBeTKMqkZM6ho/EIkeAgjWcPkTtnPGioaRqGYbkkSGPmRLqm0li9BwGB7LwrxsFUY5UxvYgzx0pR\\n1RGSM3Mmhfticrp8FMzfSP7ctXS1VNPeVElnSzWyBMuWLePo0WOEI1EQRPq7aunrqiUuIZOk9Hwk\\nxUVwsIeWuoMIgmDXR8q0OSgOyxFFFEVEwaS/s4bW+qO0tXcxtGsXt9/+eX7+85+jqhFqTmyjv6se\\nQ9fGlTMG2wUG2mk4tZvM3CuYXrDKvu5goA8BcHl8REJD9Hc3IAoCqdMKMAwdTRudL0kT55XD/e3U\\nntiGIAjkFCwF03IEFAQRtzeRoqUfpfqdPxEY7OTs0dcpWHgdsuJClOQx7hRW/GzsvlCjQWqOvo4a\\nGSFt2mz8iZlEI0HaGk7QWneU4YFODFOnpaWFL3/5yyxZsmTUPX/2pO1jmiZVVVVUVVXZcU8+nw+X\\nyzVuIW18/xIRAMO0QEx/Uhb+pKxR57yzREfhyf7uBoJDPcy54kqy8s/FHamREKGRPpyKOLpYKpCY\\nMh1vXDKzitfTUneEaDhI4ZKP4PLEIzvcKE5rUfX8sbogCJaTu6FjmAaSIBKNjNjHdjRWosiivZjV\\n19fHI488Ql19Iw6nj5Rpc5iWtxhf/DnX/1Cgn46mY3Q1V9Lf08Kht59l0bpPERefhiCIzChYzrF9\\nTZSWlnLdddf9Vbo1tLa20tPTY0d1ZWRkkJqaOuG4L3zhC/T19XGispLWP+wgfuFs4otnIseNX8TW\\nRsIMnapj8MhplKhBQf5M7rzzzik38ylNaUpT+gdRJBJhx44d7Ny5k66urgm/Lysr43e/+x3r1q3j\\nmmuued+bn4aHhykrK5sUJCwpKbHjJv/cWrBgAd/61rf41a9+RXNzMzt37uTtt9/G7XYjiiLt7e2E\\nw2Ha29utNQCn03bNm8zlV5IkG/IbGRlhYGAAn8/HyZMn7Xe3mqbZYzDTNG1AKQZiRaNRioqKKC8v\\nB+Db3/42Q0NDtLa2MjIyQk9PzyVdW2z80tDQQFJSEocPH+baa68dV+4VK1awe/duhoaG6OvrIzU1\\nddK5zfljxqamJqLRKLqu4/V63/M71NWrV7N9+3ai0SipqanvCt2cL6/Xi9PptONQ09PT8fl8446J\\nuaYpijJuXBMIBOjs7MTpdI6Dos7Xpk2bqKioIBqNcvvtt08K98U0c+ZM7r77bvr7+9m9ezdlZWU0\\nNDTg9XqZOXMmZ86csd34XnrpJV555RWWLFlCXl4eDoeD/fv3U1FRgdvtpqCggNWrVzN//nxkWbZd\\nIgcHBykvL2ffvn2cOnWKadOmcd111/Hyyy/T09PDq6++SkdHx4SyaZpGbW0ttbW1JCYmsnz5chuI\\nNAyDwcFBBEEgPj6eo0ePEgwGmTNnDn6/345ijr0TOF/bt2/nyJEjKIrCpk2bCIfDjIyM4HK57LnK\\nI488wsDAAGCtX5zvJDg2ojd2rYqi4HK5uPHGG5EkiebmZnbs2MG+ffvo6enBNE3eeustDh06xLp1\\n6ygpKZl0PAzWM+7QoUO0trYSDAZxOp0kJSXZccaTzYti5dM0DbfbzZo1a1izZg0NDQ2cPHmSQCAA\\nwKuvvorD4eAb3/jGuP5XU1ODIAikp6czMjKCKIosWLCAgoICbrnlFs6cOUN8fDw333yz7VQ4GUAJ\\n2PDt2Jjj4eFhwLof+/r6SEtLs58zR44c4cknnyQYDJKdnU1JSQklJSV2lLZhGJw6dYodO3Zw9OhR\\nSktLaW9v595778XpdJKYmMiaNWsoLS2ltLSU2267bdJ6/UtK0zTbedIwDDweD7m5uRNgXa/Xy333\\n3cf3v/99Tpw4wb//+79z3XXXsWLFignP8cbGRrZv305ZWRkA11577UWfD1Oa0t+rpgC/KU3pr1yG\\nYbB9+3a2bdtGe0cnEVVH188tYkhnam3XsCuvvJIrr7zyPQEfH9Z5LlWKonDnnXcye/Zstm3bRlt7\\nB5HeY4S6joJpoqthEGQEVyqSLI1O3tQLA2OMQn6mYQFLnkwL8FOHLBBowsEAJqYWGfczwZeHMHCS\\nvLxc7rzzTk6ePEl7RyeG5EGJnzx26XzF7J5NVwaC5MGIDKMF2mx3QrAGp46UIkLN+87BV+50OM9J\\nIDauje3gt4Cug2BYO0Wuvvrq99RO69ev5+23d1qre/6CyZ3hLiLTNBDi8hEHTyCiE57EoUs3RlcP\\nz//u86C0C72wlnzTCLdVgKHjyVn9rnClIAi2C2R0oJ5oSxkej4cHH3yQrVu3snfffoJhFVFyYOpB\\nzP7j0H8cDCuu2RQEkDyQvAjcmXa5dUEgpIPkysWRNwsx3MlI6z72lR9AEARWrVpF6c5dMHQGU5As\\n98i4WaNAl8MCukKdMHTWcqDreQch3D0aEyxByJrwyS4/aqAB09TQRzqIDjQQlVMm7/OmYUGS3YcQ\\nTBUlIRdHciHR3iorjlb2QMZGcCSPHtsIXWWQNP7aJnxnqAP6jtjwpZI0h0jPKSI9VRiR4VGIVgdB\\nYWA4xK495Rd9blwMKFZV63623BXPa3tRQhNGY7djZRUE676OuSCGe6HtLSRP8rh7C0ALtCFJAmlp\\naXR2dtpOgXYfiZ9BdKDBcutLnItgjp1EnucRI0jAaGxxTKEOy+UjOoTX67Gd5gzD4Gc/+xl79paj\\niy7MpMUI/vyJ9e1MhoRCGGnB7D6IOtBAEPDkbBjnXllZWTmpA+dfUpcDiV8KzG0aqgWP9p5G1EN4\\nnTKrVq1ky5Ytf9Nw45SmNKUpTenSpOs6v/3tbynd8RYYIRxylJXzNebMMHA6IBQROHZG5J3qIBUH\\ndlJRcZBbb/0s11xzzWWfS9M0Xn31VUpLSxkc6AEjDOj2fKi5oYqDB/aRkZnNNddcw8aNG//sYIXH\\n4+Huu++mu/tT7Ny5k927dzM8NEQ0aKDqATyySkGOgN/vRxIlhoaHAJMLGXeIArhd1l6IGZkqkmjS\\nPyzZbn2YYHLuRb5hQigy9kW6QG6mzoxMnaauOJKSkjhw4ADBwAB5WRp5WZPDSOdLEiVkWUHTpOws\\n+QAAIABJREFUoqxdGOSPO/2UHpLGAX6CAHd8PMr/93OFY2ddbH0hiduuHyAzRUMUoKVLZt8JD32D\\nEhFVwOUwCYRETtY6GQlbwGNu3mxuvPHG91Dz1pwtIyODnt5+kjMLkOXLc0PRdZX0nHl0t51CUyPU\\nVu5Clh1kz1xkH2MYBiaMA/g0NUL14ZcJDHbi8SWMO/58iZKCOy6ZcHCQ1GkFl9QfJUkmc0YxmTOK\\neafsfxjpb2HBggWsWbOGrVt/RigcxetPJhQcYri/jaG+VnRDx9AiSLKThLRcZi24GsXhJrYhyDQN\\nDMPAAPyps0jNnkt95U46myv5/e//wPz586k4fJie1mpESSYhJYf0nAX4k7ORZSeaFmGgu8GOvG2p\\nOUhgoJPCJTcCAt2t1SAIZE4vornuGIauYWDS0VxFWlahVYeSPM69z9A1ulqrqD+1E9PQyMyZR3b+\\nInraa9E1FafbT8q0ObTWHcLhikMY6ma4v43qiheZlr+UhNTcce1iAoam0t9VR1tdBaGRftyeeOYu\\n+z+cObaDlrqjmIaBiYni9CIrTgQBhkdC7NlTzv79B8jJmc4Xv/hF8vLyAGtDU1lZGTt27KCtrR1N\\nN87N7wUQMAmFghhmK7qmIsnnFnMVRUYQrPmFYeh2WR1OL5m5C+3jTuz7byKyjMPtHdcP2hpPIGAw\\nf/5CaxHQBGlMH09MzaGr9QzB4V6SM2ZZdTo63znfIQas9xFjQxG6W04B0N/djChoLFq4mOnTpxMM\\nBnnsscdobm7D5U2hYOG1+EahvbFy+xLJm7uR6QWrqD78MoO9TRzd8zzLSv4JlyeOpPQZOD3xdPf0\\ncPLkSa644grOVzgcprW1lVAohCRJxMfHk5mZ+Wd9bkejUQ4cOMCOHTuoq6/HMA179igKIvOLi9m0\\naRMLFy60F18VReHrX/86v/jFL9h/8ACBitMMVFThzslA8XtBAG04SLCxA9kElyizYMEV3H333ZM6\\n2UxpSlOa0pT+/tTf38/jjz9OU1MTAElJSaxfv57MzEw7QnXv3r00NjbyxhtvsHfvXr72ta+Rn59/\\n2efq7e3lhRdeYP/+/YRCodENKdYYQBAEqquree2115g/fz4f+9jHmDVr1gd6rZMpPz+fBx98kLNn\\nz7Jjxw4qKiqIRCLouo5pmnZMp9vtxjRN24XtQpt8YrG4oVCIQCBgw1MxMDAGMsVczFRVtd3RYpo/\\nfz6HDx9GURQyMzP54x//SDAYtF3VLkUOh4NwOMzQ0BBDQ0P4fD6OHj06zn08KSmJm266iT/84Q90\\ndHSg6zppaWk2dBj7bKzsgiAQDoftyFuv18vVV1/9njfBFRWdS526EJh1Iem6jmEYpKam0t7ejmma\\nVFZWMm/evHGQVax/jXUnDAQCVFZWoigK69atY/r06Rc8T15ent1Wq1atuqSyJSYmctNNN7F582bu\\nvfdeVFVly5Yt/PGPf+TAAWtNZ9q0abS0tFBeXk55eTnhcJhIJEJcXBzXX389V155pQ32maaJpmno\\nuo7P57PfFzz11FO0tbXZcFhXVxculwtZlsnLy6OgoICEhAQkSSIYDFJbW8uZM2fo7+/nzTffZOXK\\nlSxevJjm5mYCgQBpaWnk5eXx+9//nmg0Snt7O6dPn2baNMsg4/w+Pzg4yFtvvcXevXsRBIEtW7aQ\\nkZHBf/7nf+JyuZg1axaJiYmUlpaSnZ1NMBi0wb6xoOv5ioGEomht4rniiiv4wQ9+wOnTp+02TUtL\\nw+VyEYlEGB4e5rXXXuO1115j2bJlfOELX7DHsV1dXTawNTIyMi6qGLAjnk+dOjUB5Iqts8Y21MQ+\\nk5ubS25uLmBBdm+88QbCJIlTO3bsACyQtbq6GsA+Zvr06Xg8Hvr7+1EUxe7/55dvrMZGGg8PD1Nf\\nX49pmuzatQuA66+/HlEUqa2t5cknnyQajbJu3TpuueUWEhMTx32nKIoUFxdTXFxMfX09//Ef/0FV\\nVRVbt27lnnvuseu+tLSUvXv38ulPf3pSB9f+/n56enrsNZqUlJQ/e/pFX18fu3btYufOnQwODo77\\nncPhYNWqVWzevNmORQeYNm0a3/ve93jsscdob2/nV7/6Fb/73e9YuHAhcXFxqKpKU1MTtbW19mdu\\nvvnmv2k39ylN6f1oCvCb0pT+iqWqKj/72c+s+NeIhiF5cCTPsUAUScHUVbRA+znXsP96jrNnz7Jl\\ny5bLcin4sM5zuYpFOG7evJnKykobGAmFQjQ3NxOMGLh98Th8cRbbFo1MDoxN+uWjgx1DG3O8AKaO\\nrMi4Xe7RXVm6bQghihJS0gzUwGkcDgeiKLJ7924iqo4jec6krlOTSVZkJElE0wyIm4k5cIJo39lx\\nEJJpguaaAd5mGGmCzjILLPPOsICiUCcEau2YV1OwYoSEaD/oEWRFYv36de95d1ZxcTGKIqPqOrgu\\nb/KGYS2Eit4MGK7GH+ciEtUmOnTZ84PYguLkUNoFT2MImKMObpcKV8Y0FpKqqqqyIaN9+/YzEgpj\\nGjq2g52hjZ7HDWnrwJ0CiCAIoymtBqahoWk6uq7jcKThybuWYP0b7Nu3n+TkREwTTMmJkLoS05Nl\\nfR7OufQ5kyHeArroOYgZaLZqJXWVHVUsOuKQzWa88X503STcshsVJ3hzwZcFotNyjgt1WBHNehAB\\nUBJy8UxfB0CkpwqQLAfLgVOWm6ChWiChFoaegxb858u32l1UrHsk0g1DtVacr6khIODKWk2oeTfq\\nQIPVlJLH6s+OJCTFicfjuOBzQ5KkdwWKDS2KoamEO47gzbty3ATHhmQN7YJAbwyMFB3jI61M0xgX\\nm/vss89OcAp0JBVY1zV01gLtYvf2qJmn5Rx4gYUh04ChsxZk63KxatUK+z7cvn07+/cfJKyJmOnr\\nEFwpF35eCSL4ckCJw2zbMS7O25E8h0jvMXbv3j0B8PtLubC+V0j83WBuBAFJEvAqEtNysu2/CVNw\\n35SmNKUp/f3LNE2eeeYZynaXIgvD3HxVlA1LdDznmQasW6TTP6TyZrnKG/tUfvf/nsU0Ta699tpL\\nPlcwGOQnP/kJ1aeOgxkkM0Vl0zLdBgmDYTh+RuTtijAdrSP85pkW6urquP322z8U56jU1FQ++clP\\n8olPfIJQKEQoFOKhhx6ir7sOf5wbSbQG1vbiyEWKZIzSJi6nCQIYuoDHZY18dQPCUeuFvcfjsV0q\\nYi+wJVFCcSjkZ4m09lgLBrW1tWBGWbVgYqTrxeR0OtA0lUWzQ7yw08/ZpvF/201M/O4Ad94MTz+f\\nyPEaF995Oo3paSpRTaCjV0EQrIvRDavsmiYQVS03uazs6dx3333vC4BJSUlBEAQ8ccnouoY0iUPc\\nZNK0CKZh4PWnIUkKkizicMicObaN3s56smcuJiktx5pjACCgqRG6Wk7R3nCEcHAAp8vLwjWfHAXp\\nJpeqqoiSgiBKk8a4vpuyZy7m5IEm3n77bR5++GGi0Si//OUvGeprQ9O1UWhMwNCtBUOHy0v+3E24\\n3PGjUzhr8SfmJKdrKoauEYlEyJtXgq5r9LSdJlBVhSBIuH2JFC79KD5/KkbMJR8Bh9NLWvY80rLn\\nMdjbwpl3XmGgp5HTR14jMS0PXYuQkJyFGg3S0XgMRRaRZZnaE6XUVpaRlDGLhJRcnC4fuhZlsLeZ\\nzuZKNDVkLc7NKKZw8TUIgkDjmQPougZqiOaz++05hiBYbRAY6KTm+Fs4XT6SM+fgcPmshdLQED2t\\nVaiRILquIooiSzd+lspDr9DX1YhpQmJaHqlZhcQlZuF0OvF6vYSDQ7TWH6O1/hi1dQ384Ac/4F//\\n9V9JT0/n0UcfpbmlFU0zkB0epuXPw+Xxg2kSDPTT0XwKQVQJjQxyYMczLN34WRzOWH+2IszCkfBo\\neSbe9MHhXob625BlhYTkc478hqHTUncUWRbZvHmztQglWFCq3TfyF9LddpbOpuNkzVw2umgqjsYl\\nj9loGHM5tFMQYHiwi+H+djQ1jCKLzMjNYcuWLQC8/vrrNDQ0objjmb34BmTFc9H3KLLiZO6yj1J5\\n8H8Z7mul5uQuipffgCCIpGTk09l0lPb29nGAX0tLi+0cEgyF7LKJgkB2VjabNm1i9erVHzgcV11d\\nzRNPPkn/4ACqoWMoEs70JERFxoiqjLT3UnHsCMdOnCArM5N7772XzExrc5rD4eCuu+5i8+bNlJaW\\nWuBCSw9hs9sqOwJxkoNFixaxefNm5s6dOzUfmtKUpjSlfxAFAgEefvhhOjs7SUtL49Zbb2XBggUT\\n5iBXXXUVdXV1PP/881RVVfHII4/wne98ZxxA8W5qaGjgscceo7u7m2g0is/ns2EysMaeg4ODDA4O\\nUlFRQVVVFXfcccclQ1XvR4IgMHv2bGbPno2u6wSDQRobG/nBD37A0NCQXcax0aEXg/pjx411JPN4\\nLGfqSCSCpml4PB4kSRoX1RuLc01ISLDnS8FgkLNnzxKJRC4pmnfsNSmKQjQapbOzk5SUFOrr68cB\\nfrquU1hYyDXXXMMbb7xBV1cXvb294+JAYyBW7F8MvIqBNLfeeuvlVfZ5ZYydS5ZlO/r43WSaph2t\\n6vf76enpIS4ujnA4zPHjx8nIyCAzM9OGMmPnCoVCtLe309HRgaIoLFiwgC984QuXVE5FUS57fOTz\\n+Vi5ciV79uxh9+7d3HHHHei6zr59+6iursY0TWRZxjAMNE1DkiTmzZvHtddeOw4WGwujxfqPw+Hg\\nnnvu4Uc/+hE1NTVEIhEURSEnJ4e1a9fakGbs836/n0WLFrFgwQKqqqqoqKhg//79OBwOGhsbEUWR\\n1atX89prr9HT04OiKITDYZ5++mmSkpJYsmQJubm5uFwuhoeHOXr0KMePH8cwDBRF4Ytf/CIrVqxg\\nZGSE3bt3E41Gqauro66uzr6OWEKaLMv2dccUgyhjPxNFkVmzZnHdddfx0EMPMTg4iMvlYtWqVaxY\\nsYL09HQ8Hg8Oh4Oamhp27NjBoUOHOHToEG1tbdx///3U1dXx1FNPEQ6HMQyD9PR0Zs6cicvlQlVV\\n2tvbqampQdd1SktLSU5O5pZbbrHbWZZlO5JbVdVJAbeY09v8+fPH9d2mpibOnDmD0+lk9erV1NfX\\nA9iOgS6XizVr1rBt2zYOHTpkg2QxiG9sv41pLBBZUVGBpml2vykpKWHDhg2Ypsmvf/1rNE1j7dq1\\nfOITn7igK2BMeXl53H///Tz00EN2tHQsJjgpKYm+vj76+/ttZ1Vd1zl+/DilpaWcOHFiwvddccUV\\nbNq0ieLi4g/0fZZpmrz88su8+OKLdj9JS0uzYfSBgQHq6+vZtWsXu3btYvny5XzpS1+y2y0jI4Pv\\nf//7dtRyXV2d7ZQak9vtZu3atZSUlNhg65Sm9I+ovyjgF41GqampYWBggOHhYUKh0Pv+zo9+9KMf\\nQMmmNKW/vGJOT/vKDxBSBVzZ6yeNLpQ9KThT56EONjHSuo+9+/YDcOedd17SgPbDOs/7kSiKzJ8/\\nfxzI8m//9m+crKpBEo1xaZ2WLmFHtqkBAoLktKJKAUwTUwuDae2IV5SJj0g9rKKapv286urqst2/\\nLlUClkW8rocwnUkIpokRHT5XNKxFRlVVMVOWWi/Shxugaz+Ih0cP0scARqMQDRZoJgowu2AOd9xx\\nx3tuG1EU8fv9BCP9mJgIY53SLibTwDSsqFuH04MGJCcnk5eXN8GhyxTiwRBBD0Coa1Io7WID22gk\\nCCaIDu8lw5UxxSJ+Y5DUvHnzmDVrFseOHSMYDGK1koCJMAqDGta/vkPgn4Pgn21ZoMC5KGdDxzSs\\nHUM4XLiyVhFsLCXY3AqSG9LWgzsVQZAmd4MbA3TRvsOC/ATRcstT3ER7T+Nzynzuc59DEAS2bdvG\\n2bO16APHLTfKMXUlAKIzDmfKXDv+OTrUgh7qPwegjWu30XLoUQv4GzjJhPvIiIJpIAgSojsJdaAe\\nbbARU1AgdbkVy2yoo/FZHmSnY9LnRmxwf+DAoYsCxWpPNaY+hDpQR7BpJ57p6xFGF67GQbKGPjGe\\n2DRsMNKRNH6HojrYiKiH7Nhcl8sFgjDOKVD2TUN0xqFHhi3o0pdjTd4sW5sxdRZrw1gdaZjDDQhq\\nAEmE9evW2E5zhmGwbds2QhENIWWpFfN8Kf3WmQipyzC79tlx3rJvGqGuo+MiOf6SLqzvFxK/GMzt\\ndrttOHHevHlTC1lTmtKUpvQPpB07dlC2+20UcYj7PhehMPfC7nCJfvj0NRpZaSb/+SL893//P3Jy\\nci4azxOTqqqjcN9R/J4AWz6uMi9/YhRs3jSdG9bp7D+h8swrGmW7dyCKIrfffvuHFpEYW3jyeDz4\\nfD76ewRGJrxGMS8+GxqtxmDIivj0ug2co/sc1NHkY9M0EQURl3PyCCZFseAsVVVHx84mCb5Lc+87\\n9x3Wrn+vRwNMQmErHjj2fjkYDKJpGnmZBg9s6eHZ1/2UH/dQWS/hchh43SbL5gbJz4qiyCahiEhl\\nnZMTNW4iKvT391FRUcFVV111WeU6v4yyLCOKEpoaBpxI0oU3uJmArkXQNSvSyOfzIUoyTkXm85//\\nPM8991sGe+rp7ajF6YnH60/FMEFXIwz1t2GMjkfd3gSKlt6Iw+Vjgnv0GOm6jq5GEAQRSZkYQfZu\\nSsnIxzQF2/nhtddewzBNREnGIbtwuLwIooQWDaNGg2hqhON7nyMlay4zizeNqwtRkBAVCV3U0NQw\\nkUiYvLnraWs4jmkYePwpFC65yQLYGOtuYI4OV61rjE/OpnjVLZzY99/0ddbS31WPIAjEJWZwbN8L\\nOGSB/3PTx8jPz+fNN9/k1Kkq2uuP0Nl4AmHMOFEQBPyJ6eTMWkpGzjwEQaC96RRdrWdG43dFfAmZ\\nVsyw0wumwchQN+317xANBwiqEcKhQ0iiYle/YejoWhTTNMktWkNN5W76uhqRHR4Kl34EtycRw9AQ\\nRdFe8HN5/Myct468wlVUvfMmXS2nePzxx3E4HAwMDuNwJzJ70VpSp82aAOnNmr+BlvoT1FftY3ig\\ni8O7fsfSjZ9FcVj3ZSzuzNA1dFGd0Dc7mo4BkJEzz/6MaRpUv/Mm0dAg2VkZLFiwgLa2NkRBYLC3\\nFV23vicpbQZub4IFGjYeZVre4lGm8xzkZ32f1T/N0Tmerqo0nNqJrkeRFYnCOQV87Wtfw+v1omka\\nO3fuRNV0ilZchay4LunVjSjJFFxxLYff/hWdLdXMXlCCw2W5JJom9ruZSCTCL37xCw4eOkTU0FB1\\nHSUlHsntxNQNIgPDnG2sp/G/fsMf/vAHPv/5z7N69ep3L8Al6MiRI/z0pz9lOBJCTo0n6YoCfLNz\\nEMc40ejhKMNV9QweO0tDazMPPvgg3/zmN23wQhAECgsLKSwsZGBggFOnThEIBDBNE6/XS1FREcnJ\\nyR9Ieac0pSlNaUp/O3r66afp7OwkOzub+++/H7/fP+lxgiAwc+ZM7rvvPn7+859z8OBBHn30UR5+\\n+OEJrlWTqb29nR/+8Ic2PDZjxowJsEzMhSw9PZ3u7m4GBgb42c9+htPpZPHixR/I9V6KJEkiLi6O\\njIwMRFEc5/x2IcexCykWC+v1eu3rjUE5MVjuQgCMLMu2e1jMeSzmpHepcjqdRKNR2y1x7Bq5YRj2\\nWGDNmjVkZ2fzwgsv2A7FMdCxo6ODUChkxwmnp6cTFxeHaZqcOXOGpqYm20H6vWhsPwgEAni93nF1\\nfr4Mw2BkZATDMBBF0YYv8/PzSU1NpaysjO7ubtra2oiLi0OSpFFXaut6ZVnG4XCwYsWKS4odjdW9\\nz+d7T/PyJUuWsGfPHjte9uTJkwiCgMvlwuPx2HU5NDREOBymurqa73znO3z84x9n3bp1475LURQU\\nRSEYDBKNRpEkiRtvvJEnnnjCdu1bsWKFXX+TwWKSJFFcXIzT6WTPnj28/fbbiKKIy+Wip6eH/fv3\\noygK9913H42NjezcuZO2tjZeeeWVcZCjIFgb35YvX871119Pfn4+pmny5JNPMjg4iMPhQBAE8vLy\\nyMnJQVEUO1L1zJkzRKNRRFG074FY2XRdt6G1W265hccee4zBwUEKCwu56667ME3Thgpj5ygoKKCg\\noICbb76ZRx99lNbWVh544AH6+/tRVZVZs2axfPnySaO/A4EAhw4d4siRI7z88stEo1Fuu+0222nQ\\n6XQSDAYJBoMT7tcYGAiMc/8bGhriiSeeAGDt2rW43W7boa+qqooNGzYAUFJSwvbt2zl27BjLli2z\\nyzfWqS/231g0ryAItLW12S6oHo+Hq6++mk9/+tMIgsCZM2doaWkhLi6OW2+9FU3TLqnfZmVlcfPN\\nN/Pcc89RWlrK8uXLASv1oa+vj3DYSqlraWnhpz/9KZ2dnYD1nJoxY4btWtrY2MixY8c4duwYGRkZ\\nfPWrX/1AQDnTNHnuuedsV8Tly5ezadMm5syZM+762traKC0tpaysjIMHD9LX18f//b//135OKIrC\\n2rVrWbt2LY2NjTQ0NBAMBlEUhfj4eBYsWDBp/PqUpvSPpg8d8Ovo6OD5559n+/btNnn9QWoK8JvS\\n34tiTk8hVcCbf+1F40cFQcSRkIvk9DNS9wbl5QeYPXv2JS1mfFjn+aCVlpaGdKYWLdCO7EkZLWDs\\ntxdeBLEVsgY4KL4xP4wNpC/8MdNQYYydczgcnuD+dSlyOJ1omk5UlTExMKIBK9ZWEIlGIpY7GSDI\\nHkhbg4AIQ6cxdc1yVZO9EJcHzlQQ5VGXtS4YbgAjRHNLG7/85S/fl8tieno6nT2DFrSkRxBEx0SQ\\naqxGATcBa+InCxra6AR5MocuM6pZ4OAoTAdY7RE/CzNhNppuIosXbkl9pAMwkVwXj+a9kGKQVEdH\\nB0899ZQNJ+FMxJEwC01ORDeE0brtgUADqCPQ+47laBeL0I1JlBAEJ6ZutZ/oyrBiiAUJOX05miPe\\nqh/JaXWyC7nBORMhZRl07YXBMyBIGGoQr9vBqlUrbDBr8+bN3HfffdTVNyK6/FjAqoLoiMORVGBF\\nnMYcFQydUNNuTFOzgEXZC3EzwZ1h9SdTtSDLwTOgBaxrFh2geK0YYcUHiDBcA5jI7kTUGNw3bTMo\\n/nFt73Cem/iPfW4Eal9n585diJKMhuOiQLEjdR7D7dXoPYeJ9tcDAp6cDbZLiA3JGlEEwTkelhtp\\ntmOEZd+5CYoe6iPcWo7XKduxuZM9SwRBwJlSRKj1IGb3QQu6dJ6zSR8P+hn2f81wN0LfO0iCwcaN\\nG7nrrrvsSfXYOG88WaBfwnMqJu90GBPnLSo+GAMa/yVdWD9ISHwymHtKU5rSlKb0jyld13n99dfB\\nCPDFj0UvCveN1bpFOp29UV7ZM8Lrr79+SYDfSy+9RPWp48R7Anzni1HSki58LkmCNQsN0pIiPPIb\\n2LVzB3PmzPnAIJHLUXZ2Ns0N1RyplsjPGo1kGt2gYjnuTf652M+PnXUBAllp5xahznflupACIwIg\\n2q4WMOoMeBkSsOYJgwPDmIbASFjgbLPAnBkmhqkTjUYRMPB5IM6jYxgCsmzicxt8ZP0QK+aFcCnn\\nXMMEATYsCtEzMMT2Qz52viPw2+f+C+A9z1fdbjeSJCNgAZ+aasF7oqyM/nx0bGga6LpmOaCNuh16\\nvR4ETAxdQ3I5KSkpYfHixezevZudO3fS3dNLf2e//SJekp34k7JIzZpLQuoMRFFiZGQEQbAWxZxO\\n54R2iYRHCAx2WeCn7/JjdkRRQlYcqGqIRx55hGAoiuLyU1C4kIzpc1F1UFXLzTw41EV3azV9HTV0\\nt1QSGemnaPnHJ0QXWy6HTjQ1gqpam9JESWHOoutwuLzomgUxyrJzHCwWA8UErHjW/OJNVB/+E1o0\\nhOJ001p7GKdTYeOGDXzqU5+yF6tKS0t5+umnMYCE5GlIsgO3N4FpM+bjTzoXxzrY28rJAy8hyQ4S\\n0/KZUbQOr3+sU71AalYROXPW0NdRQ+2J7UTDwwiSROq0IhwuL3EJmZw99gbhkQFcLh8tdUcQJQeF\\nSz+C0+234T6fzzthU4ooycxdej2GYdBSdxhJUkhMncHCNZ+w4bvzJUkK0/MX4o5L5/ThVxge7Obk\\nwT+xaO2nRttPxONxWzCsGrEWoWUHAjDc305nk7U4mZ1vxTyr0TDVR7fR01pNnM9tz1Wys7PJy8vl\\n9JlaulpOkzmjGEEQmTVvHScOvkz9qV3IipO07Hk25HeuzcDQVczRvt5YVcpAdwOyJHDrrbdyww03\\n2IvCFRUVDAwM4vGnkpCcTSAwPG6v1MXk8sSTlJZHf1c9bY0nyJ2zchSkxV7U++EPf8iZ2hqioknc\\nvDzSF8zCmRxvf4epGwRqWxg8XkNvWw9bf7aVoaGhy3J7nUwNDQ08+dRTDEVCxM2fScqGReNg05gk\\nl4OERXPwF8+k4/V99DR28uijj/LAAw9MiMlKSEj4i/xdmdKUpjSlKf11qaGhgcrKStxuN/fdd98F\\n4b6xkmWZO+64g87OThobGykvL58Qa3m+TNPkiSeeoLe3F5fLRU5OzkXnA7Isk5mZiSRJ9Pb28vTT\\nT/OjH/2IhISEy77G96OEhATi4uLo6+vD7XYTCoXOvbt9F9AvdlxiYiKKopCWlmb/bjJnrvNlGIb9\\nXtbj8YyDqi4HMpQkyXYO1HWdlpYWBgYGSEhIsN3UZVnG4/GQmZlJNBpF13WGhoaora2lr69v3DXF\\nIpsVRSE3NxdRFHn44Yf57ne/e9GY24vJ4/EwMDAAWHUzFsKLAZKmaaLrOpFIxI4ztsbFPnp6euzN\\nT3fccQdXXXUVpaWllJeXEwqFCIfDtmuc3+9n6dKlrFmzhpycHHRdZ3h4GFmWcTqd9vnG6sSJE+i6\\nbjsjX658Ph+maXL27Fnb7ayoqIgNGzYwb948wuGwDW9WV1dTXl5OfX09v/3tb+nv7+cjH/nIpHVm\\nmtaGuBgcFxcXx9q1a9E0jXA4jNPptEG/sZAfYENxbW1tnD59Gk3TcLlcNty3ZcsWFi5PgPREAAAg\\nAElEQVRcyMKFC7nhhht4/PHHOXDgAAkJCWRkZODxeMjLy2Pjxo3jxpkvvfQShw4dsqHchQsXTnAi\\nnDNnDhs3buT48eMcPHgQwzCYPn06xcXFxMXF4fP5ePbZZ3G73Rw+fJj+/n5mzZrFv/zLv9ju/7Is\\n4/V6J7RVamoq3/72t/ne975HfX09breblStXsnr16gvebz6fjzVr1pCWlsZbb73F9u3byc7OthOT\\nHA6HHaM9PDxsA6iCIPDqq6/S09NDSkqKvd7Q0tLCT37yE7q6usjJyeHmm2+2IdoXX3yRQ4cO8ZnP\\nfAa/3092djarV69m7969PPfcc/zTP/2T/aw4/16PRKz52ODgIC+88AKDg4MkJSVxzz33sHDhQvu4\\nGAC3ceNGG6q8VK1evZrf//73VFdX09raSlZWlu046HQ6qa2t5cc//jGhUIiUlBQ2bdrE+vXrx0Vi\\nDw0NsWfPHkpLS+no6ODBBx/k/vvvf18QMFhO7Tt27ECWZe66664LQt/Tpk3jc5/7HCUlJTz66KPU\\n1NSwdetWvvrVr07oAzNmzGDGjBnvq1xTmtLfq6QHHnjggQ/jRNFolB//+Mfcd999HDx4kJ6ennH2\\nrh+EBEHgK1/5ygf2fb29vUSjURwOBykpKR/Y905pSu+mGDDR3TuIM3stStylDU5FxY3g8BHpb6C/\\nr4fNmze/60TkwzjPn0Mul4sD+/cTDgzgSLEcyjRNRzd0Cyy5kDOWaVjwUm8FGBpC8mIL3gHLFQ8D\\nRVZwOCaHXqL9NQjhTubNLWT58uWUlZXR1dOPnDATUbn0iBcBazeCFhnCHKoFLYQ62IBp6kSiKoam\\nIhhRCDRCVzmE2jAF0QKuUpZB0hXgSgHZDZLTilV1p4EvF9GZgDbSQXtbC91dnSxduvQ9tc+pU6do\\naWkDxYfpSLJia039PCTJBFPH1KNg6JZzn8OBx+NBHThXVytWrGDmzJls3ryZ2bMLwNQZHuxnJDBk\\nfYt3OiTMh4T5mI5EdMNAjUbtCaEky+POa5oG4Za9oAdxZSxG9lz+TnZTV4n2VBEcGaapuZWgKuDM\\nXos7eyVKXCZRXcQQFKuO3RlWhK4jwYp+jfQjaEMWeDW2bgUBARHT0DGDHZgjTZiyDzltqWVrruuY\\nZqyPTtImo6nAyB4I1IMeRsTA5/WwZvVKtmzZMm6HV01NDS1tHcjJ8/DO2IgzeY4N0419oRFs3o02\\n0m59b+oqSFkOrrTR/uOy4nXdaRA/GxyJEO627hV3BmRsAG+2BQKONCBKMqauWo53qcsxHYkT2n6y\\nSxMVN3p4ADXQhS448c26HiUu84J9UxAEBIcfTU7CDLZghvsQZReyJ9XuE4ZhnKtTRu/7SD907kHA\\nwJWxCNmbimkaqIMNBBvfxiFqJCbG093dzRtvvEFPTw8DA/2o4WEcKUV2eSR3CkZkECPcZ92His96\\nVgixKDJhNMvOcjYUI+0IPQdxKyYbN67nK1/5yriFvT/84Q/UNjQhJxdjOBIxDNNyJLyUe1Ow4sMJ\\nd4JpIHlS0AZqyJqWzoYNG9i6dSv7yg+M78O+DETFgyi7EBUPsjfdelY6EwgNNL/v50NM27Zt49VX\\nXyc4Com/W5tKrgTkuCyCvbV0trfi98cxc+bM93z+KU3pr1V/T/OIv6drmdLfjo4dO8bbpW+RGh/i\\n9hu1S/pzGVNOhsFb+wU6OgdZtXr1uJeZ5ysajbL16adRw7187bMRZmRe2mJMcjz4PCbHzkDfwAgb\\nN2689AJ+QPL7/ZTt2Ut7d5SrV+qIIqiaFR8liRNjeq19Jdb1DQdF/uv1BKKawBduGCAhznJFD0dB\\nN6zoT0WefD4UjsBvXnWgmR4+/vGbaWtro77uDFmpKkV5l/eORxREugcd7DioEFElKk4pHK4SCIU1\\n+odMegZlqhucPPa7JM40OUmIM/jqp3pZNjeCJGKDfbH+YRjgcZnMmRElyW9yokbgROVpCguL3tPz\\nq7+/n2PHjqFrOtn5V2AYOqZpjT91TUXXotY/XcUcHQ/HFjMURaGzxQLi8vNzKSkpweVyMWfOHK68\\n8koURaa6uopI2HLgy5m9mlkLrsYXn4YsOxBFCdMwMU0DTdfQNHXCglZzTQV9XXXExaeSV/TeYKCa\\nk7uIhIMYpkhm7hUsWvtJElNzkGQH4XDEdnN0xyWTmlVEUvpM+rvqCQZ6CQ51kZw5Z8LYTxQlDF2l\\np62agZ4mfAkZZM9cgtvjRlM1DEPH0K37OhYDHJNpGGhaFIfDQ2/7GdRoEIdDISU5kZs//nEb7otp\\n+vTplJeXEwxGmLv0evLnriE1cxYuT5xdLjUS4tDO36JpUVKziph1xTW4vQmTbrURBAGvP5m07CIG\\neprQokEcLh85s1ejuDz0ddQQCQ2NxvIa5MxeTXxytt32Pp/3glHO1iKQQUfjKdzeRBav/zRO1+Tv\\nEKwFwSiRSBRRlPGnTKe37TSBwS5SMmfakcySJI++C7HqVddVhgc6qD78J3Q9SuaMYvyJGdSd2kvV\\n4dcIDnUhSwLx8fHs3LmTF154gTfeeANVVRkZCRAMDpOVu8BahI1PRRBF+rub6O2oIRwcxOHy4XT5\\nEEbjmRGs+u3vqqf5dBlDvU3E+dz827/9G36/n6NHj3Ls2DFqamrYuXMnPX395M5ZRULyNHsRTJIV\\nG5a9mCTZQXdbNZoaITt/IbWnytDVIBs2rOf555+nsroKzesk65Ob8RflIp+X5y6IAs7kePxz8xCc\\nCoP1bZw+VcW0adPIzs6+wFnfXT//+c9paG3GUzSD1E1LJ4X7xpVDEvHNymakpYuR7j5M3RgXMTyl\\nKf096e9pHvH3dC1T+tvRCy+8QGNjIyUlJbZb06VIkiTcbjcVFRX09vZSUlJy0Xd/VVVVvPrqq+i6\\nTl5e3iWnZ3g8HoLBIOFwGJ/PR2Fh4SWX8YOQKIoMDw9TU1ODqqoMDQ0Ri9g1TdN2D5tMhmHg8/nI\\nzs4mMzOTa665xj7Wcii31p8uVBdnz57l5MmTZGZmct1117Fr1y76+voYGBi4bBc/SZJITEwkISEB\\nTdM4cOCA7dI3ODjIwMAAR44c4Ve/+hX9/f0MDAxQWVlpXyeMhxENw0BVVbq6unC73YiiSHV1NSUl\\nJRd13ruQTp06RXt7Ox6PB7/fj67r9jkikQjhcJjIqGFFbM1fURS8XmvTS2NjI6qqsnr1agoLC0lI\\nSGDRokWUlJTQ3t5Oe3s7qqri8Xh44IEHKCkpITU1FYfDgSiK484Xc4Ybe72/+c1v6Ojo4IYbbmD2\\n7NmXfX0dHR2UlpYSDAZxuVz88z//M5/4xCdsV7NoNGq3U0FBAWvXriUpKYkTJ05w9uxZvF7vpHCU\\nJElEo1FeeeUVuru7KSoqIisry3bBi11XDMwcK03TiEajOJ1O6uvrUVUVp9NJVlYWd9111zhgTBRF\\n0tPTKS8vR1EUHnroIdauXUtRUdE4eO/IkSM888wzmKbJunXrWLRo0aSbyGIx1FlZWWRkZFBfX08w\\nGGTp0qUsXrwYRVHYt28fgUCAuro6FEXhnnvuwe12IwjWu4TJ4L6YnE4nx48fp6Ojw54bX+w+jUUe\\ne71e4uLiqKuro6mpiauvvtqODVYUxa7TmKvmW2+9xf/+7/8iCAKf/exn6enp4dlnn+X3v/89Q0ND\\nNhj4pz/9iRdffJG9e/cCFqjncrkoKioCrDjbM2fO0N7ezvHjx9E0jeTkZLvuYqBfX18fR48eZdu2\\nbQwODpKbm8sDDzxAa2srR48e5cSJE9TV1fHmm28C8OUvf9mOIo7Vy7tJURR6enpobGzE7/eTmprK\\niy++iCRJrF+/nh//+McEg0GWLFnCN77xDQoLCyd1Yi0oKGDDhg20trbS3NzMO++8w/Lly/F4Ln19\\ne6wCgQCPP/44hmFw1113sWTJknf9jN/vZ8GCBZSXl9Pc3Mzs2bPHgdZTmtLfk/4c84gPxcEvEAhw\\n2223UVVVNYFC/6B0udbLU5rSX7PGOj0p8TmX9Vklfgbh9gra2juorKy8qBPSh3WeP4eKi4vJzEin\\nrqEVdbAJR0IuDofDcr4zNCsydazMUdctQYRgG6gBcPjBlXHuEEOzHcgmk2kaRHtP41WsARNcwEnw\\nEiUIoOj9IEn44twYpkqo6wiGZsUH25CiMToplD2QvuEckHj+BRo6CCK6OxNPXAqhpu3vy2Vx/fr1\\n7D9wEG24HnfKPKJRFV3XLRfDsY/cUc5JkiWcTqfl3jZJXYE14SgsLGTXrl2EQtZililICL4ZVjxt\\njHAzrbhhTdPR9RCapo8Dx9TBRgR9BBMQXZfvVgGWG6Np6gRGVJC94xwsVVVD18csUArS5BG6rrMW\\nFDdWogSGgDFUB0jgyxuN1bEGyNFo1AIiBeHc98Koo98ogIoJvjyEgeP44zzcdtttbN68ecJkL9ZG\\nI72ncabOm+CaBhDtrUIdaMCU3JC2DtzpY85p2wiO/kewoEXZBx07YKTJAv7i8my3QlMLY+oRTCUB\\nXGkImOPa/kJ/2U3TRA92gyBD0iJMefJdpyagqdYkVjd0C6pMXIjRc5BQxxHkpNlIooQA9qQjGo1a\\n8dqhdoS+I2CoyP4sRHcK4a7jRHqqEdRhBFNDl2S6ewfp6B6wYrkBQ1Mx9SGG26txJc/EMTpB80xf\\nRxCs+uvaa4GQ/lm286GghzFH2hBGGpCJ4HbJ9q6zp556iq6uLsLhMC6Xi+bmZqsf+zLRTQlN0K32\\nvtR4aXcG9B/HiFoufpIkkJaW9hd1YR0bO+zKXn/Rc4+V5E7ClbWKUEsZ27Ztm7RvT2lKU5rSlP6x\\ntXPnTjDClCzTuNw/ET4PrCzW2XM8wq5du/jUpz51wWMPHjzIyMgAM6ZpzJlxee8U1i7UeX57lPq6\\nGurr69/3jufLVUFBAdnTc2lprGTXYY3Ny3WcTieaphFRTRyOc3tHGBv7A5SfcDMcFIn3GszIiFpD\\nUARUzXLWvtB8CKD8uEQ46qCgsJDs7GwWL17Mju1vsvudEB9Zr3GBBKsLavc7DkTZTWHRLAKBAM3d\\nvdS+LoLgQZGtuOH/n733jrLrKsz2n9NunV41RTMa9VHvsorVZWx/BBsIAWx/IT8wOAaCcZzEK07C\\nyvpCDAngEBtiXDBgMAZRbAdbtnrvfaQZSdM0o+m93Xbuab8/zr1nuprj2MB915ItzdzT9j7n3F2e\\n/b79QRG/1+TP7+6lOE9zooRlCUQh5iJmCegG6Kbd7lw2K0BvwMM7RxTeeeedW5pwvO222/jFL35B\\nb1cD0XAfKalZaJruTDIMOsALsQgi97BJs8aaM8iyyPr164ft9+LFi7z2+utEdYvMCSX097TS015L\\n0fQVNtgHCIiIkoJlGuiaiq4bBAIBkpOTEAQRXVNpuXoB09BjUb43r4HedjQ1hCi7mFA8j5kL7xiE\\n4jQN0zKdf8f7Gf6UbGbf9gnOH36Vno46Olsuk1NQOmrfoqTQ2VyJgEh24SxM08KluBCTREIhO7JL\\n11SIRQxD3CXbivXbBbILS2mqPs7MGdN54oknxpz0kGWZdevW8evf/JbGmjNk5Ixe4d9UV4amhklJ\\nL2DSzDWDfaa4q/qgNbf9XwsUt5/Spfdwbv/P6G6rIX/KEnz+dMd73jCiuH2pZOVPjzksusYF+4aq\\nua4MSXaRWzQX0xr9cotPYkWjKqY16Bru8iSRlT+T5iunOH3gV5Qu+T/k5JUgihJutwdRlOhsq6Ol\\n/gJdLVXo0TAI0Fp/gfaGckRRwNBsdwdRcNPa3oUZs90MhTUEIYAaCaPpTZSfeofZS+5EEERKZq5A\\nVtxUnt1FZ1MFHU0VJKXmkpyWhyjJRNUgvR11RCMBPB4XOdkZLF26lOeff56Ozk5Mw3JKNxIOIogK\\nsivJmZyNRqMYujbKCXIs+ZLt8ZaoGqKvu4WB3layMlIxTZNz58+juSUKP7YOJfX6z0PagulgWnQf\\nPMcrr7zC4sWLb2nCu6WlhQvl5egiZN2+8IbHuQVJInvtIhpf3cahQ4f4xCc+gccztpNjQgkllFBC\\nf5wKh8McOXIE4LoOfGNpyZIlJCcn09jYSE1NDVOnTh33s7t27ULTNNLT029qfE4QBDIzM2loaGDv\\n3r18+MMfHjfO9r3S+vXr2bp1K+np6bS1tTkT6HHIZ+j369A5ZFmWmThxIpIkMWnSJOf3mqZdN5oX\\n4PTp04iiyLp16xAEgUWLFnH16lUyMjJoamq66evIyckhJSWFOXPmcOXKFSoqKjh37twweCkO05WX\\nl9tj4bE+3si58Tg0ZlkW5eXl+Hw+WlpaOHr0qBM9ejNav349Z8+epaWlhcLCQjweD9FoFFVVh5n4\\nxONS42Ae2LBUV1cXfr9/1LF/97vfUVZWht/vp6ioiLa2Nk6ePMnkyZMBHCe4+PHC4bAD28VdDy9d\\nusSVK1fQdZ2MjFtLeTp//jyRSITk5GQ+//nPD1t4EXdHi4Nc8etauXIloijyk5/8hF//+tcsXrx4\\nlMOmJElEIhEqKiqQJImSEnuOKO74GIlEHCgtvn/AKVPLskhPTyczM5POzk7uuecePvaxj43Z3pw8\\neTLFxcXU19dz7NgxVq9ePeozW7duRdd1Fi1a5NzzY2no/TRx4kRWrVrFgQMH2LdvH3PnznXKQNd1\\nXC4Xc+bMISsrC5fLhdvtvu47JBAIUFVVhSzLLFy4EF3XRyUMGYZBJBJx4Leh13nmzBmam5t56qmn\\nuP/++8nPzycesx0IBDh58iQHDhzg8uXLDrT5wgsvOOesqiqiKCKK4jAYNxgMomkaoVCI119/ncLC\\nQpYuXYqiKPzN3/wNzz33HCdPnmTfvn3s37+fadOmOe6IXV1dVFdXO2Uyffp0CgoKeOKJJ5x7Fuy6\\n7e/vJycnB7/f77g7xmPBb6Q/UlBQAMDAwAB79+7FsiwWL17M1q1bCQQCzJkzh4cffvi6+3K73Xzp\\nS1/iqaeeoqKigtdff50HH3zwuscfSwcOHEDXdebMmcOSJUtueLs4XP3aa6+xa9cuZs+efUvHTyih\\nP0b9rwB+Dz/8MBUVFcBwqC8B5SWU0Njav38/qmbgypwxJrBzLQmCiCtzBmrXOfbv339N8O5/6zjv\\nhURRZPPmzbz88s8INh1GcqcgezOQJBFdN23YTZQGwb7460btg56zdiSpO2vQycIywLJBJVkZ+9Wo\\n9dUjGmHyiwqdxsaNAFbjyQEGvS4ee+wxRFHk2Wefpam5BVH2I3pSEZQkjEALph6BjIUxuE+0r00Y\\n0sm0DPuaMcGCiOnGl7+CcNOtAzRDIUox0kpy2iQHvLLdK3BcF1wuF7Iy6LIXHaOsYHScp5I1G62n\\nBqvzFCjJWErKYOQpQKwz6nTe/D7MWMyqLFpYogsj2IriHxqvdGPSBppsWFF04y1YOQxOikckD5kW\\nHZQToXsY+i5DyrRRLmyCKGPpQbs83DlOWfn8PmRZRlVVG5a0dDAZdQxBEBCTJiAELlJSUjIugDUW\\n6DpUlmWhdl60956xCFypQ38ZPxpD8oJj15g2eI0D1ZA8CVm0MEURWZLRTRExdQqy2zOq7seTHmjG\\nVAdsR0hfPtFoFGXIs2YBUVWNlY05ZK7NAl8+yH5MtZf+C6+iZM3CnVaEKCq4BA0r3IDWPRgvLAgC\\nZqCZSKgVUQRJj9oTZKIbU05CHhFfG2k9g9Zbi9F5ipDkQ0/KsQcKRAlf0Vqi/lzUzgpMdQCrpwx6\\nymLvDRMBC69bpqhoIgUFBdTV1XH02HFUzcAw7ElKBAFDC2EJCsFQFMXnt0t9LBh5pCwLwi3QewmM\\nCHqgFT3QiiIJ5Ofns3379vcNsPt9hsQTSiihhBL6YKuxsREsncWlt+b6v6jU4OA5zd7PNXTgwAEw\\nI2xcatyUSyCAS7Ejgbcdi7B///7/dcBPEATuvvtunn+ujp+/Y5CVrjJvmoIoiBimha5byHJswmdI\\nM+/0ZQ+v70shoop4FIuuPonMVAM1ajc7JFlCEseezApF4J0jEohuJxKntLSU3AkFtDUHOVup3VSd\\nqVE4dFZCED08/PDD5OXlsX37dn784x/hllQWl5oEQgIVtRZ5mTpzp0TsBVmKhVuxRsCEFoYJalQg\\nqgmYlsXqeb3sOObi3LmzTjTPzcjn87Fq1Sq2bd/JlUtHmLPsT1AUZcgExND29HB1t9fT39NMZnoK\\nK1ascH7e29vLM898j3A4SuHkxUyevZoj214kNNDJ5TNbKZm1bti4mSCKiJKMaegYhkEgEERRZC4c\\nex1NHUAQBPq6m9FUO8r2erLjszQEoKbiABYWbk8SMxYMd07Qdd2+PEEY0m+w5fWnUTxjNTXnd9Ba\\nd3ZMwE+SFKJqEARISs11fm673CUTDofRdA3LNLEswylDURRxuVy2o37hVNrrz+DxeK7paLBu3Tp+\\n97s36WyppOlKGQUl84Zcr0nTlbNYWORPXmy7q1lxkG9EH2iEPL40MvNn0NFQTmfjRQqmLSOqBlEU\\nBVGSySueQ2ZWNmPV/1gKBXrobq9Hkl1k5s0gqkXxMeiSYNdvANOy+/SCKNlO9oKIhUVO0Vxa688R\\nGuji3MFf4kvKwJ+SgSCIRMIDhAY6EQUQrCjJyX67nybLeL1eAoEAoZANwKZml1A4eSFpWYVIsoKu\\nRelqq+VKxWF6OhtounIWLaoya9Fm3N4kJk5ZRGZuCU21Z2muO0+wv51AXxumYbsGgsmk4mKWLFnC\\nwYMH2bFzN7pu4valMmHiVBSXB8PQqbt0BMM00A2TgYH+mKsOGIbmRAuPJcuy6O9poqX2NFo0jK5F\\nOLHnZxhahJKSBezdu5eoqZO+bMENwX1xpS6cTn9FLd29PZw6dYrly5ff8LZx7dmzB800SJpZjOS5\\nPqQ4VO7sNNwTMhno6Ofw4cO3BG8klFBCCSX0h6uOjg40TSMvL++WokdlWWb+/PkcPHiQhoaGcQG/\\nQCDA6dOn0XV9VGT8jSgeh9nZ2Ul5eTnz5s27/kb/g8rNzWX58uXs27ePyZMnU11d7QB+qqo6Llsj\\n56KLiorIyspClmW6u7sxTdOBruLuf+OpqamJmpoa3G63Y2ywYcMGtm3bRkZGBi0tLTeVXpecnIzf\\n76ewsJC///u/JxgM8uyzz3Ly5Eny8vKYPn06V65coaamhra2Nse5Lx6HOlJxWCwe+9vU1ERqaiq7\\ndu1izZo1N228M3/+fLKzs2lqaqKjo4OcnJzYAhe7fW5Z1rj7bGhoQJIkFi9ePOz+OnbsGNu3b0eS\\nJB599FEUReHJJ5/krbfeIisri0WLFg1zJ4yDfpFIhGg0iiAIdHZ28r3vfc+Bqg4cOMDKlTfmam6a\\nJpFIBEmS2LZtG4qisGzZslGuyoZhjLuP2267jdOnT3PhwgUOHz7MnXfeOeoz4XAYy7JISUkZBpt6\\nPB4HALSduE3nWsGGA+0+kYvCwkICgcA1XfEEQWDjxo289NJLvPrqq0yZMmXYe6OhoYHKykoURWHW\\nrFlOGUiSdF1OY+bMmZw8eZL29nbq6+udn3u9XtxuN3fccQcpKSk3fF8dPHiQaDRKcXExKSkpaJo2\\nDPBTVdWJvwaGRUGbpsmsWbM4ePAgR44c4fz580yePJnU1FQ0TaO5udlx0YxDy3Hw1O1209nZic/n\\nw+v1smrVKtauXUteXh6iKNLb28vhw4edeN3vfe97fPrTn2bTpk24XC6+/OUvc/HiRXbv3s2pU6eo\\nqqrCNE0nNhtg+fLlpKSkcOTIEaesSktLmTJlCoqi0N3dzZtvvokkSU48tSzLjhvmtaA8TdOc56a/\\nv5+dO3c691dRURG//e1vAfjMZz5zwwuXZFnmM5/5DI8//jhHjx7lU5/61DUTMMaSaZrs2bMHwBkj\\nuhmtWbOGN954gzNnztDV1UVm5s0ntSWU0B+j3nPAL57pPhbYt2DBApYtW8bUqVNJTU0dZhebUEJ/\\nzGpvb8cwLFxJN995A5CT8gm3n6W9vf0DcZz3Sps2baKyspLDR44RrH0HT8FKXJ5cDEPFMqOAC4g7\\nlZkQaoTO43akJgIEGyGlx4aeTA2IWbePcSwjBpX53TKbN292YJjrAVbX0lBgML76JSsri9aOXryT\\n70T2ZRHtbyTYU40lJ4M3H0RXzEltxFkKIoiyDfmZGqZhEnVlY0reWwZoxoIoFW/GMChrLI1XVsAo\\ntzHBnYYR7sQIdmC17LYhRm/eKFczy8J2FOi7gtV5GslSSU1LIRgKoXZeuiZcaVkWeqCZaHcVptrv\\nQFV6sM2G61z+UXCSYRrjTmgBMZc7H5YWQAi3gm/EMySIYOr2dJEoD5swFkURSRKdjrhdlfYKMFmW\\nHWDOjAiEWgUikci4ZT1WHQ2FvByoTvLZMbuWacOgwzpctkfIKPkmguwHPQjhDgytF0mwSE5Opj8Y\\nxZtVgnwTtt3R7iq7PFKmAmJsMih2BpYdf2CvPsSOwRXl2H1gA4hW8mToOQdaP1rbafSOc44NuyQJ\\npHgk0lJzSU5ORlEUxzmvs7OTru5eoqaMp2AlSmrRqHvFX7KJUP1eor1XsNoOENUWYlmT8Ccl2Z3A\\nrFJcmTNj91ElRrADI9KDJArk5U3gwQcf5NChQxw7doKwqmNKPlwjIMJg7XYsLYyhqZix1X9Y1iCM\\nPFKWBf2V0HcZSwva9SQodtlYFroJv9zyK9RIGFPy4UuZeMN1Af8zgN3vMySeUEIJJZTQB1t2LJKF\\n33triwJ9Hhvciccrjaf29nawDGZNHn/g/lqaNdlk21GDjo6OW9r+3WrlypXU1dWxfdtb/OfP4d51\\nUVbO8yAJIYJhC78XO8oWO5Z35wk/bx5MBgSKJmj0BST+49VMHvlUFy7FdtoyDAPd0JFHuJFFVPje\\nLxXaur1MKChyYldEUWTDhg28+koDr76jMXWiyo0wNpYFL7+lEI66mTJ9OkVFdnt8xowZ+H1uJueF\\neeTTGt962R7sXzU/iCSC32s68cMOuxi7TQTA47ZQZItQRMTv0VkwPcKpy2H27WcJ1MoAACAASURB\\nVNvHxz/+8Zsu4zvuuIMDBw/S0XyZmvI0psy+fcj41tiTGP09rZQdfR23InHHHXcMg9P27dtHIBgk\\nLauYafPWoYaDePwpDPS20dl0ET0aYuK0FXiT7Da9ZZoYZjR2vRa9Xc00VB5moKcJ09CQZRldC1Fd\\nvn+YA9/wsjbpaqujsfYM3W1XnMnAaCSAIIikZU0ctdhj0PFRwMKOCobBNmtW/kzqLu5noLeFQF87\\nSanD43QEQcA0bEhQjMXIGoZOODzSiWFkvK+AKIkx1xQXFoPOGeMpPT2d//t/H+BHP/oxl85sw9Cj\\nTJy6CEEQ6W6vJxzsw+1NISN3Mlo0gmnqWE4/bNhZDyk/u4+UVzyfjsZyOpsv40vOJhoJYugqiiKQ\\nlHLjcB/AQE8rAGnZxciK23HWjE++BgIDmKaFIErILjfiiPZ1StoEktPz6OtqxDJ1BvraCA504PN6\\nESWJrIxU1qxZw/r168nNtaHKUCjEk08+SXtHFy5fOktWfBR/8vBJE8XlYcLEWUyYOIv6yuNUnNxK\\nW2M5Xa3V5BbOJKewFMXtJyNvBp7kHJpqTtDX3YwogD/Jxyc/+UlKSkp46qmnCIZUUjILmTT9NjJy\\ni4f1EQZ6Wulsu4Kh230+NRq1o3ktC12LICueYaVpWRYdTRdpqj1JcKATUzDAJYEgoBEBSeDUmTNE\\nwmEEl4x/6s31hwRBIHXeVHr2nWXXrl23BPiVlZWhmQbZsyff9LYAKXMm073rFOfPn08AfgkllFBC\\nCQ1TvB/j9/tveR9xUONafaLOzk4HkBrponUjijtnhUKh961P9NnPfpbW1lanXdXc3IyqqmiaRjAY\\ndNzewIaSJkyYQFZWFhkZGUiSRFNTE++88w5r166NLci3UFV1zIjf9vZ2tmzZ4vSB4mWcn5/P7Nmz\\nCQQCFBYWcvXq1Rs6d0mSKCgowO/3s379eiRJIiUlhZKSEi5evMjmzZvZuHEjX/7ylwmHwzQ1NWGa\\n5iiAcCikNRSMkySJ5uZmiouLqa2t5cqVK45D3o1KkiTuvvtufvKTn1BZWYnL5SItLc35/XhgV2Nj\\nIy0tLfj9fu66665hv3v77bcB+PSnP82cOXO4cOECHo+Hjo4OXnrpJZqbm1m/fj1+v99xVoz3ITRN\\n49SpU/zqV79y4EzTNDl9+jTl5eXjuoCFQiGOHDnCnj17aGxsdPYbCARwuVxjjk2PLNeRMOOaNWs4\\nf/48+/fvdyJjhyp+znE3SEEQHDfCke6HQxWfJ4r/P35PXkurVq3i1KlTnDt3jm984xs88sgjTJky\\nBbATEgzDYPbs2Xi9XscNcSwQbOS5yLLMrFmzOH36NCdPnnSuIe68V1xcfFPQ6JUrdn80Hqc8tBzi\\nZQO2w5zH4xm17/nz53Ps2DHABpQvXLjgAKCCIFBQUMCGDRtYuXKlk/5UXV3NN7/5TSRJYsWKFfz5\\nn//5KB4lMzOTP/mTP+Guu+7i3/7t3zh16hQvv/wyb731FmvXrmXevHkkJSVx1113UVxczM6dO2lr\\na0MURbKzs3nkkUc4e/YsW7dudYDLjRs3OlHPYN8Pe/fudeoyfg/Gr12W5VEL21RV5Y033mDfvn0E\\ng0F0Xcfr9WIYBoqiYJomr7zyCqqqUlpaSnb2zRmh5ObmOs/gwYMHxwRVr6X29nba29udyN2bVXp6\\nOvPnz+fMmTNUVFRw++233/Q+Ekroj1HvOeD34osvOn+PfxkuXryYf/7nf2batGnv9eETSuj3UpFI\\nBCwLQbr5ThWAICpgWcNWOryfx3mvJIoiDz30EIIgcOTIMcKN+zElL1JSCbqcAWLsuiIdtguZbndm\\nhaRJgIkVbLRjSDMWOFCZYRjDcCfLMtH66ok0HcGrWKxYcduwlQjXA6zG03gQ3Mg6ibScsOerkktA\\n9o4A34a7cdgXJ4EogBlF03SU1KmofRduGaAZC6IcC5CC65fVyDhP0Z1KqGE/RrjX/oAesgFMOQmS\\np4A3BxDBUO06DFzB1IMIloYpiPQHIxjRKJYZIdRwCN/E1aNg8mjXRdTOi7bz2vCTdepZMFWiXZdw\\nZZYObu98OP5vY3jZC6INqnWXwUDNaMAPwY6ixQJLRxRFQqGws8JulGIrkAzDiIFvsu0uKAjXhd+v\\nVUeDUN00GzTT1ViU81CgTHDOYfg5SbFrPAfBOiy1B0OL0t+vY1qSDZTehEy13/6L147FjheDxRC4\\nDxAk1xjAm4DgL4S+CkTFh6WHES2NZF8SkyZNIjc3lzVr1jB79uxhHent27fz8ss/I2rK14yvFQQB\\nX9Eae7Ko9wpWxzG03gsE0qaBNweTGLAZbodAO6IZJjk5mZUrlvPggw/ywgsvcCQGrnoK14z5jMjJ\\n+UR76xCi3Vie9EHnEDOKILiH31+mAR1HsAINsY19kDwZXBl2uVsGstlLuKcKy9LAUAk3HMA38XaE\\ncRx3Rl/zuwfsft8h8YQSSiihhD64crlchAFNA25hHeCNRM1CrO2NhWd8c7BryuO2QcJrLch4r/Wp\\nT30KWZbZ+tbv+O2eEP+9T2HRTDeTC0J4XRamBZfr3Zyo8GKYAAL3rh1g87Ig/++HWdS3Kjz542w+\\nvLqfxTMiIFgEAgFSUlJiboBwvkrkt7tlrrZ5SU6bwF//9V8PmwBcv349x44do7b6Av/2Y4u/fiBK\\nVtq4p4xhwMtvyRw658blyeCBBx5wfmdPMgjEGbArzSKCYDFvqurAfZY19hocACwbavR5TIJhkdkl\\nIU5cTLqum+N4ysvL4+G//Ev+8z//k7pLtsNZYckCMnMn4fIMn3DVohFarpZTW74fSTRZsmQxH/nI\\nR4Zct8GePXvQdYviGcsJDnRz5sAWIuEBFLcP0zDo62qkv/vXpGQUkl04C1nxYBoaaniAzuZLBPva\\nMS0DUZRIz8gn0N8JWpQrl47Q39PKots/ieIadIdob6qk6vwewsE+px8iinY/JX7MjuZKDm97kenz\\nNpCdP9zdRRBFLMPENHSkIeMGkqyQXVBKa/1ZulqrRgF+FraLn0YYQ48CFv39/bE+mIAgSoii5MTk\\nWpaJaerouoFhhNA1DU2zHRtvZDHw+vXrCQaDbNnyK6ov7KGh5jSFkxdi6CpYFhm5UxBEOwLJjLkY\\nSvLg9dj9wOH9Icuy8Kfm4PIkoYYHaGs8b0OLgoimqdRWHEQQBPImzRlWNuNJ01SwQHF5Y32vQQfB\\nYDCIaVqIkjwKdBsqxeVDVlzMWfZh6i8fJ9DbSmZmBl/+8peZNGnSqHfeL37xC6qqa3B505m55F4Q\\n3YRCIRSXgiKPPufi6cvwJWVw+sAviUYGaLpylub68zaIh52OYJk6pmHgT0nm7rvvZuHChXz9618n\\nGFKZUDTXBk3HcAdPycynq62OnrZaMvOmoUcjWFgODKpbEWSX24ZKLYsrFXtprjuDKZqISS5800uQ\\nCzIRXTKCYSL0hRgovwIdGqZp0vbWQfL+5HYk742/0JNnTqJz/1knwst3EwvYwK43y7KQU24NvpBT\\n7EnrYDB4S9snlFBCCSX0h6v4d/rIiMqbUTwR51pOyHHHultJ9ohLFO2F7O9Xn8jr9fL444/z3e9+\\nl/Lycvx+P/n5+bS0tBAIBBBFEZ/PR1ZWFsnJyXi9XrKysnjkkUeQJIknn3ySU6dO0dnZyfLly8nP\\nz8c0TUKhkANYqqpKWVkZ+/btQ9M05s2bxyc/+clh53HfffdRW1vrQIJxiGw8KYpCSUkJ6enpTJ8+\\nfdg8Sryvpes6ra2t9Pf3xxyZQ8MiXK+loeBU3BmrqanppgE/sJ25rl69ys6dOykrKyMnJ4fc3FxS\\nUlJGRRmHw2EaGhpoa2vD4/HwF3/xFw5oBlBbW0tdXR1+v581a9Zw4MABfvSjH2EYBqmpqYTDYXbs\\n2MHevXtZvnw5CxYsQBRFwuEw9fX1HDlyhJ6eHsd1Mi0tjZaWFlRV5Wtf+xqf+tSn+NM//VNnnscw\\nDH7zm9+wa9cu5363LAu3241pmiQlJWEYBi+99BKHDx/m/vvvHwVJybKMrtvJVkOfp1mzZpGZmUl3\\ndzdXr14dFX0bd+2LA11xt7e4w6KiKA5kZ1mWE9WqaRq6rjvxxIIgXLedKkkSX/ziF/nud7/LxYsX\\n+Zd/+RdmzZrl1J1lWUyePNlx7Ys7B8af/WtBepMmTeLUqVM0NTXR09MTS2ZS6O/v58UXX+TOO+9k\\nzpw5NwT6xYHjkddjGIbzu7g74FiKb+f3+3niiSf49re/TTAYZMmSJdx7770UFhYOOw/DMHj66aeJ\\nRCKsXr2a++67D9M0CYfDuFyuUfevLMv8wz/8Ay+99BJvvvkmjY2N/PrXv+a1114bFqMchxwLCgp4\\n4IEHaGtrY+vWrYiiyMMPP8zSpUtHnbuiKBQVFdHQ0MDFixdZsGDBMHAzFAo596YgCPT19fHUU085\\nboBFRUWsXLmSwsJCXC4XoVCIS5cusX//fnp7e6mrq2PLli184hOfuCnocu3atVy4cIGzZ8/eNOAX\\nCAQAG5C81Yj2+PMW31dCCSV0fb2ngF9raytVVVWOBbIgCKxcuZIf/OAHt7QaJKGE/ljk8XjsaFLj\\n1jpwNwoG/W8d572Uoig8/PDDTJ8+nR07dtDc0kqo9wKCbgwBumKrluQkG5LxFUC4BSHQgKUHoOMY\\nKH7wlxD15iAaSSiyYLt1dV1GNML43TIrVtzGF77whVEd3v9JCG5onViWhRHqAkTbvS++P6fzNk4n\\nThBAVLDMKIaSjmVY7wqgWblyJRUVFYRbWgnVvoMlSEjeDFyZpchJ+WDpN1RWQ+M85ZSJhBoOoPXW\\n2a6EOasQjDD0V2FpATsCtccaca0WSH6ElFn4s6diBFvROy9iRQeIdlZgaSH8JZsQRAnLNJz9W2A7\\n2KVMA18uIGHpIYi0Yw1cwTTChJuOowfbBwGpOPMmSlhGLP5YtCcbHXknAGWgjdXwtGwoK9oNkXai\\n7vQhnW4hti9xSAKwiWXaHTjDMNB1AynQjCQJ5OTkjLH/QY0FukZavLgyZ2CEu+wy9ObEXDfsY2GZ\\ng+54MQfB4acfO1dP7NhqF+hhwEI3AEsjWLsNT87c4WDkNWSZeuzy7aZHfJOoqg6B+0aAbsMuVIlt\\n7iVpyl0Ea9/BNOH2228fM8JY13XeeOMNBkIqQs5ygpoC+gDSGJHSgBPHq/pzibScxlJ70TtO47iA\\n2lcBlg6igN+XwtSpU9m7d+8wV8rxIEJXxjT7fhyoQUibGXvv2ve1ZagIcXdOyxqE+0QFspaBvyDm\\nPGrH/bpcLnz+EvqTJmP2NyB0n0XrrSME+IrW3nAH7t0Cdh8ESNw0TS5csCHm9vZ2x7kxJyeHNWvW\\nMGfOnHc1SJlQQgkl9H7JsiwqKys5ceIE/f396LqOz+djypQprFixYli8yx+i0tPT6eu+Sk2jyJJZ\\nNx/TW9soAOJ1Y6Y8Hg/hAYFwRCDpFtwCI6oNBb2f9SGKIn/2Z39GaWkp27dv5/z5Mo6Wh9h/xo0Q\\nw6kM0257TZsYZfnsMNnpBj99O5X2bolIVKSxXeDlren8936TJaUhMlJNPG4YCMkcPifR2SeD4CV7\\nQiGPPfbYqPapy+Xiq1/9Kt/85jdpbqzhie+HWDVPZ8Myg4m5g+UaCMGBMxJ7Tkq097iR3el86ctf\\nHhZvnJqaCoi094hEVOjpF5Ali7QkY2y4TxjVkrWjhkVQFAu/x8Q0jFtqbxiG4bQzDMNA11Q6m6vp\\naLbHuVIz8snOm4rHn0agr53WhgoES0eWJW5fvZrPfvazwwa5y8rK6OrqxuNPw5eUzom9PyMSHiAl\\nvYAZiz+Maeg01Z6ko/Ei/d2N9HVeHWzDx9p3suJhQsFMps9dg8ebRDjYR13lCVrqz9PTcZUjO37I\\nbZv+P1xuH1erTlJZttueJPCmkFc8n6zCWYiC7aYdjQTpaqmks+UyoUAP5478lhkLNjFxyiKnPRnv\\n01qmgWWaw8AtX8wJTlNHu8JYlh3RGgp209tRj8eXFnMRkRGlkW4oFiAhWQqmqWPoGtGoRvPVi4ii\\n7cJwI/rwhz9MVlYWW7ZsoaOjkysVewcnmgWBaCQYPzlMQ3ecBUfBfZaFNaSvLSseIsE+Aj2tSIqL\\nnIlz6WmrQY0EuXR2B011ZSxY+XHc3mtbV4qxfqZpmvZNKsRdPDRM00AQxGvCfYDjgq64fCxe+2mO\\n7vwRPb19hEIhgsEgDQ0NRKNRgsEgx44dY+fOnYiSmxmzN4AgEY3GHSJURFHC7XbhcrsdgA8gI7eE\\n6Qvv5vKZtzD1KJIoISsuBFFEkl24PclEQv1E9TBvvrWVbdu2EQiE8CZn4E1Kp63pElkTptguhUNU\\nMGk+dZeO0NVaRUl0HbLiRtdUpw5MUycaseulofIIzfWnMRVIWbUA37QidEPFskx7gtPrxT3Fg3dm\\nMQN1zQwcOk+4pZPm/95PwcfWI14ndcCpE5eC5PNgRQzH4edmNKyPfwtywMnrTNBfS4ZhUFZWxoED\\nB2hvb3fiCOP9oblz597yZFtCCSWU0PuteCRhHMQWRZHk5GQWLlw4apHvH5ri/ZiWlpZbgtABampq\\nhu1rLHm9XsdN+FZlmvb38/vZJ0pKSuLxxx9n79697Nq1i4aGBvx+vwNIxmNeU1NTmT9/PkuXLqW1\\ntZVDhw6h6zqqqlJbW0tjYyM5OTlMnjwZr9eLoih0dnZy4cIFdN1exL9s2TK+8IUvjHI/Kyoq4pFH\\nHuG73/0uoiji9/vp6uqiu7t7WPm63W6ysrJIT08nNTWVyZMn8+ijjw4rP7tPBPX19UydOtVxsIu3\\nGcaL5o0rPh8fB7ji29/KooJQKMThw4epqqpyoo+vXr3K1atXURSF9PR0xw2xq6uL3t5eFEXB7/fz\\nuc99jtWrVw/b3969ewF7TP/ChQv88Ic/BOy2/Ec/+lEqKyt5++23OX/+PAcPHmTv3r3DXAkFQSA/\\nP5+1a9dy1113IYoily9fZtu2bZw6dYotW7bQ1dXFQw89hK7rPPPMM5w7dw7TNJkyZQorV66ktLSU\\nSCSCYRi0tbVx5swZzp8/z6VLl/j3f/93vvKVrzBx4kSHbVAUZUzATxRFJkyYQHd3N/39/aPKLu50\\n2N/fT19fn72IThTxeDxO7OzQOlMUxTatiJVzMBikrq7Ocaa7ntxuN4899hhbtmxh7969VFRUUFFR\\nQX9/P4qiEI1Gh0FUkUjkmu+WeLnHr7m9vR1RFJk2bRoTJ050yq28vJyNGzdy3333XbfdGX9uhj6b\\nMAhBDo1/HkvxZ0mWZaZPn87f/u3f8q//+q+Ul5fzuc99zgF7LcuioaGBHTt20NjYyKRJk/j4xz+O\\nruvDrj/u/jeSWbn//vsJBoPs27cPVVVJTk52YpO9Xi/Jyck0NDQ4kdpxYHLp0qX09PRQXl5OaWnp\\nqO+pDRs28JOf/ITdu3ezYsUKTNNE0zQkScKIjVuoqoppmnznO9+hoaGBnJwcPv/5z1NcXOxAgJIk\\n4ff7WbBgAZs3b+bAgQO88cYbbN26FVmW+djHPnbNehiquPv7uwHsbjb6eyy9mz5R/D0VH0M1DAOv\\n18vUqVNZv349hYWF7/r8Ekrog6T3FPA7d+7csH+7XC6+/vWvJ+C+hK6rP/YJ+5ycHKTKGvRAC7Iv\\n66a2tQC1z45suXr1Kn/3d383btm9m+OAHf95IwDSe624i97GjRs5f/483/72t+nvVxEkN5alg2na\\nbmRGGPoq7D8AgoAoJ9mmAUYEq68cei8QEQR0WUaSBPyKRH5RobP/se67awFWclI+gqhgmdoNQXBD\\n68QyVDB1kFwgxRq11uAq/2sOIsfgLcMUIbYi5WZkmiY7d+5kx44dtLS2oWoGlujCwgQsjHAP4Yb9\\n9vVLCrKi4HfJ1yyroXGeWvdlG3YSFMjfCO7YQEPqDIRQC3QcxooO2BNZShp4MiGpBFwZmAKYsh9P\\nTjau7NkE26rQ24+j9dUTqNmKb/JdRBoPDu4/e5kdTyuIYBq2Y5rkBnc6VvI0UDuxOk8MA6QkUUIX\\nYpCoINpAnAP5xcs49l1mjgHIWiYoSXb9DVzBSp4ac1dURrjnMQjYSRJYJpapoaphxM6LJLsl1qxZ\\nc936Ggt0VbvOYYSDICh2BJWpDwKFpmaDlWM4VQy7x4SYA4Q2YJ97+nwsUYKBK5jR4Ggw8hoS4mVn\\nRkFyI4qSE7llWTHnvmvFvMbKWZAUJG8GnoIVhBsPsH37dnJycpwJjUgkQjAYpLu7m2AojOVKA9cE\\nbDIRdMEgGo0iSUMntAYrw/AWY+XnYDVuRdADCIofQXYjSC5E2Yug+NEDrXR2D/DSj36MrkXRdQPB\\nnUqo4SCiOwVXxjT72R/SsZGT8hHdyRjqAISaEXwFWEZ00C3UiIIpIASuYAWu2uWdtwFc6baDZKxO\\n3C6XHS0BCIjgKwR3JlbLbrTeOqL+XNxZpdesi8E6eXeA3fsJiY/1jjKM2Iy/ICBV1nD02HHy8yaw\\nadMmNm3a9AfdbkgooYT+cKTrOvv27WP37t00NV4FK2K3KwAQOLhf4Ze//AWrVq3mQx/60PveDn+v\\ntHLlSupqL7P7hHrTgJ+uW+w+KRIMGxw/fpwTJ07g8XjIzc1l7dq1LFu2zHHEyM3NpaeznopakbWL\\nb35Sq7xGBEH+QNTD3LlzmTt3Lm1tbXz/+9/nYsV5kjwahgVaGEQRqhtd1DYpKPLgAOzKeQYTMi0u\\n1Yk0tEnsPJGMpsfcfl1uBNFFVm4eGzZsYO3atePGhKWkpPCP//iPPPfcc5w7e4Y9pyPsOamSk6Hj\\n84CmQ1uXiG66QPSQlZvHX/7lXzJ16nDHuPT0dKZNn0HVpdPsO6WhRkH2xIzehsB98WbWyHHkWFMA\\nALdsEdXAiEXSDlUcimloaHBW76elpbF06VKSkmzHv2eeeYbmllZ03cC0RNJzJiGIMlo0Qmigk/7e\\nNnq7mhAE8Hp8uF0ypaVz2LhxI0uWLBk1yN3S0oJpWeRMmEzlud2ooQFS0vOZtfzjSLFI5ClzNlI8\\nYzXVZdtpazgPFiSlTcCfkkNadjGpmRNjC5Lsz3v9qZQu3EjuxNmUH3+DYF87+/77afKKZ9Ny1e73\\nFs+8nbyShZiGgWloMQdAEZfXT97kRRTPXEVj9QmuVh7i8tmdKC4PmROmEY2qDghnGjq6HkVR3E4B\\nx9v/gwuJBmUadjvP1HU6miqYUDwfSXYhjrkwJF6ZVgy6k1DD/XQ0XgIzyrp168a85+xj221ZURRx\\nu93cdtttLF26lLKyMnbu3Mnp06eJqBqWacRcMmRMM+aOEY+FHdoHGQH3ge0uZ+gqsuJh8qz15BTN\\nJTptOX0d9TTXnqK/p5WT+37O0vUP4HKPP0EWd3wM9rXZrm+yAghEo3Z/SFaU68J9oUBXbF8+ZMVN\\nwaT51JTv4ZlnnrEnlSz7eyQSDmMYttNjckY+KRkFQ9wSDQxDj7lkhIlE7AkrURSdqODUzCI8vjSi\\nkQEW3f5JsiYMd3qJqiGqzu+lofoUpqEjiCLhQB/V5/fZXVtZIa9oDoWTF5CUajsyeHzJZOVNpb2p\\nkoaqI0yZuwlD17AsE6/X57iVdLdV01xnw30ZH1qBuzAHw9AcuC8pKckZVxYEAVdeJmn/ZwW9vztM\\nuKmDth3HydmwGOlGrVljboojo+5uRElJSQg9XegDQWT/zUMNkfZuDE2nra2NF198Ea/XS35+PsuX\\nL78uyGEYBjt27GDHjh20dXSgmTpG7P4VEKiqq+X4yZNMyMlh06ZNbN68OQH6JZRQQr836unpYfv2\\n7ezfv39MIGn37t3k5OSwfv16NmzYcE0Y5PdV6enpzJw5k0uXLnH48GE2bdp0U9tXV1dTW1tLOBzm\\nhRde4Pnnn8fn8zFt2jQ2bNjAjBkzEASBzMxMFEUhHA6jadpNz91alu3+rSjK+94nUhSFzZs3s2nT\\nJioqKvj2t7/NwMAAmZmZ9Pb2Yhj2mPCpU6c4e/YskmS7OycnJ7N27VpcLhcnT56kq6vLbrebJpIk\\nOSDW7Nmz2bBhA0uWLBl3jHH27Nk88cQTPPvsszQ1NZGamkpeXp4D7EiShNfrdf4sWLCAhx56yIn6\\njWvRokW88sornDt3znEUjDuvDe3XjAfVDP35UMhv5LMSDAY5efIk3d3dRKNRPB4PhYWFzJ8/H1mW\\nOXDgAD/96U/p7+8nFAo58JFhGMiyjNfrRVVVOjo6HFAqNTWVFStWsHnzZoqKikadW3NzMwClpaX8\\n4Ac/AODee+/l3nvvBWxXvFmzZtHS0sI3v/lNmpqaUBSF0tJSCgoKWLp0qQPrxIG/mTNnMm3aNI4e\\nPcqLL77I9u3bqa6uJi0tjcrKSnw+H5/5zGcoKipCVVVnLFyWZfLy8igqKuKee+7hZz/7GVVVVTz9\\n9NM8/vjj+Hw+p+7ibeVoNDrMNTvevhoLko1EIg64VVNTw+LFi/H7/eNG4w4F6kRRpKamhv7+fnJz\\nc5k5c+aYdR0/diQScaK277vvPu69914OHjzInj17GBgYsM1EYu6BLpfLcQkMh8NjtjuH3mfxGGRV\\nVcnOzuYrX/kK6enp9PT0cPz4cd5++23HIfHBBx+8JuyVlmYv/GprayM/P9+5r2/EcRSgo6MDQRAc\\neHLatGlOpPWjjz7qJGhFo1EikQimaeL1elmzZg2pqakO+DrUKXFgYACXy4Xf70cQBFRVJRQKsWbN\\nGo4fP47X6+WZZ54ZdW5Xrlzhpz/9KWfOnHEiscvKyigrKwNwvqfWrFnjPOMrVqxgy5YtVFdXU1ZW\\nxpw5c9A025Hc7/c74Omrr77K1atXmTBhAk888QTJycnD4L6kpCTn3lMUhbVr15KZmcnzzz/Pb3/7\\nWzIzM1m5cuUNvdOHOhPerOLX1dXVNcwR8kZlWRZ1dXWEw2FOnTpFS0sLSUlJzJgx44YWKvX39/Pa\\na69x6NAh5x4aqvr6enbt2sWMGTO45557mDVr1k2dX0IJfVD1ngJ+XV1dY37tmwAAIABJREFUzt8F\\nQWDp0qXk5d1ajFtCfxxKTNjbWrNmDUePHSfYdRl39uwxneBGysJ2wopEwphdl0CP0tMPfQORccvu\\nVo7jHM8yiXZdxq/cGID0vyFRFO2GMAKCJwNv4W1o3dUY4U7MaCA2OSoiuJKQvFm4M6fbDnTYsGK0\\nu5JodzUSJpMmFjJlypQxYz/H0niAVbj97OD9ewPA4NA6kbyZg+yVpQ8Br+ITIAz+Pa6RLnGmjmka\\nw1aAXQ+gnTFjBi+88ILtSqbqmJIPV+YM/El5ICnoaoRofyNGbzWCHkTAICczjc9//vPMnz9/3LKK\\nx3kq/gmEG/bb0ybZywbhPrAH1/UBGxhSkiFvCPyHZUN2pr2CyeV2IQoiSbkzCLiS0Bt3ow8003/+\\nJ/ZnRY8NSLnTbHDOiNpuY4INnBumga4BSRPBlYLVvMsBpFyp02xXOVNHEOUYfKXZAJrjpBiDmsTR\\njWQr0gkDtQiYWHoQwi127PDI+nIc/BzLQBu8G6jFigbwpqYxe/bsYZtcr/6efPJJLl68yP79+zl8\\n+DCBkIYkmUixFUaRSMReIWVGhwCH8SjiEfeYqdrPjWUhJBVD1iI7Mjl5Kla4BbrP3bBznOhOgXA3\\nVqgFIdVe8aRrOkbcUuZ60bLhVns/rmQA5JQiQpY9YPWNb/4bhiVgGFYsBsEEQ7NhxKQSkFy2G6Nl\\nxSBK3bG8j0Y1uyMiDIkKFiWEtFnQex4ltQh/8brBurUs1M4K1LZzhMMDWIIIgoKgqZi6CuFutN46\\nRHcy7qxSx+FQEATcWaWEm45jdRy3wVbJC9i267quY+g6Vt9l+0BZy2y4D9OBG11uFz6/b/C1gAXh\\nNgg1gChhqQOEGg6hB1pxxd5v16qTd+vC+q5g9Fg5mrp6XRh9pDRN47nnnhv1jnIl5dlR1IaGHmgh\\n2HWZmiuNNL9sD8584QtfSCwySSihhD7QCoVCPP3001y6WAZmmBS/xu0LDQpz7FjSvoDAsQsSVVdD\\n7NrxOw4fOsRffeUrf5ADVKtXr+ZXv9pCRW2Q5g6d/Ozrr+S1sEGf4xcEOns89uB7qA1BsIiGBPp7\\nGqmqLOfVn/+cDRs3cs8997BmzRouXSxj53GVNYuMUbDYtaRG4cBZCQT3B6Y/BHY0Snt7O5JokJIM\\nfQPg9YARM3E2TAFTE5hWZHLfnRqlJXEXCKhpFDh9SWLrQYmgqnDbktWsW7eOOXPm3BAY4vP5ePTR\\nR2lsbGTPnj0cOnSQ9r4Q9JnY7UuRuQvms2HDBubNmzfuPjdu3EhVZTnvHLHd10wL6lpczE+y/y0I\\no8G+sSRJ0NCuYJo4sTZ9fX3s3buXvXv30tPdbveziJ+fxCs/+xkzZs7k8uXLBEMRFHcKk6YtIH/S\\nXAfesiyLwEAPzXVltNZfQFMHkGWRv/qrv2LJkiXjnk84HLYhRaCjuQoEkRmLPuzAfXEJokhv51Vk\\nxcPUeR8iZ+Jgf8DQo+h61JmAi21BRlYe81Z8nDMHXiU00EV91QkUxUPRzNvJLihFjw6WnSwr+Hxe\\nOzLXskAQmThtOaIkU3dxHxdPvcPqu0sQRXsyShIVTNOItaFBku3IIE21J9xHOrWZlklD1VF62q9g\\nWQaRUB+9HXXkTJwz/DpHVKIDb4rQ2XIZXYuApZORMdwh2zAMzpw5w65du7h8+bIzmaYoCvPnz2fj\\nxo0sWLCAhQsXcuDAAX7w3PNEw73OJJBpmvT19WKZFno0gijJSJJixxEPzQEwTSKhfiKhPiws8iYt\\nIK9kkQ2w6TLpOZNJzynh0sk3CPV3UHb0dRav+fS47e+M7CIUl5fgQAfB/jZy8yfH3Nt1QECUrj1E\\n291ajaYGSUrJIiklm96uJhpqT6NFo/T0DuBye/EmZSBZArJbpb+nGVGSySmYhWHoSLILQRQQEBEl\\nu04NPYphGvT19eJ2e4hGVXo66ulqrbLrOxrh3JHfklswg/xJ80jPLiLQ187ZQ79GjQSRZBceXxqp\\nWRNRXD4EQSDQ10Z/dxONNadprD3DlNm3M2nGbQiCwKQZt9HZUkPr1TJcniQmlCzC1KNomt0nM02T\\nqrMVmKJF8pLZuAtzME0dU9dicJ9/WHte6+pj4GwV6pVmLM3AjGr0lVURqLpK0uRCUudPxTsxd9w6\\nsQwDIxxBQB4XXr6WZs+eTX1TA/0Xr+CZkHnD24Ua2+g7W0V/eS0IAs0dbbTt3Y2AgCSKvPrqq6xa\\ntYpNmzaN6dYSjUb5wQ9+wPGTJ4gYOmKyj9S5M/EVTUBwyVhRndDVVvrO11DX0sTPfv4KVVVVPPTQ\\nQ9eNrk8ooYQSer9VW1vLf/zHfzAwMABAcXExK1euJD09HdM0aWlpcRb5/vKXv+To0aN89atfva5z\\n9++jNm7cyKVLl9i5cyfr16+/ofZ43AHq7bffRlVVJElyHI1VVeX48eMcP36cgoICPvrRj7JkyRIW\\nL17MgQMH6OnpuWlILxAIYBgG+fn5H5h+aXwcVtd1B9jxeOz+4VBQyefzsWTJEu6//37n/rnvvvsc\\nAHDXrl0IgsBHPvIRVqxYccOu0iUlJXzjG9/gwoUL7N69m7NnzzquYfGo1VWrVrFhwwYmTpw45j7S\\n0tJYvHgxx48f5+TJk4Dd14pDZvF93UhZACQnJ2NZgylP9fX17Ny5k6NHj44ZA52amkpubi7l5eX0\\n9fUxMDBAT0/PMJe6OOSXlZXlOPjl5OTwta99bVT7faji92NlZSXhcJgpU6Zwzz33jPpcZ2cnfX19\\n5Obm8k//9E9MmDABsPtiwWDQcbmLj2tLksSKFSsAePbZZ6mqqkKSJNLS0rj//vvJzMwcBgy73W4k\\nSXKgKb/fz2c/+1l++MMfUl1dzauvvsoXv/hF1Fj6kNfrdSBHGIzRjpfJSEiuv7+fH/3oR4RCIXRd\\np66ujsWLF48J9w2trziAJkkSlZWVTn2PHCcPBAKOw2FLS4vz85SUFFatWsX69eu54447uOOOO3j6\\n6ac5duwYwWDQcYeMRCKEQiE0TSMQCDhw4FDQEOzFQ/X19U59f+lLX3JAyeTkZDZs2MCcOXN46qmn\\nOHToEAUFBdx9993jXuOyZcvYuXMnFy9eZN68ebjdbgfMUhTluvOw586dc5w0Lcvi7bffprq6GsOw\\nHbkzMzOd74vu7m4aGxvxer0sWbLEiT2Og7vxCORIJEI0GnUg2N7eXk6cOEFFRQWmadLZ2ckTTzzB\\nsmXLWLduHbm5uezZs4eXX37ZiXkuLCykuLgYn8+HpmlcuHDB+Z568803eeSRR5gxYwYej4c777yT\\n1157jf/6r//iscceIy8vD13XsSyL5ORkent7OXnyJKIo8pWvfIWUlBTnPoo72cbLyTAMzp07x969\\ne6murnYcSb///e/zi1/8gttvv50NGzY4z89Y6u7uBril/lB2djaZmZl0dXVx4cIF5s2bd0Pb6brO\\noUOH2LZtG5cuXUJRFKqrqx3n2bfffpusrCzWr1/PunXrxjy3lpYWvvOd79DZ2QnAzJkzWb9+PQUF\\nBciyTF9fH0ePHuXw4cNcvnyZb33rWzzwwAPDEvUSSuj3Ve8p4Bf/YovbAY+EFBJKaKgSE/aDmjNn\\nDnkTcqmta0Lru4orbdI1P29ZQ8CUQCOCFkRU/Pgm34kou8YtuwcffPCmjjNUWl89ohEmv6jwA/Vs\\n79u3j1A4jIVB6MquIcPzwqBzWjSIKYiYah/EABgluQAluQDJm4nZdY4pU6bwpS996aaOPdRJsLy8\\n3AGwwuEwXq/XAVeuBQwOrXs9FJ9oEiDUGoN9xrGqgCEzIvH/iBDpAMt0VoFcD6A9cvQYogARVUPH\\nhadwzai4YdmdiiclF6tgIVrfVSJNh+ntG+Dw4cPMnz9/3PKJx3makW5MdcCOzfWPsEa2LBgKOLlH\\nDM7EnQkNA13TURQZQYCkjAJCxm1EG/fbAJroxspYYANUuupEd0myhNvtxuV2EQqG0AXDnul0p0P2\\nUqz2w6idFSRlzkSSRHQ9VgcxWNLet2LDaDHgDGXICjvLhEA9dJ6wI4fBhrO6z4Irc/B6htafQ2vF\\nwLpoD/ScxTI1+vv7nZUvNwtAP/zww1iWxb6DRxDNfjz+YgDU6CAehhkFU7SvxwEXAWKxxKFmwERw\\nJUP2ChAEG3i0TDvq2pWO1br3hpzjXBnTiPbUwEAtYvoMZEUmFAzZOKF4neaIZUJ/NUJsP5ZpEG44\\ngGVEMSyZsOHBk12KIdmR1JapI7QfsuvLnQ2m7fhgA42y45aIaccTxKMDtGgUK9KOEGyw60GPoPXU\\nEIwdV/LlEo67QwKWKx2Siu1jKDasR6gNq78KQx0Y5XDoyixFD7bb2zfvQshajOXJsTtvKclEeq4S\\n0UNYst925rMMMLUYlOp24D7Lsoh2XcRqKwctMPiek1xgWUR76+x39AjIcKTerQvrLcHosXNXOy9i\\nhDpBkOgdCNM30HBDIL9pmjz33HMcPnKMsCaM+Y4CkH1ZuLNno/VdJdh0mEOHjwLw8MMP/0EuDEgo\\noYR+/6WqKt/61re4UlNBqj/Ipz+ksWSWDfYN1ablBg1tGr/ZpXG2UuM73/k2f/M3f0tp6Y25t/6+\\nyOfzsXLlKvbteYfvbzH4h89F8V3DHMm0TILBIC2dFr/ckYGmwx0rND51h47bBREVLtRI7DyuUt8c\\n5Hdv/Iba2v+fvTcPjuo60Pafu/Teau27hBCSQOwIxI7NHjtk7CRexx5nnEy8xKlJYo89k6qZb6ZS\\nv+TLVpXEqclUjMfx5Pucz87YmcQJxmAwNjsCZEASi0D72lq61S313n2X3x+3u0GAsHHs8TK8VRSg\\n5d57zrl97j3nPOd9O/na176GMyOHvqEQ57oU5sx47zuWD5yUiMTMVM2cyfTp0//8Qn9AOnnyJMPD\\nQ8iSxnhAJytDZWFNDIdNI54Q6Og30TVopm9I4Mf/x8xffVZh03IDbqwu16kuV1BU2HVUprq6+prv\\n91OprKyML33pS9xzzz14vV7C4TAWi4VAIIDX62VkZIT9+/eTlZXFvHnzrhjPL1myBFdmHsMjYURR\\nQdUE3mp0sLAmarzXT7GWdXl0r6rC4WY78YSA3+/nnXfe4Ve/eo5w0Ad6lILsBEtmazhsOglFoLNf\\n4FRbiMOHPAiShYKyWhasuB3pMtc5QRDIcOUwa8E6quasoqXhj4x7unnhhReoqqqacoHZknSO9o32\\nomkqWfmVhhtycs4sJc/geVQlhjOreBLcByCKMgIJY7OSqiBfAoVlZudTNXcNZxu3o2s6WfnTKZo2\\nDxDSTg0Wi9mIigUkSTZc39QEkmSipHIx/tEuxr19uHtOUzhtPuFIBFVJGHGq8SiaqhhOaqKJ0YFW\\nADKyipP1r+Eb7WagsxH/aA9qwohZUpU4XWffxubMISO7JNU8Vyi1mOQdaqfvwhE0zdjk9pvf/IZH\\nHnkEgIMHD/K73/0Or3cMRdVQVB1JMhmAbzTC4SPHOH68kZKSYh544AGWLFmC3WbF7+klNOHF4co1\\nnAmEdDiq4WqoJoz3SeGSyFRdY7T/NKoSJyOrhBnzNqbbSRAldFVBFGVmL/0iTQd+g9/Tj9/bT3be\\n1RdqRUkmK68cd3czI31nKKuoNRZyAFGSJsXkXi5d1xnqaUIQBMqq6vAOddLc8CqqquDMKqKgbC7l\\nVYtIKCqapiPJJk68/R/EYyEcmYXomnqFY6EoyogmiUQigqYq9Fw4xkj/GWKRQLotJJMFNZHA3XuW\\nob5zRjxvxJjrdWYWUjKjnqyCSjQlAeiYLHZEQSQ04WGo5xRDvS10nDmAEo9Ss2A9mTnFzK3fwunj\\nr9F74TChiVHyy+aQkWXEQkWCPsa9/QhmCfvs6ajptgGrzYbJZCykKuEowzuPEO4dTkOZUnYGsiyh\\nKwpqIEKws59gZz/mbBdFW1Zhycu6ol6D7f2IikZ5Zfn7WtBav349u998k+C5HnJXLUSyXHtuUtd1\\nvIeb8TWeMz73FhOWiiJc00sQTTJaLEG4exBv/yg73tzFvn37ePjhh9OL1WAs4j3zzDMcbTxOTIKC\\nW1bhqCq9YrxnKcgma/EsQp0DjLx5nIbjxwD4+te/fsPJ74Zu6IY+turt7eVHP/oRsViM2tpa7r77\\nbmbMmHFFH3f77bfT3NzMSy+9RE9PDz/84Q/553/+5ytc0D7pqqurIzs7m6GhIV588UUeeOCBa0Jd\\niqIQDAY5duwYR48eBeCJJ55Ib6IdHx/nyJEj7Nu3j4GBAX7xi19w1113sX79ehoaGvD5fOTm5r7n\\n54Su63i9XkwmExs2bPjYPF90XWfnzp0Eg8F0BHF1dTUzZszAZDIRCoU4deoU4+PjNDY20tbWxuOP\\nP05lZSUmk4kVK1awYsUKOjs7GRkZYdWqVZSUlFzXNUiSxMKFC1m4cCGBQAC/328YFpjNjIyMEAgE\\nOHv2LF1dXZSUlFBVVXVF227cuJFjx47R09OTdKI2UVRUxMDAwHXFYWZmZuJ0OhFFkdbWVrZt28Z/\\n/dd/pb8/Z84cqqurMZvNhMNhTp48SU9PD11dXcTjcQYHB68aP5tyXhsdHWViYoJp06bhdrt54YUX\\n+MY3vjHl/KvFYkHTNA4ePIiqqtTX11/VRW7Pnj0A3HrrrVfASSkHutSmp1R9iKLI6tWrOXz4MIcP\\nH8ZsNrN58+Z0BGnK9dtsNqdBOiAdryrLMg888ADf/e53OXPmDF6vF5vNljYKsFqtaTBOURT8fj/d\\n3d2YTKY0rBmJRGhoaGD37t0MDAwQi8UQRZFoNMqePXvYsmXLe4qzPnz4MKOjo2iaRn9/P21tbdTU\\n1JBIJPjtb3+bjo7Vkm71qRhhr9fL9u3b2bFjBwsXLuQrX/kKq1evprGxkdOnT7Nw4cL0u36qjTRN\\nIxqNph0HU99PHfv8+fNomsa9996bnh9I3S8A06dP59FHH+Vf//Vf2bFjB5s3b55yzb62thaTyUQw\\nGKS/v5/c3NxJG7aupXA4zIULF5AkiXXr1vHiiy+ye/duRFFk8eLF3HTTTSxZsoRoNIogCHg8Hr7z\\nne9QVFSEw+FI15fdbk/DlCngLxQKMT4+zs6dO2lsbCSRMDYYiaKIzWZjZGSEHTt2sGPHDnJzcxke\\nHkaSJJYtW8batWspLS1NR8m7XC50Xef06dPs3r2b9vZ2fvzjH/Pkk08yZ84cbrvtNtxuNw0NDfz4\\nxz/mlltuob6+Pjlet3DkyBE0TWPBggUUFhYSCoVQFCXtZp5qt9bWVp599tm02ZbZbKasrAxBENIJ\\nV7t27WLXrl3U19fz1a9+9apGD4cOHUq3zfVKkiTWr1/P7373O/bs2fOeAL9gMMjTTz+dBjMLCgpY\\nsWIF5eXliKKIz+fj8OHDeDweXnnlFd5+++00CJnS2NgYP/rRj/D7/UyfPp2HH374Cgi7qKiIWbNm\\ncffdd/P666/z2muv8cILL2A2m7npppuuu6w3dEMfJ0nf+c53vvNhHfz06dMcPHgQMCbqNmzYQF1d\\n3Yd1ug9cXq83bbebl3f98aU39N6laRrPPPMMh48cJZwQsJStwVa2ApOzCNFkR5StiCY7sqMQc14t\\ngiWLiL8P92A/oyPDV42/+SQrVZazZ04T8fchZ5Qimq7usKRzCdwX9yN4jhkRQSXLMGdVXLPuPKMj\\n1NfXc/bMmXc9z6VSI2NEevdit4jccccXr4hV+qiUSCR49tlnCYXCgACyA7LmQO5CyKyFjEqQnZAI\\noCdCKIEBtNg4Jlf5RThEkIiPteG0W1m/fv37ug5BECgsLGTZsmWsX7+ejRs3kpeXR09PD8ePH2fn\\nzp0cOHCAM2fOYLVayc/Pv7hQcEnbR8PjBpQoCKAEwVWTdJC72r2uX3oByS9p4DmKoISxWi10dXXx\\n+us7GfWOE9etyLnzsBQuxpw/FzmrCl12Eh53E42EUAULcukGrFnl17R6l6xZyBmlhL0dDLsHcLky\\nqKqquurP79+/34iOCQ6hKxFANJzHIsMGQCc7IeJGH28D2Q55S69S1iSph2bAXmZT6quY7NnEva2G\\nK5k5E7lgCaIoIUkiJtlkWN/bbciyZGCTgmAAXbpuAGYmFwS6IBFCdhQgWVzJnTOqER+bqlNdBVUB\\n73HQ4giuWqP+A10w0oA+0Q5qNGnOJyVjfXUI9RgwoCkjWa7Ly6ZDqA9GDqbdApVEnHg8xrx583jm\\nmWfYvn3HNdsvGvTjH/Ny9sxphobcrFq1iuPHjhEN+o3PvyAQjcXQNP0S50HtYrnSf5L/H3vHAMwK\\n14Il8+KlasauQyQzgjkTwv1o8YkpQTIAXU0QHz2NgIrJkYfZkUs0FkVTdQTJdG0bllAvBDuRLBlY\\ni5cS6TtAwt8Nohk9rx6pYDGyo5CYIqJLFgRLltEeWgKyZifLasRLpz9TKTdG3Si/Ot4G3kYIdBqR\\nxFo8DT2qsQniYx3ER5tRI2MgWqBgJeTVg7XAAOtEM4LZBbZ8yJwJ5iwIDxlAa3wCU2aFMRnjKkeL\\nT6BFx4z2DvaCpiCbLCQ8LWixAEJmbdJ5Uk07ThoDT9A1lXDffmKjZwynS9kBmXMgd5HRR9jLwJwB\\nidDU/RzGAmyk7wA2k85f3X9/eqLjepSfn09DwxH8vjEESxaS9cpFs0n3wCXXrikxdNmJmD0bR9ny\\na97HdXV16UnC3bt3s337DsIJAceMWzFlFH9gfdQN3dAHqU/TOOLTVJaPs55//nlamo6T5wrxv74a\\nY2aFzlQ8cqYTls3VmAhpdPYpnDh5mjVr1rynSeJPkmbOnMnJUy0MDgdouqAxr0rDcZWhio6xg7+t\\nF575r2wCYZklszW+frcRDWuSwWaBimKd9fUqtZUqTRcU+ge89A8MUVdXx4UL7TS3KSyu1XBeOxUR\\ngHNdIs/+3oIuOPnLv7w/HRH0UUrXdQ4dOsS//dsvQItQURjn/lsm+Ort4yyujTF3RpwF1THWLY6w\\nsCaGokDvsInmNglJglkVF8cTnQMCrd0WKmfMnLSZKxV1EwgEDGc3SbomOC/LMhaLhdbWVn7/+9+z\\n/bU/cfKdBk63nKTp1DscPdrAW2/tJRgMUlhYmAZsJEmitLSUw4ePkkjEDSguILF8bpgMu37NvU4p\\nCQIcO2tj/ykH8YSAJOo0HD2GlhindnqYL98W575bFOZXa8ys0JldqbFqoUb3gMCg10JW/gyq5m1C\\nEMVrLjSIokRh6SzGRvsZHxshHo9ddd5L0zROnTpFU9MpghNjaJpCPBpgsOsEI/1n0dQEVkc2kmym\\no2U38ViIabPW4HDlTy5keqinISYX+i6V3ZFFx5mDSLKJ2rrN5BaUYLXasFqtSUeGi+0lCAIJJZGM\\n+THcGiTZjGfwPNHwOBU19aiKarj36RqyyYKmqaDrTHj7cHedBF1DttjwuNvobt2Pu+sk4cAoqmK8\\nS4uyCavNhaYm8AyeR5Yt2Jw56Xhf4RJX+kQ8ymDXO3Sdfgtd18gprCYWnqC3t5s777yTV199lf/3\\n/17EPx7CZMuionYV85bdRtXcm6isXUlp5UJEycSE38PYmJfjx4+mF3O6u7tRdZ28oirD3TMRR5Rk\\nZLM1WbUaOhq6piUjTnU0XaP77F40VWHW4s9hc1wEN1N1AiBKJnRNZWKsH01VKCybddV7xe8doPPM\\nARLxKIloEIcrF5sjO7l4JF7h5Hip3F0nGOprQTaZKa+up/nIH1BVhaJpC6hZtAVHZr4BbCZjeU0m\\nK/2dx9E1hfKZKxEFyYgf1jTEZFun/ui6TtupHYz0nzHuQ3sWZdXLKJ+5kuyCGYiSbLgZRgJEQz50\\nTSO7YAZzV9yNIyMPIdkHpOpDkmTMFjs5hTNwZOThHWpjfGwAi82JK7sIZ2Y+DlceHnc7oYCH0f5z\\n+D09JGJBetvfIRQawzqzDFN5rgGTAja7Pf2MS0yEGHjlLWKjPgSLjG3OdDI2LCZjWS222mlYa8qw\\nzSpHdFhR/UGUiRCB8z3YSvIxuSZDfKNvNSJHEtx1x51UVlZOWf9TyeVy0draysjwMEosjn361GMT\\nXdfx7DuB/+R5EATsC6vIuGkBWfOqcE0rxlqQg60kD9ecSpw15STicYLDXppOnCQ/Pz8dcbd79252\\nvLGTmASld23AXlZwzfGQOScT+/RifK1dDPcP4Mr4YMdDqqqSSCTSi8E3dEOX6tM0jvg0leXjqkgk\\nwve+9z1CoRDLli3jG9/4Bnl5eVftW0RRpLi4mOXLl9PS0oLb7aanp4fVq1d/BFf+4UkURSorKzly\\n5AgdHR34fD7mzJlzVQcwVVWZmJhg//79vPzyywiCwFe+8pV09KzJZCIjI4PZs2ezefNmrFYrZ86c\\n4ezZs0yfPp3x8XHGxsYIhUK4XK537dNTbnCBQICsLCPZ5+MQlawoCv/xH//Bvn37MJlM1NXV8bWv\\nfY0vfOELLFiwgLlz51JXV8fmzZspLy/H6/UyNDTEkSNHmDNnziTnuUOHDuH3+1m5cuWkr2uaRiQS\\nIRgMAsaY51r1lQLajh07xksvvcTbb79NY2MjJ0+epLGxkQMHDnDixAnAAFJS7/d5eXkEAgFaW1uJ\\nx+PpDTvXC/hVV1eTmZmJJEn4fD5aW1sRRZFNmzbxyCOPcMsttzB79mxmzjTGfjfffDO7du1ifHyc\\nzs5OBgcHkSTpmgCnqqppoNLn81FTU3NVx7BoNMpbb73FwMAAPp+PRCLBhQsX2L59O2fOnMFsNlNY\\nWIjf7+eFF15AkiQeffTRK+6tVORwCsq7/NqCwSCNjY1kZmby13/91zgcDmw2GxaLZVJ7CYKQdnYU\\nBAFZljGbzXi9XgYHB5FlOR2hmhr/ms1mVFVFVdV0FHB2djZ+v58jR47w0ksvcfz48fRzQ5IkHA4H\\nLpeLQCBAd3c3mZmZZGRkXLUdfT4fBw4coKurC4vFwuzZs9PXs3z5cn76059y9OhR4vE4ZWVlrFq1\\nik2bNlFfX099fT0VFRVp0M/tdtPY2MimTZs4deoUPp+PoqIiMjO8Zxc+AAAgAElEQVQz02Wy2+2Y\\nzeY00Jf6k3Lx8/l8NDU1kZOTw+OPP57uf1JRtrquoygKpaWlnDp1Co/HQ2lp6VXnSHRdZ9u2bZw8\\neZJEIoHX66WmpiZtbmE2m6e8z1RV5bXXXmNiYoK6ujri8Tjbtm1DlmW+9rWvceutt5Kfn5+Osbbb\\n7YyPj3Pw4EEKCgrYuHFjusxAGvJMResODQ3x9NNP09bWhqZp1NbWctddd3HrrbdSWVmJJElEIhG8\\nXi8ejwdRFLnnnnu4884705+vS0FRWZYpLCxkxYoVTExM0N3dzYkTJ6ivrycjI4O6ujqCwSAdHR20\\ntrayb98++vv7GR4eZtu2bcTjcb74xS+SmZmZNgBxOp3p+n/nnXf4+c9/TjgcpqioiNtvv52HH36Y\\nW2+9lRUrVrBmzRoWL16MKIoMDg7S399PS0sLS5cuneTo7fP5+PWvf40gCDz66KPvK+mpqKiIXbt2\\n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\\nVx77lZQSCOM72UJuZtYV9zP+EPWHNI74QzqWD7KS94kzZ85w6tQpDhw4QDweJycnB5vNhqZpeDwe\\ntm7dyo9//GNaW1uRZZkvfelLFy0mvlINDg7yve99j1dffdV0cSssLCQ3NxeXy4Xf7+f8+fOmk1NZ\\nWRkpKSnX7JivlZIOXr29vRw9epT8/HxycnImHSd6PB6effZZ9u3bhyRJ/P3f/z1FRUWTbPVitbe3\\nm2DM2rVr+drXvsbixYtNByswQKmCggJ6enpoaWkBjEn+RYsWsWzZMhYuXEhBQQHDw8MMDg5y8uRJ\\nDh48yKJFi66obt1uNzt27GBoaIjly5dPAIFeeOEF2tvbOX/+PKFQaNLj1zSNcDhMMrIzGAwm0pR0\\n0tPTsdvtZGVl4fP50BN9yamUBIiSMaJTwXsZGRlYLBY0TaO7u/uqFsQmYTir1UpeXh6iKHL69Gks\\nFgv33HMPGzduNKG0SCRCKBRCURTsdrvZBw4EAng8HgRBoLe3l/r6ekRRZGBggHA4THp6ullXSXAp\\nLS2NDRs20NfXh8vlIjU1FafTicPhwOVykZ6eTkFBAdnZ2aSmpuJ2u5EkiYULF5KWlobdbsfj8eD1\\nerHZbGRlZV10XBf+W1EUE0RrbGxkZGSE5cuXc8MNN5juZMmI3mQUq6ZpKIpiRqGKoojD4cDv99PR\\n0UFWVhaLFy+mrKyMwcFB+vr6WL58Ofn5+UiSZI4VrFarCVcmgcELlZ6eTm1tLeFwmNtvvx2ArVu3\\ncvbsWSorK6moqDABP4fDgSAIKIpCZ2cnTqeTJUuWkJOTQzgcJhAIIIriRe5gkiQxc+ZM8/tJZ7/k\\nsSbhw/FjCV3XcTqdZrtPPrMWLVpkHofD4ZgU6gyHw2Z509PT6evrIxAIUFBQwO23305VVRUpKSn0\\n9/ebEbN5eXmsX7+evr4+6urqOHToEIcOHeLEiROEQiFKS0tNSK+pqYkzZ86Qk5PD9OnTGR0d5eDB\\ng2RmZrJmzZoJZamtreXcuXNs2rTpslHt5eXltLa20t3dTW1tLdFolGnTppmxucl7idfrpaamhp/8\\n5Cd0dnaa14rVaqWgoIC8vDwCgYBphBAMBmlvb0eWZdauXct9993Hxo0bmTt3LrNnz2b+/PmsW7eO\\noqIiRkdHGRgY4J133iEvL48dO3YgCAL3338/o6OjbNu2jV/84hcMDQ2Rm5vLV77ylQnw39UoGYG9\\n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\\nLkXX9QCu8tuV//10aGioDMirra1lbGxszvLMlRs/amtrg7Ybj8cD9S4fQJMkiba2NqqqqtB1HU3T\\nmJ6eZs2aNbS2tnL27Fn6+vooFArkcrkASJzrnKXgk59nH6D04StfQdKH03y4cbayZC6Xo1Ao0N/f\\nz+OPP45lWdTX11NXV0c0GkXTtADWTSaT1NfXMzExweDgINPT0xw+fJg1a9YE/UzXdRYuXEh3dzeO\\n4zA9Pc3IyAgVFRVlZcvlckFf8BeZDAwMBJBfbW0thmGQz+cDG2BVVcvA3tL26tv7+nnzQVsgsOs9\\nevRo0Gbr6upYuXJlcP5oNEpVVVVQpnQ6TSaTwXVdWltbufvuu9mwYUNg/+uf099f13WWL1/Oo48+\\nype+9CU0TWPNmjV84hOfIBaLBfa1/j7JZJJNmzbR2dnJrl27+OAHPxgoeM5W2fRVIH2VxFwuR1dX\\nF8VikbVr19LQ0FA2/tm2zZEjR/jxj38cjCXFYpF8Pk8mk+EXv/gFr7zyCm1tbcTjcfL5PMPDw0xP\\nTwcKfLIsc+rUqQCAy2azfOMb3+CHP/whd999N3feeWegPnfLLbfw7LPPcvjwYaampkgkEoGC5djY\\nGF//+teZmJgAoLW1lVtuuYXaWvEO8dxzz3H8+HH+4R/+gS1btrBt2zZWrFgRtA9fhXLv3r28/PLL\\njI6OUlVVxWc/+9myMUbXdT73uc/xzW9+kzfffJNnnnmGl156iXXr1lFXV4ckSZw6dYpLly7R2trK\\ngw8+SCgUKgPvZsepU6cYGhqiqqqKDRs2BHlUVZXbb7+dAwcOsGvXLn7jN37jCit2v978+1PpvWDP\\nnj0YhsGqVauoqakJbMJhBnK/5557OHbsGNFolE2bNnH69Gmy2Sy+euq6devYtm0btbW1HDx4kO9/\\n//vBQoDSeO6556ivr2f79u1s3br1He/d8zEf/7tiHvCbj/9U8dprrwnlPlMi1v5rKJGrS6rr4Qh2\\nVTuGVoE7vBtj8jxKtJ5w3eortn0v1n6O43D8+PF/MTBQKBTAdZGUq6jbXS0CnkUVOJmvKAcQaULS\\nYrhmtsQq0gNfXM/iUrnKy6IH80laBW64sUwBSkqswC29cetVUOtZlk6fgQW/jlQYFQpxI7uhej3E\\nFwn4ypwuURT0ZjhK1cQkZUapL0iqB3z5MJgxCcM7ryyzOS3KPVu9TZIEQDN5VMAusbaAa8K1IHsB\\n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\\nxjZMH8AMVMVRls0ltKyZ5LbD5Dv7CdVVYaSyWNk8jqYSaJqBEpTf144qn2nG4DjG+QtY2QLmaJLC\\n+QsIIahYtZBYS7OfdyubZ/DFVkRAJ9JQQz6fl/Nvtu2O1VL5JOgu4JVJdHq8pSrcIpG/VwI69e/Y\\nSO8vt2OOTjL8s62EFjYSXj4Pvb7KP9EcTZI720v+bC+OYaKEg1TcdCV6dUK2kdJQQdVVHNvBDMlv\\nvzNnznD69GlaWlr8w/bs2cMTTz1Jxjaof/sGYotm83oRnFFF/S3rGa+tYGzPMR588EFmzpxZBuZP\\nx3RMx3T8vkY2m2XPnj2YplkG372VCIVCNDc309fXR6FQ4NSpUxdZ982ePZsbbriB9evXl0EXu3bt\\n4gc/+AGpVMpX6ytVTgN89bNUKsX+/fv56le/yl//9V/7do1LlizxAZm3atXrqXCV2ogmEglisSLA\\nPWfOHG699VaefvppAN+6MRgM+vCQl04hhLSWj8X8+3sWl6FQiGXLlpUpFk5VrKuoqGBoaIjBwUEA\\n5s6dy8qVK2lra6OlpYXDhw9jGAaqqtLc3OwrQ3kAUular2dL6ymEVVdXU1VVheM4nD9/vkxpDPBV\\nz8bGxqisrPSVqqbaPHq2rxMTE/z85z+no6ODiooKPv3pT5PJZPja177GyMgIH/nIR3jiiSc4d+4c\\nyWQSXdd9tUcP5PIUx9asWcP4+Di9vb2MjIz490okEjQ0NPiqZ6qq+papXroaGxtpamriwoULdHd3\\nMzg4yD333MPnPvc5lixZ4peJB8mk02m2bt3qK7u1traSy+U4fvw4+/fv92Gr97znPUxOTrJ9+3bu\\nvfdevvCFLzA+Pk53dzfRaJS1a9f6Vp6lSpOlwMysWbNobGykp6eH7u5u6uvry8DEbDbrKyqqqkpL\\nSwvZbJahoaHXbbPet3R1dTVLl8p56PHxcerq6mhubqapqcmHVD0b5I0bN9LQ0OAr9z3//PNkMhlO\\nnjzJ4sWLqa+v58KFC4TDYSzLIpPJlPW9qcp+3u+8vHh16wFFXpkAPnxaqp7nwUqltrUeUOWl27O2\\n9tJS2gYrKyuJRqNkMhm6u7t9mLO3t9evY8CHWT0Q12u7Hgzl1bUHtKbTaSKRCJ2dncyfP98/1oP6\\nTNP0x4ypKpOWZZW1g9LzPKDVu38ymSwDC5PJJLFYjDvvvJMf//jHNDU1MX/+fEzT9K/pqYF6+fLu\\n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\\nm9/8Jvfccw99fX0899xzKIqCz+fj0UcfdWHLvLw8/H6/C9k52zY2NrJ+/Xrmz5/PzJkz2bZtG6dP\\nn6a3t5eGhgZkWSYQCOD3+91Y4gvFEU+M5nWAubHn7rTDWK1fv56nn36alpYW2tvbkWWZSCSCaZpu\\nvY6tt2w2S15eHitWrKC5uRlVVd2Uq9raWmbNmsXx48d55JFHuPvuu/H7/RiGgWma7Ny5kyeffJKh\\noSG3DTKZDH19fe5CDad+/X4/6XR6HGDqRJaOBfxe7/61srKSwcFB1wVzbN9w6mYiGOnAkOl0mkRC\\nzO0tW7bMLROQS94Zc3894Z7R2W7i94NTBgdKdc4pmxXj2tLSUiRJoqWlhWQy6V5H+vv72bVrF3v2\\n7KGgoIBgMIiu6wwNDZFMJslkMhiGgaqqNDY2sm/fPoqKipBlmVgsRiQScd0vGxoauOeeey56DkSS\\nJK677jr27t3Lyy+/zM033/ym5llvVXPnzuW2227jV7/6FY8++igdHR1cc801F/yuTKfTbN++nd/8\\n5jcYhsGaNWvGJayBeHb0r//6r0QiEWbMmMEnPvEJSktLx22Tn59PTU0Nf/M3f8MLL7zAL3/5S556\\n6il8Pp8bt/12a86cOdx8880888wz/PjHP+auu+5yWSXnejrx2tfR0cFDDz1EKpVi+fLl1NfXjzvm\\nlClT3jBG2+mTb5Zm+kbSNM11PpzUpC6kSwr49ff3j/v3xayu2bt3LzD6pXjjjTe+7ra1tbXMmTOH\\no0ePuvucOHGCRYsW/RGlntSfi97IaeiN9HqT85P6v9FE+EOrvAJdKhTgjupDsgwRk+gtElGXyS4Y\\n2IsdbxfP2suuwHXyK5gNwSkCqhs6gCJZlJWVUlFRcZ6T0kTJsnxRgMbEsm/ZsoV0xiBQsxbdUyoc\\nwMwsSBKSrzQX3SoJ+KnvFciOiIjP4uUC+pHVUSBP9Qk4CFucQ3jOeIe7N1qQpebl4KnuXIyx47gn\\nQXgWDL4mwDA1BN7czK8EJHtFLLAaFPGjruxRSEm+wFeBZQoHOjXESDTGmjVrUBSFnTt3ixVeNtje\\ncG5/TQBkZkocU/Fx/kyd43xnCQe0/lfF9nnTIX+W2G9wr2h/yDnZzRTQlaQJADDRhR07RSqT4qc/\\n/TknTpwQKyVSaZAkbCsLupWDs2aKtpFyLnKpXgG66TEY3C9gvqLFQC6ydrhJAH2hKTk7EAU8RQI8\\n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\\nNm1C13Wampqor69/S7DW/4Q0TePAgQP89re/JRqN5lyh+vv76enpobGxkV27dtHV1YXf76ewcLz7\\nsc1mY9GiRbz00kuEw2EOHjxIOBymqKgIn8/si3c6neTn57N//34GBweJx+O0t7fT0dFBNBolnU6T\\nyWRIp9NEIhF6enpIpVJ4vd4cRCcIAkNDQxQXF6NpGufPn7+uc19WkmS6rKfTaQoLC3E6nVgslmtO\\nSpNlmUwmQ0tLCwMDAwBjIK3RgGDWtc1utxONRiksLMRqtSJJEnl5ebjdbmbPns327dv57Gc/y9y5\\nc8e8X02fPh2Px5Nz0b7rrrtuabJcY2MjL774Im63m2984xs3lfbh9/uZOXMmhw8fpqWlZUy/wN69\\nezl27BjV1dV87Wtfw2634/P5OHv2LLquk0wmc2VuGEYuGlLTNNLpNMCY+GOXy4Xb7eauu+5i8+bN\\nrF69GqfTydDQUM75TlEUJEli+/bt1NXV0dzcTDqdzjkcBoPBnIseQGVl5ZjkgNHmQoZhoOs6mUwG\\nVVVzsKVhGAwPDzM4OIjH42HevHm5uozFYjknSIvFwqJFi/jIRz7CQw89xD333MOaNWtyIFpFRQVr\\n1qyhsrISj8fD0NBQzskwe/xZuDO7L1nHwyzc53A4qKioYHh4mL6+PsLhcC7ed3BwkN7eXnw+H36/\\nH0EQ8Hq9nDlzhnA4zIIFC3LPterqarZs2UJRURHhcDh3XUWjUWRZpqCggLvvvpvPfe5zrF69egxE\\n1NPTw9GjR/H7/SxatOimz7fRam5upq+vj/nz5zN9+vRbWtZmszFz5kw2b96MzWajtbWVWbNm8Z3v\\nfIe1a9fS39+fgx4XLlw4bnmPx8P69espKCggGo3S399PIBCgo6OD7u5u+vv7kWWZlStX8rd/+7fM\\nnTt3wv149tlnCYVC3HfffdTW1vLaa69x8eJF5s6dy8c//vHctTxRmyjXprZaWbJkCW+88QZ9fX0s\\nWrSInp4ezp07x6xZs9ixYwf19fX09/fT0NDA66+/zuXLlzl9+jQHDhzgueee48iRIwwODuagVLvd\\nzrZt29i+fTtOpzN3n8me51mXSqfTydKlS2lrayMQCNDS0sL69ev/JPri3s+Kx+O88soruN1u7r33\\n3re0jt7eXs6ePUtFRcUNJ29P6tb0x2hH3Pq0UuDSpUtvaWMvv/wy//zP/8zQkNmpaxgGhYWFbN26\\n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\\nlmUKCgpob2/nySefTEZHJ5SIb961axclJSVve4LTtVRSUsJf/uVf8vzzz3Py5Ek8Hg9ZWVlJ6l6i\\nHV0uF+np6QwPDyejuEtKSrh48SJvvfUWGzZs4Atf+AJPPfUUZ8+eJTU1NRnLm2iTiVRDWZaTpkjD\\nMHjllVe45557cLlcRKPRZBzyleS/xD5dqQSFMBHpLQgCc+bMob6+nv3793PfffdhGAbnz59nZGQE\\nVVVxOBwUFxdTWloKWBPJPvWpT92Rdp6OEsS9tra2W1p/dHQ0aV6eDtHx7UrXderq6pImyYmSJIkV\\nK1awdetWKisr74jvJ0FpDAQCt7R+Yr1r0R5nNKN3Qr9xg19CGzZsYMOGDUSjUerr6zlz5gxdXV34\\n/X7rpSeQmppKamoqRUVFLFmyhEWLFr3tzsWMZvTbojtlerhd5rnKykr+5V/+hWPHjt92o9gtRYEC\\nemSEaPdR3HaZe+65J9k+n/3sZzl37hxd3b0w8CaMnLFIcM48EBVMI24ZjgIXQbPienAVYmYuB1ND\\nECSIDoIoIbmz0YO9EA8QGmgmJW/uTcdSXWk+vBlNpK/90z/9E509/dgyl+LImR6NTRBElIxKQr3H\\nOV1Xjyk6cRRtmJK+JruysGdXoY51EOo+wptHjgFcM7Z0OpqKmJWYJW8Z/Kwo28sViAkrm5D4WhIM\\nazaOpmsYUiam4kGIjSKIAozH/AoIYM9ClEQw4phaDEO74sV1ZIS4rw1BcUNqBYJntuUHTMTrmrp1\\nzUiuSdcMhgqRPvCdw1SDYPMipBTiSfUS9NWhxwKTo2cTdMhE1FIyDssyo5kmVoSwFkJQPONGxisk\\niOApxxw5TbS7xiIGTpRpghGnqamJXbt23Vby4kRNh2CXlpnF4NAQ8fGYMVvGHFRf22UDZNZqhEgf\\nphqAwZpxOuIccOUCCphxiAxcvjdNw2oHLUa0603MzLtATgHGI8PEK58tE4x+iWrbpBlzJmBYccqC\\nFRWnizI9vX3U19cjCMINn8G3i474dnQnyKx3WnfKID4d/W9stxnNaEYz+l1RT08Pe/bs4c033xyP\\n69S5bHaScbrTqK6uZuvWreTm5k778zdt2sTLL79EbVOMnUcN7ltzY+qTacJ/vCLTO2QnPSuHpUuX\\n8vzzz7Pz9VfACJKXqbJ1lc6axTpuh7V8/4jAgZMqh2ojtDaf4VtPdfL5J55gyZIlN9zevffeyxuH\\n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\\n/OIXVVJSEufUAAAAADB+hmHo3nvvVWFhoV5++WV1d3erurpab7zxxseuczqdWrlype6//35lZmbG\\nKTEAxBYFPwAAkJBcLpc2b96sRYsWqbq6Wh2dXQr1vKtgoEmybckw5HAYSnY5lF9UqKqqKvn9fsp9\\nAAAAAKaNuXPn6vvf/766urpUW1ur/fv3q7+/X7ZtKykpSUuWLJHf79eCBQviHRUAAAAAJtzatWu1\\nZs0aHT58WDU1NTp27JgGBgbkdDqVlpamVatW6dZbb1VGRka8owJATFHwAwAACcs0zcvFvZaWFtXV\\n1SkQCCgYDMrn8yknJ0fl5eUqLi6m2AcAAABg2pozZ46+/OUv68tf/nK8owAAAADApDJNU8XFxSou\\nLo53FACIGwp+AAAg4ZmmqZKSEh43BQAAAAAAAAAAAACYUVh1AwAAAAAAAAAAAAAAAABAAqLgBwAA\\nAAAAAAAAAAAAAABAAqLgBwAAAAAAAAAAAAAAAABAAqLgBwAAAAAAAAAAAAAAAABAAqLgBwAAAAAA\\nAAAAAAAAAABAAqLgBwAAAAAAAAAAAAAAAABAAqLgBwAAAAAAAAAAAAAAAABAAqLgBwAAAAAAAAAA\\nAAAAAABAAqLgBwAAAAAAAAAAAAAAAABAAqLgBwAAAAAAAAAAAAAAAABAAqLgBwAAAAAAAAAAAAAA\\nAABAAqLgBwAAAAAAAAAAAAAAAABAAqLgBwAAAAAAAAAAAAAAAABAAqLgBwAAAAAAAAAAAAAAAABA\\nAqLgBwAAAAAAAAAAAAAAAABAAqLgBwAAAAAAAAAAAAAAAABAAqLgBwAAAAAAAAAAAAAAAABAAqLg\\nBwAAAAAAAAAAAAAAAABAAqLgBwAAAAAAAAAAAAAAAABAAqLgBwAAAAAAAAAAAAAAAABAAqLgBwAA\\nAAAAAAAAAAAAAABAAqLgBwAAAAAAAAAAAAAAAABAAnLGO0AiC4VCkqTBwUG1trbGOQ0AAACAqWBw\\ncFDSn84TUxlnIgAAAACjxZkIAAAAwEwWizMRBb9PEI1GJUmWZam/vz/OaQAAAABMJZfOE1MZZyIA\\nAAAAY8WZCAAAAMBMNpFnIgp+n8Dj8SgUCsnhcMjj8cQ7DgAAAIApIBQKKRqNToszBGciAAAAAKPF\\nmQgAAADATBaLM5Fh27Y9YXcDAAAAAAAAAAAAAAAAAAATwox3AAAAAAAAAAAAAAAAAAAA8HEU/AAA\\nAAAAAAAAAAAAAAAASEAU/AAAAAAAAAAAAAAAAAAASEAU/AAAAAAAAAAAAAAAAAAASEAU/AAAAAAA\\nAAAAAAAAAAAASEAU/AAAAAAAAAAAAAAAAAAASEAU/AAAAAAAAAAAAAAAAAAASEAU/AAAAAAAAAAA\\nAAAAAAAASEAU/AAAAAAAAAAAAAAAAAAASEAU/AAAAAAAAAAAAAAAAAAASEAU/AAAAAAAAAAAAAAA\\nAAAASEAU/AAAAAAAAAAAAAAAAAAASEAU/AAAAAAAAAAAAAAAAAAASEAU/AAAAAAAAAAAAAAAAAAA\\nSEAU/AAAAAAAAAAAAAAAAAAASEAU/AAAAAAAAAAAAAAAAAAASEAU/AAAAAAAAAAAAAAAAAAASED/\\nH2K/HkndoEwZAAAAAElFTkSuQmCC\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1800x1200 with 6 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"image/png\": {\n              \"height\": 843,\n              \"width\": 1276\n            },\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"#@title Visualization of example trajectories\\n\",\n        \"\\n\",\n        \"FONT_SIZE = 26\\n\",\n        \"LINE_WIDTH = 1.1\\n\",\n        \"MARKER_SIZE = 70\\n\",\n        \"ALPHA = 0.9\\n\",\n        \"GRAY = (0.3, 0.3, 0.3)\\n\",\n        \"SZ = 6\\n\",\n        \"N = 2000\\n\",\n        \"scatter_plot_settings = dict(s=MARKER_SIZE, alpha=ALPHA, edgecolor=GRAY)\\n\",\n        \"\\n\",\n        \"x1_dim = 2\\n\",\n        \"x2_dim = 2\\n\",\n        \"\\n\",\n        \"env_key, episode_key = random.split(random.PRNGKey(14))\\n\",\n        \"generator_fn = gen_dynamics(env_key, x_dims=(x1_dim, x2_dim))\\n\",\n        \"gen = generator_fn(episode_key, batch_size=N)\\n\",\n        \"(x, xp, r) = next(gen)\\n\",\n        \"ind = jnp.argsort(r)\\n\",\n        \"(x, xp, r) = (jax.device_get(d[ind]) for d in (x, xp, r))\\n\",\n        \"\\n\",\n        \"plt.figure(figsize=(3*SZ, 2*SZ))\\n\",\n        \"x2 = x[:, x1_dim:]\\n\",\n        \"x2p = xp[:, x1_dim:]\\n\",\n        \"plt.subplot(2, 3, 1)\\n\",\n        \"plt.scatter(x2[:, 0], x2[:, 1], c='b', **scatter_plot_settings)\\n\",\n        \"plt.title('Start state', fontdict=dict(size=FONT_SIZE))\\n\",\n        \"plt.ylabel('Direct Learning', fontdict=dict(size=FONT_SIZE))\\n\",\n        \"\\n\",\n        \"plt.subplot(2, 3, 4)\\n\",\n        \"plt.scatter(x2[:, 0], x2[:, 1], c='b', **scatter_plot_settings)\\n\",\n        \"plt.ylabel('Hindsight Learning', fontdict=dict(size=FONT_SIZE))\\n\",\n        \"\\n\",\n        \"plt.subplot(2, 3, 2)\\n\",\n        \"plt.title('Terminal state', fontdict=dict(size=FONT_SIZE))\\n\",\n        \"\\n\",\n        \"sums = np.sum(x2p, axis=1)\\n\",\n        \"sums[(sums!=1) * (sums!=0)] = 2\\n\",\n        \"plt.subplot(2, 3, 5)\\n\",\n        \"plt.scatter(x2[:, 0], x2[:, 1], c=cm.Set2(sums/3), **scatter_plot_settings)\\n\",\n        \"\\n\",\n        \"# Visualize rewards with colors\\n\",\n        \"plt.subplot(2, 3, 3)\\n\",\n        \"plt.scatter(x2[:, 0], x2[:, 1], c=cm.binary(r/2.0), **scatter_plot_settings)\\n\",\n        \"plt.title('Rewards', fontdict=dict(size=FONT_SIZE))\\n\",\n        \"plt.subplot(2, 3, 6)\\n\",\n        \"plt.scatter(x2[:, 0], x2[:, 1], c=cm.binary(r/2.0), **scatter_plot_settings)\\n\",\n        \"\\n\",\n        \"for i in range(6):\\n\",\n        \"  plt.subplot(2, 3, i+1)\\n\",\n        \"  plt.xlim([-3.5, 3.5])\\n\",\n        \"  plt.ylim([-3.5, 3.5])\\n\",\n        \"  plt.grid('off')\\n\",\n        \"  plt.tick_params(\\n\",\n        \"      axis='both', which='both', bottom=False, top=False, left=False,\\n\",\n        \"      right=False, labelbottom=False, labelleft=False)   \\n\",\n        \"\\n\",\n        \"plt.subplot(2, 3, 2)\\n\",\n        \"plt.axis('off')\\n\",\n        \"plt.tight_layout(pad=1.4)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"WT-tzJHQ2Svn\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Network and loss definitions\\n\",\n        \"\\n\",\n        \"class HindsightValueNet(hk.Module):\\n\",\n        \"  \\\"\\\"\\\"HiMo value estimation architecture.\\n\",\n        \"\\n\",\n        \"  This defines the network for the value function and hindsight value functions. It can\\n\",\n        \"  also be used as a model-free baseline with the baseline_mode flag to control for capacity.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               hidden_size=8,\\n\",\n        \"               phi_size=4,\\n\",\n        \"               baseline_mode=False,\\n\",\n        \"               name=\\\"HindsightValueNet\\\"):\\n\",\n        \"    \\\"\\\"\\\"Init.\\n\",\n        \"\\n\",\n        \"      Args:\\n\",\n        \"        hidden_size: Dimension of the hidden layers throughout the network.\\n\",\n        \"        phi_size: Dimension of the hindsight bottleneck phi vector, and its approximation phi_hat.\\n\",\n        \"        baseline_mode: boolean, whether to use the network in model-free mode as a baseline.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(HindsightValueNet, self).__init__(name=name)\\n\",\n        \"    self._phi_size = phi_size\\n\",\n        \"    self._hidden_size = hidden_size\\n\",\n        \"    self._baseline_mode = baseline_mode\\n\",\n        \"\\n\",\n        \"  def __call__(self, inputs):\\n\",\n        \"    \\\"\\\"\\\"Network definition based on inputs.\\n\",\n        \"\\n\",\n        \"      Args:\\n\",\n        \"        inputs: Network inputs, tuple composed of initial observation x and next obs x'.\\n\",\n        \"\\n\",\n        \"      Returns:\\n\",\n        \"        The predictions v_pred (only uses x), v_hind_pred (uses both x and x'), and the phi/phi_hat\\n\",\n        \"        vectors.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    x, xp = inputs\\n\",\n        \"\\n\",\n        \"    phi_net = hk.nets.MLP(\\n\",\n        \"        output_sizes=[self._hidden_size, self._phi_size], activate_final=False)\\n\",\n        \"    phi = phi_net(xp)\\n\",\n        \"\\n\",\n        \"    h_net = hk.nets.MLP(\\n\",\n        \"        output_sizes=[self._hidden_size, self._hidden_size],\\n\",\n        \"        activate_final=True)\\n\",\n        \"    h = h_net(x)\\n\",\n        \"\\n\",\n        \"    phi_hat_net = hk.nets.MLP(\\n\",\n        \"        output_sizes=[self._phi_size], activate_final=False)\\n\",\n        \"    phi_hat = phi_hat_net(h)\\n\",\n        \"\\n\",\n        \"    v_hind_pred_net = hk.nets.MLP(\\n\",\n        \"        output_sizes=[self._hidden_size, 1])\\n\",\n        \"    v_hind_pred = v_hind_pred_net(jnp.concatenate([h, phi], axis=-1))\\n\",\n        \"\\n\",\n        \"    v_pred_net = hk.nets.MLP(\\n\",\n        \"        output_sizes=[self._hidden_size, 1])\\n\",\n        \"    if not self._baseline_mode:\\n\",\n        \"      v_pred_inputs = jnp.concatenate(\\n\",\n        \"          [h, jax.lax.stop_gradient(phi_hat)], axis=-1)\\n\",\n        \"    else:\\n\",\n        \"      v_pred_inputs = jnp.concatenate([h, phi_hat], axis=-1)\\n\",\n        \"    v_pred = v_pred_net(v_pred_inputs)\\n\",\n        \"\\n\",\n        \"    return v_pred, v_hind_pred, phi, phi_hat\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class ModelValueNet(hk.Module):\\n\",\n        \"  \\\"\\\"\\\"Model-based value architecture.\\n\",\n        \"\\n\",\n        \"  This trains a value network that depends on x and x' (in this case can be interpreted as a\\n\",\n        \"  reward function r(x,x') that depends on that single transition), and a model network to predict x'\\n\",\n        \"  from x. The value is estimated at test time by passing the predicted x' to the value network.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  def __init__(self,\\n\",\n        \"               hidden_size=8,\\n\",\n        \"               name=\\\"ModelValueNet\\\"):\\n\",\n        \"    \\\"\\\"\\\"Init.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      hidden_size: Dimension of the hidden layers throughout the network.\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    super(ModelValueNet, self).__init__(name=name)\\n\",\n        \"    self._hidden_size = hidden_size\\n\",\n        \"\\n\",\n        \"  def __call__(self, inputs):\\n\",\n        \"    \\\"\\\"\\\"Network definition based on inputs.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      inputs: Network inputs, tuple composed of initial observation x and next obs x'.\\n\",\n        \"\\n\",\n        \"    Returns:\\n\",\n        \"      The predictions v_pred (uses x and x'), v_pred_test (uses x and x' prediction), and the x'\\n\",\n        \"      prediction (xp_pred).\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    x, xp = inputs\\n\",\n        \"\\n\",\n        \"    v_pred_net = hk.nets.MLP(\\n\",\n        \"        output_sizes=[self._hidden_size, self._hidden_size,\\n\",\n        \"                      self._hidden_size, 1])\\n\",\n        \"    v_pred = v_pred_net(jnp.concatenate([x, xp], axis=-1))\\n\",\n        \"\\n\",\n        \"    xp_pred_net = hk.nets.MLP(\\n\",\n        \"        output_sizes=[self._hidden_size, self._hidden_size, x.shape[1]])\\n\",\n        \"    xp_pred = xp_pred_net(x)\\n\",\n        \"    v_pred_test = v_pred_net(jnp.concatenate([x, xp_pred], axis=-1))\\n\",\n        \"\\n\",\n        \"    return v_pred, v_pred_test, xp_pred\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def vnet_loss(hidden_size, phi_size):\\n\",\n        \"  \\\"\\\"\\\"Computes the loss for the model-free value network baseline.\\\"\\\"\\\"\\n\",\n        \"  def loss_fn(inputs):\\n\",\n        \"    x, xp, r = inputs\\n\",\n        \"\\n\",\n        \"    hind_v_net = HindsightValueNet(\\n\",\n        \"        hidden_size=hidden_size, phi_size=phi_size, baseline_mode=True)\\n\",\n        \"    v_pred, _, _, _ = hind_v_net([x, xp])\\n\",\n        \"\\n\",\n        \"    loss = jnp.mean((v_pred - r)**2)\\n\",\n        \"    return loss, (loss,)\\n\",\n        \"  return hk.transform(loss_fn)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def vnet_himo_loss(hidden_size, phi_size, model_loss_weight=3.0):\\n\",\n        \"  \\\"\\\"\\\"Computes the loss for the hindsight modelling network.\\\"\\\"\\\"\\n\",\n        \"  def loss_fn(inputs):\\n\",\n        \"    x, xp, r = inputs\\n\",\n        \"\\n\",\n        \"    hind_v_net = HindsightValueNet(hidden_size=hidden_size, phi_size=phi_size)\\n\",\n        \"    v_pred, v_hind_pred, phi, phi_hat = hind_v_net([x, xp])\\n\",\n        \"\\n\",\n        \"    v_loss = jnp.mean((v_pred - r)**2)\\n\",\n        \"    v_hind_loss = jnp.mean((v_hind_pred - r)**2)\\n\",\n        \"    model_loss = jnp.mean((phi_hat - jax.lax.stop_gradient(phi))**2)\\n\",\n        \"\\n\",\n        \"    loss = v_loss + v_hind_loss + model_loss_weight * model_loss\\n\",\n        \"    return loss, (v_loss, v_hind_loss, model_loss)\\n\",\n        \"\\n\",\n        \"  return hk.transform(loss_fn)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def vnet_model_loss(hidden_size, model_loss_weight=3.0):\\n\",\n        \"  \\\"\\\"\\\"Computes the loss for the model-based baseline.\\\"\\\"\\\"\\n\",\n        \"  def loss_fn(inputs):\\n\",\n        \"    x, xp, r = inputs\\n\",\n        \"    model_v_net = ModelValueNet(hidden_size=hidden_size)\\n\",\n        \"\\n\",\n        \"    v_pred, v_pred_test, xp_pred = model_v_net([x, xp])\\n\",\n        \"\\n\",\n        \"    train_v_loss = jnp.mean((v_pred - r)**2)\\n\",\n        \"    test_v_loss = jnp.mean((v_pred_test - r)**2)\\n\",\n        \"    model_loss = jnp.mean((xp_pred - jax.lax.stop_gradient(xp))**2)\\n\",\n        \"\\n\",\n        \"    loss = train_v_loss + model_loss_weight * model_loss\\n\",\n        \"\\n\",\n        \"    return loss, (test_v_loss, train_v_loss, model_loss)\\n\",\n        \"\\n\",\n        \"  return hk.transform(loss_fn)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"uE4XpUWCbkwa\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Training loops\\n\",\n        \"def get_update_fn(loss_fn, opt):\\n\",\n        \"  \\\"\\\"\\\"Builds and returns a pmapped update function that runs on all devices.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"   loss_fn: the loss function to be optimized.\\n\",\n        \"   opt: the optix optimizer to be used for loss minimization.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    pmapped update function.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def update_fn(params, opt_state, *inputs):\\n\",\n        \"    rng = None\\n\",\n        \"    grads, loss = jax.grad(loss_fn, has_aux=True)(params, rng, *inputs)\\n\",\n        \"    grads = jax.lax.pmean(grads, axis_name='i')\\n\",\n        \"    updates, opt_state = opt.update(grads, opt_state)\\n\",\n        \"    params = optix.apply_updates(params, updates)\\n\",\n        \"    return params, opt_state, loss\\n\",\n        \"\\n\",\n        \"  update_fn = jax.pmap(update_fn, axis_name='i')\\n\",\n        \"  return update_fn\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def train(rng_key,\\n\",\n        \"          loss_fn,\\n\",\n        \"          data_generator,\\n\",\n        \"          batch_size=16,\\n\",\n        \"          learning_rate=1e-3,\\n\",\n        \"          num_training_iterations=5000,\\n\",\n        \"          report_interval=100,\\n\",\n        \"          mv_avg_decay=0.99,\\n\",\n        \"          logging_prefix=''):\\n\",\n        \"  \\\"\\\"\\\"Traininig script.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  num_devices = jax.local_device_count()\\n\",\n        \"\\n\",\n        \"  opt = optix.adam(learning_rate=learning_rate, eps=1e-3)\\n\",\n        \"  update_fn = get_update_fn(loss_fn.apply, opt)\\n\",\n        \"  reshape = lambda x: jnp.reshape(\\n\",\n        \"      x, [num_devices, batch_size//num_devices, -1])\\n\",\n        \"  gen = map(lambda x: tree.map_structure(reshape, x),\\n\",\n        \"            data_generator(rng_key, batch_size=batch_size))\\n\",\n        \"\\n\",\n        \"  # NOTE: use the same key on all devices to initialise parameters to the same\\n\",\n        \"  # value on all devices.\\n\",\n        \"  rng_key, _ = random.split(rng_key)\\n\",\n        \"  params = jax.pmap(loss_fn.init)(\\n\",\n        \"      jnp.stack([rng_key] * num_devices), next(gen))\\n\",\n        \"  opt_state = jax.pmap(opt.init)(params)\\n\",\n        \"\\n\",\n        \"  for train_iteration in range(num_training_iterations):\\n\",\n        \"    params, opt_state, aux = update_fn(params, opt_state, next(gen))\\n\",\n        \"    # The loss returned by `update_fn` is an array of shape [n_devices].\\n\",\n        \"    # Take the mean to get a single value.\\n\",\n        \"    aux = tree.map_structure(jnp.mean, aux)\\n\",\n        \"    if train_iteration == 0:\\n\",\n        \"      aux_smoothed = aux\\n\",\n        \"      aux_data = tree.map_structure(lambda x: [], aux) + ([],)\\n\",\n        \"    else:\\n\",\n        \"      mv_avg = lambda x, y: x * mv_avg_decay + y * (1 - mv_avg_decay)\\n\",\n        \"      aux_smoothed = tree.map_structure(mv_avg, aux_smoothed, aux)\\n\",\n        \"\\n\",\n        \"    if (train_iteration + 1) % report_interval == 0:\\n\",\n        \"      message = logging_prefix + ' - progress: {0:3.0f}%'.format(\\n\",\n        \"        train_iteration/(num_training_iterations-1)*100)\\n\",\n        \"      print(message, end='\\\\r')\\n\",\n        \"      to_add = aux_smoothed + (train_iteration,)\\n\",\n        \"      tree.map_structure_up_to(\\n\",\n        \"          to_add, lambda x, y: x.append(y), aux_data, to_add)\\n\",\n        \"  return aux_data\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"height\": 712\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 2867818,\n          \"status\": \"ok\",\n          \"timestamp\": 1584473852216,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": 240\n        },\n        \"id\": \"ejSJXzTCgiAo\",\n        \"outputId\": \"005d2791-1581-4403-b772-2de3dbb616c9\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Running on 1 devices of type cpu:0\\n\",\n            \"Num runs: 10 -- Batch size: 64\\n\",\n            \"Training vnet...\\n\",\n            \"Training himo...\\n\",\n            \"Training model-based vnet...\\n\",\n            \"Done!\\n\"\n          ]\n        },\n        {\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAABMIAAASiCAYAAABXg0X6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAAWJQAAFiUBSVIk8AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xl8VPW9//HXOTOTHUgMCIiyyBLE\\ngCKiWHCLWBUue61LwQ23qlXbchVtf73QSlUq2larVW+tXgrixo5CBUStWgRFiigRQZF9MZA9s5xz\\nfn9MZsgks4WEJeT97IOHzTnf8z3fk0yG8Mnn8/kajuM4iIiIiIiIiIiIHOfMo70AERERERERERGR\\nI0GBMBERERERERERaRYUCBMRERERERERkWZBgTAREREREREREWkWFAgTEREREREREZFmQYEwERER\\nERERERFpFhQIExERERERERGRZkGBMBERERERERERaRYUCBMRERERERERkWZBgTAREREREREREWkW\\nFAgTEREREREREZFmQYEwERERERERERFpFhQIExERERERERGRZkGBMBEREZGjYMKECeTl5fH0008f\\n7aWIiIiINBsKhImIiEizc//995OXl8eQIUOSvmbGjBnk5eXRu3dvSkpKDuPqjk2vvfYaeXl59OrV\\n62gvRUREROSQKRAmIiIizc6oUaMA2LRpE+vWrUvqmrlz5wJwySWX0LJly8O2NhERERE5fBQIExER\\nkWbn3HPPpUOHDgDMmzcv4fjNmzfzn//8BzgYRBMRERGRpkeBMBEREWl2DMNg+PDhACxatIhAIBB3\\nfChY1qZNGwYNGnTY1yciIiIih4f7aC9ARERE5GgYNWoUzzzzDEVFRbz33nsUFBREHec4DvPnzwdg\\n2LBhuFyu8DnLsvj4449ZunQpn376Kbt376akpITs7GzOPPNMxo0bx7nnnluvdX344YfceOONdOzY\\nkbfffjvqmNdee41f//rXnHfeebz44otRx6xatYoZM2bw6aefUlRURGZmJr169eLKK6+sV2+0xlBa\\nWsoLL7zA0qVL2bZtGwCnnHIKl156KTfeeCNZWVlRr/v3v//NjBkz+Oyzz9i/fz9paWmccMIJdO/e\\nnQsvvJArr7wSwzDC48vKynjxxRdZtmwZ3377LX6/n+zsbNq2bcu5557L6NGj6dat2xF5ZhERETk2\\nKRAmIiIizVKnTp3o27cva9asYe7cuTEDYStXrmTHjh0AjBw5MuLcV199xQ033BD+OCUlBY/Hw969\\ne3n77bd5++23mTBhArfccsthe47aHMdh6tSpvPDCC+FjmZmZFBcX8+GHH/Lhhx+yfPlypk6dimke\\n/uKAb775hptuuin8OUxPTwegsLCQwsJC5syZw4svvkjHjh0jrps5cyaTJ08Of5yeno5lWWzZsoUt\\nW7awdOlSRo8ejdsd/HG2uLiYq666im+++QYA0zRp0aIF33//PXv37uXzzz/H4/Hw85///LA/s4iI\\niBy7FAgTERGRZmvUqFGsWbOGd955h5KSkqhN8ENlkb169SIvLy/iXEpKCkOGDGHEiBH07t2bE044\\nAcMw2LdvH7NmzeLpp5/m8ccf57zzziM/P/+IPNPf//53XnjhBXJzc7n77rsZMmQILVu2pKqqiuXL\\nl/P73/+eBQsW0LNnT26++ebDuhafz8fPfvYzduzYQYcOHZgyZQoDBgwAgplvDz74INu3b+euu+7i\\n9ddfJyUlBYDy8nKmTp0KwI9//GPuvPNO2rVrB8CBAwdYu3Ytc+fOjcgGe/HFF/nmm2/Izc3l4Ycf\\nZuDAgbjdbvx+P9u2bePtt98mJyfnsD6viIiIHPvUI0xERESarSFDhpCamorP5+Ott96qc76yspIl\\nS5YAdbPBALp27coTTzzBRRddRG5ubjgw07p1a+666y5uv/12bNtm1qxZh/dBqh04cIA///nPeDwe\\nnnvuOa6++upwcC8tLY0hQ4bwpz/9CYDnn38+YW+0hlqwYAEbN27E4/Hw/PPPc95552EYBoZhMHDg\\nQJ599lncbjeFhYW8+eab4esKCwuprKwkKyuLyZMnh4NgANnZ2Vx44YU88cQTEWWqa9euBeDmm2/m\\nwgsvDGeKeTweunTpwq233sqVV155WJ9XREREjn0KhImIiEiz1aJFCy655BIA5s6dW+f822+/TXl5\\nOW63m//6r/+q9/wXX3wxAJ9++mnDFpqkxYsXU1lZSf/+/WNmoPXr148OHTpw4MABvvjii8O6nlAQ\\n8Yc//CFdu3atc75nz54MHjwYICIQGeoZ5vf7OXDgQFL3Cl2zd+/eBq1ZREREjm8qjRQREZFmbeTI\\nkbz55pt8+umnbN26lVNOOSV8LlQWef7555Obmxv1+srKSmbNmsWyZcvYtGkTJSUldTKt9uzZc/ge\\noIY1a9aE/ztw4MCY44qLiwHYtWsXffr0OWzrCQXa4m0YMGDAABYvXsz69evDx7p06cIpp5zC1q1b\\nueqqqxg7diznn38+p556asx5LrjgApYsWcKLL75IUVERQ4cO5ayzzorZiF9ERESaJwXCREREpFkb\\nNGgQbdq0Ye/evcybN4+77roLCAavPvroIyDYSyya3bt3M27cOLZs2RI+lpGRQcuWLTFNE8uy2L9/\\nP5WVlYf/QTiYDVVZWZnUPQ/3uvbv3w9A27ZtY44JlT2GxkKwnHHatGnceeedfPfdd/z+978HgmWR\\nAwYMYOTIkeFsu5AxY8awZs0aXn/9debOncvcuXMxTZOePXtSUFDA1VdfTZs2bRr7EUVERKSJUSBM\\nREREmjWXy8Xw4cP529/+FhEImz9/PpZlkZ2dXSfoEvLQQw+xZcsWOnbsyP33388555wT0XB/8+bN\\nXHHFFTiOc0SexbZtAMaPH8999913RO6ZDJ/PV+9rzjjjDN5++23++c9/8sEHH/DJJ5+wbds2Fi9e\\nzOLFi7n44ot5+umnwztfGobBlClTuO6661i8eDGrV69m7dq1fPHFF3zxxRe88MILPP3005x33nmN\\n/XgiIiLShKhHmIiIiDR7oYyv7777LtzPK1QWOWTIkPBuhjV5vV7eeecdAB5//HEGDx5cZ9fJ77//\\nvt5rCTWA93q9MceUlpZGPR4q39y0aVO973s4hHZp3LFjR8wxu3btihhbU3p6OiNGjGDq1KksW7aM\\npUuXcsstt2AYBu+88w6vvvpqnWvy8vK45557mD59OqtXr+aZZ56he/fuVFRUcP/992NZViM9nYiI\\niDRFCoSJiIhIs9e9e3dOP/10INg0/4svvuCrr74CYpdFfv/99/j9fgBOO+20qGM+/PDDeq8lFEzb\\nt29fzKDNunXroh7v27cvACtXrgz3ATuaevXqBcC///3vmGNC50Kf/3hOOeUUJkyYwA9/+EMAVq1a\\nFXd8SkoKBQUFPPHEE0CwlPW7775Lau0iIiJyfFIgTERERISDAa/FixeHM41OPfXUmM3kazZh37hx\\nY53zu3btYubMmfVex6mnnorH48GyrHDGWU2bN29m6dKlUa8dMmQI6enpVFZW8thjj8W9z5EIlF12\\n2WUArFixgsLCwjrnN2zYEH6WK664Inw8USllWlpanXHxrgmNT2ZuEREROb4pECYiIiICDB06FI/H\\nQ3FxMa+88goQOxsMgplbvXv3BmDixIls2LABCPbp+uCDDxg3btwhrSM1NTXck2zKlCl8+umn2LaN\\nZVm89957jB8/nvT09KjXnnDCCdx7770AvPrqq/ziF7+ICNJ5vV5Wr17N//zP/zB27NhDWh9AUVFR\\n3D9VVVUADBs2jO7du+M4Dj/96U/D2V+O4/DBBx9w2223EQgEyMvLY8iQIeH5ly9fztVXX81rr70W\\nUVZZWVnJyy+/zJtvvgkENzoIue6663jooYdYvXp1RFnpV199xYMPPggEG/N369btkJ9bREREmj41\\nyxcREREhGES68MILWbp0KbZtY5omw4cPj3vNgw8+yA033MCGDRsYMWIEGRkZWJaF1+slOzubKVOm\\ncOedd9Z7LRMmTODjjz9mx44dXHPNNaSnp2PbNl6vl9NPP53rr7+ehx9+OOq1N9xwA2VlZTz11FMs\\nWrSIRYsWkZ6eTkpKCqWlpeGG+p06dar3ugAsy0rYcP6ee+7hjjvuICUlhSeffJIbb7yR7du3c/31\\n15ORkYHjOOEdKzt06MCTTz5Zpw/bmjVrWLNmDRDM6EpNTaWkpCS88cDFF1/Mj370o/D4srIypk+f\\nzvTp0zFNkxYtWlBZWRnOAMvIyGDq1KnhHmwiIiLSPCkjTERERKRazQywAQMG0K5du7jjzzrrLGbN\\nmsUll1xCq1atCAQCtG7dmquvvpp58+bRvXv3Q1pHp06deOWVVxg6dCg5OTlYlkX79u254447mDlz\\nJpmZmXGvv+uuu5g7dy5XXnklnTp1wnEcKioqaNOmDRdccAGTJ09m1qxZh7S2+urSpQvz58/npz/9\\nKT169AgHsnr06MFdd93F/Pnz6wTlBg4cyKOPPsrIkSPp0aMHaWlplJeXk5OTw6BBg/jDH/7AM888\\nExHU+v3vf8/PfvYzzjnnHNq3b09VVRWmadK1a1fGjRvHggULOPfcc4/IM4uIiMixy3CO1H7eIiIi\\nIiIiIiIiR5EywkREREREREREpFlQIExERERERERERJoFBcJERERERERERKRZaNRdIxcsWMDLL79M\\nYWEhtm3TpUsXxowZwzXXXINpJh9zmz59OqtXr+arr76iqKiIsrIyWrRoQc+ePRk1ahTDhw/HMIzD\\nvg4RERERERERETl+NFqz/MmTJzNz5kxSU1M577zzcLvdfPTRR5SXl3PppZfypz/9Kentqi+44AKK\\n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\\nFVxfIAAlJVCdtt0QoT4Jtm1hO3bwmWKM87iDwbBDaZgfWR5ZpvJIERERETli2rRpw9SpU/n5z3/O\\nlClTeO211+jRowd79uxh9erV2LbNT3/603BWT8i9997LJ598wvr167n00ksZMGAALpeLlStX0qJF\\nCwoKCli+fHmd+11//fXs2LGDF198kSuvvJK8vDw6duyIbdvs2rWLzZs3U1lZyfPPP0/Xrl2P1Kch\\nJtM0efrpp7nlllt45ZVXWLhwIT179qRdu3bs37+fHTt28O2339K6deuI0snBgwczceJE/vCHP3Dn\\nnXfSuXNnunTpQkpKCjt37uSbb76htLSUSZMm0bdv33qtafTo0axZsyZcGhprx8/Ro0fz0ksvsX79\\negYPHky/fv1wHIfVq1fj8XgYM2YMb7zxRtL3TU9P584772Tq1KlMmDCBGTNm0KZNGwoLC9m+fTs3\\n33wz//u//1vnuvbt2/OXv/yFe+65h9/+9rc888wzdO/enezsbPbs2cN3333Hnj17GDJkCFdccUW9\\nPhfStCkjTJoOg/jBLcPANIMhM8cgqWCY4zhYlo1TnWlWOyPM8aaHp4joExbaObLm7RuxPNJlmFi2\\nRcBOUB5Z3TDf2+DyyPLEg0VEREREGtHgwYN54403GD58OAcOHGDJkiV89dVXDBw4kOeee4577723\\nzjWZmZlMnz6dW2+9lVatWvHuu+/y2Wefcdlll/Hqq6+G+4lF88ADD/CPf/yDoUOHUlJSwooVK/j4\\n44+prKzk4osv5rHHHuPss88+nI9cL+3ateP111/nN7/5Db169eLrr7/mn//8Jxs3biQzM5ObbrqJ\\nJ598ss51N954IzNmzGDkyJHYts2HH37I+++/T0lJCf379+ehhx46pMDPkCFDwg3+PR4PQ4cOjTqu\\nVatWvPHGG1x11VVkZGSwYsUKPv/8cy699FJmz54d7mVWH+PHj2fKlCnk5eXx+eef89FHH9GxY0dm\\nzpxZJ1ha04ABA1i4cCG33347ubm5fPbZZyxdupSdO3fSuXNnfvnLX/Lzn/+83uuRps1wGmurhmas\\nsLCQsrIysrKyEm7HeyR98sknQLCuvqnbs7+CLTtLcbsMWmSkRB3j4FC4bQ9f79zDid7vySopJdAq\\nB8zY8d5Kr4ULyG6VQnqaC8dxeHJZBb4acaW0M5djpPg4I7UbgzLOCB83330P8/P14Y+tAefi9Dur\\n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\\nCVdWkt8NdyIRQgghhBBdIycnh0ceeYRrr72W3//+9yxZsoRjjz2WmpoaVqxYgW3bTJ48mUsvvbSr\\nl5q1vLw87r//fq6//noef/xxFi1axLBhw9i1axfvv/8+V111FbNnz04478UXX+SXv/wlhx12GIMG\\nDSI/P5/KykpWBQx9AQAAIABJREFUrVqFbdtMmjQptrNkKvn5+dx333388Ic/5LHHHmPhwoUcc8wx\\nVFRU8P777zN16lRmz56ddKfOjjrnnHNYuXIlt912G9/4xjcoKioC4LbbbqNHj8zzmS+88EJWr17N\\nnDlzYp+nOu4Pf/gD69atY/z48Zx00kn4vs/7779PIBDgoosu4uWXX874cW+++eZYgfK9997j6KOP\\nZvv27axbty72NWxLa81vf/tbrr32Wl544QUWLFjA0KFD6du3L3v27GH79u18+eWX9O7dO+vRyaFD\\nh/LXv/6V3/72t7iuy+23396pX6/uQjrCRLdSmB+gX68CigpS76jouB7vf1rO+s17KN8dprLKiXWF\\n+YaBrw1UktZaRaQGlknwYWnbnLBQPrVew16FJiaMR3Zwxj6gg9ieTdixknbOaa2gVWD+gcosKsIL\\nhbHr6nD24a4sQgghhBDiq+f4449n/vz5XHbZZbiuy+LFi1mzZg3HH388999/P/fee2+7u8UfqE49\\n9VRefPFFxo0bR2VlJUuWLKG2tpYZM2Zw5513Jj1n2rRpXHrppRQWFrJ69WoWLVrE5s2bGTNmDI88\\n8ggPPPBARo992mmn8fzzzzN27FgqKiriHvu73/0uAKWlpZ31VLnyyiu55ZZbOOSQQ3jrrbd46aWX\\neOmll1LmbqVy3nnnkZsbyVAOBAJMmjQp6XElJSW8/PLLXHrppeTn5/P222/z8ccfc8455zB37txY\\nflemTjzxRGbPns2pp57Kjh07YuOQ9957L9OmTUt5Xt++fXnppZeYMWMGw4YN4/PPP2fx4sVs2LCB\\ngoICrrnmmlhnYzaiHWGu63LKKadw9tlnZ32NrwLld8Z2Bwe59evXU19fT2FhYUbbzu4vq1atAuCk\\nk07q4pV0rrpGi/Ldqbuv6hotZjz5j9jnwYDiwgn9MLWJUb0Hs3IXfjAHPycn7jzLcnE96FEcoCA/\\nfbPkoo/DrN3WkjcQGPgpZt/NXFNyPnk6J82ZqaktWzFefS32uV9UhDv1O5EOtizVhuvJM3NoqKwn\\n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\\na/n5z3/OzJkzOeaYYxgwYACe57FhwwY2btxIIBDgpz/9adw59957LzfccAN//etfWbZsGUOHDuXQ\\nQw+lvr6enTt3snHjRjzP4/LLL491440fP55LL72UF154gcsuu4zRo0fTq1cvPvroI8rLy7n88sv5\\n05/+1KFwApsxAAAgAElEQVTX6PDDD+eEE05g9erVvP766wQCASZNmpT02BtvvJFbbrmFhx9+mNdf\\nf52jjjqKXbt2sWrVKs477zxWr16d1Zjmueeey+zZs/nkk084//zzOfHEE7Ftm7Vr19KnTx/Gjx/P\\nkiVLEs7rqveT6BzSESa6Hcf12FZRT8We5HPcUeefdiRTzz2GqycNY8pZR5OXa6C1xmsdmG+Y0KYj\\nLGAoggGDDJrOErTNCfMbIkWTTssJA+jXF79nS3C78n3UJ59mfZmADjR3hNmx20xDYTs+tuN2WsDk\\nV0GguBi7tg67eo90hQkhhBBCdJLx48fz8ssv881vfpPq6moWLVrEZ599xmmnncaTTz7JtGnTEs4p\\nKChgzpw5XHfddZSUlPC3v/2NDz/8kAkTJvDiiy+m3Snwzjvv5I9//COTJk2itraWt99+m5UrV9LU\\n1MTYsWN54IEHGDVqVKc+x6uuuoqHH34Y3/dZunQpmzdv5utf/zrPPPNMQrHHNE3mzJnDD37wA8rK\\nynj33XdZtWoVo0eP5uWXX44F3rd22GGHceedd3LGGWdQU1PD22+/zfLly3FdlwsvvJD58+czduzY\\nuHMKCwuZPXs29957L6NHj+Zf//oXf/3rX1m3bh2GYXDZZZfxu9/9jpyc+B2/Zs6cya9+9SsGDRrE\\nqlWrWL58OUcddRQvvPACI0eO3KvXqfUGC9GdSJOZOHEizzzzDCeffDI7d+7krbfeor6+nrvuuov7\\n778/68cNBoPMmjWLyy+/nJycHN555x02bdrEt771LZ5//vm4HTfb6or3k+gcypefdvfa+vXrqa+v\\np7CwsN3tU/enVatWAZG5+q8Sx/XYuLWa8t2NHFrWfheU43ps3VXHvyqr8AONBA2ToBEEQDU1Eago\\nR1th3KKWjq3CfJOcYPZ14rqQxxN/a2q5QbnknrSEAcHefKvojNQnZkmt/Rhj2fLY535BAe5VV8YC\\n/6O2b9sBwKH9E2foAapDtRQFC+ld0JOAjvy2p6K6iZ7FuQzoU4hpSK08KlReTqC4mLzDDus2XWFf\\n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\\nyxAql6a5fpqQ63plp83xUJBpZjkuXCGC8jRFlqD6ZWUhTQkGCgDA2u4UVGV+stAWiqLIWNGZgGU7\\nsJ3x7C3HnySYiOrBsIjRrIGQ7mU3Dp9QICDQ0RL1gl+KjOUd8SAwE9K9tVIVObhemRBwBABFgjcd\\nc3mTF/jys8aA8UyrWFgL7l9NlWHZbsVtlP+rTOhrJ4SAqiqQJwacpfHA88Q1a02F0ZoKB7cZNKWH\\nF+yaGFRa3ZUKShPLmVjjmZjjpaXRsIY13VOzt6re/2fwuUO1MRBGREREREREdVdupF/m9RfzSigV\\nWQp6o7muN2CgHARzXS/Y4fqBl/bmKOL+toWShULJntJbqVqwS5/h9NEzgZe1Nv02TYkQUnEdjisw\\n0qdDQOCs5U1QFWlKZlK5LPRkvADSzO7HmQ5wkCQpWM+ZbDv5+1rJWQvd043OXAyEERERERER0bwr\\nTwsNT4rByLKEjgmZXNOJhrU5TcxsdJLkTSLUVK/xFYNDRFPxUUFEREREREREREsCA2FERERERERE\\nRLQkMBBGRERERERERERLAgNhRERERERERES0JDAQRkRERERERERESwIDYUREREREREREtCQwEEZE\\nREREREREREsCA2FERERERERERLQkMBBGRERERERERERLAgNhRERERERERES0JDAQRkRERERERERE\\nSwIDYUREREREREREtCQwEEZEREREREREREsCA2FERERERERERLQkqPW8sZ/+9Kd45JFHsHfvXriu\\nizVr1uD666/HDTfcAFk+9ZjbbG+v3sdBRERERERERERnvroFwu666y784Ac/QCgUwqWXXgpVVbF1\\n61b88z//M7Zu3Yr77rsPiqLM++3V+ziIiIiIiIiIiKgx1CUQ9rOf/Qw/+MEP0N7eju9973tYvXo1\\nAGBwcBA33ngjfv7zn+N73/sePvjBD87r7dX7OIiIiIiIiIiIqHHUpU7wG9/4BgDgH/7hH4LgEwC0\\ntbXhzjvvBAB885vfhOu683p79T4OIiIiIiIiIiJqHHMOhPX19WH37t3QNA1XX331lOsvvvhidHZ2\\nYmBgAM8999y83V69j4OIiIiIiIiIiBrLnANhe/bsAQCsX78e4XC46jbnnnsuAOCll16at9ur93EQ\\nEREREREREVFjmXMg7MiRIwCA7u7umtt0dXVVbDsft1fv4yAiIiIiIiIiosYy52b5hUIBABCJRGpu\\nE4vFAAD5fH7ebq/ex3EqDMMAAMRAHtIAABJKSURBVORyOfzhD3+o623Xw2I8JlpYPAeWNq4/8RxY\\n2rj+xHNgaeP6L21cf2qUc6Acd6mHOWeECSEAAJIkzflg5nJ79T6OU+E4zoL/TCIiIiIiIiKipaCe\\ncZc5Z4SVs6zKGVnVlDOwytvOx+3V+zhORSgUgmEYUBQFoVCorrdNRERERERERLQUGYYBx3HqGmuZ\\ncyCsp6cHAHDs2LGa2/T19VVsOx+3V+/jOBXnnHNOXW+PiIiIiIiIiIjqb86lkeUg0P79+1Eqlapu\\ns2vXLgDAxo0b5+326n0cRERERERERETUWOYcCOvq6sKmTZtgWRa2bNky5fpt27ahr68P7e3tOP/8\\n8+ft9up9HERERERERERE1FjmHAgDgFtuuQUA8KUvfQmHDx8OLh8aGsJdd90FALj55pshy+M/7stf\\n/jKuvvpqfPnLX67L7c1lPyIiIiIiIiIianxz7hEGAFdffTVuuOEGPPLII7j22mtx2WWXQVVVbN26\\nFblcDldddRXe//73V+wzMDCAgwcPYmBgoC63N5f9iIiIiIiIiIio8dUlEAYAd955Jy688EJ8//vf\\nx7Zt2+C6LtauXYvrr78eN9xwwylnYc329up9HERERERERERE1BgkIYQ43QdBREREREREREQ035ge\\nRURERERERERESwIDYUREREREREREtCQwEEZEREREREREREsCA2FERERERERERLQkMBBGRERERERE\\nRERLAgNhRERERERERES0JDAQRkRERERERERESwIDYUREREREREREtCQwEEZEREREREREREsCA2FE\\nRERERERERLQkqKf7AGh+/PSnP8UjjzyCvXv3wnVdrFmzBtdffz1uuOEGyDLjn4vBq6++iqeffhq7\\ndu3Ciy++iEOHDkEIgfvuuw9XX331tPvOdn0Xej+qzbIs7NixA7/5zW+wc+dOHDt2DKOjo2hubsb5\\n55+P973vfbjkkktq7s9z4Mz38MMPY8eOHdi3bx+Gh4eRy+WQSCSwYcMGXHfddXjXu94FSZKq7sv1\\nb0z33HMPvvGNbwAAbrvtNtx0001Vt+P6N4ZPfvKTePzxx2tev2bNGmzZsqXqdTwHGkepVMLDDz+M\\nLVu24PDhw7AsC62trdi8eTM++MEP4sILL5yyD9f/zPfss8/ixhtvnNG2v/rVr9Dd3V1xGc+BxtDX\\n14dvfvOb+N3vfofjx49DCIGuri688Y1vxM0334wVK1ZU3Y/rP3eSEEKc7oOg+rrrrrvwgx/8AKFQ\\nCJdeeilUVcXWrVuRz+fx9re/Hffddx8URTndh7nkfe5zn8N3v/vdKZefLBA22/Vd6P1oer///e/x\\noQ99CADQ3t6OTZs2IRKJ4MCBA9i3bx8A4NZbb8XHPvaxKfvyHGgMb3nLWzA8PIz169ejs7MTkUgE\\nx44dw/PPPw8hBK688krcf//9U15gcP0b0wsvvIC/+qu/guu6EELUDIRx/RtHORB2wQUXYNWqVVOu\\nb29vx9///d9PuZznQOPo7e3FTTfdhMOHD6O1tRXnnXcedF3H0aNH8fLLL+PWW2/FrbfeWrEP178x\\nHDhwAN/85jdrXv/CCy/gwIEDWLlyJf7nf/6n4oMxngONYc+ePfjgBz+ITCaDZcuWYdOmTQCAF198\\nESdOnEA0GsW3vvUtXHDBBRX7cf3rRFBD2bJli0in0+Lyyy8XBw8eDC4fGBgQ73znO0U6nRYPPfTQ\\n6TtACjz66KPiC1/4gnjiiSfE4cOHxfvf/36RTqfFk08+WXOf2a7vQu9HJ/f73/9efPSjHxXbt2+f\\nct0TTzwhNm7cKNLptNi6dWvFdTwHGsf27dtFPp+fcvm+ffvEZZddJtLptPjhD39YcR3XvzEZhiGu\\nueYa8aY3vUnceuutIp1OiwceeGDKdlz/xnL77beLdDotHnvssRnvw3OgceTzeXHVVVeJdDotvvKV\\nrwjTNCuuHx4eFq+++mrFZVz/peOaa64R6XRafP3rX6+4nOdA4/jLv/xLkU6nxac//emKx79pmuKO\\nO+4Q6XRaXHvttRX7cP3rh4GwBnPdddeJdDotHn/88SnXPfvss8GJ7DjOaTg6ms5MAmGzXd+F3o/m\\n7h//8R9FOp0Wd9xxR8XlPAeWhvvvv1+k02nx8Y9/vOJyrn9j+uIXvyjS6bT45S9/GQRHqgXCuP6N\\nZTaBMJ4DjeNLX/qSSKfT4rbbbpvxPlz/pWHnzp0inU6LjRs3ir6+vorreA40hlKpJNLptEin06K/\\nv3/K9X19fcH1hUIhuJzrXz9nZkEnVdXX14fdu3dD07SqpXUXX3wxOjs7MTAwgOeee+40HCHNxWzX\\nd6H3o/o455xzAAAnTpwILuM5sHSoqtfCU9f14DKuf2N6/vnn8eCDD+LP/uzP8La3va3mdlx/4jnQ\\nOEzTxKOPPgoAuOWWW2a0D9d/6XjssccAAG9+85vR2dkZXM5zoHHIshy81hNVOlWVS2Gj0SjC4TAA\\nrn+9MRDWQPbs2QMAWL9+ffCAmezcc88FALz00ksLdlxUH7Nd34Xej+rj0KFDALweMWU8B5aG3t5e\\n/Od//icAVARGuP6NxzAM3H777UilUvjUpz417bZc/8b17LPP4u6778Y//dM/4Stf+QqefvppuK47\\nZTueA41j9+7dGB0dRVdXF8466yzs3LkT99xzDz7zmc/gq1/9Kv74xz9O2YfrvzQUi0X893//NwDg\\nPe95T8V1PAcah6ZpeOMb3wgA+Pd//3dYlhVcZ1kWvvKVrwAArr/++iAoxvWvL06NbCBHjhwBgClT\\nRSbq6uqq2JbOHLNd34Xej+ZuYGAgmCT2J3/yJ8HlPAca02OPPYbt27fDsiycOHECf/zjH+G6Lv72\\nb/8Wb3/724PtuP6N595778XBgwdx7733oqWlZdptuf6N68c//vGUy9atW4d77rkHZ599dnAZz4HG\\nUR6Ks2rVqqrTQ7/2ta/hHe94B774xS8Gb0C5/kvDli1bkM/n0draiiuuuKLiOp4DjeXOO+/Ehz/8\\nYTz66KP47W9/i82bNwMAdu3ahUwmgxtvvBG33XZbsD3Xv74YCGsghUIBABCJRGpuE4vFAAD5fH5B\\njonqZ7bru9D70dzYto1PfOITyGazuPTSSysygngONKadO3dWvAlSVRUf+9jHgqmiZVz/xrJz5058\\n5zvfwVVXXYVrrrnmpNtz/RvPhg0b8OlPfxqXXnopuru7kcvlsGfPHtx77714+eWX8aEPfQiPP/54\\nUBrFc6BxjI2NAQB27NgBx3HwN3/zN7jhhhvQ1NSE7du346677sLPfvYzxGIx3H333QC4/ktFuSzy\\n3e9+NzRNq7iO50BjWbFiBR555BHcfvvt+O1vf4u+vr7gus2bN+Oiiy6qOAe4/vXF0sgGUq4vnjhe\\nlxrHbNd3ofejufnsZz+LrVu3oqurC//2b/9WcR3Pgcb0uc99Dnv37sXzzz+PJ554AjfeeCPuv/9+\\nvPe9763oEcf1bxylUgl33HEH4vE4PvvZz85oH65/4/nrv/5rfOADH8C6desQjUbR0dGBK664Av/1\\nX/+F17/+9RgaGsI3vvGNYHueA42jXPpq2zbe85734Pbbb8fKlSuRTCZx5ZVX4mtf+xokScKPf/xj\\n9Pb2AuD6LwWHDx/G9u3bAUwtiwR4DjSanTt34tprr8Vrr72G//iP/8AzzzyDrVu34mtf+xoymQw+\\n+tGP4v777w+25/rXFwNhDaQckS1Hb6spR2vL29KZY7bru9D70ez967/+K374wx+ivb0dDz30UEV/\\nMIDnQKMLh8NYt24dbr/9dnz84x/Hyy+/jH/5l38Jruf6N4577rkHhw4dwic/+Ul0dHTMaB+u/9Kh\\n63rQQP03v/lNcDnPgcYx8f5673vfO+X6c889F5s2bYLrunj22Wcr9uH6N65yNtj555+Ps846a8r1\\nPAcaRyaTwUc+8hHk83k88MADuPLKK9Hc3IyWlhZcddVVeOCBBxAOh/H1r3896BvM9a8vlkY2kJ6e\\nHgDAsWPHam5TTrksb0tnjtmu70LvR7Pz+c9/Hg8//DBaWlrw0EMPYfXq1VO24TmwdPzFX/wFvvCF\\nL+BXv/oVLMuCpmlc/wbyi1/8ArIs48c//vGU/lCvvvoqAOCRRx7Br3/9a6xcuRKf+9znuP5LzNq1\\nawFUTg7mOdA4Jt5fy5cvr7rN8uXL8eKLL2JwcLBiH65/Y3IcJ/h7cP3111fdhudA4/j1r3+N4eFh\\nvPGNb8SKFSumXL9q1Sq87nWvw7Zt27Bt2zasXr2a619nDIQ1kHPOOQcAsH//fpRKparTHXbt2gUA\\n2Lhx44IeG83dbNd3ofejU/fFL34RDz74IJqamvDggw9i3bp1VbfjObB0JJNJqKoK27YxNjaGtrY2\\nrn+DcV0X27Ztq3l9b28vent7kclkAPDxv9SMjo4CqPyUnedA49i0aVPw/5GRkarDMkZGRgAA0WgU\\nANe/0f3ud7/DiRMnEI1Ga/aN5DnQOI4fPw4ASCQSNbdJJpMAxv8ecP3ri6WRDaSrqwubNm2CZVnY\\nsmXLlOu3bduGvr4+tLe34/zzzz8NR0hzMdv1Xej96NR86Utfwre+9S2kUik8+OCD2LBhQ81teQ4s\\nHdu3b4dt20gmk2hubgbA9W8kTz31FPbu3Vv133XXXQcAuO2227B371785Cc/AcD1X2qefPJJAAim\\niAE8BxpJZ2cnzjvvPADAM888M+X6sbEx7NmzB8D4OcD1b2w//OEPAQDvfOc7a5aZ8RxoHOW2CLt3\\n74ZlWVOutywLu3fvBjCeNcr1rzNBDeXJJ58U6XRaXH755eLQoUPB5YODg+Kaa64R6XRaPPTQQ6fx\\nCKmW97///SKdTosnn3yy5jazXd+F3o9m5t577xXpdFq84Q1vELt27ZrRPjwHGsP27dvFT37yE2EY\\nxpTrduzYIa688kqRTqfF5z//+YrruP6N7/bbbxfpdFo88MADU67j+jeOPXv2iKeeekrYtl1xuWVZ\\n4tvf/rbYsGGDSKfT4re//W3F9TwHGscvf/lLkU6nxaWXXir27NkTXF4qlcTf/d3fiXQ6La677jrh\\num5wHde/MQ0NDYlNmzaJdDot/vCHP0y7Lc+BxjA4OCjOO+88kU6nxV133VXxetAwDPGZz3xGpNNp\\ncdFFF4lMJhNcx/WvH0kIfxwANYw777wTjzzyCEKhEC677DKoqoqtW7cil8vhqquuwle/+lUoinK6\\nD3PJ2717N+66667g+1deeQX5fB6rV69GKpUKLn/00Ucr9pvt+i70fjS9X/7yl7j11lsBeJ/2rl+/\\nvup2a9euDZoml/EcOPP96Ec/wh133IFkMolzzjkHbW1tyOfz6O3txSuvvAIAuOKKK3DfffdNSUXn\\n+je2T37yk3j88cdx22234aabbppyPde/MfziF7/ARz7yETQ1NWH16tXo7OxEPp/Hvn370N/fD1mW\\n8fGPfxw333zzlH15DjSOL3zhC/j2t78NTdNw3nnnoampCS+88AL6+/vR2dmJ7373u1N6hnL9G89D\\nDz2Eu+++G2vXrg2yQafDc6AxPP744/jUpz4Fx3HQ0dERlEy/+OKLGBgYgK7ruPfee3HVVVdV7Mf1\\nrw8GwhrUT3/6U3z/+9/Hvn374Lou1q5di+uvvx433HADZJkVsYvBs88+ixtvvPGk2+3du3fKZbNd\\n34Xej2orB0JO5uKLL8bDDz885XKeA2e23t5e/OhHP8KOHTvw2muvYWRkBEIItLe3Y/PmzXjXu941\\n5YXPRFz/xnWyQBjA9W8Evb29+O53v4tdu3bh6NGjGB0dhSRJWLZsGS688EK8733vqyiLnIznQOP4\\n+c9/jocffhgvvfQSisUiuru78ba3vQ233HJL1d5hANe/0Vx77bXYt28fPvGJT+DDH/7wjPbhOdAY\\ndu/eje985zvYsWMHBgYGAHil05dccgk+9KEP1ewbzPWfOwbCiIiIiIiIiIhoSTgzw3dERERERERE\\nRESniIEwIiIiIiIiIiJaEhgIIyIiIiIiIiKiJYGBMCIiIiIiIiIiWhIYCCMiIiIiIiIioiWBgTAi\\nIiIiIiIiIloSGAgjIiIiIiIiIqIlgYEwIiIiIiIiIiJaEhgIIyIiIiIiIiKiJYGBMCIiIiIiIiIi\\nWhIYCCMiIiIiIiIioiWBgTAiIiIiIiIiIloSGAgjIiIiIiIiIqIlgYEwIiIiIiIiIiJaEhgIIyIi\\nIiIiIiKiJYGBMCIiIiIiIiIiWhIYCCMiIiIiIiIioiXh/wPW26OWTXf2fAAAAABJRU5ErkJggg==\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1000x1000 with 1 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"image/png\": {\n              \"height\": 593,\n              \"width\": 609\n            },\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"#@title Training example\\n\",\n        \"\\n\",\n        \"# Shared hyper-parameters\\n\",\n        \"hidden_size = 16\\n\",\n        \"phi_size = 3\\n\",\n        \"x1_dim, x2_dim = 28, 4\\n\",\n        \"batch_size = 8 * 8\\n\",\n        \"learning_rate = 4e-3\\n\",\n        \"num_training_iterations = int(8e3)\\n\",\n        \"rng_key = random.PRNGKey(14)\\n\",\n        \"num_runs = 10\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def execute(rng_keys, loss):\\n\",\n        \"  stats = []\\n\",\n        \"  for run_index, rng_key in enumerate(rng_keys):\\n\",\n        \"    logging_prefix = 'Executing run {}/{}'.format(run_index+1, len(rng_keys))\\n\",\n        \"    generator = gen_dynamics(rng_key, x_dims=(x1_dim, x2_dim))\\n\",\n        \"    stats.append(train(\\n\",\n        \"        rng_key,\\n\",\n        \"        loss,\\n\",\n        \"        data_generator=generator,\\n\",\n        \"        batch_size=batch_size,\\n\",\n        \"        learning_rate=learning_rate,\\n\",\n        \"        num_training_iterations=num_training_iterations,\\n\",\n        \"        report_interval=100,\\n\",\n        \"        mv_avg_decay=0.99,\\n\",\n        \"        logging_prefix=logging_prefix))\\n\",\n        \"  return stats\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def process(stats, index, *args, **kwargs):\\n\",\n        \"  it = stats[0][-1]\\n\",\n        \"  stats = [stat[index] for stat in stats]\\n\",\n        \"  stats = np.stack(stats)\\n\",\n        \"  mean = np.mean(stats, axis=0)\\n\",\n        \"  std = np.std(stats, axis=0)\\n\",\n        \"  plt.plot(it, mean, **kwargs)\\n\",\n        \"  plt.fill_between(it, mean-std, mean+std, alpha=0.2, *args, **kwargs)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"print('Running on {} devices of type {}'.format(\\n\",\n        \"    jax.local_device_count(), jax.devices()[0]))\\n\",\n        \"print('Num runs: {} -- Batch size: {}'.format(num_runs, batch_size))\\n\",\n        \"\\n\",\n        \"rng_keys = random.split(rng_key, num_runs)\\n\",\n        \"\\n\",\n        \"print('Training vnet...')\\n\",\n        \"vnet_loss_fn = vnet_loss(hidden_size=hidden_size, phi_size=phi_size)\\n\",\n        \"vnet_stats = execute(rng_keys, vnet_loss_fn)\\n\",\n        \"\\n\",\n        \"print('Training himo...')\\n\",\n        \"himo_loss_fn = vnet_himo_loss(hidden_size=hidden_size, phi_size=phi_size)\\n\",\n        \"himo_stats = execute(rng_keys, himo_loss_fn)\\n\",\n        \"\\n\",\n        \"print('Training model-based vnet...')\\n\",\n        \"vnet_model_loss_fn = vnet_model_loss(hidden_size=hidden_size)\\n\",\n        \"vnet_model_stats = execute(rng_keys, vnet_model_loss_fn)\\n\",\n        \"\\n\",\n        \"print('Done!')\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"plt.figure(figsize=(10, 10))\\n\",\n        \"process(vnet_stats, 0,  color='g')\\n\",\n        \"process(himo_stats, 0, color='b')\\n\",\n        \"process(himo_stats, 1,  color='b', linestyle='--')\\n\",\n        \"process(vnet_model_stats, 0,  color='r')\\n\",\n        \"plt.ylim([0, .3])\\n\",\n        \"plt.legend([\\n\",\n        \"    'Model-free value',\\n\",\n        \"    'HiMo value $v^m$',\\n\",\n        \"    'HiMo hindsight value $v^+$',\\n\",\n        \"    'Model-based value',\\n\",\n        \"])\\n\",\n        \"plt.title('Value Loss');\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "iodine/Eval.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"**Copyright 2019  Deepmind Technologies Limited. All Rights Reserved.**\\n\",\n    \"\\n\",\n    \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n    \"you may not use this file except in compliance with the License.\\n\",\n    \"You may obtain a copy of the License at\\n\",\n    \"\\n\",\n    \"   http://www.apache.org/licenses/LICENSE-2.0\\n\",\n    \"\\n\",\n    \"Unless required by applicable law or agreed to in writing, software\\n\",\n    \"distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n    \"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\\n\",\n    \"See the License for the specific language governing permissions and\\n\",\n    \"limitations under the License.\\n\",\n    \"\\n\",\n    \"# IODINE Interactive Evaluation\\n\",\n    \"This notebook can load checkpoints and run the model.\\n\",\n    \"You need to download the data before you can run this (see README.md).\\n\",\n    \"It includes several plots to inspect the decomposition, iterations, and inputs to the refinement network, as well as prior samples, latent traversals and code to run on a custom example.\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import numpy as np\\n\",\n    \"import pathlib\\n\",\n    \"from PIL import Image\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"import warnings\\n\",\n    \"from absl import logging\\n\",\n    \"\\n\",\n    \"# Ignore all tensorflow deprecation warnings \\n\",\n    \"logging._warn_preinit_stderr = 0\\n\",\n    \"warnings.filterwarnings('ignore', module='.*tensorflow.*')\\n\",\n    \"import tensorflow.compat.v1 as tf\\n\",\n    \"tf.logging.set_verbosity(tf.logging.ERROR)\\n\",\n    \"\\n\",\n    \"import sonnet as snt\\n\",\n    \"from shapeguard import ShapeGuard\\n\",\n    \"import seaborn as sns\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"\\n\",\n    \"from main import ex, load_checkpoint,  build, get_train_step\\n\",\n    \"from iodine.modules import plotting, utils\\n\",\n    \"\\n\",\n    \"sns.set_style('whitegrid')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Adjust this to load checkpoints for different datasets\\n\",\n    \"configuration = 'clevr6'\\n\",\n    \"#configuration = 'multi_dsprites'\\n\",\n    \"#configuration = 'tetrominoes'\\n\",\n    \"\\n\",\n    \"# Configuration values to adjust\\n\",\n    \"config_updates = {\\n\",\n    \"    'batch_size':1,               # to speed up interactive evaluation\\n\",\n    \"    'data.shuffle_buffer': None,  # to speed up interactive evaluation\\n\",\n    \"    # 'num_components':4,  # uncomment to change the number of components\\n\",\n    \"    # 'num_iters': 5,      # uncomment to change the number of iterations\\n\",\n    \"}\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Successfully restored Checkpoint \\\"checkpoints/clevr6/model.ckpt\\\"\\n\",\n      \"Variable                                                 Shape      Type     Collections                            Device\\n\",\n      \"encoder_net/cnn/conv_net_2d/conv_2d_0/b                  64         float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"encoder_net/cnn/conv_net_2d/conv_2d_0/w                  3x3x18x64  float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"encoder_net/cnn/conv_net_2d/conv_2d_1/b                  64         float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"encoder_net/cnn/conv_net_2d/conv_2d_1/w                  3x3x64x64  float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"encoder_net/cnn/conv_net_2d/conv_2d_2/b                  64         float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"encoder_net/cnn/conv_net_2d/conv_2d_2/w                  3x3x64x64  float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"encoder_net/cnn/conv_net_2d/conv_2d_3/b                  64         float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"encoder_net/cnn/conv_net_2d/conv_2d_3/w                  3x3x64x64  float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"encoder_net/cnn/mlp/linear_0/b                           256        float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"encoder_net/cnn/mlp/linear_0/w                           64x256     float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"encoder_net/cnn/mlp/linear_1/b                           256        float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"encoder_net/cnn/mlp/linear_1/w                           256x256    float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"factor_evaluator/repres_content/position_mean_var/M2     3          float32  global_variables                       (legacy)\\n\",\n      \"factor_evaluator/repres_content/position_mean_var/mean   3          float32  global_variables                       (legacy)\\n\",\n      \"factor_evaluator/repres_content/position_mean_var/total  3          float32  global_variables                       (legacy)\\n\",\n      \"factor_evaluator/repres_content/predict_latents/b        19         float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"factor_evaluator/repres_content/predict_latents/w        64x19      float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"global_step                                                         int64    global_step, global_variables          (legacy)\\n\",\n      \"model/iodine/initial_sample_distribution                 128        float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"model/iodine/preprocess/layer_norm_counterfactual/beta   1          float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"model/iodine/preprocess/layer_norm_counterfactual/gamma  1          float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"model/iodine/preprocess/layer_norm_dcomponents/beta      3          float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"model/iodine/preprocess/layer_norm_dcomponents/gamma     3          float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"model/iodine/preprocess/layer_norm_dmask/beta            1          float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"model/iodine/preprocess/layer_norm_dmask/gamma           1          float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"model/iodine/preprocess/layer_norm_dzp/beta              128        float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"model/iodine/preprocess/layer_norm_dzp/gamma             128        float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"model/iodine/preprocess/layer_norm_log_prob/beta         1          float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"model/iodine/preprocess/layer_norm_log_prob/gamma        1          float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"pixel_decoder/broadcast_conv/conv_net_2d/conv_2d_0/b     64         float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"pixel_decoder/broadcast_conv/conv_net_2d/conv_2d_0/w     3x3x67x64  float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"pixel_decoder/broadcast_conv/conv_net_2d/conv_2d_1/b     64         float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"pixel_decoder/broadcast_conv/conv_net_2d/conv_2d_1/w     3x3x64x64  float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"pixel_decoder/broadcast_conv/conv_net_2d/conv_2d_2/b     64         float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"pixel_decoder/broadcast_conv/conv_net_2d/conv_2d_2/w     3x3x64x64  float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"pixel_decoder/broadcast_conv/conv_net_2d/conv_2d_3/b     64         float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"pixel_decoder/broadcast_conv/conv_net_2d/conv_2d_3/w     3x3x64x64  float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"pixel_decoder/broadcast_conv/conv_net_2d/conv_2d_4/b     4          float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"pixel_decoder/broadcast_conv/conv_net_2d/conv_2d_4/w     3x3x64x4   float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"recurrent_net/lstm/lstm/b_gates                          1024       float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"recurrent_net/lstm/lstm/w_gates                          769x1024   float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"refinement_head/residual_head/linear/b                   128        float32  global_variables, trainable_variables  (legacy)\\n\",\n      \"refinement_head/residual_head/linear/w                   256x128    float32  global_variables, trainable_variables  (legacy)\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"sess = tf.InteractiveSession()\\n\",\n    \"\\n\",\n    \"# create a sacred run\\n\",\n    \"r = ex._create_run(named_configs=[configuration], config_updates=config_updates, options={'--force': True, '--unobserved': True})\\n\",\n    \"\\n\",\n    \"# restore the checkpoint and get the model, data, etc.\\n\",\n    \"restored = load_checkpoint(session=sess)\\n\",\n    \"model = restored[\\\"model\\\"]\\n\",\n    \"info = restored[\\\"info\\\"]\\n\",\n    \"dataset = restored[\\\"dataset\\\"]\\n\",\n    \"inputs = restored[\\\"inputs\\\"]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# run evaluation and get the info dict\\n\",\n    \"rinfo = sess.run(info)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Decomposition\\n\",\n    \"Let's plot the decomposition at the last timestep.\\n\",\n    \"Set `mask_components=False` to see the full reconstruction for each component\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x144 with 10 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"fig = plotting.example_plot(rinfo, t=-1, mask_components=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Iterations\\n\",\n    \"This plots the decompositions for all timesteps and an additional row with the ground truth segmentation, as well as the predicted mask-logits.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1296x1008 with 63 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"fig = plotting.iterations_plot(rinfo, mask_components=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We can also plot error and metrics over iterations to see how they improve over the refinement steps:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Errors and metrics over iterations\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 864x432 with 6 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"b = 0  # sample index inside batch\\n\",\n    \"\\n\",\n    \"fig, axes = plt.subplots(nrows=2, ncols=3, sharex=True, figsize=(12, 6))\\n\",\n    \"\\n\",\n    \"axes[0, 0].plot(rinfo[\\\"losses\\\"][\\\"recons\\\"][b], color='r')\\n\",\n    \"axes[0, 0].set_title(\\\"Reconstruction Loss\\\")\\n\",\n    \"\\n\",\n    \"axes[0, 1].plot(rinfo[\\\"metrics\\\"][\\\"mse\\\"][b], color='orange')\\n\",\n    \"axes[0, 1].set_title(\\\"MSE\\\")\\n\",\n    \"\\n\",\n    \"# Plot total KL and faintly also the individual object KLs\\n\",\n    \"axes[0, 2].plot(rinfo[\\\"losses\\\"][\\\"kl\\\"][b].sum(axis=1), color='purple')\\n\",\n    \"axes[0, 2].plot(rinfo[\\\"losses\\\"][\\\"kl\\\"][b], color='purple', alpha=0.2)\\n\",\n    \"axes[0, 2].set_title(\\\"KL\\\")\\n\",\n    \"\\n\",\n    \"axes[1, 0].plot(rinfo[\\\"metrics\\\"][\\\"ari\\\"][b])\\n\",\n    \"axes[1, 0].set_title(\\\"ARI\\\")\\n\",\n    \"axes[1, 0].set_ylim((0, 1))\\n\",\n    \"axes[1, 0].set_xlabel('Iteration')\\n\",\n    \"\\n\",\n    \"axes[1, 1].plot(rinfo[\\\"metrics\\\"][\\\"ari_nobg\\\"][b])\\n\",\n    \"axes[1, 1].set_title(\\\"ARI (ignoring background)\\\")\\n\",\n    \"axes[1, 1].set_ylim((0, 1))\\n\",\n    \"axes[1, 1].set_xlabel('Iteration')\\n\",\n    \"\\n\",\n    \"axes[1, 2].plot(rinfo[\\\"losses\\\"][\\\"factor\\\"], color='g')\\n\",\n    \"axes[1, 2].set_title(\\\"Factor Regression Loss\\\")\\n\",\n    \"axes[1, 2].set_xlabel('Iteration')\\n\",\n    \"\\n\",\n    \"print(\\\"Errors and metrics over iterations\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Inputs to the Refinement Network\\n\",\n    \"This plots all the spatial inputs that are being fed to the refinement network for a given timestep.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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+we8913gF4BXjjzmlcBPFz//CvDFzrmFnQ852QWCRURERETkTLrzBbe+/fvf97obp3nspz71qQ3n3AcqN93rvb+3cv0O4C8r1x8CPm/kZfqP8d6nzrkrwA3AEzNv/BgqrEREREREZOXuueeeV8zy+C/7si9b1qYsxOILqzjr/DuyVu5WfnV138xzX8k6iXyr8qux+K1rM7RGZnRfVHa1Fu9WflJ6GHhW5fqdxW3jHvOQc64BXCSfxGIhFl5YGTPP1HNyUuJIIaz86qWan7KrF3326k351Zu+O+tLn716G81vwf4QeJFz7gHy+RzPAV8y8phgVRMZAAAgAElEQVS3Al8HvBf4SuD/8d4vbB9SV0AREREREam76uISZQEXnXP/BviA9/6twE8CP+Ocux94Cnj1IjfAjF0j6DgvqDMHtaIzP/Wms671pc9evSm/etN3Z33ps1dvo/l99M/+c0zD+ameu9e76+1Hjclyzv0N4Hu8919aXH89gPf+++ff4tmoxUpERERERFYuDds8/+bXT/XYP3n4FyfNHjjNrIBLtfTCKnv07mW/hcwgue3+mR6v/NbLLPkpu/Wiz169Kb9603dnfemzV2+T8otEOnGqNaq4fPnyjROmWz9xarESEREREZGVi0Avhqkee+nSpSe89y854iHTzAq4VCqsRERERERk5UKM7MdsUS/3h8DznHPPIS+oXg18zaJefBp2lW8mIiIiIiICRYsVcarLJN77FPjnwNuBjwC/5L3/0HJ/g2FqsRIRERERkZULwP4Cl7by3t8H3LewF5yRCisREREREVm5fIzVMtcMXi0VViIiIiIisnIRQy+enpFJKqxERERERGTlIob9OF05UoeipQ7bKCIiIiIip0yI0I3JVI+tQ9FSh20UEREREZFTJm+xak712K0lb8siqLASEREREZGVixh6TNdiVQcqrEREREREZOUChv0wXYtVHaiwEhERERGRlctnBTw95cjKfpMsBhIz/XSK/+STX0DTBDaTHoF8fvteyJsKmzZjJ22RhoR2kpIV898nJrKZ9ADYy5rsZU3+z8/4Ta5L6tArc70pv/pSdvWm/OpN+dWXsqs35VcPMU4/xqoOVlZYzbJzv2sv4XPOP8Ttzae5lOxye+MKTQIbJgD5Ks3daPl02GI/NOmR0IsNroU2T6XbXMk22c1a7IYW3/v4F/Aj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56435Vdfyq7elF+9Kb/6Unb1pvxqJkZMOD3dNTUroIiIiIiInAhziiavUGElIiIiIiKrFwGtYyUiIiIiIjI/EyMmy056MxZGhZWIiIiIiJwMtViJiIiIiIgcQ4yYVC1WIiIiIiIi84uAZgUUERERERE5jghpetIbsTAqrEREREREZPUikKnFSkRERERE5BiiugKKiIiIiIgcS1RXQBERERERkeNRV0AREREREZFjipGoFisREREREZFjyrSO1dSS2+5f9lvIEim/+lJ29ab86k351ZeyqzflVy8xRmJPLVYiIiIiIiLzi5GoFisREREREZH53fmCW9/+/e/9zhunfPgTS92YBTAxxsW+oDGLfUFZqhijqV5XfvVSzU/Z1Ys+e/Wm/OpN3531pc9evY3md9osvLASERERERE5a+xJb4CIiIiIiEjdLX6MlZpk62W0SfZ+5Vcrdw/y+x2ngd4AACAASURBVDKUXZ3cx0h3Ft6k/Gok8q3D+b0J5Vcj8VsZfHcaZVcn90WGj1vM/cqvTuLdp7oroFqsREREREREjkmzAoqIiIiIyMp99M9+Mqbh/FSP3es99+333HPPK5a8SceiwkpERERERFauF85z103fPdVjP/zIr0w7LfuJWXphddcbf3jZbyEzeOC13zXT4+96y48saUtkHg+88junfuyf/4iyWyd/5Tunzw7grh/uLWlLZB4PfFdzpsc/p/vGJW2JzOPjrddO/dg/f6O+O9fJX3ntjN+db3zLkrZE5vHAa1955P2RSCemK9qa5VOLlYiIiIiIrFwk0iOc9GYsjAorERERERFZuRBhPy6msHLOPQt4M3ALEIF7vfc/upAXn5JmBRQRERERkZWLQC9Od5lCCnyn9/6FwMuAb3HOvXCJm3+AWqxERERERGTl8sJqMUtbee8fBR4tfr7qnPsIcAfw4YW8wRRUWImIiIiIyMoFDPsxmeqxly9fvtE594HKTfd67+8d91jn3LOBFwN/cOyNnIEKKxERERERWbkIdJmusLp06dIT3vuXTHqcc24b+FXgO7z3zxxvC2ejwkpE5BSJBkwc/Fwy0/VPFxERWZkQDZ0wXTmyNcVjnHNN8qLqZ733v3acbZuHCisRkVNoXJf10dtUbImIyEmKGHpTtlhN4pwzwE8CH/Hen8higiqsREROmdGWqmjGF1qTXkOFl4iILFPE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T6x+FbeMwQoAALjtDgdnrHZ57MpbLnoJLtBjr3nz6pfATXrRm7Vr9thb7lz9EjiHf37WldUvgZv0oit+dzZ77MprVr8E9jgccviKM1YAAADn4owVAADAOdz7bff82S89+pN3n/HH/+NCX8wtYLACAABuu/vvv//7Vr+GW+nkcDisfg0AAADVbvkZq5OTE5NakcPhcHLjY/263NhPuy7ee9306+Z3Zy/vvW5P7fdMc2n1CwAAAGhnsAIAADgngxUAAMA5XfhdAZ91+XIuJU/6744jj8/63NPtZxrWf/aXv3yk2JPp9/Raf08/7Z5e63vvda+vX/f6fnf2ru+9173+3n7t7rjwFS5duvAluED69dKum37d9OulXTf9WMhgxTb9emnXTb9u+vXSrpt+LGSwYpt+vbTrpl83/Xpp100/Frr4weqOi1+CC6RfL+266ddNv17addOPhZyxYpt+vbTrpl83/Xpp100/FjJYsU2/Xtp106+bfr2066YfCxms2KZfL+266ddNv17addOPhVxjxTb9emnXTb9u+vXSrpt+LOSMFdv066VdN/266ddLu276sZDBim369dKum37d9OulXTf9WMhgxTb9emnXTb9u+vXSrpt+LGSwYpt+vbTrpl83/Xpp100/FnLzCrbp10u7bvp106+Xdt30YyFnrNimXy/tuunXTb9e2nXTj4UMVmzTr5d23fTrpl8v7brpx0IGK7bp10u7bvp106+Xdt30YyGDFdv066VdN/266ddLu276sZCbV7BNv17addOvm369tOumHws5Y8U2/Xpp102/bvr10q6bfixksGKbfr2066ZfN/16addNPxYyWLFNv17addOvm369tOumHwu5xopt+vXSrpt+3fTrpV03/VjopnbfGONSkq+Zc37h6A/75KCbfr2066ZfN/16addNPxY682A1xnh/kh9PcjXJXyW5a4zx63POd24eaIN306+Xdt3066ZfL+266cdCe85Y3Tfn/MIY4/VJHknyU0k+kcRg9UymXy/tuunXTb9e2nXTj4X2DFZ3jjHuTPLaJL855/zKGONw9CgbvJt+vbTrpl83/Xpp100/FtozWP12kn9J8ndJPjLG+JYkx6+xchFhN/16addNv2769dKum34sdObdN+d8d5J33/DUp8cYrzh6oE8OuunXS7tu+nXTr5d23fRjoT03r/iGJL+Y5PlzzleNMe5L8p1Jfm/zQBu8m369tOumXzf9emnXTT8W2nO+9D1JHkry9tPH/5Tkj2KwembTr5d23fTrpl8v7brpx0J7Bqu755x/PMZ4a5LMOZ8YY1w9voLvulbTr5d23fTrpl8v7brpx0J7dt+Xxhhfn+SQJGOMlyX5/NGjfHLQTb9e2nXTr5t+vbTrph8L7RmsriT5UJIXjjE+muR5SR48epQN3k2/Xtp106+bfr2066YfC+0ZrP4xyXcnGUlOkswkx3evDd5Nv17addOvm369tOumHwvtGaw+Pud8aa4NWEmSMcYnk7x08ygbvJt+vbTrpl83/Xpp100/Fjo6WI0x7knyTUm+eozxklw7W5UkdyV59vEVXERYTb9e2nXTr5t+vbTrph8LnWX3fW+SNya5N8mv3vD8F5O87ejRPjnopl8v7brp102/Xtp104+Fjg5Wc873JnnvGOMH55wP717BBu+mXy/tuunXTb9e2nXTj4XOfL50zvnwGOP7k3x7kss3PP+OzQNt8G769dKum37d9OulXTf9WOjMg9UY47dy7ZqqVyT53SQ/lOTR4yv4rms1/Xpp102/bvr10q6bfiy0Z/e9fM754jHG3885f26M8a4kjxw9yicH3fTrpV03/brp10u7bvqx0J7B6r9O//zPMcbzkzye5BuPHmWDd9Ovl3bd9OumXy/tuunHQnsGqw+PMZ6T5J1JPpnkkGtfCdxmg3fTr5d23fTrpl8v7brpx0J7bl7x86d/fXiM8eEkl+ecnz96oA3eTb9e2nXTr5t+vbTrph8L7brCb4zx8iTfev24MUbmnO/bXsFFhNX066VdN/266ddLu276sdCeuwL+fpIXJvnbJFdPnz4k2R6sfHLQTb9e2nXTr5t+vbTrph8L7RnrvyPJfXPOw64VbPBu+vXSrpt+3fTrpV03/Vhoz2D1D0nuSfLvu1awwbvp10u7bvp106+Xdt30Y6E9g9XdST41xng0yX9ff3LO+ertFXzXtZp+vbTrpl83/Xpp100/Ftqz+372plbwyUE3/Xpp102/bvr10q6bfiy053brf35TK9jg3fTrpV03/brp10u7bvqx0NHBaozxl3POB8YYX8y1uwBed5LkMOe8a/MfsMG76ddLu276ddOvl3bd9GOho4PVnPOB0z+/9qZWsMG76ddLu276ddOvl3bd9GOhs5yxeu7W/59zfnZ7BRcRVtOvl3bd9OumXy/tuunHQmfZfZ/Ita8AniT55iSfO/37c5L8a5IXbB7tk4Nu+vXSrpt+3fTrpV03/VjoLF8FfEGSjDF+J8kH55x/evr4VUlee3QFG7ybfr2066ZfN/16addNPxbac770ZXPOH7v+YM75yBjjl48eZYN306+Xdt3066ZfL+266cdCewarz4wxfjrJH5w+fn2Szxw9ygbvpl8v7brp102/Xtp104+F9gxWr0vyM0k+mGvXXH3k9LkjK7iIsJp+vbTrpl83/Xpp100/FjrT7htjfFWSt80537R7BZ8cdNOvl3bd9OumXy/tuunHQmcarOacV8cYD9zUCjZ4N/16addNv2769dKum34stOd86d+MMT6U5ANJvnT9yTnnn2weZYN306+Xdt3066ZfL+266cdCewary0keT/LKG547JNkerHzXtZt+vbTrpl83/Xpp100/Fjrz7ptz/shNreCTg2769dKum37d9OulXTf9WOjMg9UY494kv5Hku06f+oskb5pz/tvmgTZ4N/16addNv2769dKum34stOd86UNJ3p/kwdPHbzh97ns2j7LBu+nXS7tu+nXTr5d23fRjoT2D1fPmnA/d8Pg9Y4yfOHqUDd5Nv17addOvm369tOumHwvtGaweH2O8Ickfnj5+Xa7dzOLICi4irKZfL+266ddNv17addOPhfbsvh/NtWusfu308UeTHL+hhU8OuunXS7tu+nXTr5d23fRjoT13Bfx0klfvXsEG76ZfL+266ddNv17addOPhdwVkG369dKum37d9OulXTf9WOji7wrou67d9OulXTf9uunXS7tu+rGQuwKyTb9e2nXTr5t+vbTrph8LXfxdAW3wbvr10q6bft3066VdN/1Y6GbvCnhI8rEkbzx6lA3eTb9e2nXTr5t+vbTrph8L7Rms3pHkh+ecn0uSMcZzk/xKrg1c/zcbvJt+vbTrpl83/Xpp100/FtozWL34+lCVJHPOz44xXnJ8BRcRVtOvl3bd9OumXy/tuunHQnt236Uxxtc95YzV8eN9ctBNv17addOvm369tOumHwvtGazeleTjY4wPnD5+MMkvHD3KBu+mXy/tuunXTb9e2nXTj4XOPFjNOd83xvjrJK88feoH5pyfOnqgDd5Nv17addOvm369tOumHwvt+iLq6SB1fJh60gq+61pNv17addOvm369tOumHwtd/O7zyUE3/Xpp102/bvr10q6bfixksGKbfr2066ZfN/16addNPxYyWLFNv17addOvm369tOumHwsZrNimXy/tuunXTb9e2nXTj4UufrByEWE3/Xpp102/bvr10q6bfizkjBXb9OulXTf9uunXS7tu+rGQwYpt+vXSrpt+3fTrpV03/VjIYMU2/Xpp102/bvr10q6bfixksGKbfr2066ZfN/16addNPxZy8wq26ddLu276ddOvl3bd9GMhZ6zYpl8v7brp102/Xtp104+FDFZs06+Xdt3066ZfL+266cdCBiu26ddLu276ddOvl3bd9GMh11ixTb9e2nXTr5t+vbTrph8LOWPFNv16addNv2769dKum34sZLBim369tOumXzf9emnXTT8WMlixTb9e2nXTr5t+vbTrph8LGazYpl8v7brp102/Xtp104+FTg6Hw639B09Obu0/yIU6HA4nNz7Wr8uN/bTr4r3XTb9ufnf28t7r9tR+zzTGegAAgHMyWAEAAJyTwQoAAOCcbvk1VgAAAP/fOGMFAABwTgYrAACAczJYAQAAnJPBCgAA4Jz+F4NEn6pxq51HAAAAAElFTkSuQmCC\\n\",\n      \"text/plain\": [\n       \"<Figure size 1022.4x1440 with 80 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"fig = plotting.inputs_plot(rinfo, t=-1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Latent Traversal\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"sg = ShapeGuard()\\n\",\n    \"_ = sg.guard(rinfo['latent']['z'], \\\"B, T, K, Z\\\")\\n\",\n    \"z_placeholder = tf.placeholder(tf.float32, shape=sg[\\\"B, K, Z\\\"])\\n\",\n    \"params, out_dist = model.decode(z_placeholder)\\n\",\n    \"img = out_dist.mean()\\n\",\n    \"highest_kl_obj_idx = rinfo['losses']['kl'][b, -1].argmax()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1296x1152 with 72 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"b = 0\\n\",\n    \"obj_idx = highest_kl_obj_idx\\n\",\n    \"interesting_latents = [3, 4, 26, 43, 56, 57, 61, 28]\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"fig, axes = plt.subplots(nrows=len(interesting_latents), ncols=9, sharex=True, sharey=True, figsize=(18, len(interesting_latents)*2))\\n\",\n    \"for row, lat in enumerate(interesting_latents):\\n\",\n    \"    z_adjusted = rinfo['latent']['z'][b:b+1, -1].copy()\\n\",\n    \"    for col, val in enumerate(np.linspace(-1.25, 1.25, 9)):\\n\",\n    \"        z_adjusted[b, obj_idx, lat] = val\\n\",\n    \"        rimg = sess.run(img, feed_dict={z_placeholder:z_adjusted})\\n\",\n    \"        plotting.show_img(rimg[0, 0], ax=axes[row, col])\\n\",\n    \"    axes[row, 0].set_ylabel(lat)\\n\",\n    \"plt.subplots_adjust(wspace=0.01, hspace=0.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Prior-samples\\n\",\n    \"We can also sample a few `z` from the prior and decode them.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAApoAAAKaCAYAAACeDPn/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOy9W7ckt5Eu9gUya1+abFKUNCONj8/Fy2d5nRev5eVfOD/Rr14+nrE9F41ISSSb3b33rqpE+AG3ABBAIqtqN5uaDIm9s5C4RAKBwBeBGzEzdtppp5122mmnnXba6dZkfm4Gdtppp5122mmnnXb666QdaO6000477bTTTjvt9Cq0A82ddtppp5122mmnnV6FdqC500477bTTTjvttNOr0A40d9ppp5122mmnnXZ6FZp7L//+7/9+35K+00477bTTTjvttFOX/v7v/5608N2judNOO+2000477bTTq1DXoxnou2+/AwAwWzAAYwiAClwvpFHH6S3L7JTPCkdEwCc5c5TbPHwSGiiVsz+3KUd8b/g7kcHvfv+7KuV3334HhgUzQORkwjVPSPlacrKTo7rlWQ/+jKjDHPdjMQADg9/9/m+rd3/59k84GwafLADg7vGA82kBFzmNSCQ3f+jpP111f6p+9YpfdBOddUXBVySPORBgyMBa4PeKLP7bH/8tK84Y8orxOhZ2+rmJlafyx+uWX+p3AmABGJoAAL/73d90c9g9mjvttNNOO+200047vQoNeTQDlDXGeK/RrS3bn9sDRdVPlSP6FF5cim8vK62R77CHdKBU4jrmZg8sobLUyMkYrM/f6LwwrLPskZrkdeSyTbko/NzyO0Z8Mzd5/b2kBw8Si39xY0u9kLGhvIO+m/xPbsriGQzDFnZyNvtydp5NusAHmfWIvHv8zE6pTyXfr1gOrZdQ1fFN3PStEgfzFWPRNE1YFot5mpolGS+nNujDf8fezMuG69DxPiedHnhhjAw7zSa/WBacNmNKGRgyIGagoRdLGgOassWK1iv04U2p+oTmN31qoRCD1xWN18q6GHY359vm6VYtlXivy9pSRlEHzGCbJh1N40OIjFMFmVheIgONNLQa45NSqobr2o+aFtR1dP01tiT+RYNHvrCvUf6k4j99ojt8F3NbFtlaYDJxgAeoM8CtV/4v0H5R6Tq9MJD/UJbjZbZjvtaihbHGlZBnsQx2i4b0HI2JsQ3BNcJ1FuC/U/pc66vkS5EDzmNtl9R6jYmWh2ULgJp6saQhoBkHEkVoe365q1deDrf3p7RAXtnNQNd5nV5bwfdzHStLHyTSoM7iWU3PFkQGRHQxyLkMmP48JFn9JMuENxE7/l7d+0agK02wklbrMuhcZljbGNxDNA5e0J6h97kRa39ep5SfZ3GZSlsMtzagvSZtN4VCHjxOfm8EWz215TTbRObGM3CSk78u+sV014zG5yc3m1uDurynF0sanDoXpQ5K2pbGu40Dro487hEdpWITVHQQ6ZZFm7N+GaP6QQNZddrrVQMrGlP3PtVl5Uk5xerwqU871pleoyCGASoN8HNT6oPsz4/qOcmmKXqdDRWFe7U1Kg9lN7vVHGklhlTmn1+78fX1vq204kEjpTavdraPD6mj7X4N1fVwfQsYY9AfhBng0B/5Vfwv/El14U5tWp+Nq4MKGaxw5aguT1P5o2Bl3wy000477bTTTjvttNOr0DaP5i+MJH6nEPAq6zxbZgRnj5+ds2OArl1/J72XnB5QPLTT9ojHLaqLSUzl9+iqqfhBD9wvi7ZNw1xfXMr9VcpZc7KH1UU/p8PnBp7+GxSvhSL3ONYuk5HVq+t1+/l426TTdPsUeiPPWAHt7+Q45riFJnRrYbh5hpsZ+JnL/yVTUXflpt7+xGydfsNc3xDQ/AQzDRdRztdnxhwAfZp9hMamu8bAzaWbKPplXAJAazkSTn3mWBYrIEXP6PMhZg+jL0Ea5IeFTwXKPgmtTcMEutHUrqj3pDhvBbo+Q4HTyOvBS7nVlshcULwWqjyP5fgLWkrdpEv0QrLFk150a9IxXI2bq+6quv4raKhXpC218+l0vw48JROU/8yjb/io7bvOyyDFSL2cdmF1RA1gegloXFfWq8BOy1XJ9BrvJ2VAQawz0mNfXM6r08WurbzBf54vrBXN6yu9tqzfYk1nlu+gd1rJpkss4nyyex1egWjQYOf8n1ty0K3rX9IGPkmXHCuWbPH8m/ttVAKHyID6egMX/+5puCbUiNvqkXrCsup1vIbkAFT4Mq8sd9PUeZj8yDr8Zy6LPS/a50N5k7UHqjXQeNlGkgTsWrmOKcqm9/MSpnoMDb5+bfplyNYWumRKM9CtQWofgF6UP9X+vp5xFOJ2waniwfsc8NBrnj5B+T96KavLY1rtW8TqIk+Zvud76dNrGwaXHCsmde4Wj2ZeH1wGqjH/Gqn7ddrLLhj/1HU11MAiqI8CLxNvzWgpFiNuWLq2bwbaaaeddtppp5122ulVaNtmIMUj8CmpNqL/WqwybXqkpJFp82D5jpRZ31/azrW2yLdMB/XWKMm1SCl2sUh5Q35dHi4P/MVQ5Vx91akWteQBb2hubm/jh/T8w+Hqm/KqPWbBw5mFc+9bPk95ueUxZ1umyq/z8re9wePT5tu/89N7oNd1OTXkfHR5Q53yr4/aUOCC7/5FV5Xq5hSPbffmZt27XrJKY5uBFKWRrdG8oVJ7bfr8wWpr+nt0Sm50+pxas19D+bSng7atI02iRUroeEbx0PBfmizGh1fis6+DBukaYKhRDkpb0+ObylHO2Lxow1rrEoBBNPJLXqPZot5UeUm14djLuO+2aIHLz3ut5sgyqI1nJYupczDiUZl1rvnzzyWGzU+7ebN9znLwOVHtBEg/deQ5IjtbnI6DHs3S49Zm/FPSpzh4t1t+VnTJg95U13slUwYtJdZPn+fVdlRo+YyA2LYS3b7pqOneEI+fhyxWLLwmePzktAYMW3QpQKVOOeNrNCtAMnyQe0fflXGrp89jjeataXSdtW44jtEWYDmm+z8d1EpVU8rOcA5q9RJRvkYT3B7gpZXzSkhzG4j86+kI3S/5ZLr+1uvgAQV5+j8DZW347m2bgcq75npxKx5+fqHbNu1wdWkdHkZJA5WKV3kwH9VLmme5kqYPYtem03ubjtzxRgCYwOF8r5U9GK8xjIwp0teToZ/beMqJtT8baBSgjnrh84xSfoNedMWD1t0MFI7b4s59KJTrur9GjyYQvvEymUyLGmqvc1XORi9mn6WmohoJSjmo+moLH3pppW5tLhvI/lLTo3kBI93y2gHNwM+K9KoYGTk+12+rnSprOvXyGSitrHwzkPO2j+W2bwbaaaeddtppp5122ulVaHCNZrn6oz+d9BqkW5av6Fka+/EKJL2Yt/Jejk3Hj6dpTPM03VYDi98pmWhr52gG70rrc/Tm+vms1Gu8QZvLWplJvGjx96r13Cis/tMtpyVr4U/H96ikHfNyDm0GajMHJ7Da1O7n6hV5XdKm2Jt+zFYfjvLWmoa+sm41VlpR1YGHN3iutTWba/o4pXXHGQl3eW/qPKO2527MQfnLlN+xWcufeSyQDzdZ894pqTmTdME6+LI/bki5eepc3uCyHv9Stq6grGJft8zbTMWXimgruNTTjygxFx8YGejHpnlag/tl6za7a5GqoJ9XMV5yVl6dB14XkF7M4iVrLbeA1J7S6ynMHpi8DHzq6wHb3Jfg5xZy+HPL8rbBJ++/l8rw7ddnSrpuqrS1gz+E6zIV9GYLLLfi5+UQpToI401zmr9Av9mG3cS29uPVKR8qPz8Qm7P2Cfm7ati4BCzmBWs6VfnTyIIwyv3gFZQS/NxOoaY8U0mvRa9ZxjbA2QaWKa8t+VCmnPrpa29pEzDGx1a8WwBQIVtZuoFNBxuNHr1s+fCKsgfcDEC+zjrjNeVC2eO20rV1xkr+Pcvb/9H4utbgGV6j2fxoaoChz28wHaVtnA9ZEmM5NWRbC9/WDbYwdwlI1sP751mX/aKtj6XjhMRa1x4zBOf7LDJ4Farb4jOQfUWfcPxHRKsMxQ0FZHn+HAuze3pT0hZA2nIQFBnQtjWag1dQhrxD5uu530rRthf03irPG/E5nF0YvDReRig3T8cP53cKql9ussL17xn3gl7rAe1RNHYGB6VPQdeAyWv7im5EcfXYm3pW/gzS2tS2NFLH8tKWcGzzaI57M6upc/8h2ZWoPZkqgofbknT5/fdOfbAZfylParK20HcMhyy5tgxgUMfo0+u1p7MHRuXUudt13i43O5rrhrvSPpVBfg21+53w8MZ/spRabkV+ej3mkP9T1YumI9doxZAfXd5U6roNHGw+3ugqj+aNlWsuOJcO8telb+bbCI8w8ZP21wQyu+vgVuKsekGjpLaBJYDheD0ihN3pWy3RTp6voEgvBZHXG2pUPV7/ZZpl3AOCnXzCkwIqVwdeEX/cgBkDn/oSiN56YPIAQITd3Mj+PAf3UapOo4hVvGZQ5nHWqyO84DqoV05kqAaZdfAIzy5eS5d2dWx6RJBZSl1slS6RvS3g+Rq6vX5d8e5irDwufoTlCrIuA4CXhocmj3n7vYaXc+t4t7ZcKOm70uQOf9oTUTTMyL7rfKeddtppp5122mmnV6FNNwP11sVdbMW/whTSJZ6AT7Vx6fPzTSSrcM2b2Vqn6dKOeJc0a6w9Xdr2Ivl/VpYNfKpp9C0bgbZuGvq0SwHW1lP2pmC25ClnSPppL/NgXhIvl0NZ793lQoU3oHWz0M+1pGMTxW+5he87eUR6Mr+mq1vv+9W5jf9snXjpwVEKUhzeaplN2fbl5MSNJUtil/nK5gspexTjF67kV6KfR77Xy5NtEJcddK+rdZ5oay2mafJ5JO+m7NvZs+SIGTD0iZZtrnssezq2vUY99Qnh183edc8XLmjj1DlloHM11c8MPjeBx2zAuE2HKZXGbZbMhFy9QqGxfMfXclYpmyCTkTpTCR770+Nj4LNJRNXgddWmoBuuY0htPtA/9DmLfpqrFXpvjc8oANyS9yV5BvlYu2VnLd46AE2KVpND/6bDRDl1/rnI4dUkNpVsJQaD+FLZrhONiLwKBTPdKKc8S+Arf5RToyOWFdVPEuCUMlgz3CAGmFJbqAC14CQN0L7gW46jN5LPKwwaLtsxhJdraRuVrIFDGTPUGIOwnC0AYJoMzGSqmA7Y+2eZv2yDi2n0Kufxq6lH1qjH2GrhRS/bMHW+0aOZPFeffI0mXQc9tw7Q13o46/LynauK/hukfGAci3/ZcAG0PJXC+m69U8LjU+d9ttGowVkcKFiXw1sP2O47L8tzm7fz8nLGqQ2oxunSNZb9/NbX7rq44/HW12XWssLCKCPPV+d0Ax+vPHTmNUDjp5p1kYX9HNC3rjoVRq4yl8lm9T1aYvZ6haso3dGn+WqtP6zPCDGSLLl16e0C67NfMTy+3PYUmdeTmhEUEPCJ9LcxJ6NUu4i2hJ8kxqFlWWCtxXyYK9AdMFE+LnNz1E3j/lrDXHOV7ega9cCKNgOjCWOmOF/Boxktqji6N6JdAj4vAJBXKMFrPELjQEBrVKXXb8aAeYKw3rjlzQnl9jcBre1Er/NsezgBdIBpIH3qXCrlFTCdGTrbwM2rAADx77rnZQPw/Cw8XLrSik8XsVgDy/W8erKXx2t7OUfAZ/3eTZ3ppaV3Ukeu06cxKnxZl+i8C3Usww/SA22JgRKuUNdqkRmgaHTZ6/rdlrRaP6rBp/RSErfzTx42JO/njUXs+hMybi3z7IFSGjNcGclITIUjjlE5TzJK6s/lfSHn0xnzYfZppBGKWF4c5XNMhhBEK0PbZmINNvcNcJ9M8NeGxJqxlv0cbM99M9BOO+2000477bTTTq9CGw9s37ZGc7O38hIrOlgfW9JkxW1PecnaujLB9qJrb2bbc8Bi4fO6N1Ofxi4D+5MB9VT6+lT5tuvYEtVnHF5nKb+Ol7PvuRz1bH4ar+bWG3a25Q1cM8Wuebz1OCFeK053GUjlZafO70S3XKOZ5yuLvJ0MjJ/zeZlHs0/BrVjfbrNVH/Y8wtlRkuD29LHwcpZTojL7krfurCerjxtI023pL3farzz7sbUxrZH4yra+XE+MyGTpmXSB4V2Zl5QvklGrxgszEiR+y3wAANbG+Mt5AQA/je7ztozs/FKtLqjkZKSyWkuUsg8YyGltT8RovHwmYsN57Res0Qww6yJQuEWYSTTOWPTwsIWnS8Dm5UDzGsp7V2C7feOOjC1pbUq9PZ1eh7XO1mxNlfcAQdL6Iys/qNTC2cvw57IGuh1YGACb7mEln/BwPV/6wHstmOyVsd2QiLkMGSL9ZRn6lDinfxU5TDLth4b2aiH4uc04JUZrffLGhoOaG3ViDPUNwlUqjqCirPEJcxGv23/Sv/oMH7tp0tag2spRxNeWTTTbmDmble1+Ywf/1hS+dKXVCkZvN3N+YR++GrzKrOqcmBhs8/fJ6FMEOCCjsDOfABP6L1J0Zj8lbnyehsDWgihNANvzgsmDTUYCmi6en76XDpHwb/kZ6tR3nirwOk6jp3AUAL4Rr9wwmfE0yNj2NZpeeqvsq0odzHM9Yvxz23xlkmG1t9nylmlr4v7ItJoPN5InTV+/b0PQtpdzi8rqe44iF+Wgz7Kd+/WRH6Y7pgQ/2QL1YpAqgkqmtpVz5Te4xdujHWlTzrlX4doy2Hnkx9YZXebBdCkh+GyvAe0Zo248kcjqOtDexojXZVoN+V0QcCXQVNSFvhP9Mp8fUPcFbXant543Wy+XZZSXQaTLc42lOzqSFVgrsuyp/2wsp/q7q/geHCEsW3wttffqjqY2ReATjbsE6px32gDkxjG2i0wJsAV7DyWZKSLLfIh0nuAQz4R6L3aU2/MCM5msTcjzJzcQujZJ6RLvfIM62bbxJ0Tuz8CsbZiM0YZp29Q5+d2VI5WzRRBH4946XoyvKOJGxMuBZqNgYDPgyNM3fer+bwuMXoBxM9Kn18enJ1N44EUtQqXUcVO/316Hr7MzmOLfS7zlVX4us2vZSpldPrb3M6ZNLhqFhHLr6RdOy0JaANNFu7EcNhgqbxBpnqOpBrwCCqgAotTdMt4K0Ow/AtCbmxT3bwSZlIeVmzJ0UuY31FmMOqwLMgdK9rnogJ+QG8RMivM0XCFZjC8F8OzqPu1d48Pq42ZYq73CVaGHb6ZLANNKmmxmpKG74hS3dIaBYMGw1iavpB/srGXAOM/kNE3eS5mXQyDAiLGR2dVk4fkkIrB1XlLjy3H7kjh6RQEA1oFNkjtiNvd/bnjBBwxbCaRVbCQN91aeCqDNrKA+7ZuBdtppp5122mmnnXZ6FRpcoxlQMEUkPu5kIe2PHq9jPQtm1uNcMfUz5uXqWImv4KRoUfAK3M4xp5mNren0lbVrksvGeszVo2aaXqSWJ/Pauri+LgM/ce3PcIaaubitzCrHcuE79DPkbkH19OLogcMiD5++nc5PqTfeubQtz+TWzUD5r1Yd1x7N1/GUu8zVx+pX9kZ4TupzFodOJWwWU089J4UQX2XLNZLnpAwbKn/gnfvcOjz33PXWbtY8OQ2oyRXFCCm7NK2bLf+QU5aVh1PplZrTNvKiU3asD8TZrytT82Lyqyr/Ykm+wTR5pVNI0Wl+mtx4LyXIwDIDdsE0Jz8aM8MinJHrMrXMINjCMUewdgEZAyJ3M9BiF4TZb60PRRn3PMoy/QMsWxg2blzwEctWb9UXh7c9kS1il8cStXTm6jr4KJuK7rz51LlwS8tOh8TjuMLqxs/zbcYZAaRKfuvxfZxNA0VD5b8a4EwKq5yO0uK1QGLMY7BEKkLGduqWYLLHE9fKuUHZ4L62TOJG64JGSPLlFJXswAMqYgCZXTMdf/WSrbp5u5GpABfrmV8KgntT332jplUjHP/p17mbTqOi429F2NrjBS2V6bhSl7qRsgJK5bi5xmAWrBtHrVrNNxOmc3dFjEbplFVrlr86ZZ7ChMYRAW29qR61LYJUXSowM4tGIDndKfWUsiaw4jhOk4o2SzhSpWzq3AqQOSpKjb4zNnavZ36N/SWn0TMdC3J/PdC01gJY4C7yycEcM7tqCVUj1m8G1oyXFGJ3I1B8T8bxL6foBWgVcEykicz79aIW7PkkTQRbxmynXmIBoZweaBR12ASPpYNAHT8DBqEmzyVdcGC7rsiy6Homa4913Ga8fgZrAPX2YDPPVU/aym/LoNTayKDEi71JAXTwgK5SQg2PUYy3FTyqmRTxhCcqKue1upeDZq9jtdJuid8gxfovSym9XQ1WYnIeWrO2gby1LYvbDOVkHVfhJQmvzVBBZfz1tik+aT1/9SrEvsHTvvVK46deo5l+aI8XtPGqvmy/DX1EN8x0hTjOoT4EBTAlyys1SxjMc7BaHJlSPnT0d7Y5sKwvFopOSVx5XxWSkKvGbj5UFh0GfWKpOiPoDCA0K18yqAGREKPZQLKdA0jiqoSsnG5HbXJQPW6T6n4/7x1JRURpw5PIx9pzTD0Zf+SYyMYyQNZVajisaBHgMNYGAcZ7Se3igKjzZlIyKn3JJLyo5Le/pysoC5lzizY9EAaMMfXY4NMO6R6Wj+syE3ShfjOsdAaMrM8MdTA+mmw83ohi/akdclVhtTVmM+6QEtQjNeMOd47RAVZPE62cLqrxi5ErkpZYyntkqhqgyhjN3hWPOvgsQaXYhCHyqwGtAI7IlUnp0WjG05mPpAG4T36LTiHKAkb7f9mDzSKykoc+LYchD+cqiyTUgd8Jyf65n1jp4b0qlkARAKg9dZ61bwAWVzUfgUgqy4It5DIbW0oxeHJGWMRryaJJdeqTb5LFpkq8Tp4r8BsHsLIPDynYMYogMUfvCVSG32FzUK4/gOKWlQ0C2Dfo9HdZi6+uA+L8kYoa9GNjlG0K+MJrh9DXI/ghBJAdcMgQ1Sg38ZHN9Ajmul7jW+jNLePvSG5pjA46MITlG57C9zImsdMmVlHRt4KHktIun9jsOYAMgNIBTTk7lfIM7Rr6lS8/7GiPYDOJltwgZMUxSOX5p7UTqIe1Bq+BVDerhTrQ+luyglqzjBy/c532zUA77bTTTjvttNNOO70KbVqjKd26qyvfmiC8bUGvWvRjQSlURfB13EudYdnaIcUayD1VlL3L+BQeFs2zMubF9E/dtWraQezCUym8mbX3smRNTDGiSKdMR6q2lOJRWr/L2lughHwyTl1LcgFd4kSk4Kng6Jqwi/V5TTCmMYUexbTlLdtws0efvZChO9/NPwdq+o97/bx0khTt7doxt5Yz70SWDyP9i8vaIGRHuXcofOZoNSqO/to9kpVHcEekSE+GTFc9NkNuQkWbycOjy3ZvczDCm1KhQhnItgxH4sUZHu9ayafJGaXfI/mEUPGeIqmjyhDn2brNjtKpjmIqowo1Hs4KTbNZSSe7ABYeTNlOjM6McaPg8rWYBA6zupL1rMzr9YrCQDdoWxvVlRHWZMb2E97A6KN05wuJ3+KBCEYwwlzrV3lAf5iidxs7649RF1qQAdgiu1koNjiLmReL2OCK57LjuC4LHIqVsFA55aOBpCQ0+Wvp5fRdZrD4Tedoxs1ApL1dzaR4bAPO/Gcn91UhriMMAc+VrLR32fhCBvIWgdI1DuSgchuWkKCyZq6eCgyzUiUAFcAuy8aLeAkqs3qRvwVIiGvbRspuAU+hGVsYRwyclZz0xQqi2svQToJ1KheDExkwE+zCsHaJGREIZiJM0yzqozPkF1Mwepx2PqXC1qbOtdKb6w5VBlJpLusEMuWUdn6wuWyLQiOsyrCUuTXG5ICfhyUS8tg0tnpAk0SsLScN3Igy0acMbEr+1GUcF7PaSBgMWTGFHH5FtUC1RulpcL0+w3f2SROPNHXa1zNBylqbLkk78T3iOCF7GR/uV2kQpe/R9HvJ1VhdURGbM0bqMWkbXSA4HdHTgGV+1miSlnysdTmlukqS5bq7FDrO+oaZpmxneCjH12TcyR43HVXLtZSP8i/kFD+xuzGKuDA6PL9prG2vEW4VVWalPGo5ZT/luB4Ca+eDAj4LY6lHm3edp781K6tFkvbYSbWqE2tF0eehV8ljVMEtbwEZSkIJdouP5cAL5IIZ1ylSsuPtYmFzbdD9Bt1rqVjLQOxwqT8WfIRgBRSmNSPZSFHrKjlAZ+PMSNmK4msN2KEjCx56YCBLKvgpQguPsnjFBZc+LN/d6pSEDR7Ns8VyWrCcLQiEaXZHZZBh0EQw0xHT7Lrf4TBjnqYh/iNbVdSWgpJCzsmLNACGSkW6loQFEIwgUyin0GCcyYaaU+SeNTnKNsRxIe9cjuxNaoPPDf6EKIt90PIqFJtWtpGiq4Ona6v+bVKncinEEPmyH7qE96naiDg0IzGo6FeMqJYgF2aNFzdtkNB0Vp5D9r66zCD1k4Jd5G0JD4RyKND69AzcIPj+kmyH/pYVp4IFGeMagb4EwIqkjNRWAQBmY2gKi71frIl1KifJXByfCsMbQDrYPQkwkrFWlpnKi6IkRILY74QPWXFQNBx1GLEJL1VpytZ9x5crbUENuefsTy8DUX4tyzmf/nyGQaP6onM04yCf8ZcX2C1+gLcmcGjqmvrF5V2k2PnFRQf3DwYGxhCMmaLELWfrAWNhjRnyU75CeCkvhwyBrAQDCmtdq0V2jNIyLmqUkvRxJmBlWumlpJhfiJd7fXycrLLkTnmJGpB5qVzZHHefZxGrr1QGztWOWCvPBHyDNYsMJKPgt8xK2n8Ewum84PjsFpB//08/4eN3Lzg9nwFOQNOyBc0WD1/d4+u/+xIA8M3vv8L5bsHD3X3xPe1vql+PSLvY2NXDCkVdljMYjvpqK04ZZhse3CCwrpvkEg+uwqmQLSmzTl4Zq/baEImG7hg9rh+bPM1rUaXmZDulwTAHnA1vZiNoExOBFPssvgj9KrzrnBF0DaxJWRX9O/sx4uvJB5D6lMuCS+XgX8o2w6Xp2PJu6cBuc4lMWU+djludgADf/wovWgZh1KYk+WOAWpGo0rFtSroiY29FjsvjhZwMyfaTAyZ5/OqdAVnpLo3xzwKzt8FUDM8lJwCwxHu4KQjI1zFwwgCJyfiXivxH9GbIIgepLN9WRektUw96ElRH3+tgh903A9nBokEAACAASURBVO2000477bTTTjvt9Cq06RzNgL5JhDVd+Q34PWyxUuun/mKotCssZmepcG4xGoIFcDqe8f7HjwCA9+8+wi4Wh7sD7h8OAIDD3YT5MGGeJ7Hug0CTP94gGsSEtJC4w0h8zE0SViOysKaV95TZr/oidaTpyjIsOdTKjUAcSkcpKWk6lCGMMCBOt9bfmnEevUgyrJWgdPin4ORhDesWS56Cd7P0DnsLWOysWhaLDz++4C///ScAwI/fvsfLyzOWZYExM94+vgUAPNw94C9//B7f/+s7vPsXF/f9f3jGb//r1zC/Mbi/v9O+WHxj4+1Fns3828ry6rz1ODEb6jecW3Gjnb6m+Oaj+Mp2y72h+RpQ6T2QXk3pQRinyunW0mfkbvt49ZnzKv8UkDw4Xj9Lz1bsJ7nya+rTJq3UnyIO8oVTCaK/VR4uzr5jjIUVr7qMpfUP3eWp5NPTKxBjoXQlkeqpDOc7Vtq6Fa7x09SLJvPmkebQLPR79S1IXrmksjs9drRbdXVIOGvU12P0wA145r38Jyn3skXxZc41i3M0BXgxQnUZKtrcz+B2F3cIYctm+7OXsWbTeJMVE8ZHRi5f4Y8CYLh8ZAXnpEF21dNZxsny4PyxrKcObdsMFH5RYqZVzGrxVP/YlmZFWSptcg1lCsM30Ol8hl0Y3/7rn/HtP33vwo5n11icFhNPk8F0IMx3BnePDnw+PB7w8PiAN28f8eaLBwBwu5ONgVy30acEFuOvSlBqwOm+R74XwwKVeZCSNg3qMowEL+U6OqCeDs3XcroO4pYkSeWifDVRLeTNPlh0uYQoi+k8wWcRxso8bDwL0L/58OMzvvs/f8S775zB8Xx8xvPLBxgDfHH4AvPsAORXb7+BtYwf33+P90/PAICnf/wWT+9f8J//t7+F/capwcfHh24dqPVSfe5IWqE1hvJUiN3gkLWHqM8yQ5JxUNasxoAfMEtZbaQN0/b5vSBhg9LKt0gK/FFfFrXNfjehFrgUZcu/EmjGPgQSdX6NRtyWto6dRtUAqJhZnEQApGUIMqO8j6/ypIDHJueb+krZrkK6hPHJxfRv2nyX8qmX6BThRfz0tAKsy6lzilypX5Dyp6Jf+J4WO5hAUTVbfZ7KJ7XOmz25AprpOcbIxgIqyxHjkCuFI9C0VGs+yYnYfpTAY15yFssV5zMVWLFpysvP938DuGbm2N6xb2hUdY8iXuShAUAV8FmVFOMILOF/33iNZvibalvbcFcn3PhKUSRDn9HTReOlC+LqDzODjHF/ffLleMK3f/gB//IPf8Txxd1MYJljhw87zwkE/mhh2fodyA5UzocZX3x1j//pv/1nAMDbt28wTYT03e1KboHJKEyVkBeDtP9Zq+JcILXNEm4gz8OT1zQogxyE5mHiBpAMmHqP8cBh4uFvb6yQ9dCKgxBH6PfEZlgzKntjeCZ/RAVwPln85Z8+4Kc/v8QueLJHnPmMAx1wd3jE/b0DjqflhDOfcFxOOPEJAGB5wfu/fMD7fz3hzddunebp5QXTfIhrO8tPX5PhNkAsA8PHr/ccVadoIBMeiLfyFFZqN56asAH4iqxLnvUNFyz+qtAoi62WW4Cjq2930sZjRcHJXeUJVEp+hK7uKMixur8cPKduI3WIA5jLssSbUgJr8nBsY4x+g0qPMvy2kk4BpWVe6Y/QyOUxXRSu08yBTogr+2Kc9fHpUp4FTIh5inrLQJ9CcmFh0KXiy8pD8yHLJa7aKvCtOSXyJhlsn0Ip5aOKGjkPKdMHYJ2Jt9qBspLCk+XQ88UaWtGv5GYgDVaSf6lNwjnMUJSeOauQH+8FCE9sXmarjjRN3ookNzml+CPgU8MU5Zi4ThdNnYcBYihpK0SRzSFxbUQaGCZHchdxZcdzlc1eKZ5O7u+fv/uAP/7TX3A62nQt1rLAMmBogrQkA1iNu5ItYI9H8HuL4/HoSqUvRPEr1iu0dhahspozQJkLey5AdZwESOvwardvI7wVBpQg1FvWUdwaoMILYXmUhx65HRjbJx8DxQDgvQFcKlsAnLxjy8ni+fsj7HLGGc7gWOwZTBaAdYDUy8779+/w4ekdjssTLPnryDBjOZ/x/k9P+PXxjQszBmQtZqSNZs0vGVT6jdrc1jVKkCaBDCd5V9sujcYp3iAY0MFsxc36p/RHt80UBrvkrafLy6hUY4UK84GuALn1UUZ5puOAvsHYJlI1TpZlPkvid7HaJQ2w1sJ6sLkFcA5zuwks9RpU34BGQPJwxTAOY3kOLgVYTXmGcNG/OmzKMyA9fHL9JlvXETablmH5MqhQUH3W8YUyNKCrNbCm51Wk4jQWGDLRS+7G3WQUuE9NiaVNmK5xdHVojACaoudUQNM/SCAX9rNmGKkYzyWP2WZUX98t87tX+2v1WkYqwWd5q1WWgCGWNCB95KA4bD5Hs+C1lWAgzwtISbR1WM3eKBJdiIP7N0xlWye67398AgD88z98h6ePL7C8uAO6AUwTYZ4mTGZ2B73CHVt0Xs4AMQ6HyedpARDu5ru0btM3XFRQFeWM6h1SV+0pVEkV+pi0WEpAyqIzKlatnF7OnZIuPNO3Yt1cDji18+VqIj9KlVOWzYG0WZVBnhtmk7RUI59BJtLzcrLAyd2Ne1peAADn5YzT6YQJBpYXPPj1ug/3E959tDgvJ5y9R3Sa3dqq0/MZZ2/EHO6TwuyPh034uCl+i9plSyXl60/qh3zUFNXdGHA4/1Hietm2+RIMyoyD6vu00UuJ2wOqPXzjzszNQuIAPwQ2qfWzfiHXaMX1awXQTCCT8nRbKO9WF1KhZ5xS83y6EztgUlsGzyYhjTNBaTBzvLLPBZsMUNV0I0uioSpZUVLOU9nQu5k6JREu9Xly4rj8WIRLw7czrskZHvL1mGFDbf6gDx5zFUsxRZ5+gFpOA/GdaQASzyJmeqIiPPU1Y1yfiCDTBi4ply2RIwFxrJ6IMBkDU7RnTMd52pKjzAEt9RQhXypSjCcy19AiVQ0U+lOnWu+sdmdFx4rBOuruHExzhkHWaN91vtNOO+2000477bTTq9BlazQ3uNBr62kDDTuo1nnpzroI80H1BxK50/0BnBeLH/78HgDw4f0HnM4vWOw5WmCH6YDJEMxMmKc5ZnpYZoCAZXFTq8fjEdM0+xtiHN5nTrdQqHzI75SHsxYRNY9kGa9p2XCrDoSBr2yOoaLc3BmQ3oaf2u525iJeg6InJ3OpIvPuVMz1wqr1Y7UrI3kyk8UovZuGJszTHV5ObhkEFoY9LXg5P+PJfMTLV27jz93h4DzYFnEpBibnqVhOC6z3aAaPadbTVixaUn+UtncvUT/nWHzmiHEcxk1WMTzPPCuG8weuIijtyMnLI71Z7D2UmbUdPOUsd4PXOiubFowuzfxGo0Bh1qGkfLoyfYjzPorva9CILqs2/YRnv44sBhdrMyMfzYJXZAOF162IW71pKJVsiYp/cNOTsk4Z1uYuEsei5hm2zkNFkguhoFTPjEa662fVAxQiaUpyg79P+MGUaXfv3cpuSmOgkjeRJpMPCH3Y89en+K0NopDBVS6+hKL/j1P6TsltyWkcR5RPKA83j32SCRS2k1v3jzEGs/9Q40syBEw+49nXmbU2euHisrjErthjEH6nsSB+gxTD6MksRkalMcs+68oZ9R2WdVSP00pwHST6UkqT+jFFr/MYX9vWaEbAkJRoi+ma4erHJro85WDuogUIQL6o3wMCQ+AzcHx2vx/uHwEwlqPFy9FNp7//8BOYGA9393jz6NZcPjy8wf39HZZlwdPzs8/KHQ27xDuxGwImSIN2VcSoq0OnrQEngOpO3jJb0tLXJbdJKKXWhqLAb/jjlB2JtE2NKtajlWUqqVrCI8BFBC3Zi6RMyrLklIeZ3Bqy2Rzw5s61uSFgJuPvPDf48Qd3lBEZ4PnpCLZw6y8BzDTDkIG16aD/dOMMx2UUcme8+nkq4Gl9f0fWmp2tXqNNKI4TKbNQphO5YLgqTgxacuzT1hSF6aTYHhR4AuQOynxpRgBuHN9RNp0uD4LvU3YBg08fdo02v2+E5Pdm5YTOIUBmXLIgedFG5E6farLRASfiub9mP/An9RUBcNexJlqyfhVPdhhhuRWtm7afcf5NhcIqvt7jGincyJTbCCmKNS7DwPq4Xl+RqIGYNjulwaTpw3bZcswc+2DXzYUeEYZkvMY25C8UQSYhvp+Vh5sbCqalB5WGAHZrNaawT4LZrYazjGQMuX0UhsQVlCQ2ryIrBkH3MOdt3W6LoNcUXRnjaqFFnM67BrTsZMApqGi6HHyGcWj7hRiDazRlObmyzyIM0VA1XEXtAaIP5EIogzU14gAYmdgBJ2NwONwBxFFhHg6z91pafHz6AAD4+PEDDvMd5nlORx7Nxm8OsnF9CMJGgljuBTQqABFQNgzz+OjBTvGeuFjZSGhuREvWsqKIYpAEAjUfNXvee1Out2sBnoJ6A2PSIUl5Gb9xxwK1UpnczT8TGdDB7Rqf5wl38x2stbib7zBNDlSez2cYmvB49xjLu797wDwfMHnACiC3oiPP8G0mtV7pqyueqmwaQFy2neXMm5quaUt1Eg0Rbp8U4JpcH+yyD5I/C8ZlXLlYHchlUK6hygGojyuMiQgq/ZmeyZvuMgieMmYpUw0qwZs7C6kGYYN9Mvvq+CflKQfU5LWSgFRh+AKAuZ2EJimLyhs2pRBeLJomEAHLYuNpDnUGncH5MqZvRC2lSx6A6u2fbxYZLaet4OUaXgBJjoVUtc1UxaEQupQGnguSoE5rDe3mI/KFhP6ReTTl+msAcbNU9gV+bGJOYNyQA6nMDlyKPBnIjPk4oyH6EIGd40CEBSdI+fkMgK2tvs23egF+OdMDGmgdNerWqD3mDaTIlbPuT4z6fswYB4Y9mkNBg9RLuRFaUSu36xpMWpGABFBuAAugcmELywsARsAFk5kw+XtOKbuVzlReuKBQzRSOQcr507v3tjrq4k6nBUFruYulAzKtCja9ciiBnJzlqqb21/jUWcoG1a0HZksLOpQeVU0EMilDCtN8lsFksUh+GZgPbgMYeaUzTzNmM4PBmMwU+SIiMD1isXexk07TjMlMMPOEaXblGF9hy5KmcARqyvJDBj7ENwkwGv8tKoiZsZwtlvM5XZtaDgpCEd7d36UlIf4d51tT82QtAKowRJzHqOStlK1OWL3oPih/MXBSmr3Ij95KYHON4uAek5P3pmSBQ3ll3ySYDwOyCjTXQOZqeUr8td14go8Vm9C/bOWXQxMzzSCyWJbFs2FjGdmnCUVZz2qUAq4WCzVSJfZJTpJoyo0fMp2ymYdTPsmOEeMKZB22AJyiR1uUTZ2nmq3GFDWPdTDZIo7GLxXh4lujvNSguxpvAW8EyvObBehMozFg3LKdOHVtGZjcvt1lSbUXzebJ1Po048WP3RLPcuAqP0/aZiBT1Lfxp4aIemAZJdZJ/NpVqg2EjOkhanXDltmS583ZDaEeOgzTvhlop5122mmnnXbaaadXoU1T55sjbnRQ1ij6Ah42EDPj4/NHWJumyh/uHzDPc2YHxqkPzi2LcOyG/Mxw0KtzNPmYJlhKuTve5zK2FgwD1cnVw+Ym6JWTGXg+QHetI53dJm1y2byKN1SdVmhy4v+LTofNwqbnm50756cHEmtw+3gMjLXuCjMAx/MRfLA4zDNOfrMXkYmeau82i+kPM2FiG79/MhMMDMws0sAVapclbRoS1n1abUEg46d6hIUs/F5ZhcopbwA4vhyzQ7NVCpYsMV5eXmBnizt/VWY+bay0AZXyrjmUvDdC88ByIcvS4xc8BULe5FR67lHJvZouueLl9FNeyasZ4jbkK3hQM4+G8bMgnhfv8R3ZMFFfHenzJPk31VH4tjKs5A9VFH2iTjhv+jz66bN0AYVxTifWuGgPDIkd3+bivExrF7/+rflpVYAWtk6+/ZrfXWxoEp7KUEbpqQv9Lk0Lhxd5/4ssiinkDpvoLY4r11gGGvI6VwWllDLf1o1GWXkcwuv+I/VR6fVNOXLqV0UfVr+HnL6NgcyAMUgaFr5+AZDJ+Q99Uo6dtXO2IrkmHEJXyPNes7MyAVTe942k6tAtbk4qc0Eum0o5WeLKgz8+5o5NnY+K6Fq5oy7esWibqcz36fljPP8ySNZ5OWOe5ywBhfuZnY8+7SwL6xRAUdCzpXVpzPAdKeeAgHo6XeEzhKtUvehNxGhRuQ7aQmnULsJDhvkwLN+TUJqMOHat9vK4lFUMLCx5gQzMHjZS4q9cB0cmtdtyPmM5HAFzgLFOdpitk4lYPWmKJclDhK8gMjh8NcGIHpnY5zxArCkk8lMak8EkN04Uyj8G+qDz2QGEVZCp0Ol8ioB4nucE6tR2C2BLz0u2W0wtFbScDvTv5OARw+KYL6fN22AzZl1O0cXfMm179VTagJP6gSHjd2amwYjj1FPdPyutEJsp5C1iZX/a/aQLPj0HDdXRyTMVTgA+Pn9MRhCA+XDAPN0NKHAdLAXAFchMU9S3rCFY6v7cRFFLyUw4j+H+1TdCxOlfNRyVflwHYS5NKXndteUZIhRyxrXMXVlZopy6wvL10akvOlYkwCavy8rsXQUzim/yuWlHbGb9idy0tTFGnEftNlXKIS8A3cyQCctoCjAdmLRCj4fVr2TE2nqIpJleq09TUYZf+UahAieobVhjjDxnrdOwjNABnmUfGBeiC9ZoshJ2Hb0WsFwr43C4A/MLiAjz7A7UvjskRSlvVCBisHUDtPVVME0TLE/udzzKxMS1RdLIij+s6IzkO1IaYd3/tZXHGnVer+bQWzs3ELdVpgYog/Cq7xISg1D3g+WJXLVeJ5SHLF0qX/fo610tOaiJAhpwytIQge/OeJlOmM73eeEc7q0VackbJmGQZgvzdsLb39/j7t7JoTHkQGDGF8W1rmnMd2GGKAO/mcSXVcTi+1eVld4aLy/uGKfDfBDGkWbk5AApy5MbchoUdCF3AXjKtZwpTBosFAGpuklIej8J+Vpj8VvuFB02VXyfdsWk9GH3dNqtX340KoA5CiqLLPJ+VZA8psv6KyDlCQLGGJhpit9eAWkf9nJ8zkAmAJxPJxAI03RYsRX7tZnazAER15zrLSDxws9B2VpDluGIMq1uilG8mSFNtdGkv0gTsrMnuFbEaWaR9AyqJy1eiuB0aq43pIHUMv6iTqv0sz4WZENGFp6DJQZAC4PC/ofJbeJlwWZaXy3Teini1B7sFS7bui2ajqKq4mqm802doviGISaz0dtlXVPoIFKEtuRX4yjglwEa9GjWrJWlNjF4wYjGtCpMN6C1fA7zAYf5UEWUi8BTCGGxFi/Pz9ELNE0TrPUrj42/8QcWzASGzac3Q55GKG5rUV5iHwX1yqngmwDMG/AxSp2u1UgQlMQKpNbMxgaejB7WTHkiUzqWGXZx99aHoud5xsMXB7z86iOevnc3A5mnA2Z7QKkZmN2u2oUXwDg5evzmHl//h0d8+c2DcBAHdF4wS+5orOBRjNfziSvT5GfKwTcNZhTvXn94fHRAOSsrefnDbTOBp/fv3gurHvj48SPevHlTTCm2KVNsYYCp9W0EkCUoZZE8D0vgVILPyCl5ICA8Y+QHFCbR5xnpTD8JXoe1EiVeZJgAc1nwDWktO2aL89kt7Tgv5wTGRZzFEoxdouGdXf1IIc6C8+mklnE6Hd2mHnV33jZdQgTEu8GH6+oGcPMKlbeijZqKrukRpbaHXs865yA3eNZ43yDjGeX3uccQoXvL7wBK0C37CKLHTF7j3OJCHdHY8xBmLC0Dk0mzYXnULFO3YipfDsM2bPgtv53EDJVOJLkk5Y2yPCCPyOKvVs6aYdCmupQS+6BiPRyhuaWb7JuBdtppp5122mmnnXZ6Fdp013mcl+e0rT8YLe3JJW/dm3D8wzq2FXbECHtqeSEfFeErgbpFkmwmIoJdLF5ejmC/AJ5A7qBtIlDA7AyAws0VPhcihNswkslCWOwCM6V4znlWObMbpNfNzf2PigWuGuXCGdh7t8qjmAZd840RTH6YsZpfsK5zq1Ea0znP0jrk6BWMp7hZd/ap3EB2uDvg61+9xd3hDh++cAf3f3j3gucf3mN5zzB2inlaLGBaQPfAF791XsW3v7vHV795wN3DHDdXyCkZEn3ITAbTNLn1azEe6kqNlrs4joX9uiIifywXYM8nHJ9/wvPHH3A6ukPl7fIC5gVEE6bDGzw8/AoA8ObL3+DLt1+AQXj/7n3MM6vYSLrJq1rQjemaysIu5cs3ZBlWejVl1vLMzxRH6C/v2Q7TZYmX8Z6l6pIhV0O7jJGJhVzf5QmY3draxXs0uUgXWfRT6mcfeDjcuTNdKbX189PHLh+n4zPu7h58ng0X3iBR/s8KXefNHON0bXlPX8u1PJfZuyJ57pDsfJ/4gFasGzvRG7kmD2euHso1075nyWkHn77Mu3cEn/ZNpR+UmYGzVyAdD2/u7QxjSzrQPUUotKs2UVG6ShUOgeThVRJlaZv7ES9p1I5urhBIJZNDI3lGF5+jmSsqXn1H/noxZndgKssGYsYMg3m6hYO1FtKMhkGmko4Ip9MCG855838BkwYvBhY/oMdpcsTPTFMBzDDzhC+/foNpEgducoA1ycff7ki3oa1io7b2BoZ6YFRlTMkhrK9JfYCUPESXCdM1AMIuwbRzkNTbDjI5juCEQ5I4dW4M4e5wwOHrA968cQPs19+c8PK7E16eTjgfz8mAMOQOc3884M1bF/fNF/eYD2FTTfp28qAwgMppmjBNxu/MHai/OMwn3gnA6fSC9+/+CAD48S//HeflvTsZgfKe66sq1ZOd8ObN3+HXv/1f8OVXvwbg1uXlxoEEkGUt5j+FGQfNEmkN/Fm0RqQYXE6pa2EkdECYSi9ORWjtsSwBcVwo3+RaUDVydAYj6HVRZen/yfaFwF19u5zPw900GDzH00tch3s6vgymtdCnA1+bPllBq1Qas9k7tNtSLtuqAVjIdwAoxU6ybXdwP9MGdbJPp6ykXlJJvVJXEagqTIywo/ckD/BzJdvIhPXn0M8rYKkBi07FNA/Bb4/Gl/cjpdY7g37NWZJJmWbLLvoLd53rXaUMke1jYcEwOC4WCxE4bM92uAozAfPZb6KxCx4O9drJn5XY3wQ0TzidncJ9OZ5S49tSMBli1bED2IuNlWLuZnzz6y/x699+FdfbMZKVJ9NvORj1dtS32cdVV8uy13HlZpUYvU6aKd+C6HU4AxXYDI9E/gozAIDb0WiJIzCz4SANJhz8Zp67uwO++JLBlqM4hEzJEKbZpMPZjQEZQO5SNz58PszxViEVYBbfIA0ewBbV4TYY/fjDH/DHP/wfPs0xevnkDUDBU+qO8HJ5LvYFTz/8I9799Gf8h//xfwcA/Oa3/4P3lCbUn+tXAfAlmEyBvp6VigeEPvT5NywUDXxm8qQlV8MoWITlaR4rwpkYri4yaFEPjVxJcixla3E+ny6CG2wtjoMAU9Lx6K7avb9/bHW5z5Iu0kGXlDPQ9JeIR2z2UOcjH3Rt2/SRc8FYGbfq/V3WRj5FGn8Cb6M6Ui9m2B6j3ENdQWvOqSb4zCIEBSN1ZHgaMEw1bNt4Ue95DwkkbmnlV0PhrZjkgs1AeaFxnwQnqyU8O+MhDMaMl/MZH+yC4zxjWeLQA0OEeyK88Rtq3swzTsuCwzTV1bPpA0c03HqGDLjpUmY8vnnEN7/9EgDw4f4Zz88vOB5POD37RfbHMyxb740KGbjpVmaOQOTt23t89as3uH+QgNoW/OSCeMUndDvUerqLXr4icfJCXaEk20ZdkM2kTrI7rY27PjR6OWcHxti6kwmyTD2f8q5qCeRippQeAXeF5eHu4MBlybBGDM+Tv02Fyy9wAHJZzvjp3b/h6fmnyM/d4QBjEj+GyHlOyW2AC0tFwO7dy+k9/vTdPwIAfvXN38CYObkgGjWazAHOA2tsqQbEn1qaKqxtxuRv9NhZvtgAHKEUewvS8LVaoPySZMiXHsZeTrfCg3J3+7XnB35qakuxiHOVjaAYR404W8ssdUVWUrMZ+pmutd62aqA0cyLlehDha5AvHwbCEr1VqJdROcTmJ4XwUP/ZUl4WO/vDCvC8KPOUhuukuQ4Mj1y+LLIZ6Rk67ZuBdtppp5122mmnnXZ6Fdq2RlN6WSP45ejdiWFhnSEzwr05i7X4cDzhh3nCiQAbjwMCJiIcxXECvJzx5TxjLjwVMcEGZJ+dWwdS0ocjPqhIJz+S/XcuMAb46usvAABfff0lGMDpeMLTk5te+vjxGU9PzzidTjifnJfzdDzBnhnTNOHLrx8BAG9/9YA3X95jmg0YwQsVrLM1l/slNOYTGc9pLdV6rpdPU4k1mqG0ptckt9IyL6iQ67j2qVybE8KDHJH7h6SNFmRfejkZmazJReO1h8eVY4xJ52gGb/5WD35gP8isDFsAizPAL/Hu9vPpBDDj7u4uTtEfDhPu7g6YJsKyWCz+iJDFAqezBR8XELnjbSwvMDTlMzBNw3fMc7JFJpoyVFjy3Azztjrn8bIpdQpezZo0T+e497MXrz7IupU++TBLZRmitTNyDvq0sQxo3eF8GZ1OL7i7e7iZp/STUPRkj3sbL4olvY4NISbtQPPByiw98zpd176rE2VdtzCyjplmABsMq8Hp1qw8SqFNvD6uxvowi1MGUFkeu70l2Vp9RUCU6ae2IzlPHJGK6oDmrF60am2WI18oKqLybjam07Pm4W3j90VT5xmxdzPbvBGS8vNuYAYWMF5AeAHh5Nd9WWYYAHdEOMcvsThYg9kYzJTSZ2DTZb6FTa+ISU3PdXVnROR2+07zgpk9SPbfYMwB0+xS3T/MeLs8wFqO5w2ydVe1ETEOd67KHx7vcX9/59b+yWmmbB5AgJPGNw3TprmeDTmPRL1Ol1VEHqxl08LNQrReG+Q0V05pob0EiwGsBTnUu3hQdvH92jcL5tnKWgAAIABJREFUfqZpwnyY/TV+JUooee/kx0mOgwGY5+VuFDKTweOj24j0zBbH0wlsLQjusPnHhwO+/PIRD4/3sJZxPDpQ+fT0guWnJ9wdZsxzWDdKHqiLc/LC51eaaNuB/JtIGg1K+XHqR6AHYT5Ari/lGNu3+QaOV2Ny9aBEaSKcClxqWVMhM8YQJn+DUxqQCbCAXRgcljGxW9ZxMDPMwQ+9xjkJTn7N5Va65OapXwqtGkalwVKlFmNO7L/tclKqnkK4Xe/aXooSqoL2VHPpu4vOqnBB+T+rPKa+7MsI6+VJ1jvlTRE6j4KijPMS+Oy8I41q+R4+j7TQ9SHnluUs8XcFQsUfJYIertuluXw1ptPTmDn2rZs2A7Ei4tLuTc9ynYQLnSaDaTE4M+NoLc4iHYHcdgqvRA9scTifcDjcpZ3oi1L7o4NwFl2idb3lKiOFnP8qXU3pIp/PZyxndwA3+c0i82HCfDDK4MRxcwcAHA4zDvOMaZ5iWlm2Vs9l2HbwqdsgqsLsZJTloiRW8EUnv022WRGFG8wPJUbuAfJh4jmsc8xIFUPOOwIE0Cv6KcHL0yQOXY9rNMeFeU0+4hrSolGJ3N3qh4MDivbu4MCftQCHY7ssDLyiXha8PDtv/dPHJweKp0M8KaFvY+ucZ4cwK7LRAqpZ+JYiO+mbolmC1I4My9MkNEXeCajfqobMgHdTphV6162RNJinCcvLgo8/+bb88YjlA4NfCFgS+DTGwBwI5tFfMfqlwePXM+7ePGKBk4/lfBxgRrBlrfOgb9DVnwV1gSIaIEqPNiSqyd6p9Wd8pm5mEi/1l/a3x4FNtKEP1vWQKjA3+WuOsie1jwV59zoW7J0GLrI9W9hTON7NJzEiu4icfPchARgjviyBIcHAwMJmYfV3j0H2ZPRq0XrmhR+vNrZ3S4/m1SuEPAYOS3SkTR7NBB7FX3AsWBYdBr4oQkSYQODF4owTFn+eJhkDGAITIRwW9ATCvbX4gjlu5tagm7u9o8dsTTnoF8P/Sr25nccGh3mO047zPGM5n3H2V7kB8Dt0OaaRacMZiIDbwR6uDDShLpD76AY+p+ZT+c7s5VUa7/ak8kv5uxYVxukVpTfeSgAaAgdXNTdzrkCtpAQXKYs/UBjXGaajiURbEsNaG4/oAoBpdmDT+F3wL+cTvv/xR0zvp8xivbs7AGxwthaTSTLLyDcdjVINKNcRpCbC3bALQGkLkLZJzuDIstYLvRxcJg2bcRcP5Q3DFuHlwwk//vEjnr9bsLz3r08AMbmrS4P+IXJnAhMA76l5pgXv7484/Irwxd/eAQDuv3rAgnEP5+l8xL0/V/OXSCNqUwdRSXD02ci2cG4fynt0eyVecz4wgIIb+lrpXSqwK0oSD2n2hoQuJFh/IOzL+zPOHy3ABHPwOnYGyLA/4iMYaQ6Ihg2bANw47cdqijf7+fGanKez3hDeAIydb6fiw/IxUcmMa4nTiJtv141jiUfqI6rGdf62qXNyw4n75nB3N2DJukYopnXKanBeEnZHAVGKEwFsWCMEp7ptHCj9+2pNQ91l08vRhi45bSXyu+WMwcEL22QM7DzhYNNuX+tG9yyrNNUrwryQEhlhOVGs4y4r11AxEGWvsEUlFbGVn5BBzcxrlbX22UQ6rCmG3G20RVz05EUGK/an+pqGstCC447xeGyY+yArAYtvA7ukNXhEwDwZ720P53WGKXwPQqRC96ajMQmcbKMxCRuSRREpSlERNlJaNp0f8UF+/3kzo2p5QvwnDxpJC6/TqmCGGhy8M6ItQ76LH2C//8N7fPjnE07vLLAQJg8qJxh3lan/H+CAp2/1jEX+yDh/XPCX79xlBNNXH/D1f3zE46/ucLLrRx8FI7wnKa9szw6SAvwKoNgz4Jtgs8j6chCpGBYZNXLVgjXcsh7lStqmZJvQKNNHAGxh6AHxFJDjBzd3evzzGeefACwm6shpNg5szgQ6+BwmBk8MGAZ78EkTg2YLMyf9SpMDoMb/l65prble82hmuic8ZMZtA85ra/2Vtm5DzIa8N8QoW0q04lkvad91vtNOO+2000477bTTq9CFm4HSmXvhvD2SHklrE2KWlhwRJgBG7EaHt3bZEOQ5TRMoc2LSZMRNPCNU2jh6jPptz/zzuwD9b2PcZPdkGAy/QSjuTCvzUTyIod58ftJNfQ3d1DvQsHBccM82D980tpVCzWmDtyxtghmtvSLWRneo7pVcz6AfI8kWNXjqpZfLMNgABAuyaZMOM8MuZzBsXB+6nBGn2DkzbCmmSdx5Bggw0yGW2fJKax449delAttNp3OQhcYfxbrRwbwyPiilV2Mqns4UXOsKfdo8eSySaCTe2F8PfHxe8Kd/cOekPv3BAkdgogmGDIjTumBi8r8p5gl4Z3hSeTA0YaIZy8kNF8fvXvDdD+/x9j8e8Ov/8taFrXk2V7rGa0zetGhd3EY8m/qMjvyObd7PuugyzrY6annBe8wVUYYdp9ePOENFFQoj9B1mjgLLfrndsljYI+P4Z4cZXr6zWF5smC51ZRLBmCkuYwMQp8jdnHjwcgK4A+iegQePbA4Mc7CYvzCYDxSXxIV8hz4y6h7lu8qpLa8/1CxkPCreNL2T8nUh72tCTBhYA5zTZqAZ1mOlukzuY+OVmLUWi9+FLpX6bCbM9gwyDBMUMwPEDGORHeSKyY9pJt2a0+crFpMHkvqmn64ZK4/LscIpK8ZNZ5UQS3Gpe7SSLTpuRx+my6dmrixHR4sJbK5q4Y2fLYGYyK/sAP2W31xqI0k7jy2506BE5pkLEyVuFnbXorLYDb6czzieXsBw4EGWw0AGSP32zKIw345M7pD2ik+lMRSqB49t0ir73yUjqc6lMIwK0OBktw2dGZyrmR6o7AwA2SkBrBloOdB0Zcl2snj5eMZ3/9dPePo3Z8BPdnIgk43TST79wuyXOsmNDP4vpanAeGuVSQbFbA/gJ8YP//iCs7/N7W//61c42vYmIXnH/M9Naz1rxH5JhrZIUei3pqldgdJGHEBf09g1wJOU5ebDBTSUdHv+Fw1tvk/JrpX0FOJfa9kdyXayOH3PePnWyef5Q3JSpetm4W7NorTGXNv0E5lONhloJphHAv1HYPqaUDV+gZG0D6qAGieJqT5d40vZIJRSkvjTtjhyrhUd11HpW9pxM9AMIDPzfvhKmIRymtjdprPYcAafhTGER2Z8AHCMnkwDgGEYmD3rB0OYyfjuJwY/anQ8QdXwGAeAWwDOPG4gjytFMVQvEdUSIbdnxjkY5217hJKPfoLqCJgO2MxY0OJtRsgaGELWmGO16fJp5NZOEojKgBjY43KIp1Gi4snZZyZTxsfjEc8vz8jBhfH3nAugISouH9OcQnUGfwCqFcLqfI8WtNLgK4puTVx6oJQa4fnLWvHnFAZ295fkgJhFKwcPqfy5iKJ5NJWwQkSOzyd8+3+/w8d/tZjZqXYi49bRW+vGGzkwk2trIzY9GPLAMlQDOVkiI9esGhzMHWgx+PAvzpP5w5uP+O1/eouPxye1lnJgln/3ZtramTYW0wWAIcIgUHTx2mBTiV7Eo2pwao6BWvirYPvLMm3b5jWA0spk/y7rJ+GvV2nnZcFyXmCfgZc/LVg++KhB5ckZmCD3WSkJhGamoXXHgMXx7kQ4fzhh/vUMfislIQDWNSFVDk/LlJWM2TBalf0WTSN6YHNvru3a8lqtXx+g7bvO449SOCRrQol5lzSzm655IODNwrjzO1ztNIH98UF3vsLegHDwicLu2Gk26QOris15UYfoGFghhCqa/iZ/X/5KMkLC0hC5UJmi7me9RcO30xdrwPEGZTXAZgiMT1m8S89YvNLUkvlUjT/WHroN0waerWzbirgfWWM3HFWDiUUfdPdWW7tEwJGmfFjsPnbpKxOI4GTbmHjIt09ajH655wHIo7Z+qcTVQzd1Czym8PxlHbQ2jb6B5Rgg8suWIgSZy4GmflZrATT9+a7GTFhO7pzTP/1/7/D+n0+Yl0PUz2wtlnARgWgnMmJzYmho487RNMKjmTbeJZgYjJLJEPjsdqJ///884/7NAfPXJm6MLEkeVJLniPzFdba2UvBAnEZjk1dSqjoTabvxuIqu8EU+ntJDSEan/pTl2gB2NW3rFSob6xisAZo565lpyQ+nSyWWM3AmnH6ysE8Uz7qW+3PTznGqzmMWuQvVw3GTbwhbeIHlM04nxsFSPFtb5pf0ct36qdtT3ebaQFAo1KwrdQBnSqVYKU2Zz3OoQCXXsddo3wy000477bTTTjvttNOr0PU3AwUSVki03KOl58+gnAy+fvMAejnjaXHHDiw4g4kwE+Her8d8Q4QHM2EmgjjLHPHaJxnmkX5tGyu+zsraa3s3+3Zb2w3tPCSaSab5Xi+0+D4pebf7iiG71R+ZeTWBZl2qaanhtb4BScOxdaVfS1aoLU6rVBdBnXfysZxmEc+GQDThwG7jzsFfFiDrOp4Rx8nzGW/LoDzP0F6G0uL35MdJMr96/uOoI3NtTV/Dbeo4GffNR69mmV1HNnMe0t88H86jKd7MbLOVmNbOnZeMqm7ZHW1klwU//slNV7/7pyPMaXbT3GFpkk3xQeKTUpZx6tywAbM76iqd7ctiGtD7Nolh2UJe4EFPE/7yD+/xd//rNzhP+VrNN49vyskL+UfQtb7kK0jrr5mXOw9UnTqsLBEK74VgNPy4SC7m8EI/pLs98yW9Vax/UzNdtwI202XjmuLNFevGtauu039B3hkvP1ksP5A7KzZOj4clP7m3PjElOq5XUZyVbf1GIxdmeQHTAvabobufKjYrCb90s3ZV+Qiy0Tk7kyn/BjWO/M4R/YYkbxnHG9dcDwJNidC0+4FyhRkUZX4NHsFMEw4MvH0weOMHv9CgBhRvAZqNwUTkr3xK+Y/MGAQuQ+dRZxJUDLihU602TFXiOL0qyNww8A4FdqJ03eysx4+4bqQS1JatyqyaekP9tsFsp+zXNhLiIE1KmAiKyjTdaHV/f+duiLFAsOCW8xlmNjCU+krWlzItFTYCEqb5UJSfT9uUanREJ8UoK5GHDBpFXuN43zFq1Pdd2Wc/pgukWa3HRBowhZFanlARB9A42AngGYCrGGSNmXB8OePHf3FAk54nt6SBIaYMfV+LelR8ErPMMupYAsWr9Yy/YrQ8fcCydXF8vgaEl78sePfHj/jNf/4KT6ePMb4xprEcoKa27hxLf1OIqrKRzJiqzAagTEBBPDSmObM8q8HcC+KgjlEg71DsS2k7uFRrUSoCoZM4Ar1oRAnQGZbYHT+e8eFfGebDBHN2JysAzpgy7hT2Amim/uaefR2z6I8cyraw/loZJgs2AMJSk+y7imUuoh0vGR6yNJFnRD7reHJ5BWd/qIjt5Kxo+4YoRMBJfvPjhsF0CGgmrMhezhVFisLSAIQiTYCSCQ5EitsoqkYIFr3oZ82hXRkEEkCQXa0D/7SKHTAar6bXBiWBOP4zTCokbOgFmaqy1FZQawd69onLmGvpXrey13MXEqwg2DqoDXO75RcKxlobFbMxEx4eH/DhxwkUb1MlwDKsuCDbkHF4STFa3U2CBvN0H8shUAJCBen4glfeX08tScphQr/wkVglOM99crnyKr2X8b8CfLrHNNKVIDOQtRY/ff+E4zv3e2ITB2QJMMMx7Cr0kN4Wdrt2DTgaIm5NrjdKbLqUgmFh7QIKVwQTwdgD3v3rM371+y/w+PgIAJgPc5S/y+HjeOrX6OWVPis8S01A2QAXEUTKkOJTkuFT68ptSPOVOlhB6ri8Hqt4pwzkwqto2d1qxiUo8OEA8PHdCc/fHWF4wjxNOMxuDTGZ2Xkjk23kN735YxVFX0vFFiiOnNzHN4Zjz4r/Nj5RC26YJO36qNKSH05qkF4BygaYLFERa4ZMT4QGRXGbRzOa+8UEAQeLw4cEK102luc/eCmz3Y8FzyY2f7IULjGMtG+QXbab52v3z9fEPRXvl39MruZYe1GlKGyuxojd60hNs6ITt0+bjw1ajblZ7XsaBJAMb2muxG0oBQtn+S/LgvPZL1NZzrg73OHLX/0d3v/gtmMubBE37ZmURcQ2zJl3lAFM9AXmw2NdaKH/WwPda4HLihoi1rkcq5GE0tFrKuUALkp+pv/TgBl+x/+Fe3a9Dq08mlkR7sHQhOVs8eHbI/jZhS3LufLWAOGKUCdLUlys92DOfmPXPB/crVGWEebcFyRQbMP0JKyTLzDYOg+PMe6GoeUd8PGHE7568+D5cLLYmqW4PfgcoW0C2ASKvWnMEKcDImWI80DVYKAeqfrfHE8/KHkZSn0ZjerJtfg64BJKxW/IqZqPHLIAAPuBcHe4c8ccWQs+u2UcEy2YjDtLNuxAt2eOS0hUXeDZoYlgZgLIwHpXoTsFxxlpRGn6fPzqSVFO9pQWIkkDsDeLU89uyY1MShzAg+Y8jhoPAqSKvJiC73fsY/fNQDvttNNOO+200047vQqNeTSjM6jwUsbXmb8ZwTIvrTl3i447cD/zfgek7MFxOF7DFEcPDFnF2Q/F+hEf1J1O79J279gnoc63XkP15E3ln1eKCXWrnROm55yWN63Ua/T2lUz0kwR+tqRbYWJT7EtLzdKyfADCga2lF439GbbLsrgjPwCcz2cwA1988Q3uDv8NAPDuh/8X1r4DyIrZA/aL5hH/OjKY6Cu8/fq/wJhDKKgpdlr4LbyZqoO8Ea8Xh8Rh9iPldSkuflQ8ArEyCg+l15n5dLmMXzIg2heMl6czTj8xcA6exqQvZZ4U34niLcPaBbMxuDu46cWvvvwax+MRL8eXOBVp7QILP2WJ3KMJsQQKMP7mtxk/ffuEr37/kPFRU+n5YflmmC4Tp04Jg/KQPJaei6bXUvFWNjzpJV9uArEZuaJyVI4Ry6JLB9gVpKbvZNorL1P/yqChOTMBt4Tk6I/4On48wdgp9q8gf5YsmAFTXFCQumHaTBS9wl62DzTD2BkLyZsJnbs5nj0b3Z+DHyuySY8ZWMqea+zD6V9l7KX0mOfMrTgiViXLXqcIz2Z1hNMKXbQZqMq+0RdYTDlFtojS9FBMGxpWdE+/wDa5pFOxpau5xUOtzFC0jGgshX8tcf717ZSrdEu8MxZ4Fa0N2u0IvYNpqx9NY0LSNojXSqyO5BdkVgziQ+3qNWYBSqrvYjeov3v3IwC3dvKLL77ENE3ZYu/saDQOAMGm/4ISZXf/mjEG9/dfAQB+8zf/DafTBxyff4Bd3vtcTpjIlWfogGn+AgBwd/8N7u+/wuHwGL/TWotwCHLW/AT1sIJVOdpC3cxGSrkBJxUQCENXIspCk+4Jy43StDo8cC/ytD5dFsx4+XAGvyDKEYFg/VKIuD7QTyuGgwTCNL07S3UBkcEU1ssz8Hj/CGbgtLgpR3s+Y7FnWHuG9YO0hZOrycyYD/cxbTBQzj9ZLB78TgeTekfvJIVSfqo61emWpn4OHkW5q1iPmmvgUtwc3VVt3CqD0isSAq/XSAp1S2/bRmDB3Gaqkg0gztGimieYxM8X/QUOTMbNbxaw53DVZNKo1gQ1JYyxgDEMxRsIHTi12eZjMxEOhwnLeYGEmsaQu74yM8alCNWyVHThLDT56SwsI14TDN+fgz53KbhSCYYI0zzFNdUp6waobADKSj45f89SsQ826k2ON4rrlQUoTDfjVNDcV1BfyYdU5dEBmoKq/zRMnxght/Q0Xka6s17HG1vg5pjw9iAzUGal97RvE3AKRZhniHA0SBZ+y1FEUtVEK222imyDAVJ0cCVNFqx4wUpOPn78iLO31qdp8mBxyiKGPPN10vEfBFTKAKz/Jxrg5oD7+1/h4eHreH0lgQHyOzXNFC17Z7lPAKbCY7ahoYTtd5l3MyXqg9YxSKvF0tdwdvK74DvYF8CZm6bYGKQAHRLte/xwBp+d4QC4jTxhPWVysJCvcy8DwcPDi7tRj1KmbBfc3T3AvDF4OoZBZYE9L07O4i1vfl0mpWOQwtp7IoBfCOeji3v3iFh1a1LSfl+/aWnsa6g1tvRAZIpZKD/KmrUTPwQoGrUECR1OY3zN7umQ3As2SjT2oxGyoQzK+2DwD2T9kpGtIzdk4trjKJAico6xqX4m+MsoUuFs3UakiQxOQu/S5Na2EwET3SV+LMNmd6oDZnZTuQs7Ay7M+LLoFwT3LaEfn/zaemL4fuaMxshv2acIWI4MxgLr++j9472quoJe0NeB53WjrdGMjTHYwhcDzdqiA+S0ZA9zuDvCyxjSJKjZb32OHi4qotfRgmwJX/3tYFoX6b4SvR7ILGkFUyaqBmsXWKUfwwUxFXOwIpM16JRTv34zaVsBnGrcLH7F1XawGZmnKg4APD484u7OKbF5mnNrVWTGRcbx1gsyMMblZuwES8mTJosmGJD16pkccGCQr2c5PWpAZgLFm4GMaM1e3deNu/EoNlGGAJsrefQ2/ijZ3YR6WUrw4XBBPnWeHxNXJ07pGcuL9co01LtFOFguDEhOJDjJh/dKTpPzxkzTlJIb56W5n+9wZmfcnHjCAgNejLthCB5gTjMOhztMfglF3LdGBGuXCDRDfdyaRiHN0FFYq2UVCo2KplF1nNAiZfwqTV1Klq7I/7J+06FxvDDclle3OQHg5CmkzBgvDLCyfpD0XwyNyFUyF5Rn0r/sDXMHIBOoSzZ70JHu/OH76S2e/wB8ODpQaE8MPgF2EX15YkxvgMffTnj42kEuNqf0mYJ/57Vk2MUCXh8vR4PjC2N5YdiT71dL2sgUdtrQBJh7wvxocHi892kXmJlgJqPIUh9QlnHq9+OtvG8G2mmnnXbaaaeddtrpVehmNwOR+FdakSXm1Y0nyv4ob1bDmlxF11nP7QGE6UXpy3odn6SWq1ZLMvzTeSrHyfltms5LGa162fJsbncvVQ4gsbYmzr9o6VAbtkVOMRP1dcermUotLehOFo3NJMaYODUaEsqpvDCFkv32RWfpgHhmI1sS9cbifcolnBDHTHAnEwM0TTD+v+jlLG68KL9RcnZbr2YqRRw12CzzEsel9E3dwjMWnY1I3kt3YkvyaLaKiQ4Z4Ym2izsUUHp9KIpDyMiCYeJvMqE+yMnWZKKX3LLFy/kF8zSDw8HU7D0slv2yCeDucIfD4Q538x3I3/Hs1sj581h5gT1LHcbN/tL+2NuQvqyjrmTN29PKMf3LMqjh5ZTx6zRZVEVH0ta6U2lgOuaarIssb9HUaX+H8CCGDYqyr/v+E9YuxuUo5SHq5cyPLKncFEgpPKQNZ4P/zd/9DgCwvBCwEJ7+MY076Q/7/6ew87sFL98d8fh3rr989Z/uYM0xH798n14Wi+UJOP3Fv/jI4CPAZ8SjmWDTib1J1BiLYZzvLF7eOI/p4dcTHn414/CAsJQ+qztJYQ1wthe3rBYA2WT0YGNvA5pqj6i56sIjNY8gOTngvA5klglXRrTsM0Qn/yTUKudzBJiS8uG72+7qSF8AASqnEi5r7TjEMTC8O73ZaUaRYidtJ4uKs0zhKSC3KFs7N88lJQDGXyuZT/fYJR16nJ15G/sdxbiTmTD5RemTBJk5mm9/XM6V+nJ1ertLOZDxY0QtleHcN6WMWjSLEDG41cTdn834AXTKXfvdtOUOefZMiS8lZDc8+WQpjvgIht/UwxZnv56LTy9Y7IJpMjj58wdPpxPswphoxt2cztucp4O7sjKW4wcosiDOzz92oiXk5MZYR3zhINWGfccmzfNXwGCWR/GqHtDb46UOPmte+xVY1sTa71s2xpiuHSkxwnMvs8YQmE0ClEBcj8zMWPzNQO49lSrNL9cLuq3gmiv73te75+KOcHj7FjMdsHwUgDJsuBMKJ/Gd17TBBLYGT//sACBOJ3zxPxMYNukku7hzj5+B0x8I9N5Ps5/dZqd03q6sp3ylKQjAmUAvLuT8ZPH0cgb9/oDDg+SQUa1ejDmmwDxOYWRp8tqgjR7NMCiRKKRdRKXAGSu+Ad9wWf7XUd75V8AmsvosU68k+txB4aejhkHUeJEkmcS/6+QXUlPZW0otEoJq46hK0QGbKe5WwRRgU2GvnSpd86WadSW+UbpMXCBvwi1cLswaG+/slcfrJLEnvxHIebxSeoNy7VOb/x5pg6em7LfkVwNDLU3u/cxBKFAaOXmeGrX4GpHiuCbzEtVBAM0EyONaogEgVs2Sk9noXYnhfg0aERb2e2ktQAawC2Ubfu7vZmdwiHW5bv0YxQuEQA64IhgohyRzSTi3AKRtNNor9VKaGquOoRmMrL0QfUpRSeikKcuTIDduxFDZLAyRgVq5yTA7VpReXleXsNjL4cCmMcZ58gHvbbdYzulSCrYNHZ3pXwGYVjcbA3i8A1uDM59j3uQVSepPeVkaJCAQZuPW2z9/ewSMwZv/ApBXOufFfcvxJwae7sAnTvmFOi7cjZUYBAAcnGVPE+yfLZ7nBfSbCXO8ZyNtzm0BTveviFO9H++zG8/RHM63Tlv/yCjPugSz24u/tAO10q04GwZL3Or9+OWTKsPqi1pwx9qQsz/yNp0MY1KZpoMcugWLCJ1+kWfTz1R76xag156WJuBlZDooAQ1h73qgKO+ejjP2IhH5I0DIUAEst8PsMWoMuMr3COdBI4+UNgebhDLf9D69y2zR3ErVWS+ZkcUEMeF0zBtnd2FTiXyblB2B5ONOB4KFhQlXjIbz/JRjhIhM1sYGzoCQAPIwz5iMARgwfhftgQiGJoANbPCoMCe5iN/opJjgwOrhbvLlhpuJ1iRHf69XSaOiBoQz6oNmrlomK2aO7J+KAa3yUHZfFXi69D2Qez2pZqxKl7Wg8k75ID1tOjaKQDAwmAzDBsN3WcCWcV7OOJ080GQPadhfjRv6euhrUp+FhihxhpxjhjPULdt4Y6HPHi29ni5QjJ0j7+cADB3w9O0L6N7g/nf+NIdlwbJYnE8W4HMEoIbdLnjZ3yL4lOVCGsz+5RngJ8L5LxanhwnahU9bAAAgAElEQVQg51GdHw6RdxJ6sQbICZRnpy805VWnfTPQTjvttNNOO+20006vQtsPbI8u3BRURYs/1ycqumVKq2CQXsfjcqt8NRft5W5N1W3+yaltuZex1BhK8ksd57kHcS0nFk/KwvFGcldOYckOTR0Jr9WgTMvF6PmL1LdI/CvjyQmBfKrbedeKpaAp4yyM4t/sK7jxuTfrfB2l4j2VjbcoPZd53EIKxXvOvp0zz2lTdsc4jukJ4gIL4VSpzgXU8i6WiDAY8+MEJhvXp5GhqFLkFF/5XwifaMIsPJreZ1R4Tsgffk0wIU+DGCdtZLKeK8Z0Tzjcp6Gl6c0c9UAOhg5v2FpjpxrHGh53LY8qbyo8T40xseUwb67RfA1lr3s3u80URWWgpTRX7kr+aXOj+24zGUx+A9qyLGA+43xesJzD5rUpLV2WOlD8l+UtPZ4xTn7vzcm+YGJ3rFs8bLjwf5d9OP+IsHhFtBsDZCd8/PaI+7fuKKIzPeN8PmOBBRvG5KfZcXazCnKc4liXcs5GtpkY3xYGPxucf1pw99Yvf7GMbN2LZypkG1Nn6lLUXpgOEk7bHl2461yZPqzeD2QRqIsHRIN2BuihMe6mh4/dilqcr/Oq6LRhGtB9G2kdcA7FaC2uGyAG5Mx5CpOFqnW0+dhxZH1ga4xLTkleLQkoP7xefRJApn4+XYwVdmwWDdbTpe1AWfrtRU3PMwebMZR1sBneIb4JcpjQ4FprxRZofKCbxktSRmRgiN3tJHFavZ03eYQvN3HdPU6g+3S2XlxrKxreDZrG/01g0cBgoslNtweemMDy6hPPVFxKQXll+TMM4rP1h9nefTVjPqQBudp8oX/m1TS6w3z1DXV/otygw+JfNbsabQ2BzyptmK4cHjIurekVkKnolWYOyrd38+7wRMQwMJgn913LNIHgd2qHG3NC28QOSflfSUFFFIZ4ieU/nH7Cg7GY6A2YDoEbn0WBaGXa3oBHAGECv8x4+rO/cevX7jvOfAYbC5r9EgFrwNafiyu+y4FiowlorazPDHtk2CXpxfn+EB0HMdAnkO2ngc4s+gBdsBmoVeqWLCqTEa0OlAU1joDZUPAviEaHthvkvlKU1mSDOasJK90ZAgNwWOFHf63BOheWvWmjvzr3RtwULNKs487b0NVlGMhTjzQDToJMgthuwvY6BnwXv5m9J2QmUDdrChhJtl4OSINR4ld45QWtsLL2UgJA1wYTGEC+XjYg3twS58IAY2aYiTB/YXD6KL7BN5b0XIYNQQFqunAjwnxciDSR6WB0pC90DiMHesP1pjbsADYWj799RNg3VHsDL5CgzFJEsyn04HZpbT3SLaYBRAuAg75/VQOfOT5QUm+tuA4DI/q/CiYtvNG+rcTt4tJ7NQNn+BEBmPya4gPjNM9wBliKlnbOoFbrLFrG94vcbyYNTBfvBU/udh4GHvhLAMDkAafbzJeOQpJe0si54jwJhpuheyzv3brJL3//Ft+//BkMC2sWLMHj6NeMkp1Tv2QXbhObjbpzL61lGHnqhOvE2ZFHMbxIH6suC17XiZIuPN7oAlpFK7IxOlYbUI1UaqfNC/7l4cwGrXXXm5z3p5XZaI+mtZOnbkbSZFeeBXk9KQhwFUCuxx2J1Ey29bvUgW09TYhXXePa2mmplUPkASa8I1YB5Bso7NZ0GWZ/cFEnLXkWOqR7TWqMG0AnZ3GkGnXP275X9a5lXlKCIesQZxwkF3dFaDSQOLEsB1IgboIwjwACqFsswAYks0TYdISwFyLyF3wieaUE9gLoFIGhrvxgba2NQHOxFpYX0BeMN9/c5fXQrLot2qrmscyrVcw2qSo07P/P3ps2TZIbZ4KPIyIz36Oqq6opkk2KGkl/YH7C/Pj5srYf1tbW1mzXNFqTRsMdsskm+6jjvTID2A84Aoc7gIjMrGppw9u63kgcDgfgcHc4LkFvtcVdxAERjuZEKENkmFnZuWKxZXpXbMRq2U0DshIhlJy2h7MJ/Tx5HEccDnt75VpINvNzyu99EHop1kNK46ifQSdgcFd8qUFB0c7Jhtl2sTpM2IqV1MuNyYGgT0dXzIhp0jBauzHm5C5NMJjcCXx/yE7Za8Q4c6dQdxrGTE7gufxqALeOV141F/dAKqmXyMUVS+dOWPbgN+KPrjK6HZdcORcxUjphTVmezAvTKS4AL3Qj9aaWjJQY0YxLmAREsXaixih/CX0XoUvcjUvSeijHQ93IlMQql7aFk08kTUhYI1MixF1kXDyLmFg+C9rK5fU5kmtzk5l0h1KWIFGKVMyEjJQ2mq5zfLdEwcqbMGKZZkBqfibSl2ugAW2yZ3rjkryHQuN4PAKjAdktXtAPBip4d5yn0T8mOr8RGdUzBQNvCxu2DfKnMg0QrskyRmNSJ7z61R6H2yFgr49lqaU6xj2DS4ptcWjL+GMNIEbw1I3PbMybPiM7Ga/eYM1OMC8B2Yi84I0SSxAJRiZPJ7l2t7HDQDgcDrg5HPABDzYZKShyz6RG9/3Gzou8pukwi80vz+8aGhNO5gUvp0dbthkwKkCR9TIW3RSVoXz/F+XYcePHlTYap9PJvnUOgjHzNU4gDSgN0ipgD/uuk0aKN7REFJGGiSag5K/XIJWmC/FRKGd0UmajNdhxO3W+wQYbbLDBBhtssMFV4GJPUCZg5rnAeUjanlMxOne4dFreywrpT+onYk0P4LVgoXuYTd1oOza60oXpicq5w+L7By8Fy/xvUWomwxLv1hwo+RjriLq8mFFw4QM7qwndixTRxZIGwHQ6hX2e7s5vGxeWdQGlStHiF4QpW59JnJmYf6QOgP6By3stHU5mKTQvP9+3dQ3wS2dKqXR/Fyb7+KM28711TIWMBqaTxoQTcOs641m5V58UBu9CoNnDYf+fvZIInsloScw5y7Tf7JncATr315zPhk10wvDG4PWvbmBII+wFRe0eTcN8zXWU0kop5pT12Bx6urnIxR2iW+TlzJdX+5bWWzUv0pv0Z/rBxLWKXwmSXOTCeTrLvcIwdin7/u4WPwwfANh3BIbo/t+5lWmWIbmXM/YuU1SEj9bzfuQJ9r7OybxA6QGk3D2zQWZFdDJnSpKxBovTRFuTnp9fgNMA0gr+ESQFg3CUXs3jMgguf69o3NlmLsNuMAVonGmZneJtQVcup6ft0wPrDc2m3D/HyAziNFtfWwGSwXkGrEFx6SXy60GFUPkdvjJnlpRdOGOMCyDeWL1yD9fi2PNSty3PDiOTaj/76Ok3oqkMYpSU1nBX5zhjwmgMg8Y4fMRgfrTp9DPskzIDSN3YrLtXMPQKp2kHmF1JX/JhRLZK7at+BVvFxyjr3PgM6SK9JPJhaM5lU5kg6LMrh6ziIpxO06yAMAv5+NS51hrH6Qgz2vxqB+CkQJMJb5ArY98fJxMZrg5pbnwCdsGdolrEYzD8Nd7EnKCVVbzYnXD45YDdLWHSGmqIF8ukFpzDWVEQwaIrhsQYG1uVKdxYaOCcjZSSRo4X+Qk5P7k6Q7d3p2/JpG4cvQZsgbeWkWmXLNnt/S3evrGHdH747glmGGG03TQyPycNECmUlre/FH42Cu1wJpxujiHMTsq0nwZCmwmGJgATgHmyGGwWdwNDKCqbu1o2c6PPMcn//O73OB0nqElBnQyMPyGu48mdP5rprT8F4yzSeFuOr4+lU1uHwMhM9wyaej2uQ8h2ncNAmYCi+gz1PBNTKHvts5Q1Ts/LAIR6lel+7nApu3aJH6GWlM1ZTsBcYiccTLvFiz0iXf0t4OrIlirEfnOwSoEo0Pt7UbTDcrsyEyx8+9qG15O9mmbS/nm3D5ie/wW7wwPG0b1GM9jTzyo6ym404fiyg1K/wzT8GgAwnQ4AKLnZycrveVznVHXKPxTGg8BsiT0Yx+STAfYAhtDASwZaIsIo+w13eMFeOaSUNTYBYJrcHZXOMPX5jYF9fm+y/aN2BuO0t+8cewVrCEYbaKXtfIA9HeGVMbkDBjS3PcNYxildTSfo0dI4vgMOr0dofcIYbwbraZTiZ4+hlxuMl5mS5rxQxZ86yJiouIMjHbPA+Izf0Z7DucSd0Jv3Akbm0vLXVMsYg4EU3nz9FQDg+dcTXvSE4yeN0+kYTbgGDO6O2HhboiGdzKwI3kY0+Pjuexv4wY61fKu6Nz4Nplln+TtoM7kb0vsvZzQa6MAQT89PgBlgJnsNkXJXjRmd47FEklutoOAN9wVHk0p/XH4E1BiN/zNhmZl51tJ5WcylzDC+KcxyY7NbNywdJZ/f4FzMHmv5qW4vVgtst4qMPNYvoZUFbhaX4gQjc5kByde4xNHIEQRXn2S9ipHJAOPPBDJlZpxRY4wVUqeT9V6ax/8L969eoJQJva1AUAbu6h6HWQG7wxOOz/8EnJ4AAMPuHzFNu+SAS1iS8b9n15ANlyzDvEJsnXKIcab1Lqads7uxiXUJ9NBIZA85KLULF6mfpgmn02SXxV1KNQwgpTBNGk8vLy73CTcHgx0drKMZwGScFtUGIB1Z+bANTgbGaV7ljumSiRRS8LrOVBozYcIJephAN87Q/GqAGgEYu5TYf7RkvSzlpnnnujrk+VpL3mRT8owEww52kwYVeVxMUU5P2/alWz05DpMTOWGUIkHIJefxdHKRMTjs7MrJ17/5CqevrDfw9HTCy6OdhJ0eJpweT9AnMxtufjWBEOSSmQAcFYwhTOEObzcBM9H1YFDwOm/2TjqKI8N1rly6TcUamS73YJLERsMuLXg6jZO2BU4g6WePn6LtTsrYZfMBUINdMbFV5/QXP6ksgQAyi6683g4DbbDBBhtssMEGG2xwFejzaHaYrZ/Hx7fAq9nr3VoFLSxSa3R6y3qL6YYFvXNGma2lzqWb9JcVzgcu82byAZI3s+bJrPLagmUpEUV3ZsazYcI/yXK1mTcCYtIGRArT6QHT478CAO7vHkGkoTDvSd+NO4y7EYYoHCCZtMY0aahRA0//Zuk93YPoGxgMbq+U9QfYa3xcsTGZwdPYqCgt2MdbeC8pKjNf2uxdHOL2JgAc3WnKusdJEYGiO/vGQeHlOAHuMIKeCLvdiGEcQomn6QRNn3DYTdjD7Zc9AZgMYAYAAyhcezTTOK/TUKj7vL3BuWei/WF2yfwEfXvE7o3rS2VfG9qNe6hxCJ4TuR2vozFYnsk8gmzJDXJ6fIPl9o3WcnmdztzLaTnmWhos4seOIqj46IvnVm4kr2ibDDMvxjjZdXu7x7SzLwiBAGMvpoWejF0RmAwmt/dRn7QNP2pM7nWt6Unj+GnC8+PTXEoki9LHDez/sSQNd2oWxKeH55JDecqtDg0DzIlmb2a0/WXeZhSXjwQXMswAoD09yno0VeVieQ7yi56AdET3cuPipfN82fKS4qKP6HVLWnNzXcx6a5bWHXN1ki5RQEdPt2yCKir/+kk8mOrFSmZ7j3HJB6eDj++rupHZs5ev3kyN2AVdyQlwPrtJ7svURkNrA6IJp+OPuDl8AgAcbgYcDnsQtL2jDsDbr97i9u4OUISXo908//DwiA8fPuLp+QVG2bCXh/+Bw1e/hNZDVBdnwHj9lq4gOcpYcpOEvXKDu8SgWK73gbGoKNat+sqLaQxBlKeRF65mZU0YhhEHmp+Q1NrgZr/H3e0NnpxSnCaNl9MLTnTCi7LL6YfxFgd1A3MyGOKHnRQAsvddeuPTLx/GezQJFPaTTYMzcg9H0P0J4y0wurNeg9pj3NlJhyI1Kz9jGCurMqh7RPRZ4kzgF0Y4VSUeE8nKE5+cm9BUcAUjNGq7nrcSEpY9A2pNLBmGRd4O2SPJs2VbL+YZpHtwC/4VM3LiRikCdsOcxZXiX8jxBunTyzO+/fE7PHx6gHmen1E1hhLd5AYQQ03Zv94Qzg1Sv0eT3NL5OI44npzxbILtHJl3aa1DKKXh8U2a2mhrCiuAhujQkjSnqKmv+GC2AcIJp4QiHlbv0bz0fHSZ7Oi3p/mZ2/kU9Jd3MdSr4Yo1E6DhZZJQOSXTEpbpFbW91m0tqGFgZqNZNjLbNEjGcQ3W7N9mhXry4WfL835Mf8rZvh1sQHSCOf4F+1fWwPjlN7/C/as9YCaMbv/gb375WxwOtzjpEx6f7MbAH374CdNE+OnHP+Gk3YGW03vs9AlqOGTeMgeRgRHLLnbnb5atCpFSYdVCxmxhGhFN29u3bLWoqFlPcpyJGsI/DbdzylLR3p5OnyZML869rN/jSWscpxOOkzXwn+kZe9pbg1PfYj+5V3v0aPudouuV/EQpHoPKQNMJx/EZdG/7cn8H7A42n99Huru5weFwgFLKTlg8gv4TXS79srg46DI6qTHOk8jYdKiA4bHOrFliSF+4Sstc7dWUjIveeB/Xnkt3ysw10rCE2U/o8vt9iIaadpCfuPmxdjydsBvH8JiCjwtygTX4IgqMr1b6jk78XxqiQc6jud/tcHp6cZOMsqz41aM5LKbFG68mrC6FE/XK3YLEyV6mnwRfUF86BhYZmpc2Lj1cxQ7rcl6eX7I0e7s2XKS4S9K8yssUZ/cCdAGXSYVcwrhMIlpekFgQVYtpU3VGn5SCvqtIeEGp3TUZ0zRhmgyG4QXAB5zcUtPbt2/w9S/f4P52h5uDfY7mN7/6HcgQ3n/8gJ/efwQAvLxMGMf3eP/hIQhshQHGTOlLFt6wcZI8mT6G8UuBwhAWsUgU26xvqXRiWoyQ5lLDpGVs+hTuQqGofGPcfaZRjmE34k4pjGoIRv9u3OHD+w94fHrCy4s1NI/HEz5NL3gwDxgxYg/bbwdzgz322KsdlHs7WvmyYWDc3gi9O0EdDPZ3yr34Y5fyjQYONze4f30PALh/dYdxtJ5M+WTr4uWJJL4jSYnMM1PiHboUiKMeyWRbMsyYBCFXpMnT7H3cuGj4Ayju9ZTyCpamJHtqcrMpFxmbirvLkaKhFeQE0gkiNyGJZYfn2bvbWzw9P2N4GHBy21RSJDT/YOw+i3E+/z2HuP/8ZN6tjxuY4HXd7/Z4ohMmUDGGCoMWFE6WJy92wcCQRmzQAgZmQHKvKCFvB1T7LTHkAXtg0hTMKcJ2GGiDDTbYYIMNNthgg6vAwqXzaFp4IW/YYjQ9Xqhq/HLCixyfwXu5uojP7Fm9VLl+e+bZLgd5ZcEFNJZzkoj6gZ6Wp6HunYzouLIXk1t+jt/+NUDyApDWGkZrHM0zXp4+4uXJ7tH84+//hFENuPntL/Hq9RsAwKtf/ArADje3P8C4d3j/+t17vDxP+PjhEbd39lDKfofg0Zw9QcR7wIJ8mb1CsdeCG5BFDRnXZD5zT5PE3imTnDnk9kitg7bg9N7M/I35wssJgAaFw+0ev9i9BQC8ur/Hh/ev8f6nj3j8ZN9kfnp6wfF0sl7q04RpstsbPh4fAW3v6htgXSrjOGK/32G33+FwsEvs97c7jPsBwzBfdj0MO9x+dYv7+zvsXbphN9hHnX33FtWsb4G4CAjetniwcn6iHqimFNYZpbJET6dhcmWX7LP5WtDyIDa8xem4qXgzM2EkeTMlqcrjSYPS3TYULVXH4fkHku2FkgcaAA43e9zf3uLTpwc8OY+m356Zj790NEeeaMoOCPk7M020pG108DySe3Dh/u4ODx+eXC7lH0mfr14yiNzgxm0N4Jbj0/s6CQCNBKXSa8pkdcv1ceHTtF7wzhfbll/YHn6vlxKrcrKZKnTUfPatYj6TsXaOkb08Y5+U6i9ivZAmLtwxrbTckUNNKLFRPZerB2FURyqaqlWBfb5h2WNU9uTxxpT/QW4FZH51RmMyE/R0hNbAi9t7+fv/8Ud8+vSIf/vXf8O7d/aC5P/8nz/g3duv8PDpET/+ZI2bH398j4eHZ+zGA3Y7u1Q7DNaspGQDuUCrNwQNsf1sGOEmTQaTk73xuhpT3pwk3cRxWXHQwGrm5a5ZUfl/kkawK1eKMO5mQ/H27gZv332Fpwd7QOjh4Qkvj884Hk/Q06yAgpFvTDiJqpTCMCgoUsml+sM4WCPUbZe4vb3B/rCDGgeowSnDwSuxTrnQ26hNI+mc3unNW78vo5i4lNmTspLxxycJgWErRRTfuzGJgPb+4orhB7Sbl9eXS3RyB/5G2eWuVSObBqwymhMqAPf3d7h/eMTHn+wY0n75mWLDPzIlaZ4sx0vc6eXss7EJ2EM6Po1yhubNzQ3u7u7w/v0jFAYoNwE03N5MRLSEpy5NqPvMMwQMBrtb5QxNN16JghFaNEiH7TTfFMJq8wK6DM1L7Gu5lHG5UD61Q34ORuVKo3hZ+ZeuaD8+/ir3Ujh0b3NvSL8O2bosjh171Ii3EUt5rFdmd+XNIkRDNXzPgnFyl4Tvhj0wWjHx+PyEv/zwI9SPBn/6018AAH/5y/d4fX+DQREmd6L8rz98wk8/PuD2/gY3N+7wCQbsdjso4h41FMjOKjQ/HcwIXWFmXdY540bO+JRt4Tr+C6S1nkt/QCsJRaw9vVoz2r7vDFglOSjC7e0Nbm6sUfj6q1c4Hk84vRxxfD7i5G4GmCaNfMMbwSoipRTG0RuvO+x2I8ZxxDC6q4wGBRqchyRcAO2I8sZmYk+XE7JqG60X8u1oJrDtrezrudb4S8tKmYyYFPNtDDHm/n1xTPFFYFUWVoTRYhnbQ3MzTcz7iFYdeKvSDu3ME9ewKYw2ONwc8PbNV/jw0wMA4P37x9ln6A0sOI3llloCu0d7vZO9k+7UuQ6TeRejDMaD22O9G/Hm7WtMDxqPTxMG/6oRDQiXy5uUmeKd234+Gr8gRspguAcO9yNIxXs/yR0anye0CNPrVA9ztvnSSfjyU+e+T5kH43M4y7TpGAhrSrikcXkp4/lcgi5uK38JhIGvLoJNKKCSO8igUilKRibP+rW4KEWfRb0wJtVccn1K0REbb1prvLy84HicoPY73NzcuZhn6+WEAdwBkh9+fI+HhweMg8Lknkx7fDwCBNzf7eEcXjBqj8PhBpOOaIo2k/eswEiGp41LRWNmP2a1zX/kp1OFmf65kKCIlWOsvUxQQjzkfDwbdfZCFz9ds/Gj80aam4PdHjHNNwsYY4LXDEDy1nrxVCUhUl6wBqaiLL5W1zyMM0bWWI6VJJ1dVk3WbZhSJZLxomc/ihRhaJgMdeN+XlMGVagVgSoNKUcxEmfBsJk5W3JHpsEEINnjEoXb+3nN7HHrdbQ7tr6/v8fXX9vtQY8/HXH6oIMX0KILx2xg5YUPn03ffIimRp37u9O4ubN3hO3GEXRHML82wPQRxz/7p38JxpB9RjbUkTGsvaVJJlyZNLzSuP3lDrvD4Oj39YxXNiKSCOk2JQg94V9P62zX7TDQBhtssMEGG2ywwQZXgWUezTDTvrSfscx4TgnSbGytN7M+4724+6+v3C+M8NK0mWSPJu8ByQngZnWSk7HltejPR2L62msLNQ+BUPTCCMHXwYypxPvnZrAGBHVys3Ez4eX5GU/Pz1Bmh9tXdhl2HA0IE3Y7FQ6BHHZ2SXVQKjzNe7jZYzpp9z6368vhNcbxgOlZQ7krj+wlyEg8mwE6Jsvp+9tMSxTNIXs6KfrwhwyWQd1jzosJk/2JtvVzS/pFXgr55jT+gFWc0+3DVAQafNtH6Lm1Mc415p2c5Otj8kwQ9UPBh1SEi1BHtzCSS7Css3vLZnsvKarSv54Fo6VSavBYN6x1OV4gGxDzaxtJbQeGj6CcuQwFb+Z8yX1TmsxlaoNxHPCLX7wDADx8eMZfHt+DThReNfPDx2+d1r5O7ve8gO7HtbYHgHyNlIYZJuzfEm7urRk27OwrX/f3N6DfAh8Pdm/88a8a9GKicWcLIl+QjtpKadAB2H1lE958fYv9nXJ7qaMDhhozMkZONhTN/HpaJx9c7AlKV+x6aNLch/1cuy8xS69nQwplfq6M10Lbm7NkKOeIt3+DcCA27aISQzcyJiMn3dnwVlxmvOW5GoKd5Cg5bSMi/pmTVvxW9rm2YZxf7Tmdjnh5OWKndjhNdmlnvz9hGAYcDiMOh9GFDRjHAQSa7+Ekwsndyzf5S+J2vwIwgGgqaDP5ASHjV8Syvq8Yn7Vl9SgVq7Dy/Z2iUlsKPbZUXCe/dB5+LIf5FP+MJRxtolmmUXxTPVMUV3q0vctqmljzeUOUGwdSA3SEd3fDmoT5wFvX5GLGihhxuXJGTHF5Ppz5w/aj/JpOXxVaTXWZbT8LoQsnbwAR5jsl49s00vs1e60LCnf9+sn0r3/7N5ieNd5/+zTbq4OCocgxEk0W54Vyd8LcvQCk1QQz2v1F6tbg7s0O7355j3FnZSmR3TepRoXb+xvs91buHt+dcHrS9vVZ4/ZJh0l6JL9GQO0J443CsLc1UgPCurVlL+8OiPRZpG87rSwsHSyrXwZaJQwqeCpqup29Q/u2BsglDcyLj8MLIZTRXL2ALFmZ0L4mQoWwPZceUZctNDKrwrdpZFIZXgbz+TsCpXS5gZ04MrPvUQ3AzhuUe2s8EnCcBjy/2CuK7m6AcTyBiKDdk22nk53LK5A7SWk9AjAGikbowV7ofXP/a+hJ22tyokl1XIfcP5afGGe2YzF2kinqF2IEtiouR2YTSp0lz/57hoOJCEuebeSQifSXWE3ofYc1T0M8H851LwsLh1O8wer/R2LDihUn8UcU3NNo1TSNvqjlXS0GbUa2eyryjBdBc6jnDRLiq0gvJEKX6NBLgR1R6biKfxV+XeJ1yjIbJU2sjQ4F3d0d8Jv/9DdQ+AGP3x1dohcY7OYrisKbrRpm0IAyIGddqZ01/va3Iw53dr/7/mbEfj/Yvc7RPlI1KBijoQYCuUn6sBtg7q2gmw+9O10ZW4oEm0DNrWRgooYzoSyujef6Z2HMz6Xstd7QLNTYquyLRXQ/s2f0VY3MdcblJQzsc6FEc0VJ0G1IrkDtXhow2bi5BiwzMvlwEiIkpdBSsoWgrPIrH9gbztaHCDs3s351f4vn59fQesLp9ITHZ7d0/kljGAwGmmDc8rfWAJ1MchKcWJ8AACAASURBVN+f0YDWhNM0Qg+/AgAMwyu8TAaDe1UGAMKL2I2VmgJM9Cern6nc50L58pngIY03/buQ7pWS8GBGv5WZeDSrAryJU1Ic/kYHkyhpwekbeVVdEKV/PW8TsnpyPMjJ+aVGpiDExeb4DMZQd7GCwiomR8LcYr6TEWECIr+8FNkUKwz5i+8CuzC+3DgKK2B5UZLhyUKazoSwaJnZGNzf3+C3//AL/Hj/AQDw8mHCOBgMB43dYcBu74zC0V4RRoO9TgiwxuMwqnBDgy3HGoDzlNDVQykn10zwRJKBzWvmOeg8FCO5m/0tqkmlkV5KDK8L6+0Xr5r0wPIL2y/BjaxSbFVsAfL4q2VgtotmMC+NPB8Ek+XSyK+ZhUEQYXH79HqfRrbZJcWa/OnDJwpmhlMZxqL0n5yUs4xLWYEx8RXFHoQTMTQaA+X2790cbvDu3RuMg31a8vHRCtePjzcgAr66fwTgjphDAYMKdzEC1tB8fiI8Ta9xd28vEz++TCBSaRPlS+YRGMDus4qIJBcRX76c6+js8HmGvmzvIKjTP01BW4PerPMl7CYJ7Yeahe41Eq9S0n2dWS4KX2ES7o0eH025lUnC3/izMhjYNgv9vGRgtCCSpBcSpZxHvdWNxQhkaPH8MTfb9ZRMDXNNhl0LJI/bHI4oRTwxqjxkHPEvV176MSc0ZD39N3d7fPN3vwAATEfr8STlDEqPm+CWwNM+DdeWxSF+7EdDlAAMw4CTidd75vrGw9kgnRAix1dUXVRy8x9iZF/x00/E+xliO3W+wQYbbLDBBhtssMFVYOXLQOsnk3w+wb+5wovZk7fXkylGr6RrNZo1cAbyy9BVtnENr733jOZlg1qGxf1W92KUE7gK7dJyedXLKeCXCZaDpTHEhTObu4tl0OjbLxUpRbi7uYEig3FU+N5Y7+WnTx/w8tOIp5dbvLl/AQDc3Z5w2E8Yh3nO+vRM+PT8FYbhLUB22f00nbAbd0nFEsdmJGKsNxP21GgUWCyVO+9mUkcTLUZzbSJ5OaM/y/ZoroTg+DLp90IoqXKeBpbcyAtBc0hJV/osqPdmJifZafbe2BDe79jyhtU8mcVI6eiCwmf1GbxwzKivlJtulajjte0sPUbQT5MLq8mZnnZqOLF6+6qUUx1lVwhK7tNF/Lpchng+ZdrAahD7C337GADkLgYehxHWAUgJz5nwb3y5u0H+xfgjA22kyB7Q1P4wkfcgJhUt6mUY1kt0k2h/RWX7L7YNI79x0BlVhAHO2KPZCey4a5ibTcaj8quTWXv2Y8oDoX9EfAb5tqiQ69HDG01Ly5vfvZ732VUWQXgcggW2JJwTurLBKCdoGpk1fEIgHy8oeMaQTH9TEhenMcZAKYXDfg89nfDm9WsAwG5QeDk+4zgd8f0Ha2i+fzhhvzvhsJtPwxq6xbh/g8PNV3M5Dq9x14qHGvkujrqa4CceUe/nv6PsyNNFVlSxg6nD+Az7hYs2uxysMSpzqNpoUUnpoJSVbayUUv6h5K9vY4qNT0LRrSVRkdyW2jPuP6FSjPRfJeBmstLMzOppB3DLmHypsjrJuDXsfsiV/bLKSvKP+/y5wFqSktVjYWtVvFNZKidu/3CgxhTSJJkolpTn6VMzs0juYogIw6Bwig7mFZqQYdKGVeV+xnI/ftrBfYQxXZEuXkBDvgEhh+sZmqI9J4R2Gpe8AOshp24BlXjbyM8an1ca3Oej7cTQayhV8idD0mA+SNFZNFWMyPAl9bdoZPZZn6JByvzoV5xcXL2h87x5asoS1Dya8SzWGv0KN4cbDC7i5rDH8/MTTqcjwh5N0oCZoGkKm993+1vc7F/hsL+Fci8IkTNyjM47mBKhntczvKmb/U6yxPUujE4fTmme+BfDi5IBL8KagZfVuVAmC4vhtkz6H6La4Hgxq3vYcxaX49PkiqtgwLkQ2cDyNMq8Xkj/SkMUUZ3yvAN1NZc8jksDhe9oSr/8mBENmRZF5/HTEujVy3zfnAOSMdmjR4RU4R3HcoDGXs7wlcyAo3fPTS5tWivDjh430VfKptfTBAMCUcQL3GEGqbMZmR/Gql2W8CHFOEscEBE6k6VrwXUMTVawrTEwuYG3lJS6cCoZXy6kk9SrwuWK6RPaFytXUiQ+mgyMcT7M3hNBrSJFI1OK6ApieFH2UkgTnJYyZCnkUdkwBiHvycyNTCrDvEhRCgoDdgd36ny3w93tLabpBK2toWmMBim73O4PBA3DiGHY2eWfcHTSYjXGlGMytgwDlAvcJkvPKtJc7meoKUFdPsbpZ+nlkpDMM+Hy4qXgK+CzescJUzGev/gnC6pGJnMggl0mj+P82CUmTURY4t3sMS5nctIExWfvGFrWBy3alvoOZY8mM64FQzQJcXw1V6tv6Tcu7EKidFGx3Yj6xfDisteuQMgrDSk3xKfFbYEMjqjfCnlSo8+Nn/leYwOttdOPzjdaFRIcOi/nI3lPflXChSnunuFZOMVcTIkHoA3bYaANNthggw022GCDDa4C6zyagpvnMl7MOd96L2aUsZJ/nl0KdDYz9iX4TM7OPuhpj4uUUXpO2plM+AOsn5U2J4tiONNvnKcxc0tInpGmN5M6+YR39sxhMVFMkeWSaqNccpvPjZ0B++VvKAXCiB32UV4zj31fdlg6iufBlGyPCHRx3kBCdDDMhcWsUYSVM/vqhDtvj2Q5nsK/Pl1zO8dKGZV7zPwLSb5Na4VV+Vjil0xGl8vdVISRu/Ok4KEir0VY8pJEIx/BcqYkynvl9koX2dJulTxcdY8lX5Jto2zptXJHrEjNmUJ9UfZG4hauXvvh2nSwGYr9PfPVSjx23tvI8abEnsqP9XHEdJqsVzMkmKVHehiKKwRg91l7j6bycXPmshZCq3U25mJDkzjcbGMxIZ3SWmqsjlxS0UIenqh+uVQX+ovhXETMBuFLFyEjW7anLW/2dI/mbJycT1cWJPU3xz7VsPqJ2NzIbCnJGs/xcSXv1Q795PGpgeApzhkoXSCaZZRkeHgoFpacXJyNzRDEVM0jzQ8DAVJYLu5Nkj4ngysr/jThJFLUxuJ46jdY0tXU+T3msOMpNIi4e6yrdM6Qy/mXECsdX09yW7ZmKZ8anElymyMngB17kjblhiMV/SEl5rI2ielPdhb0GZJJ6hJHZlj6fc6XIJiTce3Eteh6opqsXFJ2U1vLrMbnn4cf91MME/uB3UQu8xzl3+4rleuEYTeCpgl6cifRjTu1HslTEYjRR87IzO8AFcgsYdGkZ/UeTV55cfH1dHPamjCvlL6IaVvKvkgjcEd3kSvlwWoxcgWBmeJeWP8ob8usmvdomuipu8VUVg0XMSivW8YEojLPflD5gy96tZE5Bxb6PdMcklFJ6T9Cv5jo3/kjGI+xtecNJWZPWrJhPJQ5GzHpd9rS3nNJ+UlPQumtjMISOosKupiG8Vns0Vw7jjklGdNOzrj3B5UEsqXia6OR2/tIUUTogfgwQHTAJ84+X9rOKKR8f2eLaIG2uSw+saSoi/qJ6bojLgLzEGtvYpM8lcVLVi5tjfJ0BJ8HV2mh7tXDkhmq9LDyUsiffzgRVhbtxqVxB3zymyhiY7OpJLgoSqtJ/oDO/NunJQA0DGHCZ/dsmvTAEdfplJUVdKt9qYjzYkqokj3CCzf/XvgwUKa2ejjDfzW4WlLiyyiSieKFZIdB0BW5dNCeO8TPFDOS8ujKKwiNRlEmMlzO2sAuTh6YviQmhaQtufAiuiYcpTwssSLdXPsmwiJPnguSrg6l9G+iveyEID2WIIzLxB6l5G+SvHBvR7I/cn/OYS6bpycrO9bvKSvxdFJxOhSIr9Zaw46i7MtJMBTdfyeXJJkXvTwC5F5or+Rm7ZNcV+TTJcZnSnwpWyXawTeIJCsaw45tjcpg6qVTBoaxO6G+3O2mYmISKg6RkPQa2rWgV6/V+n5JGiFQ5P6lJkFjXMI7OxAdeAGYmyhqYzUPqGjEZFI38yv/Ih1hcNuYlFLQWkNrHWjh7rSMx17wYHr8lUZrWUnzYaS+lt8OA22wwQYbbLDBBhtscBVY7dFk99ZU49N0rZnQHN1yAUkl5IEVrxr7g/G8dNJRmb+04SKT1XVIziqaqi1WlsM0argnzM9SxT7jZ1Jcas6bQuk/VYo5WluzvTKk4qURAjm+Z+vH7p0r43IE1fHnD+vkPrbZyTcnjU/KVDdA0vxNUVg0o+f2Y4ZyorA0HWXL5iaKQ991czl/GJMuY+cu0wowTRQTywSn14ZIy1/2zwLO43gmauvEw1wsp8+/kuuNUlRFyb0yfSav5M+aN+hyclqgu5qnkijfORKnrC7PUCN/eSF2a+n85wQ9Erqlq6t1rcjFPIbXOUx+is8L+DHgIxmBxOKtjQvKPsur8eIDOyLZRBjIvrPul8/tUjqbNOzJzHGzYJgDlgzOJRbDBZbOGeZpDPAeGkPKjrrIirueuSa4eoyBjhxd+Tujf55Q8K2gDFs84YxMqieOIDU2uXwcC1TZguOBIn85UDkFm1BWk0lRoHRhNSee+SXyGVmxLzMvrqeJCcxBmzyNX2iqIAnICLlgjcdOjCPYdpHdWNu3GVDmF7Mzir5pfLr9WJ7SRfe6Cv2VkZkyTe9+0KJPK4o7+vD9HfMXa0D631G4vC0jo6AypkTTiKsPN17DByNlCtSCJFokXBdKYurgf3Yrx8zcgtRkThRfYvfl+bC4bXnRlgUw8pvF1dI2DI4a7xboye3LjNOn+qbcVFMfD+WBOKrL7IYOJHcKiCiSz34PacY0tcN4AnJ2zHqDNhLL3XDRPZqtPZktBScpZzkdF9jqICmwwbySEbGooKUirCf1FxQ8RTcJ4lJo0MKw8Eou3QBYLb9adGdjp92/9PCP+yrCpLQ80j4jk5iwzBholCOrNCDmpdibmfST/5GcFCIGr9vpmLSrn1FTCEkqlCnVxIjk9m0CzsOZa+NYH+c1SyLZIL9HMxiYC09YFsT4r4ox1hFUhrJikrsNITI2EyWd8RN3GIjlOZ4PExwN8gO3llVKcPHhCQYhMx/Rl34pMIgSL+Xs9RflZeHV5Pdvrn4cgCOQoWgdcFx4Hop+HpITSvaIJKMDGDgDziS/kyzE74m0LC3pwRwH026xoMh4ht1vHk/y/fmG7ornMDMhW7V8PMZXiDRguaEp1aHBGVVBi6xzqum6C67nE4iqCaLqokW3sqgW0Is6ib2mqXmuGOK8IOErsWCiwXtmoVyPUhHZsQSVDHR+8MvlIlS+xXtSfBHLKPfa8rj9uYQxU5FmjS0GX3KxpDRuyys6gkdzPvqYZsz5AZHAs5KtvD2EELyYNixdOs9/OiwogKJYg/DWOl+3ZSDJvqJvlomXIrY47BNlzL0aFPMmxfkpCUvKrnmSJAOTG0NFeBTIsVPWgBzrsWNpUZ9VxmID2CNjxFKcZMonSKwmyniwKet5q+R60GowprNK3ulEuaBzZFurZWe4gW/yMcT4MEX5zhfOLjdz/c7I+QrW4mdr2VuGueAUq3DYqNP2ArbDQBtssMEGG2ywwQYbXAlWLZ3XrlPJUgqzTyZVwzhOZ6o98/suRHKelZ6h5qyj34nRDZfAcSloHRLj0zjvWdj83pqWF8dU0tKabSwlKLd3hDlr213DxslR9StaktxMMfKyS522vpny3P4xHWGxje1AZjk6/jf2ZgbSeM6N92emnEAh3P5irjZK9miasnJMUBptPRrWqxmXvkRA2YCa7KteYs4h7ZIbzN5dALnHMsQl4RHNuecyz1dGFmK1VYcZR+HPiX5wdGS0shmFNGK686Ay0qOlSM7jyeTJ01f6s1aedZm29aoEtWzX0Tf9WFv6vXpoTtTZlIZQ3mMuVccqhyhP2aFAXHQVfwuI3eojeznb/k8vJ/LlpH5YZGgSeusedV2PMO3tsN6T43Uk7Xw1RdgU+HKe6wzQzwRFNy3ghEojB1UevcTSLmPelMwqNC6sQ1H39g9nQHQLCdcgXHpOYXGGO2vnMQ3NGx0CXSzUjID8k4T2mJl/3qPJ449DZ2PTJCnTfZvhuI5wYl1+MSgOKssmp2v697GxnMuKAlkYcO1Y4ifuT5o2K5x3DMSTqlJe5zzO9b209C8tT6Y4BN5il+zT3Hzb9jk10iTdlkIJhaJlj/nUdUlkFHald8fuqqKFK2Ot4lmZr9YPNTlZ08XzpyAzhEIlHqqW6WLmuHIPuIykrpHmSGkSVOXMCEpLL+chBjmLp4gx0s+8M/qZa4VHs4Y4F261VBVJiZxB5ITtNu1krkJmyqOkibFetQaUimatnPjcIB36YUMYhU/ewkg8SX045dBKOk7IcYKNFYbLjQ8fygmYQrwQX1bLyKzXrcW5ndNUobzckMiHYTj8wxXOGnwRzbkXM86fXfli4sMX6SmgtuHp8iTmbeOkb69cl7yYST9Lire637eM40+0cnyUT1w4r34p0OTbF6TwpNA5PKeTSSCpgNZ+ux49sxp4K4H/xTwIkCaKamLSj9yrtuzC9nVWZpeGr/JxJ16u/kIGkfs52RnnqRAsjTuJkK6WFBLJ9kTf4blqZCQbe4E1HkOQcOzojH2/F71Hs8aEaVS9Y2uKUURfSqh2HjZiwZKmGN8DZRtcWhZeC3oNyhDa0fj2IJBV/MG2kJ5mqxLXKl9SPC1hI5fDGQRSepkUEtIRm5cbI1xdpfavt2xNokjCnrLfDG1iG7twUwq4ulFZLp3Hm/htXIYzMzxDuhiBLztpjiW82FJ6QsoGT5VppUlLZvREhRdGJVeBvKBiTEmyi+dV2cDM+SMNL/UJ5UlKuoS4AlUeeo7wFTTwzLtM/Zl8KZv5usbGoll0j6Yp8mflXxPKzmsnZQIZDknSsPoYshguUnfLxlr6fiRsfc7tkGZbS9ua2Cj+sCTKO12X3MaxHQbaYIMNNthggw022OAqsNKjmVuy7Tsy52h+9ljOzAWvgBi4YNZWQVT3MLDT+L45G5/15wFdk6s+ilvXXCW/oiCTTOfj2fwakOa5fWHJrJPtYwG/6JFiZr2UlYPS21SGuZjqQaAM69IZe2eKWvr0Fsa8UWquBheXbImaf5Tey/hVofJao7yXOA9nuXru7s9sbMuqRYpeMylkscePa9esvkxYwV8MAxf7ejmeZsMkvpPkauW+T6ZAjnW4+pbJeH0jQU/SQipVV96M4DUq8xHAeDnzO03P2XRZEHcBkGWtWFzSV/IAknRuTdPXDqPypkKFfm58NNNIwTIfXt8WkDSpsHWISVbi8Hn7qO8yNOcliYrib5QXurNWMZ4TyhD5h0yGwEk96QtWLGUbn1kUfg1oDKafC8h8JinOGi4nRJfKURK+O8JSAb4AhZiobylzLi6igOH9noNAuVFSGUK14GWQ9BFFv/N+zweAPN6YFW0XkSsKbo9mibl4zWeB4ek7yB8GqqycFyAuK0v5xVPXkoKsKV6qhpW0pl/sPZxJ0fWwmc467e2wjIqiykIbMzSyaMXInk5uH55IgyWdVxqgvPGZLp3n+5FrsHSsV9RqGtRCHCXskp1MXKFz3U9xtDT0ED8G++jrueM7bTu5kjyZa6TyMicMb7qV5RrmqxAhwfCsvYiVQp9Hs8ph8g38adYeAVCm4RmhlasW0RioSaPy0qxKpSzXxfI45fJzg15PZQhpViU7wBEZmckeu176qhQ1e72NNISxnMGXQEwolbyVGJkM/1zOg0lYfC9FJ8g7wfq4O49jT1A6AZcGGSYNw0PM1RxxP8Qe0eDQrCnMM4E3oNKPUvFzB6xKRDwf1pBLBMa/mTIqRmbJntwefn5fv3j4iG0vLm2ddgl6U5UezUpKyZvJ1oczPmOvvbvWbYlhIvHYBUHC2TLiSv6u4JP0ZNmMSZqaAVoza3oeU1hm23CBHfaOCHxK1lBcgJhC1jJDvmpEC67POvsJyqby6O2E1lK5wBW9nSnS2cNkUTqWytYgSZI36Gll7y7o0lAvsPs+VQmV80rFw0PE2Sgr/+TK5pQUJzi4ouqKPA6TaOGEIDdhq9+LmIYxeVnC81CT/OkCFs8ShmynnVNEopMhverJTGxQmrGx3s6oRDLheqSZhhbNFYNH5CdJznTITEkeMuHJV0Emt1wu4YxJ5JQ15Z9IWjZpG669yoEk8ntN7vZuu1qVKFbGdTBMfYJHlPNmFulNslIeXqxqlHo5YHRVU+H3Yo2+WN3aoVfFtqhv5avpUE4viMm7bRY+oFtithKy23zamUROkdot3FEcTco7a7HqCcqOq/BYASFmqXVYVXBWkcpNwDKQyHVMbBrRbGruzqx2llaKhRiBVAityR/lbDRur3CKlbFxgrV16rxJ24WAU15cvWSDcg7LubdlZLJKl2n4XKkXX9181KmguM4XBWpR6z6ahHV0yhKU766nfdG3fM57REHZdxVWeDwbSrTkM05GSv0QtVkW1tB9guDJ8sbdyJHA1S2K4PNRitd/JWFpAm58MqiFwDMlBZu9dsOBT8ERb/gdHLkMiHmShc7HB+uqrrNpeJ6Yf/K8KaGW9CtrGVRxySuslu+kXCV+loaeSYwQ0MeXK2AVDhKW06PtQkI5xAneBmynzjfYYIMNNthggw02uAos9mg25o1zzMW8mdJcRw7onTmI8wxxRlNOpZbOqtjUV5vqrMPZP7uteddquZgpqTFRmOuZyuGzKh8U/UN8n7FhPD9w5fWcJJ/DKl6mmI7GXrg5rAhZ4ZWI05N4H2CShkVf2VSfRzTHjnA9G+PlnJsx8+Rk+zRnvPKSebpHk5Be+l5vTI7vxbAmIo4/y+Xn3lPnCfqiL8p+K5NUBk7GcJRESfR1pOk+YCTohspAuIZUjbHzzvg5VPRyZmkpzZaWsurwyLq6S3lquKTml/SopP4WhTOytIit2hqVuBmBkJcvsaqjBLgGfy5bInftyAjU8hCm2BkFrL+wvRrW06JndGwR0GdcMuq4kTb7VR0YVewSqp4cfMrrSsxayWlIg46eS5TT6Ih5F243WraAKfdAgzMbGFPJSulHUmpzb5wNZMJyTIvIlOHcQxPV7Fx711RGdpkGlzSSfOnYiAxPdlm9XHrPL0qy+4XP3WrC5Mk6S+Q1TkELQpeTiwXXMIkKvo+NuYI3UwLyrziaNyCprFORjEnjwiTdUNMZnex4OeBviwFApZIWjE9TNEB26vwKhHdjlBIuIqmm02fel3QsOwRqKr0yeOaoHjtD4rcyMZ9foK+WoAMHC8U5oLoibR9Id3WPbuEgLLIzzzgMlAuiOLDVsOcamdmPWsdWO7MaVFZQYn4BFZOsn1sWJm9hOh9DF5q+16HSaGdWRAK41zhlEzUUdF1pSyfHubCMPwutPY+JrkM+5xiZfawtwtrT/TaAir6sZe4bLWWa+ZdwOChzJc39nM3Go0M+jvMsntgScMfOg7ez6llvahHuZxoWfTRUHnIjrkjfFZahbj8PVP7OGS+vTBJFTNKcE6jMWhw4Yjgt+xB0fzNwjZTkT5/zvFKyUG58Rp7MBE3SUahYswuhLTSkYiSeL3qH1cNsNNj+T6JrRiY3TpJ/eDqZeF4/MLyV/aiOLzG4s8GXQg8x0eoVVyxvfLp2MMsn4IsMTZnx3L+VMjlhUcaVJfGd2+r4ithp9m1jkGRpxCpTRQlJJFWTL+PCRalXMXjHSfIiuiJJVhyWXNK63ABv0t8SVEVALix7D/lwCjSisSbUcoXeBdmhBTaULSIKbJVVlxbNZCJBkmxgNrFLRmUWT3E4cwCotXTOgyR7OurPDZOcbYQfHG+mSUvez/M0T51H9cjHVV5FwTxgCo3+nHM3Z0mUSMW5wOMsQ9mbDoogmtOGn4LReo4u6M5aVYDtOFbUVxRm3XyoDBNBPgvIpLianSEEuZ/t8SyOzgXduJZ/5WXzCkYjPUKZ5iXTP+nZDgNtsMEGG2ywwQYbbHAVOPseTQvydISbTbPxzFRDmmXIHiV5liM70/hZBptOjItS9e5z491E7XzLkl8AejwGUi73VUnPtXNom1WepA5aWZJE3wsTkDJCaCGS683eG9hzCXY2LrgZec/LFQmka8WLspb18h9S+4nz+aYXI46s3MSRJKY4ksol89hvNHsx5xtcDc2ephR9PxPnKfk+q9Eu9WlFPhYB3Lit78t0SZjfxMdltOW/c7ryMcDzO+dF4utShqUfvbx1NYjPN2YFyve5xpC/C3T5PZoStnXhDf5shLNpF4y7MpyTr2XCGg9V0LEyXSavJeyqqFaDhK+6gMi1eeTljBfde+ldYWgS0k6QG5ATDHxcESJ07sJlQ1b/8hKfrwIjGJkkPc3N7dOrpm8n6YSOcpZlEfDUBx0bxVYyu6F4GRFswNpm5HiN2Hi+nCS+UOCcEMyVLlOKpEwXSe8ogwn/tDII4wmsYOpR8uKYFLMUu9y5UGbJHAgHhMQ9mj5sflgtznsZ6JA9LVnKtV0lrIq6a/BziYSxzvFHSEplfGFUcoq/N0zIzwaUCS6n4KMtHBUtz1FqWZC5izOIQwJgFt1o0g0Szo7w7vaWTAVx/6WglStC75JNUx+Xsr4r5FqDqEU09yZuXSCyNFt0K4nPu8QP1PnW+fLImRcazNAUEJJQiT87BHhLWS5OB3GARNElXrnETibqwNOXfDEs9pzlySoS0orQNTTVyuMy8JKBz8eZQsSiqV9ZlKdlOLP10kr0UesHrsr12WuUK0/YGttSmNjPzZwNqI3Y5Hg5c+rce9zyE+n5Hk3C/AZlB42VKnHjuioN8/7NmZITkHJwFsaVnPHhklPnOb/neKn2m6enHMw5/zPjMfqQbAGJzutAqxwj3qCQ5/Rez/JQ2vVrwcGSFmxo/XaMJHtaxddkVk2uZ7wi65GoFaoszA3CLlK7869DbtjPVjbLi1FsuI6wj8hlHk1CV/05wVDGpR+Soq8Jj7bCLQNFVVVVBmm6Zv0lLmTTVcpqhV5I3jDDbhXuPmODRz8vWc4NvOQQxvnmihzfCCp/IAAAIABJREFUb1R2nibPv9mDP/1P93E01+KW3asmRc90iNlqQj9P0DGueM+lRF2ybpl4M+M4k4UFPoxlKlhJJJTcmYrvxmbODqnCBHFytCI7M/nFLpm7r5xHW9cYlRjSQvL0/BgokdcMg67+uZAsFUG6istFcqIufQZ1ztmj28+zUfoFQbdhJUVLXsteAhaELEAnhnP8mP6U26FJ0VVc1RUqqsWl+4cIubglkHBoiIPtMNAGG2ywwQYbbLDBBleBPo9mNPvusWCDQyA5/k5ZXJSa0lvEKIrLZ3rxLM8w5jaFnBQjCmVyG/wpi8ivMEsuejZpPDOfdl4SaS8NZemymBDN+53K61tyzMunU4b5ErbDVfBm18Jm+znyH8VcyLcrxV47yfc2u5zmhVA7wzKx98aYcpaYp2Hrw3lzcm8C573Mfy/03DQ9OaUbbM0cOM5TW1YXfQ3cpD3utxBUtmPdW9byY8hMyS2VxwGE+AxUFFdM1aP8CRt2enkyORRT2LWXu/hYCA3HEoe+SG8QjT1Ktk0zCTvCsnJiNpa8Y0V6bjmTX+Js7deXgy7tUUq3czChIbIUdaZo+kybsVDyT8kQ3e+QS+EsmHnTHpdBlLtrDjj1byGopVhaqpR+6XhLA8+rwyWA1wGMrskMFrPAA9tnaHovKnm5bMKypuHYnyJDIgheU8b55Cb94I3OmYbi3JPJ422aeOk11hWJIYKMnjhN8B5HjB2P22B0mihfVCbXg5QbYBmNFc3f6te49fjIPsZg5YSUoNTwPLZCoWcbi0PwPLnIGbtEPRt75H43Ie4/ps8aKrKOuBrNCXcuD8eLrDZulF1vu9Z+2NxkZP5E0aXCn5f5cqOSMjx83Vj7r7KVIu3TaCSYrG/JROPSUmloVpLEFmM6bpOIONnMsjIQkttrgn5NJuK8PTD/KmyINvd23XaR86b7zY6bJFnet/NX3td8PFheKkwjMYwxorKqMD/ZkDVJChD4lXuppbjHNbTLPFn2fCGxYsoyMT+mfZnq7Fl/po9mzAFp9sgjgORzrpfxjp6s2Thj0zh7IqvU7Kzhwl150R6XzG8Fv/8lbmlKBlc09ZNs3cyerSVrsQebptPGXmOKfw7o1rnoNDQ9Y5IhEMh1/izMwzBojfHm6dSG2MwkXU3tcHnZXJLyzAQtL5/rnrHFZxmTclawlliXLwemlGJZfPqlAexcUi0pTgOQ8r05V7rsc0E5pkEQAypWgZiU+d2VllOeeUjSv63OrnNBD48ULcUVKZwK9nUqvZqUeIUjFG0aK0Sn852IJkpTGOTeI3fKPJ6sZhMcUoDWlQlc0tl9e2s5mRmH5X2c9wVlZWbFsYYxf5VR2T8p/vjaorJdy3rldaKszhm9eTlcfbixIYwXtj05WBa8DhhkyfS6cHiaJE/ukjDGQKn8adQYeWqFEkqnzhJauxKzYijm4ThYanRBzjeT57zbF86NzzmIl6v1vfFcZXk5WYM+UX5JDs04rOJ9sGK11IEiL2bQZWgqGlxhBtpoKFKRJ4kRaOGfIrTRydKPTNCWfM4GsF1CwhJWM1+ji1k+zDtBGgAcZJ7ilRuFu3JdVLpKYBqMbD1NighK2a3DoqBRCqTshMcnoeDdTDuyUDYdYblwah/w6VGmvELP0+TjY4mh2duNDd8zEyGr7JZBw3o0md+8zOiHvN1KZ3ikdmNl7u/QTMJsGxmtw++aFylGOY/VZAre6E9q/Hb/Cso7Dyv6hEo5LRmV6e+cdobu7rQQ0pZ6IdcDnIzvCpPajAV+IF1aNHp82SIkW5rnopmZCcbUvOtqdgqBmR5HjcyFSysniaQqWasIT/uekR3N8iSZVxLG9jnk8SpPakt5mmCUwgHkpwc53uwIqmbs5sNFDEspI1byWn6KPNZuW2SvM207DLTBBhtssMEGG2ywwVWgb+ncTuyhBrf8ZCKvIBXXGycwh/I7DWr2MB/X3lRPQlnzDKicQZZXlGU42Eln5HXM9sHIdDUScbGds5TVs2/W+7M4U5Svz53O5jXA5BhOv/B4tAYUGZhJQw3xXImSfTvFXjlPmjQrRz7jrS/zlkuRpUeiugyY487Ccq9QEnqG16V/diyMbGGKX31lJvZuiG26hoN5HuE8F/MSucnSRVLKeYwIgFGDD4S0cq5IAdDB+xlvG0iEhmHCUNY4yKdir2Ip97g6tg+opSW14hPvU86HOQ8mXnxi4yKUHkuChPdy5bRIYQFJFiaVvwLOyozQ/dz4TxKg8ImDXPtMWiCNZq+T19GG8TpxuoXTi/y458P5sJoOZlF3h8tx3IboKK5QCHzdu8vO5AfXtq32zAOqLHYu//XiY+XdzADkrjeS5GIOfYam0+WT/zDAVFCyxrjYYIPlcNLabuYEgGn6orRs8P9vOHkDM5rclLJwk40bXB8mAxSLlCzrtfhx49cNLgvb0vkGG2ywwQYbbLDBBleBzdDcYIMNNthggw022OAqsBmaG2ywwQYbbLDBBhtcBTZDc4MNNthggw022GCDq0DXYaDv/vxnAPYkmzGAUhSd4rvQxuEz0Mi3VV696G4s7BmBBq4i+QX3aAsHhy8PC2g27lTg/JIZ4Ztvfl2k++7Pf7b3bmqAwlSJmMI+RwU/N1xvo356j3mjnL5nqq4EDeSG/VxdhgFBQeHX3/yqSPXdn7+DgQ7NpRThPL7rq9t/nOMaDbn5JfnoAlkvqlsMYIigaMCvf/3LItWfvv02+U0KIFKrqTDFRxyZ6yiTZaD05Hn0p7wHlHsrSaDJaEzuAJ7WE6ZJQ2sTHlkIt0a4+5iVuznCaHsH+DCMGN1NJSq5FWPFmK284XA2knPBVH+ej1QDmoDBKeBfM3o6hr5T5+66GVIDYHR2iezPDz4/ZUyJZym73usQviyYxiXsy4FAA4H8TTED73C3L2QoaHVdw/LCU6kLwTWYgKnhAsHLplyQn7+MjJlshR8N3Mkzk8vBKiuA/MMB2oSXqMq0Oos7t39adTuzlMJQ/dLcXa9Jcz5zlh5a0opRi33GJvMXYwOAUsoZanxaUgiGldYaALnHBuR6rjqUHhFhp1Upfvv4Rjp+jbFjxRp8s1Ho/x+HAeM4unoQfzUSAEBBubInGGgCtDIw4QlZ8g0BkAplTfo4G5/DzqU1zrbpqfDZwUI5TOoKOd2sV1zh1LY827gjjagIChDlYg59b50HtxGvEpbAxdXkz8L44u8Lq8Suhw5OK5P0c1UfI9tUhVf0rAHi7z8zQYhJSoSUYu+HuxZcrxTD/bl6uWWrdtzfdkVgyzWVp/Y6MBJxBkEfPq+Y/f3BBoAywuWF/inUS6/wrIKOHiwM1Wv3esncF/OumET1XQRl/PHZerLztiETPIU8Lyo1hjFDFL+uJvcxf+/jElp9QMRRrGFrjUFjjDOCZ2N4GIbw+qDHVGKNcDv8w7AHjQrDOMyTQmdMEggvj884HU824/4QcBxuraF5PJ5AhsK76mKVl1rj4qoD3y4tiFMsm77Hf9jLQ8ugrC0EDWz/pX4Z3enR9IYFBSbI7iL9GcCXJuQziKXVRTDWoKAY+1qRqpOzznlbWr5xAsRErCsod2MMVH7NbpMhGfP7SztzmGWlz1gqA6U18EWa6ExHedqvyzGZMETmRpAEqsm9nefPxSvwpWXcGiiZO/d/iVDlA1o2mS+WenmU8YeIs8IPXSDWq44zGETCnCeemDfsS5GuXpibiivEy2YTyRHr+wQR/DsIwwBWxhvhmyvFnDSOR6FBBHh+fAYA7G72OL2cKr3tjfboV8+qirPYWIxFhaoWX/i5XFf5cbdMmJrYym+ltW7qrrTbYaANNthggw022GCDDa4CfUvnYSmBspD546Jz7VXIeizrS1B5RR+PsI2i30fXAyvbYNWejoUIuzGGBaI5JGfIDVZA7iIy+eS6vrzfWBlasr9o7WK+3XmxbLEpd4D6/H75cX5mt4bA5J9XgMxjlUOVSG4FQ3JfXFKaC41xptd6MSTPqda3rLRx9W/bYZdlSWrh89u9xHAdL/gsbksXPvk9DXEf+1X/mCS9zBNpkVNwjxl9HhMdn16ghsGN+ZjQUFgICrVcqz7zhUQ+VZQ2a1N+fxFbRgqU8ZuppPV15IkMK9tE4dBVL/QZmsHikU2f3v7uIu0qsu9ntuzUaLDe5YNlBTJL6LWC+6M6y+9L1d539TPry//I0DAUU67K+8WktusVl+PXTDRSG+BzcPflgC0vCuyT0PwCcGqor4Q1E4yrQUnM9ecCZy2uz+hMqff7pd/nkJO1vZk5Q9rT4Eb3Pxus9tZEMUZjOk3Qp2nGSwQaFAazvp6W5sbEVJwYeCg9RPnUtLTJOIOPFqQtaY2NZXlFmyujbnzO+OO+5mmQoPMwUIysjXhRt/+7MyDXlMf0YAONwGtnlJhjFNxPta0ngse1Dxp+WS+IIhrq+m4zNq8PC/fBcfmZn0vw9J4qjgWfNSDb+WIPRaIYsryEnw+3tT2Zyyi9Wr2qfFOf5F7eCCyJSWmaCz677IgPYyfZWrNz8a07nQbAIjuhazUrM0LcNUzJ6XMi6NNJLEYd9jatAYyeML0c8fLjTwCA4/ff4+X773H89BHGNcr49g1uf/Mb3Lx7h0EnvupuGAaFadK9/mkhnFKRIRqmc6JwSr7iqZxx1tNyBmi/sbocvz1K4crobPDOpfM6iJ10lhT7uYj2S8AFjFNWMsgCu1Uin7OWq0RKAqJ1BqhJfwKLpOyiZY1rezUqkFbpS/E4NwP/eQK3PJMu2zF5bMautEmegN8K0XAIwEDkRcr+hqTnNKjPXxT5H0UmCvUQJyL8DPdyPDsXzJZ97vigxOy0WFN3+kJkAt8zPLpkebNWZAomImFuNF8WKQVyd1gqd1BumjQmPWE87DG5sainCXqa7IE6rXH88UcAwMv7n/D8/Q94/usPOH36YNPqyV6FFJvs3/8Vj3/4Fq/+7u/w+h//EQAwvLoHPR+7q3Z8OWIYZzOobiAysSYa81UwsDdpOExVA7PDCA3/cEZljMv/rntL07QxUOIpnXE5AdW5+rEdBtpggw022GCDDTbY4Cqw0KNJzJcUUM//c4Fub2x9tecK0NNWy5e/k5yLvJH9Za3zdOa+oToUTqMlM/cVS7j/saB0TVdn8gs9SOKy3IU8UTN+57WseCuLtDZDHf8axgg85T9Yl+RifF8KznK8X3x/JreUUiPrkh57Ej2d51yPxt1v2eXlrC7d0OKDcOug9GIC87BSBAxKwUwnHJ/tfszp+IKX50dMz884PT4CAI4fP+Hl4RGnl2ecnp9hXuy1Q3Q8AkbDbqRy3k8NcBsQjo8P+OGf/xsevv0TAODVP/w97n77t9jtdl3bZwD7mlexPFz8qsuYeklWFsgSYfYUcnty4zTzxfQcMpN4OoEcF+e9jGw6Jm3KknFaCkvoPdBlaMYmAFMmk/LLwzJDuNcyy6FxGnVOtiR4MeTLfn1QMRJdNPNZKbkDN78ClmDraZN0y/DPh+dWg2joXRgWK1zi/qyHVXhqe4scvowHmoZnrBxbyLP0bBwr9b8MX4pGfl+uCxOxwBh0QdcyTOsKfk3Z/D64yxuf0eneLjbNTKRLykfx6LQ3xk1I9/zTT3j4H/+Cx7/+FQBwen7C6eWE0zSFJySDmiAkdzIad6dy/OhCOImdKDsN45bxn3/6AQDw+H/8gPFf/hWv/tPv8Oq3f4ub2ztH4TzLLfWOtPyc1bFskFKmsXxkNRv/iESErWpk9hmhogFq0oheozLFFxvEhsEjw+LDQERLjJnLQ/9M+3PQ2FkGZ701cuebi3tL7j+w06A9QiSQf7b3s+D1YGlSFCjgJ+CzvQwkFvPvzMhdZNCepzQvB9zM3IL4clTiZenwozcMVcpwSjReG3jZ9++MBwPwQu3zGqapRVyWbRaWwRss5zyTmfBdc6IWeTQNuqwA3jBBwNG3amQAQ2E/Jhng+ds/4OHbb/Hy9AQAmKYJJ/8meTBS7M69cE2Rxx89QcmfZC+9IN6QHAiYfvoBP/6fP+Djv/0eb//xHwAAb/7+7+3znFk/D8NgvXMoUHYAo6cIwh3ps7EJ8AZnyxDlIXp+kzMenT6tHw7ijMoYf6AworWlo1NYtnTuKLm0aOuXmf9ehaqHfvpXT0QzLq+IhhaiSpApU5jkTx++JNpamsmbrAuUuywwf748U1bvGrSuVdA9s/xLA7e0I0OPQbnE21nmWSZMQ/4sx3Kx9vkaXp64X5KGsv1Wv3SSBS2ZOMWffcWTUMaySZg0SVltgAqVTjya/s85g7jSvrXrxAZFmD5+hDmdYCbrvVQgjETQNNfbGO0MT0t8OExEqjD+ZtCzD8Q4a2S2XWFgMAwKalDYTUfQ7/8nAOD4/AL6u9/h8Pq1NWwdjOOYMqNYrgTeQ7IMUhkxyxne2Mwlyjk0RV5jcDoo523+MJD1tMe012E7DLTBBhtssMEGG2ywwVWgb49m56xo2YT4y3ua+Gqtpau2+eJSe4/4UgvfXseVA2ItO71dZVDm5SxXN/pw9iz3cEmu7H77PN7Ha8A5nqDPvXweL81IaXiaCs+lwMjsdUmiN9TjkukhpP4GP8v/EtxR9+qbONVnhrLMvuHK79VZx5LpErTgY7T/NguQr5Q519M5Owr7PPRy3KwZll6uXQVjx1aMM6xDhTszDQZjMCiFUbnlcWPCFhS/9W7Sk/Vqavu/p18RQANZz2Ze/uTrBigiDKSw2+/x6tU9AODdu3d4++4dbl/fYzIT/ucf/wgA+Of/9v/g4Z/+Cb/7L/8F737xNwCAcRws7QU/pF7hamPkidY5OIvSud6Xlta55Xh+tK9fZk+W2BNBc4Wlc3KlXKAtLw78WPqcVFbKqir26CRdrc8yJssX97ppaQEhXb720DQcSfjJ7Og9S2FY5H4wnrM0dM07LX8e92X2gqRgv8TyuYclNDGXCmeDTjI8AcZILfZoenOSzcziuDScL986JnDNZJebhPcZZLxMWb602Vtu73KinP9cA3TuZ/I5i2lLxdTEvK2JYIRl4MW8Gikoa5Tl+Qkqso6sIUpQpDAO1sSY9AStNWAMyBmfw7gHtMaEIwymyFB1dYmGrFLAbhhx9+oGv/zF1wCA3/7mG7z7+i12hx2ejvbuzD/99Xv89//3D/j9//YH/PTDT0GX7cYRmCa8fPcHjL/+xuIkCrSuMzQZk9AFScZiD1zCvirNQAnrSuMzPMvbR+nCPZpLUK8HXuB9Po23zHvFs1P/zDZicgrdy6C1rKsaQoI7yJDEd9JUC4pP8LXxcrhMGePGQXoIqma8M+LukjN3kYzzcX/Zw0WcAScp2J68FahOsNDAVaMpp6MUhKyxWDgfal7PLH+tIudMdsI/ScjZkMgUc72xsZCaOWQRGWsN1bLsermSQdiacLUMSeGQUMeMmzUVxTlPaS5JRuUyfvBaqe6p94d7CBrYjVCkgEEF2obBYDKAdo01OcPVqAFaA8avxLnL3nf7EW9evwYA/O43f4u//d03ePXqFk/P9hqk3//hj/jf/5f/FX/89s/4+GCvTDqdThjGATf7HV7d7jE4o3Y3jCAyGF6eg/4iNQBGM21UTnB4E82nlY3NNG2GU5j7lhiv5dpbZ3x6Q2XJGF60dO6FohVcP3cvjYXre5ZaA7kGnCfG+wBj9yXBGA09aahxCGHSsPfLFByJzGS99lOAcsZXeEGrMlQyPt2pycbdXCnv9RpJNXwCTc08KQ1nQ4dh1mG61WOrr07w+PqeQlsHS3DNhmFrBl7KJ255PDY+S6VPSE9WCuOcw/oZRCOl/9TTNpJcdgtRLywxHs81VMtylxmUrVWndZ5MYuRoUqI4CZLwIWoYL097+LYieOQ7dSpAUIcDiBAcI8OoQqnaVWzSBsdpwhEADRr+jM5u3OHNm9d48/Yr3N7dAAC+f/wJ//d//Wf85bvv8eROsgMG+/0O+/0O7968AgCMSkERQZlUVkBZr+uodahOMIyL6hH3h6ll+RU4JVfh4PR6bmzOFiobXoD3zhRkCNT2aPde47MXn4XtMNAGG2ywwQYbbLDBBleBzqXzzMLvmeB0eWdkKO3qz+RBJWG5YhWY8itbsiSK40z4azDPBn38uBvtTmnYPS8DrKfTt82gRhCR3QuTFFSpT7lKwNdBcPO3ECWezi4vZx/j+I3RjdX1kq4FsCT/1ZYmF48jOfVy54SdxX7JfZrxuOGWv2evUe7lTL1J5UGJ1KsVe5dKb5LsGSq2cFygrc7l2wRXgupzet5L4LZrJCFnkdfrIe3xyjNbM9LsRfqlS+7t+13lRhZpjyK8d7Nn5ZHzzDkq4c9kcLFZyqTB1e0NBkXQ2re3p8VAOc+YGoCBBoyK8GI0Tv4qJNL4+PEnfPvtH/Hxw6Mr3OD29oC7mwPevLoFYF8fIle4dpfA+5U/bezu1kC0u+dTuWV5T1PZRz38IYPnFBOvnUdOTsTx7iclKjL1as7ZnU/U4ZxlXlkOD5ynkvdKlinLncK08OWzzqXzmSy7jGu6GPgcWIw92z9qQvdcXvFXQRCmkqDyLxsAgCGC0bOROQyDCzc4YcRfpiM++ALUiN004U4bfLWz6UY1AHqyJ/uiQd8UEFWYOz9nvuRXz7JXbnxm+rxge3F/USkMlvLjUmXebUgmc7LPaKExdr4V/lHYQiNzGf2dE5tOHJb2HgUv7c/Mw2tbAExpdHZWwcvEIpBd9pzLPhcuM4k6D8f6MtdCTeaca7jGxmXN2DDFuJINSnnpnD9x3pzN5zMHBmek9/z2qiW8nIUkUqDiKIjJIgDqcAtFCobsE5SK5jrHupkUQFDAbgTZI+U4vRzxcppgjhpfOaNyv9tjPw7OuHRG5aShtcFJ6/DakDbuwJIzbGddYQ9HKaWSsLnvIl19iclihM9Q2XDx85qxoejMyfkHwO7l9I6WtMwli9meIK7Xl+Jpw+KXgezP/Hf4ugBJKyGhwYA63uC8irG8AKVxdJrAUCZctTAMA4zzXv7wfMQfifBBEbRLfHN/j5v7A378+CMeHk4AgG+Uwng6QU9TOpgq/VMzHn1Q3QPpfgnSqJqXUqPTCsZZONeacvZo1hTMgs6g/klJt5IPTf9lxsUF7ZoGSEbpMkM17Cw2fbRzpaaT4NS4LFll9obGcV7hx7xV82imP5OZxmI4x4Bcu29Y3KP2xSE3LCWZcz7++t5lU3o3uwzLZQYoe2DNmKJfpWon/GoDmvhZPNl3TKodc4XZ42idQ9T+AFNU3kT/RkY9wZ5Qd9bIOCrcGIPj6RQuV/feSxM9YWmMwaQNtDFh36fJ8Mf6RRkApKK9md7QrBuZ7GQy500+2OW3rZiwr8mMTV+QKdscBOeMStNbHRilJm+UxhOOpUajs5+8KPbyMaV0MXS+dZ4Owh5fx2c3PuPyljpjgEDwlxGx6VKNIoI2Bn99sJue/80YPI0DpsnP5YCBCLu7e3z48AE/vrwHYJcPvqEBmDQGd9pvcIMJaNeNfVqUlU350lKWofjTnz4VzjzFqTKvKYg4Tx3n4rS9hukXNjaXQeqVXLrUXvo0ezO7AesRNLOFJYAobZ5ZWvaXjM+ZRzmFLNqZtcg87dlG5PK8a+QwX53Pxb8lF3kP4pfZwtGzfYSfsJTxHvoNUHaCI630RHzrzAXG2d42NvOxG0YUGdbgQZYeBhj2+9TQ9EM8sgT9pzYm/A/ALnE77+OkrZdTax1doRQZrGTr6dtN+zY0BoY0aHK1UcBICvF2ArLuVBAEA7Pa6bOcSdsIKJomymGyHxSF5pxfOOxZIzbW2yYyNuv5ZCPJTSW87do0GvrMzxVL5yhm+11wLYUrCGDjtOSq0tbmW1UWMr2pQTTg4zThX93dYE/jCHM84eV4BDkv5+MHhftX93h3/xp//vMPAIDvMeH1QLhXCkrNs7Z6X0UzpDKo6pGsK/FW+tL4zMdE3YlkpVbgzSX8uMhI7DVMu6T3z9DoLL06HvqbNBV3afjngdLMzEuXjAFujyenRKvMGP28rjF4vtdyRZ+Itsml+3eNh+CaUKMn3j/cMhzleADCxGcuJeMwuYWIUl0tGZpzAh6NkMDezZktcUU/Y94fdjtgGERTxoM1MJEsfw9QgCJogzmMFPxpBBPhMYagjU6vTAr0zyUpraEVAVqHsw+kSPRkExfI1qToMKFtC5MwItG3uIkM1fk55nLqlRqSzMp8WjLNns/ZU+kKSuidjcxyAp6t+hhgyT7N7dT5BhtssMEGG2ywwQZXgVVPUBKtm7mf5dWRp3FFCGtn93qx1qZfAYUHD9o+gaBG/Pn5GUd3GGhQhE8PT9CTxuBIUuoJP/33P9j7wdys7OPDMz7d7/Buv4NK5n2VmhjmZ5SYhESSp3O9l3Oms3Uicy6H8dYu6LdeL0+vx7Kbr5ekvTpEXFhMl8/BuYKGc8pPXJomWlbnZuSxJ4nzcPbLO443zn+tqjP/Uj5KPJNn8B7r4bwEL+c4omVJytjibB6NyzPs4YpSQrPksVU3jgdbnk6Ad5x5GVjIsgp/UIdHs8AodFuSKv405JbQvWYwTH3IejPHMdJCPk+0ggLb5trts4wuXYExFOIAgJSxXjGavZAmlI+wpUyb2Nc811/DHZCND8mGPZpSG7TaqdSO8ihY4K2X2I4Av9EzbF4wmF2akYGVezlFTs4jApnzMquB51Gmpp1VWnQYiJKgSwmqBY3fFUGY2Y5Lng40MxBO44BHt0H4iQYclYKO3llVAEYYDNH/ADAYYIDB6OIBQBkD82SXvOellXrVgmGlCMMw4kUb/DRNMG53tDGEYdxhv1dQbulcn06AfrKGp7HlnSaNBzOBhgOUmULetJUyYiiV4DPfzZxaLIqyiqZcCveJ+4zPiCPm9fCilCQehuXNlM5ew69tSNo/F0i3wBiOcV5GuUoFRL3MKt0acEJ0ubE5l9/5LGu1fBteLo1JYREdHKpO+dOUi5181G1wLjT61i69t8u9hKFUxFrPAAAgAElEQVTJFBKAf4RiGZ98DpgVdEpwJFWbe4frfCRvKeoxNF34/MnjkiL5YZbKDAKIFGgcwyXsmZqZ88EahuF+dVh9aA1PE3SjMWbe8xnLQ0ZWhWuNUoPF0hTv0bSEtg1NJj4xuURLM41g80SZpZeXgk4WjEre+GQQcTi7I3K5ucBwxsrDQPGPVeKF4s8VCpcJCM1PBIKCmWRjc3Kv6zyNA74bD3gYRpwCnpiZ53r7QUxRaZaXDZQx2Dlu3xvgdqdxN51w63COxkA/PjOkO/wu76BGaACn0wRNdu8JAECNGG9u3KByMzhtME0TtCJoZyRjIGiy94WRLvtH4J+iXZOcbgO4yTMVYQyPuLR143M2UL1ynWfzPOSb3m25LcF8IYOzha/DkFhtRAhZpEM7y5RwptS9Iu/OK03B10B0Gx1rZM+8yWkv+fAGF8eHSRQV4efs0Wzw29J9lev2eq7oo2zsrcbTDaWQ8gp1fTUiBS+eOF+mTLuLZWUkz7PFU6oV2ZEaUbYgzqOZYKhUryZ/55tSKBiE8VjVBsAwzN5FQyCqr27FB3pI68T41MZ6ROP6x/vzvRln91+6Ro6MTf+phiG8tV7b398S0aGquQeQTVU6CmODMTEdI8aOp1aUYsnYKPLgAsKBpJW8zOBK26ZvhrfsCUqOzqUHZ7IeXFx1hgPiJvSDzbvc07yE42GHPznD7Mdxh6M7eZbQlBFlor/e3Q7M7TIRBUP1kYD3sJuPvfF5mDTuxj3uoIPxuTMG0+MTYAzI35dpAD2doKcT9krh0UTGsqJkeQFKwegJ0zRh5zyf+qRxGBQGoshgdgJnptrVhWMQJsxdv5T3E8+2nUZlUlTJW+k9ZwxQmeZSnqReXCKeVjmdxmxqZNbS59efFKSw2esGZDwW4hk3KnIlNVT58KUgGbCS1yhNky+X9xqZ/NK5QGGxdWO5POzzbrrELXSCYSGX3Zm2WXD851zjLOM5q3XL4lYXY6UXf7L2CxmgDJTXZEOgx4fHHk2O9opEWVIdM5tHsYPH/9BG43g6YQIhqDCKxlU+pA3CSXG4P1rZiFSvZ/1u7GqjifWda7PAN6E9zIwnphmp8coBFzPX2//itOH8QekHopDIZjOhgoUhaSB0fGlyxqkkCRqnjJqzmidOF6jvuEYS2A4DbbDBBhtssMEGG2xwJbiIRxPonBBFCC7hyQwQmfFEyr42QHYqRc7bdxoUPo4D/qSBT86DqGlgvVfJRa9Rsf7OK4pnAn65IvasEaDVgGeH42UEPrjlADpZ3+cdgK9fj3h7PAGP9r7MyUzQ04TjyzMGrcNzk1Aj9HGK3PRuhuD2kQ5uKUAbjTfDYF9kUH52qFMvi5/Fw+3oSKYv0f1o0fSG7XZksx735Je8ZDk3ZNqV8yzWt9+8XMT3d/7iQ/y3B1ppWx6k1vJVG3fdyzT/6anT0pHkZ/ZZSIenksKSTi39Gpp4mA8QpChT7vBeSc9H/pubp6cYZm9m6sWS9rWxoQm/2lREuUeiAZkXqiyjTYeIeoE3tN+L3oPjHB6IvVOud2TXzEr8pmSRKlzD0+m9glzPG8FjL+3kyz2aPoxNWaXHpmDGC2DlvEG4SD0smxsTdMfpNOF4PNoDOB6fXwcXXKkU0Uquawh2X+VMT3r4M2zvifEYd0KDfHERL5ms7ciVUWsSAUj4NXsx0z3v/iNnNYqXlij3cpYrN7nsy+Mo836GsGoFcxmZpueG3tI7ls8wNIn7U8OyIK1P1FmTKK1S1lgyCqBhxPN+BwD4Vhv8aIDnYYQi/9YpolZMDSzbV1EHOLc2RcaUz58srTlayPr0LS4fpxT0YJv8o57w+PyEGyLsvUGpgafnZ3x8/wHT8xOOr7+y2W5HTJO9RUwN8zutAxEGNeB0fAFg94LeGbtPxQTjMyIr+jD5oGtCuhxqCOUmaFOml++Rk09eVic24A3NZRMeWaknOJfmbcTZP7Vyo4RXgxK/NyA9yMvqvo1NxEeXpa4sjykgHpbgWywXhPNvflN7uoxallnfA0zFd96VvdslxLSczZFnFOnrS8eXsYAfG+NqOWRjmsp+KUIW8OMiO9OnZRXsPHEJuImPa69+1ibZdYOBMzTFMnkMaVGYDcn422gTzg+EeINgaGo92bfHd7twgMce+BZ0jrcyk0mlrYuKdIFd9k51yez80XO6UIUorbGvD6V5y2qfCzPOGak30Nmi8nSIjMXIYEriQmK/VzbC7QzPFBd18hcP5RYOXx71rpwvNTQjwb/UO7nYm1mVrCmYmUb/moAZBnwcB/zxZE9ffxxGTGoA0XzxT6pfOYNnjiNvZCLMgUJekUzPJ34QDoTBGbkwI56fH/H90wN+baxReJxOeHl5wcdPD3j68AHDp0cAwOPXb6Fu77A/7GdPLQCQxul4xOnJekRfHw1wcw99cwin05UuZ1E5zcmzVoKAK64NZmQeUcvwqBmfmVHvEbLAGJoREU22qaVZa4SuNUB74pn0l/PueIQISNv9yCvUeFxdiqpw0nSVRZszKa+ol87OY+g+DFQYAKXgTvsh1YiUIxBsjsw0czRxZfI0LjY0C6V/TahRl8+oU/8Bj4vj9yWDK1LnBQ9JE+lUBs5xkrE60zJfus23c2xoIkjsBUo0tmEiT6WOnnz0Rmbw4ptk5IcSiQjmcIvJOTzUaSr1hTVVnPEYyXQz0+49miAT8A4q6nVjD6tqp0M1DDQ8TTQ3vDHWMdOjHy4MVlenpRYrh4ibJzUgOTvFx9P8I0TPXkwkhmcwOudgdkZukhXQOL6UU71t2WdoqtDtUWCP4UjFZ38nMwpBSklA8n7pQPhRA9+eJjwod9CGFOIGCv86N7MK9FEhcL2nqZ92kxJLACnljFwb8fTpIx4/fsTj8QS9OwAAFA0Y93vQOEATYf/sTqr/6U/44bDHp7evYdxpcugJejrh+dNH7D/YJyi/fvM3OL59g5OesHeeUxpU5AiI6HLLezCp4AoCJOet/DsXgo6bexQ2J8pj27IlImcnJpVCtyVI1hqEMX+wNF0ep5weSeNc2sBbB1EtONqKH10RQtqIOZ1rffYYpRZYPmcpX73I2545DAS5f886dR5KTI2RWNEHCsggPoZrYGA0YGKl78pXSkE5eTgOo2DcxkRzsZ0DOflcUHcu6Vn8yxmhJijZNbi5CVfvZDr3IqWGbG5c5uFxntzwTMNS2lIPXiEoGOMm8Bpm2W8NSs0bmglfIjE045KGYcRwd4+Xu3sAwOn9e+zc2JurYWWGUgSlKa6gW5lUUWO7ZymJAm/bvnBL4t5jaAz8UrHBPB6NsVcPpsY4Cl3PA5OiminuVwnjPOhkozM1KpP8MW/EciM3Ph3+EBbLPmf7hBauGpVcSEGWCNthoA022GCDDTbYYIMNrgLLls7t3N4FZmn4nJxTcxEUTrQ4Lp7wO5ekAeHDSeOPxuBp3EH7O7PctNYkSw92FmX3WgY3mZ9HlCUXFaCoTeI5CMVBACkYY/D0+BGf3n+wYXrCoA0GAobBz7oG3N3e45tvvsHusMNfv7dvmOvnF7z58Akf/vpXfDrZ/Zgv0wlmOmI/AG/vXgEAXt8dMO4HqEGFu8LsrIWbZeczGDc7pNQFYFdr3NEhxsuZOEDj2Xjh42Dc9gLEHks+fv3See9euyVxtTJb+YDGuKC2xzPwa5Zs+Wrz3MEZG6yGxJ9CEj4xonBJxiwr3h9qSs9m4Ql15cZ7NxmK+YrElC/0aHKvXuU5CJSls94trSc8H+0qx+PLJzydHvCin3AyJ4dbg4iwV3vc7+z+7te3b7EfDrjZ34g0lST3ezMpD+gFLnmFDdaBRRjLprT5M35fWXbCQ4WMk67Qmsv3eXPa8qVzW5Z0WA1JR4bxmyZwf6Ky4iVy79F03kwdeTbn8k3yN6VtDlNKYX97i6c37wAAL09PwPMzdu7SdN8OXk2qxLSwS9yGMOsxGOvNVBT2bSqCXeY19qCtr2HMRr4sDeO2e0XXG/GtyLRXMyGbj98uwaWO+mVOnmNDEhXvVzZMuiieMu9mCPPezmSV0yTeUpts9n76iswO877GWWFo+kD2Mw0R0+TGgVBwS9N5joryT1rjx9OED4qgJw3lnLb2CassMRUf7qdl1yQ0GgShPZTbQ5KuBwRu98aWnk54+PAex6dnYJpcETbRftjh9sbervn0/IRxVDjsd7i7vcXX774GAHz89AkfHx7w1eMjTnpWKoMi3B0OeHtvlcrX797i9atX2O12TDuW1cylazhB64xLm8UkxiZ8VI4zWr81oOIBA37CUJtGQGRibQwGZU/cp5OGtkxYZUw2l+Nrez7rcUCF5g4jM0mcwNJL10tcydKjRXkWeIVfoFmMN2au9NR5wl3B4LTh8gGhepjNzfeD3bIzyxWJhYzhb65lCrJ3D0Z4tDH4+PQBPzx8h59OdvL5ND1g0kc3XrNlNRAU7Jahm4+3+PrwS/zi/ht8/foXDP0MAb2QjLfF2ljE+f+x9y5NkiRHmtinZu4RkY/Kqq6q7kYDmAGwI0LOzi55olBkrzzxyAt/KoW8cK8U4WFFuDyscGdkXj3AdqO765mVGRHubsqDvdRe7h6ZWQ2QEgp0Zbi5vd1M7VM1NbXPQYtm36fniLSycbsW/hfbNaC2Tb4UJsMlEc3YaCIFoUWssEUeMq8CSvmc7JLPgMycyRARdhcX4K++AgB8MCP2330HM47ovfJHubzYuO1vBxY5HvqR5gL+AGxwxuJN+hggv86HrXM43uvWYAY0CNR3QklRfsVEKjmB5ue2Ly8XGsp4sfi6zXs+34LnmCyu5FcBdLIEtR5kxknsn5MDRm4MWgslv/5LG852qyU9Gmg2GU1VGKgGzhQMJIauwQrBvfajRAxIZuBuYhwNAzQEScfaLRFIKagw0AlM/lpHYUXgJCdp96mE5jOedLb/pIuI/W0mxuROg+9vP2IaRrCJE9drLZSiUJ9OawAa/Yaw3W5weWEB6MsXLzAYAzOZMPwYdqJ1SqN3Nx31yreFgvuJ/NROAUcqYNMaBMcUxBFsuhaX4BPzRFkcfxdwLLeRqEL7w4DtjrDRXWq3NAs054HAg8HiI9I+yjH8IsUefzjgjDn5Hw/No5ZfDo8K7Q3S7+k17hE0RJCZHqIolg+RWQ0goB4mVPhtGUQIOslz5AnJwpwj3aLouJh7ofLH2+/w3f0f8On4EUxjyMbKuGLQhy6MdnWfzBF397d4N7zFp+Nf4C9f/yZGrs6XB463kNdnQoonUSrA1oUHCegkb4jjI9V2yzAO+dp08ZnE7pHXBrW1l3m5wNxhIF9+q48tMPP19HMlG3vuoI33o84uU3sNpK97yqkXKWcK3l5SKVx6zylK441hHH743l6fDKDz54ME2LStYygvRApQSJlG0y7HbtAHxSfZtH6t9kATgFYa6mIXYUgVabZoPpKAdcU7rsTybSoFixg38t26pjPGEmtwhbmGPdpMC2rPo0Q+FUFnXJvDoSOxXOf3qK+hE0+dO+Pc1gJY4tBWYKsk8ZsrYyBlZUnHuVBFbhKx0yL4O7/JwBA5LaTLRyn7rHQAe0prN2YVSHmXCQpMFqxSuEkITjr097JGg2ljDKbjAcf7OwCAGSY7mRPp0NhJr6Ivz+1mC2MmTMaAOgWtvYuiDlv2C5YfVOTnUrLOEDyTCZ0UJ1azx9PRabcjQk0R7loIgCU+y0MY7MoT3jibZF0jsBitq2c87u4HTJqw7foUaLo/Tw8K5/vws2k0RfH2z5r+KefEk9H6TzSbRZS6HbW0kYgIQS6cJMehAJs+nUdcNh6JqucAAUl5RVhS88bIsPt3xfhgpphpDU82sjXGtnMYB3z/8fcAgG9v/wlHcw9Sse2kCNAqqXBcaORcBRgTbvkt/nA/Qf1kX/zF698uz5WZdreiVvn+z0prBmlrHDiTnyS8FGLSg2cZDxTblKlrmRTYliBDgk73ji2fl5Rq+TISi0HwjFJVzxOUW6+MAeCvLE6ixjkZrgQO8y+ObfblJoDWv+Cw9b27vsbLX/8l3rLB8NOPNu0woGOGIqATY9kObQXjrqH0WZIDmSqcOrcFKcEZlfKd6PperC/6agfaXUUfoIpRzoFG564czrVz2IEDpTivyDjlYWkO87tLch3hFHCKuAkoDT9j33k8ZbWaHvTDCU3RpzH72wbX7tLgfBjoTGc605nOdKYznelMn4lWaTRV8GXldGa5FJCB+CWfgWso2PnNq6cgJS8AVrohcltHFDSNXjmSbDXBioekopjo7S6tOyIvHjpNqNt2J+E0vdjaMAZmHDAe9mDnwzNIGUAiCRIb205XjtYKzAodW8P/0dlzKmGXItXkWRCC1JQ00Ws+KZF7RI3TX+4fFnlyCIsaGvYSN2XxMg2TaHKxhZv2XqkLaUlL4zSh44qrCp96TvtYG79r3s1qH2cM9F3apWF/klucWU2U1wBWq7FAeSJK81mlAZvJPWgpi5qV8cJ2ZKlNmds6z7VMvk1eu5nabaJIVw9rf9/UjEYWGXcfkgihWvGd9i7YAByHEYfDAcfxiG9v/xmAtccEjNsStBkYIL1VRLQ1raANn3jCHX/AHw9WS7p9v8PXL76pVq3R0tm3PkpLn/PzUH3BKLn0TNqMsebaxzjeECLK52IcZX2SbMd7DRGQlNFKG3lxkwslPNYqGuOugNgggNcxKRXzZLehbti4y8azMRwzjVvakrmHtY0A4sR0mEjh4voZ+FdWqwkA408/AcOADdwap71Gk6CVAgt3gDYPuw4mvJKs/aUxXgNn62Emu4PJV9b8rPviOXZffInti1dxo4FNxDbrJkFGM9pLQUE3mFTba6zL1IGHJRlQTOceOYkU8yh2FJMJEPPJD2eGlIR4gAgI2kyp8Qza/5U6zZO2zsNiK/uXih/tb1WJmwLFdewg5pJuVdg/Vr1uzAQiLWxUrLNZSuLafwxSD/cMJFvsfr+CiNx2u7fxVE6dr6B0NEYehyPMFL3pZ1DO/eQUcSH2MxGgVIfO+cJkZkzutoV0N64EBqSsP864deLCs4/C6SjOwiXD4+Sv/x3Bp4xXhtfCaoxZ8DCx7V8fD4Y5CAJ1ABA/8EMA5SyveYwtJ1YASjGOH0PrcWsFDKEUDh5Lccu7zJDTfwQobB98qJTg/uZgUgLvbDtdLvozYQ0jPwBWCGe5ggf7ZiGFubooUsE7BgAYY3B79wk/vbVbiW/v3mN/3GOaRmt+4+PuAFbi5KxrLxlK54Aff1IAFnNoNCM+jG8AAH+83WK3vcCLyy+S9qz/3u2Iy3m0IqxbtE7PNy8jt9vMwySotM/59ngVfAJS8m4IL2lNYq3teAlhYQylwvj81rngG75syZMq888KbgQiA++imQzBwIDZ2Jvl4hKaox9E6BPnS616BAaUwuXNDfDr3wAA3oEx/fAjJjPZMxBJf9gfyuep0oMyCRmAJxs2ATDXF+i//hrPvvwldlfWI8vFxQ660yDdBRjmbxpqDZsaCGw9pgmzPq6u1mIN4vz9HKiUOIvTogSYXD474XhEATazYmrwzH+IEwz2T7bRZOLZjyMr3PjRipn9LjvBsYP4LFw9yAmq7UvXEWkGBgzyNhrFyEacrAxhiEzxP47OYcEGbAgTAJ68OyGGmabkI3hGYk91pcDNSmnC2bxsdOAZ/sBQBgAZuexSpwqolHZuebgM8xqkCA4jA225vZBgNQWZ82EE2PHltTam3jZbn2yRTegRQFO8mFlKlxfTp9JiysXj0VTpT6bqCEqrVgo09bzaj9Jxch4rLiAS6JYXCcQdhPpSVqtEOmZTDW2p/RRhgbtj9hv4ORvmU9DspAPMapv8/LZ87NPdJ/zdH/4O72/fA4ATJD2y4AAWSG1A3QRMhKk/uDDYHRbRbx5kynLsDgOHfA+jTf+D+Q6791fY9jtcbi6yPpTtqza7QSeATy5HUCG8Iq41ARQs1ak2BvO5HoaQAEsCZOaHgxIb4FCLNB4DyQ5cetgxPUwWhWzZGSRNfRthNrh96rwMSe+5lnw+B0MKftuMyVgcYcitcb7tbj0tpn8+J8X4DyDVplVa4fLmhQ379W/xnoDpx5/sDpVQ1gTw5ceCXy+ZQ30mZoydBt9cY/PqSwDAzauvcHHzHLvLC/T9Bp07KKsUYZqMXVNc25Xc3az0aWXIrqMiYQYc87zkblli95iCSsmS/MCm+JBpKGOZAThmDaiDyjKi13SKkd9aAZp08hWUcyAzYsoTuFNlfZB8ILtdKY3bABmb5BagNN80wEuh+Rdw7Q3XBZHl7MrGjbcQiKymKf52EyXWl926EYEvOdBJopywrR8mp2xnOpn9dyiAJsuEjXaLalVP6DYW83zrW1a23No8HWj6H74c1bAgjrcQLQG+GUBJsi9byVdCvCcDleshZcxuBTsMC3cl92r/SAGiTEAzec08IjmkVoklteD5idn4LLYnlxyyNikHGLK9YlEIvGlm61ypdK4HUoAKq6QvLpBh4Pb+Hm9u34PNEKrFJsbnzm1l6iPgBTC58LIBs6oOgWR3kQhQCH4SAeBg9vjj/g+4+fQSV9vLeuNiDu2QB/W/ZHF+/ntALOJE6RN2TNiXOgPY7arWj2Y4kaMUMNgByWw8JKYZAJBoNV1rhF9CG0U85xqu4tCH5FP+nQ9LF0ZutdsHy/WUxN+8c7K5BQKU38pn30/G9YmvkxEbcdnCvWIZsasfw+9WX948B6l/hQ9dj+OPP4DcwV1NZLWUxsRSDNvb/XY70IvnAICL11/j8sUX2F5eot9Yl35d10N3HbTKDsp53qHEYaIglK0DTa2hvpg2QXScBhVxnXDAJdyz/86BSmQHbG3oKrDZCptBlE8PNFW0Y5gb5+FF+mc2ap3sjHrYOkLYeftKwbik8JKqQXMGF4FTYBDKJSZlJaoANCOzidPObt1zXnE/0P1A8cxFoKlwms8tKMWpegkiQ7mUfnGvuRHNKbYC0QCZjqmUoIhF+Tjpo3gNaWlH1wakPntTZieqlNpozlZtEcDNAFLxvpn/yfHW1MlHO3UGtBffek5xoRBLD/y8MHK8w3plkMkmnuz8QYwXtfXOSwOAXumQbyLBI357CZ5r7lm8QjPAB3f/ccuP5hLJ0Z+aCqSnj+eMxYNGM8uZKLoYsvn7Polt1H0P1WmYSTibMcYBW4LprRsYaJMix1B7u/hHjQkhusD2cw1IB0DkVJ+mj3hz90e8vLH+enfdLuQTG1ht9oMoAZF+MU0C/QeO44fDGIjjy4xTYJPBebe3nwclfSxxkP9lxxFB+mkJdoUApH1v5F+i5tWtczdqhClX6qdQ8jnJB/P+kd8tBcOuijPCdfzu/isWp9bDj2zEJvkqa7tJsNvo5DyqGASeEHfmIPpYzEEGkK1f5OMHTT3h4voa+NVvcLu7wuGnPwIA9H4P8ARsFLpLKwRtvvgCly9f4/LmObYurN/0UEo7PhPBI1yVWO6IEYXt99DOORuERUq5ZRnayDKzHW9GFjauLcCZ21jacJs2hTMZ2BThSQaUxpfRpI2mZ5x2Gq1jEOdT52c605nOdKYznelMZ/osdNphoKDRrEDpesL1AvFqhdl82QTCVlnpxUyZxJjlL31JBf1ZIZ35MA7aTCkUxP6I5RMIhpCeCg0KySjNEntlqZRaozSYhAdJMFXh+VNieUHSkNj/KO3TsrykVk/k39aqZXlQK9w/p18g2oMCiQ2oi9WSgpRy219y6zxtXJJPQbPjMnbC7Dh8wm31GPV09VG6hd6YF1XJWKaD/UY+HrPbJnNaJFGvYRztCebjJwDAx8Nb7Kc7DNOAKfiStR4fetrgmbsK8cXVa1xsLtCrnOUQooY716nGooO2J5H0nc5GaOqkpj7dFqfkXeiQylWV0eNFTNvcOnc3A8mdDb+96H3zmsotKwBju91gs93AsI3H0yRsNA0O3Rji+s6Ihz1UUFD6fE3QXzGS3ZjQ2DgGFBGmacT74R1G50CbOsLqwbpANVvcVKOZRvJbm7Yitj8mZhzHCRPb7fLOH8KkqPHzumBjGGSmLF97IUanu6D59PyRMw/UxPl4SnlTrGf71Lk0K8u1mflhoLkt9dg/qeY0aJJmbDQTduD+rvmklKxhcJpk109haSQYNlCGxfroVJrFlm02rxL25Ecpg7TG5fU1Ntst9s+t7ebx/hM0G1xcXODqxm6T766v0W+39npliuOg1jr2jCNZVutMveSJM71VaUOey6K+UnwgcriiyZfDKe96Pdv+qoVGMtNSJtVvaC8rqs+06kXcZVoJNIV7o8QOL9ag+nkKg+O1dEILKmk3SkOBYEQeMreH5lxLGOGgZySE/ICNB48EyWgAsHM2m83HuIKIgl1Y6PfgUDUDoyKuDJIM1JdU5iXCs/yDvZQPywBIMBbO+IsPL25PCv0hOGLaELQgmlYquLFaBoW0zGyXwOBTg8pTBLAk2VKqFhrK36Yrflgysq1vb8Pkt4ANM26Pt/inD3+Lt4efAACDOcZvSzFT/927vWUxz+6/wG+e/Su8vvkKHXUxf7gFnqNAE8CtAB8Fk/R/OGW3fvEJ9qDBhQyLdz6uBKSiv3IAWqImUZ47lJb0rFt8YZI4/retBWGjNbpOY3BAzxDDsHFAXRzCIHb24UZ8LLeWJs7ixZz3/xrxW5hBGBd7P93hONkDQhNfoWvYt7cXxErMDHDk3cdi0EXhwi53zNGW9HYY8cNgsIcGEaNzy1CvgB5ARxyEUQVAgaFB0A5cawA0jOh1TLvZbNwaHhdyP8wi2HQ1ahwWa22dy7YmNvT51jvS7xb6VpYDIN4Ik03g1QJpfhhIZl4hOe8BEJxHBXlIyLjZHYTK+F99/qblSlMvaT7Rb7fYbDcu2kt0WmGz3QTbS627Nv/j7Getn/JlskmV/lpMmDKP1fjC8SOS/VHNt5WjFHrqdUq32CWf4llQKXNpgVxk2GWOHuDeqJH5isXcRXswyQXQ5xXsu2/cv4wAACAASURBVEQ9eqWgCXC3gssc6vVKpGmORchMk+esXsg+FWWggLn4YsF3ZrnCiUjiR7I4ipcRSUZDcREmgau0iQxtjAnDApVIiuwX6YxBeJAQ7Knse++VINr1WcBv78/lkH6cJkzjEK8T0wpmmtB1G2hnB7ifJlyhJKX8FaGxU0Wr5sHnE4HKtdrHh9pYPkC5eXIZ/icxw7BkdPGQnLS9HM2IP7z/Ft/d/iHYbRljwnjPZQaGwdEZ+L8df8D0foTBhK+e/QKAc/eTLOxpo5Mp4z9rBizj4pWOg2DfKUBY3RZUzikPGjwATQF3jZS/61x2Kdt8aguAzEcrDa00jhz9FxrjbwwTwNEjsKSMCHiSmmU8snRLFsEVMTCMx6DRTK8rLGoucZH4U6DIIl1roUy1mICZJkyGcXTR/8t+wvvB7k5xVj9rn5kVzAwiA+0AfkfArtd4MY34YuuWuuOAvu8SwCOrGteUWPcUM7nxIUCpBKSpLWcEnAkodVmHcVwNc2UBkIB4ZhnKXvjG1BfmFm+Udfe80PczG3sglokR3FOzPOMQBZpQ4VrJGX+2drXxkI5SGlpbm1vvNjBbkH0tq9+wtgCsBn8h9kMZ8BI4bCeR62b63mkjG4CyfaNQyLXqMxNZeNB55oy3CEtir6LTgWYLUNbwkXxa8d1qkCt2XgQ7VQ1GyIPQKQXt4klY1hw+2QSl+osG5bmGmlfLEVPZTeL2IlbUsTFvAzjxk12ESQaQbzGKESb+ZH1MYgJUJkSoO3Owr7cSrn3vAabVUnhwwmAzgQi4d/fBf7w94NPRbjFury283O+P+Le/+KposlK+30TlW53WGq9LgFTEWw/6TombpTwxYcRKc+kSRJD/TDNjOTb9AmIK5nV79wmHwwHknCvrzoGAJLtyjE3ThDv6iD/efo8Xl/bwyUXv3OrIgwVZvfJtchsmZ5GP6+cAJ7wg5xVtd17+mUMcqoC1nKzHCMkxRPnCbVlyfZ/Lk0gFX7miycFmhMJluCrwC1l3dgKCEl8uP9kfp60DVlGWAJgxscFkoseMVQPYzxsBtkKmFT5V3LktubFLboxzC6c7fDhYPvF+BEbW4TR0TG1B/CTa44caswNErvF3B4PxErixijFoDUyTEdcYNpsnRHW5ne7CChMOP3ZELRMA4OPYFAGEhlftsCQtY+YbpYuwx5mNGDMk0YdYDxVBs9udEuNYCjA+TDRc1IcK7X7+Xx6e7pqlvzjL+2lpPVA8DcTOUzlXwptHlRTGQgEWkRzyScBmHvYQEO3ofBjoTGc605nOdKYznelMn4UedjNQM2L155qXCUkTj9SYnwvpRWos7V9ro9MBCQqfx+C5PGQrkG4FijLDtvA6FXs9lpPWCFG65kZ+0fAnfS+1kkB961yESTkw3x63f4QWM9Ma5VvnhXbZfTDDjEncYOS3XwmMyW2dGzPi7njA79+8w7ef7KGS22nEZKzN1fZ2a+MdTVWjqZU7FJFtc7e/xhrt5Zz2cyYN1imBypQnF+Y+/ymJykaH2ZAoO+N2cQirSdVstzeH4wBvZsmk7dVxUruVqzgdHYY9PpmPGEbrN3LX78J3bE7QRHuWhlX9eyTamDiOWY77iqlIrokq7Kxb1XNal+DuJWjARH+yjWcSzY/lMVrpZGOBhaY+jm4KOwZhzAUmmeh1Q3lln5RzhRnO6bvcnlw3LINiTwTUNXu1xHGrNSi/zARDhJE0PnibYHQgUqH/ZL2C1jwZH+6bhTXDwDBjGABc+iau33WII0D8ItFWYdvuNY91LWbeHzEekrRAHJW2ceHGIR84U/fkQE9YS7Kx0WhnPS/OvivCnIpzXX5LmXu6MhMyTaXL0A9pcxgw7q2tMB+PADNU36Pb2V0PdblttLndrmyb5f/zNK/tnJt387wsZ6cJvnKM97SN8pKeFmgmiZaCU7aXjIkcUCEFnzJdrRhFDmhyqxqVDqPag29vtk07i2781xIft/F9pK2Yf04wpYhYXfwTYAmkJ83FYGHA+4iT4JKRFhbvMJXJyTFxLuNlC7kJW+RldzDs/e0AcBhG/P2Pb/APH9/jMHJIT0RgUri73wMAhA/8hLRSlaVTfLXZASpG4IOYz8PA5UNOlMfSQiYPyqOaaxjK0R7Ljy9KHiPCM8yAsfZZ42DBosGErrN+7KJs4dOI+jIDUJh2U/LdqPhRyE9LLcl3g5ZBaQgTyeK6GZ85e1krn0qH6X6eBXDrRC1nbOnKYYAZWnVi8aBgm2ndZatQTZ+URJ3KWtVAVJz1jHILu1cb9N0mNDOayMhxXivJkWdxwQdlERVZVCeHsBNCLU3GwIDw8ThhP/myCSAt6hEzYFQWVfI8IYI9e2+3AUFnvbFQScwMwTDG4kCK8yUu+r4O6XdJt8N93DjmRQ39wSNRrmDDZbVI2gU/Ba8g93/ZKZl/az8OG5M2Ab/ZWDLjBHM84vDTTzDf/wB8vLUvxtEua10HurISQvfyC2xevYa+vgL1EbakcHaGVkf809Ii26vwruRl/Yg6AlSsphccK2OoBIpO4PO+I8GPFuhk90ahlpTXeKWVRDXSmrTh/LLoh3whs/HIAc20njEXmbreTxSkt1gMxRW4VlsZFLhOBkxFWHlDbMwnZ+KxCrX2xgyklJlk6eqfG/t7g/gUcApgKePKQxghXhy4bHJxITLasLy6+t+NE35/3ONg4mKhtAbIHq4wZoxhFdJaxUNEiwMnA6MnM5qHAUub5vREKfD6ObiiP9xASSO9PRUYMIhuiwynt4VMziVPemuNzD6OSeUwmVbRdtGXJhNRGVTnoc0JXMrftagefKHFExL0Wf8WtU8cmLXoD2/H5q9VnaYJ4zihJ3Ga1oFPKFv7UA9jvw1JoBnQZ6wEoeSkKSATp07Zul+66C+x6TchdgANye1LXMk5ZBl/uHTJ1cCijlHrK5sQ+cTIjLf7A+4Gm3hCD0VsL7XICmdOBwQTrBDk+xAezBqQvPrhhDnZXh/qMXPNeBlmw2s3AwVgGRoY4xbmra1akFg8jOT3bXSyrjdErFxh4bPN+VWoR/zm02TsmnG0QurxzRuM330Pevceik0KaA2DpxE4WKXD8PYNjv/yL+hfv0T/za8AAPrmGbQ7lZ5aZs/QSmCUN/FzERcPSxWcRZp21K0fuKvI5xl3OX1/r0eaq4Bmuofs3dgsiAinAsps3MIZtSfuJpwRMqUzt4A3BFplfJrBsfCH8rA0MH3falDJYbIwC4IT4Zaz/qlfDRDz8i8l/kN7oFWDkwEUtZmhJh5UJGE+nmgPtYAVh60v5Q4+fJomHEHoOg32128qobUNILL+FbVyd7/nao6kpaJ91Vxq9HBQGXOI4+ikUh8BLE9J1RasIpjyIp3VMKez1pjJaVXi+IBf25ObOFDOAWdGcRyfAQBu39jFZbtVuNh06NyVjUqNqBJZAAk5LTJ+EOZTKZqnwlKIV3RFdQItacmTfAWwBKxWjY07FGfiaX3DBgpd4FahVAaMmmA4qvSJ7Ql95Q+6EMOwPUgXcJS8ylY0J1SLU9DS6w1uts/RdX2otz/klbevHJ6E8smPIRYYOAKeNte2NBnG7XHEcdQuxgClJyjWkHedy9LiWPDIPiJ8ZtvniYkTFVXPm5o+hvzLBb625KdhEWwmY1aGowI4RcHprVflkpLUVQ5SUmCYDAfMNXwtMsnz8GtDFsoAm+hgkA1jGgaM794B39sbgMy7t1CHgzMDSRpi138RpBjA3T3Gf/4XTH/8AQCw/eWv0P3ut+Cd3FZn1Pc5a1RdWGdfFzmfwHyL7Lj55pRcsrdzKFO8a4EB9z3XSPQeDa6h82GgM53pTGc605nOdKYzfRZat3UufwSL0TaSXcS4CxGs9FxKzEGCTSTBbDvGb0+xvx94XtWc1ye2NW7/BNsSacgscqVcTHYaZWkPUewusNPOyGpQrj2X2rGWdrOplqm2s6okFfWsCTOJ7aarqHcjE1xSzIja+fc8gkCdhqIextloWt+ZjGkYncsYWD9GFVJKhe3XshFZ3edrFZ8eq8X8GTWYzZSt7LiMMicXSxcXcutuMhPGaUpGu9fQJNvaLUldEfrj/4D/6++sps5fBa7VgMvtAb/4wj7/4uUOfT81h7FsS6FZFy/rW+1pplEqz8NEsoXBIbWZ1p2XSTSa1g2RSUxXiAhd32G32UIpb+gzwjtlJ9bQ7B1Yd1BQ0KxBzmbxwB/sbThETt0Dq9l0Hyc1dxK+Dl24IoWdusSL3RfhMFC0Ka2N55oGU/YBxHfItcml1jmaE8Qww8AgdrkBq5GcvGY3aEkRdjs4jY6oXkfQoCsx1whSM7pCk+RZsODJnAZkB5FEslp4GJNC61z1g0jhXeJ+K0ubpkjXIAUV7esC1dtcDZ1Tn9bKDMnceHO/AavBH25vMf3DP6Lb3wEAusnOcR+vrRl2w9o56Ce39X74538CX+xw9ZvfYpKaupM0hEXtT3u7qqgTxttSuY9pWjXDn4fWbZ0XSKzcvl6TdC5Cbd21LIuTeBDbMvB8TfAWYxjHYcA0TrlH35hpUbcKY7QjO3luXWOVNkdylCy+mEwRu6bLdmJ8m1Sz9G9VtENqxRfGdtpinnkXA5IsBdgM0SoLsuX9af4TCNRt0XU9uLfvFFG4gm/y4HNTH56dVuFAUFHpJuarA9HGmyY93N/lTD1OpJNApnzXnLKVbRG3VWm9CNiF/ng8YOIJihQmYbrB3tY2bJGSkKz89+3wcvyfcYACORMKf5XoZAze34+4vbP2WON4j9/96hKEMRvHcjFBdQ40beFFtGQb1I0XuZhbH4lxFixyOo4LKhJAxclfWTkiQq81Xjx7jnd7i7DffvgJikYADAUNDjcouYWYDO74LQBgMoNlNYqtDadvXPgvchrpGUK5TayetrjWN7jePQNHxI9pmtB1HRIgtNR+iOkX9onJdQcLfhQ5We0EreH0MKE/Ic5eUnftMAxxqjqtg10fvDdxAyKDTinBygWDSJxMLnzldMikwonPkqXqwI0tluMNCDaOyTh1OYpozeVVLhfFuwrsK7qpKiJk4ew/Jsp+qUywvD/thEqzN4zhw3vwp49BwlRwZlCu4fJCj9CeDGHZrK1pzTgwcHuL7TiAOmduUYDymab/bHQ6qqsD2jVCQp0BruFkTw5mBa200Yw/aK7KK1bAUz6+lN78SbdUOIsDM95eMuF4PGKaDOBv7QjZtHtQ2tZRCIlAEwnIbACq5E1lkmY2hQQ3yShpTjVvz19mx0DK+2zaJBFBqjTjq3KVXsQmVW4jHFLLUK/pcIFHArrtFlrrcBKdDcDThE5re+oQgO77asla63B7UHIm7QRGsg4vrneFElM0fzwJNXNrtb/JdNInFieiE8GCgKM7Yb7f31vNXFKTCtrz2m5RoRfT/wR0ypZj/NWMCgQFVhqkCJNTZ337wxGvXkx4fq0iaJDlJGsYF69jdcoDKOkUEDMgn4OLky0pBrLzvY2rQtQUMgyYVCicDUBMuNpe4Hdf/cb20dVzvL//gHE84n7/AbfDewDAwdxhNAOkM3ZSZG9pMdGGj8jK1vZcl5jTiIKDhp1TO1zgmX4GxRTcTXVagcnega6UDunS7z2Dc5DOe18phr/32481CUZjJ+daXxs39mkyBCi3DvMntxnh2hoYKGJsVF3nkEnOSV5NEnOjsNusja0ANssMQomu/GQm1Ww0OfZau2rxu5d7ZrW2JausiyIrl00E8R2rFRD1lJ+MmWGGAdMwBGFCgTERQbv//JD1KgTmeCQuHKZjE9IbEMw02nkRsWksc6npS0TVn09KzSrNAMvizYzSj+WvNWsB195zK/lqWqnRlETJn4VYj4hQRmeCu8NcEHtJ2IZOk8Ewjm77KgLNuL3N2STyC4XoRr9FXm1qXvE5pJwz5/RrKbLXZaaULvbtvOV7McNDuGcgpcsCmb54VS03DahmR04McYd5IhO1rM+INAPsiXKlu6DdgmMQPO1wtXGHI7hx6lwp9F39XaxhWb91dDq4/LOhBU5QA5gAUDus4cGTUios3MM4lKNfHNJI3PS4f18c/0f7riOMkwGZyfrdhLWMsDug9uNrNxYOw4g//HjA82fXgDkst3uOShmqHjaTdh53ZO5eYLcsQbI/OPCisJWoDMZxhBkHbBwPeH31HHQ/4t3dABo5HPIhKCjlhTLxrSqLkd89T2sIgAiaNtjB+iV8Rjfo0GG/3+PZtTu56/JjAJPz/EBQCD4sgxApDwdV5hpQ7qiIwLA7RKl5gdVoRYGn8NuXFcUibihChGnF0AR0SigNajUuMKaEXQ9bXnP2PHeuU47HWA0HG8kDcxuBuOzvmI/ku1QB466wJn+vLXg1aJs/R1+asSqufNluRVaYmPyVq9aswRBgiIIJh1beXZrwzcmwVxkbjus/ATClcPI4SFTPpp0jzT6eUkarpGrZlblfj7cQpwJS2yA2mxEzMkdO58NAZzrTmc50pjOd6Uxn+iz0AI2mJSmwnqwAeqDGyBup+20QYxDu6eTEP90INhOArhDWCim8VNFUKuq0obmqa64dQqSNucRAUna7YCM0c9HhbpYwbJlkpgtLWk9ZlUzTWVdnzjSjpvrMbUnF/mMpB8W/Y9BoIEixpBWU1jAAXj63d52bqa5y0lpbTVuoYaPuDxiYj1VmhuEWJkY+AB9OT6doLbWZXoeSvCVrR9k7X3UgAil7wMBvaROcmykp+XoNHwFQ7panaQJIWW2mv1ubCDTZQ3vWTpBDnm8/DDCGwxaudwuU13+mZUtRqy9XTqkkgUyTOqiOPWoPvxiMbpv6eDzCGMurvA3sOI2YeMLxOEDzBlewbqCIgQPtwQQEfQ7H+ZtoorOWEQAohQ49ttMWl2QdYPfUg43VHmmxq+BqKzI1QYOZuBdye5TJmKzUBy5d4XTG95vQaE7+EFXO44r8/Nu6tkZ+C6U42ZZdnENyaeCoWSziVDRKa/Il16iqtjRbM1j8G2KfwARI9FSk/KOJTKtbsLU1L1f1eX+fqWrYayUBu97RZpu0218WYRyvZJpCOGUH1Oy2udOmh+oy2B1OrNX4ifSaC8Szj4/MLQssdPyVRHNx1mhA0zdcvENjnMzTiUDTr57zFZ6dCw9dLQuOBnGoXG6dTxiGAZiSDfYMEAs2zBGsAhEgJP6rCWn5yQvEhVVWTzotBiz4Er7BCISt0tjp7BOkqFCEnTCGk+T596ovrsmbovjyINLShVQhqusEwxxOlI6k3IUfseOCfY5SGCeOYZVClNtaaRX8cED2ILGpnVOy2tfgwOl5Pi6HmEt+XVyL6TBbB/kAsNluoEgjGSBsgQhnuUTXeO77TxNIKzArsXh4kAln6hIPcUyTFSR15wUKO8dV4UmiNkjWgEyE2rWj+RbMj/UY09XIDdx4PogxHI84HA8WcAPBzkxeyacUYbfdYrvtcX83ooM9dX6FGyjusKc7jORuZKLoKJ9CPQkRxPgwhW7qsDVbXPAO2t+0s1XY7LbYXV5AuT5WCcMS7WGOdtbpm7QD5rZ1ZSeB4o1iLs9pmjBN1jQg9nZrPrL4T2aetp1ht561Et5C1kyckvU2mhPLWf0+A5zz6fMWej68ohFU/Qm/5lVbVct3CXw2/H36OF4hwIahNltYW5koaNq0/pS64xWGoZS7JEJUI718wKX3vnvFOsIiSGC0epsrTSqI/dBer4h4MN6sILs5cFkdO2uAZxKvASyTwGUeOEcP0GjOND6JYan4MI9cy71bDCAajxvObtyYJijjr0RzrIcrhtHiBKAU1pEsZqId8lCQCwynxnNNaNZGDzYpnLhjPN9usdFKTLgQs6T5FXGGcq6ZwcpEis5v/2mXOVsVcaLUayqGYcSnwdp9HY0Jp06jQo1BbNApjckdBiKtAJS2mPm9x67IJ4CJj0KpBYX6FBV7fE2XhwJXf9apFEY8cDTGhFeXF5e42d7g3eENIJ2Ms5FnvSQGDeCRwXaXQQAr9nOHAcCAnRsbnkb0F8ZpPGxmgxlBsKfXwwGX4IA91t/+Eqv5HJde0xUiuEpcW/htvUc3jg+HvbXHlPZkAYlTONgGYmy3Gzx7fg3DE4ajdciuzQY0EbTpMChrszroIyY92jZ6IY2sU3digjI2z27qsJk6dEaBFYN3NvLF9SWePXuGfrOBDnedQwCLDMwLIOC1V/JKu3jYpwSrNjfhP4TioUGvqR6GEYdhgGGd8eJQsbyLXV6xOwF/Sj1+DwVA04xg+lDK+KatEpcDpY1S6+9qfFeELbYi+3zlHVl5pnOVXLPguBkn1xaKzQsOEYig+h6sNcjNC6k5Z8S1miUzL0B/OsZsHsFqOOY3s5bOsYRW/1INbIWx+Ug6EVxWapK8XwafC7BxoT5pH6xr/zqgmfOexYitEGosvCty9FKPAJWGDcxkME1T0Gj6avZwkpIPdve3lcVmDNKHBsCJCsCUnLBO8vSbZRDufgq3TXalO3y926FLbrhhMcFWIstFhhWXXk7Ca3Hns8vDJbhID5JGrYQFmQP2+yM+OQYzEkFpgslON7Kr6eRPJYOByjWUrUXjsVPe3jrzGcFmLAjzH+3EEpb5Srssx0BTISOM1qSve93hm5e/xGHa47vbfwEAGAzu1hpRpkui1QbGqbEVaUxstZbe0wCA6DOVjTN3sbcPXe4oOSncKTkOMhCUBwWOG2tV4Z1NKsZ6S7Vezd2C83EYcDhYUDhNEWSyTGkACD+lSmlsN1u80IROK3z4+BEAcNjfQ5sevdEYRmvGMAwDhsMRTCbwD+/FQhEFzaUC2dtxug67yyu8evkKAPD85jm2u104eOHbjexXm3KemT3nfEZOK6f9IqIANA/HA46TAUMLvqvcWPSjkbPs6zxZAj9F7jDQKVMrq3vz62fNP4V3pu8jhMrzXjyw1qI50FGL2K7c+gqIOvsOV04oNASQUqCuB5wAlbgCkwJbFR+0+Rwzw4iP1Xa9eEpvrBgwktc8VJCpAOI5kDkPMBupl94XBa/ZosdJOO58GOhMZzrTmc50pjOd6UyfhVZunUextASxp8hbLEGzz3K2WJ/CGK/NNOl9wcYkTn6VVui6Dv1gt9qCpGMYpBwIl2V69XcQiGleOqGy9VLoS7OOkjU7TV/nthdebjZ4dXFZ9+9WU/vXwtZQssXzQOn4xHTWVaJNMY4jhuOAw/GAvXtv+t5qUqTTZfcdpGnEukIf2qJ6TvIu7afaGslrWHUJ0dRyPoxqiuul2FHjFKVfRfGwSGcMri+u8bsv/wo3l88BAD/d/xEjH6FUtLuz96Qr9He/w1vnJkfpHoonSD+HdmvdliNv0oGZcHWxtZo2b/qSyMRC8xp4RK7lzGdkQ4W/murjQPrwA+wuyzjY8T5Ntu0muykotiLV0pjJ8qheb3Dz7AbbrbXRvN/vcTjscTwcMU7ORnOaMJkJxsQ70RP3Uo5PdV2H3e4CV1fPcH19jcsLexhou9lCqy74+rTpy5bKA0CR9YmdnqR/KvtFIkhqvH2+cut8YAWOPq/cgUE3pjirmZ8vmV1ozuM0We1w0Nqme+3zJNorHYfP6bareXBjxCUa0dTrZewryj7MDD9K1gjOwhfqWc/sgeR20YjCyV3fDNJRY22ceRsh26VqNJF9rYKbLYB1h//w4QP4va1vR4Rtp3HVd3jW97je2Dm0oWjqU7Swpb5L6tHu91gb/+8Tbok9ES1pO+Pj3Hd/+Jg4zUYzsUd6ukWxLMeBM7lN7kGlMWGbnE286iowVt1hs92g3x/cvCwZUesJxTtKf88B0MAMoml+9CJrG6UAXLpT5l9fXGKrFaxtGqd5VGvzwP7O8oxfrw07kzeVaHOpPFD0hx7GccIwDhjGEYfOn261/Sl9lUb2KI4CmFabG4t+8816ynly0e8rmc+aMqgW+JDsW/FyXlkrrtEea+unwDSBHRbpO7ttq0hht9kBAL66+RqTGe12eBjHCh/eGXzEEX3ntsnUJbpug3EaIZ2w2zlsn517TeiecLWtbCeuJLfMPWLfcb1QxsYkvivHacQwDNacx990Im2RayxfnPw3k/1oto+tz8vtZofJ2EOOw2j7cxgH611DODm3uExBa+1u9wG6vkfXbbDdbLDdbNE5ocHaLSpbc3Fu0tucJyMhAzhxq10I6Iu8tGSfJA/1EcE4QbN95KIEUfk38jZ7Ps9eW7BZTLrcHGLxYz9ivZOeCCo+a2O9Yj3luXSpsJgfl7kgk/yzQA9vX/G1igUEzibf2eZ7IcMJaXbcputrsGCScgEB3//iG/w/r14DAAbj+MO796kQ5+yfiQgvHM/665cv8RcvngfTtVWUyKZVrl1Q/FLLcf/c6DMiugccBhJuNZp0Sv9W5nq0xaxpLyNj9SfRJMJQSmG73WLb30MPI6aNd0Yc5Y5cN1JWl4twOeHXNCiRT92M6YjwyklYLy62MBwPxYRo/scKcEezb+epOEQayl23xNZi+DBjjL2ZCVajOU4TJsM4SptX/9f/dOmTRbnR3Wm73XflGJLEe+RcL6qSBDwGHTYAZx7hMfWfSVu8qp0YJoDQhdOkyh3k0UoHwLIxGzcnDTptx/bxzmCv30LzhM58AADcHQwurl/jotsGYGnYf3M7GKfR2jReb4/QqsM0GSip8q/wnrVQtH4oYv48+RqR2rsm8nG9PaYdkCJlqLcHabWSXSR2p9L9iV4wNCmozRbbzTaE2VuaUhBLZF1Q+dO+nerQafu9tNbhZHnQECeV8CBTzktKgaVorOSH9baUP2Wg1gqdu/1LaY3JEHjKY1meYA98lECzNotiCONCa2gS46S49SYpqFbRdeTAbC6YloCyjFd8Av8jUzETZ1EqtA4OraAHAO8ihDlcb2oBJWEEoOH5ibYHANkfPnS83Ak7UukAIvzvf/3XmJhgxujiq5QX/PyxO50/uvL/ww8/QHcav7rYxchzQtIsU04jMYD8wH0qJjcyK6T9iAMewpWCgP1Z8qm2pAAAIABJREFUIePDaBXQZCEhrpqP5bdYTBBAoyvPGLbbQgFocgCZEVSw58tihjH6vsPz60t8+e49vre7Vxi6Hqxs/U0Qk4SAK+rOKKXv0C7KHnNmIBmeezUZhp4mvCDCL6+tj8jNtgdPBpQMDPF7xXjx7f+55KY6MI0/QQ48cHQ3ZQUE6/3PA017a4SXYmNmnvkG1y+NlrH7H2WhZTyqnfN6Gmrme/Lgf2A5T0y1A3HZL009FHUwysBoty3sTpxv+i363oKgu+4OwzRiGCcYYw0mhsNP+PDmFnrzEn1vNXV931sPJdOIYdxjPNh7vC9vttB0g3Ey4eYsLwOlYzDTYpShCV+uu+la47yoTexPvAbZyd6mZIxK3b243SAJeILWKsFvVCxA0mlP0JWQvUkl+WqubKUUtOs373NWnkgvuyfOSw8sJagsgOYiLYFML2MSegc0+80GuB8ANsHPKod+bYu1NV+Rvr96TbjU1l7K744YZXeWTj+8EQdNnjL9XH5tmQENPl6mYKiBUuLK6GxVXU6OUPBTg44ZgJkc7jFgE3e2eDLY7LboXr/G9MkeciNDINKAA4UTBCg17nYt953+/b/5GxzHATwi7TenFQ+6C5A9eMQKiqwpHQAcCPhhGPHL5xuQP4yUtGB5zK7tFc9K43dtAM5icMws+u5VdayskYiX8j+Bosy8vqM+/9b5wrorQWPQVBoWW+UefDpNppw8QpKXhRCA68tL/FYRrm/vAAA/HA/4QMCgnB0QYJ1PW9Ya7ldFGLQkKkyeM1Yrz4juFeK2gAk7UmwMng8D/urVS9w4icretjazyJ0wHmblplPHViV+njxhobJQv3iS6DunOmUAgx87SrhTEYsYuzD/zYvbOWs0K/WIcZJ0zumcpNrHi5hyQaJdG2tdNo+kFsjMfhOBxF3z/qMppYMt59XVM6vBPk64/WSZOk8Dpk8f8PGn73BvzQwxoQMphY1iXPQTfvH6GgBwfXGDrtuUJoC1+Z4tpiexUTGEufai+pQRA9ZnvQPjSoM6v0sRBWfviFzuwHHwCCGEU1chZq4PtriiWs4lfEQqZW1j/V8Awe+o5GaxXSmolHaMqfZyeTP7NIpriB9H11eXuBlucT/Fu7ANTzDG10mkFuA3wD727Yyg47IjbJXdsjXe/sPtwfqbT4tqtRpE4kc25upgsgSSyONl9qLNeO3KJFTKYGu+Tj6XVsZNguM6CCCYw5jJBI0ms0HXdbj55Te4c/EOf/g9+H4PNrAuuUIphAls10eX90gqAlehiCBmkFZxhCprDkLKClneDy8BGLRy80VWfg1Tne/v9Wx5jRJiLb46bWFvxhYvTsnxVFhxPnV+pjOd6UxnOtOZznSmz0KfxWE7sKDgydJ7A24W/jGZ05OaXpuZntSs1MJvNRDh2cUlLndWg/iryeDueMSP9/f4cW9twW5hMHQdWGsYp2JX7tRjrt9JpM18iyJIuV6qI3va3W0BvRxH/M3LL3Cz3QaNRtg257QnfBvyNj2c2rLHKVJJOwfxRKWNmHZ+Qg0RxtxGU+pZhMZgaeucfH/Tcv2DMrPY22i3Y1V+q1/khZ9WXjObU7JYJXrPNiAhEv8GhRJPGEdbUNf1ePHiBS4uLnHz7AYA8N13P+Cnn97h09099ger5Zwmg03f4/r6Ci+eX+P5Cxv38nIHe0LFwMvC6YGarDLVQZDvesy3qLzadd3s8Nq1oFXUyt1cBQxOc2uM5Gdp/fKT6P5dqAeSqRGeYrkq+CL19ZBavdC+oBCNOwjweQiNZnrAZ06XOdc7YixVh5UMtLlsNz2+efEMz8cJo1sHBgAHwxiMwWTi3g+zHRnMjMn132QYE9uO2XU271cbHRa41FG+vxKzotJcc4CsMjRO1fAsUcjPbZ8DqNzONEdrOOPKqHMR/HrL0aKSmeNBXbF+E4DNxQ79X/4FAGB4/Rr3b97g8MMPMB8/wXiPCogaML913vUbHPf3GKYxXOHh/cYCsKfZYecfKXsgTvdd0OyzMZj8weH8uxfjcwUfJBR2mTNRbR1qERtq7KpJzwO1jz6y3z8pCqsX0Xgb056yBK102B5bx/5qxblWrgAA6UKQDUoTB2oBxDzYzKomy/bxAEbnBmLfd9htery4vsJvnd3Ix/0BP+7v8W4ccBjcKWkQjCKwUmAHPqEU2DjH6gSxfeUYu7ziDATmCQrA1+5AzF9dP8PNZoNOMA1FcXELH6zS1sX+W0OP4YJiC2bFsgsid3+yO12vuw6q09ZuMyxy8Cul6EsI8Di3CKdVWzPYi3jVgNiGk/M7tUIN5HdSLU75nifi2gfC4LBNNgxHaK2x3XV4/dUXAICrq0t8/fWX2O8PmKbYfq01tLYCh1JuPpB1tM3M7lpCD6JaFY4DfB4nVN605ka2ADSL3m5ASuPj/hMA4P5gr4bcaMLW2R9ekML+sIflc7W6VL48lUFp9aLXhuR+dQDIn+HjiIM9FPOYO+TzlJQuU+wOllkea4zBtlPodNxkU860iWHttr0TiondbXDMmPyNcOzMrAjYuDbuNKELuDnv70xIlr9IxGuNJ7kIthb/CjCsDrcGgDydba+zNhYsfZbKfsszafVN9p8Ls6fMOYDCzbNr9JcXGL58jcOHDzj89AYAMN7egqYJqu/ROeGz3+6wHUdr7z84cxxjoGDtfPuttQ/vtj3IKYuYgdHbiBp7Q11qkrIwzpemwUnTJFNWzeUXxpP/AutHQQSTdZBahZlJ4IzV+mID2rTuMJD4EefEnJTTqFwljrfNzKWf6KZCSKIuheyX+llSgVoy0gQoB4JeXl/ixdUlRjY4OlB4Pw64GwbcjSMOLmwYR0yyHOmGQStrF+JttJhxzYyvtlt8+ewZAODC+42kBgsvmEyLu9Wl0PnxPrPyruBkLCIGk6IsixDGCIchvHuVvjfoN1uQQQSabpFL7F4F4/bdYRaA5npgd0raquRyevKTAGdZ3mnQd4ZOSHxaOe2G2usXJ/AwhluegAmbjYZS23DAT35eexLdCWEOa1g/ey6SN+vN0KaAmC6AHdic46yttuRTYjnx2/0Rf/f+Lf7pu+8AALf3R0zjCK0V+p0Fmi/1Bf7bb77ClxfbpYqkxeaPVL5culrR25tHbWeaLgWpTwkwxfjg+CepG+Jd2H3XgWiCmqJfZGbj5HpbM+/+qif/fSNAY2EFFlphDBQBqdY2xT/A3LinMJ7yViUphXRTjBjP1yr8uljsF4YGAfPXyVeYRpHlCbtj8+cHciBDmYbPCTXS0N5Yr9YhmmGQ0ugvL9Htdrh4+dIGjyPAjK7r8N3O+n3Vw4DL5zfodjtMR3cQcRqtsLLZoHPeXKAoeKexfMbxH7KCCTMD/pYxY7K5tdQfSYOXE8zQ6UJEVixXchEsr6q5FNHrAk/Mt+kVoZbRCjrRYfsDqDlWay84+/uAzBmIJ2hLDiEXJYL1J7shhY2bENd9B764gGErJQPRWbzPNTVMpySMiNAphU3XxZOfSlUEvBkwWXKHZnPrdKoENJ96TW6SCSrE+5s32w12ZoIap7DFx6L/k3IcUJXuq56KqrBoFSicAVRzyR8MgstG17uh3oeVKKvo4Wwz9gJn4VJ4tF4IjDOvKOd5PIDnfDyTyyPMWLFyisq2JG/v4Dteqwn4w2qzjFOEhDJmOuc/fv8j3t5+wE8//ggAuP80YBgndFsNcmY7+K++xP95d4ffjrf47375OwDA/vZjWWYOJD1PEUAxHp5zPFQs+nXhhATYlO8pyf9UOgWuSLCZkw9SSqGD3emZhKeRMFIIAlSG4ZGOPs54s7LXmMpT+CrsPq1tNcXCgGj6VMSZA5NUTdiMI+Il4JJzCJBSEu4P7tZA4SLx7GMzv2Q8KWh3EAsAmNwuITPChQ3s/mG236i3cEQ586t7BmiIlxEwCKrfgJwSg00UJCd/acFo8wuH8Xw/EoWuIKE1P2WRqY2XJ1yimrm3QOkcWEz4VzXvBi8MYy0OunlQvG4WnQ8DnelMZzrTmc50pjOd6bPQAxy2ow6lTxKK501SyQt3lGFuL6Rl0l4iCJKIDKHOJ6lHE5JxBdKT24jx9p2c+cKI5pjC75zYilLKGikroX1Q+bZ5VfOcazNLCbesbePlU4laQp2+lKWIGra5QB0uLy5xNUzoRmvsPTrtgvtCaXWl5mKxDaerDR+v2SwjNpPP1f8ROy9pjz1uC+epqJCNOY57wB0K6zSIKLis8VvoUdVgH735hSIV5xClWrhaDRLyeUlFktBqJiky8T8vYsZqCT98uMfh7h6Hj7e2TYcJu67H/Yd7jEfbvl+//AK06fH3/+nvcaH/CAD4b77+Gvu7j0V+iYshua1d0cJxrbJpy5JWJE0tf5xE81qOvNT6PM1nlFb2e3sn/VbZ5Zx5ZwepvPkWZx9RKoUVvFYz5c+PMhFoaoxKraaIjvqAlDWXqyKyvArdZ4PSwpds3OfStoNX5CnmKrmjO/G8BYNZu2hpX0zuGx3ctdKGOcz/kIdQW5MS3zsbG/ZCA87GGGcDRFntarVJ5bd8alo7h+YSz2k1/UPCvZKhtMIeM7hgi2STCiC2glYeBoo/uD6fHnOQN3x7P6gMFIiszZY//81w95YLZMl+K4yyvKqVd29E5xRbVUn8yPTzUwiSR8fTmzGqAhKgqdxBBmmSmJZcMp91IPMxAFO0MwvJB69/nhMOkriiXzUBatPj1bNrfPHB3hLzIwFQGvEqQpdv1j+nMconoNW4tV6vcgrMZHY6RnZ5fh6y1Vnu7zLGTI0o9oF2900rld72JbfX47xygprKTlTnxXE+SiuANwAQeZLbhYmt2AgEbAiJWcAs3me0P4749PEtxk/uVqMXL/Hy61e4vbvHd9/b7fT/+O//D3z11Rc4TMDfvrGL7NVuh19v+2SMp1vccqu70naI8SX4s2zz56aTS1lRPSKK96+7b5E3z3+1FntIeGwGqB/eM4L7ZQwyAYqhgLhIpot0GyEU8dxCu4bv5rQ+7lqAeSL5AevndjD74OppbUMEf9qL3KEheZ0oKQKxAsKtW7GaOUuwp97z5jCU81yTXrFUGRHscq29qq7VD6c2UOTleO5NITj7BCKwSC+A5Kw9ZvYdK1mvopNsNOfWxibwXJjZth1ewnB/GCCocMsMYO11FBicoFxXowygscwzqUbWArb/1AFnbJU8lZmwK/ecazS1c+/jDd1JOc2nKKMAmQvUBtDzQQ+M9DBqfGulCDeXF/gb10f/97t3eNsZMOnwndi5tEpPczYyTIJr7VleTppjucIEZzOBHXH+NqswZjxQmtOgnFLWbCVm8j8h3wfIKI1UYpyHqUIgbbVVzNJlUWrLGVL7wytUy9WVXD1o0dY+FgyytvAlMRMIUaUPH9+Abz9gp20mr756hX/77/4dPtx+xM1//lsAwO//9u/x0z9/i+7yAndbCzT/4eMtvr54iT65ZzwuyCcNByp+RFohrP088DQTnIUQkr7ljHVT8d0CDy4qvGIEP5r9nQ4Uy9Qij0adgngk8/BapOYizGLdW5r8p6wfj+g0Snsl/W7klm/XK2H9V1ajaQzGcXTZ+HQpsLJgNGIArzgNV7Nmy711nahD1YJwIOdJceq1wqhDN3+O9bTNvwqwKITgJuDkZNRVMi35XBmPirYunENM6LRT5wDAHBn8ijQ0r24Ur0h8QwJrBhkKVxmSPzVmTOgOJrtA2T5gmZPo/wQarqlxVdCRWoYEeFK6NeMBpnR5FN2IzNO67/aYgc2zj7WvKsbpbLyQH5XvmRmKGK+u7AnC/37T418+fsQ/3t/jo9NYTSD3LSXgOIFRJkxlHYJbjDXT1ek1m+yAspB4QSCa4O8G19rfUCEXVxt3mAYwEUbDGJ22b2QOft9CHcnentErwouNuLN3riWPAbMPHmrthHL+sGDo/rbjInmBLnPJ2i3GomjPAQQPtj9yzSkEIMiqH85RoFyHJB0/vYM+DsFUZDAj/ut/86/xj9/+Hv/l238CAHQbjWk/AByvxLvjCW+PA77ebqyWBl5g9R4sWnP1xI+yYjX4vACzQYyk3+cEhBBnUfBrIjCRST14iapRF4BiMraKKuQH1ZbrsBTN6k3EGD8FiDcZ+lMSlRUTa74npch6KZkMJu+Mtt/U5L+Sd8BrQv3vmK8phFryGSzXuxXpwQeuarScRzHkGgLPHNgsSlvkkf61RO1LgkxK58NAZzrTmc50pjOd6Uxn+iz0sLvOl9TFibpaIOTqHg2Vv7z2UAHE3pjYWLsNilpONlYrYjVhTktSSHSzatTyIfkjNJdemym3yZ3xut8mBeJ7uR2f22Y2qxDoqSXJU7UgpSCeSklSDV9vQSJ5uW0QbxN3oQm/u3mGry8u8G6/BwD88XDAm3HAwJPzb2N9kp5EVSGrlkdZ5+WNJrctwfYyAeNuerFhCFK0cMgCdvbEkzGgyY0Ftq44JmZ8GOy20B/3e7y5P+BuGDA47dbE1udcbtahiKBJ4WZr/cb97voSf/Xy1UJ7/as/ie4qULrTIHhCc55y+bQkwYuHQhla0RTaOmTyu+c/ciuq0XWKrFPo7aXVMN/ff8L/+r/8b/h0d4d7Z5NMRBjHCRhHTM437zgNuJ1GfEVbaOeuBYKPAZQ6d0+Z48M1nGkujZenjJOKFvpBFRA8pbpOnJBnUZeGGrMYIMtZyyfOB1plXAbNZSVO4pC7oTTLNb1tM68aNXTEq75V21xkNbXqmuADsf57vqDs7T4MBjuH69CT81cNyK3eotaZKk/GNGz/S+0sl8fvrBJ85Ro115exjitV28iGU3VsZUFrNJ9AFd/NKO5XD8XTbgaCV0Zngz//VWEUyUJePJRkx2hEaMQK5E6i+e14JuPU4bFzWDDJGniQpdX5qShTMH1SgCJ/oMEDSBX8ss3druHZST5k613wVCBzIZ/WTkDllZ/bdfCZxfYjv+j46BMRbFXpV53C9sIu0C+3GxzGCcdpwuic7B7WTOI8SvKB1yaaCXWMyRgPKuVVginQlHaGdmfBjVVRD8MGt4cDvv14i9/f3QMAPk3WsTlnY0Te4hIa5ISdW3f45M3+HgfD+NevXiWnlE9p9+eg1gZMMb7C/BYxZxbuVYy1gVkT4bF84Z5iLPYVIbjDCSXtLi5xd7eH2ljn7DAGP377LUYDHD++AwAc7+8wjQM0b3A42u+2OR4s+ISwQyUlwAcE0PX8LWtw0diyhjWAtBDpRMqlhoxWzccsSiPe6tG7amWsorqTCpUwpiUExXh+fSrjBFOP1qdcHNwyURw/p0/3imB3EqVrYP6mrH40U0tNJK0f5q7rYvRpBNQm7WLZLwVTKWvvOWwiwBVUAs/QqycIJo1cFwFnQAXtWwIqaWoPtfdtEIk8XqUf5jnNPJ2k0WT4hZPTDxHGVw10wL8MS03Bk2Z6P66x9pci6dCb7AIg7C7Cv4zsFPNaJhsZf+ISw2svpe1lFWDm/0qqgPM5kFmKT/U2/Gz4ob2QFSyqySg9CLPDqPOgnQlKAZaVOIsO3QFjAxRyKihUh1Mt6ZpFNcyxeMgngsjStUo40CLAZmIGJLTgkzF4c7/H7z/d4b1z9wQI7ZU8RecN/yXgyRpwPw34z+/e4+urS7y6uFzRuM9PXPl1SqpkUZpjnBVK53uDSyalUlK85GHyXEVLv7O9ugYbQLldlnEYML57B8OM/UfnvsgYbC4v0V1dWM8ZLp4yDK1U8L5g3a9QmBteaCY32FPw0B7czSF+AqB8GPYUICcEPR1zWiNGZTgmvljMrYxUxXWNvIJQ0FyN/bfhhiCVOnqTgDTRfC7Sicj+QYtHI82MoDuHkaPQ7tdVe9ah73t07uIPmkawnlI7+AJgJhm6n+63ilFDmKhPfZhmnKwqIJxGS18nDo1kACyCzZB3g2cm7/OK1OJJwNtiNScMnRO3zm3BnIhlAUHOuxkSDDJ3YyMX0jkif0rUTzxC0Gbmg6jZB3nZLkAuUJSBg3w7vHCZ0ZDgYvvm21WN8LOBx3nyXzr74kX1WuOOUAhRkEDUT3CtCICGAoJpxJIBMedoM+bepLl1TwopgDceN6n2UsQN2+nuf/5QkK2bi5cJLSMbfBgn3JpJTAlxA04GOJNDcoRibDIb3MPg/TDiZmvQqz8zs+tCkJpxx5HgwtqymrDA5LaYgkjGzLOoCHziRxjvmeuhWlHbqyt0mw3Y+cy8+/gOw/0ePE7hWjy97aE2G6hND9VHv4IdM4yZksVFCf4m62ZZb8q88vEqw6uAawU9DGDO5dHKcR1seni5My8WgScXITJaDXT4AZzkUmWKFVBaBaSwa61479e/ZhPEULDsoRgJrZQraSFtAuDWgVzOnn02zAylFTZbd1vQxwOmKburPAedogq+l+Iuj4FGuY5lyZNfLcCW1355J6lOta+TliUEjBXALuw0N+ImI7R+xZUo1b+malxf1lqw/We2Kp3pTGc605nOdKYznen/L3TyXedWicTVd/nP3B+afJlqP9eoRH1wKtVb4am8Z7lSpSR+87nx20tpUgoKVcn04XXH12mDUscLjcr+iWiNVvxkrSYQ/g3PnMbRRCClQZmz3YKcZj0+zBRcSdrKM+gnw/Z3xSm0l6JzLVIw4YgRGU46B4KoPRqDT9OECZm/wFzTxsKEQzbI+1l0mstO9dCbHnugrlr/Ganet5UOdNQeZydMhNYBn2b8NIb8Nnn6wptHhbYXF5g2G5hd1FL1uz1MMIsASGuoToM6Bd05XQUD2hjsD4ewPaiVCt9WukOLVhucNM42PfJDqeEstDYrhsbPO3pO3Xhs6bcfVPRC9vNawFxhF6duoQtqaEAz7eeMlrS+1d7WEseftcXpIXTKXFyR1UwcX5Ixxh62NIy+s7bPzxThk5nswV+h6cvnJRt70Qu8OZ1yZinMeKa18MeJZKcqaI0fUH1bJ4gM1o/sKj6phHHyo01J3EoBci1ZoymlPG6t0itonR9NsXjGSsqKLKXLwSkSUBl55SxSLSj1vSlfZAtJkiYPoGba2XSAs53K3s4hmUUGN0enngIsUEya28wAe8zi3xqLeXH1eBZcKYGwapjTO+lNbZYr9TtlQggAudoWKgGkdts8HBoSeRixxW8M4whGjjLzZZcgAKVw/A+lLXDZ2Knbdz2IgIHSGfRzQ85qjy0c5uLmg6ACbZWv2kTZNGjkkc35uB2XCZqVOiqtMZoJ1Fmw2F3uoDca0zgmHjBIW/tuZaPhSmloYzCNY+CmhA4GABnjDhmqmN4vkMm6mPIEO4ZSgBHGw0qw+edLZeXX3GT1iOwbADIEpkkT8CLTcPI+xpkBpUkR4uYWJ1i0Ws3J7/XbmvM5PSDZCdKNbG/0S2wwTQYTG2g3N3+x2+H98YBPpMDGnkRn423js5LYFPPjmdL4ZrdLeABD6Cvy+bKmibnAGvLz3+v0/pe1qKZeAfYSVjWzzi8eQsvinur3VdLpd5372qSCQPsEt09RYLKa9JUXkyDV+So1XrckhGaeDhQUb5rijPsnRav1ypz0cWLkx68P5chojxVOP01Wl3V51OdDPSyWUP8uNQBp+1v6jGXmkwd/kmWrrLzShGAfHXmUPzQkgKarY8RJApQqBXR9cNRt3dpkxZIKbj7IG8R3HVTXQfUdNjt7Wl8TYTjsMcLn0WZVnwNnNPttxbcox09lAfdvZplb1s5WQ2v2vFXw6UH78hy0tpsmyYeUhu4I7MaC1gTdaYAY5ESn11CgaQB4A0Wdq0u072UmKG+nm9mLy/rIdQ2Q4yhbCqmyIH8uesJC5tdVWhhnjwOiOUCUb9JhI759Fp8rhpgUeJYsKZuxJL+tyMPLGyuaVo1TLLWNjB4zWELaPO/0e3H4G/knYA9MTmayd527w6JfXOzwN5se3x4O+MkdED2Su8Al98gA63ZsSwpfONdhv95d4FnXAcaAVZwbj5sTJSxNsbbEL2m8+fxqT6fRCjxaxAXm+Wy+Kp/Sb6ddQcmoXloR3hW1yjuOGpI1u7znqr4ka6yjVPJxlckX+WDUXHCNSmaeayQZLJVcGZpLKX4OOt1Af0kYisOlXLRzEJoPjVZdLAPOxtZaoHlip4a6ihPAeTG+Pl6r6asnNe4BaBoLDrvtJgPWBEiPBg5kKq2hHLPUXQftwGbnwsw0YjgeMRk7OdN7w0vGlUvip1ENlD2eIdq1dP77EbLr+GoZ4fSW5TynuArTh7cyMBM63QX/mAy2301p4ReQQIrBPOHqzvpO1WaPY68wXuzQdeJmIDdm5KGHJtB0AnHZhlhjCTxrYyJJV2n3WmJmvP94i+PxCCJC79w9Pb++dlfwPo6a6XMW3Xq5OEhPG8WFWRjXuWcElW3A2Xzvs/bLEepH5CSF+d9cqJdbGqo1O9dqKgSRrDqYygyDazhjAtD04FHORa0IL1SHK62xd/E+DANuxwmjlcwA2EMnGxB2inCpFXZOSN913Wc8kFIB1NUoOUiaib9ETcabviCsEdIr8T1xHrf6YpFO1Gh6yCAr10LzqPSfk6obGsw4SdJ808wbA3z17CnrlEiNSV9KiSS+SCdiibDXgO4lWj30HrrKVyRyySC4FnFBTIqgoUw2D0LFsxjpTblDbJcEqbgp4tfHUfl95ikCzvhEnPVS5HdiLCtrDuDiKXJAs99AOyaodAfqNJTuoLQ7Zan9Vab2OlObV/R84Jmy8Uy5NV1QC6+ZYTyciTwebLparRhfiVKkIQ+G+LXwhYU2gjZpRe23IcuUx8MRhoDtdmsDNGGaJhADg7un+bC/x+H2Dld3d7h26aarC0w31zDsnLnDXr3nffWC4lYiKXI2uxF1MFG4wIIScJEBT9lZK5lKlXUXcRj7wwH3d/bChWEcMBkDMxkwGxyPR9v2wwGXFxe4ub5aV/gjaS0gXRVhyYNJljyB05lAmmiaK6C0BKSx5OSoAM+ATckDGx451lApnrqyRRAngS3unr3KeZRjmvY639Q23qn19rkgAAAgAElEQVT1Y3Jj03cEXDl+eLHp8WXfhS10kSkUWb/Xnsdq7X1ep9V4rABUp5kZVO2P+vdssK80wkqwKQWWdklclDvLk6lRyQqdT52f6UxnOtOZznSmM53ps9DKm4Gy361T5zKKVz1UEa8Qiap2krKMmb2RlnazVi9xirdOnGbZ2jaf07b6Bym9FnWeq8PqKJVyV0ac01hWtJy1es3dZFiNkylTat3hNaHhQoAZYvG3GIoVLXqzR9d0dCbR2a1Nl2fuuD8RlalZumZKpG3Va+i+h9IaIC/7OR+exoSbsKT/TKnRtHHrWt3W0CvDH6OTrMy+B6g5k7EzkzafXsX7uYlOeTKvRamV0tILR+rf3OL7j2/Az6yusttucbe/wzQccby9s5HevcPV/oCLiy3Uq5cAgMvrZ7i6voHW0WG7MdY8QCnlSrflKqNiFQoNQxxh/ipeeSVvXbs526RmVD/mDscjjDEYhxGHg9VoGlemV7qGNo0T7u/v8ezq8sH+Bv9klNnDAliv5fR2/hVTm6D9DLyYZTJRVq69tLxHpm3RGq10meIBMZpTpPKiyIAT7aU8XJlnmZpGOa0le1ZMyY2ABDvuFRG0tvxUieuiZbwaPc0oPf0L1HJAlst6PluqItd40WjmkpXT8ivcotPdG/nCF3hw2HiqOGNPPkHl5HaKM+d070lGsy2gUt8/Pw6S/e98snAWnGY0V/dZbHwKLX7kSgTOQ1uL7FJfLsda0rgD6eBdk6ckuzOUOYlq9mc66WuyQrWG8o+QGcj/42auIoJRBDIqfmBjLPNznWv8X8POjROFujMDbAwmARA8IiKK8bwNZ3ITljFhW4QZcY+i/vlnt2OeEgY8AGcmaetbPcu5ng5mPCDzz4Uk1qiLpW8uegw/Dfj4z38AAOwPRxxuP2A8HtC7PK8ud/jy5Uv88ptv8OWXrwEAz29usOk7eCEhEsMYuEUxhLh6xg0oAoSZSa1yfm77K3KTRsYoWVBtHvrfB7cdPgzWdRMRo3On7RlApzu3vQ9M7mSwMcY+T1OwK35KaglPn40C+EyZabNsATiLeIG/kOPNWS4ekApaXtzlbM5n9mfsoea6Ni/8LoXXZrM8rJfPdw8yrZ00BQ8m9upoBZUx/yBknwi81sVZx1kfw3fztWwtzywPpLXjhjeVYbR2ZK1zb7Tm5ewi7/5U3A5F0JoCuzqgXSElrfpqtcWkklBKUO6LVueQQI9Uq9vauuNxg2424wbIbH3ctWByaYDNxbHvKpLXYuludMiFciVaWgUyZ94nC7byYQqKGUoZKDcbDVMoiBnhNPowjvb2FxJaKifZq8oYZCF1kbE2eelVlxyYa9K4lXflJmXl7XwkFc1Zz8/L9CFtOaKqIAoz35rnHqV0EedIC79+89UrvLi+xN7dW//h40fc3d2j6zQunGeAq8sLXF1d4uryAtutvS1IqeimJY4TdtfccqKhiauBQd6gBE60ALG05cwOExVR015IwlMtOtB3Ght3+xGB0HVd0Bp5wWoYBozjBPUEN1bNHikK0/YBg339q1qBALjYhCnXe9HvDdA5Z+Mpoq0EahyRwRNeA7qKWhKto8CyS1xt//pGivFMtWkptZP+PVm3YEpZYJkfnpPlJCVLQfMR6/Jqvjm/zDyYTgaQBZuZB5v+RzjsupIedBiolKJXFljREiZjMgNuiSewKmiTRGm8udWhlrpx8CfW3ecpypLv6hVNgqioe7loPI4aDCXMnTUM5zSmlGGBehwnDlVPZc7WoNEjLGM9MROl6s8iMPgsBKCUAaDArAOgNOS3hazkPbqDIcfjEZOiuGWEyBSKlniQKXcF3ALkXedIkw5FEqKXTDhkutBln4MB+ozrVVkhsiRp52tI6T+NCLES7e6JC1Nr/vRdB7q4wLNLCypfv/4Cx6PV+CkvjyiFvu9sXM+mnPNpPz4AOO01wtiIrFK604nf2x8MSQ+SsAOcvu48s73mOCzl7Sy5FAHB1ON4PLg4Glr5KzWtmQfcVqV2wFJvt+ANPxpoFotacwisGb3cjlZ5tcxhKIK5+HnaaYUHi2YZmSY0xKOozytJDF4qltPZ6rfpIfyVymS1Mny3uW1u7y8YBjDKNMdsKix5cOl4MVF4JunFo7ZSVYeBZzTrBfV291Vy/2zMdaYc9lxuviE5H1lZ0qpY58NAZzrTmc50pjOd6Uxn+ix0so2mf071dpmWZOYgRClmNbSH5MvJ1N1NhWAFgbPQiZ4iSbT8aIa6lXUvbS8rrS+CZvpgXUXbb1wbxtG6HNlsK596hdAyK5mfEtdpYGSMoKkHopb8M20prKLW1grVH/xtVwQFKEBrsb3IBtPEbsuRMbnwcZrAQb6LeeUKq5pm1bt9bWoLWtrYfBulqkZ+Ys3wGhLKgzUS98os57WZ9RTisXT9lEz5jJTbr/YcUSkFrdIDOdFWLHPDwiVLYH+YhyWPlRozz1u9FjRqL1NtplCtsbjKsKoI41A2AYndGyOOu01vfWPu78k51TbZ1psd80SEzcbdlNT3T3QIqL0TdDrNcKqK4mudhjPyLxlxjWYzaNVrSrTWodQGJcurO7Q4r1ys7HA8+nPV1uJyHfbD0U7XqHNUSgHGjnHOTYDywzxCg2kfhUZT8IG0SbIure2kkplWNcmtxa4S9Kdb13xTl/2wAkj6Te64pFnag4v1rfqSTj91voSdfKmusk0oJWaEzaOVMaePMt4qnJYNpAbTq2bV2k5fAstZ3W2M+OFEIMrA08gMsZrGsL26a4o31Phy2DC2F2uGen01qvDf2RwkcfGCHBPO6sjhUqwV9VwotPW6Fa/FCCqgJWN1YAIUFKABZudIndnZZqaXaDIzyDCSrdFHkzgwNLtdM7Md9FiDyseQYIShbKwrvvw8+depPQgq1o0GNGik10pBKwUVgB9BK7Lgzu2da62glRVMSHwnL0Yni6QvXQDVcJ0gIyy8xN6BfQShBD+HIsLxrDjnVPW+dcCE00MW7nxPCLu8usKnT7eYxjHc3MJOWNBK4+L6Mm6Vf5bV9bECuqf53mjJPu1UWYIM73tqcldp69/AP8stzheYsrTqmt3K4rTClzPNwSLF8RbOMRJApNyhx0qlhELA26b7mSNt1ddVN+t7XmomnfL450Win2x3rlhpRZrcq8kpbX3QMcC8cnWwCVTUfDN5JlZl1Yz98lMs+4szRxaULyA1iadew3kwvITAK8yxhVOZwZnd/zSOuP10h2FvT37S2EMNW/CBMO7d1V2DgRnZTVyfN4M1Q18Qrr/Z4ebVpmhZyThPmmpZ2jKkBeByW5D45L/JwjRY+c0L10OVfKpsSaCYOdBioxEUK3Rd+nIcAXtpT2SEyoPMpSFTKwx14ZvzcNnkEukXY7OAmdVLFUqgurBUn0aZNECV8so6NYSAtfyg9i05f8GVHrKklULXKWifXtkFkyke7goaTY/YAECAztQVkf1Pjsd6yRZkMrFYI8l5YkAA7YQMnIoPFy5aEmtteOa8w+N46PsOz58/xziMUIlNZqpFCtUEWvL9KvqTLt4NsOlfoXidhVYitbPMkCnnozArIqdsusz124Og+lPhe077xh9ik/aU/hawOSjk+W5SpYWB1n5L4s96IfvPGljOkQTjc7bCMonQwEses4ZOPwzkuUZhpAwUi/L/y967PUuTG3div0R197nNDIcUTWrlldbWRsjhXYef/Oi/30+OjXCs1+GVVitLIiWSM8O5fJdzTndXwQ+4JYDErbr7zDerSnK+04UCEllAIvFD4sYVn7JJ8BCH4ugkBaIU5KzsjYcWHjjXwGaSsYizyx+kob03knc1Wi84nc54ef+M5382O1XnrxT2eoE+L/4GkWVZoLFAI0zlneczTvMJ5/MJ+3/c4S//d3O8yuefPxZtYiplD+Vp2xAkS0NoL1wv8JCSeX0r6YK3LXXdkUGmAAmJME1Okp0LhMbZnIUIe57bsmSN26sRZ5uKLn0HOU0pAK7S96SoNGcLpph5vIxno+KE1+2qLudXDE4+vNcMRLUhMC3p5aQUsJvCzU/2WBWAnWUZ5eEYKY/s+JFWDo+mZoSSX/5NNCDQYTcohdzckpVgg2FBqq03zbj7Dt6BX53iAicp9nYq3YdFNu46BljkcjXbPoAmKlHLgFMXI5VtLYvoWPCBgDcSPbK362E14LxGHQjFE9hT1XRHlIDLy0WLM06PsroutaWtDxiuIBhfwpGwqw2IjJ0SQJlA22agjTbaaKONNtpoo41uQkObgYLzLruvwEax8bhblrEwXivBs5kMq0w+KUSmotMwjMeT+D00cids06vJ5RDiZMEm0K2nnOd4PZ8jpSaQXnD6Djj9k6my+aRxnD+YKXYVRiTujEXv5dSzGaCpCafvzvj6Dx8AWI+mI+Hz66OoOsWfSCiOu8i9N/V9rUFj0wvog1v1znRYYCqrjQmcdpNdL2Sez3atplIENev4OK0LyBVh5r2NRpo6ih//SCUHS+c8YVFg9rPIUHwtyCLyi4P7PVsFL2ZLvMRrm06Wl2aJlCIQJi/pbrfDtCjbDn1qYzO5jXSyph5YEr6AF0JWIMEjGeynZrdJuW+hJKqOvZou1JtDK6e/UU2D38NNlNeM2zQU22Py70anzwXHckJrXGsr213ZBRlFaXIXIsnpbKj3YFYyLgnm9I3a6cXJt0rIOldoH8XbISJQ0JKqj/+aFCsyu0HRCHmkOCqv436Nd98ZPLglzaE+bfc0vEYz2M546i/dLJMBBwc+/TfEX5Jeq5VvUqu+vIho2GAVEC94cAH4Rn21xjKHnaiRLdOLb2QTEUgTTn9UmM8m7vn4ajsBBSxMHQh2EfVieTJQRAqvv7eHRP/bgc+VvyT9nHJkt0EhIamEGL4p9+4XUmS7sxdCR98FMmOdVABoUiDaA0SYlwBE1HkGaY2lCXdlPU+buF/bV/imdLd/FzFeKQhLAut9jgBI5UFHeZKmLGILLddf5/aJi0N5kxZoUpMdSy32WfmDpMOh+q5Nap+rB518+tDZSJth34kZjQ8O3oF23BKLBHxKgDSyb+IIghqKspZuNqdZpkofG7e0/s64CjaTsL7iYxUhrX3oS8lCSpHXgbBeouzHYLpry/Epk9ixxdPh3doYDWRHNFmmsZuBagInu2h9Q4taniSqsNOYXL/DjH2kzzbUKrloQld5KllmmZQ8bvzQ3/Bj8ZaFHXfC4mnwjskcoaIXgn6m0HlBg/zNB7khUfbObA2NWc9Y9IJlmfHytbmb+OOHj3h6eirK2atUuVqXIlGmSLxdREe01HgV8r0WlUEmA4USyBQwARFBTYQ97Xy9vZ7usDuegKWx63zoA8nu8i3obQTc216NEoaOI5PwWuDdgwW1HLHYIgfAZAeMF3PlY5xaqbmDyS3ONAM/LPERQdpeQcradOs8kFiPQkjmARU+JNLhN+shE0ApVLKfy+rEvJk+3tCLNkzFEUv8Wjy2q2Dgejrziz79VkBf7tbXZzYwJmpGa3RQn4Iq3ZZc3xQAI6d2P+/B2JrL5jwNeTQ1BwhCL5AHpUpI+Z4d8aot52MsaDCxWDVAys+iq4DOHGeOtMi+VuE4+n5mWZKpJvbeekDc0Tiz1jidF+gZ/tiQSU2ABZrR/diwnlLb883zGcuy4LzMmPUJy3tza8m3Xx/x9JkANN3tIgX5W1QriYAlc0vr9pdpvdjOGjBX7hUyaXgUSsJQ/E/0ogawZLtJ0p+IIcHcinI4mI0TD/d3uH95gYLGnHqI2GfxEpLqgscjAnaUTMNKZdTTkzUoLYd47NBrtvusfYlbE0he1Hs4MBRkrLVwRQBI+SsXzSYGo7+uPojM9Y/RbVCAADZ1VLESlK/pYUU1PcOUU09RXes2k8phd1USnaSrZbpCIxhg6Uo51qbopRgUgkf1u+Pb6j4VH+U6oLaKQodoOFXTfl9DggLQHuAg0ZU1FBHgZJk0xkshLZDX5YCQ22agjTbaaKONNtpoo41uQmMHtrMZa/E9VYNMaLZwPRD3RKbvivMN1RFqG68b51biO/VIP0xJR1uYko/jPtl0ramPrsOUeEWcaCrcezSXGc/PZ8zzgsPO3Km80A7nebbOk1CmejEbgPwUOwFqIigC9EKYT2aN5vuvX6D/YgFldxBfb1NO9m38hzgQtGeA+pN7e5jVgiSfUDc79k56yz3rEmn/jQT4g63v7g54OBywP59xcl4wrUHu25nmUeFmjygXItACPEzKn9sYRNTeU5p96JUqeZ2nQDAUGUntXM7rSg63OPfkBpLaTDc/aJ2vZPHmg0wc7SNYO5AdEye51Qt5Fh8KvkqBteSp7PVe3qLMa3R9r2bK7EJqtKvwWuivCmldTP962Bnb4UGulGOlBV4oQt7rX6pPWforuDD7Uva32TIJc7qNel6vsdyOxlik3TWkMfqPjxvcde46RknjqUuvM7TaBKfupQ6zc3yeXEB1ng/fsBDtmEzyFK6qjNqfroSnYkqTJLVOKk2v3X9h6vx8OuPDu2fMZ2C/NykOuwPoDCzLDK0NeFyWGfO82Olnk+lOETR2ULQD0Que7Wz08v0Z8+uM3UMAmnqxZ3hSIllWVaPTOS4D/lOAmfbbiT33Urvjld8BXB9ynVx1hSniKtfsa3fThKeHBzw9f8THFGRwUKntXmFxQRsrvWXG/bLgl/u9AbM6pE9luQRs199f0HEXmcov8g7l8o5EGvBUbr4T+JDwzBkYUEkpeG1K2I5RNPUiLi+BddvZtxpKF+mOOlmHEjM97pgCLnO5EXUAzqIEFQzaR6nSuj+NEXungbgI2xcSixtxLx3spP3XaPo3p1Z/qrOfkuzjmm0VLtFZzrvknhs9JWZ8M1Cxdnhh9KB8hqZHOosSWBF0VWu5yKSrzPk3Oj2NCjKvjzzDLKj+XTJw0x5kLva4o/P5hOePLzifd3idXwEA9599hqfPfw6lJhyPzwCAeX7xN5XsduauksNhj8+eHnCeZ/zum6/wh6+/AgDsaQKpCefjGdqvhbRdZOSWsW+otc5I3phQpGx8EDZK5BukYsrGGgK/9PXou+i9NFwWVTxvfjqRjYjweH+HXy8zvj2aujxNCqQXpJs4tE9vB3j2y/WigfkMAHicF/zbp0f8yf29fb/E+UaF1R6rZuENINgJB1dYQWEgu64/apJYj1F2OrElnPKBrsg53ZxI7iSGSpfRc+pCs0wSECzpco19UTE6BboCdXG8CAXdgCqIstpNNzuZcVdXHUfmICZkl6dYXcwrfRPDaa5+ePunQEwpKmP6NkCs8Qake0/7BsRtGr/rXA4Q3o9U8XWtBO8ganzZleyIgKjt5eMBfm4a8jOsggASyIyBGIOZiSfBiXOejafy3buP+Oarb3H/8iXuHs35l7/6xS/xv/2vf4V/85d/hYenXwAAdoc9drsJelnwakHM88dnfP/D9/jNP/8Wr/95h3cfzBWWd0/2fE2ipENLEbYRRsR+CYjR7CN7ajODZIP3f4txuzrGinw9Y6RCNpk3m21GY9vSsN/t8Geffwb9YprfP52OmAmYtDa3BnGeXGkIUBo4QONne3OV6J/+7B5fHg7YgYClUE9MJgk8S98yCCPbNJyoc1rmIrNR6NV1amDT8y7juOVA1sULDMLVqG6AlcjVqKNuKuq0reVBEHDJ4C1Qn83/SQOFtWAzTZuo6ZAqJu+HylNYd3NpfVTTV16209Us1mV0DZ7X8aMLULKALit4tME/M37lsc9AwWybgTbaaKONNtpoo402ugl1Tp3feF2LzWX1eKkxYi+GVlxilAfZn/Xhf9mTWXDpp2nJTLHN84zXF3Pm5cvrRxAIh7sJ58UcT/R//81/xW9+9xX+7E/+L/zyF18CAJ4+/xK7/QHH4xkfPn4EAPzw7j2+//57vB4/4uXlA7Sdjr9/eizKlnvFzBCny7E9MOtXYteaOncSlQK7lyysHK13xXPeTLcJLLwAKcLdtMNffvEFAODfkLk5aF6Weksjc6bqTikcJjNG3IFAC18Fmk9/+HKRjpWq/sqyr1Jf+V0wGTPgLV/BOHrMbgYqipx64QuNQle8opFnUai/cpLBV4JtWj8tsDrK1ein4O4suoOCJlen0XvXaWWUanAQY32x1SfhRbrAK983o3ElL+uNdam2uWedNRQUS55ma72S+QpHGYnO045bp4DVU+d9ibpUIJ8l6qciwJQ51gx9CVgWYkTxRHApaC/lEZJw18nEaxWVmrA/7DHtJuzIVpme8cP7d3j37gf8zf/3WwDApAgEt4EkZKMBqElhgQZNZu3mtFcmHxUAiN/sxQQNawwpUbSaUuhVOkMYB6jeWLtDZUuMk/gCthASk6yfFRkjkMx+8+ao9WLasbstiAg7RaBpF8FFbUGqWx1LVnoiQC3OgtTX+ZWGWlL46BRq/X0tZedAoIdqkdeCNW1KKMLqF3dEtk00GUkKV+oSxoVqf0fHWuvCu/EkF8CeGwCDC4ZAfcwhZ9C7taJpHysD/0iGlTScvNo/J1xXANLa2djV3LqTrSmwyqChEK0fBA4yHsw3TpnASgFljpTO8BWUY1QxJJl+dYrdVN4E3FUjl40qSTKJj3mgFE7xP2XSACll7kyeTPXoxXzHohdvkKZpwk4RFFE41kbn3kDnT9PKmlEbl3YEfxYLB8w6tU3mvY6Zip2cZv/2UBrTl1svi876EEJrbBrvqyiT/YxBZuwLIKS7wo1XMt9wRaHKQNBQ5AYTIzKHQBFg9qa3b3pa6tVxQFSP/bZiXV6CArZczb06G10H2CfgRT6bkc4edbFugO2qVM3vMteckI/7d7396s5sBGxGFdKTYxpHtrIjtKqYB0HmSB4j+JKKD9XAC6gyei1FK1V7m0tH/v35lrUseeN0cmBPxY2BZoFGFKsDKEgxuo8jqYHMIs7M09cAcwlkSjHJeoKVUub2HyDqnDQDIMbjpfwod5Hm94gBQArfpCby5/tF55baKOnGBAoxiv2quzaUU22k3gI41R2vYiOpgcxGnUl6MIDAvDiFOVYxmS9O12vKY0r/14HMJE4ar0PcDuBd0ehim+klKXaMHKr8um1CzD2d+Ssac8lt1Kr3ji4g+kIN1O5iXN39rbSXPqSY8K1h5ltTa1q43P2WYxRoFGyuppKLs3+gtqbWhxyNA3mU+tFiXDFqv3CXanzZQ5i8LZlDgQaishQNZt1YtIGOKzQINK80jOxlMzAqKiuWELPaj8iWmgrvSl1j3B46O1Abw4HN/c5Uz363g9qdoZWGnt30tvLHIPnpVjs1F03bu98EkCKQPTjcHCBuTZvzcnpvps6MhU5ApAOekbqJ5RoCfeySjro2sUrFxErpAJkSpxUC9B76GeXvyiMYAw4qowD70w8OmKwiwHTe6sZMCudTwOm1z2jQSEkWYor1NQwxe/snE3eI/ZjBjeCMB5vgoWMkq307Mg/tyHak/CS6ogNyFfXnXZK03ckOdcMVsGnSrwGcuvoYPq2vNkbrq7/djPSHLF5nBqMg81Z6Wecr+c4vB59lzazoU4VBAYsO07brfKONNtpoo4022mijm9DQzUDdtNLlHrGoMkhGRFUvZt2FVfJ45UlK3sycsbQRqDcEcFcRwh+6fnd/h8P9GYvSfte4xmQOUdfx2YmS19Z5wYiUvwqRlPV8EoHYdZVu+jtd6dmzQai1SpPXhRa9bQRNOq3d1VT23iW/0jq9whC3NobM2RsPQxqeezfJX3eYLoQvjdXXrOVsl1vraYBpNWqpbY3QusrM19gO8JFuhCjGBRNx0O9XNG2dnp8VHqgmpQfTF+M5tq0p61tQKa/efi5N31zVVmfTmEbn0d6qlFonJPTHL6fv9qR3RKa+h0JIi+EgjU1usWQNrelwmZc5dPomC9HS/oyAoY27V12j2XXrRAcI7drAU2AfxaqCy7pANZBZE6+521zgJR4nRICyO8TvD3d4eDzh42HxO5X1eQGgQIqS65IlGBMmWN094qTCer9g6nW4GVTH6d0vLzoJKqsdzE1hak7ZYdXhy/uoVL1Z+EDdVWJIOxyz9XlJRTbsnRiXR3O65PLmf6U2EPXblTxG3pV2dvbW00WpxTpOYKjEKlqhsW7Sh3/3UAcvnTrQ6lHz+fTe3ARqdMhrAEGbLYC25FkbvwLIXkc90+MjdGH3nvbiPvjaazb5F14P4I8O/nrjU2fki0HmtdF7xSb1JGsCzjhylwhafDM2nZ4G1TBWSiuAptBIGx2CDykK1d9ttYyeBws9ILPZiebopAQh+xoPibwknSGE3eT7/R53d3s8370CR+PRJGUSRLvMbXzNmdnNPgs0FBTUZEtoCjKHTetk12nqWE7vfBQAJ6MwwklLSUvLBaO4cZm7dahiAh4je9EHPvPAguhVOSqC5eG1YCYKX5tpGjJFekJJpWWsfXJBkNoSoMRAj3bDpXZxQXD0dnSDAUs5kDDQRR7NnNtqOYqUm6Z2kl4blT6Nit7wamb40ucRl9NtPXi34F7uxJvQoWQ7WtmMUC/AuxneHzyreBRkNt68CcgsURn5FaPqij6N8pWx7wWJQZKHrEhvtuu8y03eiFMzehFQaXbsXbBYwjFi7PQKyUKsCmCVSVn34263w36/w+7hFaf35mrJHREUdtB6wWy9nOYoHAUitvSWDHAkBZCaQPcm592dQlh4HmTSpEE6OWYnKwoSdKzWLMj+P/F0pu55Z2wHDIwHybpQh6XUYl2U4JLMh3ceDoyQeDKvXPGRt9ADy/COfLml+tanv3Uw2QyW3wnydKcdiVVoxiOjaACRko34hlZ7NEUZgNoO80KCFRlVut1BkEl5UH/qjsyyL4ym0jvKfqCI3gpLyLkOAE7BgGYnpOhbXFjQS0LO3cL0OonQ1J+6Xavb6nbgG5GM/CpRSIgiusGrPOsi5MfrtYjqGu1p2wy00UYbbbTRRhtttNFN6DoeTXF0mYxMO9eIl6jtyaDoj/xW5nE9b4YYb7kAACAASURBVGZFtpp4bFCg2by386pMk8L+bo/Hn+3x3csPAICPHz+CZrt+jwIfgoLSE2ixY4iZQMuESe2g9wumn5nwaW9PbyTy6zG1Xc1pvJr59/LRTnb8kYunC9PqQmju/SP0H/fSWQ9SlZdUSaqjjvqNNzG1EnCvJeNA/K95SUjCEE+jV+WWcx54P+QfFgL709ckWnUwvSWdyJHHLa7nyBe+t3PqoOtO1/Zy6rkNKHsaFLNWyiWqezUDr+JqwtvOrV+J6p7N/I2QzLVvjVVX+0p5Xkqja327vJlrpsorjC/xYt7Ob1xZOV7KsrjkqcPL2VS0UnTO+/J1wp13nYcfl1/FlpJVxCLfdi/at/HniiBTFKnyNFRmuVbtph0eHx6w3x3w+RefAwCOL0fMpzlKs0DbQ9yDddIa0DNhp/fYHSZ88YuDSTKZlwYkxVnz8uRnX4ZoufH0IVlFChAzW/MZuEYd/GpdCxWUG6aCCZHCBSPmgqKmpwuGScqI8cyBJpJpcXuofvQ9ksYOGNpKeDNOVJ7XAZL+Vw+gHFSIzAwn9lIX7YaON8OxwViZRsBmkC57ReLDenoDkDmW3wjl0+hZFpXiLNOPgU7LPX4VCyQdCV1LL6T22+qDm/HiNL261LMcptyfXgoyqfzqJlTOr3rnfYhUfQ1UtuIOgs444WVgc8ijeYmSV2/qaY10any7QGYPo86Os6vhyPE626e3r96nNSncTRP2uwX63sb7AlhmDa0X70XUWmOxxx15+0uESSkopbDbh7Kyh+Qk6yQlhbJhTPjgAc3jS6WYrfsQq8w1QOpYZCwiff9OvtGn3MCzNY8cAPZk7UG5xELmneqt9OyPn+KJ07KreuxQKOs4Qu19N1gtgfKV1LUOtZaB5JHPqkIncdkAKDLK4gLgMfqR1hS26j57Gsy8pIurKSqnAX69+P1SajHq6o9TJvmAnb+hLNYYDR0jVHnTrx99INNb5N7+v0Mv+mxEw2bW6BJFalQgX+9YjNoBFuMoBe3pVKrQw/O+fhx4rpw6j5uurMh9I4VmJ9dSwhbIrLSyWhwxpIhvSo2xpdCNCkuAhzlXk6GanZaPRkq4EsHuUl/C8UXKHp2ReVEkCRM5o3JI85N52HnMKDx3yztQ29eapXqQkhaP6BEjF6BXhwUrsBPBZtQ6uK1lgDjIRwL/evuqQb5u8JgEjnpOxZhN4JvwbXQuUmisakInzkBoiMt87DpvPxfNWYrUA3/K6OkmYHSA6W0lciSX0RrgGFuZC6BnK2lPlWZmv6jFSSs3ibuPByrGE+xBD9hr5suk7QKPZWMgm9tB+1MwaF3Fdwt1TnlW0GTaU3ZNtVe9nQVPZ1n1Mh7p4rARk7htBtpoo4022mijjTba6CbU59EcvM/XJsLlw4J1HpSWN1NwDLX5F72ZPYlbCYQhhDBcSD2A5rYf9l6798mhA94xppL4yUrJqux172s8cmouJGFBzkOrfRbBj9NTmGy81enNlA7Vr4WnCtPh3Iw8k9loXBjIl7yX8h3kUlicb0s8cP7l1+13ran7DqKETzmvAX6OpHbEXJvBmUkIP3V+YcE1PBxXncOtU+8GoJb3qZyyO6M+Pj8VulaXVuKTLfmIZ5JuUmZjLsFi3J5+pNbWxeQNpjXblgZe8pmj5b5qBUUxoSx71s82+Al+7CEvZ9ZnDXjX+4BmggUioVaqftfVkE1E2dLoRrCQiayjVH6XAIN+UUoJDNqy56x7cjvCeTQNaercxI6fcqNF2lmtdu8XIKZg/MT4XEs6Byn8oPKWarE4fENN9ksCQWKYnJnEuyyX0Ogs35x9rjNpe/Aal3UucUD6Xc0mUwOpWTZlblWdrjftcsoKqlzdwTrbJU6hW2NLvF1w3OnKVNfniVavk39D5CnQKMjMol5/Z+gb0Qq5rwRGmqqSMmF6J/0ap6RdNVj16cjAmsyepWzRg2CXm4kTuboy7H7VRa30XWswG5Glr2uCz+rrHN2VwacDKH0l1QU0++BFI/GVErY70nLMXHcbTbfTW7PK3gqFynPTSVUbsKeL6w1r+ThuPGVYn9n5jZGo8VM9eyf5gMBNIBv9E79LykcybkVwKjWmPHl4J4RLgDYDbR6IsfwTmSiPXsyzuJMe8vfHPH2kOo8ePhW6bGdpf34lzTGbzOJY4brV1AvPACbaHs1cuy9bA6hr2V0J242yWV/zl9At8rg+yBweUBWouQ4vG1yvpzaLkV3j7XjjIHOg/y/Z7W4Ga9HGehJvbmPUXMKbRXJRZaSaOcqbfPJf6Trnm911Ti63zgxuVk21Dr71vpW2GjgWr8W3BeBJiOCnu4s7TyqylJQsdSGWGqPm4vSDTaP+A2CzV79ILocMtEU8pbAgpawfbZAkehR5JtEfCUySgCNrUxNyXcX5p9wksQsmdgRUVoCuGF18KB07NcCYR8+UzUzHRFss7FITTQZsAta76VZx8CLutKra51A3lLf0Zdb5CgZomF9Hexjm2XpxHabD7FcOeNZQexDVP1VZa0y9ALIvm7ou9JR83jd32p5Cpz9qRwYs3RWp1Uo7gGg3AG34PmuiFKbe3QK9Xn3cNgNttNFGG2200UYbbXQTGj7eqHjk4BWpPeJqupcaMXtGPx1jsUFPjuhM4I7BlJkW4vBXGvkLiVF7qJzETccuMZ/gaKWBjWLtIxvCZwrewSLX9CFflN6ats68jVLxtRawl5S2JlOSr9y2Br1HHUshit7KRMgsVu860AGXScmJMe6DkhcfpSszibUZHbktnbveHYqd5L3K0Al8sqAe3+ag/7Ma9ZK19YkB+AlRt8gdEX/szx9ePpUxaEdoNeF+21zXmbj9r/dklvvolnwdEQf5XkRNN6Nuv5Vedno5s6hdvNo0dDOQWDG1Gq4p14qKKnacPZF68+zpWzrsbd5JV+Jaw6F1fFKVLvmt7VuG+IrvilCY3H86gBPh24sHvto4Wprf7yKKOn0TZIBrr2qY6zcTSBJ9Qwrm7K9UNVMAVdwwFH7IOicDzTSFdAtQCirLujfecKTvqr1Ly6aq56NnnopFJH/02JfGsXM8Fxa1+1am4a9blYxrhAUH6cfd5lOm0av1um3rWp43p+ucm/hJ1CWtaG/JUz01s1QdYLTGMLVnFQ79IFMIuCnA7Kz0S3Wjaz2mj1iPUMSFneBTjpoA0BVd/tBmoBG6KM2lYLEatafRXeOmUxmxtjptXqVeCl3z/iGveJaJRnLMageQ4e+ifKTo2a/RtZiVZl9dPE5ZlO6d2xJ46g4TtCPNT3gXyZiAz5FD5oeptU6zBCQL4cU1nRnzVuuLA0Qpq51YQy9TTzsxP6W7SYtgNgKxS6SJtZh4x2VnfbA2GH62YGe/l7EV41qA6BbA6u3B2uXo8eoyy42tkg/THTcIXylUK20v2+7sG+03PNT6gHLqQlF2iLNOL26lvz18+9ZklmyubCmLy86bANTopDmto69UVt4MtJ7WNpRSkhI4rejnsIKm8bqN/ZrvjDrysOvVHLESdKC5Q7HwjssW1KfSBAnW8yhcJVnIiJpxKm8pQNtmOaegz31Tj6cwBVIFAJk2MfHIo6JOCPkKeZc3IUX/NEnaOS2mHgCR9TNHy7L1t79CGXVQNX7yLWbPmwOYtla13TnJJwe8vg9IJC0fyWxwEqAbu8s/NXqL8zI7I47A8WLciwHXZZXXnzS1SSOZBlvazrTVQfJX9W9PbWYhl+xbajajzrX8opFD9dVlbbM3dZ9bpsatuk+x4s6UQyuZRXbRoJLer7wd0OxVajGkpjXdME947NnZWnfHN9S9KMYIhU7P5aahba+UjU6Sab/SUTwpaHEAIpp9Tv8mAnHz7UFNGTEmz7r5lrJYFc7uHy5bBh7zuoymq1Ow1Aks8zKmQnifHEH+OJ88Z5mCP6wR80KAWZKx3iyFFlMClp1rQEfI7wLXgT8Y4CTNR+cIHs5UtCGprDaHZZ82dacH4Kbz7pes0RyndSBzhWwjQGEVyMyB2K1LMFFXxHZciA95gVOPnF1d6wjV6qPnRAvJ7q7Ja0Vl9xVDy9Z2MYkjFju/eq+4CoSKL8rL1jIAOmhGtl3nG2200UYbbbTRRhvdhG7i0Vw9MBoZlUIc9Izn35uW+vgO3xCUDpS19bSIHGJXRzaoqI20PU/mfSM73vXpOj/SxWVzjk1PpJaGQ5wfEFj2uwz4KFn2auZj+sxbl3gyKWEgeTBLHoDixpaiBzOOXHfsyAXiV/ZKldC7zhSQvbeCnPK3t2cLJA9mu731tmadPwm6pDW79EDb9Ziko3M0KRntj1w3EM7RjIURp8lb0+tyBsgzGKE1CcfTrPNk1lO29Gsw545UsvLe2pMJxDYo2m/ZOv2iO3AoAotV7iNqXsRSX11+J9jLcoZCcL+7cuTrRxIP6wmV+lHGSYxQtk9FD6X0orJoM+29qSirTGNA88LGVu6cx/JeSzWbVGVf7/1NaCNO1ghLeZPDW+kxKznIHCpPSsFReF6/8YR/VbIzrSpUqra1hBIvI3sEDlk4ixbeSyAqBVDF51KYeyMbXydTHpbIkYuG+Ovq5Ld7RVO+skBlgNkpZ1pGuciFRyr2UV3HIeXNJqLIFOpMdBtsW5XfgW5bWtgLJE6dU2MxpZYeigvlY6TYP0tup/ij1HKcH5vW2fNrAKiOnKv2sg0mbl26uc1hdUrCIEaKzh678mxE7uj+uuJIGcm2r8HqwjpsxBxOcE2daPKyEYoL0TqBqGiZisY1rTPN8Enf11/VoxmUZkXR15QwCelS6ta7nsidBqb1ubVyKbZJglmXCQBkvTCad1M9G3IyAbKGnXnass65QtFL22nXoojEjSgl39VRsEIdyd9EyXMIa3kw5fvBpbAs0xDeBGhCuBiQUzieR47cc3tSLiKlP/3LUvvrApaUceDRZcYdJMsUb18jv9PHWeuw2c7HJeQeTdKyzBH3Br0RBvyxoWY17xXKXQVVa2Qoxltv/1eTyD/NSZDyisJccKdX1/taGZe5FWyhEFiJuQJcthP9mG2LU6tdZEA0M1F94BMQAKjbQSn0lSV6s13npYbUlLO7ZqsqN55FlxGQsGOp4x6VRsdgwE+/jc2ddXnbiMXN4uUKWd6U6xRaoxgFpW55XWsOReRAYz/IzABmlnfhEPXSbslh72UJdGZSFUlb9x2Zh1g7pLxH5El+SPoccaLsdV23Kg2kz4CFtlJ/D4c07eAtGcwk0+WiR7NGzUX8FESoc4rF7Yw7RrfbDNQPCut53xrUhcc2EumXhQrt4so02B92xa/EqdmmLLhWdrWyERi0+uTw2Icmy5/Y+qhW+k+TSmWc9cwrAGhmQjto2wy00UYbbbTRRhtttNFN6G3P0VzjqVrP4uJ0rRF6wa8VnhqZtsf18YKb4giuh0jwKnXxzL1GPHY2sMk+XGeRql7ODq+ANO4l5F4weY2mCat7M/M0kteyHsb4ZMLLG3QEicpxdIjnV8dSXjbidwlCdXkhS3pPmfj9RyY1XBdjns2EuIfXejOJ2NYe6zbkazT5BiIdCnm41bU9kuwIJOoJ7+M6Eq2f2gzb3sy2QKPOOimwxxNWDBzyYsVKcSuPFztWeNSJ1PBUjnTGHf7AZkPtz69VXVXZu+rkUi9oi0RD2c27vlxtWAvq+bIAcfmVzn50YZuUhoCm1BkVHsfoCuix1XF3p7OBQjfZfueeOgybHEWECQnp7Jf8qYUCiNpAPU6crYByhKii453kNzxB6OfTdZoFEgtZApUtkJk3nO7p8iLAZLIkvCMz2TKehSCdptXS6lietyRLogElWaSfnTvZ28CyVEYStcE5gLhTJl4qpuS0DnzMFFC8NlhH5XpxV3M7+rEXY1q6BGAOid/OqJtfq601AeZQ/C6B6nz8KQkmVjW/UWGaYKiDYW3vQQsntPQkS9+2k2v6w0asCsmVd4lO1Os3flve+zMOSEuwRcc/UOv/SzTo0Wyw7esrm5w6bFQ3DZuhGkhcDTIr7IcVdPCLsnYwUEnFOAEWtryVTT+omKBleXtrkwq/k7AK4BsDmSXgWd6cJTwKEgv5J7v8Zb2S8u3wXmY/y/pf8xr3hYV3V2n3UZUGRlo7ZJbv19T8G5iRvgBn3pzKOLOOQNet0Bzouqn4poPjSGSpTbTTtfJtfmnbNInJO6Qd4teMUrWdYkcmZ9GHz3o4jcfs6RurcfoUYHVbkH++KfW2QRmQ9oHRVBe0Hv/wt5s6bwp0RePUhWJbHXmersq2Klza7ckPlxvfGo+eVlt/XfZWCm8TT2Uco8z9sgY7NsWXgaYykorTpDfYcKCSMV8D7IqBhiKXpi4qbGpvpDM+5TD2SyySpEySjNq3KdUAZxTjYgvujjIiOwepkzFOuB3IxnffooEuz3oicTvsUrrdZp4i9WZ1bZDZQB5FPlUwUX5ZBZlrQAVlrX+YzOkj4fdb1HpovtUSKcYpgdRydfYsJSozrEgwGlShC/TgEyC5iyiA0QYA9To5UADbZqCNNtpoo4022mijjW5CXR7N6yH3S4YV5aFEiUVplFTyWObvQmBtbNezYaE82K/fjrLilRxj2AM6Fje7O0Cq6spAKT3L0PxpSadZvmZHR+wBuGwhm+j95N7MZOiehkkj+64p6jRzFqSjH4afZl6u3HEonJ2aP+R63/BkXuMs0iDioDaXXCaetF/V4WTWhVG682r6Zzd1TolO11fotyQWyrP9zdG58gN06fLNnrQtD9Qani1DuJZHMXXTO7XCi9Vtu/qJXWRV6Ys6eXUzuIb8JPzKH2o5iRyq9dG2oX3Um98VqJfpZfuAmpT2cVm2zIaO2qThqXOJP8X/COGl+BXefTipq4NeT2FngXwtpF3LpVsHl7Z2kjoi+dUNeo1rN5iAfcZaQ761qTMzGBBBPogMqIjsKPlp3XyDEBWf5esiE5PHlJjjnq6d/Vn/1d+hufB4l3S59EZub+BylL6p/1xSuVMrAUsZuNTlLr+lcOUjR2s6z1oD0dS5B5g62V5Vakd+MONsQcQ5Sp7WUQQgWExKRmRaS2Vpt8pLdrTW5hs9hFwPOYmb5QHko0mKXldYVhByuh658g0CDxMkSMDsq5y1s/8UJWmaetghcI8CVcinSPSjxqoPtPW8L3c+URlooVHJMQt5CnFycygKWeVc49Ek6s9nLQ3KlzoYbk3RtbuVPHtvFewCmlzlvFowAx6cAJLBDmkjT0G6ho8fOwLK7JX2129R9OGmw2Up2fq1eM2q9rWlQ2CQK2BKpFrgvjddYxjKOF/7lSqrvwNZMBop2MqqLk2TfZtE0QdlEXWQcpiGwaG4fFNOG3X8jUV8RApK9YCgUkaF5yT/VCbzDF+Z/t4YDXbYNw+7xFjJKeNd0nl7KQG1dE0mh0JReTkQ3wU00/bA8pKAUMPKxv1zX8n5qkt5OA+01tCTWY+5LA4ULlism6jk8QSASSkbTyDt8ggSlDYeyZJG0tpjmOJwg5G1NZ+h7HxYhp5bnX+cZ/Y5nWnEL8ii5hyr8KP4cqAFCeLGQVp8qYtqqaOP9Va6ARZilWG2vfNTNBcKgNZGt8rJwwwPsTT+uC5vkPKUkbZGu9x1Fs/w4uWXzGf5Nuf+SfqbBOBzvj5fKqgCCyzrKkV/UtnbFBvteotZSbx7ThnfCEyKbFcclxSrdV/6Po9mbr1DIDNqUbTQG/t3cbhjTSw8hJrHxBg44+rzybXRdhtINVWQxOsTkNZ1rKU5UHAdlezJrBnSBIY04lTe+kj5loWqEecPSUNsSxb4D6lnCkD4YCARzgBH+67WuSPvS40qMo6+fkLn7cCPZpWfduTBW2jNIytj0q7cOLjTsXG1P/jFhX6gIRhB3vmUptb5I+uywvWTqY4W+BHyyC4sOjeUQtnEQCiPywFRHJo1HDEs/T6RWSleEph1WO6nA85aQ9mV6Vor6EVj0RpaLwCARZs65jvRd/sJ5/MsyqK1BvSSeHZjCeMiTMsyjln2RkplmTNJw+Jshbh5RmJAX9xG/Gq67tQd6Ruh9cf4jdg/lKIL5X5FUsoOrEvGVxjRljxOkaSt9tihz0UdlzP1AaX3oh4U60L4gO46lkiyj4OUfNgQj87Iad/Z6pTl5pqHyoA0vDH9P0GpSh+d0LYZaKONNtpoo4022mijm1Dn1LnzPmkoKO9vBGSU7GeTqiON2pCj5tWR35W8IfkgqjXaKow+qPLF0QCoMoLsHagXyqiYvGuE3x71jVCX56Ge2DlV3c/ww7oFVXGobQpc68CASPmqTUfioucnqRBi/6TFL+lcTxjFPzLZ0tqVnA/iDTvsd/DgF2KlDosk39La1JLnMtsEFGWVuxzqxyf5jCTJhcDO9iBEkL0zGnqCnU0MXgEdLZMBFAHTXs5Ca7MZSzldUwWPS9FxRBCKKI9V8ky1DEvhvWxihFZdaoKdLiPR/jTjCm96bWeLWHmMpKl9B+eWtZdKRmlwyze0LMarqZelwLB0GUX9S3MZJbsYfrS+seh9L4YH+YvvJDnS95XE7bpuK1ix/XbHvQ3pbFpW1iRhJYQYP+1f0jdurk4pQC99Xzq46zxMMUnTPlL8llJI4X7qu6QsVSUSTYINqMlSeUeCYfXhggQFJiUDXmxerf6jFPEttXwtabd2JwkGQNaOzgXLq0gBWKDnGQsmAMA0sQUL+c6f+JH963/ZfyTDmlacaFilsEactK6z5SLEW5BMVaAhbWBLdLm0mYfLL5+bWZYhK8/oRf6NouhieaVxSoHuTaJAmT6RD+Tr2PxyBA8+y2s0jcHVAIzS6oXyGUybTbZeLBEzquuUQVj7kXxT+AaxWN0HSWwzBRPW/7ElOjGPStmKOq7zuKIaSLWq87ob6fhZsCh7IZ3ctGwrzUyuRm5npLBylsT0Mfrjq1cDy4K5YBgVJpA1nrVTFkoBI4NncT136RllO5UOXKMnobBkNpI9u4xEbfhE+9Vk7Mz/xPH8Pyy65oHSQrrwg5sgrU3087lv6rxvjaZb1MRm2jX/K+XVzL8VYWgV4Eb/guj1dA4Pp8LofqON3oDUboqee/ui4jK77gi9VEuw2dj/luisZ0BcStxbz5s+bHQb2tZobrTRRhtttNFGG210E9qA5kYbbbTRRhtttNFGN6ENaG600UYbbbTRRhttdBPagOZGG2200UYbbbTRRjehrs1AX/3hKwCAxgKtKbqNhZNurmQ31Htt0aVUPMg82pn1qS6Arsu14kD/H5kaAutkgxnM7vJf//pXWdSv//AVFr1AawRdJKoXSmF3Y5vyHa+fZtELUgmbdd+e2vXeEet6+XWy4Af6a2hM04Rf//rXWdSv/vCVt4uA2zd5K/u2/tuuUr4/vjKtIl0+1+UtpSg+tiUL2/QXrTGRwq//tKyLAKAXmKO2iH6CfcUNqWkTf4qFJdv+ytsr5Ee2/zW+Sqmf5tR517k915DcGZoyefxIFUfpG2p94aCM6hkT1+siLv3OuiSt6xVvo1yX5MmO7nBJhARKEewJWsUByazncG5mfJ1NXcZRujoIuiUJ3+6P6vkxv4AdnXE1vRSOgLkiuaNh3CCGNFUy0VCksEhn9lyd1vO+ilSf6PEuOcUuBCIgurN3mNs1eu3sLCP2U3B5CPmQIqgFRTun9eI7/kXpcAxNWYoOcd+w0rP23CrsRidYSNLoWRt5XkrtPnCcsjPP2O121+BveTJeaiLQoq9713l0xWR0NR0wfKBHJV3vdUaXUK+0JBx+20W+My3C3PB0q8+NGlNovZdl1ygMgr8PvDIUiZ8Eljo4kiAfRG7euM7DneuanPi2mn4aoHKAqFEy1tvzJi3P6WXUb6/JmaQ/Oa39KMtQe30mEMqHZGvwQZGuSVTKauDFcKQr0howrd/QtxBnRCts3o/j/WRnRLIg7QVyCul9STIbRdBC79PfVf/II4msPceocEy6OPZYtd6yn671gdcajPOrjxP+l/D0dhHQi722R8tX86a0rdHcaKONNtpoo4022ugm1HcFpWajpNacrad0Srrsn3KjXnFG+0eavtR8JNnyCnGqehPbHr3reCDjxJeX3ZVGWlFdStzILrV0t1uUpohs3VwyJSbcpuCCfyyv5qWHfa/PtKXd1/KK8zzdT8mtXdORNvWuFS97OVKvZNkrp7WZPgrmSvBOtWi1I2m0fLh2t2dcVuV7k2U7NYoN3Zq8r+XFvIxNnjDnZ+2wLnjXjWvd/I5mhX4yax5yumo/1ktsBvdNc2ezPkyZr+GV1/E/4e2Alze2HGa9sLrq1LmUrZ8JZwhRABJEUqVxPuFN2qZ+bPKyOVxDThHyNREhDQ/nQLWYS5K2J02LeGLtpyvXFykBpP1NduuMueafBunrnK50gXqdT7sOyfUJ6FdKn6BIEd1avmssnekFmYDH2HF6+w/fW1a3pbbzT+Ynb62LY5PXUkbXmKBLHt4cZCZS1GxmZVlP8754pHZd/soONhXKHTGk3T8hDlENOEqOnp8wyCxRdh3q9chrCXd8XVaxEed+4ByUORryNmykpOUpyIx4UhKvIg/pVBf7S2UcaCZ67g1zJELbl/BT2wmntYa5TF4hBdHRqpJ0zYX9U/7cUlqWvihUd3cqGOFc4/sVf9zDlS8aLuiA1sxEymocF7EWAtPYJSkLA4Z2scvZZQ6jn5qRH6/XNstyB7+O1WWcyiwS45wY1SrDwikc/+LIjEc/zQGTG8TqS9cj3+7rMi0i6yZwM4r2mYrudann77V9PyFKnVPC3epryZjwWyiy6zzXemvamEkCoQU3nkhjcxx6qIsbB5quvBou0/RttJD0k7REHaRhpi2cl1azXVeJV9eEt7yTQkFE+t2oxdV8E97RJyRpxfZWB6999ZtutmLuowistdh0ReoRCElBrOP2E7bfzUHJGtvrvdSc3TrwmXqe1gDPshcz8hvYY2E6WuLAjsHqWGjsxRC9qUoWbNJbbPTsIr7MYUCmdPNr28PZKvW+vAmATj14JdbiPU5aWwAAIABJREFUy5+0QYqo+1jEAeDJPZg+ufu3g8m4Xks2tqffjPtLKV+yGxMh2S0Sli52yB5ZxWjDoxSjTNtmoI022mijjTbaaKONbkJdHk1iKBwYGFmIcTtQdHXYprmD5Wq09hD5aB1nEu7XHEpHJWnvfE4E6R0jlKZPevmWps6TtD5dv6dT9FSiY8TmYvc5Fv+bImnaTH7TUw/XpppnfsUyGMHLucbj5ezEpVPqqbnJReFrInrlynL4F02Zfe2cwu529ubmbFimdR5OSZguDnHe2Y/w8Clqzyej4zXvpbCWM51LIdfhDIrvN0gLuGGtlzOwattUyXvpOBnPY45L8iorIgJRIbPSHCizznM0O14za+02fkQqQIBeypXTT7TmO38Uiqbe0kPsq7rdoai6sIu/AAaq6aPyLAGZPgAqd9L2VyZYAkLJnk2QCpax/NRrPqcYN16o/8nj5aWhpT/d8kj1OmprL+/02UTUhcAzTJ6xhlFhF79+W91s5hah+cvyqiWP9Ltn8HPFdXWxADKE61GnXAdD+luTPK5MwIQFEHTB4fNrZPhkKMUU0bt88Jqm9X90UVmqpJliZ7rCjGcZ3/Q6yXKbKk6VG0EYJuQ9dfhg1ss27Vj+wHr5CM+MnWcwtEbTfZjLqBiPjyTsz09khU4X9exCHKVlMbc2yOWWlk6qZUL5jQBVTXloAShmALYUz8sVS8FHZVHUEir26XQIu1LRX6sGu1Zg3UBn3o5I+sMoWMfelWWXgs9rAc94YN4pvcual0epf0v+XqICOY8r69OF7LqTF5rwj7NOM/UWAb26KPUDOv4nzqcTv+TOorIwvM8N+VziXY84f1I07CUtAM+mI+sWn866L/NY77RlEcp6mZ3eU12HGedN/JeQsU6fBBkI8Gs0M5vXQX1T50nF9Xoko4bas/D0KgaW5/NpNaZ4Op2/YQ/DoNImShPwqaRIudcCS+HO3EiuFIyUAGjMO/B0t/1w9vWv5tFvaVDfSotkQFMZHfv3OjN00Tsh6ajX0v3J6ht93qJLwSe3OUOgM/qxHnxWBKspX5o13k6bPj26bCarl3p0ar0uUvzPKuoZUKQepF6+HHS8JV2+lKAnk0KfIHjHr69rI/47OXrbbnVs+PE/mC3LQGcOGDT7N/2Z9NTFtOL4prOct81AG2200UYbbbTRRhvdhIanzv3NF91HDdi/1bUL16R1eVzHmzqUo/fgyR7FFlU8t2w0FQ+skmGWhnD0WjYHUPAaplPjqdcr9ZzyEObMJxahc1qIj+p+Kv6hHi/GSo6oK43kAejJvbW2TarDkPaSI656FsJHqVZ4fsIP2cuZHm80Ul+3snM/bc/oW52dLHsr22vjpHQrpvsbh4n3eiqJ8eIbT3Rtjeat+tdoRuwN9I768pKWNkRt7y37B4ZzJIqOQszf2jgJS2mjUaLIXE/EeDZuVp6SrnPGmceToElHzyPUuevc/aDih0mJeDWPHJN7izWSl1L/1EB9StEZDaWUZzUOLBMZ8tnwJJYwrxqBTKFDdfpWAo52ej4Gofl8PZsZF6ddg1474M0BzKelA5xkdbitvCUV9JcutbIfmjJ3A0qBCVp9pdxpt8FGnmdPR3+NnZ+8CvMlIuVDsgluAJ5xWpX3m+kQz2YQS63DiyWduJRiW1KspQgsxWlrqnJtG1TrP4sdfQRe+wbjw3JlIl25shI8cFUeQnh6vvWtIWeKM0myIwmFdZwlW5vGY99Rsq9WiHQjdh6TSctBq8DfYTdpgNNbqp27zp0IdkSFOtqWPvKTAI8ZqLuFPBwolWNpaKh0Jzp7W+ObRSPxkUXKQWkMIBPeGsK6TjlOvMLTxmbRRZAq7nh3Hs0Qv1h8lXVx6+3l2+rmNdc0dfeFg4Oa2gau5gkCBQFGvZ/i7s6OfrZonwbShitRq5EtEHXP5WjX1LGr8htksy7XHv1YQ3FfI9Z6wyvfs8O3V5QeQFPSw2JHLy2Or8jAHzIHwI3s3DX1cYSX1M45yOT1cVvHRQY1wcs9nyFpEbtbXLzxSYyJ8g2lsavPH+vERZdic9CaXIeqJVxQoEGPpsu01MkLFexBUFug1dPXPcOHap5vD4D1okG7NN9GbyU7FfmjELH2bTUA2RMnB7EaKBo3zT4vA6A8U49ye3TmRx68MIpV6YqgovjQ9YJR3kbGwGTg0X+MVQtgjIFPEtBEN4AsIO2uDqBVvBzvXKiT1++0r8evTC3PYkk/ri1GOnc27l2/tU0p6SEQd/CyPGVdTYdFb1H3w2XVCcbXps28v0n4zeuWQRGXFX/mOuccdxL1QzgWswoyKcWJhXhIwCV7m4hKAzW5bQbaaKONNtpoo4022ugmNDZ1bt2/ZraoF8teOJLwwFpIP+2A5Yjjyw8AFgDAbn+PafcATXtorQB9Mun1Us/mzUb+gbTWdq1mwZOZDm4F0eKgtkc0TIm3xkwCr2jaPU8fQmqezoQ350lx0pLOUH0mYTXJjqTr55Tn81Y6l+dTbpZ1z2W/t7PmyQoj6DSPS72cRo6+WQ5pc1HvZiA3qg9ttK8uL/d6XklnsqIrzbLIwWxysMKzROmSmi7HdJ3EDSCS7qxdR1zMFmPtWM5H9iR1zlC9kRnp/dZRHb2kDy7mJc001DBFOQfjf3RJajriDYKzla6uCe686MjL6dJpgUWVEk9laSYJ9Sn1djw3Sd5pGwQa2nUO5BVaU6aaob9Eqeb5DAD47g9/jY8ffweiF2gLNAkEpQ6Ypgfsd5/hcPgCALA7fIZp/xnU7gGk9jbrCZP+mAiWT0HcisSdaNzY5jZH4sJ+98hcAaNeyXpAqACKJY2PpuLj9/FaTvvA/PtlCTwSDSFi5LcbNFD8z4U8opA3oLid6shIttPoRGH7O3AqFFkvMBhb32lTNO1jetYt1ZbmEKLegmzCS2rukqnz608N1jvwsdxSYFk6w/d6pK2RqReLjnS4FbcPZKVyZDGaa/i9TrGIbo9EIVf/bhQrj5mdeoSWDl5VR1s6k3ZJlACmobZqb66DddiUlgJlE+K2XyuBTycqcdvUk1eJEpdPFWSGNlgGmQ6ACv13J40db0Tm0G7u0RQPUuaInhvrKvP2CIOmR3z/9d/i3bu/NfnRe9BuBnjj08Csz5jPH/F6+gb4aN9oBcIBk3rE7vA5AOBw+Bz7w2fY3z1ATQeXif1PYa8MeFU36+9NebnrKcPVne00ga5ummWeGux4gxhIAuad7EuIVDmEa2eMBUvgg+RvI/bu6rtCM3aX849xw5rRepP7IKXAMh081tNxIFqOn4LAsgcp8KzFvY5XamyNJ4k/M37gZdDXca3R27W6/mmsY2adH2vyt5Es6FTtSJk2uJR1LgvpGBg0ga75w3LhhcO+p1VifgDQGihe2W7WM6t6HG+6I5zSR263YsApRC8yJKTAMImTvMuxIjGwyeIIoFLGmbY9lbtrJq1EoWeueUS5l7PNs0yDNwOZwiGi+m4v2AIDAx+D0qWN9/nljHff/p84nv4JUHY6HBoKFI/xyBoybZqvH1vQDOAF8/KK8/N3AICPHwgAQakd9vt7AMDhcI/D4R67/R7LZIqH1A5Ee2jaQWMPDQdK94Dag2iHx30vvM89kNyDUh4lXFLNaY6VfnV0KFyiyjDJdADJ9wgNpmi3iDJRXdndAiiK3Do6lyKPC0BnnH6URyjzyMA1OkH/S7c6rxiIjgDWNrAsnI8Iqc1cNvUuTZ2X71hGFJcIXj+HabTTvaCTfrtNkH4k2ho/Xi2/up7qhn7G+j4ia1+ZFgZWhaTaTQl5/mUDLYO529dx6bul8FvrXcq/dUVlVmYDbYpARbApAcsUfOZhqTeU9dbdfXPSkWb9KusDIHbPcSL+3kEp1tf2ejWHgKb5a41yZQSgpV6MG+LOivzwfMbx4x8AAK8vv8W8/BFKLT69Pzw+mcZzM1nRmWPayqW0jz8pl+6E0/xsfj0DH18ISpn/AICUApHCRDsoCzoBYJoOUOoOoDu80p39vjvoacJ+d4fPH79MSyb5dsI0TYWvv4HnkinrOKYMg4bEH8aYh6Ca9zPSbskjKqXln8F0LzYa3R9z1ZF+wI39aS8yuJSmrPGJBzbOc9IWNQelba9M2SZwnmUg0NPJx56oEp9e76fkzcyON6JyayGiBKiWu6nxNWsrdPESFHcBcA2UAinyf24LebT9f8tzXh8A6egc3zy9TJT9TLPoW17C5XSxecHF8tUk0ejThctxX91Gh2cW1/+5rUakgJIoVkJxJ/pgGzBgEwgdGWcUhxGQrfEULct45/wGFPpsD+kQY68abbvON9poo4022mijjTa6CXWu0UyRP5usThC6JzOkArkbcPJDmOyffPTw/ft3wPkdTi/f4Hj8o0lOzyC1lNc9lEYI7iHKn09zxZ9hHhaAgMV5XpbZTI/RCXoOHhCtNRatQVCYlJlOn6Z7YHrEcv9LPBzMdPx+/wAhF0zTVJgGFf3ZlxObW45zYCMvcRQcj13akgnyS17OkufT/y7nlNZz8DpdXm5rp7YpTtyZx4p8sugD6QeLSF6OcCHTVXnWpjz71oOK3kvB1Tay69y/Yl7fEa/ikAdyjcdx7TQ+y9P8KXGJZ5PaHrtrUu6tbzgKCxFa3s7AWdwp3uEWbE7T+3+k8uPy1abOWfpivrepmJI9y2ec5He3ovzyBcrDkrWao1LxEudT6ZSFSRt8Us+nvJlI3GA0NKUuy13aaFRtLs5kDuQ7vOvcSSetbcju4XTTSuahyvOP332P5fgNAEDRe5yO32OZn0Fkd5MrB3Z4p5J3HDLijSYC49LL+xmjbLHusf9YB7SYafh5PmJejibo9BEfnn+P+/03eLz/OQDg6elnOJ1OURZKKaGhabvuoa3qHbbN8/TFxBs9Kzs/bIj+xMov3omuAd29iDrvBjTkDUTxMoucSlPnKf+L10LG//TFzzOX416pA6gvARC63lHD1BXfROLFXd8Nbv72re+pgQC3iaJvM0fxGKTEjgxPnRfWfN186nsUeF4KOpO8AbC5wFuAy/6hbYtPa1lHeUCl0bO+tN/WxMtDolSSfkfgszV1ntq/jn7k4jqTGZRApdg+OvW492KGjD9YO2VtIGq7tX6s5HyRBh3I123GYS4f7UGeBEjz9ZwYst1R86zZYiCbzo/S+3/TfmSsbQ7dDKQdf6lvjwrMBBigyYb6An33/hXHl29wevkdJvUOAHCcn6GgwW9o1DCeBq2ReBoKi/x1iB84lL+NB3hQCd4QAg//KYqgzzP0Arwezbvnlxeclxl79RHnk/mew+HPcT6fbVqT2N91zkcqfu3ayiFK6QsJoR44uIzxpZeHN4j8Kkr49+LNWJLF1ho67eTSeNGza4wlI+aQyhpj2m9ZVwHNCyy3nNWAvFcCryGtjmSqA8N+Kyiv+ZQ2cXR4SsUofRs+5HVwnGn4nrousvQ1MDcI9MZvXRngPwpSK3yuQ5LutJiH9y3Pu9CXsqci/ISznL2f2a6y2prn3Ducm8iaRzPP/Bo2IU2h03cFkB15WDnQ9H1KDj7rckgdTiNNlC9Fzi/TdP0ThD8ZcYsAi3OkWRID8HQSxuPaDa2RBzTWyBgAUgCnjbBEygRs8i/TcQj1Dv45h74Eg3edO+46eLKK+ShEH2UN2+vphB/ef8Dp9RUAcHr9CgrfQuM95nk2KYmwECyo541PJ+DRylIUXBxypJ8Vhbt2QEmYVygClmXx7JdZ4cOHI15PRvbDfo+npwc8PR4wKRfPHcxOIBXK0p/x5mW41giekwOHxPEjN9FJdOJOigRghsSSf9IEdhhmDjwZa9ce+DSHROZcQ9tIOz2qa7ybI0AzsL8AaF4VKLLk6Ui1i22oxbZWunEv+ccYLNpf4iagksdypHvvpeABzeVgcXwD4B1hycpYuXXQw26AeCtgeKu4VyfZu7eGmkUuI80CMY0vDGTKGcjyyKc8JLBX9A5rBkxJSlak4oUXmbhSvAxOVmOb/OJYxALJzxLKMwDXnUZntiSZ/XKA04XlbbCuKKmUxmFT8LQmrDzYTMO4vrWm2YWMfDZRvEhCr8osOBcwfY1yXY/Sthloo4022mijjTbaaKOb0PA5mpVj5sOUtnaeQcJiw86Lxrfffo2Pzz9gpz+A9Pc27geczs8gkJ9O1qSYV01Hf51XM3pVk52l7hmJkXsmykeepI03czEvXl813n884nwGnh4eAQCffXaP3Z5w2BN2u8knn6YdW+8AwN8KxEb1nSPHPorHJF3+IQ1hOtym1Ch7OoHIExodeaDBps3zcZIbzfEJjOjg/xJZ/QoD1wFP5aB3k4/Mm/H400AF9nkZyolLscdmQmIvhrZB9eKy04vNeLDrj7NQAFp4V/MiXjDeLniofE7Ces90vVn8zsXX7HlQrk6vfJpvL+9+r+nb+zb7js5azd3+WX+GpzhzU+5JinwkL763omIZCJ5+rYMHTcwjV9wuR68YqeTNLXJJeEoezYpHsSgrRX/KubrAtC2F9O5N1N/LjT3mrv0/Zcq8l6w/T6bMszCWVlrPyfOWvZdsCpxScQOPtHupflaHiSUClvrN3p4GgabJuXQNVjw9QFBEOFlJ3n//LX73j/8HSAH3D/d+8wwtR+x3wGG3wzQ5OLJg0YRlCaCSlJlSh2b5CNPmXGkJQLzG0P6KFC38518LgEljMcBGT/jwYtZbfnw+QWGHn3/5gKdHc47mbgeQ0lAE7Nz3uAbG7lvPVadSpwKQ0Pb7s6hSb180GDVL0tK0AEABB1Bzww4XrnnDs1qkmW5F1jYYJ4muPfVSAxI+Tp6gzbczLsX/9PHuxRmMbdtexoatBvXiNDpbS5bzRIiXjRNjHvV1QkFnS7vTVwPQVFwX1DC2zQ1AtwJ7vXFHAST/npF0K6ivzkcpVKa75jYHi+a9fyx8aF8bSFO0ZCtdmMD6G+GQdrN1MhnxpzmT60PNc89yHLEvB+CcSlKXIlPcDvigK35m30bBxZBOvUf9tJRP1rfn6dgI0mKJxrW15Vf+O0QS7EcE8Sx4jGGfgDQLMqXT4nwzUWZjkyBvzZO585pux+2yHLO3Hxo63ghW6UnHyuJAj1t/6K7KmvWCu73J4vT8t1CTxuuLxscPP+B0Mms0dzvg4WGP+3vC3t6us5sUpgnY7RWWxYTN84zz2Rw7pFg+SNdsesBIQkML60Sc7ESAUkyB/BqKAGKniTCpOxyPGu8/PuN4NIDx8f4enz094OF+xyrG7ZIHgLMNdIfMB6B56Qi+F8S4yHlMZl0jsJi8s4+xp5N19j6L2PPJNx+5jUd+zYlV3ujIhmSUa/4UDKrUsdu20AMafdroRz1Nbq874vfE6cy/HrU3bbB0zP7WJEO6+UA20rGhLIMHV0kslc5FGO/cQ97XhUaBZ4mr6zj5mrCiBLcAhoNx/c/eNELa1Tw8hXmMy3mtJ/kqzBLqHNWvNF4MfkveS5+a8nCywK/YNpL6Xb85KN2jz4BhHjU1ZN72KUVw1ys3PZqsEqKvEIBbGjEWy6bx/bf5d9FINhFb8bU9+YTY81Dn7L6pFiMGmz7MTuN46+nNY75xSLKSMdjkcREFpvwjqYjrHX8OtlzbxLwvGJ2JGPRoWkUn7sFwHxwbPA3gdDxhPptjfXZ3GnrWeP7wHh/fP2O2mEsphff7E/YHhcPBTDXfP+xxd7fDfqew30823gTaL1iWBbNNHClJwIehKSbTWG6ay9/4Y5/jRg0segERcH8wZ2Pudge8//CKH949AyD8/MvPAABPjwfsdwqA9huEliVYEa1nJ4bfxCR6HLMCF8Iq7qgeljm/2Oto/jBjqqOoGaz0j8kGpmAKk2fm0fR3vNqGFn9MCGvuOk9+++/o9Th2Fhylcbqqrm18eisuj7a2W+bS6SiorF6JGRem7bJbYCzHrBqYDvgAb39ZI/Y/E4NXDMvlKXo6JZuNYETLQLo0oifEutEAfpRpUzFedy2vBpCljnw8bZm08FP4trUqLea3lllrgD1CcYdf2ygneS/zcKebQrtyOSYvanawbiLJ58Xjcn4cpIc4oV91x/e55XDR0UJZGyBBnUq6mVdIMZ0OQxonsAQ2U27Fw7C4GSAwgBryLO2MJ+2wkwvRxu5FRizJIAKL0nWXya5zIGpjSUCxaQT9Mnlm4BMoWD9AdTaObTPQRhtttNFGG2200UY3ofGpc7fohYfBrYm0YYowz8b7uMzGo6nUgrsDcL/XWO4Ujkfj7ZvnGcfnGa/PgJoM7t3tX7HfT9jtJ+wPRsS7w4TDncJhP2HahfGGXtxtQWH0F6Fv5uJN11OZ8Y49m5N5JHc7haenRxCZvL/97j2eP77i4f6Az54ecH+/t98EAAv0EvgSWX+e4jIpAIv3oDqxhkbKsQvsciJhnW3k5cxd79z9pT2P2APgN4tJzk82gndeXldu4kizY+QuTw+1y6nHo1gbRZfj83ZR4dlRn3mUK9Z/5gfQGXvZy5nK0OO5tIGuGLVPGcKjNHxzUCPMsxNG8NFzreGFwJBHGrGojGCnBYNQOrszS9ihViT96eadcLl5PjEJsyPXVN9insyGiZ7telr/E4iXAImNQ3qVZ5hP/EieTBNemj6P+FeccqMXBpSjBHcu+bj+lzCzEWYPlVLeoxmvoZd0Ptehkt3N+iH2M36nvadQJ+HRF3o7xGPp0A+yZXRAocr5kgD7ndlyGjB84DMPn6c9KEikTUyaFIbI+iCoR+TZjGevQvqYGZ82DzjFlKM8e0QA9e0G6pw6Z5laIaK1cXn2XtGWxaxTPJ9e8Piww4RHfPHFA04nI+DxuOB4POP1OON0snHPM55PZ1+JhieBlMLd3Q73DwaQ3t3tsNsB086BPpM3B5VBAQBanFLAfZCdSlceMO33Ozw+PkJrhW+/NQeun+czvvjZI54e7nA47KB8I1ugdXxwOQFYtAGwDqjGO1Er08JZW6i7+TuwSpmsxsaeeA4PGGPvsQ8K65sNb6xkv0uHBuEXr1c695wa3e+FQJMaBRf3G93ddDUuRT86ecaJ6vErUXT2o5hjEiKAzyrwTPUDTD94o7PRdLApDmyGuLJxy5oIITvGLk6XWeaELDjhtrpyskZKBIr1EQiDzU4Ol4DCdpoR/iSxb4jT0YZL5wz+KBTquyR6wIRyLeokOOYTtwcNSg5qsROzUf7SDVcxGI2kK8gdLyMiCcOJcqbloD2wsvXmAKQ1SqY/m2KZwKbJlTIbd6PlHzXdIvGR0sBSeBYooqLs+4Ls2Z84TDCg4+psym2yJ9FM04RUdtenev2rjZEjQxjrHCEFpCnnOEl1jWbgKH9W59z5+IHtpKxArHQEGZQi7HcTXu0h7Mt8xOFg7gQnUiA7a681MM8ax9MZx1cDNF9eT3h5PeL19eQ9n6fzgtPrCR/fv3hFURNhfzdhv1fey6kUME0a044wqbDze7cju8lIsTUnwH6/x93+gHu7a/zu/hFaE969ew9MJp8vP/8Mj/cH7HYqGsnpxXy8fDORBqmdz6gFbkJZFx+GSOj+hQjCgUpZn8A8UUzj/SjQqwFLywGrB+LxzS/O0PtTBYiYh7PuAqkBzSaIbL2PP6pKPWs8szctEBz96OA7olKljrVoNfNOrip+NnjRcVHqxGh5kEhxXKaD6fohCZDmRrc0As8ERg468mv+at/sB66Rd4rE6mtXFYk/62mpliyL0yVDk98oVRHPBSR4+xCyal2/F/PpEzDcztPWkRxkIng3XYOA0e2gL9qnDWBU9KVllNo28ShyIXl+ELxzlFCUtbYXj0y7HaaJQQfnQotwQlwXLQUUJC38HFVOZ5OW+GjEIHiBGfMuFgzo8C06WuPsnGmns68PsgB9miYDQNOjEnRBQwv6nQFS/0L+xtSh2mM7w1bevnYzvhnIjnB4wxLl1xq73YR5diMfMkf+HPYpcxCAB+y8EiyLxvm84HQ64+XVTL0/P7/i+eMJL69nvFhAejotOB3PeH1ZsNiNNyDTQNQE69U0PHd2Y9HdYcLdwVTs4+MBh8Md7p8e8PD4YHi+Lnh+fQEpjZ89PZl49wfsdrZWtYa2O+Glq520LX5TTJN/4xpfrOisXDupD2AUmy0jpiR8NEeIRz4R+GQAwX0vH+25tpFMwRMQnwcnKqgJszCh+olE4frO3gXwodzWvZflqMeN3kZGGBmgz+u1Ci0Kr9f15vIUnWRsavwTUAnEepDohwkJYXwUbcBkdCYB04sUkNo3kbEMYbFnsxeAWnm9Huqy3iSeIzma3Mk2argzft7xVvmO9tNCurG01yKp0sqWDUAG8tKUFZ9Xzr/KtFIz3sTaTt3P7khbTthg3OZlMFzaTxQtYwSKem8GcrZ8sdOgetEw3lUyfiUbV5Hpw5d5xm63T3gJ2z2KOiPIVakn/6uq36wUOVBzffWyIB8o17S4oFvcKRhFGfdx+pR22d55WXA+nbA/HMCvygxLOCR9TGWo9J08ObOTMgWdC44h1+fr8K5zm8+2GWijjTbaaKONNtpoo5tQn0eTDSUyzEzILipwAzBFCpNyaxJ2UMsCRWbTT+Stt/+ECVfC3Z2y4t0DABb9Gc6zxuk049V6NF9fjcfz9XjC69Gt71xwnhcserG3Etlpdut5mBfgbG/2OZ2B4+kMIuB4NAfIf//9O9zf3+Hp8Q4PdtOP8WZbjylbYGxGc2bU58pA2b9Luo6FYm9dWsLRr5XugrIzrMDQT3XzWDrxRAFhKpzidNEIkeCn1LkDxPIiNh+qIW0GCiPE9Oid7Gso6En4WT8OpnrUh/u3ONDmL7hs9YpK20kkB8EeeZGkaNS9nO01/Es5D+koI086+iOkT/QA7MgUXwTBw8+nn70Oca+m5ZV7Ppmn0/MpeTqlb64f3yF/G3tDSZ1Vq5BaP6txR/nW07AYw2lKrNak7PQEDdyFLtvB2AVUdHYWJlvcHdUjR9/Hkz28D7Uew0hOnc36hKl319jq9iE/yk/4EPcNEp8UHILLAAAgAElEQVQ5NGqzdwEgxftQgCbCcl4w2yVxu10OIUj4JT3mr+oRqnEEEw1QmOlkTNbqd/nYtIpcQxkYbqfjCYe7A5u5Q95MBN12W3PHNLRufYqtk9nrHhqbOjeW3lRWYlyjaUD3oJRfyzHtdqD5DAVgYge5pkba/8kOita4g4Z+mACY9ZSLdtPsGqezcT+fzmecTjNOZ3PAuzvfkgMjJ/tEGo+P9/j5l1/4sGU+4uHhHtOkoMgoqV6YkHzK0x0Wz0GSVWRF5uzPkLd9Wb3Np01tjEH5k4hOCjc8ae6qd2F+v7hn6hu9t00OWFBcRpaXZkbSqJF8MK4/G1X+OBOqyLeRbDefFL85xV22Ptk7bdGNmKC949h1AH56xzD16ZvGuK0AVyS5o+KvbB8pGKTcVDkwGU2Jk9MXPiVOEdg0XGqAlA/gtMOPmTRF8BnFTy4SaFC2KbKjH8xCijgxf9FX2+0Ofgi2DeU9Sp1chzKvTLNbXY0HUUEhtLNhnpUQJmRTyRF+CtxGDDaFWVUPMhlosCDTrxl2A/7aMg7+O2kH9Y2T2m5QATBpLMsZREdMdILW9hY/ECbcAdMdTsePAABFT/F6zezj06CWgSu9aikhb/9kbcTiG3nf4fUyyYeTXxdgAnG/ezoecbh/aOQQX3zQMEEmhfgtNc6FiA51d37+ENDUxBQ4XRsXXJPR2sVpsl5BNUEvCoo0FCl/i1AivWVm/uHegri7sbG1hp4I+x3wANtI6GB2ggPQi/Z3rS/+BqEwQgM0dpPGw/3OHww/zw/mQHeN/MgdB7j84a/xf+wLjFFwspPJs//oE/7NpYBK1yUjkiSsAPTSWA7Q8TceWMTeqTy+45Gs6RWONeKbgVpNWBHZCwLatzg0QWQlI/F9sWxz4ne2+/svXPNRKrz3H1zoQMo/mtQlrggUa5LkKI6S4NpIOAWPGTCkGGwCyLybURghOH0cC0Lm/ewGn0Lc4uc4PWb51rwPVcDJHhua0PPYIFmoNQB0PO8adRa8TmxVpJpxnUSUzs4A8LNUblaEH2cjzZT4+IytJGI0eAn5h66SSZKsx/Rh0Y0sdSiRXl6Rt31ifVIqWWhE83zEMr8H6W8B9RGwQBMEKDximv4EC30OADgdn0F3j1AT34WeQp/sRZWKJ7JkfHX6gm04JcznY3EjzwjFewsu5xeR9lWOdB3m6dXcnnh3f89yj2VoSeFLygPM/Bt0BYy799HGMMpxQos6d52zPxTMcyQMIWokrlNQduf1brfHeX7xGFVxBUiVwfZaqdfUFGxaUJQnJXb9FW9QucUA9AzC2S/IPezN6me9aAYeyRs2f+QD58EYu2+nCND2ExUf8gC5DZHwTlKJPCwoFFuo7hCEsMHHaxx4R8uGZ3Deg8DfxAkKnk6da62bxsGcWmDe1zZflDBoDXxmjVeMZ+o89XtFKSl+Vs7zSkZnI49uc1qfP/Q174GoKWYwVAWfFEcUgr3axAigwjEpT0qSELINQq5v5J0+jyOwiKXg6UtxWuSBCPMAiEsOSHzMq6jVyYpCFB/Hu8NeORvpyyLxIahQ2J05eZ0VRg9VTs5mxdffOl6aGSwpfbohOHvHc4pAZcjftM3Yy8nDfZAFmfEtLWXbZQbpQQ9TMBmd48w2dNgv90cRzvMLzqdvAHyF3X6O85tPUMsCkIMOe5xPR9xNj4JABTl76jiRXebpEE/SL1qQ6X5XhekiV1ZsZ1Tavw929dxRE6OHEEHzcAKKh6Z15B285Ul6YT1A6ggKg2lm49y7dtYAVq7R9A9BNCmRKUe3RpP2OPPhfmqPuIEghMaf9sWNaQMigFQ4RJWHZ2JbQLksC9yAbDcpaG1uJfdAk1U6nzX1wCmDHIhGAOSSRKPjMcXPYhfQUF6e/PsThQIi6+iOFtJggN6BhfTIIp8odOouPz4rzA14fIVZ6o3sHyMpRczgC121UFiSnvH34quCOBqIjspwRRtpge8cTN7Os64mc8zWspiD/mv5ZK+EOmzHX0kML7UgYjFWhLkqHkkXJmCGFBjKwKQgYfoNhBysDrAToyegxCQXdLIWUutLCyF1AFiOX4nRQbnMa/hE1mqIQQXAp06/LAkDcLYdRVGjtff5x0lTjun5ivm7EqhM8i94Oc2Vg7lHs7ibnC3N4qDSt1CtMS/2mB+/pEzDrf8iv+v8DOADdvsZ046t9dSA1jOW5QOUMt42KOd+kWeXqqCyow9LB+8RuS4jBUrLgmWZTe4d+kXTUzhJZpmxzCcs8wl6MWB1mY9YzifM8wmaGe1pt8e0u4Pa3UFN5rpqNe0M5tFHtIfqKeiTAej59IrD4Q7ZavKSzqdMk1yj/KImyPrpVOEjQOoLvrv5brvON9poo4022mijjTa6CY1NnftpVbBhknnwIzAb5qbCHOZV6gHAd54dX7OW5uPjEFjePC7lf5iMJl288Uf2frmRQ/BBKKWwLNoOKaNJnnyqlA2m41FYLGZIV/fa9XrUeISKg65JptziYbjZEc4XoJvyib2YNgwA33nmB1gUnvzIPsomnjJ3acL0ef0z3EYyrh+IBmBxSiGoHCdzTcexNbRdVrH4ExXcBQS8NjRgPJZ285wbCZ9PM6Zph91O4XxuuzTlQX+7ggei5tQ1Uk4TFCIn9SO9TrMLekZRG0zji3kTkunwVEEgeDkL4nWUQ3bYtecvlEnxUcignrSaZsDCDKbv4LmKR0zc6kZ8pNvMMjEEtzj7EaIlWkSAXnQ0C8ajxuv0KK9e7o1Cqrphhkg+RN72lsk7Anmvpnk2mVbXpTM7SDAzKX6fwmJ2iy/2TEnAno1pb/FzH7ToBXp+wTLNwNnMIDmJTL9wgtLPNkiHb642FPlBCuYeZfG3j8+2s7qZhQV4Pb+Uy0g9YTnbJQKnF5xev8fzu/+Kj++/BQC8fPgBx5cPOB9fMJ/NGd5aL7EH2ElJZnmemnbY3ZmNO/ePn+PpZ7/A0+d/grvHLwEA+7vPsDvcQc8vXgyuAm5m7LxowJ7UozD7SIsNp6BkQuFx6ooU8Jlfkxw2pEUrmbX2eyLMo/09sOFkaOqcCCZDHbdfZ1ejKfbE9TrtnoJgFMuYyUtR1EC+cSfdiGtVcaRkOoS7iRPlZUjETcumE2zeBgiGIgI37P5v6TBTGe90dSONFyUy5eG+qS89m67R1txHU+cmTjTgCCEhDVjd8rqI1mUy5fWL3xvS8eUQkTsfRQPTXPdZfc3Lw37ZPOH8Yk8VOAHLSUPPGljCt8HhSKWhDvbnI2GZFmBHHqguSacnytUf0ObRoPTUiqTbHcvBV3p9kFWiBCauoB7UHDdq9xRwAj8JIU1JwQa6tA4cRG0j/1V+LMgq8ivEr2dToXLel4DHXgpTuaYP0UR2fXMQgFjsnEiu8nwBpU/vppL1ogFFma2INlCwe7CDaQv2Mb6rPB5sm3/dwDOX24NN9mmu38o/SKZokGYz55tap2nCfrfzdlIp8kByng2wWuYJi60HrTUWfuqKA6MWNE27JZesZEPFYGlZU2NKlsVTHixYuWhJnA02fNnj+PIBH77/f/HtH/4eAPDu29/j9PIByzIny6AquVOox2UBiM44n484vn4AAHz84St8+7u/A5HC7mA28Tx+8XP8/L/71/jyl3+Bpy9/BQA4nT5auTRejhbQAoAmzJPCfjdh8vquk2/iNGqPw3DIOw6j5T9JH+xBJncKuWtUr7xG0zdw4orf6AIiZGaAJj/t3keL9SH62QOYXfeVd4apfFYgZmCcUhGLpxRhWbQ9QifxppT6LO/BQLCHlIOeaMNDuy8pNthK8szrygSMxBwhU2KsM3b6wO1v9ILJl+7ohCvWtPG4OmuPxtzom4gvVBbyjjhlvVSSS1+TISgsZ40P35xw/Mocf0WnPUhPEUKL1xZpaIs61Wczpr/QODwR/EEJBdn6jG2/7L3E20Mj4zJFABOQoZouhLvXqRG8HcnWLAyWi0AzGxFrdvtLIZPosW0IxuJV4hZeXVa27dT5BhSTLnU2LHqx4MYeK2fLcrGzBfnGjkLHK5Y9q+EwZvRyhSsXNRZ7RmTqrAbM2dDe+8d13K79jWdurOWMuhIpjJdK+OGAR3wOR3nARgibDt250SqZaWHSMTnNc5h9VFHnm/bDWi/QsDvRMQeZsv6uIGSq0UkbN4O8tO+lcJZppEYU4Yrj+eg5qekBzx/eAwC+/f1f43d////g5cO30Is7W9OmIwWlQkiQQpI/yKrt4Dk+QMfZO42zPQLq+68+4N03/4w/PPwnfPmrPwcA/PrP/2f8/Ff/I/743R/YWZ/W8mqNedYgey+6AuH15RkPj49hXb/PSyjlTPR445vPiYFIuGfXLh0gtZ5MvsciOK36LUenRzP9NWCa7Beq6d5MeSY4K4ANVjqd7MUdeIW0zmhFi5Zt8tjgOZd4ChTNaNfghQRxcvE1oLRGpA9crqyzaXcgYtyijRU2O2gZfpYoy0dzsBllFosTHJrshRsNaR7kDXMIC3dOSwvvY5bK1h3rrIo4kgq8+hYye3DOjrRazoTXbwA6GjelXibT5NlIUPOOURuACgDLB+Dl2wX3nyk4q8GnrRKxW0GNF5fQeBuPkweAmXGLjFgI04kRFHq4OI1kaKV0mbDp+4a3lWrtNPk+Dd8hxiz6wV+PTRBKtRKvktm1SDDFWRTehyfxtV5sh3YE9KuNrzGpHUjtQTQB7ADrABLzDiCy23Ynp7c11u5ovcQ7rzXhfDpiPr1imc8+fJp2mHZ7KHtM3zJNBlioHbM5bJlY5DEK+ZUAaPw9sX11XSM/RxMJQI++XCmfv+vHFrX448QMV/PtwVY7F0E846Ro8tgxqjZn0paTDZ1tXynUPwOV0S9h8GhMbLmX0qTDsWhMII0Fig3sdvs9lumA4+sJ3/3+H/Gbv/0PAIAfvv4NoBcoUubbUBlKkyuR5FOSsmd4LKsTg02YfkHj+PoRX//2vwAA3v/xn/DzP/0f8K/+4t/j8fOfAQCOxxdjvhT5AQMnRQpa2Sl8zjr6KQ20BIvCp8N90yAQcwwBsM9k+2WnW1Y7mUezhS+2zUAbbbTRRhtttNFGG92E+qbOOVnUWyM+RRtQ8N645JfEe+k9Tml4km0iQ+VRTFQdbUfxDHp3h4IDMOtVXCTFxNQW8bNBhAawwLnymcdOlKPuxcrGguJHxPmEkXtrjCG5H20QJXkzr2ZILYxl+MA7ecuPe0pvEXJhzpvZOoRdKcKiCYq574tnjLlQip6SX4m8zCsRKbNNdT4umF8BNbvv1VCUTwWCec/9OkxNOL2fofU+mgosrsFpuIlu5J+qUG2+j8eoezL9u6Z3M+hpiMO8U15XwyxD0ISGp7KXKh5N7/1gnqSyqyR97K/cXo9oXbsb1JmkHY1P9wpWkBkIv44RC5bze5yPvwPpdwCAadKg3Q4KexDtQWpv0+wA5Z73ltMEDWU8n3Cb9CZorWwTthqhNY7HJazJBDAvM14/fsTL+2+gT++hF+NR1csMkAJNe6j9EwDg/ukXODx+gf1eRR5Wf9tX5Akyn5weqRU8naGE2JJKVlbBg+QKsmbVo+tQ7e9s1m8xbSK5+iR4w1xyJS8XsSchwS1AV2TP2XRuzZJsQpjPrdlXxVLyLo6sV9PNX+tF44c/foevfvOf8bt/+I84vz5HUpgJycXzcTOcYR+KqcPcKWg8lNEyp6hvYLY8qyWbloK+n08v+OY3f43nH77Cr/71/wQA+NVf/C/48PzRCRb3OuT6Radz2jnivQyCxQ0FlQZ572XwvJK3sbKXM+ihAwTUXXfjQLODsW1HUZGTmoxrf7ECu/oKvUvOhGcLXpVyHB9UBGRpXpTHpbDLbnG7/Rb+OuzI8niTlTfbhAe/G4S7nKXiyzqKErDMV5BwnnwhPSe5xkT06OXN1sbFeJbJUaoEprxJImIdc+h7wrKGaGG2JDm5Pd5UVwb/RuyJc7JWVDOg6Q+ldTs35wXn02xvN4vl5DoalgHYBfXa7VqcsRzPUeR8mcZKehPU2QMzIAB0BjD5aQ6FsFDmtq0RmAHkYVI8m3e2VrIQ1vNNhShGB5lB01pkN7Ijt7saMzPRzuM6KiJzIZLicAMQQ07T4k27WM7f4/T8N9gfXnE4mM50UgpKnUD0Ar5GMyyZUcEWa8KyKGitsOidzW0P0AOI7qGU2Zihdvc47Hc4zxM+/GA2tLx8/IDn734Lev0OtBz9Gj5idbkosyv5w8sfcT799/j85//KnxHt/xK3axSDTa8ffKANL3sKKsNUOje6zskjl79it40RWJ6pUUrJti2Pv7QG2bWo2UXFGojWhekFaipCnChZeKhjCKlL8vaEqZNZbmHK3a2r/e6rr/EPf/0f8N1Xf2d3itu+3O60jw+tNzz5plTyqCVUUAChfFmGDpaDuG7CljFffc50wn+jhpoIrx++x+///j8CAM7Hj/jZn/07wC8NCx//9PSUliKLE3RL7O0pH/b5/YqRPdXhOl8RfIZ44OWEZpWuuRlI/pY2CwVFCgtcJTgS0EuBpCbml1smgCNnFY0PKpk4L5T26yS0Q0sUp/UeOGc83OvFCTQjJkkJ0p+5goeXwZAtiwFFSoV1r2YtfQwg6/glbQjskWsOUfxeSJIEgyuNN7g8Z26UXfRs7VKpQ1O20UbQTozr+NRVi98lE560X98V2JsdqjPOJw3lFnETAaSsseKGyP6P7fyccYayRtHrV1QIkdhVmWvUNv09tKKhu5RJW4nW8zBjHS6SYp1tMYyiHfEeeDJDysFoHte0LV0NYyKzeMWBQLY4i8TbhvJ04UdXLTXtWz1tHn+FbjTAKu8fYp1OS9fOXkAD2uzW1cf/gsenI6YpbMxQavEzBWaWyXJx30Nz4MkKXEe/v7Mg1HR1y+kA0CMmPOHhyYDP777+AXj5Dsv8bNdnGgbKDWgVAdqu2zy9w/ndP+HlcI+Hz3+ZZRjpDxsw8cF2NNCGwyX+8JgQhhiERi8kijxxDlDpHAQQr4lMtSwoI2NnM1cCRSHazuZAL4CKr6G0EcryFsiXQ9KOQjmGPtAAzQUvzz8AAH7/9/8JP3zz9yYOKeho9wwxJQXMKSeBHxfXQSmfLE4KP2NpyzzgEJYm+io7U6rYIIqAaVKAXe/6/Vd/h5kmfPGnf4VdVJamLrRekuqnuIBIZ7XlviYcIkM+rt9g5ftyisGmj5eCT/PtOlWkCvUBTW4nOvUmj0oghAXGvkHJVjDK1j9ULVycKkSn5LlPdg54jIKFTknMnBW40aVgnGIAUhOfvCGKGoR9uywa57MdbVs4dDqdscy24Z01lnkBP6dSKQU1WWNp8BAAmKkfzznRFo4PSpLL+izrne98E40gYnYo7ELXuRhJOhWXWZXS5i6KHbREh9GpcR7E+6IJBJoI83LEcrbneU7mHw5GQkdhvDZh2mcBYOvIGRPm8e6n9UDhZgkKHS7AQKNGVJpu6iceWbfCSultfPJmkCkiixuE8rY6nqJPv4GKleNaaLqUpK/kGiAzQQDdtUHpz86UZVMsRpaLpNZBOD13Gb1geTGbI+4fj1AKIBUG+O7oHYItYV8vwb55EfwsttDeSYNggSLNAF4wz390GBfn4wHn4wugz8ZH6trusuAMnfgLCJP+gOPLB9w/mXMSaTp45wQzZ6EPDH20LwV++4qPAwcseVmFsMadVvZbQ3/n/suI41Zvl0NsrTXOxxn7O43djm+4tLwXBSxmycI07e1NfFJOWniUv0CWM//edMOQ1sB5nvH+e7Pc4tuv/8HYWxctsgthwylYMAe0ZHn+/+y96a5tOZIe9gW59nDOuUNOlVnZJbWsRsuG2oIBGTD8ww9hP4Jfzg9gwM/g//5hwxDcUKtb6uoasjLvcKa91yL9g1OQDHJx7XNuWQZ2IPOetTkPweDHIBmMz4eyfPKLiPAaX2SazrQ7xWWhjSIk8LbWCnrS0FpDe/BJsLj/0z9g/+YHfPv9r/H85G723929iflVR3SycpYXJZExly3kZLxgFfgdCXzW4fKmjH8G8eD1MtCVrnSlK13pSle60pW+CA2e0Qwrr/aqXnzxgBAPXLuoTBNVKtOkHAt1Wrk6Jx6Yp+N/87MXUkYU/i9WOMEtHbfJTe/wMx5plZ1gvrEWChQPlcOfeZFrKa3Aw6oo+S3zgnmes5in84zPv9zj00/urNHyaGFOvs2DXTAN6D2gDxqH2wnHW7cSPdztsT/svWbzlYj3VbGCj5pa7xA3q1lbxrgrahVFQYMkLafkfu5T0Ea4v8EUkSIDbn4fcLtDu8MENT3Dnp2qwyzkjLJT0hKnbVtbFMBt1yyLxZ6rzMvlYog7UvQX0AujZ2SrjuPbMv5f4rWyxZZ42Jppu4WVeUg+6noKhovXhvjFE6Yh5X6Zu9j8bW6L1Sr5vRFOlF+vEpZ/DvTqqvaS5T3MJLb+N3RVukXiztTZZ9jTP2C3d2pFpRa3+6JUtpNElh2liaI8jFNJq1pec8n+iflPinA8OI3R97+Z8Xd/OEHhDK3SGf10RSSl6XaVZ0zLwtJL6VdFDXGZR9J0+nyY5i7VNekvuRuYxrUidv4QBlGzV5ap5K20o+Lk3uF4A5g7KHqG1mxH3DrtqrV7TIdfAQCm3Z2PVxTKlhrBjiwrtZRikIYm1ALzfMbTk+OjYHQecEcAYix2fjXtWFDFG2FG9srC6Gop9AcfF86GplJco+nmba7hdQp8W2s0tcKkNbS3l6n1hKfnZ3z8wz/gm+++x9dfOY35mc37FSOBsnKW4aIM9TIxl4etrfNay5kLQNcOjofHVJobLwPxDhnUmTJ1/KodeZv9yYmKQChhmgAwSgEcQGSVbp5Kqf4OZ4Tks9RFaYm8XS+FeK6HvSLRFdqBcYKI84HnCDIpPoU1zws+/nSP3//tL5jvfRkW5QaXrZJ0ddeAPro0j+8V3v/6Dl999x7Hmx4b1GB4iCTByvyCzbkkYMOW+Xp+ot3JDWWsJwP3LwWBwm5Cu/kx53tFCmoit60GwNglbi0k25nyTE6kQEbBzOmgOue1XGbkCVCSCF+YurCqG6t0yQB3Vfwk6DhAkgBg+bxtCG6ZEOUFiZO0ld0zv6Z76JMgADqVzpiqbL+aF0ZA5lA3j4JMkR0L/trMVzm6TrybWjMYQ09n34HFzLDLn6DxB5Dyx4tCffllFyabFSXbgkE+lxc7CsyQLWhjefzZdmuA8/nk056xWAv32otN6pB08C7Op2Str9/I+EjgswyduRHqZ1AJ1W31ckFTUtjK9QUFoACVbGbGOZCnSwBZb0rFR9bqBpP+C8zPBCwPbO7aQak76MM3IPXGu+59h0yFnEQONks/ieIQH5U9BAvjntaMz0WGc5eUDdlMgmfjPg8Qd6STtHXubu+cbV2HPNL/APyZYmLHQ9wf5UVIWMRorTFN7n+tHdDc7XawlvDp4++ko98Ir+e5ejIOSp1egfYoE/wWO7GjGdbzQpJz6XecG9nvGJO9hFU9ZdWgTZeBRMoqVmdqs55M4Ck7dVt0ajMrn0N1ho/yPF8yEzsw6TqUr6Tzg9VB4FlkPeADk3+jMxxETueL8lpWzzSGb49so/mN2R16t8a9GAAA88ng8++eYe4V5lPQrJ19GoTz//APAIDn5QGW3BlBa4CJnEbzjX6Ho/pnoN17zGdXzqmp3WxD+tV+8+NBhC5MgHOjxmvnx7OXOTiQqUq3XrRIkbkQOySI43Cpx5XNfZPOBYn7KCYFX8d8snBldxdbGTTwALfN09vqlmV3EW2PWD8UUHANFaECQGSA0YVk4FJyq+Lnaa6GDz8l8Jq5Jz4Q+TfUK/sLtM9zr7TqBQCTJEfuQm3/i3lDODsXkGYJMDjQjBcZ7SeY53/EdHiObWwNYGDYu9vOQHU4p8nNhymiaNQ6yyeADHb2McwX0eqD8VYgFoOnZ7fjNJ+dRRSCgrJsAYhq+eenq3BRhnE3AYyFIxCRLFNkbcb+tHmM0XCnBVDCwHgAIsS5lv2OSRtM6mvo6RaEhQFN7f+fYmAL3w4Dha+8h7SeJH5WIXwlp2mH87I4k4RKwy7eqoF/dQogKP40KLMSkBctvwCY5oHwOz0wHYAkAJAKoDLnV8fHiOcxozZTqwg0b44adib8/PQLzqdH4Hjni1Zzj+M3QiV1S0ZkrZQ/cUqx77MzwMT8Yha59YGAe/gFoTUaAprpdiwlzR6rug0flA8q5utv8PKbdRS/ZKonrThO2GzM8UHMm/PMBcLUTfgEb3WLmQEImTHBUwCCNHECuZ01CTaE0ocOJC/E3G9jwisA7OZyEKIGsM87aLKYlAOYiwVO//3f4958dD8ABDlgAVhl8Wy9SY/5EX+cf4d/Wv4D/qvv/hsAwFf2faO9KBt0qfIt0FnUlPKwtvTLHNm2gzRekIBmPsTaHS1Mv8VvP+BArDfgtoKtdVYEQrtbC2OtuwDExA7I9w8DABGeEAeQrg/NUpu/kNrYJu8sbLOeFwPLl1MFkajgCFuECgCRAU730/bdQpoMEFZp8nTTj6w9k2a04KRMmISu7zcsk989nNmOCKH9umEFR+bU4vl1nCJDIk68VzNFgh+vfJvcaRrDt9Mgnp9+jwkfYYxxx04AQCn3trPXLIayco1RdklIB72jB68mWN0poJwFrDVxJ8gYA2NsdhTpdHbAlUwen2tJMwmvNEil98Ljv4RopisBzvqGecbzQDEOWBsHXmL14aCqJKp+FJdXfNz84g7x4IixSEFBg19k5VNdMitlQWqfCssrX//wTqyNbL1IzOcH9qsahw4Maq2h/P7+fr+HNQueH56cnPZwMABFst6UKJK8zRb40uCxzvx3NvWTn/v5hME++Ta5UoRpUtBKQXtTUPvdhP1+j8Nuh5ubvY+7w88ffsLD/Sc8fL7H2zffePfs3aZUqOa8SkK7FbEZUE0KHgZGJfDJtamR19flBXC9DHSlK13pSle60pWudKUvRGNvnVP9I1ulIVLyftAAACAASURBVGkcgBzbJruPBsafcci1CixOsRosVZW1laBitSVRjM8ix2WHENwmo65xxWotMw4txeMaldA+BFI3LCNemWYhs/MeRcFS28FtBdjZgkhHA8c//c2/w8P8CVCIK7lqIRT+aqcR+uPp97j/7f8OAPivv/+3+OH46yprFQ+phiSLzgtJF6vdrAAkfqa4gluzyXxZMo1XsdWxiSzjoazovrOZxstaOOPACmwliHRZLCumbfAY/BlNqXK5W62lDPwlhL+w+l+OuJ6g1iiGtbqoaaRSTjTceHyAaTfDSjwvS8gvJmNTSsG1shzo2b+7aE/KKa8Z76/wmcBY77ZCbEm/glNP1zUyPMow2W4m/xG3xP3PqN20RbCw4WhhrXulReMjCDPMYrBEjZN7hQew0Y6mtb5jrTdgzTRE2l/AyOwkGpeTKfK21sbdocUYmMXi+XTGaQ5zkwZRMP5OmdYqVSS2ECwpZ5qMydSeXqdknTCmbTYOkMkZbkuWP2ZA1OOsQtuHyN5FiJq/c1fGvyxvw37HHWe9B6mpGNfsR/bH5tphhgWa5zIrTMG+QhkUOXuUAPREuL25xdPzjIf79CrQNO2glYaB8Te63NEMJhV86jbTEjrvKGnYPGCj3Dc2peC0gl7dGc8UK+x2Cnc3R9zeONuth/0OsAan8zN++cXtMv7hT5/x4eEZBI3F2AJrhf5sz5xrImqVguaSy0hhiz3a1tyQ4RjQjJLOHe5XLFPDXkiJ7BR5lJ3LMRZm8R1WIEZbMmBIq9DMhteGVinE6wBTKQpCNIsMaPJBywWxBTfflgNwu+ygdrcxVbcLy63tcdEklYmg/NkNmme3e8tY3Vh3cB2W8Olf/zsAwKflg3+lIZNiDJBR4WYADTzMnwEA/9fv/g+8+ct3uKNbcCKVth+yVLI+S8yZa+2p8g+fLxkUVJx9XAOZXV/Wz/UxIc+bkacNlmVxlUyHn8I/cj4Zz7j0ljk9gQfleECc13h0PmFkjknoyaCkTKtEJHJP1JOHVKhWxHa0/Py4K7/knp8pSm45UCymisj6Uti84C3wW507WqtP6bJiNxervnUgkhwLp5eDTC5sS18+2hKAS6I/XbvJgKZPSylgPn0AAJyfP2KazjA2nTmftIKdFKAV4B9CsEYDk4aiCVpNmCZXvmlSUErHCxJAUGTATdBLOnIEY2Cs8Q9cAGZxtohP5wXx4rglWLOkM/WsPYPEjXOcAki5rVouBznoBFDbHRR5aJ2xqnEhsKccndJ5/yLPNivUIK7OSoHUFLeq2Wk+lkqYz+txZFni4bvMQ1pES1V2Ms9CwUZD6GaZsSOFd3c3MIvFh0/uNvrz8xm7/Q773RTbxJjwcIZKlgZKWZ3lxQKw+d4a417W9kTaneHdTQ5e3Rx3uL05Qivg4bMbA7+/f8THzw/49PmEs78jcbw54PbNHTBp7HcT46+yhdtUygmbTbYFKE3/FG4svTjGrMjbo7qdzU9QBrEeD7oqf+aBAU4ngJxR6sUP+mVZsJgJ2hszZ/KJkdCUFbqRqQSpCWdKEUPDNmCrFW7IR5CbpAqf6zOwbXew9mtMu2BoVaW3rrMy9CsVb6hNE8xy8oCHt7EDnD+d/gAAMNq97xmeD3N5I0qm7PBzKAKbfD+fP+Lv/vi3+Ld/+d/h9Pjky6ARNYj8Fq516abBwFbalUmZQrxVVyyRCdDS+HWfyrCDlykqShOkTR+xzbMFk3GXq0hxrbEHb1wORY0mH73u7zKbqGWJIiEDFgkMCnKXhWP5jTQXjzQSrBG2OywJqNi9EHI8DQ42AS7smGaFAUhZMKZU0zm4GlQCvGwyyK2n5j5xacCNG1/Eh03QKAPMHrgE1ieC9otH/m/Gtlz2FEAzTMsSwCACMOPzZyen7PwJd2rCvJgI7mZN2BkFu9NIy3cDIgOlLDTrYyIFpU1mTsxYBWsJajHJGoS/+GONYeMXOJ8N5jntgFi4nTazBMDAZKcHQkF+O+zmLg/lC8WivfiP0XEpRC0jlyZqKoryx++O9YNJGWZnbF1zeIPicV4hFivVsfqu3JADS/ZdGWLPiySUMgFNw2SxXRYsWKAV8P7tEbvJuX/49ID7x2c8PZ+x3zmQPE0apAgGFsqrwcOlM8WMljvZQeC3zq2laM4tU3iAoGCxUwrauz893uPjL3/C/eMz7u/dOeWn0wJrgf1+h3fvHE54++YGSmmcz4Rp0hnYJ1+OjlgVKWAWUU76n/yRACcLcwHu5GnSrAf/LTPt9rfOQ8ahE4Jqn7lZWK9xM3HVsCwLjN1BI5iMydOsbpzJclUg3w12NWA7blYOeNDDYX0KygFAnFyYwDXLBOAdpsOP0Prg/T1QK0BqMhqQg5DyW08ay6ywLMkumDWANRbPf/O3mJ/CbXOLBQQyFpj89gCUexWoyCku0WwCfdZa/PTwB5znM6bdPm8qFjlN8Dl4zIGireKVia1jo/Y06lqu7otVkoQXA+/8L6zjYw40g7/hCXEVSER+uXsSqK4M4QWnskxpyAe0QpUfr2q8CTg4mcniQWq7S3pmGxXyLEtbyj2Fl4RlHju6B2fpPenoHsZmSCuv3eqqnVUk5J5F6cTf1I4kflYBtmkvW+nw+uRHFrjoSOATRZyQEgFEWMwZ8/mDdzP4dO8ua4Qtz/0ugBiLcAmToLDQ4vrGGkRNJ3aYrM5uqDvlpcGyWLfj4B21JsBqdrFyxjwn7SV8jnGBQSpeFnGVLJ/KJcyLk73hMhGpBMAy3so+SpI9Imezj0xnWMrdMn44XsCUDV2S5tnUedkiKlF5gac+LsH/xhgMgKao0mWgum1s64dPLmg0k6y22GmNd3duDj7sNR4e9vj4+RH3jycflaB3GtM0QU/BdnKwcoB4O10BUMa6JyPDXKoJijT0NGFSKoUlA2NmfLp/wHx2/HFeDObZ4OyPugHA7d0BtzdH3N0eI/AFLObFgEhj0hNrBw5khWYQHXMakofhchBztJlc42mtvVOV0/Uy0JWudKUrXelKV7rSlb4IbTbYXr81KqPu8H/wX4yBxS5qDDPNWkuhIi7Ico8tGgGuZFrLrFSQBg1aeTHKraKBZXZNOc+32N/8Gvvj1yDrtIJKH7DMz2J58rxsao9CKejOa85xu2Y+z7AW+Hz6FFfwCnAGVhVhmdOKRGnySwquWvOrPxNVE7DG4un0hHk+Y9pNMX7dIpLWiSA+iCpoObhDppvKDHVLub6AOppM/m0zDS9iOwVSSkFPE6CWmKSicAiDqzRZtkwj6rRDJhx0BuD4KiiEyjaiTCuAGD6F6W9hVD4D5wfzmJf1wLq22odraTUF7WUdXlqVF+4hdtQEFdqBMCT49hHlEqFMs6oo/9sIt1kDvKq9rH1erskMJPVcbkUQTHNUx7CcWUEEGHOC8mbYSLndGWIXJox1mkJSwOJNHikFkAFmWFgscQzN8xIvbJZFDseJQububOeEZXHapWVxZzaJTLgTAmsBffwKdPoAZc9OexqTJfDtYqt2oOkWgIq7dWaZ3bay4rY1V9XgzFyM5JtVy7nResqUbXPLvbM6f3aLXmi3Y1+zo0eC9rJyB6+3RRFULHUKw+P7cR7eC7fJXI8iG9t4Okw47ifc3R5w/+COhX1+fMbTacZyPsf50r3b7sZJ0F5qRdhpwm7nNJgAcHOzx9u7W7x9c4fdpPB8chePPn/8hNPjDAMNClv02kLvgTs94XhwdqyPhz12kwasjbzpjnp4811KrwrQbO4M7bIitnN5WPhR0momt+J9deRazlHa9gRlmHQZOLSMcSRW4efLwzkaJ55CmmmK7tlFzIevrcLwLYsYthKq8kZAlWQYOFm8AABTbLd9QjifdjjP7gLNdPgex9sfsNvdgWgfkw4MVGaXn3Ww8f/63qoT7Gevjn9+OsMuwOl8TltFIJB1RtDDCwDWkrsVp3KBGbKyxkbwao2FQf2yUAMqynNqiTeZQwU9pbOaId2skXKShecWki79pCTZtYb4HYqklcbheMDuMOOJwnaccueEYPIt7LhosLD+EJBVC6Y7i9u3Rygd3gkNvT0EzeoyB/BI3ZBlpIG8ylQ2tHnVvWtxhaVLB4QCIwBVAJWChKX4T/IvQ7WPMlLGIWNPT/CMV526gTf14lDg9THOtyfFs3UsK8eeFtYs8TLPbj8BVsMaE4GRihN8Gn/GEowBiCysARaK98nTU5VxzHp5ZxDvBVhrgB1hMcCzfwVoMTMA49Z5AbiRxpvv/hIPH3/C8vwZmhwgVhS28Qk0uS1YfXiP6eYraJ1ewjGLAWlAGcr2CLPXYWI5y8bN56568rfZUY7Gcid60gga7cyzfeIgk1fIJmwQQmW4AAkk8q3yBsD0wVD6tES2exCFLxSVxxR8tWahYXF70DjunSH0929vcV4MTvMc59V5XjAv4WiF4yOtgJ1WOEyE24NL8+5G482Nxu0BgF2w+MXJcT9hv7sDuHUA64C/1unSEbKzw+WC0T3FOro1LfWgdOGyikNUjd9wHjM/o0n5oqHLhDJt0mjGSz6xAmAMxdFJ+p0uDSkAGhbKp+MFQ2ylGqTm1BPBqbNkaFnHcPWpAzKcKcRxS8QQb541Ts8HzOYd9jffAgDevfsV9sd3cYUUSE/79PY5z4d4Zr6Drb+MxJJwrwIZnJ690ePnGdZOUEiH0o2Ce/7SItn4YALB3drPp4Ls/KEFNHR8Rss52VhEy1cNATg2Jv0VrNj1GactgCmnEsQQEFd5uVh3f+KziIpw2O/x9feET+RWxufPC7AsTtDHN+YJNAHTXmG3n+KZ191e43C7w+F2F8OaOIjZCF6pVg58qhI3Il3klYXaci6Hs7AI7EMwX21xzVEAwNKv5d6NwxdbA+B2u9msMQR5EeeO4IguvWDcZbjBn11uBIxSxssda03UEO0mf6aNP+nn/wlgk2fotJRIlrYR3inh0iyYO0pzj9IKu7178efxaYkxJ62ctRQfV+sJ33z7K9zcvsH59Bzfy7bGPS2rVHq9hbT2po1S2Y01UIZglY0TWkPH4UZ4owukxUClcujc+pMut1YLphdwTosCyKyBJlAwTe5WjfnU36sZsjilqUWH7ylr7MQWJu4S7bS7GX573MUOi7fITbqoBmuglOPbnddS7jUByxmnR+Pzc2neHHaxLQK7xm9rwjHjBLqzzlEAjHuMID4wv4VSbxNz6steAWyyBIIXNxofTc11zgqXNAQ085vOfCXDQCab88kfqAUI1lB0AxSsVbBKw/gW1z0hnuGIGkw2Y1LtR83wId0wBMg/3pKjkMCzFoBZHBOc5zuo3Xd4f/eraMVf727x/DQLgobYVgYioKl5wHohmoMosxiYZcHp5IDmfF5g7YRJTfEFAtcV1rV59hwiVSvq1KzpqUtrgYM+QGldMR+PI13jqcwgjMxna2Ga6dioCe8mspJ+phmjkru8m19YBM2LJQurgHdfvcH7r94BAObn2U1KpKKWUiv3rbR/0YQxrbVu+y4IMkXUO9+/Sqv3OgSHS7MjoVNGupo8gmuGJSQtvBCqxQotrWfPLxfCUspUgOQt4KwYe1K+l5Ig1/6clHahbC1HmH+BbKJcCkYaFCE+K1l3EEWtT3o3GtlWedyZIQ7CPPBli0K7OMBwOOwiQFiWBe6SUcpxsROOdzsorbEsN1jmoN1y47rmR7+ijKtKFRFyVsbGwNy8bslzviBcGvPJnspoSq2lBP+yceEBJKBZx8ndKyAaSiuwRQzLk7Dp//SMYo4PuL4l5J9q7jXWFt6CgVucKG8CKXuhCo5/A15RyrkZY+LlIZekbwv+Kpr/NAxYGstqH+WeG1ukdNrtyhqm+D0olsgjx5Yc49rg/FgSvEY9Dxe0sNTakRToBUCTs0kuYIgomRtwdikwGbcSfH6coG7OoHCD0HrTBJYlgPIbyA4VcDW5MGA4I8lDrpSEvAr5EIohKLw1fsTv//TXANy50/PpjPP5n7Db/wQA+PHXv8G3335VlcnVFcUkJJSeyvKluNn2hAeHZBXCfo21SwKZitXL+PU/41036PzkH/uU8O74FbTSKPtULtUG4t0HD1YrRk392iUba1C33wWFDAMRoX+IieLs2dTUPXzi03oHwj5OiC5NXpe0Bc+3HYM1gKCdqfhVmN8urqRPoDu9rM09mRBKZZCiiSUMwlvAI51YMZPeSYtWTGa+XfYXJrWehrVVrrXCvAZAvHxxsCVy/uBdiGqRA6SIH1dbKW2rUsEz+eMUYVJPbtqD0TCRc5NtFG0f1oueaHXMGL89aTD5iduZjVlgbJKHZNxWq9aTT9eBUj3tvOWU9IRlkDpEyc6x28Z31j24zekchA8Sa2Qna2zd8K3ObPaxNFYvkyFli/s1ROVY8YWYnSwI8qRsM2hQcn389AF//w//EQBwROKRUF4A/mnYYBoqyejy3KF7rpSgVNrmVirY2kzTqiLGk7y+HmjCJrkQHnsptYLWN14CgP4Y4bTLzmi+ZGHCKT9qIobIgGVyczFsUR5h179J11vnV7rSla50pStd6UpX+iK0TaNpwkURQfPItHVhEeZWBAnL7qc9Ps832C2PUZszLxYTTLYaTNvGtX6RH1RdPTtVIW7vwFWVYTUSVstckxHD+bJY4Pd/+uc4z+G2oTsoPukdlrM71/Px4XNTo8kNnEu6W2vD61gWWnsbcLEIBK11OisEZ5wdhtK2rjX160lBE2qs2B78MpDGhF/dfe+3tFgbhcL1qOKLFD1utbPKZ1pNoHFYvpUV44+VPedNi8Gq7SzSdmW4zSlEo6TbqXgHpYPtFKrQgQyFazt1nC8L2ArT0eCJHMH6XFJoN3dkWlpNYsaEGwXp7fIQU2uKGlNCY4sdMU5SNg+E+TMQNX+0QwbdL3e1/gcBcaw1jysw5k+fFMdH7Peo3+HjieLZuuhGXnvpM83Chq9sQOYqF4K7MJQuS/LteDbf+K3v3WHCMlssXr4rZeIOhGV1i+mzgqZLOHJjX6yNpuJsnC9DSyOVU63tbeazqUxFYmG6KDOw+Y+2bNyoX2XMZ82CP/7xjzif3HGHG69lDDyTZeC1mRnvFJrnlIVJ90i8SpLiO9RFwSlhpHQmNB8DgcT5vzimp/QOiorLQGEMCmUdbz0me1k0W4QhYdufu/dkYYs2b527yb3BUWGcByhAFA2pAsDhuIfWd1iWD1Dhxu7szPRobdnZHMRJn4rG5iI7QU9ecSp2Gzhiyu+EuvPo/rh1OvXKtj9CCgFIKJxO2r11Dc+MIWVviPX+w8/405s7fPP116xZ3AFjRSWDAfOC7NAw4G7QGWNB5EwhONCuME077A/u9qNSi3M3E3ToRm0TZxT4vxzk1iNQh6VcH3198w2+e/+90G7gPNoEAaXwCYErtuzwaQKmzZwKvz7Dl76bpoHWQiaWvwAnRf1TbJt9sfmyyj2F7LfBq4GWixNiETtPNnZrUfFUQoVrYLNKMy4UW4DTgdEmt7D4Bec7CbPSTrl1gtcCm6/Qy6tJdAZi+BMm2oil2ABeAxMU5ov8qkopnjm4jHnz7yzNfnXKtMKjCzEJ6+qU5IyOZdNTOme9zIsz9G6bI7hXDJEqADSSUrWYXpdi5Y3vXuBLuIwD/DTH5Hm2zmqOUc1f+SUj53d//4CHx4d0cYctYDJxTH4c29Tr3ApLtk5g54IB1j4cG+Q+0T1xWdGqOQ5t1NiVTe8OboEhyNEs1c66op1NMTEjF99JivmvgIFqgeoXnGMdfOEZTSnxfCiGf+JLBUrheNzjzZt3+NNPP+HtXbgIMWMxCyZDmLwGT2t/IJw4Q7OKc1QeGyX8Kg3SBEbiSwJfH7+asZaZR+DgM6RknZmm+/u3WOaFNW5gK1Z3A3y+/4S3dzeYvEmMxRgobzIjBD0vhHkO7Vq2I3ntpmujm5uDPxOkcNi7NI9vFpz+5nvsHn6D79JDGIirS/+vwoJf7P+Gs/05Y8yw4iIQbvQNAOBffPNXuD3eemGYwpVEQMMOV/vAsUQtvLkKM2061bhVSspz1UZpWAn+MFvKeQFMkK0kXft3pMkavRoa3UgSb/i/grxqLkZqsJmHEvmHCU8RbLKZSgayBFjp7fUGWSFAh6lHsFKrWMNht6Q7komXh+nFVeVNFvEZSv4OO2CWTfDeBeUJe2L/p98kVsiBm/xqS+iv2s5fOiMNG8qUclJqSmf1WDw9aWir4yt3KX7dwaVLBUdI8lkjf+mxROXoA5ZuwXwRxkoxJntC/aodRtaYrXkhWxZ2gZKMOe4f7vH0+IinJ3dJ9v2U8iTW8JH/CrBYyuVgvYDyTsNwvzUmNTcMygrm80YAfHp3zBLicLadafhTxGm2KStoueiwQDla064OwO2/jloxGAOa5e8KGFXlRYRfUbJaaKXx9fuvcDp9j8fHnwEACvfQ6hmTWqC9rcHdDph25O1O+eiUVin51opNIDI6J3CZ8KN177Fn4k1YeQRGJLDb3BbLovGHn34Fa5dUqXDDjLWHIoWnx3v88uEzvvnGmbQxZsE0ORMHJ483l8UB9vooghsUxiywcFrSjx+fcJoJn56AP350oPD+/A7mpOqtY88pwX2xCm/N/wTAQqsTfo//xbeNggJhhz1+uP0NAOCHr370wNvk7TIk1FZn4z7xAToywV88ZddJbxP9bjEzRIPgsg25O4lmP8fivhR3boLjjSo556KDGdgMDtY7iMb7WfSaVVJislY0Jdq9XJSpRF6Bt+vPYXrRZQBBxK2VpbnY8X8UKfe+t7XZ7dlMIZEBO+N3meLtmwxQVrlFoBD6KjCTFEOavIuZKIJLL/8jbwagufOLZL+Hxo/zULj4oWP8oGvJ6liW5UKqL2LUN4GH8pGaaxhgthKpBzUHl2GuDse/gBJbNQYcy63rGj7ZxZ3z6Qxj03EHTAz4ZgLEl50lxxc0HHFGd44zshjuO7ZOVfA8r7jYkuplbbZDQ0SYdse8ryTUWJWnyLsMYuvQzZ1DyrMMR98SHEq/Rzn+ehnoSle60pWudKUrXelKX4TGDLYX5/6EH7JLoa0zWKC0wnff/oDHR2ed//n5AU9Pn/E4P4C8QXP1PEOpBfvdgv3Oxd/tAT1RdkFGMnCTrUYY4rZslZWAvAtUqsmJgl0sF/7h6YD/9NvfeHfKF1Z+W50bOIcFFmYncTe5Ff35HDSZ7rmppPVlqy6fLymFh0cX/48fZnx43OHxvMNigiFXCyKTm2iQOiFenFJYzAHf4n8GAHyw/yuwPODr/bf44fZHF8YQ5vkMRTqel21aq5SWMp3lTUtnl62pBhV7lv0tDdCvx2r7XG7MWFLdbU2rowIciFsHe7l2ZaQoNvo01ZeddJghnWohnrSa0c0KcXwh8rV5rtXMy8oihst5paKlLMsWhXORxYrTCiWtUCGiXpRqFqvg01qLwv2CBhB+S5fJ4tCG8fKMk13uid4FdpkxaZZ0tc3qZXnxRGqm+STu5vemhoa/oIWjMCe4rUoixTRUXuaxF83iK0K+FbJLl1GrywrROw9cFMsyh7pZ+CWMUP6qSjVRj2fGqRZjZZ1zrWaIY+Pkm486Xmy+u7imEbbSl7HO1qm10S53rqVMwbvzDxXxBkkaOS6fujbpxKEokFxcz1jT/ibJvy5tEEq1OrMYZbXONXiFMRGPEvpGc3JprAybts4t+xqlKAds2ibWesLd3VsAwJs3b2HMd3h+fsTzk3sv9Pn0hHk+4Wme8eSfhqKHJ+z0CYf9gv3BSYhpB+gpF0bu4L7fOrY5e4YbjWFbOT17xg3tur/GAJ/v3Tb17/7wA4gmWGuxWBPP61gPJq0xscEXY2CXHd6+fY+T3ye/PTrDsfOSzvoYk+xtBaL4WoZ7P/13f3LnTv7w6QYGO5jsYGT45rfoECfN8lJEOiPjlNjv8D8CasGkDc5wl46W5QPOILjnXPmbuaX0wzj1RngPeXapXmC8BrBKJ75egxLkGSYSPy8knsLrg846l4ZgXClGxgY5WqyFbcSPhWDsTShNMJqHyQEpxX/j74YRdpFeBWTm5Ma0lJDoKGZcYwZquHfieEellD/iY3xS3oKFtTDWxAuT8zxjmWdYc8ZBC+kGOeURf219Uq5b6VMtIuJnfqkii2Hd9DdNN+C3j1PZKAObMZ+SHShsozJ53pSZtuL3LL8iQibxI8Yb4CbfQGXVh/mQA2nR3/NOOOtfbqEbBauMV6jwcudAawCOM/LXcuPc5l7LU0ph2u3KorHVD7K5Nr/40wHkbKoNOLGefVuULjJnNVyZ8xQBu92xdB6ijCVXspSEYVM+es/yQY24oBigQY1m57eYT13UrFMoWeIHgEkr7N/s8fbNexfWGizL7ISUF1iLWWCWM+b5hIenBxfu4R7T9ITdNENr/y6pNunCEKUBoJwpfwDs3Kb1wI6AeXHl2e+csPv0+YC//09vXDjz4EBpqEl2gzH8dr6zF7zuKbM51BDzAi+YXVxjTc61AMING2MszrPFh3svrBcdZ5lgFooovRkfxnJYbVNIKnxzIcelnJrwOBP+4+9cPgf9Bl/d3cMs6YaoUjamPUIt/JhVU3Dd9LihF1B80VDmsYlYpHJSetH5uAvK8GWyKyffwZbeiE+p6GEJ0NUegkDOwGH6ESZ5DkQz9xjHOVQgNfNPgDLzZ2HiGLIDApWrm8pxjVU4uErNyTCmztqqB3SLjxbIbAHMkI/Tarr3mwH4C5X+hrcxmP3rOufTCefzCcAMewiyy8kvytJcaR/JDA03L8IaOAFGLo3yhZ+L5sCJno5wPaxYSCTNIe/SAFwEfgH4C1/52Tve7uTLLi54YnTP2wzwbXuhipt+KxDWAI0DUr8ctDnY1AowNs3xbt4LCppUnLVb2LUjsyBgnaWaaZpwPHr/2UI6ERjGc1kvuZ5h2eB5xll7986UhZFiSt89ouyb4nPFWwVGK3gXdGaeSXKK4QsZukWmDWo0bfG7/lGbIZLSCWCoXo8am1azSmnoOGuFFAAAIABJREFUacL+wJ9HTOuJUB5jZsznZ5xODzifnDb06fQIa55h7bO7ZDQ5gad3buWjlYoml8iDx/vHO/zpZ3eb+6t3D3h8Vvj5l2McBeQHbWxnG/L3KzYm8EIpz+czltm/mYsJiweamamobMLk7UwwFng6ud/nZQYpG1+ucG2kXMn4gXx/sy7byreIgyQfBATlX7NYfPxP9894f2NhyG3LA2FCEEZo5ZBm8Gq7spAoUfwXqLQEqW0m5vyTz+rlQBoaCFaKuTmVzUFfFOdF8YW+G013SHq6nmzmUkm+PHwWTuKPQjhmgrECqQ0QC9Rb8TwfIe8mSQKxcpcnuhFai5NBsFWQSe2gLZApgDwiAFrB+kldGeMugXgt5+xl3/l8wul8AnCO5Ux2LIt5gOSX3gJlsiECwN5C2AOGNHUwrEWAcjtWSu8dv1CBXbkbixZEKgo3vohJoDMdz8jqQYxv8z8xTZdwLdGoq12/BOr00hrh2KC8YbKYAJXZj3QKEacBD/NVyme1pNaF4scylmXBNO0waR0v7tozWCeyYwcBd7Bb/Bnu5pr1cNmFT2hh8PLpJlg9yBYI7TYq561yvnNlIugANL8AdSV/yeSQQWcE7XZcPXS9DHSlK13pSle60pWudKUvQtu2zjsLHGm12QqXbWmwVXZIwxjrzxiWqw8FbiSU1A76sMPx+AZplbRgWRacz894fnrA8/Mnl+bTRyg8YNotUFN4+UGBlMLj0wRr3Tb57/64w3w+Af7iTyi1tRazsfm7t/HgO1sGE0FbjWVZ2HlMVn9brubYD7bEMtZGO5vLMgPezIUO8bTT/BIRlG8/w7SbYQWRaSRZv6RXm9IKM7w2xDWiGZVnuorlUNQdFd27qtWs0upTzCdTEYXKWSHsS5WGdZpj6XVC9TRPFyZ5QTAAoi5xPOHVFfxK1Jh1Ck9Nf2GFTcmP+9tGvGoFL2k+M3dEczcSlakKuaRKjDMOjyX84E6D2sxL3aUta3JtowiYvAk2ayzMsmCxFsuyYPbmZtz3DMKSxiLBa5pqjV04zuS+uYaRNZ5XMfJdpqh1ynQsLHylUlTQ0y0AQKups4VLyO1gec0Y5b2cNKyFW+A8xkNpS50yB8ncVqlEE5WcX5S2MG3QWCfZHHYPLRnAuG/DJ0SE3ULbrVfSZtp0nG6eobX29whCo6YrwvklX9uoSuEY1dVMJiTWyuVR4MsyCRv4uF2fQK6Igd9dBK13yY8FHOr2jbwh9Wwmd9kYSlWn7LGbERoDmqskTMSrM3yvgIFZ+DkToHzwPVruZwxFpKD1Dvv9EXd377EY99LN89MjHh7v8fx0j+Xh0WdzglJnkLIg5QSmUhrhmUuDYKTXCSprbAEgbeKzIDOUcmDUJgB3PhsQdF3nMDaivEm2R61JZy8t4MDtPMe8F7NAKw2lNcKrRA6Y+7Obsd2SAdpwvpOnSVigfGcd9347nV0ASt/rLOXGogwwItiM7SlBkbyFumNGZPQ1QFDncSmJMksUYkIgqlz6tA2vbiYSvlptWbl2o0g9XEeVACOHv+BeEiCtAjIu5ALTNoAqSyS+aobcnmKzFuXsKAYsQU7It917K945yBwBmDGoIJilZAS3cu1JIOgAJCYNYzTO89k/VewX4wGU2XSjWgV5BEFSlBM22FhjRXcAlINPAOWCwCaAUjjDQkNPb3y9VFbT8gxheXQo3KjO28tWReBnfHneaSHD0vMO0rGjeLGTG3bciih8xaonipthwSq4OpkX5CrCeZTgbK/yFBLgLEGmrb88yDTLkoCmn4uZ1VaWn8MHNptrWu1W8EcAvjFF8vMNj2Gjewv8B6dwCZpTNSeyMmuthRXGYOvLEGMTu4jgk5k6iOuIMSwNYLPB9vVO4q6lcBgnytPohSyQd8gzsIn2APLu7h3u3rzFsiw4PTszSk/PjzidnrGYI/TizhQZs4NWZ2cwPdi/8CsUdyaT3aRjB7qjcOLt4ctmjIWeyGtQvaM3c5TfPE+1dYfqE9IM+UehYw2sMlDGgLyhe6V0/L/izmLmIhhYLL69ghkm/5660nElqpz6YYuIKSbwsmaeaZkAKN1SYg3BYBMYuITBZL5qgMLXJrYCu0RwfIESrWRcC8iSBPZlHuvgtQcY5TABXOQ8lPlbW+fM/LI0iwwItsi+31eOny6Y+Bu82wOZLQA54k+Cg5hN5u5HWplPIXcnrWF3E85nZxot7Aa5bydiLJMFqY55X+afzDg6372wKNeseZmD2Axn0y0EJp0w7W6jG0mXuDiOLcU6C85lXH5GOJQjeWQa90w2CppPn44EWGXKX0pqBEF3y3ElfSmenJI3QMX4xD3BrGIEgr/nAOT97/9n/zg3NgcD7kLtYoLVF58m5WxVlpM3YXoataxM+awLUwDFPvOpNawLVEubBuIrZZR7AVDnvNQkWUaL6QtpVbE6/FW2nfu9dl440StpNCHyoGX/VovPrel3I1TStJoawpaMVjvc3LrDtvvDG5xOCx6fnrLb4HragRbEW+OGT3hUHzAuhRCFcAEwey7VimA88DXG5jfPkRg6rsRiwvXrR2HQWQtQuDClHeNrMEDrjxu4siWJGy4OWWtgrKvnpAmT1iBF0SqAuIUOdJlyjeIgsqWbADbXaBVnriyEOiTb6BSEUzN+j1ZK0BCUr0br+G84YBN8VsCzFFednApQyMMkzFCjgDS598BoNpDqfLPJBN2t85eTADKHaUySZtCjFpWZAwm+bZCZvokIu92Ew2GPZT5j9rJzMTMC6EivCFkm4/plj2KQgQ4+C2eXgMvPAPYydBF2ffbQ+hideziTn4wKZeLhHJuGqZe7sXBx7iNfLsvceHq5oyWbzMoUW7ovoxI21L4yZ+U+Pe7LjqSQ/60AxW6jgwAsBkZRplhxMZmmMh5TQyETLIg0yO8+UnIWkLnUbuk6GUKUyDS801uV9Vv/sdtssbBhOa/MbY5PlNNocl5iX7bi0vJ7jWpZyR164DOTh1GlOZb39TLQla50pStd6UpXutKVvghdrtHky7WkeOMB6gVBodUEEigutQr9NRNXs5en9FraJpeoMeQNnwPGusPK+90eyyGc+zBYphmGl32Z/RkjAohA4VHXoHpnS16ldbykE3Mmp0FUSntj6MmOprEmazZrLCzZzAxEaGLidY+mBdLBamsV4I3Ik7DfwldVNl5qslFzt5smt71PHU0mK8JLSHr5IOkEai1UqyBxq0haLa4ksKoMrUK2fodExjWUWV921Ewv1mK+XPWaqLTLtyHJpOEUVEOd+JarrEpNUkxX1nzm8VN+onaTn+Xy5+JyO5ptGm0+mUVyVUlLoTKc/mChJG/RTdBeyn6ESWncHA8IdpABYJnPbtfEGCyL5/qg8bF8NyjpvzIusxbGOA2gSlszRSAkbUzZUV5zGvJxfxVI7dPZdmvBTSvZFFXUZgqK9HhPgJ8H5SY+M96lQl8VNb283EJdRkhSowpB8r5sMFtHi5dojUmDnjaUi83PSqVvE/+BMajP1bJ6pfsDzobmYX8E7FOjmEIjioJ/pU6e52qf9XmypYeuTGcBIKX80Tc5mzSv9/Ns/GxEHNRyFhsKW05gXAQ0gzAuC1mRVBBJI229cG9lVkXNHfPnwIJ3mZqzp2Ys3xB1wHGaNI4HZ0fTCcUF85kPRosZi8POpNk5Sa/OZ0Jw2mnsdgGwpQERiq28geOdnWCtA7DcVqgx7tzJ+Xxm5x8MwnOZWcNY8gIrSb5kq5Ojf+6fv2pEBGgVgKaCU3KvzKwNKhlylZpb5Wu8FcoXuL2xwBiUh83xshnlNVJaTcfHewnIfDEi3ZLHGFgUozKSQGQ7nrdLuAoo87RqUCn7c0DqQCZlxrn7u+fbgXcr/vhpaB63HUeAsHUYiWVXeJEqd5f+NE24uTnCmrBwP+PzvTuGNJ/Ju1lo/6AGFxrpNmtKMtrqMxQX/+HWujs/ztq+6gZ2ttT7ueN9BNK3gA0G2sPCnLhIcTUqQCUXWeJ2etFwDkgkNBGwT1Z1Ety8O28PGtymjPluYqWGsFwFE6MyzzWcm5qdpwJglfLgkxjvOyVIdnbTL/4IDGiCcDzsscwz5tOJ1aJcfawXPYm2xhhhUcTqdfBsSoQyhUjgL77AoWkHpUugKRW0QWtziDhcxsBnLqWCkmdM/m8Cmt0JuYMJYpgmpYYGUGg5i4GL4uwCH8CxKFQzjkUEa8nP1UgphZ1XNdrDEcYYPMJi9gEn7EBEWNxSK6+qB3VBy7mbJujdDnqastePAMCaBcqbLsBE2Fl48BdeP7KY5wWn8xmn0xxvwsMYV+rsibLQOgqI+dh4tjNXOIdD2ZZN1Db+r73NJK3CwMxfuBCpyV9jjNdabHK81cIwF7GaFX5IwrAVf5isT2Nk8q8dN+dN4uefjSSN4ShVIFKWgnl4YmNAOJuZpVWkQZl/HiYHpOUEz8BPRcmcSo9imCF5uJVGE5XPfZUkgkyq/bk7vzqxmyYcb9z5x2U+4/PnT7j/vODkgebzSUHBQGubAbN4Rp3D13COMzvW5+eLStWcF5xYg5t4C17DWA2l75gpOANjPCj1FjbW2gQp6QyQpnKneMGKSShhOAecWiwwXMGHQpapMA1kQ12HQdoab5D/inITvEWUCCBTsIUAGBPfozcAgqF/lgBIEaZJYT75krDpLT9bXbR/5k5jqLxolhxzrMSLZU54pLxASATo3d4971p6XNyXBfXmC5v3TumZL7rcXZWh51AxCDRrRFsMknKENGNx9/qXMLwFFmZuQh0tOFAllr3UIGnFG25Z73cTrD0C1uDJa+OD1pL8yxcpY4pSJqxC9vs9jscjbg5HdiHHCRreJ8prUvmzlJidJvPx8QnPJwsgbe3ElVrWCV77GH0t+80BZcDDBjGluF1kMXmgqdIYYIqC8VVLK5ztenM+yV956QnUUOPmEQEMDEs2GfAybKYmsh1MK06IW8KvZP9noixv35Airw6lw6VguunZzJPY8Qtb+pMfni1/9yWB0mDaiNs7fGkbU/XRChMmvk4ahcOX6X82ilr5ZMKbyxmLycvD4+0N3r19iw8ffsLne7edrpTFfKtw2C047Pwid3IPQPJt7pgenKYzmGGDU4JlFwwsu6SZwIh1t91h4tartQqLucVO3TGgaJC4JqWaAV7ONYRMnsfcCtGV72JTDEO+vWIL+zpmiy0bQBE3b5Q1dUWyBJHn3/Ud9ktkYTtRyr7K1R1Ba7YDqAi0EBYiGApI0/WRtcrbgAaU8cct2ByaZr2No5ZrTsci5HXpkRRMcCMQpv0NlFJYLNA9vjZQus0kiB1+tCWCdQY4R4u4SaPJBXx+3kk0h+x9RhurEY7PE0VD2JXOcBiQTWFEoOKJ8WA2g5g5n+OBoBVFYfn09ITTSXm7XUmnqpSCnjR204TdzjXlfrfH5DWavBcsAFW0hlIKu90UV9bzvGAxBqfTGadZxbOkyQQSW294EEas5dwTWx5klmgrbKmHJSKM+6YENEs7m7GNhsFmJ9xqdGmZ0aNyoL8mQBwOnBdlwKNXyvpp1nYx/r8El2vEgV6gbB9gSApSNl9JgJGFysNZ2V8CwGVZ3TDz9iRi1JWH1qpuu3DB0qFXSU0Cr69UzLBFbGG9HU0PIJXC23dv8eMPP+LnX5zseXx+xtPzAiKDG382/vbGOrmruYwkDxecQsCqBMWVP3sZRBaRzforVI7IaWK0dp6nk8KC99hhQppcQg+7/zlQLZdAad5lOlwvm8uTQPEmu+jG4jN7rREIRlBp465BOsrR4sac72QgsEVeXsjHFrGwOcCUvoFgDzX0EVlnHiuATR4j3HVw8RZ3RA2Ic6gb3uG5SV4kYW6yASNws1AJovafN+V1LX4zuMv/tCjN34Td4Q5Eyj/CwlFVowxV3rVzq9gj9IINq4yut86vdKUrXelKV7rSla70RWhMo1ks5/KtgFyzWVOlgihC1saAvWudTlyBdFZHPI/iyiSBoFT+JCRRSjfGURr7wxHTzp2nPByPOJ/TqzwhWa2czSuldLqJDncrfdITVHyxx4L8iztlDZXW2Ptjm8u8+PMZFvPCy8m2hXh7eHWm2ByiDbHwP7K/u8lF0uxwfZlk68WfmoR+885WcK6iDq2axpZWq+vxtcV95t8JvJrJK6mN/n+gzWxRNp4L3rTVRyc+2S4fpVdc6q33WntZaxyCbAt2ZoP3epu3+WMtbu2f5yjG7/ECye4jfLNWlrZXuoho2aVDArCfJnzz7bd4e+cuXD6fH/D49ITnp0d8engAAHz4/ITD/ozDHlEe7vcK0+R2l5QCVHpIxh2NIoJh8orIAmTjzowmgtIKkyb4FzFxtnfY779y8jirSLpEaYNNxmBLuGifkk2dJpPid0gxXH6RbQYnt3hgiJ05rTSoWebtniysQgo343mdg/JRZibXvdnk2Mx3nXrCNndTBED755X9DbCFCLS4C7nWX141WmOZZ5Ci+Cx0HNuWaY95/lZ2q27+8XNuQrulztjYJqJa0PcZKeyP76ouHkBV7YCNSMNpihmE8tKwmnPwjGZEbi4bAviZhl4R17bOiSHDPh/XYfjts0zwEg9LWXjeNuFlgFx6hK0Td8gYAHa7nWPQsO2c5cslS/BzF4zCWRLy6v0ERvNaTZM/z3Q84OZ4xOfPD1gWiyVkp4HwYkkCgn5AEKu7OMFwIG2zuit/RvO4c7GUCiKP8vjRpXZfp8ScWWyBbVqAtkmlrZFX2gfs48+NwmVzkdbQ7wVE+cfLUm6AxPWgUoHyXxIArdLIT87FBUwrXLRKUIcRwWs5j8DJjVV5WnXbCxYYg9FawV5zISKmxavGTfNkQDMFVlrhQDtM0zsAwB3eAORunz8+OqD5+HSPeX7CfH7Gw7M7HP90OkOrGdNksJssvJiE1oBWgFL+AiPcuU+trAOkMZyF1gRjDM6zQ6/T7kdofXBb77xKNph5K872FXPIlnbjr/TE7W5bBPJuMXx5i56f0fRxuhYQqsUxGy0NERnBqQA487WEHWsPGbdKKZaiKfvhlDj+SJsybj6lNA8vRkFpjWmaYhxjEQd7aSLJu/bLzkvRrUdRpeJ3ZvilGY5jKIAmjcPte99PUtlZ2fKSjhVNYpwN4DM/UeJNeQ3OudvMGyW5nE/wGyVjFToCJA4KO8kU5y7z8MQYJEde4ffkNXjznJ6YpGgaMyHRdAuO/CpZp3RSAWIa3I2I4iAJ53nCv7zePL3dbod3797g8emED/ef4yqNNAEqaFmYOjZPxhfDc3lk4vReezJ9hAg+SQHHva+XKsoXU7f1INkCCIVS9uXVAD95tsvlqq2ijsG2bRNJ7yzlq4DTbt5bAr8GsOyXoF3f9Yxr8FemLfSnEJ4DyjrdPEwWnYXhYNcpONKMvi5P7cp3O3IvWdFvrTOHO5sNoAsZJD93a73YSSbfQjZul0hhirIynJt0lycB4P27d/5JwYXZ4Dxhnk+Yz09Yliec/NViWmYoWqCVgQrP75LBpBdMk4HWTn15Jgt3OuwOi/kRALC/+Rog7eV8agmARMsCQcrxOVYiUbnDFys+haCkkaQnB6cBfQbTf4D/FsaERIlnc3jSw4oJcCJj+Bq7phZpsU+/iFLNi19sHgWcEkQrFc9kAu75ykVp7Hc7TJNbSDzatBtRgcotfC6GLWrr26KUKWxZwJxlziFKeGY63OHmzbu6DD5bSWkny7M6ifCrkJKrbRK9OQS4QKGz8TIQGyxlQUJpxhPL0gRysFh9CUAy/w5pcOCZmzki/hfApBUWkw2jdGU/u/pILh77P6Mgz7Iy5eGImSCK+RUDmohwOB7xq199i9NM+PnBreznxT2LCZV6O5j9yAScte7wOHJAGQSMtUkzY627nDRNhDc3+1SGyIzF+mnNavUmaoltL2qH+DgM+mIy78uwlbT+M6VNAvJLgMuttJa7TaHECQ+Rb0uf7HB6SioLGwCqBGTT9IhOmHwDcgvvy8uvseVOlmXHr5fSVveLGSUzk8YAZrCQkWFQ329RNjNlQORXDU3AjqUZrWRY97BEMAPn3Jfo7mK4S0jGzli8DU8nlhV2uxvspzsAgIFCeC4ygbpCdnTbpOeZ9zwBjW1z8jjSlz3Hlv5TlpEyf4WgHIRK5QxtlWzEtsYfCYg0SskINht5WVSPsMT5tcys1Zw+Dz6qSRF2BBDtY1RrDJZlh9s717+P+g3M8hFaq1yjSUg2WdkgC+0p1FIqEFucWNbBbBr3CWbb9mxhUcJ3RQTS/iLxm++wOxw9+ORtVIN+Vq3sh20FrMKvgNbSVWC8lc3sjK6Xga50pStd6UpXutKVrvRF6PKtc082g7Xt1V5zpZ1p9Pqhk6YwD0cFrK/DcU1nclSKoiHfKr61Ra2I/V/kr8o6lOUnr9Es1a8AX1mHVeTt7Q1+8+O3MPYDAODf//YBp9lCaWYyiQD35GTZboWaplpahh8Kihbc3Sq8ud15H7fmIvDVPm+Fzt7QRcQL5nVIwxrIQWLNUOYopyn1USP8S8+EDmiohsJ4z4utPTbaZriVN7NAW9sSfUsliaDhrF5ciR9U+ac08nRcXsWGkg2yozWGXoda2p3Nxv4vymxLWuXuAfNhGh5Jm5lystkQiylyg4427Tq5P9r3oT90SQWPSLsfxf510ExHw9I2aF+TLE/F6rRItn3dClKf5SXYzmWgNLMkDRmvH7JXqUpD730S1YrRL9a5x9uhM9n8kmk1fUG5caBueRqCpidiU7OleVr71/UOB6fZtNbAvn0LAHj6+jc4//EXZ4sTZV/ZvPAWlQxPpeT6R+7qOcp6rbPXupb9Xp7iCiaweE7uSWsFvXP1uHn/PeB5vrAoHameMRv+QqOKfFvwZe3MZWUe2K4/mRZp261zwY3b/lpLQ0xmbbIuhG8OTBPj1lvwVOQpFICcLcvy8HpIJIOUrTMrFAM0C5+9XdqaXUK6xsLSgpubI/7lXzoA+Ob2E/7unz7hl8/PMMalpfQOIPcqUHboPJaFz7De16Z6aAW8uVX4i2809hNHM7UkTUKPDTxh0n490DlKNgprS8Uh/oHU5dCXm+fuxZKeHniNdF2ADSVuziu1az/NhoSqfQc9u7NdvWUOgJ/hSbYTWZji0F15wD7J/hp45sC2V5u2X2eoD7TtBXzSiDKaUibPKioX3sGFTdr8b5ZquWloq3eSwwUIvq1rWYEycIOAoWpgV0/ozs1m/sJEkAR54V+MLT9+WpfDsqsLLH7aHg/QF8WWeZJjqeAxZIrT6c2Sa1w795ku9UULcCE1nvS49SZWlQO3XdmvYBGA9y8Bh8MOwG2c1779/kf87vFnnB9+i51W2Qq07LJgizrLrrzc6/NxU55l/eRkjsQHJQumgzj5vEnKWajRt+8BAG/e/crxV4F56tZIxary7ZDUTa2HfUr8WA+belz36KIzmpmAaCDa7rQlTXZrkyUDkyLYLH8X4LNVFlJwZzcixww03Oo5uHCWUziZsJYNkT9rZOJloh++f4d3b4/47e8/4j/90d3SfHheQHSEWwGlJBW5/8OkGg7oOz+Lw+4MAPj2ncWP3xzx5oay2/SxjYVpJZvWxaU9G7gXkDtvOpCGFX50V1dbJ+12J9XiuJP+ZXg1i99MQhBG42m8tGDraXhxfElUOaUM1+ag0vkXcqBQ/YjAk4XJ15lUgNKRuo7Qllm5DrsuzRp+QoDyouRImi/lmjRaEndQGYDyvgjlT1Ar+AnXK4rFL08nvYiWh0nffoavJlNUIMzxR1YUlLwez+gVrGqZR3JL5czAhX+dynL02u82cAWxa7dUrpb20gLZG9yhci0A2F6KM3nYZHWbBStjcmd+xjI9rZzuHwQt8H43ge5uADgLLnv9b/D3f2vx+PBPOHolSrhIJfE9sTqTyywPY9nCpgSmZUVSUhk+L/GF8vP8Mk346v0/BwDsj7dQpJDMXbVyKIpQ8pgQtkXNdIU2qmTsBoGw6QnKlCP/OSatJGApuvfCsQs9WdwSVA6CzCxdodXaW/mS5C7rI0r34qesHg83fIy/fWktcDho/Bf/7Bt889UtAOAff/8Jv/v5hMWyp7vIHbolID4AZK2BIuCwN/juvcUP772a/qDgHj5K75WWRxB8ClIJXR4iJswdL5mcpAWNRPUKvhVlHDR8CRJzbI6NVPdmSbv8zYI1+bed7sYYIqUJdmsqbREp8Sbfhaju59mcfzngStH4aE3SOoHSFyyamj79xUlTavWasidqBJlTug9wUvG730+1NrhoyzBx29QFMYTN6ypgOB++lJ22+1m/ycz7npB2gcbmjczHM1e9be7+4YApAUACYzkEVJ1JKls8hUqUA0KRAgiTLFHL2ssQi7JfQFXnGKiWtHV82TZH5tYQ2K7Pw8Ig/bXWxEuwsUbGMUzYTj8eDth/+y12+/8W/+H/+T9x/9PfAQDu9sorbkxtuYKQcZPjAs6zjNuiE7/Bz+NSwtIhio0+DEQbnNQO3/7wr/D+u78AAKhJ+5eugonFlH+31wVQWI+BcVncGu3l4lsyH9Wi62WgK13pSle60pWudKUrfREa3DoPy85CLw+gu7oV05D8WpEF80Rl3HLLvbsF31nVVpGkVKSlw/j5OGkdWZ/DYG3MtkzMsgBEePfGaSSPh6/xzfsn/PanZ3y8d3GMJZBVIGtB3n6m0sBXbw3+4tsJb280VFyVGLcaVLnqzNqN9RGXrKWecZwuv1/T1mfW4dAMKyp1VwNeqrltO16szaziN+rZLfDLtL6JL8b6fpsGlGkPBLVd2MYs/TLtZx0t03ilLfVSK9ehzU02yq/9YNLlQ3FcImjuxrJsSG/2q7iw4JOOL7KIRiUDJUnH7ZjX5xt9zJbWK3Mg2b1FWSNRzCdps/JvHq2VR72dHtxZOwX+ZNlHjVO2Y2u91peyt9Btq3NjSn2edW3OM2o0rh+/l2+TW/9falshphw3agK5mT6vJrRg29f8r435KEXsovjaAAAgAElEQVR4/9XX+Ot//W/xD//ebal/+Kd/h1tYaKURbFGnfi7vYwh9X9wm5bZ1XXNSDOa0mokBlMckioDZv+eO/Vf48df/Cl9//88xHQ8+nEvMVhhG7suaF6n7uTo2GgHq+CIS69LY1nnZC6XqeSiRDTEoB5hZnPwqeTucMGP3Jl+uJG8UqnZ65duonHEcozOB7FX1xjPwblL47ptbvH97xOd7Z8j4l88nfHw8Y7Eax73r2m/eTfj2/R6HXUg9bib5PzYbr9lt27JQzdIWziPhXoNKS9qNuVvqop7RdYk2d3MP8DUTWwcz3WVU5iUIJjHqaHrbqd6ubOSTz7DroTN2KkQtm4j52bkeKM39ebn7i5J2CTf61aJqNQ7l/wjuZXg5dYll6pdxWjHDFh8Qt8NRDEu+hxidUg68hcPbHxXuKIFn/Cdto45LGKq+07+UUAbAvvk8w0CFmGnip8KMY/xI2+b5pmY2XGy4RMQu9KyJ0lKk9V4aiA2/JgcLfxvqEIoUOoBKLJZnVCkghLIwh/JybngEoGn4PPz1ZbPW4PbuDv/yv/w3AIDf3b7Bn/7x/4ayj9B+Izdtw6c6ku/fzNZrVrS8L+LczMoRwG4wRhMWCPp4i/ff/CUA4P33f4XdzVsonY6+WYvMgk1du9o96+5GqF4qm6BcthgfjONpo3mjhkSUatgogAgYO2FEIJmBSmpPwJSFauf2ool/jLZN2vnzWeRvwbpjG4Ep3eDY7RS+en8EALx/d4QxjmHDRSKtyT+FGZaDNpad/REKXHxvAZvdxNCJk6fXbrJWfFuIxRcipRZR9+dQXAEGtvlJAgB1VDnVymkkzHqcPtXgbST9/pEfPh56cctwKXB5aaMGpc6/BqXbFiVbSU65fowiC1vUreEkxFlzH6xnyCzcom50dgkxs88av0TA2itN6sYNfSKAuORH8PAC+Uk6FrV7hp/zD2X+loHhPD0k3bqvUFFEF5a3x4ioLddGAtjMmt4igs0sKguUbk2TkABLKFoAkSV+ecG0TsZm/3JrMNnQXWmHCBKtjS9P/fiXf4XbN2/x8+/+A06ffw8AUOYJyoYXrXzSvj2IyQEiBxopPtGc2iKECU+hakVwD/lRvMSlph0O777D21/9NQ5vv41upTks5S9YpLEk8fcAbmL0YvDZCrtRHA5qNANj+BVsIS9at33lSXOkodikW10G4lKI8jirmXc9NoQZAK/810aQmf4Ky3W2jVL6EQFKFzYAA0gVlOypTdvUmqSS/NwiBVuJeVcCsksYQ+2WC698gb6mkRrx32jsSJwkhYlLiNfKZ0yL2eO5EX5slPEifFUgCPS4owUgG2lm87YUlwPHguc7wJPHr0Frp2CFRqRXfLGFG9GabXFRx3SYqwg3NLXxog/sKACQtXstGmj2PGCPclmd8CllYaITm+gpzDcDAry57e/bPrGUsJCuQGeS1/yAQlKm9cqTGi+Bdy5PqQgFBjZDClSBzTJtpsjkIyr9aZ134HMTGj3IbpfzrfPuO+Usv3SxL7XUfr/Dd9//iLfvvsLnjz8DAD5/+AOeP/8Ry9NHKOussXBr11UNGGYnj4UUOVOB4TLSpDX0pKGmHXB4AwA4vPtnePP1D9gdbkHhWWrrlUXE+SvOyqjH7EWCuEIqWQs2mrMJPqvnpMZNAV4vA13pSle60pWudKUrXemL0IvtaLoFSgfVDgDetLIrtZfcLSw3hfKMpD28Ihhfvb5WuFopWC6LuRqH90GuU8y1K4UqKUSjsvPyn2HRu1r0loZmXYXVzD+5XbZ6a6b5hdKo+E9sWpL+FPF6GkvZ77U1mS89j9mkvuIu9yl3SjJKWpmqbQUt59q2eRlmfet8jTpquM54EofAap830hCzbqSVfchlbpNsSjovN287txXZer+7yq5giYY+Zq2QYlhxPoiaSyQtZghTKZYknqu944ZzuTkTdwfBEqgvqIVznO7YVCh7X3Oeb3w5bVm1wVNopTIlYx6w8zmgwW+FaUVlDZJrM23yjpXjH2IvpC8WVmnC7d0dbm6dicCvv/se5+cnPD/e4/npHgBweviA0+MvWE73wHLyMQ0IXtvpt8gVEZRWUEpDaQ1M7nEVOx1BN19h/+Y73L79GoC3j+lsCboLuLGI/LhGVthqQLRqKgTuUmd66Eq5+BISj7Zh0ti4dV4ze9qKWBfGTZEXBrMAKuWD6a8/Kw5jwpFtFDHB1izB2pNSh2bZ+EEoDLks3SQDi/cjsjOtYSJOp5HKKrWnpg3ocfBpqoGUBgP0hN+IYBzkgRZw6gGqJtAQp73k1jikV06ZLqycUuuM5vpQooEwKySwgMzDdT51ltIE3wafo+cxc38Xpn9jeju1Ym8B9800Gp6tCz31RCPwoBg+NXLBYZm3jXknwG/9VmqwAWmHZckr9YPYSKVFE4p/q0c/uuMwFbVYxmTZllvneZGo6W9tejwgPPnXboUSCqZ/Y5rV9rWcWnbfXAwq7p0XRamxQpU1G4vJZmZyXjPVWEIwXhRxfBEQHlLZ7Q/Y7fe4ffMWxrib6NYsMMuM+XzGfH4GACznE8xyhrUmtiYpBa0nKD1hmnbxGcndbg+920NrHbfJCZKNVc9XYRLOCl068roNjoEyWGNh1Ivio0XPyt8WcqZDm8wbUTikIJ0zKTMcbo8wwFkkij45jeGFKsqG4rSpCRaKYBtmjzJos6xRKkncYsuAlVyNb5hTypR8WXsaTqHEjXzbYeUpRY7bwETDdHkftxhri6mshksHyMkTt3drXj5oued+Lc1mWyu2hQ8GSZ6fZQ9b/myD0Urm9DSalrtyvxS/BqWClG6S5LcuqJr90Iom9XH+k7nLfVmzhNAbFU9y0LVe3tqEUpAANskeWy2FPQnA0kruedFaRJ1f2dn0AmimKhOr4HpmCeI5km+dc+CVmFP2d7I7aZICow8O0ALsDWkv0fDrZCIbhy/boz3mw4WpbAxbKyz4cmpij7xBhQipTAQCFEGHs5OYABywP/JwYJ3JFwLkj1imeZQ8eOQtEl5pD3EQ4/p4zE2sjuS4aa5Gc/yKLSzxLbhM3q6E2PjWOW+IbRqrepuRC7m6gZvlj4OHr55b4V5pzqSinFKQ1YzyQSvDGngbWtJK3tYyYaCO+XOdYE0dBkkKE9zG6hMCrPNBnVQh2MIPGk9zlHKxLZdmY0J1CmIf8AlL9pPTEUJLIENABzXwKLh2KE4Zgn29ZDAxwCD2rgRYOmlkX1SU1TKhmBW98AsxeCMI/mIBV5xTuuMRWjJGkhqtfmvZypSAjMR/YjlaVW8WwiIzhRLD5ROV8Pp08dumipayYoQo5VV58LGWHdOibLy12jPDII065PekbBW4PIrm2DtX4mSvAZVb4cO0Jvt6qY6BzdEwtnJDGnPFa0AXUXtgyD9aQQmIV1gE8ZfpZ8q0c/ZnaXLFjp+M+aQc3LLf7XI2Sr6JWiJKlICCOYjRHK+Xga50pStd6UpXutKVrvRFaONb5+xR+dWVueTBU+pj4ctWbhekGBes7VXQa5ZD1i7l/hYotu9s4YtGdSxKG1xJQ0nV36BpqDT3myoslfOCqPl6sfZei34JSQlIi8jKrccYJP1h3g3O5xqWPHiViqjNFNRT8uK+5V7oywYbd7j3WaZi0oLGqkqvKDhlwVkc3pZ8e6708/6ZZk2M2x4TcbzWBZXD99pV0oIU7j35IWnfclYR2q5Kv05A4Er52CIvXNY5RXvGsdFqtSTvktba5iF7zCYqgnLHzF4m8bbjlzMaicafNvex7WJJaZaaO5d93grhUk8I35WMbLcva/NOX4SmpNIvyyJ1nHgkszVZt9IpnII2k7eHrNUMta/91o+cVD/6EVbHohxOlhW+0Zj2Mmyb8zPBmXJzSAa/eAbclLJo33YQLGx7gpJ9rW16VK6sAV+3eV4GSTfI/Xa4LZPyQFhnyNUyXk4DjD/p1X4xgypGCJd/0AOa3L8q1QiI5EJy9HxNSl0an9tojBfEiXNrHHEy68RptisuuPQjueXuY1vrwbct1Op6t1uq24aN7TC+/V2mJKZXpGNjwCJO2IYrQU0PWPp4ZZk28wbkZmryidR/VYQ2jzatgQiZ9Pm4TmCchxuFW0tTDF3ON8KZztTRndSEVmPHhLgbtfwKam2Th5+i3GwAUOkscHWuk9LltKHz/y88IbSeeCvhC+bhDGQy587Wec2BtpPtqFArHFv+pTv/3Rnw0aIBKIVL59aKCGuD5LKObR5zKai7frOMuQZlY6BtLwOlLLMidaaFYWEJoBgkHca9aDBtkPwb0h4twmA/p/AEZM9DhM61RZhmfokTuOmO2Fslj7PyrZ8t67BjVBzVQrSZHEoeeom0fMHCQ5xcG4HEXBoDUNJilgAnBa3zEQo0qsFsn9lrS4pUhLF27E09KZAcKnPtTDAJ/OXpJLxh87AlKAoAsmz3CngKnGvHDRNneVYeIsfIbi25OdC/VQu1upqKtOsomYNY1kbB8qqOj+cWl+TSp9BurqaVF14Cn+T/XlS++vhlHkNsOyuwe6kpDi/COcdtRxeH1YyFH6L/dkkq9HPpxAFlBjKl9hig/iQ4Hr4aIy35KziWn+W4Ki4AJV/+/2rB5XKXPi1BMUi9WLaUqcDwHHEh0EzZbWXEbSK7m/VqmLbAL5MZmQAaLiN8vlLeklGsnxGpssTP+rW7TZNnXmouUzolaJG3xOQcGrmvNfpKqsDYtLSJhySZIMuJsdRF78aEshlk9ibssr9abs5dXmR3gMkIGBQde/EKPmmwDQeHzbSEmUgCoDws948huF/ZF1a4orK6380W3f15rHYr+rwrU6p+63EuSX+ygNI2efpDRdiB+MFLCtxykXg5C9neQm3RevZFyVc0mav4p9XGTEgLm71CO5Vgy80B7C7QCjWg4aZt8lDuxgTaez+9VxqbPtgnwkiU7NyW1OrXdfnkHbrjqh4LhSRuHBdpjaE8gXQzPQRgVmDYcbdy7u5Vp1GR7TQYrTy90h4xNb0AaA5ShRq2rJP6YS8CIh1+G6V1jd/KhLESJoHJMFXbGoRQ6Pii9zuAozSonG2Zd8rbhx+XLEM7REi3217YUUKPdEOMhxLSFppeNlEkuQkptoRN4V6zRd12KUpDcPU0bQOM3PNtb3kKoeQjXCyuVM56xZVrNPOZvtJ2lsCyAUgvb4HmPCa7CS7dsFI/l5OckGne/1VuK5O4PMGsKpfWFhIir9VyZotYqMUhr6VUyQaPceotlsrcxXYUeNKHqjWayc2Gja1XFrkybdRnVqiS4lceiP+xbPxtqNRAsUpJN7Y4597FXFumXMj7yroLpN9l/2YnhYt8R0wIbeifWN7LJ9VqWqZxHrneOr/Sla50pStd6UpXutIXoUGN5hc9YSzSi3LqrFBH0u2uzOUlfv2rXkqvFa2ZbHlCKfOXDXYJTkX+Ie1W+OFytjwvW3YTCNYv2TdrLjqqn7YGB8IPyU1aycqrWwCV5rKtycwzes2tckmLlLJc6/Oqlm1a02QBK8d6W+oz240fuaTQAnGNT5k2CWc5CajPeHo/sVhbSRYI3FP42dAa8i+x2fL2KLUl0tge4ed2ft6t4OU1bYzEm1Xw6qLEpTKFpZy1zXrPipKoV6cytqgMLXhSCB/CEX9+ODTBMEOOn8fcRiOFaKt9k03R/JnOHrX4qT8dV1LZ/StEquR1K9HsD9VjhW0T1vckuJz3v0s5G8M2K9UlWdS8WILVqRByu5or9OW3zgtyRdt+zLhO4wL/gSx7QLIXvS9YWfxBJmjntTLSGulT/k/1O/taaacNLJ+RLE+yjSPPwAM5XebVJamXyzYpB1vpJp3ZkU3GFPkIjT924Wf8EpA0uZdARPSTA2+jLIqtvUTm4OZt6vhSPJvVuwSdKAS7TXM7dw8WH9ikv1pjafLqBaNBt9aPVoGafFqeSwx/JN6sE22ePR3i2zzM6NnhPNVuwqvUOo8q/BCClUzUpoqzm9laIVkq+s+/c77S5c2CUPbRPo+JSw3Bb6QAMjmYHkWaa1SNnbLR2gOmvYW+Ircp5ZWNg+DOF6rVhTPhstBAmdfZdkMvNvlKTsNGLvXcuWHrfDPQrE9ffHH2zGktu80ARIIXjVCNjm37Ffk2Zu5BmbdKknmSyn8ApLxScQbTqgeueLttU5ql50pKpXc1AKXGrPUhIyCzfR5TcnPuMhCppUT7oo8Uln8Uebc/hF+XUJ6CrZyE83jFJYk6nheCpTYzq3M5uYdJoXAvDy8zU2MtElmoaL+6qZvXacREpbB5ci15UvOQOMKy5mJfMvtX8WVZ0qp7W15lZWi0+zAPjsjcDlUazWE+aINTSRMfObrgT67RHIFjHAwMw4BmwHGNqAUqE55l8PTUZIU0m9SbG9t160jucvwNzZMhXjlXUfrbc8/cWHpEctxUika5u44ijVzQW02jGu/jaWwEmn+WU8gb6eWToCwgx/z7fvKEUfgOFlre9mqHZl+jg6mX5FDmL+OPMAUQehJrJI2OW+wSiW9IaC7JTWoOadKWJuu22/AWuVCA7RrMzrgpy1UWoel4GdWXG9LklTsV+iIJfMZy2SrdBDxzUNrSgkYuXNGkvbgpBiZQzp9VOOmYA/vgbuIUXIkpEtxY8O4xkDpWza8dHm5kWic/1uovk2cCJw6LuJY2nqXZ1ca7FC7WaBYp91NoAMqXqjmzZrO146tQY0zEHyWQW0utIUerTqA8fVF7mafJ065AaFFmmcUH5dDGeL2g/GfJRVsOuF0vA13pSle60pWudKUrXemL0Cuc0XzF0x0DK7fxFWruuGoKT3TuF6ivFez59fOt8u+ErxcvvZV57b+urRJ1IA166fLXbWVcpM+8RMshLFKlwKttTLV2utZmSrzYdmtqfFbcpH7Ou7PR/0Kf9xfGW/iiTW77W9ZyUAyQ52TbAbLzvbbwL8/+Bv/WdjsNmDdqsl3Z51W41mWfWuZIfdTMsvhVh6tlShVPFF0tO4Jy2qt8NcDbWYwR2dcMMKgJ6oQYOTae09pFNmksN7bOw+//HDcUJWopgEP1LqmHyPtsrArh167Tie5ZPiR45f86Xs7PW9ZuQr6+fNyLeNojsnZ98m6TPKS68eudxsp4XZP+7JeBEl0AJzpBL5vsOofcO4n25Fdgsmac5sgoww4KV6Ggbf5bAQesYuNC/LUoDbrV22xrTdgRFvFHA0XlwaTjCq3zbkV+KXgWgv++/Da5NEn5fyV3qkL1AnWE2QpfjPIEm2gaJUrBBBAqbpkLnlQc/pSBJxVv+NZn4rYuUjcNjeHALWEkF0CeeNfcqBGuZzdTkD2tsSXxdh5E9hV5PStEk7Y3b2v63bp9zviySlK2G9vcOg+/XyxzL1EKveL+eSBqe1XBBsCUzNc107Sll3DevuoLoASU4G7diz9C/JA+P6dJPN+RM5pdD5bv9nhiMMvL6X8PMuUrAc0BZnwFxeclbb1qRLjl3tMM9oBk12+wHGtmP1JBOn65wwivdWFET9i/GrkSJPNG7Vxi9SvQ0grMcyidywlWmvXqtq5BZfk7xVg7j1kLhC98FrMsDwpi/lvl1BpvjFrFKIFiit8Dn9QMF4FlEanWaJa3L7Yce69J7sdGOPYhTTS5W6Pv+pItflb8XrNW83yqeE4zy6KcZPOQLZnYu9BYTdJS/mJhu75jaWR8NZJSzVs8LekCnHSmmGDTGPbmgL6M7L2UtpUoE9lO2GMQuaMah5sAgcCvTb7I+SuXr91ZIrkKoJSnQxRqk/KqQOb6xJ67bmoPocj9UIKA+qIazVwIp7PKnFn+XEOhJWg3RR/2kCb05L6SihBI5qMOI3Pg0ixg+GxUThTe/cL323c4YNc7iivCqkaz69tog7IvsnqX81Y58AYmYGE3PaawtnXOvZu3ySs3OWPJvceHbcH9CouTBq3H8FvWLRYWPCrwaeuy2QpYEsuH+zl3s+m4O0+xF6uX2vY4koyQ3Vqyh090ya2hKPUfrUm7LlHObjW/sxyl6AN+kkNDRr8SjaUlgUmgDUCp4HcHPC1v64ZmeRNZNF6X3AAYNwSNpnDcgET4E5KJ/VXssTcXMtmH1P8lGBVmuG5CUsUkOc3yKna5+M3xLIVKo0kMcLK4vbHUK2bfA74IKzTQsaG4rWdKBbpeBrrSla50pStd6UpXutIXoYu2zsvFWL3AuUzB31uHbj+f0jt/uaIhaK2cu+5rq4+R1Ymw+mIOYrmrRdlIGPlXd6VYBmwrGS6itAakoa3zetHY7Oz8Y63AotagbCcSflLhRZVf6b+2fb75LKZUtupHn8eysoh+63z4YrItTm5oOjvaSylMa0s9pe3PaYbbF0qhlnqvQG3lidj+kqamjlszRrsvSWCl1qWfxqgQxl9djKI/+RgQy1X4Ntmtr1HpK31ek2ED5ec45RzkbXMA1dljS/CPB/jAI1vnxdWH4bn5tRWaIYANP8lrNYm5tc49jXVqxnEVqwzyNtWyo9LOi0xaTEDZ9nguu8n7Ew8XvXk4SgkUua0I7NpnuINkZ8m3ugoktF2LXn5Gs8l1gscXOGDSSq7r3psnuwK1M4mLaa2UqQi4aXIXGULmkm6pxYErFHQonBx1JJ6/c+6yCkCjmxEhu9jBMmhvE/LfgnBau/yTR6v7r+CRYtcrS6T/OxdUfTcxg6JonfZgAddk2dhCp5NARQ3wRi0fEiZwK4Yvt9dtdkmo5+fysWQzwbpp07IjrGW3rVKs5StdasgLRLJPii918VaZWPJ2y62OntegKarqcSAEbxWoHfbF1H/JKnxKpWmd2bRM/lhxEdyh1nzbxJr1At/h3Asu7gbKupPAHz+w6QOdEV99SHKq5OvkJvG+dxKPgLBYZZ6NAZ3zrDD4y4tDrEBlGVvjRaJmmTpxshCbupOQ3TonZM/5rtF2oCml3Tz3MU4X36jbKqNbAqonuEoA0YksC9D2JN6bvFvgslmazgQneXabvHXGrxlenrpGieJfAoYFG6FkyHKiovxD8CtLwJ0atxGlvIo0slAlLxRMkgHSop+oDFCWdFCDKftlOYqJjIPL0Zm/EcBKPvKN1bLH88lb1nomcGlzv0Ibms5xEqwXpFSz2TaShII0Vks3qZ07hydb/Rv+lOOzda4yS6YJMgW+E9KT3GV52wOf/y9779YkyY6kh32OiMyqvpzLnFnuDLVcUSbRxAe+iCYz/f9foAfJTCbKZCsauTu7nNmZc++uqsyA6wE3B+BAICKz+vQhw2dOVwbgcNwc7g7Hzf87wmIjBykH0oxBfRK9K3vR2nfcflxAejRp02Egj6km4GjkUZmkCuyQb+H20ku9wrLRxmrVHi+K3BQ8I78rqd1ZoZJFzr2UgZb4CxGHIkwYm+3yZEIfJbSbqd92N+/L9GXkwgGkXdHVgiFDM38yagsUXL5jPO8+Nd4MVwRkN7xDu1U1VVBqaXRErZx6n9JA85aDbQVGZ82K4lrDV35WSEQ1Q7fINY9qlA1e5a2nqQSQ/D10+KdMXB9H6i6dV11eF4rUzARa/aPBf0pLrLWTykdt5to03AUya4EiggpBxGUlouHJCg7lSl14Lt2nTyme/nPM0Rd+Pd7phW2XYlqsJis0jP4gzD3wPR5TeKvFV9QKcz/6crNdXl05q6hFwk69NkNK2T+/yF1DtHyZCkjsttej6TRv+rfKu2tUFno74m50kQrISx4mgzKPgfE1ILvqiXrOGJRHVjzdkvnB+Kzldy63SwNU0qHiJHo0aFd4V6t7C9o6s5OuLcIbtEMCruRMC47DQAcccMABBxxwwAEHvAr8ghe23wGazoDGrHXQedCaPOjh7Vl5f+lbn8aUM65GURBmQk0vyeAsZbsHc4Vqr0yDMLKkp+fb9vNQjlj0mX4lhkooftez3TwpZbhlybZ4M3tl0zxHrWLfz5PU491mpivQ9GNmpCovtuK9zPAyT5KyrM6kxhGT2LM2AE1XRPjZGdPDYUomynirvpWBIMeDynsazYHl8poNW0virX1vPXla/FoZpvf1XvZhxc+keDxbXk7PjZEP076Q4GTfVgcWxIpwOG9qSU+eP0qYefLxzU1t5qaQGaDzdpNm/UPjmXJFSN2WpOiDevWKqvDcm9nwamb45WEgKUnLNmq1RUPCqsErHLmJiQKy2EoErLnxM7jB0Fw93lZBs/kaEe3mbme0NuCrr27HrlPVhWhbWWvKXxM0mgJx4RVrVvHd2shBOIRXBKzidUsXo9u8QAOyp9MGpcTpamFNcff3ZWrfIqnyrZwmV/HCb41HV1pXZKDHpY9e/PqBs0GeHjUEBDSv/uUVLGoZn7kWl4YnCUS5pA7AL1kW+ziHZERRqE2CXEnfyLFmb62Rtc7RaGqHf+qyN3mwyCv/pH5YVZiBPZpKfFWqDTy3pm37/DoA3Js8jRmf+T2aPnznW5SN7Zo38moPukLCh4cBul6nehhqPJOH7V46J4VOQU81MlWjlGKCaktKtQ1F00l6uNYeLeiz+igDFELx7he2Vzxwy874DbBhAPSFVB7eI7uNTkuhNlVvVRC1LM3whokTi9GoWTnAWkCNcupF0QvRjB+BMEhHsMbjy7qXfZkLlCJtZ2+m7nlV6qDxjEpbU+ZKmP6jbpeWgu+USca1eFbNq2i8rd3fxBcRlVhjNRSg8kQrIA1Pqf6DYRlJEryXM9u5iXJfaF3EaBoo8XWjxTRam2mNoY79ut903o8k2mlVnE5goeXyzxUDQIT3vOdZfEseN9u2AVsPObbIDOCw2pi9/Zr6pe1FanX/7EpJIn09bkv47dDSbWIUKrgN7u/wYc1bOa/IMZjzZuF9jCSk7PYh2d8QR9lfiZdns6Jj1+IUmhXeip5ey1xiZ71CIWCM3v2Wztfy28yzDUG4Sqst/LZDoaCbSlbLXcPPGb+lrFsDUQ9XDIUq70aJq7zaNRtxz/f7ZgWXEesSlyy3CtRmR5ESNKa4W7T1k4ntJfLuJnXUdb9Iy14AACAASURBVJWCLg+ry6nxXFbWZnxb0Wcpu0pcaVsVWozdAq5sNl1mFiZgaXxSCI4/shQc2jM7AKu9MT1a+PEDG630Q7kpzdnqs6Ys7fFCJyVV/+Y/6ubqhCkZja0G1Q3QkpurOFWaTdjQeLWdetsyOhcHcKiR12gxb2TOV81Q1ZM9PMFUGh+W3xoP1oMoNzJleB5cGpm5XmiH9SrWYmglYUcmbTYuh+S3pk7H+3b/E5QbYSt/b8HfpAcamWhCr02yTlgNkpZeVWmvpdlmZPYU4ygT3tOwHOofSn+HVHVAiQJaZ/2WsK+D+kvmvRJl7V0JIh9YKtKGYk1JlPpogrVO2C5zS5lXcSJAHSN5YJsFRlWHmrhKVHk8NOXs2yjihiuKRLz0geZXrAQ7lUD50XT0PJq3giZ7coSV7Rzdvq8VZP4tsFWSbd5UCqoq82ZYlafOk5psVZKnkG68Ajd7OTXjMcDAhElLH/k2j2AMGCxNYH1PphraprG3lWpoCY+2Ma3xbc5fZViNo076qUqd8TtRiUdJV1FOM6RurWo1ArTa1iHawBFBDe3QwR3PO9+kRCj2IXXhOHV+wAEHHHDAAQcccMCrwEaP5to+pbHQbRgFbmc2PUxjD9ST6TZNNZPOFKJFu5NnNouSwbX7QIT3Czl6em3okM5qQ+sHU/w8qZGzEtEiIktTNn313T913lomr3JuFLiahZf9Kr9VD1L+Q5nU63GNAC19lbrJewMeo7UDa60yrjgNq5Yhmazh5fRlkR5OWa64j07u5STIB0wG+blX3qrI0OVB6UlZI6oHbd5xouZTjAElozys9FxqsqAtH/p7Meu4Hl+ui56N/DkAbVoNb2dx+KVmBe9D59xrtHKda56FRlcLvEuYuAR+1OnZ7E+KNLuJIHmJ1LBaxpbyS1cOUhZLb2Y6LR7wcqbT+Zjq3814H7LDzulytSZuVuh1cUfHmodBQ1MI8XuOTnTo3ZjPePLWXqGBgnUyGa5W55R4f++lxpwNOp06DS2RN+upDe4W5li7gUgsZ/YHVSmGeu2V0e9kr8mdrJ7ie+QwUL0XU5It26/4LsLy8Dx0oBubfVAJqEqIlMJUy0spu1qeTvt3O0ZcrK4uRabCRcOTSxwkBR4+q6VzSve7iM5q3jTQLXij7/LittBV6qunzBVi9b6ybqadHtLGu553lyo18DbzXT5Y1/huFU9NNwDDEyQZqG3GqHm2vKR96wt8tcoeU+IO644KP+7Br6Ev5dugyd+KL0sGy/glfZdXF7m4NP7IBUIakurvLBsqvlsV6UUKtIY+7C6nV/mPZlb/zA5RbqS3yaN5XztzL3uNQbesAxmsKoUKr6uFG8zWKUiLqVYDC+XWYMKegdnUHwJvBGeMlixTHPUj2PqnMqiaxoDi2bjLVUYy/8gWaoL2t1LkvCsbQ70io3uO858172bUe8q85x0S5bx9TLeuv+Fw/ifPtii3fN0sby/hOYJQ7szZqdGuK0kZ2+0+WVGeHZoqC5ffGxta92YqnyMnZLXBro4LJUwbJ02+qxtH578N6lAp+3BTUs/W7Ow31EIopnIha57PHqwuDZXIfcSEscUS2FSIVdSWDtVkY7mS1DyYmRmZ6TBQhk+lzks01vZLa6Xvc+ZWadnGXzVCCzI9rC2kShh8gnIvfMpjbjlDb+6+oWLWClkLqJiopYVbHdsJbw+14pcixfXkRep2xkOM1loCa1IMeFLRr2czBlT/VoJEQFt7jXgvqzQtWuvFzAVmhdwQU1XxO/Upf1VxUpAqsLb8uOY51rNuQn2yPBEp+VZ7MlfyZXaoKBieYomdmJ2xGRXRRl4cRE59PSatVsSOGnE/b2aRShUWmpxpHfzRwlq8qAf2+LIZXxcXWbl3QkfVF7wpoebTkl5+RdJ9DqSph3+ay+JFRPdzXXKPOYC23dxQGZSCVteo9Inl+I9hORGZoPypVKPDoErYUF2b3syR1B3uHJAheswG4Y3jMNABBxxwwAEHHHDAAa8EOy9sf23YM7dsTRXaXp3WzKk7s17xWLVKrjkT9Bl5o1SNcO1ginp1SYWmeT0a8XUWFV4fZ2AWJN1Hxb65HpRVKn0TTV+F4r0s+zjng7K9am9O+9BPmVdRKtLaUCl5OaMuyttPl5W0iis4qN1Vq0vlHX+E0j+jkNdH8Qs1vJfZUaGKrVyBuLzH0PNg7i1YGdkhmkX4ivxoUOpEVr0EPZMxWBn2IqztmqnHTIuG/KnJ15bM1RlRkYTjThbKcvykoPWg48EShLdd4G9fI1RSNINyj2Q/L4H7CRcu17zyLQ9+cz+mD5eyOG6DogyrVSKtGArGyqAYCN4Cr7Jvs0i/4Xaj137rfGRb+dZIBXVVCK2IaE3gtbGbSrlKpfHgqqtbiadGuZpSPQ/P0UR4R9Os8+mYVB/Fc+Wh7G+PKii3N7qHjcouUpZ1e9ubmy3cEy6yAVv8taLp6z5QRFaPd9XPlkKv42qZ3j501DMuq7w7eKvANbLj75bxKXImF1guw5cnT9kbmZIf73OP5qBob4kUnZQapC4nrmSyJjdVmdBUxlqP10zXn/Ss8GM1tjrQOlS3Bg1BKL90zuA1hJXyuLqxPHUet3ms05MZa2crOWxVEoEJT1iOcfncZTxsU3rEPdug+uq06IeuXqsn/5nxWZwgT1RIzavRSyOlb0fVQnY4aVsxdSJbY2wTuPbZ8NT5axuaWOOabWS2HPnXGvtWbt/CQ2oVV7q3oci3MJlqfHYHo1KuRoYNmatktd6/dUvca49mSXmASj71zdMU3+vezJYgzKPLsjXbvcxfz6Y2JVQFXGvsLG4lfAvPthRDoxjjoCRyRqViCAjjM51YLw+hKIYnhYPnYyVcw+rGq+1X92XXjGuM5RWS60i+fC08tX89v9ZF6k/uWuOizSstfi3RtHbrQFHwEQ5YbcsCQeHK9oGhTDaxt9+2jpzg1a9TcuW5R+ahVA3LFWuzdS183RDc0ekeNL5o8QowZGTW+zRVAp1yaAm1+Ppjn05rwXZqm0vSUeXD+hW7DE1pCmQ5Vnj9Ao6H90qyJkDbYjL/GJpZV/RI74gOs7aUtVrWllUBvZP7y+jUKNqaAdk/Ya4ZJH28Fm6UAkNL5woXtopf9Lem8OTvMcXU7OKmgBnR9B0BKD+r8LZSG1PcDaXd4cv+1VtqqgaL3Cp6WW2r0vikEEo1Tt5l7vlJoqSAqWVMb4Vx2X4T2b7uVhmgClthzzH8VnZdWTImh3vVKCOH2tMz0X0NgU5Wxa/ws/LLFwffbgL2JmBJpjD4qquN0hF4pQye5oirc9AdqqP1tXHbc1nqvVJArunegSLv6pZ2oltl5M1c3FflCWnDKs9xGOiAAw444IADDjjggFeBuyydr81m70J7SyZb3EGbC7IS1vLnrC4xauHK3Eaph3oFo+JCaHozW+FqXIGx0pyld2wEd/8EkYr2XCtci0cKmtDbfW223PLilBwi+2D7bLY99W55UatSql6nPXzcGoudPhmaPfcg3IOphBaE3WXsOk62tB69mjtKtsLEe7wjI97AdqR2rVGFsVYqnWdVpM5WgIxVVaZT8JQce6Jn5/VGm3t6S4IN23vLscly7/GGwxcx22ppnKttIZUHMwbqR4SiBzMGNlyVWz2YI3umBnVdM/mwHbH2vQ6rxVL07ucAazqodf6gB6+/R3MTjHGYpteH+rEMW5V1LcOhI8zuJLF6SnuN1rCR2dAW0vDRs28zWNUynTK3jBiOSVc15Hj82r2PSuywTMqzqPDGWEIzCpUyF8yvjYV2mnb/5PiNttKMTFJLqbDIoKGg4WdQa22dX6l45a9eYpeGJ6UfytL556ICto2vfvo1xBHMkcHd2Zu5VX6v4I+NcUSG2dR0Wd63Nrq4CaEOLpLKjHloW2NJTz/4k4c5usWhn9JQ7BiOxZmhap+mNGZzG1Wr0L2Osd/feBzPayf9OxSp2XotxS5RWgpFwSteR+3CJkOTRAbrxekxSx3n2uC2YyC3Jr0XzSEF7RFV9uwacUW7NQ0MUnF6nsjy9G2Vb9f4bBSoiVeHUki/wgZZsBTOvcuF1Wct84xGz1RuV8F6J5VjelVUtZT3gCHZprVFRN6iAFLaT2W0SVZys5dckwcW5Owku5eeDLD1+BPafB2b2StspLfURwyeruobaKj7qE5lwA08AztOu01D49dq7DTHB63ysYv4hEblhgx0mVgcFSr3aHY3Q9aWobTjWganNDZdvDALhTWR9mKmA3QUvQLS8+r6hcEiHoJeGCuhypw/tckAkzdUg7EsvhNJX87MVs2EftUe+Rue8rsYA2U5S4NYWuKllZ0hycqjgiHuahgJenBLTvXkV78UmpMq8uKgfBgyNLOmi0I5zMrChuV6uZWFRSqNGE6EEpPHfzwDyXDUDOrC4j/KfuViThV5QoRKPqnwBNU4cO6rJNteS0WkKuFlGOX/CByRW0G6dZAko9odILoWUNtJYUoq4qUIbotT14eEYmnJRWadmeqn5T2mplvlqBSi8l22uV4zbavCaFgRo/ZD3bE9pV32iZplxNWZo5GqM4BGR1aSPT1IoqfGraNq5c4ArssVADDPUyeffGkylI4yhZiIZ2Hsebm4YiZ+cvqTjAWfPsg96VUgjl5aqXidhzZ+edRCHgNjBzoKKMdAc4SP9Luq0FrJ+6MvRdwise8p7dsQNOnIEjvpIy4RqiIlXd/nmaeIHA8jpWVO13m551gTLTdfS2VgPzEjFheAEfs0ST5T5OX8qjD2ZSIWtz/4PLOxIb+zcZHGQaxC2PoiMg5joDZ+3Xeyl93gUW1HbxDHIMVOld/V+C9hdbxp2qKnGxvE7mpkpjBaTZ3gOAx0wAEHHHDAAQcccMCrwKa3zonkbLs3Ew34jXnoYHhucCuWPCnhmvdHhOvXGLU8PukjkVVm2eretcGwjCQpYa1wUcIyrEjbbEfV2USNcPFLd2KJj03zrSqSVqY/RAQDcrPLbCNefXdaAm1powB1eURZgPFoOcV8WSakkSssMrzKWgnvhpUrPWvhSp2Qo2az8hjOiULpjXN/oost0cucM9LVUHg+qpoVoHXfAGhvnedkVuKZYa3FslhXDCJYtmpe0cMk5KKrod57Y0uxo9wQC9H5zHNU90dWcjfxsZTLqrwr5S0VeTZkbFmO9r7NVngkpIQXsOWAUK8MdwfBgEzNbAI/MwNkCK3BUK7CpX70XkWBq+0nr4JiWkUPKnQ2nK3Uv3tx8Z9Unpyv1/JW3I9p0OYpSmHqPZ5RzkOO5Eo7KLn/sqCVpuXNrINbTBk8v2OCeWzp3BhPWwjKUjtVSr6goXEpaiEXSWtGZ4pE/amFpR8yrBI7VdFoMAzYZFAqYfths2niy6AYBkoBe7zWj9M6WfvUWsOVlVb2hxkQYAC7LIkmOZKZKqdcSLocpIiQAjgIE2EikVzmEUIpMlNhapLMPcXJfXsyHaecZe2z9GO9TLE2rVaVmK34bEhTbSym5bCaBnGBXY7J0jCtCqRwzoAMq+g10rSWJ9OqYF3+t2/exJBp0mc/ZXqCItN6hpkIky1QKYIoe0qcFJYr/VrV1sVSZKxiVJZxZT1SPKrfPmddtmTBXOcdwyOVogKpz/pbgJSRoaujmsBg9B7Zzkrb1fyb86wb6Tovkl8Gd79TmEyty/pKMQ6HKUoVoXErzVO0ebYvs+BFLnSoS9vOP1+mlnmVacqOL75XLeeSufwyu9awoewiVDNxU0rWjVofkIU1x4NW5g0wgM/B+WAtaGpvK5IwdhjIutm8IbgN8tJIEdqJWRk4Kda3Q8FQ2f4QIRaKS7vjoOSAAc/MpISh2qQcPUtCUcrZX86o3Airy6+dmtMOlVSzQ+jtlHCLMAW3GZZ9p4FUKgttkNfjRRP+EDT7BVBT6zoBYSdHuTm9AjPBWgu2HCdB7lLtXKjI77KGldeXtN+N7+pX/S3rLY2GLG0pxJXvut31k99aeUJcHarxpga9Gwg0oV/moGZel+KGfXRanbVZdlRAHqMsQz4VcFMDS96LSQaX5zSpyegaA+Lk/TTGOGpZncS4j5rmRs9HN+laj4di1bJLSxB4QJUtAqk53kjwgxZfhjXlkSJNhnh/dFxshS0UWjypB6YJDCHdfsCw3M6VYTF53MVaV0dO8lQ25moblrKowu1VJJ8yy7A8SEza883GeVxMnvR1yjc4J5CF0fDmydKbKcZE6fCo/RZ69YvAfPyUOir/KMdNRkqOsU5Y+zxHHq4d8uk6C2Ok40lrCeCx3ZdDhuZ0Og8R2wuaPcG9yJG4ZuSYq/eAzxd+/PnnX7oIBxwAAHh+ueQBi26QHnDAawPRjLDBg4SjqatfhxB6cOjZA9bhOAx0wAEHHHDAAQcccMCrwGFoHnDAAQcccMABBxzwKnAYmgcccMABBxxwwAEHvAochuYBBxxwwAEHHHDAAa8CQ4eB/vGf/tH9sO6kkjE0fFJ06FBPC6E+YIV03YULKQ9YMSPdCPGL7Ee+/Szjp4M7NhCrP3fQ4bih3dCE3//+ryuUP/zjnzDTAsuAmeRJ9eqinhthS01+Tf0+AmN1b94M8CpQZzYuX7ZmJa87IhAZ/O53/6JC++c//gmLuIJmMq17Qv/rh/4Bk9dplTrPT9f6vfta752T++NuQjEw+J0iF//0xz/G642YGWQoe0nnU8Kvbwy8QonvpRNHM3lFkvk4c5zPIBhvB/7+97/rkhw7de51qDnPsIvdpFOp0djZ9R8Dd9ulcBLh+nWhQd7kV8a0C31XE2GV2KcySPRGzUPvWBZ/VcTNhocxmDwRY/TyTcaCaMJU9f692/Z1++pVWOUOcieOswG46YU/JddurHKB58Dw3pw/+2vMyPOf6dxExMRZ/K9Pwd4P+lfepIC2Qbq99eo87ztmWfkVPteu+LpHzpLvzRTe9dYzDMYlALAFCAZqm+4u73jCTz/t1o3+cY56hRLrt0UJaFt0+8vN2p87QK7bjTEAl9e4teFYOj/ggAMOOOCAAw444FVg7MJ24y7lsv6y9k1ejMqqD5fPpvDSC0bKL/dVZ5zmfZIuVXeufnJfw5r7eSV0FK2dutx30PBTDZezkbvSd7ctnVuEly8s9Gf/pnmCgYHlRayWb5uRjmCP1kOjtXkR/14T6h6dwVnuelFWKOxaMmrMzEPs5hn6rR4OuMcpIKWLDs6L5D1Jn3YvwX5oVGjsicxx0Fan2p7P7Xnn4v3+bR/lWfSm35hHFJkbONmjWutW8AzpcjF/SMU/D8i3rDr8mrYD6d7lfg3GlN/+Hu8Lwpu5lbdy0i0g36xzObrHAxq8WMDYW+de4MYb59ck7zrF+IpQgOxll1aqQpjkQt36MAIouHlf39V/eycP5qyi8XrqqG+bmmUgiBtjhsbSc2uTQw2h/wCgxcPWpohk0HUsEWVJrYnW+d4Cm9OOFGgvnfWojdAqGFfRvYlNvzyaxii4uJ7n1OmLBNRNo0PPeExP/v2alDI6E9dfiaEc4JUN+1scFXnRBuVfB529HOXmmwDS4ULZ968RtpR8HxcMKb/Wpo9u5pVbZywrnWhLZqlPtmrJ7zNGkq51T5261x7HemnMo6lkmD/51CiRFkT5K51hQOSblp1H0tmVgljDXZYrAkc/2Pq9N0hXivwrgI7/8OY9GtKg303EAfn50MAMrPfUrCwQZ32rlzFGD3o7uhib5fUdBHyjQANOy18I+l7JfuinAGrMjVoTKZ+qY0S6J3Rv9uMfsBPic7Uh4M6G59ob1ulHnW/5dO0a6GahNB771ctecXQSEkStBJ+/AfrLjqjbcpete7MRTN6RsmWSnCXv9LXg3TXa9dPvuqNJg12GZgYrpauiq9HEMGRcIAWXLMMuFtbazHtFfoN+fPtVLMYHY9Myu42qxluqPYN4Be65vPp60FDu0qGzw4sj6aZ32lMWu+rdnYG5NR7uvb+8EcS8JSuw9sZrI2UH5/VBccS2sKDMoWvY22+7QWnXUjZtKlPt5dQ82bt4PRPMXvAOEAoyKKBGD+fmMhTlkYLy87cJPgn8YtugWnDnYpR2abAB9q+09Ao4Uvj/lhjvkywF7YSNRmaVfMyQXCeTKGxdwTkOAx1wwAEHHHDAAQcc8Cow5NEsrdctxmzmuVcSEhPIGFi74HK9AgCePj7jw9MTXi5XXJe0IcUYwmmacT65Yp9PJ8zzhNNpSvsQLABjvDeIMg9D20O0f+Z225xv4xxjaFajbwZp7TMZX2kqXfkFvVuX6uVG9i1lGYxa5eHMI7a9V29fWb/VezCQfnylw0N7W8Y990SpvDmcR+31y3yMuzydaakSCMvjgynvtlfzvyVv0hiMboPSYM9+yTXoLY2X5wl20a8zGUzksv7V7RveAWObdfZQGotqg/D+daKHZZxYPh9PF5IrK4nZPcGDZMofG9pl09L5FlPAAWeM75IS2CbBvcDi8rLgw9MTvv/pZwDAj88v+PDyjMvLS1w6JyJMxmCeDObJnYI/n2a8O53w7s0bvHl89GFnLNaCrIWZTkoFPqfBt12IdHYKxc8+4/QMrsTFm5czK32/h1YuHDe1TqdvZWg60Nbe1FmWoLWZelvvfU58Nwotq320NjfwZpXHVn5qGaDbaXUV9q+xWwfgde+IlDC+TeEW2LpfErjNWKSGPLrZAM0epiiimh+/HNzu17mXlFXa7FbnyM6SpOgthxt9ojgsdxqdkZSmZ1eW6EtnDcZ7Z/sezVuZhBnWLgjVeXm54i8//oQ//fQzPjw9AQCWZYFdruDFRo8ogXDx7Rxegzk/nPDzZGB+/AFfv/8CAPBXX3+Ft6dHMDkvqfFXM7XKs75f71PAOqu0BTFVnz1jtC/Qk3JpKfmc2h5anoLC0CQ80KukOScu81B3WIqObuZRBYeJksI366XcBbXT5lPxY90mtyv/Ed4UeXf567V5c9/EyBGRV398Otjl8frsIPcej8EdHoYYgJaxCHRkyA6aue05MhVrTwDvLS/2G4qfG18q5VHnUp/SINXkY70E05SH0uhcxR8sTyA7vK9zrJ83Lp1zRbg9v8rBn4Fzy1BEeHl5AQD85Ycf8Z+++x7PTy+RkmHAWEedjHxiELDL4l4nAsALw5xOeLlc8ecffgIALNbi91/9Fm/ePoAo3VwfSn3zckLhIRmUD+NEWxhNlJGlcDF7qeiMGKErXstu2ga9wmBQBXezzjQ0nUr2aN/IzG26PlH2Y0BSkenlfY/rQvpzEsYjk7AtMMKXRd4d/mobgK20eaJhgSn4csSYqOYDnST1nPZz6v9tsE+O3st7ufEuZ60kNxai9zrPZlrxn+yHN0A58gmt0q8nPD0ROliyzw52i9ChSeSoQSqIbsh/PRVVPymk2CQDbzQ+I8+t5DvY/sdhoAMOOOCAAw444IADXgU2Lp3LZQ4qQoE1D1fwZjIzni4XAMBfnp7w/HLFfDohLnJbi+VyhV2ugH8FwcyTzzstr16uCx5g8O78iJenjwCAH396xsP5I87nE07nKT76ztBnobdsMM9Svfrkr+UhKjzMK57Pul9a3s4Nns5daQtKpNFa8y4O0I3l4PR9gzuk/6hAuZxxG1P0lu5eF8SyyW7Hzyhfivw6vKlPntc8ZLI/6nRrHo54R+PKm775mgkLD9Xn5RGqPUGfunxSf4zA6y2Rb/HIbvFS3t/TSVVg82pMvUCb831N6LPdK5e16YDTl8s3bcPZiLrd6xhWAUfTlF7OOsFw/agob/i5oep3PgyUGwsseyuuYzKu1uLbj88AgJ+XK6bJYJ4NsAQFR+4uzGmKNN1eSwZfvQEKgNni+vwCmqaY1mLBTx9+xm+/eIczzaI8lP1dreurL3Hq3dxeit+uuIHaIB1fOm8ZkSnNXgO0la4UrE0uW7m5WD4/6iYmFuwPlRkz3dybpQEYtoXkNyoX/VUR6cZuKExp6Ego9tkMKyhB8W6szx3DtWeA9Himz9MjW0E047V6Erd7GCgn8ponffP++GUNiO2ToD1G4+1L5D7nm7Y23cN47F/6D4yr/aa1FBDcHwb4tXkx+6HG/mLQloaD2J2JbRm0n7VKY1DkMbxMniOOGp5Zflu3FwFoPmndgG17NPdcph0Z3/UcA7hYi+8u7tqil8uCaZowmRnL4rycy3IBX69gu/jL3AGwe6KSiMD+DvfrcsXHn3/GZTbxgBBhxst1wZUtSm6J9Yh/ttVl3Pu5YkQCQOPpptv0SFCw60aiw8szGvdKthX8yF68pvFZGpDdNtCEA4mXWgDAOvLCI8WwIEx12kBxh3DOHg4Q+5nbBmCPVvhxD2FdlOCu8n+r15MGDFfNQNxjhHYM0FXFQGKiMqpCxhs274tfXiEDW+TaTbnsYOm1CcNwzruqtmagrk0qRvln/YR64ufeVVsZnY1V1ovwy/Dnazl5xiit670yaFsJWyuTRR4V3ZbsKmwcgavn2E4v024yOgdg29J5NNTWTbTwDma8GsZzMhFhmmewPw0+nR8wk7u2aJpdccw04fnjB1yfLoB1Bimzs1KvLy9YxN2aBGCaz977CdA8gQzBMmcDr+fRvHWJskzZEgWvNH4g3cb9uUASWjqeFOx9Y1U3MDRlMuZdCk+lEUmym0Wlm8yEE3PBwKQJLF6dWqzNKDunlM+/Wc5UDwJAZFI5yWCKh9Y8djGRqHX5BuPkF1j+WvcCCSP2huLl+fSMSo+9wQhVhbiqGPQJ0sjSOWm4ZeQrKuxPub3ifgZpz7ud5Vjke2N+Q3nK3NtWxNBBsRs9oWrfbpx8/5K3qvwieW80/Ma3klUps58bfNv5V/a5snqT1a3n+bzF+GzJyMS3FNOPN/ZxGOiAAw444IADDjjggFeBjUvn8R8RKX5nq54EJufVdFGM4OubDGHyh3tOj4+Yyb/kY5yn0gCYrIVlwF7cfsyFAXtdcF2WmOU0EWgyoHlKS+dEsGxxvSavZyyRMsOq9loPeAjUmc7G5Z2RWfr4zhRwoAAAIABJREFULDwQ42r1uUWzcssjeeHWl8Rby6ANL1JFU8dzZU/e8k3zX4HMYW+FZfBEeGHGn5/ddVrfvlxw8Y7d4L00YbmAHY+WZIkozshmIpyI8MYYvPVe9LenGeZEfpykvnATvnYtdnu+VuiOAIsZsZ7FRtfAaK6V+Ojlo/DdBu/l+NaOEjf3LKzt0cwPsm1rtHwcfVrP9S932GxkG0UPti6p084mbm8Favfzetmans61hFgf90L6FCH3gU+yzSKKhNfnzbHh2t7SE36Ol5Srz7KvUpl6XlNS8u4teze8nBgfR/ljKtsMnrGlc5LsS2gunUtlj7rxmf0thESY/VLj1RgQTS4Ln48BcAJAxuDq79tcXq4AGJM5g7whMRmCmSYQmXgxOxlXvqt1ezTTkrkoZOqjWL+srANbAySBUmh29KbaPRqzM5IhtF6YkaVz3yMVTa2n8nTMowp+VLnXeM7IS075vIzrQKC4DGv91gqCwfN1wf/388/4+48fAAAXe/XL3On2ArahjJwva4mxKbdeGGMwTQYncjz39Tzhf3j3BX7z5jEOQCLKeG6kKq9/AE1SLwfBfUFfeh/dpxf6o4+f8riFPwFw+fZT6GuxXWJl6XwNXsOoey1D8ZczQAHJNOvbbV4/n/FtHCkN0C5bb0sK9RKG9HFLmJKeKKbf0jSv2t+ZmLlzHq9mkJYG2Ai/9QxICVR95iEyb82YXTE+G/SaS+wo61Xr4S6fa1EKjHk04w+qc81KKWxz31Bhb1w4DAQABoQ5eCAtpWoFppwMDGZ/ZCM0hgHPBrAWCHs0mUHGIPdDEQwRrLXRKHDpKfsrYXXPDI2aCgm/SWd09tCjA6DFkO0DEG2mSp4bjX7PeKw9QbXTW+K0Z1B5/6xZ2IGmMJJ9MrY2etEtMf7j9z/iP378GQt7bzkRQKbeOE9c76sM0YXHiplxuS5YjCvnP9kLLpbx7x8fcDZ5O3dq0IjJ8/7lFP4YtBTnHo9oGodjCr6dR89QVQyEamJZjoueeyrnj63nJUeMiz1wb/65/367vE2169rusTczpy1hWz71CsDapKmx77czLm7Z93kv/HG68dcd6d2xrFUzt2iz+Df8GJ3ISGNszYAcgaSDKl0cxaxmfGp4AqmB2x8X9fio92hWBW3CNo9mkKJNj1/eCOFAEABncHqjhcDRo5lfC5OMDSIDM03ALDqTCLws0WgC24ibF5ewsHX5FwamxtD1YNQ9HOHnTcuWN40lWaqRgz8eL8u2HhyagakXdM341JbEuFIirWXKdEdqf6ALjBjm2NKAFwv27PCXn57wD08fYYHIh8YQDEHwnICyb70RkRsDfok/8C0AxoKfwFgA51EHMm/0SJeP8NSn9jQl4dtWgPdYYo8CrCu01ryc+cRrfHIk4wLk3MWgTtn0yYmKudlIaOdzK1D+zy8A4+3Whpaxmuex39YqJjWJZI1Zz142e0NH+KPr0USuqvf27d3kzK26UhTjZjorGWy3m3tOmi00xFelV5O+VY1K/0c62cbwHK66RB/LUpe2Xjofr/Rmj2Y6VdkbeK5WYZ+mQ0t2MDNjKnoms5IRjE1yd2QCMGyxWHLGqrckiMkZDpNJeJOBMQbWF0NmUxonMiJn5PGl8ybNm2DNo+djFVtJxYPGSq18KaOZPIe6YZpm+jnjSuOy79HMaY54NJMBIJndRH55vrqtFX9YXvBsCIaNIMWw1sqS+5PkjlmkkCUvuXXBm5hrMhPM+QwmORj16436AmmHOKWd6Tyw/FXb3f7H6wj5EQNzxMvZn5zs88wHUYrsVw0EOUHql7NKeweFfs/Jx+frRV/3fgK3sqkum0aNxbFJ0ghdn6Ih2OPEV49E17i+h+F3Dzq3GI/3qsMdYNvqhdaflIndanWw0reCBlN0vrYMS/cn2WklXmscaWVpeUpHq3+cOj/ggAMOOOCAAw444FVg06nzcJ/c6kW1wnyO/h12MZYtluuCSS6ZIt8pEb3+xoCs93oY56lk4UkiZhhy93LO8Q5Od3k7kfHLmHJWoHun2tXRPHhoTk5yyrfMupJXTA8XIcIBqC/3Zw2chWueznqW1tk3AiBePE85fk0jIemeT+mh7czKfc5E5E6VxwMbjjevAP7oXwH61jIWyzAmXfLP1vrl88Qbrhre506UL5NR4c/yB0eMmdK9r6cJZp5xtRZE+ZBqzfuo+ZECP8W8PePXV8zQjZuCQ3uezLAqMuAp0nFaPBdL090CIsvXOwwUZdGKTBxZFr2Xd/LX7eXUvJf39FymPMbvZM3TjhxU85hRmfVxx1+jKjd1lVBqjj17NHfv67zJU3mDvLsl7WYINsqWPMXKW6mrh8VusdqophPnDLI/Yt1KXWnU6Mhv8v+XHtVAfKz0m/ZoErxLv72GJdFzdyszrHWXZV+vV0zeGAjGJ+TVMiz9yakMZIxf4vT5eEOTiBC2aZrJnQg+n2bMc3rrPNDK9xlsUa5hfykG09yD9SWNjoAJTFWvfmYoY8vneX5cLIm7sJRpHacZmW3DM08vD/mkPLTaEJEzCsNmSCJYMBYC/tm/OvXT8wsuTy+YjQGHi//BsMZtuUi8QAD5MMETYXKUCTJjMJkJ8/nk9hADoMkARLiK08vORtXMzBWjcyXw0wnU/SDHfAA3bgZFKnN3bK4tUzsF318qL4uj0WQhz9r74jwvxu8xWDdMt1AbzTP7ugPBdd5eB85/NQ7k7QNNwQLjRmWiM6agU57OgdLTL6M0ZcEp+g00WDt1fvPBoD0GXac8d88rZvS5ycmkfdflhHDglEjCXtXSrOlqAElfKs6s9e1uuS3Vr0cOGz2a+beCiIAYmjWkscwIb05ba2PGht0hCrB8Tyd1TDrEYwDjrkGiQJTd4Y5pnjGdHMVwGOPNacY0JUMz7OPK7c5RQzNY9HX43bevsfoTQ6YiSWOzxdJa+Iia1PeM6Ad9NCGqC1a5xzOrSJZPDnH/rvBYG2NgCbAAfvZ3qF6XKwgMAzfBAQB7vcIG3hL0GP7FckOYvAHp+Ork/s4hzHkyzWSSceJvPrgE5eLLLvlrxLzcxEqR7i8rUktvLyDqsWFwyNPray+qtDyYoQj6uG5d06V5RTWJ3rQ04XIURvWGet+i/O9hjL6GQQtBskU5TUZyqb+/KELqFTIJ2Guwjnsv+x70PTS5Vu5dumnSA+j6rp3wE3oTd+ADewxV989rSUeCZ91t3psx4NLObFqYKToUysvR/JYZ4UbNVmlcovpAU1uv1zDWwoOHgXKpQURVntKlHwa7My6DAmDvqPQtGO7ChFveZFG5oKSJCPCn043Pg1gIdb8sak4zpunkKkTAGYzzRM54DfdrCkteH3y5tU7DcQqOCoMcWU8acs/wJ4EVxvY4457KlqdT8pbMs2/4Bm8kQczCyF1dZIwBnRwvnB7fYDr7SY03NJdlwWIX2OviDwUhToysL9NyDd5PAGbC9GAwPzwAAObTCTDkJk3pSCrYwk2YSo+5Uo12y9IATj+pKlqlnNmdQUXOkZGafafRFG+nUIueCt83QHUF3/N+6spY8HUmnxujnlqHxUq8EZzb1eJ9aACvYnzKPKofe0A+LSkMkltp7vBe9nHHvZdreN0DKFJ3RAfNzsb4VN7LLflswnX/3J+LpYzm1zM2S6iMzxAsZF9dxBiTxHRapVmVfzJzANUVThjv6+Mw0AEHHHDAAQcccMABrwJjHk2/HO0uJOzMkoR3KXgpOFrQzgtliDBPEyZP4mFZcGWGFcktEwyZuP8SgFueJO+lDDQZYH+4yHgP6eM04eE0AdY9VznPp5i/UrP4p/IlaWGN5B2MDDnfJ7RhGkTo7r+8DYSfq+lULKdTmsdTzoQ013u5FyTfj8kbls7jpjmmjC6BMAE4PZwBAI/8BQxbTIz4mhS8l53tArZxg0eWmQ2eLHYzVjPPYO9Zt8btFU6vCaUiXeTyqfinw3nrkPHYjvk5JRpuh/M6I63uH6w+yguANjJrw4Ee92pWmaZ4QC9vO06unFAW7tKJ2Xw76wiu+rTZqXuPw0NjGVX+jl+Gxl0hPAwhRsRditZ7BS3HA5LMWttfuU5z2xJ9Sw7Ig7rNsxSf6zL5KO698W4ABvKFuAEQuws7SOP6XtsmlBWJgy2We18dn1iUIHW4DJNlV3JZhSFDM+5zNMF1n+4lzEW1LByDDcOEV1qsvzydgAkz3vilyC+XK6aXK16uC14WV/EXtriCQGRgKLzsYxDOAwclYu0VxBYPDDz6d4ROE8FgcoaqMUC4QFvpkIwVq/pog/Q2eSY7KhlW4xqZQFkbJ2LiJyn3N0Y7MTcqS1e8i03/ovjOQqMcK4Vpa0ldtGxmjEpDVLVy1XYgL5S5WDIz7CYyADA/nDBhciwQ3z+3ca9w2XxhM728C9PVjcGeD800wRjyEyMbagcQ+TfUZT2TxbLGN5v5qsfL3WQbmZjGaFP5FdlMMmcn8QbD9DYDs73dw6ULBU2FWjt1TkEzxO9x2GxQRjl1oxod7Ne7p70B5FG7rQp+iPqgkdk3MNcUtKQTfrfyHT+NnuhQ8d1BT0R3yJ+NU4+RPEZoUsIYwbsXi7D4N/zcJktzIRe25ux1HpV396ZSBr2YtnURPC5zPobInTOQxm8u/8qtGpmhkfXFGmw6DBQaq3WpNkkGoCAYJl9gd1G2sQbGLDDeAJznGe+vF3x8esHHpycAwE8fn/Dh+RnPyyIUvPF7QxnGG6RnWDzOEx7OJ5xmR+98PuGL91/gi/df4HQ6xdJROFFcVa6uRbshVjHWoWq2AS3r+12VrXFaFdmsGV+nFoQR8KhOU2Ycv721CvGt5FHOkm71aIYJS7avj4LxyZ7j3AGhOOEI+VjrjE6b9ljG8eKNTHkAzQSjOHg/A07IBIiD9UWesiYSdczbboh/9gjKG5Bfy2zQJnMB4hVGGwR2uMZKCwdqRbx3j6YscE9Zj+/RHDDWb/Vi7vTi7Mr3zop8Q6bYr57bsG63jngnWwp6Cx1NRorYjvzIcckv/OziiGHPfMAfHsKDBufdaDXSxZ970t8LCIrn0tsDlFSwjM+MQnEYNqX1v4zcFekyYWYsS5CTQO+GB/2AUC3LR9tv0NAMhZbCvKOoYiFyRuBpwowZbG06BbxYvGGLt28u+Pj0CAB48/ABHz58xMvLC14uFwDAslxh/cn0sOx+mieczye8efsGX335JQDg/bv3OJ8fME0zjDGYirfOdVtzsLmo+9mFcvKR0jZEXDF5AHRPZWYnZmlZpKVkB4pw8omz15s4eEXLEgohKr4rz+eKpxOA+E6llh7NeqZWgFfuLARNUPiGCTPJsCABfaAhgI2oCUQXBHyBG/IwctR7z3psN/fPtTA0s4lXjNCrNAxqeiWfe+Wh6XQto126P/SNkrjnRSxRNePTH/BqhaOI0w3SdY+mM5J3KK6ektzqLWqk30zjlnxfUXlrLo377yXq01yRSCgVcb3M6H81vZzr976uQX7HtTImdhlmyYJcT5sQu7hDnsudvLgp3XjdSqqsWYEj+ZUJhEG5Rk7qnKCrsj6WK2hUhqGapZBNt7HIEuiHgcoW2rakcBwGOuCAAw444IADDjjgVWDj0jmcBV7MlCq7Vng0s3Tht5nSy0DWXdh+Op3x8OA8mu/evcPl5QXPL8+4vLwAAK7XK5gtQITJX1l0Pp/x9vERDw+P7toZAPPk7880prl0sGvuTerPLrD4oc1gVWphUp0dchF4gihr7eyXvTP/J0v8PDzzXmreTE7exuROl95LbYldWVIvDxMVG0TLgzXybwnZReglLxIwhzqq2yX8TleitDQRnVKFRzN4bFVPAKXlCT9TXBbrDqz5XOIWE9UreJsHqDXmtMCbPEyjiQfwOPwb+KiRmLX9BZH3RmbW/k7UMsy5OPNwxfNZetT7npcw/vSl+z7QuvdH4K2WpZl8K6/VhdrlCduf2IGXW3ryoYbbnp9CM16/BT1e5zcRN+jpXPNy1ulz0DxcbfRB72OdyRj+PZfIBT4wUN4NZRyipyXNBqS8Zms9ZYI+ci6Fwv5KX2b/8mGpr4J4TddKumjyh1hNDLd+BVCWvu3N7F6rNQCbDc2gQLN9A9WPgFkSUmInwLABJoB9cR5OZywPj7DWwoqGCSnD4SQzGcxmcq8BiSVyIqM2Ss/kHIKO8NUYrW4XtdXyDd/aYR6fNFfApJBlz2tFHAlBWBiqYbkcEEamWGJHME49nRgYv6WR6k0zJmFnpu96oV0WSOuLhoqhZCyWqQmEE6XfCZRBnekOL3G1LJmjAZlsisIyJsDKLSVhyZ5HjYmUrCrgaNrVABe4RnVNVu6RN3GjRe++zMhylIfLTKvC6Xss6+VvfUk8KSVtmTyaxu2l81K5F2ULf/rG6lZDsMhjkxFK2p9N+SjUXgco/nMTNPlZbnUBKk0aen/1jle0Die1Hwlw2WsGZN/4zG5iqIAKXtqy13IDH73GHsrRMXBvA/bWbSo+dVLLQraMJ3cQ9UrhxPGi0RmKDnnxOLwscfmbrXUv4HFyghAZ0GRAxh1ijYejrV96N4tgOU1fBl0vw0rcddju0XQB6XWeFoMUVlZPf1b0TSqYvLA5pE0erbBPoTaG9Yp0P9cTjGAWSq9JTzi65BU9JY77w14OVFIH+YTXt0vmHhSGp9ijIcMyz6j3aiZavgQyf+n5zIxU1EZl9k2h2Mq+TSlgQ7tAheylKlH3cIn7nEJKpNRmvh6i2RAtzbKZS8EVPkIBfbvKK7ootNcdlPM223NAYBO61mRXv28RoCVNtT38PL30cPsBUvklV/fmyT3BIufYVVyEKXiRR5Ls6vIi5bh9SNpcx21GDNCv07bxb8lnQ6rbNHgfuPkxVgTVsJTp+hMjKQ8rmeHT6kam5iFqGZ9cJO30KOUrOFQw7v2ML5JsvEZM+7OKe3PeWw1IXYErkHNJjZ3kyLCxmVSloCeYipKuJn9A5fnpBd/+6Z/w3Z/+Hk8/fwcAsJcXEDGMmTD5ax1PD29xfvsV3n3xW7x5/xucHt2q8elxBjFgzATrn2fuFY9KJt+oBzYamj4zb7xAZr1qcAqlsWJAqMmlMC8yaClG6nxtgf0u4ySIhBkVo9QWi7jJKKyWxv2PygAK3t9yOVkJTwak9H7WXs7oDRVevP5BIiGggczIzJfeixl7ZnijC/FqBwLCQTXjlxCIgXTXAItBItspEEL6QUj/ZXwa+Ev2QdiakFvEFojPWwaazUnPpimvLO9Grm4hqAbJAKOrKNosPkzD1wtSVkt/KUi8JFXgtoQeUTZcfJgk2rgRQQh2ILCyXv54MHJY8WapC/m4gqsgNSXmKt4otAu4n+aW1Gszoq30GlRZW6LvWTxi/Gd0vTwstgolPtR0mJOXtR2ZwmNxVM+pjyZp2IbfspzUr5Ks2xreXi/8nT2XI3SG8svSDEQOiO++Hut0JIKOE7jsuOh6dYej//B3/yf+8Hf/F5ZlEVu46jyTI8fg9PiAr3773wEAfv/f/1t88dXXkFdIJq0myqYVsz3/asJxGOiAAw444IADDjjggFeBHfdo5jPmfFKpzB6qWXBtCpceIz2tmL10TOmN/p7BGd6NkOWRZgqVlzPDzdw2aU4sZ6wFIZYzvOCNAdLMr7ekLvCqJXa3tpm82N3ldKDao4n64FB1DZLw/a0unRsCLy7vcB9rujfM4lTgc/abkeZsMgO5z0aEUCgIJQrKugi5aotXhVZmtINrKzW/N2bCg0y8+YITDV0ptrsP2PeluKM0IxX4MPSZePhB0k0yIvcEaXssJW78Vy6FCy+8Vu7UDdLTFA4OeRzu78PM7xXWcfrewFqYdnwdvWT9MnQ+B6M2071dto5T2LJGQCV/dgar5rcMcs6l1TJYK1Dh5YwsIpfKqVpOdV5Pvay5RxO6Lhnyao7gFPhFNqv09WQFmmITNHB2xzeKNoy3eWGqWk4TtJLQcSt2QZ4m2WYvVwDA049/AmGBe5MmyFVET2h81IbdFUbWXnC5POH5488AgMUy/s2/+19xOp8TP2l1obxcZdQobDI0GaZJPFeIulHYNDJTRnq4ngnigG+n0Mt6d64bgVKwCepiX4768k8w6OTytULICb+wb5OyMJdN0XaFgQp4AUzikI03OtPyOTCynC7rxvCvD4TldAijMwrr8I28Pgq45fKlMABdUmbgVI5lUU75K6IFMgW9wG9ymGW9IwIZrh2vmaIIbdGoSdEfVfRASCybIguqfFfYuaG+qhxdOyeLmsH+SU6OKVzTNUZnFJyuD9PpSZELFzXwlVSNQiDyEbVwwU1jU601pWWn7KK7Co+w6fBBV8m2tXu3bwYy3y7J2lbDTbT2EBjqs9bp9AaMGJbyQYc8sZex+Vh3MWW7SVmpEityDoYGPDvkhmfPAMwNTW7wJfW6FlXMXpkxknzQSFzD6eeRftykzVUFgO28rBCqH5vwnS95hp08s/5Q9EwW79+9xeXyki5hN4TJGDAY4XrMZQHIEqw1uC7p2WXYZ0yUzjXEbAjVdbJRbGY8vM3CHjI0S4bI8pEMVXZqxdB97quCe3s2e4QUlD7mTSw4SE15D1pJkB2wUYzTrCVZMUvJncjO5VNStok2xY4kDVe4FTl8U0pL3oiK5WFfXkL2xr3Lxu83kReccy6sKX4P9Ebc9J72sVjrDR5OLwMR3IxOGmGaEzFEOwM4ljAf5xJfXB2RpTeEa8AhCiqmGrSNSq3E91LVCbX90PtyyMG9LrFkhmZouCgfhGc8tVXip/Tyksez7Azy6JWm3Ih0P7Pw+C+XsqZ8ajLkH/Dyp//gJ0E5X/hwGdLxIpXxY7qoZvSubLvZ2HsNuu3Ed5WoQ8T25xi5KYks/0PIAWUFI5MTzQu8E99l0dU77U6KaPaovG0rOAI0kIYm+5x11PGOavJu8VPP5kZDsdR3t+IVhdklD29ibF0TaPvGK0OUyDlnvAVpwHjzcMLDacZyvUa8eZ5hDGHxB3wulyuuywLLDGsnkHEm37t37zHNk3+TxPNxvNgnHfbWbJbAW1tg36lz5LxeDsw8rEg3lmEdNJJOII/hj1Ol5ocCpXepFGDiS+vOOBBWPZ2FV1ESCElZHltJ4cnoJOFQ1byc7I1K0bfZoSGfd2FQxoV9X77MQ4SAk3uNRJF99ToNTYieNBlmGfGuMEcrGUKploG+SBj/SuYJv2V7unKxLF8clMnQlDcjjMAoJ+ZGlQzXB5oqTFU9UxKVbej/WuuNTJv6KOadTGq7LLDXK+z1Cg5C0FrnuZxmkL8HlyZ3NZmZjDMyqz0TrWtDQq3Y84EsLonDZgJXO4AWhXqKz+Zosc/bvROvehvQ3apU67P4DtA1/3Za7QrdZIzuK8ztwNWPCHGMUIkqJsaV/CgNUy/vBG/lWSWeLfkFJU+LeMevYiyivY1DrgpQsEdbuGqoEttkgzyimcvAuBheEdiyckB5v2yGYRtCJMhA0dd7R3SYCZu01YjAbovSAv/EsgNjnHwLy+nzbPLtZZ5B37z9EiZcedSQGV0obZwVOA4DHXDAAQcccMABBxzwKjDm0Sws3uQhy4IVC3dkBiJM45HZT51F73M9wQjG1olIid9Kz/WsK/NcZg5AKmMFjqeiubv9QYV6ZSdM2WRcHQaIDelirychufRDCcKBn/wuuNZdmWUY1Q6tFshN0zGI/X+IywswwX9QLlMpTOP32sXfsfyU/U35i8VVMcsMaGTCISpSJre5t2Otvr3oek+Y/FnXkzTkTq7MFta3p10s0sMJqQ2YGXy9wi7+PrblCjw/g376CfThQwxjY4CHB9jHB5f29ADz8IDp/ACaZ5jZeTrNTPHAUL7M3eChNJBUL2bCLZfJKfN0uiDpaU/epfZZIEreo5hZ+GdMoK36nMJPfeVtgFYHc4/MbeW4wzHyyaCtpKql8YRKnfjc5ZXufRVYlEZJ5nFPKRLByo3ucMqVICdjGhxTLDPKbUA1cvcT4/yxgY+2HMwZ9nI2ZF2fdE3kRlDbbzNZRtyHS0KNGQJbzyYh0Os7i/RqVbr2jxCu/TvNBoExmRl2cbjn86OTsdL8knKmPFWWyTPhdR+8pm/X0rk0Om5e5hYdskdI5ubGQJqRmJv5TtMMY2iKGBK4YlO5anSS56kyLjRUsR8zxvlflcGZ0nCgj8BfucCTRma+j07UqDBAXToZ5tPVa9sZyGXrtCeJwNadsGNv8BgYYUBSSlyQjgc6vKFJGX8RsuaA2GpQHGAy1uJEIi3Jw3M9K6G1nFdDf4lcjxgaoQIv2EnByLTh8E7oc0Y61WgXLJcLaFlA/rlY/PgDzPc/gD98iH0h92ti8kvnpxn2zSP4/XtMX34F8/a9Qz0zcD75Q0KpUGkh0/8iaVimMJ+dght4RjdAq2+WLdJSs0kxxHIqlx32RcqgABxR5lrsZvn6qWh+HuBEq5dS2m0JIh6oDU+Hkw+03PDM5alLX4xkKmS24N+Mpzuz0kpPU8m5jbTdvqyZbr3PN+r0DUviXeO5whsuQZ52X7KSgoAxYyy0G6F8UcqFMxjL1clYm52Z8FjkeICkTo//Ovkb7sw8PTxGvk6HvSFumPE0IwORzCnaoqM1GzwMFP5QsCjKqGEaO6NzzIqJ93EFNT9uhdA7VIQNFCROFlLHsobLpBiUiEwhr++ovZhAtXdT/snSCkNLeEyjwVEo8tKAdMUp3wL2VyVlrCROD4dytN1I2QAB/MtaZLAIg8bYBZgKFg9CjRL9qEhiXDBIijx9XYKnMh1eYVi2eGMmvD2dYtkpjkQh7uXmxkhZGbErgroyY0aVRVUvBZudIEsnyYUR543MeFJysZifX7D8+D3st986Aj//DF4WlMffyAs7XLzxeXkBPnyE/fY7LA9/xOULZ2jO3/wW0xdfg89nzGfXnmaePA8CYjdvKlMxiOrw0phMYdJ7mX2LsdZuLPdP0glc92Uv8aDc6fbrFqW+J7e70x/MdwNqKyW3f+jbSu9BAAAgAElEQVRks8mzjitlRAtPGp75owLy8JqQ74rh6WhL3qRqgl8UvtJpJeaQzhzq7xt4b9SzSdnIWiE3ildkcCOMUeg1EiufyVB0YQQmJ4+vL08+jNM5TJnc65u0zV3GJp05n87CsSJxy1sSwsttJa0kY0dgcOlckK+YedCYGqA9hDkum8fzfBUJur0tACCbOMT5SM+gTHnlBmkybFR+CINdM0jlRMLTrz2aLlIe+tGWyTMhGsNIzJSSQI04A01XvsjiykUwU9ocfWaLJ0OQr2sEJZFdBRLaUngji9xahQDgTrwbMvjmPOPBL/9Kz3O2Xlv0SyuLypBE1i1KiUYFf4/ZQ/9wugsz2Zm+2P4A1uKWcOj772H//Cfgxx+AZ/dqBewC68vbO9DlfaKgBeCfP2D56ITo5dvvYN69w8NXv8H1m28AAKcvvwCdz5kMlsOEBNHI8SK8NCZlmPRehqu4pO0gHeIlkJ/0CHu2DcNypnVaeCe5UQp3kK1b8hup491yLH60jMgs7YDRKfHahmliWiGuY1ly2RgyTHI0XzrvjGyhm6NdoBWpK2s6oVuNyg2eyrsblU20TabhDQijoHVGWg53XwwwY7lecXly92AGkZOZkVKnFfon4IaDmNPplPon9GtmTNa6Wl5f1yp+C8Y8mpLDuhvpNPW30+BqFOMe/StLRGVADPycoDN1EEpSN0iDQYmMhmpUisj8gnjKur7nCSISnslQpoimCVYRBi9UA7s1NZHjfCoVvAFmmjB7Y+/Nxwt+fDiBSZx5ix1eXEDvB1LyQsrZYt2u7jolF2umCV/OhH/5+EbcNCvGidzLqoyfsZEUFFYLr6EuRnmZU/+yvyqqsjJ9GRiM5ccfAAD2H/8B5sMH0HJNJwuNcQYp0q0A+TKQFFgUe8KE/UfPL+DnCz589wNOH90ez/ntvwXMAppWzi968uX0KhiTUp2nsOS9dDcnaHefttqXvMBO46Ul8SQFRWRvkm/7RVSS5a8n5j61AbsdKtmiXRWn4jNaNmd+xVU5Yc5lXyGOIUdD+IyT9OzU+UgZHZ3wkED1XHSTQPeznWijAdq9TSTD216aW+GeWd4yRpnyq+Guy4Ln52dcXpw8TNu9UnvmE3vJKem38duW5nn2xqoopec5d6tMzjNyTVL+Hu3L49T5AQcccMABBxxwwAGvAhv3aIZviu6PdXu2nsePw+vPYtQScSdnLWKv03YDrcaOzJwOyzmHhqN7L/OfYclRzM6LfR/5Cd4054leTQByj1E2i49Ei1m23MdZLC3V9aX0N5+QgQl49/YRAPDXbPHDxyc8v3kQXs3QQsm7GLfkkdbGuaeBfL7TlPJ+PM/4WzPhi/kE8l45Isq9l2G8NGaAm7yaSuQ4VQ2K134qf2Cix2DAWly+d/sxl+++w2QtDAFTWJYxBEMmLsGnHGqqcrUmLs0ww1qGXYDnn38CAJyvV5zOJ3cU04x5NWN5ZTiQLZMHXpfLnuQ9ClkhO3m5v6ESY60u2UBr52Ev4OCpz1HPw20g5Mvn5sJcg7CMuOLZBMRjAh3EsFyu4+Qy0mcb49Ivx0zZLQngJl/I1RiHm79qVpDvBLXkbjc2R9zhxabsx80++x15trGGae4qtiIBxJ5daxe8PD3j44cPuF6fAbjtYcYYgG0c20ZZOi+fx51mZ/KZaVZlQu375hgTz2NEOT5e2cGlc1GMjW7yKv2wVabkwMj25b+mLGuWUlEkW+zMLK3WV5rnO4vsSrf4Q20bVj5JKlj3by4c+wcmdONTUIvCtjgMVFVFmNLCjmxVk1A0XXT1M9g76r9++xb/EwE/fHzBjx75yRAWMrDuSQRXGmMAMnE5ItESApNT3Y0hGCI8+Kz/pQX+5s0bTADCtRJRALSWylsHCMqKlvVEGda2OLvjg7M/yDujFDQJ2XUbwz59dEHLFQuze1OX/KsVvn1MsUeL3M7NqmDucJF1JykBLAxc2YIBTEGITuIEv3wqZQXU4RTaVbxglb1mRKmuAFbOAgV+kf2sDbThItd8T3p/u20pYrxyPUl8HRjbQzpKK/77SYxTDv9vFKeQU21E0QYdg7JrlCbuFOxXxBdKorNhOG9Dyn9joHlXZYdupd7abZT/sy999dEyonoBLrBZiq4cGECulH+PcDr0xWxxvb7g+fkj7OL2wRtDmKcJi+DDZGRywSNeN4MwzWeX3k9KckPU50cQZzcofYvJdHAQDM5zNx4GEgK4vENwOMe9bNlRuhqUe2DuOcPe48DcnH2LT7NNwhvbo3izOYqfzOjIT5MF31bLe9kyPsu7CvP+8EalopPLtBqETe/BayYrZEDRYJnI4K/evcc3by2ufq/gAuAC4MX/BwAvYLwwcAXDinIaYsxkMBPh7BnoTIRHAA+G8GZ2J6If5xlz9GAWbayMRgoV1eqmhqbYnrDczeJFsbOice4VDM982hcn8KQnMNyxyQtgvcHjr8OEgTM8y8Nell26BcDVhy/MsMHY93uKjDGIr/BkBb8NKhZs9VePAGTPMCp/sLR2w7jSbAgg39BflCvEB2AQjL9LL5C/BbQ9wK8BnyqfVu519i3jMzcmBWoDjyVaEa95L0WZfCrpkYr+I+3VKgWy8aHuMxZZjRqfBdI9uo2KMgynU5OsmHgrg7dha/bLsIY8lL6BJORCeNHnNM94fHjATwD46uQuRcdHbihq96yy8NIbr7MYTu4STErtDysQUL0MiEzuON7aYlNt9Gh2Jgy5dTJIBG18an2OJL5pgtTMqbJ2S2t2lV5qo+S522hwxElFewmlnYyy4uYHfpAfolDCBOthzfjMZ+jCsHSozTAM1Iv8f8YkwcqcqpdmggCIcJonnEXfuUEkT5mT+C+JHyI38zMojS830OX1SMSM9Fhs6uvKqOTqR1f4DMjVG9k8TRRUigYw1rcn2FlIzGD/lm6eRvC2/8dGkeC8b8ZQbF/2nh4L58WMrUfi8Nk0xRwi9cwZ0K99NToHxmwYlpETea2NK3O1EaZ2v0iSLCBXTDlYSy8FnPecCORbbugkdfbj01l71Tj4rIAQn8BtGnNJfgTurdUdSbSIwzI9gPyJ1DKPJJOpxNFZqqxGyMQ39w1tXqi7XSR2GJXtJIO6UpFl+wzKDTW/h1wm8Zcpro5N8wlv373DVy9f4eM/Txm6cwMERmTEa/Wi/vVx4aq6ya3DXS5XR99API4RJjXSAE/3RsutYPEhFFqXOcBxGOiAAw444IADDjjggFeCbdcbjeIpVm6PQnsPVO3WXPP5DK/g93LcVF0FWfGaJC9OQiKY3dPFOOcoZ7x11j4o914C8HvURAJCfTWMDBMvCEmvJgDUB4SSp0x6NQPNat+m2Mu51ibkvY7xFQQgnzKRaOti32XoszjzA+LezAylhOSsjPVI+1i4YvkeS4/MltfY4ibfULGqm5wggqckL0kPMTjdpYkwq87+ye5mrQrMyA/aeH7Jl+cR+4xmcQE+FNbWrlsL5VSqXiVv0dMclArEaquZlfIrd5eVXsvgwWIiWJue+3Q7MpxbNRy4AhjTNINM2rsaPWC12PzkHswsb+Az9mYG8J0ovIKrfm95TZfqCc09pelPkDt5Crm3PWDX25B6JRJL5/Gi4oFRcA9vXFGOrQTaXsk1ja8H7PNgriCtJ94Hmt6JehSYjIGhE776+je4/s2/AQD85R/+A5blJ9/jUh8VdgEnec00Y374GgBgrcWyLAARDDvluXZQNV2TFbyZckWzD5tfBirdqOoK0FiPpqBqkIYAFu3mLg5lKukXBl0na0UGfzIIai+9FU2wbL1yCHHsGcN1uokubYtpPkUXtyCqV6g84Q3fZpmS42T0VKdwV8KU96CzZXMkpsyFpRZWllMaPkrdkIxMI9ojNxZzo9JVXRCLBqYgyokJ8/voIkJehqrwuUIp6zQC98YbBdlrISBeGJwJEyfU4mXu8O1Q6LOk4mQg+VX3nGmFmMwrRm7piPzLQJCTAk32bJphtpYuZWxWlA5QvqqtbTyGb4vSyPTLXkGeXa5XWH+wyj37KYxv9neN0hUAME0Glr0Syk7hJ/khioj7c00fcjvhczcyAyRjExgxOMW4IE2P6TS5Su9olNtz0pjc0H4xn0IGSsLtZDtAkaWbU5cFWDEuO1bkuhHaKcMWGEgkW7qLHvisFoExtRvnj/jd3/yPAICvvv4tfvjLf8FP3/0Tnj+4O42Xy7N/IF3cwQkAZoI5PeCL3/wrvP/6twDctrPgqCHRdmmSQCl9kF1SxpETeqP3pA8eBgpMW18BsSKDO/FpkDrZrI5SyIwYiG9xpvJQjtggs1rWDVDSaaiV3Dvi6xgnGtYClrBYgP12N2u9UmcGiGGMV8EnAvgCc5pzpdKsEBUetvw0N5AEUXlZdWJ6zsLqS60R93OEqpKfCQRD1IUHQcSii7xpkxmb+ab3HoS9k/JN9vBSUHaJe2ZwStK58K6aUZwwLxKqhSNo5R7fQ/vJDExufFAYUvmYDF/yQEScCYfNl0TRCJLlLMPCRyav1HKFDAkggjm5U5LkDwO5sgXB2DcYc5D8t4bK+V+ilUR9iqyhiNPtF38F1E9Pz/jh5QU/XS64ss0qZsDupgPv0Xw3Gbw/P+Ddm3cwxqWfvGyQBr42Vl8TasPh12JkKiBsxCEWi+OompamkBEcgceFXHS9ON6mtSmw506CXu1diZQtxJ0yNX+0cddRdRgyVHbACENUemfd4NTIEjjc1wHjryd68+VvcH77BX7zu3+Nl2d35dHL80dcL89Ylmu8Vg5EIDNhms8w8xmzfyJ5miZ/RVK9sldXgaL9EgMHPZkBxgxNeWgCo3OsRk9U3EheaelWqZaPrK9mVORptiijNvTqqwoizq+04MV5Ka5XZ1Veflpw/R7gZwMOx20tEO7CJALo0YVPv2W8+eoMa19wenSbeQ2ld7bVqmVGknK/Zmiu8qmrKpyTF5kTHnlmS9fDQBiZQjHLN3uzpSbvgM9OY3oDdIW70jvi0lgUHS8tmEp+xwrG9CTqrUqHhg8iI8xafKcOg3hbcStQmUMJzNopXDVV1JYZy7Lg8vwSBRmJuKr5R4rHkitJ/AvAGJizuI5DLXQQKfU492bpQKHqfixH1TbxUTAdpzDpabCLu9Lp+49OUfznjz/jzy8veF6usFbs1fBGJhnC6eRE9jtzwjfPFv9qOuHN2d+NF8cFV0zjzQG8luH3X4NdeU+odYIYHUIEAaV00YzN/HtLG2t8q/PylsOlijGy1ci8M+5euCmPT8TrDFTecmaCMTPoYcLkJ+MPb9+6F+s4rThZm2QOmXTAiPxdx+FAYYCuDJdbq1CuXPbhOAx0wAEHHHDAAQcccMCrwKBH09ujYcJVrSRpPt+2e9LNgITHTMdehfg2te4M9cWSXg9ALl9r0CxHfl9Pp1B1kLUMXhbYBXj6s7sH6+nvLfBkgMWmnQAIWwGcZ2I6uXZfXiye6YLHr2dcvJv8dH7wy+j14kizKzjHzVZLEbyY5TJ7WIZPVxHF5XQS3kf57X8HXG2ZPW2ST77WuM9z5cqEPq8U3FStWUiPqYiMyeq8dd5q4a37vj47b2aZWeBHQtw3DADWezOfn578XiCXKG0dKGiXrg4WqyMxn7gemHt4CH4MyD2aXOMVhS/vbI2+fJEor6bu8VRXKTTQnJfK7+DNDGFuH6bFy+WK7/3l939+/oiP1uJ6sQDbzKsZZOZLWBFhCzy+wVfXK86zkxPzZPxKR8tnhdRXN7pjqtTrAa8CW3PZu7DV99YLJigclyP5dfGqyPu3a7GOsI6/owhtj3dNTCXfybO5ArYpeKVSNzb7raOtWl+K24cI4bLiyUyYWFx3BDSvPBNri6vlTSvIXmIOC8cEm5bO3dIq+UEkcyLd+CzpJIIpzBhgKe/kGwdnbGqOWa4NUAaY9uxREaApSuQDKR1GDkrMnSC9Xhkf/+iuCV9+AGAnEKdl8HCyNizlWm+EnX6ecf32guvbBfODw7W+zUx5QAg1+3AWkQzD4sx5jCfOQr0tKPd9yuX0xHzhWx7Ycv3jEKpl9mwZiYSx2aoJUjsRYP2S4mq9xYeY32TGZyjDOiE14PMzMlVoq8kyQMqnYPBcr1c8PX/E8/MTzp7//LTIUc+0MWdtTEDaehlbS0xQC1xmdkvn3tDUZFtL3lEoC8swwW/CJijvjW2tNTaVa8OYz7YEcKqrFA2WGQszfvCNfSHgel3c2OactGtSC1487sXg6ZHwgS2+ZvnMZ6hZ/VMW9xaDs200vC7cI7u+wdhIwM3PrcmbhUl4m0vYzXzwmkM97W1ZdwJuNy5T9CsZmRsq/6mGgabPAOSTd0rSFcjleHNiXQUVU/ioD0KL8+ZKbz51Hvb/aGvz+UlcoUxkWHLfOfBeydLydqeK5cEXd8r4crmUxXJlMoLtRKNkjTc6eAYHZxIMdQJmruq0LFdcnt2pUV6A0zRhplloaGkEczyhbi8G+Ei4PC+YzqlNrF1ANCnXEuRlymYnWWA9aWAZ5wOymUwoZzQwZbtzMuSLgxQ976ejkzTrHlGbt4AU2VqPe6tG5kd1eJ1mJO/9OLfg35tu3KUproGCtVguFyyXazwMRIJmaXBKI5TE/yQw4K/0kTZnkDMG0+yv8/EnHDWn6Vh3tfpvhGC778O58YTijUzpWeBgeApa4YYJAp4nP3lkgr1adxWJPEzlyZMhmPBS0umMhSY8gbHYdA2SEH0FaBNsLurW5o7t/LjfkN2f52cETcZsm57tiZPQpd1GqeX+qpGL+7Vz37jUc2rm3SkU9ZC22Z11zGBj/GK8qdiJOp6q9RG1IiHZJ0Jea1dspcjtxQ2w+WUgZyvWBXHlEyZCbtEgCbXCDUwGZiYYEK6LM8KeXj7i49MHfHz+gJeL8wAaM+H941f45qtvcPab31/EM3iUa7dU3KocRZkbdaxAQW5eaeKVs1yus8xY7IIrrh7FpXFKJdCxwjhN111YLJieAbMk5mBhoFeGpjQUHbJatdqorKcPLOLlRCIamEWYNDhTytyAay2xh3ohS1uDNMZJbjNmLZEa2EEbH02ftYFZGO3pa7B+hNhHkzeETucTTqcTLpQmGtF0JDG38I1ZDMV+YVmwqfH3kk4TzOTGupuv6MZmVuHipz5wU1S4nTMTxcHOrRIouXIkFHPj8L80lMV3yskYAq4A+xUNa4HFLsCS7tAEADNNMPMJNM8gfxiIzYQrM57BWDLlExg5Vy56DTqTsDUYZtRBelvJ3gj6SGiMjVK8tzE35KUjSG15d6D7t++4oXhvI3MM7lnfX27i07IuG5yl4OkbBmtuq68ddHnUU5hmZioch4EOOOCAAw444IADDngV2O7RBArTnqInTLdtOf/FDIbNvFsfn5/wn//4d/jHb/8eAPDD0494vj7jaq+w/kkWYwweT2/wt1/8Lf7dv/73AIAv338RPZ5jZc0Dy7sm61+DICovF4yCH8GyWw6zCwP+bkwm+PuuOD6R7byVnJwAwUlrgdN1wmSLecFoQRsHmWrvZe2RzuY8Il6+qRviKXim5D5YuZxeLacJb0fwZK4c1uqVvySpBkaHqbJkuM35ouQxUL4O3Dxjzp3qQ7l082R2V2J4MfH48Ijru7e4/vAjjF/S5ot1e4wD76akkA2a+TeFp4/if+LCauvKT6dTxrsU7k6t2rrFMTW/65jpQBNnIXIQdLyaecKYPls54Tr/sE8zvPYzPZwxL4s/OLjAhkNYZACaXDtTuCuTsFiLCwwWZTWlWd7VwaWnq4bGprEyjnzTENwIt3gPh7yaW12fK0l3k6Psz82wxxM5hLKS/pa0q3BHL+r9YMTnrnBFEcQNPMriEnbLq5mvBPmxOtg4+wzNEuqS+fIkg0VcVQ6Gu48PAL5/+gH/x3/63/HH7/6A54tbVl6WBda6V3PiZaKGcF0u+H+X/weTX077X/7n/w3zPDvcMJhEzVsnrlK5Idq+I3Z6ZLQ4xVgKdxDaeP+gce3A13iwJ72aQtkrQIYJzFNhSHjTzXJaftZPushEUDgwRcdgucbCGY8FTKYUl9KSPwiUwjMjNztIxTWXBqNU3DXYgrp2uTFZI4UhRX2tqWSq2xl93toinG4SZGUf3iDsY3h5aW+4dIJmfPH+PZavnvHh2z8DAF5+WjAtjDkbd6Fg9fl+CHtU9Ij7L2x/MQRzPmP6+uuYzloLM5ms7L0pibbgk8KLCnP6oECXZJrO+xdU8pNf4G/xS/jDbgIKTgfaptMZ8yPjer0C1ytoCZcuAzAEeeWd8ZM395JQXsPxl9l4jY21GiQyylxtQ+rPBm6wBzflgV4+VSHEVCcmXnuJpRGnysN9oJIYorsyhbjFyLwpzaec2rwW9LkrNyhZi6iwa99UMRknIGfOPgy+DISUgcg2hLr8pIHghkjYFB/x/MYnIsbTxV3T8x/+y/+Nf/z2H3C9XnG9+k3t3shEcaKaGXi+POOfnv4AAPjx5+/w9RffYJqMalSSYgA32nUtaAVWvHCMaFyHXZDT5OtmETcwhEMAYc9pOjxjYBcLtlTxCZAb1FQovpIN8qcYc+VX0o34hVGZcKRCZUEyDyc/9YnyzhuZrpi5FCRhgK5OFFDyZiE0Ou3Q1poNNT1Qlq3y6i7ijdSft4HYf+lmGYnyNJ/wzb/4Lc6ed378859w+e57XD98hAkWj2UQWxi2sVWNL59J5KPNyUQAGZB/9cK8e4v5m9/g/M1vhKHpb6YgSpNK1GpCCsFkbMaYmK7CFxDOpZFgnm7bUvFBgefzTJjTvs30mzGJTfnkL2af5wmcPbFq/IXLySCGlxWWxRjSJnAtuMG66s3VdqQGtiR/BViV+YoSrORka5a6ptuHCxHwei1VEkhtvYU11GyHA39t8Lnxo8IE2+aEHcgZeY3ltFtgiBjMlK6SG4AhQ5OVX6spOBlNIUwaDi/+9Piff/oTFnvFUr7tS94IiVN4gP2pyxe4e+eer0+OrpPQIm9RlEJAdIz47KPUHSPOUSDhyaU3Zncd0bIs0XtB5N46B4Cw7d9CKI4l0ZzmCctiYC2BvTJna93VUOk4azKVJHeU3qniqzrJ2DA62SvQEk+oQq9PGTnJdCiqXG53fZVbgvo743qZ1AIrxmbeBIpQEXp69O1WFTS+a8AuIbZWtA32xQhqvI5KkGcAmCa8/+03AICH9+/w/Ncf8eG77/H03bcu3YePMJcr6LrEF4RYpg/zJwBMBjxNwOMDTl9/BQA4ffU1zJsH/865K0Pw+hOZNAFVtGaWR8mHMVcFfyC0By1jV5LjaFrnUUYawUR+iZzjISEAzqNJphofjCQ/Yr6U1zsVrJDkKyscLbhdAX9OSj3BUK83kcb5ZZy7sg0cY8Dyh2Idx+DxFr9f30iuV6I2Z7Qr0RB8VkbmHlC6vonXN4hUnHKSv5bN7qXzHvuHO+SkoRnxrTekwicYZjKAvcSTlmyc65YMwcyuKmYymE8G84nivs1n++xr3GiF+AFI713JRJVXQ7mRtC8cylgnIOJzT2SxLG6fZnnnZ5a3OKkur0ch/7SjhY3GKbOBDafEwwqbJL22jC5KmsrCTc4RfhQXrXhDAw4XBikVfcAyPBodvq5SkXat+97jV4VAq5qgIfA6cnAztGhxMYEaoTEAW4rcwu0UWSQmkDHg2d1vOROBpgnz+QGPX34JAHj++QOef/wRy48/Af6BAVyucR9mnHpOE/DuLU5ffYX5/XsY/7wqzTNoCgalGA+W3R5nFtyoVCaycGH9pSnk+tiu7cReC+tjLJ9sBakQQyKvG2EcEKX8SLJvNDLrfMIeTYaTrdq4KZOm4Stq2tMaAo3p9iHyORiWOaRJ1R5js5tuy7xlVHPvBIbv++yAQk8/vEL+dxe0hNtJ3rNMt5ahDh6dmGxjtL1UCelNzLH2Ok6dH3DAAQcccMABBxzwKrDNo9l1MJVPH0H1aDJbsLXxMvZpmmBOE2bDaR8WM4wxOJ0nzCd3IpOM2wlPAKzfJP+yPLXt6coMLzybok6VB4fiP32SWWD058W5cZi5uRd/8kWQkCQ8oenqSMlBK5fECcDk8EN7WmaY0nPhXQ15fbYskbjK1B5eHbflAc1O3Gbx0hOlPxXo/oTAW2eXwtOkTuDrwGqyX6VpQ45SzLQjTuhUUbaVth6CO07Eu3P7eDgveOv9yXBjQP4k+nw+4+HdWyy/+RrLk/NoLk9PsJcLmBnGe0NPb99gevsG5nwGTRMQaBpy3n3kbji3SYbjCoZrwcDwtR+2WtjIvJp5besFjXy095s3H3ThlSu5qmCIwGziRfdhVQYMzPJOUjKgcBQ/0CPXHnI8cKp9ag+xZzNdlM8OOwqc9fooZ/Sa3uM9QHJcfhZwH/fhXf1Ja272IeggZ4N8zSO/ksXGriy0oBDHA8y5MZ/PictqWOnMO3m170JmM+/lMGhoiqUVxlCmSVglxSqXg8PTiafTGfPFYDqdsSyXGHc6zZimKV65Y61FPGDkaTxdn9z1IGRSNqutUSiZWj9Focq5lVSlRhXrKy5PO/g05QXlYHL71yzFpW8LhvV1cHrB4xoAs1MSVioVa3Ot4A8RgQplIfRg1TqK5UxFhNIMAlMzKEOtk2FV2+3eEA92oNDL6X36AUEpv0eliibAheRdtUlj5BqvDcbXR5S3w4aVH7V+VYwkGRQAxY5iiWQmmDlRI2MwnWbYx0fwe3+jgrXeyEodTca4ZXjytGX/BxuzUx+Kf6UBlsdqJyVzVh2RoNXsTYDCeIWhSpRMq8DT5AfpYhdM4TnZ2fhDP86YTltQRNsI2WLAIJuWypdlwexfDkql4/ir3M9NhfXoPhWDQ5GRt2vwz8EM0Pu9KStLJHUC3kibReTTnWY+Kr/2QMNoj/Yar5YGr9JDrHySkLyb92aIku4tdBxqnH26ot2jFfZbaXeyNzfCCNeNt8vuPZqqXRH2TpHzPbiXa7zZwsnT5/7vDU0zR4USaF0XC5asR9EAACAASURBVGtfQMakg+fkDgKxIwYAeF6e3AltY5JA5axUDejEi4olAUtZvlnqyuBJOPIVHxA5r8bsrnAydMbVLsCSG74Mb3eK9phmgp0WQBwGYK7tE4p3GSYNXbJCpTMKu7vGFAJR5T3FoMxwhFAVsiAJXI/lT7KBAPnqzCZQhYznxeF0G4b1qAwfJrSTyN20gc4M2aGgoGDFIT1YAswE8vupyXrP3GTB1hs+8mCgmBQyClYJPwgZv4dVgWwWFe6MFMXO2E/wWHVVDJC2GRX1DqKMBiYAzjHNYlKa5pkloqyrte4VMGst+MXdBTyf3+JC3jA3lPZRRgMx7eskEAwBDwTM4nBUuBYtNzDr4lAsZ6n1Oe4njbhys2jEU+q40lx19N0G0EYYG+MjU5DNaZWIvkq/oRTZ4ALCVQhtW6yWQ0N221bjrh6knk2T/bDP2JTEe6EDZEQi6bz6padGnw9Q5ghaOyx98z2achhkVyYieC3F29zs/XWcCjbR7Iwr8eRa8ADAAuGOckLwaiImvlxf3FJ8dr1PwA7lEi3QMUIrBhIBaRz55zOjAkCOJLOQ2wYYmIzB6eGMy6NbSuQTY7oaLNZikSfzCU5psfNwAACdCcvpCjOdijI6RauvMHPE0WtYq9ho3FaGZI7bNjhbRmmeIHRRlRd55R+Ni5Z/2veI9KyFsIaxuSoiFJTNcm4gQR9tkIhiWG2F9XS1gmspznj7gQdDgCUCiaViZgsSV/r4QL0c0riMv433gFI6UCdnL0VJg7GYgpTHJkkaXEq9NzRufkKfs4km2NXfZluJ3OoEGQPjT+bPLy+YCGBeYFg8ihAmXpSMvmkyeJwM3s8TzuFaqNntr5EyUgqmchpRNp8LI6/0U32yZfpQEEFaVHyljXqor2l07jUXV8y8SsZxFb0lZxV/s525v646jcGjO1uNzUCQJYeFseFXuxhoKLd+Qe5xWs2TyoDWePh1QJdwnzL323M7DgMdcMABBxxwwAEHHPAqsOMwEDdWY4TnSyxtTfHVGjgPpbWQqWeaYci9+MEmblasnNUsphOB/tVeo7mf7ayj9Cf6TBhuiUtOS1KllJlK8YvSvD7higMtIc/QNoRsNmamCY/nM/CVC3vmK+iHCfYKXKzbm7pg8R4FhxOudqI3jNOXBmZK3kvjb3+RK4ftyZ8WoS/YiElmGVqn7OCRCCovfC09m4Dz4np/cZrZUtlXCfKtEn2Q/u3uXHTPrPye6dfgDp7Mm6HV3v7aI4fj7oJktm6/IeAOwvjBol3EXzWd8GpG+uGOHslcemHiv/kzksiWw9OVWkX1eOM8Xt5PSZSejgx3iIa7cTlb0IaZDM4PD3jn8f7quuBnABdjYK24yowYIIIxhNnLhPP/39639ViSI+dFnFPdvTt7kWRZDwIEGLDhd/v//yQBtqAH2zvTdeiHzCQZjDszs6pGYMxu10kyeEkyGPExeMnHA/78eMLfPd/g2/6ltAcgkM/YktbgbbyrRMJYqsbEgaeQVQrm3UyQP0yklr/GszJDbskGg+6llBON/ZOqRzEfu1Dmxg5m6vT1jLtvNwIIQLzwbbtT7+WM0t2K+APoKlHHDpNoLNUG65ngMP6zFLuwverqwrpQKxv3E+L1q3L7JxdLAXh/tS9kPPENjo3x9dvgSPf0bXVoZR8rZ7+9foX310/49vhGKiLuPdpHKc+XDt8eRI4ZbB3Sa/ADCBXWSQjtwBM8HwDlDfAPWL9r/P3tJ/z2lxe8fi3w/fWdlL19/BkA9+1t+A3g+W37Wsiznvbtvh7dIc1jz9o4LKWTpKRhhrr3+NxaGgrxYR9v8JT2d+OKXJ9uc2TVDY4CniVH2dpZC7GxoBTF0ics5xHWL3mXbd9iuwsWKgiK1r+/Z5XUXJVlJQ/ggHOrE7/EHWsNxzCF9j2N3Sd/2unvDmiWDmTWTBHh7e0N/vTLLwAA8Pz1V/jL6x1+vl7blppXt53o8YAnYt2P+fZ8wrfnE74/3+A5HAiUO2iepCFRw/rGV0DnNSb/c0DmFaSDzWA6YmRzO9cJTGydRqcTQYAY2O1OC01UdLMl/vQjrc+T/B+d3+fSoOfQ0qXDJyiTlDp1rs1tmlw1Q1COWfXoeNqV8nGV0Xf8vnsAutxL2b+Egcz7UbrS318/4befv1WvKMAhq/JwaABGfo++DH0eR/dE1s8xNTsDsAPpg+3xQIC3B9lj9fb2Bt9/vMOr/1Bxgc4gdRng9snK59uTbMwvNf9H/Vs/U9dcDuL4pbMYfapygMk8nwdKLcTS1VGQ6v5mIIs8ltO3J2XKmsnhBpB5BxHROAKO/cOHNB/i3H+IgOXEtUpEqTHHt5hIECY81BEtd1O4Hb/R6Iee6/XUBixfBHySv8fPx2689/x//PgOP2DzhL5e7xWoHu/4eDzqRPX5eGzPiHXy+ehQg6QBxxBRLyQkjA3D7uqIXlOcnbt9BdI1X8dgTniE9N31V/a8zi1diS/kbwEkYLOGjexmZyVQpG5ECUUn3zkZ2l50AvN+DQrIUxjwIbhezcrqgM2N59Dp8VpMHAYqoPkk+uVMcuIaoB3aeW2G5vgK0Hf8AVge8IL3bqN8t4CK4yDrlFl5AMAOWo/Pa7zo7Ih+rxhJTtK9XQiOUOL4E0mvIyCUx/YVk+O+T0SEZz24s9fhUeD5fNADAqUNC/YlD4TtS0nkoMS2/PbcrzSp+SN9b/N1unhLcLJ80tVQlWf/RzbwDYyLnmmVtENRexwp/FpC9SFapJ3o6irH9L+hREiU0M8k6JDXPi0HlLwAXj9dAXIAKUfJ70SA6iHbSKRGJwFFsc8G7op+LL68XtsY7oZqgW1M4/PRdBhuY+KB3fjfa4dd2PE9eV4fTlILa2+LZuxAhy4bBuN/BLAJ4ADOgN2V08eRQHxyXIa/Ft9MzwRR5Gk6AxWvreOHy+9YYBhZ6tnJ1niQRhNstjSaI0iidRho0aJFixYtWrRo0S0U82j2k4rB9d7zEI8m0H1Kr/JqG9y7JZYfzx/whG/w/voVyvFlIEB4vUo9SADQvHUICM+92r98//N26AD6O/qOAz98Cam/k+94ndEFMDO/G70I7Use2/Pr5zscm/lxx/avx+bdffR7t9jkrffG7n+PNXrcvqpEltMr39zciy0ZGnwAaHocmyNa39nBtpbB7hE+lv/U1yhw9CwyJsuz6fdtaHkhEZHuiYA36gqK5Rubsu7z2y7EWHIuff/oqyOby5sk5EvkfZ6kZO5dRThkTJ/X71kdDs2gP6TJYmPcRnk5zkYV2O/lHBdRtrHxxK7ue3p6tdOh+2h9xDC1np5nUwmf3V8iOKI+ygf2EcSlaJD5oGezsR5ub54+mKVRUtKraRhBOSpgNT/dpX1uEf1LyOvQlVEPZR+setSHUMk2yxn2ykun2GGgYyhUb3zp4naOekdeWyYvr1f3JZvjHrkNeB77iv70xz/DX77/Ff71//0fkv5YO657L4//Hgh//fZXAAD4l7/7F3g+9hPr9R5O8Vz4FlqOJXmhmUdwJ7SCuC6lEW533R0p3n9ua/rHhcqPArDdA2ksmYxKvrNUjyfC89tzWzYTjIFg9mPVriAyADAQan3ULzLhYeRthVf34ybc8WP6/q9PfKIEMKlQlER+Xij+jKefo0vylURTjLSWtdlRHZN3CxJ4h2bUZK0dStPrt4l0ZaSJjSo2AIm7zGP3FTDlDQcdXbVWBzYr2wEqOz3VvqRCq0hqajS/+D6B8WO2RFC4Ph13XECmjk2gQ1FaLT1ogEArG8Oy8bg0LgtMI5Q8b5GFqzP9KsI6yFXKXPZ60oAdLBl6S+k+pfZoHqCSgLUCcHxashzf8d2/Zz7uPyzQLld/7CDslx9/gP/2T/8dfvvXv8G//+1/7Vn+rCXi/n3GBzzhD48f8J///E/wX/7TfwUAgH/80z8ap4QPJd23LmUs0LBbm0wWKIOngObn06isn29PwMcD3n/72QFfaF/g6MtmNRzeYXd/vH3b8oxg3xotT5iddyjH/8zMt/fQPwCKXUU9EBvS0dW4NoDJjSQ1xEPoOZoGlwKnjTcvpXz+QVWGXb+VIaKSgno6wClwDdl0B++Uem04UQCL0MYdCRH49PeR63Xw1snXMbYBoCqpsdwjf/YLOfuQjmgjC+Nh0eP2GBd8WqGTAvtV7PY1ZBzXiQ8fYNOoMW19NlpPOvEaam3FkArBPoZzXpjOqG4lXkIegX5JWe1kg2vYgNChBDb1dGfBZnDpfIA/XQ3r1R2l1Hvfjs+r9V/t6T9U0Z+0fD4f8A+//D38j3/+n/Bv//ffAADg33/93/Dr+98AAeD7c7v6588//gp//8d/gL/84S/w49uPPe0bbF8JIQvk+7+Hph4B4s0HQ5Q8Hw+Ex49vrT1e++fnCtTG2U4F9lclUaXzeDzh+XacMKXvp9OguI6fYdC5SWSI/zhl7MyW2sl5ChWaV7PvM9sL+hA8mcyzNoyo1CxQLDgVHGb+eiBzshw6dxJqoANOyqX0Uje5aRiRq0w4AOfAw2oxjCMshXJ637RHysJ1gN3ZrT6jrhoLcXMVUtlcOZA5PyP6ksb6BhKnVQmFwzaBEEAh+vMDNLgSVayVdmOeo13Xq6V94AT8d0mCXLUgdepDmLNgs1LJQfZ1GGjRokWLFi1atGjRLRTco0mfsLQ9fOX4r1smb5cWA3Ft1K9WdMvsAAAPfMAv3/8Ef/z2RwAA+Gf8580D+HzC23Fv3PMJj8e+J1H2X5IQPpc/PF80jDsfFH+CA92jqwB1qfeJdfuAP/c4M9N0vEgQ8W5Sl0239UzhBej3j7keUKArPqE5O+73htaNad1czqzfSbrEm6n6iW4hN3+LgSzVxVt0cFLG8hs9dsX34FieS14PJPHqW+G+slAdmnoDXdl3dl6b3o0UGK3TdN09XTib7++WZK1FHECiq9PLc2eODr9uhSjbB9Q7JXhAh0wv8X3eLChns0f24wuS6dWMpef2MiCsuKOn4Hp66sL242eRlpIyCAGorUXcPl+H9eJx3JaJH48Gxg4XOzNUmutdWoZSnrrKiHnlUEQ8NrwUhgnJ4eTu2xBAp6w26aYQG6A2pqPfVGAK0BaFdiMv53kUVuo9ohS0Se/Ic5lafjK6dRZkfgrAzBbKrGWu7ZjKEq2vo8zg0GfGNgqSJQWUR3wrv7eY4nl5LofBmaTWQiw8YKl5VD+IkDF5Ncx0Pef1Qe5Xtsf3kz02MmLv5RpuZ5Z/ZrFT4BeSZ3ME6BP4y+Z3TYZuTv6xJCiwJmIBnd23dRZ0Bhsqf72RWM72MuS7xKxi/bUm3YnK/Us2+MD6hZtj7129JgiIbLLS+2JiwJLHy0ZZAqsSi9/ajOOMwbfIkQVXtwkgsqUbNGQGoCLYwPTwIvV1sKq5e7ZpjSz36QlSKhLuwkFG7lRip+XMy9zw7lGyPTzQZxW8Uqt5LROAsxamHNgYvctk33ACERCSJ8DiW5aBAaJd1gYckayzsprkPZPmPx7FJmKj+XHmUNNSOKbapHKHhmEvpSCgZ6gbl1dOjHJpg/7Y36NQDyJ4tLTjuhkTtFcnJjWFJAhNfBlofJcNQbQbIgHK41G/ddxBgF3GsH7lZntE8v++DF6qMss3vA1+jmNgbBB0rIGygxkaOYW3gUvldF6Q8evhap6DTNFHQaFGACoOIjsCzwo2A8A95GGS0O81SPSrgUx5InZnQQFGE1VZoJDzUn6hEoXnLQJKzYPZ8VVPZgb44fgoedJHHpQZAgXKLIVPBHTsmch3z/v3YHlnqiirMjsvZ4Umo2d68a+p/MUnm9SJ/xGK7Gco0+D2DUb7S/4OJOjD6sgm3jdm3ABnspS+u0WZisn7Ogy0aNGiRYsWLVq06Baa+tb5OE2um9QPb+B+r+bode89ms1Fi8psZ3DxAyhTDXn+ofklLS+mnpvI6pefc3s55UuzwQnv5LBeE5pVDZOW1rb25dkAMCyp627Ses0CjmlkUu/MdNKJZBYUCjLT3jlDzsnZZP47pduVdZHgCQcmXoOLx16Cb2lG76C+91LikbyfbY8m+ssXfUmCY3EkJKXGPJuxGtDE+j3DWp1+Z5RZVTrFxNOIyTohDi9XSlWp4i+PmVlq4qC7z22Rmfdsn5OveLlnrue8a2VIwyMbcevYQi8rfDe5rZS0fHb2LPttlRzQFHJFaEtfWI8OYwcgG6NsFO3DPKx8pa88qEYFKAhAR56AFPoscVDrM1IgThUIJRkQ4hDpAE9muelSvAVS+ZI6R6892JTStDzHwTI+jGvy7Udq8H5BkHmvIjzPc5AuCxToaflrwFDKUi6LAlULUAI0UCmXPaHytaVPG50AbZ8WlO3u/utoPu/vhK4AlXcTjj+pjs0uXW4XZe85Id3D7lOkrBPL4RGazHe2OkEoek/hoKOZfIFBJ9CJYnAQppSFLADwQKI3LcqfOheoGT9HMZ88caul1vKidm0OXEbyYaEGMDTLvERGOXi0sqay1vVfoSEkS8La94oBOoeMWklkukWvtHEnFbykuQuNzQKsqgRp3gtAyr7QGNxtlGXVOTJRMCill4EhdXnbkyMKVF1gCsBuPVDmpnKBpxuWy0oeZN7AGxqLF1Agwy8BKLNUJ5584uRpLGOYDDSrZ7LpGn/Khp4iO4ezOvJ8+gvAq+3V0W3xLI3AE4AtxWj2NCsxU4eByCcExSm6XoXzSjOrhE8AzBh69A0RKIKYbIyUrEojx1mG7EOpvJVxpbuVNbZR2WLMQUGxJcvvuLdQd2j2gGME1lLBwWF5hTFlHo15ishVOr9PJBUQBgAnTYNDZCFdrE53hyVxVg+Fzz+cllD7cUfjZb6R0/RJIPOz5fV2YgdPmxzLErVNk+x2mYQg3RfZPpuy1cjpyXk8oOd2kWdCnQXb2V+2xD5mDDtuEb3xOaiZBpqlFLI/bnu2UqDw6wSxTxR6pcbCe4Zojf1ZkFDPm2fspuNF7KgiSuoI5yPAcytjSF2MJQAyWnAfZ60yah9WYDIUFRhy4li+wZDOpj07s47VAZP5J9CRl48ACGusse/W9l5K71OUGxCAWTIc6iUtnfP7GhRSJzeYMogfATJD/B8FMkN5p6bav0Nqclyn2mUcfV8DDEYpU1sZRwRscFqXCRZ+olkvA5lMZJPbK2aKmCig3Wlc0ns016nzRYsWLVq0aNGiRbdQ6sJ21WNkelED3hB1jXQuyylvQMLtGGOVPm8ZyO9Gkstps2hxx5DoSdrSEH7N49Qvc1v7Po9ZU2HbRHiNtx3yQwaaEDnLpFL+AZ5cWj/H/Mw8UgpqEadz9mMoWZ7H449Uf9H73Xu9hQ6Vy2pfqBJyIbyjh5OX7xFNnD0ggLZCFfjzkZGVnTHgVj3limq09HO11HW2oTkm3EWxJAiAzTN/8QF0geIrF6HDZil3ZoK3T2LBCnLAb1uVwP5TxSf0I/NmTnkxcycKYkVoFsgvKV6XvQ0T8njJYaAIZU5BkmIv1G4GJoxwhd3smf2Ydp1O++BTrNJSQBmtc/dI+F3gGdz3GfkEJXCVOCehfarzC1NTe4tOFsoWgS7J63rS54x9vbmcWcC9kIyHLRcsK94+OMhq+4lUiZoNIyspUZo+akZp0FwVbgCZKXG9vuESfgWfSY3StZKhVjnneN+bomh+55sGwqHhaHL4GNmvSB56kU5CYTn8bP/oc98I4LUQec/Ba3lqzr3T1GEgkSKgsIDggsjPYa1iUHmKpzHiTV0TB5dmlKJErlHIdIOcKPhDoGYwi2CkR+C5RWseKxzqsJv40ryg6vVGVoVDcTw860Uiac1kCgiZtJ055RKt0dnEUqCx+qGkZLt5dXdlIC1llj9/KoFPqN7y+mWgHdFGDUW4iUy2mDxm7Mpsv18C86bFdYL7CwD6jayK8FmUDj77xjNuTuhERpKej26WaHnTE/QkN0s3Va6SqFtZU/VE4fYuXKJQLOvjSwZ4J0A1hDt+Sp3lx7TiJNCknqD6woYHgPDgGNPy4r8opcLx3OCKdWJ8iVyNOgUuM6TB8D5QWWpmAGE00p0wFotPA5/7fAqBfQJQpGM3siZsapAEMufIV5CCPJ9Sqrwt83lcz3DEjgvGMrPeORIkZ9I4MqlpB/DZKSj1kFDlPSY6nUybOlXWYVn6ivjodJ3SIjs52ZtPepoS03s/FfJRVIiMO6UJNjjULGFU+Llymuvn8/qXJpO1jAb6mc0JAc0eXFKbyu4mv5ME8NP0Yd43uw4DLVq0aNGiRYsWLbqFLlg6F2bz3qqPE6/NPi7xco48SmERb2Z0uVyvB5+hTEzW5kmcmCjt4Ho6Rzd/Ufiol3Ncgkfolyz9l5TnVlKo529L+lyCXsBznsy8B3POOXmmNbJphCXosJcT+yg97c7EnZ+yF173cDZ+9d3MFZoY3eKkGDxbWb0i+ILilHK8XOQBvtHTc9YjmBEP6TK4/jY3KAD9Wcg76JKmDGZi2kYpJCnIV8iI5M1kXr3Cw4tg/CKX7iMefU1t6vZZ7z2MQK2j8Js9nnuhxyErc5FnoPlvnYuhY7G5t7a40+2XArIqkhQDWXA4uSwIM+Agvz1fEIlAFm2sKCYfJd7G0fORGlQgUVElHBKEg5E0aiVEySDTftWEWUx0VkYxMsN+BbgMCOpHGhVriZyxGRt0aZSQVkmvfga1mxj1fHSPpkFEJWbU7zm63KYQ0bsbYObLuAtY5vXvCd1rJRUmR71VxcpwD5q4MtfsxCbE9sEg04GWR7AALkv3e2AOlNi+5N0vneNue1rex1I6kY+7wSavboiSQLPwn1phFTHE1FZqLKP4kwSaX1A3JNDCnuc8mFwAzDbpKnqN3Dgazks1JO9nXI2lIQkKKsf36ICn4BF1HZladVPT/CvBZcszo9yY5J0Fl4HCfZk7Q94Lu+6cLhc5ryJbY6EICbx2hbBH7Piop3MLG4VaoxzInG1yHxzN5ZzWOPl5EU0Y5bwFWE5XPlmeJsvDk1KPNvFBkD6AQXNU7JldwS9GYaOqprXseJY8gCmDywLkV0At4OBhaYBzy6AUJO9VoGyrftjK8Q61nmmO/hWy+cxdb5TSpQIiFQFX1DAyNRFIY4ezOA9kWoZOeoolrRo11YmXSE40k8FIM/DZjDHxbqvAU1KuUYMOVK+qIDPvZZ9TUie+/BIEBTa4tEZKNDOv/LNa257sBHZKuNspigJmG6gcAKgIPrGLo/EfR7mJB02aBBuZ2dEllJD3C6ojjoxb8s0ltDzzB40Tn4IYnvTYkEOskss0D1yT+inBM3KeBZnVpAhxPZA8ACY1PSUMLFnetWzac+1jiKWuwhw+vAo24XiG/dDOxZMoBIY0M/ZgHQZatGjRokWLFi1adAulls4rqEUYPEjzvg5r8qPFmZ5JZRosz3IEX2rSm2k6qSO8XX2zHqjTk5VkBmTRRth/Qpt+n5spHs6aQto6emw6NqeF2Slj0JM54U7OzKAbb8KzKmcQ4zcjZMYP86gftCsVx1e5/euUp3k8tSX33oNZeYelc+sljy+O2JWyozNpfO/kvDczrcVTjsGP82Iy39aJ/JJD5/LMiYd917GZojJezavoqjaLy8LV3szRfbcRXyLvvJqVaa5cj3qv5vZvG61H6fVb5NDZ22HPprfjkZHAWOh9WyGav0czWIjG5iWX43VVOOvSN0GrEyCq9GgZ+yiKgIMJ85+k2OiwAXkT8n7tQDrVT8CnkE871aaBBu3BrbXOkbax+uTDrYEBMm1wKXP4aXjklQZUG6uU9I6KLJnDPinxJELLC5VJjQRAsS6dj7uSrrUi2RGdA43xDKfcBC7ITADLXBIjr5uAZabhZ5KrRCdX2OnGWFrs/p6vnDuFOW2iTAMbT3lGl5NMurZmy+QDyPyM3TUjdV3dAGVhYJPGKyTa9/ldmmmgKXfJRfMmR0+YTiBlKiMHC9BNlHFZc3vAwe68AGzEENeZcWln1JE8iPRRhfSfjXvIpAefdPM0Dh7p6L7LPM2Ayy1Jzpi1V50wRp5MJwM9mTuZg0NJcC26urWebxE0r2FDvmQbBWTaPJrR99X0X9p/MMU+JrwNZLqiH5TxC0yFWPPJfGPGdvatzxDXg4joqJKi/PZLCSqBQD4OX4Ax3qbzn5Qko2VM5xxLuRRXsirwlxDbbFA74+GggwWg7Hs6BV0nlqYRteEZ3XH6Hk1rkGq2TwWSVjmWF+jc+LgEZPpGPNAtHsAU2y7ylvPDQgZkCjRQpnbSdoaDl3s8sbvW4ToVPquM9hql09LyEiDTqKj/Dq7JUCPDgPI+q2oX5ADJI4JKX9ceihtcwpKyR1Onj1ienJkknMpzYJR5/RxmJ3RjGVeBSjNpoJA7+sEjIo8f7TmL2pxgo4bhenC2NDN5Celz7NpdsmlQ1+wAx4OMmT6KyFzi3bbDQDybekhIAZusdDZHLkQHHxP3aN3WYaBFixYtWrRo0aJFt9CURzPumbufNB+OPtOxXe2xOJT+DMxBxzLq79BlpVfKq4cSk9u8HFyCUdwX0r6ikbeUfXszAhR27+Y8zXhUtH6OpzsCEj2iCOw0nxHhtq7uUM8lcCkx9UfRV86ywjFATD/08LhMpi6dX+dOyrTYpbxEpAMeScdzLsZMD9yoDp/N0YqckO6LjJyXDflSGubWee6uezq7AGPQT54uPL2H9+DbHYG9Q7CUbeWtsIOMRdFVdhHikzf2xHh9faV6NfXMeerJ3T8jXfAJyhypnmrNuHn2cBpE5LiIabL6eq9UZICryp4BdaE+Jzs+p8QDTOPpuz41q+x491jj2cDmOYMetB9KOm8gO+XVwIDhMiqq948DEfR5iBfp1SRcXpwSicWDQHzpvIUqY1jabzwYhuPgUL90frFd/hxCRxZEvgA/zOijjwCV4otM5BONDLZvko4TxKU+fdCEJyoHQWWky0gGOA4tnAGZk12yL44DYndQFTuwCdApkF4/9/021t6uPG+raFsGSVlGB1CgMtnmXQAAIABJREFU6vASbRKOAgOnW4BmGkwqKTSTypVSzkhLj0xBaHjDxSHK2wTAo2kI1HEyB0L1w4uTSkwD2EXe4TLWsfdodscs81WYTpcvk4tXAFySAMMsCS+TA5fqYDMeZ4DoB5FQqObboYCSezZpzKBlDqsR/hJQhBK7OLON6+qjZL4JkJkzdncDyzyQCLMHGG+54uqgatRfJzLxaL6CV+mDhIiGEszsrdcKPE7816v3CuwgE/c9kR2oFEFntBy9wrHxZjMRB6WhlmxHJsKmfeONOvEJyhvMjIpM46wsXrDcWhwTBw1zWAd/nENBKmg2wHBk2Wp2ZhOeXVo0oFXRLuOwrLD/GXmxb79ziDHBehLQ1oAMwIyAy/YQEIE9KAssTcRpNInRWB+MQFEDkwBMhkRPu3RACBuAxS4mrHcuJDfP5DjxzJ67RUfk00tSc5poLBH8nsXuqQjul0o2g1+sQgfOPJxQ5U68eVC0eYNt6Nkbqvd13hjfzpm2BzJV0EVeYtcK4+mb+lO5W1PEvgqcS3bArNmcIsyVM/cJyhTtgpQcdOY7eAbZip8FmU59LEAgqiXUBc0CmGeXqBpd4K6xrnXqQChbgKzvLiLOmjbzrlHW2hc3gkvG711/JQinBzBFThGAuhloak5l+GA8qZPQbppUi6C0e5HeO9q+Ld2xXeTd/CxAakEjb5lO55PTBfGqk8vwdFYXTKJdDwxEssyWxGNG4Tvp8GHqL6c9MynDtfwkkMn619Ohzh7Hnal5OpU8pQIirXsWTJ4dm7O0Tp0vWrRo0aJFixYtuoWu3aM5g5AvQNUaSmfLiZY30/PwmEvj8jTI8jpJcfll9I1nbpaTYBY2dLoOHrZE3LyXxMMp9cnMfgAjCeu5M96R6DL5MP22HSqGbLH2safcEW9Q1IOZ8NnG6eZZNGqbj7tB4i6jIxPUgHyZtXI50lT7yMnbc+4EPH32cBQk7tTwjXuj9FqMgWd9innGtO/PdJB9oOtpp6Dz2o8M8F3xdtNfasvamgEH7MeExDKkNT2jJtNVipKGd3TeIWC8RzNBlwLNTPsYJjiRvy5cFsi03OVpkCldY4SyAdD2QGkA09aT8aWE0yRIPg+hy+DiVTSkuRV+ItAO1AnYpNqSwXbKAEuWRugQ3Y47I4DIpI0UxZxcvYvSH5kvBFS/CA39ZYNKexkde67rDvp+DLF+dacXcrzKMA8wPXnN5ZGNnCAlv6lPdxr5aWxsBTaIRESrxYazkFdk8hEu/yxj9xYXFBoFW24T1O01oxScPceSfF+hTka2wdKVwFEg49l+/PVGnHjHIP0HeKTE24dZAHQIVGUOJbbhYQZkohJO47R9mjb47KOctjthPeVUY3txFFlc/r3mgeuN4jonBjJpNzgAVwww1Lfw4INLgUuU1Qi4jMg7j7zWXsdBxZlyx+NpoigJg4g6NPcTpMcEs4h3Kw05WJF54xPBd/Ecld42rGnEixk1hprOjVJaHpQrrLyc41vqMgglR3Lyovz+JIoIZ5DP07Qxe+fr+KgtoOX5/dyGON+7KeCyMKmAeDjASB6vlD2x4ZtLM3sD4e1A03/3mNDRfjeM9YUgU9NN1vKlDjJj4FNmjXkvUyftolZCSyqjxy5IamcLfLbeSV1JrHcFeIqFN7POnAaXJMCRcUN25sBnF+mKRJDHLetrEOsRo7ISuNwe9kSd8dCvA7uQIlaVcOjo181hCit5ekrhvBtYRkjsP/nqqzK+57CFQpw26F1xigqMOjKmHS1dEUs7Hx8lW4aiNi8ar8th1A6YZakfI3dT5sqqMro9iHzilYLBMsxGp8Yo81brMNCiRYsWLVq0aNGiW+j+pfMAOJbjtDm7PUuzi+MuGW02I6N96zL2oMeSsA3+FyXOPQh00Uy1p/DiNcu0cC8AaF7ObnbeLivrrjdSZpYoV5D5Da+cwVr95jxYXsztp+7JZDkEPJhyLSnPeS/nJAmuoI/wkHbXKZNN7a0aOPC2eHm7/33keTO8xIZ0KvITUaIRfXRwxoXn7naNOqKpzuqOcQwK9rice/NqdrVXdkecdoQPjvbt87zzuTIdKUd6gS5faG/vJXbN8VRGt0Gd/JIbD+22gnUhdpqTdHgyo5+/TlCfXztPER/nlwHNs3ceumGOfAr2ywzn+dugQP16kTIipHAJSMrJrYFmpRu5hqdQHzFIGNZrJCUKoQx89p3BVPcEOUqHBATAZQ0wzfIQaKryrnls446U2ciz8eh625DtLrHb9ntbfCTo4uUHSJ2E+ONgwxHHHs2dvVzz2b9TAJKxTvSC2McRgHDt1p1Pkx+D1AsGjr3seDxifSzDRjU8fTqcXSoM7K5h7MI/gyKv6Ah6CCuE5GgOZHIz7IwKGWkqIV2MreKniC/Gd/Ihve+hy5LlWHWl0hd7qzzQPAkozVijQ1OlifYEzXBZvyoGmuTDpUkK972bXY7q4LEVeS33lERb/XKQchxIDO52ZjLF3OfIN36bryEN4gjInFQsNrhsAR7f7QfVBp558LnxXA4KIqD5wjI4DZeOSNv06h7N/Q+CeMXXRRUaOCNCrBdjSewdIDN6rcxngcvLyu29ndgAZ1/Gld8g3zIdQCYgyJdzqRmwn8EUSR5mUSfLiAHRKnOnQabDE7EDuoLVIk5wjkTd6OSp31/OuCCOPKXK/R5OnUtKKw0ohgcpPRONCZAp5qsBFRmpDHEayOyM/hll/2Ha3BrhfM187AsJeJKvKIQ9Az5fXmkElGYSYF7qvbS62gOGVjwaIEeswsdDh5n75fhq6ND/Qp5lN/DYtbWrl/t8hGXUC+zRuXa3QKAn5B8FMi3GL3DYmtIwYUn2i8stuFgR9qXz7JHfSJkRRedVOlKAMRBiQFcz2F32LoAUNavEKMcrPCKfG5FJMG7h4U/Nf4n8V2lpTjnfcbvNAxNL5+sw0KJFixYtWrRo0aJb6BKPpr7ck56ua49mqDn7tibdCiA3D6EEvZmcFQXeLVyZHLmeyq+0J0rds0HXxweOcVkd91kZv5NsyBSO2Z00S+VN7Mxga4DhM0p6MRmH+JMHWl5MvW6Wp9L2FGiy3oq+XnriauF82drY2oh7hrY9mlubl05e9ZXz69pn2hvCZCcg76o+2uLsdrtI92Sa7iOU2EHSVslwIp85+ypy333MVo5MXp7Ndse9E+/uyTQKyXkzFb+hZufNDAP8blolUhQ5upwySoq5xzNIJTj2e0oDzWj+IoDLZGDlKRlex5BTGdE7XTS8isGNXcLe4lWQKRZpd2Zo0B1Pp/WKIInyFXRCdN8x/rK6lJdKllKoAYZiEfpP6ToSYCkXbZlcrKUJINHoOlTy7TjUjb728vn2x+6B6NdiriAP8JzNfQSQm0hRdZy+lW5IH28u/SXVnALDe+qjEKbusePd6Hs79SSVVL/EOa4h7caNG0piP613PPfZRH86a9u7CAAlT0o85ZGHjTASNXtvVkimIBwd8uoXzKW0ypUIULY1dOxzoXmKxe7YFBEDPbfRNXs0VVR5Xb6Sd692igYyJflT917KSpyU3bKQK6nEyTKeB5nenqg2Fq5We1ZhHDxKKfg+psIeFYxm10lqkjCANOJZ3lYbKAoClThVcXsAUpHpI1b1xNuowVIWlqxnKQJQlFRxjuNBFkueVpDjsm9gOr5QZZ4m3g2/UmyI1Nynmjumq2R15xnsAOLQouc6P1/OF831XJGt9bdtdhcjTUOnmImEnxrP7BV9sYM/kThR26qZ8GEjaHjN1qsFjcHmYEuQUbaSdekMbpsW9weFeG5k9THuwAeAC4CmCNoSqaTunRnqMpCIJhaEUJFg8doiFjS8hxY3AzJtvKOO6LvUJ7thELfQjkEsn6c7BF+bfQXJUxoCjy078mdG1Rw08GnqZQtAeuAzDzA12abxUR6P5voyUAU75SCHYZ20rZ1vP70dHEeqoW9DOpj0qV07lYfJjGXYUfdghoCjj0Y8I+zRXTrqdjpZcS856Z9iAJRLSht4xG539Gu4HJv19MEfzYbLjEaQMAI7BRXDHv5WKz8406bCaTKVOo1VjoNCfDKDHQ5FgP0azVid1mGgRYsWLVq0aNGiRbfQh19vJJIEiiUvjuRJEtMqPgBp2VzKQpoJoTivSd6FaW+yN72Z5sxHd3l5s7c4xZbItyjJfUe9nGO6do9mdzm2N5sVA5XZtjdDFfjsOy+5fKila14BvdtqvNYEM8vktofTqElsys7TzSWL5maOJTOCO9y7JJsklu56o/xCZeZF9YFt5kLifZ00t1TuV0TvY7sNTonCJRl8HMWrKusUEjTx3rc2lZO5XV/dm3764I/r6WS5CfGohLcH156LFbCCYmn86C2Urw9G1lu6VGVYMu+zcJVUo/NA0zwZrD0p+DCQT7QkrgA1kCkZMD7gpVzF+zHlwk2Mpy2LezrbHVC8oiZpXOI9cRKA3B+lfDj4pELbtw/WsLhEiP0jJtDko/+pK3ySmoXzQBEeyd3txO3h6WVyLbwrcybejjZIT2D1yRX5S7MjqQ/KcEIoVI2DSZF/KTOVj8kNT+TLW/dLkv9JIy6UOiaM8YczztNVNyWU7t9YuUkuXc3Q8DrjKVAue7tWqChLLE7mMXvbEnCwZFAHMJbN8+K5DRZsQSfHWrjwSBgjekyxQvZ7R2Kkx4ot5W1pnepqdJhnBDj2bta964BbOOr2ZaSP9WhGNbAUQmTXEORRRk1WocyAUMQVd5dSzFevnCaItGgjXhkJM0oqYnLofdg++Czs3buZVrCSISAqtINlJLU4llq0F6iE03SyqOgGxPZS8pLmw0kI/2XIuBt6iXW0DEM8PSNyw8emjAu8KOi6ov5MNjxD4xl+TffkPJieTlFqoys2K004kjJdIj5JurRkGw8E88Dt86jTVbqwFb2s1CFj7Qk2jPURPHF9UUvLuFV7qdmQUDjLQOGy3lML9cavmeFM/+/gtEA9HLl9KW3L73OBZka7SO2XaBgDPqjhohKWhNAMa+Hq8rlRtdByuPX6JsjMADA3EMxZvbjKPXwozbzW6Ahqw5CCVoOQt3Egifhg33kZM/hyl6HelcY1W1u0LiD6JMmS93icnJWloGfIeP/JfH1wIFxW1PVP2bVo6dbOMVCdoz8KFnm4MPnULUZG5sIgc2KZUa2pJU/hTDjDBaJ0PanXFcSST1erjnF+/9YlPk1PHjVdFslU5bRBpn/oLi/DXFQ1HWbpNpTYapxuU8xAJSjDq1AA/CHAdtpxfCnczPVx0QY5YF6GN0LDRg2UApru/XpWmN1+wfL3f42CaKdrMw0+qBibGYYG3xXXNeQG1PjOdrwYKvMqoSaI3BmkwSN6PUegiuAunYeDu0z1uCGW/bQUMCrhNFAK16+5tLVtHmBq4V2mYjhPa8m1a2Sus43t11SeQwsWDj0LdXE6n2uj+W1fo5YvmRXlicVznvkJ7147y2BFb6nQrGmIX6xVnALMF4iXSEVuvmvJnHB2uuK4diZTIXvQzpGm645faQVg7dU0Mw3YS6F+OpOdhpkCXQ/FPjs8RPiwZGCQrGyCxHYz7tysr4tQcP9gSrDQdep80aJFixYtWrRo0S100x7N7BSUzwwcx9sQFffOyYd/dO76K+pVULKK3YOZ9z7QKhgtonm3eHEuafModjptiBjT0XthSx91rlZDv2jeFv/kuCGXQ19JaeSJvXafmn7PmnV6Uf+YgNDXSpy59cPxTpxxmKjSOpGfqgH6iLL9UwYWKNQLyT43qX9/Ui4cgTkGVB3D5ESTnz0Hoa9UT6ZQZMhDJCfweY3AUJeGdH0i0QU0nbuScC6/vi/ZDcRT2eV8YR63btt0ewl+uBXpxCP9x8qA1rL7IZh3g19IZao1Z3yyuuZ6jDNaKbrjvoILf1NnWPdoHjpz0z2xmkwDTUm3+o2mfJUnUILZXpJR10/1CGyS4VXNoP1emtI3FU9A6BJ7MiNtETcSQSpyi6lfslCW12sapz6qwRy0g2Y4bZDJlQWrq9ilqPKL43Fyj6YUfuUyOc/KihPqZyjbWZLlNZn5XvkjVTtd3pbKSykMWIq3LoxVQMLMi5UVg2p8fHmbOPCTApdndMY8sAzWcIrlKrqtKE0eSEii9NmK6ubKUFZ2cXNbhRxpmACZNBiFsO1BVn/Wfkxd54VtfB8a4uP1c3ntDLqfwzVICPDY9xC976FY//Hp/lPnE8KO7AcN8AajKPSogYshNxEQDD8kodSUvhLXgg3DYFRKG2y87ZDHqQGkVi6R6z/GBCQYhyjxNFBrXv8aTTneGnCaUujiWCqxaySjb4Qrnsq5ezCH+tWwmXAar+2r0mR74AiPc1thzlnGkFFU7s48cGWh0gyAne+zFLdqR3RBACzbHiazhlVW/H4L78fU9MRXAJimDpxizER/PjFbHq+xOZcOlHeOAvpQLc776pSl60ylY0dZcjzEcVbNaSTrQnfl4HiK9KG1IskiElIUHFJEY5XxvUrtE8RDv2FYZ18MNPPWJgbG7LwiykpfMtdLtQ8E2Rn5V4nI8YQnefAn/kQK0Xkc0kRdBZI1HVLeMRsFJAkMQsgFB39EkWyBYulSuHIYTVsKP3uSfMp7aQEGTa6VOCH3UwYvMvaDnERhjhfG7SvqHS8Ky+VeGYcElc4XoCsAaeyMfcoBhmSwFCOWunkiqBsFOYr3kRQUU/onRMigvK2azCFF3kEaVA9rXFE4L81lVtmssa/b1y3csMyaYiJZK/I8xNHHYUSiFtYepHBP9zGbEpF1HMrTSLNzQVLMBxy3t+KjtUf7vEqsnHUYaNGiRYsWLVq0aNEtFPJoep9SkiYR0pwijrElTslrJNVL30fRsbBI6xCFVSc1VG0y3SOUmg25B3+ER6FhnElnjtRriQq/Isa4wsjbo6l3VX5PZvup90vfH6L8Sd3F5FBvb3EGj3LbiMvn9J+xSFZf8/CPUMnQQbbo3W3hyJgAZsS07bUcDv4Ufrdmf01RAfv1FG0lBrJRq+i00Tsd824ePxSPDquYwaezQCcRUpQR5Lp4ptROTeln/yUoe/0Pud5IOzQ4X5swS8Yy6uGBC9vNWCVXRXnR4IBh7MKkoWKviBFGuSheYWWIOfFanTyaEJ5jGf2Bj65u/naink4snccFNBrm6EAxnWe8ZvdlqifKhTKcAJqDpwzPLJcLA4cHZd7FS0G/p6KzjL0gAM+DFyG2RxN5vlpXZE+XsxYWuy1xwCexhJ5ZEm9xfn9b+einPg159U6Dsqr6Azqst3zBEKjAeJd6Ue5W3xaLWkyo5hUMbEpYsjRMMljzjjK1p+iTJPZr07ih7DE+EBhtdkNDObz5Aibs5jWUqkOslkoXtUAEOL10fskg817eM8xKrkYaS+do9om2p6Aj1dRZkBmUzcjJceuAqFamwyvnl+ig4TAvIu719PbgNrpwj2ZOsiIoXLdTkvLiHTSzLzNWIV0YJGVRuW2dawuikLFl0OXmsvcvGlwKSYOXH6oYooYSOv69iYr8YtGqOIO9/8MZWQuL3aaDTEm5jGHiPiNU5FXqd62/HZBih1t5dbFJoMN4whE+Q0bjbJfCHN/sbaGSNxMK7J9ca4/+Rfo977DFE0nLsjS8TxIeTHdiSkM8AzYGZvpNLcU1ej5zzrpEsj9les8VbxY0Rg7XGRkezSbhsxWTw63qahZLTjP5oYqNQS/fahCphpIdl2wkGa6yIJorCzXAG3+x8an2vGjvJqRZtNWkAtufQwYTReSApmp8LDZHYUkpBYNJfkWUj1RX1WhrhhyFsESBfdyM4aaMMo9nSKQBpDBHBNmlIvV36aOG4J6fztanDh6yQceFRWsH1opityma9wTIzJ8mD8gredTCW6imONxDbeFlWj0wpRKz+nM4bb5daSQBTqsw6+5C3hc1XyJXqIa5y+SSIUp6L4NdAYYWCOl56dHuMs44YSL3YTmV8jLKXZpg6fMA32maHYeBTtKELSpYfUzougfhXVR7S/mlMF4l+Z1tkGnF0Up6YzN7qFAkry4OPwBUA/5AhNdu29ZhoEWLFi1atGjRokWfSlNL5yEMK3p9TuapJhY8RyKE1zxBmXrIU3VpRmp5dlCpQMorIc3OlAdrouwd9pJInPCoEeO8S/NwbrNA6X53tQ44Bgi1FLsM3XCx9aWJecCbqV+yPpRuhrVwzoYC7xYuy2GXj9j9xoxc2+Jh1VOiCQ9QJgn5WEDv2bTkq+v7/n3t7533NWsbjdnIJE2KTJao51Jp/9ntNTyqL0knUzXobhI5T50hY1Pu9FzmvJJiDn5ssIzjQFr/vnb9ECKL5ykbFyZVKvzwyTZXr37TSpTspRrWfkjFjONTsyssqbdPsyvbttliaoXPYQrS8WUgfGBrlKCxTgPNK4Z45MshtSGZ0Q/UwFSOToxk6MN5+aVqxpoXHRFIRdwG66IZmyjAjJr4jYMLnggoBf7j61eVPyFsRBm7CbW25UpiDJeUhhemHzbDYBit6bk9mlxJkvAhH01J8qKEOLUbohLFkqRoPPwDIINMqT3IpKnI7XiwSFHjG44TCHM/pmSMTHAfNV59kG+k9GBZQEwdaxlfg6KfuJPTGvW5gTQ9G0mpjRmq1zKVQDixY9MtQ1OTauBEX/h9bwmrrlultuZh8b2aJFdrPIT2YiojE1ntxYJ4rNOGgfHedhhtoQ987AeC4mKe92iOO92lDuwi4+MtyDm+nOfNFKQlvQfTrZrSvUHlqhlt22AIPNIgUQoPXVkl18JpD2T6DYcAAjwLDnwJxRqpGhv/LSDUHxpveE+mIBuOIvTDaHj8NLnxdQtNVl3vpW4kLaUZJZnVy0A6My4bXXZwRygHAza7HhwqCIgFSpH6gZ8qJyfKh35Q997WH0rf8ChQ+0LkNXN2DJvMEOpyTFqMs8KlV+PK7CCij+XoQ/B8nZWh8Ln1bKVnaCJLc+/+MC58EZF0YlJPugfyjPpY9R11g1KIOVZZPnka1RA+EB71QFAsxxTQFLMsAICa6MZE+gbxDeat1a8zMEO4LIBSNkrJwaUvPTsl3i9Zj9PtSDxjja+6hhTTL+AAHbh0PLWtsktFhkwqinw6TBrzEkAwdYM1tjbO0n+IqVvK2ML7l+J52fIsyNoeLitElB553k6IFRyi/YqhdvgH4PV6QSkFXq9SkWX9dxCh43vndZKACOoSEdK64u7+5KfGQR/72virXdxfI4ZdkDWB6/Nq7cELkV5tmBoeS2ZjvWAY1VXUOIN7cr8yDcf105T9opOeA7KHWVJuNiBZU+XTSyiOlVDbsW3XQCjsUFrN0n2xnYl58ls4T2brKW0CgcVYLpghE49Eu1HRk1peAzvn9XCQ00ZKIGocih3zyUt1DOZDucSnhesw0KJFixYtWrRo0aJbaGqPZrlyBqKUEabk/bXSPCXmscq406UwkD0aQ6bII+X6CO4Q2ctEaq/kYeakBqlkTd/7pyKE9k5K1Vm5dXrfewUKYEF6AASgC2upEQpA6bw2R3eVbet9dRwI1ejDrPZmgZL7ysiAOqyolxI4p1wyYvWw7Y/HAOZ7BivDmAetG3+N2P4ynoFOWe3St0ApmyenlBe8XrsHs4aX6uH0K4H1275WktfrBQ98VG8iHh6f7YHWsdBrksrI1PmxmCNJyE90KgHl3fgE7qSnrh+WJGH9UyTnMPF69G1/Zu/lnm2E61QZknoiuV5kButxH82Z6x0gOfIp3cGhfb+HLu+Sduvj9HC+3eTQIb0fdgtpW0r4yyG2cTGG8zRNZsi1ZEBl6dCbiE3yoQsr3fjcVJsUNjjXa3SpX8mpPBAhi0uJ02yDDgQI5YZ3jOvI8+f7O7x2XRYdArFPUA5Cj1SUujiQw/c4AuuQJQngG+1ewiyJKFB7bOVKhtQIIzmK76soEM24a/UaKSiMgYRqsFy7fThq5ZPlPNgHecdTCpRXgceT8sulI9GH7MTuULQZNsotY5XCoPaf1KcaCCCLaKX/o71sMYHOSKQd9iXc9u69Imcjif7qeLj8Cb1v8o+Pjjx64kqacAc4x3J4KfCSQOXeDhjZcLm32AE0X+8vKCgv/rxeL8AHQnl1wn2UUYM6QygIBl26RpEP4ah2MyEij/AuqkFE9oPFif3F1R4J5MPfOuBgdPZoMywS6zRDSiuezrx7k9jrVDnCXfYQEB4PqJMnNw9ExUYBeyFaL80Wau8w9JKUj6IUYgcbt4BouP5+uj4b9ZhcXTlcvuFmfJRszUgzY0jQxZNU7dBoonY9+v7+DgCb/G1qDuH99R7KOwQ0uyX5qrzZjFR7Syl8NiwyQHseNU/NR3X8Gju1EB9aH84HWceJlI8L6VAS+dmZB0s4I91gCvcEHyGu9NS0XUTbldLQVnVk7or08TCUPsIumEf7o2BspLCdW1JYY1tKg5gAORo7KuWYkm51p1FCmFifriytvCGOxYjKTVN6KCXV8yG8hlSpciyk0QpgVOivMoQeXwXqvg5U9snOqxR4PDYD/8QXvCt7NN+eTygAdXKEeMhN/waiEIr9Kr6VIDS8v2tJakaxA4ByRzg1bKGRwe/wye/mk2fwo7mc4ozYKBZgSfvQQQjwUDa8PR6Pltcu0+SwGZGjMoQLcUq4NnHhXrSOkyQaXIVuuF6qOo2SgkvLutUTgdiwjidqK2O+TV642F5jp1ll4BauaAYSFJFqfdxtAY/Hc/+L8HoVeD7iPt2gR/O5/3qH8npRVzXuA9wRjLE6UuNQncmBGcuDDaIuL8ngqjydkpKMqOp5lPOWhsNoK2pKozypv30PQMyYh7fxzqSBEX7yNbWmulq7IxxGeldoL82YfQOE982bdLAgbMvkpL4FYA9TdE76feQ00gLlruhr4aMyI34uIWdpatMvjR1/aPuNAqWH0QDRwCkKSlv2tJZDpRPUHs14kcYlvQohjz8dQ9nR5/GX5lPg568/t1zeAN7/pszcywOejwLl9arFID6qN7QWzgSokxd2i8cwBa3rgfT55swwAAABf0lEQVTdWoHj23YdV/qfhesWLpbD+431HmqghdcHUbKEB91WyIGueZ2kxPJBsHCnBUiZowtk6/qNv7ze4fVe4Nu3J0j0/g7w9ty9T6/3LYfHo8eevCaohzexbUIg5TXKQXVMdeH9EOu7XBLtqsNZ+KbPh5EF/T1mzXVRR8L+hPVfkha6dt5fHAt765qCg9Re+7PMgFA/WS0y5tjY9kEtVbbPelQJgWJNkjIj/bwxPBDhVd7h5+sBr99iHs11GGjRokWLFi1atGjRLRTyaP72/nMIKTA181u06AL69eev3dOSw0WfR/j2YBJYAABeXkpPbpdcL8rR4+1RxQ6fzYdkSZK6/1sMTzEvWlRpeTQXLVq0aNGiRYsW3UIYvu5j0aJFixYtWrRo0aIELY/mokWLFi1atGjRoltoAc1FixYtWrRo0aJFt9ACmosWLVq0aNGiRYtuoQU0Fy1atGjRokWLFt1CC2guWrRo0aJFixYtuoUW0Fy0aNGiRYsWLVp0C/1/7eSNY7BHWrEAAAAASUVORK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 864x864 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"samples = model.get_sample_images()\\n\",\n    \"rsamples = sess.run(samples)\\n\",\n    \"\\n\",\n    \"fig, ax = plt.subplots(figsize=(12, 12))\\n\",\n    \"ax.imshow(rsamples[0])\\n\",\n    \"_ = ax.axis('off')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Running on a custom image\\n\",\n    \"To run IODINE on a custom image we need a set of placeholders. Then we can just evaluate it as usual:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Get a set of placeholders for the dataset and evaluate the model using that\\n\",\n    \"input_ph = dataset.get_placeholders()\\n\",\n    \"custom_info = model.eval(input_ph)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Construct zero-valued fillers for all placeholders\\n\",\n    \"sg = ShapeGuard()\\n\",\n    \"sg.guard(input_ph['image'], \\\"B, 1, H, W, C\\\")\\n\",\n    \"sg.guard(input_ph['mask'], \\\"B, 1, L, H, W, 1\\\")\\n\",\n    \"         \\n\",\n    \"fillers = {\\n\",\n    \"    input_ph['image']: np.zeros(sg['1, 1, H, W, C']),\\n\",\n    \"    input_ph['mask']: np.zeros(sg['1, 1, L, H, W, 1']),\\n\",\n    \"    input_ph['latent']['color']: np.zeros(sg[\\\"1, L, 1\\\"]),\\n\",\n    \"    input_ph['latent']['shape']: np.zeros(sg[\\\"1, L, 1\\\"]),\\n\",\n    \"    input_ph['latent']['size']: np.zeros(sg[\\\"1, L, 1\\\"]),\\n\",\n    \"    input_ph['latent']['position']: np.zeros(sg[\\\"1, L, 3\\\"]),\\n\",\n    \"    input_ph['latent']['rotation']: np.zeros(sg[\\\"1, L, 1\\\"]),\\n\",\n    \"    input_ph['visibility']: np.zeros(sg[\\\"1, L\\\"]),\\n\",\n    \"}\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Now we can evaluate the model on any custom image like this real-world replica of the CLEVR dataset\\n\",\n    \"\\n\",\n    \"![Realworld CLEVR](images/realworld_clevr.png)\\n\",\n    \"\\n\",\n    \"(From [\\\"Neural-Symbolic VQA: Disentangling Reasoning from Vision and Language Understanding\\\"](https://www.semanticscholar.org/paper/Neural-Symbolic-VQA%3A-Disentangling-Reasoning-from-Yi-Wu/9d15ebe3f5aaf32a9f835f88703241461324c35b/figure/16) Kexin Yi, Jiajun Wu, Chuang Gan, Antonio Torralba, Pushmeet Kohli, Joshua B. Tenenbaum)\\n\",\n    \"\\n\",\n    \"\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1296x1008 with 63 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"img = np.array(Image.open('images/realworld_clevr.png')) / 255.\\n\",\n    \"fillers[input_ph['image']] = img.reshape(sg['1, 1, H, W, C'])\\n\",\n    \"custom_rinfo = sess.run(custom_info, feed_dict=fillers)\\n\",\n    \"fig = plotting.iterations_plot(custom_rinfo)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Getting detailed information\\n\",\n    \"The info returned by `model.eval()` contains many variables from all components and iterations.\\n\",\n    \"For a rough overview see the following sketch:\\n\",\n    \"\\n\",\n    \"![Overview of Variables](images/code_overview.svg)\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"<!--details><summary> info (click to exand) </summary-->\\n\",\n    \"Dimensions:\\n\",\n    \"\\n\",\n    \"* `B`: batch-size\\n\",\n    \"* `T`: number of iterations + 1\\n\",\n    \"* `K`: number of components\\n\",\n    \"* `L`: maximum number of ground-truth objects\\n\",\n    \"* `H`: image height\\n\",\n    \"* `W`: image width\\n\",\n    \"* `C`: image channels (usually 3 for RGB)\\n\",\n    \"* `Z`: size of latent representation\\n\",\n    \"\\n\",\n    \"Content of `info`:\\n\",\n    \"    \\n\",\n    \"* data: Inputs from the dataset (for the CLEVR dataset)\\n\",\n    \"    * image: `(B, 1, H, W, C)` Input Image (For sequential data this has dimension `(B, T, H, W, C)`)\\n\",\n    \"    * true_mask: `(B, 1, L, H, W, 1)`  ground truth mask (used for ARI and factor regressor only)\\n\",\n    \"    * visibility: `(B, L)`  How many object are in this scene\\n\",\n    \"    * factors: Information about true factors (used to train the factor regressor)\\n\",\n    \"        * color: `(B, L, 1)`    The color of each object (categorical 9 choices)\\n\",\n    \"        * position: `(B, L, 3)` The position of each object (x, y, z)\\n\",\n    \"        * shape: `(B, L, 1)`    The shape of each object (categorical 4 choices)\\n\",\n    \"        * size: `(B, L, 1)`     The size of each object (categorical 3 choices)\\n\",\n    \"*  inputs:  Inputs to the refinement network\\n\",\n    \"    * flat:\\n\",\n    \"        * dzp: `(B, T, K, 2*Z)`\\n\",\n    \"        * flat_capacity: `(B, T, K, 1)`\\n\",\n    \"        * zp: `(B, T, K, 2*Z)`\\n\",\n    \"    * spatial:\\n\",\n    \"        * capacity: `(B, T, K, H, W, 1)`\\n\",\n    \"        * components: `(B, T, K, H, W, C)`\\n\",\n    \"        * coordinates: `(B, T, 1, H, W, 2)`\\n\",\n    \"        * counterfactual: `(B, T, K, H, W, 1)`\\n\",\n    \"        * dcomponents: `(B, T, K, H, W, C)`\\n\",\n    \"        * dmask: `(B, T, K, H, W, 1)`\\n\",\n    \"        * image: `(B, T, 1, H, W, C)`\\n\",\n    \"        * log_prob: `(B, T, 1, H, W, 1)`\\n\",\n    \"        * posterior: `(B, T, K, H, W, 1)`\\n\",\n    \"        * pred_mask: `(B, T, K, H, W, 1)`\\n\",\n    \"        * pred_mask_logits: `(B, T, K, H, W, 1)`\\n\",\n    \"* latent: \\n\",\n    \"    * z: `(B, T, K, Z)`\\n\",\n    \"    * z_mean: `(B, T, K, Z)`\\n\",\n    \"    * z_stddev: `(B, T, K, Z)`\\n\",\n    \"* outputs: Output of the decoder network\\n\",\n    \"    * components: `(B, T, K, H, W, C)` Predicted means for each component.\\n\",\n    \"    * pred_mask: `(B, T, K, H, W, 1)`  Predicted mask\\n\",\n    \"    * pred_mask_logits: `(B, T, K, H, W, 1)` Predicted mask logits (pre-softmax) for each component\\n\",\n    \"    * recons: `(B, T, 1, H, W, C)` image reconstruction (mean of the spatial mixture)\\n\",\n    \"* losses:\\n\",\n    \"    * total: float\\n\",\n    \"    * recons: `(B, T)`\\n\",\n    \"    * kl: `(B, T, K)`\\n\",\n    \"    * factor: `(T,)`\\n\",\n    \"* metrics\\n\",\n    \"     * ari: `(B, T)`\\n\",\n    \"     * kl: `(B, T, K)`\\n\",\n    \"     * mse: `(B, T)`\\n\",\n    \"* factor_regressor\\n\",\n    \"  * assignment: `(B, T, L, K)`\\n\",\n    \"  * predictions: \\n\",\n    \"    * color: `(B, T, L, 9)`\\n\",\n    \"    * position: `(B, T, L, 3)`\\n\",\n    \"    * shape: `(B, T, L, 4)`\\n\",\n    \"    * size: `(B, T, L, 3)`\\n\",\n    \"  * metrics:\\n\",\n    \"    * color: `(T,)`    Color prediction accuracy\\n\",\n    \"    * shape: `(T,)`    Shape prediction accuracy\\n\",\n    \"    * size: `(T,)`     Size prediction accuracy\\n\",\n    \"    * position: `(T,)` R^2 metric for position prediction\\n\",\n    \"<!-- </details> -->\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"out_info:\\n\",\n      \"  data:\\n\",\n      \"    image: [1, 1, 128, 128, 3] @ <dtype: 'float32'>\\n\",\n      \"    true_mask: [1, 1, 11, 128, 128, 1] @ <dtype: 'float32'>\\n\",\n      \"    visibility: [1, 11] @ <dtype: 'float32'>\\n\",\n      \"    factors:\\n\",\n      \"      color: [1, 11, 1] @ <dtype: 'uint8'>\\n\",\n      \"      position: [1, 11, 3] @ <dtype: 'float32'>\\n\",\n      \"      rotation: [1, 11, 1] @ <dtype: 'float32'>\\n\",\n      \"      shape: [1, 11, 1] @ <dtype: 'uint8'>\\n\",\n      \"      size: [1, 11, 1] @ <dtype: 'uint8'>\\n\",\n      \"  factor_regressor:\\n\",\n      \"    assignment: [1, 6, 11, 7] @ <dtype: 'float32'>\\n\",\n      \"    metrics:\\n\",\n      \"      color: [6] @ <dtype: 'float32'>\\n\",\n      \"      position: [6] @ <dtype: 'float32'>\\n\",\n      \"      shape: [6] @ <dtype: 'float32'>\\n\",\n      \"      size: [6] @ <dtype: 'float32'>\\n\",\n      \"    predictions:\\n\",\n      \"      color: [1, 6, 11, 9] @ <dtype: 'float32'>\\n\",\n      \"      position: [1, 6, 11, 3] @ <dtype: 'float32'>\\n\",\n      \"      shape: [1, 6, 11, 4] @ <dtype: 'float32'>\\n\",\n      \"      size: [1, 6, 11, 3] @ <dtype: 'float32'>\\n\",\n      \"  inputs:\\n\",\n      \"    flat:\\n\",\n      \"      dzp: [1, 6, 7, 128] @ <dtype: 'float32'>\\n\",\n      \"      flat_capacity: [1, 6, 7, 1] @ <dtype: 'float32'>\\n\",\n      \"      zp: [1, 6, 7, 128] @ <dtype: 'float32'>\\n\",\n      \"    spatial:\\n\",\n      \"      capacity: [1, 6, 7, 128, 128, 1] @ <dtype: 'float32'>\\n\",\n      \"      components: [1, 6, 7, 128, 128, 3] @ <dtype: 'float32'>\\n\",\n      \"      coordinates: [1, 6, 1, 128, 128, 2] @ <dtype: 'float32'>\\n\",\n      \"      counterfactual: [1, 6, 7, 128, 128, 1] @ <dtype: 'float32'>\\n\",\n      \"      dcomponents: [1, 6, 7, 128, 128, 3] @ <dtype: 'float32'>\\n\",\n      \"      dmask: [1, 6, 7, 128, 128, 1] @ <dtype: 'float32'>\\n\",\n      \"      image: [1, 6, 1, 128, 128, 3] @ <dtype: 'float32'>\\n\",\n      \"      log_prob: [1, 6, 1, 128, 128, 1] @ <dtype: 'float32'>\\n\",\n      \"      mask: [1, 6, 7, 128, 128, 1] @ <dtype: 'float32'>\\n\",\n      \"      posterior: [1, 6, 7, 128, 128, 1] @ <dtype: 'float32'>\\n\",\n      \"      pred_mask: [1, 6, 7, 128, 128, 1] @ <dtype: 'float32'>\\n\",\n      \"  latent:\\n\",\n      \"    z: [1, 6, 7, 64] @ <dtype: 'float32'>\\n\",\n      \"    z_mean: [1, 6, 7, 64] @ <dtype: 'float32'>\\n\",\n      \"    z_std: [1, 6, 7, 64] @ <dtype: 'float32'>\\n\",\n      \"  losses:\\n\",\n      \"    factor: [6] @ <dtype: 'float32'>\\n\",\n      \"    kl: [1, 6, 1, 7] @ <dtype: 'float32'>\\n\",\n      \"    recons: [6, 1, 1] @ <dtype: 'float32'>\\n\",\n      \"    total: [] @ <dtype: 'float32'>\\n\",\n      \"  metrics:\\n\",\n      \"    ari: [1, 6] @ <dtype: 'float32'>\\n\",\n      \"    ari_nobg: [1, 6] @ <dtype: 'float32'>\\n\",\n      \"    mse: [1, 6] @ <dtype: 'float32'>\\n\",\n      \"  outputs:\\n\",\n      \"    components: [1, 6, 7, 128, 128, 3] @ <dtype: 'float32'>\\n\",\n      \"    pred_mask: [1, 6, 7, 128, 128, 1] @ <dtype: 'float32'>\\n\",\n      \"    pred_mask_logits: [1, 6, 7, 128, 128, 1] @ <dtype: 'float32'>\\n\",\n      \"    recons: [1, 6, 1, 128, 128, 3] @ <dtype: 'float32'>\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"utils.print_shapes('out_info', info)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.3\"\n  },\n  \"pycharm\": {\n   \"stem_cell\": {\n    \"cell_type\": \"raw\",\n    \"source\": [],\n    \"metadata\": {\n     \"collapsed\": false\n    }\n   }\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "iodine/README.md",
    "content": "# IODINE\nReference implementation for the paper [\"Multi-Object Representation Learning with Iterative Variational Inference\"](https://arxiv.org/abs/1903.00450).\nThis repository contains:\n\n* An IODINE implementation in Tensorflow v1.\n* Configurations used in the paper (checkpoints available in Cloud Storage) for:\n  * CLEVR\n  * Multi-dSprites\n  * Tetrominoes\n* A notebook for running and inspecting the model and plotting the results\n\n\n## Installation\n1. Clone the DeepMind research repository:\n\n    ``` bash\n    git clone https://github.com/deepmind/deepmind-research.git\n    cd deepmind-research\n    ```\n\n2. Download the checkpoints from GCP. A shell script is provided:\n\n   ```bash\n   ./iodine/download_checkpoints.sh\n   ```\n\n   On platforms without wget, the files can be downloaded from [this webpage](https://console.cloud.google.com/storage/browser/deepmind-research-iodine?pli=1)\n   and the unzipped `checkpoints/` folder should be placed in\n   `deepmind-research/iodine/checkpoints`.\n\n\n3. Prepare a Python 3 environment - virtualenv is recommended.\n\n   ```bash\n   python3 -m venv iodine_venv\n   source iodine_venv/bin/activate\n   ```\n\n4. Install dependencies:\n\n   ```bash\n   pip3 install -r iodine/requirements.txt\n   ```\n\n5. The `multi_object_datasets` package installed via requirements.txt provides python code to open the data files, but not the data files themselves.\n   Download the desired datasets either manually from the [Google Cloud Storage](https://console.cloud.google.com/storage/browser/multi-object-datasets) or using the commands below:\n\n    ```bash\n    pushd iodine/multi_object_datasets\n    # CLEVR\n    wget https://storage.googleapis.com/multi-object-datasets/clevr_with_masks/clevr_with_masks_train.tfrecords\n    # Multi-dSprites\n    wget https://storage.googleapis.com/multi-object-datasets/multi_dsprites/multi_dsprites_colored_on_grayscale.tfrecords\n    # Tetrominoes\n    wget https://storage.googleapis.com/multi-object-datasets/tetrominoes/tetrominoes_train.tfrecords\n    # Get back to location containing 'iodine' directory\n    popd\n    ```\n\n    See [multi_object_datasets repository](https://github.com/deepmind/multi_object_datasets)\n    for further details.\n6. Make sure that you have CUDA 10 and CuDNN 7 installed\n\n\n## Interact with a Model\nUse the jupyter notebook `Eval.ipynb` to load and run one of the checkpoints.\nIt also contains code to plot the outputs and latent traversals.\n\n\n## Train a Model\nTo train your own model use the [Sacred](https://github.com/IDSIA/sacred) experiment defined in `main.py`.\nThe configurations used in the paper for the different datasets are available as [named configs](https://sacred.readthedocs.io/en/latest/configuration.html#named-configurations) inside of `configuration.py`.\n### Train a new model\n * CLEVR6\n\n    ```bash\n    python3 -m iodine.main -f with clevr6\n    ```\n\n * Multi-dSprites\n\n    ```bash\n    python3 -m iodine.main -f with multi_dsprites\n    ```\n\n * Tetrominoes\n\n    ```bash\n    python3 -m iodine.main -f with tetrominoes\n    ```\n\nIt is recommended to add an observer to your run to let Sacred record the details of run.\nTo add a [FileStorageObserver](https://sacred.readthedocs.io/en/latest/command_line.html#filestorage-observer) add `-F my_storage_dir`, and add `-m my_db_name` for a [MongoObserver](https://sacred.readthedocs.io/en/latest/command_line.html#mongodb-observer).\n\n### Adjusting Config Values\nThe experiment has a configuration that can be printed and adjusted from the commandline. E.g.:\n\n``` bash\n# print configuration\npython3 -m iodine.main -f print_config with clevr6\n# run experiment after adjusting batch_size and the size of the shuffle buffer\npython3 -m iodine.main -f with clevr6 batch_size=2 data.shuffle_buffer=100\n```\n\n### Tensorboard\nEach run stores checkpoints and summaries in the directory specified by `checkpoint_dir`, to which a suffix based on the run_id is appended.\nIf an observer is added the `run_id` is set automatically. Otherwise it should be set manually using e.g. `run_id=5`.\n\nSummaries can be viewed using tensorboard. E.g. like this for clevr6 (assuming `run_id=1`):\n\n```bash\ntensorboard --log-dir iodine/checkpoints/clevr6_1\n```\n\n### Continue Previous Run\nTo continue a previous run pass `continue_run=True` and the path of the checkpoints:\n\n```bash\npython3 -m iodine.main -f with clevr6 checkpoint_dir=iodine/checkpoints/clevr6_1\n```\n\n## Code Structure\nThe main experiment defined in `main.py` uses `sacred` and the configurations for the different datasets are added as named configs and can be found in `configuration.py`.\nThe model implementation can be found in the `modules` directory and is based on `tensorflow` and `sonnet`:\n\n * `iodine.py` The main IODINE module that assembles the decoder, refinement network, distributions and factor regressor.\n * `decoder.py` The ComponentDecoder which is a wrapper around networks that takes care of splitting the output channels into means and masks.\n * `refinement.py` The refinement components assembles the encoder network, LSTM and refinement head.\n * `networks.py` Different standard networks such as CNN, BroadcastCNN, and LSTM.\n * `distribution.py` Definition of the latent and pixel distributions.\n * `factor_eval.py` Contains the factor regressor which predicts the true factors from the inferred object latents.\n * `data.py` Dataset wrappers around `multi_object_datasets` that take care of shuffling, batching and preprocessing.\n * `plotting.py` Helper functions for plotting results.\n * `utils.py` General helper functions.\n\n\n---\n**DISCLAIMER**\n\nThis is not an officially supported Google product.\n\n---\n"
  },
  {
    "path": "iodine/configurations.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Configurations for IODINE.\"\"\"\n# pylint: disable=missing-docstring, unused-variable\nimport math\n\n\ndef clevr6():\n  n_z = 64  # number of latent dimensions\n  num_components = 7  # number of components (K)\n  num_iters = 5\n  checkpoint_dir = \"iodine/checkpoints/clevr6\"\n\n  # For the paper we used 8 GPUs with a batch size of 4 each.\n  # This means a total batch size of 32, which is too large for a single GPU.\n  # When reducing the batch size, the learning rate should also be lowered.\n  batch_size = 4\n  learn_rate = 0.001 * math.sqrt(batch_size / 32)\n\n  data = {\n      \"constructor\": \"iodine.modules.data.CLEVR\",\n      \"batch_size\": batch_size,\n      \"path\": \"multi_object_datasets/clevr_with_masks_train.tfrecords\",\n      \"max_num_objects\": 6,\n  }\n\n  model = {\n      \"constructor\": \"iodine.modules.iodine.IODINE\",\n      \"n_z\": n_z,\n      \"num_components\": num_components,\n      \"num_iters\": num_iters,\n      \"iter_loss_weight\": \"linspace\",\n      \"coord_type\": \"linear\",\n      \"decoder\": {\n          \"constructor\": \"iodine.modules.decoder.ComponentDecoder\",\n          \"pixel_decoder\": {\n              \"constructor\": \"iodine.modules.networks.BroadcastConv\",\n              \"cnn_opt\": {\n                  # Final channels is irrelevant with target_output_shape\n                  \"output_channels\": [64, 64, 64, 64, None],\n                  \"kernel_shapes\": [3],\n                  \"strides\": [1],\n                  \"activation\": \"elu\",\n              },\n              \"coord_type\": \"linear\",\n          },\n      },\n      \"refinement_core\": {\n          \"constructor\": \"iodine.modules.refinement.RefinementCore\",\n          \"encoder_net\": {\n              \"constructor\": \"iodine.modules.networks.CNN\",\n              \"mode\": \"avg_pool\",\n              \"cnn_opt\": {\n                  \"output_channels\": [64, 64, 64, 64],\n                  \"strides\": [2],\n                  \"kernel_shapes\": [3],\n                  \"activation\": \"elu\",\n              },\n              \"mlp_opt\": {\n                  \"output_sizes\": [256, 256],\n                  \"activation\": \"elu\"\n              },\n          },\n          \"recurrent_net\": {\n              \"constructor\": \"iodine.modules.networks.LSTM\",\n              \"hidden_sizes\": [256],\n          },\n          \"refinement_head\": {\n              \"constructor\": \"iodine.modules.refinement.ResHead\"\n          },\n      },\n      \"latent_dist\": {\n          \"constructor\": \"iodine.modules.distributions.LocScaleDistribution\",\n          \"dist\": \"normal\",\n          \"scale_act\": \"softplus\",\n          \"scale\": \"var\",\n          \"name\": \"latent_dist\",\n      },\n      \"output_dist\": {\n          \"constructor\": \"iodine.modules.distributions.MaskedMixture\",\n          \"num_components\": num_components,\n          \"component_dist\": {\n              \"constructor\":\n                  \"iodine.modules.distributions.LocScaleDistribution\",\n              \"dist\":\n                  \"logistic\",\n              \"scale\":\n                  \"fixed\",\n              \"scale_val\":\n                  0.03,\n              \"name\":\n                  \"pixel_distribution\",\n          },\n      },\n      \"factor_evaluator\": {\n          \"constructor\":\n              \"iodine.modules.factor_eval.FactorRegressor\",\n          \"mapping\": [\n              (\"color\", 9, \"categorical\"),\n              (\"shape\", 4, \"categorical\"),\n              (\"size\", 3, \"categorical\"),\n              (\"position\", 3, \"scalar\"),\n          ],\n      },\n  }\n\n  optimizer = {\n      \"constructor\": \"tensorflow.train.AdamOptimizer\",\n      \"learning_rate\": {\n          \"constructor\": \"tensorflow.train.exponential_decay\",\n          \"learning_rate\": learn_rate,\n          \"global_step\": {\n              \"constructor\": \"tensorflow.train.get_or_create_global_step\"\n          },\n          \"decay_steps\": 1000000,\n          \"decay_rate\": 0.1,\n      },\n      \"beta1\": 0.95,\n  }\n\n\ndef multi_dsprites():\n  n_z = 16  # number of latent dimensions\n  num_components = 6  # number of components (K)\n  num_iters = 5\n  checkpoint_dir = \"iodine/checkpoints/multi_dsprites\"\n\n  # For the paper we used 8 GPUs with a batch size of 16 each.\n  # This means a total batch size of 128, which is too large for a single GPU.\n  # When reducing the batch size, the learning rate should also be lowered.\n  batch_size = 16\n  learn_rate = 0.0003 * math.sqrt(batch_size / 128)\n\n  data = {\n      \"constructor\":\n          \"iodine.modules.data.MultiDSprites\",\n      \"batch_size\":\n          batch_size,\n      \"path\":\n          \"multi_object_datasets/multi_dsprites_colored_on_grayscale.tfrecords\",\n      \"dataset_variant\":\n          \"colored_on_grayscale\",\n      \"min_num_objs\":\n          3,\n      \"max_num_objs\":\n          3,\n  }\n\n  model = {\n      \"constructor\": \"iodine.modules.iodine.IODINE\",\n      \"n_z\": n_z,\n      \"num_components\": num_components,\n      \"num_iters\": num_iters,\n      \"iter_loss_weight\": \"linspace\",\n      \"coord_type\": \"cos\",\n      \"coord_freqs\": 3,\n      \"decoder\": {\n          \"constructor\": \"iodine.modules.decoder.ComponentDecoder\",\n          \"pixel_decoder\": {\n              \"constructor\": \"iodine.modules.networks.BroadcastConv\",\n              \"cnn_opt\": {\n                  # Final channels is irrelevant with target_output_shape\n                  \"output_channels\": [32, 32, 32, 32, None],\n                  \"kernel_shapes\": [5],\n                  \"strides\": [1],\n                  \"activation\": \"elu\",\n              },\n              \"coord_type\": \"linear\",\n          },\n      },\n      \"refinement_core\": {\n          \"constructor\": \"iodine.modules.refinement.RefinementCore\",\n          \"encoder_net\": {\n              \"constructor\": \"iodine.modules.networks.CNN\",\n              \"mode\": \"avg_pool\",\n              \"cnn_opt\": {\n                  \"output_channels\": [32, 32, 32],\n                  \"strides\": [2],\n                  \"kernel_shapes\": [5],\n                  \"activation\": \"elu\",\n              },\n              \"mlp_opt\": {\n                  \"output_sizes\": [128],\n                  \"activation\": \"elu\"\n              },\n          },\n          \"recurrent_net\": {\n              \"constructor\": \"iodine.modules.networks.LSTM\",\n              \"hidden_sizes\": [128],\n          },\n          \"refinement_head\": {\n              \"constructor\": \"iodine.modules.refinement.ResHead\"\n          },\n      },\n      \"latent_dist\": {\n          \"constructor\": \"iodine.modules.distributions.LocScaleDistribution\",\n          \"dist\": \"normal\",\n          \"scale_act\": \"softplus\",\n          \"scale\": \"var\",\n          \"name\": \"latent_dist\",\n      },\n      \"output_dist\": {\n          \"constructor\": \"iodine.modules.distributions.MaskedMixture\",\n          \"num_components\": num_components,\n          \"component_dist\": {\n              \"constructor\":\n                  \"iodine.modules.distributions.LocScaleDistribution\",\n              \"dist\":\n                  \"logistic\",\n              \"scale\":\n                  \"fixed\",\n              \"scale_val\":\n                  0.03,\n              \"name\":\n                  \"pixel_distribution\",\n          },\n      },\n      \"factor_evaluator\": {\n          \"constructor\":\n              \"iodine.modules.factor_eval.FactorRegressor\",\n          \"mapping\": [\n              (\"color\", 3, \"scalar\"),\n              (\"shape\", 4, \"categorical\"),\n              (\"scale\", 1, \"scalar\"),\n              (\"x\", 1, \"scalar\"),\n              (\"y\", 1, \"scalar\"),\n              (\"orientation\", 2, \"angle\"),\n          ],\n      },\n  }\n\n  optimizer = {\n      \"constructor\": \"tensorflow.train.AdamOptimizer\",\n      \"learning_rate\": {\n          \"constructor\": \"tensorflow.train.exponential_decay\",\n          \"learning_rate\": learn_rate,\n          \"global_step\": {\n              \"constructor\": \"tensorflow.train.get_or_create_global_step\"\n          },\n          \"decay_steps\": 1000000,\n          \"decay_rate\": 0.1,\n      },\n      \"beta1\": 0.95,\n  }\n\n\ndef tetrominoes():\n  n_z = 32  # number of latent dimensions\n  num_components = 4  # number of components (K)\n  num_iters = 5\n  checkpoint_dir = \"iodine/checkpoints/tetrominoes\"\n\n  # For the paper we used 8 GPUs with a batch size of 32 each.\n  # This means a total batch size of 256, which is too large for a single GPU.\n  # When reducing the batch size, the learning rate should also be lowered.\n  batch_size = 128\n  learn_rate = 0.0003 * math.sqrt(batch_size / 256)\n\n  data = {\n      \"constructor\": \"iodine.modules.data.Tetrominoes\",\n      \"batch_size\": batch_size,\n      \"path\": \"iodine/multi_object_datasets/tetrominoes_train.tfrecords\",\n  }\n\n  model = {\n      \"constructor\": \"iodine.modules.iodine.IODINE\",\n      \"n_z\": n_z,\n      \"num_components\": num_components,\n      \"num_iters\": num_iters,\n      \"iter_loss_weight\": \"linspace\",\n      \"coord_type\": \"cos\",\n      \"coord_freqs\": 3,\n      \"decoder\": {\n          \"constructor\": \"iodine.modules.decoder.ComponentDecoder\",\n          \"pixel_decoder\": {\n              \"constructor\": \"iodine.modules.networks.BroadcastConv\",\n              \"cnn_opt\": {\n                  # Final channels is irrelevant with target_output_shape\n                  \"output_channels\": [32, 32, 32, 32, None],\n                  \"kernel_shapes\": [5],\n                  \"strides\": [1],\n                  \"activation\": \"elu\",\n              },\n              \"coord_type\": \"linear\",\n              \"coord_freqs\": 3,\n          },\n      },\n      \"refinement_core\": {\n          \"constructor\": \"iodine.modules.refinement.RefinementCore\",\n          \"encoder_net\": {\n              \"constructor\": \"iodine.modules.networks.CNN\",\n              \"mode\": \"avg_pool\",\n              \"cnn_opt\": {\n                  \"output_channels\": [32, 32, 32],\n                  \"strides\": [2],\n                  \"kernel_shapes\": [5],\n                  \"activation\": \"elu\",\n              },\n              \"mlp_opt\": {\n                  \"output_sizes\": [128],\n                  \"activation\": \"elu\"\n              },\n          },\n          \"recurrent_net\": {\n              \"constructor\": \"iodine.modules.networks.LSTM\",\n              \"hidden_sizes\": [],  # No recurrent layer used for this dataset\n          },\n          \"refinement_head\": {\n              \"constructor\": \"iodine.modules.refinement.ResHead\"\n          },\n      },\n      \"latent_dist\": {\n          \"constructor\": \"iodine.modules.distributions.LocScaleDistribution\",\n          \"dist\": \"normal\",\n          \"scale_act\": \"softplus\",\n          \"scale\": \"var\",\n          \"name\": \"latent_dist\",\n      },\n      \"output_dist\": {\n          \"constructor\": \"iodine.modules.distributions.MaskedMixture\",\n          \"num_components\": num_components,\n          \"component_dist\": {\n              \"constructor\":\n                  \"iodine.modules.distributions.LocScaleDistribution\",\n              \"dist\":\n                  \"logistic\",\n              \"scale\":\n                  \"fixed\",\n              \"scale_val\":\n                  0.03,\n              \"name\":\n                  \"pixel_distribution\",\n          },\n      },\n      \"factor_evaluator\": {\n          \"constructor\":\n              \"iodine.modules.factor_eval.FactorRegressor\",\n          \"mapping\": [\n              (\"position\", 2, \"scalar\"),\n              (\"color\", 3, \"scalar\"),\n              (\"shape\", 20, \"categorical\"),\n          ],\n      },\n  }\n\n  optimizer = {\n      \"constructor\": \"tensorflow.train.AdamOptimizer\",\n      \"learning_rate\": {\n          \"constructor\": \"tensorflow.train.exponential_decay\",\n          \"learning_rate\": learn_rate,\n          \"global_step\": {\n              \"constructor\": \"tensorflow.train.get_or_create_global_step\"\n          },\n          \"decay_steps\": 1000000,\n          \"decay_rate\": 0.1,\n      },\n      \"beta1\": 0.95,\n  }\n"
  },
  {
    "path": "iodine/download_checkpoints.sh",
    "content": "#!/bin/bash\n# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\npushd iodine\nwget http://storage.googleapis.com/deepmind-research-iodine/iodine_checkpoints.zip\nunzip iodine_checkpoints.zip\npopd\n\n"
  },
  {
    "path": "iodine/main.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# pylint: disable=g-importing-member, g-multiple-import, g-import-not-at-top\n# pylint: disable=protected-access, g-bad-import-order, missing-docstring\n# pylint: disable=unused-variable, invalid-name, no-value-for-parameter\n\nfrom copy import deepcopy\nimport os.path\nimport warnings\nfrom absl import logging\nimport numpy as np\nfrom sacred import Experiment, SETTINGS\n\n# Ignore all tensorflow deprecation warnings\nlogging._warn_preinit_stderr = 0\nwarnings.filterwarnings(\"ignore\", module=\".*tensorflow.*\")\nimport tensorflow.compat.v1 as tf\n\ntf.logging.set_verbosity(tf.logging.ERROR)\nimport sonnet as snt\nfrom sacred.stflow import LogFileWriter\nfrom iodine.modules import utils\nfrom iodine import configurations\n\nSETTINGS.CONFIG.READ_ONLY_CONFIG = False\n\nex = Experiment(\"iodine\")\n\n\n@ex.config\ndef default_config():\n  continue_run = False  # set to continue experiment from an existing checkpoint\n  checkpoint_dir = (\"checkpoints/iodine\"\n                   )  # if continue_run is False, \"_{run_id}\" will be appended\n  save_summaries_steps = 10\n  save_checkpoint_steps = 1000\n\n  n_z = 64  # number of latent dimensions\n  num_components = 7  # number of components (K)\n  num_iters = 5\n\n  learn_rate = 0.001\n  batch_size = 4\n  stop_after_steps = int(1e6)\n\n  # Details for the dataset, model and optimizer are left empty here.\n  # They can be found in the configurations for individual datasets,\n  # which are provided in configurations.py and added as named configs.\n  data = {}  # Dataset details will go here\n  model = {}  # Model details will go here\n  optimizer = {}  # Optimizer details will go here\n\n\nex.named_config(configurations.clevr6)\nex.named_config(configurations.multi_dsprites)\nex.named_config(configurations.tetrominoes)\n\n\n@ex.capture\ndef build(identifier, _config):\n  config_copy = deepcopy(_config[identifier])\n  return utils.build(config_copy, identifier=identifier)\n\n\ndef get_train_step(model, dataset, optimizer):\n  loss, scalars, _ = model(dataset(\"train\"))\n  global_step = tf.train.get_or_create_global_step()\n  grads = optimizer.compute_gradients(loss)\n  gradients, variables = zip(*grads)\n  global_norm = tf.global_norm(gradients)\n  gradients, global_norm = tf.clip_by_global_norm(\n      gradients, 5.0, use_norm=global_norm)\n  grads = zip(gradients, variables)\n  train_op = optimizer.apply_gradients(grads, global_step=global_step)\n\n  with tf.control_dependencies([train_op]):\n    overview = model.get_overview_images(dataset(\"summary\"))\n    scalars[\"debug/global_grad_norm\"] = global_norm\n\n    summaries = {\n        k: tf.summary.scalar(k, v) for k, v in scalars.items()\n    }\n    summaries.update(\n        {k: tf.summary.image(k, v) for k, v in overview.items()})\n\n    return tf.identity(global_step), scalars, train_op\n\n\n@ex.capture\ndef get_checkpoint_dir(continue_run, checkpoint_dir, _run, _log):\n  if continue_run:\n    assert os.path.exists(checkpoint_dir)\n    _log.info(\"Continuing run from checkpoint at {}\".format(checkpoint_dir))\n    return checkpoint_dir\n\n  run_id = _run._id\n  if run_id is None:  # then no observer was added that provided an _id\n    if not _run.unobserved:\n      _log.warning(\n          \"No run_id given or provided by an Observer. (Re-)using run_id=1.\")\n    run_id = 1\n  checkpoint_dir = checkpoint_dir + \"_{run_id}\".format(run_id=run_id)\n  _log.info(\n      \"Starting a new run using checkpoint dir: '{}'\".format(checkpoint_dir))\n  return checkpoint_dir\n\n\n@ex.capture\ndef get_session(chkp_dir, loss, stop_after_steps, save_summaries_steps,\n                save_checkpoint_steps):\n  config = tf.ConfigProto()\n  config.gpu_options.allow_growth = True\n\n  hooks = [\n      tf.train.StopAtStepHook(last_step=stop_after_steps),\n      tf.train.NanTensorHook(loss),\n  ]\n\n  return tf.train.MonitoredTrainingSession(\n      hooks=hooks,\n      config=config,\n      checkpoint_dir=chkp_dir,\n      save_summaries_steps=save_summaries_steps,\n      save_checkpoint_steps=save_checkpoint_steps,\n  )\n\n\n@ex.command(unobserved=True)\ndef load_checkpoint(use_placeholder=False, session=None):\n  dataset = build(\"data\")\n  model = build(\"model\")\n  if use_placeholder:\n    inputs = dataset.get_placeholders()\n  else:\n    inputs = dataset()\n\n  info = model.eval(inputs)\n  if session is None:\n    session = tf.Session()\n  saver = tf.train.Saver()\n  checkpoint_dir = get_checkpoint_dir()\n  checkpoint_file = tf.train.latest_checkpoint(checkpoint_dir)\n  saver.restore(session, checkpoint_file)\n\n  print('Successfully restored Checkpoint \"{}\"'.format(checkpoint_file))\n  # print variables\n  variables = tf.global_variables() + tf.local_variables()\n  for row in snt.format_variables(variables, join_lines=False):\n    print(row)\n\n  return {\n      \"session\": session,\n      \"model\": model,\n      \"info\": info,\n      \"inputs\": inputs,\n      \"dataset\": dataset,\n  }\n\n\n@ex.automain\n@LogFileWriter(ex)\ndef main(save_summaries_steps):\n  checkpoint_dir = get_checkpoint_dir()\n\n  dataset = build(\"data\")\n  model = build(\"model\")\n  optimizer = build(\"optimizer\")\n  gstep, train_step_exports, train_op = get_train_step(model, dataset,\n                                                       optimizer)\n\n  loss, ari = [], []\n  with get_session(checkpoint_dir, train_step_exports[\"loss/total\"]) as sess:\n    while not sess.should_stop():\n      out = sess.run({\n          \"step\": gstep,\n          \"loss\": train_step_exports[\"loss/total\"],\n          \"ari\": train_step_exports[\"loss/ari_nobg\"],\n          \"train\": train_op,\n      })\n      loss.append(out[\"loss\"])\n      ari.append(out[\"ari\"])\n      step = out[\"step\"]\n      if step % save_summaries_steps == 0:\n        mean_loss = np.mean(loss)\n        mean_ari = np.mean(ari)\n        ex.log_scalar(\"loss\", mean_loss, step)\n        ex.log_scalar(\"ari\", mean_ari, step)\n        print(\"{step:>6d} Loss: {loss: >12.2f}\\t\\tARI-nobg:{ari: >6.2f}\".format(\n            step=step, loss=mean_loss, ari=mean_ari))\n        loss, ari = [], []\n"
  },
  {
    "path": "iodine/modules/__init__.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n"
  },
  {
    "path": "iodine/modules/data.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Data loading functionality for IODINE.\"\"\"\n# pylint: disable=g-multiple-import, missing-docstring, unused-import\nimport os.path\n\nfrom iodine.modules.utils import flatten_all_but_last, ensure_3d\nfrom multi_object_datasets import (\n    clevr_with_masks,\n    multi_dsprites,\n    tetrominoes,\n    objects_room,\n)\nfrom shapeguard import ShapeGuard\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\n\nclass IODINEDataset(snt.AbstractModule):\n  num_true_objects = 1\n  num_channels = 3\n\n  factors = {}\n\n  def __init__(\n      self,\n      path,\n      batch_size,\n      image_dim,\n      crop_region=None,\n      shuffle_buffer=1000,\n      max_num_objects=None,\n      min_num_objects=None,\n      grayscale=False,\n      name=\"dataset\",\n      **kwargs,\n  ):\n    super().__init__(name=name)\n    self.path = os.path.abspath(os.path.expanduser(path))\n    self.batch_size = batch_size\n    self.crop_region = crop_region\n    self.image_dim = image_dim\n    self.shuffle_buffer = shuffle_buffer\n    self.max_num_objects = max_num_objects\n    self.min_num_objects = min_num_objects\n    self.grayscale = grayscale\n    self.dataset = None\n\n  def _build(self, subset=\"train\"):\n    dataset = self.dataset\n\n    # filter by number of objects\n    if self.max_num_objects is not None or self.min_num_objects is not None:\n      dataset = self.dataset.filter(self.filter_by_num_objects)\n\n    if subset == \"train\":\n      # normal mode returns a shuffled dataset iterator\n      if self.shuffle_buffer is not None:\n        dataset = dataset.shuffle(self.shuffle_buffer)\n    elif subset == \"summary\":\n      # for generating summaries and overview images\n      # returns a single fixed batch\n      dataset = dataset.take(self.batch_size)\n\n    # repeat and batch\n    dataset = dataset.repeat().batch(self.batch_size, drop_remainder=True)\n    iterator = dataset.make_one_shot_iterator()\n    data = iterator.get_next()\n\n    # preprocess the data to ensure correct format, scale images etc.\n    data = self.preprocess(data)\n    return data\n\n  def filter_by_num_objects(self, d):\n    if \"visibility\" not in d:\n      return tf.constant(True)\n    min_num_objects = self.max_num_objects or 0\n    max_num_objects = self.max_num_objects or 6\n\n    min_predicate = tf.greater_equal(\n        tf.reduce_sum(d[\"visibility\"]),\n        tf.constant(min_num_objects - 1e-5, dtype=tf.float32),\n    )\n    max_predicate = tf.less_equal(\n        tf.reduce_sum(d[\"visibility\"]),\n        tf.constant(max_num_objects + 1e-5, dtype=tf.float32),\n    )\n    return tf.logical_and(min_predicate, max_predicate)\n\n  def preprocess(self, data):\n    sg = ShapeGuard(dims={\n        \"B\": self.batch_size,\n        \"H\": self.image_dim[0],\n        \"W\": self.image_dim[1]\n    })\n    image = sg.guard(data[\"image\"], \"B, h, w, C\")\n    mask = sg.guard(data[\"mask\"], \"B, L, h, w, 1\")\n\n    # to float\n    image = tf.cast(image, tf.float32) / 255.0\n    mask = tf.cast(mask, tf.float32) / 255.0\n\n    # crop\n    if self.crop_region is not None:\n      height_slice = slice(self.crop_region[0][0], self.crop_region[0][1])\n      width_slice = slice(self.crop_region[1][0], self.crop_region[1][1])\n      image = image[:, height_slice, width_slice, :]\n\n      mask = mask[:, :, height_slice, width_slice, :]\n\n    flat_mask, unflatten = flatten_all_but_last(mask, n_dims=3)\n\n    # rescale\n    size = tf.constant(\n        self.image_dim, dtype=tf.int32, shape=[2], verify_shape=True)\n    image = tf.image.resize_images(\n        image, size, method=tf.image.ResizeMethod.BILINEAR)\n    mask = tf.image.resize_images(\n        flat_mask, size, method=tf.image.ResizeMethod.NEAREST_NEIGHBOR)\n\n    if self.grayscale:\n      image = tf.reduce_mean(image, axis=-1, keepdims=True)\n\n    output = {\n        \"image\": sg.guard(image[:, None], \"B, T, H, W, C\"),\n        \"mask\": sg.guard(unflatten(mask)[:, None], \"B, T, L, H, W, 1\"),\n        \"factors\": self.preprocess_factors(data, sg),\n    }\n\n    if \"visibility\" in data:\n      output[\"visibility\"] = sg.guard(data[\"visibility\"], \"B, L\")\n    else:\n      output[\"visibility\"] = tf.ones(sg[\"B, L\"], dtype=tf.float32)\n\n    return output\n\n  def preprocess_factors(self, data, sg):\n    return {\n        name: sg.guard(ensure_3d(data[name]), \"B, L, *\")\n        for name in self.factors\n    }\n\n  def get_placeholders(self, batch_size=None):\n    batch_size = batch_size or self.batch_size\n    sg = ShapeGuard(\n        dims={\n            \"B\": batch_size,\n            \"H\": self.image_dim[0],\n            \"W\": self.image_dim[1],\n            \"L\": self.num_true_objects,\n            \"C\": 3,\n            \"T\": 1,\n        })\n    return {\n        \"image\": tf.placeholder(dtype=tf.float32, shape=sg[\"B, T, H, W, C\"]),\n        \"mask\": tf.placeholder(dtype=tf.float32, shape=sg[\"B, T, L, H, W, 1\"]),\n        \"visibility\": tf.placeholder(dtype=tf.float32, shape=sg[\"B, L\"]),\n        \"factors\": {\n            name:\n            tf.placeholder(dtype=dtype, shape=sg[\"B, L, {}\".format(size)])\n            for name, (dtype, size) in self.factors\n        },\n    }\n\n\nclass CLEVR(IODINEDataset):\n  num_true_objects = 11\n  num_channels = 3\n  factors = {\n      \"color\": (tf.uint8, 1),\n      \"shape\": (tf.uint8, 1),\n      \"size\": (tf.uint8, 1),\n      \"position\": (tf.float32, 3),\n      \"rotation\": (tf.float32, 1),\n  }\n\n  def __init__(\n      self,\n      path,\n      crop_region=((29, 221), (64, 256)),\n      image_dim=(128, 128),\n      name=\"clevr\",\n      **kwargs,\n  ):\n    super().__init__(\n        path=path,\n        crop_region=crop_region,\n        image_dim=image_dim,\n        name=name,\n        **kwargs)\n    self.dataset = clevr_with_masks.dataset(self.path)\n\n  def preprocess_factors(self, data, sg):\n\n    return {\n        \"color\": sg.guard(ensure_3d(data[\"color\"]), \"B, L, 1\"),\n        \"shape\": sg.guard(ensure_3d(data[\"shape\"]), \"B, L, 1\"),\n        \"size\": sg.guard(ensure_3d(data[\"color\"]), \"B, L, 1\"),\n        \"position\": sg.guard(ensure_3d(data[\"pixel_coords\"]), \"B, L, 3\"),\n        \"rotation\": sg.guard(ensure_3d(data[\"rotation\"]), \"B, L, 1\"),\n    }\n\n\nclass MultiDSprites(IODINEDataset):\n  num_true_objects = 6\n  num_channels = 3\n  factors = {\n      \"color\": (tf.float32, 3),\n      \"shape\": (tf.uint8, 1),\n      \"scale\": (tf.float32, 1),\n      \"x\": (tf.float32, 1),\n      \"y\": (tf.float32, 1),\n      \"orientation\": (tf.float32, 1),\n  }\n\n  def __init__(\n      self,\n      path,\n      # variant from ['binarized', 'colored_on_grayscale', 'colored_on_colored']\n      dataset_variant=\"colored_on_grayscale\",\n      image_dim=(64, 64),\n      name=\"multi_dsprites\",\n      **kwargs,\n  ):\n    super().__init__(path=path, name=name, image_dim=image_dim, **kwargs)\n    self.dataset_variant = dataset_variant\n    self.dataset = multi_dsprites.dataset(self.path, self.dataset_variant)\n\n\nclass Tetrominoes(IODINEDataset):\n  num_true_objects = 6\n  num_channels = 3\n  factors = {\n      \"color\": (tf.uint8, 3),\n      \"shape\": (tf.uint8, 1),\n      \"position\": (tf.float32, 2),\n  }\n\n  def __init__(self, path, image_dim=(35, 35), name=\"tetrominoes\", **kwargs):\n    super().__init__(path=path, name=name, image_dim=image_dim, **kwargs)\n    self.dataset = tetrominoes.dataset(self.path)\n\n  def preprocess_factors(self, data, sg):\n    pos_x = ensure_3d(data[\"x\"])\n    pos_y = ensure_3d(data[\"y\"])\n    position = tf.concat([pos_x, pos_y], axis=2)\n\n    return {\n        \"color\": sg.guard(ensure_3d(data[\"color\"]), \"B, L, 3\"),\n        \"shape\": sg.guard(ensure_3d(data[\"shape\"]), \"B, L, 1\"),\n        \"position\": sg.guard(ensure_3d(position), \"B, L, 2\"),\n    }\n"
  },
  {
    "path": "iodine/modules/decoder.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Decoders for rendering images.\"\"\"\n# pylint: disable=missing-docstring\nfrom iodine.modules.distributions import MixtureParameters\nimport shapeguard\nimport sonnet as snt\n\n\nclass ComponentDecoder(snt.AbstractModule):\n\n  def __init__(self, pixel_decoder, name=\"component_decoder\"):\n    super().__init__(name=name)\n    self._pixel_decoder = pixel_decoder\n    self._sg = shapeguard.ShapeGuard()\n\n  def set_output_shapes(self, pixel, mask):\n    self._sg.guard(pixel, \"K, H, W, Cp\")\n    self._sg.guard(mask, \"K, H, W, 1\")\n    self._pixel_decoder.set_output_shapes(self._sg[\"H, W, 1 + Cp\"])\n\n  def _build(self, z):\n    self._sg.guard(z, \"B, K, Z\")\n    z_flat = self._sg.reshape(z, \"B*K, Z\")\n    pixel_params = self._pixel_decoder(z_flat).params\n\n    self._sg.guard(pixel_params, \"B*K, H, W, 1 + Cp\")\n    mask_params = pixel_params[..., 0:1]\n    pixel_params = pixel_params[..., 1:]\n\n    output = MixtureParameters(\n        pixel=self._sg.reshape(pixel_params, \"B, K, H, W, Cp\"),\n        mask=self._sg.reshape(mask_params, \"B, K, H, W, 1\"),\n    )\n\n    del self._sg.B\n    return output\n"
  },
  {
    "path": "iodine/modules/distributions.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Collection of sonnet modules that wrap useful distributions.\"\"\"\n# pylint: disable=missing-docstring, g-doc-args, g-short-docstring-punctuation\n# pylint: disable=g-space-before-docstring-summary\n# pylint: disable=g-no-space-after-docstring-summary\nimport collections\nfrom iodine.modules.utils import get_act_func\nfrom iodine.modules.utils import get_distribution\nimport shapeguard\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\nimport tensorflow_probability as tfp\n\n\ntfd = tfp.distributions\n\nFlatParameters = collections.namedtuple(\"ParameterOut\", [\"params\"])\nMixtureParameters = collections.namedtuple(\"MixtureOut\", [\"pixel\", \"mask\"])\n\n\nclass DistributionModule(snt.AbstractModule):\n  \"\"\"Distribution Base class supporting shape inference & default priors.\"\"\"\n\n  def __init__(self, name=\"distribution\"):\n    super().__init__(name=name)\n    self._output_shape = None\n\n  def set_output_shape(self, shape):\n    self._output_shape = shape\n\n  @property\n  def output_shape(self):\n    return self._output_shape\n\n  @property\n  def input_shapes(self):\n    raise NotImplementedError()\n\n  def get_default_prior(self, batch_dim=(1,)):\n    return self(\n        tf.zeros(list(batch_dim) + self.input_shapes.params, dtype=tf.float32))\n\n\nclass BernoulliOutput(DistributionModule):\n\n  def __init__(self, name=\"bernoulli_output\"):\n    super().__init__(name=name)\n\n  @property\n  def input_shapes(self):\n    return FlatParameters(self.output_shape)\n\n  def _build(self, params):\n    return tfd.Independent(\n        tfd.Bernoulli(logits=params, dtype=tf.float32),\n        reinterpreted_batch_ndims=1)\n\n\nclass LocScaleDistribution(DistributionModule):\n  \"\"\"Generic IID location / scale distribution.\n\n    Input parameters are concatenation of location and scale (2*Z,)\n\n    Args:\n      dist: Distribution or str Kind of distribution used. Supports Normal,\n        Logistic, Laplace, and StudentT distributions.\n      dist_kwargs: dict custom keyword arguments for the distribution\n      scale_act: function or str or None activation function to be applied to\n        the scale input\n      scale: str\n        different modes for computing the scale:\n          * stddev: scale is computed as scale_act(s)\n          * var: scale is computed as sqrt(scale_act(s))\n          * prec: scale is computed as 1./scale_act(s)\n          * fixed: scale is a global variable (same for all pixels) if\n            scale_val==-1. then it is a trainable variable initialized to 0.1\n            else it is fixed to scale_val (input shape is only (Z,) in this\n            case)\n      scale_val: float determines the scale value (only used if scale=='fixed').\n      loc_act: function or str or None activation function to be applied to the\n        location input. Supports optional activation functions for scale and\n        location.\n    Supports different \"modes\" for scaling:\n      * stddev:\n  \"\"\"\n\n  def __init__(\n      self,\n      dist=tfd.Normal,\n      dist_kwargs=None,\n      scale_act=tf.exp,\n      scale=\"stddev\",\n      scale_val=1.0,\n      loc_act=None,\n      name=\"loc_scale_dist\",\n  ):\n    super().__init__(name=name)\n    self._scale_act = get_act_func(scale_act)\n    self._loc_act = get_act_func(loc_act)\n    # supports Normal, Logstic, Laplace, StudentT\n    self._dist = get_distribution(dist)\n    self._dist_kwargs = dist_kwargs or {}\n\n    assert scale in [\"stddev\", \"var\", \"prec\", \"fixed\"], scale\n    self._scale = scale\n    self._scale_val = scale_val\n\n  @property\n  def input_shapes(self):\n    if self._scale == \"fixed\":\n      param_shape = self.output_shape\n    else:\n      param_shape = self.output_shape[:-1] + [self.output_shape[-1] * 2]\n    return FlatParameters(param_shape)\n\n  def _build(self, params):\n    if self._scale == \"fixed\":\n      loc = params\n      scale = None  # set later\n    else:\n      n_channels = params.get_shape().as_list()[-1]\n      assert n_channels % 2 == 0\n      assert n_channels // 2 == self.output_shape[-1]\n      loc = params[..., :n_channels // 2]\n      scale = params[..., n_channels // 2:]\n\n    # apply activation functions\n    if self._scale != \"fixed\":\n      scale = self._scale_act(scale)\n    loc = self._loc_act(loc)\n\n    # apply the correct parametrization\n    if self._scale == \"var\":\n      scale = tf.sqrt(scale)\n    elif self._scale == \"prec\":\n      scale = tf.reciprocal(scale)\n    elif self._scale == \"fixed\":\n      if self._scale_val == -1.0:\n        scale_val = tf.get_variable(\n            \"scale\", initializer=tf.constant(0.1, dtype=tf.float32))\n      else:\n        scale_val = self._scale_val\n      scale = tf.ones_like(loc) * scale_val\n    # else 'stddev'\n\n    dist = self._dist(loc=loc, scale=scale, **self._dist_kwargs)\n\n    return tfd.Independent(dist, reinterpreted_batch_ndims=1)\n\n\nclass MaskedMixture(DistributionModule):\n\n  def __init__(\n      self,\n      num_components,\n      component_dist,\n      mask_activation=None,\n      name=\"masked_mixture\",\n  ):\n    \"\"\"\n        Spatial Mixture Model composed of a categorical masking distribution and\n        a custom pixel-wise component distribution (usually logistic or\n        gaussian).\n\n        Args:\n          num_components: int Number of mixture components >= 2\n          component_dist: the distribution to use for the individual components\n          mask_activation: str or function or None activation function that\n            should be applied to the mask before the softmax.\n          name: str\n    \"\"\"\n\n    super().__init__(name=name)\n    self._num_components = num_components\n    self._dist = component_dist\n    self._mask_activation = get_act_func(mask_activation)\n\n  def set_output_shape(self, shape):\n    super().set_output_shape(shape)\n    self._dist.set_output_shape(shape)\n\n  def _build(self, pixel, mask):\n    sg = shapeguard.ShapeGuard()\n    # MASKING\n    sg.guard(mask, \"B, K, H, W, 1\")\n    mask = tf.transpose(mask, perm=[0, 2, 3, 4, 1])\n    mask = sg.reshape(mask, \"B, H, W, K\")\n    mask = self._mask_activation(mask)\n    mask = mask[:, tf.newaxis]  # add K=1 axis since K is removed by mixture\n    mix_dist = tfd.Categorical(logits=mask)\n\n    # COMPONENTS\n    sg.guard(pixel, \"B, K, H, W, Cp\")\n    params = tf.transpose(pixel, perm=[0, 2, 3, 1, 4])\n    params = params[:, tf.newaxis]  # add K=1 axis since K is removed by mixture\n    dist = self._dist(params)\n    return tfd.MixtureSameFamily(\n        mixture_distribution=mix_dist, components_distribution=dist)\n\n  @property\n  def input_shapes(self):\n    pixel = [self._num_components] + self._dist.input_shapes.params\n    mask = pixel[:-1] + [1]\n    return MixtureParameters(pixel, mask)\n\n  def get_default_prior(self, batch_dim=(1,)):\n    pixel = tf.zeros(\n        list(batch_dim) + self.input_shapes.pixel, dtype=tf.float32)\n    mask = tf.zeros(list(batch_dim) + self.input_shapes.mask, dtype=tf.float32)\n    return self(pixel, mask)\n"
  },
  {
    "path": "iodine/modules/factor_eval.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Factor Evaluation Module.\"\"\"\n# pylint: disable=unused-variable\n\nimport collections\nimport functools\nfrom iodine.modules import utils\nimport shapeguard\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\nFactor = collections.namedtuple(\"Factor\", [\"name\", \"size\", \"type\"])\n\n\nclass FactorRegressor(snt.AbstractModule):\n  \"\"\"Assess representations by learning a linear mapping to latents.\"\"\"\n\n  def __init__(self, mapping=None, name=\"repres_content\"):\n    super().__init__(name=name)\n    if mapping is None:\n      self._mapping = [\n          Factor(\"color\", 3, \"scalar\"),\n          Factor(\"shape\", 4, \"categorical\"),\n          Factor(\"scale\", 1, \"scalar\"),\n          Factor(\"x\", 1, \"scalar\"),\n          Factor(\"y\", 1, \"scalar\"),\n          Factor(\"orientation\", 2, \"angle\"),\n      ]\n    else:\n      self._mapping = [Factor(*m) for m in mapping]\n\n  def _build(self, z, latent, visibility, pred_mask, true_mask):\n    sg = shapeguard.ShapeGuard()\n    z = sg.guard(z, \"B, K, Z\")\n    pred_mask = sg.guard(pred_mask, \"B, K, H, W, 1\")\n    true_mask = sg.guard(true_mask, \"B, L, H, W, 1\")\n\n    visibility = sg.guard(visibility, \"B, L\")\n    num_visible_obj = tf.reduce_sum(visibility)\n\n    # Map z to predictions for all latents\n    sg.M = sum([m.size for m in self._mapping])\n    self.predictor = snt.Linear(sg.M, name=\"predict_latents\")\n    z_flat = sg.reshape(z, \"B*K, Z\")\n    all_preds = sg.guard(self.predictor(z_flat), \"B*K, M\")\n    all_preds = sg.reshape(all_preds, \"B, 1, K, M\")\n    all_preds = tf.tile(all_preds, sg[\"1, L, 1, 1\"])\n\n    # prepare latents\n    latents = {}\n    mean_var_tot = {}\n    for m in self._mapping:\n      with tf.name_scope(m.name):\n        # preprocess, reshape, and tile\n        lat_preprocess = self.get_preprocessing(m)\n        lat = sg.guard(\n            lat_preprocess(latent[m.name]), \"B, L, {}\".format(m.size))\n        # compute mean over latent by training a variable using mse\n        if m.type in {\"scalar\", \"angle\"}:\n          mvt = utils.OnlineMeanVarEstimator(\n              axis=[0, 1], ddof=1, name=\"{}_mean_var\".format(m.name))\n          mean_var_tot[m.name] = mvt(lat, visibility[:, :, tf.newaxis])\n\n        lat = tf.reshape(lat, sg[\"B, L, 1\"] + [-1])\n        lat = tf.tile(lat, sg[\"1, 1, K, 1\"])\n        latents[m.name] = lat\n\n    # prepare predictions\n    idx = 0\n    predictions = {}\n    for m in self._mapping:\n      with tf.name_scope(m.name):\n        assert m.name in latent, \"{} not in {}\".format(m.name, latent.keys())\n        pred = all_preds[..., idx:idx + m.size]\n        predictions[m.name] = sg.guard(pred, \"B, L, K, {}\".format(m.size))\n        idx += m.size\n\n    # compute error\n    total_pairwise_errors = None\n    for m in self._mapping:\n      with tf.name_scope(m.name):\n        error_fn = self.get_error_func(m)\n        sg.guard(latents[m.name], \"B, L, K, {}\".format(m.size))\n        sg.guard(predictions[m.name], \"B, L, K, {}\".format(m.size))\n        err = error_fn(latents[m.name], predictions[m.name])\n        sg.guard(err, \"B, L, K\")\n        if total_pairwise_errors is None:\n          total_pairwise_errors = err\n        else:\n          total_pairwise_errors += err\n\n    # determine best assignment by comparing masks\n    obj_mask = true_mask[:, :, tf.newaxis]\n    pred_mask = pred_mask[:, tf.newaxis]\n    pairwise_overlap = tf.reduce_sum(obj_mask * pred_mask, axis=[3, 4, 5])\n    best_match = sg.guard(tf.argmax(pairwise_overlap, axis=2), \"B, L\")\n    assignment = tf.one_hot(best_match, sg.K)\n    assignment *= visibility[:, :, tf.newaxis]  # Mask non-visible objects\n\n    # total error\n    total_error = (\n        tf.reduce_sum(assignment * total_pairwise_errors) / num_visible_obj)\n\n    # compute scalars\n    monitored_scalars = {}\n    for m in self._mapping:\n      with tf.name_scope(m.name):\n        metric = self.get_metric(m)\n        scalar = metric(\n            latents[m.name],\n            predictions[m.name],\n            assignment[:, :, :, tf.newaxis],\n            mean_var_tot.get(m.name),\n            num_visible_obj,\n        )\n        monitored_scalars[m.name] = scalar\n    return total_error, monitored_scalars, mean_var_tot, predictions, assignment\n\n  @snt.reuse_variables\n  def predict(self, z):\n    sg = shapeguard.ShapeGuard()\n    z = sg.guard(z, \"B, Z\")\n    all_preds = sg.guard(self.predictor(z), \"B, M\")\n\n    idx = 0\n    predictions = {}\n    for m in self._mapping:\n      with tf.name_scope(m.name):\n        pred = all_preds[:, idx:idx + m.size]\n        predictions[m.name] = sg.guard(pred, \"B, {}\".format(m.size))\n        idx += m.size\n    return predictions\n\n  @staticmethod\n  def get_error_func(factor):\n    if factor.type in {\"scalar\", \"angle\"}:\n      return sse\n    elif factor.type == \"categorical\":\n      return functools.partial(\n          tf.losses.softmax_cross_entropy, reduction=\"none\")\n    else:\n      raise KeyError(factor.type)\n\n  @staticmethod\n  def get_metric(factor):\n    if factor.type in {\"scalar\", \"angle\"}:\n      return r2\n    elif factor.type == \"categorical\":\n      return accuracy\n    else:\n      raise KeyError(factor.type)\n\n  @staticmethod\n  def one_hot(f, nr_categories):\n    return tf.one_hot(tf.cast(f[..., 0], tf.int32), depth=nr_categories)\n\n  @staticmethod\n  def angle_to_vector(theta):\n    return tf.concat([tf.math.cos(theta), tf.math.sin(theta)], axis=-1)\n\n  @staticmethod\n  def get_preprocessing(factor):\n    if factor.type == \"scalar\":\n      return tf.identity\n    elif factor.type == \"categorical\":\n      return functools.partial(\n          FactorRegressor.one_hot, nr_categories=factor.size)\n    elif factor.type == \"angle\":\n      return FactorRegressor.angle_to_vector\n    else:\n      raise KeyError(factor.type)\n\n\ndef sse(true, pred):\n  # run our own sum squared error because we want to reduce sum over last dim\n  return tf.reduce_sum(tf.square(true - pred), axis=-1)\n\n\ndef accuracy(labels, logits, assignment, mean_var_tot, num_vis):\n  del mean_var_tot  # unused\n  pred = tf.argmax(logits, axis=-1, output_type=tf.int32)\n  labels = tf.argmax(labels, axis=-1, output_type=tf.int32)\n  correct = tf.cast(tf.equal(labels, pred), tf.float32)\n  return tf.reduce_sum(correct * assignment[..., 0]) / num_vis\n\n\ndef r2(labels, pred, assignment, mean_var_tot, num_vis):\n  del num_vis  # unused\n  mean, var, _ = mean_var_tot\n  # labels, pred: (B, L, K, n)\n  ss_res = tf.reduce_sum(tf.square(labels - pred) * assignment, axis=2)\n  ss_tot = var[tf.newaxis, tf.newaxis, :]  # (1, 1, n)\n  return tf.reduce_mean(1.0 - ss_res / ss_tot)\n"
  },
  {
    "path": "iodine/modules/iodine.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Stochastic Variational inference Auto-Encoder.\"\"\"\n# pylint: disable=unused-variable, g-bad-todo\n\nimport collections\nfrom iodine.modules import utils\nfrom multi_object_datasets.segmentation_metrics import adjusted_rand_index\nimport numpy as np\nimport shapeguard\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\nimport tensorflow_probability as tfp\n\n\ntfd = tfp.distributions\n\nlogging = tf.logging\n\nDEFAULT_INPUTS = (\n    \"image\",\n    \"zp\",\n    \"mask\",\n    \"components\",\n    \"dmask\",\n    \"dzp\",\n    \"dcomponents\",\n    \"posterior\",\n    \"log_prob\",\n    \"pred_mask\",\n    \"capacity\",\n    \"flat_capacity\",\n    \"coordinates\",\n    \"counterfactual\",\n)\n\nDEFAULT_PREPROCESSING = [\n    \"dcomponents\", \"dmask\", \"dzp\", \"log_prob\", \"counterfactual\"\n]\n\nDEFAULT_STOP_GRADIENT = (\"dzp\", \"dmask\", \"dcomponents\", \"log_prob\",\n                         \"counterfactual\")\n\n\nclass IODINE(snt.AbstractModule):\n  \"\"\"Iterative Amortized Variational Autoencoder.\n\n    Args:\n        decoder (decoders.ComponentDecoder): The decoder.\n        refinement_core (refinement.RefinementCore): The recurrent (refinement)\n          encoder.\n        latent_dist (distributions.Distribution): The distribution of the latent\n          z variables.\n        output_dist (distributions.MaskedMixture): The pixel-wise output\n          distribution (a spatial mixture).\n        n_z (int): Dimensionality of the per-object latents z_k.\n        num_components (int): Number of available object slots (K).\n        num_iters (int): Number of refinement iterations.\n        sequential (bool): Whether the input data is sequential.\n        factor_evaluator (factor_eval.FactorRegressor): The factor evaluation\n          model that is trained to predict the true factors from the inferred\n          latents.\n        stop_gradients (List[str]): For which refinement inputs to stop\n          gradients from backpropagating through the iterations. (see inputs for\n          valid values)\n            Default is: [\"dcomponents\", \"dmask\", \"dzp\", \"log_prob\",\n              \"counterfactual\"]\n        iter_loss_weight (\"linspace\" | float | List[float]): How to weigh the\n          loss terms for each timestep.\n            Can be:\n              \"linspace\":  Linearly increasing weights from 0 to 1.0.\n              float:       A fixed value for all steps.\n              List[float]: Manually specify all weight.\n        inputs (List[str]): list of inputs to use for the refinement network.\n            Can include the following (default is to use all): [\"image\", \"zp\",\n              \"mask\", \"components\", \"dmask\", \"dzp\", \"dcomponents\", \"posterior\",\n              \"log_prob\", \"pred_mask\", \"capacity\", \"flat_capacity\",\n              \"coordinates\", \"counterfactual\"]\n        preprocess (List[str]): Specifies the subset of inputs that be\n          preprocessed with layernorm.\n            Default is: [\"dcomponents\", \"dmask\", \"dzp\", \"log_prob\",\n              \"counterfactual\"]\n        coord_type (str): Type of coordinate channels to append to the\n          refinement inputs. Can be \"linear\" (default) or \"cos\".\n        coord_freqs (int): If using cos based coordinate channels, then this\n          specifies the number of frequencies used.\n        name (str): Name of the module (within the tensorflow graph).\n  \"\"\"\n\n  def __init__(\n      self,\n      decoder,\n      refinement_core,\n      latent_dist,\n      output_dist,\n      n_z,\n      num_components,\n      num_iters,\n      sequential=False,\n      factor_evaluator=None,\n      stop_gradients=DEFAULT_STOP_GRADIENT,\n      iter_loss_weight=\"linspace\",\n      inputs=DEFAULT_INPUTS,\n      preprocess=None,\n      coord_type=\"linear\",\n      coord_freqs=3,\n      name=\"iodine\",\n  ):\n    super().__init__(name=name)\n    self._sg = shapeguard.ShapeGuard(dims={\"K\": num_components})\n    self.decoder = decoder\n    self.refinement_core = refinement_core\n\n    self.latent_dist = latent_dist\n    self.output_dist = output_dist\n\n    self.n_z = n_z\n    self.num_components = num_components\n    self.num_iters = num_iters\n    self.sequential = sequential\n    self.iter_loss_weights = self._parse_iter_loss_weights(iter_loss_weight)\n\n    self.factor_evaluator = factor_evaluator\n\n    self.stop_gradients = stop_gradients\n    self.inputs = inputs\n    self.preprocess = DEFAULT_PREPROCESSING if preprocess is None else preprocess\n    self.coord_type = coord_type\n    self.coord_freqs = coord_freqs\n\n    with self._enter_variable_scope():\n      self.latent_dist.set_output_shape([self.n_z])\n      logging.info(\"VAE: z shape: %s\", [self.n_z])\n      with tf.name_scope(\"prior\"):\n        self.prior = self.latent_dist.get_default_prior((self.num_components,))\n      self._sg.guard(self.prior, \"K, Z\")\n      with tf.variable_scope(\"preprocess\"):\n        self._layernorms = {\n            name: snt.LayerNorm(name=\"layer_norm_\" + name)\n            for name in self.preprocess\n        }\n\n  def _build(self, data):\n    data[\"image\"] = data[\"image\"][:, :self.num_iters + 1]\n    if \"mask\" in data:\n      data[\"mask\"] = data[\"mask\"][:, :self.num_iters + 1]\n    x = self._sg.guard(data[\"image\"], \"B, T, H, W, C\")\n    self._propagate_shape_info(x.get_shape().as_list())\n\n    # run iterative encoder\n    iterations = self.encode(x)\n    z_dist = self._sg.guard(iterations[\"z_dist\"][-1], \"B, K, Z\")\n    z = self._sg.guard(iterations[\"z\"][-1], \"B, K, Z\")\n\n    # decode\n    x_params, x_dist = self.decode(z)\n    iterations[\"x_dist\"].append(self._sg.guard(x_dist, \"B, 1, H, W, C\"))\n\n    # compute loss\n    kl = self._sg.guard(self._raw_kl(z_dist), \"B, K\")\n    img = self._get_image_for_iter(x, self.num_iters)\n    re = self._sg.guard(self._reconstruction_error(x_dist, img), \"B\")\n    iterations[\"kl\"].append(kl)\n    iterations[\"re\"].append(re)\n\n    iterations[\"recons_loss\"] = [tf.reduce_mean(re) for re in iterations[\"re\"]]\n\n    total_rec_loss = sum([\n        w * re\n        for w, re in zip(self.iter_loss_weights, iterations[\"recons_loss\"])\n    ])\n    total_kl_loss = sum([\n        w * tf.reduce_mean(tf.reduce_sum(kl, axis=1))\n        for w, kl in zip(self.iter_loss_weights, iterations[\"kl\"])\n    ])\n\n    total_loss = total_rec_loss + total_kl_loss\n\n    scalars = {\n        \"loss/kl\":\n            sum([\n                tf.reduce_mean(tf.reduce_sum(kl, axis=1))\n                for kl in iterations[\"kl\"]\n            ]),\n        \"loss/recons\":\n            total_rec_loss,\n    }\n\n    if self.factor_evaluator:\n      pred_mask = self._sg.guard(x_dist.mixture_distribution.probs,\n                                 \"B, 1, H, W, K\")\n      pred_mask = tf.transpose(pred_mask, [0, 4, 2, 3, 1])\n      mask_true = self._sg.guard(data[\"mask\"], \"B, T, L, H, W, 1\")\n      mask_true = self._get_image_for_iter(mask_true, self.num_iters)\n      mask_true = mask_true[:, 0]\n\n      factor_loss, factor_scalars, _, _, _ = self.factor_evaluator(\n          tf.stop_gradient(z),\n          data[\"factors\"],\n          data[\"visibility\"],\n          tf.stop_gradient(pred_mask),\n          mask_true,\n      )\n      total_loss += factor_loss\n      scalars[\"factor/loss\"] = factor_loss\n      scalars.update({\"factor/\" + k: v for k, v in factor_scalars.items()})\n    scalars[\"loss/total\"] = total_loss\n\n    scalars.update(self._get_monitored_scalars(x_dist, data))\n    logging.info(self._sg.dims)\n    return total_loss, scalars, iterations\n\n  @snt.reuse_variables\n  def encode(self, images):\n    sg = self._sg\n    sg.guard(images, \"B, T, H, W, C\")\n    zp, z_dist, z = self._get_initial_z()\n\n    iterations = {\n        \"z\": [z],\n        \"zp\": [zp],\n        \"z_dist\": [z_dist],\n        \"x_dist\": [],\n        \"inputs\": [],\n        \"kl\": [],\n        \"re\": [],\n    }\n    state = self.refinement_core.initial_state(sg[\"B*K\"][0])\n    for t in range(self.num_iters):\n      img = sg.guard(self._get_image_for_iter(images, t), \"B, 1, H, W, C\")\n      x_params, x_dist = self.decode(z)\n\n      # compute loss\n      kl = self._sg.guard(self._raw_kl(z_dist), \"B, K\")\n      re = self._sg.guard(self._reconstruction_error(x_dist, img), \"B\")\n      loss = tf.reduce_mean(re) + tf.reduce_mean(tf.reduce_sum(kl, axis=1))\n\n      inputs = self._get_inputs_for(x_params, x_dist, img, z_dist, zp, loss)\n      zp, state = self.refinement_core(inputs, state)\n      sg.guard(zp, \"B, K, Zp\")\n\n      z_dist = sg.guard(self.latent_dist(zp), \"B, K, Z\")\n      z = z_dist.sample()\n\n      # append local variables to iteration collections\n      for v, name in zip(\n          [z, zp, z_dist, x_dist, inputs, kl, re],\n          [\"z\", \"zp\", \"z_dist\", \"x_dist\", \"inputs\", \"kl\", \"re\"],\n      ):\n        iterations[name].append(v)\n\n    return iterations\n\n  @snt.reuse_variables\n  def decode(self, z):\n    sg = shapeguard.ShapeGuard()\n    sg.guard(z, \"B, K, Z\")\n    # legacy\n    z = tf.concat([z, 5.0 * tf.ones(sg[\"B, K, 1\"], dtype=tf.float32)], axis=2)\n    params = self.decoder(z)\n    out_dist = self.output_dist(*params)\n    return params, out_dist\n\n  @snt.reuse_variables\n  def eval(self, data):\n    total_loss, scalars, iterations = self._build(data)\n    sg = shapeguard.ShapeGuard()\n\n    def get_components(dist):\n      return tf.transpose(dist.components_distribution.mean()[:, 0, :, :, :, :],\n                          [0, 3, 1, 2, 4])\n\n    def get_mask(dist):\n      return tf.transpose(dist.mixture_distribution.probs[:, :, :, :, :],\n                          [0, 4, 2, 3, 1])\n\n    def get_mask_logits(dist):\n      return tf.transpose(dist.mixture_distribution.logits[:, :, :, :, :],\n                          [0, 4, 2, 3, 1])\n\n    def stack_iters(list_of_variables, pad_zero=False):\n      if pad_zero:\n        list_of_variables.insert(0, tf.zeros_like(list_of_variables[0]))\n      return tf.stack(list_of_variables, axis=1)\n\n    # data\n    image = sg.guard(data[\"image\"], \"B, 1, H, W, C\")\n    true_mask = sg.guard(data[\"mask\"], \"B, 1, L, H, W, 1\")\n    visibility = sg.guard(data[\"visibility\"], \"B, L\")\n    factors = data[\"factors\"]\n\n    # inputs\n    inputs_flat = {\n        k: stack_iters([inp[\"flat\"][k] for inp in iterations[\"inputs\"]],\n                       pad_zero=True)\n        for k in iterations[\"inputs\"][0][\"flat\"].keys()\n    }\n    inputs_spatial = {\n        k: stack_iters([inp[\"spatial\"][k] for inp in iterations[\"inputs\"]],\n                       pad_zero=True)\n        for k in iterations[\"inputs\"][0][\"spatial\"].keys()\n    }\n    # latent\n    z = sg.guard(stack_iters(iterations[\"z\"]), \"B, T, K, Z\")\n    z_mean = stack_iters([zd.mean() for zd in iterations[\"z_dist\"]])\n    z_std = stack_iters([zd.stddev() for zd in iterations[\"z_dist\"]])\n    # outputs\n    recons = stack_iters([xd.mean() for xd in iterations[\"x_dist\"]])\n    pred_mask = stack_iters([get_mask(xd) for xd in iterations[\"x_dist\"]])\n    pred_mask_logits = stack_iters(\n        [get_mask_logits(xd) for xd in iterations[\"x_dist\"]])\n    components = stack_iters(\n        [get_components(xd) for xd in iterations[\"x_dist\"]])\n\n    # metrics\n    tm = tf.transpose(true_mask[..., 0], [0, 1, 3, 4, 2])\n    tm = tf.reshape(tf.tile(tm, sg[\"1, T, 1, 1, 1\"]), sg[\"B * T, H * W, L\"])\n    pm = tf.transpose(pred_mask[..., 0], [0, 1, 3, 4, 2])\n    pm = tf.reshape(pm, sg[\"B * T, H * W, K\"])\n    ari = tf.reshape(adjusted_rand_index(tm, pm), sg[\"B, T\"])\n    ari_nobg = tf.reshape(adjusted_rand_index(tm[..., 1:], pm), sg[\"B, T\"])\n\n    mse = tf.reduce_mean(tf.square(recons - image[:, None]), axis=[2, 3, 4, 5])\n\n    # losses\n    loss_recons = stack_iters(iterations[\"re\"])\n    kl = stack_iters(iterations[\"kl\"])\n\n    info = {\n        \"data\": {\n            \"image\": sg.guard(image, \"B, 1, H, W, C\"),\n            \"true_mask\": sg.guard(true_mask, \"B, 1, L, H, W, 1\"),\n            \"visibility\": sg.guard(visibility, \"B, L\"),\n            \"factors\": factors,\n        },\n        \"inputs\": {\n            \"flat\": inputs_flat,\n            \"spatial\": inputs_spatial\n        },\n        \"latent\": {\n            \"z\": sg.guard(z, \"B, T, K, Z\"),\n            \"z_mean\": sg.guard(z_mean, \"B, T, K, Z\"),\n            \"z_std\": sg.guard(z_std, \"B, T, K, Z\"),\n        },\n        \"outputs\": {\n            \"recons\": sg.guard(recons, \"B, T, 1, H, W, C\"),\n            \"pred_mask\": sg.guard(pred_mask, \"B, T, K, H, W, 1\"),\n            \"pred_mask_logits\": sg.guard(pred_mask_logits, \"B, T, K, H, W, 1\"),\n            \"components\": sg.guard(components, \"B, T, K, H, W, C\"),\n        },\n        \"losses\": {\n            \"total\": total_loss,\n            \"recons\": sg.guard(loss_recons, \"B, T\"),\n            \"kl\": sg.guard(kl, \"B, T, K\"),\n        },\n        \"metrics\": {\n            \"ari\": ari,\n            \"ari_nobg\": ari_nobg,\n            \"mse\": mse\n        },\n    }\n\n    if self.factor_evaluator:\n      # factor evaluation information\n      factor_info = {\n          \"loss\": [],\n          \"metrics\": collections.defaultdict(list),\n          \"predictions\": collections.defaultdict(list),\n          \"assignment\": [],\n      }\n      for t in range(z.get_shape().as_list()[1]):\n        floss, fscalars, _, fpred, fass = self.factor_evaluator(\n            z[:, t], factors, visibility, pred_mask[:, t], true_mask[:, 0])\n        factor_info[\"loss\"].append(floss)\n        factor_info[\"assignment\"].append(fass)\n        for k in fpred:\n          factor_info[\"predictions\"][k].append(\n              tf.reduce_sum(fpred[k] * fass[..., None], axis=2))\n          factor_info[\"metrics\"][k].append(fscalars[k])\n\n      info[\"losses\"][\"factor\"] = sg.guard(tf.stack(factor_info[\"loss\"]), \"T\")\n      info[\"factor_regressor\"] = {\n          \"assignment\":\n              sg.guard(stack_iters(factor_info[\"assignment\"]), \"B, T, L, K\"),\n          \"metrics\": {\n              k: tf.stack(factor_info[\"metrics\"][k], axis=0)\n              for k in factor_info[\"metrics\"]\n          },\n          \"predictions\": {\n              k: stack_iters(factor_info[\"predictions\"][k])\n              for k in factor_info[\"predictions\"]\n          },\n      }\n\n    return info\n\n  @snt.reuse_variables\n  def get_sample_images(self, nr_samples=16):\n    with tf.name_scope(\"prior_samples\"):\n      prior_z = self.prior.sample(nr_samples)\n      _, prior_out = self.decode(prior_z)\n      prior_out = tf.clip_by_value(prior_out.mean(), 0.0, 1.0)\n    return utils.images_to_grid(prior_out[:, 0])[tf.newaxis]\n\n  @snt.reuse_variables\n  def get_overview_images(self, data, nr_images=4, mask_components=False):\n    x = data[\"image\"][:nr_images, :self.num_iters + 1]\n    old_b, self._sg.B = self._sg.B, x.get_shape().as_list()[0]\n\n    iterations = self.encode(x)\n    z = iterations[\"z\"][-1]\n    _, x_dist = self.decode(z)\n    self._sg.B = old_b\n    t = min(self.num_iters, x.get_shape().as_list()[1]) - 1\n    # iterations view\n    recons = tf.stack([x_dist.mean() for x_dist in iterations[\"x_dist\"]],\n                      axis=1)\n    masks = tf.stack(\n        [\n            tf.transpose(x_dist.mixture_distribution.probs, [0, 4, 2, 3, 1])\n            for x_dist in iterations[\"x_dist\"]\n        ],\n        axis=1,\n    )\n\n    return {\n        \"overview\":\n            utils.get_overview_image(\n                x[:, t:t + 1], x_dist, mask_components=mask_components),\n        \"sequence\":\n            utils.construct_iterations_image(x[:, :t + 1, tf.newaxis], recons,\n                                             masks),\n        \"samples\":\n            self.get_sample_images(),\n    }\n\n  def _get_initial_z(self):\n    # Initial z distribution\n    zp_init = tf.get_variable(\n        \"initial_sample_distribution\",\n        shape=self.latent_dist.input_shapes.params,\n        dtype=tf.float32,\n    )\n    zp = tf.tile(zp_init[tf.newaxis, tf.newaxis], self._sg[\"B, K, 1\"])\n\n    z_dist = self.latent_dist(zp)\n    z = z_dist.sample()\n\n    self._sg.guard(zp, \"B, K, Zp\")\n    self._sg.guard(z_dist, \"B, K, Z\")\n    self._sg.guard(z, \"B, K, Z\")\n\n    return zp, z_dist, z\n\n  def _parse_iter_loss_weights(self, iter_loss_weight):\n    if iter_loss_weight == \"linspace\":\n      iter_weights = np.linspace(0.0, 1.0, self.num_iters + 1).tolist()\n    elif isinstance(iter_loss_weight, (float, int)):\n      iter_weights = [float(iter_loss_weight)] * (self.num_iters + 1)\n    elif isinstance(iter_loss_weight, (tuple, list)):\n      iter_weights = [float(w) for w in iter_loss_weight]\n    else:\n      raise ValueError(\"Unknown iter_loss_weight type {}.\".format(\n          repr(iter_loss_weight)))\n    assert len(iter_weights) == (self.num_iters + 1), iter_loss_weight\n    return iter_weights\n\n  def _propagate_shape_info(self, image_shape):\n    image_shape = image_shape[-3:]  # ignore batch dims\n    logging.info(\"VAE: image shape: %s\", image_shape)\n    z_param_shape = self._sg.guard(self.latent_dist.input_shapes.params, \"Zp\")\n    logging.info(\"VAE: z parameter shape: %s\", z_param_shape)\n    self.output_dist.set_output_shape(image_shape)\n    out_param_shapes = self.output_dist.input_shapes\n    logging.info(\"VAE: output parameter shapes: %s\", out_param_shapes)\n    self.decoder.set_output_shapes(*out_param_shapes)\n\n  def _get_image_for_iter(self, images, t):\n    \"\"\"Return current frame or first image.\"\"\"\n    if self.sequential:\n      return images[:, t:t + 1]\n    else:\n      return images[:, :1]\n\n  @staticmethod\n  def _get_mask_posterior(out_dist, img):\n    p_comp = out_dist.components_distribution.prob(img[..., tf.newaxis, :])\n    posterior = p_comp / (tf.reduce_sum(p_comp, axis=-1, keepdims=True) + 1e-6)\n    return tf.transpose(posterior, [0, 4, 2, 3, 1])\n\n  def _get_inputs_for(self, out_params, out_dist, img, z_dist, zp, loss):\n    sg = self._sg\n    # gradients of loss wrt z, components and mask\n    dzp, dxp, dmp = tf.gradients(loss, [zp, out_params.pixel, out_params.mask])\n\n    log_prob = sg.guard(\n        out_dist.log_prob(img)[..., tf.newaxis], \"B, 1, H, W, 1\")\n\n    counterfactual_log_probs = []\n    for k in range(0, self.num_components):\n      mask = tf.concat([out_params.mask[:, :k], out_params.mask[:, k + 1:]],\n                       axis=1)\n      pixel = tf.concat([out_params.pixel[:, :k], out_params.pixel[:, k + 1:]],\n                        axis=1)\n      out_dist_k = self.output_dist(pixel, mask)\n      log_prob_k = out_dist_k.log_prob(img)[..., tf.newaxis]\n      counterfactual_log_probs.append(log_prob_k)\n    counterfactual = log_prob - tf.concat(counterfactual_log_probs, axis=1)\n\n    pred_mask = tf.transpose(out_dist.mixture_distribution.probs,\n                             [0, 4, 2, 3, 1])\n\n    potential_inputs = {\n        # spatial\n        \"image\":\n            sg.guard(img, \"B, 1, H, W, C\"),\n        \"log_prob\":\n            sg.guard(log_prob, \"B, 1, H, W, 1\"),\n        \"mask\":\n            sg.guard(out_params.mask, \"B, K, H, W, 1\"),\n        \"pred_mask\":\n            sg.guard(pred_mask, \"B, K, H, W, 1\"),\n        \"components\":\n            sg.guard(out_params.pixel, \"B, K, H, W, Cp\"),\n        \"dmask\":\n            sg.guard(dmp, \"B, K, H, W, Mp\"),\n        \"dcomponents\":\n            sg.guard(dxp, \"B, K, H, W, Cp\"),\n        \"posterior\":\n            sg.guard(self._get_mask_posterior(out_dist, img), \"B, K, H, W, 1\"),\n        \"capacity\":\n            0.5 *\n            tf.ones(sg[\"B, K, H, W, 1\"], dtype=tf.float32),  # TODO: legacy\n        \"coordinates\":\n            self._get_coord_channels(),\n        \"counterfactual\":\n            self._sg.guard(counterfactual, \"B, K, H, W, 1\"),\n        # flat\n        \"zp\":\n            sg.guard(zp, \"B, K, Zp\"),\n        \"dzp\":\n            sg.guard(dzp, \"B, K, Zp\"),\n        \"flat_capacity\":\n            0.5 * tf.ones(sg[\"B, K, 1\"], dtype=tf.float32),  # TODO: legacy\n    }\n\n    # collect used inputs, stop gradients and preprocess where needed\n    final_inputs = {\"spatial\": {}, \"flat\": {}}\n    for k, v in potential_inputs.items():\n      # skip unused inputs\n      if k not in self.inputs:\n        continue\n      # stop gradients\n      if k in self.stop_gradients:\n        v = tf.stop_gradient(v)\n      # preprocess\n      v = self._apply_preprocessing(k, v)\n      # sort into flat / spatial according to their shape\n      structure = \"flat\" if len(v.get_shape().as_list()) == 3 else \"spatial\"\n      final_inputs[structure][k] = v\n\n    return final_inputs\n\n  def _apply_preprocessing(self, name, val):\n    if name in self.preprocess:\n      if self._sg.matches(val, \"B, K, _z\"):\n        flat_val = tf.reshape(val, self._sg[\"B*K\"] + [-1])\n      elif self._sg.matches(val, \"B, 1, _z\"):\n        flat_val = val[:, 0, :]\n      elif self._sg.matches(val, \"B, K, H, W, _c\"):\n        flat_val = tf.reshape(val, self._sg[\"B*K, H*W\"] + [-1])\n      elif self._sg.matches(val, \"B, 1, H, W, _c\"):\n        flat_val = tf.reshape(val, self._sg[\"B, H*W\"] + [-1])\n      else:\n        raise ValueError(\"Cannot handle shape {}\".format(\n            val.get_shape().as_list()))\n      ln = self._layernorms[name]\n      norm_val = ln(flat_val)\n      return tf.reshape(norm_val, val.shape.as_list())\n    else:\n      return val\n\n  def _get_coord_channels(self):\n    if self.coord_type == \"linear\":\n      x_coords = tf.linspace(-1.0, 1.0, self._sg.W)[None, None, None, :, None]\n      y_coords = tf.linspace(-1.0, 1.0, self._sg.H)[None, None, :, None, None]\n      x_coords = tf.tile(x_coords, self._sg[\"B, 1, H, 1, 1\"])\n      y_coords = tf.tile(y_coords, self._sg[\"B, 1, 1, W, 1\"])\n      return tf.concat([x_coords, y_coords], axis=-1)\n    elif self.coord_type == \"cos\":\n      freqs = self._sg.guard(tf.range(0.0, self.coord_freqs), \"F\")\n      valx = tf.linspace(0.0, np.pi, self._sg.W)[None, None, None, :, None,\n                                                 None]\n      valy = tf.linspace(0.0, np.pi, self._sg.H)[None, None, :, None, None,\n                                                 None]\n      x_basis = tf.cos(valx * freqs[None, None, None, None, :, None])\n      y_basis = tf.cos(valy * freqs[None, None, None, None, None, :])\n      xy_basis = tf.reshape(x_basis * y_basis, self._sg[\"1, 1, H, W, F*F\"])\n      coords = tf.tile(xy_basis, self._sg[\"B, 1, 1, 1, 1\"])[..., 1:]\n      return coords\n    else:\n      raise KeyError('Unknown coord_type: \"{}\"'.format(self.coord_type))\n\n  def _raw_kl(self, z_dist):\n    return tfd.kl_divergence(z_dist, self.prior)\n\n  def _reconstruction_error(self, x_dist, img):\n    log_prob = self._sg.guard(x_dist.log_prob(img), \"B, 1, H, W\")\n    return -tf.reduce_sum(log_prob, axis=[1, 2, 3])\n\n  def _get_monitored_scalars(self, out_dist, data):\n    self._sg.guard(out_dist, \"B, 1, H, W, C\")\n    img = self._get_image_for_iter(data[\"image\"], self.num_iters)\n    scalars = {}\n    with tf.name_scope(\"monitored_scalars\"):\n      # ######### Loss Monitoring #########\n      scalars[\"loss/mse\"] = tf.losses.mean_squared_error(\n          img, out_dist.mean())\n\n      # ########## Mask Monitoring #######\n      if \"mask\" in data:\n        true_mask = self._sg.guard(data[\"mask\"], \"B, T, L, H, W, 1\")\n        true_mask = tf.transpose(true_mask[:, -1, ..., 0], [0, 2, 3, 1])\n        true_mask = self._sg.reshape(true_mask, \"B, H*W, L\")\n      else:\n        true_mask = None\n\n      pred_mask = self._sg.guard(out_dist.mixture_distribution.probs,\n                                 \"B, 1, H, W, K\")\n      pred_mask = self._sg.reshape(pred_mask, \"B, H*W, K\")\n\n      if pred_mask is not None and true_mask is not None:\n        self._sg.guard(pred_mask, \"B, H*W, K\")\n        self._sg.guard(true_mask, \"B, H*W, L\")\n        scalars[\"loss/ari\"] = tf.reduce_mean(\n            adjusted_rand_index(true_mask, pred_mask))\n\n        scalars[\"loss/ari_nobg\"] = tf.reduce_mean(\n            adjusted_rand_index(true_mask[..., 1:], pred_mask))\n\n      return scalars\n"
  },
  {
    "path": "iodine/modules/networks.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Network modules.\"\"\"\n# pylint: disable=g-multiple-import, g-doc-args, g-short-docstring-punctuation\n# pylint: disable=g-no-space-after-docstring-summary\nfrom iodine.modules.distributions import FlatParameters\nfrom iodine.modules.utils import flatten_all_but_last, get_act_func\nimport numpy as np\nimport shapeguard\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\n\nclass CNN(snt.AbstractModule):\n  \"\"\"ConvNet2D followed by an MLP.\n\n  This is a typical encoder architecture for VAEs, and has been found to work\n  well. One small improvement is to append coordinate channels on the input,\n  though for most datasets the improvement obtained is negligible.\n  \"\"\"\n\n  def __init__(self, cnn_opt, mlp_opt, mode=\"flatten\", name=\"cnn\"):\n    \"\"\"Constructor.\n\n        Args:\n          cnn_opt: Dictionary. Kwargs for the cnn. See vae_lib.ConvNet2D for\n            details.\n          mlp_opt: Dictionary. Kwargs for the mlp. See vae_lib.MLP for details.\n          name: String. Optional name.\n    \"\"\"\n    super().__init__(name=name)\n    if \"activation\" in cnn_opt:\n      cnn_opt[\"activation\"] = get_act_func(cnn_opt[\"activation\"])\n    self._cnn_opt = cnn_opt\n\n    if \"activation\" in mlp_opt:\n      mlp_opt[\"activation\"] = get_act_func(mlp_opt[\"activation\"])\n    self._mlp_opt = mlp_opt\n\n    self._mode = mode\n\n  def set_output_shapes(self, shape):\n    # assert self._mlp_opt['output_sizes'][-1] is None, self._mlp_opt\n    sg = shapeguard.ShapeGuard()\n    sg.guard(shape, \"1, Y\")\n    self._mlp_opt[\"output_sizes\"][-1] = sg.Y\n\n  def _build(self, image):\n    \"\"\"Connect model to TensorFlow graph.\"\"\"\n    assert self._mlp_opt[\"output_sizes\"][-1] is not None, \"set output_shapes\"\n    sg = shapeguard.ShapeGuard()\n    flat_image, unflatten = flatten_all_but_last(image, n_dims=3)\n    sg.guard(flat_image, \"B, H, W, C\")\n\n    cnn = snt.nets.ConvNet2D(\n        activate_final=True,\n        paddings=(\"SAME\",),\n        normalize_final=False,\n        **self._cnn_opt)\n    mlp = snt.nets.MLP(**self._mlp_opt)\n\n    # run CNN\n    net = cnn(flat_image)\n\n    if self._mode == \"flatten\":\n      # flatten\n      net_shape = net.get_shape().as_list()\n      flat_shape = net_shape[:-3] + [np.prod(net_shape[-3:])]\n      net = tf.reshape(net, flat_shape)\n    elif self._mode == \"avg_pool\":\n      net = tf.reduce_mean(net, axis=[1, 2])\n    else:\n      raise KeyError('Unknown mode \"{}\"'.format(self._mode))\n    # run MLP\n    output = sg.guard(mlp(net), \"B, Y\")\n    return FlatParameters(unflatten(output))\n\n\nclass MLP(snt.AbstractModule):\n  \"\"\"MLP.\"\"\"\n\n  def __init__(self, name=\"mlp\", **mlp_opt):\n    super().__init__(name=name)\n    if \"activation\" in mlp_opt:\n      mlp_opt[\"activation\"] = get_act_func(mlp_opt[\"activation\"])\n    self._mlp_opt = mlp_opt\n    assert mlp_opt[\"output_sizes\"][-1] is None, mlp_opt\n\n  def set_output_shapes(self, shape):\n    sg = shapeguard.ShapeGuard()\n    sg.guard(shape, \"1, Y\")\n    self._mlp_opt[\"output_sizes\"][-1] = sg.Y\n\n  def _build(self, data):\n    \"\"\"Connect model to TensorFlow graph.\"\"\"\n    assert self._mlp_opt[\"output_sizes\"][-1] is not None, \"set output_shapes\"\n    sg = shapeguard.ShapeGuard()\n    flat_data, unflatten = flatten_all_but_last(data)\n    sg.guard(flat_data, \"B, N\")\n\n    mlp = snt.nets.MLP(**self._mlp_opt)\n    # run MLP\n    output = sg.guard(mlp(flat_data), \"B, Y\")\n    return FlatParameters(unflatten(output))\n\n\nclass DeConv(snt.AbstractModule):\n  \"\"\"MLP followed by Deconv net.\n\n  This decoder is commonly used by vanilla VAE models. However, in practice\n  BroadcastConv (see below) seems to disentangle slightly better.\n  \"\"\"\n\n  def __init__(self, mlp_opt, cnn_opt, name=\"deconv\"):\n    \"\"\"Constructor.\n\n        Args:\n          mlp_opt: Dictionary. Kwargs for vae_lib.MLP.\n          cnn_opt: Dictionary. Kwargs for vae_lib.ConvNet2D for the CNN.\n          name: Optional name.\n    \"\"\"\n    super().__init__(name=name)\n    assert cnn_opt[\"output_channels\"][-1] is None, cnn_opt\n    if \"activation\" in cnn_opt:\n      cnn_opt[\"activation\"] = get_act_func(cnn_opt[\"activation\"])\n    self._cnn_opt = cnn_opt\n\n    if mlp_opt and \"activation\" in mlp_opt:\n      mlp_opt[\"activation\"] = get_act_func(mlp_opt[\"activation\"])\n    self._mlp_opt = mlp_opt\n    self._target_out_shape = None\n\n  def set_output_shapes(self, shape):\n    self._target_out_shape = shape\n    self._cnn_opt[\"output_channels\"][-1] = self._target_out_shape[-1]\n\n  def _build(self, z):\n    \"\"\"Connect model to TensorFlow graph.\"\"\"\n    sg = shapeguard.ShapeGuard()\n    flat_z, unflatten = flatten_all_but_last(z)\n    sg.guard(flat_z, \"B, Z\")\n    sg.guard(self._target_out_shape, \"H, W, C\")\n    mlp = snt.nets.MLP(**self._mlp_opt)\n    cnn = snt.nets.ConvNet2DTranspose(\n        paddings=(\"SAME\",), normalize_final=False, **self._cnn_opt)\n    net = mlp(flat_z)\n    output = sg.guard(cnn(net), \"B, H, W, C\")\n    return FlatParameters(unflatten(output))\n\n\nclass BroadcastConv(snt.AbstractModule):\n  \"\"\"MLP followed by a broadcast convolution.\n\n  This decoder takes a latent vector z, (optionally) applies an MLP to it,\n  then tiles the resulting vector across space to have dimension [B, H, W, C]\n  i.e. tiles across H and W. Then coordinate channels are appended and a\n  convolutional layer is applied.\n  \"\"\"\n\n  def __init__(\n      self,\n      cnn_opt,\n      mlp_opt=None,\n      coord_type=\"linear\",\n      coord_freqs=3,\n      name=\"broadcast_conv\",\n  ):\n    \"\"\"Args:\n          cnn_opt: dict Kwargs for vae_lib.ConvNet2D for the CNN.\n          mlp_opt: None or dict If dictionary, then kwargs for snt.nets.MLP. If\n            None, then the model will not process the latent vector by an mlp.\n          coord_type: [\"linear\", \"cos\", None] type of coordinate channels to\n            add.\n            None: add no coordinate channels.\n            linear: two channels with values linearly spaced from -1. to 1. in\n              the H and W dimension respectively.\n            cos: coord_freqs^2 many channels containing cosine basis functions.\n          coord_freqs: int number of frequencies used to construct the cosine\n            basis functions (only for coord_type==\"cos\")\n          name: Optional name.\n    \"\"\"\n    super().__init__(name=name)\n\n    assert cnn_opt[\"output_channels\"][-1] is None, cnn_opt\n    if \"activation\" in cnn_opt:\n      cnn_opt[\"activation\"] = get_act_func(cnn_opt[\"activation\"])\n    self._cnn_opt = cnn_opt\n\n    if mlp_opt and \"activation\" in mlp_opt:\n      mlp_opt[\"activation\"] = get_act_func(mlp_opt[\"activation\"])\n    self._mlp_opt = mlp_opt\n\n    self._target_out_shape = None\n    self._coord_type = coord_type\n    self._coord_freqs = coord_freqs\n\n  def set_output_shapes(self, shape):\n    self._target_out_shape = shape\n    self._cnn_opt[\"output_channels\"][-1] = self._target_out_shape[-1]\n\n  def _build(self, z):\n    \"\"\"Connect model to TensorFlow graph.\"\"\"\n    assert self._target_out_shape is not None, \"Call set_output_shape\"\n    # reshape components into batch dimension before processing them\n    sg = shapeguard.ShapeGuard()\n    flat_z, unflatten = flatten_all_but_last(z)\n    sg.guard(flat_z, \"B, Z\")\n    sg.guard(self._target_out_shape, \"H, W, C\")\n\n    if self._mlp_opt is None:\n      mlp = tf.identity\n    else:\n      mlp = snt.nets.MLP(activate_final=True, **self._mlp_opt)\n    mlp_output = sg.guard(mlp(flat_z), \"B, hidden\")\n\n    # tile MLP output spatially and append coordinate channels\n    broadcast_mlp_output = tf.tile(\n        mlp_output[:, tf.newaxis, tf.newaxis],\n        multiples=tf.constant(sg[\"1, H, W, 1\"]),\n    )  # B, H, W, Z\n\n    dec_cnn_inputs = self.append_coordinate_channels(broadcast_mlp_output)\n\n    cnn = snt.nets.ConvNet2D(\n        paddings=(\"SAME\",), normalize_final=False, **self._cnn_opt)\n    cnn_outputs = cnn(dec_cnn_inputs)\n    sg.guard(cnn_outputs, \"B, H, W, C\")\n\n    return FlatParameters(unflatten(cnn_outputs))\n\n  def append_coordinate_channels(self, output):\n    sg = shapeguard.ShapeGuard()\n    sg.guard(output, \"B, H, W, C\")\n    if self._coord_type is None:\n      return output\n    if self._coord_type == \"linear\":\n      w_coords = tf.linspace(-1.0, 1.0, sg.W)[None, None, :, None]\n      h_coords = tf.linspace(-1.0, 1.0, sg.H)[None, :, None, None]\n      w_coords = tf.tile(w_coords, sg[\"B, H, 1, 1\"])\n      h_coords = tf.tile(h_coords, sg[\"B, 1, W, 1\"])\n      return tf.concat([output, h_coords, w_coords], axis=-1)\n    elif self._coord_type == \"cos\":\n      freqs = sg.guard(tf.range(0.0, self._coord_freqs), \"F\")\n      valx = tf.linspace(0.0, np.pi, sg.W)[None, None, :, None, None]\n      valy = tf.linspace(0.0, np.pi, sg.H)[None, :, None, None, None]\n      x_basis = tf.cos(valx * freqs[None, None, None, :, None])\n      y_basis = tf.cos(valy * freqs[None, None, None, None, :])\n      xy_basis = tf.reshape(x_basis * y_basis, sg[\"1, H, W, F*F\"])\n      coords = tf.tile(xy_basis, sg[\"B,  1, 1, 1\"])[..., 1:]\n      return tf.concat([output, coords], axis=-1)\n    else:\n      raise KeyError('Unknown coord_type: \"{}\"'.format(self._coord_type))\n\n\nclass LSTM(snt.RNNCore):\n  \"\"\"Wrapper around snt.LSTM that supports multi-layers and runs K components in\n  parallel.\n\n  Expects input data of shape (B, K, H) and outputs data of shape (B, K, Y)\n  \"\"\"\n\n  def __init__(self, hidden_sizes, name=\"lstm\"):\n    super().__init__(name=name)\n    self._hidden_sizes = hidden_sizes\n    with self._enter_variable_scope():\n      self._lstm_layers = [snt.LSTM(hidden_size=h) for h in self._hidden_sizes]\n\n  def initial_state(self, batch_size, **kwargs):\n    return [\n        lstm.initial_state(batch_size, **kwargs) for lstm in self._lstm_layers\n    ]\n\n  def _build(self, data, prev_states):\n    assert not self._hidden_sizes or self._hidden_sizes[-1] is not None\n    assert len(prev_states) == len(self._hidden_sizes)\n    sg = shapeguard.ShapeGuard()\n    sg.guard(data, \"B, K, H\")\n    data = sg.reshape(data, \"B*K, H\")\n\n    out = data\n    new_states = []\n    for lstm, pstate in zip(self._lstm_layers, prev_states):\n      out, nstate = lstm(out, pstate)\n      new_states.append(nstate)\n\n    sg.guard(out, \"B*K, Y\")\n    out = sg.reshape(out, \"B, K, Y\")\n    return out, new_states\n"
  },
  {
    "path": "iodine/modules/plotting.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Plotting tools for IODINE.\"\"\"\n# pylint: disable=unused-import, missing-docstring, unused-variable\n# pylint: disable=invalid-name, unexpected-keyword-arg\nimport functools\nfrom iodine.modules.utils import get_mask_plot_colors\nfrom matplotlib.colors import hsv_to_rgb\nimport matplotlib.pyplot as plt\nimport numpy as np\n\n__all__ = (\"get_mask_plot_colors\", \"example_plot\", \"iterations_plot\",\n           \"inputs_plot\")\n\n\ndef clean_ax(ax, color=None, lw=4.0):\n  ax.set_xticks([])\n  ax.set_yticks([])\n  if color is not None:\n    for spine in ax.spines.values():\n      spine.set_linewidth(lw)\n      spine.set_color(color)\n\n\ndef optional_ax(fn):\n\n  def _wrapped(*args, **kwargs):\n    if kwargs.get(\"ax\", None) is None:\n      figsize = kwargs.pop(\"figsize\", (4, 4))\n      fig, ax = plt.subplots(figsize=figsize)\n      kwargs[\"ax\"] = ax\n    return fn(*args, **kwargs)\n\n  return _wrapped\n\n\ndef optional_clean_ax(fn):\n\n  def _wrapped(*args, **kwargs):\n    if kwargs.get(\"ax\", None) is None:\n      figsize = kwargs.pop(\"figsize\", (4, 4))\n      fig, ax = plt.subplots(figsize=figsize)\n      kwargs[\"ax\"] = ax\n    color = kwargs.pop(\"color\", None)\n    lw = kwargs.pop(\"lw\", 4.0)\n    res = fn(*args, **kwargs)\n    clean_ax(kwargs[\"ax\"], color, lw)\n    return res\n\n  return _wrapped\n\n\n@optional_clean_ax\ndef show_img(img, mask=None, ax=None, norm=False):\n  if norm:\n    vmin, vmax = np.min(img), np.max(img)\n    img = (img - vmin) / (vmax - vmin)\n  if mask is not None:\n    img = img * mask + np.ones_like(img) * (1.0 - mask)\n\n  return ax.imshow(img.clip(0.0, 1.0), interpolation=\"nearest\")\n\n\n@optional_clean_ax\ndef show_mask(m, ax):\n  color_conv = get_mask_plot_colors(m.shape[0])\n  color_mask = np.dot(np.transpose(m, [1, 2, 0]), color_conv)\n  return ax.imshow(color_mask.clip(0.0, 1.0), interpolation=\"nearest\")\n\n\n@optional_clean_ax\ndef show_mat(m, ax, vmin=None, vmax=None, cmap=\"viridis\"):\n  return ax.matshow(\n      m[..., 0], cmap=cmap, vmin=vmin, vmax=vmax, interpolation=\"nearest\")\n\n\n@optional_clean_ax\ndef show_coords(m, ax):\n  vmin, vmax = np.min(m), np.max(m)\n  m = (m - vmin) / (vmax - vmin)\n  color_conv = get_mask_plot_colors(m.shape[-1])\n  color_mask = np.dot(m, color_conv)\n  return ax.imshow(color_mask, interpolation=\"nearest\")\n\n\ndef example_plot(rinfo,\n                 b=0,\n                 t=-1,\n                 mask_components=False,\n                 size=2,\n                 column_titles=True):\n  image = rinfo[\"data\"][\"image\"][b, 0]\n  recons = rinfo[\"outputs\"][\"recons\"][b, t, 0]\n  pred_mask = rinfo[\"outputs\"][\"pred_mask\"][b, t]\n  components = rinfo[\"outputs\"][\"components\"][b, t]\n\n  K, H, W, C = components.shape\n  colors = get_mask_plot_colors(K)\n\n  nrows = 1\n  ncols = 3 + K\n  fig, axes = plt.subplots(ncols=ncols, figsize=(ncols * size, nrows * size))\n\n  show_img(image, ax=axes[0], color=\"#000000\")\n  show_img(recons, ax=axes[1], color=\"#000000\")\n  show_mask(pred_mask[..., 0], ax=axes[2], color=\"#000000\")\n  for k in range(K):\n    mask = pred_mask[k] if mask_components else None\n    show_img(components[k], ax=axes[k + 3], color=colors[k], mask=mask)\n\n  if column_titles:\n    labels = [\"Image\", \"Recons.\", \"Mask\"\n             ] + [\"Component {}\".format(k + 1) for k in range(K)]\n    for ax, title in zip(axes, labels):\n      ax.set_title(title)\n  plt.subplots_adjust(hspace=0.03, wspace=0.035)\n  return fig\n\n\ndef iterations_plot(rinfo, b=0, mask_components=False, size=2):\n  image = rinfo[\"data\"][\"image\"][b]\n  true_mask = rinfo[\"data\"][\"true_mask\"][b]\n  recons = rinfo[\"outputs\"][\"recons\"][b]\n  pred_mask = rinfo[\"outputs\"][\"pred_mask\"][b]\n  pred_mask_logits = rinfo[\"outputs\"][\"pred_mask_logits\"][b]\n  components = rinfo[\"outputs\"][\"components\"][b]\n\n  T, K, H, W, C = components.shape\n  colors = get_mask_plot_colors(K)\n  nrows = T + 1\n  ncols = 2 + K\n  fig, axes = plt.subplots(\n      nrows=nrows, ncols=ncols, figsize=(ncols * size, nrows * size))\n  for t in range(T):\n    show_img(recons[t, 0], ax=axes[t, 0])\n    show_mask(pred_mask[t, ..., 0], ax=axes[t, 1])\n    axes[t, 0].set_ylabel(\"iter {}\".format(t))\n    for k in range(K):\n      mask = pred_mask[t, k] if mask_components else None\n      show_img(components[t, k], ax=axes[t, k + 2], color=colors[k], mask=mask)\n\n  axes[0, 0].set_title(\"Reconstruction\")\n  axes[0, 1].set_title(\"Mask\")\n  show_img(image[0], ax=axes[T, 0])\n  show_mask(true_mask[0, ..., 0], ax=axes[T, 1])\n  vmin = np.min(pred_mask_logits[T - 1])\n  vmax = np.max(pred_mask_logits[T - 1])\n\n  for k in range(K):\n    axes[0, k + 2].set_title(\"Component {}\".format(k + 1))  # , color=colors[k])\n    show_mat(\n        pred_mask_logits[T - 1, k], ax=axes[T, k + 2], vmin=vmin, vmax=vmax)\n    axes[T, k + 2].set_xlabel(\n        \"Mask Logits for\\nComponent {}\".format(k + 1))  # , color=colors[k])\n  axes[T, 0].set_xlabel(\"Input Image\")\n  axes[T, 1].set_xlabel(\"Ground Truth Mask\")\n\n  plt.subplots_adjust(wspace=0.05, hspace=0.05)\n  return fig\n\n\ndef inputs_plot(rinfo, b=0, t=0, size=2):\n  B, T, K, H, W, C = rinfo[\"outputs\"][\"components\"].shape\n  colors = get_mask_plot_colors(K)\n  inputs = rinfo[\"inputs\"][\"spatial\"]\n  rows = [\n      (\"image\", show_img, False),\n      (\"components\", show_img, False),\n      (\"dcomponents\", functools.partial(show_img, norm=True), False),\n      (\"mask\", show_mat, True),\n      (\"pred_mask\", show_mat, True),\n      (\"dmask\", functools.partial(show_mat, cmap=\"coolwarm\"), True),\n      (\"posterior\", show_mat, True),\n      (\"log_prob\", show_mat, True),\n      (\"counterfactual\", show_mat, True),\n      (\"coordinates\", show_coords, False),\n  ]\n  rows = [(n, f, mcb) for n, f, mcb in rows if n in inputs]\n  nrows = len(rows)\n  ncols = K + 1\n\n  fig, axes = plt.subplots(\n      nrows=nrows,\n      ncols=ncols,\n      figsize=(ncols * size - size * 0.9, nrows * size),\n      gridspec_kw={\"width_ratios\": [1] * K + [0.1]},\n  )\n  for r, (name, plot_fn, make_cbar) in enumerate(rows):\n    axes[r, 0].set_ylabel(name)\n    if make_cbar:\n      vmin = np.min(inputs[name][b, t])\n      vmax = np.max(inputs[name][b, t])\n      if np.abs(vmin - vmax) < 1e-6:\n        vmin -= 0.1\n        vmax += 0.1\n      plot_fn = functools.partial(plot_fn, vmin=vmin, vmax=vmax)\n      # print(\"range of {:<16}: [{:0.2f}, {:0.2f}]\".format(name, vmin, vmax))\n    for k in range(K):\n      if inputs[name].shape[2] == 1:\n        m = inputs[name][b, t, 0]\n        color = (0.0, 0.0, 0.0)\n      else:\n        m = inputs[name][b, t, k]\n        color = colors[k]\n      mappable = plot_fn(m, ax=axes[r, k], color=color)\n    if make_cbar:\n      fig.colorbar(mappable, cax=axes[r, K])\n    else:\n      axes[r, K].set_visible(False)\n  for k in range(K):\n    axes[0, k].set_title(\"Component {}\".format(k + 1))  # , color=colors[k])\n\n  plt.subplots_adjust(hspace=0.05, wspace=0.05)\n  return fig\n"
  },
  {
    "path": "iodine/modules/refinement.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Iterative refinement modules.\"\"\"\n# pylint: disable=g-doc-bad-indent, unused-variable\nfrom iodine.modules import utils\nimport shapeguard\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\n\nclass RefinementCore(snt.RNNCore):\n  \"\"\"Recurrent Refinement Module.\n\n    Refinement modules take as inputs:\n      * previous state (which could be an arbitrary nested structure)\n      * current inputs which include\n        * image-space inputs like pixel-based errors, or mask-posteriors\n        * latent-space inputs like the previous z_dist, or dz\n\n    They use these inputs to produce:\n      * output (usually a new z_dist)\n      * new_state\n    \"\"\"\n\n  def __init__(self,\n               encoder_net,\n               recurrent_net,\n               refinement_head,\n               name=\"refinement\"):\n    super().__init__(name=name)\n    self._encoder_net = encoder_net\n    self._recurrent_net = recurrent_net\n    self._refinement_head = refinement_head\n    self._sg = shapeguard.ShapeGuard()\n\n  def initial_state(self, batch_size, **unused_kwargs):\n    return self._recurrent_net.initial_state(batch_size)\n\n  def _build(self, inputs, prev_state):\n    sg = self._sg\n    assert \"spatial\" in inputs, inputs.keys()\n    assert \"flat\" in inputs, inputs.keys()\n    assert \"zp\" in inputs[\"flat\"], inputs[\"flat\"].keys()\n    zp = sg.guard(inputs[\"flat\"][\"zp\"], \"B, K, Zp\")\n\n    x = sg.guard(self.prepare_spatial_inputs(inputs[\"spatial\"]), \"B*K, H, W, C\")\n    h1 = sg.guard(self._encoder_net(x).params, \"B*K, H1\")\n    h2 = sg.guard(self.prepare_flat_inputs(h1, inputs[\"flat\"]), \"B*K, H2\")\n    h2_unflattened = sg.reshape(h2, \"B, K, H2\")\n    h3, next_state = self._recurrent_net(h2_unflattened, prev_state)\n    sg.guard(h3, \"B, K, H3\")\n    outputs = sg.guard(self._refinement_head(zp, h3), \"B, K, Y\")\n\n    del self._sg.B\n    return outputs, next_state\n\n  def prepare_spatial_inputs(self, inputs):\n    values = []\n    for name, val in sorted(inputs.items(), key=lambda it: it[0]):\n      if val.shape.as_list()[1] == 1:\n        self._sg.guard(val, \"B, 1, H, W, _C\")\n        val = tf.tile(val, self._sg[\"1, K, 1, 1, 1\"])\n      else:\n        self._sg.guard(val, \"B, K, H, W, _C\")\n      values.append(val)\n    concat_inputs = self._sg.guard(tf.concat(values, axis=-1), \"B, K, H, W, C\")\n    return self._sg.reshape(concat_inputs, \"B*K, H, W, C\")\n\n  def prepare_flat_inputs(self, hidden, inputs):\n    values = [self._sg.guard(hidden, \"B*K, H1\")]\n\n    for name, val in sorted(inputs.items(), key=lambda it: it[0]):\n      self._sg.guard(val, \"B, K, _\")\n      val_flat = tf.reshape(val, self._sg[\"B*K\"] + [-1])\n      values.append(val_flat)\n    return tf.concat(values, axis=-1)\n\n\nclass ResHead(snt.AbstractModule):\n  \"\"\"Updates Zp using a residual mechanism.\"\"\"\n\n  def __init__(self, name=\"residual_head\"):\n    super().__init__(name=name)\n\n  def _build(self, zp_old, inputs):\n    sg = shapeguard.ShapeGuard()\n    sg.guard(zp_old, \"B, K, Zp\")\n    sg.guard(inputs, \"B, K, H\")\n    update = snt.Linear(sg.Zp)\n\n    flat_zp = sg.reshape(zp_old, \"B*K, Zp\")\n    flat_inputs = sg.reshape(inputs, \"B*K, H\")\n\n    zp = flat_zp + update(flat_inputs)\n\n    return sg.reshape(zp, \"B, K, Zp\")\n\n\nclass PredictorCorrectorHead(snt.AbstractModule):\n  \"\"\"This refinement head is used for sequential data.\n\n    At every step it computes a prediction from the λ of the previous timestep\n    and an update from the refinement network of the current timestep.\n\n    The next step λ' is computed as a gated combination of both:\n    λ' = g * λ_corr + (1-g) * λ_pred\n\n    \"\"\"\n\n  def __init__(\n      self,\n      hidden_sizes=(64,),\n      pred_gate_bias=0.0,\n      corrector_gate_bias=0.0,\n      activation=tf.nn.elu,\n      name=\"predcorr_head\",\n  ):\n    super().__init__(name=name)\n    self._hidden_sizes = hidden_sizes\n    self._activation = utils.get_act_func(activation)\n    self._pred_gate_bias = pred_gate_bias\n    self._corrector_gate_bias = corrector_gate_bias\n\n  def _build(self, zp_old, inputs):\n    sg = shapeguard.ShapeGuard()\n    sg.guard(zp_old, \"B, K, Zp\")\n    sg.guard(inputs, \"B, K, H\")\n    update = snt.Linear(sg.Zp)\n    update_gate = snt.Linear(sg.Zp)\n    predict = snt.nets.MLP(\n        output_sizes=list(self._hidden_sizes) + [sg.Zp * 2],\n        activation=self._activation,\n    )\n\n    flat_zp = sg.reshape(zp_old, \"B*K, Zp\")\n    flat_inputs = sg.reshape(inputs, \"B*K, H\")\n\n    g = tf.nn.sigmoid(update_gate(flat_inputs) + self._corrector_gate_bias)\n    u = update(flat_inputs)\n\n    # a slightly more efficient way of computing the gated update\n    # (1-g) * flat_zp + g * u\n    zp_corrected = flat_zp + g * (u - flat_zp)\n\n    predicted = predict(flat_zp)\n    pred_up = predicted[:, :sg.Zp]\n    pred_gate = tf.nn.sigmoid(predicted[:, sg.Zp:] + self._pred_gate_bias)\n\n    zp = zp_corrected + pred_gate * (pred_up - zp_corrected)\n\n    return sg.reshape(zp, \"B, K, Zp\")\n"
  },
  {
    "path": "iodine/modules/utils.py",
    "content": "# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Utilities for IODINE.\"\"\"\n# pylint: disable=g-doc-bad-indent, g-doc-return-or-yield, g-doc-args\n# pylint: disable=missing-docstring\nimport importlib\nimport math\nfrom absl import logging\nfrom matplotlib.colors import hsv_to_rgb\nimport numpy as np\nimport shapeguard\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\nimport tensorflow_probability as tfp\n\n\ntfd = tfp.distributions\n\nACT_FUNCS = {\n    \"identity\": tf.identity,\n    \"sigmoid\": tf.nn.sigmoid,\n    \"tanh\": tf.nn.tanh,\n    \"relu\": tf.nn.relu,\n    \"elu\": tf.nn.elu,\n    \"selu\": tf.nn.selu,\n    \"softplus\": tf.nn.softplus,\n    \"exp\": tf.exp,\n    \"softmax\": tf.nn.softmax,\n}\n\n\ndef get_act_func(name_or_func):\n  if name_or_func is None:\n    return tf.identity\n  if callable(name_or_func):\n    return name_or_func\n  elif isinstance(name_or_func, str):\n    return ACT_FUNCS[name_or_func.lower()]\n  else:\n    raise KeyError(\n        'Unknown activation function \"{}\" of type {}\"'.format(\n            name_or_func, type(name_or_func)\n        )\n    )\n\n\nDISTS = {\n    \"normal\": tfd.Normal,\n    \"log_normal\": tfd.LogNormal,\n    \"laplace\": tfd.Laplace,\n    \"logistic\": tfd.Logistic,\n}\n\n\ndef get_distribution(name_or_dist):\n  if isinstance(name_or_dist, type(tfd.Normal)):\n    return name_or_dist\n  elif isinstance(name_or_dist, str):\n    return DISTS[name_or_dist.lower()]\n  raise KeyError(\n      'Unknown distribution \"{}\" of type {}\"'.format(name_or_dist,\n                                                     type(name_or_dist)))\n\n\ndef get_mask_plot_colors(nr_colors):\n  \"\"\"Get nr_colors uniformly spaced hues to plot mask values.\"\"\"\n  hsv_colors = np.ones((nr_colors, 3), dtype=np.float32)\n  hsv_colors[:, 0] = np.linspace(0, 1, nr_colors, endpoint=False)\n  color_conv = hsv_to_rgb(hsv_colors)\n  return color_conv\n\n\ndef color_transform(masks):\n  with tf.name_scope(\"color_transform\"):\n    n_components = masks.shape.as_list()[-1]\n    colors = tf.constant(get_mask_plot_colors(n_components), name=\"mask_colors\")\n    return tf.tensordot(masks, colors, axes=1)\n\n\ndef construct_diagnostic_image(\n    images,\n    recons,\n    masks,\n    components,\n    border_width=2,\n    nr_images=6,\n    clip=True,\n    mask_components=False,\n    ):\n  \"\"\"Construct a single image containing image, recons., mask, and components.\n\n    Args:\n      images: (B, H, W, C)\n      recons: (B, H, W, C)\n      masks: (B, H, W, K)\n      components: (B, H, W, K, C)\n      border_width: int. width of the border in pixels. (default=2)\n      nr_images: int. Number of images to include. (default=6)\n      clip: bool. Whether to clip the final image to range [0, 1].\n\n    Returns:\n      diag_images: (nr, H+border_width*2, (W+border_width*2) * (K+3), 3)\n    \"\"\"\n  with tf.name_scope(\"diagnostic_image\"):\n    # transform the masks into RGB images\n    recolored_masks = color_transform(masks[:nr_images])\n    if images.get_shape().as_list()[-1] == 1:\n      # deal with grayscale images\n      images = tf.tile(images[:nr_images], [1, 1, 1, 3])\n      recons = tf.tile(recons[:nr_images], [1, 1, 1, 3])\n      components = tf.tile(components[:nr_images], [1, 1, 1, 1, 3])\n\n    if mask_components:\n      components *= masks[:nr_images, ..., tf.newaxis]\n\n    # Pad everything\n    no_pad, pad = (0, 0), (border_width, border_width)\n    paddings = tf.constant([no_pad, pad, pad, no_pad])\n    paddings_components = tf.constant([no_pad, pad, pad, no_pad, no_pad])\n    pad_images = tf.pad(images[:nr_images], paddings, constant_values=0.5)\n    pad_recons = tf.pad(recons[:nr_images], paddings, constant_values=0.5)\n    pad_masks = tf.pad(recolored_masks, paddings, constant_values=1.0)\n    pad_components = tf.pad(\n        components[:nr_images], paddings_components, constant_values=0.5\n    )\n\n    # reshape components into single wide image\n    pad_components = tf.transpose(pad_components, [0, 1, 3, 2, 4])\n    pc_shape = pad_components.shape.as_list()\n    pc_shape[2] = pc_shape[2] * pc_shape.pop(3)\n    pad_components = tf.reshape(pad_components, pc_shape)\n\n    # concatenate all parts along width\n    diag_imgs = tf.concat(\n        [pad_images, pad_recons, pad_masks, pad_components], axis=2\n    )\n    # concatenate all images along height\n    diag_shape = diag_imgs.shape.as_list()\n    final_img = tf.reshape(diag_imgs, [1, -1, diag_shape[2], diag_shape[3]])\n    if clip:\n      final_img = tf.clip_by_value(final_img, 0.0, 1.0)\n    return final_img\n\n\ndef construct_reconstr_image(images, recons, border_width=2,\n                             nr_images=6, clip=True):\n  \"\"\"Construct a single image containing image, and recons.\n\n    Args:\n      images: (B, H, W, C)\n      recons: (B, H, W, C)\n      border_width: int. width of the border in pixels. (default=2)\n      nr_images: int. Number of images to include. (default=6)\n      clip: bool. Whether to clip the final image to range [0, 1].\n\n    Returns:\n      rec_images: (nr, H+border_width*2, (W+border_width*2) * 2, 3)\n    \"\"\"\n  with tf.name_scope(\"diagnostic_image\"):\n    # Pad everything\n    no_pad, pad = (0, 0), (border_width, border_width)\n    paddings = tf.constant([no_pad, pad, pad, no_pad])\n    pad_images = tf.pad(images[:nr_images], paddings, constant_values=0.5)\n    pad_recons = tf.pad(recons[:nr_images], paddings, constant_values=0.5)\n    # concatenate all parts along width\n    diag_imgs = tf.concat([pad_images, pad_recons], axis=2)\n    # concatenate all images along height\n    diag_shape = diag_imgs.shape.as_list()\n    final_img = tf.reshape(diag_imgs, [1, -1, diag_shape[2], diag_shape[3]])\n    if clip:\n      final_img = tf.clip_by_value(final_img, 0.0, 1.0)\n    return final_img\n\n\ndef construct_iterations_image(\n    images, recons, masks, border_width=2, nr_seqs=2, clip=True\n):\n  \"\"\"Construct a single image containing image, and recons.\n\n    Args:\n      images: (B, T, 1, H, W, C)\n      recons: (B, T, 1, H, W, C)\n      masks:  (B, T, K, H, W, 1)\n      border_width: int. width of the border in pixels. (default=2)\n      nr_seqs: int. Number of sequences to include. (default=2)\n      clip: bool. Whether to clip the final image to range [0, 1].\n\n    Returns:\n      rec_images: (nr, H+border_width*2, (W+border_width*2) * 2, 3)\n    \"\"\"\n  sg = shapeguard.ShapeGuard()\n  sg.guard(recons, \"B, T, 1, H, W, C\")\n  if images.get_shape().as_list()[1] == 1:\n    images = tf.tile(images, sg[\"1, T, 1, 1, 1, 1\"])\n  sg.guard(images, \"B, T, 1, H, W, C\")\n  sg.guard(masks, \" B, T, K, H, W, 1\")\n  if sg.C == 1:  # deal with grayscale\n    images = tf.tile(images, [1, 1, 1, 1, 1, 3])\n    recons = tf.tile(recons, [1, 1, 1, 1, 1, 3])\n  sg.S = min(nr_seqs, sg.B)\n  with tf.name_scope(\"diagnostic_image\"):\n    # convert masks to rgb\n    masks_trans = tf.transpose(masks[:nr_seqs], [0, 1, 5, 3, 4, 2])\n    recolored_masks = color_transform(masks_trans)\n    # Pad everything\n    no_pad, pad = (0, 0), (border_width, border_width)\n    paddings = tf.constant([no_pad, no_pad, no_pad, pad, pad, no_pad])\n    pad_images = tf.pad(images[:nr_seqs], paddings, constant_values=0.5)\n    pad_recons = tf.pad(recons[:nr_seqs], paddings, constant_values=0.5)\n    pad_masks = tf.pad(recolored_masks, paddings, constant_values=0.5)\n    # concatenate all parts along width\n    triples = tf.concat([pad_images, pad_recons, pad_masks], axis=3)\n    triples = sg.guard(triples[:, :, 0], \"S, T, 3*Hp, Wp, 3\")\n    # concatenate iterations along width and sequences along height\n    final = tf.reshape(\n        tf.transpose(triples, [0, 2, 1, 3, 4]), sg[\"1, S*3*Hp, Wp*T, 3\"]\n    )\n    if clip:\n      final = tf.clip_by_value(final, 0.0, 1.0)\n    return final\n\n\ndef get_overview_image(image, output_dist, mask_components=False):\n  recons = output_dist.mean()[:, 0]\n  image = image[:, 0]\n  if hasattr(output_dist, \"mixture_distribution\") and hasattr(\n      output_dist, \"components_distribution\"\n  ):\n    mask = output_dist.mixture_distribution.probs[:, 0]\n    components = output_dist.components_distribution.mean()[:, 0]\n    return construct_diagnostic_image(\n        image, recons, mask, components, mask_components=mask_components\n    )\n  else:\n    return construct_reconstr_image(image, recons)\n\n\nclass OnlineMeanVarEstimator(snt.AbstractModule):\n  \"\"\"Online estimator for mean and variance using Welford's algorithm.\"\"\"\n\n  def __init__(self, axis=None, ddof=0.0, name=\"online_mean_var\"):\n    super().__init__(name=name)\n    self._axis = axis\n    self._ddof = ddof\n\n  def _build(self, x, weights=None):\n    if weights is None:\n      weights = tf.ones_like(x)\n    if weights.get_shape().as_list() != x.get_shape().as_list():\n      weights = tf.broadcast_to(weights, x.get_shape().as_list())\n\n    sum_weights = tf.reduce_sum(weights, axis=self._axis)\n    shape = sum_weights.get_shape().as_list()\n\n    total = tf.get_variable(\n        \"total\",\n        shape=shape,\n        dtype=weights.dtype,\n        initializer=tf.zeros_initializer(),\n        trainable=False,\n    )\n    mean = tf.get_variable(\n        \"mean\",\n        shape=shape,\n        dtype=x.dtype,\n        initializer=tf.zeros_initializer(),\n        trainable=False,\n    )\n    m2 = tf.get_variable(\n        \"M2\",\n        shape=shape,\n        dtype=x.dtype,\n        initializer=tf.zeros_initializer(),\n        trainable=False,\n    )\n\n    total_update = tf.assign_add(total, sum_weights)\n\n    with tf.control_dependencies([total_update]):\n      delta = (x - mean) * weights\n      mean_update = tf.assign_add(\n          mean, tf.reduce_sum(delta, axis=self._axis) / total\n      )\n\n    with tf.control_dependencies([mean_update]):\n      delta2 = x - mean\n      m2_update = tf.assign_add(\n          m2, tf.reduce_sum(delta * delta2, axis=self._axis)\n      )\n\n    with tf.control_dependencies([m2_update]):\n      return tf.identity(mean), m2 / (total - self._ddof), tf.identity(total)\n\n\ndef print_shapes(name, value, indent=\"\"):\n  if isinstance(value, dict):\n    print(\"{}{}:\".format(indent, name))\n    for k, v in sorted(value.items(),\n                       key=lambda x: (isinstance(x[1], dict), x[0])):\n      print_shapes(k, v, indent + \"  \")\n  elif isinstance(value, list):\n    print(\n        \"{}{}[{}]: {} @ {}\".format(\n            indent, name, len(value), value[0].shape, value[0].dtype\n        )\n    )\n  elif isinstance(value, np.ndarray):\n    print(\"{}{}: {} @ {}\".format(indent, name, value.shape, value.dtype))\n  elif isinstance(value, tf.Tensor):\n    print(\n        \"{}{}: {} @ {}\".format(\n            indent, name, value.get_shape().as_list(), value.dtype\n        )\n    )\n  elif np.isscalar(value):\n    print(\"{}{}: {}\".format(indent, name, value))\n  else:\n    print(\"{}{}.type: {}\".format(indent, name, type(value)))\n\n\ndef _pad_images(images, image_border_value=0.5, border_width=2):\n  \"\"\"Pad images to create gray borders.\n\n    Args:\n      images: Tensor of shape [B, H], [B, H, W], or [B, H, W, C].\n      image_border_value: Scalar value of greyscale borderfor images.\n      border_width: Int. Border width in pixels.\n\n    Raises:\n      ValueError: if the image provided is not {2,3,4} dimensional.\n\n    Returns:\n      Tensor of same shape as images, except H and W being H + border_width and\n          W + border_width.\n    \"\"\"\n  image_rank = len(images.get_shape())\n  border_paddings = (border_width, border_width)\n  if image_rank == 2:  # [B, H]\n    paddings = [(0, 0), border_paddings]\n  elif image_rank == 3:  # [B, H, W]\n    paddings = [(0, 0), border_paddings, border_paddings]\n  elif image_rank == 4:  # [B, H, W, C]\n    paddings = [(0, 0), border_paddings, border_paddings, (0, 0)]\n  else:\n    raise ValueError(\"expected image to be 2D, 3D or 4D, got %d\" % image_rank)\n  paddings = tf.constant(paddings)\n  return tf.pad(images, paddings, \"CONSTANT\",\n                constant_values=image_border_value)\n\n\ndef images_to_grid(\n    images,\n    grid_height=None,\n    grid_width=4,\n    max_grid_height=4,\n    max_grid_width=4,\n    image_border_value=0.5,\n):\n  \"\"\"Combine images and arrange them in a grid.\n\n    Args:\n      images: Tensor of shape [B, H], [B, H, W], or [B, H, W, C].\n      grid_height: Height of the grid of images to output, or None. Either\n          `grid_width` or `grid_height` must be set to an integer value.\n          If None, `grid_height` is set to ceil(B/`grid_width`), and capped at\n          `max_grid_height` when provided.\n      grid_width: Width of the grid of images to output, or None. Either\n          `grid_width` or `grid_height` must be set to an integer value.\n          If None, `grid_width` is set to ceil(B/`grid_height`), and capped at\n          `max_grid_width` when provided.\n      max_grid_height: Maximum allowable height of the grid of images to\n          output or None. Only used when `grid_height` is None.\n      max_grid_width: Maximum allowable width of the grid of images to output,\n          or None. Only used when `grid_width` is None.\n      image_border_value: None or scalar value of greyscale borderfor images.\n          If None, then no border is rendered.\n\n    Raises:\n      ValueError: if neither of grid_width or grid_height are set to a positive\n          integer.\n\n    Returns:\n      images: Tensor of shape [height*H, width*W, C].\n        C will be set to 1 if the input was provided with no channels.\n        Contains all input images in a grid.\n    \"\"\"\n\n  # If only one dimension is set, infer how big the other one should be.\n  if grid_height is None:\n    if not isinstance(grid_width, int) or grid_width <= 0:\n      raise ValueError(\n          \"if `grid_height` is None, `grid_width` must be \" \"a positive integer\"\n      )\n    grid_height = int(math.ceil(images.get_shape()[0].value / grid_width))\n    if max_grid_height is not None:\n      grid_height = min(max_grid_height, grid_height)\n  if grid_width is None:\n    if not isinstance(grid_height, int) or grid_height <= 0:\n      raise ValueError(\n          \"if `grid_width` is None, `grid_height` must be \" \"a positive integer\"\n      )\n    grid_width = int(math.ceil(images.get_shape()[0].value / grid_height))\n    if max_grid_width is not None:\n      grid_width = min(max_grid_width, grid_width)\n\n  images = images[: grid_height * grid_width, ...]\n\n  # Pad with extra blank frames if grid_height x grid_width is less than the\n  # number of frames provided.\n  pre_images_shape = images.get_shape().as_list()\n  if pre_images_shape[0] < grid_height * grid_width:\n    pre_images_shape[0] = grid_height * grid_width - pre_images_shape[0]\n    if image_border_value is not None:\n      dummy_frames = image_border_value * tf.ones(\n          shape=pre_images_shape, dtype=images.dtype\n      )\n    else:\n      dummy_frames = tf.zeros(shape=pre_images_shape, dtype=images.dtype)\n    images = tf.concat([images, dummy_frames], axis=0)\n\n  if image_border_value:\n    images = _pad_images(images, image_border_value=image_border_value)\n  images_shape = images.get_shape().as_list()\n  images = tf.reshape(images, [grid_height, grid_width] + images_shape[1:])\n  if len(images_shape) == 2:\n    images = tf.expand_dims(images, -1)\n  if len(images_shape) <= 3:\n    images = tf.expand_dims(images, -1)\n  image_height, image_width, channels = images.get_shape().as_list()[2:]\n  images = tf.transpose(images, perm=[0, 2, 1, 3, 4])\n  images = tf.reshape(\n      images, [grid_height * image_height, grid_width * image_width, channels]\n  )\n  return images\n\n\ndef flatten_all_but_last(tensor, n_dims=1):\n  shape = tensor.shape.as_list()\n  batch_dims = shape[:-n_dims]\n  flat_tensor = tf.reshape(tensor, [np.prod(batch_dims)] + shape[-n_dims:])\n\n  def unflatten(other_tensor):\n    other_shape = other_tensor.shape.as_list()\n    return tf.reshape(other_tensor, batch_dims + other_shape[1:])\n\n  return flat_tensor, unflatten\n\n\ndef ensure_3d(tensor):\n  if tensor.shape.ndims == 2:\n    return tensor[..., None]\n\n  assert tensor.shape.ndims == 3\n  return tensor\n\n\nbuilt_element_cache = {\n    \"none\": None,\n    \"global_step\": tf.train.get_or_create_global_step(),\n}\n\n\ndef build(plan, identifier):\n  logging.debug(\"building %s\", identifier)\n\n  if identifier in built_element_cache:\n    logging.debug(\"%s is already built, returning\", identifier)\n    return built_element_cache[identifier]\n  elif not isinstance(plan, dict):\n    return plan\n  elif \"constructor\" in plan:\n    ctor = _resolve_constructor(plan)\n    kwargs = {\n        k: build(v, identifier=k) for k, v in plan.items() if k != \"constructor\"\n    }\n    with tf.variable_scope(identifier):\n      built_element_cache[identifier] = ctor(**kwargs)\n      return built_element_cache[identifier]\n  else:\n    return {k: build(v, identifier=k) for k, v in plan.items()}\n\n\ndef _resolve_constructor(plan_subsection):\n  assert \"constructor\" in plan_subsection, plan_subsection\n  if isinstance(plan_subsection[\"constructor\"], str):\n    module, _, ctor = plan_subsection[\"constructor\"].rpartition(\".\")\n    mod = importlib.import_module(module)\n    return getattr(mod, ctor)\n  else:\n    return plan_subsection[\"constructor\"]\n"
  },
  {
    "path": "iodine/requirements.txt",
    "content": "tensorflow-gpu==1.14.0\ntensorflow-probability==0.7.0\ndm-sonnet==1.35\nsacred>=0.7,<0.8\nshapeguard\nseaborn\npymongo\njupyterlab\ngit+git://github.com/deepmind/multi_object_datasets.git\n"
  },
  {
    "path": "iodine/run.sh",
    "content": "#!/bin/sh\n# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nset -e\n\necho \"downloading checkpoints from GCP\"\niodine/download_checkpoints.sh\n\npython3 -m venv iodine_venv\nsource iodine_venv/bin/activate\npip3 install --upgrade setuptools wheel\npip3 install -r iodine/requirements.txt\n\n# Get some fake data and put it where the real multi_objects_dataset files live.\nmkdir -p iodine/multi_object_datasets\ncp iodine/test_data/tetrominoes_mini.tfrecords iodine/multi_object_datasets/tetrominoes_train.tfrecords\n\n# Run training with a cut down size.\npython3 -m iodine.main \\\n  -f with tetrominoes \\\n  data.shuffle_buffer=2 \\\n  data.batch_size=2 \\\n  n_z=4 \\\n  num_components=3 \\\n  stop_after_steps=11\n"
  },
  {
    "path": "kfac_ferminet_alpha/README.md",
    "content": "# Accompanying code for Better, Faster Fermionic Neural Networks\n\nAll package requirements are listed in `requirements.txt`.\n\n## Contributing\n\nThis is purely research code, provided with no further intentions of support or\nany guarantees of backward compatibility.\n\n## Installation\n\n```shell\ngit clone git@github.com:deepmind/deepmind-research.git\npip install deepmind_research/kfac_ferminet_alpha/\n```\n\n## Usage\n\nYou can find examples of how to use the codebase through the [FermiNet project].\n\nWe also provide an [example training script].\n\n## Reference\n\n**Better, Faster Fermionic Neural Networks**\n\nJames S. Spencer, David Pfau, Aleksandar Botev, and W. M. C. Foulkes.\n\nURL: https://arxiv.org/abs/2011.07125.\n\n**Optimizing Neural Networks with Kronecker-factored Approximate Curvature**\n\nJames Martens, Roger Grosse\n\nURL: https://arxiv.org/abs/1503.05671\n\n[FermiNet Project]: https://github.com/deepmind/ferminet/\n[example training script]:\nhttps://github.com/deepmind/deepmind-research/blob/master/kfac_ferminet_alpha/example.py\n"
  },
  {
    "path": "kfac_ferminet_alpha/__init__.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Module for anything that an end user would use.\"\"\"\n\nfrom kfac_ferminet_alpha.loss_functions import register_normal_predictive_distribution\nfrom kfac_ferminet_alpha.loss_functions import register_squared_error_loss\nfrom kfac_ferminet_alpha.optimizer import Optimizer\n"
  },
  {
    "path": "kfac_ferminet_alpha/curvature_blocks.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Module for all of the different curvature blocks.\"\"\"\nimport abc\nfrom typing import Any, Callable, Dict, Mapping, MutableMapping, Optional, Sequence, Union\nimport jax\nfrom jax import core\nimport jax.numpy as jnp\n\nfrom kfac_ferminet_alpha import tag_graph_matcher as tgm\nfrom kfac_ferminet_alpha import utils\n\n_Arrays = Sequence[jnp.ndarray]\n_BlockInfo = Mapping[str, Any]\n\n\nclass CurvatureBlock(utils.Stateful, abc.ABC):\n  \"\"\"Top level class.\"\"\"\n\n  def __init__(self, layer_tag_eq: tgm.jax_core.JaxprEqn):\n    super(CurvatureBlock, self).__init__()\n    self._layer_tag_eq = layer_tag_eq\n\n  @property\n  def layer_tag_primitive(self) -> tgm.tags.LayerTag:\n    assert isinstance(self._layer_tag_eq.primitive, tgm.tags.LayerTag)\n    return self._layer_tag_eq.primitive\n\n  @property\n  def outputs_shapes(self) -> Sequence[Sequence[int]]:\n    output_vars = self.layer_tag_primitive.split_all_inputs(\n        self._layer_tag_eq.invars)[0]\n    return jax.tree_map(lambda x: x.aval.shape, output_vars)\n\n  @property\n  def inputs_shapes(self) -> Sequence[Sequence[int]]:\n    input_vars = self.layer_tag_primitive.split_all_inputs(\n        self._layer_tag_eq.invars)[1]\n    return jax.tree_map(lambda x: x.aval.shape, input_vars)\n\n  @property\n  def params_shapes(self) -> Sequence[Sequence[int]]:\n    params_vars = self.layer_tag_primitive.split_all_inputs(\n        self._layer_tag_eq.invars)[2]\n    return jax.tree_map(lambda x: x.aval.shape, params_vars)\n\n  @abc.abstractmethod\n  def init(self, rng: jnp.ndarray) -> MutableMapping[str, Any]:\n    \"\"\"This initializes/creates all of the arrays for the state of the block.\n\n    Usually this would include the arrays used for storing the curvature\n    approximation, as well as the arrays for storing any approximate\n    inverses/powers of the curvature block.\n\n    Args:\n      rng: The Jax PRNG key to use if any of the state is supposed to be\n      initialized randomly.\n    Returns:\n      A mutable mapping of the state.\n    \"\"\"\n\n  @abc.abstractmethod\n  def update_curvature_matrix_estimate(\n      self,\n      info: _BlockInfo,\n      batch_size: int,\n      ema_old: Union[float, jnp.ndarray],\n      ema_new: Union[float, jnp.ndarray],\n      pmap_axis_name: str\n  ) -> None:\n    pass\n\n  @abc.abstractmethod\n  def update_curvature_inverse_estimate(\n      self,\n      diagonal_weight: Union[float, jnp.ndarray],\n      pmap_axis_name: str\n  ) -> None:\n    pass\n\n  @abc.abstractmethod\n  def multiply_matpower(\n      self,\n      vec: _Arrays,\n      exp: Union[float, int],\n      diagonal_weight: Union[float, jnp.ndarray]\n  ) -> _Arrays:\n    pass\n\n\nCurvatureBlockCtor = Callable[[core.JaxprEqn], CurvatureBlock]\n\n\n@utils.Stateful.infer_class_state\nclass NaiveDiagonal(CurvatureBlock):\n  \"\"\"The naively estimated diagonal block.\"\"\"\n  diagonal_factor: utils.WeightedMovingAverage\n\n  def init(self, rng: jnp.ndarray) -> Dict[str, Any]:\n    del rng\n    return dict(\n        diagonal_factor=utils.WeightedMovingAverage.zero(\n            self.outputs_shapes[0])\n    )\n\n  def update_curvature_matrix_estimate(\n      self,\n      info: _BlockInfo,\n      batch_size: int,\n      ema_old: Union[float, jnp.ndarray],\n      ema_new: Union[float, jnp.ndarray],\n      pmap_axis_name: str\n  ) -> None:\n    dw, = info[\"outputs_tangent\"]\n    diagonal_update = dw * dw / batch_size\n    self.diagonal_factor.update(diagonal_update, ema_old, ema_new)\n    self.diagonal_factor.sync(pmap_axis_name)\n\n  def update_curvature_inverse_estimate(\n      self,\n      diagonal_weight: Union[float, jnp.ndarray],\n      pmap_axis_name: str\n  ) -> None:\n    pass\n\n  def multiply_matpower(\n      self,\n      vec: _Arrays,\n      exp: Union[float, int],\n      diagonal_weight: Union[float, jnp.ndarray]\n  ) -> _Arrays:\n    w, = vec\n    if exp == 1:\n      return w * (self.diagonal_factor.value + diagonal_weight),\n    elif exp == -1:\n      return w / (self.diagonal_factor.value + diagonal_weight),\n    else:\n      raise NotImplementedError()\n\n\n@utils.Stateful.infer_class_state\nclass TwoKroneckerFactored(CurvatureBlock, abc.ABC):\n  \"\"\"A factor that is the Kronecker product of two matrices.\"\"\"\n  inputs_factor: utils.WeightedMovingAverage\n  inputs_factor_inverse: jnp.ndarray\n  outputs_factor: utils.WeightedMovingAverage\n  outputs_factor_inverse: jnp.ndarray\n  extra_scale: Optional[Union[int, float, jnp.ndarray]]\n\n  @property\n  def has_bias(self) -> bool:\n    return len(self._layer_tag_eq.invars) == 4\n\n  @abc.abstractmethod\n  def input_size(self) -> int:\n    pass\n\n  @abc.abstractmethod\n  def output_size(self) -> int:\n    pass\n\n  def compute_extra_scale(self) -> Optional[Union[int, float, jnp.ndarray]]:\n    return 1\n\n  def init(self, rng: jnp.ndarray) -> Dict[str, Any]:\n    # The extra scale is technically a constant, but in general it could be\n    # useful for anyone examining the state to know it explicitly,\n    # hence we actually keep it as part of the state.\n    d_in = self.input_size()\n    d_out = self.output_size()\n    return dict(\n        inputs_factor=utils.WeightedMovingAverage.zero([d_in, d_in]),\n        inputs_factor_inverse=jnp.zeros([d_in, d_in]),\n        outputs_factor=utils.WeightedMovingAverage.zero([d_out, d_out]),\n        outputs_factor_inverse=jnp.zeros([d_out, d_out]),\n        extra_scale=self.compute_extra_scale()\n    )\n\n  def update_curvature_inverse_estimate(\n      self,\n      diagonal_weight: Union[float, jnp.ndarray],\n      pmap_axis_name: str\n  ) -> None:\n    self.inputs_factor.sync(pmap_axis_name)\n    self.outputs_factor.sync(pmap_axis_name)\n\n    # This computes the approximate inverse factor using the pi-adjusted\n    # inversion from the original KFAC paper.\n    # Note that the damping is divided by extra_scale since:\n    # (s * A kron B + lambda I)^-1 = s^-1 (A kron B + s^-1 * lambda I)^-1\n    # And the extra division by the scale is included in `multiply_matpower`.\n    (self.inputs_factor_inverse,\n     self.outputs_factor_inverse) = utils.pi_adjusted_inverse(\n         factor_0=self.inputs_factor.value,\n         factor_1=self.outputs_factor.value,\n         damping=diagonal_weight / self.extra_scale,\n         pmap_axis_name=pmap_axis_name)\n\n  def multiply_matpower(\n      self,\n      vec: _Arrays,\n      exp: Union[float, int],\n      diagonal_weight: Union[float, jnp.ndarray]\n  ) -> _Arrays:\n    if self.has_bias:\n      w, b = vec\n      vec = jnp.concatenate([w.reshape([-1, w.shape[-1]]), b[None]], axis=0)\n    else:\n      w, = vec\n      vec = w.reshape([-1, w.shape[-1]])\n    if exp == 1:\n      inputs_factor, outputs_factor = (self.inputs_factor.value,\n                                       self.outputs_factor.value)\n      scale = self.extra_scale\n    elif exp == -1:\n      inputs_factor, outputs_factor = (self.inputs_factor_inverse,\n                                       self.outputs_factor_inverse)\n      scale = 1.0 / self.extra_scale\n      diagonal_weight = 0\n    else:\n      raise NotImplementedError()\n\n    result = jnp.matmul(inputs_factor, vec)\n    result = jnp.matmul(result, outputs_factor)\n    result = result * scale + diagonal_weight * vec\n\n    if self.has_bias:\n      w_new, b_new = result[:-1], result[-1]\n      return w_new.reshape(w.shape), b_new\n    else:\n      return result.reshape(w.shape),\n\n\nclass DenseTwoKroneckerFactored(TwoKroneckerFactored):\n  \"\"\"Factor for a standard dense layer.\"\"\"\n\n  def input_size(self) -> int:\n    if self.has_bias:\n      return self.params_shapes[0][0] + 1\n    else:\n      return self.params_shapes[0][0]\n\n  def output_size(self) -> int:\n    return self.params_shapes[0][1]\n\n  def update_curvature_matrix_estimate(\n      self,\n      info: _BlockInfo,\n      batch_size: int,\n      ema_old: Union[float, jnp.ndarray],\n      ema_new: Union[float, jnp.ndarray],\n      pmap_axis_name: str\n  ) -> None:\n    del pmap_axis_name\n    (x,), (dy,) = info[\"inputs\"], info[\"outputs_tangent\"]\n    utils.check_first_dim_is_batch_size(batch_size, x, dy)\n\n    if self.has_bias:\n      x_one = jnp.ones_like(x[:, :1])\n      x = jnp.concatenate([x, x_one], axis=1)\n    input_stats = jnp.matmul(x.T, x) / batch_size\n    output_stats = jnp.matmul(dy.T, dy) / batch_size\n    self.inputs_factor.update(input_stats, ema_old, ema_new)\n    self.outputs_factor.update(output_stats, ema_old, ema_new)\n\n\n@utils.Stateful.infer_class_state\nclass ScaleAndShiftDiagonal(CurvatureBlock):\n  \"\"\"A scale and shift block with a diagonal approximation to the curvature.\"\"\"\n  scale_factor: Optional[utils.WeightedMovingAverage]\n  shift_factor: Optional[utils.WeightedMovingAverage]\n\n  @property\n  def has_scale(self) -> bool:\n    return self._layer_tag_eq.params[\"has_scale\"]\n\n  @property\n  def has_shift(self) -> bool:\n    return self._layer_tag_eq.params[\"has_shift\"]\n\n  def init(self, rng: jnp.ndarray) -> Dict[str, Any]:\n    del rng\n    if self.has_scale and self.has_shift:\n      return dict(\n          scale_factor=utils.WeightedMovingAverage.zero(\n              self.params_shapes[0]\n          ),\n          shift_factor=utils.WeightedMovingAverage.zero(\n              self.params_shapes[1]\n          )\n      )\n    elif self.has_scale:\n      return dict(\n          scale_factor=utils.WeightedMovingAverage.zero(\n              self.params_shapes[0]\n          ),\n          shift_factor=None\n      )\n    elif self.has_shift:\n      return dict(\n          scale_factor=None,\n          shift_factor=utils.WeightedMovingAverage.zero(\n              self.params_shapes[0]\n          ),\n      )\n    else:\n      raise ValueError(\"Neither `has_scale` nor `has_shift`.\")\n\n  def update_curvature_matrix_estimate(\n      self,\n      info: _BlockInfo,\n      batch_size: int,\n      ema_old: Union[float, jnp.ndarray],\n      ema_new: Union[float, jnp.ndarray],\n      pmap_axis_name: str\n  ) -> None:\n    (x,), (dy,) = info[\"inputs\"], info[\"outputs_tangent\"]\n    utils.check_first_dim_is_batch_size(batch_size, x, dy)\n\n    if self.has_scale:\n      assert self.scale_factor is not None\n      scale_shape = info[\"params\"][0].shape\n      full_scale_shape = (1,) * (len(x.shape) - len(scale_shape)) + scale_shape\n      axis = [i for i, s in enumerate(full_scale_shape) if s == 1 and i != 0]\n      d_scale = jnp.sum(x * dy, axis=axis)\n      scale_diag_update = jnp.sum(d_scale * d_scale, axis=0) / batch_size\n      self.scale_factor.update(scale_diag_update, ema_old, ema_new)  # pytype: disable=attribute-error  # trace-all-classes\n      self.scale_factor.sync(pmap_axis_name)  # pytype: disable=attribute-error  # trace-all-classes\n\n    if self.has_shift:\n      assert self.shift_factor is not None\n      shift_shape = info[\"params\"][1].shape\n      full_shift_shape = (1,) * (len(x.shape) - len(shift_shape)) + shift_shape\n      axis = [i for i, s in enumerate(full_shift_shape) if s == 1 and i != 0]\n      d_shift = jnp.sum(dy, axis=axis)\n      shift_diag_update = jnp.sum(d_shift * d_shift, axis=0) / batch_size\n      self.shift_factor.update(shift_diag_update, ema_old, ema_new)  # pytype: disable=attribute-error  # trace-all-classes\n      self.shift_factor.sync(pmap_axis_name)  # pytype: disable=attribute-error  # trace-all-classes\n\n  def update_curvature_inverse_estimate(\n      self,\n      diagonal_weight: Union[float, jnp.ndarray],\n      pmap_axis_name: str\n  ) -> None:\n    pass\n\n  def multiply_matpower(\n      self,\n      vec: _Arrays,\n      exp: Union[float, int],\n      diagonal_weight: Union[float, jnp.ndarray]\n  ) -> _Arrays:\n    if self.has_scale and self.has_shift:\n      factors = (self.scale_factor.value, self.shift_factor.value)  # pytype: disable=attribute-error  # trace-all-classes\n    elif self.has_scale:\n      factors = (self.scale_factor.value,)  # pytype: disable=attribute-error  # trace-all-classes\n    elif self.has_shift:\n      factors = (self.shift_factor.value,)  # pytype: disable=attribute-error  # trace-all-classes\n    else:\n      raise ValueError(\"Neither `has_scale` nor `has_shift`.\")\n    factors = jax.tree_map(lambda x: x + diagonal_weight, factors)\n    if exp == 1:\n      return jax.tree_map(jnp.multiply, vec, factors)\n    elif exp == -1:\n      return jax.tree_map(jnp.divide, vec, factors)\n    else:\n      raise NotImplementedError()\n\n\n@utils.Stateful.infer_class_state\nclass ScaleAndShiftFull(CurvatureBlock):\n  \"\"\"A scale and shift block with full approximation to the curvature.\"\"\"\n  factor: utils.WeightedMovingAverage\n  inverse_factor: jnp.ndarray\n\n  @property\n  def _has_scale(self) -> bool:\n    return self._layer_tag_eq.params[\"has_scale\"]\n\n  @property\n  def _has_shift(self) -> bool:\n    return self._layer_tag_eq.params[\"has_shift\"]\n\n  def init(self, rng: jnp.ndarray) -> Dict[str, Any]:\n    del rng\n    dims = sum(utils.product(shape) for shape in self.params_shapes)\n    return dict(\n        factor=utils.WeightedMovingAverage.zero([dims, dims]),\n        inverse_factor=jnp.zeros([dims, dims])\n    )\n\n  def update_curvature_matrix_estimate(\n      self,\n      info: _BlockInfo,\n      batch_size: int,\n      ema_old: Union[float, jnp.ndarray],\n      ema_new: Union[float, jnp.ndarray],\n      pmap_axis_name: str\n  ) -> None:\n    del pmap_axis_name\n    (x,), (dy,) = info[\"inputs\"], info[\"outputs_tangent\"]\n    utils.check_first_dim_is_batch_size(batch_size, x, dy)\n\n    grads = list()\n    if self._has_scale:\n      # Scale gradients\n      scale_shape = info[\"params\"][0].shape\n      full_scale_shape = (1,) * (len(x.shape) - len(scale_shape)) + scale_shape\n      axis = [i for i, s in enumerate(full_scale_shape) if s == 1 and i != 0]\n      d_scale = jnp.sum(x * dy, axis=axis)\n      d_scale = d_scale.reshape([batch_size, -1])\n      grads.append(d_scale)\n\n    if self._has_shift:\n      # Shift gradients\n      shift_shape = info[\"params\"][1].shape\n      full_shift_shape = (1,) * (len(x.shape) - len(shift_shape)) + shift_shape\n      axis = [i for i, s in enumerate(full_shift_shape) if s == 1 and i != 0]\n      d_shift = jnp.sum(dy, axis=axis)\n      d_shift = d_shift.reshape([batch_size, -1])\n      grads.append(d_shift)\n\n    grads = jnp.concatenate(grads, axis=1)\n    factor_update = jnp.matmul(grads.T, grads) / batch_size\n    self.factor.update(factor_update, ema_old, ema_new)\n\n  def update_curvature_inverse_estimate(\n      self,\n      diagonal_weight: Union[float, jnp.ndarray],\n      pmap_axis_name: str\n  ) -> None:\n    self.factor.sync(pmap_axis_name)\n    self.inverse_factor = utils.psd_inv_cholesky(self.factor.value,\n                                                 diagonal_weight)\n\n  def multiply_matpower(\n      self,\n      vec: _Arrays,\n      exp: Union[float, int],\n      diagonal_weight: Union[float, jnp.ndarray]\n  ) -> _Arrays:\n    # Remember the vector is a tuple of all parameters\n    if self._has_scale and self._has_shift:\n      flat_vec = jnp.concatenate([v.flatten() for v in vec])\n    else:\n      flat_vec = vec[0].flatten()\n\n    if exp == 1:\n      flat_result = (\n          jnp.matmul(self.factor.value, flat_vec) + diagonal_weight * flat_vec)\n    elif exp == -1:\n      flat_result = jnp.matmul(self.inverse_factor, flat_vec)\n    else:\n      raise NotImplementedError()\n\n    if self._has_scale and self._has_shift:\n      scale_dims = int(vec[0].size)\n      scale_result = flat_result[:scale_dims].reshape(vec[0].shape)\n      shift_result = flat_result[scale_dims:].reshape(vec[1].shape)\n      return scale_result, shift_result\n    else:\n      return flat_vec.reshape(vec[0].shape),\n\n\n_default_tag_to_block: MutableMapping[str, CurvatureBlockCtor] = dict(\n    dense_tag=DenseTwoKroneckerFactored,\n    generic_tag=NaiveDiagonal,\n    scale_and_shift_tag=ScaleAndShiftDiagonal,\n)\n\n\ndef copy_default_tag_to_block() -> MutableMapping[str, CurvatureBlockCtor]:\n  return dict(_default_tag_to_block)\n\n\ndef get_default_tag_to_block(tag_name: str) -> CurvatureBlockCtor:\n  return _default_tag_to_block[tag_name]\n\n\ndef set_default_tag_to_block(\n    tag_name: str,\n    block_class: CurvatureBlockCtor,\n) -> None:\n  _default_tag_to_block[tag_name] = block_class\n"
  },
  {
    "path": "kfac_ferminet_alpha/distributions.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Module for all distribution implementations needed for the loss functions.\"\"\"\nimport math\nimport jax\nimport jax.numpy as jnp\n\n\nclass MultivariateNormalDiag:\n  \"\"\"Multivariate normal distribution on `R^k`.\"\"\"\n\n  def __init__(\n      self,\n      loc: jnp.ndarray,\n      scale_diag: jnp.ndarray):\n    \"\"\"Initializes a MultivariateNormalDiag distribution.\n\n    Args:\n      loc: Mean vector of the distribution. Can also be a batch of vectors.\n      scale_diag: Vector of standard deviations.\n    \"\"\"\n    super().__init__()\n    self._loc = loc\n    self._scale_diag = scale_diag\n\n  @property\n  def loc(self) -> jnp.ndarray:\n    \"\"\"Mean of the distribution.\"\"\"\n    return self._loc\n\n  @property\n  def scale_diag(self) -> jnp.ndarray:\n    \"\"\"Scale of the distribution.\"\"\"\n    return self._scale_diag\n\n  def _num_dims(self) -> int:\n    \"\"\"Dimensionality of the events.\"\"\"\n    return self._scale_diag.shape[-1]\n\n  def _standardize(self, value: jnp.ndarray) -> jnp.ndarray:\n    return (value - self._loc) / self._scale_diag\n\n  def log_prob(self, value: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"See `Distribution.log_prob`.\"\"\"\n    log_unnormalized = -0.5 * jnp.square(self._standardize(value))\n    log_normalization = 0.5 * math.log(2 * math.pi) + jnp.log(self._scale_diag)\n    return jnp.sum(log_unnormalized - log_normalization, axis=-1)\n\n  def mean(self) -> jnp.ndarray:\n    \"\"\"Calculates the mean.\"\"\"\n    return self.loc\n\n  def sample(self, seed: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Samples an event.\n\n    Args:\n      seed: PRNG key or integer seed.\n\n    Returns:\n      A sample.\n    \"\"\"\n    eps = jax.random.normal(seed, self.loc.shape)\n    return self.loc + eps * self.scale_diag\n"
  },
  {
    "path": "kfac_ferminet_alpha/estimator.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Defines the high-level Fisher estimator class.\"\"\"\nimport collections\nfrom typing import Any, Callable, Mapping, Optional, Sequence, Union, TypeVar\n\nimport jax\nimport jax.numpy as jnp\nimport jax.random as jnr\nimport numpy as np\n\nfrom kfac_ferminet_alpha import curvature_blocks\nfrom kfac_ferminet_alpha import tracer\nfrom kfac_ferminet_alpha import utils\n\n_CurvatureBlock = curvature_blocks.CurvatureBlock\nTagMapping = Mapping[str, curvature_blocks.CurvatureBlockCtor]\nBlockVector = Sequence[jnp.ndarray]\n\n_StructureT = TypeVar(\"_StructureT\")\n_OptionalStateT = TypeVar(\"_OptionalStateT\", bound=Optional[Mapping[str, Any]])\n\n\n@utils.Stateful.infer_class_state\nclass CurvatureEstimator(utils.Stateful):\n  \"\"\"Curvature estimator class supporting various curvature approximations.\"\"\"\n  blocks: \"collections.OrderedDict[str, _CurvatureBlock]\"\n  damping: Optional[jnp.ndarray]\n\n  def __init__(self,\n               tagged_func: Callable[[Any], jnp.ndarray],\n               func_args: Sequence[Any],\n               l2_reg: Union[float, jnp.ndarray],\n               estimation_mode: str = \"fisher_gradients\",\n               params_index: int = 0,\n               layer_tag_to_block_cls: Optional[TagMapping] = None):\n    \"\"\"Create a FisherEstimator object.\n\n    Args:\n      tagged_func: The function which evaluates the model, in which layer and\n        loss tags has already been registered.\n      func_args: Arguments to trace the function for layer and loss tags.\n      l2_reg: Scalar. The L2 regularization coefficient, which represents\n          the following regularization function: `coefficient/2 ||theta||^2`.\n      estimation_mode: The type of curvature estimator to use. One of: *\n        'fisher_gradients' - the basic estimation approach from the original\n        K-FAC paper. (Default) * 'fisher_curvature_prop' - method which\n        estimates the Fisher using self-products of random 1/-1 vectors times\n        \"half-factors\" of the\n              Fisher, as described here: https://arxiv.org/abs/1206.6464 *\n                'fisher_exact' - is the obvious generalization of Curvature\n                Propagation to compute the exact Fisher (modulo any additional\n                diagonal or Kronecker approximations) by looping over one-hot\n                vectors for each coordinate of the output instead of using 1/-1\n                vectors. It is more expensive to compute than the other three\n                options by a factor equal to the output dimension, roughly\n                speaking. * 'fisher_empirical' - computes the 'empirical' Fisher\n                information matrix (which uses the data's distribution for the\n                targets, as opposed to the true Fisher which uses the model's\n                distribution) and requires that each registered loss have\n                specified targets. * 'ggn_curvature_prop' - Analogous to\n                fisher_curvature_prop, but estimates the Generalized\n                Gauss-Newton matrix (GGN). * 'ggn_exact'- Analogous to\n                fisher_exact, but estimates the Generalized Gauss-Newton matrix\n                (GGN).\n      params_index: The index of the arguments accepted by `func` which\n        correspond to parameters.\n      layer_tag_to_block_cls: An optional dict mapping tags to specific classes\n        of block approximations, which to override the default ones.\n    \"\"\"\n    if estimation_mode not in (\"fisher_gradients\", \"fisher_empirical\",\n                               \"fisher_exact\", \"fisher_curvature_prop\",\n                               \"ggn_exact\", \"ggn_curvature_prop\"):\n      raise ValueError(f\"Unrecognised estimation_mode={estimation_mode}.\")\n    super().__init__()\n    self.tagged_func = tagged_func\n    self.l2_reg = l2_reg\n    self.estimation_mode = estimation_mode\n    self.params_index = params_index\n    self.vjp = tracer.trace_estimator_vjp(self.tagged_func)\n\n    # Figure out the mapping from layer\n    self.layer_tag_to_block_cls = curvature_blocks.copy_default_tag_to_block()\n    if layer_tag_to_block_cls is None:\n      layer_tag_to_block_cls = dict()\n    layer_tag_to_block_cls = dict(**layer_tag_to_block_cls)\n    self.layer_tag_to_block_cls.update(layer_tag_to_block_cls)\n\n    # Create the blocks\n    self._in_tree = jax.tree_structure(func_args)\n    self._jaxpr = jax.make_jaxpr(self.tagged_func)(*func_args).jaxpr\n    self._layer_tags, self._loss_tags = tracer.extract_tags(self._jaxpr)\n    self.blocks = collections.OrderedDict()\n    counters = dict()\n    for eqn in self._layer_tags:\n      cls = self.layer_tag_to_block_cls[eqn.primitive.name]\n      c = counters.get(cls.__name__, 0)\n      self.blocks[cls.__name__ + \"_\" + str(c)] = cls(eqn)\n      counters[cls.__name__] = c + 1\n\n  @property\n  def diagonal_weight(self) -> jnp.ndarray:\n    return self.l2_reg + self.damping\n\n  def vectors_to_blocks(\n      self,\n      parameter_structured_vector: Any,\n  ) -> Sequence[BlockVector]:\n    \"\"\"Splits the parameters to values for the corresponding blocks.\"\"\"\n    in_vars = jax.tree_unflatten(self._in_tree, self._jaxpr.invars)\n    params_vars = in_vars[self.params_index]\n    params_vars_flat = jax.tree_flatten(params_vars)[0]\n    params_values_flat = jax.tree_flatten(parameter_structured_vector)[0]\n    assert len(params_vars_flat) == len(params_values_flat)\n    params_dict = dict(zip(params_vars_flat, params_values_flat))\n    per_block_vectors = []\n    for eqn in self._layer_tags:\n      if eqn.primitive.name == \"generic_tag\":\n        block_vars = eqn.invars\n      else:\n        block_vars = eqn.primitive.split_all_inputs(eqn.invars)[2]  # pytype: disable=attribute-error  # trace-all-classes\n      per_block_vectors.append(tuple(params_dict.pop(v) for v in block_vars))\n    if params_dict:\n      raise ValueError(f\"From the parameters the following structure is not \"\n                       f\"assigned to any block: {params_dict}. Most likely \"\n                       f\"this part of the parameters is not part of the graph \"\n                       f\"reaching the losses.\")\n    return tuple(per_block_vectors)\n\n  def blocks_to_vectors(self, per_block_vectors: Sequence[BlockVector]) -> Any:\n    \"\"\"Reverses the function self.vectors_to_blocks.\"\"\"\n    in_vars = jax.tree_unflatten(self._in_tree, self._jaxpr.invars)\n    params_vars = in_vars[self.params_index]\n    assigned_dict = dict()\n    for eqn, block_values in zip(self._layer_tags, per_block_vectors):\n      if eqn.primitive.name == \"generic_tag\":\n        block_params = eqn.invars\n      else:\n        block_params = eqn.primitive.split_all_inputs(eqn.invars)[2]  # pytype: disable=attribute-error  # trace-all-classes\n      assigned_dict.update(zip(block_params, block_values))\n    params_vars_flat, params_tree = jax.tree_flatten(params_vars)\n    params_values_flat = [assigned_dict[v] for v in params_vars_flat]\n    assert len(params_vars_flat) == len(params_values_flat)\n    return jax.tree_unflatten(params_tree, params_values_flat)\n\n  def init(\n      self,\n      rng: jnp.ndarray,\n      init_damping: Optional[jnp.ndarray],\n  ) -> Mapping[str, Any]:\n    \"\"\"Returns an initialized variables for the curvature approximations and the inverses..\"\"\"\n    return dict(\n        blocks=collections.OrderedDict(\n            (name, block.init(block_rng))  #\n            for (name, block), block_rng  #\n            in zip(self.blocks.items(), jnr.split(rng, len(self.blocks)))),\n        damping=init_damping)\n\n  @property\n  def mat_type(self) -> str:\n    return self.estimation_mode.split(\"_\")[0]\n\n  def vec_block_apply(\n      self,\n      func: Callable[[_CurvatureBlock, BlockVector], BlockVector],\n      parameter_structured_vector: Any,\n  ) -> Any:\n    \"\"\"Executes func for each approximation block on vectors.\"\"\"\n    per_block_vectors = self.vectors_to_blocks(parameter_structured_vector)\n    assert len(per_block_vectors) == len(self.blocks)\n    results = jax.tree_map(func, tuple(self.blocks.values()),\n                                per_block_vectors)\n    parameter_structured_result = self.blocks_to_vectors(results)\n    utils.check_structure_shapes_and_dtype(parameter_structured_vector,\n                                           parameter_structured_result)\n    return parameter_structured_result\n\n  def multiply_inverse(self, parameter_structured_vector: Any) -> Any:\n    \"\"\"Multiplies the vectors by the corresponding (damped) inverses of the blocks.\n\n    Args:\n      parameter_structured_vector: Structure equivalent to the parameters of the\n        model.\n\n    Returns:\n      A structured identical to `vectors` containing the product.\n    \"\"\"\n    return self.multiply_matpower(parameter_structured_vector, -1)\n\n  def multiply(self, parameter_structured_vector: Any) -> Any:\n    \"\"\"Multiplies the vectors by the corresponding (damped) blocks.\n\n    Args:\n      parameter_structured_vector: A vector in the same structure as the\n        parameters of the model.\n\n    Returns:\n      A structured identical to `vectors` containing the product.\n    \"\"\"\n    return self.multiply_matpower(parameter_structured_vector, 1)\n\n  def multiply_matpower(\n      self,\n      parameter_structured_vector: _StructureT,\n      exp: int,\n  ) -> _StructureT:\n    \"\"\"Multiplies the vectors by the corresponding matrix powers of the blocks.\n\n    Args:\n      parameter_structured_vector: A vector in the same structure as the\n        parameters of the model.\n      exp: A float representing the power to raise the blocks by before\n        multiplying it by the vector.\n\n    Returns:\n      A structured identical to `vectors` containing the product.\n    \"\"\"\n\n    def func(block: _CurvatureBlock, vec: BlockVector) -> BlockVector:\n      return block.multiply_matpower(vec, exp, self.diagonal_weight)\n\n    return self.vec_block_apply(func, parameter_structured_vector)\n\n  def update_curvature_matrix_estimate(\n      self,\n      ema_old: Union[float, jnp.ndarray],\n      ema_new: Union[float, jnp.ndarray],\n      batch_size: int,\n      rng: jnp.ndarray,\n      func_args: Sequence[Any],\n      pmap_axis_name: str,\n  ) -> None:\n    \"\"\"Updates the curvature estimate.\"\"\"\n\n    # Compute the losses and the VJP function from the function inputs\n    losses, losses_vjp = self.vjp(func_args)\n\n    # Helper function that updates the blocks given a vjp vector\n    def _update_blocks(vjp_vec_, ema_old_, ema_new_):\n      blocks_info_ = losses_vjp(vjp_vec_)\n      for block_, block_info_ in zip(self.blocks.values(), blocks_info_):\n        block_.update_curvature_matrix_estimate(\n            info=block_info_,\n            batch_size=batch_size,\n            ema_old=ema_old_,\n            ema_new=ema_new_,\n            pmap_axis_name=pmap_axis_name)\n\n    if self.estimation_mode == \"fisher_gradients\":\n      keys = jnr.split(rng, len(losses)) if len(losses) > 1 else [rng]\n      vjp_vec = tuple(\n          loss.grad_of_evaluate_on_sample(key, coefficient_mode=\"sqrt\")\n          for loss, key in zip(losses, keys))\n      _update_blocks(vjp_vec, ema_old, ema_new)\n\n    elif self.estimation_mode in (\"fisher_curvature_prop\",\n                                  \"ggn_curvature_prop\"):\n      keys = jnr.split(rng, len(losses)) if len(losses) > 1 else [rng]\n      vjp_vec = []\n      for loss, key in zip(losses, keys):\n        if self.estimation_mode == \"fisher_curvature_prop\":\n          random_b = jnr.bernoulli(key, shape=loss.fisher_factor_inner_shape())\n          vjp_vec.append(loss.multiply_fisher_factor(random_b * 2.0 - 1.0))\n        else:\n          random_b = jnr.bernoulli(key, shape=loss.ggn_factor_inner_shape())\n          vjp_vec.append(loss.multiply_ggn_factor(random_b * 2.0 - 1.0))\n      _update_blocks(tuple(vjp_vec), ema_old, ema_new)\n\n    elif self.estimation_mode in (\"fisher_exact\", \"ggn_exact\"):\n      # We use the following trick to simulate summation. The equation is:\n      #   estimate = ema_old * estimate + ema_new * (sum_i estimate_index_i)\n      #   weight = ema_old * weight + ema_new\n      # Instead we update the estimate n times with the following updates:\n      #   for k = 1\n      #     estimate_k = ema_old * estimate + (ema_new/n) * (n*estimate_index_k)\n      #     weight_k = ema_old * weight + (ema_new/n)\n      #   for k > 1:\n      #     estimate_k = 1.0 * estimate_k-1 + (ema_new/n) * (n*estimate_index_k)\n      #     weight_k = 1.0 * weight_k-1 + (ema_new/n)\n      # Which is mathematically equivalent to the original version.\n      zero_tangents = jax.tree_map(jnp.zeros_like,\n                                   list(loss.inputs for loss in losses))\n      if self.estimation_mode == \"fisher_exact\":\n        num_indices = [\n            (l, int(np.prod(l.fisher_factor_inner_shape[1:]))) for l in losses\n        ]\n      else:\n        num_indices = [\n            (l, int(np.prod(l.ggn_factor_inner_shape()))) for l in losses\n        ]\n      total_num_indices = sum(n for _, n in num_indices)\n      for i, (loss, loss_num_indices) in enumerate(num_indices):\n        for index in range(loss_num_indices):\n          vjp_vec = zero_tangents.copy()\n          if self.estimation_mode == \"fisher_exact\":\n            vjp_vec[i] = loss.multiply_fisher_factor_replicated_one_hot([index])\n          else:\n            vjp_vec[i] = loss.multiply_ggn_factor_replicated_one_hot([index])\n          if isinstance(vjp_vec[i], jnp.ndarray):\n            # In the special case of only one parameter, it still needs to be a\n            # tuple for the tangents.\n            vjp_vec[i] = (vjp_vec[i],)\n          vjp_vec[i] = jax.tree_map(lambda x: x * total_num_indices, vjp_vec[i])\n          _update_blocks(tuple(vjp_vec), ema_old, ema_new / total_num_indices)\n          ema_old = 1.0\n\n    elif self.estimation_mode == \"fisher_empirical\":\n      raise NotImplementedError()\n    else:\n      raise ValueError(f\"Unrecognised estimation_mode={self.estimation_mode}\")\n\n  def update_curvature_estimate_inverse(\n      self,\n      pmap_axis_name: str,\n      state: _OptionalStateT,\n  ) -> _OptionalStateT:\n    if state is not None:\n      old_state = self.get_state()\n      self.set_state(state)\n    for block in self.blocks.values():\n      block.update_curvature_inverse_estimate(self.diagonal_weight,\n                                              pmap_axis_name)\n    if state is None:\n      return None\n    else:\n      state = self.pop_state()\n      self.set_state(old_state)\n      return state\n"
  },
  {
    "path": "kfac_ferminet_alpha/example.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Example of running KFAC.\"\"\"\nfrom absl import app\nfrom absl import flags\nimport jax\nimport jax.numpy as jnp\n\nimport numpy as np\nimport kfac_ferminet_alpha as kfac_ferminet_alpha\nfrom kfac_ferminet_alpha import utils\n\n\nTRAINING_STEPS = flags.DEFINE_integer(\n    name=\"training_steps\",\n    default=100,\n    help=\"Number of training steps to perform\")\nBATCH_SIZE = flags.DEFINE_integer(\n    name=\"batch_size\", default=128, help=\"Batch size\")\nLEARNING_RATE = flags.DEFINE_float(\n    name=\"learning_rate\", default=1e-3, help=\"Learning rate\")\nL2_REG = flags.DEFINE_float(\n    name=\"l2_reg\", default=1e-3, help=\"L2 regularization coefficient\")\nMOMENTUM = flags.DEFINE_float(\n    name=\"momentum\", default=0.8, help=\"Momentum coefficient\")\nDAMPING = flags.DEFINE_float(\n    name=\"damping\", default=1e-2, help=\"Damping coefficient\")\nMULTI_DEVICE = flags.DEFINE_bool(\n    name=\"multi_device\",\n    default=False,\n    help=\"Whether the computation should be replicated across multiple devices\")\nSEED = flags.DEFINE_integer(name=\"seed\", default=12412321, help=\"JAX RNG seed\")\n\n\ndef glorot_uniform(shape, key):\n  dim_in = np.prod(shape[:-1])\n  dim_out = shape[-1]\n  c = jnp.sqrt(6 / (dim_in + dim_out))\n  return jax.random.uniform(key, shape=shape, minval=-c, maxval=c)\n\n\ndef fully_connected_layer(params, x):\n  w, b = params\n  return jnp.matmul(x, w) + b[None]\n\n\ndef model_init(rng_key, batch, encoder_sizes=(1000, 500, 250, 30)):\n  \"\"\"Initialize the standard autoencoder.\"\"\"\n  x_size = batch.shape[-1]\n  decoder_sizes = encoder_sizes[len(encoder_sizes) - 2::-1]\n  sizes = (x_size,) + encoder_sizes + decoder_sizes + (x_size,)\n  keys = jax.random.split(rng_key, len(sizes) - 1)\n  params = []\n  for rng_key, dim_in, dim_out in zip(keys, sizes, sizes[1:]):\n    # Glorot uniform initialization\n    w = glorot_uniform((dim_in, dim_out), rng_key)\n    b = jnp.zeros([dim_out])\n    params.append((w, b))\n  return params, None\n\n\ndef model_loss(params, inputs, l2_reg):\n  \"\"\"Evaluate the standard autoencoder.\"\"\"\n  h = inputs.reshape([inputs.shape[0], -1])\n  for i, layer_params in enumerate(params):\n    h = fully_connected_layer(layer_params, h)\n    # Last layer does not have a nonlinearity\n    if i % 4 != 3:\n      h = jnp.tanh(h)\n  l2_value = 0.5 * sum(jnp.square(p).sum() for p in jax.tree_leaves(params))\n  error = jax.nn.sigmoid(h) - inputs.reshape([inputs.shape[0], -1])\n  mean_squared_error = jnp.mean(jnp.sum(error * error, axis=1), axis=0)\n  regularized_loss = mean_squared_error + l2_reg * l2_value\n\n  return regularized_loss, dict(mean_squared_error=mean_squared_error)\n\n\ndef random_data(multi_device, batch_shape, rng):\n  if multi_device:\n    shape = (multi_device,) + tuple(batch_shape)\n  else:\n    shape = tuple(batch_shape)\n  while True:\n    rng, key = jax.random.split(rng)\n    yield jax.random.normal(key, shape)\n\n\ndef main(argv):\n  del argv  # Unused.\n\n  learning_rate = jnp.asarray([LEARNING_RATE.value])\n  momentum = jnp.asarray([MOMENTUM.value])\n  damping = jnp.asarray([DAMPING.value])\n\n  # RNG keys\n  global_step = jnp.zeros([])\n  rng = jax.random.PRNGKey(SEED.value)\n  params_key, opt_key, step_key, data_key = jax.random.split(rng, 4)\n  dataset = random_data(MULTI_DEVICE.value, (BATCH_SIZE.value, 20), data_key)\n  example_batch = next(dataset)\n\n  if MULTI_DEVICE.value:\n    global_step = utils.replicate_all_local_devices(global_step)\n    learning_rate = utils.replicate_all_local_devices(learning_rate)\n    momentum = utils.replicate_all_local_devices(momentum)\n    damping = utils.replicate_all_local_devices(damping)\n    params_key, opt_key = utils.replicate_all_local_devices(\n        (params_key, opt_key))\n    step_key = utils.make_different_rng_key_on_all_devices(step_key)\n    split_key = jax.pmap(lambda x: tuple(jax.random.split(x)))\n    jit_init_parameters_func = jax.pmap(model_init)\n  else:\n    split_key = jax.random.split\n    jit_init_parameters_func = jax.jit(model_init)\n\n  # Initialize or load parameters\n  params, func_state = jit_init_parameters_func(params_key, example_batch)\n\n  # Make optimizer\n  optim = kfac_ferminet_alpha.Optimizer(\n      value_and_grad_func=jax.value_and_grad(\n          lambda p, x: model_loss(p, x, L2_REG.value), has_aux=True),\n      l2_reg=L2_REG.value,\n      value_func_has_aux=True,\n      value_func_has_state=False,\n      value_func_has_rng=False,\n      learning_rate_schedule=None,\n      momentum_schedule=None,\n      damping_schedule=None,\n      norm_constraint=1.0,\n      num_burnin_steps=10,\n  )\n\n  # Initialize optimizer\n  opt_state = optim.init(params, opt_key, example_batch, func_state)\n\n  for t in range(TRAINING_STEPS.value):\n    step_key, key_t = split_key(step_key)\n    params, opt_state, stats = optim.step(\n        params,\n        opt_state,\n        key_t,\n        dataset,\n        learning_rate=learning_rate,\n        momentum=momentum,\n        damping=damping)\n    global_step = global_step + 1\n\n    # Log any of the statistics\n    print(f\"iteration: {t}\")\n    print(f\"mini-batch loss = {stats['loss']}\")\n    if \"aux\" in stats:\n      for k, v in stats[\"aux\"].items():\n        print(f\"{k} = {v}\")\n    print(\"----\")\n\n\nif __name__ == \"__main__\":\n  app.run(main)\n"
  },
  {
    "path": "kfac_ferminet_alpha/layers_and_loss_tags.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"A module for registering already known functions for tagging patterns.\"\"\"\nimport functools\n\nfrom typing import Sequence, Tuple, TypeVar\n\nimport jax\nfrom jax import core as jax_core\nfrom jax import lax\nfrom jax import lib as jax_lib\nfrom jax.interpreters import batching as jax_batching\nimport jax.numpy as jnp\n\n_T = TypeVar(\"_T\")\n\n\nclass LossTag(jax_core.Primitive):\n  \"\"\"A tagging primitive specifically for losses.\"\"\"\n  multiple_results = True\n\n  def __init__(self, cls, num_inputs: int, num_targets: int = 1):\n    super().__init__(cls.__name__ + \"_tag\")\n    self._cls = cls\n    self._num_inputs = num_inputs\n    self._num_targets = num_targets\n    jax.xla.translations[self] = self.xla_translation\n    jax.ad.primitive_jvps[self] = self.jvp\n    # This line defines how does the tag behave under vmap. It is required for\n    # any primitive that can be used inside a vmap. The reason why we want to\n    # allow this is two fold - one to not break user code when the tags are not\n    # used at all, and two - to be able to define a network with code for a\n    # single example which is the vmap-ed for a batch.\n    jax_batching.primitive_batchers[self] = self.batching\n\n  @property\n  def num_inputs(self) -> int:\n    return self._num_inputs\n\n  @property\n  def num_targets(self) -> int:\n    return self._num_targets\n\n  def loss(self, *args, weight: float = 1.0, **kwargs):\n    return self._cls(*args, weight=weight, **kwargs)\n\n  def loss_evaluate(self, *args, weight: float = 1.0, **kwargs):\n    return self.loss(*args, weight=weight, **kwargs).evaluate()\n\n  def get_outputs(self, *args, weight: float, return_loss: bool, **kwargs):\n    if len(args) < self.num_inputs:\n      raise ValueError(\"Inputs to the tag are not enough.\")\n    if len(args) < self.num_inputs + self.num_targets:\n      if len(args) != self.num_inputs:\n        raise ValueError(\"Inputs to the tag are not quite enough.\")\n      if return_loss:\n        raise ValueError(\"Can not have return_loss=True when there are no \"\n                         \"targets.\")\n      return args\n    if len(args) > self.num_inputs + self.num_targets:\n      raise ValueError(\"Inputs to the tag are too many.\")\n    if return_loss:\n      return self.loss(*args, weight=weight, **kwargs).evaluate()\n    else:\n      return args\n\n  def impl(self, *args, weight: float, return_loss: bool, **kwargs):\n    return self.get_outputs(*args, weight=weight, return_loss=return_loss)\n\n  def abstract_eval(self, *args, weight: float, return_loss: bool, **kwargs):\n    jax_version = (\n        jax.__version_info__ if hasattr(jax, \"__version_info__\")\n        else tuple(map(int, jax.__version__.split(\".\"))))\n    if jax_version > (0, 3, 4):\n      return (self.get_outputs(*args, weight=weight, return_loss=return_loss),\n              jax_core.no_effects)\n    return self.get_outputs(*args, weight=weight, return_loss=return_loss)\n\n  def xla_translation(\n      self,\n      c,\n      *args,\n      weight: float = 1.0,\n      return_loss: bool = False,\n      **kwargs,\n  ):\n    outputs = self.get_outputs(\n        *args, weight=weight, return_loss=return_loss, **kwargs)\n    if isinstance(outputs, tuple):\n      return jax_lib.xla_client.ops.Tuple(c, outputs)\n    return outputs\n\n  def jvp(\n      self,\n      arg_values,\n      arg_tangents,\n      weight: float,\n      return_loss: bool,\n      **kwargs,\n  ):\n    if len(arg_values) != len(arg_tangents):\n      raise ValueError(\"Values and tangents are not the same length.\")\n    primal_output = self.bind(\n        *arg_values, weight=weight, return_loss=return_loss, **kwargs)\n    if len(arg_values) == self.num_inputs:\n      tangents_out = self.get_outputs(\n          *arg_tangents, weight=weight, return_loss=return_loss, **kwargs)\n    elif return_loss:\n      tangents_out = jax.jvp(\n          functools.partial(self.loss_evaluate, weight=weight, **kwargs),\n          arg_tangents, arg_tangents)[1]\n    else:\n      tangents_out = arg_tangents\n    return primal_output, tangents_out\n\n  def batching(self, batched_args, batched_dims, **kwargs):\n    return self.bind(*batched_args, **kwargs), batched_dims[0]\n\n\nclass LayerTag(jax_core.Primitive):\n  \"\"\"A tagging primitive that is used to mark/tag computation.\"\"\"\n\n  def __init__(self, name: str, num_inputs: int, num_outputs: int):\n    super().__init__(name)\n    if num_outputs > 1:\n      raise NotImplementedError(\n          f\"Only single outputs are supported, got: num_outputs={num_outputs}\")\n    self._num_outputs = num_outputs\n    self._num_inputs = num_inputs\n    jax.xla.translations[self] = self.xla_translation\n    jax.ad.deflinear(self, self.transpose)\n    jax.ad.primitive_transposes[self] = self.transpose\n    # This line defines how does the tag behave under vmap. It is required for\n    # any primitive that can be used inside a vmap. The reason why we want to\n    # allow this is two fold - one to not break user code when the tags are not\n    # used at all, and two - to be able to define a network with code for a\n    # single example which is the vmap-ed for a batch.\n    jax_batching.primitive_batchers[self] = self.batching\n\n  @property\n  def num_outputs(self) -> int:\n    return self._num_outputs\n\n  @property\n  def num_inputs(self) -> int:\n    return self._num_inputs\n\n  def split_all_inputs(\n      self,\n      all_inputs: Sequence[_T],\n  ) -> Tuple[Sequence[_T], Sequence[_T], Sequence[_T]]:\n    outputs = tuple(all_inputs[:self.num_outputs])\n    inputs = tuple(all_inputs[self.num_outputs:self.num_outputs +\n                              self.num_inputs])\n    params = tuple(all_inputs[self.num_outputs + self.num_inputs:])\n    return outputs, inputs, params\n\n  def get_outputs(self, *operands: _T, **kwargs) -> _T:\n    assert self.num_outputs == 1\n    return operands[0]\n\n  def xla_translation(self, c, *operands: _T, **kwargs) -> _T:\n    return self.get_outputs(*operands, **kwargs)\n\n  @staticmethod\n  def transpose(cotangent, *operands, **kwargs):\n    return (cotangent,) + (None,) * (len(operands) - 1)\n\n  def impl(self, *operands, **kwargs):\n    return self.get_outputs(*operands, **kwargs)\n\n  def abstract_eval(self, *abstract_operands, **kwargs):\n    jax_version = (\n        jax.__version_info__ if hasattr(jax, \"__version_info__\")\n        else tuple(map(int, jax.__version__.split(\".\"))))\n    if jax_version > (0, 3, 4):\n      return self.get_outputs(*abstract_operands, **kwargs), jax_core.no_effects\n    return self.get_outputs(*abstract_operands, **kwargs)\n\n  def batching(self, batched_operands, batched_dims, **kwargs):\n    return self.bind(*batched_operands, **kwargs), batched_dims[0]\n\n\n#   _____                      _\n#  / ____|                    (_)\n# | |  __  ___ _ __   ___ _ __ _  ___\n# | | |_ |/ _ \\ '_ \\ / _ \\ '__| |/ __|\n# | |__| |  __/ | | |  __/ |  | | (__\n#  \\_____|\\___|_| |_|\\___|_|  |_|\\___|\n#\n#\n\ngeneric_tag = LayerTag(name=\"generic_tag\", num_inputs=0, num_outputs=1)\n\n\ndef register_generic(parameter: _T) -> _T:\n  return generic_tag.bind(parameter)\n\n\n# _____\n# |  __ \\\n# | |  | | ___ _ __  ___  ___\n# | |  | |/ _ \\ '_ \\/ __|/ _ \\\n# | |__| |  __/ | | \\__ \\  __/\n# |_____/ \\___|_| |_|___/\\___|\n#\n\ndense_tag = LayerTag(name=\"dense_tag\", num_inputs=1, num_outputs=1)\n\n\ndef register_dense(y, x, w, b=None):\n  if b is None:\n    return dense_tag.bind(y, x, w)\n  return dense_tag.bind(y, x, w, b)\n\n\ndef dense_func(x, params):\n  \"\"\"Example of a dense layer function.\"\"\"\n  w = params[0]\n  y = jnp.matmul(x, w)\n  if len(params) == 1:\n    # No bias\n    return y\n  # Add bias\n  return y + params[1]\n\n\ndef dense_tagging(jaxpr, inverse_map, values_map):\n  \"\"\"Correctly registers a dense layer pattern.\"\"\"\n  del inverse_map\n  in_values = [values_map[v] for v in jaxpr.invars]\n  out_values = [values_map[v] for v in jaxpr.outvars]\n  return register_dense(out_values[0], *in_values)\n\n\n#  ___  _____     _____                      _       _   _\n# |__ \\|  __ \\   / ____|                    | |     | | (_)\n#    ) | |  | | | |     ___  _ ____   _____ | |_   _| |_ _  ___  _ __\n#   / /| |  | | | |    / _ \\| '_ \\ \\ / / _ \\| | | | | __| |/ _ \\| \"_ \\\n#  / /_| |__| | | |___| (_) | | | \\ V / (_) | | |_| | |_| | (_) | | | |\n# |____|_____/   \\_____\\___/|_| |_|\\_/ \\___/|_|\\__,_|\\__|_|\\___/|_| |_|\n#\n\nconv2d_tag = LayerTag(name=\"conv2d_tag\", num_inputs=1, num_outputs=1)\n\n\ndef register_conv2d(y, x, w, b=None, **kwargs):\n  if b is None:\n    return conv2d_tag.bind(y, x, w, **kwargs)\n  return conv2d_tag.bind(y, x, w, b, **kwargs)\n\n\ndef conv2d_func(x, params):\n  \"\"\"Example of a conv2d layer function.\"\"\"\n  w = params[0]\n  y = lax.conv_general_dilated(\n      x,\n      w,\n      window_strides=(2, 2),\n      padding=\"SAME\",\n      dimension_numbers=(\"NHWC\", \"HWIO\", \"NHWC\"))\n  if len(params) == 1:\n    # No bias\n    return y\n  # Add bias\n  return y + params[1][None, None, None]\n\n\ndef conv2d_tagging(jaxpr, inverse_map, values_map):\n  \"\"\"Correctly registers a conv2d layer pattern.\"\"\"\n  in_values = [values_map[v] for v in jaxpr.invars]\n  out_values = [values_map[v] for v in jaxpr.outvars]\n  keys = [k for k in inverse_map.keys() if isinstance(k, str)]\n  keys = [k for k in keys if k.startswith(\"conv_general_dilated\")]\n  if len(keys) != 1:\n    raise ValueError(\"Did not find any conv_general_dilated!\")\n  kwargs = inverse_map[keys[0]].params\n  return register_conv2d(out_values[0], *in_values, **kwargs)\n\n\n#   _____           _                        _    _____ _     _  __ _\n#  / ____|         | |                      | |  / ____| |   (_)/ _| |\n# | (___   ___ __ _| | ___    __ _ _ __   __| | | (___ | |__  _| |_| |_\n#  \\___ \\ / __/ _` | |/ _ \\  / _` | '_ \\ / _` |  \\___ \\| '_ \\| |  _| __|\n#  ____) | (_| (_| | |  __/ | (_| | | | | (_| |  ____) | | | | | | | |_\n# |_____/ \\___\\__,_|_|\\___|  \\__,_|_| |_|\\__,_| |_____/|_| |_|_|_|  \\__|\n#\n\nscale_and_shift_tag = LayerTag(\n    name=\"scale_and_shift_tag\", num_inputs=1, num_outputs=1)\n\n\ndef register_scale_and_shift(y, args, has_scale: bool, has_shift: bool):\n  assert has_scale or has_shift\n  x, args = args[0], args[1:]\n  return scale_and_shift_tag.bind(\n      y, x, *args, has_scale=has_scale, has_shift=has_shift)\n\n\ndef scale_and_shift_func(x, params, has_scale: bool, has_shift: bool):\n  \"\"\"Example of a scale and shift function.\"\"\"\n  if has_scale and has_shift:\n    scale, shift = params\n    return x * scale + shift\n  elif has_scale:\n    return x * params[0]\n  elif has_shift:\n    return x + params[0]\n  else:\n    raise ValueError()\n\n\ndef scale_and_shift_tagging(\n    jaxpr,\n    inverse_map,\n    values_map,\n    has_scale: bool,\n    has_shift: bool,\n):\n  \"\"\"Correctly registers a scale and shift layer pattern.\"\"\"\n  del inverse_map\n  in_values = [values_map[v] for v in jaxpr.invars]\n  out_values = [values_map[v] for v in jaxpr.outvars]\n  return register_scale_and_shift(out_values[0], in_values, has_scale,\n                                  has_shift)\n\n\ndef batch_norm_func(\n    inputs: Tuple[jnp.ndarray, jnp.ndarray],\n    params: Tuple[jnp.ndarray, jnp.ndarray],\n) -> jnp.ndarray:\n  \"\"\"Example of batch norm as is defined in Haiku.\"\"\"\n  x, y = inputs\n  scale, shift = params\n  inv = scale * y\n  return x * inv + shift\n\n\ndef batch_norm_tagging_func(\n    jaxpr,\n    inverse_map,\n    values_map,\n    has_scale: bool,\n    has_shift: bool,\n):\n  \"\"\"Correctly registers a batch norm layer pattern as is defined in Haiku.\"\"\"\n  del inverse_map\n  in_values = [values_map[v] for v in jaxpr.invars]\n  out_values = [values_map[v] for v in jaxpr.outvars]\n  # The first two are both multipliers with the scale so we merge them\n  in_values = [in_values[0] * in_values[1]] + in_values[2:]\n  return register_scale_and_shift(out_values[0], in_values, has_scale,\n                                  has_shift)\n"
  },
  {
    "path": "kfac_ferminet_alpha/loss_functions.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Loss functions to be used by LayerCollection.\"\"\"\nimport abc\nfrom typing import Tuple, Optional, Union, Sequence\n\nimport jax\nimport jax.numpy as jnp\n\nfrom kfac_ferminet_alpha import distributions\nfrom kfac_ferminet_alpha import layers_and_loss_tags as tags\nfrom kfac_ferminet_alpha import utils\n\nArrayPair = Tuple[jnp.ndarray, jnp.ndarray]\nFloatArray = Union[float, jnp.ndarray]\nIndex = Tuple[int]\n\n\nclass LossFunction(abc.ABC):\n  \"\"\"Abstract base class for loss functions.\n\n  Note that unlike typical loss functions used in neural networks these are\n  neither summed nor averaged over the batch and hence the output of evaluate()\n  will not be a scalar. It is up to the user to then to correctly manipulate\n  them as needed.\n  \"\"\"\n\n  def __init__(self, weight: FloatArray):\n    self._weight = weight\n\n  @property\n  def weight(self) -> FloatArray:\n    return self._weight\n\n  @property\n  @abc.abstractmethod\n  def targets(self) -> Optional[jnp.ndarray]:\n    \"\"\"The targets being predicted by the model.\n\n    Returns:\n      None or Tensor of appropriate shape for calling self._evaluate() on.\n    \"\"\"\n    pass\n\n  @property\n  @abc.abstractmethod\n  def inputs(self) -> Sequence[jnp.ndarray]:\n    \"\"\"The inputs to the loss function (excluding the targets).\"\"\"\n    pass\n\n  @abc.abstractmethod\n  def copy_with_different_inputs(self, inputs: Sequence[jnp.ndarray]):\n    pass\n\n  def evaluate(\n      self,\n      targets: Optional[jnp.ndarray] = None,\n      coefficient_mode: str = \"regular\",\n  ) -> jnp.ndarray:\n    \"\"\"Evaluate the loss function on the targets.\"\"\"\n    if targets is None and self.targets is None:\n      raise ValueError(\"Cannot evaluate losses with unspecified targets.\")\n    elif targets is None:\n      targets = self.targets\n    if coefficient_mode == \"regular\":\n      multiplier = self.weight\n    elif coefficient_mode == \"sqrt\":\n      multiplier = jnp.sqrt(self.weight)\n    elif coefficient_mode == \"off\":\n      multiplier = 1.0\n    else:\n      raise ValueError(f\"Unrecognized coefficient_mode={coefficient_mode}.\")\n    return self._evaluate(targets) * multiplier\n\n  @abc.abstractmethod\n  def _evaluate(self, targets: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Evaluates the negative log probability of the targets.\n\n    Args:\n      targets: Tensor that distribution can calculate log_prob() of.\n\n    Returns:\n      negative log probability of each target, summed across all targets.\n    \"\"\"\n    pass\n\n  def grad_of_evaluate(\n      self,\n      targets: Optional[jnp.ndarray],\n      coefficient_mode: str,\n  ) -> Sequence[jnp.ndarray]:\n    \"\"\"Evaluates the gradient of the loss function.\n\n    Note that the targets of the loss must not be `None`.\n\n    Args:\n      targets: The potential targets on which to evaluate the gradient.\n      coefficient_mode: The coefficient mode to use for evaluation.\n\n    Returns:\n      The gradient of the loss evaluation function with respect to the inputs.\n    \"\"\"\n    def evaluate_sum(inputs: Sequence[jnp.ndarray]) -> jnp.ndarray:\n      instance = self.copy_with_different_inputs(inputs)\n      return jnp.sum(instance.evaluate(targets, coefficient_mode))\n    return jax.grad(evaluate_sum)(self.inputs)\n\n  def multiply_ggn(self, vector: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Right-multiply a vector by the GGN.\n\n    Here the 'GGN' is the GGN matrix (whose definition is slightly flexible)\n    of the loss function with respect to its inputs.\n\n    Args:\n      vector: The vector to multiply.  Must be the same shape(s) as the 'inputs'\n        property.\n\n    Returns:\n      The vector right-multiplied by the GGN.  Will be of the same shape(s)\n      as the 'inputs' property.\n    \"\"\"\n    return utils.scalar_mul(self.multiply_ggn_unweighted(vector), self.weight)\n\n  @abc.abstractmethod\n  def multiply_ggn_unweighted(self, vector: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Same as `multiply_ggn`, but without taking into account the weight.\"\"\"\n    pass\n\n  def multiply_ggn_factor(self, vector: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Right-multiply a vector by a factor B of the GGN.\n\n    Here the 'GGN' is the GGN matrix (whose definition is slightly flexible)\n    of the loss function with respect to its inputs.  Typically this will be\n    block-diagonal across different cases in the batch, since the loss function\n    is typically summed across cases.\n\n    Note that B can be any matrix satisfying B * B^T = G where G is the GGN,\n    but will agree with the one used in the other methods of this class.\n\n    Args:\n      vector: The vector to multiply.  Must be of the shape given by the\n        'ggn_factor_inner_shape' property.\n\n    Returns:\n      The vector right-multiplied by B.  Will be of the same shape(s) as the\n      'inputs' property.\n    \"\"\"\n    return utils.scalar_mul(\n        self.multiply_ggn_factor_unweighted(vector), jnp.sqrt(self.weight))\n\n  @abc.abstractmethod\n  def multiply_ggn_factor_unweighted(self, vector: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Same as `multiply_ggn_factor`, but without taking into account the weight.\"\"\"\n    pass\n\n  def multiply_ggn_factor_transpose(self, vector: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Right-multiply a vector by the transpose of a factor B of the GGN.\n\n    Here the 'GGN' is the GGN matrix (whose definition is slightly flexible)\n    of the loss function with respect to its inputs.  Typically this will be\n    block-diagonal across different cases in the batch, since the loss function\n    is typically summed across cases.\n\n    Note that B can be any matrix satisfying B * B^T = G where G is the GGN,\n    but will agree with the one used in the other methods of this class.\n\n    Args:\n      vector: The vector to multiply.  Must be the same shape(s) as the 'inputs'\n        property.\n\n    Returns:\n      The vector right-multiplied by B^T.  Will be of the shape given by the\n      'ggn_factor_inner_shape' property.\n    \"\"\"\n    return utils.scalar_mul(\n        self.multiply_ggn_factor_transpose_unweighted(vector),\n        jnp.sqrt(self.weight))\n\n  @abc.abstractmethod\n  def multiply_ggn_factor_transpose_unweighted(\n      self,\n      vector: jnp.ndarray\n  ) -> jnp.ndarray:\n    \"\"\"Same as `multiply_ggn_factor_transpose`, but without taking into account the weight.\"\"\"\n    pass\n\n  def multiply_ggn_factor_replicated_one_hot(self, index: Index) -> jnp.ndarray:\n    \"\"\"Right-multiply a replicated-one-hot vector by a factor B of the GGN.\n\n    Here the 'GGN' is the GGN matrix (whose definition is slightly flexible)\n    of the loss function with respect to its inputs.  Typically this will be\n    block-diagonal across different cases in the batch, since the loss function\n    is typically summed across cases.\n\n    A 'replicated-one-hot' vector means a tensor which, for each slice along the\n    batch dimension (assumed to be dimension 0), is 1.0 in the entry\n    corresponding to the given index and 0 elsewhere.\n\n    Note that B can be any matrix satisfying B * B^T = G where G is the GGN,\n    but will agree with the one used in the other methods of this class.\n\n    Args:\n      index: A tuple representing in the index of the entry in each slice that\n        is 1.0. Note that len(index) must be equal to the number of elements of\n        the 'ggn_factor_inner_shape' tensor minus one.\n\n    Returns:\n      The vector right-multiplied by B^T. Will be of the same shape(s) as the\n      'inputs' property.\n    \"\"\"\n    return utils.scalar_mul(\n        self.multiply_ggn_factor_replicated_one_hot_unweighted(index),\n        jnp.sqrt(self.weight))\n\n  @abc.abstractmethod\n  def multiply_ggn_factor_replicated_one_hot_unweighted(\n      self,\n      index: Index\n  ) -> jnp.ndarray:\n    pass\n\n  @property\n  @abc.abstractmethod\n  def ggn_factor_inner_shape(self) -> Sequence[int]:\n    \"\"\"The shape of the tensor returned by multiply_ggn_factor.\"\"\"\n    pass\n\n\nclass NegativeLogProbLoss(LossFunction):\n  \"\"\"Abstract base class for loss functions that are negative log probs.\"\"\"\n\n  @property\n  def inputs(self):\n    return self.params\n\n  @property\n  @abc.abstractmethod\n  def params(self):\n    \"\"\"Parameters to the underlying distribution.\"\"\"\n    pass\n\n  def multiply_fisher(self, vector: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Right-multiply a vector by the Fisher.\n\n    Args:\n      vector: The vector to multiply.  Must be the same shape(s) as the 'inputs'\n        property.\n\n    Returns:\n      The vector right-multiplied by the Fisher.  Will be of the same shape(s)\n      as the 'inputs' property.\n    \"\"\"\n    return utils.scalar_mul(\n        self.multiply_fisher_unweighted(vector), self.weight)\n\n  @abc.abstractmethod\n  def multiply_fisher_unweighted(self, vector: jnp.ndarray) -> jnp.ndarray:\n    pass\n\n  def multiply_fisher_factor(self, vector: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Right-multiply a vector by a factor B of the Fisher.\n\n    Here the 'Fisher' is the Fisher information matrix (i.e. expected outer-\n    product of gradients) with respect to the parameters of the underlying\n    probability distribution (whose log-prob defines the loss). Typically this\n    will be block-diagonal across different cases in the batch, since the\n    distribution is usually (but not always) conditionally iid across different\n    cases.\n\n    Note that B can be any matrix satisfying B * B^T = F where F is the Fisher,\n    but will agree with the one used in the other methods of this class.\n\n    Args:\n      vector: The vector to multiply.  Must be of the shape given by the\n        'fisher_factor_inner_shape' property.\n\n    Returns:\n      The vector right-multiplied by B. Will be of the same shape(s) as the\n      'inputs' property.\n    \"\"\"\n    return utils.scalar_mul(\n        self.multiply_fisher_factor_unweighted(vector), jnp.sqrt(self.weight))\n\n  @abc.abstractmethod\n  def multiply_fisher_factor_unweighted(\n      self,\n      vector: jnp.ndarray\n  ) -> jnp.ndarray:\n    pass\n\n  def multiply_fisher_factor_transpose(\n      self,\n      vector: jnp.ndarray\n  ) -> jnp.ndarray:\n    \"\"\"Right-multiply a vector by the transpose of a factor B of the Fisher.\n\n    Here the 'Fisher' is the Fisher information matrix (i.e. expected outer-\n    product of gradients) with respect to the parameters of the underlying\n    probability distribution (whose log-prob defines the loss). Typically this\n    will be block-diagonal across different cases in the batch, since the\n    distribution is usually (but not always) conditionally iid across different\n    cases.\n\n    Note that B can be any matrix satisfying B * B^T = F where F is the Fisher,\n    but will agree with the one used in the other methods of this class.\n\n    Args:\n      vector: The vector to multiply.  Must be the same shape(s) as the 'inputs'\n        property.\n\n    Returns:\n      The vector right-multiplied by B^T.  Will be of the shape given by the\n      'fisher_factor_inner_shape' property.\n    \"\"\"\n    return utils.scalar_mul(\n        self.multiply_fisher_factor_transpose_unweighted(vector),\n        jnp.sqrt(self.weight))\n\n  @abc.abstractmethod\n  def multiply_fisher_factor_transpose_unweighted(\n      self,\n      vector: jnp.ndarray\n  ) -> jnp.ndarray:\n    pass\n\n  def multiply_fisher_factor_replicated_one_hot(\n      self,\n      index: Index\n  ) -> jnp.ndarray:\n    \"\"\"Right-multiply a replicated-one-hot vector by a factor B of the Fisher.\n\n    Here the 'Fisher' is the Fisher information matrix (i.e. expected outer-\n    product of gradients) with respect to the parameters of the underlying\n    probability distribution (whose log-prob defines the loss). Typically this\n    will be block-diagonal across different cases in the batch, since the\n    distribution is usually (but not always) conditionally iid across different\n    cases.\n\n    A 'replicated-one-hot' vector means a tensor which, for each slice along the\n    batch dimension (assumed to be dimension 0), is 1.0 in the entry\n    corresponding to the given index and 0 elsewhere.\n\n    Note that B can be any matrix satisfying B * B^T = H where H is the Fisher,\n    but will agree with the one used in the other methods of this class.\n\n    Args:\n      index: A tuple representing in the index of the entry in each slice that\n        is 1.0. Note that len(index) must be equal to the number of elements of\n        the 'fisher_factor_inner_shape' tensor minus one.\n\n    Returns:\n      The vector right-multiplied by B. Will be of the same shape(s) as the\n      'inputs' property.\n    \"\"\"\n    return utils.scalar_mul(\n        self.multiply_fisher_factor_replicated_one_hot_unweighted(index),\n        jnp.sqrt(self.weight))\n\n  @abc.abstractmethod\n  def multiply_fisher_factor_replicated_one_hot_unweighted(\n      self,\n      index: Index\n  ) -> jnp.ndarray:\n    pass\n\n  @property\n  @abc.abstractmethod\n  def fisher_factor_inner_shape(self) -> Sequence[int]:\n    \"\"\"The shape of the tensor returned by multiply_fisher_factor.\"\"\"\n    pass\n\n  @abc.abstractmethod\n  def sample(self, rng_key: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Sample 'targets' from the underlying distribution.\"\"\"\n    pass\n\n  def grad_of_evaluate_on_sample(\n      self,\n      rng_key: jnp.ndarray,\n      coefficient_mode: str,\n  ) -> Sequence[jnp.ndarray]:\n    \"\"\"Evaluates the gradient of the log probability on a random sample.\n\n    Args:\n      rng_key: Jax PRNG key for sampling.\n      coefficient_mode: The coefficient mode to use for evaluation.\n\n    Returns:\n      The gradient of the log probability of targets sampled from the\n      distribution.\n    \"\"\"\n    return self.grad_of_evaluate(self.sample(rng_key), coefficient_mode)\n\n\nclass NaturalParamsNegativeLogProbLoss(NegativeLogProbLoss, abc.ABC):\n  \"\"\"Base class for neg log prob losses whose inputs are 'natural' parameters.\n\n  We will take the GGN of the loss to be the Fisher associated with the\n  distribution, which also happens to be equal to the Hessian for this class\n  of loss functions.  See here: https://arxiv.org/abs/1412.1193\n\n  'Natural parameters' are defined for exponential-family models. See for\n  example: https://en.wikipedia.org/wiki/Exponential_family\n  \"\"\"\n\n  def multiply_ggn_unweighted(self, vector: jnp.ndarray) -> jnp.ndarray:\n    return self.multiply_fisher_unweighted(vector)\n\n  def multiply_ggn_factor_unweighted(self, vector: jnp.ndarray) -> jnp.ndarray:\n    return self.multiply_fisher_factor_unweighted(vector)\n\n  def multiply_ggn_factor_transpose_unweighted(\n      self,\n      vector: jnp.ndarray\n  ) -> jnp.ndarray:\n    return self.multiply_fisher_factor_transpose_unweighted(vector)\n\n  def multiply_ggn_factor_replicated_one_hot_unweighted(\n      self,\n      index: Index\n  ) -> jnp.ndarray:\n    return self.multiply_fisher_factor_replicated_one_hot_unweighted(index)\n\n  @property\n  def ggn_factor_inner_shape(self) -> Sequence[int]:\n    return self.fisher_factor_inner_shape\n\n\nclass DistributionNegativeLogProbLoss(NegativeLogProbLoss):\n  \"\"\"Base class for neg log prob losses that use the distribution classes.\"\"\"\n\n  @property\n  @abc.abstractmethod\n  def dist(self):\n    \"\"\"The underlying distribution instance.\"\"\"\n    pass\n\n  def _evaluate(self, targets: jnp.ndarray):\n    return -self.dist.log_prob(targets)\n\n  def sample(self, rng_key: jnp.ndarray):\n    return self.dist.sample(seed=rng_key)\n\n  @property\n  def fisher_factor_inner_shape(self) -> Sequence[int]:\n    return self.dist.mean().shape\n\n\nclass NormalMeanNegativeLogProbLoss(DistributionNegativeLogProbLoss,\n                                    NaturalParamsNegativeLogProbLoss):\n  \"\"\"Neg log prob loss for a normal distribution parameterized by a mean vector.\n\n\n  Note that the covariance is treated as the identity divided by 2.\n  Also note that the Fisher for such a normal distribution with respect the mean\n  parameter is given by:\n\n     F = (1 / variance) * I\n\n  See for example https://www.ii.pwr.edu.pl/~tomczak/PDF/[JMT]Fisher_inf.pdf.\n  \"\"\"\n\n  def __init__(\n      self,\n      mean: jnp.ndarray,\n      targets: Optional[jnp.ndarray] = None,\n      variance: float = 0.5,\n      weight: float = 1.0,\n  ):\n    super().__init__(weight=weight)\n    self._mean = mean\n    self._targets = targets\n    self._variance = variance\n    if not isinstance(variance, float):\n      raise ValueError(\"The `variance` argument should be python float.\")\n\n  @property\n  def targets(self) -> Optional[jnp.ndarray]:\n    return self._targets\n\n  @property\n  def dist(self):\n    scale_diag = jnp.full_like(self._mean, jnp.sqrt(self._variance))\n    return distributions.MultivariateNormalDiag(self._mean, scale_diag)\n\n  @property\n  def params(self):\n    return self._mean,\n\n  def copy_with_different_inputs(self, inputs: Sequence[jnp.ndarray]):\n    [mean] = inputs\n    return NormalMeanNegativeLogProbLoss(\n        mean=mean,\n        targets=self.targets,\n        variance=self._variance,\n        weight=self.weight,\n    )\n\n  def multiply_fisher_unweighted(self, vector: jnp.ndarray) -> jnp.ndarray:\n    return vector / self._variance\n\n  def multiply_fisher_factor_unweighted(\n      self,\n      vector: jnp.ndarray,\n  ) -> jnp.ndarray:\n    return vector / jnp.sqrt(self._variance)\n\n  def multiply_fisher_factor_transpose_unweighted(\n      self,\n      vector: jnp.ndarray,\n  )  -> jnp.ndarray:\n    return self.multiply_fisher_factor_unweighted(vector)  # it's symmetric\n\n  def multiply_fisher_factor_replicated_one_hot_unweighted(\n      self,\n      index: Index,\n  ) -> jnp.ndarray:\n    assert len(index) == 1, f\"Length of index was {len(index)}.\"\n    index = index[0]\n    ones_slice = jnp.ones([self._mean.shape[0]])[..., None]\n    output_slice = ones_slice / jnp.sqrt(self._variance)\n    return insert_slice_in_zeros(output_slice, 1, self._mean.shape[1], index)\n\n\ndef insert_slice_in_zeros(\n    slice_to_insert: jnp.ndarray,\n    dim: int,\n    dim_size: int,\n    position: int,\n) -> jnp.ndarray:\n  \"\"\"Inserts slice into a larger tensor of zeros.\n\n  Forms a new tensor which is the same shape as slice_to_insert, except that\n  the dimension given by 'dim' is expanded to the size given by 'dim_size'.\n  'position' determines the position (index) at which to insert the slice within\n  that dimension.\n\n  Assumes slice_to_insert.shape[dim] = 1.\n\n  Args:\n    slice_to_insert: The slice to insert.\n    dim: The dimension which to expand with zeros.\n    dim_size: The new size of the 'dim' dimension.\n    position: The position of 'slice_to_insert' in the new tensor.\n\n  Returns:\n    The new tensor.\n\n  Raises:\n    ValueError: If the slice's shape at the given dim is not 1.\n  \"\"\"\n  slice_shape = slice_to_insert.shape\n  if slice_shape[dim] != 1:\n    raise ValueError(f\"Expected slice_to_insert.shape to have {dim} dim of 1,\"\n                     f\" but was {slice_to_insert.shape[dim]}.\")\n\n  before = [0] * int(len(slice_shape))\n  after = before[:]\n  before[dim] = position\n  after[dim] = dim_size - position - 1\n  return jnp.pad(slice_to_insert, list(zip(before, after)))\n\n\n#  _______            _____            _     _             _   _\n# |__   __|          |  __ \\          (_)   | |           | | (_)\n#    | | __ _  __ _  | |__) |___  __ _ _ ___| |_ _ __ __ _| |_ _  ___  _ __\n#    | |/ _` |/ _` | |  _  // _ \\/ _` | / __| __| '__/ _` | __| |/ _ \\| '_ \\\n#    | | (_| | (_| | | | \\ \\  __/ (_| | \\__ \\ |_| | | (_| | |_| | (_) | | | |\n#    |_|\\__,_|\\__, | |_|  \\_\\___|\\__, |_|___/\\__|_|  \\__,_|\\__|_|\\___/|_| |_|\n#              __/ |              __/ |\n#             |___/              |___/\n\n\nNormalMeanNegativeLogProbLoss_tag = tags.LossTag(\n    NormalMeanNegativeLogProbLoss, num_inputs=1)\n\n\ndef register_normal_predictive_distribution(\n    mean: jnp.ndarray,\n    targets: Optional[jnp.ndarray] = None,\n    variance: float = 0.5,\n    weight: float = 1.0,\n):\n  \"\"\"Registers a normal predictive distribution.\n\n  This corresponds to a squared error loss of the form\n     weight/(2*var) * ||target - mean||^2\n\n  Args:\n    mean: A tensor defining the mean vector of the distribution. The first\n      dimension must be the batch size.\n    targets: (OPTIONAL) The targets for the loss function.  Only required if one\n      wants to use the \"empirical Fisher\" instead of the true Fisher (which is\n      controlled by the 'estimation_mode' to the optimizer).\n      (Default: None)\n    variance: float. The variance of the distribution. Note that the default\n      value of 0.5 corresponds to a standard squared error loss weight *\n      ||target - prediction||^2. If you want your squared error loss to be of\n      the form 0.5*coeff*||target - prediction||^2 you should use\n      variance=1.0.\n      (Default: 0.5)\n    weight: A scalar coefficient to multiply the log prob loss associated with\n      this distribution. The Fisher will be multiplied by the corresponding\n      factor. In general this is NOT equivalent to changing the temperature of\n      the distribution, but in the ase of normal distributions it may be.\n      (Default: 1.0)\n\n  Returns:\n    The mean and targets as dependable on the tag.\n  \"\"\"\n  if targets is None:\n    targets = jnp.zeros_like(mean)\n  return NormalMeanNegativeLogProbLoss_tag.bind(\n      mean, targets, variance=variance, weight=weight, return_loss=False)\n\n\ndef register_squared_error_loss(\n    prediction: jnp.ndarray,\n    targets: Optional[jnp.ndarray] = None,\n    weight: float = 1.0,\n):\n  \"\"\"Registers a squared error loss function.\n\n  This assumes the squared error loss of the form ||target - prediction||^2,\n  averaged across the mini-batch. If your loss uses a coefficient of 0.5\n  you need to set the \"weight\" argument to reflect this.\n\n  Args:\n    prediction: The prediction made by the network (i.e. its output). The first\n      dimension must be the batch size.\n    targets: (OPTIONAL) The targets for the loss function.  Only required if one\n      wants to use the \"empirical Fisher\" instead of the true Fisher (which is\n      controlled by the 'estimation_mode' to the optimizer).\n      (Default: None)\n    weight: A float coefficient to multiply the loss function by.\n      (Default: 1.0)\n  Returns:\n    The mean and targets as dependable on the tag.\n  \"\"\"\n  return register_normal_predictive_distribution(\n      prediction, targets=targets, variance=0.5, weight=weight)\n"
  },
  {
    "path": "kfac_ferminet_alpha/optimizer.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"A module for the main curvature optimizer class.\"\"\"\nfrom typing import Any, Callable, Iterator, Mapping, Optional, Sequence, Tuple, Union\n\nimport jax\nimport jax.lax as lax\nimport jax.numpy as jnp\nimport jax.random as jnr\n\nfrom kfac_ferminet_alpha import estimator\nfrom kfac_ferminet_alpha import tag_graph_matcher as tgm\nfrom kfac_ferminet_alpha import utils\n\nScheduleType = Callable[[jnp.ndarray], Optional[jnp.ndarray]]\nParameters = Any\nBatch = Any\nFuncState = Any\nState = Mapping[str, Any]\n\n\n@utils.Stateful.infer_class_state\nclass Optimizer(utils.Stateful):\n  \"\"\"The default optimizer class.\"\"\"\n  velocities: Parameters\n  estimator: estimator.CurvatureEstimator\n  step_counter: jnp.ndarray\n\n  def __init__(\n      self,\n      value_and_grad_func,\n      l2_reg: Union[float, jnp.ndarray],\n      value_func_has_aux: bool = False,\n      value_func_has_state: bool = False,\n      value_func_has_rng: bool = False,\n      learning_rate_schedule: Optional[ScheduleType] = None,\n      momentum_schedule: Optional[ScheduleType] = None,\n      damping_schedule: Optional[ScheduleType] = None,\n      min_damping: Union[float, jnp.ndarray] = 1e-8,\n      max_damping: Union[float, jnp.ndarray] = jnp.inf,\n      norm_constraint: Optional[Union[float, jnp.ndarray]] = None,\n      num_burnin_steps: int = 10,\n      estimation_mode: str = \"fisher_gradients\",\n      curvature_ema: Union[float, jnp.ndarray] = 0.95,\n      inverse_update_period: int = 5,\n      register_only_generic: bool = False,\n      layer_tag_to_block_cls: Optional[estimator.TagMapping] = None,\n      patterns_to_skip: Sequence[str] = (),\n      donate_parameters: bool = False,\n      donate_optimizer_state: bool = False,\n      donate_batch_inputs: bool = False,\n      donate_func_state: bool = False,\n      batch_process_func: Optional[Callable[[Any], Any]] = None,\n      multi_device: bool = False,\n      use_jax_cond: bool = True,\n      debug: bool = False,\n      pmap_axis_name=\"kfac_axis\",\n  ):\n    \"\"\"Initializes the K-FAC optimizer with the given settings.\n\n    Args:\n      value_and_grad_func: Python callable. The function should return the value\n        of the loss to be optimized and its gradients. If the argument\n          `value_func_has_aux` is `False` then the interface should be: loss,\n            loss_grads = value_and_grad_func(params, batch)\n          If `value_func_has_aux` is `True` then the interface should be: (loss,\n            aux), loss_grads = value_and_grad_func(params, batch)\n      l2_reg: Scalar. Set this value to tell the optimizer what L2\n        regularization coefficient you are using (if any). Note the coefficient\n        appears in the regularizer as coeff / 2 * sum(param**2). Note that the\n        user is still responsible for adding regularization to the loss.\n      value_func_has_aux: Boolean. Specifies whether the provided callable\n        `value_and_grad_func` returns the loss value only, or also some\n          auxiliary data. (Default: False)\n      value_func_has_state: Boolean. Specifies whether the provided callable\n        `value_and_grad_func` has a persistent state that is inputed and\n          it also outputs an update version of it. (Default: False)\n      value_func_has_rng: Boolean. Specifies whether the provided callable\n        `value_and_grad_func` additionally takes as input an rng key.\n          (Default: False)\n      learning_rate_schedule: Callable. A schedule for the learning rate. This\n        should take as input the current step number and return a single\n          `jnp.ndarray` that represents the learning rate. (Default: None)\n      momentum_schedule: Callable. A schedule for the momentum. This should take\n        as input the current step number and return a single `jnp.ndarray`\n          that represents the momentum. (Default: None)\n      damping_schedule: Callable. A schedule for the damping. This should take\n        as input the current step number and return a single `jnp.ndarray`\n          that represents the learning rate. (Default: None)\n      min_damping: Scalar. Minimum value the damping parameter can take. Note\n        that the default value of 1e-8 is quite arbitrary, and you may have to\n        adjust this up or down for your particular problem. If you are using a\n        non-zero value of l2_reg you *may* be able to set this to\n          zero. (Default: 1e-8)\n      max_damping: Scalar. Maximum value the damping parameter can take.\n          (Default: Infinity)\n      norm_constraint: Scalar. If specified, the update is scaled down so that\n        its approximate squared Fisher norm `v^T F v` is at most the specified\n        value.(Note that here `F` is the approximate curvature matrix, not the\n          exact.) (Default: None)\n      num_burnin_steps: Int. At the start of optimization, e.g. the first step,\n        before performing the actual step the optimizer will perform this many\n        times updates to the curvature approximation without updating the\n          actual parameters. (Default: 10)\n      estimation_mode: String. The type of estimator to use for the curvature\n          matrix. Can be one of: * fisher_empirical * fisher_exact *\n            fisher_gradients * fisher_curvature_prop * ggn_exact *\n            ggn_curvature_prop See the doc-string for CurvatureEstimator (in\n            estimator.py) for a more\n          detailed description of these options. (Default: 'fisher_gradients').\n      curvature_ema: The decay factor used when calculating the covariance\n          estimate moving averages. (Default: 0.95)\n      inverse_update_period: Int. The number of steps in between updating the\n          the computation of the inverse curvature approximation. (Default: 5)\n      register_only_generic: Boolean. Whether when running the auto-tagger to\n        register only generic parameters, or allow it to use the graph matcher\n          to automatically pick up any kind of layer tags. (Default: False)\n      layer_tag_to_block_cls: Dictionary. A mapping from layer tags to block\n        classes which to override the default choices of block approximation for\n        that specific tag. See the doc-string for CurvatureEstimator (in\n        estimator.py) for a more detailed description of this.\n      patterns_to_skip: Tuple. A list of any patterns that should be skipped by\n        the graph matcher when auto-tagging.\n      donate_parameters: Boolean. Whether to use jax's `donate_argnums` to\n        donate the parameter values of each call to `step`. Note that this\n        implies that you will not be able to access the old parameter values'\n        buffers after calling into `step`.\n      donate_optimizer_state: Boolean. Whether to use jax's `donate_argnums` to\n        donate the optimizer state of each call to `step`. Note that this\n        implies that you will not be able to access the old optimizer state\n        values' buffers after calling into `step`.\n      donate_batch_inputs: Boolean. Whether to use jax's `donate_argnums` to\n        donate the batch values of each call to `step`. Note that this implies\n        that you will not be able to access the old batch values' buffers after\n        calling into `step`.\n      donate_func_state: Boolean. Whether to use jax's `donate_argnums` to\n        donate the persistent function state of each call to `step`. Note that\n        this implies that you will not be able to access the old function state\n        values' buffers after calling into `step`.\n      batch_process_func: Callable. A function which to be called on each batch\n        before feeding to the KFAC on device. This could be useful for specific\n        device input optimizations.\n      multi_device: Boolean. Whether to use `pmap` and run the optimizer on\n          multiple devices. (Default: False)\n      use_jax_cond: Not used for the moment.\n      debug: Boolean. If non of the step or init functions would be jitted. Note\n        that this also overrides `multi_device` and prevents using `pmap`.\n          (Default: False)\n      pmap_axis_name: String. The name of the `pmap` axis to use when\n          `multi_device` is set to True. (Default: curvature_axis)\n    \"\"\"\n    super().__init__()\n    self.value_and_grad_func = value_and_grad_func\n    self.value_func_has_aux = value_func_has_aux\n    self.value_func_has_state = value_func_has_state\n    self.value_func_has_rng = value_func_has_rng\n    self.value_func = utils.convert_value_and_grad_to_value_func(\n        value_and_grad_func, has_aux=value_func_has_aux)\n    self.l2_reg = l2_reg\n    self.learning_rate_schedule = learning_rate_schedule\n    if momentum_schedule is not None:\n\n      def schedule_with_first_step_zero(global_step: jnp.ndarray):\n        value = momentum_schedule(global_step)\n        check = jnp.equal(global_step, 0)\n        return check * jnp.zeros_like(value) + (1 - check) * value\n\n      self.momentum_schedule = schedule_with_first_step_zero\n    else:\n      self.momentum_schedule = None\n    self.damping_schedule = damping_schedule\n    self.min_damping = min_damping\n    self.max_damping = max_damping\n    self.norm_constraint = norm_constraint\n    self.num_burnin_steps = num_burnin_steps\n    self.estimation_mode = estimation_mode\n    self.curvature_ema = curvature_ema\n    self.inverse_update_period = inverse_update_period\n    self.register_only_generic = register_only_generic\n    self.layer_tag_to_block_cls = layer_tag_to_block_cls\n    self.patterns_to_skip = patterns_to_skip\n    self.donate_parameters = donate_parameters\n    self.donate_optimizer_state = donate_optimizer_state\n    self.donate_batch_inputs = donate_batch_inputs\n    self.donate_func_state = donate_func_state\n    self.batch_process_func = batch_process_func or (lambda x: x)\n    self.multi_device = multi_device\n    self.use_jax_cond = use_jax_cond\n    self.debug = debug\n    self.pmap_axis_name = pmap_axis_name if multi_device else None\n    self._rng_split = utils.p_split if multi_device else jnr.split\n\n    # Attributes filled in during self.init()\n    self.finalized = False\n    self.tagged_func = None\n    self.flat_params_shapes = None\n    self.params_treedef = None\n    # Special attributes related to jitting/pmap\n    self._jit_init = None\n    self._jit_burnin = None\n    self._jit_step = None\n\n  def finalize(\n      self,\n      params: Parameters,\n      rng: jnp.ndarray,\n      batch: Batch,\n      func_state: Optional[FuncState] = None,\n  ) -> None:\n    \"\"\"Finalizes the optimizer by tracing the model function with the params and batch.\"\"\"\n    if self.finalized:\n      raise ValueError(\"Optimizer has already been finalized.\")\n    if self.multi_device:\n      # We assume that the parameters and batch are replicated, while tracing\n      # must happen with parameters for a single device call\n      params, rng, batch = jax.tree_map(lambda x: x[0], (params, rng, batch))\n      if func_state is not None:\n        func_state = jax.tree_map(lambda x: x[0], func_state)\n    batch = self.batch_process_func(batch)\n    # These are all tracing operations and we can run them with abstract values\n    func_args = utils.make_func_args(params, func_state, rng, batch,\n                                     self.value_func_has_state,\n                                     self.value_func_has_rng)\n    # Run all tracing with abstract values so no computation is done\n    flat_params, self.params_treedef = jax.tree_flatten(params)\n    self.flat_params_shapes = tuple(p.shape for p in flat_params)\n    self.tagged_func = tgm.auto_register_tags(\n        func=self.value_func,\n        func_args=func_args,\n        params_index=0,\n        register_only_generic=self.register_only_generic,\n        patterns_to_skip=self.patterns_to_skip)\n    self.estimator = estimator.CurvatureEstimator(\n        self.tagged_func,\n        func_args,\n        self.l2_reg,\n        self.estimation_mode,\n        layer_tag_to_block_cls=self.layer_tag_to_block_cls)\n    # Arguments: params, opt_state, rng, batch, func_state\n    donate_argnums = []\n    if self.donate_parameters:\n      donate_argnums.append(0)\n    if self.donate_optimizer_state:\n      donate_argnums.append(1)\n    if self.donate_batch_inputs:\n      donate_argnums.append(3)\n    if self.donate_func_state and self.value_func_has_state:\n      donate_argnums.append(4)\n    donate_argnums = tuple(donate_argnums)\n\n    if self.debug:\n      self._jit_init = self._init\n      self._jit_burnin = self._burnin\n      self._jit_step = self._step\n    elif self.multi_device:\n      self._jit_init = jax.pmap(\n          self._init, axis_name=self.pmap_axis_name, donate_argnums=[0])\n      # batch size is static argnum and is at index 5\n      self._jit_burnin = jax.pmap(\n          self._burnin,\n          axis_name=self.pmap_axis_name,\n          static_broadcasted_argnums=[5])\n      self._jit_step = jax.pmap(\n          self._step,\n          axis_name=self.pmap_axis_name,\n          donate_argnums=donate_argnums,\n          static_broadcasted_argnums=[5])\n    else:\n      self._jit_init = jax.jit(self._init, donate_argnums=[0])\n      # batch size is static argnum and is at index 5\n      self._jit_burnin = jax.jit(self._burnin, static_argnums=[5])\n      self._jit_step = jax.jit(\n          self._step, donate_argnums=donate_argnums, static_argnums=[5])\n    self.finalized = True\n\n  def _init(self, rng: jnp.ndarray) -> State:\n    \"\"\"This is the non-jitted version of initializing the state.\"\"\"\n    flat_velocities = [jnp.zeros(shape) for shape in self.flat_params_shapes]\n    return dict(\n        velocities=jax.tree_unflatten(self.params_treedef, flat_velocities),\n        estimator=self.estimator.init(rng, None),\n        step_counter=jnp.asarray(0))\n\n  def verify_args_and_get_step_counter(\n      self,\n      params: Parameters,\n      state: State,\n      rng: jnp.ndarray,\n      data_iterator: Iterator[Batch],\n      func_state: Optional[FuncState] = None,\n      learning_rate: Optional[jnp.ndarray] = None,\n      momentum: Optional[jnp.ndarray] = None,\n      damping: Optional[jnp.ndarray] = None,\n      global_step_int: Optional[int] = None,\n  ) -> int:\n    \"\"\"Verifies that the arguments passed to `Optimizer.step` are correct.\"\"\"\n    if not self.finalized:\n      rng, rng_finalize = self._rng_split(rng)\n      self.finalize(params, rng_finalize, next(data_iterator), func_state)\n    # Verify correct arguments invocation\n    if self.learning_rate_schedule is not None and learning_rate is not None:\n      raise ValueError(\"When you have passed a `learning_rate_schedule` you \"\n                       \"should not pass a value to the step function.\")\n    if self.momentum_schedule is not None and momentum is not None:\n      raise ValueError(\"When you have passed a `momentum_schedule` you should \"\n                       \"not pass a value to the step function.\")\n    if self.damping_schedule is not None and damping is not None:\n      raise ValueError(\"When you have passed a `damping_schedule` you should \"\n                       \"not pass a value to the step function.\")\n    # Do a bunrnin on the first iteration\n    if global_step_int is None:\n      if self.multi_device:\n        return int(utils.get_first(state[\"step_counter\"]))\n      else:\n        return int(state[\"step_counter\"])\n    return global_step_int\n\n  def _burnin(\n      self,\n      params: Parameters,\n      state: State,\n      rng: jnp.ndarray,\n      batch: Batch,\n      func_state: Optional[FuncState],\n      batch_size: Optional[int],\n  ) -> Tuple[State, Optional[FuncState]]:\n    \"\"\"This is the non-jitted version of a single burnin step.\"\"\"\n    self.set_state(state)\n    batch = self.batch_process_func(batch)\n    rng, func_rng = jnr.split(rng) if self.value_func_has_rng else (rng, None)\n    func_args = utils.make_func_args(params, func_state, func_rng, batch,\n                                     self.value_func_has_state,\n                                     self.value_func_has_rng)\n\n    # Compute batch size\n    if batch_size is None:\n      batch_size = jax.tree_flatten(batch)[0][0].shape[0]\n\n    # Update curvature estimate\n    ema_old, ema_new = 1.0, 1.0 / self.num_burnin_steps\n    self.estimator.update_curvature_matrix_estimate(ema_old, ema_new,\n                                                    batch_size, rng, func_args,\n                                                    self.pmap_axis_name)\n\n    if func_state is not None:\n      out, _ = self.value_and_grad_func(*func_args)\n      _, func_state, _ = utils.extract_func_outputs(out,\n                                                    self.value_func_has_aux,\n                                                    self.value_func_has_state)\n\n    return self.pop_state(), func_state\n\n  def _step(\n      self,\n      params: Parameters,\n      state: State,\n      rng: jnp.ndarray,\n      batch: Batch,\n      func_state: Optional[FuncState],\n      batch_size: Optional[int],\n      learning_rate: Optional[jnp.ndarray],\n      momentum: Optional[jnp.ndarray],\n      damping: Optional[jnp.ndarray],\n  ) -> Union[Tuple[Parameters, State, FuncState, Mapping[str, jnp.ndarray]],\n             Tuple[Parameters, State, Mapping[str, jnp.ndarray]]]:\n    \"\"\"This is the non-jitted version of a single step.\"\"\"\n    # Unpack and set the state\n    self.set_state(state)\n    if damping is not None:\n      assert self.estimator.damping is None\n      self.estimator.damping = damping\n    else:\n      assert self.estimator.damping is not None\n\n    # Preprocess the batch and construct correctly the function arguments\n    batch = self.batch_process_func(batch)\n    rng, func_rng = jnr.split(rng) if self.value_func_has_rng else (rng, None)\n    func_args = utils.make_func_args(params, func_state, func_rng, batch,\n                                     self.value_func_has_state,\n                                     self.value_func_has_rng)\n\n    # Compute the batch size\n    if batch_size is None:\n      batch_size = jax.tree_flatten(batch)[0][0].shape[0]\n\n    # Compute schedules if applicable\n    if self.learning_rate_schedule is not None:\n      assert learning_rate is None\n      learning_rate = self.learning_rate_schedule(self.step_counter)\n    else:\n      assert learning_rate is not None\n    if self.momentum_schedule is not None:\n      assert momentum is None\n      momentum = self.momentum_schedule(self.step_counter)\n    else:\n      assert momentum is not None\n    if self.damping_schedule is not None:\n      assert damping is None\n      damping = self.damping_schedule(self.step_counter)\n    else:\n      assert damping is not None\n\n    # Compute current loss and gradients\n    out, grads = self.value_and_grad_func(*func_args)\n    loss, new_func_state, aux = utils.extract_func_outputs(\n        out, self.value_func_has_aux, self.value_func_has_state)\n    # Sync loss and grads\n    loss, grads = utils.pmean_if_pmap((loss, grads), self.pmap_axis_name)\n\n    # Update curvature estimate\n    self.estimator.update_curvature_matrix_estimate(\n        self.curvature_ema,\n        1.0,\n        batch_size,\n        rng,\n        func_args,\n        self.pmap_axis_name,\n    )\n\n    # Optionally update the inverse estimate\n    self.estimator.set_state(\n        lax.cond(\n            self.step_counter % self.inverse_update_period == 0,\n            lambda s: self.estimator.update_curvature_estimate_inverse(  # pylint: disable=g-long-lambda\n                self.pmap_axis_name, s),\n            lambda s: s,\n            self.estimator.pop_state()))\n\n    # Compute proposed directions\n    vectors = self.propose_directions(\n        grads,\n        self.velocities,\n        learning_rate,\n        momentum,\n    )\n\n    # The learning rate is defined as the negative of the coefficient by which\n    # we multiply the gradients, while the momentum is the coefficient by\n    # which we multiply the velocities.\n    neg_learning_rate = -learning_rate  # pytype: disable=unsupported-operands  # trace-all-classes\n    # Compute the coefficients of the update vectors\n    assert neg_learning_rate is not None and momentum is not None\n    coefficients = (neg_learning_rate, momentum)\n\n    # Update velocities and compute new delta\n    self.velocities, delta = self.velocities_and_delta(\n        self.velocities,\n        vectors,\n        coefficients,\n    )\n\n    # Update parameters: params = params + delta\n    params = jax.tree_map(jnp.add, params, delta)\n\n    # Optionally compute the reduction ratio and update the damping\n    self.estimator.damping = None\n    rho = jnp.nan\n\n    # Statistics with useful information\n    stats = dict()\n    stats[\"step\"] = self.step_counter\n    stats[\"loss\"] = loss\n    stats[\"learning_rate\"] = -coefficients[0]\n    stats[\"momentum\"] = coefficients[1]\n    stats[\"damping\"] = damping\n    stats[\"rho\"] = rho\n    if self.value_func_has_aux:\n      stats[\"aux\"] = aux\n    self.step_counter = self.step_counter + 1\n\n    if self.value_func_has_state:\n      return params, self.pop_state(), new_func_state, stats  # pytype: disable=bad-return-type  # jax-ndarray\n    else:\n      assert new_func_state is None\n      return params, self.pop_state(), stats  # pytype: disable=bad-return-type  # jax-ndarray\n\n  def init(\n      self,\n      params: Parameters,\n      rng: jnp.ndarray,\n      batch: Batch,\n      func_state: Optional[FuncState] = None,\n  ) -> State:\n    \"\"\"Initializes the optimizer and returns the appropriate optimizer state.\"\"\"\n    if not self.finalized:\n      self.finalize(params, rng, batch, func_state)\n    return self._jit_init(rng)\n\n  def step(\n      self,\n      params: Parameters,\n      state: Mapping[str, Any],\n      rng: jnp.ndarray,\n      data_iterator: Iterator[Any],\n      func_state: Any = None,\n      learning_rate: Optional[jnp.ndarray] = None,\n      momentum: Optional[jnp.ndarray] = None,\n      damping: Optional[jnp.ndarray] = None,\n      batch_size: Optional[int] = None,\n      global_step_int: Optional[int] = None,\n  ) -> Union[Tuple[Parameters, State, FuncState, Mapping[str, jnp.ndarray]],\n             Tuple[Parameters, State, Mapping[str, jnp.ndarray]]]:\n    \"\"\"Performs a single update step using the optimizer.\n\n    Args:\n      params: The parameters of the model.\n      state: The state of the optimizer.\n      rng: A Jax PRNG key.\n      data_iterator: An iterator that returns a batch of data.\n      func_state: Any function state that gets passed in and returned.\n      learning_rate: This must be provided when\n        `use_adaptive_learning_rate=False` and `learning_rate_schedule=None`.\n      momentum: This must be provided when\n        `use_adaptive_momentum=False` and `momentum_schedule=None`.\n      damping: This must be provided when\n        `use_adaptive_damping=False` and `damping_schedule=None`.\n      batch_size: The batch size to use for KFAC. The default behaviour when it\n        is None is to use the leading dimension of the first data array.\n      global_step_int: The global step as a python int. Note that this must\n        match the step inte  rnal to the optimizer that is part of its state.\n\n    Returns:\n      (params, state, stats)\n      where:\n          params: The updated model parameters.\n          state: The updated optimizer state.\n          stats: A dictionary of key statistics provided to be logged.\n    \"\"\"\n    step_counter_int = self.verify_args_and_get_step_counter(\n        params=params,\n        state=state,\n        rng=rng,\n        data_iterator=data_iterator,\n        func_state=func_state,\n        learning_rate=learning_rate,\n        momentum=momentum,\n        damping=damping,\n        global_step_int=global_step_int)\n\n    if step_counter_int == 0:\n      for _ in range(self.num_burnin_steps):\n        rng, rng_burn = self._rng_split(rng)\n        batch = next(data_iterator)\n        state, func_state = self._jit_burnin(params, state, rng_burn, batch,\n                                             func_state, batch_size)\n\n      # On the first step we always treat the momentum as 0.0\n      if self.momentum_schedule is None:\n        momentum = jnp.zeros([])\n        if self.multi_device:\n          momentum = utils.replicate_all_local_devices(momentum)\n\n    batch = next(data_iterator)\n    return self._jit_step(params, state, rng, batch, func_state, batch_size,\n                          learning_rate, momentum, damping)\n\n  def propose_directions(\n      self,\n      grads: Parameters,\n      velocities: Parameters,\n      learning_rate: Optional[jnp.ndarray],\n      momentum: Optional[jnp.ndarray],\n  ) -> Tuple[Parameters, Parameters]:\n    \"\"\"Computes the vector proposals for the next step.\"\"\"\n    del momentum  # not used in this, but could be used in subclasses\n    preconditioned_grads = self.estimator.multiply_matpower(grads, -1)\n\n    if self.norm_constraint is not None:\n      assert learning_rate is not None\n      sq_norm_grads = utils.inner_product(preconditioned_grads, grads)\n      sq_norm_scaled_grads = sq_norm_grads * learning_rate**2\n\n      # We need to sync the norms here, because reduction can be\n      # non-deterministic. They specifically are on GPUs by default for better\n      # performance. Hence although grads and preconditioned_grads are synced,\n      # the inner_product operation can still produce different answers on\n      # different devices.\n      sq_norm_scaled_grads = utils.pmean_if_pmap(sq_norm_scaled_grads,\n                                                 self.pmap_axis_name)\n\n      max_coefficient = jnp.sqrt(self.norm_constraint / sq_norm_scaled_grads)\n      coefficient = jnp.minimum(max_coefficient, 1)\n      preconditioned_grads = utils.scalar_mul(preconditioned_grads, coefficient)\n\n    return preconditioned_grads, velocities\n\n  def velocities_and_delta(\n      self,\n      velocities: Parameters,\n      vectors: Sequence[Parameters],\n      coefficients: Sequence[jnp.ndarray],\n  ) -> Sequence[Parameters]:\n    \"\"\"Computes the new velocities and delta (update to parameters).\"\"\"\n    del velocities\n    assert len(vectors) == len(coefficients)\n    delta = utils.scalar_mul(vectors[0], coefficients[0])\n    for vi, wi in zip(vectors[1:], coefficients[1:]):\n      delta = jax.tree_map(jnp.add, delta, utils.scalar_mul(vi, wi))\n    return delta, delta\n"
  },
  {
    "path": "kfac_ferminet_alpha/requirements.txt",
    "content": "jax>=0.2.10\ndataclasses>=0.6\nnetworkx>=2.1\nnumpy>=1.16.4\ntyping>=3.7.4.3\nordered-set>=4.0.2\nabsl-py>=0.12.0\n"
  },
  {
    "path": "kfac_ferminet_alpha/run.sh",
    "content": "#!/bin/bash\n# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script installs kfac_ferminet_alpha in a clean virtualenv and runs an\n# example training loop. It is designed to be run from the parent directory,\n# e.g.:\n#\n# git clone git@github.com:deepmind/deepmind-research.git\n# cd deepmind_research\n# kfac_ferminet_alpha/run.sh\n\npython3 -m venv /tmp/kfac_ferminet_alpha_example\nsource /tmp/kfac_ferminet_alpha_example/bin/activate\npip3 install -U pip\npip3 install -r kfac_ferminet_alpha/requirements.txt\n# For a GPU you have to do:\n# pip3 install --upgrade jax jaxlib==0.1.64+cuda110 -f https://storage.googleapis.com/jax-releases/jax_releases.html\npip3 install jaxlib\npip3 install kfac_ferminet_alpha/\npython3 kfac_ferminet_alpha/example.py\n"
  },
  {
    "path": "kfac_ferminet_alpha/setup.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Setup for pip package.\"\"\"\n\nfrom setuptools import setup\n\n\nREQUIRED_PACKAGES = (\n    \"absl-py\",\n    \"dataclasses\",\n    \"jax\",\n    \"networkx\",\n    \"numpy\",\n    \"ordered-set\",\n    \"typing\",\n)\n\nLONG_DESCRIPTION = \"\\n\".join([\n    \"Kronecker-Factored Approximate Curvature (K-FAC) optimizer implemented in \"\n    \"JAX.\",\n    \"\",\n    \"Accompanying code for 'Better, Faster Fermionic Neural Networks'\",\n    \"James S. Spencer, David Pfau, Aleksandar Botev, and W. M. C. Foulkes.\",\n    \"https://arxiv.org/abs/2011.07125.\",\n])\n\n\nsetup(\n    name=\"kfac_ferminet_alpha\",\n    version=\"0.0.1\",\n    description=\"A K-FAC optimizer implemented in JAX\",\n    long_description=LONG_DESCRIPTION,\n    url=\"https://github.com/deepmind/deepmind-research/kfac_ferminet_alpha\",\n    author=\"DeepMind\",\n    package_dir={\"kfac_ferminet_alpha\": \".\"},\n    packages=[\"kfac_ferminet_alpha\"],\n    install_requires=REQUIRED_PACKAGES,\n    platforms=[\"any\"],\n    license=\"Apache License, Version 2.0\",\n)\n"
  },
  {
    "path": "kfac_ferminet_alpha/tag_graph_matcher.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"A module for tagging and graph manipulation.\"\"\"\nimport collections\nimport functools\nimport itertools\nfrom typing import Any, NamedTuple, Sequence\n\nfrom absl import logging\nimport jax\nfrom jax import core as jax_core\nfrom jax import lax\nfrom jax import util as jax_util\nfrom jax.interpreters import partial_eval as pe\nimport jax.numpy as jnp\nimport networkx as nx\nfrom networkx.algorithms import isomorphism\nimport numpy as np\nimport ordered_set\n\nfrom kfac_ferminet_alpha import layers_and_loss_tags as tags\n\nUSE_NETWORKX = False\n\n\ndef match_nodes(g1, g2, mapping, node1, node2):\n  \"\"\"Matching nodes when doing graph search.\"\"\"\n\n  if not kfac_node_match(g1.nodes[node1], g2.nodes[node2]):\n    return False\n  # Check predecessors\n  p1 = set(n for n in g1.predecessors(node1) if n in mapping.keys())\n  p2 = set(n for n in g2.predecessors(node2) if n in mapping.values())\n  if len(p1) != len(p2):\n    return False\n  for p1_i in p1:\n    if mapping[p1_i] not in p2:\n      return False\n  # Check successors\n  s1 = set(n for n in g1.successors(node1) if n in mapping.keys())\n  s2 = set(n for n in g2.successors(node2) if n in mapping.values())\n  if len(s1) != len(s2):\n    return False\n  for s1_i in s1:\n    if mapping[s1_i] not in s2:\n      return False\n  return True\n\n\ndef generate_candidates(g1, g2, mapping, node1, node2):\n  \"\"\"Generates the initial candidates for graph search.\"\"\"\n  # Check predecessors\n  p1 = set(n for n in g1.predecessors(node1) if n not in mapping.keys())\n  p2 = set(n for n in g2.predecessors(node2) if n not in mapping.values())\n  candidates = ordered_set.OrderedSet(itertools.product(p1, p2))\n  s1 = set(n for n in g1.successors(node1) if n not in mapping.keys())\n  s2 = set(n for n in g2.successors(node2) if n not in mapping.values())\n  candidates.update(list(itertools.product(s1, s2)))\n  return candidates\n\n\ndef find_mappings(pattern, graph, mapping, terminals):\n  \"\"\"Finds all mappings from graph search of the pattern.\"\"\"\n  if len(mapping) == len(pattern):\n    for k, v in terminals.items():\n      v.add(mapping[k])\n    return [frozenset(mapping.items())]\n  mappings = set()\n  nodes_list = list(mapping.keys())\n  for node1 in reversed(nodes_list):\n    for s1 in pattern.successors(node1):\n      if s1 not in mapping.keys():\n        for s2 in graph.successors(mapping[node1]):\n          if s2 not in mapping.values():\n            if s1 not in terminals or s2 not in terminals[s1]:\n              if match_nodes(pattern, graph, mapping, s1, s2):\n                mapping[s1] = s2\n                mappings.update(\n                    find_mappings(pattern, graph, mapping, terminals))\n                mapping.pop(s1)\n    for p1 in pattern.predecessors(node1):\n      if p1 not in mapping.keys():\n        for p2 in graph.predecessors(mapping[node1]):\n          if p2 not in mapping.values():\n            if p1 not in terminals or p2 not in terminals[p1]:\n              if match_nodes(pattern, graph, mapping, p1, p2):\n                mapping[p1] = p2\n                mappings.update(\n                    find_mappings(pattern, graph, mapping, terminals))\n                mapping.pop(p1)\n  return mappings\n\n\ndef match_pattern(pattern, graph):\n  \"\"\"Given a pattern returns all matches inside the graph.\"\"\"\n  if USE_NETWORKX:\n    matcher = isomorphism.GraphMatcher(\n        graph, pattern, node_match=kfac_node_match)\n    mappings = list(\n        dict((k, v)\n             for v, k in mapping.items())\n        for mapping in matcher.subgraph_isomorphisms_iter())\n  else:\n    mapping = collections.OrderedDict()\n    params1 = [n for n in pattern.nodes if pattern.nodes[n][\"op\"] == \"param\"]\n    params2 = [n for n in graph.nodes if graph.nodes[n][\"op\"] == \"param\"]\n    terminals = {\n        n: set() for n in pattern.nodes if not list(pattern.successors(n))\n    }\n\n    mappings = set()\n    for node1, node2 in itertools.product(params1, params2):\n      mapping[node1] = node2\n      mappings.update(find_mappings(pattern, graph, mapping, terminals))\n      mapping.pop(node1)\n      for v in terminals.values():\n        v.clear()\n    mappings = list(dict(mapping) for mapping in mappings)\n\n  var_mappings = []\n  for mapping in mappings:\n    var_mappings.append(dict())\n    for k, v in mapping.items():\n      cond = pattern.nodes[k][\"op\"] in (\"param\", \"array\")\n      source = pattern.nodes[k][\"var\"] if cond else k\n      target = graph.nodes[v][\"var\"] if cond else graph.nodes[v][\"eqn\"]\n      var_mappings[-1][source] = target\n\n  return var_mappings\n\n\ndef read_env(env, var):\n  # Literals are values baked into the Jaxpr\n  if isinstance(var, jax.core.Literal):\n    return var.val\n  return env[var]\n\n\ndef write_env(env, var, val):\n  env[var] = val\n\n\ndef abstract_single_value(value):\n  if isinstance(value, jnp.ndarray):\n    value = jax_core.ShapedArray(np.shape(value), np.result_type(value))\n    return pe.PartialVal.unknown(value)\n  else:\n    return value\n\n\ndef abstract_args(args):\n  return jax.tree_map(abstract_single_value, args)\n\n\ndef _extract_call_jaxpr(primitive, params):\n  if not (primitive.call_primitive or primitive.map_primitive):\n    return None, params\n  else:\n    params = dict(params)\n    return params.pop(\"call_jaxpr\"), params\n\n\ndef evaluate_eqn(eqn, in_values, write_func):\n  \"\"\"Evaluate a single Jax equation and writes the outputs.\"\"\"\n  in_values = list(in_values)\n  # This is logic specifically to handle `xla_call`\n  call_jaxpr, params = _extract_call_jaxpr(eqn.primitive, eqn.params)\n  if call_jaxpr:\n    subfuns = [\n        jax.core.lu.wrap_init(\n            functools.partial(jax.core.eval_jaxpr, call_jaxpr, ()))\n    ]\n  else:\n    subfuns = []\n  ans = eqn.primitive.bind(*(subfuns + in_values), **params)\n  if eqn.primitive.multiple_results:\n    jax_util.safe_map(write_func, eqn.outvars, ans)\n  else:\n    write_func(eqn.outvars[0], ans)\n  return ans\n\n\ndef clean_jaxpr_eqns(jaxpr, preserve_tags=True):\n  \"\"\"Performs dead code elimination on the jaxpr, preserving loss and layer tags.\"\"\"\n  eqns = []\n  dependants = set(jaxpr.outvars)\n  for eqn in reversed(jaxpr.eqns):\n    check = False\n    for v in eqn.outvars:\n      if v in dependants:\n        dependants.remove(v)\n        check = True\n    if isinstance(eqn.primitive, (tags.LossTag, tags.LayerTag)):\n      check = check or preserve_tags\n    if check:\n      eqns.append(eqn)\n      new_dependants = set(\n          v for v in eqn.invars if not isinstance(v, jax_core.Literal))\n      dependants = dependants.union(new_dependants)\n  # Dependants should only be invars\n  dependants = dependants - set(jaxpr.invars + jaxpr.constvars)\n\n  if dependants:\n    raise ValueError(\"Something went wrong with the dead code elimination.\")\n  return reversed(eqns)\n\n\ndef broadcast_merger(f):\n  \"\"\"Transforms `f` into a function where all consecutive broadcasts are merged.\"\"\"\n\n  def merged_func(*func_args):\n    typed_jaxpr, out_avals = jax.make_jaxpr(f, return_shape=True)(*func_args)\n    out_tree = jax.tree_structure(out_avals)\n    jaxpr, consts = typed_jaxpr.jaxpr, typed_jaxpr.literals\n\n    # Mapping from variable -> value\n    env = dict()\n    read = functools.partial(read_env, env)\n    write = functools.partial(write_env, env)\n\n    # Bind args and consts to environment\n    flat_args = jax.tree_flatten(func_args)[0]\n    jax_util.safe_map(write, jaxpr.invars, flat_args)\n    jax_util.safe_map(write, jaxpr.constvars, consts)\n\n    # Bind args and consts to environment\n    jax_util.safe_map(write, jaxpr.invars, flat_args)\n    jax_util.safe_map(write, jaxpr.constvars, consts)\n\n    # Loop through equations and evaluate primitives using `bind`\n    broadcasts_outputs = dict()\n    for eqn in clean_jaxpr_eqns(jaxpr):\n      # We ignore broadcasting of constants\n      if (eqn.primitive.name == \"broadcast_in_dim\" and\n          not all(isinstance(v, jax_core.Literal) for v in eqn.invars)):\n        if eqn.invars[0] in broadcasts_outputs:\n          x, dims = broadcasts_outputs[eqn.invars[0]]\n          kept_dims = eqn.params[\"broadcast_dimensions\"]\n          kept_dims = [kept_dims[d] for d in dims]\n          y = lax.broadcast_in_dim(x, eqn.params[\"shape\"], kept_dims)\n          jax_util.safe_map(write, eqn.outvars, [y])\n          broadcasts_outputs[eqn.outvars[0]] = (x, kept_dims)\n        else:\n          inputs = jax_util.safe_map(read, eqn.invars)\n          evaluate_eqn(eqn, inputs, write)\n          broadcasts_outputs[eqn.outvars[0]] = (\n              inputs[0], eqn.params[\"broadcast_dimensions\"])\n      else:\n        evaluate_eqn(eqn, jax_util.safe_map(read, eqn.invars), write)\n    return jax.tree_unflatten(out_tree, jax_util.safe_map(read, jaxpr.outvars))\n\n  return merged_func\n\n\nclass JaxGraph(NamedTuple):\n  jaxpr: Any\n  consts: Any\n  params: Any\n  params_tree: Any\n  in_tree: Any\n  out_tree: Any\n  digraph: nx.DiGraph\n  tagging_func: Any\n\n\nSPECIAL_OP_COMPARE_RULES = dict()\n\n\ndef default_compare(node1, node2):\n  if node1[\"op\"] != node2[\"op\"]:\n    return False\n  params1, params2 = node1[\"eqn\"].params, node2[\"eqn\"].params\n  if set(params1.keys()) != set(params2.keys()):\n    return False\n  for k in params1.keys():\n    if params1[k] != params2[k]:\n      return False\n  return True\n\n\ndef reshape_compare(node1, node2):\n  \"\"\"Compares two reshape nodes.\"\"\"\n  assert node1[\"op\"] == node2[\"op\"] == \"reshape\"\n  params1, params2 = node1[\"eqn\"].params, node2[\"eqn\"].params\n  if params1[\"dimensions\"] != params2[\"dimensions\"]:\n    return False\n  return True\n\n\ndef broadcast_in_dim_compare(node1, node2):\n  \"\"\"Compares two reshape nodes.\"\"\"\n  assert node1[\"op\"] == node2[\"op\"] == \"broadcast_in_dim\"\n  return True\n\n\ndef conv_compare(node1, node2):\n  \"\"\"Compares two conv_general_dialted nodes.\"\"\"\n  assert node1[\"op\"] == node2[\"op\"] == \"conv_general_dilated\"\n  params1, params2 = node1[\"eqn\"].params, node2[\"eqn\"].params\n  for k in (\"window_strides\", \"padding\", \"lhs_dilation\", \"rhs_dilation\",\n            \"lhs_shape\", \"rhs_shape\"):\n    if len(params1[k]) != len(params2[k]):\n      return False\n  if (len(params1[\"dimension_numbers\"].lhs_spec) !=  #\n      len(params2[\"dimension_numbers\"].lhs_spec)):\n    return False\n  if (len(params1[\"dimension_numbers\"].rhs_spec) !=  #\n      len(params2[\"dimension_numbers\"].rhs_spec)):\n    return False\n  if (len(params1[\"dimension_numbers\"].out_spec) !=  #\n      len(params2[\"dimension_numbers\"].out_spec)):\n    return False\n  if ((params1[\"feature_group_count\"] > 1) !=  #\n      (params2[\"feature_group_count\"] > 1)):\n    return False\n  if ((params1[\"batch_group_count\"] > 1) !=  #\n      (params2[\"batch_group_count\"] > 1)):\n    return False\n  return True\n\n\nSPECIAL_OP_COMPARE_RULES[\"reshape\"] = reshape_compare\nSPECIAL_OP_COMPARE_RULES[\"broadcast_in_dim\"] = broadcast_in_dim_compare\nSPECIAL_OP_COMPARE_RULES[\"conv_general_dilated\"] = conv_compare\n\n\ndef kfac_node_match(node1, node2):\n  \"\"\"Checks if two nodes are equivalent.\"\"\"\n  # Parameters match with each other and nothing else\n  if node1[\"op\"] == \"param\" and node2[\"op\"] == \"param\":\n    return True\n    # return node1[\"rank\"] == node2[\"rank\"]\n  if node1[\"op\"] == \"param\" or node2[\"op\"] == \"param\":\n    return False\n  # Arrays always match each other and nothing else\n  if node1[\"op\"] == \"array\" and node2[\"op\"] == \"array\":\n    return True\n  if node1[\"op\"] == \"array\" or node2[\"op\"] == \"array\":\n    return False\n  # Operators match first on name\n  if node1[\"op\"] != node2[\"op\"]:\n    return False\n  compare = SPECIAL_OP_COMPARE_RULES.get(node1[\"op\"], default_compare)\n  return compare(node1, node2)\n\n\ndef var_to_str(var):\n  \"\"\"Returns a string representation of the variable of a Jax expression.\"\"\"\n  if isinstance(var, jax.core.Literal):\n    return str(var)\n  elif not isinstance(var, jax.core.Var):\n    raise ValueError(f\"Idk what to do with this {type(var)}?\")\n  c = int(var.count)\n  if c == -1:\n    return \"_\"\n  str_rep = \"\"\n  while c > 25:\n    str_rep += chr(c % 26 + ord(\"a\"))\n    c = c // 26\n  str_rep += chr(c + ord(\"a\"))\n  return str_rep[::-1]\n\n\ndef extract_param_vars_flat(jaxpr, in_tree, params_index):\n  if params_index is None:\n    params_index = []\n  elif isinstance(params_index, int):\n    params_index = [params_index]\n  in_vars = jax.tree_unflatten(in_tree, jaxpr.invars)\n  return jax.tree_flatten([in_vars[i] for i in params_index])\n\n\ndef fill_jaxpr_to_graph(graph, jaxpr, in_vars=None, out_vars=None):\n  \"\"\"Fills the graph with the jaxpr.\"\"\"\n  in_vars = in_vars or [var_to_str(v) for v in jaxpr.invars + jaxpr.constvars]\n  in_map = dict(zip(jaxpr.invars + jaxpr.constvars, in_vars))\n  out_vars = out_vars or [var_to_str(v) for v in jaxpr.outvars]\n  out_map = dict(zip(jaxpr.outvars, out_vars))\n\n  for eqn in jaxpr.eqns:\n    in_vars = []\n    for v in eqn.invars:\n      if isinstance(v, jax.core.Literal):\n        in_vars.append(var_to_str(v))\n      else:\n        in_vars.append(in_map.get(v, var_to_str(v)))\n    out_vars = [out_map.get(v, var_to_str(v)) for v in eqn.outvars]\n    in_str = \",\".join(in_vars)\n    out_str = \",\".join(out_vars)\n    if isinstance(eqn.primitive, tags.LossTag):\n      func_name = \"__loss_tag\"\n    elif isinstance(eqn.primitive, tags.LayerTag):\n      func_name = \"__layer_tag\"\n    else:\n      func_name = eqn.primitive.name\n    node_c = f\"{func_name}({in_str})->{out_str}\"\n    graph.add_node(node_c, op=eqn.primitive.name, eqn=eqn)\n\n    # Create incoming edges\n    for v, name in zip(eqn.invars, in_vars):\n      if not isinstance(v, jax.core.Literal):\n        graph.add_edge(name, node_c)\n\n    # Create output nodes and edges\n    for v, name in zip(eqn.outvars, out_vars):\n      graph.add_node(name, op=\"array\", var=v)\n      graph.add_edge(node_c, name)\n\n\ndef create_digraph(jaxpr, params):\n  \"\"\"Creates a directed graph from the given jaxpr and parameters.\"\"\"\n  graph = nx.DiGraph()\n  # Create input nodes\n  for v in jaxpr.invars + jaxpr.constvars:\n    if v in params:\n      graph.add_node(var_to_str(v), op=\"param\", var=v)\n    else:\n      graph.add_node(var_to_str(v), op=\"array\", var=v)\n  fill_jaxpr_to_graph(graph, jaxpr)\n\n  return graph\n\n\ndef function_to_jax_graph(func, args, params_index, tagging_func=None):\n  \"\"\"Creates a `JaxGraph` instance from the provided function.\"\"\"\n  in_tree = jax.tree_structure(args)\n  typed_jaxpr = jax.make_jaxpr(func)(*args)\n  jaxpr, consts = typed_jaxpr.jaxpr, typed_jaxpr.literals\n  params, params_tree = extract_param_vars_flat(jaxpr, in_tree, params_index)\n\n  digraph = create_digraph(jaxpr, params)\n  if tagging_func is not None:\n    tagging_func = functools.partial(tagging_func, jaxpr)\n  return JaxGraph(\n      jaxpr=jaxpr,\n      consts=consts,\n      params=params,\n      params_tree=params_tree,\n      in_tree=in_tree,\n      out_tree=None,\n      digraph=digraph,\n      tagging_func=tagging_func)\n\n\ndef print_nice_jaxpr(jaxpr):\n  for eqn in jaxpr.eqns:\n    print(tuple(eqn.invars), \"->\", eqn.primitive.name, tuple(eqn.outvars))\n\n\ndef auto_register_tags(func,\n                       func_args,\n                       params_index: int = 0,\n                       register_only_generic: bool = False,\n                       compute_only_loss_tags: bool = True,\n                       patterns_to_skip: Sequence[str] = ()):\n  \"\"\"Transform the function to one that is populated with tags.\"\"\"\n  func = broadcast_merger(func)\n  graph = function_to_jax_graph(func, func_args, params_index=params_index)\n  matches = dict()\n\n  # Extract the tagged losses variables and all their ancestors\n  loss_output_vars = []\n  num_losses = 0\n  loss_ancestors = set()\n  for node in graph.digraph.nodes:\n    if node.startswith(\"__loss_tag\"):\n      num_losses += 1\n      ancestors = nx.ancestors(graph.digraph, node)\n      ancestors.add(node)\n      for output_node in node.split(\"->\")[-1].split(\",\"):\n        ancestors.add(output_node)\n        loss_output_vars.append(graph.digraph.nodes[output_node][\"var\"])\n      loss_ancestors = loss_ancestors.union(ancestors)\n  loss_output_vars = tuple(loss_output_vars)\n\n  # Extract the sub-graph that leads to losses\n  sub_graph = nx.induced_subgraph(graph.digraph, loss_ancestors)\n\n  # First collect all parameters that are already part of a layer tag\n  tagged_params = dict()\n  pattern_counters = dict()\n  for tag_node in (\n      node for node in sub_graph.nodes if node.startswith(\"__layer_tag\")):\n    inputs = graph.digraph.nodes[tag_node][\"eqn\"].invars\n    tag_instance = graph.digraph.nodes[tag_node][\"eqn\"].primitive\n    if tag_instance.name == \"generic_tag\":\n      tag_params = tag_instance.split_all_inputs(inputs)[0]\n    else:\n      tag_params = tag_instance.split_all_inputs(inputs)[2]\n    pattern_number = pattern_counters.get(tag_instance.name, 0)\n    for param in tag_params:\n      if param not in graph.params:\n        raise ValueError(f\"You have registered a layer tag with parameter \"\n                         f\"that is not part of the parameters at index \"\n                         f\"{params_index}.\")\n      if param in tagged_params:\n        raise ValueError(f\"You have registered twice the parameter {param}.\")\n      tagged_params[param] = f\"Manual[{tag_instance.name}_{pattern_number}]\"\n    if tag_instance.name not in pattern_counters:\n      pattern_counters[tag_instance.name] = 1\n    else:\n      pattern_counters[tag_instance.name] += 1\n\n  if not register_only_generic:\n    for pattern_name, patterns in get_graph_patterns():\n      if pattern_name in patterns_to_skip:\n        logging.info(\"Skipping graph pattern %s\", pattern_name)\n        continue\n      logging.info(\"Matching graph pattern %s\", pattern_name)\n      for pattern in patterns:\n        for match_map in match_pattern(pattern.digraph, sub_graph):\n          if len(pattern.jaxpr.outvars) > 1:\n            raise NotImplementedError()\n          output = pattern.jaxpr.outvars[0]\n          if matches.get(match_map[output]) is not None:\n            raise ValueError(f\"Found more than one match for equation \"\n                             f\"{match_map[output]}. Examine the jaxpr:\\n \"\n                             f\"{graph.jaxpr}\")\n          # Mark the parameters as already tagged\n          match_params = set()\n          match_params_already_tagged = False\n          for param in match_map.values():\n            if param in graph.params:\n              match_params.add(param)\n              if param in tagged_params.keys():\n                match_params_already_tagged = True\n          # Register the match only if no parameters are already registered\n          if not match_params_already_tagged:\n            matches[match_map[output]] = (match_map, pattern.tagging_func)\n            pattern_number = pattern_counters.get(pattern_name, 0)\n            for param in match_params:\n              tagged_params[param] = f\"Auto[{pattern_name}_{pattern_number}]\"\n            if pattern_name not in pattern_counters:\n              pattern_counters[pattern_name] = 1\n            else:\n              pattern_counters[pattern_name] += 1\n\n  # Mark remaining parameters as orphans\n  orphan_params = sorted(\n      set(graph.params) - set(tagged_params.keys()), key=lambda v: v.count)\n  params_regs = [tagged_params.get(p, \"Orphan\") for p in graph.params]\n  params_regs = jax.tree_unflatten(graph.params_tree, params_regs)\n  logging.info(\"=\" * 50)\n  logging.info(\"Graph parameter registrations:\")\n  logging.info(params_regs)\n  logging.info(\"=\" * 50)\n\n  # Construct a function with all of the extra tag registrations\n  @functools.wraps(func)\n  def wrapped_auto_registered(*args):\n    flat_args, _ = jax.tree_flatten(args)\n    # Mapping from variable -> value\n    env = {}\n\n    read = functools.partial(read_env, env)\n    write = functools.partial(write_env, env)\n\n    def tag(var):\n      if matches.get(var) is not None:\n        inv_map, tagging_func = matches[var]\n        var_map = {k: v for k, v in inv_map.items() if not isinstance(k, str)}\n        val_map = jax.tree_map(read, var_map)\n        val = tagging_func(inv_map, val_map)\n        env[var] = val\n\n    # Bind args and consts to environment\n    jax_util.safe_map(write, graph.jaxpr.invars, flat_args)\n    jax_util.safe_map(write, graph.jaxpr.constvars, graph.consts)\n\n    # Register any orphan parameters as generic\n    for param_var in orphan_params:\n      write(param_var, tags.register_generic(read(param_var)))\n\n    # Set the correct output variables\n    if compute_only_loss_tags:\n      output_vars = loss_output_vars\n      out_tree = jax.tree_structure(loss_output_vars)\n    else:\n      output_vars = graph.jaxpr.outvars\n      out_tree = graph.out_tree\n\n    # Loop through equations and evaluate primitives using `bind`\n    losses_evaluated = 0\n    for eqn in graph.jaxpr.eqns:\n      evaluate_eqn(eqn, jax_util.safe_map(read, eqn.invars), write)\n      jax_util.safe_map(tag, eqn.outvars)\n\n      # If we want to output only tagged losses\n      if isinstance(eqn.primitive, tags.LossTag):\n        losses_evaluated += 1\n      if compute_only_loss_tags and num_losses == losses_evaluated:\n        break\n\n    outputs = jax_util.safe_map(read, output_vars)\n    return jax.tree_unflatten(out_tree, outputs)\n\n  return wrapped_auto_registered\n\n\n# Registered graphs\nNAME_TO_JAX_GRAPH = dict()\nDEFERRED_REGISTRATIONS = []\n\n\ndef register_function(name, func, tagging_func, example_args, params_index,\n                      precedence):\n  \"\"\"Registers a function as a pattern in the graph matcher registry.\n\n  The graph matcher needs to trace at least once the full function, which means\n  you need to provide it with dummy arguments. The shapes of the arguments do\n  not matter, as the graph matcher ignores their values, however the rank does.\n  Especially if there is some broadcasting happening you should register with\n  every possible broadcast pattern. As a general advice avoid using a shape to\n  be 1, unless you want the pattern to specifically match that, as some\n  operations, like squeeze for example, can have special behaviour then.\n\n  Args:\n    name: The name of the pattern that is being registered to.\n    func: The function that performs the computation.\n    tagging_func: Function that correctly creates the tag.\n    example_args: Example arguments that can be inputted into `func`.\n    params_index: Specifies at which index of the `example_args` are considered\n      a parameter.\n    precedence: This specifies what precedence the graph matcher is going to\n      assign to the provided pattern. The graph matcher will go from lowest to\n      highest precedence, randomly breaking ties, when matching. Note that the\n      pattern that matches a parameter with the lowest precedence will get\n      registered and no other will. Specifically useful when there is a pattern\n      for a layer with and without bias, in which case the with bias\n      registration always should go with lower precedence.\n  \"\"\"\n\n  # This is required because we can not use Jax before InitGoogle() runs\n  def register():\n    jnp_args = jax.tree_map(jnp.asarray, example_args)\n    graph = function_to_jax_graph(\n        func, jnp_args, params_index=params_index, tagging_func=tagging_func)\n    if NAME_TO_JAX_GRAPH.get(name) is None:\n      NAME_TO_JAX_GRAPH[name] = (precedence, [])\n    assert precedence == NAME_TO_JAX_GRAPH[name][0]\n    NAME_TO_JAX_GRAPH[name][1].append(graph)\n\n  DEFERRED_REGISTRATIONS.append(register)\n\n\ndef get_graph_patterns():\n  \"\"\"Returns all graph patterns sorted by their precedence.\"\"\"\n  while DEFERRED_REGISTRATIONS:\n    DEFERRED_REGISTRATIONS.pop()()\n  return [(name, pattern) for name, (_, pattern) in sorted(\n      NAME_TO_JAX_GRAPH.items(), key=lambda pair: pair[1][0])]\n\n\n# Dense with bias\nregister_function(\n    \"dense_with_bias\",\n    tags.dense_func,\n    tags.dense_tagging,\n    [np.zeros([11, 13]), [np.zeros([13, 7]), np.zeros([7])]],\n    params_index=1,\n    precedence=0)\n\n# Dense without bias\nregister_function(\n    \"dense_no_bias\",\n    tags.dense_func,\n    tags.dense_tagging, [np.zeros([11, 13]), [np.zeros([13, 7])]],\n    params_index=1,\n    precedence=1)\n\n# Conv2d with bias\nregister_function(\n    \"conv2d_with_bias\",\n    tags.conv2d_func,\n    tags.conv2d_tagging,\n    [np.zeros([2, 8, 8, 5]), [np.zeros([3, 3, 5, 4]),\n                              np.zeros([4])]],\n    params_index=1,\n    precedence=0)\n\n# Conv2d without bias\nregister_function(\n    \"conv2d_no_bias\",\n    tags.conv2d_func,\n    tags.conv2d_tagging, [np.zeros([2, 8, 8, 5]), [np.zeros([3, 3, 5, 4])]],\n    params_index=1,\n    precedence=1)\n\n# Standard scale and shift with both scale and shift\nregister_function(\n    \"scale_and_shift\",\n    functools.partial(\n        tags.scale_and_shift_func, has_scale=True, has_shift=True),\n    functools.partial(\n        tags.scale_and_shift_tagging, has_scale=True, has_shift=True),\n    [np.zeros([2, 13]), [np.zeros([13]), np.zeros([13])]],\n    params_index=1,\n    precedence=0)\n\n# Same but no broadcasting\nregister_function(\n    \"scale_and_shift\",\n    functools.partial(\n        tags.scale_and_shift_func, has_scale=True, has_shift=True),\n    functools.partial(\n        tags.scale_and_shift_tagging, has_scale=True, has_shift=True),\n    [np.zeros([13]), [np.zeros([13]), np.zeros([13])]],\n    params_index=1,\n    precedence=0)\n\n# Scale and shift as implemented in batch norm layers in Haiku\nregister_function(\n    \"scale_and_shift\",\n    tags.batch_norm_func,\n    functools.partial(\n        tags.batch_norm_tagging_func, has_scale=True, has_shift=True),\n    [[np.zeros([2, 13]), np.zeros([13])], [np.zeros([13]),\n                                           np.zeros([13])]],\n    params_index=1,\n    precedence=0)\n\n# Same but no broadcasting\nregister_function(\n    \"scale_and_shift\",\n    tags.batch_norm_func,\n    functools.partial(\n        tags.batch_norm_tagging_func, has_scale=True, has_shift=True),\n    [[np.zeros([13]), np.zeros([13])], [np.zeros([13]),\n                                        np.zeros([13])]],\n    params_index=1,\n    precedence=0)\n\n# Only scale\nregister_function(\n    \"scale_only\",\n    functools.partial(\n        tags.scale_and_shift_func, has_scale=True, has_shift=False),\n    functools.partial(\n        tags.scale_and_shift_tagging, has_scale=True, has_shift=False),\n    [np.zeros([2, 13]), [np.zeros([13])]],\n    params_index=1,\n    precedence=1)\n"
  },
  {
    "path": "kfac_ferminet_alpha/tests/common.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Common functions used across more than one test.\"\"\"\nimport jax\nimport jax.numpy as jnp\nimport jax.random as jnr\n\nfrom kfac_ferminet_alpha import loss_functions\n\n\ndef fully_connected_layer(params, x):\n  w, b = params\n  return jnp.matmul(x, w) + b[None]\n\n\ndef init_autoencoder(key, data_shape):\n  \"\"\"Initialize the standard autoencoder.\"\"\"\n  assert len(data_shape) == 1\n  x_size = data_shape[0]\n  sizes = [x_size, 1000, 500, 250, 30, 250, 500, 1000, x_size]\n  keys = jnr.split(key, len(sizes) - 1)\n  params = []\n  for key, dim_in, dim_out in zip(keys, sizes, sizes[1:]):\n    # Glorot uniform initialization\n    c = jnp.sqrt(6 / (dim_in + dim_out))\n    w = jax.random.uniform(key, shape=(dim_in, dim_out), minval=-c, maxval=c)\n    b = jnp.zeros([dim_out])\n    params.append((w, b))\n  return params\n\n\ndef autoencoder(all_params, x_in):\n  \"\"\"Evaluate the standard autoencoder.\n\n  Note that the objective of this autoencoder is not standard, bur rather a sum\n  of the standard sigmoid crossentropy and squared loss. The reason for this is\n  to test on handling multiple losses.\n\n  Args:\n    all_params: All parameter values.\n    x_in: Inputs to the network.\n\n  Returns:\n      The value of the two losses and intermediate layer values.\n  \"\"\"\n  h_in = x_in\n  layers_values = []\n  for i, params in enumerate(all_params):\n    h_out = fully_connected_layer(params, h_in)\n    layers_values.append((h_out, h_in))\n    # Last layer does not have a nonlinearity\n    if i % 4 != 3:\n      # h_in = nn.leaky_relu(h_out)\n      h_in = jnp.tanh(h_out)\n    else:\n      h_in = h_out\n  h1, _ = loss_functions.register_normal_predictive_distribution(h_in, x_in)\n  h2, _ = loss_functions.register_normal_predictive_distribution(\n      h_in, targets=x_in, weight=0.1)\n  l1 = (h1 - x_in)**2 + jnp.log(jnp.pi) / 2\n  l1 = jnp.sum(l1, axis=-1)\n  l2 = (h2 - x_in)**2 + jnp.log(jnp.pi) / 2\n  l2 = jnp.sum(l2, axis=-1)\n  return [l1, l2 * 0.1], layers_values\n"
  },
  {
    "path": "kfac_ferminet_alpha/tests/graph_matcher_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nimport unittest\n\nfrom absl.testing import absltest\nimport jax\nimport jax.numpy as jnp\nimport jax.random as jnr\n\nfrom kfac_ferminet_alpha import layers_and_loss_tags\nfrom kfac_ferminet_alpha import loss_functions\nfrom kfac_ferminet_alpha import tag_graph_matcher\nfrom kfac_ferminet_alpha.tests import common\n\n\ndef tagged_autoencoder(all_params, x_in):\n  h_in = x_in\n  layers_values = []\n  for i, params in enumerate(all_params):\n    h_out = common.fully_connected_layer(params, h_in)\n    h_out = layers_and_loss_tags.register_dense(h_out, h_in, params[0],\n                                                params[1],)\n    layers_values.append((h_out, h_in))\n    # Last layer does not have a nonlinearity\n    if i % 4 != 3:\n      h_in = jnp.tanh(h_out)\n    else:\n      h_in = h_out\n  h1, _ = loss_functions.register_normal_predictive_distribution(\n      h_in, targets=x_in, weight=1.0)\n  h2, t2 = loss_functions.register_normal_predictive_distribution(\n      h_in, targets=x_in, weight=0.1)\n  return [[h1, t2], [h2, t2]]\n\n\nclass TestGraphMatcher(unittest.TestCase):\n  \"\"\"Class for running all of the tests for integrating the systems.\"\"\"\n\n  def _test_jaxpr(self, init_func, model_func, tagged_model, data_shape):\n    data_shape = tuple(data_shape)\n    rng_key = jnr.PRNGKey(12345)\n    init_key, data_key = jnr.split(rng_key)\n    params = init_func(init_key, data_shape)\n    data = jnr.normal(data_key, (11,) + data_shape)\n    func = tag_graph_matcher.auto_register_tags(model_func, (params, data))\n    jaxpr = jax.make_jaxpr(func)(params, data).jaxpr\n    tagged_jaxpr = jax.make_jaxpr(tagged_model)(params, data).jaxpr\n    self.assertEqual(len(jaxpr.invars), len(tagged_jaxpr.invars))\n    self.assertEqual(len(jaxpr.constvars), len(tagged_jaxpr.constvars))\n    self.assertEqual(len(jaxpr.outvars), len(tagged_jaxpr.outvars))\n    for eq, tagged_eq in zip(jaxpr.eqns, tagged_jaxpr.eqns):\n      eq_in_vars = [v for v in eq.invars]\n      tagged_in_vars = [v for v in tagged_eq.invars]\n      self.assertEqual(len(eq_in_vars), len(tagged_in_vars))\n      self.assertEqual(len(eq.outvars), len(tagged_eq.outvars))\n      self.assertEqual(eq.primitive, tagged_eq.primitive)\n      for variable, t_variable in zip(eq_in_vars + eq.outvars,\n                                      tagged_in_vars + tagged_eq.outvars):\n        if isinstance(variable, jax.core.Literal):\n          self.assertEqual(variable.aval, t_variable.aval)\n        else:\n          if variable.count != t_variable.count:\n            print(\"0\")\n          self.assertEqual(variable.count, t_variable.count)\n\n  def test_autoencoder(self):\n    self._test_jaxpr(common.init_autoencoder, common.autoencoder,\n                     tagged_autoencoder, [784])\n\n\nif __name__ == \"__main__\":\n  absltest.main()\n"
  },
  {
    "path": "kfac_ferminet_alpha/tests/tracer_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nimport unittest\n\nfrom absl.testing import absltest\nimport jax\nimport jax.numpy as jnp\nimport jax.random as jnr\nimport numpy as np\n\nfrom kfac_ferminet_alpha import loss_functions\nfrom kfac_ferminet_alpha import tag_graph_matcher as tgm\nfrom kfac_ferminet_alpha import tracer\nfrom kfac_ferminet_alpha import utils\nfrom kfac_ferminet_alpha.tests import common\n\n\ndef autoencoder_aux(all_aux, all_params, x_in):\n  h_in = x_in\n  layers_values = []\n  for i, (params, aux) in enumerate(zip(all_params, all_aux)):\n    h_out = common.fully_connected_layer(params, h_in + aux[1]) + aux[0]\n    layers_values.append((h_out, h_in))\n    # Last layer does not have a nonlinearity\n    if i % 4 != 3:\n      h_in = jnp.tanh(h_out)\n    else:\n      h_in = h_out\n  h1, _ = loss_functions.register_normal_predictive_distribution(h_in, x_in)\n  h2, _ = loss_functions.register_normal_predictive_distribution(\n      h_in, targets=x_in, weight=0.1)\n  l1 = (h1 - x_in)**2 + jnp.log(jnp.pi) / 2\n  l2 = (h2 - x_in)**2 + jnp.log(jnp.pi) / 2\n  return [l1, l2 * 0.1], layers_values\n\n\nclass TestTracer(unittest.TestCase):\n  \"\"\"Class for running all of the tests for integrating the systems.\"\"\"\n\n  @staticmethod\n  def generate_data(init_func, func, data_shape, rng_key):\n    n = 3\n\n    rng_key, key = jnr.split(rng_key)\n    params = init_func(key, data_shape)\n    rng_key, key = jnr.split(rng_key)\n    p_tangents = init_func(key, data_shape)\n    rng_key, key = jnr.split(rng_key)\n    data = jnr.normal(key, [n] + data_shape)\n\n    loss_vals, layer_vals = func(params, data)\n    h = layer_vals[-1][0]\n    keys = jnr.split(key, len(loss_vals))\n    h_tangents = tuple(jnr.normal(key, shape=h.shape) for key in keys)\n\n    return params, data, p_tangents, h_tangents\n\n  def assertStructureAllClose(self, x, y, rtol=1E-5, atol=1E-5, **kwargs):\n    x_v, x_tree = jax.tree_flatten(x)\n    y_v, y_tree = jax.tree_flatten(y)\n    self.assertEqual(x_tree, y_tree)\n    for xi, yi in zip(x_v, y_v):\n      self.assertEqual(xi.shape, yi.shape)\n      self.assertEqual(xi.dtype, yi.dtype)\n      np.testing.assert_allclose(xi, yi, rtol=rtol, atol=atol, **kwargs)\n\n  def test_tacer_jvp(self):\n    init_func = common.init_autoencoder\n    func = common.autoencoder\n    data_shape = [784]\n    rng_key = jnr.PRNGKey(12345)\n    params, data, p_tangents, _ = self.generate_data(init_func, func,\n                                                     data_shape, rng_key)\n\n    def no_data_func(args):\n      outputs = func(args, data)\n      return outputs[0], outputs[1][-1][0]\n\n    # True computation\n    (primals_out, tangents_out) = jax.jvp(no_data_func, [params], [p_tangents])\n    loss_vals, _ = primals_out\n    _, h_tangents = tangents_out\n    loss_tangents = ((h_tangents,),) * len(loss_vals)\n    # Tracer computation\n    tracer_jvp = tracer.trace_losses_matrix_vector_jvp(func)\n    tracer_losses, tracer_loss_tangents = tracer_jvp((params, data), p_tangents)\n    tracer_losses = [loss.evaluate(None) for loss in tracer_losses]\n\n    self.assertStructureAllClose(loss_vals, tracer_losses)\n    self.assertStructureAllClose(loss_tangents, tracer_loss_tangents)\n\n  def test_tracer_vjp(self):\n    init_func = common.init_autoencoder\n    func = common.autoencoder\n    data_shape = [784]\n    rng_key = jnr.PRNGKey(12345)\n    params, data, _, h_tangents = self.generate_data(init_func, func,\n                                                     data_shape, rng_key)\n\n    def no_data_func(args):\n      outputs = func(args, data)\n      return outputs[0], outputs[1][-1][0]\n\n    # True computation\n    (loss_vals, _), vjp_func = jax.vjp(no_data_func, params)\n    loss_tangents = jax.tree_map(jnp.zeros_like, loss_vals)\n    summed_h_tangents = sum(jax.tree_flatten(h_tangents)[0])\n    p_tangents = vjp_func((loss_tangents, summed_h_tangents))\n    # Tracer computation\n    trace_vjp = tracer.trace_losses_matrix_vector_vjp(func)\n    tracer_losses, tracer_vjp_func = trace_vjp(params, data)\n    tracer_losses = [loss.evaluate(None) for loss in tracer_losses]\n    tracer_p_tangents = tracer_vjp_func(h_tangents)\n\n    self.assertStructureAllClose(loss_vals, tracer_losses)\n    self.assertStructureAllClose(p_tangents, tracer_p_tangents, atol=3e-6)\n\n  def test_tracer_hvp(self):\n    init_func = common.init_autoencoder\n    func = common.autoencoder\n    data_shape = [784]\n    rng_key = jnr.PRNGKey(12345)\n    params, data, p_tangents, _ = self.generate_data(init_func, func,\n                                                     data_shape, rng_key)\n\n    def no_data_func(args):\n      outputs = func(args, data)\n      return sum(jax.tree_map(jnp.sum, outputs[0]))\n\n    # True computation\n    grad_func = jax.grad(no_data_func)\n\n    def grad_time_tangents(args):\n      return utils.inner_product(grad_func(args), p_tangents)\n\n    hvp = jax.grad(grad_time_tangents)\n    hvp_vectors = hvp(params)\n    # Tracer computation\n    tracer_hvp = tracer.trace_losses_matrix_vector_hvp(func)\n    tracer_hvp_vectors = tracer_hvp((params, data), p_tangents)\n\n    self.assertStructureAllClose(hvp_vectors, tracer_hvp_vectors, atol=1e-4)\n\n  def test_trace_estimator(self):\n    init_func = common.init_autoencoder\n    func = common.autoencoder\n    aux_func = autoencoder_aux\n    data_shape = [784]\n    rng_key = jnr.PRNGKey(12345)\n    params, data, _, h_tangents = self.generate_data(init_func, func,\n                                                     data_shape, rng_key)\n\n    def aux_last_layer(aux, args):\n      outs = aux_func(aux, args, data)\n      return outs[1][-1][0]\n\n    # True computation\n    loss_vals, layer_vals = func(params, data)\n    aux_vals = jax.tree_map(jnp.zeros_like, layer_vals)\n    _, vjp = jax.vjp(aux_last_layer, aux_vals, params)\n    summed_h_tangents = sum(jax.tree_flatten(h_tangents)[0])\n    aux_tangents, p_tangents = vjp(summed_h_tangents)\n    layers_info = []\n    for aux_p, p_p in zip(layer_vals, params):\n      info = dict()\n      info[\"outputs\"] = (aux_p[0],)\n      info[\"inputs\"] = (aux_p[1],)\n      info[\"params\"] = (p_p[0], p_p[1])\n      layers_info.append(info)\n    for i, (aux_t, p_t) in enumerate(zip(aux_tangents, p_tangents)):\n      info = dict()\n      info[\"outputs_tangent\"] = (aux_t[0],)\n      info[\"inputs_tangent\"] = (aux_t[1],)\n      info[\"params_tangent\"] = (p_t[0], p_t[1])\n      layers_info[i].update(info)\n    layers_info = tuple(layers_info)\n\n    func = tgm.auto_register_tags(func, (params, data))\n    tracer_vjp = tracer.trace_estimator_vjp(func)\n    tracer_losses, tracer_vjp_func = tracer_vjp((params, data))\n    tracer_losses = [loss.evaluate(None) for loss in tracer_losses]\n    tracer_outputs = tracer_vjp_func((h_tangents[:1], h_tangents[1:]))\n\n    self.assertStructureAllClose(loss_vals, tracer_losses)\n    self.assertStructureAllClose(tracer_outputs, layers_info, atol=3e-6)\n\n\nif __name__ == \"__main__\":\n  absltest.main()\n"
  },
  {
    "path": "kfac_ferminet_alpha/tracer.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Module for the Jax tracer functionality for tags.\"\"\"\nimport functools\nfrom typing import Any, Callable, Sequence, Tuple\n\nimport jax\nfrom jax import core\nfrom jax import util as jax_util\nimport jax.numpy as jnp\n\nfrom kfac_ferminet_alpha import layers_and_loss_tags as tags\nfrom kfac_ferminet_alpha import tag_graph_matcher as tgm\nfrom kfac_ferminet_alpha import utils\n\n_Function = Callable[[Any], Any]\n_Loss = tags.LossTag\n\n\ndef extract_tags(\n    jaxpr: core.Jaxpr\n) -> Tuple[Sequence[core.JaxprEqn], Sequence[core.JaxprEqn]]:\n  \"\"\"Extracts all of the tag equations.\"\"\"\n  # Loop through equations and evaluate primitives using `bind`\n  layer_tags = []\n  loss_tags = []\n  for eqn in jaxpr.eqns:\n    if isinstance(eqn.primitive, tags.LossTag):\n      loss_tags.append(eqn)\n    elif isinstance(eqn.primitive, tags.LayerTag):\n      layer_tags.append(eqn)\n  return tuple(layer_tags), tuple(loss_tags)\n\n\ndef construct_compute_losses_inputs(\n    jaxpr: core.Jaxpr,\n    consts: Tuple[Any],\n    num_losses: int,\n    primals: Any,\n    params_index: int) -> Callable[[Any], Sequence[Sequence[jnp.ndarray]]]:\n  \"\"\"Constructs a function that computes all of the inputs to all losses.\"\"\"\n  primals_ = list(primals)\n\n  def forward_compute_losses(\n      params_primals: Any,\n  ) -> Sequence[Sequence[jnp.ndarray]]:\n    primals_[params_index] = params_primals\n    flat_args = jax.tree_flatten(primals_)[0]\n    # Mapping from variable -> value\n    env = dict()\n    read = functools.partial(tgm.read_env, env)\n    write = functools.partial(tgm.write_env, env)\n\n    # Bind args and consts to environment\n    jax_util.safe_map(write, jaxpr.invars, flat_args)\n    jax_util.safe_map(write, jaxpr.constvars, consts)\n\n    # Loop through equations and evaluate primitives using `bind`\n    losses_so_far = 0\n    loss_tags = []\n    for eqn in jaxpr.eqns:\n      tgm.evaluate_eqn(eqn, jax_util.safe_map(read, eqn.invars), write)\n      if isinstance(eqn.primitive, tags.LossTag):\n        loss_tags.append(eqn)\n        losses_so_far += 1\n      if num_losses is not None and losses_so_far == num_losses:\n        break\n    return tuple(tuple(read(v) for v in tag.invars) for tag in loss_tags)\n    # return tuple(jax_util.safe_map(read, tag.invars) for tag in loss_tags)\n  return forward_compute_losses\n\n\n# We know when `.primitive` will be either a `LossTag` or a `LayerTag`, however\n# pytype cannot infer its subclass, so we need to unbox it.\n\n\ndef _unbox_loss_tag(jaxpr_eqn: core.JaxprEqn) -> tags.LossTag:\n  assert isinstance(jaxpr_eqn.primitive, tags.LossTag)\n  return jaxpr_eqn.primitive\n\n\ndef _unbox_layer_tag(jaxpr_eqn: core.JaxprEqn) -> tags.LayerTag:\n  assert isinstance(jaxpr_eqn.primitive, tags.LayerTag)\n  return jaxpr_eqn.primitive\n\n\ndef trace_losses_matrix_vector_vjp(tagged_func: _Function,\n                                   params_index: int = 0):\n  \"\"\"Returns the Jacobian-transposed vector product (backward mode) function in equivalent form to jax.vjp.\"\"\"\n  def vjp(*primals):\n    typed_jaxpr = jax.make_jaxpr(tagged_func)(*primals)\n    jaxpr, consts = typed_jaxpr.jaxpr, typed_jaxpr.literals\n    _, loss_jaxpr_eqns = extract_tags(jaxpr)\n    n = len(loss_jaxpr_eqns)\n    losses_func = construct_compute_losses_inputs(\n        jaxpr, consts, n, primals, params_index)\n    losses_inputs, full_vjp_func = jax.vjp(losses_func, primals[params_index])\n    losses = []\n    for jaxpr_eqn, inputs in zip(loss_jaxpr_eqns, losses_inputs):\n      loss_tag = _unbox_loss_tag(jaxpr_eqn)\n      losses.append(loss_tag.loss(*inputs, weight=jaxpr_eqn.params[\"weight\"]))\n    losses = tuple(losses)\n\n    def vjp_func(tangents):\n      flat_tangents = jax.tree_flatten(tangents)[0]\n      loss_invars = []\n      loss_targets = []\n      for jaxpr_eqn, inputs in zip(loss_jaxpr_eqns, losses_inputs):\n        num_inputs = _unbox_loss_tag(jaxpr_eqn).num_inputs\n        loss_invars.append(tuple(jaxpr_eqn.invars[:num_inputs]))\n        loss_targets.append(inputs[num_inputs:])\n      treedef = jax.tree_structure(loss_invars)\n      tangents = jax.tree_unflatten(treedef, flat_tangents)\n      # Since the losses could also take and targets as inputs and we don't want\n      # this function to computes vjp w.r.t to those (e.g. the user should not\n      # be providing tangent vectors for the targets, only for inputs) we have\n      # to manually fill in these \"extra\" tangents with zeros.\n      targets_tangents = jax.tree_map(jnp.zeros_like, loss_targets)\n      tangents = tuple(ti + tti for ti, tti in zip(tangents, targets_tangents))\n      input_tangents = full_vjp_func(tangents)[0]\n      return input_tangents,\n    return losses, vjp_func\n  return vjp\n\n\ndef trace_losses_matrix_vector_jvp(\n    tagged_func: _Function,\n    params_index: int = 0):\n  \"\"\"Returns the Jacobian vector product (forward mode) function in equivalent form to jax.jvp.\"\"\"\n  def jvp(primals, params_tangents):\n    typed_jaxpr = jax.make_jaxpr(tagged_func)(*primals)\n    jaxpr, consts = typed_jaxpr.jaxpr, typed_jaxpr.literals\n    _, loss_tags = extract_tags(jaxpr)\n    n = len(loss_tags)\n    losses_func = construct_compute_losses_inputs(jaxpr, consts, n,\n                                                  primals, params_index)\n    primals = (primals[params_index],)\n    tangents = (params_tangents,)\n    (primals_out, tangents_out) = jax.jvp(losses_func, primals, tangents)\n    tangents_out = tuple(tuple(t[:tag.primitive.num_inputs])\n                         for t, tag in zip(tangents_out, loss_tags))\n    losses = tuple(tag.primitive.loss(*inputs, weight=tag.params[\"weight\"])\n                   for tag, inputs in zip(loss_tags, primals_out))\n    return losses, tangents_out\n  return jvp\n\n\ndef trace_losses_matrix_vector_hvp(tagged_func, params_index=0):\n  \"\"\"Returns the Hessian vector product function of **the tagged losses**, rather than the output value of `tagged_func`.\"\"\"\n  # The function uses backward-over-forward mode.\n\n  def hvp(primals, params_tangents):\n    typed_jaxpr = jax.make_jaxpr(tagged_func)(*primals)\n    jaxpr, consts = typed_jaxpr.jaxpr, typed_jaxpr.literals\n    _, loss_tags = extract_tags(jaxpr)\n    n = len(loss_tags)\n    losses_func = construct_compute_losses_inputs(\n        jaxpr, consts, n, primals, params_index)\n\n    def losses_sum(param_primals):\n      loss_inputs = losses_func(param_primals)\n      losses = [\n          _unbox_loss_tag(jaxpr_eqn).loss(\n              *inputs, weight=jaxpr_eqn.params[\"weight\"])\n          for jaxpr_eqn, inputs in zip(loss_tags, loss_inputs)\n      ]\n      # This computes the sum of losses evaluated. Makes it easier as we can\n      # now use jax.grad rather than jax.vjp for taking derivatives.\n      return sum(jnp.sum(loss.evaluate(None)) for loss in losses)\n\n    def grads_times_tangents(params_primals):\n      grads = jax.grad(losses_sum)(params_primals)\n      return utils.inner_product(grads, params_tangents)\n\n    return jax.grad(grads_times_tangents)(primals[params_index])\n  return hvp\n\n\ndef trace_estimator_vjp(tagged_func: _Function) -> _Function:\n  \"\"\"Creates the function needed for an estimator of curvature matrices.\n\n  Args:\n    tagged_func: An function that has been annotated with tags both for layers\n      and losses.\n\n  Returns:\n    A function with the same signatures as `tagged_func`, which when provided\n    with inputs returns two things:\n    1. The instances of all losses objected that are tagged.\n    2. A second function, which when provide with tangent vectors for each\n      of the loss instances' parameters, returns for every tagged layer a\n      dictionary containing the following elements:\n        inputs - The primal values of the inputs to the layer.\n        outputs - The primal values of the outputs to the layer.\n        params - The primal values of the layer.\n        inputs_tangent - The tangent value of layer, given the provided\n          tangents of the losses.\n        inputs_tangent - The tangent value of layer, given the provided\n          tangents of the losses.\n        inputs_tangent - The tangent value of layer, given the provided\n          tangents of the losses.\n  \"\"\"\n  def full_vjp_func(func_args):\n    # Trace the tagged function\n    typed_jaxpr = jax.make_jaxpr(tagged_func)(*func_args)\n    jaxpr, consts = typed_jaxpr.jaxpr, typed_jaxpr.literals\n    layer_tags, loss_tags = extract_tags(jaxpr)\n\n    layer_vars_flat = jax.tree_flatten([tag.invars for tag in layer_tags])[0]\n    layer_input_vars = tuple(set(layer_vars_flat))\n\n    def forward():\n      own_func_args = func_args\n      # Mapping from variable -> value\n      env = dict()\n      read = functools.partial(tgm.read_env, env)\n      write = functools.partial(tgm.write_env, env)\n\n      # Bind args and consts to environment\n      jax_util.safe_map(write, jaxpr.invars, jax.tree_flatten(own_func_args)[0])\n      jax_util.safe_map(write, jaxpr.constvars, consts)\n\n      # Loop through equations and evaluate primitives using `bind`\n      num_losses_passed = 0\n      for eqn in jaxpr.eqns:\n        tgm.evaluate_eqn(eqn, jax_util.safe_map(read, eqn.invars), write)\n        if isinstance(eqn.primitive, tags.LossTag):\n          num_losses_passed += 1\n          if num_losses_passed == len(loss_tags):\n            break\n      if num_losses_passed != len(loss_tags):\n        raise ValueError(\"This should be unreachable.\")\n\n      return jax_util.safe_map(read, layer_input_vars)\n\n    def forward_aux(aux):\n      own_func_args = func_args\n      # Mapping from variable -> value\n      env = dict()\n      read = functools.partial(tgm.read_env, env)\n      def write(var, val):\n        if not isinstance(var, jax.core.Literal):\n          val = val + aux[var] if var in aux else val\n        env[var] = val\n\n      # Bind args and consts to environment\n      jax_util.safe_map(write, jaxpr.invars, jax.tree_flatten(own_func_args)[0])\n      jax_util.safe_map(write, jaxpr.constvars, consts)\n\n      # Loop through equations and evaluate primitives using `bind`\n      num_losses_passed = 0\n      losses_inputs_values = []\n      losses_kwargs_values = []\n      for eqn in jaxpr.eqns:\n        input_values = jax_util.safe_map(read, eqn.invars)\n        tgm.evaluate_eqn(eqn, input_values, write)\n        if isinstance(eqn.primitive, tags.LossTag):\n          loss = eqn.primitive.loss(*input_values, weight=eqn.params[\"weight\"])\n          losses_inputs_values.append(loss.inputs)\n          losses_kwargs_values.append(dict(\n              targets=loss.targets,\n              weight=eqn.params[\"weight\"]\n          ))\n          num_losses_passed += 1\n          if num_losses_passed == len(loss_tags):\n            break\n      if num_losses_passed != len(loss_tags):\n        raise ValueError(\"This should be unreachable.\")\n      # Read the inputs to the loss functions, but also return the target values\n      return tuple(losses_inputs_values), tuple(losses_kwargs_values)\n\n    layer_input_values = forward()\n    primals_dict = dict(zip(layer_input_vars, layer_input_values))\n    primals_dict.update(zip(jaxpr.invars, jax.tree_flatten(func_args)[0]))\n    aux_values = jax.tree_map(jnp.zeros_like, layer_input_values)\n    aux_dict = dict(zip(layer_input_vars, aux_values))\n\n    losses_args, aux_vjp, losses_kwargs = jax.vjp(forward_aux, aux_dict,\n                                                  has_aux=True)\n    losses = tuple(tag.primitive.loss(*inputs, **kwargs)\n                   for tag, inputs, kwargs in\n                   zip(loss_tags, losses_args, losses_kwargs))\n\n    def vjp_func(tangents):\n      all_tangents = aux_vjp(tangents)\n      tangents_dict, inputs_tangents = all_tangents[0], all_tangents[1:]\n      inputs_tangents = jax.tree_flatten(inputs_tangents)[0]\n      tangents_dict.update(zip(jaxpr.invars, inputs_tangents))\n\n      read_primals = functools.partial(tgm.read_env, primals_dict)\n      read_tangents = functools.partial(tgm.read_env, tangents_dict)\n      layers_info = []\n      for jaxpr_eqn in layer_tags:\n        layer_tag = _unbox_layer_tag(jaxpr_eqn)\n        info = dict()\n        primals = jax_util.safe_map(read_primals, tuple(jaxpr_eqn.invars))\n        (\n            info[\"outputs\"],\n            info[\"inputs\"],\n            info[\"params\"],\n        ) = layer_tag.split_all_inputs(primals)\n        tangents = jax_util.safe_map(read_tangents, tuple(jaxpr_eqn.invars))\n        (\n            info[\"outputs_tangent\"],\n            info[\"inputs_tangent\"],\n            info[\"params_tangent\"],\n        ) = layer_tag.split_all_inputs(tangents)\n        layers_info.append(info)\n      return tuple(layers_info)\n\n    return losses, vjp_func\n  return full_vjp_func\n"
  },
  {
    "path": "kfac_ferminet_alpha/utils.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Utilities related to multi-device operations.\"\"\"\nimport collections\nfrom typing import Any, Mapping, Optional, Sequence, Tuple, TypeVar, Union\nimport dataclasses\nimport jax\nfrom jax import core\nfrom jax import lax\nimport jax.numpy as jnp\nfrom jax.scipy import linalg\nimport jax.tree_util as tree_util\n\nT = TypeVar(\"T\")\n\n\ndef wrap_if_pmap(p_func):\n\n  def p_func_if_pmap(obj, axis_name):\n    try:\n      core.axis_frame(axis_name)\n      return p_func(obj, axis_name)\n    except NameError:\n      return obj\n\n  return p_func_if_pmap\n\n\npmean_if_pmap = wrap_if_pmap(lax.pmean)\npsum_if_pmap = wrap_if_pmap(lax.psum)\ncompute_mean = jax.pmap(lambda x: lax.pmean(x, \"i\"), axis_name=\"i\")\ncompute_sum = jax.pmap(lambda x: lax.psum(x, \"i\"), axis_name=\"i\")\n\n\ndef get_first(obj: T) -> T:\n  return jax.tree_map(lambda x: x[0], obj)\n\n\ndef get_mean(obj: T) -> T:\n  return get_first(compute_mean(obj))\n\n\ndef get_sum(obj: T) -> T:\n  return get_first(compute_sum(obj))\n\n\nbroadcast_all_local_devices = jax.pmap(lambda x: x)\n\n\ndef replicate_all_local_devices(obj: T) -> T:\n  n = jax.local_device_count()\n  obj_stacked = jax.tree_map(lambda x: jnp.stack([x] * n, axis=0), obj)\n  return broadcast_all_local_devices(obj_stacked)\n\n\ndef make_different_rng_key_on_all_devices(rng: jnp.ndarray) -> jnp.ndarray:\n  rng = jax.random.fold_in(rng, jax.host_id())\n  rng = jax.random.split(rng, jax.local_device_count())\n  return broadcast_all_local_devices(rng)\n\n\np_split = jax.pmap(lambda key: tuple(jax.random.split(key)))\n\n\ndef scalar_mul(obj: T, scalar: Union[float, jnp.ndarray]) -> T:\n  return jax.tree_map(lambda x: x * scalar, obj)\n\n\ndef scalar_div(obj: T, scalar: Union[float, jnp.ndarray]) -> T:\n  return jax.tree_map(lambda x: x / scalar, obj)\n\n\ndef make_func_args(params, func_state, rng, batch, has_state: bool,\n                   has_rng: bool):\n  \"\"\"Correctly puts all arguments to the function together.\"\"\"\n  func_args = (params,)\n  if has_state:\n    if func_state is None:\n      raise ValueError(\"The `func_state` is None, but the argument `has_state` \"\n                       \"is True.\")\n    func_args += (func_state,)\n  if has_rng:\n    if rng is None:\n      raise ValueError(\"The `rng` is None, but the argument `has_rng` is True.\")\n    func_args += (rng,)\n  func_args += (batch,)\n  return func_args\n\n\ndef extract_func_outputs(\n    raw_outputs: Any,\n    has_aux: bool,\n    has_state: bool,\n) -> Tuple[jnp.ndarray, Any, Any]:\n  \"\"\"Given the function output returns separately the loss, func_state, aux.\"\"\"\n  if not has_aux and not has_state:\n    return raw_outputs, None, None\n  loss, other = raw_outputs\n  if has_aux and has_state:\n    func_state, aux = other\n  elif has_aux:\n    func_state, aux = None, other\n  else:\n    func_state, aux = other, None\n  return loss, func_state, aux\n\n\ndef inner_product(obj1: T, obj2: T) -> jnp.ndarray:\n  if jax.tree_structure(obj1) != jax.tree_structure(obj2):\n    raise ValueError(\"The two structures are not identical.\")\n  elements_product = jax.tree_map(lambda x, y: jnp.sum(x * y), obj1, obj2)\n  return sum(jax.tree_flatten(elements_product)[0])\n\n\ndef psd_inv_cholesky(matrix: jnp.ndarray, damping: jnp.ndarray) -> jnp.ndarray:\n  assert matrix.ndim == 2\n  identity = jnp.eye(matrix.shape[0])\n  matrix = matrix + damping * identity\n  return linalg.solve(matrix, identity, sym_pos=True)\n\n\ndef solve_maybe_small(a: jnp.ndarray, b: jnp.ndarray) -> jnp.ndarray:\n  \"\"\"Computes a^-1 b more efficiently for small matrices.\"\"\"\n  assert a.shape[-1] == a.shape[-2] == b.shape[-1]\n  d = a.shape[-1]\n  if d == 0:\n    return a\n  elif d == 1:\n    return b / a[..., 0]\n  elif d == 2:\n    det = a[..., 0, 0] * a[..., 1, 1] - a[..., 0, 1] * a[..., 1, 0]\n    b_0 = a[..., 1, 1] * b[..., 0] - a[..., 0, 1] * b[..., 1]\n    b_1 = a[..., 0, 0] * b[..., 1] - a[..., 1, 0] * b[..., 0]\n    return jnp.stack([b_0, b_1], axis=-1) / det\n  elif d == 3:\n    raise NotImplementedError()\n  return jnp.linalg.solve(a, b)\n\n\ndef pi_adjusted_inverse(\n    factor_0: jnp.ndarray,\n    factor_1: jnp.ndarray,\n    damping: jnp.ndarray,\n    pmap_axis_name: str,\n) -> Tuple[jnp.ndarray, jnp.ndarray]:\n  \"\"\"Performs inversion with pi-adjusted damping.\"\"\"\n  # Compute the norms of each factor\n  norm_0 = jnp.trace(factor_0)\n  norm_1 = jnp.trace(factor_1)\n\n  # We need to sync the norms here, because reduction can be non-deterministic.\n  # They specifically are on GPUs by default for better performance.\n  # Hence although factor_0 and factor_1 are synced, the trace operation above\n  # can still produce different answers on different devices.\n  norm_0, norm_1 = pmean_if_pmap((norm_0, norm_1), axis_name=pmap_axis_name)\n\n  # Compute the overall scale\n  scale = norm_0 * norm_1\n\n  def regular_inverse(\n      operand: Sequence[jnp.ndarray]) -> Tuple[jnp.ndarray, jnp.ndarray]:\n    factor0, factor1, norm0, norm1, s, d = operand\n    # Special cases with one or two scalar factors\n    if factor0.size == 1 and factor1.size == 1:\n      value = jnp.ones_like(factor0) / jnp.sqrt(s)\n      return value, value\n    if factor0.size == 1:\n      factor1_normed = factor1 / norm1\n      damping1 = d / norm1\n      factor1_inv = psd_inv_cholesky(factor1_normed, damping1)\n      return jnp.full((1, 1), s), factor1_inv\n    if factor1.size == 1:\n      factor0_normed = factor0 / norm0\n      damping0 = d / norm0\n      factor0_inv = psd_inv_cholesky(factor0_normed, damping0)\n      return factor0_inv, jnp.full((1, 1), s)\n\n    # Invert first factor\n    factor0_normed = factor0 / norm0\n    damping0 = jnp.sqrt(d * factor1.shape[0] / (s * factor0.shape[0]))\n    factor0_inv = psd_inv_cholesky(factor0_normed, damping0) / jnp.sqrt(s)\n\n    # Invert second factor\n    factor1_normed = factor1 / norm1\n    damping1 = jnp.sqrt(d * factor0.shape[0] / (s * factor1.shape[0]))\n    factor1_inv = psd_inv_cholesky(factor1_normed, damping1) / jnp.sqrt(s)\n    return factor0_inv, factor1_inv\n\n  def zero_inverse(\n      operand: Sequence[jnp.ndarray]) -> Tuple[jnp.ndarray, jnp.ndarray]:\n    return (jnp.eye(factor_0.shape[0]) / jnp.sqrt(operand[-1]),\n            jnp.eye(factor_1.shape[0]) / jnp.sqrt(operand[-1]))\n\n  # In the special case where for some reason one of the factors is zero, then\n  # the correct inverse of `(0 kron A + lambda I)` is\n  # `(I/sqrt(lambda) kron (I/sqrt(lambda)`. However, because one of the norms is\n  # zero, then `pi` and `1/pi` would be 0 and infinity leading to NaN values.\n  # Hence, we need to make this check explicitly.\n  return lax.cond(\n      jnp.greater(scale, 0.0),\n      regular_inverse,\n      zero_inverse,\n      operand=(factor_0, factor_1, norm_0, norm_1, scale, damping))\n\n\ndef convert_value_and_grad_to_value_func(\n    value_and_grad_func,\n    has_aux: bool = False,\n):\n  \"\"\"Converts a value_and_grad function to value_func only.\"\"\"\n\n  def value_func(*args, **kwargs):\n    out, _ = value_and_grad_func(*args, **kwargs)\n    if has_aux:\n      return out[0]\n    else:\n      return out\n\n  return value_func\n\n\ndef check_structure_shapes_and_dtype(obj1: T, obj2: T) -> None:\n  \"\"\"Verifies that the two objects have the same pytree structure.\"\"\"\n  assert jax.tree_structure(obj1) == jax.tree_structure(obj2)\n  for v1, v2 in zip(jax.tree_flatten(obj1)[0], jax.tree_flatten(obj2)[0]):\n    assert v1.shape == v2.shape\n    assert v1.dtype == v2.dtype\n\n\ndef check_first_dim_is_batch_size(batch_size: int, *args: jnp.ndarray) -> None:\n  for i, arg in enumerate(args):\n    if arg.shape[0] != batch_size:\n      raise ValueError(f\"Expecting first dimension of arg[{i}] with shape \"\n                       f\"{arg.shape} to be equal to the batch size \"\n                       f\"{batch_size}.\")\n\n\ndef py_tree_registered_dataclass(cls, *args, **kwargs):\n  \"\"\"Creates a new dataclass type and registers it as a pytree node.\"\"\"\n  dcls = dataclasses.dataclass(cls, *args, **kwargs)\n  tree_util.register_pytree_node(\n      dcls,\n      lambda instance: (  # pylint: disable=g-long-lambda\n          [getattr(instance, f.name)\n           for f in dataclasses.fields(instance)], None),\n      lambda _, instance_args: dcls(*instance_args))\n  return dcls\n\n\nclass WeightedMovingAverage:\n  \"\"\"A wrapped class for a variable for which we keep exponential moving average.\"\"\"\n\n  def __init__(self, weight: jnp.ndarray, array: jnp.ndarray):\n    self._weight = weight\n    self._array = array\n\n  @staticmethod\n  def zero(shape: Sequence[int]) -> \"WeightedMovingAverage\":\n    return WeightedMovingAverage(weight=jnp.zeros([]), array=jnp.zeros(shape))\n\n  @property\n  def weight(self) -> jnp.ndarray:\n    return self._weight\n\n  @property\n  def value(self) -> jnp.ndarray:\n    return self._array / self._weight\n\n  @property\n  def raw_value(self) -> jnp.ndarray:\n    return self._array\n\n  def update(self, value: jnp.ndarray, old_weight_multiplier: float,\n             new_weight: float) -> None:\n    self._weight = old_weight_multiplier * self._weight + new_weight\n    self._array = old_weight_multiplier * self._array + new_weight * value\n\n  def sync(self, pmap_axis_name: str) -> None:\n    self._array = pmean_if_pmap(self._array, pmap_axis_name)\n\n  def __str__(self) -> str:\n    return (f\"ExponentialMovingAverage(weight={self._weight}, \"\n            f\"array={self._array})\")\n\n  def __repr__(self) -> str:\n    return self.__str__()\n\n\ntree_util.register_pytree_node(\n    WeightedMovingAverage,\n    lambda instance: ((instance.weight, instance.raw_value), None),\n    lambda _, instance_args: WeightedMovingAverage(*instance_args),\n)\n\n\nclass Stateful:\n  \"\"\"A class for stateful objects.\"\"\"\n\n  def __init__(self, stateful_fields_names: Optional[Sequence[str]] = ()):\n    self.__stateful_fields_names = stateful_fields_names\n\n  def _add_stateful_fields_names(self, value: Sequence[str]) -> None:\n    self.__stateful_fields_names += tuple(value)\n\n  def get_state(self) -> Mapping[str, Any]:\n    \"\"\"Returns the state of the object.\"\"\"\n    state = dict()\n    for name in self.__stateful_fields_names:\n      state[name] = Stateful._get_state_from_instance(getattr(self, name))\n    return state\n\n  def set_state(self, value):\n    \"\"\"Sets the state of the object with the provided value and returns the object.\"\"\"\n    assert isinstance(value, dict)\n    for name in self.__stateful_fields_names:\n      setattr(self, name,\n              Stateful._set_state_to_instance(getattr(self, name), value[name]))\n    return self\n\n  def clear_state(self) -> None:\n    \"\"\"Clears the state of the object.\"\"\"\n    for name in self.__stateful_fields_names:\n      setattr(self, name,\n              Stateful._clear_state_from_instance(getattr(self, name)))\n\n  def pop_state(self) -> Mapping[str, Any]:\n    \"\"\"Returns the current state of the object, while simultaneously clearing it.\"\"\"\n    state = self.get_state()\n    self.clear_state()\n    return state\n\n  @staticmethod\n  def _get_state_from_instance(obj):\n    \"\"\"Recursively gets the state of the object and returns it.\"\"\"\n    if isinstance(obj, Stateful):\n      return obj.get_state()\n    if isinstance(obj, list):\n      return [Stateful._get_state_from_instance(i) for i in obj]\n    if isinstance(obj, tuple):\n      return tuple(Stateful._get_state_from_instance(i) for i in obj)\n    if isinstance(obj, collections.OrderedDict):\n      return collections.OrderedDict(\n          (k, Stateful._get_state_from_instance(v)) for k, v in obj.items())\n    if isinstance(obj, dict):\n      return dict(\n          (k, Stateful._get_state_from_instance(v)) for k, v in obj.items())\n    return obj\n\n  @staticmethod\n  def _set_state_to_instance(obj, value):\n    \"\"\"Recursively sets the state of the object and returns it.\"\"\"\n    if isinstance(obj, Stateful):\n      obj.set_state(value)\n      return obj\n    if isinstance(value, list):\n      if obj is None:\n        obj = [None] * len(value)\n      return [\n          Stateful._set_state_to_instance(obj_i, value_i)\n          for obj_i, value_i in zip(obj, value)\n      ]\n    if isinstance(value, tuple):\n      if obj is None:\n        obj = [None] * len(value)\n      return tuple(\n          Stateful._set_state_to_instance(obj_i, value_i)\n          for obj_i, value_i in zip(obj, value))\n    if isinstance(value, collections.OrderedDict):\n      if obj is None:\n        obj = dict((k, None) for k in value)\n      return collections.OrderedDict(\n          (k, Stateful._set_state_to_instance(obj[k], value[k])) for k in obj)\n    if isinstance(value, dict):\n      obj = dict((k, None) for k in value)\n      return dict(\n          (k, Stateful._set_state_to_instance(obj[k], value[k])) for k in obj)\n    return value\n\n  @staticmethod\n  def _clear_state_from_instance(obj):\n    \"\"\"Recursively clears the state of the object and returns it.\"\"\"\n    if isinstance(obj, Stateful):\n      obj.clear_state()\n      return obj\n    if isinstance(obj, list):\n      return [Stateful._clear_state_from_instance(obj_i) for obj_i in obj]\n    if isinstance(obj, tuple):\n      return tuple(Stateful._clear_state_from_instance(obj_i) for obj_i in obj)\n    if isinstance(obj, collections.OrderedDict):\n      return collections.OrderedDict(\n          (k, Stateful._clear_state_from_instance(obj[k])) for k in obj)\n    if isinstance(obj, dict):\n      return dict((k, Stateful._clear_state_from_instance(obj[k])) for k in obj)\n    return None\n\n  @staticmethod\n  def infer_class_state(class_type):\n    \"\"\"Infers a stateful class state attributes from class annotations.\"\"\"\n    if not issubclass(class_type, Stateful):\n      raise ValueError(\n          f\"In order to annotate a class as stateful it must inherit \"\n          f\"{Stateful!r}\")\n\n    class_type = dataclasses.dataclass(\n        class_type, init=False, repr=False, eq=False)  # pytype: disable=wrong-keyword-args\n    fields_names = tuple(field.name for field in dataclasses.fields(class_type))\n    original_init = getattr(class_type, \"__init__\", None)\n    if original_init is None:\n\n      def injected_init(self, *args, **kwargs):\n        super(self.__class__, self).__init__(*args, **kwargs)  # pylint: disable=bad-super-call\n        Stateful._add_stateful_fields_names(self, fields_names)\n        for field_name in fields_names:\n          if getattr(self, field_name, None) is None:\n            setattr(self, field_name, None)\n\n      setattr(class_type, \"__init__\", injected_init)\n    else:\n\n      def injected_init(self, *args, **kwargs):\n        original_init(self, *args, **kwargs)\n        Stateful._add_stateful_fields_names(self, fields_names)\n        for field_name in fields_names:\n          if getattr(self, field_name, None) is None:\n            setattr(self, field_name, None)\n\n      setattr(class_type, \"__init__\", injected_init)\n    return class_type\n\n\ndef compute_sq_norm_relative_abs_diff(obj, pmap_axis_name):\n  sq_norm = inner_product(obj, obj)\n  synced_sq_norm = psum_if_pmap(sq_norm, pmap_axis_name)\n  synced_sq_norm = (synced_sq_norm - sq_norm) / (jax.device_count() - 1.0)\n  sq_norm_abs_diff = jnp.abs(sq_norm - synced_sq_norm)\n  return sq_norm_abs_diff / sq_norm\n\n\ndef product(iterable_object):\n  x = 1\n  for element in iterable_object:\n    x *= element\n  return x\n"
  },
  {
    "path": "learned_free_energy_estimation/README.md",
    "content": "# Targeted free energy estimation via learned mappings\n\nThis repository contains supporting data for our publication\n([journal](https://doi.org/10.1063/5.0018903), [arXiv](https://arxiv.org/abs/2002.04913)).\nHere, we provide\n- molecular dynamics (MD) datasets underlying the results reported in our paper,\n- a LAMMPS input script to generate these datasets, and\n- the data plotted in Fig. 5 of our paper to facilitate comparison.\n\n## Abstract\n\nFree energy perturbation (FEP) was proposed by Zwanzig more than six decades ago\nas a method to estimate free energy differences, and has since inspired a huge\nbody of related methods that use it as an integral building block. Being an\nimportance sampling based estimator, however, FEP suffers from a severe\nlimitation: the requirement of sufficient overlap between distributions.\nOne strategy to mitigate this problem, called Targeted Free Energy Perturbation,\nuses a high-dimensional mapping in configuration space to increase overlap of\nthe underlying distributions. Despite its potential, this method has attracted\nonly limited attention due to the formidable challenge of formulating a\ntractable mapping. Here, we cast Targeted FEP as a machine learning problem in\nwhich the mapping is parameterized as a neural network that is optimized so as\nto increase overlap. We develop a new model architecture that respects\npermutational and periodic symmetries often encountered in atomistic simulations\nand test our method on a fully-periodic solvation system. We demonstrate that\nour method leads to a substantial variance reduction in free energy estimates\nwhen compared against baselines, without requiring any additional data.\n\n## Dataset\n\nWe generated the datasets using the open-source MD package\n[LAMMPS](https://lammps.sandia.gov). The prototypical solvation problem of study\nconsists of a solute particle immersed in a liquid comprising 125 solvent\nparticles. The solvent-solvent interactions are modelled using a Lennard-Jones\npotential and the solute-solvent interactions via a Weeks-Chandler-Andersen\n(WCA) potential. Further simulation details can be found in the LAMMPS script\nprovided (see below) and in our [paper](https://arxiv.org/abs/2002.04913)\n(see Sec. 4 and Appendix B).\n\n### Download\n\nYou can download the compressed datasets (~3.8GB) using the command:\n> wget https://storage.googleapis.com/learned_free_energy_estimation/learned_free_energy_estimation_datasets.tar.bz2\nor by copying the above link directly into your browser.\n\nOnce the archive `learned_free_energy_estimation_datasets.tar.bz2` is\ndownloaded, you can extract it with the command:\n> tar -xvf learned_free_energy_estimation_datasets.tar.bz2\n\n### Data format\n\nThe archive contains a total of 40 files:\n- 10 train datasets for ensemble *A* (`ensemble_a_train_<<index>>.dat`),\n- 10 train datasets for ensemble *B* (`ensemble_b_train_<<index>>.dat`),\n- 10 test datasets for ensemble *A* (`ensemble_a_test_<<index>>.dat`) and\n- 10 test datasets for ensemble *B* (`ensemble_b_test_<<index>>.dat`).\n\nEach file is text-based and stored in a LAMMPS compatible format (see [dump command](https://lammps.sandia.gov/doc/dump.html)). Train datasets contain 90k records\neach and test datasets contain 10k records, totalling 1M records for each\nensemble.\n\nEach record contains 135 lines and is structured as follows:\n- lines 1-9: Header information.\n- lines 10-135: A matrix with shape `[126, 5]` containing the\n  - `id` (column 1),\n  - `type` (column 2) and\n  - `x, y, z` coordinates (columns 3-5)\n\n  of all particles.\n\nFor information on how the data was generated and partitioned into the final\ndatasets we refer to Sec. 4 and Appendix B of our [paper](https://arxiv.org/abs/2002.04913).\n\n\n## LAMMPS script\n\nThe file `lammps.dat` contains a sample input script to generate data from\nensemble *A*. You can generate data from ensemble *B* by updating the value of\nthe solute radius, as suggested in the inline comment. For more information on\nhow the datasets were post-processed and partitioned, we refer to Sec. 4 and\nAppendix B of our [paper](https://arxiv.org/abs/2002.04913).\n\n## Figures\n\nThe subdirectory `figures` contains 4 files:\n- `figure_5a_work_values.dat`: contains data underlying the histogram of work values in Fig. 5a.\n- `figure_5b_df_bar.dat`: contains the BAR estimate of dF in Fig. 5b.\n- `figure_5b_df_lbar.dat`: contains the LBAR estimate of dF in Fig. 5b.\n- `figure_5b_df_mbar.dat`: contains the MBAR estimate of dF in Fig. 5b.\n\n## Reference\n\nIf you find this repository helpful for your research, please cite our publication:\n\n```\n@article{Wirnsberger2020,\n  title={Targeted free energy estimation via learned mappings},\n  author={Wirnsberger, Peter and Ballard, Andrew J and Papamakarios, George and\n          Abercrombie, Stuart and Racanière, Sébastien and Pritzel, Alexander and\n          Jimenez Rezende, Danilo and Blundell, Charles},\n  journal={J. Chem. Phys.},\n  volume={153},\n  number={14},\n  pages={144112},\n  year={2020},\n  doi={10.1063/5.0018903}\n}\n```\n\n\n## Disclaimer\nThis is not an official Google product.\n"
  },
  {
    "path": "learning_to_simulate/README.md",
    "content": "# Learning to Simulate Complex Physics with Graph Networks (ICML 2020)\n\nICML poster: [icml.cc/virtual/2020/poster/6849](https://icml.cc/virtual/2020/poster/6849)\n\nVideo site: [sites.google.com/view/learning-to-simulate](https://sites.google.com/view/learning-to-simulate)\n\nArXiv: [arxiv.org/abs/2002.09405](https://arxiv.org/abs/2002.09405)\n\nIf you use the code here please cite this paper:\n\n    @inproceedings{sanchezgonzalez2020learning,\n      title={Learning to Simulate Complex Physics with Graph Networks},\n      author={Alvaro Sanchez-Gonzalez and\n              Jonathan Godwin and\n              Tobias Pfaff and\n              Rex Ying and\n              Jure Leskovec and\n              Peter W. Battaglia},\n      booktitle={International Conference on Machine Learning},\n      year={2020}\n    }\n\n\n## Example usage: train a model and display a trajectory\n\n![WaterRamps rollout](images/water_ramps_rollout.gif)\n\nAfter downloading the repo, and from the parent directory. Install dependencies:\n\n    pip install -r learning_to_simulate/requirements.txt\n    mkdir -p /tmp/rollous\n\nDownload dataset (e.g. WaterRamps):\n\n    mkdir -p /tmp/datasets\n    bash ./learning_to_simulate/download_dataset.sh WaterRamps /tmp/datasets\n\nTrain a model:\n\n    mkdir -p /tmp/models\n    python -m learning_to_simulate.train \\\n        --data_path=/tmp/datasets/WaterRamps \\\n        --model_path=/tmp/models/WaterRamps\n\nGenerate some trajectory rollouts on the test set:\n\n    mkdir -p /tmp/rollouts\n    python -m learning_to_simulate.train \\\n        --mode=\"eval_rollout\" \\\n        --data_path=/tmp/datasets/WaterRamps \\\n        --model_path=/tmp/models/WaterRamps \\\n        --output_path=/tmp/rollouts/WaterRamps\n\nPlot a trajectory:\n\n    python -m learning_to_simulate.render_rollout \\\n        --rollout_path=/tmp/rollouts/WaterRamps/rollout_test_0.pkl\n\n\n## Datasets\n\nDatasets are available to download via:\n\n* Metadata file with dataset information (sequence length, dimensionality, box bounds, default connectivity radius, statistics for normalization, ...):\n\n  `https://storage.googleapis.com/learning-to-simulate-complex-physics/Datasets/{DATASET_NAME}/metadata.json`\n\n* TFRecords containing data for all trajectories (particle types, positions, global context, ...):\n\n  `https://storage.googleapis.com/learning-to-simulate-complex-physics/Datasets/{DATASET_NAME}/{DATASET_SPLIT}.tfrecord`\n\nWhere:\n\n* `{DATASET_SPLIT}` is one of:\n  * `train`\n  * `valid`\n  * `test`\n\n* `{DATASET_NAME}` one of the datasets following the naming used in the paper:\n  * `WaterDrop`\n  * `Water`\n  * `Sand`\n  * `Goop`\n  * `MultiMaterial`\n  * `RandomFloor`\n  * `WaterRamps`\n  * `SandRamps`\n  * `FluidShake`\n  * `FluidShakeBox`\n  * `Continuous`\n  * `WaterDrop-XL`\n  * `Water-3D`\n  * `Sand-3D`\n  * `Goop-3D`\n\nThe provided script `./download_dataset.sh` may be used to download all files from each dataset into a folder given its name.\n\nAn additional smaller dataset `WaterDropSample`, which includes only the first two trajectories of `WaterDrop` for each split, is provided for debugging purposes.\n\n\n## Code structure\n\n* `train.py`: Script for training, evaluating and generating rollout trajectories.\n* `learned_simulator.py`: Implementation of the learnable one-step model that returns the next position of the particles given inputs. It includes data preprocessing, Euler integration, and a helper method for building normalized training outputs and targets.\n* `graph_network.py`: Implementation of the graph network used at the core of the learnable part of the model.\n* `render_rollout.py`: Visualization code for displaying rollouts such as the example animation.\n* `{noise/connectivity/reading}_utils.py`: Util modules for adding noise to the inputs, computing graph connectivity and reading datasets form TFRecords.\n*  `model_demo.py`: example connecting the model to input dummy data.\n\nNote this is a reference implementation not designed to scale up to TPUs (unlike the one used for the paper). We have tested that the model can be trained with a batch size of 2 on a single NVIDIA V100 to reach similar qualitative performance (except for the XL and 3D datasets due to OOM).\n"
  },
  {
    "path": "learning_to_simulate/connectivity_utils.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Tools to compute the connectivity of the graph.\"\"\"\n\nimport functools\n\nimport numpy as np\nfrom sklearn import neighbors\nimport tensorflow.compat.v1 as tf\n\n\ndef _compute_connectivity(positions, radius, add_self_edges):\n  \"\"\"Get the indices of connected edges with radius connectivity.\n\n  Args:\n    positions: Positions of nodes in the graph. Shape:\n      [num_nodes_in_graph, num_dims].\n    radius: Radius of connectivity.\n    add_self_edges: Whether to include self edges or not.\n\n  Returns:\n    senders indices [num_edges_in_graph]\n    receiver indices [num_edges_in_graph]\n\n  \"\"\"\n  tree = neighbors.KDTree(positions)\n  receivers_list = tree.query_radius(positions, r=radius)\n  num_nodes = len(positions)\n  senders = np.repeat(range(num_nodes), [len(a) for a in receivers_list])\n  receivers = np.concatenate(receivers_list, axis=0)\n\n  if not add_self_edges:\n    # Remove self edges.\n    mask = senders != receivers\n    senders = senders[mask]\n    receivers = receivers[mask]\n\n  return senders, receivers\n\n\ndef _compute_connectivity_for_batch(\n    positions, n_node, radius, add_self_edges):\n  \"\"\"`compute_connectivity` for a batch of graphs.\n\n  Args:\n    positions: Positions of nodes in the batch of graphs. Shape:\n      [num_nodes_in_batch, num_dims].\n    n_node: Number of nodes for each graph in the batch. Shape:\n      [num_graphs in batch].\n    radius: Radius of connectivity.\n    add_self_edges: Whether to include self edges or not.\n\n  Returns:\n    senders indices [num_edges_in_batch]\n    receiver indices [num_edges_in_batch]\n    number of edges per graph [num_graphs_in_batch]\n\n  \"\"\"\n\n  # TODO(alvarosg): Consider if we want to support batches here or not.\n  # Separate the positions corresponding to particles in different graphs.\n  positions_per_graph_list = np.split(positions, np.cumsum(n_node[:-1]), axis=0)\n  receivers_list = []\n  senders_list = []\n  n_edge_list = []\n  num_nodes_in_previous_graphs = 0\n\n  # Compute connectivity for each graph in the batch.\n  for positions_graph_i in positions_per_graph_list:\n    senders_graph_i, receivers_graph_i = _compute_connectivity(\n        positions_graph_i, radius, add_self_edges)\n\n    num_edges_graph_i = len(senders_graph_i)\n    n_edge_list.append(num_edges_graph_i)\n\n    # Because the inputs will be concatenated, we need to add offsets to the\n    # sender and receiver indices according to the number of nodes in previous\n    # graphs in the same batch.\n    receivers_list.append(receivers_graph_i + num_nodes_in_previous_graphs)\n    senders_list.append(senders_graph_i + num_nodes_in_previous_graphs)\n\n    num_nodes_graph_i = len(positions_graph_i)\n    num_nodes_in_previous_graphs += num_nodes_graph_i\n\n  # Concatenate all of the results.\n  senders = np.concatenate(senders_list, axis=0).astype(np.int32)\n  receivers = np.concatenate(receivers_list, axis=0).astype(np.int32)\n  n_edge = np.stack(n_edge_list).astype(np.int32)\n\n  return senders, receivers, n_edge\n\n\ndef compute_connectivity_for_batch_pyfunc(\n    positions, n_node, radius, add_self_edges=True):\n  \"\"\"`_compute_connectivity_for_batch` wrapped in a pyfunc.\"\"\"\n  partial_fn = functools.partial(\n      _compute_connectivity_for_batch, add_self_edges=add_self_edges)\n  senders, receivers, n_edge = tf.py_function(\n      partial_fn,\n      [positions, n_node, radius],\n      [tf.int32, tf.int32, tf.int32])\n  senders.set_shape([None])\n  receivers.set_shape([None])\n  n_edge.set_shape(n_node.get_shape())\n  return senders, receivers, n_edge\n\n"
  },
  {
    "path": "learning_to_simulate/download_dataset.sh",
    "content": "#!/bin/bash\n# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n# Usage:\n#     bash download_dataset.sh ${DATASET_NAME} ${OUTPUT_DIR}\n# Example:\n#     bash download_dataset.sh WaterDrop /tmp/\n\nset -e\n\nDATASET_NAME=\"${1}\"\nOUTPUT_DIR=\"${2}/${DATASET_NAME}\"\n\nBASE_URL=\"https://storage.googleapis.com/learning-to-simulate-complex-physics/Datasets/${DATASET_NAME}/\"\n\nmkdir -p ${OUTPUT_DIR}\nfor file in metadata.json train.tfrecord valid.tfrecord test.tfrecord\ndo\nwget -O \"${OUTPUT_DIR}/${file}\" \"${BASE_URL}${file}\"\ndone\n"
  },
  {
    "path": "learning_to_simulate/graph_network.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Graph network implementation accompanying ICML 2020 submission.\n\n   \"Learning to Simulate Complex Physics with Graph Networks\"\n\n   Alvaro Sanchez-Gonzalez*, Jonathan Godwin*, Tobias Pfaff*, Rex Ying,\n   Jure Leskovec, Peter W. Battaglia\n\n   https://arxiv.org/abs/2002.09405\n\nThe Sonnet `EncodeProcessDecode` module provided here implements the learnable\nparts of the model.\nIt assumes an encoder preprocessor has already built a graph with\nconnectivity and features as described in the paper, with features normalized\nto zero-mean unit-variance.\n\nDependencies include Tensorflow 1.x, Sonnet 1.x and the Graph Nets 1.1 library.\n\"\"\"\nfrom typing import Callable\n\nimport graph_nets as gn\nimport sonnet as snt\nimport tensorflow as tf\n\nReducer = Callable[[tf.Tensor, tf.Tensor, tf.Tensor], tf.Tensor]\n\n\ndef build_mlp(\n    hidden_size: int, num_hidden_layers: int, output_size: int) -> snt.Module:\n  \"\"\"Builds an MLP.\"\"\"\n  return snt.nets.MLP(\n      output_sizes=[hidden_size] * num_hidden_layers + [output_size])  # pytype: disable=bad-return-type  # gen-stub-imports\n\n\nclass EncodeProcessDecode(snt.AbstractModule):\n  \"\"\"Encode-Process-Decode function approximator for learnable simulator.\"\"\"\n\n  def __init__(\n      self,\n      latent_size: int,\n      mlp_hidden_size: int,\n      mlp_num_hidden_layers: int,\n      num_message_passing_steps: int,\n      output_size: int,\n      reducer: Reducer = tf.math.unsorted_segment_sum,\n      name: str = \"EncodeProcessDecode\"):\n    \"\"\"Inits the model.\n\n    Args:\n      latent_size: Size of the node and edge latent representations.\n      mlp_hidden_size: Hidden layer size for all MLPs.\n      mlp_num_hidden_layers: Number of hidden layers in all MLPs.\n      num_message_passing_steps: Number of message passing steps.\n      output_size: Output size of the decode node representations as required\n        by the downstream update function.\n      reducer: Reduction to be used when aggregating the edges in the nodes in\n        the interaction network. This should be a callable whose signature\n        matches tf.math.unsorted_segment_sum.\n      name: Name of the model.\n    \"\"\"\n\n    super().__init__(name=name)\n\n    self._latent_size = latent_size\n    self._mlp_hidden_size = mlp_hidden_size\n    self._mlp_num_hidden_layers = mlp_num_hidden_layers\n    self._num_message_passing_steps = num_message_passing_steps\n    self._output_size = output_size\n    self._reducer = reducer\n\n    with self._enter_variable_scope():\n      self._networks_builder()\n\n  def _build(self, input_graph: gn.graphs.GraphsTuple) -> tf.Tensor:\n    \"\"\"Forward pass of the learnable dynamics model.\"\"\"\n\n    # Encode the input_graph.\n    latent_graph_0 = self._encode(input_graph)\n\n    # Do `m` message passing steps in the latent graphs.\n    latent_graph_m = self._process(latent_graph_0)\n\n    # Decode from the last latent graph.\n    return self._decode(latent_graph_m)\n\n  def _networks_builder(self):\n    \"\"\"Builds the networks.\"\"\"\n\n    def build_mlp_with_layer_norm():\n      mlp = build_mlp(\n          hidden_size=self._mlp_hidden_size,\n          num_hidden_layers=self._mlp_num_hidden_layers,\n          output_size=self._latent_size)\n      return snt.Sequential([mlp, snt.LayerNorm()])\n\n    # The encoder graph network independently encodes edge and node features.\n    encoder_kwargs = dict(\n        edge_model_fn=build_mlp_with_layer_norm,\n        node_model_fn=build_mlp_with_layer_norm)\n    self._encoder_network = gn.modules.GraphIndependent(**encoder_kwargs)\n\n    # Create `num_message_passing_steps` graph networks with unshared parameters\n    # that update the node and edge latent features.\n    # Note that we can use `modules.InteractionNetwork` because\n    # it also outputs the messages as updated edge latent features.\n    self._processor_networks = []\n    for _ in range(self._num_message_passing_steps):\n      self._processor_networks.append(\n          gn.modules.InteractionNetwork(\n              edge_model_fn=build_mlp_with_layer_norm,\n              node_model_fn=build_mlp_with_layer_norm,\n              reducer=self._reducer))\n\n    # The decoder MLP decodes node latent features into the output size.\n    self._decoder_network = build_mlp(\n        hidden_size=self._mlp_hidden_size,\n        num_hidden_layers=self._mlp_num_hidden_layers,\n        output_size=self._output_size)\n\n  def _encode(\n      self, input_graph: gn.graphs.GraphsTuple) -> gn.graphs.GraphsTuple:\n    \"\"\"Encodes the input graph features into a latent graph.\"\"\"\n\n    # Copy the globals to all of the nodes, if applicable.\n    if input_graph.globals is not None:\n      broadcasted_globals = gn.blocks.broadcast_globals_to_nodes(input_graph)\n      input_graph = input_graph.replace(\n          nodes=tf.concat([input_graph.nodes, broadcasted_globals], axis=-1),\n          globals=None)\n\n    # Encode the node and edge features.\n    latent_graph_0 = self._encoder_network(input_graph)\n    return latent_graph_0\n\n  def _process(\n      self, latent_graph_0: gn.graphs.GraphsTuple) -> gn.graphs.GraphsTuple:\n    \"\"\"Processes the latent graph with several steps of message passing.\"\"\"\n\n    # Do `m` message passing steps in the latent graphs.\n    # (In the shared parameters case, just reuse the same `processor_network`)\n    latent_graph_prev_k = latent_graph_0\n    latent_graph_k = latent_graph_0\n    for processor_network_k in self._processor_networks:\n      latent_graph_k = self._process_step(\n          processor_network_k, latent_graph_prev_k)\n      latent_graph_prev_k = latent_graph_k\n\n    latent_graph_m = latent_graph_k\n    return latent_graph_m\n\n  def _process_step(\n      self, processor_network_k: snt.Module,\n      latent_graph_prev_k: gn.graphs.GraphsTuple) -> gn.graphs.GraphsTuple:\n    \"\"\"Single step of message passing with node/edge residual connections.\"\"\"\n\n    # One step of message passing.\n    latent_graph_k = processor_network_k(latent_graph_prev_k)\n\n    # Add residuals.\n    latent_graph_k = latent_graph_k.replace(\n        nodes=latent_graph_k.nodes+latent_graph_prev_k.nodes,\n        edges=latent_graph_k.edges+latent_graph_prev_k.edges)\n    return latent_graph_k\n\n  def _decode(self, latent_graph: gn.graphs.GraphsTuple) -> tf.Tensor:\n    \"\"\"Decodes from the latent graph.\"\"\"\n    return self._decoder_network(latent_graph.nodes)\n"
  },
  {
    "path": "learning_to_simulate/learned_simulator.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Full model implementation accompanying ICML 2020 submission.\n\n   \"Learning to Simulate Complex Physics with Graph Networks\"\n\n   Alvaro Sanchez-Gonzalez*, Jonathan Godwin*, Tobias Pfaff*, Rex Ying,\n   Jure Leskovec, Peter W. Battaglia\n\n   https://arxiv.org/abs/2002.09405\n\n\"\"\"\n\nimport graph_nets as gn\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\nfrom learning_to_simulate import connectivity_utils\nfrom learning_to_simulate import graph_network\n\nSTD_EPSILON = 1e-8\n\n\nclass LearnedSimulator(snt.AbstractModule):\n  \"\"\"Learned simulator from https://arxiv.org/pdf/2002.09405.pdf.\"\"\"\n\n  def __init__(\n      self,\n      num_dimensions,\n      connectivity_radius,\n      graph_network_kwargs,\n      boundaries,\n      normalization_stats,\n      num_particle_types,\n      particle_type_embedding_size,\n      name=\"LearnedSimulator\"):\n    \"\"\"Inits the model.\n\n    Args:\n      num_dimensions: Dimensionality of the problem.\n      connectivity_radius: Scalar with the radius of connectivity.\n      graph_network_kwargs: Keyword arguments to pass to the learned part\n        of the graph network `model.EncodeProcessDecode`.\n      boundaries: List of 2-tuples, containing the lower and upper boundaries of\n        the cuboid containing the particles along each dimensions, matching\n        the dimensionality of the problem.\n      normalization_stats: Dictionary with statistics with keys \"acceleration\"\n        and \"velocity\", containing a named tuple for each with mean and std\n        fields, matching the dimensionality of the problem.\n      num_particle_types: Number of different particle types.\n      particle_type_embedding_size: Embedding size for the particle type.\n      name: Name of the Sonnet module.\n\n    \"\"\"\n    super().__init__(name=name)\n\n    self._connectivity_radius = connectivity_radius\n    self._num_particle_types = num_particle_types\n    self._boundaries = boundaries\n    self._normalization_stats = normalization_stats\n    with self._enter_variable_scope():\n      self._graph_network = graph_network.EncodeProcessDecode(\n          output_size=num_dimensions, **graph_network_kwargs)\n\n      if self._num_particle_types > 1:\n        self._particle_type_embedding = tf.get_variable(\n            \"particle_embedding\",\n            [self._num_particle_types, particle_type_embedding_size],\n            trainable=True, use_resource=True)\n\n  def _build(self, position_sequence, n_particles_per_example,\n             global_context=None, particle_types=None):\n    \"\"\"Produces a model step, outputting the next position for each particle.\n\n    Args:\n      position_sequence: Sequence of positions for each node in the batch,\n        with shape [num_particles_in_batch, sequence_length, num_dimensions]\n      n_particles_per_example: Number of particles for each graph in the batch\n        with shape [batch_size]\n      global_context: Tensor of shape [batch_size, context_size], with global\n        context.\n      particle_types: Integer tensor of shape [num_particles_in_batch] with\n        the integer types of the particles, from 0 to `num_particle_types - 1`.\n        If None, we assume all particles are the same type.\n\n    Returns:\n      Next position with shape [num_particles_in_batch, num_dimensions] for one\n      step into the future from the input sequence.\n    \"\"\"\n    input_graphs_tuple = self._encoder_preprocessor(\n        position_sequence, n_particles_per_example, global_context,\n        particle_types)\n\n    normalized_acceleration = self._graph_network(input_graphs_tuple)\n\n    next_position = self._decoder_postprocessor(\n        normalized_acceleration, position_sequence)\n\n    return next_position\n\n  def _encoder_preprocessor(\n      self, position_sequence, n_node, global_context, particle_types):\n    # Extract important features from the position_sequence.\n    most_recent_position = position_sequence[:, -1]\n    velocity_sequence = time_diff(position_sequence)  # Finite-difference.\n\n    # Get connectivity of the graph.\n    (senders, receivers, n_edge\n     ) = connectivity_utils.compute_connectivity_for_batch_pyfunc(\n         most_recent_position, n_node, self._connectivity_radius)\n\n    # Collect node features.\n    node_features = []\n\n    # Normalized velocity sequence, merging spatial an time axis.\n    velocity_stats = self._normalization_stats[\"velocity\"]\n    normalized_velocity_sequence = (\n        velocity_sequence - velocity_stats.mean) / velocity_stats.std\n\n    flat_velocity_sequence = snt.MergeDims(start=1, size=2)(\n        normalized_velocity_sequence)\n    node_features.append(flat_velocity_sequence)\n\n    # Normalized clipped distances to lower and upper boundaries.\n    # boundaries are an array of shape [num_dimensions, 2], where the second\n    # axis, provides the lower/upper boundaries.\n    boundaries = tf.constant(self._boundaries, dtype=tf.float32)\n    distance_to_lower_boundary = (\n        most_recent_position - tf.expand_dims(boundaries[:, 0], 0))\n    distance_to_upper_boundary = (\n        tf.expand_dims(boundaries[:, 1], 0) - most_recent_position)\n    distance_to_boundaries = tf.concat(\n        [distance_to_lower_boundary, distance_to_upper_boundary], axis=1)\n    normalized_clipped_distance_to_boundaries = tf.clip_by_value(\n        distance_to_boundaries / self._connectivity_radius, -1., 1.)\n    node_features.append(normalized_clipped_distance_to_boundaries)\n\n    # Particle type.\n    if self._num_particle_types > 1:\n      particle_type_embeddings = tf.nn.embedding_lookup(\n          self._particle_type_embedding, particle_types)\n      node_features.append(particle_type_embeddings)\n\n    # Collect edge features.\n    edge_features = []\n\n    # Relative displacement and distances normalized to radius\n    normalized_relative_displacements = (\n        tf.gather(most_recent_position, senders) -\n        tf.gather(most_recent_position, receivers)) / self._connectivity_radius\n    edge_features.append(normalized_relative_displacements)\n\n    normalized_relative_distances = tf.norm(\n        normalized_relative_displacements, axis=-1, keepdims=True)\n    edge_features.append(normalized_relative_distances)\n\n    # Normalize the global context.\n    if global_context is not None:\n      context_stats = self._normalization_stats[\"context\"]\n      # Context in some datasets are all zero, so add an epsilon for numerical\n      # stability.\n      global_context = (global_context - context_stats.mean) / tf.math.maximum(\n          context_stats.std, STD_EPSILON)\n\n    return gn.graphs.GraphsTuple(\n        nodes=tf.concat(node_features, axis=-1),\n        edges=tf.concat(edge_features, axis=-1),\n        globals=global_context,  # self._graph_net will appending this to nodes.\n        n_node=n_node,\n        n_edge=n_edge,\n        senders=senders,\n        receivers=receivers,\n        )\n\n  def _decoder_postprocessor(self, normalized_acceleration, position_sequence):\n\n    # The model produces the output in normalized space so we apply inverse\n    # normalization.\n    acceleration_stats = self._normalization_stats[\"acceleration\"]\n    acceleration = (\n        normalized_acceleration * acceleration_stats.std\n        ) + acceleration_stats.mean\n\n    # Use an Euler integrator to go from acceleration to position, assuming\n    # a dt=1 corresponding to the size of the finite difference.\n    most_recent_position = position_sequence[:, -1]\n    most_recent_velocity = most_recent_position - position_sequence[:, -2]\n\n    new_velocity = most_recent_velocity + acceleration  # * dt = 1\n    new_position = most_recent_position + new_velocity  # * dt = 1\n    return new_position\n\n  def get_predicted_and_target_normalized_accelerations(\n      self, next_position, position_sequence_noise, position_sequence,\n      n_particles_per_example, global_context=None, particle_types=None):  # pylint: disable=g-doc-args\n    \"\"\"Produces normalized and predicted acceleration targets.\n\n    Args:\n      next_position: Tensor of shape [num_particles_in_batch, num_dimensions]\n        with the positions the model should output given the inputs.\n      position_sequence_noise: Tensor of the same shape as `position_sequence`\n        with the noise to apply to each particle.\n      position_sequence, n_node, global_context, particle_types: Inputs to the\n        model as defined by `_build`.\n\n    Returns:\n      Tensors of shape [num_particles_in_batch, num_dimensions] with the\n        predicted and target normalized accelerations.\n    \"\"\"\n\n    # Add noise to the input position sequence.\n    noisy_position_sequence = position_sequence + position_sequence_noise\n\n    # Perform the forward pass with the noisy position sequence.\n    input_graphs_tuple = self._encoder_preprocessor(\n        noisy_position_sequence, n_particles_per_example, global_context,\n        particle_types)\n    predicted_normalized_acceleration = self._graph_network(input_graphs_tuple)\n\n    # Calculate the target acceleration, using an `adjusted_next_position `that\n    # is shifted by the noise in the last input position.\n    next_position_adjusted = next_position + position_sequence_noise[:, -1]\n    target_normalized_acceleration = self._inverse_decoder_postprocessor(\n        next_position_adjusted, noisy_position_sequence)\n    # As a result the inverted Euler update in the `_inverse_decoder` produces:\n    # * A target acceleration that does not explicitly correct for the noise in\n    #   the input positions, as the `next_position_adjusted` is different\n    #   from the true `next_position`.\n    # * A target acceleration that exactly corrects noise in the input velocity\n    #   since the target next velocity calculated by the inverse Euler update\n    #   as `next_position_adjusted - noisy_position_sequence[:,-1]`\n    #   matches the ground truth next velocity (noise cancels out).\n\n    return predicted_normalized_acceleration, target_normalized_acceleration\n\n  def _inverse_decoder_postprocessor(self, next_position, position_sequence):\n    \"\"\"Inverse of `_decoder_postprocessor`.\"\"\"\n\n    previous_position = position_sequence[:, -1]\n    previous_velocity = previous_position - position_sequence[:, -2]\n    next_velocity = next_position - previous_position\n    acceleration = next_velocity - previous_velocity\n\n    acceleration_stats = self._normalization_stats[\"acceleration\"]\n    normalized_acceleration = (\n        acceleration - acceleration_stats.mean) / acceleration_stats.std\n    return normalized_acceleration\n\n\ndef time_diff(input_sequence):\n  return input_sequence[:, 1:] - input_sequence[:, :-1]\n\n"
  },
  {
    "path": "learning_to_simulate/model_demo.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Example script accompanying ICML 2020 submission.\n\n   \"Learning to Simulate Complex Physics with Graph Networks\"\n\n   Alvaro Sanchez-Gonzalez*, Jonathan Godwin*, Tobias Pfaff*, Rex Ying,\n   Jure Leskovec, Peter W. Battaglia\n\n   https://arxiv.org/abs/2002.09405\n\nHere we provide the utility function `sample_random_position_sequence()` which\nreturns a sequence of positions for a variable number of particles, similar to\nwhat a real dataset would provide, and connect the model to it, in both,\nsingle step inference and training mode.\n\nDependencies include Tensorflow 1.x, Sonnet 1.x and the Graph Nets 1.1 library.\n\"\"\"\n\nimport collections\n\nfrom learning_to_simulate import learned_simulator\nfrom learning_to_simulate import noise_utils\nimport numpy as np\nimport tensorflow.compat.v1 as tf\n\nINPUT_SEQUENCE_LENGTH = 6\nSEQUENCE_LENGTH = INPUT_SEQUENCE_LENGTH + 1  # add one target position.\nNUM_DIMENSIONS = 3\nNUM_PARTICLE_TYPES = 6\nBATCH_SIZE = 5\nGLOBAL_CONTEXT_SIZE = 6\n\nStats = collections.namedtuple(\"Stats\", [\"mean\", \"std\"])\n\nDUMMY_STATS = Stats(\n    mean=np.zeros([NUM_DIMENSIONS], dtype=np.float32),\n    std=np.ones([NUM_DIMENSIONS], dtype=np.float32))\nDUMMY_CONTEXT_STATS = Stats(\n    mean=np.zeros([GLOBAL_CONTEXT_SIZE], dtype=np.float32),\n    std=np.ones([GLOBAL_CONTEXT_SIZE], dtype=np.float32))\nDUMMY_BOUNDARIES = [(-1., 1.)] * NUM_DIMENSIONS\n\n\ndef sample_random_position_sequence():\n  \"\"\"Returns mock data mimicking the input features collected by the encoder.\"\"\"\n  num_particles = tf.random_uniform(\n      shape=(), minval=50, maxval=1000, dtype=tf.int32)\n  position_sequence = tf.random.normal(\n      shape=[num_particles, SEQUENCE_LENGTH, NUM_DIMENSIONS])\n  return position_sequence\n\n\ndef main():\n\n  # Build the model.\n  learnable_model = learned_simulator.LearnedSimulator(\n      num_dimensions=NUM_DIMENSIONS,\n      connectivity_radius=0.05,\n      graph_network_kwargs=dict(\n          latent_size=128,\n          mlp_hidden_size=128,\n          mlp_num_hidden_layers=2,\n          num_message_passing_steps=10,\n      ),\n      boundaries=DUMMY_BOUNDARIES,\n      normalization_stats={\"acceleration\": DUMMY_STATS,\n                           \"velocity\": DUMMY_STATS,\n                           \"context\": DUMMY_CONTEXT_STATS,},\n      num_particle_types=NUM_PARTICLE_TYPES,\n      particle_type_embedding_size=16,\n    )\n\n  # Sample a batch of particle sequences with shape:\n  # [TOTAL_NUM_PARTICLES, SEQUENCE_LENGTH, NUM_DIMENSIONS]\n  sampled_position_sequences = [\n      sample_random_position_sequence() for _ in range(BATCH_SIZE)]\n  position_sequence_batch = tf.concat(sampled_position_sequences, axis=0)\n\n  # Count how many particles are present in each element in the batch.\n  # [BATCH_SIZE]\n  n_particles_per_example = tf.stack(\n      [tf.shape(seq)[0] for seq in sampled_position_sequences], axis=0)\n\n  # Sample particle types.\n  # [TOTAL_NUM_PARTICLES]\n  particle_types = tf.random_uniform(\n      [tf.shape(position_sequence_batch)[0]],\n      0, NUM_PARTICLE_TYPES, dtype=tf.int32)\n\n  # Sample global context.\n  global_context = tf.random_uniform(\n      [BATCH_SIZE, GLOBAL_CONTEXT_SIZE], -1., 1., dtype=tf.float32)\n\n  # Separate input sequence from target sequence.\n  # [TOTAL_NUM_PARTICLES, INPUT_SEQUENCE_LENGTH, NUM_DIMENSIONS]\n  input_position_sequence = position_sequence_batch[:, :-1]\n  # [TOTAL_NUM_PARTICLES, NUM_DIMENSIONS]\n  target_next_position = position_sequence_batch[:, -1]\n\n  # Single step of inference with the model to predict next position for each\n  # particle [TOTAL_NUM_PARTICLES, NUM_DIMENSIONS].\n  predicted_next_position = learnable_model(\n      input_position_sequence, n_particles_per_example, global_context,\n      particle_types)\n  print(f\"Per-particle output tensor: {predicted_next_position}\")\n\n  # Obtaining predicted and target normalized accelerations for training.\n  position_sequence_noise = (\n      noise_utils.get_random_walk_noise_for_position_sequence(\n          input_position_sequence, noise_std_last_step=6.7e-4))\n\n  # Both with shape [TOTAL_NUM_PARTICLES, NUM_DIMENSIONS]\n  predicted_normalized_acceleration, target_normalized_acceleration = (\n      learnable_model.get_predicted_and_target_normalized_accelerations(\n          target_next_position, position_sequence_noise,\n          input_position_sequence, n_particles_per_example, global_context,\n          particle_types))\n  print(f\"Predicted norm. acceleration: {predicted_normalized_acceleration}\")\n  print(f\"Target norm. acceleration: {target_normalized_acceleration}\")\n\n  with tf.train.SingularMonitoredSession() as sess:\n    sess.run([predicted_next_position,\n              predicted_normalized_acceleration,\n              target_normalized_acceleration])\n\n\nif __name__ == \"__main__\":\n  tf.disable_v2_behavior()\n  main()\n"
  },
  {
    "path": "learning_to_simulate/noise_utils.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Methods to calculate input noise.\"\"\"\n\nimport tensorflow.compat.v1 as tf\n\nfrom learning_to_simulate import learned_simulator\n\n\ndef get_random_walk_noise_for_position_sequence(\n    position_sequence, noise_std_last_step):\n  \"\"\"Returns random-walk noise in the velocity applied to the position.\"\"\"\n\n  velocity_sequence = learned_simulator.time_diff(position_sequence)\n\n  # We want the noise scale in the velocity at the last step to be fixed.\n  # Because we are going to compose noise at each step using a random_walk:\n  # std_last_step**2 = num_velocities * std_each_step**2\n  # so to keep `std_last_step` fixed, we apply at each step:\n  # std_each_step `std_last_step / np.sqrt(num_input_velocities)`\n  # TODO(alvarosg): Make sure this is consistent with the value and\n  # description provided in the paper.\n  num_velocities = velocity_sequence.shape.as_list()[1]\n  velocity_sequence_noise = tf.random.normal(\n      tf.shape(velocity_sequence),\n      stddev=noise_std_last_step / num_velocities ** 0.5,\n      dtype=position_sequence.dtype)\n\n  # Apply the random walk.\n  velocity_sequence_noise = tf.cumsum(velocity_sequence_noise, axis=1)\n\n  # Integrate the noise in the velocity to the positions, assuming\n  # an Euler intergrator and a dt = 1, and adding no noise to the very first\n  # position (since that will only be used to calculate the first position\n  # change).\n  position_sequence_noise = tf.concat([\n      tf.zeros_like(velocity_sequence_noise[:, 0:1]),\n      tf.cumsum(velocity_sequence_noise, axis=1)], axis=1)\n\n  return position_sequence_noise\n"
  },
  {
    "path": "learning_to_simulate/reading_utils.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Utilities for reading open sourced Learning Complex Physics data.\"\"\"\n\nimport functools\nimport numpy as np\nimport tensorflow.compat.v1 as tf\n\n# Create a description of the features.\n_FEATURE_DESCRIPTION = {\n    'position': tf.io.VarLenFeature(tf.string),\n}\n\n_FEATURE_DESCRIPTION_WITH_GLOBAL_CONTEXT = _FEATURE_DESCRIPTION.copy()\n_FEATURE_DESCRIPTION_WITH_GLOBAL_CONTEXT['step_context'] = tf.io.VarLenFeature(\n    tf.string)\n\n_FEATURE_DTYPES = {\n    'position': {\n        'in': np.float32,\n        'out': tf.float32\n    },\n    'step_context': {\n        'in': np.float32,\n        'out': tf.float32\n    }\n}\n\n_CONTEXT_FEATURES = {\n    'key': tf.io.FixedLenFeature([], tf.int64, default_value=0),\n    'particle_type': tf.io.VarLenFeature(tf.string)\n}\n\n\ndef convert_to_tensor(x, encoded_dtype):\n  if len(x) == 1:\n    out = np.frombuffer(x[0].numpy(), dtype=encoded_dtype)\n  else:\n    out = []\n    for el in x:\n      out.append(np.frombuffer(el.numpy(), dtype=encoded_dtype))\n  out = tf.convert_to_tensor(np.array(out))\n  return out\n\n\ndef parse_serialized_simulation_example(example_proto, metadata):\n  \"\"\"Parses a serialized simulation tf.SequenceExample.\n\n  Args:\n    example_proto: A string encoding of the tf.SequenceExample proto.\n    metadata: A dict of metadata for the dataset.\n\n  Returns:\n    context: A dict, with features that do not vary over the trajectory.\n    parsed_features: A dict of tf.Tensors representing the parsed examples\n      across time, where axis zero is the time axis.\n\n  \"\"\"\n  if 'context_mean' in metadata:\n    feature_description = _FEATURE_DESCRIPTION_WITH_GLOBAL_CONTEXT\n  else:\n    feature_description = _FEATURE_DESCRIPTION\n  context, parsed_features = tf.io.parse_single_sequence_example(\n      example_proto,\n      context_features=_CONTEXT_FEATURES,\n      sequence_features=feature_description)\n  for feature_key, item in parsed_features.items():\n    convert_fn = functools.partial(\n        convert_to_tensor, encoded_dtype=_FEATURE_DTYPES[feature_key]['in'])\n    parsed_features[feature_key] = tf.py_function(\n        convert_fn, inp=[item.values], Tout=_FEATURE_DTYPES[feature_key]['out'])\n\n  # There is an extra frame at the beginning so we can calculate pos change\n  # for all frames used in the paper.\n  position_shape = [metadata['sequence_length'] + 1, -1, metadata['dim']]\n\n  # Reshape positions to correct dim:\n  parsed_features['position'] = tf.reshape(parsed_features['position'],\n                                           position_shape)\n  # Set correct shapes of the remaining tensors.\n  sequence_length = metadata['sequence_length'] + 1\n  if 'context_mean' in metadata:\n    context_feat_len = len(metadata['context_mean'])\n    parsed_features['step_context'] = tf.reshape(\n        parsed_features['step_context'],\n        [sequence_length, context_feat_len])\n  # Decode particle type explicitly\n  context['particle_type'] = tf.py_function(\n      functools.partial(convert_fn, encoded_dtype=np.int64),\n      inp=[context['particle_type'].values],\n      Tout=[tf.int64])\n  context['particle_type'] = tf.reshape(context['particle_type'], [-1])\n  return context, parsed_features\n\n\ndef split_trajectory(context, features, window_length=7):\n  \"\"\"Splits trajectory into sliding windows.\"\"\"\n  # Our strategy is to make sure all the leading dimensions are the same size,\n  # then we can use from_tensor_slices.\n\n  trajectory_length = features['position'].get_shape().as_list()[0]\n\n  # We then stack window_length position changes so the final\n  # trajectory length will be - window_length +1 (the 1 to make sure we get\n  # the last split).\n  input_trajectory_length = trajectory_length - window_length + 1\n\n  model_input_features = {}\n  # Prepare the context features per step.\n  model_input_features['particle_type'] = tf.tile(\n      tf.expand_dims(context['particle_type'], axis=0),\n      [input_trajectory_length, 1])\n\n  if 'step_context' in features:\n    global_stack = []\n    for idx in range(input_trajectory_length):\n      global_stack.append(features['step_context'][idx:idx + window_length])\n    model_input_features['step_context'] = tf.stack(global_stack)\n\n  pos_stack = []\n  for idx in range(input_trajectory_length):\n    pos_stack.append(features['position'][idx:idx + window_length])\n  # Get the corresponding positions\n  model_input_features['position'] = tf.stack(pos_stack)\n\n  return tf.data.Dataset.from_tensor_slices(model_input_features)\n"
  },
  {
    "path": "learning_to_simulate/render_rollout.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Simple matplotlib rendering of a rollout prediction against ground truth.\n\nUsage (from parent directory):\n\n`python -m learning_to_simulate.render_rollout --rollout_path={OUTPUT_PATH}/rollout_test_1.pkl`\n\nWhere {OUTPUT_PATH} is the output path passed to `train.py` in \"eval_rollout\"\nmode.\n\nIt may require installing Tkinter with `sudo apt-get install python3.7-tk`.\n\n\"\"\"  # pylint: disable=line-too-long\n\nimport pickle\n\nfrom absl import app\nfrom absl import flags\n\nfrom matplotlib import animation\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nflags.DEFINE_string(\"rollout_path\", None, help=\"Path to rollout pickle file\")\nflags.DEFINE_integer(\"step_stride\", 3, help=\"Stride of steps to skip.\")\nflags.DEFINE_boolean(\"block_on_show\", True, help=\"For test purposes.\")\n\nFLAGS = flags.FLAGS\n\nTYPE_TO_COLOR = {\n    3: \"black\",  # Boundary particles.\n    0: \"green\",  # Rigid solids.\n    7: \"magenta\",  # Goop.\n    6: \"gold\",  # Sand.\n    5: \"blue\",  # Water.\n}\n\n\ndef main(unused_argv):\n\n  if not FLAGS.rollout_path:\n    raise ValueError(\"A `rollout_path` must be passed.\")\n  with open(FLAGS.rollout_path, \"rb\") as file:\n    rollout_data = pickle.load(file)\n\n  fig, axes = plt.subplots(1, 2, figsize=(10, 5))\n\n  plot_info = []\n  for ax_i, (label, rollout_field) in enumerate(\n      [(\"Ground truth\", \"ground_truth_rollout\"),\n       (\"Prediction\", \"predicted_rollout\")]):\n    # Append the initial positions to get the full trajectory.\n    trajectory = np.concatenate([\n        rollout_data[\"initial_positions\"],\n        rollout_data[rollout_field]], axis=0)\n    ax = axes[ax_i]\n    ax.set_title(label)\n    bounds = rollout_data[\"metadata\"][\"bounds\"]\n    ax.set_xlim(bounds[0][0], bounds[0][1])\n    ax.set_ylim(bounds[1][0], bounds[1][1])\n    ax.set_xticks([])\n    ax.set_yticks([])\n    ax.set_aspect(1.)\n    points = {\n        particle_type: ax.plot([], [], \"o\", ms=2, color=color)[0]\n        for particle_type, color in TYPE_TO_COLOR.items()}\n    plot_info.append((ax, trajectory, points))\n\n  num_steps = trajectory.shape[0]\n\n  def update(step_i):\n    outputs = []\n    for _, trajectory, points in plot_info:\n      for particle_type, line in points.items():\n        mask = rollout_data[\"particle_types\"] == particle_type\n        line.set_data(trajectory[step_i, mask, 0],\n                      trajectory[step_i, mask, 1])\n        outputs.append(line)\n    return outputs\n\n  unused_animation = animation.FuncAnimation(\n      fig, update,\n      frames=np.arange(0, num_steps, FLAGS.step_stride), interval=10)\n  plt.show(block=FLAGS.block_on_show)\n\n\nif __name__ == \"__main__\":\n  app.run(main)\n"
  },
  {
    "path": "learning_to_simulate/requirements.txt",
    "content": "absl-py\ngraph-nets>=1.1\ntensorflow>=1.15,<2\nnumpy\ndm-sonnet<2\ntensorflow_probability<0.9\nsklearn\ndm-tree\nmatplotlib\n"
  },
  {
    "path": "learning_to_simulate/run.sh",
    "content": "#!/bin/bash\n# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Fail on any error.\nset -e\n\n# Display commands being run.\nset -x\n\nTMP_DIR=`mktemp -d`\n\nvirtualenv --python=python3.6 \"${TMP_DIR}/learning_to_simulate\"\nsource \"${TMP_DIR}/learning_to_simulate/bin/activate\"\n\n# Install dependencies.\npip install --upgrade -r learning_to_simulate/requirements.txt\n\n# Run the simple demo with dummy inputs.\npython -m learning_to_simulate.model_demo\n\n# Run some training and evaluation in one of the dataset samples.\n\n# Download a sample of a dataset.\nDATASET_NAME=\"WaterDropSample\"\n\nbash ./learning_to_simulate/download_dataset.sh ${DATASET_NAME} \"${TMP_DIR}/datasets\"\n\n# Train for a few steps.\nDATA_PATH=\"${TMP_DIR}/datasets/${DATASET_NAME}\"\nMODEL_PATH=\"${TMP_DIR}/models/${DATASET_NAME}\"\npython -m learning_to_simulate.train --data_path=${DATA_PATH} --model_path=${MODEL_PATH} --num_steps=10\n\n# Evaluate on validation split.\npython -m learning_to_simulate.train --data_path=${DATA_PATH} --model_path=${MODEL_PATH} --mode=\"eval\" --eval_split=\"valid\"\n\n# Generate test rollouts.\nROLLOUT_PATH=\"${TMP_DIR}/rollouts/${DATASET_NAME}\"\nmkdir -p ${ROLLOUT_PATH}\npython -m learning_to_simulate.train --data_path=${DATA_PATH} --model_path=${MODEL_PATH} --mode=\"eval_rollout\" --output_path=${ROLLOUT_PATH}\n\n# Plot the first rollout.\npython -m learning_to_simulate.render_rollout --rollout_path=\"${ROLLOUT_PATH}/rollout_test_0.pkl\" --block_on_show=False\n\n# Clean up.\nrm -r ${TMP_DIR}\n"
  },
  {
    "path": "learning_to_simulate/train.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n# pylint: disable=line-too-long\n\"\"\"Training script for https://arxiv.org/pdf/2002.09405.pdf.\n\nExample usage (from parent directory):\n`python -m learning_to_simulate.train --data_path={DATA_PATH} --model_path={MODEL_PATH}`\n\nEvaluate model from checkpoint (from parent directory):\n`python -m learning_to_simulate.train --data_path={DATA_PATH} --model_path={MODEL_PATH} --mode=eval`\n\nProduce rollouts (from parent directory):\n`python -m learning_to_simulate.train --data_path={DATA_PATH} --model_path={MODEL_PATH} --output_path={OUTPUT_PATH} --mode=eval_rollout`\n\n\n\"\"\"\n# pylint: enable=line-too-long\nimport collections\nimport functools\nimport json\nimport os\nimport pickle\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport numpy as np\nimport tensorflow.compat.v1 as tf\nfrom tensorflow.compat.v1 import estimator as tf_estimator\nimport tree\n\n\nfrom learning_to_simulate import learned_simulator\nfrom learning_to_simulate import noise_utils\nfrom learning_to_simulate import reading_utils\n\n\nflags.DEFINE_enum(\n    'mode', 'train', ['train', 'eval', 'eval_rollout'],\n    help='Train model, one step evaluation or rollout evaluation.')\nflags.DEFINE_enum('eval_split', 'test', ['train', 'valid', 'test'],\n                  help='Split to use when running evaluation.')\nflags.DEFINE_string('data_path', None, help='The dataset directory.')\nflags.DEFINE_integer('batch_size', 2, help='The batch size.')\nflags.DEFINE_integer('num_steps', int(2e7), help='Number of steps of training.')\nflags.DEFINE_float('noise_std', 6.7e-4, help='The std deviation of the noise.')\nflags.DEFINE_string('model_path', None,\n                    help=('The path for saving checkpoints of the model. '\n                          'Defaults to a temporary directory.'))\nflags.DEFINE_string('output_path', None,\n                    help='The path for saving outputs (e.g. rollouts).')\n\n\nFLAGS = flags.FLAGS\n\nStats = collections.namedtuple('Stats', ['mean', 'std'])\n\nINPUT_SEQUENCE_LENGTH = 6  # So we can calculate the last 5 velocities.\nNUM_PARTICLE_TYPES = 9\nKINEMATIC_PARTICLE_ID = 3\n\n\ndef get_kinematic_mask(particle_types):\n  \"\"\"Returns a boolean mask, set to true for kinematic (obstacle) particles.\"\"\"\n  return tf.equal(particle_types, KINEMATIC_PARTICLE_ID)\n\n\ndef prepare_inputs(tensor_dict):\n  \"\"\"Prepares a single stack of inputs by calculating inputs and targets.\n\n  Computes n_particles_per_example, which is a tensor that contains information\n  about how to partition the axis - i.e. which nodes belong to which graph.\n\n  Adds a batch axis to `n_particles_per_example` and `step_context` so they can\n  later be batched using `batch_concat`. This batch will be the same as if the\n  elements had been batched via stacking.\n\n  Note that all other tensors have a variable size particle axis,\n  and in this case they will simply be concatenated along that\n  axis.\n\n\n\n  Args:\n    tensor_dict: A dict of tensors containing positions, and step context (\n    if available).\n\n  Returns:\n    A tuple of input features and target positions.\n\n  \"\"\"\n  # Position is encoded as [sequence_length, num_particles, dim] but the model\n  # expects [num_particles, sequence_length, dim].\n  pos = tensor_dict['position']\n  pos = tf.transpose(pos, perm=[1, 0, 2])\n\n  # The target position is the final step of the stack of positions.\n  target_position = pos[:, -1]\n\n  # Remove the target from the input.\n  tensor_dict['position'] = pos[:, :-1]\n\n  # Compute the number of particles per example.\n  num_particles = tf.shape(pos)[0]\n  # Add an extra dimension for stacking via concat.\n  tensor_dict['n_particles_per_example'] = num_particles[tf.newaxis]\n\n  if 'step_context' in tensor_dict:\n    # Take the input global context. We have a stack of global contexts,\n    # and we take the penultimate since the final is the target.\n    tensor_dict['step_context'] = tensor_dict['step_context'][-2]\n    # Add an extra dimension for stacking via concat.\n    tensor_dict['step_context'] = tensor_dict['step_context'][tf.newaxis]\n  return tensor_dict, target_position\n\n\ndef prepare_rollout_inputs(context, features):\n  \"\"\"Prepares an inputs trajectory for rollout.\"\"\"\n  out_dict = {**context}\n  # Position is encoded as [sequence_length, num_particles, dim] but the model\n  # expects [num_particles, sequence_length, dim].\n  pos = tf.transpose(features['position'], [1, 0, 2])\n  # The target position is the final step of the stack of positions.\n  target_position = pos[:, -1]\n  # Remove the target from the input.\n  out_dict['position'] = pos[:, :-1]\n  # Compute the number of nodes\n  out_dict['n_particles_per_example'] = [tf.shape(pos)[0]]\n  if 'step_context' in features:\n    out_dict['step_context'] = features['step_context']\n  out_dict['is_trajectory'] = tf.constant([True], tf.bool)\n  return out_dict, target_position\n\n\ndef batch_concat(dataset, batch_size):\n  \"\"\"We implement batching as concatenating on the leading axis.\"\"\"\n\n  # We create a dataset of datasets of length batch_size.\n  windowed_ds = dataset.window(batch_size)\n\n  # The plan is then to reduce every nested dataset by concatenating. We can\n  # do this using tf.data.Dataset.reduce. This requires an initial state, and\n  # then incrementally reduces by running through the dataset\n\n  # Get initial state. In this case this will be empty tensors of the\n  # correct shape.\n  initial_state = tree.map_structure(\n      lambda spec: tf.zeros(  # pylint: disable=g-long-lambda\n          shape=[0] + spec.shape.as_list()[1:], dtype=spec.dtype),\n      dataset.element_spec)\n\n  # We run through the nest and concatenate each entry with the previous state.\n  def reduce_window(initial_state, ds):\n    return ds.reduce(initial_state, lambda x, y: tf.concat([x, y], axis=0))\n\n  return windowed_ds.map(\n      lambda *x: tree.map_structure(reduce_window, initial_state, x))\n\n\ndef get_input_fn(data_path, batch_size, mode, split):\n  \"\"\"Gets the learning simulation input function for tf.estimator.Estimator.\n\n  Args:\n    data_path: the path to the dataset directory.\n    batch_size: the number of graphs in a batch.\n    mode: either 'one_step_train', 'one_step' or 'rollout'\n    split: either 'train', 'valid' or 'test.\n\n  Returns:\n    The input function for the learning simulation model.\n  \"\"\"\n  def input_fn():\n    \"\"\"Input function for learning simulation.\"\"\"\n    # Loads the metadata of the dataset.\n    metadata = _read_metadata(data_path)\n    # Create a tf.data.Dataset from the TFRecord.\n    ds = tf.data.TFRecordDataset([os.path.join(data_path, f'{split}.tfrecord')])\n    ds = ds.map(functools.partial(\n        reading_utils.parse_serialized_simulation_example, metadata=metadata))\n    if mode.startswith('one_step'):\n      # Splits an entire trajectory into chunks of 7 steps.\n      # Previous 5 velocities, current velocity and target.\n      split_with_window = functools.partial(\n          reading_utils.split_trajectory,\n          window_length=INPUT_SEQUENCE_LENGTH + 1)\n      ds = ds.flat_map(split_with_window)\n      # Splits a chunk into input steps and target steps\n      ds = ds.map(prepare_inputs)\n      # If in train mode, repeat dataset forever and shuffle.\n      if mode == 'one_step_train':\n        ds = ds.repeat()\n        ds = ds.shuffle(512)\n      # Custom batching on the leading axis.\n      ds = batch_concat(ds, batch_size)\n    elif mode == 'rollout':\n      # Rollout evaluation only available for batch size 1\n      assert batch_size == 1\n      ds = ds.map(prepare_rollout_inputs)\n    else:\n      raise ValueError(f'mode: {mode} not recognized')\n    return ds\n\n  return input_fn\n\n\ndef rollout(simulator, features, num_steps):\n  \"\"\"Rolls out a trajectory by applying the model in sequence.\"\"\"\n  initial_positions = features['position'][:, 0:INPUT_SEQUENCE_LENGTH]\n  ground_truth_positions = features['position'][:, INPUT_SEQUENCE_LENGTH:]\n  global_context = features.get('step_context')\n  def step_fn(step, current_positions, predictions):\n\n    if global_context is None:\n      global_context_step = None\n    else:\n      global_context_step = global_context[\n          step + INPUT_SEQUENCE_LENGTH - 1][tf.newaxis]\n\n    next_position = simulator(\n        current_positions,\n        n_particles_per_example=features['n_particles_per_example'],\n        particle_types=features['particle_type'],\n        global_context=global_context_step)\n\n    # Update kinematic particles from prescribed trajectory.\n    kinematic_mask = get_kinematic_mask(features['particle_type'])\n    next_position_ground_truth = ground_truth_positions[:, step]\n    next_position = tf.where(kinematic_mask, next_position_ground_truth,\n                             next_position)\n    updated_predictions = predictions.write(step, next_position)\n\n    # Shift `current_positions`, removing the oldest position in the sequence\n    # and appending the next position at the end.\n    next_positions = tf.concat([current_positions[:, 1:],\n                                next_position[:, tf.newaxis]], axis=1)\n\n    return (step + 1, next_positions, updated_predictions)\n\n  predictions = tf.TensorArray(size=num_steps, dtype=tf.float32)\n  _, _, predictions = tf.while_loop(\n      cond=lambda step, state, prediction: tf.less(step, num_steps),\n      body=step_fn,\n      loop_vars=(0, initial_positions, predictions),\n      back_prop=False,\n      parallel_iterations=1)\n\n  output_dict = {\n      'initial_positions': tf.transpose(initial_positions, [1, 0, 2]),\n      'predicted_rollout': predictions.stack(),\n      'ground_truth_rollout': tf.transpose(ground_truth_positions, [1, 0, 2]),\n      'particle_types': features['particle_type'],\n  }\n\n  if global_context is not None:\n    output_dict['global_context'] = global_context\n  return output_dict\n\n\ndef _combine_std(std_x, std_y):\n  return np.sqrt(std_x**2 + std_y**2)\n\n\ndef _get_simulator(model_kwargs, metadata, acc_noise_std, vel_noise_std):\n  \"\"\"Instantiates the simulator.\"\"\"\n  # Cast statistics to numpy so they are arrays when entering the model.\n  cast = lambda v: np.array(v, dtype=np.float32)\n  acceleration_stats = Stats(\n      cast(metadata['acc_mean']),\n      _combine_std(cast(metadata['acc_std']), acc_noise_std))\n  velocity_stats = Stats(\n      cast(metadata['vel_mean']),\n      _combine_std(cast(metadata['vel_std']), vel_noise_std))\n  normalization_stats = {'acceleration': acceleration_stats,\n                         'velocity': velocity_stats}\n  if 'context_mean' in metadata:\n    context_stats = Stats(\n        cast(metadata['context_mean']), cast(metadata['context_std']))\n    normalization_stats['context'] = context_stats\n\n  simulator = learned_simulator.LearnedSimulator(\n      num_dimensions=metadata['dim'],\n      connectivity_radius=metadata['default_connectivity_radius'],\n      graph_network_kwargs=model_kwargs,\n      boundaries=metadata['bounds'],\n      num_particle_types=NUM_PARTICLE_TYPES,\n      normalization_stats=normalization_stats,\n      particle_type_embedding_size=16)\n  return simulator\n\n\ndef get_one_step_estimator_fn(data_path,\n                              noise_std,\n                              latent_size=128,\n                              hidden_size=128,\n                              hidden_layers=2,\n                              message_passing_steps=10):\n  \"\"\"Gets one step model for training simulation.\"\"\"\n  metadata = _read_metadata(data_path)\n\n  model_kwargs = dict(\n      latent_size=latent_size,\n      mlp_hidden_size=hidden_size,\n      mlp_num_hidden_layers=hidden_layers,\n      num_message_passing_steps=message_passing_steps)\n\n  def estimator_fn(features, labels, mode):\n    target_next_position = labels\n    simulator = _get_simulator(model_kwargs, metadata,\n                               vel_noise_std=noise_std,\n                               acc_noise_std=noise_std)\n    # Sample the noise to add to the inputs to the model during training.\n    sampled_noise = noise_utils.get_random_walk_noise_for_position_sequence(\n        features['position'], noise_std_last_step=noise_std)\n    non_kinematic_mask = tf.logical_not(\n        get_kinematic_mask(features['particle_type']))\n    noise_mask = tf.cast(\n        non_kinematic_mask, sampled_noise.dtype)[:, tf.newaxis, tf.newaxis]\n    sampled_noise *= noise_mask\n\n    # Get the predictions and target accelerations.\n    pred_target = simulator.get_predicted_and_target_normalized_accelerations(\n        next_position=target_next_position,\n        position_sequence=features['position'],\n        position_sequence_noise=sampled_noise,\n        n_particles_per_example=features['n_particles_per_example'],\n        particle_types=features['particle_type'],\n        global_context=features.get('step_context'))\n    pred_acceleration, target_acceleration = pred_target\n\n    # Calculate the loss and mask out loss on kinematic particles/\n    loss = (pred_acceleration - target_acceleration)**2\n\n    num_non_kinematic = tf.reduce_sum(\n        tf.cast(non_kinematic_mask, tf.float32))\n    loss = tf.where(non_kinematic_mask, loss, tf.zeros_like(loss))\n    loss = tf.reduce_sum(loss) / tf.reduce_sum(num_non_kinematic)\n    global_step = tf.train.get_global_step()\n    # Set learning rate to decay from 1e-4 to 1e-6 exponentially.\n    min_lr = 1e-6\n    lr = tf.train.exponential_decay(learning_rate=1e-4 - min_lr,\n                                    global_step=global_step,\n                                    decay_steps=int(5e6),\n                                    decay_rate=0.1) + min_lr\n    opt = tf.train.AdamOptimizer(learning_rate=lr)\n    train_op = opt.minimize(loss, global_step)\n\n    # Calculate next position and add some additional eval metrics (only eval).\n    predicted_next_position = simulator(\n        position_sequence=features['position'],\n        n_particles_per_example=features['n_particles_per_example'],\n        particle_types=features['particle_type'],\n        global_context=features.get('step_context'))\n\n    predictions = {'predicted_next_position': predicted_next_position}\n\n    eval_metrics_ops = {\n        'loss_mse': tf.metrics.mean_squared_error(\n            pred_acceleration, target_acceleration),\n        'one_step_position_mse': tf.metrics.mean_squared_error(\n            predicted_next_position, target_next_position)\n    }\n    return tf_estimator.EstimatorSpec(\n        mode=mode,\n        train_op=train_op,\n        loss=loss,\n        predictions=predictions,\n        eval_metric_ops=eval_metrics_ops)\n\n  return estimator_fn\n\n\ndef get_rollout_estimator_fn(data_path,\n                             noise_std,\n                             latent_size=128,\n                             hidden_size=128,\n                             hidden_layers=2,\n                             message_passing_steps=10):\n  \"\"\"Gets the model function for tf.estimator.Estimator.\"\"\"\n  metadata = _read_metadata(data_path)\n\n  model_kwargs = dict(\n      latent_size=latent_size,\n      mlp_hidden_size=hidden_size,\n      mlp_num_hidden_layers=hidden_layers,\n      num_message_passing_steps=message_passing_steps)\n\n  def estimator_fn(features, labels, mode):\n    del labels  # Labels to conform to estimator spec.\n    simulator = _get_simulator(model_kwargs, metadata,\n                               acc_noise_std=noise_std,\n                               vel_noise_std=noise_std)\n\n    num_steps = metadata['sequence_length'] - INPUT_SEQUENCE_LENGTH\n    rollout_op = rollout(simulator, features, num_steps=num_steps)\n    squared_error = (rollout_op['predicted_rollout'] -\n                     rollout_op['ground_truth_rollout']) ** 2\n    loss = tf.reduce_mean(squared_error)\n    eval_ops = {'rollout_error_mse': tf.metrics.mean_squared_error(\n        rollout_op['predicted_rollout'], rollout_op['ground_truth_rollout'])}\n\n    # Add a leading axis, since Estimator's predict method insists that all\n    # tensors have a shared leading batch axis fo the same dims.\n    rollout_op = tree.map_structure(lambda x: x[tf.newaxis], rollout_op)\n    return tf_estimator.EstimatorSpec(\n        mode=mode,\n        train_op=None,\n        loss=loss,\n        predictions=rollout_op,\n        eval_metric_ops=eval_ops)\n\n  return estimator_fn\n\n\ndef _read_metadata(data_path):\n  with open(os.path.join(data_path, 'metadata.json'), 'rt') as fp:\n    return json.loads(fp.read())\n\n\ndef main(_):\n  \"\"\"Train or evaluates the model.\"\"\"\n\n  if FLAGS.mode in ['train', 'eval']:\n    estimator = tf_estimator.Estimator(\n        get_one_step_estimator_fn(FLAGS.data_path, FLAGS.noise_std),\n        model_dir=FLAGS.model_path)\n    if FLAGS.mode == 'train':\n      # Train all the way through.\n      estimator.train(\n          input_fn=get_input_fn(FLAGS.data_path, FLAGS.batch_size,\n                                mode='one_step_train', split='train'),\n          max_steps=FLAGS.num_steps)\n    else:\n      # One-step evaluation from checkpoint.\n      eval_metrics = estimator.evaluate(input_fn=get_input_fn(\n          FLAGS.data_path, FLAGS.batch_size,\n          mode='one_step', split=FLAGS.eval_split))\n      logging.info('Evaluation metrics:')\n      logging.info(eval_metrics)\n  elif FLAGS.mode == 'eval_rollout':\n    if not FLAGS.output_path:\n      raise ValueError('A rollout path must be provided.')\n    rollout_estimator = tf_estimator.Estimator(\n        get_rollout_estimator_fn(FLAGS.data_path, FLAGS.noise_std),\n        model_dir=FLAGS.model_path)\n\n    # Iterate through rollouts saving them one by one.\n    metadata = _read_metadata(FLAGS.data_path)\n    rollout_iterator = rollout_estimator.predict(\n        input_fn=get_input_fn(FLAGS.data_path, batch_size=1,\n                              mode='rollout', split=FLAGS.eval_split))\n\n    for example_index, example_rollout in enumerate(rollout_iterator):\n      example_rollout['metadata'] = metadata\n      filename = f'rollout_{FLAGS.eval_split}_{example_index}.pkl'\n      filename = os.path.join(FLAGS.output_path, filename)\n      logging.info('Saving: %s.', filename)\n      if not os.path.exists(FLAGS.output_path):\n        os.mkdir(FLAGS.output_path)\n      with open(filename, 'wb') as file:\n        pickle.dump(example_rollout, file)\n\nif __name__ == '__main__':\n  tf.disable_v2_behavior()\n  app.run(main)\n"
  },
  {
    "path": "memo/README.md",
    "content": "# MEMO: A Deep Network For Flexible Combination Of Episodic Memories.\n\nThis package contains a [Colaboratory notebook](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/memo/load_memo_data.ipynb)\nthat loads a version of the dataset for the Paired associative\ninference task (length 3 and 4) presented in the ICLR 2020 submission (also on\n[arXiv](https://arxiv.org/abs/2001.10913)).\n\nIf you use the dataset, please cite:\n\n```\n@inproceedings{\n  banino2020memo:,\n  title={MEMO: A Deep Network for Flexible Combination of Episodic Memories},\n  author={Andrea Banino and Adrià Puigdomènech Badia and\n          Raphael Köster and Martin J. Chadwick and Vinicius Zambaldi and\n          Demis Hassabis and Caswell Barry and Matthew Botvinick and\n          Dharshan Kumaran and Charles Blundell},\n  booktitle={International Conference on Learning Representations},\n  year={2020},\n  url={https://openreview.net/forum?id=rJxlc0EtDr}\n}\n```\n"
  },
  {
    "path": "memo/load_memo_data.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"mP9QIqyCf6G4\"\n      },\n      \"source\": [\n        \"Copyright 2020 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"ng3jUYyQgSjB\"\n      },\n      \"source\": [\n        \"# The dataset used for the Paired associate inference task\\n\",\n        \"\\n\",\n        \"This is the dataset used for the paired associated inference task in\\n\",\n        \"[\\\"MEMO: A Deep Network for Flexible Combination of Episodic Memories\\n\",\n        \"\\\"](https://arxiv.org/abs/2001.10913).\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"2Nd8cdyccWld\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"from __future__ import absolute_import\\n\",\n        \"from __future__ import division\\n\",\n        \"from __future__ import print_function\\n\",\n        \"\\n\",\n        \"import numpy as np\\n\",\n        \"\\n\",\n        \"import tensorflow as tf\\n\",\n        \"import collections\\n\",\n        \"import os\\n\",\n        \"\\n\",\n        \"from google.colab import auth\\n\",\n        \"auth.authenticate_user()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"GP0u6GCUF_6R\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Choices about the dataset you want to load.\\n\",\n        \"# Make choices about the dataset here.\\n\",\n        \"chain_length = 3  #@param {type:\\\"slider\\\", min:3, max:4, step:1}\\n\",\n        \"mode = 'valid' #@param ['train', 'test', 'valid']\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"JUWNNIwziHyC\"\n      },\n      \"source\": [\n        \"**If you choose chain_length 3 the data will look like this:**\\n\",\n        \"\\n\",\n        \"*   trials shape: (48, 3, 1000); 48 trials x the target picture, left and right option x picture dimensions.\\n\",\n        \"*   correct answer: (48); whether the left or right picture is correct.\\n\",\n        \"*   difficulty (48); How far apart are the target picture and the two options.(e.g. AB are 0 steps apart, AC is 1)\\n\",\n        \"*   trial type (48); See below.\\n\",\n        \"*   memory shape (32, 2, 1000); Content of memory store, 32 pairs of images.\\n\",\n        \"\\n\",\n        \"Trial types:\\n\",\n        \"*   1: AB\\n\",\n        \"*   2: BC\\n\",\n        \"*   3: AC\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"**If you choose chain_length 4 the data will look like this:**\\n\",\n        \"*   trials:  (96, 3, 1000)\\n\",\n        \"*   correct answer: (96)\\n\",\n        \"*   difficulty: (96)\\n\",\n        \"*   trial type: (96)\\n\",\n        \"*   memory shape: (48, 2, 1000)\\n\",\n        \"\\n\",\n        \"Trial types:\\n\",\n        \"*   1: AB\\n\",\n        \"*   2: BC\\n\",\n        \"*   3: AC\\n\",\n        \"*   4: CD\\n\",\n        \"*   5: BD\\n\",\n        \"*   6: AD\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"0QETPFeEgr5d\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Train has 500 shards, valid 150, test 100.\\n\",\n        \"if mode == 'train':\\n\",\n        \"  num_shards = 500\\n\",\n        \"elif mode == 'test':\\n\",\n        \"  num_shards = 100\\n\",\n        \"elif mode == 'valid':\\n\",\n        \"  num_shards = 150\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"jE3_9k8DOMyZ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"DatasetInfo = collections.namedtuple(\\n\",\n        \"    'DatasetInfo',\\n\",\n        \"    ['basepath', 'size', 'chain_length']\\n\",\n        \")\\n\",\n        \"\\n\",\n        \"_DATASETS = dict(\\n\",\n        \"    memo=DatasetInfo(\\n\",\n        \"        basepath=mode,\\n\",\n        \"        size=num_shards,\\n\",\n        \"        chain_length=chain_length)\\n\",\n        \")\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"N3D11lxl3kjF\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def _get_dataset_files(dataset_info, root):\\n\",\n        \"  \\\"\\\"\\\"Generates lists of files for a given dataset version.\\\"\\\"\\\"\\n\",\n        \"  basepath = dataset_info.basepath\\n\",\n        \"  base = os.path.join(root, basepath)\\n\",\n        \"  num_files = dataset_info.size\\n\",\n        \"  length = len(str(num_files))\\n\",\n        \"  template = 'trials-{:0%d}-of-{:0%d}' % (5, 5)\\n\",\n        \"  return [os.path.join(base, template.format(i, num_files))\\n\",\n        \"          for i in range(num_files)]\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"6yqLJYAnsyZF\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def parser_tf_examples(raw_data, chain_length=chain_length):\\n\",\n        \"  if chain_length == 3:\\n\",\n        \"    feature_map = {\\n\",\n        \"        'trials' : tf.io.FixedLenFeature(\\n\",\n        \"            shape=[48, 3, 1000],\\n\",\n        \"            dtype=tf.float32),\\n\",\n        \"        'correct_answer': tf.io.FixedLenFeature(\\n\",\n        \"           shape=[48],\\n\",\n        \"           dtype=tf.int64),\\n\",\n        \"        'difficulty': tf.io.FixedLenFeature(\\n\",\n        \"           shape=[48],\\n\",\n        \"           dtype=tf.int64),\\n\",\n        \"        'trial_type': tf.io.FixedLenFeature(\\n\",\n        \"           shape=[48],\\n\",\n        \"           dtype=tf.int64),\\n\",\n        \"       'memory': tf.io.FixedLenFeature(\\n\",\n        \"           shape=[32, 2, 1000],\\n\",\n        \"           dtype=tf.float32),\\n\",\n        \"   }\\n\",\n        \"  elif chain_length == 4: \\n\",\n        \"   feature_map = {\\n\",\n        \"       'trials' : tf.io.FixedLenFeature(\\n\",\n        \"           shape=[96, 3, 1000],\\n\",\n        \"           dtype=tf.float32),\\n\",\n        \"       'correct_answer': tf.io.FixedLenFeature(\\n\",\n        \"           shape=[96],\\n\",\n        \"           dtype=tf.int64),\\n\",\n        \"       'difficulty': tf.io.FixedLenFeature(\\n\",\n        \"           shape=[96],\\n\",\n        \"           dtype=tf.int64),\\n\",\n        \"       'trial_type': tf.io.FixedLenFeature(\\n\",\n        \"           shape=[96],\\n\",\n        \"           dtype=tf.int64),\\n\",\n        \"       'memory': tf.io.FixedLenFeature(\\n\",\n        \"          shape=[48, 2, 1000],\\n\",\n        \"            dtype=tf.float32),\\n\",\n        \"   }\\n\",\n        \"  example = tf.io.parse_example(raw_data, feature_map)\\n\",\n        \"  batch = [example[\\\"trials\\\"],\\n\",\n        \"            example[\\\"correct_answer\\\"],\\n\",\n        \"            example[\\\"difficulty\\\"],\\n\",\n        \"            example[\\\"trial_type\\\"],\\n\",\n        \"            example[\\\"memory\\\"]]\\n\",\n        \"  return batch\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"nXMhOoHWj0oP\"\n      },\n      \"source\": [\n        \"## Load the data.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"rXIOBlWKyMY0\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"dataset_info = 'memo'\\n\",\n        \"root = 'gs://deepmind-memo/length' + str(chain_length) + '/'\\n\",\n        \"num_epochs = 100\\n\",\n        \"shuffle_buffer_size = 150\\n\",\n        \"num_readers = 4\\n\",\n        \"dataset_info = _DATASETS['memo']\\n\",\n        \"filenames = _get_dataset_files(dataset_info, root)\\n\",\n        \"num_map_threads = 4\\n\",\n        \"batch_size = 10\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"e2G5MSVf9Hpm\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"data = tf.data.Dataset.from_tensor_slices(filenames)\\n\",\n        \"data = data.repeat(num_epochs)\\n\",\n        \"data = data.shuffle(shuffle_buffer_size)\\n\",\n        \"data = data.interleave(tf.data.TFRecordDataset,\\n\",\n        \"                          cycle_length=num_readers, block_length=1)\\n\",\n        \"data = data.shuffle(shuffle_buffer_size)\\n\",\n        \"data = data.map(parser_tf_examples, num_parallel_calls=num_map_threads)\\n\",\n        \"data = data.batch(batch_size)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"1z3dsDNqkBHD\"\n      },\n      \"source\": [\n        \"# Looking at what we loaded.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"ibVadDeeAU4Q\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"iterator = data.__iter__()\\n\",\n        \"element = iterator.get_next()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"Lh7-f08nAeGq\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"print(element[0].shape) # trials\\n\",\n        \"print(element[1].shape) # correct answer\\n\",\n        \"print(element[2].shape) # difficulty\\n\",\n        \"print(element[3].shape) # trialtype\\n\",\n        \"print(element[4].shape) # memory\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"name\": \"load_memo_data.ipynb\",\n      \"provenance\": []\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "meshgraphnets/README.md",
    "content": "# Learning Mesh-Based Simulation with Graph Networks (ICLR 2021)\n\nVideo site: [sites.google.com/view/meshgraphnets](https://sites.google.com/view/meshgraphnets)\n\nPaper: [arxiv.org/abs/2010.03409](https://arxiv.org/abs/2010.03409)\n\nIf you use the code here please cite this paper:\n\n    @inproceedings{pfaff2021learning,\n      title={Learning Mesh-Based Simulation with Graph Networks},\n      author={Tobias Pfaff and\n              Meire Fortunato and\n              Alvaro Sanchez-Gonzalez and\n              Peter W. Battaglia},\n      booktitle={International Conference on Learning Representations},\n      year={2021}\n    }\n\n## Overview\n\nThis release contains the full datasets used in the paper, as well as data\nloaders (dataset.py), and the learned model core (core_model.py).\nThese components are designed to work with all of our domains.\n\nWe also include demonstration code for a full training and evaluation pipeline,\nfor the `cylinder_flow` and `flag_simple` domains only. This\nincludes graph encoding, evaluation, rollout and plotting trajectory.\nRefer to the respective `cfd_*` and `cloth_*` files for details.\n\n## Setup\n\nPrepare environment, install dependencies:\n\n    virtualenv --python=python3.6 \"${ENV}\"\n    ${ENV}/bin/activate\n    pip install -r meshgraphnets/requirements.txt\n\nDownload a dataset:\n\n    mkdir -p ${DATA}\n    bash meshgraphnets/download_dataset.sh flag_simple ${DATA}\n\n## Running the model\n\nTrain a model:\n\n    python -m meshgraphnets.run_model --mode=train --model=cloth \\\n        --checkpoint_dir=${DATA}/chk --dataset_dir=${DATA}/flag_simple\n\nGenerate some trajectory rollouts:\n\n    python -m meshgraphnets.run_model --mode=eval --model=cloth \\\n        --checkpoint_dir=${DATA}/chk --dataset_dir=${DATA}/flag_simple \\\n        --rollout_path=${DATA}/rollout_flag.pkl\n\nPlot a trajectory:\n\n    python -m meshgraphnets.plot_cloth --rollout_path=${DATA}/rollout_flag.pkl\n\nThe instructions above train a model for the `flag_simple` domain; for\nthe `cylinder_flow` dataset, use `--model=cfd` and the `plot_cfd` script.\n\n## Datasets\n\nDatasets can be downloaded using the script `download_dataset.sh`. They contain\na metadata file describing the available fields and their shape, and tfrecord\ndatasets for train, valid and test splits.\nDataset names match the naming in the paper.\nThe following datasets are available:\n\n    airfoil\n    cylinder_flow\n    deforming_plate\n    flag_minimal\n    flag_simple\n    flag_dynamic\n    flag_dynamic_sizing\n    sphere_simple\n    sphere_dynamic\n    sphere_dynamic_sizing\n\n`flag_minimal` is a truncated version of flag_simple, and is only used for\nintegration tests. `flag_dynamic_sizing` and `sphere_dynamic_sizing` can be\nused to learn the sizing field. These datasets have the same structure as\nthe other datasets, but contain the meshes in their state before remeshing,\nand define a matching `sizing_field` target for each mesh.\n"
  },
  {
    "path": "meshgraphnets/cfd_eval.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Functions to build evaluation metrics for CFD data.\"\"\"\n\nimport tensorflow.compat.v1 as tf\n\nfrom meshgraphnets.common import NodeType\n\n\ndef _rollout(model, initial_state, num_steps):\n  \"\"\"Rolls out a model trajectory.\"\"\"\n  node_type = initial_state['node_type'][:, 0]\n  mask = tf.logical_or(tf.equal(node_type, NodeType.NORMAL),\n                       tf.equal(node_type, NodeType.OUTFLOW))\n\n  def step_fn(step, velocity, trajectory):\n    prediction = model({**initial_state,\n                        'velocity': velocity})\n    # don't update boundary nodes\n    next_velocity = tf.where(mask, prediction, velocity)\n    trajectory = trajectory.write(step, velocity)\n    return step+1, next_velocity, trajectory\n\n  _, _, output = tf.while_loop(\n      cond=lambda step, cur, traj: tf.less(step, num_steps),\n      body=step_fn,\n      loop_vars=(0, initial_state['velocity'],\n                 tf.TensorArray(tf.float32, num_steps)),\n      parallel_iterations=1)\n  return output.stack()\n\n\ndef evaluate(model, inputs):\n  \"\"\"Performs model rollouts and create stats.\"\"\"\n  initial_state = {k: v[0] for k, v in inputs.items()}\n  num_steps = inputs['cells'].shape[0]\n  prediction = _rollout(model, initial_state, num_steps)\n\n  error = tf.reduce_mean((prediction - inputs['velocity'])**2, axis=-1)\n  scalars = {'mse_%d_steps' % horizon: tf.reduce_mean(error[1:horizon+1])\n             for horizon in [1, 10, 20, 50, 100, 200]}\n  traj_ops = {\n      'faces': inputs['cells'],\n      'mesh_pos': inputs['mesh_pos'],\n      'gt_velocity': inputs['velocity'],\n      'pred_velocity': prediction\n  }\n  return scalars, traj_ops\n"
  },
  {
    "path": "meshgraphnets/cfd_model.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Model for CylinderFlow.\"\"\"\n\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\nfrom meshgraphnets import common\nfrom meshgraphnets import core_model\nfrom meshgraphnets import normalization\n\n\nclass Model(snt.AbstractModule):\n  \"\"\"Model for fluid simulation.\"\"\"\n\n  def __init__(self, learned_model, name='Model'):\n    super(Model, self).__init__(name=name)\n    with self._enter_variable_scope():\n      self._learned_model = learned_model\n      self._output_normalizer = normalization.Normalizer(\n          size=2, name='output_normalizer')\n      self._node_normalizer = normalization.Normalizer(\n          size=2+common.NodeType.SIZE, name='node_normalizer')\n      self._edge_normalizer = normalization.Normalizer(\n          size=3, name='edge_normalizer')  # 2D coord + length\n\n  def _build_graph(self, inputs, is_training):\n    \"\"\"Builds input graph.\"\"\"\n    # construct graph nodes\n    node_type = tf.one_hot(inputs['node_type'][:, 0], common.NodeType.SIZE)\n    node_features = tf.concat([inputs['velocity'], node_type], axis=-1)\n\n    # construct graph edges\n    senders, receivers = common.triangles_to_edges(inputs['cells'])\n    relative_mesh_pos = (tf.gather(inputs['mesh_pos'], senders) -\n                         tf.gather(inputs['mesh_pos'], receivers))\n    edge_features = tf.concat([\n        relative_mesh_pos,\n        tf.norm(relative_mesh_pos, axis=-1, keepdims=True)], axis=-1)\n\n    mesh_edges = core_model.EdgeSet(\n        name='mesh_edges',\n        features=self._edge_normalizer(edge_features, is_training),\n        receivers=receivers,\n        senders=senders)\n    return core_model.MultiGraph(\n        node_features=self._node_normalizer(node_features, is_training),\n        edge_sets=[mesh_edges])\n\n  def _build(self, inputs):\n    graph = self._build_graph(inputs, is_training=False)\n    per_node_network_output = self._learned_model(graph)\n    return self._update(inputs, per_node_network_output)\n\n  @snt.reuse_variables\n  def loss(self, inputs):\n    \"\"\"L2 loss on velocity.\"\"\"\n    graph = self._build_graph(inputs, is_training=True)\n    network_output = self._learned_model(graph)\n\n    # build target velocity change\n    cur_velocity = inputs['velocity']\n    target_velocity = inputs['target|velocity']\n    target_velocity_change = target_velocity - cur_velocity\n    target_normalized = self._output_normalizer(target_velocity_change)\n\n    # build loss\n    node_type = inputs['node_type'][:, 0]\n    loss_mask = tf.logical_or(tf.equal(node_type, common.NodeType.NORMAL),\n                              tf.equal(node_type, common.NodeType.OUTFLOW))\n    error = tf.reduce_sum((target_normalized - network_output)**2, axis=1)\n    loss = tf.reduce_mean(error[loss_mask])\n    return loss\n\n  def _update(self, inputs, per_node_network_output):\n    \"\"\"Integrate model outputs.\"\"\"\n    velocity_update = self._output_normalizer.inverse(per_node_network_output)\n    # integrate forward\n    cur_velocity = inputs['velocity']\n    return cur_velocity + velocity_update\n"
  },
  {
    "path": "meshgraphnets/cloth_eval.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Functions to build evaluation metrics for cloth data.\"\"\"\n\nimport tensorflow.compat.v1 as tf\n\nfrom meshgraphnets.common import NodeType\n\n\ndef _rollout(model, initial_state, num_steps):\n  \"\"\"Rolls out a model trajectory.\"\"\"\n  mask = tf.equal(initial_state['node_type'][:, 0], NodeType.NORMAL)\n\n  def step_fn(step, prev_pos, cur_pos, trajectory):\n    prediction = model({**initial_state,\n                        'prev|world_pos': prev_pos,\n                        'world_pos': cur_pos})\n    # don't update kinematic nodes\n    next_pos = tf.where(mask, prediction, cur_pos)\n    trajectory = trajectory.write(step, cur_pos)\n    return step+1, cur_pos, next_pos, trajectory\n\n  _, _, _, output = tf.while_loop(\n      cond=lambda step, last, cur, traj: tf.less(step, num_steps),\n      body=step_fn,\n      loop_vars=(0, initial_state['prev|world_pos'], initial_state['world_pos'],\n                 tf.TensorArray(tf.float32, num_steps)),\n      parallel_iterations=1)\n  return output.stack()\n\n\ndef evaluate(model, inputs):\n  \"\"\"Performs model rollouts and create stats.\"\"\"\n  initial_state = {k: v[0] for k, v in inputs.items()}\n  num_steps = inputs['cells'].shape[0]\n  prediction = _rollout(model, initial_state, num_steps)\n\n  error = tf.reduce_mean((prediction - inputs['world_pos'])**2, axis=-1)\n  scalars = {'mse_%d_steps' % horizon: tf.reduce_mean(error[1:horizon+1])\n             for horizon in [1, 10, 20, 50, 100, 200]}\n  traj_ops = {\n      'faces': inputs['cells'],\n      'mesh_pos': inputs['mesh_pos'],\n      'gt_pos': inputs['world_pos'],\n      'pred_pos': prediction\n  }\n  return scalars, traj_ops\n"
  },
  {
    "path": "meshgraphnets/cloth_model.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Model for FlagSimple.\"\"\"\n\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\nfrom meshgraphnets import common\nfrom meshgraphnets import core_model\nfrom meshgraphnets import normalization\n\n\nclass Model(snt.AbstractModule):\n  \"\"\"Model for static cloth simulation.\"\"\"\n\n  def __init__(self, learned_model, name='Model'):\n    super(Model, self).__init__(name=name)\n    with self._enter_variable_scope():\n      self._learned_model = learned_model\n      self._output_normalizer = normalization.Normalizer(\n          size=3, name='output_normalizer')\n      self._node_normalizer = normalization.Normalizer(\n          size=3+common.NodeType.SIZE, name='node_normalizer')\n      self._edge_normalizer = normalization.Normalizer(\n          size=7, name='edge_normalizer')  # 2D coord + 3D coord + 2*length = 7\n\n  def _build_graph(self, inputs, is_training):\n    \"\"\"Builds input graph.\"\"\"\n    # construct graph nodes\n    velocity = inputs['world_pos'] - inputs['prev|world_pos']\n    node_type = tf.one_hot(inputs['node_type'][:, 0], common.NodeType.SIZE)\n    node_features = tf.concat([velocity, node_type], axis=-1)\n\n    # construct graph edges\n    senders, receivers = common.triangles_to_edges(inputs['cells'])\n    relative_world_pos = (tf.gather(inputs['world_pos'], senders) -\n                          tf.gather(inputs['world_pos'], receivers))\n    relative_mesh_pos = (tf.gather(inputs['mesh_pos'], senders) -\n                         tf.gather(inputs['mesh_pos'], receivers))\n    edge_features = tf.concat([\n        relative_world_pos,\n        tf.norm(relative_world_pos, axis=-1, keepdims=True),\n        relative_mesh_pos,\n        tf.norm(relative_mesh_pos, axis=-1, keepdims=True)], axis=-1)\n\n    mesh_edges = core_model.EdgeSet(\n        name='mesh_edges',\n        features=self._edge_normalizer(edge_features, is_training),\n        receivers=receivers,\n        senders=senders)\n    return core_model.MultiGraph(\n        node_features=self._node_normalizer(node_features, is_training),\n        edge_sets=[mesh_edges])\n\n  def _build(self, inputs):\n    graph = self._build_graph(inputs, is_training=False)\n    per_node_network_output = self._learned_model(graph)\n    return self._update(inputs, per_node_network_output)\n\n  @snt.reuse_variables\n  def loss(self, inputs):\n    \"\"\"L2 loss on position.\"\"\"\n    graph = self._build_graph(inputs, is_training=True)\n    network_output = self._learned_model(graph)\n\n    # build target acceleration\n    cur_position = inputs['world_pos']\n    prev_position = inputs['prev|world_pos']\n    target_position = inputs['target|world_pos']\n    target_acceleration = target_position - 2*cur_position + prev_position\n    target_normalized = self._output_normalizer(target_acceleration)\n\n    # build loss\n    loss_mask = tf.equal(inputs['node_type'][:, 0], common.NodeType.NORMAL)\n    error = tf.reduce_sum((target_normalized - network_output)**2, axis=1)\n    loss = tf.reduce_mean(error[loss_mask])\n    return loss\n\n  def _update(self, inputs, per_node_network_output):\n    \"\"\"Integrate model outputs.\"\"\"\n    acceleration = self._output_normalizer.inverse(per_node_network_output)\n    # integrate forward\n    cur_position = inputs['world_pos']\n    prev_position = inputs['prev|world_pos']\n    position = 2*cur_position + acceleration - prev_position\n    return position\n"
  },
  {
    "path": "meshgraphnets/common.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Commonly used data structures and functions.\"\"\"\n\nimport enum\nimport tensorflow.compat.v1 as tf\n\n\nclass NodeType(enum.IntEnum):\n  NORMAL = 0\n  OBSTACLE = 1\n  AIRFOIL = 2\n  HANDLE = 3\n  INFLOW = 4\n  OUTFLOW = 5\n  WALL_BOUNDARY = 6\n  SIZE = 9\n\n\ndef triangles_to_edges(faces):\n  \"\"\"Computes mesh edges from triangles.\"\"\"\n  # collect edges from triangles\n  edges = tf.concat([faces[:, 0:2],\n                     faces[:, 1:3],\n                     tf.stack([faces[:, 2], faces[:, 0]], axis=1)], axis=0)\n  # those edges are sometimes duplicated (within the mesh) and sometimes\n  # single (at the mesh boundary).\n  # sort & pack edges as single tf.int64\n  receivers = tf.reduce_min(edges, axis=1)\n  senders = tf.reduce_max(edges, axis=1)\n  packed_edges = tf.bitcast(tf.stack([senders, receivers], axis=1), tf.int64)\n  # remove duplicates and unpack\n  unique_edges = tf.bitcast(tf.unique(packed_edges)[0], tf.int32)\n  senders, receivers = tf.unstack(unique_edges, axis=1)\n  # create two-way connectivity\n  return (tf.concat([senders, receivers], axis=0),\n          tf.concat([receivers, senders], axis=0))\n"
  },
  {
    "path": "meshgraphnets/core_model.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Core learned graph net model.\"\"\"\n\nimport collections\nimport functools\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\nEdgeSet = collections.namedtuple('EdgeSet', ['name', 'features', 'senders',\n                                             'receivers'])\nMultiGraph = collections.namedtuple('Graph', ['node_features', 'edge_sets'])\n\n\nclass GraphNetBlock(snt.AbstractModule):\n  \"\"\"Multi-Edge Interaction Network with residual connections.\"\"\"\n\n  def __init__(self, model_fn, name='GraphNetBlock'):\n    super(GraphNetBlock, self).__init__(name=name)\n    self._model_fn = model_fn\n\n  def _update_edge_features(self, node_features, edge_set):\n    \"\"\"Aggregrates node features, and applies edge function.\"\"\"\n    sender_features = tf.gather(node_features, edge_set.senders)\n    receiver_features = tf.gather(node_features, edge_set.receivers)\n    features = [sender_features, receiver_features, edge_set.features]\n    with tf.variable_scope(edge_set.name+'_edge_fn'):\n      return self._model_fn()(tf.concat(features, axis=-1))\n\n  def _update_node_features(self, node_features, edge_sets):\n    \"\"\"Aggregrates edge features, and applies node function.\"\"\"\n    num_nodes = tf.shape(node_features)[0]\n    features = [node_features]\n    for edge_set in edge_sets:\n      features.append(tf.math.unsorted_segment_sum(edge_set.features,\n                                                   edge_set.receivers,\n                                                   num_nodes))\n    with tf.variable_scope('node_fn'):\n      return self._model_fn()(tf.concat(features, axis=-1))\n\n  def _build(self, graph):\n    \"\"\"Applies GraphNetBlock and returns updated MultiGraph.\"\"\"\n\n    # apply edge functions\n    new_edge_sets = []\n    for edge_set in graph.edge_sets:\n      updated_features = self._update_edge_features(graph.node_features,\n                                                    edge_set)\n      new_edge_sets.append(edge_set._replace(features=updated_features))\n\n    # apply node function\n    new_node_features = self._update_node_features(graph.node_features,\n                                                   new_edge_sets)\n\n    # add residual connections\n    new_node_features += graph.node_features\n    new_edge_sets = [es._replace(features=es.features + old_es.features)\n                     for es, old_es in zip(new_edge_sets, graph.edge_sets)]\n    return MultiGraph(new_node_features, new_edge_sets)\n\n\nclass EncodeProcessDecode(snt.AbstractModule):\n  \"\"\"Encode-Process-Decode GraphNet model.\"\"\"\n\n  def __init__(self,\n               output_size,\n               latent_size,\n               num_layers,\n               message_passing_steps,\n               name='EncodeProcessDecode'):\n    super(EncodeProcessDecode, self).__init__(name=name)\n    self._latent_size = latent_size\n    self._output_size = output_size\n    self._num_layers = num_layers\n    self._message_passing_steps = message_passing_steps\n\n  def _make_mlp(self, output_size, layer_norm=True):\n    \"\"\"Builds an MLP.\"\"\"\n    widths = [self._latent_size] * self._num_layers + [output_size]\n    network = snt.nets.MLP(widths, activate_final=False)\n    if layer_norm:\n      network = snt.Sequential([network, snt.LayerNorm()])\n    return network\n\n  def _encoder(self, graph):\n    \"\"\"Encodes node and edge features into latent features.\"\"\"\n    with tf.variable_scope('encoder'):\n      node_latents = self._make_mlp(self._latent_size)(graph.node_features)\n      new_edges_sets = []\n      for edge_set in graph.edge_sets:\n        latent = self._make_mlp(self._latent_size)(edge_set.features)\n        new_edges_sets.append(edge_set._replace(features=latent))\n    return MultiGraph(node_latents, new_edges_sets)\n\n  def _decoder(self, graph):\n    \"\"\"Decodes node features from graph.\"\"\"\n    with tf.variable_scope('decoder'):\n      decoder = self._make_mlp(self._output_size, layer_norm=False)\n      return decoder(graph.node_features)\n\n  def _build(self, graph):\n    \"\"\"Encodes and processes a multigraph, and returns node features.\"\"\"\n    model_fn = functools.partial(self._make_mlp, output_size=self._latent_size)\n    latent_graph = self._encoder(graph)\n    for _ in range(self._message_passing_steps):\n      latent_graph = GraphNetBlock(model_fn)(latent_graph)\n    return self._decoder(latent_graph)\n"
  },
  {
    "path": "meshgraphnets/dataset.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Utility functions for reading the datasets.\"\"\"\n\nimport functools\nimport json\nimport os\n\nimport tensorflow.compat.v1 as tf\n\nfrom meshgraphnets.common import NodeType\n\n\ndef _parse(proto, meta):\n  \"\"\"Parses a trajectory from tf.Example.\"\"\"\n  feature_lists = {k: tf.io.VarLenFeature(tf.string)\n                   for k in meta['field_names']}\n  features = tf.io.parse_single_example(proto, feature_lists)\n  out = {}\n  for key, field in meta['features'].items():\n    data = tf.io.decode_raw(features[key].values, getattr(tf, field['dtype']))\n    data = tf.reshape(data, field['shape'])\n    if field['type'] == 'static':\n      data = tf.tile(data, [meta['trajectory_length'], 1, 1])\n    elif field['type'] == 'dynamic_varlen':\n      length = tf.io.decode_raw(features['length_'+key].values, tf.int32)\n      length = tf.reshape(length, [-1])\n      data = tf.RaggedTensor.from_row_lengths(data, row_lengths=length)\n    elif field['type'] != 'dynamic':\n      raise ValueError('invalid data format')\n    out[key] = data\n  return out\n\n\ndef load_dataset(path, split):\n  \"\"\"Load dataset.\"\"\"\n  with open(os.path.join(path, 'meta.json'), 'r') as fp:\n    meta = json.loads(fp.read())\n  ds = tf.data.TFRecordDataset(os.path.join(path, split+'.tfrecord'))\n  ds = ds.map(functools.partial(_parse, meta=meta), num_parallel_calls=8)\n  ds = ds.prefetch(1)\n  return ds\n\n\ndef add_targets(ds, fields, add_history):\n  \"\"\"Adds target and optionally history fields to dataframe.\"\"\"\n  def fn(trajectory):\n    out = {}\n    for key, val in trajectory.items():\n      out[key] = val[1:-1]\n      if key in fields:\n        if add_history:\n          out['prev|'+key] = val[0:-2]\n        out['target|'+key] = val[2:]\n    return out\n  return ds.map(fn, num_parallel_calls=8)\n\n\ndef split_and_preprocess(ds, noise_field, noise_scale, noise_gamma):\n  \"\"\"Splits trajectories into frames, and adds training noise.\"\"\"\n  def add_noise(frame):\n    noise = tf.random.normal(tf.shape(frame[noise_field]),\n                             stddev=noise_scale, dtype=tf.float32)\n    # don't apply noise to boundary nodes\n    mask = tf.equal(frame['node_type'], NodeType.NORMAL)[:, 0]\n    noise = tf.where(mask, noise, tf.zeros_like(noise))\n    frame[noise_field] += noise\n    frame['target|'+noise_field] += (1.0 - noise_gamma) * noise\n    return frame\n\n  ds = ds.flat_map(tf.data.Dataset.from_tensor_slices)\n  ds = ds.map(add_noise, num_parallel_calls=8)\n  ds = ds.shuffle(10000)\n  ds = ds.repeat(None)\n  return ds.prefetch(10)\n\n\ndef batch_dataset(ds, batch_size):\n  \"\"\"Batches input datasets.\"\"\"\n  shapes = ds.output_shapes\n  types = ds.output_types\n  def renumber(buffer, frame):\n    nodes, cells = buffer\n    new_nodes, new_cells = frame\n    return nodes + new_nodes, tf.concat([cells, new_cells+nodes], axis=0)\n\n  def batch_accumulate(ds_window):\n    out = {}\n    for key, ds_val in ds_window.items():\n      initial = tf.zeros((0, shapes[key][1]), dtype=types[key])\n      if key == 'cells':\n        # renumber node indices in cells\n        num_nodes = ds_window['node_type'].map(lambda x: tf.shape(x)[0])\n        cells = tf.data.Dataset.zip((num_nodes, ds_val))\n        initial = (tf.constant(0, tf.int32), initial)\n        _, out[key] = cells.reduce(initial, renumber)\n      else:\n        merge = lambda prev, cur: tf.concat([prev, cur], axis=0)\n        out[key] = ds_val.reduce(initial, merge)\n    return out\n\n  if batch_size > 1:\n    ds = ds.window(batch_size, drop_remainder=True)\n    ds = ds.map(batch_accumulate, num_parallel_calls=8)\n  return ds\n"
  },
  {
    "path": "meshgraphnets/download_dataset.sh",
    "content": "#!/bin/bash\n# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n# Usage:\n#     sh download_dataset.sh ${DATASET_NAME} ${OUTPUT_DIR}\n# Example:\n#     sh download_dataset.sh flag_simple /tmp/\n\nset -e\n\nDATASET_NAME=\"${1}\"\nOUTPUT_DIR=\"${2}/${DATASET_NAME}\"\n\nBASE_URL=\"https://storage.googleapis.com/dm-meshgraphnets/${DATASET_NAME}/\"\n\nmkdir -p ${OUTPUT_DIR}\nfor file in meta.json train.tfrecord valid.tfrecord test.tfrecord\ndo\nwget -O \"${OUTPUT_DIR}/${file}\" \"${BASE_URL}${file}\"\ndone\n"
  },
  {
    "path": "meshgraphnets/normalization.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Online data normalization.\"\"\"\n\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\n\nclass Normalizer(snt.AbstractModule):\n  \"\"\"Feature normalizer that accumulates statistics online.\"\"\"\n\n  def __init__(self, size, max_accumulations=10**6, std_epsilon=1e-8,\n               name='Normalizer'):\n    super(Normalizer, self).__init__(name=name)\n    self._max_accumulations = max_accumulations\n    self._std_epsilon = std_epsilon\n    with self._enter_variable_scope():\n      self._acc_count = tf.Variable(0, dtype=tf.float32, trainable=False)\n      self._num_accumulations = tf.Variable(0, dtype=tf.float32,\n                                            trainable=False)\n      self._acc_sum = tf.Variable(tf.zeros(size, tf.float32), trainable=False)\n      self._acc_sum_squared = tf.Variable(tf.zeros(size, tf.float32),\n                                          trainable=False)\n\n  def _build(self, batched_data, accumulate=True):\n    \"\"\"Normalizes input data and accumulates statistics.\"\"\"\n    update_op = tf.no_op()\n    if accumulate:\n      # stop accumulating after a million updates, to prevent accuracy issues\n      update_op = tf.cond(self._num_accumulations < self._max_accumulations,\n                          lambda: self._accumulate(batched_data),\n                          tf.no_op)\n    with tf.control_dependencies([update_op]):\n      return (batched_data - self._mean()) / self._std_with_epsilon()\n\n  @snt.reuse_variables\n  def inverse(self, normalized_batch_data):\n    \"\"\"Inverse transformation of the normalizer.\"\"\"\n    return normalized_batch_data * self._std_with_epsilon() + self._mean()\n\n  def _accumulate(self, batched_data):\n    \"\"\"Function to perform the accumulation of the batch_data statistics.\"\"\"\n    count = tf.cast(tf.shape(batched_data)[0], tf.float32)\n    data_sum = tf.reduce_sum(batched_data, axis=0)\n    squared_data_sum = tf.reduce_sum(batched_data**2, axis=0)\n    return tf.group(\n        tf.assign_add(self._acc_sum, data_sum),\n        tf.assign_add(self._acc_sum_squared, squared_data_sum),\n        tf.assign_add(self._acc_count, count),\n        tf.assign_add(self._num_accumulations, 1.))\n\n  def _mean(self):\n    safe_count = tf.maximum(self._acc_count, 1.)\n    return self._acc_sum / safe_count\n\n  def _std_with_epsilon(self):\n    safe_count = tf.maximum(self._acc_count, 1.)\n    std = tf.sqrt(self._acc_sum_squared / safe_count - self._mean()**2)\n    return tf.math.maximum(std, self._std_epsilon)\n"
  },
  {
    "path": "meshgraphnets/plot_cfd.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Plots a CFD trajectory rollout.\"\"\"\n\nimport pickle\n\nfrom absl import app\nfrom absl import flags\nfrom matplotlib import animation\nfrom matplotlib import tri as mtri\nimport matplotlib.pyplot as plt\n\nFLAGS = flags.FLAGS\nflags.DEFINE_string('rollout_path', None, 'Path to rollout pickle file')\n\n\ndef main(unused_argv):\n  with open(FLAGS.rollout_path, 'rb') as fp:\n    rollout_data = pickle.load(fp)\n\n  fig, ax = plt.subplots(1, 1, figsize=(12, 8))\n  skip = 10\n  num_steps = rollout_data[0]['gt_velocity'].shape[0]\n  num_frames = len(rollout_data) * num_steps // skip\n\n  # compute bounds\n  bounds = []\n  for trajectory in rollout_data:\n    bb_min = trajectory['gt_velocity'].min(axis=(0, 1))\n    bb_max = trajectory['gt_velocity'].max(axis=(0, 1))\n    bounds.append((bb_min, bb_max))\n\n  def animate(num):\n    step = (num*skip) % num_steps\n    traj = (num*skip) // num_steps\n    ax.cla()\n    ax.set_aspect('equal')\n    ax.set_axis_off()\n    vmin, vmax = bounds[traj]\n    pos = rollout_data[traj]['mesh_pos'][step]\n    faces = rollout_data[traj]['faces'][step]\n    velocity = rollout_data[traj]['pred_velocity'][step]\n    triang = mtri.Triangulation(pos[:, 0], pos[:, 1], faces)\n    ax.tripcolor(triang, velocity[:, 0], vmin=vmin[0], vmax=vmax[0])\n    ax.triplot(triang, 'ko-', ms=0.5, lw=0.3)\n    ax.set_title('Trajectory %d Step %d' % (traj, step))\n    return fig,\n\n  _ = animation.FuncAnimation(fig, animate, frames=num_frames, interval=100)\n  plt.show(block=True)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "meshgraphnets/plot_cloth.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Plots a cloth trajectory rollout.\"\"\"\n\nimport pickle\n\nfrom absl import app\nfrom absl import flags\n\nfrom matplotlib import animation\nimport matplotlib.pyplot as plt\n\nFLAGS = flags.FLAGS\nflags.DEFINE_string('rollout_path', None, 'Path to rollout pickle file')\n\n\ndef main(unused_argv):\n  with open(FLAGS.rollout_path, 'rb') as fp:\n    rollout_data = pickle.load(fp)\n\n  fig = plt.figure(figsize=(8, 8))\n  ax = fig.add_subplot(111, projection='3d')\n  skip = 10\n  num_steps = rollout_data[0]['gt_pos'].shape[0]\n  num_frames = len(rollout_data) * num_steps // skip\n\n  # compute bounds\n  bounds = []\n  for trajectory in rollout_data:\n    bb_min = trajectory['gt_pos'].min(axis=(0, 1))\n    bb_max = trajectory['gt_pos'].max(axis=(0, 1))\n    bounds.append((bb_min, bb_max))\n\n  def animate(num):\n    step = (num*skip) % num_steps\n    traj = (num*skip) // num_steps\n    ax.cla()\n    bound = bounds[traj]\n    ax.set_xlim([bound[0][0], bound[1][0]])\n    ax.set_ylim([bound[0][1], bound[1][1]])\n    ax.set_zlim([bound[0][2], bound[1][2]])\n    pos = rollout_data[traj]['pred_pos'][step]\n    faces = rollout_data[traj]['faces'][step]\n    ax.plot_trisurf(pos[:, 0], pos[:, 1], faces, pos[:, 2], shade=True)\n    ax.set_title('Trajectory %d Step %d' % (traj, step))\n    return fig,\n\n  _ = animation.FuncAnimation(fig, animate, frames=num_frames, interval=100)\n  plt.show(block=True)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "meshgraphnets/requirements.txt",
    "content": "tensorflow-gpu>=1.15,<2\ndm-sonnet<2\nmatplotlib\nabsl-py\nnumpy\n"
  },
  {
    "path": "meshgraphnets/run.sh",
    "content": "#!/bin/bash\n# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Fail on any error.\nset -e\n\n# Display commands being run.\nset -x\n\nTMP_DIR=`mktemp -d`\n\nvirtualenv --python=python3.6 \"${TMP_DIR}/env\"\nsource \"${TMP_DIR}/env/bin/activate\"\n\n# Install dependencies.\npip install --upgrade -r meshgraphnets/requirements.txt\n\n# Download minimal dataset\nDATA_DIR=\"${TMP_DIR}/flag_minimal\"\nbash meshgraphnets/download_dataset.sh flag_minimal ${TMP_DIR}\n\n# Train for a few steps.\nCHK_DIR=\"${TMP_DIR}/checkpoint\"\npython -m meshgraphnets.run_model --model=cloth --mode=train --checkpoint_dir=${CHK_DIR} --dataset_dir=${DATA_DIR} --num_training_steps=10\n\n# Generate a rollout trajectory\nROLLOUT_PATH=\"${TMP_DIR}/rollout.pkl\"\npython -m meshgraphnets.run_model --model=cloth --mode=eval --checkpoint_dir=${CHK_DIR} --dataset_dir=${DATA_DIR} --rollout_path=${ROLLOUT_PATH} --num_rollouts=1\n\n# Plot the rollout trajectory\npython -m meshgraphnets.plot_cloth --rollout_path=${ROLLOUT_PATH}\n\n# Clean up.\nrm -r ${TMP_DIR}\necho \"Test run complete.\"\n"
  },
  {
    "path": "meshgraphnets/run_model.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Runs the learner/evaluator.\"\"\"\n\nimport pickle\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport numpy as np\nimport tensorflow.compat.v1 as tf\nfrom meshgraphnets import cfd_eval\nfrom meshgraphnets import cfd_model\nfrom meshgraphnets import cloth_eval\nfrom meshgraphnets import cloth_model\nfrom meshgraphnets import core_model\nfrom meshgraphnets import dataset\n\n\nFLAGS = flags.FLAGS\nflags.DEFINE_enum('mode', 'train', ['train', 'eval'],\n                  'Train model, or run evaluation.')\nflags.DEFINE_enum('model', None, ['cfd', 'cloth'],\n                  'Select model to run.')\nflags.DEFINE_string('checkpoint_dir', None, 'Directory to save checkpoint')\nflags.DEFINE_string('dataset_dir', None, 'Directory to load dataset from.')\nflags.DEFINE_string('rollout_path', None,\n                    'Pickle file to save eval trajectories')\nflags.DEFINE_enum('rollout_split', 'valid', ['train', 'test', 'valid'],\n                  'Dataset split to use for rollouts.')\nflags.DEFINE_integer('num_rollouts', 10, 'No. of rollout trajectories')\nflags.DEFINE_integer('num_training_steps', int(10e6), 'No. of training steps')\n\nPARAMETERS = {\n    'cfd': dict(noise=0.02, gamma=1.0, field='velocity', history=False,\n                size=2, batch=2, model=cfd_model, evaluator=cfd_eval),\n    'cloth': dict(noise=0.003, gamma=0.1, field='world_pos', history=True,\n                  size=3, batch=1, model=cloth_model, evaluator=cloth_eval)\n}\n\n\ndef learner(model, params):\n  \"\"\"Run a learner job.\"\"\"\n  ds = dataset.load_dataset(FLAGS.dataset_dir, 'train')\n  ds = dataset.add_targets(ds, [params['field']], add_history=params['history'])\n  ds = dataset.split_and_preprocess(ds, noise_field=params['field'],\n                                    noise_scale=params['noise'],\n                                    noise_gamma=params['gamma'])\n  inputs = tf.data.make_one_shot_iterator(ds).get_next()\n\n  loss_op = model.loss(inputs)\n  global_step = tf.train.create_global_step()\n  lr = tf.train.exponential_decay(learning_rate=1e-4,\n                                  global_step=global_step,\n                                  decay_steps=int(5e6),\n                                  decay_rate=0.1) + 1e-6\n  optimizer = tf.train.AdamOptimizer(learning_rate=lr)\n  train_op = optimizer.minimize(loss_op, global_step=global_step)\n  # Don't train for the first few steps, just accumulate normalization stats\n  train_op = tf.cond(tf.less(global_step, 1000),\n                     lambda: tf.group(tf.assign_add(global_step, 1)),\n                     lambda: tf.group(train_op))\n\n  with tf.train.MonitoredTrainingSession(\n      hooks=[tf.train.StopAtStepHook(last_step=FLAGS.num_training_steps)],\n      checkpoint_dir=FLAGS.checkpoint_dir,\n      save_checkpoint_secs=600) as sess:\n\n    while not sess.should_stop():\n      _, step, loss = sess.run([train_op, global_step, loss_op])\n      if step % 1000 == 0:\n        logging.info('Step %d: Loss %g', step, loss)\n    logging.info('Training complete.')\n\n\ndef evaluator(model, params):\n  \"\"\"Run a model rollout trajectory.\"\"\"\n  ds = dataset.load_dataset(FLAGS.dataset_dir, FLAGS.rollout_split)\n  ds = dataset.add_targets(ds, [params['field']], add_history=params['history'])\n  inputs = tf.data.make_one_shot_iterator(ds).get_next()\n  scalar_op, traj_ops = params['evaluator'].evaluate(model, inputs)\n  tf.train.create_global_step()\n\n  with tf.train.MonitoredTrainingSession(\n      checkpoint_dir=FLAGS.checkpoint_dir,\n      save_checkpoint_secs=None,\n      save_checkpoint_steps=None) as sess:\n    trajectories = []\n    scalars = []\n    for traj_idx in range(FLAGS.num_rollouts):\n      logging.info('Rollout trajectory %d', traj_idx)\n      scalar_data, traj_data = sess.run([scalar_op, traj_ops])\n      trajectories.append(traj_data)\n      scalars.append(scalar_data)\n    for key in scalars[0]:\n      logging.info('%s: %g', key, np.mean([x[key] for x in scalars]))\n    with open(FLAGS.rollout_path, 'wb') as fp:\n      pickle.dump(trajectories, fp)\n\n\ndef main(argv):\n  del argv\n  tf.enable_resource_variables()\n  tf.disable_eager_execution()\n  params = PARAMETERS[FLAGS.model]\n  learned_model = core_model.EncodeProcessDecode(\n      output_size=params['size'],\n      latent_size=128,\n      num_layers=2,\n      message_passing_steps=15)\n  model = params['model'].Model(learned_model)\n  if FLAGS.mode == 'train':\n    learner(model, params)\n  elif FLAGS.mode == 'eval':\n    evaluator(model, params)\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "mmv/README.md",
    "content": "# Self-supervised Multimodal Versatile Networks\n\nThis is the code for the models in MMV - https://arxiv.org/abs/2006.16228.\n\n<img src=\"./imgs/mmv_fig.png\" width=\"50%\">\n\nWe also make available the code for linear evaluation of a pre-trained model\nin UCF101 and the JAX checkpoints for our best models.\n\nWe use different parameters for video compression in UCF101 than the ones\nused in `tensorflow_datasets`. We provide the code to download and\npreprocess the dataset. The eval_ucf101.py script reproduces the results we\nreport in Table 2 of the paper, using the checkpoints provided below.\n\nVisual Backbone  | Training Dataset | Results on Linear UCF101\n------- | -------- | --------\nS3D-G | AudioSet + HowTo | 89.6\nResnet TSM-50 | AudioSet + HowTo | 91.5\nResnet TSM-50 (x2) | AudioSet + HowTo | 91.8\n\n\n## Setup\n\nTo set up a Python virtual environment with the required dependencies, run:\n\n```shell\npython3 -m venv mmv_env\nsource mmv_env/bin/activate\npip install --upgrade pip setuptools wheel\npip install -r mmv/requirements.txt --use-feature=2020-resolver\n```\n\n\n### Linear evaluation\n\nThe linear evaluation on UCF101 can be run using:\n\n```shell\npython -m mmv.eval_ucf101 \\\n  --checkpoint_path=</path/to/the/checkpointing/folder> \\\n  --dataset_folder=</path/to/dataset/folder>\n```\n\n## Checkpoints\n\nWe provide three checkpoints containing the best pre-trained weights for each\nof the visual backbones we use in the paper, i. e., S3D-G, Resnet-50 TSM,\nand Resnet-50 TSM x 2.\n\n- [S3D-G](https://storage.googleapis.com/deepmind-research-mmv/mmv_s3d.pkl)\n- [Resnet-50 TSM](https://storage.googleapis.com/deepmind-research-mmv/mmv_tsm_resnet_x1.pkl)\n- [Resnet-50 TSMx2](https://storage.googleapis.com/deepmind-research-mmv/mmv_tsm_resnet_x2.pkl)\n\n## References\n\n### Citing our work\n\nIf you use that code for your research, please consider citing our paper:\n\n```bibtex\n@inproceedings{alayrac2020self,\n  title={{S}elf-{S}upervised {M}ulti{M}odal {V}ersatile {N}etworks},\n  author={Alayrac, Jean-Baptiste and Recasens, Adri{\\`a} and Schneider, Rosalia and Arandjelovi{\\'c}, Relja and Ramapuram, Jason and De Fauw, Jeffrey and Smaira, Lucas and Dieleman, Sander and Zisserman, Andrew},\n  booktitle={NeurIPS},\n  year={2020}\n}\n```\n\n### Models in TF\n\nYou may also be interested in using our TF-Hub release models available at:\n\n- [S3D-G](https://tfhub.dev/deepmind/mmv/s3d/1)\n- [Resnet-50 TSM](https://tfhub.dev/deepmind/mmv/tsm-resnet50/1)\n- [Resnet-50 TSMx2](https://tfhub.dev/deepmind/mmv/tsm-resnet50x2/1)\n\n## License\n\nWhile the code is licensed under the Apache 2.0 License, the checkpoints weights\nare made available for non-commercial use only under the terms of the\nCreative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)\nlicense. You can find details at:\nhttps://creativecommons.org/licenses/by-nc/4.0/legalcode.\n"
  },
  {
    "path": "mmv/config.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Configuration parameters for MMV.\"\"\"\n\n\ndef get_model_config(ckpt_path):\n  \"\"\"Returns the model configuration to be used with each checkpoint.\"\"\"\n\n  config = {\n      'audio_backbone': 'resnet50',\n      'audio_model_kwargs': {\n          'bn_config': {\n              'create_offset': True,\n              'create_scale': True,\n              'decay_rate': 0.9,\n              'eps': 1.0e-5\n          }\n      },\n      'bn_config_proj': {\n          'create_offset': True,\n          'create_scale': True,\n          'decay_rate': 0.9,\n          'eps': 1.0e-5\n      },\n      'config_audio_text': {\n          'embedding_dim': 512,\n          'toaud_bn_after_proj': False,\n          'toaud_head_mode': 'linear',\n          'totxt_bn_after_proj': False,\n          'totxt_head_mode': 'linear'\n      },\n      'config_video_audio': {\n          'embedding_dim': 512,\n          'toaud_bn_after_proj': True,\n          'toaud_head_mode': 'mlp@512',\n          'tovid_bn_after_proj': False,\n          'tovid_head_mode': 'linear'\n      },\n      'config_video_text': {\n          'embedding_dim': 256,\n          'totxt_bn_after_proj': True,\n          'totxt_head_mode': 'linear',\n          'tovid_bn_after_proj': False,\n          'tovid_head_mode': 'linear'\n      },\n      'mm_embedding_graph': 'fac_relu',\n      'name': 'text_audio_video',\n      'sentence_dim': 2048,\n      'use_xreplica_bn': True,\n      'vision_model_kwargs': {\n          'bn_config': {\n              'create_offset': True,\n              'create_scale': True,\n              'decay_rate': 0.9,\n              'eps': 1.0e-5\n          },\n          'n_frames': 32,\n          'width_mult': 1,\n      },\n  }\n\n  if 's3d' in ckpt_path:\n    config['visual_backbone'] = 's3d'\n\n  if 'tsm_resnet_x1' in ckpt_path:\n    config['visual_backbone'] = 'resnet50tsm'\n\n  if 'tsm_resnet_x2' in ckpt_path:\n    config['visual_backbone'] = 'resnet50tsm'\n    config['vision_model_kwargs']['width_mult'] = 2\n\n  return config\n"
  },
  {
    "path": "mmv/eval_ucf101.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"UCF101 linear evaluation.\"\"\"\n\nimport functools\nfrom typing import Any, Dict, Optional\n\nfrom absl import app\nfrom absl import flags\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\nimport sklearn\nfrom sklearn import preprocessing\nimport sklearn.linear_model\nimport sklearn.svm\nimport tensorflow as tf\nimport tensorflow_datasets as tfds\n\nfrom mmv import config\nfrom mmv.models import mm_embeddings\nfrom mmv.utils import checkpoint\nfrom mmv.utils import ucf101_dataset\n\n\nflags.DEFINE_string('checkpoint_path', '~/tmp/mmv_s3d.pkl',\n                    'The directory to load pre-trained weights from.')\nflags.DEFINE_string('dataset_folder', '/tmp/ucf101',\n                    'The directory with the ucf101 dataset.')\n\nflags.DEFINE_integer('eval_batch_size', 1,\n                     'The batch size for evaluation.')\nflags.DEFINE_integer('train_batch_size', 16,\n                     'The batch size for training.')\nflags.DEFINE_integer('num_train_epochs', 10,\n                     'How many epochs to collect features during training.')\nflags.DEFINE_integer('num_test_windows', 10,\n                     'How many windows to average on during test.')\nflags.DEFINE_integer('min_resize', 224,\n                     'Min value to resize images to during preprocessing.')\nflags.DEFINE_integer('crop_size', 224,\n                     'Value to resize images to during preprocessing.')\nflags.DEFINE_integer('num_frames', 32,\n                     'Number of video frames.')\nflags.DEFINE_integer('stride', 2,\n                     'Stride for video frames.')\nflags.DEFINE_integer('ucf101_split', 1,\n                     'Which split of ucf101 to use.')\n\n\nFLAGS = flags.FLAGS\n\n\ndef get_sampling_offset(sequence: tf.Tensor,\n                        num_steps: Optional[int],\n                        is_training: bool,\n                        stride: int = 1,\n                        seed: Optional[int] = None) -> tf.Tensor:\n  \"\"\"Calculates the initial offset for a sequence where all steps will fit.\n\n  Args:\n    sequence: any tensor where the first dimension is timesteps.\n    num_steps: The number of timesteps we will output. If None,\n      deterministically start at the first frame.\n    is_training: A boolean indicates whether the graph is for training or not.\n      If False, the starting frame always the first frame.\n    stride: distance to sample between timesteps.\n    seed: a deterministic seed to use when sampling.\n  Returns:\n    The first index to begin sampling from. A best effort is made to provide a\n    starting index such that all requested steps fit within the sequence (i.e.\n    offset + 1 + (num_steps - 1) * stride < len(sequence)). If this is not\n    satisfied, the starting index is chosen randomly from the full sequence.\n  \"\"\"\n  if num_steps is None or not is_training:\n    return tf.constant(0)\n  sequence_length = tf.shape(sequence)[0]\n  max_offset = tf.cond(\n      tf.greater(sequence_length, (num_steps - 1) * stride),\n      lambda: sequence_length - (num_steps - 1) * stride,\n      lambda: sequence_length)\n  offset = tf.random.uniform(\n      (),\n      maxval=tf.cast(max_offset, tf.int32),\n      dtype=tf.int32,\n      seed=seed)\n  return offset\n\n\ndef sample_or_pad_sequence_indices(sequence: tf.Tensor,\n                                   num_steps: Optional[int],\n                                   is_training: bool,\n                                   repeat_sequence: bool = True,\n                                   stride: int = 1,\n                                   offset: Optional[int] = None) -> tf.Tensor:\n  \"\"\"Returns indices to take for sampling or padding a sequence to fixed size.\n\n  Samples num_steps from the sequence. If the sequence is shorter than\n  num_steps, the sequence loops. If the sequence is longer than num_steps and\n  is_training is True, then we seek to a random offset before sampling. If\n  offset is provided, we use that deterministic offset.\n\n  This method is appropriate for sampling from a tensor where you want every\n  timestep between a start and end time. See sample_stacked_sequence_indices for\n  more flexibility.\n\n  Args:\n    sequence: any tensor where the first dimension is timesteps.\n    num_steps: how many steps (e.g. frames) to take. If None, all steps from\n      start to end are considered and `is_training` has no effect.\n    is_training: A boolean indicates whether the graph is for training or not.\n      If False, the starting frame is deterministic.\n    repeat_sequence: A boolean indicates whether the sequence will repeat to\n      have enough steps for sampling. If False, a runtime error is thrown if\n      num_steps * stride is longer than sequence length.\n    stride: distance to sample between timesteps.\n    offset: a deterministic offset to use regardless of the is_training value.\n\n  Returns:\n    Indices to gather from the sequence Tensor to get a fixed size sequence.\n  \"\"\"\n  sequence_length = tf.shape(sequence)[0]\n  sel_idx = tf.range(sequence_length)\n\n  if num_steps:\n    if offset is None:\n      offset = get_sampling_offset(sequence, num_steps, is_training, stride)\n\n    if repeat_sequence:\n      # Repeats sequence until num_steps are available in total.\n      num_repeats = tf.cast(\n          tf.math.ceil(\n              tf.math.divide(\n                  tf.cast(num_steps * stride + offset, tf.float32),\n                  tf.cast(sequence_length, tf.float32)\n                  )), tf.int32)\n      sel_idx = tf.tile(sel_idx, [num_repeats])\n    steps = tf.range(offset, offset + num_steps * stride, stride)\n  else:\n    steps = tf.range(0, sequence_length, stride)\n  return tf.gather(sel_idx, steps)\n\n\ndef random_sample_sequence(sequence: tf.Tensor,\n                           num_steps: int,\n                           stride: int = 1) -> tf.Tensor:\n  \"\"\"Randomly sample a segment of size num_steps from a given sequence.\"\"\"\n\n  indices = sample_or_pad_sequence_indices(\n      sequence=sequence,\n      num_steps=num_steps,\n      is_training=True,  # Random sample.\n      repeat_sequence=True,  # Will repeat the sequence if request more.\n      stride=stride,\n      offset=None)\n  indices.set_shape((num_steps,))\n  output = tf.gather(sequence, indices)\n  return output\n\n\ndef sample_linspace_sequence(sequence: tf.Tensor,\n                             num_windows: int,\n                             num_steps: int,\n                             stride: int = 1) -> tf.Tensor:\n  \"\"\"Samples num_windows segments from sequence with linearly spaced offsets.\n\n  The samples are concatenated in a single Tensor in order to have the same\n  format structure per timestep (e.g. a single frame). If num_steps * stride is\n  bigger than the number of timesteps, the sequence is repeated. This function\n  can be used in evaluation in order to extract enough segments in order to span\n  the entire sequence.\n\n  Args:\n    sequence: Any tensor where the first dimension is timesteps.\n    num_windows: Number of windows retrieved from the sequence.\n    num_steps: Number of steps (e.g. frames) to take.\n    stride: Distance to sample between timesteps.\n\n  Returns:\n    A single Tensor with first dimension num_windows * num_steps. The Tensor\n    contains the concatenated list of num_windows tensors which offsets have\n    been linearly spaced from input.\n  \"\"\"\n  sequence_length = tf.shape(sequence)[0]\n  max_offset = tf.maximum(0, sequence_length - num_steps * stride)\n  offsets = tf.linspace(0.0, tf.cast(max_offset, tf.float32), num_windows)\n  offsets = tf.cast(offsets, tf.int32)\n\n  all_indices = []\n  for i in range(num_windows):\n    all_indices.append(\n        sample_or_pad_sequence_indices(\n            sequence=sequence,\n            num_steps=num_steps,\n            is_training=False,\n            repeat_sequence=True,  # Will repeat the sequence if request more.\n            stride=stride,\n            offset=offsets[i]))\n\n  indices = tf.concat(all_indices, axis=0)\n  indices.set_shape((num_windows * num_steps,))\n  output = tf.gather(sequence, indices)\n\n  return output\n\n\ndef resize_smallest(frames: tf.Tensor, min_resize: int) -> tf.Tensor:\n  \"\"\"Resizes frames so that min(height, width) is equal to min_resize.\n\n  This function will not do anything if the min(height, width) is already equal\n  to min_resize. This allows to save compute time.\n\n  Args:\n    frames: A Tensor of dimension [timesteps, input_h, input_w, channels].\n    min_resize: Minimum size of the final image dimensions.\n  Returns:\n    A Tensor of shape [timesteps, output_h, output_w, channels] of type\n      frames.dtype where min(output_h, output_w) = min_resize.\n  \"\"\"\n  shape = tf.shape(frames)\n  input_h = shape[1]\n  input_w = shape[2]\n\n  output_h = tf.maximum(min_resize, (input_h * min_resize) // input_w)\n  output_w = tf.maximum(min_resize, (input_w * min_resize) // input_h)\n\n  def resize_fn():\n    frames_resized = tf.image.resize(frames, (output_h, output_w))\n    return tf.cast(frames_resized, frames.dtype)\n\n  should_resize = tf.math.logical_or(tf.not_equal(input_w, output_w),\n                                     tf.not_equal(input_h, output_h))\n  frames = tf.cond(should_resize, resize_fn, lambda: frames)\n\n  return frames\n\n\ndef process_samples(features_dict, num_frames=32, stride=1, is_training=True,\n                    min_resize=224, crop_size=224, num_windows=1):\n  \"\"\"Process video frames.\"\"\"\n\n  video = features_dict['video']\n\n  if is_training:\n    assert num_windows == 1\n    video = random_sample_sequence(video, num_frames, stride)\n    is_flipped = tf.random.uniform((), minval=0, maxval=2, dtype=tf.int32)\n    video = tf.cond(tf.equal(is_flipped, 1),\n                    true_fn=lambda: tf.image.flip_left_right(video),\n                    false_fn=lambda: video)\n  else:\n    video = sample_linspace_sequence(video, num_windows, num_frames, stride)\n\n  # Resize smallest side.\n  video = resize_smallest(video, min_resize)\n\n  if is_training:\n    # Random crop.\n    video = tf.image.random_crop(video, [num_frames, crop_size, crop_size, 3])\n  else:\n    # Central crop.\n    video = tf.image.resize_with_crop_or_pad(video, crop_size, crop_size)\n\n  video = tf.cast(video, tf.float32)\n  video /= 255.0  # Set between [0, 1].\n\n  features_dict['video'] = video\n  return features_dict\n\n\ndef space_to_depth_batch(features_dict):\n  images = features_dict['video']\n  _, l, h, w, c = images.shape\n  images = tf.reshape(images, [-1, l // 2, 2, h // 2, 2, w // 2, 2, c])\n  images = tf.transpose(images, [0, 1, 3, 5, 2, 4, 6, 7])\n  images = tf.reshape(images, [-1, l // 2, h // 2, w // 2, 8 * c])\n  features_dict['video'] = images\n  return features_dict\n\n\ndef reshape_windows(features_dict, num_frames):\n  x = features_dict['video']\n  x = tf.reshape(x, (-1, num_frames, x.shape[2], x.shape[3], x.shape[4]))\n  features_dict['video'] = x\n  return features_dict\n\n\ndef compute_accuracy_metrics(pred, gt, prefix=''):\n  order_pred = np.argsort(pred, axis=1)\n  assert len(gt.shape) == len(order_pred.shape) == 2\n  top1_pred = order_pred[:, -1:]\n  top5_pred = order_pred[:, -5:]\n  top1_acc = np.mean(top1_pred == gt)\n  top5_acc = np.mean(np.max(top5_pred == gt, 1))\n  return {prefix + 'top1': top1_acc,\n          prefix + 'top5': top5_acc}\n\n\ndef forward_fn(images: jnp.ndarray,\n               audio_spectrogram: jnp.ndarray,\n               word_ids: jnp.ndarray,\n               is_training: bool,\n               model_config: Dict[str, Any]):\n  \"\"\"Forward pass of the model.\"\"\"\n\n  # This should contain the pre-trained weights. We set it to zero because it\n  # will be loaded from the checkpoint.\n  language_model_vocab_size = 65536\n  word_embedding_dim = 300\n  dummy_embedding_matrix = jnp.zeros(shape=(language_model_vocab_size,\n                                            word_embedding_dim))\n\n  module = mm_embeddings.AudioTextVideoEmbedding(\n      **model_config,\n      word_embedding_matrix=dummy_embedding_matrix)\n  return module(images=images,\n                audio_spectrogram=audio_spectrogram,\n                word_ids=word_ids,\n                is_training=is_training)['vid_repr']\n\n\ndef main(argv):\n  del argv\n\n  sklearn_reg = 0.001\n  model_config = config.get_model_config(FLAGS.checkpoint_path)\n\n  forward = hk.without_apply_rng(hk.transform_with_state(forward_fn))\n  forward_apply = jax.jit(functools.partial(forward.apply,\n                                            is_training=False,\n                                            model_config=model_config))\n\n  # Get the UCF101 config.\n  dset_config = tfds.video.ucf101.Ucf101.BUILDER_CONFIGS[FLAGS.ucf101_split]\n\n  builder = ucf101_dataset.ModUcf101(\n      data_dir=FLAGS.dataset_folder,\n      config=dset_config)\n  # Create the tfrecord files (no-op if already exists)\n  dl_config = tfds.download.DownloadConfig(verify_ssl=False)\n  builder.download_and_prepare(download_config=dl_config)\n\n  # Generate the training dataset.\n  train_ds = builder.as_dataset(split='train', shuffle_files=False)\n  train_ds = train_ds.map(lambda x: process_samples(  # pylint: disable=g-long-lambda\n      x, num_frames=FLAGS.num_frames, stride=FLAGS.stride, is_training=True,\n      min_resize=FLAGS.min_resize, crop_size=FLAGS.crop_size))\n  train_ds = train_ds.batch(batch_size=FLAGS.train_batch_size)\n  if model_config['visual_backbone'] == 's3d':\n    train_ds = train_ds.map(space_to_depth_batch)\n  train_ds = train_ds.repeat(FLAGS.num_train_epochs)\n\n  # Generate the test dataset.\n  test_ds = builder.as_dataset(split='test', shuffle_files=False)\n  test_ds = test_ds.map(lambda x: process_samples(  # pylint: disable=g-long-lambda\n      x, num_frames=FLAGS.num_frames, stride=FLAGS.stride, is_training=False,\n      min_resize=FLAGS.min_resize, crop_size=FLAGS.crop_size,\n      num_windows=FLAGS.num_test_windows))\n  test_ds = test_ds.batch(batch_size=FLAGS.eval_batch_size)\n  test_ds = test_ds.map(lambda x: reshape_windows(  # pylint: disable=g-long-lambda\n      x, num_frames=FLAGS.num_frames))\n\n  if model_config['visual_backbone'] == 's3d':\n    test_ds = test_ds.map(space_to_depth_batch)\n  test_ds = test_ds.repeat(1)\n\n  pretrained_weights = checkpoint.load_checkpoint(FLAGS.checkpoint_path)\n  params = pretrained_weights['params']\n  state = pretrained_weights['state']\n\n  # Collect training samples.\n  audio_frames = 96\n  mel_filters = 40\n  num_tokens = 16\n  dummy_audio = jnp.zeros(\n      shape=(FLAGS.train_batch_size, audio_frames, mel_filters, 1))\n  dummy_word_ids = jnp.zeros(\n      shape=(FLAGS.train_batch_size, num_tokens), dtype=jnp.int32)\n\n  train_features = []\n  train_labels = []\n  print('Computing features on train')\n  training_examples = iter(tfds.as_numpy(train_ds))\n  for train_ex in training_examples:\n    vid_representation, _ = forward_apply(params=params,\n                                          state=state,\n                                          images=train_ex['video'],\n                                          audio_spectrogram=dummy_audio,\n                                          word_ids=dummy_word_ids)\n    train_labels.append(train_ex['label'])\n    train_features.append(vid_representation)\n    if len(train_labels) % 50 == 0:\n      print(f'Processed {len(train_labels)} examples.')\n\n  train_labels = np.concatenate(train_labels, axis=0)\n  train_features = np.concatenate(train_features, axis=0)\n  print(f'Finish collecting train features of shape {train_features.shape}')\n\n  # Collect test samples.\n  dummy_audio = jnp.zeros(\n      shape=(FLAGS.eval_batch_size, audio_frames, mel_filters, 1))\n  dummy_word_ids = jnp.zeros(\n      shape=(FLAGS.eval_batch_size, num_tokens), dtype=jnp.int32)\n\n  test_features = []\n  test_labels = []\n  print('Computing features on test')\n  test_examples = iter(tfds.as_numpy(test_ds))\n  for test_ex in test_examples:\n    vid_representation_test, _ = forward_apply(params=params,\n                                               state=state,\n                                               images=test_ex['video'],\n                                               audio_spectrogram=dummy_audio,\n                                               word_ids=dummy_word_ids)\n    test_labels.append(test_ex['label'])\n    test_features.append(vid_representation_test)\n    if len(test_labels) % 50 == 0:\n      print(f'Processed {len(test_labels)} examples.')\n\n  test_features = np.concatenate(test_features, axis=0)\n  test_labels = np.concatenate(test_labels, axis=0)\n  print(f'Finish collecting test features of shape {test_features.shape}')\n\n  # Train classifier\n  print('Training linear classifier!')\n  classifier = sklearn.svm.LinearSVC(C=sklearn_reg)\n  scaler = preprocessing.StandardScaler().fit(train_features)\n  train_features = scaler.transform(train_features)\n  classifier.fit(train_features, train_labels.ravel())\n  print('Training done !')\n\n  # Evaluation.\n  test_features = scaler.transform(test_features)\n  print('Running inference on train')\n  pred_train = classifier.decision_function(train_features)\n  print('Running inference on test')\n  pred_test = classifier.decision_function(test_features)\n  if FLAGS.num_test_windows > 1:\n    pred_test = np.reshape(\n        pred_test, (test_labels.shape[0], -1, pred_test.shape[1]))\n    pred_test = pred_test.mean(axis=1)\n\n  # Compute accuracies.\n  metrics = compute_accuracy_metrics(pred_train, train_labels[:, None],\n                                     prefix='train_')\n  metrics.update(\n      compute_accuracy_metrics(pred_test, test_labels[:, None], prefix='test_'))\n  print(metrics)\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "mmv/models/mm_embeddings.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Model for text-video-audio embeddings.\"\"\"\n\nfrom typing import Any, Dict, Optional\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\n\nfrom mmv.models import normalization\nfrom mmv.models import resnet\nfrom mmv.models import s3d\nfrom mmv.models import tsm_resnet\n\n\n_DEFAULT_CFG_AUDTXT = {\n    \"totxt_head_mode\": \"linear\",\n    \"toaud_head_mode\": \"linear\",\n    \"toaud_bn_after_proj\": False,\n    \"totxt_bn_after_proj\": False,\n    \"embedding_dim\": 512}\n\n_DEFAULT_CFG_VIDAUD = {\n    \"tovid_head_mode\": \"linear\",\n    \"toaud_head_mode\": \"mlp@512\",\n    \"tovid_bn_after_proj\": False,\n    \"toaud_bn_after_proj\": True,\n    \"embedding_dim\": 512}\n\n_DEFAULT_CFG_VIDTXT = {\n    \"tovid_head_mode\": \"linear\",\n    \"totxt_head_mode\": \"mlp@512\",\n    \"tovid_bn_after_proj\": False,\n    \"totxt_bn_after_proj\": True,\n    \"embedding_dim\": 512}\n\n_DEFAULT_CFG_BN = {\"decay_rate\": 0.9, \"eps\": 1e-5,\n                   \"create_scale\": True, \"create_offset\": True}\n\n\ndef _setkey_if_not_exists(d, key, value):\n  if key not in d:\n    d[key] = value\n\n\nclass AudioTextVideoEmbedding(hk.Module):\n  \"\"\"Module to fuse audio, text and video for joint embedding learning.\"\"\"\n\n  def __init__(\n      self,\n      # Language parameters.\n      word_embedding_matrix,\n      sentence_dim=2048,\n      # Audio parameters.\n      audio_backbone=\"resnet18\",\n      audio_model_kwargs=None,\n      # Vision parameters.\n      visual_backbone=\"s3d\",\n      vision_model_kwargs=None,\n      # Common parameters.\n      mm_embedding_graph=\"fac_relu\",\n      use_xreplica_bn=True,\n      bn_config_proj=None,\n      config_video_text=None,\n      config_video_audio=None,\n      config_audio_text=None,\n      use_audio_text=False,\n      name=\"audio_text_video_model\"):\n    \"\"\"Initialize the AudioTextVideoEmbedding class.\n\n    Args:\n      word_embedding_matrix: 2d matrix [vocab_size, embed_size] to embed words.\n      sentence_dim: The dimension of the sentence representation.\n      audio_backbone: Backbone for audio.\n      audio_model_kwargs: Other specific parameters to pass to the audio\n        module.\n      visual_backbone: The video backbone.\n      vision_model_kwargs: Other specific parameters to pass to the vision\n        module.\n      mm_embedding_graph: Embedding graph merging strategy.\n        Can be `shared`, `disjoint` or `fac` (fac can be followed by an\n        activation function name e.g. `fac_relu`).\n      use_xreplica_bn: Whether or not to use the cross replica batch norm.\n      bn_config_proj: BN config of the projection heads.\n      config_video_text: Config for the video and the text branches.\n      config_video_audio: Config for the video and the audio branches.\n      config_audio_text: Config for the audio and the text branches.\n      use_audio_text: Whether or not the audio text branch is used during\n        training.\n      name: graph name.\n    \"\"\"\n    super(AudioTextVideoEmbedding, self).__init__(name=name)\n    # Audio parameters.\n    self._audio_backbone = audio_backbone\n    self._audio_model_kwargs = audio_model_kwargs\n\n    # Language parameters.\n    self._sentence_dim = sentence_dim\n    self._word_embedding_matrix = word_embedding_matrix\n\n    # Vision parameters.\n    self._visual_backbone = visual_backbone\n    self._vision_model_kwargs = vision_model_kwargs\n\n    # Joint parameters.\n    self._use_xreplica_bn = use_xreplica_bn\n    if self._use_xreplica_bn:\n      self._normalizer_name = \"cross_replica_batch_norm\"\n    else:\n      self._normalizer_name = \"batch_norm\"\n\n    # Projection head parameters.\n    if config_video_text is None:\n      config_video_text = _DEFAULT_CFG_VIDTXT\n    for k, v in _DEFAULT_CFG_VIDTXT.items():\n      _setkey_if_not_exists(config_video_text, k, v)\n    self._cfg_vid_txt = config_video_text\n\n    if config_video_audio is None:\n      config_video_audio = _DEFAULT_CFG_VIDAUD\n    for k, v in _DEFAULT_CFG_VIDAUD.items():\n      _setkey_if_not_exists(config_video_audio, k, v)\n    self._cfg_vid_aud = config_video_audio\n\n    if config_audio_text is None:\n      config_audio_text = _DEFAULT_CFG_AUDTXT\n    for k, v in _DEFAULT_CFG_AUDTXT.items():\n      _setkey_if_not_exists(config_audio_text, k, v)\n    self._cfg_aud_txt = config_audio_text\n    self._use_audio_text = use_audio_text\n\n    self._mm_embedding_graph = mm_embedding_graph\n    self._use_separate_heads = (\n        mm_embedding_graph == \"disjoint\" or\n        mm_embedding_graph.startswith(\"fac\"))\n\n    self._bn_config_proj = bn_config_proj or _DEFAULT_CFG_BN\n\n  def _get_pair_embedding_heads(self,\n                                embedding_dim_1, embedding_dim_2,\n                                mode1, mode2,\n                                use_bn_out1, use_bn_out2,\n                                name1, name2):\n    embd1_module = EmbeddingModule(\n        embedding_dim_1,\n        mode=mode1,\n        use_bn_out=use_bn_out1,\n        bn_config=self._bn_config_proj,\n        use_xreplica_bn=self._use_xreplica_bn,\n        name=name1)\n    if self._use_separate_heads:\n      embd2_module = EmbeddingModule(\n          embedding_dim_2,\n          mode=mode2,\n          use_bn_out=use_bn_out2,\n          use_xreplica_bn=self._use_xreplica_bn,\n          bn_config=self._bn_config_proj,\n          name=name2)\n    else:\n      assert embedding_dim_1 == embedding_dim_2, (\n          \"Using shared heads but inconsistent embedding dims where provided.\")\n      assert mode1 == mode2, (\n          \"Using shared heads but inconsistent modes where provided.\")\n      assert use_bn_out1 == use_bn_out2, (\n          \"Using shared heads but inconsistent bn conf where provided.\")\n      embd2_module = embd1_module\n    return embd1_module, embd2_module\n\n  def _activate_interaction(self, inputs, activation_fn, is_training,\n                            activation_module=None):\n    \"\"\"Activation function for the interaction modules.\"\"\"\n    if activation_fn == \"relu\":\n      inputs = jax.nn.relu(inputs)\n    elif activation_fn == \"bnrelu\":\n      if activation_module is None:\n        activation_module = normalization.get_normalize_fn(\n            normalizer_name=self._normalizer_name,\n            normalizer_kwargs=self._bn_config_proj)\n      inputs = activation_module(inputs, is_training=is_training)\n      inputs = jax.nn.relu(inputs)\n    else:\n      raise ValueError(f\"{activation_fn} not supported.\")\n    return inputs, activation_module\n\n  def __call__(self,\n               images,\n               audio_spectrogram,\n               word_ids,\n               is_training,\n               return_intermediate_audio=False):\n    \"\"\"Computes video, text and audio embeddings.\n\n    Args:\n      images: The videos tensor of shape [B1, T, H, W, 3] where B1 is the batch\n        size, T is the number of frames per clip, H the height, W the width\n        and 3 the rgb channels.\n      audio_spectrogram: The audio tensor of shape [B2, T', F] where B2 is the\n        batch size, T' is the number of temporal frames, F is the number of\n        frequency frames.\n      word_ids: If words_embeddings is set to None, it will use the word indices\n        input instead so that we can compute the word embeddings within the\n        model graph. The expected shape is [B3, N, D] where B3 is the batch size\n        and N the maximum number of words per sentence.\n      is_training: Whether or not to activate the graph in training mode.\n      return_intermediate_audio: Return audio intermediate representation.\n\n    Returns:\n      if return_intermediate_audio = True\n        audio_representation: the 4-dim audio representation taken before\n        averaging over spatial dims in the Resnet.\n      else\n        visual_embd: a dict containing the video embeddings in audio and text\n          of shape [B1, d_embd].\n        audio_embd: a dict containing the audio embeddings in video and text\n          of shape [B2, d_embd].\n        txt_embd: a dict containing the text embeddings in video and audio\n          of shape[B3, d_embd].\n        visual_representation: the video rep of shape [B1, d_visual].\n        audio_representation: the audio rep of  shape [B2, d_audio].\n    \"\"\"\n    # Computes the visual representation.\n    video_cnn = VisualModule(backbone=self._visual_backbone,\n                             use_xreplica_bn=self._use_xreplica_bn,\n                             model_kwargs=self._vision_model_kwargs)\n    visual_representation = video_cnn(images, is_training=is_training)\n\n    # Projection heads: Video -> Text and Video -> Audio.\n    vid2txt_embd_module, vid2aud_embd_module = self._get_pair_embedding_heads(\n        embedding_dim_1=self._cfg_vid_txt[\"embedding_dim\"],\n        embedding_dim_2=self._cfg_vid_aud[\"embedding_dim\"],\n        mode1=self._cfg_vid_txt[\"totxt_head_mode\"],\n        mode2=self._cfg_vid_aud[\"toaud_head_mode\"],\n        use_bn_out1=self._cfg_vid_txt[\"totxt_bn_after_proj\"],\n        use_bn_out2=self._cfg_vid_aud[\"toaud_bn_after_proj\"],\n        name1=\"vis_embd\",\n        name2=\"vid2audio_embd\")\n\n    video_embd = {}\n    if self._mm_embedding_graph in [\"shared\", \"disjoint\"]:\n      video_embd[\"toaud\"] = vid2aud_embd_module(visual_representation,\n                                                is_training=is_training)\n      video_embd[\"totxt\"] = vid2txt_embd_module(visual_representation,\n                                                is_training=is_training)\n    elif self._mm_embedding_graph.startswith(\"fac\"):\n      # Activation function if specificed in the name, e.g. fac_relu.\n      activation_fn = None\n      if len(self._mm_embedding_graph.split(\"_\")) == 2:\n        activation_fn = self._mm_embedding_graph.split(\"_\")[1]\n\n      video_embd[\"toaud\"] = vid2aud_embd_module(visual_representation,\n                                                is_training=is_training)\n      fine_rep = video_embd[\"toaud\"]\n      # Eventually activate the fine grained representation.\n      if activation_fn:\n        fine_rep, activation_module = self._activate_interaction(\n            inputs=fine_rep, activation_fn=activation_fn,\n            is_training=is_training)\n\n      video_embd[\"totxt\"] = vid2txt_embd_module(fine_rep,\n                                                is_training=is_training)\n    else:\n      raise ValueError(\n          f\"{self._mm_embedding_graph} is not a valid MM embedding graph.\")\n\n    # Computes the audio representation.\n    audio_cnn = AudioModule(backbone=self._audio_backbone,\n                            use_xreplica_bn=self._use_xreplica_bn,\n                            model_kwargs=self._audio_model_kwargs)\n    if return_intermediate_audio:\n      return audio_cnn(audio_spectrogram,\n                       is_training=is_training,\n                       return_intermediate=True)\n\n    audio_representation = audio_cnn(audio_spectrogram, is_training=is_training)\n\n    # Projection heads: Audio -> Video and Audio -> Text.\n    aud2vid_embd_module, aud2txt_embd_module = self._get_pair_embedding_heads(\n        embedding_dim_1=self._cfg_vid_aud[\"embedding_dim\"],\n        embedding_dim_2=self._cfg_aud_txt[\"embedding_dim\"],\n        mode1=self._cfg_vid_aud[\"tovid_head_mode\"],\n        mode2=self._cfg_aud_txt[\"totxt_head_mode\"],\n        use_bn_out1=self._cfg_vid_aud[\"tovid_bn_after_proj\"],\n        use_bn_out2=self._cfg_aud_txt[\"totxt_bn_after_proj\"],\n        name1=\"audio_embd\",\n        name2=\"audio2txt_embd\")\n    audio_embd = {}\n\n    audio_embd[\"tovid\"] = aud2vid_embd_module(audio_representation,\n                                              is_training=is_training)\n\n    # Computes the projection to the text domain depending on the MM graph mode.\n    if (self._mm_embedding_graph.startswith(\"fac\") and\n        (self._use_audio_text or (not is_training))):\n      # In case the audio text branch is not used during training, we do that\n      # only at eval time (is_training=False) in order to not pollute the BN\n      # stats in vid2txt_embd_module with audio features during training.\n      fine_rep_audio = audio_embd[\"tovid\"]\n      if activation_fn:\n        fine_rep_audio, _ = self._activate_interaction(\n            inputs=fine_rep_audio, activation_fn=activation_fn,\n            is_training=is_training, activation_module=activation_module)\n      audio_embd[\"totxt\"] = vid2txt_embd_module(fine_rep_audio,\n                                                is_training=is_training)\n    else:\n      audio_embd[\"totxt\"] = aud2txt_embd_module(audio_representation,\n                                                is_training=is_training)\n\n    # Computes the text representation.\n    txt_representation = TextModule(\n        sentence_dim=self._sentence_dim,\n        word_embedding_matrix=self._word_embedding_matrix)(\n            word_ids, is_training=is_training)\n\n    # Projection heads: Text -> Video and Text -> Audio.\n    txt2vid_embd_module, txt2aud_embd_module = self._get_pair_embedding_heads(\n        embedding_dim_1=self._cfg_vid_txt[\"embedding_dim\"],\n        embedding_dim_2=self._cfg_aud_txt[\"embedding_dim\"],\n        mode1=self._cfg_vid_txt[\"tovid_head_mode\"],\n        mode2=self._cfg_aud_txt[\"toaud_head_mode\"],\n        use_bn_out1=self._cfg_vid_txt[\"tovid_bn_after_proj\"],\n        use_bn_out2=self._cfg_aud_txt[\"toaud_bn_after_proj\"],\n        name1=\"txt_embd\",\n        name2=\"txt2audio_embd\")\n    txt_embd = {}\n    txt_embd[\"tovid\"] = txt2vid_embd_module(txt_representation,\n                                            is_training=is_training)\n    txt_embd[\"toaud\"] = txt2aud_embd_module(txt_representation,\n                                            is_training=is_training)\n\n    return {\n        \"vid_embd\": video_embd,\n        \"aud_embd\": audio_embd,\n        \"txt_embd\": txt_embd,\n        \"vid_repr\": visual_representation,\n        \"aud_repr\": audio_representation,\n    }\n\n\nclass EmbeddingModule(hk.Module):\n  \"\"\"Final Embedding module.\"\"\"\n\n  def __init__(self,\n               embedding_dim: int,\n               mode: str = \"linear\",\n               use_bn_out: bool = False,\n               bn_config: Optional[Dict[str, Any]] = None,\n               use_xreplica_bn: bool = True,\n               name=\"embedding_module\"):\n    self._embedding_dim = embedding_dim\n    self._use_bn_out = use_bn_out\n    self._mode = mode\n    # Set default BN config.\n    bn_config = bn_config or _DEFAULT_CFG_BN\n    if use_xreplica_bn:\n      normalizer_name = \"cross_replica_batch_norm\"\n    else:\n      normalizer_name = \"batch_norm\"\n    self._batch_norm = normalization.get_normalize_fn(\n        normalizer_name=normalizer_name,\n        normalizer_kwargs=bn_config)\n\n    super(EmbeddingModule, self).__init__(name=name)\n\n  def __call__(self, input_feature, is_training):\n    if self._mode == \"linear\":\n      proj = hk.Linear(self._embedding_dim, name=\"final_projection\")\n      embedding = proj(input_feature)\n    elif self._mode.startswith(\"mlp\"):\n      if \"@\" not in self._mode:\n        raise ValueError(\n            (\"Please specify the inner dimensions of the MLP with `@` symbol\"\n             \"e.g. mlp@512 or mlp@512@256 for a 2 layer MLP.\"))\n      inner_dims = [int(dim) for dim in self._mode.split(\"@\")[1:]]\n      embedding = input_feature\n      for inner_dim in inner_dims:\n        embedding = hk.Linear(inner_dim, with_bias=True,\n                              name=\"final_projection_inner\")(embedding)\n        if not self._mode.startswith(\"mlp_nobn\"):\n          embedding = self._batch_norm(embedding, is_training=is_training)\n        embedding = jax.nn.relu(embedding)\n\n      # Final projection.\n      embedding = hk.Linear(self._embedding_dim, name=\"final_projection\",\n                            with_bias=not self._use_bn_out)(embedding)\n    else:\n      raise NotImplementedError\n\n    if self._use_bn_out:\n      embedding = self._batch_norm(embedding, is_training=is_training)\n    return embedding\n\n\nclass VisualModule(hk.Module):\n  \"\"\"The visual module selects which CNN backbone to connect to the graph.\"\"\"\n\n  def __init__(self,\n               use_xreplica_bn=True,\n               backbone=\"s3d\",\n               model_kwargs=None,\n               name=\"visual_module\"):\n    self._backbone = backbone\n    super(VisualModule, self).__init__(name=name)\n    if model_kwargs is None:\n      model_kwargs = {}\n    bn_config = model_kwargs.get(\"bn_config\", _DEFAULT_CFG_BN)\n    if use_xreplica_bn:\n      normalizer_name = \"cross_replica_batch_norm\"\n    else:\n      normalizer_name = \"batch_norm\"\n\n    normalize_fn = normalization.get_normalize_fn(\n        normalizer_name=normalizer_name,\n        normalizer_kwargs=bn_config)\n    if backbone == \"s3d\":\n      self._cnn = s3d.S3D(normalize_fn=normalize_fn)\n    elif backbone == \"resnet50tsm\":\n      width_mult = model_kwargs.get(\"width_mult\", 1)\n      self._cnn = tsm_resnet.TSMResNetV2(\n          normalize_fn=normalize_fn,\n          depth=50,\n          num_frames=model_kwargs[\"n_frames\"],\n          width_mult=width_mult)\n    else:\n      raise NotImplementedError\n\n  def __call__(self, images, is_training):\n    \"\"\"Connects graph to images.\"\"\"\n    features = self._cnn(images, is_training=is_training)\n    return features\n\n\nclass AudioModule(hk.Module):\n  \"\"\"The audio module selects which CNN backbone to connect to the graph.\"\"\"\n\n  def __init__(self,\n               backbone=\"resnet18\",\n               use_xreplica_bn=True,\n               model_kwargs=None,\n               name=\"audio_module\"):\n    super(AudioModule, self).__init__(name=name)\n    model_kwargs = model_kwargs or {}\n    bn_config = model_kwargs.get(\"bn_config\", _DEFAULT_CFG_BN)\n    backbone_to_depth = {\n        \"resnet18\": 18,\n        \"resnet34\": 34,\n        \"resnet50\": 50,\n        \"resnet101\": 101\n    }\n    assert backbone in backbone_to_depth, (\n        f\"backbone should be in {backbone_to_depth.keys()}\")\n\n    if use_xreplica_bn:\n      normalizer_name = \"cross_replica_batch_norm\"\n    else:\n      normalizer_name = \"batch_norm\"\n\n    self._cnn = resnet.ResNetV2(\n        depth=backbone_to_depth[backbone],\n        normalize_fn=normalization.get_normalize_fn(\n            normalizer_name=normalizer_name,\n            normalizer_kwargs=bn_config),\n        num_classes=None)\n\n  def __call__(self,\n               audio_spectrogram,\n               is_training,\n               return_intermediate=False):\n    \"\"\"Connects graph to audio spectrogram.\"\"\"\n    final_endpoint = \"output\"\n    if return_intermediate:\n      final_endpoint = \"last_conv\"\n\n    return self._cnn(audio_spectrogram,\n                     is_training=is_training,\n                     final_endpoint=final_endpoint)\n\n\nclass TextModule(hk.Module):\n  \"\"\"Text module computes the sentences representation.\"\"\"\n\n  def __init__(self,\n               word_embedding_matrix,\n               sentence_dim=1024,\n               name=\"text_module\"):\n    \"\"\"Initialize text module.\n\n    Args:\n      word_embedding_matrix: 2d matrix [vocab_size, embed_size] to embed words.\n      sentence_dim: dimension of sentence representation.\n      name: module name.\n    \"\"\"\n    super(TextModule, self).__init__(name=name)\n    self._word_embedding_module = hk.Embed(\n        embedding_matrix=word_embedding_matrix)\n    self._conv1d_module = hk.Conv1D(sentence_dim, 1, name=\"text_conv1\")\n\n  def __call__(self, word_ids, is_training):\n    \"\"\"Connects graph to sentence representation.\"\"\"\n    word_embeddings = self._word_embedding_module(word_ids)\n    word_embeddings = jax.lax.stop_gradient(word_embeddings)\n    output = self._conv1d_module(word_embeddings)\n    output = jax.nn.relu(output)\n    output = jnp.amax(output, axis=1)\n    return output\n"
  },
  {
    "path": "mmv/models/normalization.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Normalize functions constructors.\"\"\"\n\nfrom typing import Any, Dict, Optional, Sequence, Union\n\nimport haiku as hk\nfrom jax import numpy as jnp\n\nfrom mmv.models import types\n\n\nclass _BatchNorm(hk.BatchNorm):\n  \"\"\"A `hk.BatchNorm` with adapted default arguments.\"\"\"\n\n  def __init__(self,\n               create_scale: bool = True,\n               create_offset: bool = True,\n               decay_rate: float = 0.9,\n               eps: float = 1e-5,\n               test_local_stats: bool = False,\n               **kwargs):\n    # Check args.\n    if kwargs.get('cross_replica_axis', None) is not None:\n      raise ValueError(\n          'Attempting to use \\'batch_norm\\' normalizer, but specifying '\n          '`cross_replica_axis`. If you want this behavior use '\n          '`normalizer=\\'cross_replica_batch_norm\\'` directly.')\n\n    self._test_local_stats = test_local_stats\n    super().__init__(create_scale=create_scale,\n                     create_offset=create_offset,\n                     decay_rate=decay_rate,\n                     eps=eps,\n                     **kwargs)\n\n  def __call__(self,\n               x: types.TensorLike,\n               is_training: bool) -> jnp.ndarray:\n    return super().__call__(x, is_training,\n                            test_local_stats=self._test_local_stats)\n\n\nclass _CrossReplicaBatchNorm(hk.BatchNorm):\n  \"\"\"A `hk.BatchNorm` with adapted default arguments for cross replica.\"\"\"\n\n  def __init__(self,\n               create_scale: bool = True,\n               create_offset: bool = True,\n               decay_rate: float = 0.9,\n               eps: float = 1e-5,\n               test_local_stats: bool = False,\n               **kwargs):\n    # Check args.\n    if 'cross_replica_axis' in kwargs and kwargs['cross_replica_axis'] is None:\n      raise ValueError(\n          'Attempting to use \\'cross_replica_batch_norm\\' normalizer, but '\n          'specifying `cross_replica_axis` to be None. If you want this '\n          'behavior use `normalizer=\\'batch_norm\\'` directly.')\n\n    self._test_local_stats = test_local_stats\n    kwargs['cross_replica_axis'] = kwargs.get('cross_replica_axis', 'i')\n    super().__init__(create_scale=create_scale,\n                     create_offset=create_offset,\n                     decay_rate=decay_rate,\n                     eps=eps,\n                     **kwargs)\n\n  def __call__(self,\n               x: types.TensorLike,\n               is_training: bool) -> jnp.ndarray:\n    return super().__call__(x, is_training,\n                            test_local_stats=self._test_local_stats)\n\n\nclass _LayerNorm(hk.LayerNorm):\n  \"\"\"A `hk.LayerNorm` accepting (and discarding) an `is_training` argument.\"\"\"\n\n  def __init__(self,\n               axis: Union[int, Sequence[int]] = (1, 2),\n               create_scale: bool = True,\n               create_offset: bool = True,\n               **kwargs):\n    super().__init__(axis=axis,\n                     create_scale=create_scale,\n                     create_offset=create_offset,\n                     **kwargs)\n\n  def __call__(self,  # pytype: disable=signature-mismatch  # overriding-parameter-count-checks\n               x: types.TensorLike,\n               is_training: bool) -> jnp.ndarray:\n    del is_training  # Unused.\n    return super().__call__(x)\n\n\n_NORMALIZER_NAME_TO_CLASS = {\n    'batch_norm': _BatchNorm,\n    'cross_replica_batch_norm': _CrossReplicaBatchNorm,\n    'layer_norm': _LayerNorm,\n}\n\n\ndef get_normalize_fn(\n    normalizer_name: str = 'batch_norm',\n    normalizer_kwargs: Optional[Dict[str, Any]] = None,\n) -> types.NormalizeFn:\n  \"\"\"Handles NormalizeFn creation.\n\n  These functions are expected to be used as part of Haiku model. On each\n  application of the returned normalization_fn, a new Haiku layer will be added\n  to the model.\n\n  Args:\n    normalizer_name: The name of the normalizer to be constructed.\n    normalizer_kwargs: The kwargs passed to the normalizer constructor.\n\n  Returns:\n    A `types.NormalizeFn` that when applied will create a new layer.\n\n  Raises:\n    ValueError: If `normalizer_name` is unknown.\n  \"\"\"\n  # Check args.\n  if normalizer_name not in _NORMALIZER_NAME_TO_CLASS:\n    raise ValueError(f'Unrecognized `normalizer_name` {normalizer_name}.')\n\n  normalizer_class = _NORMALIZER_NAME_TO_CLASS[normalizer_name]\n  normalizer_kwargs = normalizer_kwargs or dict()\n\n  return lambda *a, **k: normalizer_class(**normalizer_kwargs)(*a, **k)  # pylint: disable=unnecessary-lambda\n"
  },
  {
    "path": "mmv/models/resnet.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"ResNet V2 modules.\n\n  Equivalent to hk.Resnet except accepting a final_endpoint to return\n  intermediate activations.\n\"\"\"\n\nfrom typing import Optional, Sequence, Text, Type, Union\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\n\nfrom mmv.models import types\n\n\nclass BottleneckBlock(hk.Module):\n  \"\"\"Implements a bottleneck residual block (ResNet50 and ResNet101).\"\"\"\n\n  # pylint:disable=g-bare-generic\n  def __init__(self,\n               channels: int,\n               stride: Union[int, Sequence[int]],\n               use_projection: bool,\n               normalize_fn: Optional[types.NormalizeFn] = None,\n               name: Optional[Text] = None):\n    super(BottleneckBlock, self).__init__(name=name)\n    self._channels = channels\n    self._stride = stride\n    self._use_projection = use_projection\n    self._normalize_fn = normalize_fn\n\n    if self._use_projection:\n      self._proj_conv = hk.Conv2D(\n          output_channels=channels,\n          kernel_shape=1,\n          stride=stride,\n          with_bias=False,\n          padding='SAME',\n          name='shortcut_conv')\n\n    self._conv_0 = hk.Conv2D(\n        output_channels=channels // 4,\n        kernel_shape=1,\n        stride=1,\n        with_bias=False,\n        padding='SAME',\n        name='conv_0')\n\n    self._conv_1 = hk.Conv2D(\n        output_channels=channels // 4,\n        kernel_shape=3,\n        stride=stride,\n        with_bias=False,\n        padding='SAME',\n        name='conv_1')\n\n    self._conv_2 = hk.Conv2D(\n        output_channels=channels,\n        kernel_shape=1,\n        stride=1,\n        with_bias=False,\n        padding='SAME',\n        name='conv_2')\n\n  def __call__(self,\n               inputs,\n               is_training):\n    net = inputs\n    shortcut = inputs\n\n    for i, conv_i in enumerate([self._conv_0, self._conv_1, self._conv_2]):\n      if self._normalize_fn is not None:\n        net = self._normalize_fn(net, is_training=is_training)\n      net = jax.nn.relu(net)\n      if i == 0 and self._use_projection:\n        shortcut = self._proj_conv(net)\n\n      # Now do the convs.\n      net = conv_i(net)\n\n    return net + shortcut\n\n\nclass BasicBlock(hk.Module):\n  \"\"\"Implements a basic residual block (ResNet18 and ResNet34).\"\"\"\n\n  # pylint:disable=g-bare-generic\n  def __init__(self,\n               channels: int,\n               stride: Union[int, Sequence[int]],\n               use_projection: bool,\n               normalize_fn: Optional[types.NormalizeFn] = None,\n               name: Optional[Text] = None):\n    super(BasicBlock, self).__init__(name=name)\n    self._channels = channels\n    self._stride = stride\n    self._use_projection = use_projection\n    self._normalize_fn = normalize_fn\n\n    if self._use_projection:\n      self._proj_conv = hk.Conv2D(\n          output_channels=channels,\n          kernel_shape=1,\n          stride=stride,\n          with_bias=False,\n          padding='SAME',\n          name='shortcut_conv')\n\n    self._conv_0 = hk.Conv2D(\n        output_channels=channels,\n        kernel_shape=1,\n        stride=1,\n        with_bias=False,\n        padding='SAME',\n        name='conv_0')\n\n    self._conv_1 = hk.Conv2D(\n        output_channels=channels,\n        kernel_shape=3,\n        stride=stride,\n        with_bias=False,\n        padding='SAME',\n        name='conv_1')\n\n  def __call__(self,\n               inputs,\n               is_training):\n    net = inputs\n    shortcut = inputs\n\n    for i, conv_i in enumerate([self._conv_0, self._conv_1]):\n      if self._normalize_fn is not None:\n        net = self._normalize_fn(net, is_training=is_training)\n      net = jax.nn.relu(net)\n      if i == 0 and self._use_projection:\n        shortcut = self._proj_conv(net)\n\n      # Now do the convs.\n      net = conv_i(net)\n\n    return net + shortcut\n\n\nclass ResNetUnit(hk.Module):\n  \"\"\"Unit (group of blocks) for ResNet.\"\"\"\n\n  # pylint:disable=g-bare-generic\n  def __init__(self,\n               channels: int,\n               num_blocks: int,\n               stride: Union[int, Sequence[int]],\n               block_module: Type[BottleneckBlock],\n               normalize_fn: Optional[types.NormalizeFn] = None,\n               name: Optional[Text] = None,\n               remat: bool = False):\n    super(ResNetUnit, self).__init__(name=name)\n    self._channels = channels\n    self._num_blocks = num_blocks\n    self._stride = stride\n    self._normalize_fn = normalize_fn\n    self._block_module = block_module\n    self._remat = remat\n\n  def __call__(self,\n               inputs,\n               is_training):\n\n    input_channels = inputs.shape[-1]\n\n    self._blocks = []\n    for id_block in range(self._num_blocks):\n      use_projection = id_block == 0 and self._channels != input_channels\n      self._blocks.append(\n          self._block_module(\n              channels=self._channels,\n              stride=self._stride if id_block == 0 else 1,\n              use_projection=use_projection,\n              normalize_fn=self._normalize_fn,\n              name='block_%d' % id_block))\n\n    net = inputs\n    for block in self._blocks:\n      if self._remat:\n        # Note: we can ignore cell-var-from-loop because the lambda is evaluated\n        # inside every iteration of the loop. This is needed to go around the\n        # way variables are passed to jax.remat.\n        net = hk.remat(lambda x: block(x, is_training=is_training))(net)  # pylint: disable=cell-var-from-loop\n      else:\n        net = block(net, is_training=is_training)\n    return net\n\n\nclass ResNetV2(hk.Module):\n  \"\"\"ResNetV2 model.\"\"\"\n\n  # Endpoints of the model in order.\n  VALID_ENDPOINTS = (\n      'resnet_stem',\n      'resnet_unit_0',\n      'resnet_unit_1',\n      'resnet_unit_2',\n      'resnet_unit_3',\n      'last_conv',\n      'output',\n  )\n\n  # pylint:disable=g-bare-generic\n  def __init__(self,\n               depth=50,\n               num_classes: Optional[int] = 1000,\n               width_mult: int = 1,\n               normalize_fn: Optional[types.NormalizeFn] = None,\n               name: Optional[Text] = None,\n               remat: bool = False):\n    \"\"\"Creates ResNetV2 Haiku module.\n\n    Args:\n      depth: depth of the desired ResNet (18, 34, 50, 101, 152 or 202).\n      num_classes: (int) Number of outputs in final layer. If None will not add\n        a classification head and will return the output embedding.\n      width_mult: multiplier for channel width.\n      normalize_fn: normalization function, see helpers/utils.py\n      name: Name of the module.\n      remat: Whether to rematerialize intermediate activations (saves memory).\n    \"\"\"\n    super(ResNetV2, self).__init__(name=name)\n    self._normalize_fn = normalize_fn\n    self._num_classes = num_classes\n    self._width_mult = width_mult\n\n    self._strides = [1, 2, 2, 2]\n    num_blocks = {\n        18: [2, 2, 2, 2],\n        34: [3, 4, 6, 3],\n        50: [3, 4, 6, 3],\n        101: [3, 4, 23, 3],\n        152: [3, 8, 36, 3],\n        200: [3, 24, 36, 3],\n    }\n    if depth not in num_blocks:\n      raise ValueError(\n          f'`depth` should be in {list(num_blocks.keys())} ({depth} given).')\n    self._num_blocks = num_blocks[depth]\n\n    if depth >= 50:\n      self._block_module = BottleneckBlock\n      self._channels = [256, 512, 1024, 2048]\n    else:\n      self._block_module = BasicBlock\n      self._channels = [64, 128, 256, 512]\n\n    self._initial_conv = hk.Conv2D(\n        output_channels=64 * self._width_mult,\n        kernel_shape=7,\n        stride=2,\n        with_bias=False,\n        padding='SAME',\n        name='initial_conv')\n\n    if remat:\n      self._initial_conv = hk.remat(self._initial_conv)\n\n    self._block_groups = []\n    for i in range(4):\n      self._block_groups.append(\n          ResNetUnit(\n              channels=self._channels[i] * self._width_mult,\n              num_blocks=self._num_blocks[i],\n              block_module=self._block_module,\n              stride=self._strides[i],\n              normalize_fn=self._normalize_fn,\n              name='block_group_%d' % i,\n              remat=remat))\n\n    if num_classes is not None:\n      self._logits_layer = hk.Linear(\n          output_size=num_classes, w_init=jnp.zeros, name='logits')\n\n  def __call__(self, inputs, is_training, final_endpoint='output'):\n    self._final_endpoint = final_endpoint\n    net = self._initial_conv(inputs)\n    net = hk.max_pool(\n        net, window_shape=(1, 3, 3, 1),\n        strides=(1, 2, 2, 1),\n        padding='SAME')\n    end_point = 'resnet_stem'\n    if self._final_endpoint == end_point:\n      return net\n\n    for i_group, block_group in enumerate(self._block_groups):\n      net = block_group(net, is_training=is_training)\n      end_point = f'resnet_unit_{i_group}'\n      if self._final_endpoint == end_point:\n        return net\n\n    end_point = 'last_conv'\n    if self._final_endpoint == end_point:\n      return net\n\n    if self._normalize_fn is not None:\n      net = self._normalize_fn(net, is_training=is_training)\n      net = jax.nn.relu(net)\n\n    # The actual representation\n    net = jnp.mean(net, axis=[1, 2])\n\n    assert self._final_endpoint == 'output'\n    if self._num_classes is None:\n      # If num_classes was None, we just return the output\n      # of the last block, without fully connected layer.\n      return net\n\n    return self._logits_layer(net)\n"
  },
  {
    "path": "mmv/models/s3d.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"A Haiku S3D model.\"\"\"\n\nimport collections\nfrom typing import Optional, Sequence\n\nimport haiku as hk\nimport jax\nfrom jax import numpy as jnp\n\nfrom mmv.models import types\n\n\nclass _MaxPool(hk.MaxPool):\n  \"\"\"A `hk.MaxPool` accepting (and discarding) an `is_training` argument.\"\"\"\n\n  def __call__(self,\n               x: types.TensorLike,\n               is_training: bool = True) -> jnp.ndarray:\n    del is_training  # Unused.\n    return super().__call__(x)\n\n\ndef self_gating(inputs: types.TensorLike) -> jnp.ndarray:\n  \"\"\"Feature gating as used in S3D-G.\n\n  Transforms the input features by aggregating features from all spatial and\n  temporal locations, and applying gating conditioned on the aggregated\n  features. More details can be found at: https://arxiv.org/abs/1712.04851.\n\n  Args:\n    inputs: A 5-D float array of shape `[B, T, H, W, C]`.\n\n  Returns:\n    A tensor with the same shape as input_tensor.\n\n  Raises:\n    ValueError: If `inputs` has the wrong shape.\n  \"\"\"\n  if inputs.ndim != 5:\n    raise ValueError(\n        f'Expected an input of shape `[B, T, H, W, C]` but got {inputs.shape}.')\n\n  input_shape = inputs.shape\n  num_channels = input_shape[4]\n  spatiotemporal_average = jnp.mean(inputs, axis=(1, 2, 3))\n  weights = hk.Linear(num_channels, name='self_gating')(spatiotemporal_average)\n  weights = jax.nn.sigmoid(weights)\n  return jnp.multiply(weights[:, None, None, None, :], inputs)\n\n\nclass SUnit3D(hk.Module):\n  \"\"\"Base 3d Unit combining Conv3d + Batch Norm + non-linearity.\"\"\"\n\n  def __init__(\n      self,\n      output_channels: int,\n      kernel_shape: Sequence[int] = (1, 1, 1),\n      stride: Sequence[int] = (1, 1, 1),\n      with_bias: bool = False,\n      separable: bool = False,\n      normalize_fn: Optional[types.NormalizeFn] = None,\n      activation_fn: Optional[types.ActivationFn] = jax.nn.relu,\n      self_gating_fn: Optional[types.GatingFn] = None,\n      name='SUnit3D'):\n    \"\"\"Initializes the SUnit3D module.\n\n    Args:\n      output_channels: Number of output channels.\n      kernel_shape: The shape of the kernel. A sequence of length 3.\n      stride: Stride for the kernel. A sequence of length 3.\n      with_bias: Whether to add a bias to the convolution.\n      separable: Whether to use separable.\n      normalize_fn: Function used for normalization.\n      activation_fn: Function used as non-linearity.\n      self_gating_fn: Function used for self-gating.\n      name: The name of the module.\n\n    Raises:\n      ValueError: If `kernel_shape` or `stride` has the wrong shape.\n    \"\"\"\n    super().__init__(name=name)\n\n    # Check args.\n    if len(kernel_shape) != 3:\n      raise ValueError(\n          'Given `kernel_shape` must have length 3 but has length '\n          f'{len(kernel_shape)}.')\n    if len(stride) != 3:\n      raise ValueError(\n          f'Given `stride` must have length 3 but has length {len(stride)}.')\n\n    self._normalize_fn = normalize_fn\n    self._activation_fn = activation_fn\n    self._self_gating_fn = self_gating_fn\n\n    k0, k1, k2 = kernel_shape\n    if separable and k1 != 1:\n      spatial_kernel_shape = [1, k1, k2]\n      temporal_kernel_shape = [k0, 1, 1]\n      s0, s1, s2 = stride\n      spatial_stride = [1, s1, s2]\n      temporal_stride = [s0, 1, 1]\n      self._convolutions = [\n          hk.Conv3D(\n              output_channels=output_channels,\n              kernel_shape=spatial_kernel_shape,\n              stride=spatial_stride,\n              padding='SAME',\n              with_bias=with_bias),\n          hk.Conv3D(\n              output_channels=output_channels,\n              kernel_shape=temporal_kernel_shape,\n              stride=temporal_stride,\n              padding='SAME',\n              with_bias=with_bias)\n      ]\n\n    else:\n      self._convolutions = [\n          hk.Conv3D(\n              output_channels=output_channels,\n              kernel_shape=kernel_shape,\n              stride=stride,\n              padding='SAME',\n              with_bias=with_bias)]\n\n  def __call__(\n      self,\n      inputs: types.TensorLike,\n      is_training: bool) -> jnp.ndarray:\n    \"\"\"Connects the module to inputs.\n\n    Args:\n      inputs: A 5-D float array of shape `[B, T, H, W, C]`.\n      is_training: Whether to use training mode.\n\n    Returns:\n      A 5-D float array of shape `[B, new_t, new_h, new_w, output_channels]`.\n    \"\"\"\n    x = inputs\n    for conv in self._convolutions:\n      x = conv(x)\n      if self._normalize_fn is not None:\n        x = self._normalize_fn(x, is_training=is_training)\n      if self._activation_fn is not None:\n        x = self._activation_fn(x)\n    if self._self_gating_fn:\n      x = self._self_gating_fn(x)\n    return x  # pytype: disable=bad-return-type  # jax-devicearray\n\n\nclass InceptionBlockV13D(hk.Module):\n  \"\"\"A 3D Inception v1 block.\n\n  This allows use of separable 3D convolutions and self-gating, as described in:\n\n  Rethinking Spatiotemporal Feature Learning For Video Understanding.\n  Saining Xie, Chen Sun, Jonathan Huang, Zhuowen Tu and Kevin Murphy.\n  https://arxiv.org/abs/1712.04851.\n  \"\"\"\n\n  def __init__(self,\n               output_channels: Sequence[int],\n               normalize_fn: Optional[types.NormalizeFn],\n               temporal_kernel_size: int = 3,\n               self_gating_fn: Optional[types.GatingFn] = None,\n               name: str = 'InceptionBlockV13D'):\n    \"\"\"Initializes the InceptionBlockV13D module.\n\n    Args:\n      output_channels: The size of the output channels of each block, ordered as\n        [Conv2d_0a_1x1, Conv2d_0a_1x1, Conv2d_0b_3x3, Conv2d_0a_1x1,\n         Conv2d_0b_3x3, Conv2d_0b_1x1]\n      normalize_fn: Function used for normalization.\n      temporal_kernel_size: The size of the temporal convolutional filters in\n        the conv3d_spatiotemporal blocks.\n      self_gating_fn: Function which optionally performs self-gating. If `None`,\n        no self-gating is applied.\n      name: The name of the module.\n\n    Raises:\n      ValueError: If `output_channels` has the wrong shape.\n    \"\"\"\n    super().__init__(name=name)\n\n    # Check args.\n    if len(output_channels) != 6:\n      raise ValueError(\n          'Given `output_channels` must have length 6 but has length '\n          f'{len(output_channels)}.')\n\n    self._output_channels = output_channels\n    self._normalize_fn = normalize_fn\n    self._temporal_kernel_size = temporal_kernel_size\n\n    if self_gating_fn is None:\n      self._self_gating_fn = lambda x: x\n    else:\n      self._self_gating_fn = self_gating_fn\n\n  def __call__(\n      self,\n      inputs: types.TensorLike,\n      is_training: bool) -> jnp.ndarray:\n    \"\"\"Connects the module to inputs.\n\n    Args:\n      inputs: A 5-D float array of shape `[B, T, H, W, C]`.\n      is_training: Whether to use training mode.\n\n    Returns:\n      A 5-D float array of shape\n      `[B, new_t, new_h, new_w, sum(output_channels)]`.\n    \"\"\"\n    # Branch 0\n    branch_0 = SUnit3D(\n        output_channels=self._output_channels[0],\n        kernel_shape=(1, 1, 1),\n        separable=False,\n        normalize_fn=self._normalize_fn,\n        self_gating_fn=self._self_gating_fn,\n        name='Branch_0_Conv2d_0a_1x1')(\n            inputs, is_training=is_training)\n\n    # Branch 1\n    branch_1 = SUnit3D(\n        output_channels=self._output_channels[1],\n        kernel_shape=(1, 1, 1),\n        separable=False,\n        normalize_fn=self._normalize_fn,\n        self_gating_fn=None,\n        name='Branch_1_Conv2d_0a_1x1')(\n            inputs, is_training=is_training)\n    branch_1 = SUnit3D(\n        output_channels=self._output_channels[2],\n        kernel_shape=(self._temporal_kernel_size, 3, 3),\n        separable=True,\n        normalize_fn=self._normalize_fn,\n        self_gating_fn=self._self_gating_fn,\n        name='Branch_1_Conv2d_0b_3x3')(\n            branch_1, is_training=is_training)\n\n    # Branch 2\n    branch_2 = SUnit3D(\n        output_channels=self._output_channels[3],\n        kernel_shape=(1, 1, 1),\n        separable=False,\n        normalize_fn=self._normalize_fn,\n        self_gating_fn=None,\n        name='Branch_2_Conv2d_0a_1x1')(\n            inputs, is_training=is_training)\n    branch_2 = SUnit3D(\n        output_channels=self._output_channels[4],\n        kernel_shape=(self._temporal_kernel_size, 3, 3),\n        separable=True,\n        normalize_fn=self._normalize_fn,\n        self_gating_fn=self._self_gating_fn,\n        name='Branch_2_Conv2d_0b_3x3')(\n            branch_2, is_training=is_training)\n\n    # Branch 3\n    branch_3 = hk.MaxPool(\n        window_shape=(1, 3, 3, 3, 1),\n        strides=(1, 1, 1, 1, 1),\n        padding='SAME',\n        name='Branch_3_MaxPool_0a_3x3')(\n            inputs)\n    branch_3 = SUnit3D(\n        output_channels=self._output_channels[5],\n        kernel_shape=(1, 1, 1),\n        separable=False,\n        normalize_fn=self._normalize_fn,\n        self_gating_fn=self._self_gating_fn,\n        name='Branch_3_Conv2d_0b_1x1')(\n            branch_3, is_training=is_training)\n\n    return jnp.concatenate((branch_0, branch_1, branch_2, branch_3), axis=4)\n\n\n_Layer = collections.namedtuple('_Layer', ('name', 'module', 'kwargs'))\n\n\nclass S3D(hk.Module):\n  \"\"\"S3D architecture.\n\n  Any intermediary representation can be obtained by choosing one of the valid\n  `final_endpoint`s. The final value returned by this model (when 'Embeddings'\n  is used as `final_endpoint`) is a single 1-D representation for each video in\n  the batch. Another layer can be externally added on top of that to obtain\n  logits.\n  \"\"\"\n\n  # Endpoints of the model in order.\n  VALID_ENDPOINTS = (\n      'Conv2d_1a_7x7',\n      'MaxPool_2a_3x3',\n      'Conv2d_2b_1x1',\n      'Conv2d_2c_3x3',\n      'MaxPool_3a_3x3',\n      'Mixed_3b',\n      'Mixed_3c',\n      'MaxPool_4a_3x3',\n      'Mixed_4b',\n      'Mixed_4c',\n      'Mixed_4d',\n      'Mixed_4e',\n      'Mixed_4f',\n      'MaxPool_5a_2x2',\n      'Mixed_5b',\n      'Mixed_5c',\n      'Embeddings',\n  )\n\n  def __init__(self,\n               normalize_fn: Optional[types.NormalizeFn] = None,\n               first_temporal_kernel_size: int = 7,\n               temporal_conv_startat: Optional[str] = 'Conv2d_2c_3x3',\n               gating_startat: Optional[str] = 'Conv2d_2c_3x3',\n               name='S3D'):\n    \"\"\"Initializes the S3D module.\n\n    Args:\n      normalize_fn: Function used for normalization.\n      first_temporal_kernel_size: Specifies the temporal kernel size for the\n        first conv3d filter. A larger value slows down the model but provides\n        little accuracy improvement. Must be set to one of 1, 3, 5 or 7.\n      temporal_conv_startat: Specifies the first conv block to use separable 3D\n        convs rather than 2D convs (implemented as [1, k, k] 3D conv). This is\n        used to construct the inverted pyramid models. 'Conv2d_2c_3x3' is the\n        first valid block to use separable 3D convs. If provided block name is\n        not present, all valid blocks will use separable 3D convs.\n      gating_startat: Specifies the first conv block to use self gating.\n        'Conv2d_2c_3x3' is the first valid block to use self gating. If provided\n        block name is not present, all valid blocks will use separable 3D convs.\n      name: The name of the module.\n\n    Raises:\n      ValueError: If `temporal_conv_startat`, `gating_startat` or\n        `first_temporal_kernel_size` is not recognized.\n    \"\"\"\n    super().__init__(name=name)\n    self._first_temporal_kernel_size = first_temporal_kernel_size\n    self._temporal_conv_startat = temporal_conv_startat\n    self._gating_startat = gating_startat\n    self._normalize_fn = normalize_fn\n\n    if (temporal_conv_startat not in self.VALID_ENDPOINTS\n        and temporal_conv_startat is not None):\n      raise ValueError(\n          f'Provided `temporal_conv_startat`: {temporal_conv_startat} not '\n          f'valid. It must be one of: {self.VALID_ENDPOINTS}, or `None`.')\n\n    if (gating_startat not in self.VALID_ENDPOINTS\n        and gating_startat is not None):\n      raise ValueError(\n          f'Provided `gating_startat`: {gating_startat} not valid. '\n          f'It must be one of: {self.VALID_ENDPOINTS}, or `None`.')\n\n    if first_temporal_kernel_size not in [1, 3, 5, 7]:\n      raise ValueError('`first_temporal_kernel_size` can only be 1, 3, 5 or 7.')\n\n  def __call__(self,\n               inputs: types.TensorLike,\n               is_training: bool,\n               final_endpoint: str = 'Embeddings') -> jnp.ndarray:\n    \"\"\"Connects the model to inputs.\n\n    Args:\n      inputs: A 5-D float array of shape `[B, T, H, W, C]`.\n      is_training: Whether to use training mode.\n      final_endpoint: Up to which endpoint to run / return.\n\n    Returns:\n      A 5-D float array of shape\n        `[B, new_t, new_h, new_w, sum(output_channels)]`.\n\n    Returns:\n      Network output at location `final_endpoint`. A float array which shape\n      depends on `final_endpoint`.\n\n    Raises:\n      ValueError: If `final_endpoint` is not recognized.\n    \"\"\"\n    if final_endpoint not in self.VALID_ENDPOINTS:\n      raise ValueError(f'Provided final_endpoint: {final_endpoint} not valid.'\n                       f' It must be one of: {self.VALID_ENDPOINTS}')\n\n    x = inputs\n\n    # We define layers with tuples (name, module, kwargs)\n    # Not all kwargs are present, as we will need to fill in certain properties\n    # as we move down the network.\n    layers = []\n\n    # The first layer is conditional on the input data shape: the channel size\n    # is used to identify whether the `space_to_depth` transformation has been\n    # applied to the input. This is used to  speed up computation on TPUs.\n    if x.shape[-1] == 3:\n      layers.append(\n          _Layer('Conv2d_1a_7x7', SUnit3D,\n                 dict(output_channels=64, stride=(2, 2, 2), separable=False,\n                      kernel_shape=(self._first_temporal_kernel_size, 7, 7),\n                      normalize_fn=self._normalize_fn)))\n    else:\n      layers.append(\n          _Layer('Conv2d_1a_7x7', SUnit3D,\n                 dict(output_channels=64, kernel_shape=(2, 4, 4),\n                      stride=(1, 1, 1), separable=False,\n                      normalize_fn=self._normalize_fn)))\n\n    layers.extend([\n        _Layer('MaxPool_2a_3x3', _MaxPool,\n               dict(window_shape=(1, 1, 3, 3, 1), strides=(1, 1, 2, 2, 1),\n                    padding='SAME')),\n        _Layer('Conv2d_2b_1x1', SUnit3D,\n               dict(output_channels=64, kernel_shape=(1, 1, 1),\n                    normalize_fn=self._normalize_fn)),\n        _Layer('Conv2d_2c_3x3', SUnit3D,\n               dict(output_channels=192, separable=True,\n                    normalize_fn=self._normalize_fn)),\n        _Layer('MaxPool_3a_3x3', _MaxPool,\n               dict(window_shape=(1, 1, 3, 3, 1), strides=(1, 1, 2, 2, 1),\n                    padding='SAME')),\n        _Layer('Mixed_3b', InceptionBlockV13D,\n               dict(output_channels=(64, 96, 128, 16, 32, 32),\n                    normalize_fn=self._normalize_fn)),\n        _Layer('Mixed_3c', InceptionBlockV13D,\n               dict(output_channels=(128, 128, 192, 32, 96, 64),\n                    normalize_fn=self._normalize_fn)),\n        _Layer('MaxPool_4a_3x3', _MaxPool,\n               dict(window_shape=(1, 3, 3, 3, 1), strides=(1, 2, 2, 2, 1),\n                    padding='SAME')),\n        _Layer('Mixed_4b', InceptionBlockV13D,\n               dict(output_channels=(192, 96, 208, 16, 48, 64),\n                    normalize_fn=self._normalize_fn)),\n        _Layer('Mixed_4c', InceptionBlockV13D,\n               dict(output_channels=(160, 112, 224, 24, 64, 64),\n                    normalize_fn=self._normalize_fn)),\n        _Layer('Mixed_4d', InceptionBlockV13D,\n               dict(output_channels=(128, 128, 256, 24, 64, 64),\n                    normalize_fn=self._normalize_fn)),\n        _Layer('Mixed_4e', InceptionBlockV13D,\n               dict(output_channels=(112, 144, 288, 32, 64, 64),\n                    normalize_fn=self._normalize_fn)),\n        _Layer('Mixed_4f', InceptionBlockV13D,\n               dict(output_channels=(256, 160, 320, 32, 128, 128),\n                    normalize_fn=self._normalize_fn)),\n        _Layer('MaxPool_5a_2x2', _MaxPool,\n               dict(window_shape=(1, 2, 2, 2, 1), strides=(1, 2, 2, 2, 1),\n                    padding='SAME')),\n        _Layer('Mixed_5b', InceptionBlockV13D,\n               dict(output_channels=(256, 160, 320, 32, 128, 128),\n                    normalize_fn=self._normalize_fn)),\n        _Layer('Mixed_5c', InceptionBlockV13D,\n               dict(output_channels=(384, 192, 384, 48, 128, 128),\n                    normalize_fn=self._normalize_fn)),\n    ])\n\n    # These parameters may change thoughout the computation.\n    self_gating_fn = None\n    temporal_kernel_size = 1\n\n    # Iterate over layers.\n    for layer in layers:\n      # Update\n      if layer.name == self._gating_startat:\n        self_gating_fn = self_gating\n      if layer.name == self._temporal_conv_startat:\n        temporal_kernel_size = 3\n\n      kwargs = layer.kwargs\n\n      if layer.module is SUnit3D:\n        kwargs['self_gating_fn'] = self_gating_fn\n        if 'kernel_shape' not in kwargs:\n          kwargs['kernel_shape'] = (temporal_kernel_size, 3, 3)\n\n      elif layer.module is InceptionBlockV13D:\n        kwargs['self_gating_fn'] = self_gating_fn\n        kwargs['temporal_kernel_size'] = temporal_kernel_size\n\n      module = layer.module(name=layer.name, **kwargs)\n      x = module(x, is_training=is_training)\n      if final_endpoint == layer.name:\n        return x\n\n    assert final_endpoint == 'Embeddings'\n    return jnp.mean(x, axis=(1, 2, 3))\n"
  },
  {
    "path": "mmv/models/s3d_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Tests for s3d.\"\"\"\n\nfrom absl.testing import absltest\nfrom absl.testing import parameterized\n\nimport haiku as hk\nimport jax\nimport numpy as np\n\nfrom mmv.models import normalization\nfrom mmv.models import s3d\n\n\nclass _CallableS3D:\n  \"\"\"Wrapper around S3D that take care of parameter book keeping.\"\"\"\n\n  def __init__(self, *args, **kwargs):\n    self._model = hk.transform_with_state(\n        lambda *a, **k:  # pylint: disable=g-long-lambda,unnecessary-lambda\n        s3d.S3D(\n            normalize_fn=normalization.get_normalize_fn(),\n            *args, **kwargs)(*a, **k))\n    self._rng = jax.random.PRNGKey(42)\n    self._params, self._state = None, None\n\n  def init(self, inputs, **kwargs):\n    self._params, self._state = self._model.init(\n        self._rng, inputs, is_training=True, **kwargs)\n\n  def __call__(self, inputs, **kwargs):\n    if self._params is None:\n      self.init(inputs)\n    output, _ = self._model.apply(\n        self._params, self._state, self._rng, inputs, **kwargs)\n    return output\n\n\nclass S3DTest(parameterized.TestCase):\n\n  # Testing all layers is quite slow, added in comments for completeness.\n  @parameterized.parameters(\n      # dict(endpoint='Conv2d_1a_7x7', expected_size=(2, 8, 112, 112, 64)),\n      # dict(endpoint='MaxPool_2a_3x3', expected_size=(2, 8, 56, 56, 64)),\n      # dict(endpoint='Conv2d_2b_1x1', expected_size=(2, 8, 56, 56, 64)),\n      # dict(endpoint='Conv2d_2c_3x3', expected_size=(2, 8, 56, 56, 192)),\n      # dict(endpoint='MaxPool_3a_3x3', expected_size=(2, 8, 28, 28, 192)),\n      # dict(endpoint='Mixed_3b', expected_size=(2, 8, 28, 28, 256)),\n      # dict(endpoint='Mixed_3c', expected_size=(2, 8, 28, 28, 480)),\n      # dict(endpoint='MaxPool_4a_3x3', expected_size=(2, 4, 14, 14, 480)),\n      # dict(endpoint='Mixed_4b', expected_size=(2, 4, 14, 14, 512)),\n      # dict(endpoint='Mixed_4c', expected_size=(2, 4, 14, 14, 512)),\n      # dict(endpoint='Mixed_4d', expected_size=(2, 4, 14, 14, 512)),\n      # dict(endpoint='Mixed_4e', expected_size=(2, 4, 14, 14, 528)),\n      # dict(endpoint='Mixed_4f', expected_size=(2, 4, 14, 14, 832)),\n      # dict(endpoint='MaxPool_5a_2x2', expected_size=(2, 2, 7, 7, 832)),\n      # dict(endpoint='Mixed_5b', expected_size=(2, 2, 7, 7, 832)),\n      # dict(endpoint='Mixed_5c', expected_size=(2, 2, 7, 7, 1024)),\n      dict(endpoint='Embeddings', expected_size=(2, 1024)),\n  )\n  def test_endpoint_expected_output_dimensions(self, endpoint, expected_size):\n    inputs = np.random.normal(size=(2, 16, 224, 224, 3))\n    model = _CallableS3D()\n    output = model(inputs, is_training=False, final_endpoint=endpoint)\n    self.assertSameElements(output.shape, expected_size)\n\n  def test_space_to_depth(self):\n    inputs = np.random.normal(size=(2, 16//2, 224//2, 224//2, 3*2*2*2))\n    model = _CallableS3D()\n    output = model(inputs, is_training=False, final_endpoint='Conv2d_1a_7x7')\n    self.assertSameElements(output.shape, (2, 8, 112, 112, 64))\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "mmv/models/tsm_resnet.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Temporal Shift Module w/ ResNet-50 and ResNet-101.\n\nBased on:\n  TSM: Temporal Shift Module for Efficient Video Understanding\n  Ji Lin, Chuang Gan, Song Han\n  https://arxiv.org/pdf/1811.08383.pdf.\n\"\"\"\n\nfrom typing import Optional\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\n\nfrom mmv.models import tsm_utils as tsmu\nfrom mmv.models import types\n\n\nclass TSMResNetBlock(hk.Module):\n  \"\"\"A ResNet subblock with Temporal Channel Shifting.\n\n  Combines a typical ResNetV2 block implementation\n  (see https://arxiv.org/abs/1512.03385) with a pre-convolution Temporal\n  Shift Module (see https://arxiv.org/pdf/1811.08383.pdf) in the residual.\n  \"\"\"\n\n  def __init__(self,\n               output_channels: int,\n               stride: int,\n               use_projection: bool,\n               tsm_mode: str,\n               normalize_fn: Optional[types.NormalizeFn] = None,\n               channel_shift_fraction: float = 0.125,\n               num_frames: int = 8,\n               name: str = 'TSMResNetBlock'):\n    \"\"\"Initializes the TSMResNetBlock module.\n\n    Args:\n      output_channels: Number of output channels.\n      stride: Stride used in convolutions.\n      use_projection: Whether to use a projection for the shortcut.\n      tsm_mode: Mode for TSM ('gpu' or 'tpu').\n      normalize_fn: Function used for normalization.\n      channel_shift_fraction: The fraction of temporally shifted channels. If\n        `channel_shift_fraction` is 0, the block is the same as a normal ResNet\n        block.\n      num_frames: Size of frame dimension in a single batch example\n      name: The name of the module.\n    \"\"\"\n    super().__init__(name=name)\n    self._output_channels = output_channels\n    self._bottleneck_channels = output_channels // 4\n    self._stride = stride\n    self._use_projection = use_projection\n    self._normalize_fn = normalize_fn\n    self._tsm_mode = tsm_mode\n    self._channel_shift_fraction = channel_shift_fraction\n    self._num_frames = num_frames\n\n  def __call__(self,\n               inputs: types.TensorLike,\n               is_training: bool = True) -> jnp.ndarray:\n    \"\"\"Connects the ResNetBlock module into the graph.\n\n    Args:\n      inputs: A 4-D float array of shape `[B, H, W, C]`.\n      is_training: Whether to use training mode.\n\n    Returns:\n      A 4-D float array of shape\n      `[B * num_frames, new_h, new_w, output_channels]`.\n    \"\"\"\n    # ResNet V2 uses pre-activation, where the batch norm and relu are before\n    # convolutions, rather than after as in ResNet V1.\n    preact = inputs\n    if self._normalize_fn is not None:\n      preact = self._normalize_fn(preact, is_training=is_training)\n    preact = jax.nn.relu(preact)\n\n    if self._use_projection:\n      shortcut = hk.Conv2D(\n          output_channels=self._output_channels,\n          kernel_shape=1,\n          stride=self._stride,\n          with_bias=False,\n          padding='SAME',\n          name='shortcut_conv')(\n              preact)\n    else:\n      shortcut = inputs\n\n    # Eventually applies Temporal Shift Module.\n    if self._channel_shift_fraction != 0:\n      preact = tsmu.apply_temporal_shift(\n          preact, tsm_mode=self._tsm_mode, num_frames=self._num_frames,\n          channel_shift_fraction=self._channel_shift_fraction)\n\n    # First convolution.\n    residual = hk.Conv2D(\n        self._bottleneck_channels,\n        kernel_shape=1,\n        stride=1,\n        with_bias=False,\n        padding='SAME',\n        name='conv_0')(\n            preact)\n\n    # Second convolution.\n    if self._normalize_fn is not None:\n      residual = self._normalize_fn(residual, is_training=is_training)\n    residual = jax.nn.relu(residual)\n    residual = hk.Conv2D(\n        output_channels=self._bottleneck_channels,\n        kernel_shape=3,\n        stride=self._stride,\n        with_bias=False,\n        padding='SAME',\n        name='conv_1')(\n            residual)\n\n    # Third convolution.\n    if self._normalize_fn is not None:\n      residual = self._normalize_fn(residual, is_training=is_training)\n    residual = jax.nn.relu(residual)\n    residual = hk.Conv2D(\n        output_channels=self._output_channels,\n        kernel_shape=1,\n        stride=1,\n        with_bias=False,\n        padding='SAME',\n        name='conv_2')(\n            residual)\n\n    # NOTE: we do not use block multiplier.\n    output = shortcut + residual\n    return output\n\n\nclass TSMResNetUnit(hk.Module):\n  \"\"\"Block group for TSM ResNet.\"\"\"\n\n  def __init__(self,\n               output_channels: int,\n               num_blocks: int,\n               stride: int,\n               tsm_mode: str,\n               num_frames: int,\n               normalize_fn: Optional[types.NormalizeFn] = None,\n               channel_shift_fraction: float = 0.125,\n               name: str = 'tsm_resnet_unit'):\n    \"\"\"Creates a TSMResNet Unit.\n\n    Args:\n      output_channels: Number of output channels.\n      num_blocks: Number of ResNet blocks in the unit.\n      stride: Stride of the unit.\n      tsm_mode: Which temporal shift module to use.\n      num_frames: Size of frame dimension in a single batch example.\n      normalize_fn: Function used for normalization.\n      channel_shift_fraction: The fraction of temporally shifted channels. If\n        `channel_shift_fraction` is 0, the block is the same as a normal ResNet\n        block.\n      name: The name of the module.\n    \"\"\"\n    super().__init__(name=name)\n    self._output_channels = output_channels\n    self._num_blocks = num_blocks\n    self._normalize_fn = normalize_fn\n    self._stride = stride\n    self._tsm_mode = tsm_mode\n    self._channel_shift_fraction = channel_shift_fraction\n    self._num_frames = num_frames\n\n  def __call__(self,\n               inputs: types.TensorLike,\n               is_training: bool) -> jnp.ndarray:\n    \"\"\"Connects the module to inputs.\n\n    Args:\n      inputs: A 4-D float array of shape `[B * num_frames, H, W, C]`.\n      is_training: Whether to use training mode.\n\n    Returns:\n      A 4-D float array of shape\n      `[B * num_frames, H // stride, W // stride, output_channels]`.\n    \"\"\"\n    net = inputs\n    for idx_block in range(self._num_blocks):\n      net = TSMResNetBlock(\n          self._output_channels,\n          stride=self._stride if idx_block == 0 else 1,\n          use_projection=idx_block == 0,\n          normalize_fn=self._normalize_fn,\n          tsm_mode=self._tsm_mode,\n          channel_shift_fraction=self._channel_shift_fraction,\n          num_frames=self._num_frames,\n          name=f'block_{idx_block}')(\n              net, is_training=is_training)\n    return net  # pytype: disable=bad-return-type  # jax-devicearray\n\n\nclass TSMResNetV2(hk.Module):\n  \"\"\"TSM based on ResNet V2 as described in https://arxiv.org/abs/1603.05027.\"\"\"\n\n  # Endpoints of the model in order.\n  VALID_ENDPOINTS = (\n      'tsm_resnet_stem',\n      'tsm_resnet_unit_0',\n      'tsm_resnet_unit_1',\n      'tsm_resnet_unit_2',\n      'tsm_resnet_unit_3',\n      'last_conv',\n      'Embeddings',\n  )\n\n  def __init__(self,\n               normalize_fn: Optional[types.NormalizeFn] = None,\n               depth: int = 50,\n               num_frames: int = 16,\n               channel_shift_fraction: float = 0.125,\n               width_mult: int = 1,\n               name: str = 'TSMResNetV2'):\n    \"\"\"Constructs a ResNet model.\n\n    Args:\n      normalize_fn: Function used for normalization.\n      depth: Depth of the desired ResNet.\n      num_frames: Number of frames (used in TPU mode).\n      channel_shift_fraction: Fraction of channels that are temporally shifted,\n        if `channel_shift_fraction` is 0, a regular ResNet is returned.\n      width_mult: Whether or not to use a width multiplier.\n      name: The name of the module.\n\n    Raises:\n      ValueError: If `channel_shift_fraction` or `depth` has invalid value.\n    \"\"\"\n    super().__init__(name=name)\n\n    if not 0. <= channel_shift_fraction <= 1.0:\n      raise ValueError(\n          f'channel_shift_fraction ({channel_shift_fraction})'\n          ' has to be in [0, 1].')\n\n    self._num_frames = num_frames\n\n    self._channels = (256, 512, 1024, 2048)\n    self._strides = (1, 2, 2, 2)\n\n    num_blocks = {\n        50: (3, 4, 6, 3),\n        101: (3, 4, 23, 3),\n        152: (3, 8, 36, 3),\n        200: (3, 24, 36, 3),\n    }\n    if depth not in num_blocks:\n      raise ValueError(\n          f'`depth` should be in {list(num_blocks.keys())} ({depth} given).')\n    self._num_blocks = num_blocks[depth]\n\n    self._width_mult = width_mult\n    self._channel_shift_fraction = channel_shift_fraction\n    self._normalize_fn = normalize_fn\n\n  def __call__(\n      self,\n      inputs: types.TensorLike,\n      is_training: bool = True,\n      final_endpoint: str = 'Embeddings') -> jnp.ndarray:\n    \"\"\"Connects the TSM ResNetV2 module into the graph.\n\n    Args:\n      inputs: A 4-D float array of shape `[B, H, W, C]`.\n      is_training: Whether to use training mode.\n      final_endpoint: Up to which endpoint to run / return.\n\n    Returns:\n      Network output at location `final_endpoint`. A float array which shape\n      depends on `final_endpoint`.\n\n    Raises:\n      ValueError: If `final_endpoint` is not recognized.\n    \"\"\"\n\n    # Prepare inputs for TSM.\n    inputs, tsm_mode, num_frames = tsmu.prepare_inputs(inputs)\n    num_frames = num_frames or self._num_frames\n\n    self._final_endpoint = final_endpoint\n    if self._final_endpoint not in self.VALID_ENDPOINTS:\n      raise ValueError(f'Unknown final endpoint {self._final_endpoint}')\n\n    # Stem convolution.\n    end_point = 'tsm_resnet_stem'\n    net = hk.Conv2D(\n        output_channels=64 * self._width_mult,\n        kernel_shape=7,\n        stride=2,\n        with_bias=False,\n        name=end_point,\n        padding='SAME')(\n            inputs)\n    net = hk.MaxPool(\n        window_shape=(1, 3, 3, 1),\n        strides=(1, 2, 2, 1),\n        padding='SAME')(\n            net)\n    if self._final_endpoint == end_point:\n      return net\n\n    # Residual block.\n    for unit_id, (channels, num_blocks, stride) in enumerate(\n        zip(self._channels, self._num_blocks, self._strides)):\n      end_point = f'tsm_resnet_unit_{unit_id}'\n      net = TSMResNetUnit(\n          output_channels=channels * self._width_mult,\n          num_blocks=num_blocks,\n          stride=stride,\n          normalize_fn=self._normalize_fn,\n          channel_shift_fraction=self._channel_shift_fraction,\n          num_frames=num_frames,\n          tsm_mode=tsm_mode,\n          name=end_point)(\n              net, is_training=is_training)\n      if self._final_endpoint == end_point:\n        return net\n\n    if self._normalize_fn is not None:\n      net = self._normalize_fn(net, is_training=is_training)\n    net = jax.nn.relu(net)\n\n    end_point = 'last_conv'\n    if self._final_endpoint == end_point:\n      return net\n    net = jnp.mean(net, axis=(1, 2))\n    # Prepare embedding outputs for TSM (temporal average of features).\n    net = tsmu.prepare_outputs(net, tsm_mode, num_frames)\n    assert self._final_endpoint == 'Embeddings'\n    return net\n"
  },
  {
    "path": "mmv/models/tsm_resnet_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Tests for TSM ResNet model.\"\"\"\n\nfrom absl.testing import absltest\nfrom absl.testing import parameterized\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\n\nfrom mmv.models import tsm_resnet\n\n\nclass TSMResNetTest(parameterized.TestCase):\n\n  @parameterized.parameters(\n      ('tsm_resnet_stem', (2 * 32, 56, 56, 64)),\n      ('tsm_resnet_unit_0', (2 * 32, 56, 56, 256)),\n      ('tsm_resnet_unit_1', (2 * 32, 28, 28, 512)),\n      ('tsm_resnet_unit_2', (2 * 32, 14, 14, 1024)),\n      ('tsm_resnet_unit_3', (2 * 32, 7, 7, 2048)),\n      ('last_conv', (2 * 32, 7, 7, 2048)),\n      ('Embeddings', (2, 2048)),\n  )\n  def test_output_dimension(self, final_endpoint, expected_shape):\n    input_shape = (2, 32, 224, 224, 3)\n\n    def f():\n      data = jnp.zeros(input_shape)\n      net = tsm_resnet.TSMResNetV2()\n      return net(data, final_endpoint=final_endpoint)\n\n    init_fn, apply_fn = hk.transform(f)\n    out = apply_fn(init_fn(jax.random.PRNGKey(42)), None)\n    self.assertEqual(out.shape, expected_shape)\n\n  def test_tpu_mode(self):\n    input_shape = (32 * 2, 224, 224, 3)\n\n    def f():\n      data = jnp.zeros(input_shape)\n      net = tsm_resnet.TSMResNetV2(num_frames=32)\n      return net(data, final_endpoint='Embeddings')\n\n    init_fn, apply_fn = hk.transform(f)\n    out = apply_fn(init_fn(jax.random.PRNGKey(42)), None)\n    self.assertEqual(out.shape, (2, 2048))\n\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "mmv/models/tsm_utils.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Utils functions for TSM.\"\"\"\n\nfrom typing import Tuple\n\nimport jax\nimport jax.numpy as jnp\n\nfrom mmv.models import types\n\n\ndef prepare_inputs(\n    inputs: types.TensorLike) -> Tuple[jnp.ndarray, str, int]:\n  \"\"\"Deduces input mode for TSM.\"\"\"\n  # Deduce if we run on TPU based on input shape.\n  if len(inputs.shape) == 5:\n    # Input is given in the standard [B, T, H, W, 3] format.\n    tsm_mode = 'gpu'\n    num_frames = inputs.shape[1]\n    inputs = jnp.reshape(inputs, [-1] + list(inputs.shape[2:]))\n  else:\n    # Input is given in the [T * B, H, W, 3] format.\n    tsm_mode = 'tpu'\n    num_frames = None\n  return inputs, tsm_mode, num_frames\n\n\ndef prepare_outputs(outputs: types.TensorLike,\n                    tsm_mode: str,\n                    num_frames: int) -> jnp.ndarray:\n  \"\"\"Processes output of TSM by averaging representations over time axis.\"\"\"\n  n_channels = outputs.shape[-1]\n  if tsm_mode == 'tpu':\n    outputs = jnp.reshape(outputs, [num_frames, -1, n_channels])\n    outputs = jnp.mean(outputs, axis=0)\n  elif tsm_mode == 'gpu':\n    outputs = jnp.reshape(outputs, [-1, num_frames, n_channels])\n    outputs = jnp.mean(outputs, axis=1)\n  else:\n    raise ValueError(\n        f'`tsm_mode` should be \\'tpu\\' or \\'gpu\\' ({tsm_mode} given)')\n  return outputs\n\n\ndef apply_temporal_shift(\n    x: types.TensorLike,\n    tsm_mode: str,\n    num_frames: int,\n    channel_shift_fraction: float = 0.125) -> jnp.ndarray:\n  \"\"\"Performs a temporal shift: https://arxiv.org/abs/1811.08383 with mode.\"\"\"\n  if tsm_mode == 'tpu':\n    outputs = temporal_shift_tpu(x, num_frames, channel_shift_fraction)\n  elif tsm_mode == 'gpu':\n    outputs = temporal_shift_gpu(x, num_frames, channel_shift_fraction)\n  else:\n    raise ValueError(\n        f'`tsm_mode` should be \\'tpu\\' or \\'gpu\\' ({tsm_mode} given)')\n  return outputs\n\n\ndef temporal_shift_gpu(\n    x: types.TensorLike,\n    num_frames: int,\n    channel_shift_fraction: float = 0.125) -> jnp.ndarray:\n  \"\"\"Performs a temporal shift: https://arxiv.org/abs/1811.08383.\"\"\"\n  # B, T, H, W, C = batch_size, num_frames, im_height, im_width, channels\n  # Input is (B * T, H, W, C)\n  orig_shp = tuple(x.shape)\n  reshaped_x = jnp.reshape(x, (-1, num_frames) + orig_shp[1:])\n  n_channels = orig_shp[-1]\n  n_shift = int(n_channels * channel_shift_fraction)\n\n  new_shp = tuple(reshaped_x.shape)\n\n  # shifted_backward = reshaped_x[:, 1:, :, :, -n_shift:]\n  shifted_backward = jax.lax.slice(\n      reshaped_x, (0, 1, 0, 0, new_shp[4] - n_shift),\n      (new_shp[0], new_shp[1], new_shp[2], new_shp[3], new_shp[4]))\n  shifted_backward_padding = ((0, 0), (0, 1), (0, 0), (0, 0), (0, 0))\n  shifted_backward = jnp.pad(shifted_backward, shifted_backward_padding)\n\n  # shifted_forward = reshaped_x[:, :-1, :, :, :n_shift]\n  shifted_forward = jax.lax.slice(\n      reshaped_x, (0, 0, 0, 0, 0),\n      (new_shp[0], new_shp[1] - 1, new_shp[2], new_shp[3], n_shift))\n  shifted_forward_padding = ((0, 0), (1, 0), (0, 0), (0, 0), (0, 0))\n  shifted_forward = jnp.pad(shifted_forward, shifted_forward_padding)\n\n  no_shift = reshaped_x[:, :, :, :, n_shift:-n_shift]\n  shifted_x = jnp.concatenate([shifted_backward, no_shift, shifted_forward],\n                              axis=4)\n  return jnp.reshape(shifted_x, (-1,) + orig_shp[1:])\n\n\ndef temporal_shift_tpu(\n    x: types.TensorLike,\n    num_frames: int,\n    channel_shift_fraction: float = 0.125) -> jnp.ndarray:\n  \"\"\"Performs a temporal shift: https://arxiv.org/abs/1811.08383.\n\n    TPU optimized version of TSM. Reshape is avoided by having the images\n    reshaped in [T * B, :] so that frames corresponding to same time frame in\n    videos are contiguous in memory. Thanks to cr/288510308 which allows to fuse\n    pad->slice into convolution, we reformulate the slice pad into a pad then\n    slice. Finally, to avoid concatenate that prevent some fusion from happening\n    we simply sum masked version of the features.\n  Args:\n    x: Input expected to be [T * B, H, W, C] (where the batch has been reshaped\n      from a time major version of the input).\n    num_frames: number of frames T per video.\n    channel_shift_fraction: fraction of the channel to shift forward and\n      backward.\n\n  Returns:\n      The temporal shifted version of x.\n  \"\"\"\n  # B, T, H, W, C = batch_size, num_frames, im_height, im_width, channels\n  # Input is (T * B, H, W, C)\n  original_shape = list(x.shape)\n\n  batch_size = int(original_shape[0] / num_frames)\n  n_channels = int(original_shape[-1])\n  n_shift = int(n_channels * channel_shift_fraction)\n\n  # Cast to bfloat16.\n  x = x.astype(jnp.bfloat16)\n\n  # For the following, assume that x has 3 channels [x1, x2, x3] and n_shift=1.\n  # Shift backward, we first pad by zeros [x1, x2, x3, 0, 0].\n  orig_shp = list(x.shape)\n\n  shifted_backward_padding = ((0, batch_size, 0), (0, 0, 0), (0, 0, 0),\n                              (0, n_channels - n_shift, 0))\n  x_backward_padding = jax.lax.pad(\n      x,\n      padding_value=jnp.bfloat16(0.),\n      padding_config=shifted_backward_padding)\n  # The following shift gets to [x3^+1, 0, 0] (where +1 means from the future).\n  shifted_backward = jax.lax.slice(x_backward_padding,\n                                   (batch_size, 0, 0, n_channels - n_shift),\n                                   (orig_shp[0] + batch_size, orig_shp[1],\n                                    orig_shp[2], 2 * n_channels - n_shift))\n  # Shift forward, we first pad by zeros [0, 0, x1, x2, x3].\n  shifted_forward_padding = ((batch_size, 0, 0), (0, 0, 0), (0, 0, 0),\n                             (n_channels - n_shift, 0, 0))\n  x_forward_padding = jax.lax.pad(\n      x,\n      padding_value=jnp.bfloat16(0.),\n      padding_config=shifted_forward_padding)\n  # The following shift gets to [0, 0, x1^-1] (where -1 means from the past).\n  shifted_forward = jax.lax.slice(\n      x_forward_padding, (0, 0, 0, 0),\n      (orig_shp[0], orig_shp[1], orig_shp[2], n_channels))\n  # No shift is in the middle, this gets [0, x2, 0].\n  mask_noshift = (jnp.reshape((jnp.arange(n_channels) >= n_shift) &\n                              (jnp.arange(n_channels) < n_channels - n_shift),\n                              (1, 1, 1, -1))).astype(jnp.bfloat16)\n  no_shift = mask_noshift * x\n  # By summing everything together, we end up with [x3^+1, x2, x1^-1].\n  # Note: channels have been reordered but that doesn't matter for the model.\n  shifted_x = shifted_backward + shifted_forward + no_shift\n\n  return shifted_x.astype(jnp.float32)\n"
  },
  {
    "path": "mmv/models/tsm_utils_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Tests for tsm_utils.\"\"\"\n\nfrom absl.testing import absltest\nfrom absl.testing import parameterized\n\nimport jax.numpy as jnp\nimport numpy as np\n\nfrom mmv.models import tsm_utils\n\n\nclass TsmUtilsTest(parameterized.TestCase):\n\n  @parameterized.parameters(\n      ((2, 32, 224, 224, 3), 'gpu', (2 * 32, 224, 224, 3), 32),\n      ((32, 224, 224, 3), 'tpu', (32, 224, 224, 3), None),\n  )\n  def test_prepare_inputs(self, input_shape, expected_mode, expected_shape,\n                          expected_num_frames):\n\n    data = jnp.zeros(input_shape)\n    out, mode, num_frames = tsm_utils.prepare_inputs(data)\n    self.assertEqual(out.shape, expected_shape)\n    self.assertEqual(mode, expected_mode)\n    self.assertEqual(num_frames, expected_num_frames)\n\n  def test_prepare_outputs(self):\n    data = jnp.concatenate([jnp.zeros(4), jnp.ones(4)]).reshape(4, 2)\n    out_gpu = tsm_utils.prepare_outputs(data, 'gpu', 2)\n    out_tpu = tsm_utils.prepare_outputs(data, 'tpu', 2)\n    expected_gpu = np.concatenate([np.zeros(2), np.ones(2)]).reshape(2, 2)\n    expected_tpu = 0.5 * jnp.ones((2, 2))\n    np.testing.assert_allclose(out_gpu, expected_gpu)\n    np.testing.assert_allclose(out_tpu, expected_tpu)\n\n  def test_apply_tsm(self):\n    shape = (32, 224, 224, 16)\n    data = jnp.zeros(shape)\n    out_gpu = tsm_utils.apply_temporal_shift(data, 'gpu', 16)\n    out_tpu = tsm_utils.apply_temporal_shift(data, 'tpu', 16)\n    self.assertEqual(out_gpu.shape, shape)\n    self.assertEqual(out_tpu.shape, shape)\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "mmv/models/types.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Type Aliases.\"\"\"\n\nfrom typing import Callable, Tuple, Union\n\nimport jax\nimport numpy as np\nimport optax\n\nTensorLike = Union[np.ndarray, jax.Array]\n\nActivationFn = Callable[[TensorLike], TensorLike]\nGatingFn = Callable[[TensorLike], TensorLike]\nNetworkFn = Callable[[TensorLike], TensorLike]\n\n# Callable doesn't allow kwargs to be used, and we often want to\n# pass in is_training=..., so ignore the arguments for the sake of pytype.\nNormalizeFn = Callable[..., TensorLike]\n\nOptState = Tuple[optax.TraceState, optax.ScaleByScheduleState, optax.ScaleState]\n\n\n"
  },
  {
    "path": "mmv/requirements.txt",
    "content": "dm-haiku\ndm-tree\njax\njaxlib\nnumpy>=1.16\noptax\nsklearn\ntensorflow\ntensorflow_datasets\n"
  },
  {
    "path": "mmv/utils/checkpoint.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Checkpoint restoring utilities.\"\"\"\n\nfrom absl import logging\nimport dill\n\n\ndef load_checkpoint(checkpoint_path):\n  try:\n    with open(checkpoint_path, 'rb') as checkpoint_file:\n      checkpoint_data = dill.load(checkpoint_file)\n      logging.info('Loading checkpoint from %s', checkpoint_path)\n      return checkpoint_data\n  except FileNotFoundError:\n    return None\n"
  },
  {
    "path": "mmv/utils/ucf101_dataset.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Ucf101 with custom decoding params.\"\"\"\n\nimport tensorflow as tf\nimport tensorflow_datasets as tfds\n\n# Utilities functions.\n\ntf.compat.v1.enable_eager_execution()\n\n_CITATION = \"\"\"\\\n@article{DBLP:journals/corr/abs-1212-0402,\n  author    = {Khurram Soomro and\n               Amir Roshan Zamir and\n               Mubarak Shah},\n  title     = {{UCF101:} {A} Dataset of 101 Human Actions Classes From Videos in\n               The Wild},\n  journal   = {CoRR},\n  volume    = {abs/1212.0402},\n  year      = {2012},\n  url       = {http://arxiv.org/abs/1212.0402},\n  archivePrefix = {arXiv},\n  eprint    = {1212.0402},\n  timestamp = {Mon, 13 Aug 2018 16:47:45 +0200},\n  biburl    = {https://dblp.org/rec/bib/journals/corr/abs-1212-0402},\n  bibsource = {dblp computer science bibliography, https://dblp.org}\n}\n\"\"\"\n\n_LABELS_FNAME = 'video/ucf101_labels.txt'\n\n\nclass ModUcf101(tfds.video.Ucf101):\n  \"\"\"Ucf101 action recognition dataset with better quality.\n  \"\"\"\n\n  def _info(self):\n\n    ffmpeg_extra_args = ('-qscale:v', '2', '-r', '25', '-t', '00:00:20')\n\n    video_shape = (\n        None, self.builder_config.height, self.builder_config.width, 3)\n    labels_names_file = tfds.core.tfds_path(_LABELS_FNAME)\n    features = tfds.features.FeaturesDict({\n        'video': tfds.features.Video(video_shape,\n                                     ffmpeg_extra_args=ffmpeg_extra_args,\n                                     encoding_format='jpeg'),  # pytype: disable=wrong-arg-types  # gen-stub-imports\n        'label': tfds.features.ClassLabel(names_file=labels_names_file),\n    })\n    return tfds.core.DatasetInfo(\n        builder=self,\n        description='A 101-label video classification dataset.',\n        features=features,\n        homepage='https://www.crcv.ucf.edu/data-sets/ucf101/',\n        citation=_CITATION,\n    )\n"
  },
  {
    "path": "neural_mip_solving/README.md",
    "content": "# Neural MIP Solving - NN Verification Dataset\n\nThis is the “Neural Network Verification” dataset used in the paper\n\n[Solving Mixed Integer Programs Using Neural Networks (Nair et al., 2020)](https://arxiv.org/abs/2012.13349).\n\nIt contains a set of mixed integer programs (MIPs) for the problem of verifying\na neural network’s robustness to perturbations to its inputs. The MIP\nformulation is described in the paper\n[On the Effectiveness of Interval Bound Propagation for Training Verifiably Robust Models (Gowal et al., 2018)](https://arxiv.org/abs/1810.12715).\n\nThis dataset corresponds to MIPs defined for\nverifying a neural network with the architecture labelled as “small” in Table 1\nof Gowal et al., 2018, and trained on the MNIST image dataset. The code used to\ntrain the neural network to be verified is available at\nhttps://github.com/deepmind/interval-bound-propagation. The MIPs are split into\nthe same training, validation, and test sets as that in Nair et al., 2020.\n\n\n## Dataset Location\n\nThe dataset is available in the following\n[link](https://storage.cloud.google.com/neural-mip-solving/nn_verification.tar.gz)\n\n## Dataset Metadata\n\nThe following table is necessary for this dataset to be indexed by search\nengines such as <a href=\"https://g.co/datasetsearch\">Google Dataset Search</a>.\n<div itemscope itemtype=\"http://schema.org/Dataset\">\n<table>\n  <tr>\n    <th>property</th>\n    <th>value</th>\n  </tr>\n  <tr>\n    <td>name</td>\n    <td><code itemprop=\"name\">Neural Network Verification Dataset</code></td>\n  </tr>\n  <tr>\n    <td>url</td>\n    <td><code itemprop=\"url\">https://github.com/deepmind/deepmind-research/tree/master/neural_mip_solving</code></td>\n  </tr>\n  <tr>\n    <td>sameAs</td>\n    <td><code itemprop=\"sameAs\">https://github.com/deepmind/deepmind-research/tree/master/neural_mip_solving</code></td>\n  </tr>\n  <tr>\n    <td>description</td>\n    <td><code itemprop=\"description\">\n      This dataset contains a set of mixed integer programs (MIPs) for the\n      problem of verifying a neural network’s robustness to perturbations of its\n      inputs. The MIPs are encoded in LP format.</code></td>\n  </tr>\n  <tr>\n    <td>license</td>\n    <td><code itemprop=\"license\">https://creativecommons.org/licenses/by/4.0/legalcode\n  </code></td>\n  </tr>\n  <tr>\n    <td>provider</td>\n    <td>\n      <div itemscope itemtype=\"http://schema.org/Organization\" itemprop=\"provider\">\n        <table>\n          <tr>\n            <th>property</th>\n            <th>value</th>\n          </tr>\n          <tr>\n            <td>name</td>\n            <td><code itemprop=\"name\">DeepMind</code></td>\n          </tr>\n          <tr>\n            <td>sameAs</td>\n            <td><code itemprop=\"sameAs\">https://en.wikipedia.org/wiki/DeepMind</code></td>\n          </tr>\n        </table>\n      </div>\n    </td>\n  </tr>\n  <tr>\n    <td>citation</td>\n    <td><code itemprop=\"citation\">https://arxiv.org/abs/2012.13349</code></td>\n  </tr>\n</table>\n</div>\n\n\n## Citing this work\n\nIf you use this dataset in your work, we ask you to cite this paper:\n\n```\n@misc{nair2020solving,\n      title={Solving Mixed Integer Programs Using Neural Networks},\n      author={Vinod Nair and Sergey Bartunov and Felix Gimeno and Ingrid von Glehn and Pawel Lichocki and Ivan Lobov and Brendan O'Donoghue and Nicolas Sonnerat and Christian Tjandraatmadja and Pengming Wang and Ravichandra Addanki and Tharindi Hapuarachchi and Thomas Keck and James Keeling and Pushmeet Kohli and Ira Ktena and Yujia Li and Oriol Vinyals and Yori Zwols},\n      year={2020},\n      eprint={2012.13349},\n      archivePrefix={arXiv},\n      primaryClass={math.OC}\n}\n```\n\n## License\n\nThis dataset is made available under the terms of the Creative Commons\nAttribution 4.0 International (CC BY 4.0) license.\n\nYou can find details at: https://creativecommons.org/licenses/by/4.0/legalcode\n\n## Disclaimer\n\nThis is not an officially supported Google product.\n"
  },
  {
    "path": "nfnets/README.md",
    "content": "# Code for Normalizer-Free Networks\nThis repository contains code for the ICLR 2021 paper\n[\"Characterizing signal propagation to close the performance gap in unnormalized\nResNets,\"](https://arxiv.org/abs/2102.06171) by Andrew Brock, Soham De, and\nSamuel L. Smith, and the arXiv preprint [\"High-Performance Large-Scale Image\nRecognition Without Normalization\"](http://dpmd.ai/06171) by\nAndrew Brock, Soham De, Samuel L. Smith, and Karen Simonyan.\n\n\n## Running this code\nUsing `run.sh` will create and activate a virtualenv, install all necessary\ndependencies and run a test program to ensure that you can import all the\nmodules and take a single experiment step. To train with this code, use this\nvirtualenv and use one of the experiment.py files in combination with\n[JAXline](https://github.com/deepmind/jaxline). The provided\ndemo Colab can be run online, or by starting a jupyter notebook within this\nvirtualenv.\n\nNote that you will need a local copy of ImageNet compatible with the TFDS format\nused in dataset.py in order to train on ImageNet.\n\n\n## Pre-Trained Weights\n\nWe provide pre-trained weights for NFNet-F0 through F5 (trained without SAM),\nand for NFNet-F6 trained with SAM. All models are pre-trained on ImageNet for\n360 epochs at batch size 4096, and are provided as numpy files containing\nparameter trees compatible with haiku. In utils.py we provide a\n`load_haiku_file` function which loads these parameter trees, and\n`flatten_haiku_tree` to convert these to flat dictionaries\nwhich may prove easier to port to other frameworks. Note that we do not provide\nmodel `states`, as these models, lacking batchnorm, do not have running stats.\nNote also that the conv layer weights are in the format HWIO, so for frameworks\nlike PyTorch which use OIHW you'll need to swap the axes appropriately to the\nlayout you use.\n\n\n| Model | #FLOPs | #Params | Top-1 | Top-5 | TPUv3 Train | GPU Train | link |\n|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\nF0 | 12.38B | 71.5M | 83.6 | 96.8 | 73.3ms | 56.7ms | [haiku](https://storage.googleapis.com/dm-nfnets/F0_haiku.npz)\nF1 | 35.54B | 132.6M | 84.7 | 97.1 | 158.5ms | 133.9ms | [haiku](https://storage.googleapis.com/dm-nfnets/F1_haiku.npz)\nF2 | 62.59B | 193.8M | 85.1 | 97.3 | 295.8ms | 226.3ms | [haiku](https://storage.googleapis.com/dm-nfnets/F2_haiku.npz)\nF3 | 114.76B | 254.9M | 85.7 | 97.5 | 532.2ms | 524.5ms | [haiku](https://storage.googleapis.com/dm-nfnets/F3_haiku.npz)\nF4 | 215.24B | 316.1M | 85.9 | 97.6 | 1033.3ms | 1190.6ms | [haiku](https://storage.googleapis.com/dm-nfnets/F4_haiku.npz)\nF5 | 289.76B | 377.2M | 86.0 | 97.6 | 1398.5ms | 2177.1ms | [haiku](https://storage.googleapis.com/dm-nfnets/F5_haiku.npz)\nF6+SAM | 377.28B | 438.4M | 86.5 | 97.9 | 2774.1ms | - | [haiku](https://storage.googleapis.com/dm-nfnets/F6_haiku.npz)\n\n\n## Demo Colab [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind-research/blob/master/nfnets/nfnet_demo_colab.ipynb)\n\nWe also include a Colab notebook with a demo showing how to run an NFNet to\nclassify an image.\n\n\n## Giving Credit\n\nIf you use this code in your work, we ask you to please cite one or both of the\nfollowing papers.\n\nThe reference for the Normalizer-Free structure and NF-ResNets or NF-Regnets:\n\n```\n@inproceedings{brock2021characterizing,\n  author={Andrew Brock and Soham De and Samuel L. Smith},\n  title={Characterizing signal propagation to close the performance gap in\n  unnormalized ResNets},\n  booktitle={9th International Conference on Learning Representations, {ICLR}},\n  year={2021}\n}\n```\n\nThe reference for Adaptive Gradient Clipping (AGC) and the NFNets models:\n\n```\n@article{brock2021high,\n  author={Andrew Brock and Soham De and Samuel L. Smith and Karen Simonyan},\n  title={High-Performance Large-Scale Image Recognition Without Normalization},\n  journal={arXiv preprint arXiv:2102.06171},\n  year={2021}\n}\n```\n\n"
  },
  {
    "path": "nfnets/agc_optax.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\n\"\"\"Adaptive gradient clipping transform for Optax.\"\"\"\nimport jax\nimport jax.numpy as jnp\nimport optax\n\n\ndef compute_norm(x, axis, keepdims):\n  \"\"\"Axis-wise euclidean norm.\"\"\"\n  return jnp.sum(x ** 2, axis=axis, keepdims=keepdims) ** 0.5\n\n\ndef unitwise_norm(x):\n  \"\"\"Compute norms of each output unit separately, also for linear layers.\"\"\"\n  if len(jnp.squeeze(x).shape) <= 1:  # Scalars and vectors\n    axis = None\n    keepdims = False\n  elif len(x.shape) in [2, 3]:  # Linear layers of shape IO or multihead linear\n    axis = 0\n    keepdims = True\n  elif len(x.shape) == 4:  # Conv kernels of shape HWIO\n    axis = [0, 1, 2,]\n    keepdims = True\n  else:\n    raise ValueError(f'Got a parameter with shape not in [1, 2, 4]! {x}')\n  return compute_norm(x, axis, keepdims)\n\n\ndef my_clip(g_norm, max_norm, grad):\n  \"\"\"Applies my gradient clipping unit-wise.\"\"\"\n  trigger = g_norm < max_norm\n  # This little max(., 1e-6) is distinct from the normal eps and just prevents\n  # division by zero. It technically should be impossible to engage.\n  clipped_grad = grad * (max_norm / jnp.maximum(g_norm, 1e-6))\n  return jnp.where(trigger, grad, clipped_grad)\n\n\ndef adaptive_grad_clip(clip, eps=1e-3) -> optax.GradientTransformation:\n  \"\"\"Clip updates to be at most clipping * parameter_norm.\n\n  References:\n    [Brock, Smith, De, Simonyan 2021] High-Performance Large-Scale Image\n    Recognition Without Normalization.\n\n  Args:\n    clip: Maximum allowed ratio of update norm to parameter norm.\n    eps: epsilon term to prevent clipping of zero-initialized params.\n\n  Returns:\n    An (init_fn, update_fn) tuple.\n  \"\"\"\n\n  def init_fn(_):\n    return optax.ClipByGlobalNormState()\n\n  def update_fn(updates, state, params):\n    g_norm = jax.tree_map(unitwise_norm, updates)\n    p_norm = jax.tree_map(unitwise_norm, params)\n    # Maximum allowable norm\n    max_norm = jax.tree_map(lambda x: clip * jnp.maximum(x, eps), p_norm)\n    # If grad norm > clipping * param_norm, rescale\n    updates = jax.tree_map(my_clip, g_norm, max_norm, updates)\n    return updates, state\n\n  return optax.GradientTransformation(init_fn, update_fn)\n"
  },
  {
    "path": "nfnets/autoaugment.py",
    "content": "# Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\n\"\"\"AutoAugment and RandAugment policies for enhanced image preprocessing.\n\nAutoAugment Reference: https://arxiv.org/abs/1805.09501\nRandAugment Reference: https://arxiv.org/abs/1909.13719\n\"\"\"\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport inspect\nimport math\nfrom ml_collections import config_dict\nimport tensorflow.compat.v1 as tf\nfrom tensorflow_addons import image as contrib_image\n# pylint: disable=deprecated-method\n\n# This signifies the max integer that the controller RNN could predict for the\n# augmentation scheme.\n_MAX_LEVEL = 10.\n\n\ndef policy_v0():\n  \"\"\"Autoaugment policy that was used in AutoAugment Paper.\"\"\"\n  # Each tuple is an augmentation operation of the form\n  # (operation, probability, magnitude). Each element in policy is a\n  # sub-policy that will be applied sequentially on the image.\n  policy = [\n      [('Equalize', 0.8, 1), ('ShearY', 0.8, 4)],\n      [('Color', 0.4, 9), ('Equalize', 0.6, 3)],\n      [('Color', 0.4, 1), ('Rotate', 0.6, 8)],\n      [('Solarize', 0.8, 3), ('Equalize', 0.4, 7)],\n      [('Solarize', 0.4, 2), ('Solarize', 0.6, 2)],\n      [('Color', 0.2, 0), ('Equalize', 0.8, 8)],\n      [('Equalize', 0.4, 8), ('SolarizeAdd', 0.8, 3)],\n      [('ShearX', 0.2, 9), ('Rotate', 0.6, 8)],\n      [('Color', 0.6, 1), ('Equalize', 1.0, 2)],\n      [('Invert', 0.4, 9), ('Rotate', 0.6, 0)],\n      [('Equalize', 1.0, 9), ('ShearY', 0.6, 3)],\n      [('Color', 0.4, 7), ('Equalize', 0.6, 0)],\n      [('Posterize', 0.4, 6), ('AutoContrast', 0.4, 7)],\n      [('Solarize', 0.6, 8), ('Color', 0.6, 9)],\n      [('Solarize', 0.2, 4), ('Rotate', 0.8, 9)],\n      [('Rotate', 1.0, 7), ('TranslateY', 0.8, 9)],\n      [('ShearX', 0.0, 0), ('Solarize', 0.8, 4)],\n      [('ShearY', 0.8, 0), ('Color', 0.6, 4)],\n      [('Color', 1.0, 0), ('Rotate', 0.6, 2)],\n      [('Equalize', 0.8, 4), ('Equalize', 0.0, 8)],\n      [('Equalize', 1.0, 4), ('AutoContrast', 0.6, 2)],\n      [('ShearY', 0.4, 7), ('SolarizeAdd', 0.6, 7)],\n      [('Posterize', 0.8, 2), ('Solarize', 0.6, 10)],\n      [('Solarize', 0.6, 8), ('Equalize', 0.6, 1)],\n      [('Color', 0.8, 6), ('Rotate', 0.4, 5)],\n  ]\n  return policy\n\n\ndef policy_vtest():\n  \"\"\"Autoaugment test policy for debugging.\"\"\"\n  # Each tuple is an augmentation operation of the form\n  # (operation, probability, magnitude). Each element in policy is a\n  # sub-policy that will be applied sequentially on the image.\n  policy = [\n      [('TranslateX', 1.0, 4), ('Equalize', 1.0, 10)],\n  ]\n  return policy\n\n\ndef blend(image1, image2, factor):\n  \"\"\"Blend image1 and image2 using 'factor'.\n\n  Factor can be above 0.0.  A value of 0.0 means only image1 is used.\n  A value of 1.0 means only image2 is used.  A value between 0.0 and\n  1.0 means we linearly interpolate the pixel values between the two\n  images.  A value greater than 1.0 \"extrapolates\" the difference\n  between the two pixel values, and we clip the results to values\n  between 0 and 255.\n\n  Args:\n    image1: An image Tensor of type uint8.\n    image2: An image Tensor of type uint8.\n    factor: A floating point value above 0.0.\n\n  Returns:\n    A blended image Tensor of type uint8.\n  \"\"\"\n  if factor == 0.0:\n    return tf.convert_to_tensor(image1)\n  if factor == 1.0:\n    return tf.convert_to_tensor(image2)\n\n  image1 = tf.to_float(image1)\n  image2 = tf.to_float(image2)\n\n  difference = image2 - image1\n  scaled = factor * difference\n\n  # Do addition in float.\n  temp = tf.to_float(image1) + scaled\n\n  # Interpolate\n  if factor > 0.0 and factor < 1.0:\n    # Interpolation means we always stay within 0 and 255.\n    return tf.cast(temp, tf.uint8)\n\n  # Extrapolate:\n  #\n  # We need to clip and then cast.\n  return tf.cast(tf.clip_by_value(temp, 0.0, 255.0), tf.uint8)\n\n\ndef cutout(image, pad_size, replace=0):\n  \"\"\"Apply cutout (https://arxiv.org/abs/1708.04552) to image.\n\n  This operation applies a (2*pad_size x 2*pad_size) mask of zeros to\n  a random location within `img`. The pixel values filled in will be of the\n  value `replace`. The located where the mask will be applied is randomly\n  chosen uniformly over the whole image.\n\n  Args:\n    image: An image Tensor of type uint8.\n    pad_size: Specifies how big the zero mask that will be generated is that\n      is applied to the image. The mask will be of size\n      (2*pad_size x 2*pad_size).\n    replace: What pixel value to fill in the image in the area that has\n      the cutout mask applied to it.\n\n  Returns:\n    An image Tensor that is of type uint8.\n  \"\"\"\n  image_height = tf.shape(image)[0]\n  image_width = tf.shape(image)[1]\n\n  # Sample the center location in the image where the zero mask will be applied.\n  cutout_center_height = tf.random_uniform(\n      shape=[], minval=0, maxval=image_height,\n      dtype=tf.int32)\n\n  cutout_center_width = tf.random_uniform(\n      shape=[], minval=0, maxval=image_width,\n      dtype=tf.int32)\n\n  lower_pad = tf.maximum(0, cutout_center_height - pad_size)\n  upper_pad = tf.maximum(0, image_height - cutout_center_height - pad_size)\n  left_pad = tf.maximum(0, cutout_center_width - pad_size)\n  right_pad = tf.maximum(0, image_width - cutout_center_width - pad_size)\n\n  cutout_shape = [image_height - (lower_pad + upper_pad),\n                  image_width - (left_pad + right_pad)]\n  padding_dims = [[lower_pad, upper_pad], [left_pad, right_pad]]\n  mask = tf.pad(\n      tf.zeros(cutout_shape, dtype=image.dtype),\n      padding_dims, constant_values=1)\n  mask = tf.expand_dims(mask, -1)\n  mask = tf.tile(mask, [1, 1, 3])\n  image = tf.where(\n      tf.equal(mask, 0),\n      tf.ones_like(image, dtype=image.dtype) * replace,\n      image)\n  return image\n\n\ndef solarize(image, threshold=128):\n  # For each pixel in the image, select the pixel\n  # if the value is less than the threshold.\n  # Otherwise, subtract the pixel from 255.\n  return tf.where(image < threshold, image, 255 - image)\n\n\ndef solarize_add(image, addition=0, threshold=128):\n  # For each pixel in the image less than threshold\n  # we add 'addition' amount to it and then clip the\n  # pixel value to be between 0 and 255. The value\n  # of 'addition' is between -128 and 128.\n  added_image = tf.cast(image, tf.int64) + addition\n  added_image = tf.cast(tf.clip_by_value(added_image, 0, 255), tf.uint8)\n  return tf.where(image < threshold, added_image, image)\n\n\ndef color(image, factor):\n  \"\"\"Equivalent of PIL Color.\"\"\"\n  degenerate = tf.image.grayscale_to_rgb(tf.image.rgb_to_grayscale(image))\n  return blend(degenerate, image, factor)\n\n\ndef contrast(image, factor):\n  \"\"\"Equivalent of PIL Contrast.\"\"\"\n  degenerate = tf.image.rgb_to_grayscale(image)\n  # Cast before calling tf.histogram.\n  degenerate = tf.cast(degenerate, tf.int32)\n\n  # Compute the grayscale histogram, then compute the mean pixel value,\n  # and create a constant image size of that value.  Use that as the\n  # blending degenerate target of the original image.\n  hist = tf.histogram_fixed_width(degenerate, [0, 255], nbins=256)\n  mean = tf.reduce_sum(tf.cast(hist, tf.float32)) / 256.0\n  degenerate = tf.ones_like(degenerate, dtype=tf.float32) * mean\n  degenerate = tf.clip_by_value(degenerate, 0.0, 255.0)\n  degenerate = tf.image.grayscale_to_rgb(tf.cast(degenerate, tf.uint8))\n  return blend(degenerate, image, factor)\n\n\ndef brightness(image, factor):\n  \"\"\"Equivalent of PIL Brightness.\"\"\"\n  degenerate = tf.zeros_like(image)\n  return blend(degenerate, image, factor)\n\n\ndef posterize(image, bits):\n  \"\"\"Equivalent of PIL Posterize.\"\"\"\n  shift = 8 - bits\n  return tf.bitwise.left_shift(tf.bitwise.right_shift(image, shift), shift)\n\n\ndef rotate(image, degrees, replace):\n  \"\"\"Rotates the image by degrees either clockwise or counterclockwise.\n\n  Args:\n    image: An image Tensor of type uint8.\n    degrees: Float, a scalar angle in degrees to rotate all images by. If\n      degrees is positive the image will be rotated clockwise otherwise it will\n      be rotated counterclockwise.\n    replace: A one or three value 1D tensor to fill empty pixels caused by\n      the rotate operation.\n\n  Returns:\n    The rotated version of image.\n  \"\"\"\n  # Convert from degrees to radians.\n  degrees_to_radians = math.pi / 180.0\n  radians = degrees * degrees_to_radians\n\n  # In practice, we should randomize the rotation degrees by flipping\n  # it negatively half the time, but that's done on 'degrees' outside\n  # of the function.\n  image = contrib_image.rotate(wrap(image), radians)\n  return unwrap(image, replace)\n\n\ndef translate_x(image, pixels, replace):\n  \"\"\"Equivalent of PIL Translate in X dimension.\"\"\"\n  image = contrib_image.translate(wrap(image), [-pixels, 0])\n  return unwrap(image, replace)\n\n\ndef translate_y(image, pixels, replace):\n  \"\"\"Equivalent of PIL Translate in Y dimension.\"\"\"\n  image = contrib_image.translate(wrap(image), [0, -pixels])\n  return unwrap(image, replace)\n\n\ndef shear_x(image, level, replace):\n  \"\"\"Equivalent of PIL Shearing in X dimension.\"\"\"\n  # Shear parallel to x axis is a projective transform\n  # with a matrix form of:\n  # [1  level\n  #  0  1].\n  image = contrib_image.transform(\n      wrap(image), [1., level, 0., 0., 1., 0., 0., 0.])\n  return unwrap(image, replace)\n\n\ndef shear_y(image, level, replace):\n  \"\"\"Equivalent of PIL Shearing in Y dimension.\"\"\"\n  # Shear parallel to y axis is a projective transform\n  # with a matrix form of:\n  # [1  0\n  #  level  1].\n  image = contrib_image.transform(\n      wrap(image), [1., 0., 0., level, 1., 0., 0., 0.])\n  return unwrap(image, replace)\n\n\ndef autocontrast(image):\n  \"\"\"Implements Autocontrast function from PIL using TF ops.\n\n  Args:\n    image: A 3D uint8 tensor.\n\n  Returns:\n    The image after it has had autocontrast applied to it and will be of type\n    uint8.\n  \"\"\"\n\n  def scale_channel(image):\n    \"\"\"Scale the 2D image using the autocontrast rule.\"\"\"\n    # A possibly cheaper version can be done using cumsum/unique_with_counts\n    # over the histogram values, rather than iterating over the entire image.\n    # to compute mins and maxes.\n    lo = tf.to_float(tf.reduce_min(image))\n    hi = tf.to_float(tf.reduce_max(image))\n\n    # Scale the image, making the lowest value 0 and the highest value 255.\n    def scale_values(im):\n      scale = 255.0 / (hi - lo)\n      offset = -lo * scale\n      im = tf.to_float(im) * scale + offset\n      im = tf.clip_by_value(im, 0.0, 255.0)\n      return tf.cast(im, tf.uint8)\n\n    result = tf.cond(hi > lo, lambda: scale_values(image), lambda: image)\n    return result\n\n  # Assumes RGB for now.  Scales each channel independently\n  # and then stacks the result.\n  s1 = scale_channel(image[:, :, 0])\n  s2 = scale_channel(image[:, :, 1])\n  s3 = scale_channel(image[:, :, 2])\n  image = tf.stack([s1, s2, s3], 2)\n  return image\n\n\ndef sharpness(image, factor):\n  \"\"\"Implements Sharpness function from PIL using TF ops.\"\"\"\n  orig_image = image\n  image = tf.cast(image, tf.float32)\n  # Make image 4D for conv operation.\n  image = tf.expand_dims(image, 0)\n  # SMOOTH PIL Kernel.\n  kernel = tf.constant(\n      [[1, 1, 1], [1, 5, 1], [1, 1, 1]], dtype=tf.float32,\n      shape=[3, 3, 1, 1]) / 13.\n  # Tile across channel dimension.\n  kernel = tf.tile(kernel, [1, 1, 3, 1])\n  strides = [1, 1, 1, 1]\n  with tf.device('/cpu:0'):\n    # Some augmentation that uses depth-wise conv will cause crashing when\n    # training on GPU. See (b/156242594) for details.\n    degenerate = tf.nn.depthwise_conv2d(\n        image, kernel, strides, padding='VALID', rate=[1, 1])\n  degenerate = tf.clip_by_value(degenerate, 0.0, 255.0)\n  degenerate = tf.squeeze(tf.cast(degenerate, tf.uint8), [0])\n\n  # For the borders of the resulting image, fill in the values of the\n  # original image.\n  mask = tf.ones_like(degenerate)\n  padded_mask = tf.pad(mask, [[1, 1], [1, 1], [0, 0]])\n  padded_degenerate = tf.pad(degenerate, [[1, 1], [1, 1], [0, 0]])\n  result = tf.where(tf.equal(padded_mask, 1), padded_degenerate, orig_image)\n\n  # Blend the final result.\n  return blend(result, orig_image, factor)\n\n\ndef equalize(image):\n  \"\"\"Implements Equalize function from PIL using TF ops.\"\"\"\n  def scale_channel(im, c):\n    \"\"\"Scale the data in the channel to implement equalize.\"\"\"\n    im = tf.cast(im[:, :, c], tf.int32)\n    # Compute the histogram of the image channel.\n    histo = tf.histogram_fixed_width(im, [0, 255], nbins=256)\n\n    # For the purposes of computing the step, filter out the nonzeros.\n    nonzero = tf.where(tf.not_equal(histo, 0))\n    nonzero_histo = tf.reshape(tf.gather(histo, nonzero), [-1])\n    step = (tf.reduce_sum(nonzero_histo) - nonzero_histo[-1]) // 255\n\n    def build_lut(histo, step):\n      # Compute the cumulative sum, shifting by step // 2\n      # and then normalization by step.\n      lut = (tf.cumsum(histo) + (step // 2)) // step\n      # Shift lut, prepending with 0.\n      lut = tf.concat([[0], lut[:-1]], 0)\n      # Clip the counts to be in range.  This is done\n      # in the C code for image.point.\n      return tf.clip_by_value(lut, 0, 255)\n\n    # If step is zero, return the original image.  Otherwise, build\n    # lut from the full histogram and step and then index from it.\n    result = tf.cond(tf.equal(step, 0),\n                     lambda: im,\n                     lambda: tf.gather(build_lut(histo, step), im))\n\n    return tf.cast(result, tf.uint8)\n\n  # Assumes RGB for now.  Scales each channel independently\n  # and then stacks the result.\n  s1 = scale_channel(image, 0)\n  s2 = scale_channel(image, 1)\n  s3 = scale_channel(image, 2)\n  image = tf.stack([s1, s2, s3], 2)\n  return image\n\n\ndef invert(image):\n  \"\"\"Inverts the image pixels.\"\"\"\n  image = tf.convert_to_tensor(image)\n  return 255 - image\n\n\ndef wrap(image):\n  \"\"\"Returns 'image' with an extra channel set to all 1s.\"\"\"\n  shape = tf.shape(image)\n  extended_channel = tf.ones([shape[0], shape[1], 1], image.dtype)\n  extended = tf.concat([image, extended_channel], 2)\n  return extended\n\n\ndef unwrap(image, replace):\n  \"\"\"Unwraps an image produced by wrap.\n\n  Where there is a 0 in the last channel for every spatial position,\n  the rest of the three channels in that spatial dimension are grayed\n  (set to 128).  Operations like translate and shear on a wrapped\n  Tensor will leave 0s in empty locations.  Some transformations look\n  at the intensity of values to do preprocessing, and we want these\n  empty pixels to assume the 'average' value, rather than pure black.\n\n\n  Args:\n    image: A 3D Image Tensor with 4 channels.\n    replace: A one or three value 1D tensor to fill empty pixels.\n\n  Returns:\n    image: A 3D image Tensor with 3 channels.\n  \"\"\"\n  image_shape = tf.shape(image)\n  # Flatten the spatial dimensions.\n  flattened_image = tf.reshape(image, [-1, image_shape[2]])\n\n  # Find all pixels where the last channel is zero.\n  alpha_channel = flattened_image[:, 3]\n\n  replace = tf.concat([replace, tf.ones([1], image.dtype)], 0)\n\n  # Where they are zero, fill them in with 'replace'.\n  flattened_image = tf.where(\n      tf.equal(alpha_channel, 0),\n      tf.ones_like(flattened_image, dtype=image.dtype) * replace,\n      flattened_image)\n\n  image = tf.reshape(flattened_image, image_shape)\n  image = tf.slice(image, [0, 0, 0], [image_shape[0], image_shape[1], 3])\n  return image\n\n\nNAME_TO_FUNC = {\n    'AutoContrast': autocontrast,\n    'Equalize': equalize,\n    'Invert': invert,\n    'Rotate': rotate,\n    'Posterize': posterize,\n    'Solarize': solarize,\n    'SolarizeAdd': solarize_add,\n    'Color': color,\n    'Contrast': contrast,\n    'Brightness': brightness,\n    'Sharpness': sharpness,\n    'ShearX': shear_x,\n    'ShearY': shear_y,\n    'TranslateX': translate_x,\n    'TranslateY': translate_y,\n    'Cutout': cutout,\n}\n\n\ndef _randomly_negate_tensor(tensor):\n  \"\"\"With 50% prob turn the tensor negative.\"\"\"\n  should_flip = tf.cast(tf.floor(tf.random_uniform([]) + 0.5), tf.bool)\n  final_tensor = tf.cond(should_flip, lambda: tensor, lambda: -tensor)\n  return final_tensor\n\n\ndef _rotate_level_to_arg(level):\n  level = (level/_MAX_LEVEL) * 30.\n  level = _randomly_negate_tensor(level)\n  return (level,)\n\n\ndef _shrink_level_to_arg(level):\n  \"\"\"Converts level to ratio by which we shrink the image content.\"\"\"\n  if level == 0:\n    return (1.0,)  # if level is zero, do not shrink the image\n  # Maximum shrinking ratio is 2.9.\n  level = 2. / (_MAX_LEVEL / level) + 0.9\n  return (level,)\n\n\ndef _enhance_level_to_arg(level):\n  return ((level/_MAX_LEVEL) * 1.8 + 0.1,)\n\n\ndef _shear_level_to_arg(level):\n  level = (level/_MAX_LEVEL) * 0.3\n  # Flip level to negative with 50% chance.\n  level = _randomly_negate_tensor(level)\n  return (level,)\n\n\ndef _translate_level_to_arg(level, translate_const):\n  level = (level/_MAX_LEVEL) * float(translate_const)\n  # Flip level to negative with 50% chance.\n  level = _randomly_negate_tensor(level)\n  return (level,)\n\n\ndef level_to_arg(hparams):\n  return {\n      'AutoContrast': lambda level: (),\n      'Equalize': lambda level: (),\n      'Invert': lambda level: (),\n      'Rotate': _rotate_level_to_arg,\n      'Posterize': lambda level: (int((level/_MAX_LEVEL) * 4),),\n      'Solarize': lambda level: (int((level/_MAX_LEVEL) * 256),),\n      'SolarizeAdd': lambda level: (int((level/_MAX_LEVEL) * 110),),\n      'Color': _enhance_level_to_arg,\n      'Contrast': _enhance_level_to_arg,\n      'Brightness': _enhance_level_to_arg,\n      'Sharpness': _enhance_level_to_arg,\n      'ShearX': _shear_level_to_arg,\n      'ShearY': _shear_level_to_arg,\n      'Cutout': lambda level: (int((level/_MAX_LEVEL) * hparams.cutout_const),),\n      # pylint:disable=g-long-lambda\n      'TranslateX': lambda level: _translate_level_to_arg(\n          level, hparams.translate_const),\n      'TranslateY': lambda level: _translate_level_to_arg(\n          level, hparams.translate_const),\n      # pylint:enable=g-long-lambda\n  }\n\n\ndef _parse_policy_info(name, prob, level, replace_value, augmentation_hparams):\n  \"\"\"Return the function that corresponds to `name` and update `level` param.\"\"\"\n  func = NAME_TO_FUNC[name]\n  args = level_to_arg(augmentation_hparams)[name](level)\n\n  # Check to see if prob is passed into function. This is used for operations\n  # where we alter bboxes independently.\n  # pytype:disable=wrong-arg-types\n  if 'prob' in inspect.getargspec(func)[0]:\n    args = tuple([prob] + list(args))\n  # pytype:enable=wrong-arg-types\n\n  # Add in replace arg if it is required for the function that is being called.\n  # pytype:disable=wrong-arg-types\n  if 'replace' in inspect.getargspec(func)[0]:\n    # Make sure replace is the final argument\n    assert 'replace' == inspect.getargspec(func)[0][-1]\n    args = tuple(list(args) + [replace_value])\n  # pytype:enable=wrong-arg-types\n\n  return (func, prob, args)\n\n\ndef _apply_func_with_prob(func, image, args, prob):\n  \"\"\"Apply `func` to image w/ `args` as input with probability `prob`.\"\"\"\n  assert isinstance(args, tuple)\n\n  # If prob is a function argument, then this randomness is being handled\n  # inside the function, so make sure it is always called.\n  # pytype:disable=wrong-arg-types\n  if 'prob' in inspect.getargspec(func)[0]:\n    prob = 1.0\n  # pytype:enable=wrong-arg-types\n\n  # Apply the function with probability `prob`.\n  should_apply_op = tf.cast(\n      tf.floor(tf.random_uniform([], dtype=tf.float32) + prob), tf.bool)\n  augmented_image = tf.cond(\n      should_apply_op,\n      lambda: func(image, *args),\n      lambda: image)\n  return augmented_image\n\n\ndef select_and_apply_random_policy(policies, image):\n  \"\"\"Select a random policy from `policies` and apply it to `image`.\"\"\"\n  policy_to_select = tf.random_uniform([], maxval=len(policies), dtype=tf.int32)\n  # Note that using tf.case instead of tf.conds would result in significantly\n  # larger graphs and would even break export for some larger policies.\n  for (i, policy) in enumerate(policies):\n    image = tf.cond(\n        tf.equal(i, policy_to_select),\n        lambda selected_policy=policy: selected_policy(image),\n        lambda: image)\n  return image\n\n\ndef build_and_apply_nas_policy(policies, image,\n                               augmentation_hparams):\n  \"\"\"Build a policy from the given policies passed in and apply to image.\n\n  Args:\n    policies: list of lists of tuples in the form `(func, prob, level)`, `func`\n      is a string name of the augmentation function, `prob` is the probability\n      of applying the `func` operation, `level` is the input argument for\n      `func`.\n    image: tf.Tensor that the resulting policy will be applied to.\n    augmentation_hparams: Hparams associated with the NAS learned policy.\n\n  Returns:\n    A version of image that now has data augmentation applied to it based on\n    the `policies` pass into the function.\n  \"\"\"\n  replace_value = [128, 128, 128]\n\n  # func is the string name of the augmentation function, prob is the\n  # probability of applying the operation and level is the parameter associated\n  # with the tf op.\n\n  # tf_policies are functions that take in an image and return an augmented\n  # image.\n  tf_policies = []\n  for policy in policies:\n    tf_policy = []\n    # Link string name to the correct python function and make sure the correct\n    # argument is passed into that function.\n    for policy_info in policy:\n      policy_info = list(policy_info) + [replace_value, augmentation_hparams]\n\n      tf_policy.append(_parse_policy_info(*policy_info))\n    # Now build the tf policy that will apply the augmentation procedue\n    # on image.\n    def make_final_policy(tf_policy_):\n      def final_policy(image_):\n        for func, prob, args in tf_policy_:\n          image_ = _apply_func_with_prob(\n              func, image_, args, prob)\n        return image_\n      return final_policy\n    tf_policies.append(make_final_policy(tf_policy))\n\n  augmented_image = select_and_apply_random_policy(\n      tf_policies, image)\n  return augmented_image\n\n\ndef distort_image_with_autoaugment(image, augmentation_name):\n  \"\"\"Applies the AutoAugment policy to `image`.\n\n  AutoAugment is from the paper: https://arxiv.org/abs/1805.09501.\n\n  Args:\n    image: `Tensor` of shape [height, width, 3] representing an image.\n    augmentation_name: The name of the AutoAugment policy to use. The available\n      options are `v0` and `test`. `v0` is the policy used for\n      all of the results in the paper and was found to achieve the best results\n      on the COCO dataset. `v1`, `v2` and `v3` are additional good policies\n      found on the COCO dataset that have slight variation in what operations\n      were used during the search procedure along with how many operations are\n      applied in parallel to a single image (2 vs 3).\n\n  Returns:\n    A tuple containing the augmented versions of `image`.\n  \"\"\"\n  available_policies = {'v0': policy_v0,\n                        'test': policy_vtest}\n  if augmentation_name not in available_policies:\n    raise ValueError('Invalid augmentation_name: {}'.format(augmentation_name))\n\n  policy = available_policies[augmentation_name]()\n  # Hparams that will be used for AutoAugment.\n  augmentation_hparams = config_dict.ConfigDict(dict(\n      cutout_const=100, translate_const=250))\n\n  return build_and_apply_nas_policy(policy, image, augmentation_hparams)\n\n\ndef distort_image_with_randaugment(image, num_layers, magnitude):\n  \"\"\"Applies the RandAugment policy to `image`.\n\n  RandAugment is from the paper https://arxiv.org/abs/1909.13719,\n\n  Args:\n    image: `Tensor` of shape [height, width, 3] representing an image.\n    num_layers: Integer, the number of augmentation transformations to apply\n      sequentially to an image. Represented as (N) in the paper. Usually best\n      values will be in the range [1, 3].\n    magnitude: Integer, shared magnitude across all augmentation operations.\n      Represented as (M) in the paper. Usually best values are in the range\n      [5, 30].\n\n  Returns:\n    The augmented version of `image`.\n  \"\"\"\n  replace_value = [128] * 3\n  tf.logging.info('Using RandAug.')\n  augmentation_hparams = config_dict.ConfigDict(dict(\n      cutout_const=40, translate_const=100))\n  available_ops = [\n      'AutoContrast', 'Equalize', 'Invert', 'Rotate', 'Posterize',\n      'Solarize', 'Color', 'Contrast', 'Brightness', 'Sharpness',\n      'ShearX', 'ShearY', 'TranslateX', 'TranslateY', 'Cutout', 'SolarizeAdd']\n\n  for layer_num in range(num_layers):\n    op_to_select = tf.random_uniform(\n        [], maxval=len(available_ops), dtype=tf.int32)\n    random_magnitude = float(magnitude)\n    with tf.name_scope('randaug_layer_{}'.format(layer_num)):\n      for (i, op_name) in enumerate(available_ops):\n        prob = tf.random_uniform([], minval=0.2, maxval=0.8, dtype=tf.float32)\n        func, _, args = _parse_policy_info(op_name, prob, random_magnitude,\n                                           replace_value, augmentation_hparams)\n        image = tf.cond(\n            tf.equal(i, op_to_select),\n            # pylint:disable=g-long-lambda\n            lambda selected_func=func, selected_args=args: selected_func(\n                image, *selected_args),\n            # pylint:enable=g-long-lambda\n            lambda: image)\n  return image\n"
  },
  {
    "path": "nfnets/base.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\n\"\"\"Architecture definitions for different models.\"\"\"\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\n\n\n# Model settings for NF-RegNets\nnf_regnet_params = {\n    'B0': {'width': [48, 104, 208, 440], 'depth': [1, 3, 6, 6],\n           'train_imsize': 192, 'test_imsize': 224,\n           'drop_rate': 0.2},\n    'B1': {'width': [48, 104, 208, 440], 'depth': [2, 4, 7, 7],\n           'train_imsize': 224, 'test_imsize': 256,\n           'drop_rate': 0.2},\n    'B2': {'width': [56, 112, 232, 488], 'depth': [2, 4, 8, 8],\n           'train_imsize': 240, 'test_imsize': 272,\n           'drop_rate': 0.3},\n    'B3': {'width': [56, 128, 248, 528], 'depth': [2, 5, 9, 9],\n           'train_imsize': 288, 'test_imsize': 320,\n           'drop_rate': 0.3},\n    'B4': {'width': [64, 144, 288, 616], 'depth': [2, 6, 11, 11],\n           'train_imsize': 320, 'test_imsize': 384,\n           'drop_rate': 0.4},\n    'B5': {'width': [80, 168, 336, 704], 'depth': [3, 7, 14, 14],\n           'train_imsize': 384, 'test_imsize': 456,\n           'drop_rate': 0.4},\n    'B6': {'width': [88, 184, 376, 792], 'depth': [3, 8, 16, 16],\n           'train_imsize': 448, 'test_imsize': 528,\n           'drop_rate': 0.5},\n    'B7': {'width': [96, 208, 416, 880], 'depth': [4, 10, 19, 19],\n           'train_imsize': 512, 'test_imsize': 600,\n           'drop_rate': 0.5},\n    'B8': {'width': [104, 232, 456, 968], 'depth': [4, 11, 22, 22],\n           'train_imsize': 600, 'test_imsize': 672,\n           'drop_rate': 0.5},\n}\n\nnfnet_params = {}\n\n\n# F-series models\nnfnet_params.update(**{\n    'F0': {\n        'width': [256, 512, 1536, 1536], 'depth': [1, 2, 6, 3],\n        'train_imsize': 192, 'test_imsize': 256,\n        'RA_level': '405', 'drop_rate': 0.2},\n    'F1': {\n        'width': [256, 512, 1536, 1536], 'depth': [2, 4, 12, 6],\n        'train_imsize': 224, 'test_imsize': 320,\n        'RA_level': '410', 'drop_rate': 0.3},\n    'F2': {\n        'width': [256, 512, 1536, 1536], 'depth': [3, 6, 18, 9],\n        'train_imsize': 256, 'test_imsize': 352,\n        'RA_level': '410', 'drop_rate': 0.4},\n    'F3': {\n        'width': [256, 512, 1536, 1536], 'depth': [4, 8, 24, 12],\n        'train_imsize': 320, 'test_imsize': 416,\n        'RA_level': '415', 'drop_rate': 0.4},\n    'F4': {\n        'width': [256, 512, 1536, 1536], 'depth': [5, 10, 30, 15],\n        'train_imsize': 384, 'test_imsize': 512,\n        'RA_level': '415', 'drop_rate': 0.5},\n    'F5': {\n        'width': [256, 512, 1536, 1536], 'depth': [6, 12, 36, 18],\n        'train_imsize': 416, 'test_imsize': 544,\n        'RA_level': '415', 'drop_rate': 0.5},\n    'F6': {\n        'width': [256, 512, 1536, 1536], 'depth': [7, 14, 42, 21],\n        'train_imsize': 448, 'test_imsize': 576,\n        'RA_level': '415', 'drop_rate': 0.5},\n    'F7': {\n        'width': [256, 512, 1536, 1536], 'depth': [8, 16, 48, 24],\n        'train_imsize': 480, 'test_imsize': 608,\n        'RA_level': '415', 'drop_rate': 0.5},\n})\n\n# Minor variants FN+, slightly wider\nnfnet_params.update(**{\n    **{f'{key}+': {**nfnet_params[key], 'width': [384, 768, 2048, 2048],}\n       for key in nfnet_params}\n})\n\n# Nonlinearities with magic constants (gamma) baked in.\n# Note that not all nonlinearities will be stable, especially if they are\n# not perfectly monotonic. Good choices include relu, silu, and gelu.\nnonlinearities = {\n    'identity': lambda x: x,\n    'celu': lambda x: jax.nn.celu(x) * 1.270926833152771,\n    'elu': lambda x: jax.nn.elu(x) * 1.2716004848480225,\n    'gelu': lambda x: jax.nn.gelu(x) * 1.7015043497085571,\n    'glu': lambda x: jax.nn.glu(x) * 1.8484294414520264,\n    'leaky_relu': lambda x: jax.nn.leaky_relu(x) * 1.70590341091156,\n    'log_sigmoid': lambda x: jax.nn.log_sigmoid(x) * 1.9193484783172607,\n    'log_softmax': lambda x: jax.nn.log_softmax(x) * 1.0002083778381348,\n    'relu': lambda x: jax.nn.relu(x) * 1.7139588594436646,\n    'relu6': lambda x: jax.nn.relu6(x) * 1.7131484746932983,\n    'selu': lambda x: jax.nn.selu(x) * 1.0008515119552612,\n    'sigmoid': lambda x: jax.nn.sigmoid(x) * 4.803835391998291,\n    'silu': lambda x: jax.nn.silu(x) * 1.7881293296813965,\n    'soft_sign': lambda x: jax.nn.soft_sign(x) * 2.338853120803833,\n    'softplus': lambda x: jax.nn.softplus(x) * 1.9203323125839233,\n    'tanh': lambda x: jnp.tanh(x) * 1.5939117670059204,\n}\n\n\nclass WSConv2D(hk.Conv2D):\n  \"\"\"2D Convolution with Scaled Weight Standardization and affine gain+bias.\"\"\"\n\n  @hk.transparent\n  def standardize_weight(self, weight, eps=1e-4):\n    \"\"\"Apply scaled WS with affine gain.\"\"\"\n    mean = jnp.mean(weight, axis=(0, 1, 2), keepdims=True)\n    var = jnp.var(weight, axis=(0, 1, 2), keepdims=True)\n    fan_in = np.prod(weight.shape[:-1])\n    # Get gain\n    gain = hk.get_parameter('gain', shape=(weight.shape[-1],),\n                            dtype=weight.dtype, init=jnp.ones)\n    # Manually fused normalization, eq. to (w - mean) * gain / sqrt(N * var)\n    scale = jax.lax.rsqrt(jnp.maximum(var * fan_in, eps)) * gain\n    shift = mean * scale\n    return weight * scale - shift\n\n  def __call__(self, inputs: jnp.ndarray, eps: float = 1e-4) -> jnp.ndarray:\n    w_shape = self.kernel_shape + (\n        inputs.shape[self.channel_index] // self.feature_group_count,\n        self.output_channels)\n    # Use fan-in scaled init, but WS is largely insensitive to this choice.\n    w_init = hk.initializers.VarianceScaling(1.0, 'fan_in', 'normal')\n    w = hk.get_parameter('w', w_shape, inputs.dtype, init=w_init)\n    weight = self.standardize_weight(w, eps)\n    out = jax.lax.conv_general_dilated(\n        inputs, weight, window_strides=self.stride, padding=self.padding,\n        lhs_dilation=self.lhs_dilation, rhs_dilation=self.kernel_dilation,\n        dimension_numbers=self.dimension_numbers,\n        feature_group_count=self.feature_group_count)\n    # Always add bias\n    bias_shape = (self.output_channels,)\n    bias = hk.get_parameter('bias', bias_shape, inputs.dtype, init=jnp.zeros)\n    return out + bias\n\n\ndef signal_metrics(x, i):\n  \"\"\"Things to measure about a NCHW tensor activation.\"\"\"\n  metrics = {}\n  # Average channel-wise mean-squared\n  metrics[f'avg_sq_mean_{i}'] = jnp.mean(jnp.mean(x, axis=[0, 1, 2])**2)\n  # Average channel variance\n  metrics[f'avg_var_{i}'] = jnp.mean(jnp.var(x, axis=[0, 1, 2]))\n  return metrics\n\n\ndef count_conv_flops(in_ch, conv, h, w):\n  \"\"\"For a conv layer with in_ch inputs, count the FLOPS.\"\"\"\n  # How many outputs are we producing? Note this is wrong for VALID padding.\n  output_shape = conv.output_channels * (h * w) / np.prod(conv.stride)\n  # At each OHW location we do computation equal to (I//G) * kh * kw\n  flop_per_loc = (in_ch / conv.feature_group_count)\n  flop_per_loc *= np.prod(conv.kernel_shape)\n  return output_shape * flop_per_loc\n\n\nclass SqueezeExcite(hk.Module):\n  \"\"\"Simple Squeeze+Excite module.\"\"\"\n\n  def __init__(self, in_ch, out_ch, se_ratio=0.5,\n               hidden_ch=None, activation=jax.nn.relu,\n               name=None):\n    super().__init__(name=name)\n    self.in_ch, self.out_ch = in_ch, out_ch\n    if se_ratio is None:\n      if hidden_ch is None:\n        raise ValueError('Must provide one of se_ratio or hidden_ch')\n      self.hidden_ch = hidden_ch\n    else:\n      self.hidden_ch = max(1, int(self.in_ch * se_ratio))\n    self.activation = activation\n    self.fc0 = hk.Linear(self.hidden_ch, with_bias=True)\n    self.fc1 = hk.Linear(self.out_ch, with_bias=True)\n\n  def __call__(self, x):\n    h = jnp.mean(x, axis=[1, 2])  # Mean pool over HW extent\n    h = self.fc1(self.activation(self.fc0(h)))\n    h = jax.nn.sigmoid(h)[:, None, None]  # Broadcast along H, W\n    return h\n\n\nclass StochDepth(hk.Module):\n  \"\"\"Batchwise Dropout used in EfficientNet, optionally sans rescaling.\"\"\"\n\n  def __init__(self, drop_rate, scale_by_keep=False, name=None):\n    super().__init__(name=name)\n    self.drop_rate = drop_rate\n    self.scale_by_keep = scale_by_keep\n\n  def __call__(self, x, is_training) -> jnp.ndarray:\n    if not is_training:\n      return x\n    batch_size = x.shape[0]\n    r = jax.random.uniform(hk.next_rng_key(), [batch_size, 1, 1, 1],\n                           dtype=x.dtype)\n    keep_prob = 1. - self.drop_rate\n    binary_tensor = jnp.floor(keep_prob + r)\n    if self.scale_by_keep:\n      x = x / keep_prob\n    return x * binary_tensor\n"
  },
  {
    "path": "nfnets/dataset.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\n\"\"\"ImageNet dataset with typical pre-processing and advanced augs.\"\"\"\n# pylint: disable=logging-format-interpolation\n\nimport enum\nimport itertools as it\nimport logging\nimport re\nfrom typing import Generator, Mapping, Optional, Sequence, Text, Tuple\n\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\nimport tensorflow.compat.v2 as tf\nimport tensorflow_datasets as tfds\nimport tensorflow_probability as tfp\nfrom nfnets import autoaugment\n\n\nBatch = Mapping[Text, np.ndarray]\nMEAN_RGB = (0.485 * 255, 0.456 * 255, 0.406 * 255)\nSTDDEV_RGB = (0.229 * 255, 0.224 * 255, 0.225 * 255)\nAUTOTUNE = tf.data.experimental.AUTOTUNE\n\n\nclass Split(enum.Enum):\n  \"\"\"Imagenet dataset split.\"\"\"\n  TRAIN = 1\n  TRAIN_AND_VALID = 2\n  VALID = 3\n  TEST = 4\n\n  @classmethod\n  def from_string(cls, name: Text) -> 'Split':\n    return {'TRAIN': Split.TRAIN, 'TRAIN_AND_VALID': Split.TRAIN_AND_VALID,\n            'VALID': Split.VALID, 'VALIDATION': Split.VALID,\n            'TEST': Split.TEST}[name.upper()]\n\n  @property\n  def num_examples(self):\n    return {Split.TRAIN_AND_VALID: 1281167, Split.TRAIN: 1271167,\n            Split.VALID: 10000, Split.TEST: 50000}[self]\n\n\ndef load(\n    split: Split,\n    *,\n    is_training: bool,\n    batch_dims: Sequence[int],\n    name: str = 'imagenet',\n    dtype: jnp.dtype = jnp.float32,\n    transpose: bool = False,\n    fake_data: bool = False,\n    image_size: Tuple[int, int] = (224, 224),\n    augment_name: Optional[str] = None,\n    eval_preproc: str = 'crop_resize',\n    augment_before_mix: bool = True,\n) -> Generator[Batch, None, None]:\n  \"\"\"Loads the given split of the dataset.\n\n  Args:\n    split: Dataset split to use.\n    is_training: If true, use training preproc and augmentation.\n    batch_dims: List indicating how to batch the dataset (typically expected to\n      be of shape (num_devices, bs_per_device)\n    name: Which dataset to use, (must be 'imagenet')\n    dtype: One of float32 or bfloat16 (bf16 may not be supported fully)\n    transpose: If true, employs double transpose trick.\n    fake_data: Return batches of fake data for debugging purposes.\n    image_size: Final image size returned by dataset pipeline. Note that the\n      exact procedure to arrive at this size will depend on the chosen preproc.\n    augment_name: Optional additional aug strategy (applied atop the default\n      of distorted bboxes and random L/R flips). Specified with a string\n      such as 'cutmix_mixup_0.4_randaugment_415'. See README for deets.\n    eval_preproc: Eval preproc method, either 'crop_resize' (crop on the long\n      edge then resize) or `resize_crop_{pct}`, which will resize the image to\n      `image_size / pct` on each side then take a center crop.\n    augment_before_mix: Apply augs like RA/AA before or after cutmix/mixup.\n\n  Yields:\n    A TFDS numpy iterator.\n  \"\"\"\n  start, end = _shard(split, jax.host_id(), jax.host_count())\n\n  if fake_data:\n    print('Using fake data!')\n    images = np.zeros(tuple(batch_dims) + image_size + (3,), dtype=dtype)\n    labels = np.zeros(tuple(batch_dims), dtype=np.int32)\n    if transpose:\n      axes = tuple(range(images.ndim))\n      axes = axes[:-4] + axes[-3:] + (axes[-4],)  # NHWC -> HWCN\n      images = np.transpose(images, axes)\n    yield from it.repeat({'images': images, 'labels': labels}, end - start)\n    return\n\n  total_batch_size = np.prod(batch_dims)\n\n  if name.lower() == 'imagenet':\n    tfds_split = tfds.core.ReadInstruction(_to_tfds_split(split),\n                                           from_=start, to=end, unit='abs')\n\n    ds = tfds.load('imagenet2012:5.*.*', split=tfds_split,\n                   decoders={'image': tfds.decode.SkipDecoding()})\n  else:\n    raise ValueError('Only imagenet is presently supported for this dataset.')\n\n  options = tf.data.Options()\n  options.experimental_threading.private_threadpool_size = 48\n  options.experimental_threading.max_intra_op_parallelism = 1\n  options.experimental_optimization.map_parallelization = True\n  options.experimental_optimization.parallel_batch = True\n\n  if is_training:\n    options.experimental_deterministic = False\n\n  ds = ds.with_options(options)\n\n  if is_training:\n    if jax.host_count() > 1:\n      # Only cache if we are reading a subset of the dataset.\n      ds = ds.cache()\n    ds = ds.repeat()\n    ds = ds.shuffle(buffer_size=10 * total_batch_size, seed=None)\n\n  else:\n    if split.num_examples % total_batch_size != 0:\n      raise ValueError(f'Test/valid must be divisible by {total_batch_size}')\n\n  def augment_normalize(batch):\n    \"\"\"Optionally augment, then normalize an image.\"\"\"\n    batch = dict(**batch)\n    image = _augment_image(batch['images'], is_training, augment_name)\n    batch['images'] = _normalize_image(image)\n    return batch\n\n  def preprocess(example):\n    image = _preprocess_image(example['image'], is_training, image_size,\n                              eval_preproc)\n    label = tf.cast(example['label'], tf.int32)\n    out = {'images': image, 'labels': label}\n    if augment_name is not None and 'cutmix' in augment_name:\n      out['mask'] = cutmix_padding(*image_size)\n      out['cutmix_ratio'] = tf.reduce_mean(out['mask'])\n    if augment_name is not None and 'mixup' in augment_name:\n      mixup_alpha = 0.2  # default to alpha=0.2\n      # If float provided, get it\n      if 'mixup_' in augment_name:\n        alpha = augment_name.split('mixup_')[1].split('_')\n        if any(alpha) and re.match(r'^-?\\d+(?:\\.\\d+)?$', alpha[0]) is not None:\n          mixup_alpha = float(alpha[0])\n      beta = tfp.distributions.Beta(mixup_alpha, mixup_alpha)\n      out['mixup_ratio'] = beta.sample()\n    # Apply augs before mixing?\n    if augment_before_mix or augment_name is None:\n      out = augment_normalize(out)\n    return out\n\n  ds = ds.map(preprocess, num_parallel_calls=AUTOTUNE)\n  ds = ds.prefetch(AUTOTUNE)\n\n  def transpose_fn(batch):\n    # Applies the double-transpose trick for TPU.\n    batch = dict(**batch)\n    batch['images'] = tf.transpose(batch['images'], (1, 2, 3, 0))\n    return batch\n\n  def cast_fn(batch):\n    batch = dict(**batch)\n    batch['images'] = tf.cast(batch['images'], tf.dtypes.as_dtype(dtype))\n    return batch\n\n  for i, batch_size in enumerate(reversed(batch_dims)):\n    if i == 0:\n      # Deal with vectorized MixUp + CutMix ops\n      if augment_name is not None:\n        if 'mixup' in augment_name or 'cutmix' in augment_name:\n          ds = ds.batch(batch_size * 2)\n        else:\n          ds = ds.map(augment_normalize, num_parallel_calls=AUTOTUNE)\n          ds = ds.batch(batch_size)\n        # Apply mixup, cutmix, or mixup + cutmix\n        if 'mixup' in augment_name and 'cutmix' not in augment_name:\n          logging.info('Applying MixUp!')\n          ds = ds.map(my_mixup, num_parallel_calls=AUTOTUNE)\n        elif 'cutmix' in augment_name and 'mixup' not in augment_name:\n          logging.info('Applying CutMix!')\n          ds = ds.map(my_cutmix, num_parallel_calls=AUTOTUNE)\n        elif 'mixup' in augment_name and 'cutmix' in augment_name:\n          logging.info('Applying MixUp and CutMix!')\n          ds = ds.map(my_mixup_cutmix, num_parallel_calls=AUTOTUNE)\n        # If applying augs after mixing, unbatch, map, and rebatch\n        if (not augment_before_mix and\n            ('mixup' in augment_name or 'cutmix' in augment_name)):\n          ds = ds.unbatch().map(augment_normalize, num_parallel_calls=AUTOTUNE)\n          ds = ds.batch(batch_size)\n      else:\n        ds = ds.batch(batch_size)\n      # Transpose and cast as needbe\n      if transpose:\n        ds = ds.map(transpose_fn)  # NHWC -> HWCN\n      # NOTE: You may be tempted to move the casting earlier on in the pipeline,\n      # but for bf16 some operations will end up silently placed on the TPU and\n      # this causes stalls while TF and JAX battle for the accelerator.\n      ds = ds.map(cast_fn)\n    else:\n      ds = ds.batch(batch_size)\n\n  ds = ds.prefetch(AUTOTUNE)\n  ds = tfds.as_numpy(ds)\n  yield from ds\n\n\ndef cutmix_padding(h, w):\n  \"\"\"Returns image mask for CutMix.\n\n  Taken from (https://github.com/google/edward2/blob/master/experimental\n  /marginalization_mixup/data_utils.py#L367)\n\n  Args:\n    h: image height.\n    w: image width.\n  \"\"\"\n  r_x = tf.random.uniform([], 0, w, tf.int32)\n  r_y = tf.random.uniform([], 0, h, tf.int32)\n\n  # Beta dist in paper, but they used Beta(1,1) which is just uniform.\n  image1_proportion = tf.random.uniform([])\n  patch_length_ratio = tf.math.sqrt(1 - image1_proportion)\n  r_w = tf.cast(patch_length_ratio * tf.cast(w, tf.float32), tf.int32)\n  r_h = tf.cast(patch_length_ratio * tf.cast(h, tf.float32), tf.int32)\n  bbx1 = tf.clip_by_value(tf.cast(r_x - r_w // 2, tf.int32), 0, w)\n  bby1 = tf.clip_by_value(tf.cast(r_y - r_h // 2, tf.int32), 0, h)\n  bbx2 = tf.clip_by_value(tf.cast(r_x + r_w // 2, tf.int32), 0, w)\n  bby2 = tf.clip_by_value(tf.cast(r_y + r_h // 2, tf.int32), 0, h)\n\n  # Create the binary mask.\n  pad_left = bbx1\n  pad_top = bby1\n  pad_right = tf.maximum(w - bbx2, 0)\n  pad_bottom = tf.maximum(h - bby2, 0)\n  r_h = bby2 - bby1\n  r_w = bbx2 - bbx1\n\n  mask = tf.pad(\n      tf.ones((r_h, r_w)),\n      paddings=[[pad_top, pad_bottom], [pad_left, pad_right]],\n      mode='CONSTANT',\n      constant_values=0)\n  mask.set_shape((h, w))\n  return mask[..., None]  # Add channel dim.\n\n\ndef my_cutmix(batch):\n  \"\"\"Cutmix.\"\"\"\n  batch = dict(**batch)\n  bs = tf.shape(batch['images'])[0] // 2\n  mask = batch['mask'][:bs]\n  images = (mask * batch['images'][:bs] + (1.0 - mask) * batch['images'][bs:])\n  mix_labels = batch['labels'][bs:]\n  labels = batch['labels'][:bs]\n  ratio = batch['cutmix_ratio'][:bs]\n  return {'images': images, 'labels': labels,\n          'mix_labels': mix_labels, 'ratio': ratio}\n\n\ndef my_mixup(batch):\n  \"\"\"Mixup.\"\"\"\n  batch = dict(**batch)\n  bs = tf.shape(batch['images'])[0] // 2\n  ratio = batch['mixup_ratio'][:bs, None, None, None]\n  images = (ratio * batch['images'][:bs] + (1.0 - ratio) * batch['images'][bs:])\n  mix_labels = batch['labels'][bs:]\n  labels = batch['labels'][:bs]\n  ratio = ratio[..., 0, 0, 0]  # Unsqueeze\n  return {'images': images, 'labels': labels,\n          'mix_labels': mix_labels, 'ratio': ratio}\n\n\ndef mixup_or_cutmix(batch):\n  \"\"\"Randomly applies one of cutmix or mixup to a batch.\"\"\"\n  logging.info('Randomly applying cutmix or mixup with 50% chance!')\n  return tf.cond(\n      tf.cast(tf.random.uniform([], maxval=2, dtype=tf.int32), tf.bool),\n      lambda: my_mixup(batch),\n      lambda: my_cutmix(batch))\n\n\ndef my_mixup_cutmix(batch):\n  \"\"\"Apply mixup to half the batch, and cutmix to the other.\"\"\"\n  batch = dict(**batch)\n  bs = tf.shape(batch['images'])[0] // 4\n  mixup_ratio = batch['mixup_ratio'][:bs, None, None, None]\n  mixup_images = (mixup_ratio * batch['images'][:bs]\n                  + (1.0 - mixup_ratio) * batch['images'][bs:2*bs])\n  mixup_labels = batch['labels'][:bs]\n  mixup_mix_labels = batch['labels'][bs:2*bs]\n\n  cutmix_mask = batch['mask'][2*bs:3*bs]\n  cutmix_images = (cutmix_mask * batch['images'][2*bs:3*bs]\n                   + (1.0 - cutmix_mask) * batch['images'][-bs:])\n  cutmix_labels = batch['labels'][2*bs:3*bs]\n  cutmix_mix_labels = batch['labels'][-bs:]\n  cutmix_ratio = batch['cutmix_ratio'][2*bs : 3*bs]\n\n  return {'images': tf.concat([mixup_images, cutmix_images], axis=0),\n          'labels': tf.concat([mixup_labels, cutmix_labels], axis=0),\n          'mix_labels': tf.concat([mixup_mix_labels, cutmix_mix_labels], 0),\n          'ratio': tf.concat([mixup_ratio[..., 0, 0, 0], cutmix_ratio], axis=0)}\n\n\ndef _to_tfds_split(split: Split) -> tfds.Split:\n  \"\"\"Returns the TFDS split appropriately sharded.\"\"\"\n  if split in (Split.TRAIN, Split.TRAIN_AND_VALID, Split.VALID):\n    return tfds.Split.TRAIN\n  else:\n    assert split == Split.TEST\n    return tfds.Split.VALIDATION\n\n\ndef _shard(split: Split, shard_index: int, num_shards: int) -> Tuple[int, int]:\n  \"\"\"Returns [start, end) for the given shard index.\"\"\"\n  assert shard_index < num_shards\n  arange = np.arange(split.num_examples)\n  shard_range = np.array_split(arange, num_shards)[shard_index]\n  start, end = shard_range[0], (shard_range[-1] + 1)\n  if split == Split.TRAIN:\n    # Note that our TRAIN=TFDS_TRAIN[10000:] and VALID=TFDS_TRAIN[:10000].\n    offset = Split.VALID.num_examples\n    start += offset\n    end += offset\n  return start, end\n\n\ndef _preprocess_image(\n    image_bytes: tf.Tensor,\n    is_training: bool,\n    image_size: Sequence[int],\n    eval_preproc: str = 'crop_resize'\n) -> tf.Tensor:\n  \"\"\"Returns processed and resized images.\"\"\"\n  # NOTE: Bicubic resize (1) casts uint8 to float32 and (2) resizes without\n  # clamping overshoots. This means values returned will be outside the range\n  # [0.0, 255.0] (e.g. we have observed outputs in the range [-51.1, 336.6]).\n  if is_training:\n    image = _decode_and_random_crop(image_bytes, image_size)\n    image = tf.image.random_flip_left_right(image)\n    assert image.dtype == tf.uint8\n    image = tf.image.resize(image, image_size, tf.image.ResizeMethod.BICUBIC)\n  else:\n    if eval_preproc == 'crop_resize':\n      image = _decode_and_center_crop(image_bytes, image_size=image_size)\n      assert image.dtype == tf.uint8\n      image = tf.image.resize(image, image_size, tf.image.ResizeMethod.BICUBIC)\n    elif 'resize_crop' in eval_preproc:\n      # Pass in crop percent\n      crop_pct = float(eval_preproc.split('_')[-1])\n      image = _decode_and_resize_then_crop(image_bytes, image_size=image_size,\n                                           crop_pct=crop_pct)\n    else:\n      raise ValueError(f'Unknown Eval Preproc {eval_preproc} provided!')\n  return image\n\n\ndef _augment_image(\n    image: tf.Tensor,\n    is_training: bool,\n    augment_name: Optional[str] = None,\n) -> tf.Tensor:\n  \"\"\"Applies AA/RA to an image.\"\"\"\n  if is_training and augment_name:\n    if 'autoaugment' in augment_name or 'randaugment' in augment_name:\n      input_image_type = image.dtype\n      image = tf.clip_by_value(image, 0.0, 255.0)\n      # Autoaugment requires a uint8 image; we cast here and then cast back\n      image = tf.cast(image, dtype=tf.uint8)\n      if 'autoaugment' in augment_name:\n        logging.info(f'Applying AutoAugment policy {augment_name}')\n        image = autoaugment.distort_image_with_autoaugment(image, 'v0')\n      elif 'randaugment' in augment_name:\n        magnitude = int(augment_name.split('_')[-1])  # pytype: disable=attribute-error\n        # Allow passing in num_layers as a magnitude > 100\n        if magnitude > 100:\n          num_layers = magnitude // 100\n          magnitude = magnitude - int(num_layers * 100)\n        else:\n          num_layers = 2\n        logging.info(f'Applying RA {num_layers} x {magnitude}')\n        image = autoaugment.distort_image_with_randaugment(\n            image, num_layers=num_layers, magnitude=magnitude)\n      image = tf.cast(image, dtype=input_image_type)\n  return image\n\n\ndef _normalize_image(image: tf.Tensor) -> tf.Tensor:\n  \"\"\"Normalize the image to zero mean and unit variance.\"\"\"\n  image -= tf.constant(MEAN_RGB, shape=[1, 1, 3], dtype=image.dtype)\n  image /= tf.constant(STDDEV_RGB, shape=[1, 1, 3], dtype=image.dtype)\n  return image\n\n\ndef _distorted_bounding_box_crop(\n    image_bytes: tf.Tensor,\n    *,\n    jpeg_shape: tf.Tensor,\n    bbox: tf.Tensor,\n    min_object_covered: float,\n    aspect_ratio_range: Tuple[float, float],\n    area_range: Tuple[float, float],\n    max_attempts: int,\n) -> tf.Tensor:\n  \"\"\"Generates cropped_image using one of the bboxes randomly distorted.\"\"\"\n  bbox_begin, bbox_size, _ = tf.image.sample_distorted_bounding_box(\n      jpeg_shape,\n      bounding_boxes=bbox,\n      min_object_covered=min_object_covered,\n      aspect_ratio_range=aspect_ratio_range,\n      area_range=area_range,\n      max_attempts=max_attempts,\n      use_image_if_no_bounding_boxes=True)\n\n  # Crop the image to the specified bounding box.\n  offset_y, offset_x, _ = tf.unstack(bbox_begin)\n  target_height, target_width, _ = tf.unstack(bbox_size)\n  crop_window = [offset_y, offset_x, target_height, target_width]\n  image = crop(image_bytes, crop_window)\n  return image\n\n\ndef _decode_and_random_crop(image_bytes: tf.Tensor,\n                            image_size: Sequence[int] = (224, 224),\n                            jpeg_shape: Optional[tf.Tensor] = None\n                            ) -> tf.Tensor:\n  \"\"\"Make a random crop of chosen size.\"\"\"\n  if jpeg_shape is None:\n    jpeg_shape = get_shape(image_bytes)\n  bbox = tf.constant([0.0, 0.0, 1.0, 1.0], dtype=tf.float32, shape=[1, 1, 4])\n  image = _distorted_bounding_box_crop(\n      image_bytes,\n      jpeg_shape=jpeg_shape,\n      bbox=bbox,\n      min_object_covered=0.1,\n      aspect_ratio_range=(3 / 4, 4 / 3),\n      area_range=(0.08, 1.0),\n      max_attempts=10)\n  if tf.reduce_all(tf.equal(jpeg_shape, tf.shape(image))):\n    # If the random crop failed fall back to center crop.\n    image = _decode_and_center_crop(image_bytes, jpeg_shape, image_size)\n  return image\n\n\ndef _decode_and_center_crop(\n    image_bytes: tf.Tensor,\n    jpeg_shape: Optional[tf.Tensor] = None,\n    image_size: Sequence[int] = (224, 224),\n) -> tf.Tensor:\n  \"\"\"Crops to center of image with padding then scales.\"\"\"\n  if jpeg_shape is None:\n    jpeg_shape = get_shape(image_bytes)\n  image_height = jpeg_shape[0]\n  image_width = jpeg_shape[1]\n  # Pad the image with at least 32px on the short edge and take a\n  # crop that maintains aspect ratio.\n  scale = tf.minimum(tf.cast(image_height, tf.float32) / (image_size[0] + 32),\n                     tf.cast(image_width, tf.float32) / (image_size[1] + 32))\n  padded_center_crop_height = tf.cast(scale * image_size[0], tf.int32)\n  padded_center_crop_width = tf.cast(scale * image_size[1], tf.int32)\n  offset_height = ((image_height - padded_center_crop_height) + 1) // 2\n  offset_width = ((image_width - padded_center_crop_width) + 1) // 2\n  crop_window = [offset_height, offset_width,\n                 padded_center_crop_height, padded_center_crop_width]\n  image = crop(image_bytes, crop_window)\n  return image\n\n\ndef get_shape(image_bytes):\n  \"\"\"Gets the image shape for jpeg bytes or a uint8 decoded image.\"\"\"\n  if image_bytes.dtype == tf.dtypes.string:\n    image_shape = tf.image.extract_jpeg_shape(image_bytes)\n  else:\n    image_shape = tf.shape(image_bytes)\n  return image_shape\n\n\ndef crop(image_bytes, crop_window):\n  \"\"\"Helper function to crop a jpeg or a decoded image.\"\"\"\n  if image_bytes.dtype == tf.dtypes.string:\n    image = tf.image.decode_and_crop_jpeg(image_bytes,\n                                          tf.stack(crop_window),\n                                          channels=3)\n  else:\n    image = tf.image.crop_to_bounding_box(image_bytes, *crop_window)\n  return image\n\n\ndef _decode_and_resize_then_crop(\n    image_bytes: tf.Tensor,\n    image_size: Sequence[int] = (224, 224),\n    crop_pct: float = 1.0,\n) -> tf.Tensor:\n  \"\"\"Rescales an image to image_size / crop_pct, then center crops.\"\"\"\n  image = tf.image.decode_jpeg(image_bytes, channels=3)\n  # Scale image to \"scaled size\" before taking a center crop\n  if crop_pct > 1.0:  # If crop_pct is >1, treat it as num pad pixels (like VGG)\n    scale_size = tuple([int(x + crop_pct) for x in image_size])\n  else:\n    scale_size = tuple([int(float(x) / crop_pct) for x in image_size])\n  image = tf.image.resize(image, scale_size, tf.image.ResizeMethod.BICUBIC)\n  crop_height = tf.cast(image_size[0], tf.int32)\n  crop_width = tf.cast(image_size[1], tf.int32)\n  offset_height = ((scale_size[0] - crop_height) + 1) // 2\n  offset_width = ((scale_size[1] - crop_width) + 1) // 2\n  crop_window = [offset_height, offset_width, crop_height, crop_width]\n  image = crop(image, crop_window)\n  return image\n"
  },
  {
    "path": "nfnets/experiment.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\nr\"\"\"Basic Jaxline ImageNet experiment.\"\"\"\n\nimport importlib\nimport sys\nfrom absl import flags\nfrom absl import logging\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nfrom jaxline import base_config\nfrom jaxline import experiment\nfrom jaxline import platform\nfrom jaxline import utils as jl_utils\nfrom ml_collections import config_dict\nimport numpy as np\nfrom nfnets import dataset\nfrom nfnets import optim\nfrom nfnets import utils\n# pylint: disable=logging-format-interpolation\n\nFLAGS = flags.FLAGS\n\n\n# We define the experiment launch config in the same file as the experiment to\n# keep things self-contained in a single file, but one might consider moving the\n# config and/or sweep functions to a separate file, if necessary.\ndef get_config():\n  \"\"\"Return config object for training.\"\"\"\n  config = base_config.get_base_config()\n\n  # Experiment config.\n  train_batch_size = 1024  # Global batch size.\n  images_per_epoch = 1281167\n  num_epochs = 90\n  steps_per_epoch = images_per_epoch / train_batch_size\n  config.training_steps = ((images_per_epoch * num_epochs) // train_batch_size)\n  config.random_seed = 0\n  config.experiment_kwargs = config_dict.ConfigDict(\n      dict(\n          config=dict(\n              lr=0.1,\n              num_epochs=num_epochs,\n              label_smoothing=0.1,\n              model='ResNet',\n              image_size=224,\n              use_ema=False,\n              ema_decay=0.9999,  # Quatros nuevos amigos\n              ema_start=0,\n              which_ema='tf1_ema',\n              augment_name=None,  # 'mixup_cutmix',\n              augment_before_mix=True,\n              eval_preproc='crop_resize',\n              train_batch_size=train_batch_size,\n              eval_batch_size=50,\n              eval_subset='test',\n              num_classes=1000,\n              which_dataset='imagenet',\n              fake_data=False,\n              which_loss='softmax_cross_entropy',  # For now, must be softmax\n              transpose=True,  # Use the double-transpose trick?\n              bfloat16=False,\n              lr_schedule=dict(\n                  name='WarmupCosineDecay',\n                  kwargs=dict(\n                      num_steps=config.training_steps,\n                      start_val=0,\n                      min_val=0,\n                      warmup_steps=5 * steps_per_epoch),\n              ),\n              lr_scale_by_bs=True,\n              optimizer=dict(\n                  name='SGD',\n                  kwargs={\n                      'momentum': 0.9,\n                      'nesterov': True,\n                      'weight_decay': 1e-4,\n                  },\n              ),\n              model_kwargs=dict(\n                  width=4,\n                  which_norm='BatchNorm',\n                  norm_kwargs=dict(\n                      create_scale=True,\n                      create_offset=True,\n                      decay_rate=0.9,\n                  ),  # cross_replica_axis='i'),\n                  variant='ResNet50',\n                  activation='relu',\n                  drop_rate=0.0,\n              ),\n          ),))\n\n  # Training loop config: log and checkpoint every minute\n  config.log_train_data_interval = 60\n  config.log_tensors_interval = 60\n  config.save_checkpoint_interval = 60\n  config.eval_specific_checkpoint_dir = ''\n\n  return config\n\n\nclass Experiment(experiment.AbstractExperiment):\n  \"\"\"Imagenet experiment.\"\"\"\n  CHECKPOINT_ATTRS = {\n      '_params': 'params',\n      '_state': 'state',\n      '_ema_params': 'ema_params',\n      '_ema_state': 'ema_state',\n      '_opt_state': 'opt_state',\n  }\n\n  def __init__(self, mode, config, init_rng):\n    super().__init__(mode=mode)\n    self.mode = mode\n    self.config = config\n    self.init_rng = init_rng\n\n    # Checkpointed experiment state.\n    self._params = None\n    self._state = None\n    self._ema_params = None\n    self._ema_state = None\n    self._opt_state = None\n\n    # Input pipelines.\n    self._train_input = None\n    self._eval_input = None\n\n    # Get model, loaded in from the zoo\n    module_prefix = 'nfnets.'\n    self.model_module = importlib.import_module(\n        (module_prefix + self.config.model.lower()))\n    self.net = hk.transform_with_state(self._forward_fn)\n\n    # Assign image sizes\n    if self.config.get('override_imsize', False):\n      self.train_imsize = self.config.image_size\n      self.test_imsize = self.config.get('eval_image_size', self.train_imsize)\n    else:\n      variant_dict = getattr(self.model_module, self.config.model).variant_dict\n      variant_dict = variant_dict[self.config.model_kwargs.variant]\n      self.train_imsize = variant_dict.get('train_imsize',\n                                           self.config.image_size)\n      # Test imsize defaults to model-specific value, then to config imsize\n      test_imsize = self.config.get('eval_image_size', self.config.image_size)\n      self.test_imsize = variant_dict.get('test_imsize', test_imsize)\n\n    donate_argnums = (0, 1, 2, 6, 7) if self.config.use_ema else (0, 1, 2)\n    self.train_fn = jax.pmap(\n        self._train_fn, axis_name='i', donate_argnums=donate_argnums)\n    self.eval_fn = jax.pmap(self._eval_fn, axis_name='i')\n\n  def _initialize_train(self):\n    self._train_input = self._build_train_input()\n    # Initialize net and EMA copy of net if no params available.\n    if self._params is None:\n      inputs = next(self._train_input)\n      init_net = jax.pmap(\n          lambda *a: self.net.init(*a, is_training=True), axis_name='i')\n      init_rng = jl_utils.bcast_local_devices(self.init_rng)\n      self._params, self._state = init_net(init_rng, inputs)\n      if self.config.use_ema:\n        self._ema_params, self._ema_state = init_net(init_rng, inputs)\n      num_params = hk.data_structures.tree_size(self._params)\n      logging.info(f'Net parameters: {num_params / jax.local_device_count()}')\n    self._make_opt()\n\n  def _make_opt(self):\n    # Separate conv params and gains/biases\n    def pred(mod, name, val):  # pylint:disable=unused-argument\n      return (name in ['scale', 'offset', 'b'] or 'gain' in name or\n              'bias' in name)\n\n    gains_biases, weights = hk.data_structures.partition(pred, self._params)\n    # Lr schedule with batch-based LR scaling\n    if self.config.lr_scale_by_bs:\n      max_lr = (self.config.lr * self.config.train_batch_size) / 256\n    else:\n      max_lr = self.config.lr\n    lr_sched_fn = getattr(optim, self.config.lr_schedule.name)\n    lr_schedule = lr_sched_fn(max_val=max_lr, **self.config.lr_schedule.kwargs)\n    # Optimizer; no need to broadcast!\n    opt_kwargs = {key: val for key, val in self.config.optimizer.kwargs.items()}\n    opt_kwargs['lr'] = lr_schedule\n    opt_module = getattr(optim, self.config.optimizer.name)\n    self.opt = opt_module([{\n        'params': gains_biases,\n        'weight_decay': None\n    }, {\n        'params': weights\n    }], **opt_kwargs)\n    if self._opt_state is None:\n      self._opt_state = self.opt.states()\n    else:\n      self.opt.plugin(self._opt_state)\n\n  def _forward_fn(self, inputs, is_training):\n    net_kwargs = {\n        'num_classes': self.config.num_classes,\n        **self.config.model_kwargs\n    }\n    net = getattr(self.model_module, self.config.model)(**net_kwargs)\n    if self.config.get('transpose', False):\n      images = jnp.transpose(inputs['images'], (3, 0, 1, 2))  # HWCN -> NHWC\n    else:\n      images = inputs['images']\n    if self.config.bfloat16 and self.mode == 'train':\n      images = utils.to_bf16(images)\n    return net(images, is_training=is_training)['logits']\n\n  def _one_hot(self, value):\n    \"\"\"One-hot encoding potentially over a sequence of labels.\"\"\"\n    y = jax.nn.one_hot(value, self.config.num_classes)\n    return y\n\n  def _loss_fn(self, params, state, inputs, rng):\n    logits, state = self.net.apply(params, state, rng, inputs, is_training=True)\n    y = self._one_hot(inputs['labels'])\n    if 'mix_labels' in inputs:  # Handle cutmix/mixup label mixing\n      logging.info('Using mixup or cutmix!')\n      y1 = self._one_hot(inputs['mix_labels'])\n      y = inputs['ratio'][:, None] * y + (1. - inputs['ratio'][:, None]) * y1\n    if self.config.label_smoothing > 0:  # get smoothy\n      spositives = 1. - self.config.label_smoothing\n      snegatives = self.config.label_smoothing / self.config.num_classes\n      y = spositives * y + snegatives\n    if self.config.bfloat16:  # Cast logits to float32\n      logits = logits.astype(jnp.float32)\n    which_loss = getattr(utils, self.config.which_loss)\n    loss = which_loss(logits, y, reduction='mean')\n    metrics = utils.topk_correct(logits, inputs['labels'], prefix='train_')\n    # Average top-1 and top-5 correct labels\n    metrics = jax.tree_map(jnp.mean, metrics)\n    metrics['train_loss'] = loss  # Metrics will be pmeaned so don't divide here\n    scaled_loss = loss / jax.device_count()  # Grads get psummed so do divide\n    return scaled_loss, (metrics, state)\n\n  def _train_fn(self, params, states, opt_states, inputs, rng, global_step,\n                ema_params, ema_states):\n    \"\"\"Runs one batch forward + backward and run a single opt step.\"\"\"\n    grad_fn = jax.grad(self._loss_fn, argnums=0, has_aux=True)\n    if self.config.bfloat16:\n      in_params, states = jax.tree_map(utils.to_bf16, (params, states))\n    else:\n      in_params = params\n    grads, (metrics, states) = grad_fn(in_params, states, inputs, rng)\n    if self.config.bfloat16:\n      states, metrics, grads = jax.tree_map(utils.from_bf16,\n                                            (states, metrics, grads))\n    # Sum gradients and average losses for pmap\n    grads = jax.lax.psum(grads, 'i')\n    metrics = jax.lax.pmean(metrics, 'i')\n    # Compute updates and update parameters\n    metrics['learning_rate'] = self.opt._hyperparameters['lr'](global_step)  # pylint: disable=protected-access\n    params, opt_states = self.opt.step(params, grads, opt_states, global_step)\n    if ema_params is not None:\n      ema_fn = getattr(utils, self.config.get('which_ema', 'tf1_ema'))\n      ema = lambda x, y: ema_fn(x, y, self.config.ema_decay, global_step)\n      ema_params = jax.tree_map(ema, ema_params, params)\n      ema_states = jax.tree_map(ema, ema_states, states)\n    return {\n        'params': params,\n        'states': states,\n        'opt_states': opt_states,\n        'ema_params': ema_params,\n        'ema_states': ema_states,\n        'metrics': metrics\n    }\n\n  #  _             _\n  # | |_ _ __ __ _(_)_ __\n  # | __| '__/ _` | | '_ \\\n  # | |_| | | (_| | | | | |\n  #  \\__|_|  \\__,_|_|_| |_|\n  #\n\n  def step(self, global_step, rng, *unused_args, **unused_kwargs):\n    if self._train_input is None:\n      self._initialize_train()\n    inputs = next(self._train_input)\n    out = self.train_fn(\n        params=self._params,\n        states=self._state,\n        opt_states=self._opt_state,\n        inputs=inputs,\n        rng=rng,\n        global_step=global_step,\n        ema_params=self._ema_params,\n        ema_states=self._ema_state)\n    self._params, self._state = out['params'], out['states']\n    self._opt_state = out['opt_states']\n    self._ema_params, self._ema_state = out['ema_params'], out['ema_states']\n    self.opt.plugin(self._opt_state)\n    return jl_utils.get_first(out['metrics'])\n\n  def _build_train_input(self):\n    num_devices = jax.device_count()\n    global_batch_size = self.config.train_batch_size\n    bs_per_device, ragged = divmod(global_batch_size, num_devices)\n    if ragged:\n      raise ValueError(\n          f'Global batch size {global_batch_size} must be divisible by '\n          f'num devices {num_devices}')\n    return dataset.load(\n        dataset.Split.TRAIN_AND_VALID,\n        is_training=True,\n        batch_dims=[jax.local_device_count(), bs_per_device],\n        transpose=self.config.get('transpose', False),\n        image_size=(self.train_imsize,) * 2,\n        augment_name=self.config.augment_name,\n        augment_before_mix=self.config.get('augment_before_mix', True),\n        name=self.config.which_dataset,\n        fake_data=self.config.get('fake_data', False))\n\n  #                  _\n  #   _____   ____ _| |\n  #  / _ \\ \\ / / _` | |\n  # |  __/\\ V / (_| | |\n  #  \\___| \\_/ \\__,_|_|\n  #\n\n  def evaluate(self, global_step, **unused_args):\n    metrics = self._eval_epoch(self._params, self._state)\n    if self.config.use_ema:\n      ema_metrics = self._eval_epoch(self._ema_params, self._ema_state)\n      metrics.update({f'ema_{key}': val for key, val in ema_metrics.items()})\n    logging.info(f'[Step {global_step}] Eval scalars: {metrics}')\n    return metrics\n\n  def _eval_epoch(self, params, state):\n    \"\"\"Evaluates an epoch.\"\"\"\n    num_samples = 0.\n    summed_metrics = None\n\n    for inputs in self._build_eval_input():\n      num_samples += np.prod(inputs['labels'].shape[:2])  # Account for pmaps\n      metrics = self.eval_fn(params, state, inputs)\n      # Accumulate the sum of metrics for each step.\n      metrics = jax.tree_map(lambda x: jnp.sum(x[0], axis=0), metrics)\n      if summed_metrics is None:\n        summed_metrics = metrics\n      else:\n        summed_metrics = jax.tree_map(jnp.add, summed_metrics, metrics)\n    mean_metrics = jax.tree_map(lambda x: x / num_samples, summed_metrics)\n    return jax.device_get(mean_metrics)\n\n  def _eval_fn(self, params, state, inputs):\n    \"\"\"Evaluate a single batch and return loss and top-k acc.\"\"\"\n    logits, _ = self.net.apply(params, state, None, inputs, is_training=False)\n    y = self._one_hot(inputs['labels'])\n    which_loss = getattr(utils, self.config.which_loss)\n    loss = which_loss(logits, y, reduction=None)\n    metrics = utils.topk_correct(logits, inputs['labels'], prefix='eval_')\n    metrics['eval_loss'] = loss\n    return jax.lax.psum(metrics, 'i')\n\n  def _build_eval_input(self):\n    \"\"\"Builds the evaluation input pipeline.\"\"\"\n    bs_per_device = (self.config.eval_batch_size // jax.local_device_count())\n    split = dataset.Split.from_string(self.config.eval_subset)\n    eval_preproc = self.config.get('eval_preproc', 'crop_resize')\n    return dataset.load(\n        split,\n        is_training=False,\n        batch_dims=[jax.local_device_count(), bs_per_device],\n        transpose=self.config.get('transpose', False),\n        image_size=(self.test_imsize,) * 2,\n        name=self.config.which_dataset,\n        eval_preproc=eval_preproc,\n        fake_data=self.config.get('fake_data', False))\n\n\nif __name__ == '__main__':\n  flags.mark_flag_as_required('config')\n  platform.main(Experiment, sys.argv[1:])\n"
  },
  {
    "path": "nfnets/experiment_nf_regnets.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\nr\"\"\"ImageNet experiment with NF-RegNets.\"\"\"\n\nfrom ml_collections import config_dict\nfrom nfnets import experiment\n\n\ndef get_config():\n  \"\"\"Return config object for training.\"\"\"\n  config = experiment.get_config()\n\n  # Experiment config.\n  train_batch_size = 1024  # Global batch size.\n  images_per_epoch = 1281167\n  num_epochs = 360\n  steps_per_epoch = images_per_epoch / train_batch_size\n  config.training_steps = ((images_per_epoch * num_epochs) // train_batch_size)\n  config.random_seed = 0\n\n  config.experiment_kwargs = config_dict.ConfigDict(\n      dict(\n          config=dict(\n              lr=0.4,\n              num_epochs=num_epochs,\n              label_smoothing=0.1,\n              model='NF_RegNet',\n              image_size=224,\n              use_ema=True,\n              ema_decay=0.99999,  # Cinco nueves amigos\n              ema_start=0,\n              augment_name='mixup_cutmix',\n              train_batch_size=train_batch_size,\n              eval_batch_size=50,\n              eval_subset='test',\n              num_classes=1000,\n              which_dataset='imagenet',\n              which_loss='softmax_cross_entropy',  # One of softmax or sigmoid\n              bfloat16=False,\n              lr_schedule=dict(\n                  name='WarmupCosineDecay',\n                  kwargs=dict(num_steps=config.training_steps,\n                              start_val=0,\n                              min_val=0.001,\n                              warmup_steps=5*steps_per_epoch),\n                  ),\n              lr_scale_by_bs=False,\n              optimizer=dict(\n                  name='SGD',\n                  kwargs={'momentum': 0.9, 'nesterov': True,\n                          'weight_decay': 5e-5,},\n              ),\n              model_kwargs=dict(\n                  variant='B0',\n                  width=0.75,\n                  expansion=2.25,\n                  se_ratio=0.5,\n                  alpha=0.2,\n                  stochdepth_rate=0.1,\n                  drop_rate=None,\n                  activation='silu',\n                  ),\n\n              )))\n\n  # Set weight decay based on variant (scaled as 5e-5 + 1e-5 * level)\n  variant = config.experiment_kwargs.config.model_kwargs.variant\n  weight_decay = {'B0': 5e-5, 'B1': 6e-5, 'B2': 7e-5,\n                  'B3': 8e-5, 'B4': 9e-5, 'B5': 1e-4}[variant]\n  config.experiment_kwargs.config.optimizer.kwargs.weight_decay = weight_decay\n\n  return config\n\nExperiment = experiment.Experiment\n"
  },
  {
    "path": "nfnets/experiment_nfnets.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\nr\"\"\"ImageNet experiment with NFNets.\"\"\"\n\nimport sys\n\nfrom absl import flags\nimport haiku as hk\nfrom jaxline import platform\nfrom ml_collections import config_dict\n\nfrom nfnets import experiment\nfrom nfnets import optim\n\nFLAGS = flags.FLAGS\n\n\ndef get_config():\n  \"\"\"Return config object for training.\"\"\"\n  config = experiment.get_config()\n\n  # Experiment config.\n  train_batch_size = 4096  # Global batch size.\n  images_per_epoch = 1281167\n  num_epochs = 360\n  steps_per_epoch = images_per_epoch / train_batch_size\n  config.training_steps = ((images_per_epoch * num_epochs) // train_batch_size)\n  config.random_seed = 0\n\n  config.experiment_kwargs = config_dict.ConfigDict(\n      dict(\n          config=dict(\n              lr=0.1,\n              num_epochs=num_epochs,\n              label_smoothing=0.1,\n              model='NFNet',\n              image_size=224,\n              use_ema=True,\n              ema_decay=0.99999,\n              ema_start=0,\n              augment_name=None,\n              augment_before_mix=False,\n              eval_preproc='resize_crop_32',\n              train_batch_size=train_batch_size,\n              eval_batch_size=50,\n              eval_subset='test',\n              num_classes=1000,\n              which_dataset='imagenet',\n              which_loss='softmax_cross_entropy',  # One of softmax or sigmoid\n              bfloat16=True,\n              lr_schedule=dict(\n                  name='WarmupCosineDecay',\n                  kwargs=dict(num_steps=config.training_steps,\n                              start_val=0,\n                              min_val=0.0,\n                              warmup_steps=5*steps_per_epoch),\n                  ),\n              lr_scale_by_bs=True,\n              optimizer=dict(\n                  name='SGD_AGC',\n                  kwargs={'momentum': 0.9, 'nesterov': True,\n                          'weight_decay': 2e-5,\n                          'clipping': 0.01, 'eps': 1e-3},\n              ),\n              model_kwargs=dict(\n                  variant='F0',\n                  width=1.0,\n                  se_ratio=0.5,\n                  alpha=0.2,\n                  stochdepth_rate=0.25,\n                  drop_rate=None,  # Use native drop-rate\n                  activation='gelu',\n                  final_conv_mult=2,\n                  final_conv_ch=None,\n                  use_two_convs=True,\n                  ),\n              )))\n\n  # Unlike NF-RegNets, use the same weight decay for all, but vary RA levels\n  variant = config.experiment_kwargs.config.model_kwargs.variant\n  # RandAugment levels (e.g. 405 = 4 layers, magnitude 5, 205 = 2 layers, mag 5)\n  augment = {'F0': '405', 'F1': '410', 'F2': '410', 'F3': '415',\n             'F4': '415', 'F5': '415', 'F6': '415', 'F7': '415'}[variant]\n  aug_base_name = 'cutmix_mixup_randaugment'\n  config.experiment_kwargs.config.augment_name = f'{aug_base_name}_{augment}'\n\n  return config\n\n\nclass Experiment(experiment.Experiment):\n  \"\"\"Experiment with correct parameter filtering for applying AGC.\"\"\"\n\n  def _make_opt(self):\n    # Separate conv params and gains/biases\n    def pred_gb(mod, name, val):\n      del mod, val\n      return (name in ['scale', 'offset', 'b']\n              or 'gain' in name or 'bias' in name)\n    gains_biases, weights = hk.data_structures.partition(pred_gb, self._params)\n    def pred_fc(mod, name, val):\n      del name, val\n      return 'linear' in mod and 'squeeze_excite' not in mod\n    fc_weights, weights = hk.data_structures.partition(pred_fc, weights)\n    # Lr schedule with batch-based LR scaling\n    if self.config.lr_scale_by_bs:\n      max_lr = (self.config.lr * self.config.train_batch_size) / 256\n    else:\n      max_lr = self.config.lr\n    lr_sched_fn = getattr(optim, self.config.lr_schedule.name)\n    lr_schedule = lr_sched_fn(max_val=max_lr, **self.config.lr_schedule.kwargs)\n    # Optimizer; no need to broadcast!\n    opt_kwargs = {key: val for key, val in self.config.optimizer.kwargs.items()}\n    opt_kwargs['lr'] = lr_schedule\n    opt_module = getattr(optim, self.config.optimizer.name)\n    self.opt = opt_module([{'params': gains_biases, 'weight_decay': None,},\n                           {'params': fc_weights, 'clipping': None},\n                           {'params': weights}], **opt_kwargs)\n    if self._opt_state is None:\n      self._opt_state = self.opt.states()\n    else:\n      self.opt.plugin(self._opt_state)\n\n\nif __name__ == '__main__':\n  flags.mark_flag_as_required('config')\n  platform.main(Experiment, sys.argv[1:])\n"
  },
  {
    "path": "nfnets/fixup_resnet.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\n\"\"\"ResNet (post-activation) with FixUp.\"\"\"\n# pylint: disable=invalid-name\n\nimport functools\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nfrom nfnets import base\n\n\nnonlinearities = {\n    'swish': jax.nn.silu,\n    'relu': jax.nn.relu,\n    'identity': lambda x: x}\n\n\nclass FixUp_ResNet(hk.Module):\n  \"\"\"Fixup based ResNet.\"\"\"\n\n  variant_dict = {'ResNet50': {'depth': [3, 4, 6, 3]},\n                  'ResNet101': {'depth': [3, 4, 23, 3]},\n                  'ResNet152': {'depth': [3, 8, 36, 3]},\n                  'ResNet200': {'depth': [3, 24, 36, 3]},\n                  'ResNet288': {'depth': [24, 24, 24, 24]},\n                  'ResNet600': {'depth': [50, 50, 50, 50]},\n                  }\n\n  def __init__(self, num_classes, variant='ResNet50', width=4,\n               stochdepth_rate=0.1, drop_rate=None,\n               activation='relu', fc_init=jnp.zeros,\n               name='FixUp_ResNet'):\n    super().__init__(name=name)\n    self.num_classes = num_classes\n    self.variant = variant\n    self.width = width\n    # Get variant info\n    block_params = self.variant_dict[self.variant]\n    self.width_pattern = [item * self.width for item in [64, 128, 256, 512]]\n    self.depth_pattern = block_params['depth']\n    self.activation = nonlinearities[activation]\n    if drop_rate is None:\n      self.drop_rate = block_params['drop_rate']\n    else:\n      self.drop_rate = drop_rate\n    self.which_conv = functools.partial(hk.Conv2D,\n                                        with_bias=False)\n    # Stem\n    ch = int(16 * self.width)\n    self.initial_conv = self.which_conv(ch, kernel_shape=7, stride=2,\n                                        padding='SAME',\n                                        name='initial_conv')\n\n    # Body\n    self.blocks = []\n    num_blocks = sum(self.depth_pattern)\n    index = 0  # Overall block index\n    block_args = (self.width_pattern, self.depth_pattern, [1, 2, 2, 2])\n    for block_width, stage_depth, stride in zip(*block_args):\n      for block_index in range(stage_depth):\n        # Block stochastic depth drop-rate\n        block_stochdepth_rate = stochdepth_rate * index / num_blocks\n        self.blocks += [ResBlock(ch, block_width, num_blocks,\n                                 stride=stride if block_index == 0 else 1,\n                                 activation=self.activation,\n                                 which_conv=self.which_conv,\n                                 stochdepth_rate=block_stochdepth_rate,\n                                 )]\n        ch = block_width\n        index += 1\n\n    # Head\n    self.fc = hk.Linear(self.num_classes, w_init=fc_init, with_bias=True)\n\n  def __call__(self, x, is_training=True, return_metrics=False):\n    \"\"\"Return the output of the final layer without any [log-]softmax.\"\"\"\n    # Stem\n    outputs = {}\n    out = self.initial_conv(x)\n    bias1 = hk.get_parameter('bias1', (), x.dtype, init=jnp.zeros)\n    out = self.activation(out + bias1)\n    out = hk.max_pool(out, window_shape=(1, 3, 3, 1),\n                      strides=(1, 2, 2, 1), padding='SAME')\n    if return_metrics:\n      outputs.update(base.signal_metrics(out, 0))\n    # Blocks\n    for i, block in enumerate(self.blocks):\n      out, res_avg_var = block(out, is_training=is_training)\n      if return_metrics:\n        outputs.update(base.signal_metrics(out, i + 1))\n        outputs[f'res_avg_var_{i}'] = res_avg_var\n    # Final-conv->activation, pool, dropout, classify\n    pool = jnp.mean(out, [1, 2])\n    outputs['pool'] = pool\n    # Optionally apply dropout\n    if self.drop_rate > 0.0 and is_training:\n      pool = hk.dropout(hk.next_rng_key(), self.drop_rate, pool)\n    bias2 = hk.get_parameter('bias2', (), pool.dtype, init=jnp.zeros)\n    outputs['logits'] = self.fc(pool + bias2)\n    return outputs\n\n  def count_flops(self, h, w):\n    flops = []\n    flops += [base.count_conv_flops(3, self.initial_conv, h, w)]\n    h, w = h / 2, w / 2\n    # Body FLOPs\n    for block in self.blocks:\n      flops += [block.count_flops(h, w)]\n      if block.stride > 1:\n        h, w = h / block.stride, w / block.stride\n    # Count flops for classifier\n    flops += [self.blocks[-1].out_ch * self.fc.output_size]\n    return flops, sum(flops)\n\n\nclass ResBlock(hk.Module):\n  \"\"\"Post-activation Fixup Block.\"\"\"\n\n  def __init__(self, in_ch, out_ch, num_blocks, bottleneck_ratio=0.25,\n               kernel_size=3, stride=1,\n               which_conv=hk.Conv2D, activation=jax.nn.relu,\n               stochdepth_rate=None, name=None):\n    super().__init__(name=name)\n    self.in_ch, self.out_ch = in_ch, out_ch\n    self.kernel_size = kernel_size\n    self.activation = activation\n    # Bottleneck width\n    self.width = int(self.out_ch * bottleneck_ratio)\n    self.stride = stride\n    # Conv 0 (typically expansion conv)\n    conv0_init = hk.initializers.RandomNormal(\n        stddev=((2 / self.width)**0.5) * (num_blocks**(-0.25)))\n    self.conv0 = which_conv(self.width, kernel_shape=1, padding='SAME',\n                            name='conv0', w_init=conv0_init)\n    # Grouped NxN conv\n    conv1_init = hk.initializers.RandomNormal(\n        stddev=((2 / (self.width * (kernel_size**2)))**0.5)\n        * (num_blocks**(-0.25)))\n    self.conv1 = which_conv(self.width, kernel_shape=kernel_size, stride=stride,\n                            padding='SAME', name='conv1', w_init=conv1_init)\n    # Conv 2, typically projection conv\n    self.conv2 = which_conv(self.out_ch, kernel_shape=1, padding='SAME',\n                            name='conv2', w_init=hk.initializers.Constant(0))\n    # Use shortcut conv on channel change or downsample.\n    self.use_projection = stride > 1 or self.in_ch != self.out_ch\n    if self.use_projection:\n      shortcut_init = hk.initializers.RandomNormal(\n          stddev=(2 / self.out_ch) ** 0.5)\n      self.conv_shortcut = which_conv(self.out_ch, kernel_shape=1,\n                                      stride=stride, padding='SAME',\n                                      name='conv_shortcut',\n                                      w_init=shortcut_init)\n    # Are we using stochastic depth?\n    self._has_stochdepth = (stochdepth_rate is not None and\n                            stochdepth_rate > 0. and stochdepth_rate < 1.0)\n    if self._has_stochdepth:\n      self.stoch_depth = base.StochDepth(stochdepth_rate)\n\n  def __call__(self, x, is_training):\n    bias1a = hk.get_parameter('bias1a', (), x.dtype, init=jnp.zeros)\n    bias1b = hk.get_parameter('bias1b', (), x.dtype, init=jnp.zeros)\n    bias2a = hk.get_parameter('bias2a', (), x.dtype, init=jnp.zeros)\n    bias2b = hk.get_parameter('bias2b', (), x.dtype, init=jnp.zeros)\n    bias3a = hk.get_parameter('bias3a', (), x.dtype, init=jnp.zeros)\n    bias3b = hk.get_parameter('bias3b', (), x.dtype, init=jnp.zeros)\n    scale = hk.get_parameter('scale', (), x.dtype, init=jnp.ones)\n\n    out = x + bias1a\n    shortcut = out\n    if self.use_projection:  # Downsample with conv1x1\n      shortcut = self.conv_shortcut(shortcut)\n    out = self.conv0(out)\n    out = self.activation(out + bias1b)\n    out = self.conv1(out + bias2a)\n    out = self.activation(out + bias2b)\n    out = self.conv2(out + bias3a)\n    out = out * scale + bias3b\n    # Get average residual variance for reporting metrics.\n    res_avg_var = jnp.mean(jnp.var(out, axis=[0, 1, 2]))\n    # Apply stochdepth if applicable.\n    if self._has_stochdepth:\n      out = self.stoch_depth(out, is_training)\n    # SkipInit Gain\n    out = out + shortcut\n    return self.activation(out), res_avg_var\n\n  def count_flops(self, h, w):\n    # Count conv FLOPs based on input HW\n    expand_flops = base.count_conv_flops(self.in_ch, self.conv0, h, w)\n    # If block is strided we decrease resolution here.\n    dw_flops = base.count_conv_flops(self.width, self.conv1, h, w)\n    if self.stride > 1:\n      h, w = h / self.stride, w / self.stride\n    if self.use_projection:\n      sc_flops = base.count_conv_flops(self.in_ch, self.conv_shortcut, h, w)\n    else:\n      sc_flops = 0\n    contract_flops = base.count_conv_flops(self.width, self.conv2, h, w)\n    return sum([expand_flops, dw_flops, contract_flops, sc_flops])\n"
  },
  {
    "path": "nfnets/nf_regnet.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\n\"\"\"Normalizer-Free RegNets.\"\"\"\n# pylint: disable=invalid-name\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nfrom nfnets import base\n\n\nclass NF_RegNet(hk.Module):\n  \"\"\"Normalizer-Free RegNets.\"\"\"\n\n  variant_dict = base.nf_regnet_params\n\n  def __init__(self, num_classes, variant='B0',\n               width=0.75, expansion=2.25, group_size=8, se_ratio=0.5,\n               alpha=0.2, stochdepth_rate=0.1, drop_rate=None,\n               activation='swish', fc_init=jnp.zeros,\n               name='NF_RegNet'):\n    super().__init__(name=name)\n    self.num_classes = num_classes\n    self.variant = variant\n    self.width = width\n    self.expansion = expansion\n    self.group_size = group_size\n    self.se_ratio = se_ratio\n    # Get variant info\n    block_params = self.variant_dict[self.variant]\n    self.train_imsize = block_params['train_imsize']\n    self.test_imsize = block_params['test_imsize']\n    self.width_pattern = block_params['width']\n    self.depth_pattern = block_params['depth']\n    self.activation = base.nonlinearities[activation]\n    if drop_rate is None:\n      self.drop_rate = block_params['drop_rate']\n    else:\n      self.drop_rate = drop_rate\n    self.which_conv = base.WSConv2D\n    # Stem\n    ch = int(self.width_pattern[0] * self.width)\n    self.initial_conv = self.which_conv(ch, kernel_shape=3, stride=2,\n                                        padding='SAME', name='initial_conv')\n\n    # Body\n    self.blocks = []\n    expected_std = 1.0\n    num_blocks = sum(self.depth_pattern)\n    index = 0  # Overall block index\n    for block_width, stage_depth in zip(self.width_pattern, self.depth_pattern):\n      for block_index in range(stage_depth):\n        # Scalar pre-multiplier so each block sees an N(0,1) input at init\n        beta = 1./ expected_std\n        # Block stochastic depth drop-rate\n        block_stochdepth_rate = stochdepth_rate * index / num_blocks\n        # Use a bottleneck expansion ratio of 1 for first block following EffNet\n        expand_ratio = 1 if index == 0 else expansion\n        out_ch = (int(block_width * self.width))\n        self.blocks += [NFBlock(ch, out_ch,\n                                expansion=expand_ratio, se_ratio=se_ratio,\n                                group_size=self.group_size,\n                                stride=2 if block_index == 0 else 1,\n                                beta=beta, alpha=alpha,\n                                activation=self.activation,\n                                which_conv=self.which_conv,\n                                stochdepth_rate=block_stochdepth_rate,\n                                )]\n        ch = out_ch\n        index += 1\n         # Reset expected std but still give it 1 block of growth\n        if block_index == 0:\n          expected_std = 1.0\n        expected_std = (expected_std **2 + alpha**2)**0.5\n\n    # Head with final conv mimicking EffNets\n    self.final_conv = self.which_conv(int(1280 * ch // 440), kernel_shape=1,\n                                      padding='SAME', name='final_conv')\n    self.fc = hk.Linear(self.num_classes, w_init=fc_init, with_bias=True)\n\n  def __call__(self, x, is_training=True, return_metrics=False):\n    \"\"\"Return the output of the final layer without any [log-]softmax.\"\"\"\n    # Stem\n    outputs = {}\n    out = self.initial_conv(x)\n    if return_metrics:\n      outputs.update(base.signal_metrics(out, 0))\n    # Blocks\n    for i, block in enumerate(self.blocks):\n      out, res_avg_var = block(out, is_training=is_training)\n      if return_metrics:\n        outputs.update(base.signal_metrics(out, i + 1))\n        outputs[f'res_avg_var_{i}'] = res_avg_var\n    # Final-conv->activation, pool, dropout, classify\n    out = self.activation(self.final_conv(out))\n    pool = jnp.mean(out, [1, 2])\n    outputs['pool'] = pool\n    # Optionally apply dropout\n    if self.drop_rate > 0.0 and is_training:\n      pool = hk.dropout(hk.next_rng_key(), self.drop_rate, pool)\n    outputs['logits'] = self.fc(pool)\n    return outputs\n\n  def count_flops(self, h, w):\n    flops = []\n    flops += [base.count_conv_flops(3, self.initial_conv, h, w)]\n    h, w = h / 2, w / 2\n    # Body FLOPs\n    for block in self.blocks:\n      flops += [block.count_flops(h, w)]\n      if block.stride > 1:\n        h, w = h / block.stride, w / block.stride\n    # Head module FLOPs\n    out_ch = self.blocks[-1].out_ch\n    flops += [base.count_conv_flops(out_ch, self.final_conv, h, w)]\n    # Count flops for classifier\n    flops += [self.final_conv.output_channels * self.fc.output_size]\n    return flops, sum(flops)\n\n\nclass NFBlock(hk.Module):\n  \"\"\"Normalizer-Free RegNet Block.\"\"\"\n\n  def __init__(self, in_ch, out_ch, expansion=2.25, se_ratio=0.5,\n               kernel_size=3, group_size=8, stride=1,\n               beta=1.0, alpha=0.2,\n               which_conv=base.WSConv2D, activation=jax.nn.relu,\n               stochdepth_rate=None, name=None):\n    super().__init__(name=name)\n    self.in_ch, self.out_ch = in_ch, out_ch\n    self.expansion = expansion\n    self.se_ratio = se_ratio\n    self.kernel_size = kernel_size\n    self.activation = activation\n    self.beta, self.alpha = beta, alpha\n    # Round expanded with based on group count\n    width = int(self.in_ch * expansion)\n    self.groups = width // group_size\n    self.width = group_size * self.groups\n    self.stride = stride\n    # Conv 0 (typically expansion conv)\n    self.conv0 = which_conv(self.width, kernel_shape=1, padding='SAME',\n                            name='conv0')\n    # Grouped NxN conv\n    self.conv1 = which_conv(self.width, kernel_shape=kernel_size, stride=stride,\n                            padding='SAME', feature_group_count=self.groups,\n                            name='conv1')\n    # Conv 2, typically projection conv\n    self.conv2 = which_conv(self.out_ch, kernel_shape=1, padding='SAME',\n                            name='conv2')\n    # Use shortcut conv on channel change or downsample.\n    self.use_projection = stride > 1 or self.in_ch != self.out_ch\n    if self.use_projection:\n      self.conv_shortcut = which_conv(self.out_ch, kernel_shape=1,\n                                      padding='SAME', name='conv_shortcut')\n    # Squeeze + Excite Module\n    self.se = base.SqueezeExcite(self.width, self.width, self.se_ratio)\n\n    # Are we using stochastic depth?\n    self._has_stochdepth = (stochdepth_rate is not None and\n                            stochdepth_rate > 0. and stochdepth_rate < 1.0)\n    if self._has_stochdepth:\n      self.stoch_depth = base.StochDepth(stochdepth_rate)\n\n  def __call__(self, x, is_training):\n    out = self.activation(x) * self.beta\n    if self.stride > 1:  # Average-pool downsample.\n      shortcut = hk.avg_pool(out, window_shape=(1, 2, 2, 1),\n                             strides=(1, 2, 2, 1), padding='SAME')\n      if self.use_projection:\n        shortcut = self.conv_shortcut(shortcut)\n    elif self.use_projection:\n      shortcut = self.conv_shortcut(out)\n    else:\n      shortcut = x\n    out = self.conv0(out)\n    out = self.conv1(self.activation(out))\n    out = 2 * self.se(out) * out  # Multiply by 2 for rescaling\n    out = self.conv2(self.activation(out))\n    # Get average residual standard deviation for reporting metrics.\n    res_avg_var = jnp.mean(jnp.var(out, axis=[0, 1, 2]))\n    # Apply stochdepth if applicable.\n    if self._has_stochdepth:\n      out = self.stoch_depth(out, is_training)\n    # SkipInit Gain\n    out = out * hk.get_parameter('skip_gain', (), out.dtype, init=jnp.zeros)\n    return out * self.alpha + shortcut, res_avg_var\n\n  def count_flops(self, h, w):\n    # Count conv FLOPs based on input HW\n    expand_flops = base.count_conv_flops(self.in_ch, self.conv0, h, w)\n    # If block is strided we decrease resolution here.\n    dw_flops = base.count_conv_flops(self.width, self.conv1, h, w)\n    if self.stride > 1:\n      h, w = h / self.stride, w / self.stride\n    if self.use_projection:\n      sc_flops = base.count_conv_flops(self.in_ch, self.conv_shortcut, h, w)\n    else:\n      sc_flops = 0\n    # SE flops happen on avg-pooled activations\n    se_flops = self.se.fc0.output_size * self.width\n    se_flops += self.se.fc0.output_size * self.se.fc1.output_size\n    contract_flops = base.count_conv_flops(self.width, self.conv2, h, w)\n    return sum([expand_flops, dw_flops, se_flops, contract_flops, sc_flops])\n\n"
  },
  {
    "path": "nfnets/nf_resnet.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\n\"\"\"Norm-Free Residual Networks.\"\"\"\n# pylint: disable=invalid-name\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nfrom nfnets import base\n\n\nclass NF_ResNet(hk.Module):\n  \"\"\"Norm-Free preactivation ResNet.\"\"\"\n\n  variant_dict = {'ResNet50': {'depth': [3, 4, 6, 3]},\n                  'ResNet101': {'depth': [3, 4, 23, 3]},\n                  'ResNet152': {'depth': [3, 8, 36, 3]},\n                  'ResNet200': {'depth': [3, 24, 36, 3]},\n                  'ResNet288': {'depth': [24, 24, 24, 24]},\n                  'ResNet600': {'depth': [50, 50, 50, 50]},\n                  }\n\n  def __init__(self, num_classes, variant='ResNet50', width=4,\n               alpha=0.2, stochdepth_rate=0.1, drop_rate=None,\n               activation='relu', fc_init=None, skipinit_gain=jnp.zeros,\n               use_se=False, se_ratio=0.25,\n               name='NF_ResNet'):\n    super().__init__(name=name)\n    self.num_classes = num_classes\n    self.variant = variant\n    self.width = width\n    # Get variant info\n    block_params = self.variant_dict[self.variant]\n    self.width_pattern = [item * self.width for item in [64, 128, 256, 512]]\n    self.depth_pattern = block_params['depth']\n    self.activation = base.nonlinearities[activation]\n    if drop_rate is None:\n      self.drop_rate = block_params['drop_rate']\n    else:\n      self.drop_rate = drop_rate\n    self.which_conv = base.WSConv2D\n    # Stem\n    ch = int(16 * self.width)\n    self.initial_conv = self.which_conv(ch, kernel_shape=7, stride=2,\n                                        padding='SAME', with_bias=False,\n                                        name='initial_conv')\n\n    # Body\n    self.blocks = []\n    expected_std = 1.0\n    num_blocks = sum(self.depth_pattern)\n    index = 0  # Overall block index\n    block_args = (self.width_pattern, self.depth_pattern, [1, 2, 2, 2])\n    for block_width, stage_depth, stride in zip(*block_args):\n      for block_index in range(stage_depth):\n        # Scalar pre-multiplier so each block sees an N(0,1) input at init\n        beta = 1./ expected_std\n        # Block stochastic depth drop-rate\n        block_stochdepth_rate = stochdepth_rate * index / num_blocks\n        self.blocks += [NFResBlock(ch, block_width,\n                                   stride=stride if block_index == 0 else 1,\n                                   beta=beta, alpha=alpha,\n                                   activation=self.activation,\n                                   which_conv=self.which_conv,\n                                   stochdepth_rate=block_stochdepth_rate,\n                                   skipinit_gain=skipinit_gain,\n                                   use_se=use_se,\n                                   se_ratio=se_ratio,\n                                   )]\n        ch = block_width\n        index += 1\n        # Reset expected std but still give it 1 block of growth\n        if block_index == 0:\n          expected_std = 1.0\n        expected_std = (expected_std **2 + alpha**2)**0.5\n\n    # Head. By default, initialize with N(0, 0.01)\n    if fc_init is None:\n      fc_init = hk.initializers.RandomNormal(0.01, 0)\n    self.fc = hk.Linear(self.num_classes, w_init=fc_init, with_bias=True)\n\n  def __call__(self, x, is_training=True, return_metrics=False):\n    \"\"\"Return the output of the final layer without any [log-]softmax.\"\"\"\n    # Stem\n    outputs = {}\n    out = self.initial_conv(x)\n    out = hk.max_pool(out, window_shape=(1, 3, 3, 1),\n                      strides=(1, 2, 2, 1), padding='SAME')\n    if return_metrics:\n      outputs.update(base.signal_metrics(out, 0))\n    # Blocks\n    for i, block in enumerate(self.blocks):\n      out, res_avg_var = block(out, is_training=is_training)\n      if return_metrics:\n        outputs.update(base.signal_metrics(out, i + 1))\n        outputs[f'res_avg_var_{i}'] = res_avg_var\n    # Final-conv->activation, pool, dropout, classify\n    pool = jnp.mean(self.activation(out), [1, 2])\n    outputs['pool'] = pool\n    # Optionally apply dropout\n    if self.drop_rate > 0.0 and is_training:\n      pool = hk.dropout(hk.next_rng_key(), self.drop_rate, pool)\n    outputs['logits'] = self.fc(pool)\n    return outputs\n\n  def count_flops(self, h, w):\n    flops = []\n    flops += [base.count_conv_flops(3, self.initial_conv, h, w)]\n    h, w = h / 2, w / 2\n    # Body FLOPs\n    for block in self.blocks:\n      flops += [block.count_flops(h, w)]\n      if block.stride > 1:\n        h, w = h / block.stride, w / block.stride\n    # Count flops for classifier\n    flops += [self.blocks[-1].out_ch * self.fc.output_size]\n    return flops, sum(flops)\n\n\nclass NFResBlock(hk.Module):\n  \"\"\"Normalizer-Free pre-activation ResNet Block.\"\"\"\n\n  def __init__(self, in_ch, out_ch, bottleneck_ratio=0.25,\n               kernel_size=3, stride=1,\n               beta=1.0, alpha=0.2,\n               which_conv=base.WSConv2D, activation=jax.nn.relu,\n               skipinit_gain=jnp.zeros,\n               stochdepth_rate=None,\n               use_se=False, se_ratio=0.25,\n               name=None):\n    super().__init__(name=name)\n    self.in_ch, self.out_ch = in_ch, out_ch\n    self.kernel_size = kernel_size\n    self.activation = activation\n    self.beta, self.alpha = beta, alpha\n    self.skipinit_gain = skipinit_gain\n    self.use_se, self.se_ratio = use_se, se_ratio\n    # Bottleneck width\n    self.width = int(self.out_ch * bottleneck_ratio)\n    self.stride = stride\n    # Conv 0 (typically expansion conv)\n    self.conv0 = which_conv(self.width, kernel_shape=1, padding='SAME',\n                            name='conv0')\n    # Grouped NxN conv\n    self.conv1 = which_conv(self.width, kernel_shape=kernel_size, stride=stride,\n                            padding='SAME', name='conv1')\n    # Conv 2, typically projection conv\n    self.conv2 = which_conv(self.out_ch, kernel_shape=1, padding='SAME',\n                            name='conv2')\n    # Use shortcut conv on channel change or downsample.\n    self.use_projection = stride > 1 or self.in_ch != self.out_ch\n    if self.use_projection:\n      self.conv_shortcut = which_conv(self.out_ch, kernel_shape=1,\n                                      stride=stride, padding='SAME',\n                                      name='conv_shortcut')\n    # Are we using stochastic depth?\n    self._has_stochdepth = (stochdepth_rate is not None and\n                            stochdepth_rate > 0. and stochdepth_rate < 1.0)\n    if self._has_stochdepth:\n      self.stoch_depth = base.StochDepth(stochdepth_rate)\n\n    if self.use_se:\n      self.se = base.SqueezeExcite(self.out_ch, self.out_ch, self.se_ratio)\n\n  def __call__(self, x, is_training):\n    out = self.activation(x) * self.beta\n    shortcut = x\n    if self.use_projection:  # Downsample with conv1x1\n      shortcut = self.conv_shortcut(out)\n    out = self.conv0(out)\n    out = self.conv1(self.activation(out))\n    out = self.conv2(self.activation(out))\n    if self.use_se:\n      out = 2 * self.se(out) * out\n    # Get average residual standard deviation for reporting metrics.\n    res_avg_var = jnp.mean(jnp.var(out, axis=[0, 1, 2]))\n    # Apply stochdepth if applicable.\n    if self._has_stochdepth:\n      out = self.stoch_depth(out, is_training)\n    # SkipInit Gain\n    out = out * hk.get_parameter('skip_gain', (), out.dtype,\n                                 init=self.skipinit_gain)\n    return out * self.alpha + shortcut, res_avg_var\n\n  def count_flops(self, h, w):\n    # Count conv FLOPs based on input HW\n    expand_flops = base.count_conv_flops(self.in_ch, self.conv0, h, w)\n    # If block is strided we decrease resolution here.\n    dw_flops = base.count_conv_flops(self.width, self.conv1, h, w)\n    if self.stride > 1:\n      h, w = h / self.stride, w / self.stride\n    if self.use_projection:\n      sc_flops = base.count_conv_flops(self.in_ch, self.conv_shortcut, h, w)\n    else:\n      sc_flops = 0\n    # SE flops happen on avg-pooled activations\n    se_flops = self.se.fc0.output_size * self.width\n    se_flops += self.se.fc0.output_size * self.se.fc1.output_size\n    contract_flops = base.count_conv_flops(self.width, self.conv2, h, w)\n    return sum([expand_flops, dw_flops, se_flops, contract_flops, sc_flops])\n"
  },
  {
    "path": "nfnets/nfnet.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\n\"\"\"Norm-Free Nets.\"\"\"\n# pylint: disable=unused-import\n# pylint: disable=invalid-name\n\nimport functools\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport jax.random as jrandom\nimport numpy as np\n\n\nfrom nfnets import base\n\n\nclass NFNet(hk.Module):\n  \"\"\"Normalizer-Free Networks with an improved architecture.\n\n  References:\n    [Brock, Smith, De, Simonyan 2021] High-Performance Large-Scale Image\n    Recognition Without Normalization.\n  \"\"\"\n\n  variant_dict = base.nfnet_params\n\n  def __init__(self, num_classes, variant='F0',\n               width=1.0, se_ratio=0.5,\n               alpha=0.2, stochdepth_rate=0.1, drop_rate=None,\n               activation='gelu', fc_init=None,\n               final_conv_mult=2, final_conv_ch=None,\n               use_two_convs=True,\n               name='NFNet'):\n    super().__init__(name=name)\n    self.num_classes = num_classes\n    self.variant = variant\n    self.width = width\n    self.se_ratio = se_ratio\n    # Get variant info\n    block_params = self.variant_dict[self.variant]\n    self.train_imsize = block_params['train_imsize']\n    self.test_imsize = block_params['test_imsize']\n    self.width_pattern = block_params['width']\n    self.depth_pattern = block_params['depth']\n    self.bneck_pattern = block_params.get('expansion', [0.5] * 4)\n    self.group_pattern = block_params.get('group_width', [128] * 4)\n    self.big_pattern = block_params.get('big_width', [True] * 4)\n    self.activation = base.nonlinearities[activation]\n    if drop_rate is None:\n      self.drop_rate = block_params['drop_rate']\n    else:\n      self.drop_rate = drop_rate\n    self.which_conv = base.WSConv2D\n    # Stem\n    ch = self.width_pattern[0] // 2\n    self.stem = hk.Sequential([\n        self.which_conv(16, kernel_shape=3, stride=2,\n                        padding='SAME', name='stem_conv0'),\n        self.activation,\n        self.which_conv(32, kernel_shape=3, stride=1,\n                        padding='SAME', name='stem_conv1'),\n        self.activation,\n        self.which_conv(64, kernel_shape=3, stride=1,\n                        padding='SAME', name='stem_conv2'),\n        self.activation,\n        self.which_conv(ch, kernel_shape=3, stride=2,\n                        padding='SAME', name='stem_conv3'),\n    ])\n\n    # Body\n    self.blocks = []\n    expected_std = 1.0\n    num_blocks = sum(self.depth_pattern)\n    index = 0  # Overall block index\n    stride_pattern = [1, 2, 2, 2]\n    block_args = zip(self.width_pattern, self.depth_pattern, self.bneck_pattern,\n                     self.group_pattern, self.big_pattern, stride_pattern)\n    for (block_width, stage_depth, expand_ratio,\n         group_size, big_width, stride) in block_args:\n      for block_index in range(stage_depth):\n        # Scalar pre-multiplier so each block sees an N(0,1) input at init\n        beta = 1./ expected_std\n        # Block stochastic depth drop-rate\n        block_stochdepth_rate = stochdepth_rate * index / num_blocks\n        out_ch = (int(block_width * self.width))\n        self.blocks += [NFBlock(ch, out_ch,\n                                expansion=expand_ratio, se_ratio=se_ratio,\n                                group_size=group_size,\n                                stride=stride if block_index == 0 else 1,\n                                beta=beta, alpha=alpha,\n                                activation=self.activation,\n                                which_conv=self.which_conv,\n                                stochdepth_rate=block_stochdepth_rate,\n                                big_width=big_width,\n                                use_two_convs=use_two_convs,\n                                )]\n        ch = out_ch\n        index += 1\n         # Reset expected std but still give it 1 block of growth\n        if block_index == 0:\n          expected_std = 1.0\n        expected_std = (expected_std **2 + alpha**2)**0.5\n\n    # Head\n    if final_conv_mult is None:\n      if final_conv_ch is None:\n        raise ValueError('Must provide one of final_conv_mult or final_conv_ch')\n      ch = final_conv_ch\n    else:\n      ch = int(final_conv_mult * ch)\n    self.final_conv = self.which_conv(ch, kernel_shape=1,\n                                      padding='SAME', name='final_conv')\n    # By default, initialize with N(0, 0.01)\n    if fc_init is None:\n      fc_init = hk.initializers.RandomNormal(mean=0, stddev=0.01)\n    self.fc = hk.Linear(self.num_classes, w_init=fc_init, with_bias=True)\n\n  def __call__(self, x, is_training=True, return_metrics=False):\n    \"\"\"Return the output of the final layer without any [log-]softmax.\"\"\"\n    # Stem\n    outputs = {}\n    out = self.stem(x)\n    if return_metrics:\n      outputs.update(base.signal_metrics(out, 0))\n    # Blocks\n    for i, block in enumerate(self.blocks):\n      out, res_avg_var = block(out, is_training=is_training)\n      if return_metrics:\n        outputs.update(base.signal_metrics(out, i + 1))\n        outputs[f'res_avg_var_{i}'] = res_avg_var\n    # Final-conv->activation, pool, dropout, classify\n    out = self.activation(self.final_conv(out))\n    pool = jnp.mean(out, [1, 2])\n    outputs['pool'] = pool\n    # Optionally apply dropout\n    if self.drop_rate > 0.0 and is_training:\n      pool = hk.dropout(hk.next_rng_key(), self.drop_rate, pool)\n    outputs['logits'] = self.fc(pool)\n    return outputs\n\n  def count_flops(self, h, w):\n    flops = []\n    ch = 3\n    for module in self.stem.layers:\n      if isinstance(module, hk.Conv2D):\n        flops += [base.count_conv_flops(ch, module, h, w)]\n        if any([item > 1 for item in module.stride]):\n          h, w = h / module.stride[0], w / module.stride[1]\n        ch = module.output_channels\n    # Body FLOPs\n    for block in self.blocks:\n      flops += [block.count_flops(h, w)]\n      if block.stride > 1:\n        h, w = h / block.stride, w / block.stride\n    # Head module FLOPs\n    out_ch = self.blocks[-1].out_ch\n    flops += [base.count_conv_flops(out_ch, self.final_conv, h, w)]\n    # Count flops for classifier\n    flops += [self.final_conv.output_channels * self.fc.output_size]\n    return flops, sum(flops)\n\n\nclass NFBlock(hk.Module):\n  \"\"\"Normalizer-Free Net Block.\"\"\"\n\n  def __init__(self, in_ch, out_ch, expansion=0.5, se_ratio=0.5,\n               kernel_shape=3, group_size=128, stride=1,\n               beta=1.0, alpha=0.2,\n               which_conv=base.WSConv2D, activation=jax.nn.gelu,\n               big_width=True, use_two_convs=True,\n               stochdepth_rate=None, name=None):\n    super().__init__(name=name)\n    self.in_ch, self.out_ch = in_ch, out_ch\n    self.expansion = expansion\n    self.se_ratio = se_ratio\n    self.kernel_shape = kernel_shape\n    self.activation = activation\n    self.beta, self.alpha = beta, alpha\n    # Mimic resnet style bigwidth scaling?\n    width = int((self.out_ch if big_width else self.in_ch) * expansion)\n    # Round expanded with based on group count\n    self.groups = width // group_size\n    self.width = group_size * self.groups\n    self.stride = stride\n    self.use_two_convs = use_two_convs\n    # Conv 0 (typically expansion conv)\n    self.conv0 = which_conv(self.width, kernel_shape=1, padding='SAME',\n                            name='conv0')\n    # Grouped NxN conv\n    self.conv1 = which_conv(self.width, kernel_shape=kernel_shape,\n                            stride=stride, padding='SAME',\n                            feature_group_count=self.groups, name='conv1')\n    if self.use_two_convs:\n      self.conv1b = which_conv(self.width, kernel_shape=kernel_shape,\n                               stride=1, padding='SAME',\n                               feature_group_count=self.groups, name='conv1b')\n    # Conv 2, typically projection conv\n    self.conv2 = which_conv(self.out_ch, kernel_shape=1, padding='SAME',\n                            name='conv2')\n    # Use shortcut conv on channel change or downsample.\n    self.use_projection = stride > 1 or self.in_ch != self.out_ch\n    if self.use_projection:\n      self.conv_shortcut = which_conv(self.out_ch, kernel_shape=1,\n                                      padding='SAME', name='conv_shortcut')\n    # Squeeze + Excite Module\n    self.se = base.SqueezeExcite(self.out_ch, self.out_ch, self.se_ratio)\n\n    # Are we using stochastic depth?\n    self._has_stochdepth = (stochdepth_rate is not None and\n                            stochdepth_rate > 0. and stochdepth_rate < 1.0)\n    if self._has_stochdepth:\n      self.stoch_depth = base.StochDepth(stochdepth_rate)\n\n  def __call__(self, x, is_training):\n    out = self.activation(x) * self.beta\n    if self.stride > 1:  # Average-pool downsample.\n      shortcut = hk.avg_pool(out, window_shape=(1, 2, 2, 1),\n                             strides=(1, 2, 2, 1), padding='SAME')\n      if self.use_projection:\n        shortcut = self.conv_shortcut(shortcut)\n    elif self.use_projection:\n      shortcut = self.conv_shortcut(out)\n    else:\n      shortcut = x\n    out = self.conv0(out)\n    out = self.conv1(self.activation(out))\n    if self.use_two_convs:\n      out = self.conv1b(self.activation(out))\n    out = self.conv2(self.activation(out))\n    out = (self.se(out) * 2) * out  # Multiply by 2 for rescaling\n    # Get average residual standard deviation for reporting metrics.\n    res_avg_var = jnp.mean(jnp.var(out, axis=[0, 1, 2]))\n    # Apply stochdepth if applicable.\n    if self._has_stochdepth:\n      out = self.stoch_depth(out, is_training)\n    # SkipInit Gain\n    out = out * hk.get_parameter('skip_gain', (), out.dtype, init=jnp.zeros)\n    return out * self.alpha + shortcut, res_avg_var\n\n  def count_flops(self, h, w):\n    # Count conv FLOPs based on input HW\n    expand_flops = base.count_conv_flops(self.in_ch, self.conv0, h, w)\n    # If block is strided we decrease resolution here.\n    dw_flops = base.count_conv_flops(self.width, self.conv1, h, w)\n    if self.stride > 1:\n      h, w = h / self.stride, w / self.stride\n    if self.use_two_convs:\n      dw_flops += base.count_conv_flops(self.width, self.conv1b, h, w)\n\n    if self.use_projection:\n      sc_flops = base.count_conv_flops(self.in_ch, self.conv_shortcut, h, w)\n    else:\n      sc_flops = 0\n    # SE flops happen on avg-pooled activations\n    se_flops = self.se.fc0.output_size * self.out_ch\n    se_flops += self.se.fc0.output_size * self.se.fc1.output_size\n    contract_flops = base.count_conv_flops(self.width, self.conv2, h, w)\n    return sum([expand_flops, dw_flops, se_flops, contract_flops, sc_flops])\n\n"
  },
  {
    "path": "nfnets/nfnet_demo_colab.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"jev9nsjEePyx\"\n      },\n      \"source\": [\n        \"# Download and run an NFNet-F0 model pre-trained on ImageNet\\n\",\n        \"This demo shows how to run a pre-trained NFNet classifier, from the paper \\n\",\n        \"[High-Performance Large-Scale Image Recognition Without Normalization](http://dpmd.ai/06171) (Brock, De, Smith, Simonyan, 2021). It uses code from [the official JAX + Haiku implementation](http://dpmd.ai/nfnets).\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"It's recommended to use `Runtime-\\u003eChange Runtime Type` to pick a GPU for speed.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"executionInfo\": {\n          \"elapsed\": 16619,\n          \"status\": \"ok\",\n          \"timestamp\": 1613472332810,\n          \"user\": {\n            \"displayName\": \"Andy Brock\",\n            \"photoUrl\": \"\",\n            \"userId\": \"04378600802759613630\"\n          },\n          \"user_tz\": 0\n        },\n        \"id\": \"bvEKqIQAZjxo\",\n        \"outputId\": \"846ba4c5-08cb-4d14-de38-8426de8d564e\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Collecting dm-haiku\\n\",\n            \"\\u001b[?25l  Downloading https://files.pythonhosted.org/packages/61/dc/6da61c7f96bffd7ebc2888510e5ec82ee260cbc1d7a3f4f0a862914646f8/dm_haiku-0.0.3-py3-none-any.whl (260kB)\\n\",\n            \"\\r\\u001b[K     |█▎                              | 10kB 18.5MB/s eta 0:00:01\\r\\u001b[K     |██▌                             | 20kB 22.7MB/s eta 0:00:01\\r\\u001b[K     |███▊                            | 30kB 22.3MB/s eta 0:00:01\\r\\u001b[K     |█████                           | 40kB 18.3MB/s eta 0:00:01\\r\\u001b[K     |██████▎                         | 51kB 15.6MB/s eta 0:00:01\\r\\u001b[K     |███████▌                        | 61kB 12.2MB/s eta 0:00:01\\r\\u001b[K     |████████▉                       | 71kB 12.9MB/s eta 0:00:01\\r\\u001b[K     |██████████                      | 81kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |███████████▎                    | 92kB 12.9MB/s eta 0:00:01\\r\\u001b[K     |████████████▋                   | 102kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |█████████████▉                  | 112kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |███████████████                 | 122kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |████████████████▍               | 133kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |█████████████████▋              | 143kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |██████████████████▉             | 153kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |████████████████████▏           | 163kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |█████████████████████▍          | 174kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |██████████████████████▋         | 184kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |████████████████████████        | 194kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |█████████████████████████▏      | 204kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |██████████████████████████▍     | 215kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |███████████████████████████▊    | 225kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |█████████████████████████████   | 235kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |██████████████████████████████▏ | 245kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |███████████████████████████████▌| 256kB 12.7MB/s eta 0:00:01\\r\\u001b[K     |████████████████████████████████| 266kB 12.7MB/s \\n\",\n            \"\\u001b[?25hRequirement already satisfied: absl-py\\u003e=0.7.1 in /usr/local/lib/python3.6/dist-packages (from dm-haiku) (0.10.0)\\n\",\n            \"Requirement already satisfied: numpy\\u003e=1.18.0 in /usr/local/lib/python3.6/dist-packages (from dm-haiku) (1.19.5)\\n\",\n            \"Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from absl-py\\u003e=0.7.1-\\u003edm-haiku) (1.15.0)\\n\",\n            \"Installing collected packages: dm-haiku\\n\",\n            \"Successfully installed dm-haiku-0.0.3\\n\",\n            \"Requirement already satisfied: dill in /usr/local/lib/python3.6/dist-packages (0.3.3)\\n\",\n            \"Cloning into 'deepmind-research'...\\n\",\n            \"remote: Enumerating objects: 10, done.\\u001b[K\\n\",\n            \"remote: Counting objects: 100% (10/10), done.\\u001b[K\\n\",\n            \"remote: Compressing objects: 100% (10/10), done.\\u001b[K\\n\",\n            \"remote: Total 1307 (delta 0), reused 4 (delta 0), pack-reused 1297\\u001b[K\\n\",\n            \"Receiving objects: 100% (1307/1307), 74.41 MiB | 20.20 MiB/s, done.\\n\",\n            \"Resolving deltas: 100% (656/656), done.\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\\n\",\n        \"#\\n\",\n        \"# Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"# you may not use this file except in compliance with the License.\\n\",\n        \"# You may obtain a copy of the License at\\n\",\n        \"#\\n\",\n        \"#     http://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"#\\n\",\n        \"# Unless required by applicable law or agreed to in writing, software\\n\",\n        \"# distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"# See the License for the specific language governing permissions and\\n\",\n        \"# limitations under the License.\\n\",\n        \"# ==============================================================================\\n\",\n        \"!pip install dm-haiku\\n\",\n        \"!pip install dill\\n\",\n        \"!git clone https://github.com/deepmind/deepmind-research/\\n\",\n        \"import dill\\n\",\n        \"import haiku as hk\\n\",\n        \"import jax\\n\",\n        \"import jax.numpy as jnp\\n\",\n        \"import os\\n\",\n        \"import numpy as np\\n\",\n        \"from PIL import Image\\n\",\n        \"os.chdir('deepmind-research')\\n\",\n        \"from nfnets import nfnet, base\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"d3oIj5O1dyVB\"\n      },\n      \"source\": [\n        \"# ImageNet Class List\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"A9pD88rU5wsw\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Get ImageNet class list\\n\",\n        \"imagenet_classlist = {0: 'tench, Tinca tinca',\\n\",\n        \" 1: 'goldfish, Carassius auratus',\\n\",\n        \" 2: 'great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias',\\n\",\n        \" 3: 'tiger shark, Galeocerdo cuvieri',\\n\",\n        \" 4: 'hammerhead, hammerhead shark',\\n\",\n        \" 5: 'electric ray, crampfish, numbfish, torpedo',\\n\",\n        \" 6: 'stingray',\\n\",\n        \" 7: 'rooster',\\n\",\n        \" 8: 'hen',\\n\",\n        \" 9: 'ostrich, Struthio camelus',\\n\",\n        \" 10: 'brambling, Fringilla montifringilla',\\n\",\n        \" 11: 'goldfinch, Carduelis carduelis',\\n\",\n        \" 12: 'house finch, linnet, Carpodacus mexicanus',\\n\",\n        \" 13: 'junco, snowbird',\\n\",\n        \" 14: 'indigo bunting, indigo finch, indigo bird, Passerina cyanea',\\n\",\n        \" 15: 'robin, American robin, Turdus migratorius',\\n\",\n        \" 16: 'bulbul',\\n\",\n        \" 17: 'jay',\\n\",\n        \" 18: 'magpie',\\n\",\n        \" 19: 'chickadee',\\n\",\n        \" 20: 'water ouzel, dipper',\\n\",\n        \" 21: 'kite',\\n\",\n        \" 22: 'bald eagle, American eagle, Haliaeetus leucocephalus',\\n\",\n        \" 23: 'vulture',\\n\",\n        \" 24: 'great grey owl, great gray owl, Strix nebulosa',\\n\",\n        \" 25: 'European fire salamander, Salamandra salamandra',\\n\",\n        \" 26: 'common newt, Triturus vulgaris',\\n\",\n        \" 27: 'eft',\\n\",\n        \" 28: 'spotted salamander, Ambystoma maculatum',\\n\",\n        \" 29: 'axolotl, mud puppy, Ambystoma mexicanum',\\n\",\n        \" 30: 'bullfrog, Rana catesbeiana',\\n\",\n        \" 31: 'tree frog, tree-frog',\\n\",\n        \" 32: 'tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui',\\n\",\n        \" 33: 'loggerhead, loggerhead turtle, Caretta caretta',\\n\",\n        \" 34: 'leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea',\\n\",\n        \" 35: 'mud turtle',\\n\",\n        \" 36: 'terrapin',\\n\",\n        \" 37: 'box turtle, box tortoise',\\n\",\n        \" 38: 'banded gecko',\\n\",\n        \" 39: 'common iguana, iguana, Iguana iguana',\\n\",\n        \" 40: 'American chameleon, anole, Anolis carolinensis',\\n\",\n        \" 41: 'whiptail, whiptail lizard',\\n\",\n        \" 42: 'agama',\\n\",\n        \" 43: 'frilled lizard, Chlamydosaurus kingi',\\n\",\n        \" 44: 'alligator lizard',\\n\",\n        \" 45: 'Gila monster, Heloderma suspectum',\\n\",\n        \" 46: 'green lizard, Lacerta viridis',\\n\",\n        \" 47: 'African chameleon, Chamaeleo chamaeleon',\\n\",\n        \" 48: 'Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis',\\n\",\n        \" 49: 'African crocodile, Nile crocodile, Crocodylus niloticus',\\n\",\n        \" 50: 'American alligator, Alligator mississipiensis',\\n\",\n        \" 51: 'triceratops',\\n\",\n        \" 52: 'thunder snake, worm snake, Carphophis amoenus',\\n\",\n        \" 53: 'ringneck snake, ring-necked snake, ring snake',\\n\",\n        \" 54: 'hognose snake, puff adder, sand viper',\\n\",\n        \" 55: 'green snake, grass snake',\\n\",\n        \" 56: 'king snake, kingsnake',\\n\",\n        \" 57: 'garter snake, grass snake',\\n\",\n        \" 58: 'water snake',\\n\",\n        \" 59: 'vine snake',\\n\",\n        \" 60: 'night snake, Hypsiglena torquata',\\n\",\n        \" 61: 'boa constrictor, Constrictor constrictor',\\n\",\n        \" 62: 'rock python, rock snake, Python sebae',\\n\",\n        \" 63: 'Indian cobra, Naja naja',\\n\",\n        \" 64: 'green mamba',\\n\",\n        \" 65: 'sea snake',\\n\",\n        \" 66: 'horned viper, cerastes, sand viper, horned asp, Cerastes cornutus',\\n\",\n        \" 67: 'diamondback, diamondback rattlesnake, Crotalus adamanteus',\\n\",\n        \" 68: 'sidewinder, horned rattlesnake, Crotalus cerastes',\\n\",\n        \" 69: 'trilobite',\\n\",\n        \" 70: 'harvestman, daddy longlegs, Phalangium opilio',\\n\",\n        \" 71: 'scorpion',\\n\",\n        \" 72: 'black and gold garden spider, Argiope aurantia',\\n\",\n        \" 73: 'barn spider, Araneus cavaticus',\\n\",\n        \" 74: 'garden spider, Aranea diademata',\\n\",\n        \" 75: 'black widow, Latrodectus mactans',\\n\",\n        \" 76: 'tarantula',\\n\",\n        \" 77: 'wolf spider, hunting spider',\\n\",\n        \" 78: 'tick',\\n\",\n        \" 79: 'centipede',\\n\",\n        \" 80: 'black grouse',\\n\",\n        \" 81: 'ptarmigan',\\n\",\n        \" 82: 'ruffed grouse, partridge, Bonasa umbellus',\\n\",\n        \" 83: 'prairie chicken, prairie grouse, prairie fowl',\\n\",\n        \" 84: 'peacock',\\n\",\n        \" 85: 'quail',\\n\",\n        \" 86: 'partridge',\\n\",\n        \" 87: 'African grey, African gray, Psittacus erithacus',\\n\",\n        \" 88: 'macaw',\\n\",\n        \" 89: 'sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita',\\n\",\n        \" 90: 'lorikeet',\\n\",\n        \" 91: 'coucal',\\n\",\n        \" 92: 'bee eater',\\n\",\n        \" 93: 'hornbill',\\n\",\n        \" 94: 'hummingbird',\\n\",\n        \" 95: 'jacamar',\\n\",\n        \" 96: 'toucan',\\n\",\n        \" 97: 'drake',\\n\",\n        \" 98: 'red-breasted merganser, Mergus serrator',\\n\",\n        \" 99: 'goose',\\n\",\n        \" 100: 'black swan, Cygnus atratus',\\n\",\n        \" 101: 'tusker',\\n\",\n        \" 102: 'echidna, spiny anteater, anteater',\\n\",\n        \" 103: 'platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus',\\n\",\n        \" 104: 'wallaby, brush kangaroo',\\n\",\n        \" 105: 'koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus',\\n\",\n        \" 106: 'wombat',\\n\",\n        \" 107: 'jellyfish',\\n\",\n        \" 108: 'sea anemone, anemone',\\n\",\n        \" 109: 'brain coral',\\n\",\n        \" 110: 'flatworm, platyhelminth',\\n\",\n        \" 111: 'nematode, nematode worm, roundworm',\\n\",\n        \" 112: 'conch',\\n\",\n        \" 113: 'snail',\\n\",\n        \" 114: 'slug',\\n\",\n        \" 115: 'sea slug, nudibranch',\\n\",\n        \" 116: 'chiton, coat-of-mail shell, sea cradle, polyplacophore',\\n\",\n        \" 117: 'chambered nautilus, pearly nautilus, nautilus',\\n\",\n        \" 118: 'Dungeness crab, Cancer magister',\\n\",\n        \" 119: 'rock crab, Cancer irroratus',\\n\",\n        \" 120: 'fiddler crab',\\n\",\n        \" 121: 'king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica',\\n\",\n        \" 122: 'American lobster, Northern lobster, Maine lobster, Homarus americanus',\\n\",\n        \" 123: 'spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish',\\n\",\n        \" 124: 'crayfish, crawfish, crawdad, crawdaddy',\\n\",\n        \" 125: 'hermit crab',\\n\",\n        \" 126: 'isopod',\\n\",\n        \" 127: 'white stork, Ciconia ciconia',\\n\",\n        \" 128: 'black stork, Ciconia nigra',\\n\",\n        \" 129: 'spoonbill',\\n\",\n        \" 130: 'flamingo',\\n\",\n        \" 131: 'little blue heron, Egretta caerulea',\\n\",\n        \" 132: 'American egret, great white heron, Egretta albus',\\n\",\n        \" 133: 'bittern',\\n\",\n        \" 134: 'crane',\\n\",\n        \" 135: 'limpkin, Aramus pictus',\\n\",\n        \" 136: 'European gallinule, Porphyrio porphyrio',\\n\",\n        \" 137: 'American coot, marsh hen, mud hen, water hen, Fulica americana',\\n\",\n        \" 138: 'bustard',\\n\",\n        \" 139: 'ruddy turnstone, Arenaria interpres',\\n\",\n        \" 140: 'red-backed sandpiper, dunlin, Erolia alpina',\\n\",\n        \" 141: 'redshank, Tringa totanus',\\n\",\n        \" 142: 'dowitcher',\\n\",\n        \" 143: 'oystercatcher, oyster catcher',\\n\",\n        \" 144: 'pelican',\\n\",\n        \" 145: 'king penguin, Aptenodytes patagonica',\\n\",\n        \" 146: 'albatross, mollymawk',\\n\",\n        \" 147: 'grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus',\\n\",\n        \" 148: 'killer whale, killer, orca, grampus, sea wolf, Orcinus orca',\\n\",\n        \" 149: 'dugong, Dugong dugon',\\n\",\n        \" 150: 'sea lion',\\n\",\n        \" 151: 'Chihuahua',\\n\",\n        \" 152: 'Japanese spaniel',\\n\",\n        \" 153: 'Maltese dog, Maltese terrier, Maltese',\\n\",\n        \" 154: 'Pekinese, Pekingese, Peke',\\n\",\n        \" 155: 'Shih-Tzu',\\n\",\n        \" 156: 'Blenheim spaniel',\\n\",\n        \" 157: 'papillon',\\n\",\n        \" 158: 'toy terrier',\\n\",\n        \" 159: 'Rhodesian ridgeback',\\n\",\n        \" 160: 'Afghan hound, Afghan',\\n\",\n        \" 161: 'basset, basset hound',\\n\",\n        \" 162: 'beagle',\\n\",\n        \" 163: 'bloodhound, sleuthhound',\\n\",\n        \" 164: 'bluetick',\\n\",\n        \" 165: 'black-and-tan coonhound',\\n\",\n        \" 166: 'Walker hound, Walker foxhound',\\n\",\n        \" 167: 'English foxhound',\\n\",\n        \" 168: 'redbone',\\n\",\n        \" 169: 'borzoi, Russian wolfhound',\\n\",\n        \" 170: 'Irish wolfhound',\\n\",\n        \" 171: 'Italian greyhound',\\n\",\n        \" 172: 'whippet',\\n\",\n        \" 173: 'Ibizan hound, Ibizan Podenco',\\n\",\n        \" 174: 'Norwegian elkhound, elkhound',\\n\",\n        \" 175: 'otterhound, otter hound',\\n\",\n        \" 176: 'Saluki, gazelle hound',\\n\",\n        \" 177: 'Scottish deerhound, deerhound',\\n\",\n        \" 178: 'Weimaraner',\\n\",\n        \" 179: 'Staffordshire bullterrier, Staffordshire bull terrier',\\n\",\n        \" 180: 'American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier',\\n\",\n        \" 181: 'Bedlington terrier',\\n\",\n        \" 182: 'Border terrier',\\n\",\n        \" 183: 'Kerry blue terrier',\\n\",\n        \" 184: 'Irish terrier',\\n\",\n        \" 185: 'Norfolk terrier',\\n\",\n        \" 186: 'Norwich terrier',\\n\",\n        \" 187: 'Yorkshire terrier',\\n\",\n        \" 188: 'wire-haired fox terrier',\\n\",\n        \" 189: 'Lakeland terrier',\\n\",\n        \" 190: 'Sealyham terrier, Sealyham',\\n\",\n        \" 191: 'Airedale, Airedale terrier',\\n\",\n        \" 192: 'cairn, cairn terrier',\\n\",\n        \" 193: 'Australian terrier',\\n\",\n        \" 194: 'Dandie Dinmont, Dandie Dinmont terrier',\\n\",\n        \" 195: 'Boston bull, Boston terrier',\\n\",\n        \" 196: 'miniature schnauzer',\\n\",\n        \" 197: 'giant schnauzer',\\n\",\n        \" 198: 'standard schnauzer',\\n\",\n        \" 199: 'Scotch terrier, Scottish terrier, Scottie',\\n\",\n        \" 200: 'Tibetan terrier, chrysanthemum dog',\\n\",\n        \" 201: 'silky terrier, Sydney silky',\\n\",\n        \" 202: 'soft-coated wheaten terrier',\\n\",\n        \" 203: 'West Highland white terrier',\\n\",\n        \" 204: 'Lhasa, Lhasa apso',\\n\",\n        \" 205: 'flat-coated retriever',\\n\",\n        \" 206: 'curly-coated retriever',\\n\",\n        \" 207: 'golden retriever',\\n\",\n        \" 208: 'Labrador retriever',\\n\",\n        \" 209: 'Chesapeake Bay retriever',\\n\",\n        \" 210: 'German short-haired pointer',\\n\",\n        \" 211: 'vizsla, Hungarian pointer',\\n\",\n        \" 212: 'English setter',\\n\",\n        \" 213: 'Irish setter, red setter',\\n\",\n        \" 214: 'Gordon setter',\\n\",\n        \" 215: 'Brittany spaniel',\\n\",\n        \" 216: 'clumber, clumber spaniel',\\n\",\n        \" 217: 'English springer, English springer spaniel',\\n\",\n        \" 218: 'Welsh springer spaniel',\\n\",\n        \" 219: 'cocker spaniel, English cocker spaniel, cocker',\\n\",\n        \" 220: 'Sussex spaniel',\\n\",\n        \" 221: 'Irish water spaniel',\\n\",\n        \" 222: 'kuvasz',\\n\",\n        \" 223: 'schipperke',\\n\",\n        \" 224: 'groenendael',\\n\",\n        \" 225: 'malinois',\\n\",\n        \" 226: 'briard',\\n\",\n        \" 227: 'kelpie',\\n\",\n        \" 228: 'komondor',\\n\",\n        \" 229: 'Old English sheepdog, bobtail',\\n\",\n        \" 230: 'Shetland sheepdog, Shetland sheep dog, Shetland',\\n\",\n        \" 231: 'collie',\\n\",\n        \" 232: 'Border collie',\\n\",\n        \" 233: 'Bouvier des Flandres, Bouviers des Flandres',\\n\",\n        \" 234: 'Rottweiler',\\n\",\n        \" 235: 'German shepherd, German shepherd dog, German police dog, alsatian',\\n\",\n        \" 236: 'Doberman, Doberman pinscher',\\n\",\n        \" 237: 'miniature pinscher',\\n\",\n        \" 238: 'Greater Swiss Mountain dog',\\n\",\n        \" 239: 'Bernese mountain dog',\\n\",\n        \" 240: 'Appenzeller',\\n\",\n        \" 241: 'EntleBucher',\\n\",\n        \" 242: 'boxer',\\n\",\n        \" 243: 'bull mastiff',\\n\",\n        \" 244: 'Tibetan mastiff',\\n\",\n        \" 245: 'French bulldog',\\n\",\n        \" 246: 'Great Dane',\\n\",\n        \" 247: 'Saint Bernard, St Bernard',\\n\",\n        \" 248: 'Inuit dog, husky',\\n\",\n        \" 249: 'malamute, malemute, Alaskan malamute',\\n\",\n        \" 250: 'Siberian husky',\\n\",\n        \" 251: 'dalmatian, coach dog, carriage dog',\\n\",\n        \" 252: 'affenpinscher, monkey pinscher, monkey dog',\\n\",\n        \" 253: 'basenji',\\n\",\n        \" 254: 'pug, pug-dog',\\n\",\n        \" 255: 'Leonberg',\\n\",\n        \" 256: 'Newfoundland, Newfoundland dog',\\n\",\n        \" 257: 'Great Pyrenees',\\n\",\n        \" 258: 'Samoyed, Samoyede',\\n\",\n        \" 259: 'Pomeranian',\\n\",\n        \" 260: 'chow, chow chow',\\n\",\n        \" 261: 'keeshond',\\n\",\n        \" 262: 'Brabancon griffon',\\n\",\n        \" 263: 'Pembroke, Pembroke Welsh corgi',\\n\",\n        \" 264: 'Cardigan, Cardigan Welsh corgi',\\n\",\n        \" 265: 'toy poodle',\\n\",\n        \" 266: 'miniature poodle',\\n\",\n        \" 267: 'standard poodle',\\n\",\n        \" 268: 'Mexican hairless',\\n\",\n        \" 269: 'timber wolf, grey wolf, gray wolf, Canis lupus',\\n\",\n        \" 270: 'white wolf, Arctic wolf, Canis lupus tundrarum',\\n\",\n        \" 271: 'red wolf, maned wolf, Canis rufus, Canis niger',\\n\",\n        \" 272: 'coyote, prairie wolf, brush wolf, Canis latrans',\\n\",\n        \" 273: 'dingo, warrigal, warragal, Canis dingo',\\n\",\n        \" 274: 'dhole, Cuon alpinus',\\n\",\n        \" 275: 'African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus',\\n\",\n        \" 276: 'hyena, hyaena',\\n\",\n        \" 277: 'red fox, Vulpes vulpes',\\n\",\n        \" 278: 'kit fox, Vulpes macrotis',\\n\",\n        \" 279: 'Arctic fox, white fox, Alopex lagopus',\\n\",\n        \" 280: 'grey fox, gray fox, Urocyon cinereoargenteus',\\n\",\n        \" 281: 'tabby, tabby cat',\\n\",\n        \" 282: 'tiger cat',\\n\",\n        \" 283: 'Persian cat',\\n\",\n        \" 284: 'Siamese cat, Siamese',\\n\",\n        \" 285: 'Egyptian cat',\\n\",\n        \" 286: 'cougar, puma, catamount, mountain lion, painter, panther, Felis concolor',\\n\",\n        \" 287: 'lynx, catamount',\\n\",\n        \" 288: 'leopard, Panthera pardus',\\n\",\n        \" 289: 'snow leopard, ounce, Panthera uncia',\\n\",\n        \" 290: 'jaguar, panther, Panthera onca, Felis onca',\\n\",\n        \" 291: 'lion, king of beasts, Panthera leo',\\n\",\n        \" 292: 'tiger, Panthera tigris',\\n\",\n        \" 293: 'cheetah, chetah, Acinonyx jubatus',\\n\",\n        \" 294: 'brown bear, bruin, Ursus arctos',\\n\",\n        \" 295: 'American black bear, black bear, Ursus americanus, Euarctos americanus',\\n\",\n        \" 296: 'ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus',\\n\",\n        \" 297: 'sloth bear, Melursus ursinus, Ursus ursinus',\\n\",\n        \" 298: 'mongoose',\\n\",\n        \" 299: 'meerkat, mierkat',\\n\",\n        \" 300: 'tiger beetle',\\n\",\n        \" 301: 'ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle',\\n\",\n        \" 302: 'ground beetle, carabid beetle',\\n\",\n        \" 303: 'long-horned beetle, longicorn, longicorn beetle',\\n\",\n        \" 304: 'leaf beetle, chrysomelid',\\n\",\n        \" 305: 'dung beetle',\\n\",\n        \" 306: 'rhinoceros beetle',\\n\",\n        \" 307: 'weevil',\\n\",\n        \" 308: 'fly',\\n\",\n        \" 309: 'bee',\\n\",\n        \" 310: 'ant, emmet, pismire',\\n\",\n        \" 311: 'grasshopper, hopper',\\n\",\n        \" 312: 'cricket',\\n\",\n        \" 313: 'walking stick, walkingstick, stick insect',\\n\",\n        \" 314: 'cockroach, roach',\\n\",\n        \" 315: 'mantis, mantid',\\n\",\n        \" 316: 'cicada, cicala',\\n\",\n        \" 317: 'leafhopper',\\n\",\n        \" 318: 'lacewing, lacewing fly',\\n\",\n        \" 319: \\\"dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk\\\",\\n\",\n        \" 320: 'damselfly',\\n\",\n        \" 321: 'admiral',\\n\",\n        \" 322: 'ringlet, ringlet butterfly',\\n\",\n        \" 323: 'monarch, monarch butterfly, milkweed butterfly, Danaus plexippus',\\n\",\n        \" 324: 'cabbage butterfly',\\n\",\n        \" 325: 'sulphur butterfly, sulfur butterfly',\\n\",\n        \" 326: 'lycaenid, lycaenid butterfly',\\n\",\n        \" 327: 'starfish, sea star',\\n\",\n        \" 328: 'sea urchin',\\n\",\n        \" 329: 'sea cucumber, holothurian',\\n\",\n        \" 330: 'wood rabbit, cottontail, cottontail rabbit',\\n\",\n        \" 331: 'hare',\\n\",\n        \" 332: 'Angora, Angora rabbit',\\n\",\n        \" 333: 'hamster',\\n\",\n        \" 334: 'porcupine, hedgehog',\\n\",\n        \" 335: 'fox squirrel, eastern fox squirrel, Sciurus niger',\\n\",\n        \" 336: 'marmot',\\n\",\n        \" 337: 'beaver',\\n\",\n        \" 338: 'guinea pig, Cavia cobaya',\\n\",\n        \" 339: 'sorrel',\\n\",\n        \" 340: 'zebra',\\n\",\n        \" 341: 'hog, pig, grunter, squealer, Sus scrofa',\\n\",\n        \" 342: 'wild boar, boar, Sus scrofa',\\n\",\n        \" 343: 'warthog',\\n\",\n        \" 344: 'hippopotamus, hippo, river horse, Hippopotamus amphibius',\\n\",\n        \" 345: 'ox',\\n\",\n        \" 346: 'water buffalo, water ox, Asiatic buffalo, Bubalus bubalis',\\n\",\n        \" 347: 'bison',\\n\",\n        \" 348: 'ram, tup',\\n\",\n        \" 349: 'bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis',\\n\",\n        \" 350: 'ibex, Capra ibex',\\n\",\n        \" 351: 'hartebeest',\\n\",\n        \" 352: 'impala, Aepyceros melampus',\\n\",\n        \" 353: 'gazelle',\\n\",\n        \" 354: 'Arabian camel, dromedary, Camelus dromedarius',\\n\",\n        \" 355: 'llama',\\n\",\n        \" 356: 'weasel',\\n\",\n        \" 357: 'mink',\\n\",\n        \" 358: 'polecat, fitch, foulmart, foumart, Mustela putorius',\\n\",\n        \" 359: 'black-footed ferret, ferret, Mustela nigripes',\\n\",\n        \" 360: 'otter',\\n\",\n        \" 361: 'skunk, polecat, wood pussy',\\n\",\n        \" 362: 'badger',\\n\",\n        \" 363: 'armadillo',\\n\",\n        \" 364: 'three-toed sloth, ai, Bradypus tridactylus',\\n\",\n        \" 365: 'orangutan, orang, orangutang, Pongo pygmaeus',\\n\",\n        \" 366: 'gorilla, Gorilla gorilla',\\n\",\n        \" 367: 'chimpanzee, chimp, Pan troglodytes',\\n\",\n        \" 368: 'gibbon, Hylobates lar',\\n\",\n        \" 369: 'siamang, Hylobates syndactylus, Symphalangus syndactylus',\\n\",\n        \" 370: 'guenon, guenon monkey',\\n\",\n        \" 371: 'patas, hussar monkey, Erythrocebus patas',\\n\",\n        \" 372: 'baboon',\\n\",\n        \" 373: 'macaque',\\n\",\n        \" 374: 'langur',\\n\",\n        \" 375: 'colobus, colobus monkey',\\n\",\n        \" 376: 'proboscis monkey, Nasalis larvatus',\\n\",\n        \" 377: 'marmoset',\\n\",\n        \" 378: 'capuchin, ringtail, Cebus capucinus',\\n\",\n        \" 379: 'howler monkey, howler',\\n\",\n        \" 380: 'titi, titi monkey',\\n\",\n        \" 381: 'spider monkey, Ateles geoffroyi',\\n\",\n        \" 382: 'squirrel monkey, Saimiri sciureus',\\n\",\n        \" 383: 'Madagascar cat, ring-tailed lemur, Lemur catta',\\n\",\n        \" 384: 'indri, indris, Indri indri, Indri brevicaudatus',\\n\",\n        \" 385: 'Indian elephant, Elephas maximus',\\n\",\n        \" 386: 'African elephant, Loxodonta africana',\\n\",\n        \" 387: 'lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens',\\n\",\n        \" 388: 'giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca',\\n\",\n        \" 389: 'barracouta, snoek',\\n\",\n        \" 390: 'eel',\\n\",\n        \" 391: 'coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch',\\n\",\n        \" 392: 'rock beauty, Holocanthus tricolor',\\n\",\n        \" 393: 'anemone fish',\\n\",\n        \" 394: 'sturgeon',\\n\",\n        \" 395: 'gar, garfish, garpike, billfish, Lepisosteus osseus',\\n\",\n        \" 396: 'lionfish',\\n\",\n        \" 397: 'puffer, pufferfish, blowfish, globefish',\\n\",\n        \" 398: 'abacus',\\n\",\n        \" 399: 'abaya',\\n\",\n        \" 400: \\\"academic gown, academic robe, judge's robe\\\",\\n\",\n        \" 401: 'accordion, piano accordion, squeeze box',\\n\",\n        \" 402: 'acoustic guitar',\\n\",\n        \" 403: 'aircraft carrier, carrier, flattop, attack aircraft carrier',\\n\",\n        \" 404: 'airliner',\\n\",\n        \" 405: 'airship, dirigible',\\n\",\n        \" 406: 'altar',\\n\",\n        \" 407: 'ambulance',\\n\",\n        \" 408: 'amphibian, amphibious vehicle',\\n\",\n        \" 409: 'analog clock',\\n\",\n        \" 410: 'apiary, bee house',\\n\",\n        \" 411: 'apron',\\n\",\n        \" 412: 'ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin',\\n\",\n        \" 413: 'assault rifle, assault gun',\\n\",\n        \" 414: 'backpack, back pack, knapsack, packsack, rucksack, haversack',\\n\",\n        \" 415: 'bakery, bakeshop, bakehouse',\\n\",\n        \" 416: 'balance beam, beam',\\n\",\n        \" 417: 'balloon',\\n\",\n        \" 418: 'ballpoint, ballpoint pen, ballpen, Biro',\\n\",\n        \" 419: 'Band Aid',\\n\",\n        \" 420: 'banjo',\\n\",\n        \" 421: 'bannister, banister, balustrade, balusters, handrail',\\n\",\n        \" 422: 'barbell',\\n\",\n        \" 423: 'barber chair',\\n\",\n        \" 424: 'barbershop',\\n\",\n        \" 425: 'barn',\\n\",\n        \" 426: 'barometer',\\n\",\n        \" 427: 'barrel, cask',\\n\",\n        \" 428: 'barrow, garden cart, lawn cart, wheelbarrow',\\n\",\n        \" 429: 'baseball',\\n\",\n        \" 430: 'basketball',\\n\",\n        \" 431: 'bassinet',\\n\",\n        \" 432: 'bassoon',\\n\",\n        \" 433: 'bathing cap, swimming cap',\\n\",\n        \" 434: 'bath towel',\\n\",\n        \" 435: 'bathtub, bathing tub, bath, tub',\\n\",\n        \" 436: 'beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon',\\n\",\n        \" 437: 'beacon, lighthouse, beacon light, pharos',\\n\",\n        \" 438: 'beaker',\\n\",\n        \" 439: 'bearskin, busby, shako',\\n\",\n        \" 440: 'beer bottle',\\n\",\n        \" 441: 'beer glass',\\n\",\n        \" 442: 'bell cote, bell cot',\\n\",\n        \" 443: 'bib',\\n\",\n        \" 444: 'bicycle-built-for-two, tandem bicycle, tandem',\\n\",\n        \" 445: 'bikini, two-piece',\\n\",\n        \" 446: 'binder, ring-binder',\\n\",\n        \" 447: 'binoculars, field glasses, opera glasses',\\n\",\n        \" 448: 'birdhouse',\\n\",\n        \" 449: 'boathouse',\\n\",\n        \" 450: 'bobsled, bobsleigh, bob',\\n\",\n        \" 451: 'bolo tie, bolo, bola tie, bola',\\n\",\n        \" 452: 'bonnet, poke bonnet',\\n\",\n        \" 453: 'bookcase',\\n\",\n        \" 454: 'bookshop, bookstore, bookstall',\\n\",\n        \" 455: 'bottlecap',\\n\",\n        \" 456: 'bow',\\n\",\n        \" 457: 'bow tie, bow-tie, bowtie',\\n\",\n        \" 458: 'brass, memorial tablet, plaque',\\n\",\n        \" 459: 'brassiere, bra, bandeau',\\n\",\n        \" 460: 'breakwater, groin, groyne, mole, bulwark, seawall, jetty',\\n\",\n        \" 461: 'breastplate, aegis, egis',\\n\",\n        \" 462: 'broom',\\n\",\n        \" 463: 'bucket, pail',\\n\",\n        \" 464: 'buckle',\\n\",\n        \" 465: 'bulletproof vest',\\n\",\n        \" 466: 'bullet train, bullet',\\n\",\n        \" 467: 'butcher shop, meat market',\\n\",\n        \" 468: 'cab, hack, taxi, taxicab',\\n\",\n        \" 469: 'caldron, cauldron',\\n\",\n        \" 470: 'candle, taper, wax light',\\n\",\n        \" 471: 'cannon',\\n\",\n        \" 472: 'canoe',\\n\",\n        \" 473: 'can opener, tin opener',\\n\",\n        \" 474: 'cardigan',\\n\",\n        \" 475: 'car mirror',\\n\",\n        \" 476: 'carousel, carrousel, merry-go-round, roundabout, whirligig',\\n\",\n        \" 477: \\\"carpenter's kit, tool kit\\\",\\n\",\n        \" 478: 'carton',\\n\",\n        \" 479: 'car wheel',\\n\",\n        \" 480: 'cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM',\\n\",\n        \" 481: 'cassette',\\n\",\n        \" 482: 'cassette player',\\n\",\n        \" 483: 'castle',\\n\",\n        \" 484: 'catamaran',\\n\",\n        \" 485: 'CD player',\\n\",\n        \" 486: 'cello, violoncello',\\n\",\n        \" 487: 'cellular telephone, cellular phone, cellphone, cell, mobile phone',\\n\",\n        \" 488: 'chain',\\n\",\n        \" 489: 'chainlink fence',\\n\",\n        \" 490: 'chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour',\\n\",\n        \" 491: 'chain saw, chainsaw',\\n\",\n        \" 492: 'chest',\\n\",\n        \" 493: 'chiffonier, commode',\\n\",\n        \" 494: 'chime, bell, gong',\\n\",\n        \" 495: 'china cabinet, china closet',\\n\",\n        \" 496: 'Christmas stocking',\\n\",\n        \" 497: 'church, church building',\\n\",\n        \" 498: 'cinema, movie theater, movie theatre, movie house, picture palace',\\n\",\n        \" 499: 'cleaver, meat cleaver, chopper',\\n\",\n        \" 500: 'cliff dwelling',\\n\",\n        \" 501: 'cloak',\\n\",\n        \" 502: 'clog, geta, patten, sabot',\\n\",\n        \" 503: 'cocktail shaker',\\n\",\n        \" 504: 'coffee mug',\\n\",\n        \" 505: 'coffeepot',\\n\",\n        \" 506: 'coil, spiral, volute, whorl, helix',\\n\",\n        \" 507: 'combination lock',\\n\",\n        \" 508: 'computer keyboard, keypad',\\n\",\n        \" 509: 'confectionery, confectionary, candy store',\\n\",\n        \" 510: 'container ship, containership, container vessel',\\n\",\n        \" 511: 'convertible',\\n\",\n        \" 512: 'corkscrew, bottle screw',\\n\",\n        \" 513: 'cornet, horn, trumpet, trump',\\n\",\n        \" 514: 'cowboy boot',\\n\",\n        \" 515: 'cowboy hat, ten-gallon hat',\\n\",\n        \" 516: 'cradle',\\n\",\n        \" 517: 'crane',\\n\",\n        \" 518: 'crash helmet',\\n\",\n        \" 519: 'crate',\\n\",\n        \" 520: 'crib, cot',\\n\",\n        \" 521: 'Crock Pot',\\n\",\n        \" 522: 'croquet ball',\\n\",\n        \" 523: 'crutch',\\n\",\n        \" 524: 'cuirass',\\n\",\n        \" 525: 'dam, dike, dyke',\\n\",\n        \" 526: 'desk',\\n\",\n        \" 527: 'desktop computer',\\n\",\n        \" 528: 'dial telephone, dial phone',\\n\",\n        \" 529: 'diaper, nappy, napkin',\\n\",\n        \" 530: 'digital clock',\\n\",\n        \" 531: 'digital watch',\\n\",\n        \" 532: 'dining table, board',\\n\",\n        \" 533: 'dishrag, dishcloth',\\n\",\n        \" 534: 'dishwasher, dish washer, dishwashing machine',\\n\",\n        \" 535: 'disk brake, disc brake',\\n\",\n        \" 536: 'dock, dockage, docking facility',\\n\",\n        \" 537: 'dogsled, dog sled, dog sleigh',\\n\",\n        \" 538: 'dome',\\n\",\n        \" 539: 'doormat, welcome mat',\\n\",\n        \" 540: 'drilling platform, offshore rig',\\n\",\n        \" 541: 'drum, membranophone, tympan',\\n\",\n        \" 542: 'drumstick',\\n\",\n        \" 543: 'dumbbell',\\n\",\n        \" 544: 'Dutch oven',\\n\",\n        \" 545: 'electric fan, blower',\\n\",\n        \" 546: 'electric guitar',\\n\",\n        \" 547: 'electric locomotive',\\n\",\n        \" 548: 'entertainment center',\\n\",\n        \" 549: 'envelope',\\n\",\n        \" 550: 'espresso maker',\\n\",\n        \" 551: 'face powder',\\n\",\n        \" 552: 'feather boa, boa',\\n\",\n        \" 553: 'file, file cabinet, filing cabinet',\\n\",\n        \" 554: 'fireboat',\\n\",\n        \" 555: 'fire engine, fire truck',\\n\",\n        \" 556: 'fire screen, fireguard',\\n\",\n        \" 557: 'flagpole, flagstaff',\\n\",\n        \" 558: 'flute, transverse flute',\\n\",\n        \" 559: 'folding chair',\\n\",\n        \" 560: 'football helmet',\\n\",\n        \" 561: 'forklift',\\n\",\n        \" 562: 'fountain',\\n\",\n        \" 563: 'fountain pen',\\n\",\n        \" 564: 'four-poster',\\n\",\n        \" 565: 'freight car',\\n\",\n        \" 566: 'French horn, horn',\\n\",\n        \" 567: 'frying pan, frypan, skillet',\\n\",\n        \" 568: 'fur coat',\\n\",\n        \" 569: 'garbage truck, dustcart',\\n\",\n        \" 570: 'gasmask, respirator, gas helmet',\\n\",\n        \" 571: 'gas pump, gasoline pump, petrol pump, island dispenser',\\n\",\n        \" 572: 'goblet',\\n\",\n        \" 573: 'go-kart',\\n\",\n        \" 574: 'golf ball',\\n\",\n        \" 575: 'golfcart, golf cart',\\n\",\n        \" 576: 'gondola',\\n\",\n        \" 577: 'gong, tam-tam',\\n\",\n        \" 578: 'gown',\\n\",\n        \" 579: 'grand piano, grand',\\n\",\n        \" 580: 'greenhouse, nursery, glasshouse',\\n\",\n        \" 581: 'grille, radiator grille',\\n\",\n        \" 582: 'grocery store, grocery, food market, market',\\n\",\n        \" 583: 'guillotine',\\n\",\n        \" 584: 'hair slide',\\n\",\n        \" 585: 'hair spray',\\n\",\n        \" 586: 'half track',\\n\",\n        \" 587: 'hammer',\\n\",\n        \" 588: 'hamper',\\n\",\n        \" 589: 'hand blower, blow dryer, blow drier, hair dryer, hair drier',\\n\",\n        \" 590: 'hand-held computer, hand-held microcomputer',\\n\",\n        \" 591: 'handkerchief, hankie, hanky, hankey',\\n\",\n        \" 592: 'hard disc, hard disk, fixed disk',\\n\",\n        \" 593: 'harmonica, mouth organ, harp, mouth harp',\\n\",\n        \" 594: 'harp',\\n\",\n        \" 595: 'harvester, reaper',\\n\",\n        \" 596: 'hatchet',\\n\",\n        \" 597: 'holster',\\n\",\n        \" 598: 'home theater, home theatre',\\n\",\n        \" 599: 'honeycomb',\\n\",\n        \" 600: 'hook, claw',\\n\",\n        \" 601: 'hoopskirt, crinoline',\\n\",\n        \" 602: 'horizontal bar, high bar',\\n\",\n        \" 603: 'horse cart, horse-cart',\\n\",\n        \" 604: 'hourglass',\\n\",\n        \" 605: 'iPod',\\n\",\n        \" 606: 'iron, smoothing iron',\\n\",\n        \" 607: \\\"jack-o'-lantern\\\",\\n\",\n        \" 608: 'jean, blue jean, denim',\\n\",\n        \" 609: 'jeep, landrover',\\n\",\n        \" 610: 'jersey, T-shirt, tee shirt',\\n\",\n        \" 611: 'jigsaw puzzle',\\n\",\n        \" 612: 'jinrikisha, ricksha, rickshaw',\\n\",\n        \" 613: 'joystick',\\n\",\n        \" 614: 'kimono',\\n\",\n        \" 615: 'knee pad',\\n\",\n        \" 616: 'knot',\\n\",\n        \" 617: 'lab coat, laboratory coat',\\n\",\n        \" 618: 'ladle',\\n\",\n        \" 619: 'lampshade, lamp shade',\\n\",\n        \" 620: 'laptop, laptop computer',\\n\",\n        \" 621: 'lawn mower, mower',\\n\",\n        \" 622: 'lens cap, lens cover',\\n\",\n        \" 623: 'letter opener, paper knife, paperknife',\\n\",\n        \" 624: 'library',\\n\",\n        \" 625: 'lifeboat',\\n\",\n        \" 626: 'lighter, light, igniter, ignitor',\\n\",\n        \" 627: 'limousine, limo',\\n\",\n        \" 628: 'liner, ocean liner',\\n\",\n        \" 629: 'lipstick, lip rouge',\\n\",\n        \" 630: 'Loafer',\\n\",\n        \" 631: 'lotion',\\n\",\n        \" 632: 'loudspeaker, speaker, speaker unit, loudspeaker system, speaker system',\\n\",\n        \" 633: \\\"loupe, jeweler's loupe\\\",\\n\",\n        \" 634: 'lumbermill, sawmill',\\n\",\n        \" 635: 'magnetic compass',\\n\",\n        \" 636: 'mailbag, postbag',\\n\",\n        \" 637: 'mailbox, letter box',\\n\",\n        \" 638: 'maillot',\\n\",\n        \" 639: 'maillot, tank suit',\\n\",\n        \" 640: 'manhole cover',\\n\",\n        \" 641: 'maraca',\\n\",\n        \" 642: 'marimba, xylophone',\\n\",\n        \" 643: 'mask',\\n\",\n        \" 644: 'matchstick',\\n\",\n        \" 645: 'maypole',\\n\",\n        \" 646: 'maze, labyrinth',\\n\",\n        \" 647: 'measuring cup',\\n\",\n        \" 648: 'medicine chest, medicine cabinet',\\n\",\n        \" 649: 'megalith, megalithic structure',\\n\",\n        \" 650: 'microphone, mike',\\n\",\n        \" 651: 'microwave, microwave oven',\\n\",\n        \" 652: 'military uniform',\\n\",\n        \" 653: 'milk can',\\n\",\n        \" 654: 'minibus',\\n\",\n        \" 655: 'miniskirt, mini',\\n\",\n        \" 656: 'minivan',\\n\",\n        \" 657: 'missile',\\n\",\n        \" 658: 'mitten',\\n\",\n        \" 659: 'mixing bowl',\\n\",\n        \" 660: 'mobile home, manufactured home',\\n\",\n        \" 661: 'Model T',\\n\",\n        \" 662: 'modem',\\n\",\n        \" 663: 'monastery',\\n\",\n        \" 664: 'monitor',\\n\",\n        \" 665: 'moped',\\n\",\n        \" 666: 'mortar',\\n\",\n        \" 667: 'mortarboard',\\n\",\n        \" 668: 'mosque',\\n\",\n        \" 669: 'mosquito net',\\n\",\n        \" 670: 'motor scooter, scooter',\\n\",\n        \" 671: 'mountain bike, all-terrain bike, off-roader',\\n\",\n        \" 672: 'mountain tent',\\n\",\n        \" 673: 'mouse, computer mouse',\\n\",\n        \" 674: 'mousetrap',\\n\",\n        \" 675: 'moving van',\\n\",\n        \" 676: 'muzzle',\\n\",\n        \" 677: 'nail',\\n\",\n        \" 678: 'neck brace',\\n\",\n        \" 679: 'necklace',\\n\",\n        \" 680: 'nipple',\\n\",\n        \" 681: 'notebook, notebook computer',\\n\",\n        \" 682: 'obelisk',\\n\",\n        \" 683: 'oboe, hautboy, hautbois',\\n\",\n        \" 684: 'ocarina, sweet potato',\\n\",\n        \" 685: 'odometer, hodometer, mileometer, milometer',\\n\",\n        \" 686: 'oil filter',\\n\",\n        \" 687: 'organ, pipe organ',\\n\",\n        \" 688: 'oscilloscope, scope, cathode-ray oscilloscope, CRO',\\n\",\n        \" 689: 'overskirt',\\n\",\n        \" 690: 'oxcart',\\n\",\n        \" 691: 'oxygen mask',\\n\",\n        \" 692: 'packet',\\n\",\n        \" 693: 'paddle, boat paddle',\\n\",\n        \" 694: 'paddlewheel, paddle wheel',\\n\",\n        \" 695: 'padlock',\\n\",\n        \" 696: 'paintbrush',\\n\",\n        \" 697: \\\"pajama, pyjama, pj's, jammies\\\",\\n\",\n        \" 698: 'palace',\\n\",\n        \" 699: 'panpipe, pandean pipe, syrinx',\\n\",\n        \" 700: 'paper towel',\\n\",\n        \" 701: 'parachute, chute',\\n\",\n        \" 702: 'parallel bars, bars',\\n\",\n        \" 703: 'park bench',\\n\",\n        \" 704: 'parking meter',\\n\",\n        \" 705: 'passenger car, coach, carriage',\\n\",\n        \" 706: 'patio, terrace',\\n\",\n        \" 707: 'pay-phone, pay-station',\\n\",\n        \" 708: 'pedestal, plinth, footstall',\\n\",\n        \" 709: 'pencil box, pencil case',\\n\",\n        \" 710: 'pencil sharpener',\\n\",\n        \" 711: 'perfume, essence',\\n\",\n        \" 712: 'Petri dish',\\n\",\n        \" 713: 'photocopier',\\n\",\n        \" 714: 'pick, plectrum, plectron',\\n\",\n        \" 715: 'pickelhaube',\\n\",\n        \" 716: 'picket fence, paling',\\n\",\n        \" 717: 'pickup, pickup truck',\\n\",\n        \" 718: 'pier',\\n\",\n        \" 719: 'piggy bank, penny bank',\\n\",\n        \" 720: 'pill bottle',\\n\",\n        \" 721: 'pillow',\\n\",\n        \" 722: 'ping-pong ball',\\n\",\n        \" 723: 'pinwheel',\\n\",\n        \" 724: 'pirate, pirate ship',\\n\",\n        \" 725: 'pitcher, ewer',\\n\",\n        \" 726: \\\"plane, carpenter's plane, woodworking plane\\\",\\n\",\n        \" 727: 'planetarium',\\n\",\n        \" 728: 'plastic bag',\\n\",\n        \" 729: 'plate rack',\\n\",\n        \" 730: 'plow, plough',\\n\",\n        \" 731: \\\"plunger, plumber's helper\\\",\\n\",\n        \" 732: 'Polaroid camera, Polaroid Land camera',\\n\",\n        \" 733: 'pole',\\n\",\n        \" 734: 'police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria',\\n\",\n        \" 735: 'poncho',\\n\",\n        \" 736: 'pool table, billiard table, snooker table',\\n\",\n        \" 737: 'pop bottle, soda bottle',\\n\",\n        \" 738: 'pot, flowerpot',\\n\",\n        \" 739: \\\"potter's wheel\\\",\\n\",\n        \" 740: 'power drill',\\n\",\n        \" 741: 'prayer rug, prayer mat',\\n\",\n        \" 742: 'printer',\\n\",\n        \" 743: 'prison, prison house',\\n\",\n        \" 744: 'projectile, missile',\\n\",\n        \" 745: 'projector',\\n\",\n        \" 746: 'puck, hockey puck',\\n\",\n        \" 747: 'punching bag, punch bag, punching ball, punchball',\\n\",\n        \" 748: 'purse',\\n\",\n        \" 749: 'quill, quill pen',\\n\",\n        \" 750: 'quilt, comforter, comfort, puff',\\n\",\n        \" 751: 'racer, race car, racing car',\\n\",\n        \" 752: 'racket, racquet',\\n\",\n        \" 753: 'radiator',\\n\",\n        \" 754: 'radio, wireless',\\n\",\n        \" 755: 'radio telescope, radio reflector',\\n\",\n        \" 756: 'rain barrel',\\n\",\n        \" 757: 'recreational vehicle, RV, R.V.',\\n\",\n        \" 758: 'reel',\\n\",\n        \" 759: 'reflex camera',\\n\",\n        \" 760: 'refrigerator, icebox',\\n\",\n        \" 761: 'remote control, remote',\\n\",\n        \" 762: 'restaurant, eating house, eating place, eatery',\\n\",\n        \" 763: 'revolver, six-gun, six-shooter',\\n\",\n        \" 764: 'rifle',\\n\",\n        \" 765: 'rocking chair, rocker',\\n\",\n        \" 766: 'rotisserie',\\n\",\n        \" 767: 'rubber eraser, rubber, pencil eraser',\\n\",\n        \" 768: 'rugby ball',\\n\",\n        \" 769: 'rule, ruler',\\n\",\n        \" 770: 'running shoe',\\n\",\n        \" 771: 'safe',\\n\",\n        \" 772: 'safety pin',\\n\",\n        \" 773: 'saltshaker, salt shaker',\\n\",\n        \" 774: 'sandal',\\n\",\n        \" 775: 'sarong',\\n\",\n        \" 776: 'sax, saxophone',\\n\",\n        \" 777: 'scabbard',\\n\",\n        \" 778: 'scale, weighing machine',\\n\",\n        \" 779: 'school bus',\\n\",\n        \" 780: 'schooner',\\n\",\n        \" 781: 'scoreboard',\\n\",\n        \" 782: 'screen, CRT screen',\\n\",\n        \" 783: 'screw',\\n\",\n        \" 784: 'screwdriver',\\n\",\n        \" 785: 'seat belt, seatbelt',\\n\",\n        \" 786: 'sewing machine',\\n\",\n        \" 787: 'shield, buckler',\\n\",\n        \" 788: 'shoe shop, shoe-shop, shoe store',\\n\",\n        \" 789: 'shoji',\\n\",\n        \" 790: 'shopping basket',\\n\",\n        \" 791: 'shopping cart',\\n\",\n        \" 792: 'shovel',\\n\",\n        \" 793: 'shower cap',\\n\",\n        \" 794: 'shower curtain',\\n\",\n        \" 795: 'ski',\\n\",\n        \" 796: 'ski mask',\\n\",\n        \" 797: 'sleeping bag',\\n\",\n        \" 798: 'slide rule, slipstick',\\n\",\n        \" 799: 'sliding door',\\n\",\n        \" 800: 'slot, one-armed bandit',\\n\",\n        \" 801: 'snorkel',\\n\",\n        \" 802: 'snowmobile',\\n\",\n        \" 803: 'snowplow, snowplough',\\n\",\n        \" 804: 'soap dispenser',\\n\",\n        \" 805: 'soccer ball',\\n\",\n        \" 806: 'sock',\\n\",\n        \" 807: 'solar dish, solar collector, solar furnace',\\n\",\n        \" 808: 'sombrero',\\n\",\n        \" 809: 'soup bowl',\\n\",\n        \" 810: 'space bar',\\n\",\n        \" 811: 'space heater',\\n\",\n        \" 812: 'space shuttle',\\n\",\n        \" 813: 'spatula',\\n\",\n        \" 814: 'speedboat',\\n\",\n        \" 815: \\\"spider web, spider's web\\\",\\n\",\n        \" 816: 'spindle',\\n\",\n        \" 817: 'sports car, sport car',\\n\",\n        \" 818: 'spotlight, spot',\\n\",\n        \" 819: 'stage',\\n\",\n        \" 820: 'steam locomotive',\\n\",\n        \" 821: 'steel arch bridge',\\n\",\n        \" 822: 'steel drum',\\n\",\n        \" 823: 'stethoscope',\\n\",\n        \" 824: 'stole',\\n\",\n        \" 825: 'stone wall',\\n\",\n        \" 826: 'stopwatch, stop watch',\\n\",\n        \" 827: 'stove',\\n\",\n        \" 828: 'strainer',\\n\",\n        \" 829: 'streetcar, tram, tramcar, trolley, trolley car',\\n\",\n        \" 830: 'stretcher',\\n\",\n        \" 831: 'studio couch, day bed',\\n\",\n        \" 832: 'stupa, tope',\\n\",\n        \" 833: 'submarine, pigboat, sub, U-boat',\\n\",\n        \" 834: 'suit, suit of clothes',\\n\",\n        \" 835: 'sundial',\\n\",\n        \" 836: 'sunglass',\\n\",\n        \" 837: 'sunglasses, dark glasses, shades',\\n\",\n        \" 838: 'sunscreen, sunblock, sun blocker',\\n\",\n        \" 839: 'suspension bridge',\\n\",\n        \" 840: 'swab, swob, mop',\\n\",\n        \" 841: 'sweatshirt',\\n\",\n        \" 842: 'swimming trunks, bathing trunks',\\n\",\n        \" 843: 'swing',\\n\",\n        \" 844: 'switch, electric switch, electrical switch',\\n\",\n        \" 845: 'syringe',\\n\",\n        \" 846: 'table lamp',\\n\",\n        \" 847: 'tank, army tank, armored combat vehicle, armoured combat vehicle',\\n\",\n        \" 848: 'tape player',\\n\",\n        \" 849: 'teapot',\\n\",\n        \" 850: 'teddy, teddy bear',\\n\",\n        \" 851: 'television, television system',\\n\",\n        \" 852: 'tennis ball',\\n\",\n        \" 853: 'thatch, thatched roof',\\n\",\n        \" 854: 'theater curtain, theatre curtain',\\n\",\n        \" 855: 'thimble',\\n\",\n        \" 856: 'thresher, thrasher, threshing machine',\\n\",\n        \" 857: 'throne',\\n\",\n        \" 858: 'tile roof',\\n\",\n        \" 859: 'toaster',\\n\",\n        \" 860: 'tobacco shop, tobacconist shop, tobacconist',\\n\",\n        \" 861: 'toilet seat',\\n\",\n        \" 862: 'torch',\\n\",\n        \" 863: 'totem pole',\\n\",\n        \" 864: 'tow truck, tow car, wrecker',\\n\",\n        \" 865: 'toyshop',\\n\",\n        \" 866: 'tractor',\\n\",\n        \" 867: 'trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi',\\n\",\n        \" 868: 'tray',\\n\",\n        \" 869: 'trench coat',\\n\",\n        \" 870: 'tricycle, trike, velocipede',\\n\",\n        \" 871: 'trimaran',\\n\",\n        \" 872: 'tripod',\\n\",\n        \" 873: 'triumphal arch',\\n\",\n        \" 874: 'trolleybus, trolley coach, trackless trolley',\\n\",\n        \" 875: 'trombone',\\n\",\n        \" 876: 'tub, vat',\\n\",\n        \" 877: 'turnstile',\\n\",\n        \" 878: 'typewriter keyboard',\\n\",\n        \" 879: 'umbrella',\\n\",\n        \" 880: 'unicycle, monocycle',\\n\",\n        \" 881: 'upright, upright piano',\\n\",\n        \" 882: 'vacuum, vacuum cleaner',\\n\",\n        \" 883: 'vase',\\n\",\n        \" 884: 'vault',\\n\",\n        \" 885: 'velvet',\\n\",\n        \" 886: 'vending machine',\\n\",\n        \" 887: 'vestment',\\n\",\n        \" 888: 'viaduct',\\n\",\n        \" 889: 'violin, fiddle',\\n\",\n        \" 890: 'volleyball',\\n\",\n        \" 891: 'waffle iron',\\n\",\n        \" 892: 'wall clock',\\n\",\n        \" 893: 'wallet, billfold, notecase, pocketbook',\\n\",\n        \" 894: 'wardrobe, closet, press',\\n\",\n        \" 895: 'warplane, military plane',\\n\",\n        \" 896: 'washbasin, handbasin, washbowl, lavabo, wash-hand basin',\\n\",\n        \" 897: 'washer, automatic washer, washing machine',\\n\",\n        \" 898: 'water bottle',\\n\",\n        \" 899: 'water jug',\\n\",\n        \" 900: 'water tower',\\n\",\n        \" 901: 'whiskey jug',\\n\",\n        \" 902: 'whistle',\\n\",\n        \" 903: 'wig',\\n\",\n        \" 904: 'window screen',\\n\",\n        \" 905: 'window shade',\\n\",\n        \" 906: 'Windsor tie',\\n\",\n        \" 907: 'wine bottle',\\n\",\n        \" 908: 'wing',\\n\",\n        \" 909: 'wok',\\n\",\n        \" 910: 'wooden spoon',\\n\",\n        \" 911: 'wool, woolen, woollen',\\n\",\n        \" 912: 'worm fence, snake fence, snake-rail fence, Virginia fence',\\n\",\n        \" 913: 'wreck',\\n\",\n        \" 914: 'yawl',\\n\",\n        \" 915: 'yurt',\\n\",\n        \" 916: 'web site, website, internet site, site',\\n\",\n        \" 917: 'comic book',\\n\",\n        \" 918: 'crossword puzzle, crossword',\\n\",\n        \" 919: 'street sign',\\n\",\n        \" 920: 'traffic light, traffic signal, stoplight',\\n\",\n        \" 921: 'book jacket, dust cover, dust jacket, dust wrapper',\\n\",\n        \" 922: 'menu',\\n\",\n        \" 923: 'plate',\\n\",\n        \" 924: 'guacamole',\\n\",\n        \" 925: 'consomme',\\n\",\n        \" 926: 'hot pot, hotpot',\\n\",\n        \" 927: 'trifle',\\n\",\n        \" 928: 'ice cream, icecream',\\n\",\n        \" 929: 'ice lolly, lolly, lollipop, popsicle',\\n\",\n        \" 930: 'French loaf',\\n\",\n        \" 931: 'bagel, beigel',\\n\",\n        \" 932: 'pretzel',\\n\",\n        \" 933: 'cheeseburger',\\n\",\n        \" 934: 'hotdog, hot dog, red hot',\\n\",\n        \" 935: 'mashed potato',\\n\",\n        \" 936: 'head cabbage',\\n\",\n        \" 937: 'broccoli',\\n\",\n        \" 938: 'cauliflower',\\n\",\n        \" 939: 'zucchini, courgette',\\n\",\n        \" 940: 'spaghetti squash',\\n\",\n        \" 941: 'acorn squash',\\n\",\n        \" 942: 'butternut squash',\\n\",\n        \" 943: 'cucumber, cuke',\\n\",\n        \" 944: 'artichoke, globe artichoke',\\n\",\n        \" 945: 'bell pepper',\\n\",\n        \" 946: 'cardoon',\\n\",\n        \" 947: 'mushroom',\\n\",\n        \" 948: 'Granny Smith',\\n\",\n        \" 949: 'strawberry',\\n\",\n        \" 950: 'orange',\\n\",\n        \" 951: 'lemon',\\n\",\n        \" 952: 'fig',\\n\",\n        \" 953: 'pineapple, ananas',\\n\",\n        \" 954: 'banana',\\n\",\n        \" 955: 'jackfruit, jak, jack',\\n\",\n        \" 956: 'custard apple',\\n\",\n        \" 957: 'pomegranate',\\n\",\n        \" 958: 'hay',\\n\",\n        \" 959: 'carbonara',\\n\",\n        \" 960: 'chocolate sauce, chocolate syrup',\\n\",\n        \" 961: 'dough',\\n\",\n        \" 962: 'meat loaf, meatloaf',\\n\",\n        \" 963: 'pizza, pizza pie',\\n\",\n        \" 964: 'potpie',\\n\",\n        \" 965: 'burrito',\\n\",\n        \" 966: 'red wine',\\n\",\n        \" 967: 'espresso',\\n\",\n        \" 968: 'cup',\\n\",\n        \" 969: 'eggnog',\\n\",\n        \" 970: 'alp',\\n\",\n        \" 971: 'bubble',\\n\",\n        \" 972: 'cliff, drop, drop-off',\\n\",\n        \" 973: 'coral reef',\\n\",\n        \" 974: 'geyser',\\n\",\n        \" 975: 'lakeside, lakeshore',\\n\",\n        \" 976: 'promontory, headland, head, foreland',\\n\",\n        \" 977: 'sandbar, sand bar',\\n\",\n        \" 978: 'seashore, coast, seacoast, sea-coast',\\n\",\n        \" 979: 'valley, vale',\\n\",\n        \" 980: 'volcano',\\n\",\n        \" 981: 'ballplayer, baseball player',\\n\",\n        \" 982: 'groom, bridegroom',\\n\",\n        \" 983: 'scuba diver',\\n\",\n        \" 984: 'rapeseed',\\n\",\n        \" 985: 'daisy',\\n\",\n        \" 986: \\\"yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum\\\",\\n\",\n        \" 987: 'corn',\\n\",\n        \" 988: 'acorn',\\n\",\n        \" 989: 'hip, rose hip, rosehip',\\n\",\n        \" 990: 'buckeye, horse chestnut, conker',\\n\",\n        \" 991: 'coral fungus',\\n\",\n        \" 992: 'agaric',\\n\",\n        \" 993: 'gyromitra',\\n\",\n        \" 994: 'stinkhorn, carrion fungus',\\n\",\n        \" 995: 'earthstar',\\n\",\n        \" 996: 'hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa',\\n\",\n        \" 997: 'bolete',\\n\",\n        \" 998: 'ear, spike, capitulum',\\n\",\n        \" 999: 'toilet tissue, toilet paper, bathroom tissue'}\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"wqHZIbjyZXoY\"\n      },\n      \"source\": [\n        \"# Load F0 weights and grab an image\\n\",\n        \"The chosen image is released to the public domain and was taken in 2019 so we can be sure it isn't a part of the ImageNet training set.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"executionInfo\": {\n          \"elapsed\": 25019,\n          \"status\": \"ok\",\n          \"timestamp\": 1613472346442,\n          \"user\": {\n            \"displayName\": \"Andy Brock\",\n            \"photoUrl\": \"\",\n            \"userId\": \"04378600802759613630\"\n          },\n          \"user_tz\": 0\n        },\n        \"id\": \"KmA2FCPS6VkA\",\n        \"outputId\": \"1cfd1ff2-9adc-47c7-f3e8-af87f8bc2f26\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"--2021-02-16 10:45:40--  https://storage.googleapis.com/dm-nfnets/F0_haiku.npz\\n\",\n            \"Resolving storage.googleapis.com (storage.googleapis.com)... 108.177.127.128, 173.194.69.128, 173.194.79.128, ...\\n\",\n            \"Connecting to storage.googleapis.com (storage.googleapis.com)|108.177.127.128|:443... connected.\\n\",\n            \"HTTP request sent, awaiting response... 200 OK\\n\",\n            \"Length: 285976842 (273M) [application/octet-stream]\\n\",\n            \"Saving to: ‘F0_haiku.npz’\\n\",\n            \"\\n\",\n            \"F0_haiku.npz        100%[===================\\u003e] 272.73M  64.7MB/s    in 4.2s    \\n\",\n            \"\\n\",\n            \"2021-02-16 10:45:45 (64.7 MB/s) - ‘F0_haiku.npz’ saved [285976842/285976842]\\n\",\n            \"\\n\",\n            \"Model loaded w/ 71.49M Params\\n\",\n            \"--2021-02-16 10:45:45--  https://live.staticflickr.com/65535/50594927526_f6c3b2a5d4_b.jpg\\n\",\n            \"Resolving live.staticflickr.com (live.staticflickr.com)... 13.35.250.20, 2600:9000:2057:7200:0:5a51:64c9:c681, 2600:9000:2057:4e00:0:5a51:64c9:c681, ...\\n\",\n            \"Connecting to live.staticflickr.com (live.staticflickr.com)|13.35.250.20|:443... connected.\\n\",\n            \"HTTP request sent, awaiting response... 200 OK\\n\",\n            \"Length: unspecified [image/jpeg]\\n\",\n            \"Saving to: ‘peppers.jpg’\\n\",\n            \"\\n\",\n            \"peppers.jpg             [ \\u003c=\\u003e                ] 139.76K  --.-KB/s    in 0.02s   \\n\",\n            \"\\n\",\n            \"2021-02-16 10:45:45 (7.95 MB/s) - ‘peppers.jpg’ saved [143110]\\n\",\n            \"\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"# Load F0 weights\\n\",\n        \"variant = 'F0'\\n\",\n        \"os.environ['VARIANT'] = variant\\n\",\n        \"!wget https://storage.googleapis.com/dm-nfnets/${VARIANT}_haiku.npz\\n\",\n        \"with open(f'{variant}_haiku.npz', 'rb') as in_file:\\n\",\n        \"  params = dill.load(in_file)\\n\",\n        \"print(f'Model loaded w/ {hk.data_structures.tree_size(params)/1e6:.2f}M Params')\\n\",\n        \"# public domain image from https://www.flickr.com/photos/alabama_extension/50594927526\\n\",\n        \"!wget https://live.staticflickr.com/65535/50594927526_f6c3b2a5d4_b.jpg -O peppers.jpg\\n\",\n        \"im = Image.open('peppers.jpg')\\n\",\n        \"# Resize and crop to variant test size\\n\",\n        \"imsize = base.nfnet_params[variant]['test_imsize']\\n\",\n        \"im = im.resize((imsize + 32, imsize + 32))\\n\",\n        \"im = im.crop((16, 16, 16+imsize, 16+imsize))\\n\",\n        \"# Convert im to tensor and normalize with channel-wise RGB\\n\",\n        \"MEAN_RGB = (0.485 * 255, 0.456 * 255, 0.406 * 255)\\n\",\n        \"STDDEV_RGB = (0.229 * 255, 0.224 * 255, 0.225 * 255)\\n\",\n        \"x = (np.float32(im) - MEAN_RGB) / STDDEV_RGB\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"8pxUnQbC4MPj\"\n      },\n      \"source\": [\n        \"# Run NFNet-F0 to classify a single image.\\n\",\n        \"You can either run it in eager mode by not jitting the forward function, which will be relatively slow but not incur any compilation cost, or JIT the forward\\n\",\n        \"function, which will incur a compilation cost but yield faster inference. If you JIT (the default) then the first time you call the function will trigger the compilation, and all subsequent evaluations will be fast.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Gr8tIBEwYOtb\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Prepare the forward fn\\n\",\n        \"def forward(inputs, is_training): \\n\",\n        \"  model = nfnet.NFNet(num_classes=1000,  variant=variant)\\n\",\n        \"  return model(inputs, is_training=is_training)['logits']\\n\",\n        \"net = hk.without_apply_rng(hk.transform(forward))\\n\",\n        \"fwd = jax.jit(lambda inputs: net.apply(params, inputs, is_training=False))\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 290\n        },\n        \"executionInfo\": {\n          \"elapsed\": 27901,\n          \"status\": \"ok\",\n          \"timestamp\": 1613472375251,\n          \"user\": {\n            \"displayName\": \"Andy Brock\",\n            \"photoUrl\": \"\",\n            \"userId\": \"04378600802759613630\"\n          },\n          \"user_tz\": 0\n        },\n        \"id\": \"qeotZfkBYrIg\",\n        \"outputId\": \"84aa4055-e224-4838-9574-f483b6369079\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"ImageNet class: bell pepper.\\n\"\n          ]\n        },\n        {\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"\\u003cPIL.Image.Image image mode=RGB size=256x256 at 0x7F474593F6D8\\u003e\"\n            ]\n          },\n          \"execution_count\": 5,\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"execute_result\"\n        }\n      ],\n      \"source\": [\n        \"# We split this into two cells so that we don't repeatedly jit the fwd fn.\\n\",\n        \"logits = fwd(x[None]) # Give X a newaxis to make it batch-size-1\\n\",\n        \"which_class = imagenet_classlist[int(logits.argmax())]\\n\",\n        \"print(f'ImageNet class: {which_class}.')\\n\",\n        \"im\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"accelerator\": \"GPU\",\n    \"colab\": {\n      \"collapsed_sections\": [\n        \"d3oIj5O1dyVB\"\n      ],\n      \"name\": \"Public: Load and Test NFNet Models.ipynb\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1PvnPRhmYywGYGsEf-UYRSt1y8SpBhiwv\",\n          \"timestamp\": 1613472601457\n        }\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "nfnets/optim.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\n\"\"\"Optimizers and Schedulers, inspired by the PyTorch API.\"\"\"\nfrom collections import ChainMap  # pylint:disable=g-importing-member\nfrom typing import Callable, Mapping\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport tree\nfrom nfnets import utils\n\n\nclass Optimizer(object):\n  \"\"\"Optimizer base class.\"\"\"\n\n  def __init__(self, params, defaults):\n    # Flag indicating if parameters have been broadcasted\n    self._broadcasted = False\n    # Optimizer hyperparameters; this is a dict to support using param_groups\n    self._hyperparameters = {}\n    # Mapping from model parameters to optimizer hyperparameters\n    self._params2hyperparams = {}\n    # Assign defaults\n    self._hyperparameters = dict(**defaults)\n    # Prepare parameter groups and mappings\n    self.create_param_groups(params, defaults)\n    # Join params at top-level if params is a list of groups\n    if isinstance(params, list):\n      if any(_is_non_empty_two_level_mapping(g['params']) for g in params):\n        params = hk.data_structures.merge(*[g['params'] for g in params])\n      else:\n        params = dict(ChainMap(*[g['params'] for g in params]))\n    # Prepare states\n    create_buffers = lambda k, v: self.create_buffers('/'.join(k), v)\n    self._states = tree.map_structure_with_path(create_buffers, params)\n\n  def add_hyperparam_group(self, group, suffix, defaults):\n    \"\"\"Adds new hyperparameters to the hyperparams dict.\"\"\"\n    # Use default hyperparams unless overridden by group hyperparams\n    group_dict = {key: key for key in defaults if key not in group}\n    for key in group:\n      if key != 'params':  # Reserved keyword 'params'\n        group_dict[key] = '%s_%s' % (key, suffix)\n        self._hyperparameters[group_dict[key]] = group[key]\n    # Set up params2hyperparams\n    def set_p2h(k, _):\n      self._params2hyperparams['/'.join(k)] = group_dict\n    tree.map_structure_with_path(set_p2h, group['params'])\n\n  def create_param_groups(self, params, defaults):\n    \"\"\"Creates param-hyperparam mappings.\"\"\"\n    if isinstance(params, list):\n      for group_index, group in enumerate(params):\n        # Add group to hyperparams and get this group's full hyperparameters\n        self.add_hyperparam_group(group, group_index, defaults)\n    else:\n      mapping = {key: key for key in self._hyperparameters}\n      def set_p2h(k, _):\n        self._params2hyperparams['/'.join(k)] = mapping\n      tree.map_structure_with_path(set_p2h, params)\n\n  def create_buffers(self, name, params):\n    \"\"\"Method to be overridden by child classes.\"\"\"\n    pass\n\n  def get_opt_params(self, param_name, itr):\n    \"\"\"Returns hyperparams corresponding to param_name.\"\"\"\n    mapping = self._params2hyperparams[param_name]\n    output = {}\n    for key in mapping:\n      hyper = self._hyperparameters[mapping[key]]\n      # Handle the case where a hyper is a class, for hybrids\n      if isinstance(hyper, Callable) and not isinstance(hyper, type):\n        output[key] = hyper(itr)\n      else:\n        output[key] = hyper\n    return output\n\n  def get_hyper(self, param_name, hyper_name):\n    \"\"\"Get an individual hyperparam for a given param.\"\"\"\n    mapping = self._params2hyperparams[param_name]\n    return self._hyperparameters[mapping[hyper_name]]\n\n  def plugin(self, states):\n    self._states = states\n\n  def states(self):\n    return self._states\n\n  def broadcast(self):\n    \"\"\"Brodcasts all buffers and parameters.\"\"\"\n    self._broadcasted = True\n    for name, state in self._states.items():\n      self._states[name] = {key: utils.broadcast(state[key]) for key in state}\n\n  def gather(self):\n    \"\"\"Gathers state (if broadcasted) for saving.\"\"\"\n    states = {}\n    for name in self._states:\n      state = self._states[name]\n      states[name] = {key: state[key] if state[key] is None else state[key][0]\n                      for key in state}\n    return states\n\n  def __setattr__(self, name, value):\n    \"\"\"Overrides the object's set-attribute function to register states, etc.\"\"\"\n    if '_hyperparameters' in self.__dict__ and name in self._hyperparameters:\n      self._hyperparameters[name] = value\n    elif '_states' in self.__dict__ and name in self._states:\n      self._states[name] = value\n    else:\n      object.__setattr__(self, name, value)\n\n  def __getattr__(self, name):\n    \"\"\"Override the object's get-attribute function to return states, etc.\"\"\"\n    if '_hyperparameters' in self.__dict__ and name in self._hyperparameters:\n      return self._hyperparameters[name]\n    elif '_states' in self.__dict__ and name in self._states:\n      return self._states[name]\n    else:\n      object.__getattribute__(self, name)\n\n  def step(self, params, grads, states, itr=None):\n    \"\"\"Takes a single optimizer step.\n\n    Args:\n      params: a dict containing the parameters to be updated.\n      grads: a dict containing the gradients for each parameter in params.\n      states: a dict containing any optimizer buffers (momentum, etc) for\n        each parameter in params.\n      itr: an optional integer indicating the current step, for scheduling.\n    Returns:\n       The updated params and optimizer buffers.\n    \"\"\"\n    get_hyper = lambda k, v: self.get_opt_params('/'.join(k), itr)\n    hypers = tree.map_structure_with_path(get_hyper, params)\n    outs = tree.map_structure_up_to(params, self.update_param,\n                                    params, grads, states, hypers)\n    return utils.split_tree(outs, params, 2)\n\n\ndef _is_non_empty_two_level_mapping(obj):\n  instof = lambda t: lambda v: isinstance(v, t)\n  # Basically: isinstance(obj, Mapping[str, Mapping[str, Any]]) ...\n  return (isinstance(obj, Mapping) and all(map(instof(str), obj.keys())) and\n          all(map(instof(Mapping), obj.values())) and\n          all(map(lambda v: all(map(instof(str), v.keys())), obj.values())) and\n          # ... and has at least one leaf.\n          bool(obj) and any(map(bool, obj.values())))\n\n\nclass Schedule(object):\n  \"\"\"Hyperparameter scheduling objects.\"\"\"\n\n\nclass CosineDecay(Schedule):\n  \"\"\"Cosine decay.\"\"\"\n\n  def __init__(self, min_val, max_val, num_steps):\n    self.min_val = min_val\n    self.max_val = max_val\n    self.num_steps = num_steps\n\n  def __call__(self, itr):\n    cos = (1 + jnp.cos(jnp.pi * itr / self.num_steps))\n    return 0.5 * (self.max_val - self.min_val) * cos + self.min_val\n\n\nclass WarmupCosineDecay(Schedule):\n  \"\"\"Cosine decay with linear warmup.\"\"\"\n\n  def __init__(self, start_val, min_val, max_val, num_steps, warmup_steps):\n    self.start_val = start_val\n    self.min_val = min_val\n    self.max_val = max_val\n    self.num_steps = num_steps\n    self.warmup_steps = warmup_steps\n\n  def __call__(self, itr):\n    warmup_val = ((self.max_val - self.start_val) * (itr / self.warmup_steps)\n                  + self.start_val)\n    cos_itr = (itr - self.warmup_steps) / (self.num_steps - self.warmup_steps)\n    cos = 1 + jnp.cos(jnp.pi * cos_itr)\n    cos_val = 0.5 * (self.max_val - self.min_val) * cos + self.min_val\n    # Select warmup_val if itr < warmup, else cosine val\n    values = jnp.array([warmup_val, cos_val])\n    index = jnp.sum(jnp.array(self.warmup_steps) < itr)\n    return jnp.take(values, index)\n\n\nclass WarmupExpDecay(Schedule):\n  \"\"\"Exponential step decay with linear warmup.\"\"\"\n\n  def __init__(self, start_val, max_val, warmup_steps,\n               decay_factor, decay_interval):\n    self.start_val = start_val\n    self.max_val = max_val\n    self.warmup_steps = warmup_steps\n    self.decay_factor = decay_factor\n    self.decay_interval = decay_interval\n\n  def __call__(self, itr):\n    warmup_val = ((self.max_val - self.start_val) * (itr / self.warmup_steps)\n                  + self.start_val)\n    # How many decay steps have we taken?\n    num_decays = jnp.floor((itr - self.warmup_steps) / self.decay_interval)\n    exp_val = self.max_val * (self.decay_factor ** num_decays)\n    # Select warmup_val if itr < warmup, else exp_val\n    values = jnp.array([warmup_val, exp_val])\n    index = jnp.sum(jnp.array(self.warmup_steps) < itr)\n    return jnp.take(values, index)\n\n\nclass SGD(Optimizer):\n  \"\"\"Standard SGD with (nesterov) momentum and weight decay.\n\n  Attributes:\n    params: Either a dict mapping param names to JAX tensors, or a list where\n      each member of the list is a dict containing parameters\n      and hyperparameters, allowing one to specify param-specific hyperparams.\n    lr: Learning rate.\n    weight_decay: Weight decay parameter. Note that this is decay, not L2 reg.\n    momentum: Momentum parameter\n    dampening: Dampening parameter\n    nesterov: Bool indicating this optimizer will use the NAG formulation.\n  \"\"\"\n  defaults = {'weight_decay': None, 'momentum': None, 'dampening': 0,\n              'nesterov': None}\n\n  def __init__(self, params, lr, weight_decay=None,\n               momentum=None, dampening=0, nesterov=None):\n    super().__init__(\n        params, defaults={'lr': lr, 'weight_decay': weight_decay,\n                          'momentum': momentum, 'dampening': dampening,\n                          'nesterov': nesterov})\n\n  def create_buffers(self, name, param):\n    \"\"\"Prepares all momentum buffers for each parameter.\"\"\"\n    state = {'step': jnp.zeros(jax.local_device_count())}\n    if self.get_hyper(name, 'momentum') is not None:\n      state['momentum'] = jnp.zeros_like(param)\n    return state\n\n  def update_param(self, param, grad, state, opt_params):\n    \"\"\"The actual update step for this optimizer.\"\"\"\n    if param is None:\n      return param, state\n    # Apply weight decay\n    if opt_params.get('weight_decay') is not None:\n      grad = grad + param * opt_params['weight_decay']\n    # Update momentum buffers if needed\n    if 'momentum' in state:\n      state['momentum'] = (opt_params['momentum'] * state['momentum']\n                           + (1 - opt_params['dampening']) * grad)\n      if opt_params['nesterov'] is not None:\n        grad = grad + opt_params['momentum'] * state['momentum']\n      else:\n        grad = state['momentum']\n    state['step'] += 1\n    return param - opt_params['lr'] * grad, state\n\n\nclass Adam(Optimizer):\n  \"\"\"Adam optimizer, Kingma & Ba, arxiv.org/abs/1412.6980.\n\n   Args:\n      params (iterable): nested list of params to optimize\n      lr (float, optional): learning rate (default: 1e-3)\n      betas (Tuple[float, float], optional): coefficients used for computing\n          running averages of gradient and its square (default: (0.9, 0.999))\n      eps (float, optional): term added to the denominator to improve\n          numerical stability (default: 1e-8)\n      weight_decay (float, optional): weight decay (default: 0)\n      use_adamw (bool, optional): If not None, use decoupled weight decay\n          as in arxiv.org/abs/1711.05101. The paper version adds an additional\n          \"schedule\" hyperparameter eta, which we instead just replace with the\n          learning rate following the PyTorch implementation.\n\n  Note that this implementation will not instantiate a buffer if the\n  beta term for that buffer is passed in as None, thus conserving memory.\n  \"\"\"\n  defaults = {'beta1': 0.9, 'beta2': 0.999, 'weight_decay': None, 'eps': 1e-8,\n              'use_adamw': None}\n\n  def __init__(self, params, lr, beta1=0.9, beta2=0.999,\n               eps=1e-8, weight_decay=None, use_adamw=None):\n    super().__init__(params=params,\n                     defaults={'lr': lr, 'beta1': beta1,\n                               'beta2': beta2, 'eps': eps,\n                               'weight_decay': weight_decay,\n                               'use_adamw': use_adamw})\n\n  def create_buffers(self, name, param):\n    \"\"\"Prepare exp_avg and exp_avg_sq buffers.\"\"\"\n    state = {'step': jnp.zeros(jax.local_device_count())}\n    if self.get_hyper(name, 'beta1') is not None:\n      state['exp_avg'] = jnp.zeros_like(param)\n    if self.get_hyper(name, 'beta2') is not None:\n      state['exp_avg_sq'] = jnp.zeros_like(param)\n    return state\n\n  def update_param(self, param, grad, state, opt_params):\n    \"\"\"The actual update step for this optimizer.\"\"\"\n    if param is None:\n      return param, state\n    state['step'] = state['step'] + 1\n    # Apply weight decay\n    if opt_params.get('weight_decay') is not None:\n      if opt_params.get('use_adamw') is not None:\n        param = param * (1 - opt_params['lr'] * opt_params['weight_decay'])\n      else:\n        grad = grad + param * opt_params['weight_decay']\n    # First moment\n    if 'exp_avg' in state:\n      bias_correction1 = 1 - opt_params['beta1'] ** state['step']\n      state['exp_avg'] = (state['exp_avg'] * opt_params['beta1']\n                          + (1 - opt_params['beta1']) * grad)\n      step_size = opt_params['lr'] * state['exp_avg'] / bias_correction1\n    else:\n      step_size = opt_params['lr'] * grad\n    # Second moment\n    if 'exp_avg_sq' in state:\n      bias_correction2 = 1 - opt_params['beta2'] ** state['step']\n      state['exp_avg_sq'] = (state['exp_avg_sq'] * opt_params['beta2']\n                             + (1 - opt_params['beta2']) * grad * grad)\n      denom = jnp.sqrt(state['exp_avg_sq']) * jax.lax.rsqrt(bias_correction2)\n      denom = denom + opt_params['eps']\n    else:\n      denom = jnp.abs(grad) + opt_params['eps']  # Add eps to avoid divide-by-0\n\n    return param - step_size / denom, state\n\n\nclass RMSProp(Optimizer):\n  \"\"\"RMSProp optimizer, Tieleman and Hinton, ref: powerpoint slides.\n\n    Implements RMSProp as\n    rms = decay * rms{t-1} + (1-decay) * gradient ** 2\n    mom = momentum * mom{t-1} + learning_rate * g_t / sqrt(rms + epsilon)\n    param -= mom\n\n    Note that the rms buffer is initialized with ones as in TF, as opposed to\n    zeros as in all other implementations.\n\n   Args:\n      params (iterable): nested list of params to optimize\n      lr (float): learning rate (default: 1e-3)\n      decay (float): EMA decay rate for running estimate of squared gradient.\n      momentum (float or None): Use heavy ball momentum instead of instant grad.\n      eps (float, optional): term added to the denominator to improve\n          numerical stability (default: 1e-8)\n      weight_decay (float, optional): weight decay (NOT ADAMW (default: 0))\n  \"\"\"\n  defaults = {'weight_decay': None, 'eps': 1e-8}\n\n  def __init__(self, params, lr, decay, momentum, weight_decay=None, eps=1e-8):\n    super().__init__(params=params,\n                     defaults={'lr': lr, 'decay': decay,\n                               'momentum': momentum, 'eps': eps,\n                               'weight_decay': weight_decay})\n\n  def create_buffers(self, name, param):\n    \"\"\"Prepare exp_avg and exp_avg_sq buffers.\"\"\"\n    state = {'step': jnp.zeros(jax.local_device_count())}\n    state['rms'] = jnp.ones_like(param)\n    if self.get_hyper(name, 'momentum') is not None:\n      state['momentum'] = jnp.zeros_like(param)\n    return state\n\n  def update_param(self, param, grad, state, opt_params):\n    \"\"\"The actual update step for this optimizer.\"\"\"\n    if param is None:\n      return param, state\n    state['step'] = state['step'] + 1\n    # Apply weight decay\n    if opt_params.get('weight_decay') is not None:\n      grad = grad + param * opt_params['weight_decay']\n    # EMA of the squared gradient\n    state['rms'] = (state['rms'] * opt_params['decay']\n                    + (1 - opt_params['decay']) * (grad ** 2))\n    scaled_grad = (opt_params['lr'] * grad\n                   / (state['rms'] + opt_params['eps']) ** 0.5)\n    if state['momentum'] is not None:\n      state['momentum'] = (state['momentum'] * opt_params['momentum']\n                           + scaled_grad)\n      step_size = state['momentum']\n    else:\n      step_size = scaled_grad\n\n    return param - step_size, state\n\n\nclass Fromage(Optimizer):\n  \"\"\"Fromage optimizer, Bernstein et al. arXiv.org/abs/2002.03432.\n\n  This version optionally includes weight decay.\n  Attributes:\n      params (iterable): nested list of params to optimize\n      lr (float): learning rate.\n      eps (float, optional): Minimum allowable norm. This term is required for\n        in case parameters are zero-initialized (default: 1e-5).\n      weight_decay (float, optional): weight decay (default: 0).\n  \"\"\"\n\n  defaults = {'weight_decay': None, 'eps': 1e-5}\n\n  def __init__(self, params, lr, weight_decay=None, eps=1e-5):\n    super().__init__(\n        params, defaults={'lr': lr, 'weight_decay': weight_decay, 'eps': eps})\n\n  def create_buffers(self, name, param):  # pylint: disable=unused-argument\n    \"\"\"Prepares all momentum buffers for each parameter.\"\"\"\n    return {'step': jnp.zeros(1)}\n\n  def update_param(self, param, grad, state, opt_params):\n    \"\"\"The actual update step for this optimizer.\"\"\"\n    if param is None:\n      return param, state\n    if opt_params['weight_decay'] is not None:\n      grad = grad + param * opt_params['weight_decay']\n    grad_norm = jnp.maximum(jnp.linalg.norm(grad), opt_params['eps'])\n    param_norm = jnp.maximum(jnp.linalg.norm(param), opt_params['eps'])\n    mult = jax.lax.rsqrt(1 + opt_params['lr'] ** 2)\n    out = (param - opt_params['lr'] * grad * (param_norm / grad_norm)) * mult\n    return out, state\n\n\ndef compute_norm(x, axis, keepdims):\n  \"\"\"Returns norm over arbitrary axis.\"\"\"\n  norm = jnp.sum(x ** 2, axis=axis, keepdims=keepdims) ** 0.5\n  return norm\n\n\ndef unitwise_norm(x):\n  \"\"\"Computes norms of each output unit separately, assuming (HW)IO weights.\"\"\"\n  if len(jnp.squeeze(x).shape) <= 1:  # Scalars and vectors\n    axis = None\n    keepdims = False\n  elif len(x.shape) in [2, 3]:  # Linear layers of shape IO\n    axis = 0\n    keepdims = True\n  elif len(x.shape) == 4:  # Conv kernels of shape HWIO\n    axis = [0, 1, 2,]\n    keepdims = True\n  else:\n    raise ValueError(f'Got a parameter with shape not in [1, 2, 3, 4]! {x}')\n  return compute_norm(x, axis, keepdims)\n\n\nclass SGD_AGC(Optimizer):  # pylint:disable=invalid-name\n  \"\"\"SGD with Unit-Adaptive Gradient-Clipping.\n\n  References:\n    [Brock, Smith, De, Simonyan 2021] High-Performance Large-Scale Image\n    Recognition Without Normalization.\n  \"\"\"\n  defaults = {'weight_decay': None, 'momentum': None, 'dampening': 0,\n              'nesterov': None, 'clipping': 0.01, 'eps': 1e-3}\n\n  def __init__(self, params, lr, weight_decay=None,\n               momentum=None, dampening=0, nesterov=None,\n               clipping=0.01, eps=1e-3):\n    super().__init__(\n        params, defaults={'lr': lr, 'weight_decay': weight_decay,\n                          'momentum': momentum, 'dampening': dampening,\n                          'clipping': clipping, 'nesterov': nesterov,\n                          'eps': eps})\n\n  def create_buffers(self, name, param):\n    return SGD.create_buffers(self, name, param)\n\n  def update_param(self, param, grad, state, opt_params):\n    \"\"\"Clips grads if necessary, then applies the optimizer update.\"\"\"\n    if param is None:\n      return param, state\n    if opt_params['clipping'] is not None:\n      param_norm = jnp.maximum(unitwise_norm(param), opt_params['eps'])\n      grad_norm = unitwise_norm(grad)\n      max_norm = param_norm * opt_params['clipping']\n      # If grad norm > clipping * param_norm, rescale\n      trigger = grad_norm > max_norm\n      # Note the max(||G||, 1e-6) is technically unnecessary here, as\n      # the clipping shouldn't trigger if the grad norm is zero,\n      # but we include it in practice as a \"just-in-case\".\n      clipped_grad = grad * (max_norm / jnp.maximum(grad_norm, 1e-6))\n      grad = jnp.where(trigger, clipped_grad, grad)\n    return SGD.update_param(self, param, grad, state, opt_params)\n\n\nclass Hybrid(Optimizer):\n  \"\"\"Optimizer which permits passing param groups with different base opts.\n\n\n  The API for this class follows the case for any other optimizer where one\n  specifies a list of dicts with separate hyperparams, but in this case it\n  requires the user to also specify an 'opt' key for each group, such as e.g.\n  [{'params': params0, 'opt': optim.Adam, 'lr': 0.1}].\n\n  The user must also provide values for any arg in the selected optimizers which\n  does not have a default value associated\n  \"\"\"\n\n  def __init__(self, param_groups):\n    if any(['opt' not in group for group in param_groups]):\n      raise ValueError('All parameter groups must have an opt key!')\n    self.defaults = ChainMap(*[group['opt'].defaults for group in param_groups])\n    super().__init__(param_groups, defaults=dict(self.defaults))\n\n  def create_buffers(self, name, param):\n    return self.get_hyper(name, 'opt').create_buffers(self, name, param)\n\n  def update_param(self, param, grad, state, opt_params):\n    return opt_params['opt'].update_param(self, param, grad, state, opt_params)\n"
  },
  {
    "path": "nfnets/requirements.txt",
    "content": "absl-py==0.10.0\nchex>=0.0.2\ndill>=0.3.3\ndm-haiku>=0.0.3\njax>=0.2.8\njaxlib>=0.1.58\njaxline>=0.0.1\nml_collections>=0.1\nnumpy>=1.18.0\ntensorflow>=2.3.1\ntensorflow-addons>=0.12.0\ntensorflow-datasets>=4.1.0\ntensorflow-probability>=0.12.1\ntyping_extensions>=3.7\nwrapt>=1.11.2\n"
  },
  {
    "path": "nfnets/resnet.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\n\"\"\"ResNet model family.\"\"\"\nimport functools\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nfrom nfnets import base\n\n\nclass ResNet(hk.Module):\n  \"\"\"ResNetv2 Models.\"\"\"\n\n  variant_dict = {'ResNet50': {'depth': [3, 4, 6, 3]},\n                  'ResNet101': {'depth': [3, 4, 23, 3]},\n                  'ResNet152': {'depth': [3, 8, 36, 3]},\n                  'ResNet200': {'depth': [3, 24, 36, 3]},\n                  'ResNet288': {'depth': [24, 24, 24, 24]},\n                  'ResNet600': {'depth': [50, 50, 50, 50]},\n                  }\n\n  def __init__(self, width, num_classes,\n               variant='ResNet50',\n               which_norm='BatchNorm', norm_kwargs=None,\n               activation='relu', drop_rate=0.0,\n               fc_init=jnp.zeros, conv_kwargs=None,\n               preactivation=True, use_se=False, se_ratio=0.25,\n               name='ResNet'):\n    super().__init__(name=name)\n    self.width = width\n    self.num_classes = num_classes\n    self.variant = variant\n    self.depth_pattern = self.variant_dict[variant]['depth']\n    self.activation = getattr(jax.nn, activation)\n    self.drop_rate = drop_rate\n    self.which_norm = getattr(hk, which_norm)\n    if norm_kwargs is not None:\n      self.which_norm = functools.partial(self.which_norm, **norm_kwargs)\n    if conv_kwargs is not None:\n      self.which_conv = functools.partial(hk.Conv2D, **conv_kwargs)\n    else:\n      self.which_conv = hk.Conv2D\n    self.preactivation = preactivation\n\n    # Stem\n    self.initial_conv = self.which_conv(16 * self.width, kernel_shape=7,\n                                        stride=2, padding='SAME',\n                                        with_bias=False, name='initial_conv')\n    if not self.preactivation:\n      self.initial_bn = self.which_norm(name='initial_bn')\n    which_block = ResBlockV2 if self.preactivation else ResBlockV1\n    # Body\n    self.blocks = []\n    for multiplier, blocks_per_stage, stride in zip([64, 128, 256, 512],\n                                                    self.depth_pattern,\n                                                    [1, 2, 2, 2]):\n      for block_index in range(blocks_per_stage):\n        self.blocks += [which_block(multiplier * self.width,\n                                    use_projection=block_index == 0,\n                                    stride=stride if block_index == 0 else 1,\n                                    activation=self.activation,\n                                    which_norm=self.which_norm,\n                                    which_conv=self.which_conv,\n                                    use_se=use_se,\n                                    se_ratio=se_ratio)]\n\n    # Head\n    self.final_bn = self.which_norm(name='final_bn')\n    self.fc = hk.Linear(self.num_classes, w_init=fc_init, with_bias=True)\n\n  def __call__(self, x, is_training, test_local_stats=False,\n               return_metrics=False):\n    \"\"\"Return the output of the final layer without any [log-]softmax.\"\"\"\n    outputs = {}\n    # Stem\n    out = self.initial_conv(x)\n    if not self.preactivation:\n      out = self.activation(self.initial_bn(out, is_training, test_local_stats))\n    out = hk.max_pool(out, window_shape=(1, 3, 3, 1),\n                      strides=(1, 2, 2, 1), padding='SAME')\n    if return_metrics:\n      outputs.update(base.signal_metrics(out, 0))\n    # Blocks\n    for i, block in enumerate(self.blocks):\n      out, res_var = block(out, is_training, test_local_stats)\n      if return_metrics:\n        outputs.update(base.signal_metrics(out, i + 1))\n        outputs[f'res_avg_var_{i}'] = res_var\n    if self.preactivation:\n      out = self.activation(self.final_bn(out, is_training, test_local_stats))\n    # Pool, dropout, classify\n    pool = jnp.mean(out, axis=[1, 2])\n    # Return pool before dropout in case we want to regularize it separately.\n    outputs['pool'] = pool\n    # Optionally apply dropout\n    if self.drop_rate > 0.0 and is_training:\n      pool = hk.dropout(hk.next_rng_key(), self.drop_rate, pool)\n    outputs['logits'] = self.fc(pool)\n    return outputs\n\n\nclass ResBlockV2(hk.Module):\n  \"\"\"ResNet preac block, 1x1->3x3->1x1 with strides and shortcut downsample.\"\"\"\n\n  def __init__(self, out_ch, stride=1, use_projection=False,\n               activation=jax.nn.relu, which_norm=hk.BatchNorm,\n               which_conv=hk.Conv2D, use_se=False, se_ratio=0.25,\n               name=None):\n    super().__init__(name=name)\n    self.out_ch = out_ch\n    self.stride = stride\n    self.use_projection = use_projection\n    self.activation = activation\n    self.which_norm = which_norm\n    self.which_conv = which_conv\n    self.use_se = use_se\n    self.se_ratio = se_ratio\n\n    self.width = self.out_ch // 4\n\n    self.bn0 = which_norm(name='bn0')\n    self.conv0 = which_conv(self.width, kernel_shape=1, with_bias=False,\n                            padding='SAME', name='conv0')\n    self.bn1 = which_norm(name='bn1')\n    self.conv1 = which_conv(self.width, stride=self.stride,\n                            kernel_shape=3, with_bias=False,\n                            padding='SAME', name='conv1')\n    self.bn2 = which_norm(name='bn2')\n    self.conv2 = which_conv(self.out_ch, kernel_shape=1, with_bias=False,\n                            padding='SAME', name='conv2')\n    if self.use_projection:\n      self.conv_shortcut = which_conv(self.out_ch, stride=stride,\n                                      kernel_shape=1, with_bias=False,\n                                      padding='SAME', name='conv_shortcut')\n    if self.use_se:\n      self.se = base.SqueezeExcite(self.out_ch, self.out_ch, self.se_ratio)\n\n  def __call__(self, x, is_training, test_local_stats):\n    bn_args = (is_training, test_local_stats)\n    out = self.activation(self.bn0(x, *bn_args))\n    if self.use_projection:\n      shortcut = self.conv_shortcut(out)\n    else:\n      shortcut = x\n    out = self.conv0(out)\n    out = self.conv1(self.activation(self.bn1(out, *bn_args)))\n    out = self.conv2(self.activation(self.bn2(out, *bn_args)))\n    if self.use_se:\n      out = self.se(out) * out\n    # Get average residual standard deviation for reporting metrics.\n    res_avg_var = jnp.mean(jnp.var(out, axis=[0, 1, 2]))\n    return out + shortcut, res_avg_var\n\n\nclass ResBlockV1(ResBlockV2):\n  \"\"\"Post-Ac Residual Block.\"\"\"\n\n  def __call__(self, x, is_training, test_local_stats):\n    bn_args = (is_training, test_local_stats)\n    if self.use_projection:\n      shortcut = self.conv_shortcut(x)\n      shortcut = self.which_norm(name='shortcut_bn')(shortcut, *bn_args)\n    else:\n      shortcut = x\n    out = self.activation(self.bn0(self.conv0(x), *bn_args))\n    out = self.activation(self.bn1(self.conv1(out), *bn_args))\n    out = self.bn2(self.conv2(out), *bn_args)\n    if self.use_se:\n      out = self.se(out) * out\n    res_avg_var = jnp.mean(jnp.var(out, axis=[0, 1, 2]))\n    return self.activation(out + shortcut), res_avg_var\n"
  },
  {
    "path": "nfnets/run.sh",
    "content": "#!/bin/sh\n# Copyright 2021 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nset -e\n\npython3 -m venv /tmp/nfnets_venv\nsource /tmp/nfnets_venv/bin/activate\npip3 install --upgrade pip setuptools wheel\npip3 install -r nfnets/requirements.txt\n\npython3 -m nfnets.test\n"
  },
  {
    "path": "nfnets/skipinit_resnet.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\n\"\"\"ResNetV2 (Pre-activation) with SkipInit.\"\"\"\n# pylint: disable=invalid-name\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nfrom nfnets import base\n\n\n# Nonlinearities\nnonlinearities = {\n    'swish': jax.nn.silu,\n    'relu': jax.nn.relu,\n    'identity': lambda x: x}\n\n\nclass SkipInit_ResNet(hk.Module):\n  \"\"\"Skip-Init based ResNet.\"\"\"\n\n  variant_dict = {'ResNet50': {'depth': [3, 4, 6, 3]},\n                  'ResNet101': {'depth': [3, 4, 23, 3]},\n                  'ResNet152': {'depth': [3, 8, 36, 3]},\n                  'ResNet200': {'depth': [3, 24, 36, 3]},\n                  'ResNet288': {'depth': [24, 24, 24, 24]},\n                  'ResNet600': {'depth': [50, 50, 50, 50]},\n                  }\n\n  def __init__(self, num_classes, variant='ResNet50', width=4,\n               stochdepth_rate=0.1, drop_rate=None,\n               activation='relu', fc_init=jnp.zeros,\n               name='SkipInit_ResNet'):\n    super().__init__(name=name)\n    self.num_classes = num_classes\n    self.variant = variant\n    self.width = width\n    # Get variant info\n    block_params = self.variant_dict[self.variant]\n    self.width_pattern = [item * self.width for item in [64, 128, 256, 512]]\n    self.depth_pattern = block_params['depth']\n    self.activation = nonlinearities[activation]\n    if drop_rate is None:\n      self.drop_rate = block_params['drop_rate']\n    else:\n      self.drop_rate = drop_rate\n    self.which_conv = hk.Conv2D\n    # Stem\n    ch = int(16 * self.width)\n    self.initial_conv = self.which_conv(ch, kernel_shape=7, stride=2,\n                                        padding='SAME', with_bias=False,\n                                        name='initial_conv')\n\n    # Body\n    self.blocks = []\n    num_blocks = sum(self.depth_pattern)\n    index = 0  # Overall block index\n    block_args = (self.width_pattern, self.depth_pattern, [1, 2, 2, 2])\n    for block_width, stage_depth, stride in zip(*block_args):\n      for block_index in range(stage_depth):\n        # Block stochastic depth drop-rate\n        block_stochdepth_rate = stochdepth_rate * index / num_blocks\n        self.blocks += [NFResBlock(ch, block_width,\n                                   stride=stride if block_index == 0 else 1,\n                                   activation=self.activation,\n                                   which_conv=self.which_conv,\n                                   stochdepth_rate=block_stochdepth_rate,\n                                   )]\n        ch = block_width\n        index += 1\n\n    # Head\n    self.fc = hk.Linear(self.num_classes, w_init=fc_init, with_bias=True)\n\n  def __call__(self, x, is_training=True, return_metrics=False):\n    \"\"\"Return the output of the final layer without any [log-]softmax.\"\"\"\n    # Stem\n    outputs = {}\n    out = self.initial_conv(x)\n    out = hk.max_pool(out, window_shape=(1, 3, 3, 1),\n                      strides=(1, 2, 2, 1), padding='SAME')\n    if return_metrics:\n      outputs.update(base.signal_metrics(out, 0))\n    # Blocks\n    for i, block in enumerate(self.blocks):\n      out, res_avg_var = block(out, is_training=is_training)\n      if return_metrics:\n        outputs.update(base.signal_metrics(out, i + 1))\n        outputs[f'res_avg_var_{i}'] = res_avg_var\n    # Final-conv->activation, pool, dropout, classify\n    pool = jnp.mean(self.activation(out), [1, 2])\n    outputs['pool'] = pool\n    # Optionally apply dropout\n    if self.drop_rate > 0.0 and is_training:\n      pool = hk.dropout(hk.next_rng_key(), self.drop_rate, pool)\n    outputs['logits'] = self.fc(pool)\n    return outputs\n\n  def count_flops(self, h, w):\n    flops = []\n    flops += [base.count_conv_flops(3, self.initial_conv, h, w)]\n    h, w = h / 2, w / 2\n    # Body FLOPs\n    for block in self.blocks:\n      flops += [block.count_flops(h, w)]\n      if block.stride > 1:\n        h, w = h / block.stride, w / block.stride\n    # Count flops for classifier\n    flops += [self.blocks[-1].out_ch * self.fc.output_size]\n    return flops, sum(flops)\n\n\nclass NFResBlock(hk.Module):\n  \"\"\"Normalizer-Free pre-activation ResNet Block.\"\"\"\n\n  def __init__(self, in_ch, out_ch, bottleneck_ratio=0.25,\n               kernel_size=3, stride=1,\n               which_conv=hk.Conv2D, activation=jax.nn.relu,\n               stochdepth_rate=None, name=None):\n    super().__init__(name=name)\n    self.in_ch, self.out_ch = in_ch, out_ch\n    self.kernel_size = kernel_size\n    self.activation = activation\n    # Bottleneck width\n    self.width = int(self.out_ch * bottleneck_ratio)\n    self.stride = stride\n    # Conv 0 (typically expansion conv)\n    self.conv0 = which_conv(self.width, kernel_shape=1, padding='SAME',\n                            name='conv0')\n    # Grouped NxN conv\n    self.conv1 = which_conv(self.width, kernel_shape=kernel_size, stride=stride,\n                            padding='SAME', name='conv1')\n    # Conv 2, typically projection conv\n    self.conv2 = which_conv(self.out_ch, kernel_shape=1, padding='SAME',\n                            name='conv2')\n    # Use shortcut conv on channel change or downsample.\n    self.use_projection = stride > 1 or self.in_ch != self.out_ch\n    if self.use_projection:\n      self.conv_shortcut = which_conv(self.out_ch, kernel_shape=1,\n                                      stride=stride, padding='SAME',\n                                      name='conv_shortcut')\n    # Are we using stochastic depth?\n    self._has_stochdepth = (stochdepth_rate is not None and\n                            stochdepth_rate > 0. and stochdepth_rate < 1.0)\n    if self._has_stochdepth:\n      self.stoch_depth = base.StochDepth(stochdepth_rate)\n\n  def __call__(self, x, is_training):\n    out = self.activation(x)\n    shortcut = x\n    if self.use_projection:  # Downsample with conv1x1\n      shortcut = self.conv_shortcut(out)\n    out = self.conv0(out)\n    out = self.conv1(self.activation(out))\n    out = self.conv2(self.activation(out))\n    # Get average residual standard deviation for reporting metrics.\n    res_avg_var = jnp.mean(jnp.var(out, axis=[0, 1, 2]))\n    # Apply stochdepth if applicable.\n    if self._has_stochdepth:\n      out = self.stoch_depth(out, is_training)\n    # SkipInit Gain\n    out = out * hk.get_parameter('skip_gain', (), out.dtype, init=jnp.zeros)\n    return out + shortcut, res_avg_var\n\n  def count_flops(self, h, w):\n    # Count conv FLOPs based on input HW\n    expand_flops = base.count_conv_flops(self.in_ch, self.conv0, h, w)\n    # If block is strided we decrease resolution here.\n    dw_flops = base.count_conv_flops(self.width, self.conv1, h, w)\n    if self.stride > 1:\n      h, w = h / self.stride, w / self.stride\n    if self.use_projection:\n      sc_flops = base.count_conv_flops(self.in_ch, self.conv_shortcut, h, w)\n    else:\n      sc_flops = 0\n    # SE flops happen on avg-pooled activations\n    contract_flops = base.count_conv_flops(self.width, self.conv2, h, w)\n    return sum([expand_flops, dw_flops, contract_flops, sc_flops])\n"
  },
  {
    "path": "nfnets/test.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\n\"\"\"Quick script to test that experiment can import and run.\"\"\"\nimport jax\nimport jax.numpy as jnp\nfrom nfnets import experiment\nfrom nfnets import experiment_nfnets\n\n\ndef test_experiment():\n  \"\"\"Tests the main experiment.\"\"\"\n  config = experiment.get_config()\n  exp_config = config.experiment_kwargs.config\n  exp_config.train_batch_size = 2\n  exp_config.eval_batch_size = 2\n  exp_config.lr = 0.1\n  exp_config.fake_data = True\n  exp_config.model_kwargs.width = 2\n  print(exp_config.model_kwargs)\n\n  xp = experiment.Experiment('train', exp_config, jax.random.PRNGKey(0))\n  bcast = jax.pmap(lambda x: x)\n  global_step = bcast(jnp.zeros(jax.local_device_count()))\n  rng = bcast(jnp.stack([jax.random.PRNGKey(0)] * jax.local_device_count()))\n  print('Taking a single experiment step for test purposes!')\n  result = xp.step(global_step, rng)\n  print(f'Step successfully taken, resulting metrics are {result}')\n\n\ndef test_nfnet_experiment():\n  \"\"\"Tests the NFNet experiment.\"\"\"\n  config = experiment_nfnets.get_config()\n  exp_config = config.experiment_kwargs.config\n  exp_config.train_batch_size = 2\n  exp_config.eval_batch_size = 2\n  exp_config.lr = 0.1\n  exp_config.fake_data = True\n  exp_config.model_kwargs.width = 2\n  print(exp_config.model_kwargs)\n\n  xp = experiment_nfnets.Experiment('train', exp_config, jax.random.PRNGKey(0))\n  bcast = jax.pmap(lambda x: x)\n  global_step = bcast(jnp.zeros(jax.local_device_count()))\n  rng = bcast(jnp.stack([jax.random.PRNGKey(0)] * jax.local_device_count()))\n  print('Taking a single NFNet experiment step for test purposes!')\n  result = xp.step(global_step, rng)\n  print(f'NFNet Step successfully taken, resulting metrics are {result}')\n\ntest_experiment()\ntest_nfnet_experiment()\n"
  },
  {
    "path": "nfnets/utils.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\n\"\"\"Utils.\"\"\"\nimport dill\nimport jax\nimport jax.numpy as jnp\nimport tree\n\n\ndef reduce_fn(x, mode):\n  \"\"\"Reduce fn for various losses.\"\"\"\n  if mode == 'none' or mode is None:\n    return jnp.asarray(x)\n  elif mode == 'sum':\n    return jnp.sum(x)\n  elif mode == 'mean':\n    return jnp.mean(x)\n  else:\n    raise ValueError('Unsupported reduction option.')\n\n\ndef softmax_cross_entropy(logits, labels, reduction='sum'):\n  \"\"\"Computes softmax cross entropy given logits and one-hot class labels.\n\n  Args:\n    logits: Logit output values.\n    labels: Ground truth one-hot-encoded labels.\n    reduction: Type of reduction to apply to loss.\n\n  Returns:\n    Loss value. If `reduction` is `none`, this has the same shape as `labels`;\n    otherwise, it is scalar.\n\n  Raises:\n    ValueError: If the type of `reduction` is unsupported.\n  \"\"\"\n  loss = -jnp.sum(labels * jax.nn.log_softmax(logits), axis=-1)\n  return reduce_fn(loss, reduction)\n\n\ndef topk_correct(logits, labels, mask=None, prefix='', topk=(1, 5)):\n  \"\"\"Calculate top-k error for multiple k values.\"\"\"\n  metrics = {}\n  argsorted_logits = jnp.argsort(logits)\n  for k in topk:\n    pred_labels = argsorted_logits[..., -k:]\n    # Get the number of examples where the label is in the top-k predictions\n    correct = any_in(pred_labels, labels).any(axis=-1).astype(jnp.float32)\n    if mask is not None:\n      correct *= mask\n    metrics[f'{prefix}top_{k}_acc'] = correct\n  return metrics\n\n\n@jax.vmap\ndef any_in(prediction, target):\n  \"\"\"For each row in a and b, checks if any element of a is in b.\"\"\"\n  return jnp.isin(prediction, target)\n\n\ndef tf1_ema(ema_value, current_value, decay, step):\n  \"\"\"Implements EMA with TF1-style decay warmup.\"\"\"\n  decay = jnp.minimum(decay, (1.0 + step) / (10.0 + step))\n  return ema_value * decay + current_value * (1 - decay)\n\n\ndef ema(ema_value, current_value, decay, step):\n  \"\"\"Implements EMA without any warmup.\"\"\"\n  del step\n  return ema_value * decay + current_value * (1 - decay)\n\n\nto_bf16 = lambda x: x.astype(jnp.bfloat16) if x.dtype == jnp.float32 else x\nfrom_bf16 = lambda x: x.astype(jnp.float32) if x.dtype == jnp.bfloat16 else x\n\n\ndef _replicate(x, devices=None):\n  \"\"\"Replicate an object on each device.\"\"\"\n  x = jax.numpy.array(x)\n  if devices is None:\n    devices = jax.local_devices()\n  return jax.device_put_sharded(len(devices) * [x], devices)\n\n\ndef broadcast(obj):\n  \"\"\"Broadcasts an object to all devices.\"\"\"\n  if obj is not None and not isinstance(obj, bool):\n    return _replicate(obj)\n  else:\n    return obj\n\n\ndef split_tree(tuple_tree, base_tree, n):\n  \"\"\"Splits tuple_tree with n-tuple leaves into n trees.\"\"\"\n  return [tree.map_structure_up_to(base_tree, lambda x: x[i], tuple_tree)  # pylint: disable=cell-var-from-loop\n          for i in range(n)]\n\n\ndef load_haiku_file(filename):\n  \"\"\"Loads a haiku parameter tree, using dill.\"\"\"\n  with open(filename, 'rb') as in_file:\n    output = dill.load(in_file)\n  return output\n\n\ndef flatten_haiku_tree(haiku_dict):\n  \"\"\"Flattens a haiku parameter tree into a flat dictionary.\"\"\"\n  out = {}\n  for module in haiku_dict.keys():\n    out_module = module.replace('/~/', '.').replace('/', '.')\n    for key in haiku_dict[module]:\n      out_key = f'{out_module}.{key}'\n      out[out_key] = haiku_dict[module][key]\n  return out\n"
  },
  {
    "path": "noisy_label/README.md",
    "content": "<img src=\"paradigm.png\" width=\"50%\">\n\n# An Instance-Dependent Simulation Framework for Learning with Label Noise\n\nWe propose a simulation framework for generating instance-dependent\nnoisy labels via a pseudo-labeling paradigm. We show that this framework\ngenerates synthetic noisy labels whose distribution is closer to human labels\ncompared to independent and class-conditional random flipping.\nEquipped with controllable label noise, we study the negative impact of\nnoisy labels across a few practical settings to\nunderstand when label noise is more problematic. Additionally, with the\navailability of annotator information from our simulation framework, we propose\na new technique, Label Quality Model (LQM), that leverages annotator features to\npredict and correct against noisy labels. We show that by adding LQM as a label\ncorrection step before applying existing noisy label techniques, we can further\nimprove the models' performance.\n\n[An Instance-Dependent Simulation Framework for Learning with Label Noise](https://arxiv.org/pdf/2107.11413.pdf).\n\nIn this repository, we provide the link to the datasets that we used in Sections\n4 and 5 of the above paper, along with a colab that demonstrates how to load the\ndata and rater features.\nWe consider 4 tasks:\n[CIFAR10](https://www.cs.toronto.edu/~kriz/cifar.html),\n[CIFAR100](https://www.cs.toronto.edu/~kriz/cifar.html),\n[Patch Camelyon](https://patchcamelyon.grand-challenge.org/),\nand\n[Cats vs Dogs](https://www.microsoft.com/en-us/download/details.aspx?id=54765).\nFor each task, we generate three synthetic noisy label\ndatasets, named as \"low\", \"medium\", and \"high\" according to the amount of label\nnoise. The data are stored as TFRecords and the rater features are stored as\njson files.\n\nThe data is available under\n[noisy label synthetic dataset GCP bucket](https://console.cloud.google.com/storage/browser/noisy_label_synthetic_datasets).\n\nThe colab that contains details of the datasets and examples for data loading\nis at\n[this colab example](https://github.com/deepmind/deepmind-research/blob/master/noisy_label/noisy_label_datasets_and_rater_features.ipynb)\n\n## License\nThe noisy labels and rater features in our datasets are under the\n[CC0 License](https://choosealicense.com/licenses/cc0-1.0/).\nOther parts of the datasets are under the original license of the datasets.\n\nWhen using the datasets based on CIFAR10/CIFAR100, users are required to\nattribute the following paper:\n\nLearning Multiple Layers of Features from Tiny Images, Alex Krizhevsky, 2009\n\nWhen using the datasets based on Patch Camelyon, users are required to\nattribute the following paper:\n\nRotation Equivariant CNNs for Digital Pathology, Bastiaan S. Veeling,\nJasper Linmans, Jim Winkens, Taco Cohen, and Max Welling, arXiv:1806.03962.\n\nWhen using the datasets based on Cats vs Dogs, users are required to\nattribute the following paper:\n\nAsirra: a CAPTCHA that exploits interest-aligned manual image categorization,\nJeremy Elson, John R. Douceur, Jon Howell, and Jared Saul, ACM Conference on\nComputer and Communications Security, 2007.\n\nThe colab example is provided under the Apache License, Version 2.0.\n\n\n## Citation\n\nPlease use the following bibtex for citations to our paper:\n\n```\n@article{gu2021instance,\n  title={An Instance-Dependent Simulation Framework for Learning with Label Noise},\n  author={Gu, Keren and Masotto, Xander and Bachani, Vandana and Lakshminarayanan, Balaji and Nikodem, Jack and Yin, Dong},\n  year={2021}\n}\n```\n\n# Dataset Metadata\n\nThe following table is necessary for this dataset to be indexed by search\nengines such as <a href=\"https://g.co/datasetsearch\">Google Dataset Search</a>.\n<div itemscope itemtype=\"http://schema.org/Dataset\">\n<table>\n  <tr>\n    <th>property</th>\n    <th>value</th>\n  </tr>\n  <tr>\n    <td>name</td>\n    <td><code itemprop=\"name\">Noisy Label Synthetic Datasets</code></td>\n  </tr>\n  <tr>\n    <td>url</td>\n    <td><code itemprop=\"url\">https://github.com/deepmind/deepmind-research/tree/master/noisy_label</code></td>\n  </tr>\n  <tr>\n    <td>sameAs</td>\n    <td><code itemprop=\"sameAs\">https://github.com/deepmind/deepmind-research/tree/master/noisy_label</code></td>\n  </tr>\n  <tr>\n    <td>description</td>\n    <td><code itemprop=\"description\">\n      Data accompanying\n[An Instance-Dependent Simulation Framework for Learning with Label Noise]().\n      </code></td>\n  </tr>\n  <tr>\n    <td>provider</td>\n    <td>\n      <div itemscope itemtype=\"http://schema.org/Organization\" itemprop=\"provider\">\n        <table>\n          <tr>\n            <th>property</th>\n            <th>value</th>\n          </tr>\n          <tr>\n            <td>name</td>\n            <td><code itemprop=\"name\">DeepMind</code></td>\n          </tr>\n          <tr>\n            <td>sameAs</td>\n            <td><code itemprop=\"sameAs\">https://en.wikipedia.org/wiki/DeepMind</code></td>\n          </tr>\n        </table>\n      </div>\n    </td>\n  </tr>\n  <tr>\n    <td>citation</td>\n    <td><code itemprop=\"citation\">https://identifiers.org/arxiv:2107.11413</code></td>\n  </tr>\n</table>\n</div>\n"
  },
  {
    "path": "noisy_label/noisy_label_datasets_and_rater_features.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"cv38ildJKsei\"\n      },\n      \"source\": [\n        \"Copyright 2021 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n\",\n        \"this file except in compliance with the License. You may obtain a copy of the\\n\",\n        \"License at\\n\",\n        \"\\n\",\n        \"[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software distributed\\n\",\n        \"under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR\\n\",\n        \"CONDITIONS OF ANY KIND, either express or implied. See the License for the\\n\",\n        \"specific language governing permissions and limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"tAJQfAHhAxz9\"\n      },\n      \"source\": [\n        \"# An Instance-Dependent Simulation Framework for Learning with Label Noise\\n\",\n        \"\\n\",\n        \"In this colab, we provide metadata and examples for data loading for the noisy label datasets generated using the pseudo-labeling paradigm propsed in the paper *An Instance-Dependent Simulation Framework for Learning with Label Noise*.\\n\",\n        \"We also provide the associated rater features. We consider 4 tasks: CIFAR10 [1], CIFAR100 [1], Patch Camelyon [2,3], and Cats vs Dogs [4]. For each task, we generate three synthetic noisy label datasets, named as \\\"low\\\", \\\"medium\\\", and \\\"high\\\" according to the amount of label noise.\\n\",\n        \"\\n\",\n        \"*   [1] Krizhevsky, Alex, and Geoffrey Hinton. \\\"Learning multiple layers of features from tiny images.\\\", 2009.\\n\",\n        \"*   [2] Veeling, Bastiaan S., Jasper Linmans, Jim Winkens, Taco Cohen, and Max Welling. \\\"Rotation equivariant CNNs for digital pathology.\\\" In International Conference on Medical image computing and computer-assisted intervention, pp. 210-218. Springer, Cham, 2018.\\n\",\n        \"*   [3] Bejnordi, Babak Ehteshami, Mitko Veta, Paul Johannes Van Diest, Bram Van Ginneken, Nico Karssemeijer, Geert Litjens, Jeroen AWM Van Der Laak et al. \\\"Diagnostic assessment of deep learning algorithms for detection of lymph node metastases in women with breast cancer.\\\" Jama 318, no. 22 (2017): 2199-2210.\\n\",\n        \"*   [4] Elson, Jeremy, John R. Douceur, Jon Howell, and Jared Saul. \\\"Asirra: a CAPTCHA that exploits interest-aligned manual image categorization.\\\" In ACM Conference on Computer and Communications Security, vol. 7, pp. 366-374. 2007.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"_9SigscwVH_s\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title Imports and global variable\\n\",\n        \"import os\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"import json\\n\",\n        \"import tensorflow as tf\\n\",\n        \"\\n\",\n        \"root_dir = '/root/directory/to/the/dataset/'\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"7Xv86m2rNOFH\"\n      },\n      \"source\": [\n        \"**CIFAR10 noisy label datasets**\\n\",\n        \"\\n\",\n        \"**Download size**\\n\",\n        \"*   79MB for each of the low, medium, and high noise datasets.\\n\",\n        \"\\n\",\n        \"**Number of examples**\\n\",\n        \"*   train: 19987, valid: 5021, for each of the low, medium, and high noise datasets.\\n\",\n        \"\\n\",\n        \"Both the train and valid splits are subsampled from the train split of the original CIFAR10 dataset.\\n\",\n        \"\\n\",\n        \"**Data features**\\n\",\n        \"*   \\\"image/raw\\\": images in bytes, shape = (32, 32, 3).\\n\",\n        \"*   \\\"image/class/label\\\": clean label, tf.int64.\\n\",\n        \"*   \\\"noisy_labels\\\": the noisy label given by rater models, a list of 10 tf.int64 integers.\\n\",\n        \"*   \\\"rater_ids\\\": the ID of the rater models, a list of 10 tf.string.\\n\",\n        \"\\n\",\n        \"**Rater features**\\n\",\n        \"*   model_name: name of the model\\n\",\n        \"*   accuracy: accuracy of the rater model on the rater validation set\\n\",\n        \"*   loss: loss of the rater model on the rater validation set\\n\",\n        \"*   experience: the total number of data that the rater model has seen during training\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"aPDR8avkiFWA\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title An example for loading CIFAR10 noisy label datasets\\n\",\n        \"task_name = 'cifar10'\\n\",\n        \"\\n\",\n        \"# One of ['low', 'medium', 'high']\\n\",\n        \"noise_level = 'low'\\n\",\n        \"\\n\",\n        \"# One of ['train', 'valid']. The `valid` split should be used for\\n\",\n        \"# hyperparameter tuning. The model should be tested on the original test\\n\",\n        \"# slipt for these tasks.\\n\",\n        \"split = 'train'\\n\",\n        \"\\n\",\n        \"# We have 10 rater models for CIFAR10.\\n\",\n        \"num_raters = 10\\n\",\n        \"\\n\",\n        \"directory = os.path.join(root_dir, task_name, noise_level, split) + '*'\\n\",\n        \"raw_image_dataset = tf.data.TFRecordDataset(tf.io.gfile.glob(directory))\\n\",\n        \"\\n\",\n        \"# Create a dictionary describing the features.\\n\",\n        \"image_feature_description = {\\n\",\n        \"    # the raw image\\n\",\n        \"    'image/raw': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"    # the clean label\\n\",\n        \"    'image/class/label': tf.io.FixedLenFeature([1], tf.int64),\\n\",\n        \"    # noisy labels from all the raters\\n\",\n        \"    'noisy_labels': tf.io.FixedLenFeature([num_raters], tf.int64),\\n\",\n        \"    # the IDs of rater models\\n\",\n        \"    'rater_ids': tf.io.FixedLenFeature([num_raters], tf.string),\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"def _parse_image_function(example_proto):\\n\",\n        \"  # Parse the input tf.train.Example proto using the dictionary above.\\n\",\n        \"  return tf.io.parse_single_example(example_proto, image_feature_description)\\n\",\n        \"\\n\",\n        \"parsed_image_dataset = raw_image_dataset.map(_parse_image_function)\\n\",\n        \"\\n\",\n        \"for features in parsed_image_dataset.take(1):\\n\",\n        \"  # Check the IDs of the rater models. The rater IDs are the same for all the\\n\",\n        \"  # examples in the dataset.\\n\",\n        \"  rater_ids = features['rater_ids']\\n\",\n        \"  rater_id_string = [r.numpy().decode('utf-8') for r in rater_ids]\\n\",\n        \"  print('The IDs of the rater models for this dataset are:')\\n\",\n        \"  print(rater_id_string)\\n\",\n        \"  clean_label = features['image/class/label'].numpy()\\n\",\n        \"  print('The clean label for the following example is %d' % clean_label)\\n\",\n        \"  noisy_labels = features['noisy_labels'].numpy()\\n\",\n        \"  print('The noisy labels from the rater models are:')\\n\",\n        \"  print(noisy_labels)\\n\",\n        \"  image = tf.reshape(tf.io.decode_raw(features['image/raw'], tf.uint8),\\n\",\n        \"                     (32, 32, 3))\\n\",\n        \"  plt.imshow(image)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"YahpOXMmmhFO\"\n      },\n      \"source\": [\n        \"**CIFAR100 noisy label datasets**\\n\",\n        \"\\n\",\n        \"**Download size**\\n\",\n        \"*   82MB for each of the low, medium, and high noise datasets.\\n\",\n        \"\\n\",\n        \"**Number of examples**\\n\",\n        \"*   train: 20114, valid: 4978, for each of the low, medium, and high noise datasets.\\n\",\n        \"\\n\",\n        \"Both the train and valid splits are subsampled from the train split of the original CIFAR100 dataset.\\n\",\n        \"\\n\",\n        \"**Data features**\\n\",\n        \"*   \\\"image/encoded\\\": images in bytes, shape=(32, 32, 3).\\n\",\n        \"*   \\\"image/class/fine_label\\\": clean fine-grained label, tf.int64.\\n\",\n        \"*   \\\"image/class/coarse_label\\\": clean coarse label, tf.int64\\n\",\n        \"*   \\\"noisy_labels\\\": the noisy label given by rater models, a list of 11 tf.int64 integers.\\n\",\n        \"*   \\\"rater_ids\\\": the ID of the rater models, a list of 11 tf.string.\\n\",\n        \"\\n\",\n        \"**Rater features**\\n\",\n        \"*   model_name: name of the model\\n\",\n        \"*   accuracy: accuracy of the rater model on the rater validation set\\n\",\n        \"*   loss: loss of the rater model on the rater validation set\\n\",\n        \"*   mAP: the mean average precision of the rater model on the rater validation set\\n\",\n        \"*   experience: the total number of data that the rater model has seen during training\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"AccCP_BZnz3S\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title An example for loading CIFAR100 noisy label datasets\\n\",\n        \"task_name = 'cifar100'\\n\",\n        \"\\n\",\n        \"# One of ['low', 'medium', 'high']\\n\",\n        \"noise_level = 'high'\\n\",\n        \"\\n\",\n        \"# One of ['train', 'valid']. The `valid` split should be used for\\n\",\n        \"# hyperparameter tuning. The model should be tested on the original test\\n\",\n        \"# slipt for these tasks.\\n\",\n        \"split = 'train'\\n\",\n        \"\\n\",\n        \"# We have 11 rater models for CIFAR100.\\n\",\n        \"num_raters = 11\\n\",\n        \"\\n\",\n        \"directory = os.path.join(root_dir, task_name, noise_level, split) + '*'\\n\",\n        \"raw_image_dataset = tf.data.TFRecordDataset(tf.io.gfile.glob(directory))\\n\",\n        \"\\n\",\n        \"# Create a dictionary describing the features.\\n\",\n        \"image_feature_description = {\\n\",\n        \"    # the raw image\\n\",\n        \"    'image/encoded': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"    # the fine-grained clean label, value in [0, 99]\\n\",\n        \"    'image/class/fine_label': tf.io.FixedLenFeature([1], tf.int64),\\n\",\n        \"    # the coarse clean label, value in [0, 19]\\n\",\n        \"    'image/class/coarse_label': tf.io.FixedLenFeature([1], tf.int64),\\n\",\n        \"    # noisy labels from all the raters\\n\",\n        \"    'noisy_labels': tf.io.FixedLenFeature([num_raters], tf.int64),\\n\",\n        \"    # the IDs of rater models\\n\",\n        \"    'rater_ids': tf.io.FixedLenFeature([num_raters], tf.string),\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"def _parse_image_function(example_proto):\\n\",\n        \"  # Parse the input tf.train.Example proto using the dictionary above.\\n\",\n        \"  return tf.io.parse_single_example(example_proto, image_feature_description)\\n\",\n        \"\\n\",\n        \"parsed_image_dataset = raw_image_dataset.map(_parse_image_function)\\n\",\n        \"\\n\",\n        \"for features in parsed_image_dataset.take(1):\\n\",\n        \"  # Check the IDs of the rater models. The rater IDs are the same for all the\\n\",\n        \"  # examples in the dataset.\\n\",\n        \"  rater_ids = features['rater_ids']\\n\",\n        \"  rater_id_string = [r.numpy().decode('utf-8') for r in rater_ids]\\n\",\n        \"  print('The IDs of the rater models for this dataset are:')\\n\",\n        \"  print(rater_id_string)\\n\",\n        \"  clean_label = features['image/class/fine_label'].numpy()\\n\",\n        \"  print('The clean label for the following example is %d' % clean_label)\\n\",\n        \"  noisy_labels = features['noisy_labels'].numpy()\\n\",\n        \"  print('The noisy labels from the rater models are:')\\n\",\n        \"  print(noisy_labels)\\n\",\n        \"  image = tf.reshape(tf.io.decode_raw(features['image/encoded'], tf.uint8),\\n\",\n        \"                     (32, 32, 3))\\n\",\n        \"  plt.imshow(image)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ASlnEQ0DpPY2\"\n      },\n      \"source\": [\n        \"**Patch Camelyon noisy label datasets**\\n\",\n        \"\\n\",\n        \"**Download size**\\n\",\n        \"*   3.27GB for each of the low, medium, and high noise datasets.\\n\",\n        \"\\n\",\n        \"**Number of examples**\\n\",\n        \"*   train: 130982, valid: 16394, for each of the low, medium, and high noise datasets.\\n\",\n        \"\\n\",\n        \"The train and valid splits are subsampled from the train and valid splits of the original Patch Camelyon dataset, respectively.\\n\",\n        \"\\n\",\n        \"**Data features**\\n\",\n        \"*   \\\"image\\\": images in png format, shape=(96, 96, 3).\\n\",\n        \"*   \\\"label\\\": clean label, tf.int64.\\n\",\n        \"*   \\\"id\\\": the ID of this image in the original Patch Camelyon dataset, a tf.string that begins with \\\"train_\\\" or \\\"valid_\\\".\\n\",\n        \"*   \\\"noisy_labels\\\": the noisy label given by rater models, a list of 20 (low and high noise) or 19 (medium noise) tf.int64 integers.\\n\",\n        \"*   \\\"rater_ids\\\": the ID of the rater models, a list of 20 (low and high noise) or 19 (medium noise) tf.string.\\n\",\n        \"\\n\",\n        \"**Rater features**\\n\",\n        \"*   model_name: name of the model\\n\",\n        \"*   accuracy: accuracy of the rater model on the rater validation set\\n\",\n        \"*   loss: loss of the rater model on the rater validation set\\n\",\n        \"*   experience: the total number of data that the rater model has seen during training\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Usw0YmwupYgP\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title An example for loading Patch Camelyon noisy label datasets\\n\",\n        \"task_name = 'patch_camelyon'\\n\",\n        \"\\n\",\n        \"# One of ['low', 'medium', 'high']\\n\",\n        \"noise_level = 'medium'\\n\",\n        \"\\n\",\n        \"# One of ['train', 'valid']. The `valid` split should be used for\\n\",\n        \"# hyperparameter tuning. The model should be tested on the original test\\n\",\n        \"# slipt for these tasks.\\n\",\n        \"split = 'train'\\n\",\n        \"\\n\",\n        \"# We have 20 rater models for low and high noise for Patch Camelyon.\\n\",\n        \"# For medium noise, we have 19 rater models.\\n\",\n        \"num_raters = 19 if noise_level == 'medium' else 20\\n\",\n        \"\\n\",\n        \"directory = os.path.join(root_dir, task_name, noise_level, split) + '*'\\n\",\n        \"raw_image_dataset = tf.data.TFRecordDataset(tf.io.gfile.glob(directory))\\n\",\n        \"\\n\",\n        \"# Create a dictionary describing the features.\\n\",\n        \"image_feature_description = {\\n\",\n        \"    # the raw image\\n\",\n        \"    'image': tf.io.FixedLenFeature([], tf.string),\\n\",\n        \"    # the clean label, value in {0, 1}\\n\",\n        \"    'label': tf.io.FixedLenFeature([1], tf.int64),\\n\",\n        \"    # noisy labels from all the raters\\n\",\n        \"    'noisy_labels': tf.io.FixedLenFeature([num_raters], tf.int64),\\n\",\n        \"    # the IDs of rater models\\n\",\n        \"    'rater_ids': tf.io.FixedLenFeature([num_raters], tf.string),\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"def _parse_image_function(example_proto):\\n\",\n        \"  # Parse the input tf.train.Example proto using the dictionary above.\\n\",\n        \"  return tf.io.parse_single_example(example_proto, image_feature_description)\\n\",\n        \"\\n\",\n        \"parsed_image_dataset = raw_image_dataset.map(_parse_image_function)\\n\",\n        \"\\n\",\n        \"for features in parsed_image_dataset.take(1):\\n\",\n        \"  # Check the IDs of the rater models. The rater IDs are the same for all the\\n\",\n        \"  # examples in the dataset.\\n\",\n        \"  rater_ids = features['rater_ids']\\n\",\n        \"  rater_id_string = [r.numpy().decode('utf-8') for r in rater_ids]\\n\",\n        \"  print('The IDs of the rater models for this dataset are:')\\n\",\n        \"  print(rater_id_string)\\n\",\n        \"  clean_label = features['label'].numpy()\\n\",\n        \"  print('The clean label for the following example is %d' % clean_label)\\n\",\n        \"  noisy_labels = features['noisy_labels'].numpy()\\n\",\n        \"  print('The noisy labels from the rater models are:')\\n\",\n        \"  print(noisy_labels)\\n\",\n        \"  image = tf.io.decode_png(features['image'])\\n\",\n        \"  plt.imshow(image)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"CLYyqNIOsV4N\"\n      },\n      \"source\": [\n        \"**Cats vs Dogs noisy label datasets**\\n\",\n        \"\\n\",\n        \"**Download size**\\n\",\n        \"*   2.4MB for each of the low, medium, and high noise datasets.\\n\",\n        \"\\n\",\n        \"**Number of examples**\\n\",\n        \"*   train: 9302, valid: 1184, for each of the low, medium, and high noise datasets.\\n\",\n        \"\\n\",\n        \"Both the train and valid splits are subsampled from the original Cats vs Dogs dataset.\\n\",\n        \"\\n\",\n        \"**Data features**\\n\",\n        \"*   \\\"noisy_labels\\\": the noisy label given by rater models, a list of 10 tf.int64 integers. Label 0 for cats, 1 for dogs.\\n\",\n        \"*   \\\"rater_ids\\\": the ID of the rater models, a list of 10 tf.string.\\n\",\n        \"*   \\\"image/filename\\\": the filename of the image, corresponding to the filename in the original Cats vs Dogs dataset, tf.string.\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"**Rater features**\\n\",\n        \"*   model_name: name of the model\\n\",\n        \"*   accuracy: accuracy of the rater model on the rater validation set\\n\",\n        \"*   loss: loss of the rater model on the rater validation set\\n\",\n        \"*   mAP: the mean average precision of the rater model on the rater validation set\\n\",\n        \"*   auc_PR: the area under curve--precision recall of the rater model on the rater validation set\\n\",\n        \"*   auc_ROC: the area under curve--ROC of the rater model on the rater validation set\\n\",\n        \"*   experience: the total number of data that the rater model has seen during training\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"GmZ44wRJsnhR\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title An example for loading Cats vs Dongs noisy label datasets\\n\",\n        \"task_name = 'cats_vs_dogs'\\n\",\n        \"\\n\",\n        \"# One of ['low', 'medium', 'high']\\n\",\n        \"noise_level = 'medium'\\n\",\n        \"\\n\",\n        \"# One of ['train', 'valid']. The `valid` split should be used for\\n\",\n        \"# hyperparameter tuning. The model should be tested on the original test\\n\",\n        \"# slipt for these tasks.\\n\",\n        \"split = 'train'\\n\",\n        \"\\n\",\n        \"# We have 10 rater models for Cats vs Dogs.\\n\",\n        \"num_raters = 10\\n\",\n        \"\\n\",\n        \"directory = os.path.join(root_dir, task_name, noise_level, split) + '*'\\n\",\n        \"raw_image_dataset = tf.data.TFRecordDataset(tf.io.gfile.glob(directory))\\n\",\n        \"\\n\",\n        \"# Create a dictionary describing the features.\\n\",\n        \"image_feature_description = {\\n\",\n        \"    # noisy labels from all the raters\\n\",\n        \"    'noisy_labels': tf.io.FixedLenFeature([num_raters], tf.int64),\\n\",\n        \"    # the IDs of rater models\\n\",\n        \"    'rater_ids': tf.io.FixedLenFeature([num_raters], tf.string),\\n\",\n        \"    # filename of the image\\n\",\n        \"    'image/filename': tf.io.FixedLenFeature([1], tf.string),\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"def _parse_image_function(example_proto):\\n\",\n        \"  # Parse the input tf.train.Example proto using the dictionary above.\\n\",\n        \"  return tf.io.parse_single_example(example_proto, image_feature_description)\\n\",\n        \"\\n\",\n        \"parsed_image_dataset = raw_image_dataset.map(_parse_image_function)\\n\",\n        \"\\n\",\n        \"for features in parsed_image_dataset.take(1):\\n\",\n        \"  # Check the IDs of the rater models. The rater IDs are the same for all the\\n\",\n        \"  # examples in the dataset.\\n\",\n        \"  rater_ids = features['rater_ids']\\n\",\n        \"  rater_id_string = [r.numpy().decode('utf-8') for r in rater_ids]\\n\",\n        \"  print('The IDs of the rater models for this dataset are:')\\n\",\n        \"  print(rater_id_string)\\n\",\n        \"  print('Image filename:')\\n\",\n        \"  print(features['image/filename'][0].numpy().decode('utf-8'))\\n\",\n        \"  noisy_labels = features['noisy_labels'].numpy()\\n\",\n        \"  print('The noisy labels from the rater models are:')\\n\",\n        \"  print(noisy_labels)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"6AO3XJnrQPeY\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title An example for loading rater features\\n\",\n        \"for task_name in ['cifar10', 'cifar100', 'patch_camelyon', 'cats_vs_dogs']:\\n\",\n        \"  for noise_level in ['low', 'medium', 'high']:\\n\",\n        \"    dir = os.path.join(root_dir, task_name, noise_level, 'rater_features.json')\\n\",\n        \"    with tf.io.gfile.GFile(dir, 'rb') as fj:\\n\",\n        \"      rater_features_dict = json.load(fj)\\n\",\n        \"    print(rater_features_dict)\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"last_runtime\": {\n        \"build_target\": \"//learning/deepmind/dm_python:dm_notebook3\",\n        \"kind\": \"private\"\n      },\n      \"name\": \"noisy_label_datasets_and_rater_features.ipynb\",\n      \"private_outputs\": true,\n      \"provenance\": [\n        {\n          \"file_id\": \"1zhPgvKIniqkpiY2SEnAdmiatJ__WyBz2\",\n          \"timestamp\": 1621924313986\n        }\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    },\n    \"language_info\": {\n      \"name\": \"python\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "nowcasting/Open_sourced_dataset_and_model_snapshot_for_precipitation_nowcasting.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"wFD0zFFyuHzH\"\n      },\n      \"source\": [\n        \"# Open-sourced dataset and model snapshot for precipitation nowcasting, accompanying the paper *Skillful Precipitation Nowcasting using Deep Generative Models of Radar, Ravuri et al. 2021.*\\n\",\n        \"\\n\",\n        \"This colab contains:\\n\",\n        \"* Code to read the dataset using [Tensorflow 2](https://www.tensorflow.org/), with documentation of the available splits, variants and fields\\n\",\n        \"* Example plots and animations of the data using [matplotlib](https://matplotlib.org/) and [cartopy](https://scitools.org.uk/cartopy/docs/latest/)\\n\",\n        \"* A [TF-Hub](https://www.tensorflow.org/hub) snapshot of the model from the paper\\n\",\n        \"* Example code to load this model and use it to make predictions.\\n\",\n        \"\\n\",\n        \"It has been tested in a public Google colab kernel.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"d-H23Kuo7YM0\"\n      },\n      \"source\": [\n        \"## How to run this notebook\\n\",\n        \"\\n\",\n        \"All sections with the exception of 'Making predictions on a row from the full-frame test set (1536x1280)' can be evaluated on a free public Colab kernel. The final section requires more RAM than is available with a free kernel. To evaluate these cells you can either run your own local kernel (with \\u003e= 24GB of RAM), or upgrade to Colab Pro.\\n\",\n        \"\\n\",\n        \"To launch a local colab kernel, please follow these [instructions](https://research.google.com/colaboratory/local-runtimes.html).\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"7V0C4sb4MEhx\"\n      },\n      \"source\": [\n        \"## License and attribution\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"N2SmJ8joMQ7G\"\n      },\n      \"source\": [\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software distributed\\n\",\n        \"under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR\\n\",\n        \"CONDITIONS OF ANY KIND, either express or implied. See the License for the\\n\",\n        \"specific language governing permissions and limitations under the License.\\n\",\n        \"\\n\",\n        \"The datasets and the model snapshots associated with this colab are made available for use under the terms of the\\n\",\n        \"[Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/).\\n\",\n        \"\\n\",\n        \"This colab and the associated model snapshots are Copyright 2021 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"The associated datasets contain public sector information licensed by the [Met Office](https://www.metoffice.gov.uk/) under the\\n\",\n        \"[UK Open Government Licence v3.0](http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3).\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"EE0_Q3CXv_wH\"\n      },\n      \"source\": [\n        \"## Library dependency installs and imports\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"2AVIRsf0gcMd\"\n      },\n      \"source\": [\n        \"The following libraries are required. You can skip these `pip install` cells if your kernel already has them installed.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"vfV8LIhQgeFU\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!pip -q install tensorflow~=2.5.0 numpy~=1.19.5 matplotlib~=3.2.2 tensorflow_hub~=0.12.0 cartopy~=0.19.0\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"qNvCVcQYitBK\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Workaround for cartopy crashes due to the shapely installed by default in\\n\",\n        \"# google colab kernel (https://github.com/anitagraser/movingpandas/issues/81):\\n\",\n        \"!pip uninstall -y shapely\\n\",\n        \"!pip install shapely --no-binary shapely\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"rxRQBC3vjGNM\"\n      },\n      \"source\": [\n        \"## Imports:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"z_mTZ79PIw3j\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"import datetime\\n\",\n        \"import os\\n\",\n        \"\\n\",\n        \"import cartopy\\n\",\n        \"import matplotlib\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"from matplotlib import animation\\n\",\n        \"import numpy as np\\n\",\n        \"import shapely.geometry as sgeom\\n\",\n        \"import tensorflow as tf\\n\",\n        \"import tensorflow_hub\\n\",\n        \"\\n\",\n        \"from google.colab import auth\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"lcndQrFmjPuT\"\n      },\n      \"source\": [\n        \"## Dataset location\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"htgPqZQMJ3hZ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# This Google Cloud Storage (GCS) bucket is free to access and contains an\\n\",\n        \"# example subset of the full dataset (just the first shard of each\\n\",\n        \"# split/variant):\\n\",\n        \"EXAMPLE_DATASET_BUCKET_PATH = \\\"gs://dm-nowcasting-example-data/datasets/nowcasting_open_source_osgb/nimrod_osgb_1000m_yearly_splits/radar/20200718\\\"\\n\",\n        \"\\n\",\n        \"# This bucket is requester-pays and will require authentication. It contains the\\n\",\n        \"# full dataset. We recommend downloading a local copy first and updating\\n\",\n        \"# ROOT_DATASET_DIR below to the local path. This should save on transfer costs\\n\",\n        \"# and speed up training.\\n\",\n        \"FULL_DATASET_BUCKET_PATH = \\\"gs://dm-nowcasting/datasets/nowcasting_open_source_osgb/nimrod_osgb_1000m_yearly_splits/radar/20200718\\\"\\n\",\n        \"\\n\",\n        \"# Update this as required:\\n\",\n        \"DATASET_ROOT_DIR = EXAMPLE_DATASET_BUCKET_PATH\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"i3JWo990gxN8\"\n      },\n      \"source\": [\n        \"Use this to authenticate as required for access to GCS buckets:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"-kxuWoPmg_fs\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"auth.authenticate_user()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"t4C0NDbfT0t9\"\n      },\n      \"source\": [\n        \"## Dataset reader code\\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"kKn1BcQuJsKd\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"_FEATURES = {name: tf.io.FixedLenFeature([], dtype)\\n\",\n        \"             for name, dtype in [\\n\",\n        \"               (\\\"radar\\\", tf.string), (\\\"sample_prob\\\", tf.float32),\\n\",\n        \"               (\\\"osgb_extent_top\\\", tf.int64), (\\\"osgb_extent_left\\\", tf.int64),\\n\",\n        \"               (\\\"osgb_extent_bottom\\\", tf.int64), (\\\"osgb_extent_right\\\", tf.int64),\\n\",\n        \"               (\\\"end_time_timestamp\\\", tf.int64),\\n\",\n        \"             ]}\\n\",\n        \"\\n\",\n        \"_SHAPE_BY_SPLIT_VARIANT = {\\n\",\n        \"    (\\\"train\\\", \\\"random_crops_256\\\"): (24, 256, 256, 1),\\n\",\n        \"    (\\\"valid\\\", \\\"subsampled_tiles_256_20min_stride\\\"): (24, 256, 256, 1),\\n\",\n        \"    (\\\"test\\\", \\\"full_frame_20min_stride\\\"): (24, 1536, 1280, 1),\\n\",\n        \"    (\\\"test\\\", \\\"subsampled_overlapping_padded_tiles_512_20min_stride\\\"): (24, 512, 512, 1),\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"_MM_PER_HOUR_INCREMENT = 1/32.\\n\",\n        \"_MAX_MM_PER_HOUR = 128.\\n\",\n        \"_INT16_MASK_VALUE = -1\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def parse_and_preprocess_row(row, split, variant):\\n\",\n        \"  result = tf.io.parse_example(row, _FEATURES)\\n\",\n        \"  shape = _SHAPE_BY_SPLIT_VARIANT[(split, variant)]\\n\",\n        \"  radar_bytes = result.pop(\\\"radar\\\")\\n\",\n        \"  radar_int16 = tf.reshape(tf.io.decode_raw(radar_bytes, tf.int16), shape)\\n\",\n        \"  mask = tf.not_equal(radar_int16, _INT16_MASK_VALUE)\\n\",\n        \"  radar = tf.cast(radar_int16, tf.float32) * _MM_PER_HOUR_INCREMENT\\n\",\n        \"  radar = tf.clip_by_value(\\n\",\n        \"      radar, _INT16_MASK_VALUE * _MM_PER_HOUR_INCREMENT, _MAX_MM_PER_HOUR)\\n\",\n        \"  result[\\\"radar_frames\\\"] = radar\\n\",\n        \"  result[\\\"radar_mask\\\"] = mask\\n\",\n        \"  return result\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def reader(split=\\\"train\\\", variant=\\\"random_crops_256\\\", shuffle_files=False):\\n\",\n        \"  \\\"\\\"\\\"Reader for open-source nowcasting datasets.\\n\",\n        \"  \\n\",\n        \"  Args:\\n\",\n        \"    split: Which yearly split of the dataset to use:\\n\",\n        \"      \\\"train\\\": Data from 2016 - 2018, excluding the first day of each month.\\n\",\n        \"      \\\"valid\\\": Data from 2016 - 2018, only the first day of the month.\\n\",\n        \"      \\\"test\\\": Data from 2019.\\n\",\n        \"    variant: Which variant to use. The available variants depend on the split:\\n\",\n        \"      \\\"random_crops_256\\\": Available for the training split. 24x256x256 pixel\\n\",\n        \"        crops, sampled with a bias towards crops containing rainfall. Crops at\\n\",\n        \"        all spatial and temporal offsets were able to be sampled, some crops may\\n\",\n        \"        overlap.\\n\",\n        \"      \\\"subsampled_tiles_256_20min_stride\\\": Available for the validation set.\\n\",\n        \"        Non-spatially-overlapping 24x256x256 pixel crops, subsampled from a\\n\",\n        \"        regular spatial grid with stride 256x256 pixels, and a temporal stride\\n\",\n        \"        of 20mins (4 timesteps at 5 minute resolution). Sampling favours crops\\n\",\n        \"        containing rainfall.\\n\",\n        \"      \\\"subsampled_overlapping_padded_tiles_512_20min_stride\\\": Available for the\\n\",\n        \"        test set. Overlapping 24x512x512 pixel crops, subsampled from a\\n\",\n        \"        regular spatial grid with stride 64x64 pixels, and a temporal stride\\n\",\n        \"        of 20mins (4 timesteps at 5 minute resolution). Subsampling favours\\n\",\n        \"        crops containing rainfall.\\n\",\n        \"        These crops include extra spatial context for a fairer evaluation of\\n\",\n        \"        the PySTEPS baseline, which benefits from this extra context. Our other\\n\",\n        \"        models only use the central 256x256 pixels of these crops.\\n\",\n        \"      \\\"full_frame_20min_stride\\\": Available for the test set. Includes full\\n\",\n        \"        frames at 24x1536x1280 pixels, every 20 minutes with no additional\\n\",\n        \"        subsampling.\\n\",\n        \"    shuffle_files: Whether to shuffle the shard files of the dataset\\n\",\n        \"      non-deterministically before interleaving them. Recommended for the\\n\",\n        \"      training set to improve mixing and read performance (since\\n\",\n        \"      non-deterministic parallel interleave is then enabled).\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    A tf.data.Dataset whose rows are dicts with the following keys:\\n\",\n        \"\\n\",\n        \"    \\\"radar_frames\\\": Shape TxHxWx1, float32. Radar-based estimates of\\n\",\n        \"      ground-level precipitation, in units of mm/hr. Pixels which are masked\\n\",\n        \"      will take on a value of -1/32 and should be excluded from use as\\n\",\n        \"      evaluation targets. The coordinate reference system used is OSGB36, with\\n\",\n        \"      a spatial resolution of 1000 OSGB36 coordinate units (approximately equal\\n\",\n        \"      to 1km). The temporal resolution is 5 minutes.\\n\",\n        \"    \\\"radar_mask\\\": Shape TxHxWx1, bool. A binary mask which is False\\n\",\n        \"      for pixels that are unobserved / unable to be inferred from radar\\n\",\n        \"      measurements (e.g. due to being too far from a radar site). This mask\\n\",\n        \"      is usually static over time, but occasionally a whole radar site will\\n\",\n        \"      drop in or out resulting in large changes to the mask, and more localised\\n\",\n        \"      changes can happen too. \\n\",\n        \"    \\\"sample_prob\\\": Scalar float. The probability with which the row was\\n\",\n        \"      sampled from the overall pool available for sampling, as described above\\n\",\n        \"      under 'variants'. We use importance weights proportional to 1/sample_prob\\n\",\n        \"      when computing metrics on the validation and test set, to reduce bias due\\n\",\n        \"      to the subsampling.\\n\",\n        \"    \\\"end_time_timestamp\\\": Scalar int64. A timestamp for the final frame in\\n\",\n        \"      the example, in seconds since the UNIX epoch (1970-01-01 00:00:00 UTC).\\n\",\n        \"    \\\"osgb_extent_left\\\", \\\"osgb_extent_right\\\", \\\"osgb_extent_top\\\",\\n\",\n        \"    \\\"osgb_extent_bottom\\\":\\n\",\n        \"      Scalar int64s. Spatial extent for the crop in the OSGB36 coordinate\\n\",\n        \"      reference system.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  shards_glob = os.path.join(DATASET_ROOT_DIR, split, variant, \\\"*.tfrecord.gz\\\")\\n\",\n        \"  shard_paths = tf.io.gfile.glob(shards_glob)\\n\",\n        \"  shards_dataset = tf.data.Dataset.from_tensor_slices(shard_paths)\\n\",\n        \"  if shuffle_files:\\n\",\n        \"    shards_dataset = shards_dataset.shuffle(buffer_size=len(shard_paths))\\n\",\n        \"  return (\\n\",\n        \"      shards_dataset\\n\",\n        \"      .interleave(lambda x: tf.data.TFRecordDataset(x, compression_type=\\\"GZIP\\\"),\\n\",\n        \"                  num_parallel_calls=tf.data.AUTOTUNE,\\n\",\n        \"                  deterministic=not shuffle_files)\\n\",\n        \"      .map(lambda row: parse_and_preprocess_row(row, split, variant),\\n\",\n        \"           num_parallel_calls=tf.data.AUTOTUNE)\\n\",\n        \"      # Do your own subsequent repeat, shuffle, batch, prefetch etc as required.\\n\",\n        \"  )\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"iiC7oGKRlNaj\"\n      },\n      \"source\": [\n        \"## Dataset reader documentation\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"id\": \"amkOoDKqlEll\",\n        \"outputId\": \"3141d2cd-fe88-452a-c9f8-c6b2eb449068\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Help on function reader in module __main__:\\n\",\n            \"\\n\",\n            \"reader(split='train', variant='random_crops_256', shuffle_files=False)\\n\",\n            \"    Reader for open-source nowcasting datasets.\\n\",\n            \"    \\n\",\n            \"    Args:\\n\",\n            \"      split: Which yearly split of the dataset to use:\\n\",\n            \"        \\\"train\\\": Data from 2016 - 2018, excluding the first day of each month.\\n\",\n            \"        \\\"valid\\\": Data from 2016 - 2018, only the first day of the month.\\n\",\n            \"        \\\"test\\\": Data from 2019.\\n\",\n            \"      variant: Which variant to use. The available variants depend on the split:\\n\",\n            \"        \\\"random_crops_256\\\": Available for the training split. 24x256x256 pixel\\n\",\n            \"          crops, sampled with a bias towards crops containing rainfall. Crops at\\n\",\n            \"          all spatial and temporal offsets were able to be sampled, some crops may\\n\",\n            \"          overlap.\\n\",\n            \"        \\\"subsampled_tiles_256_20min_stride\\\": Available for the validation set.\\n\",\n            \"          Non-spatially-overlapping 24x256x256 pixel crops, subsampled from a\\n\",\n            \"          regular spatial grid with stride 256x256 pixels, and a temporal stride\\n\",\n            \"          of 20mins (4 timesteps at 5 minute resolution). Sampling favours crops\\n\",\n            \"          containing rainfall.\\n\",\n            \"        \\\"subsampled_overlapping_padded_tiles_512_20min_stride\\\": Available for the\\n\",\n            \"          test set. Overlapping 24x512x512 pixel crops, subsampled from a\\n\",\n            \"          regular spatial grid with stride 64x64 pixels, and a temporal stride\\n\",\n            \"          of 20mins (4 timesteps at 5 minute resolution). Subsampling favours\\n\",\n            \"          crops containing rainfall.\\n\",\n            \"          These crops include extra spatial context for a fairer evaluation of\\n\",\n            \"          the PySTEPS baseline, which benefits from this extra context. Our other\\n\",\n            \"          models only use the central 256x256 pixels of these crops.\\n\",\n            \"        \\\"full_frame_20min_stride\\\": Available for the test set. Includes full\\n\",\n            \"          frames at 24x1536x1280 pixels, every 20 minutes with no additional\\n\",\n            \"          subsampling.\\n\",\n            \"      shuffle_files: Whether to shuffle the shard files of the dataset\\n\",\n            \"        non-deterministically before interleaving them. Recommended for the\\n\",\n            \"        training set to improve mixing and read performance (since\\n\",\n            \"        non-deterministic parallel interleave is then enabled).\\n\",\n            \"    \\n\",\n            \"    Returns:\\n\",\n            \"      A tf.data.Dataset whose rows are dicts with the following keys:\\n\",\n            \"    \\n\",\n            \"      \\\"radar_frames\\\": Shape TxHxWx1, float32. Radar-based estimates of\\n\",\n            \"        ground-level precipitation, in units of mm/hr. Pixels which are masked\\n\",\n            \"        will take on a value of -1/32 and should be excluded from use as\\n\",\n            \"        evaluation targets. The coordinate reference system used is OSGB36, with\\n\",\n            \"        a spatial resolution of 1000 OSGB36 coordinate units (approximately equal\\n\",\n            \"        to 1km). The temporal resolution is 5 minutes.\\n\",\n            \"      \\\"radar_mask\\\": Shape TxHxWx1, bool. A binary mask which is False\\n\",\n            \"        for pixels that are unobserved / unable to be inferred from radar\\n\",\n            \"        measurements (e.g. due to being too far from a radar site). This mask\\n\",\n            \"        is usually static over time, but occasionally a whole radar site will\\n\",\n            \"        drop in or out resulting in large changes to the mask, and more localised\\n\",\n            \"        changes can happen too. \\n\",\n            \"      \\\"sample_prob\\\": Scalar float. The probability with which the row was\\n\",\n            \"        sampled from the overall pool available for sampling, as described above\\n\",\n            \"        under 'variants'. We use importance weights proportional to 1/sample_prob\\n\",\n            \"        when computing metrics on the validation and test set, to reduce bias due\\n\",\n            \"        to the subsampling.\\n\",\n            \"      \\\"end_time_timestamp\\\": Scalar int64. A timestamp for the final frame in\\n\",\n            \"        the example, in seconds since the UNIX epoch (1970-01-01 00:00:00 UTC).\\n\",\n            \"      \\\"osgb_extent_left\\\", \\\"osgb_extent_right\\\", \\\"osgb_extent_top\\\",\\n\",\n            \"      \\\"osgb_extent_bottom\\\":\\n\",\n            \"        Scalar int64s. Spatial extent for the crop in the OSGB36 coordinate\\n\",\n            \"        reference system.\\n\",\n            \"\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"help(reader)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"QqZfqhvoTImW\"\n      },\n      \"source\": [\n        \"## Reading a row from the training set and inspecting types/shapes/values\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"r3YPkBVWX6_q\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"row = next(iter(reader(split=\\\"train\\\", variant=\\\"random_crops_256\\\")))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Z__EMLrRX_Oc\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"{k: (v.dtype, v.shape) for k, v in row.items()}\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"byuVVcSnXz4q\"\n      },\n      \"source\": [\n        \"Values for scalar features:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\"\n        },\n        \"id\": \"2i8X9KYXXtJi\",\n        \"outputId\": \"5b8a8980-f891-467d-994e-ccb28d9f1a16\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"text/plain\": [\n              \"{'end_time_timestamp': 1514725200,\\n\",\n              \" 'osgb_extent_bottom': 555000,\\n\",\n              \" 'osgb_extent_left': -9000,\\n\",\n              \" 'osgb_extent_right': 247000,\\n\",\n              \" 'osgb_extent_top': 811000,\\n\",\n              \" 'sample_prob': 9.889281e-06}\"\n            ]\n          },\n          \"execution_count\": 10,\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"execute_result\"\n        }\n      ],\n      \"source\": [\n        \"{k: v.numpy() for k, v in row.items() if v.shape.ndims == 0}\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"10_lz7FYZ6sl\"\n      },\n      \"source\": [\n        \"Decoding the end_time_timestamp:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 35\n        },\n        \"id\": \"WtAV24gyZ5jL\",\n        \"outputId\": \"cf8628ed-b6eb-4754-cce8-f1ff8bad14bf\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"application/vnd.google.colaboratory.intrinsic+json\": {\n              \"type\": \"string\"\n            },\n            \"text/plain\": [\n              \"'2017-12-31T13:00:00'\"\n            ]\n          },\n          \"execution_count\": 11,\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"execute_result\"\n        }\n      ],\n      \"source\": [\n        \"datetime.datetime.utcfromtimestamp(row[\\\"end_time_timestamp\\\"]).isoformat()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"e4HPIMX1VV5-\"\n      },\n      \"source\": [\n        \"## Visualization helpers\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"ieLdf614RxTu\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"matplotlib.rc('animation', html='jshtml')\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def plot_animation(field, figsize=None,\\n\",\n        \"                   vmin=0, vmax=10, cmap=\\\"jet\\\", **imshow_args):\\n\",\n        \"  fig = plt.figure(figsize=figsize)\\n\",\n        \"  ax = plt.axes()\\n\",\n        \"  ax.set_axis_off()\\n\",\n        \"  plt.close() # Prevents extra axes being plotted below animation\\n\",\n        \"  img = ax.imshow(field[0, ..., 0], vmin=vmin, vmax=vmax, cmap=cmap, **imshow_args)\\n\",\n        \"\\n\",\n        \"  def animate(i):\\n\",\n        \"    img.set_data(field[i, ..., 0])\\n\",\n        \"    return (img,)\\n\",\n        \"\\n\",\n        \"  return animation.FuncAnimation(\\n\",\n        \"      fig, animate, frames=field.shape[0], interval=24, blit=False)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class ExtendedOSGB(cartopy.crs.OSGB):\\n\",\n        \"  \\\"\\\"\\\"MET office radar data uses OSGB36 with an extended bounding box.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self):\\n\",\n        \"    super().__init__(approx=False)\\n\",\n        \"\\n\",\n        \"  @property\\n\",\n        \"  def x_limits(self):\\n\",\n        \"    return (-405000, 1320000)\\n\",\n        \"\\n\",\n        \"  @property\\n\",\n        \"  def y_limits(self):\\n\",\n        \"    return (-625000, 1550000)\\n\",\n        \"\\n\",\n        \"  @property\\n\",\n        \"  def boundary(self):\\n\",\n        \"    x0, x1 = self.x_limits\\n\",\n        \"    y0, y1 = self.y_limits\\n\",\n        \"    return sgeom.LinearRing([(x0, y0), (x0, y1), (x1, y1), (x1, y0), (x0, y0)])\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def plot_rows_on_map(rows, field_name=\\\"radar_frames\\\", timestep=0, num_rows=None,\\n\",\n        \"                     cbar_label=None, **imshow_kwargs):\\n\",\n        \"  fig = plt.figure(figsize=(10, 10))\\n\",\n        \"  axes = fig.add_subplot(1, 1, 1, projection=ExtendedOSGB())\\n\",\n        \"  if num_rows is None:\\n\",\n        \"    num_rows = next(iter(rows.values())).shape[0]\\n\",\n        \"  for b in range(num_rows):\\n\",\n        \"    extent = (rows[\\\"osgb_extent_left\\\"][b].numpy(),\\n\",\n        \"              rows[\\\"osgb_extent_right\\\"][b].numpy(),\\n\",\n        \"              rows[\\\"osgb_extent_bottom\\\"][b].numpy(),\\n\",\n        \"              rows[\\\"osgb_extent_top\\\"][b].numpy())\\n\",\n        \"    im = axes.imshow(rows[field_name][b, timestep, ..., 0].numpy(),\\n\",\n        \"                extent=extent, **imshow_kwargs)\\n\",\n        \"\\n\",\n        \"  axes.set_xlim(*axes.projection.x_limits)\\n\",\n        \"  axes.set_ylim(*axes.projection.y_limits)\\n\",\n        \"  axes.set_facecolor(\\\"black\\\")\\n\",\n        \"  axes.gridlines(alpha=0.5)\\n\",\n        \"  axes.coastlines(resolution=\\\"50m\\\", color=\\\"white\\\")\\n\",\n        \"  if cbar_label:\\n\",\n        \"    cbar = fig.colorbar(im)\\n\",\n        \"    cbar.set_label(cbar_label)\\n\",\n        \"  return fig\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def plot_animation_on_map(row):\\n\",\n        \"  fig = plt.figure(figsize=(10, 10))\\n\",\n        \"  axes = fig.add_subplot(1, 1, 1, projection=ExtendedOSGB())\\n\",\n        \"  plt.close() # Prevents extra axes being plotted below animation\\n\",\n        \"\\n\",\n        \"  axes.gridlines(alpha=0.5)\\n\",\n        \"  axes.coastlines(resolution=\\\"50m\\\", color=\\\"white\\\")\\n\",\n        \"\\n\",\n        \"  extent = (row[\\\"osgb_extent_left\\\"].numpy(),\\n\",\n        \"            row[\\\"osgb_extent_right\\\"].numpy(),\\n\",\n        \"            row[\\\"osgb_extent_bottom\\\"].numpy(),\\n\",\n        \"            row[\\\"osgb_extent_top\\\"].numpy())\\n\",\n        \"\\n\",\n        \"  img = axes.imshow(\\n\",\n        \"      row[\\\"radar_frames\\\"][0, ..., 0].numpy(),\\n\",\n        \"      extent=extent, vmin=0, vmax=15., cmap=\\\"jet\\\")\\n\",\n        \"\\n\",\n        \"  cbar = fig.colorbar(img)\\n\",\n        \"  cbar.set_label(\\\"Precipitation, mm/hr\\\")\\n\",\n        \"\\n\",\n        \"  def animate(i):\\n\",\n        \"    return img.set_data(row[\\\"radar_frames\\\"][i, ..., 0].numpy()),\\n\",\n        \"\\n\",\n        \"  return animation.FuncAnimation(\\n\",\n        \"      fig, animate, frames=row[\\\"radar_frames\\\"].shape[0],\\n\",\n        \"      interval=24, blit=False)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def plot_mask_on_map(row):\\n\",\n        \"  fig = plt.figure(figsize=(10, 10))\\n\",\n        \"  axes = fig.add_subplot(1, 1, 1, projection=ExtendedOSGB())\\n\",\n        \"  axes.gridlines(alpha=0.5)\\n\",\n        \"  axes.coastlines(resolution=\\\"50m\\\", color=\\\"black\\\")\\n\",\n        \"\\n\",\n        \"  extent = (row[\\\"osgb_extent_left\\\"].numpy(),\\n\",\n        \"            row[\\\"osgb_extent_right\\\"].numpy(),\\n\",\n        \"            row[\\\"osgb_extent_bottom\\\"].numpy(),\\n\",\n        \"            row[\\\"osgb_extent_top\\\"].numpy())\\n\",\n        \"\\n\",\n        \"  img = axes.imshow(\\n\",\n        \"      row[\\\"radar_mask\\\"][0, ..., 0].numpy(),\\n\",\n        \"      extent=extent, vmin=0, vmax=1, cmap=\\\"viridis\\\")\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ZrfahN2wZS_G\"\n      },\n      \"source\": [\n        \"## Visualizing rows\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"pn6C9qi4ZcYl\"\n      },\n      \"source\": [\n        \"Animation of a single row from the random_crops_256 training set (sequence of 24 frames at 256x256)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"J4_aB6vbXB0A\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"plot_animation(row[\\\"radar_frames\\\"].numpy())\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"fsDrJOCwZtZv\"\n      },\n      \"source\": [\n        \"And its mask. This may not always be interesting, sometimes it will be all ones. I only plot the first frame as this is usually static over time.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"LtqAPI2utIDJ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"plt.imshow(row[\\\"radar_mask\\\"][0, ..., 0].numpy(), vmin=0, vmax=1);\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"jKalHlONmmTF\"\n      },\n      \"source\": [\n        \"Plotting an animation of a row from the full-frame test set\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"gBZWTLFEbbal\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"dataset = reader(split=\\\"test\\\", variant=\\\"full_frame_20min_stride\\\")\\n\",\n        \"full_frame_test_set_row = next(iter(dataset))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"qUTqwhC0gmIm\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"plot_animation_on_map(full_frame_test_set_row)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"6Go5BVATqVwd\"\n      },\n      \"source\": [\n        \"And just its mask:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"T7cgRtRilKfv\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"plot_mask_on_map(full_frame_test_set_row)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"KtXg3lJxa1_q\"\n      },\n      \"source\": [\n        \"Plotting a few different crops from the training set on the same map, using their OSGB extents. Note these will have been sampled at different timestamps so won't be consistent with each other. \"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"x7HXOz7PfdtH\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"BATCH_SIZE = 60\\n\",\n        \"dataset = reader(split=\\\"train\\\", variant=\\\"random_crops_256\\\")\\n\",\n        \"rows = next(iter(dataset.batch(BATCH_SIZE)))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"76plhdrhaz60\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"plot_rows_on_map(rows, field_name=\\\"radar_frames\\\", num_rows=10, vmin=0, vmax=15.,\\n\",\n        \"                 cmap=\\\"jet\\\", cbar_label=\\\"Precipitation, mm/hr\\\");\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"YwliM5nOaivq\"\n      },\n      \"source\": [\n        \"And plotting their masks, which will be more consistent with each other since they change less frequently.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"rDUNaca0yXrC\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"plot_rows_on_map(rows, field_name=\\\"radar_mask\\\", vmin=0, vmax=1, alpha=0.5, cmap=\\\"spring\\\");\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"-KxxSOvwsUaP\"\n      },\n      \"source\": [\n        \"## Making predictions using model loaded from TF-Hub snapshots\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"IvWq8_4uvRBb\"\n      },\n      \"source\": [\n        \"Location of snapshots:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"GZfhJ2orvWCV\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"TFHUB_BASE_PATH = \\\"gs://dm-nowcasting-example-data/tfhub_snapshots\\\"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"aFLv08o5vX7y\"\n      },\n      \"source\": [\n        \"### Helper code for loading snapshots and making predictions with them\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"zOFI9xQztNIW\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def load_module(input_height, input_width):\\n\",\n        \"  \\\"\\\"\\\"Load a TF-Hub snapshot of the 'Generative Method' model.\\\"\\\"\\\"\\n\",\n        \"  hub_module = tensorflow_hub.load(\\n\",\n        \"      os.path.join(TFHUB_BASE_PATH, f\\\"{input_height}x{input_width}\\\"))\\n\",\n        \"  # Note this has loaded a legacy TF1 model for running under TF2 eager mode.\\n\",\n        \"  # This means we need to access the module via the \\\"signatures\\\" attribute. See\\n\",\n        \"  # https://github.com/tensorflow/hub/blob/master/docs/migration_tf2.md#using-lower-level-apis\\n\",\n        \"  # for more information.\\n\",\n        \"  return hub_module.signatures['default']\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def predict(module, input_frames, num_samples=1,\\n\",\n        \"            include_input_frames_in_result=False):\\n\",\n        \"  \\\"\\\"\\\"Make predictions from a TF-Hub snapshot of the 'Generative Method' model.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    module: One of the raw TF-Hub modules returned by load_module above.\\n\",\n        \"    input_frames: Shape (T_in,H,W,C), where T_in = 4. Input frames to condition\\n\",\n        \"      the predictions on.\\n\",\n        \"    num_samples: The number of different samples to draw.\\n\",\n        \"    include_input_frames_in_result: If True, will return a total of 22 frames\\n\",\n        \"      along the time axis, the 4 input frames followed by 18 predicted frames.\\n\",\n        \"      Otherwise will only return the 18 predicted frames.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    A tensor of shape (num_samples,T_out,H,W,C), where T_out is either 18 or 22\\n\",\n        \"    as described above.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  input_frames = tf.math.maximum(input_frames, 0.)\\n\",\n        \"  # Add a batch dimension and tile along it to create a copy of the input for\\n\",\n        \"  # each sample:\\n\",\n        \"  input_frames = tf.expand_dims(input_frames, 0)\\n\",\n        \"  input_frames = tf.tile(input_frames, multiples=[num_samples, 1, 1, 1, 1])\\n\",\n        \"\\n\",\n        \"  # Sample the latent vector z for each sample:\\n\",\n        \"  _, input_signature = module.structured_input_signature\\n\",\n        \"  z_size = input_signature['z'].shape[1]\\n\",\n        \"  z_samples = tf.random.normal(shape=(num_samples, z_size))\\n\",\n        \"\\n\",\n        \"  inputs = {\\n\",\n        \"      \\\"z\\\": z_samples,\\n\",\n        \"      \\\"labels$onehot\\\" : tf.ones(shape=(num_samples, 1)),\\n\",\n        \"      \\\"labels$cond_frames\\\" : input_frames\\n\",\n        \"  }\\n\",\n        \"  samples = module(**inputs)['default']\\n\",\n        \"  if not include_input_frames_in_result:\\n\",\n        \"    # The module returns the input frames alongside its sampled predictions, we\\n\",\n        \"    # slice out just the predictions:\\n\",\n        \"    samples = samples[:, NUM_INPUT_FRAMES:, ...]\\n\",\n        \"\\n\",\n        \"  # Take positive values of rainfall only.\\n\",\n        \"  samples = tf.math.maximum(samples, 0.)\\n\",\n        \"  return samples\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# Fixed values supported by the snapshotted model.\\n\",\n        \"NUM_INPUT_FRAMES = 4\\n\",\n        \"NUM_TARGET_FRAMES = 18\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def extract_input_and_target_frames(radar_frames):\\n\",\n        \"  \\\"\\\"\\\"Extract input and target frames from a dataset row's radar_frames.\\\"\\\"\\\"\\n\",\n        \"  # We align our targets to the end of the window, and inputs precede targets.\\n\",\n        \"  input_frames = radar_frames[-NUM_TARGET_FRAMES-NUM_INPUT_FRAMES : -NUM_TARGET_FRAMES]\\n\",\n        \"  target_frames = radar_frames[-NUM_TARGET_FRAMES : ]\\n\",\n        \"  return input_frames, target_frames\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def horizontally_concatenate_batch(samples):\\n\",\n        \"  n, t, h, w, c = samples.shape\\n\",\n        \"  # N,T,H,W,C =\\u003e T,H,N,W,C =\\u003e T,H,N*W,C\\n\",\n        \"  return tf.reshape(tf.transpose(samples, [1, 2, 0, 3, 4]), [t, h, n*w, c])\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"YuTsqBqM1PeO\"\n      },\n      \"source\": [\n        \"### Making predictions for a row from the validation set (256x256 crops)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"kX6wgACVtcHz\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"module = load_module(256, 256)\\n\",\n        \"row = next(iter(reader(split=\\\"valid\\\", variant=\\\"subsampled_tiles_256_20min_stride\\\")))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"LKBlYh0qx7nL\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"num_samples = 5\\n\",\n        \"input_frames, target_frames = extract_input_and_target_frames(row[\\\"radar_frames\\\"])\\n\",\n        \"samples = predict(module, input_frames,\\n\",\n        \"                  num_samples=num_samples, include_input_frames_in_result=True)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"NDOh7j2g65wP\"\n      },\n      \"source\": [\n        \"We will plot an animation of 5 different samples, including the input frames first (so all 5 will start the same). You can see they end up in different places.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"_Ymu_GFBzGJd\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"plot_animation(horizontally_concatenate_batch(samples), figsize=(4*num_samples, 4))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"57uh8X2XEqqj\"\n      },\n      \"source\": [\n        \"### Making predictions on a row from the full-frame test set (1536x1280)\\n\",\n        \"\\n\",\n        \"Warning: this will require more RAM than is available in a free public colab kernel, even if you reduce num_samples to 1.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"RdnIsm725Nvk\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# This is the same model with same parameters as above; we have had to export\\n\",\n        \"# separate copies of the graph for each input size as the input size is\\n\",\n        \"# unfortunately hardcoded into the graph as static shapes.\\n\",\n        \"module = load_module(1536, 1280)\\n\",\n        \"\\n\",\n        \"full_frame_test_set_row = next(iter(\\n\",\n        \"    reader(split=\\\"test\\\", variant=\\\"full_frame_20min_stride\\\")))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"sLQdfet59caW\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"num_samples = 2\\n\",\n        \"input_frames, target_frames = extract_input_and_target_frames(\\n\",\n        \"    full_frame_test_set_row[\\\"radar_frames\\\"])\\n\",\n        \"samples = predict(module, input_frames,\\n\",\n        \"                  num_samples=num_samples, include_input_frames_in_result=True)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"K_2UwKa_E3Xo\"\n      },\n      \"source\": [\n        \"Plotting two different predicted samples following on from the input frames. The first sample:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"MytvlcaA8P4P\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"row_with_predictions = full_frame_test_set_row.copy()\\n\",\n        \"row_with_predictions[\\\"radar_frames\\\"] = samples[0]\\n\",\n        \"plot_animation_on_map(row_with_predictions)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"AznUbE6-E53h\"\n      },\n      \"source\": [\n        \"And the second sample:\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Er86IKdm-W5l\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"row_with_predictions[\\\"radar_frames\\\"] = samples[1]\\n\",\n        \"plot_animation_on_map(row_with_predictions)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"mnNy6Uurp1_k\"\n      },\n      \"source\": [\n        \"The ground truth, for comparison, was plotted earlier as an example row from the test set.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"b9v4xCWqqdzV\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [\n        \"EE0_Q3CXv_wH\",\n        \"t4C0NDbfT0t9\",\n        \"e4HPIMX1VV5-\"\n      ],\n      \"name\": \"Open-sourced dataset and model snapshot for precipitation nowcasting\",\n      \"provenance\": []\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    },\n    \"language_info\": {\n      \"name\": \"python\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "nowcasting/README.md",
    "content": "# Skillful Precipitation Nowcasting Using Deep Generative Models of Radar\n\nThis repository is a supplement to \"Skillful Precipitation Nowcasting using Deep\nGenerative Models of Radar\" and provides necessary code for loading data from a\nlarge scale nowcasting dataset and obtaining predictions with the pretrained\nmodel.\n\nPlease see the Colab notebook for further details:\n\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind-research/blob/master/nowcasting/Open_sourced_dataset_and_model_snapshot_for_precipitation_nowcasting.ipynb)\n\n## License\n\nThe Colab notebook is licensed under the Apache License, Version 2.0. The\nassociated model snapshots are made available for use under the terms of the\n[Creative Commons Attribution 4.0 International License][cc-by].\n\nThe provided post-processed nowcasting dataset is licensed under a\n[Creative Commons Attribution 4.0 International License][cc-by] and it contains\npublic sector information licensed by the Met Office under the\n[Open Government Licence v3.0][open-govt-license].\n\n## Pseudocode\nThe pseudocode is relased in the same cloud storage bucket as the datasets:\n`gs://dm-nowcasting-example-data/pseudocode.zip`.\nYou can access it with e.g. a [gsutil](https://cloud.google.com/storage/docs/gsutil).\n\n\n## Citation\n\nIf you use this work, consider citing our paper:\n\n```latex\n@article{ravuris2021skillful,\n  author={Suman Ravuri and Karel Lenc and Matthew Willson and Dmitry Kangin and Remi Lam and Piotr Mirowski and Megan Fitzsimons and Maria Athanassiadou and Sheleem Kashem and Sam Madge and Rachel Prudden Amol Mandhane and Aidan Clark and Andrew Brock and Karen Simonyan and Raia Hadsell and Niall Robinson Ellen Clancy and Alberto Arribas† and Shakir Mohamed},\n  title={Skillful Precipitation Nowcasting using Deep Generative Models of Radar},\n  journal={Nature},\n  volume={597},\n  pages={672--677},\n  year={2021}\n}\n```\n\n[cc-by]: http://creativecommons.org/licenses/by/4.0/\n[open-govt-license]: http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/\n"
  },
  {
    "path": "object_attention_for_reasoning/README.md",
    "content": "Implementation of the ALOE model\n[\"Attention over learned object embeddings enables complex visual reasoning\"](https://arxiv.org/abs/2012.08508)\n[1].\n\nThis package includes source code for the ALOE transformer model,\npre-trained model parameters for the CLEVRER task,\nand MONet [2] latent variables for all videos in the training\nand validation sets. It does not include the model training code.\nSee Section 2 of [1] for details.\n\n[1] David Ding, Felix Hill, Adam Santoro, Malcolm Reynolds, Matt Botvinick.\n*Attention over learned object embeddings enables complex visual reasoning*.\narXiv preprint arXiv:2012.08508, 2020.\n\n[2] Chris P. Burgess, Loic Matthey, Nick Watters, Rishabh Kabra, Irina Higgins,\nMatt Botvinick, and Alexander Lerchner\n*MONet: Unsupervised scene decomposition and representation*.\narXiv preprint arXiv:1901.11390, 2019.\n\n\n# Instructions\n\nNote: This code depends on Tensorflow 1 and Sonnet 1. Tensorflow 1 is only\navailable on PYPI for Python 3.7 and earlier.\n\nTo run this code, execute the following commands from the `deepmind_research/`\ndirectory:\n\n```shell\n# Download checkpoints and MONet latents\nwget https://storage.googleapis.com/object-attention-for-reasoning/checkpoints_and_latents.zip\nunzip checkpoints_and_latents.zip\npython3.7 -m venv object_based_attention_venv\nsource object_based_attention_venv/bin/activate\npip install --upgrade setuptools wheel\npip install -r requirements.txt\npython -m object_attention_for_reasoning.run_model\n```\nIf the code runs correctly, you should see the model's predicted answer to two\nCLEVRER questions (a descriptive one and a multiple choice one), and both\nanswers should be correct.\n\nIf you find the provided code useful, please cite this paper:\n```\n@article{aloe2020,\n  title={Attention over learned object embeddings enables complex visual reasoning},\n  author={David Ding and Felix Hill and Adam Santoro and Malcolm Reynolds and Matt Botvinick},\n  journal={arXiv preprint arXiv:2012.08508},\n  year={2020}\n}\n```\n"
  },
  {
    "path": "object_attention_for_reasoning/model.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Model code. Provided settings are identical to what was used in the paper.\"\"\"\n\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\nfrom object_attention_for_reasoning import transformer\n\n\nQUESTION_VOCAB_SIZE = 82\nANSWER_VOCAB_SIZE = 22\n\nMAX_QUESTION_LENGTH = 20\nMAX_CHOICE_LENGTH = 12\n\nNUM_CHOICES = 4\nEMBED_DIM = 16\n\nPRETRAINED_MODEL_CONFIG = dict(\n    use_relative_positions=True,\n    shuffle_objects=True,\n    transformer_layers=28,\n    head_size=128,\n    num_heads=10,\n    embed_dim=EMBED_DIM,\n)\n\n\ndef append_ids(tensor, id_vector, axis):\n  id_vector = tf.constant(id_vector, tf.float32)\n  for a in range(len(tensor.shape)):\n    if a != axis:\n      id_vector = tf.expand_dims(id_vector, axis=a)\n  tiling_vector = [s if i != axis else 1 for i, s in enumerate(tensor.shape)]\n  id_tensor = tf.tile(id_vector, tiling_vector)\n  return tf.concat([tensor, id_tensor], axis=axis)\n\n\nclass ClevrerTransformerModel(object):\n  \"\"\"Model from Ding et al. 2020 (https://arxiv.org/abs/2012.08508).\"\"\"\n\n  def __init__(self, use_relative_positions, shuffle_objects,\n               transformer_layers, num_heads, head_size, embed_dim):\n    \"\"\"Instantiate Sonnet modules.\"\"\"\n    self._embed_dim = embed_dim\n    self._embed = snt.Embed(QUESTION_VOCAB_SIZE, embed_dim - 2)\n    self._shuffle_objects = shuffle_objects\n    self._memory_transformer = transformer.TransformerTower(\n        value_size=embed_dim + 2,\n        num_heads=num_heads,\n        num_layers=transformer_layers,\n        use_relative_positions=use_relative_positions,\n        causal=False)\n\n    self._final_layer_mc = snt.Sequential(\n        [snt.Linear(head_size), tf.nn.relu, snt.Linear(1)])\n    self._final_layer_descriptive = snt.Sequential(\n        [snt.Linear(head_size), tf.nn.relu,\n         snt.Linear(ANSWER_VOCAB_SIZE)])\n\n    self._dummy = tf.get_variable(\"dummy\", [embed_dim + 2], tf.float32,\n                                  initializer=tf.zeros_initializer)\n    self._infill_linear = snt.Linear(embed_dim + 2)\n    self._mask_embedding = tf.get_variable(\n        \"mask\", [embed_dim + 2], tf.float32, initializer=tf.zeros_initializer)\n\n  def _apply_transformers(self, lang_embedding, vision_embedding):\n    \"\"\"Applies transformer to language and vision input.\n\n    Args:\n      lang_embedding: tensor,\n      vision_embedding: tensor, \"validation\", or \"test\".\n\n    Returns:\n      tuple, output at dummy token, all output embeddings, infill loss\n    \"\"\"\n    def _unroll(tensor):\n      \"\"\"Unroll the time dimension into the object dimension.\"\"\"\n      return tf.reshape(\n          tensor, [tensor.shape[0], -1, tensor.shape[3]])\n\n    words = append_ids(lang_embedding, [1, 0], axis=2)\n    dummy_word = tf.tile(self._dummy[None, None, :], [tf.shape(words)[0], 1, 1])\n    vision_embedding = append_ids(vision_embedding, [0, 1], axis=3)\n    vision_over_time = _unroll(vision_embedding)\n    transformer_input = tf.concat([dummy_word, words, vision_over_time], axis=1)\n\n    output, _ = self._memory_transformer(transformer_input,\n                                         is_training=False)\n    return output[:, 0, :]\n\n  def apply_model_descriptive(self, inputs):\n    \"\"\"Applies model to CLEVRER descriptive questions.\n\n    Args:\n      inputs: dict of form: {\n        \"question\": tf.int32 tensor of shape [batch, MAX_QUESTION_LENGTH],\n        \"monet_latents\": tf.float32 tensor of shape [batch, frames, 8, 16],\n      }\n    Returns:\n      Tensor of shape [batch, ANSWER_VOCAB_SIZE], representing logits for each\n      possible answer word.\n    \"\"\"\n    question = inputs[\"question\"]\n\n    # Shape: [batch, question_len, embed_dim-2]\n    question_embedding = self._embed(question)\n    # Shape: [batch, question_len, embed_dim]\n    question_embedding = append_ids(question_embedding, [0, 1], 2)\n    choices_embedding = self._embed(\n        tf.zeros([question.shape[0], MAX_CHOICE_LENGTH], tf.int64))\n    choices_embedding = append_ids(choices_embedding, [0, 1], 2)\n    # Shape: [batch, choices, question_len + choice_len, embed_dim]\n    lang_embedding = tf.concat([question_embedding, choices_embedding], axis=1)\n\n    # Shape: [batch, frames, num_objects, embed_dim]\n    vision_embedding = inputs[\"monet_latents\"]\n\n    if self._shuffle_objects:\n      vision_embedding = tf.transpose(vision_embedding, [2, 1, 0, 3])\n      vision_embedding = tf.random.shuffle(vision_embedding)\n      vision_embedding = tf.transpose(vision_embedding, [2, 1, 0, 3])\n\n    output = self._apply_transformers(lang_embedding, vision_embedding)\n    output = self._final_layer_descriptive(output)\n    return output\n\n  def apply_model_mc(self, inputs):\n    \"\"\"Applies model to CLEVRER multiple-choice questions.\n\n    Args:\n      inputs: dict of form: {\n        \"question\": tf.int32 tensor of shape [batch, MAX_QUESTION_LENGTH],\n        \"choices\": tf.int32 tensor of shape [batch, 4, MAX_CHOICE_LENGTH],\n        \"monet_latents\": tf.float32 tensor of shape [batch, frames, 8, 16],\n      }\n    Returns:\n      Tensor of shape [batch, 4], representing logits for each choice\n    \"\"\"\n    question = inputs[\"question\"]\n    choices = inputs[\"choices\"]\n\n    # Shape: [batch, question_len, embed_dim-2]\n    question_embedding = self._embed(question)\n    # Shape: [batch, question_len, embed_dim]\n    question_embedding = append_ids(question_embedding, [1, 0], 2)\n    # Shape: [batch, choices, choice_len, embed_dim-2]\n    choices_embedding = snt.BatchApply(self._embed)(choices)\n    # Shape: [batch, choices, choice_len, embed_dim]\n    choices_embedding = append_ids(choices_embedding, [0, 1], 3)\n    # Shape: [batch, choices, question_len + choice_len, embed_dim]\n    lang_embedding = tf.concat([\n        tf.tile(question_embedding[:, None],\n                [1, choices_embedding.shape[1], 1, 1]),\n        choices_embedding], axis=2)\n\n    # Shape: [batch, frames, num_objects, embed_dim]\n    vision_embedding = inputs[\"monet_latents\"]\n\n    if self._shuffle_objects:\n      vision_embedding = tf.transpose(vision_embedding, [2, 1, 0, 3])\n      vision_embedding = tf.random.shuffle(vision_embedding)\n      vision_embedding = tf.transpose(vision_embedding, [2, 1, 0, 3])\n\n    output_per_choice = []\n    for c in range(NUM_CHOICES):\n      output = self._apply_transformers(\n          lang_embedding[:, c, :, :], vision_embedding)\n      output_per_choice.append(output)\n\n    output = tf.stack(output_per_choice, axis=1)\n    output = tf.squeeze(snt.BatchApply(self._final_layer_mc)(output), axis=2)\n    return output\n"
  },
  {
    "path": "object_attention_for_reasoning/requirements.txt",
    "content": "absl-py==0.11.0\ndm-sonnet==1.36\nnumpy==1.20.1\ntensorflow==1.15.0\n"
  },
  {
    "path": "object_attention_for_reasoning/run_model.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Example code for running model on CLEVRER.\"\"\"\nimport json\n\nfrom absl import app\nfrom absl import flags\nimport numpy as np\nimport tensorflow.compat.v1 as tf\n\nfrom object_attention_for_reasoning import model as modellib\n\n\nBATCH_SIZE = 1\nNUM_FRAMES = 25\nNUM_OBJECTS = 8\n\n_BASE_DIR = flags.DEFINE_string(\n    \"base_dir\", \"./clevrer_monet_latents\",\n    \"Directory containing checkpoints and MONet latents.\")\n_SCENE_IDX = flags.DEFINE_string(\n    \"scene_idx\", 1000, \"Scene index of CLEVRER video.\")\n\n\ndef load_monet_latents(base_dir, scene_index):\n  filename = f\"{base_dir}/train/{scene_index}.npz\"\n  with open(filename, \"rb\") as f:\n    return np.load(f)\n\n\ndef _split_string(s):\n  \"\"\"Splits string to words and standardize alphabet.\"\"\"\n  return s.lower().replace(\"?\", \"\").split()\n\n\ndef _pad(array, length):\n  \"\"\"Pad an array to desired length.\"\"\"\n  return np.pad(array, [(0, length - array.shape[0])], mode=\"constant\")\n\n\ndef encode_sentence(token_map, sentence, pad_length):\n  \"\"\"Encode CLEVRER question/choice sentences as sequence of token ids.\"\"\"\n  ret = np.array(\n      [token_map[\"question_vocab\"][w] for w in _split_string(sentence)],\n      np.int32)\n  return _pad(ret, pad_length)\n\n\ndef encode_choices(token_map, choices):\n  \"\"\"Encode CLEVRER choices.\"\"\"\n  arrays = [encode_sentence(token_map, choice[\"choice\"],\n                            modellib.MAX_CHOICE_LENGTH)\n            for choice in choices]\n  return _pad(np.stack(arrays, axis=0), modellib.NUM_CHOICES)\n\n\ndef main(unused_argv):\n  base_dir = _BASE_DIR.value\n  with open(f\"{base_dir}/vocab.json\", \"rb\") as f:\n    token_map = json.load(f)\n\n  reverse_answer_lookup = {v: k for k, v in token_map[\"answer_vocab\"].items()}\n\n  with open(f\"{base_dir}/train.json\", \"rb\") as f:\n    questions_data = json.load(f)\n\n  tf.reset_default_graph()\n  model = modellib.ClevrerTransformerModel(**modellib.PRETRAINED_MODEL_CONFIG)\n\n  inputs_descriptive = {\n      \"monet_latents\": tf.placeholder(\n          tf.float32,\n          [BATCH_SIZE, NUM_FRAMES, NUM_OBJECTS, modellib.EMBED_DIM]),\n      \"question\": tf.placeholder(\n          tf.int32, [BATCH_SIZE, modellib.MAX_QUESTION_LENGTH]),\n  }\n\n  inputs_mc = {\n      \"monet_latents\": tf.placeholder(\n          tf.float32,\n          [BATCH_SIZE, NUM_FRAMES, NUM_OBJECTS, modellib.EMBED_DIM]),\n      \"question\": tf.placeholder(tf.int32,\n                                 [BATCH_SIZE, modellib.MAX_QUESTION_LENGTH]),\n      \"choices\": tf.placeholder(\n          tf.int32, [BATCH_SIZE, modellib.NUM_CHOICES,\n                     modellib.MAX_CHOICE_LENGTH]),\n  }\n\n  output_descriptive = model.apply_model_descriptive(inputs_descriptive)\n  output_mc = model.apply_model_mc(inputs_mc)\n\n  # Restore from checkpoint\n  saver = tf.train.Saver()\n  checkpoint_dir = f\"{base_dir}/checkpoints/\"\n  sess = tf.train.SingularMonitoredSession(checkpoint_dir=checkpoint_dir)\n  ckpt = tf.train.get_checkpoint_state(checkpoint_dir)\n  saver.restore(sess, ckpt.model_checkpoint_path)\n\n  def eval_descriptive(monet_latents, question_json):\n    # CLEVRER provides videos with 128 frames. In our model, we subsample 25\n    # frames (as was done in Yi et al (2020)).\n    # For training, we randomize the choice of 25 frames, and for evaluation, we\n    # sample the 25 frames as evenly as possible.\n    # We do that by doing strided sampling of the frames.\n    stride, rem = divmod(monet_latents.shape[0], NUM_FRAMES)\n    monet_latents = monet_latents[None, :-rem:stride]\n    assert monet_latents.shape[1] == NUM_FRAMES\n    question = encode_sentence(token_map, question_json[\"question\"],\n                               modellib.MAX_QUESTION_LENGTH)\n    batched_question = np.expand_dims(question, axis=0)\n    logits = sess.run(output_descriptive, feed_dict={\n        inputs_descriptive[\"monet_latents\"]: monet_latents,\n        inputs_descriptive[\"question\"]: batched_question,\n    })\n    descriptive_answer = np.argmax(logits)\n    return reverse_answer_lookup[descriptive_answer]\n\n  def eval_mc(monet_latents, question_json):\n    stride, rem = divmod(monet_latents.shape[0], NUM_FRAMES)\n    monet_latents = monet_latents[None, :-rem:stride]\n    assert monet_latents.shape[1] == NUM_FRAMES\n    question = encode_sentence(\n        token_map, question_json[\"question\"], modellib.MAX_QUESTION_LENGTH)\n    choices = encode_choices(\n        token_map, question_json[\"choices\"])\n    mc_answer = sess.run(output_mc, feed_dict={\n        inputs_mc[\"monet_latents\"]: monet_latents,\n        inputs_mc[\"question\"]: np.expand_dims(question, axis=0),\n        inputs_mc[\"choices\"]: np.expand_dims(choices, axis=0),\n    })\n    return mc_answer >= 0\n\n  sample_scene_idx = _SCENE_IDX.value\n  question_json = questions_data[sample_scene_idx][\"questions\"][0]\n  print(\"Descriptive Question: \", question_json[\"question\"])\n  print(\"Model Answer: \",\n        eval_descriptive(load_monet_latents(base_dir, sample_scene_idx),\n                         question_json))\n  print(\"True Answer: \", question_json[\"answer\"])\n\n  question_json = questions_data[sample_scene_idx][\"questions\"][-1]\n  print(\"Multiple-Choice Question: \", question_json[\"question\"])\n  for i, choice_json in enumerate(question_json[\"choices\"]):\n    print(f\"{i+1}) {choice_json['choice']}\")\n  print(\"Model Answer: \",\n        eval_mc(load_monet_latents(base_dir, sample_scene_idx), question_json))\n  print(\"True Answer: \",\n        [choice_json[\"answer\"] for choice_json in question_json[\"choices\"]])\n\n\nif __name__ == \"__main__\":\n  app.run(main)\n"
  },
  {
    "path": "object_attention_for_reasoning/transformer.py",
    "content": "# Fork of Sonnet transformer model with small modifications\n#\n# Copyright 2017 The Sonnet Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Implementation of Transformer networks.\n\nSize glossary:\n  * Batch size (B).\n  * Sequence length (N).\n  * Memory size (M). The size of the optional memory, passed in via `state`.\n  * Number of heads (H): the number of attention heads.\n  * Value size (V): the size of each value embedding per head.\n  * Key size (K): the size of each key embedding per head. Equally, the size\n      of each query embedding per head. Typically K <= V.\n  * Embedding size (HV). The size of the activation or embedding relating to\n      each input between layers. Equal to value_size * num_heads.\n  * All attention size (F). The size of all attention activations over every\n      head.\n  * QKV size (F / H): The size of the query, key and value per head. Equal to\n      2K + V or equivalently F / H.\n\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport collections\n\nimport numpy as np\nfrom sonnet.python.modules import base\nfrom sonnet.python.modules import basic\nfrom sonnet.python.modules import layer_norm as snt_ln\nfrom sonnet.python.modules import util\nfrom sonnet.python.modules.nets import mlp as snt_mlp\nimport tensorflow.compat.v1 as tf\n\nAttentionState = collections.namedtuple('AttentionState',\n                                        ('queries', 'keys', 'values', 'logits',\n                                         'weights', 'embeddings', 'read_words'))\n\nCompressedMemoryState = collections.namedtuple(\n    'CompressedMemoryState', ('episodic_memory', 'compressed_memory', 'index'))\n\n\ndef rel_shift(position_logits):\n  \"\"\"Shifting of logits for relative attention.\n\n  Args:\n    position_logits: A tensor of shape [B, H, N, N + M].\n\n  Returns:\n    The shifted logits. Example, for input (H=1, B=1):\n      [5, 4, 3, 2, 1]\n      [5, 4, 3, 2, 1]\n      [5, 4, 3, 2, 1]\n      [5, 4, 3, 2, 1]\n      [5, 4, 3, 2, 1]\n\n    the function outputs:\n      [1, 0, 5, 4, 3]\n      [2, 1, 0, 5, 4]\n      [3, 2, 1, 0, 5]\n      [4, 3, 2, 1, 0]\n      [5, 4, 3, 2, 1]\n\n  Raises:\n    ValueError if position_logits is not 4D.\n\n  Note: this is not an exact shift as the upper triangle is non-zero. This\n  works as intended in the causally-masked case. If this is used with un-masked\n  attention, we'd want these to also be zero.\n  \"\"\"\n  if position_logits.get_shape().ndims != 4:\n    raise ValueError('Expected 4D position logits.')\n\n  input_shape = position_logits.shape\n  batch_size = input_shape[0]\n  num_heads = input_shape[1]\n  t1 = input_shape[2]\n  t2 = input_shape[3]\n  # We prepend zeros on the final timescale dimension.\n  to_pad = tf.zeros([batch_size, num_heads, t1, 1])\n  position_logits = tf.concat([to_pad, position_logits], -1)\n  # Reshape trick to shift input.\n  position_logits = tf.reshape(position_logits,\n                               [batch_size, num_heads, t2 + 1, t1])\n  # Remove extra time dimension and re-shape.\n  position_logits = position_logits[:, :, 1:]\n  position_logits = tf.reshape(position_logits, input_shape)\n  return position_logits\n\n\ndef _layer_norm(inputs):\n  if inputs.get_shape().ndims > 2:\n    return basic.BatchApply(snt_ln.LayerNorm())(inputs)\n  else:\n    return snt_ln.LayerNorm()(inputs)\n\n\ndef _concat_and_slice(prev_memory, new_memory):\n  original_memory_size = prev_memory.get_shape().as_list()[1]\n  concat_memory = tf.concat([prev_memory, new_memory], 1)\n  memory = concat_memory[:, -original_memory_size:]\n  return memory, concat_memory\n\n\ndef simple_attention(queries, keys, values):\n  logits = tf.matmul(queries, keys, transpose_b=True)\n  weights = tf.nn.softmax(logits)\n  return tf.matmul(weights, values)\n\n\nclass ResidualDropoutWrapper(base.AbstractModule):\n  \"\"\"Wrapper class that applies residual connections, dropout and layer norm.\n\n  By default applies a relu to the module output before the other operations.\n  \"\"\"\n\n  def __init__(self,\n               layer,\n               dropout_rate,\n               layer_norm='input',\n               name='residual_dropout_wrapper'):\n    self._module = layer\n    self._dropout_rate = dropout_rate\n    self._layer_norm = layer_norm\n    super(ResidualDropoutWrapper, self).__init__(name=name)\n\n  def _build(self, inputs, *args, **kwargs):\n    if self._layer_norm in ('both', 'input'):\n      normed_inputs = _layer_norm(inputs)\n    else:\n      normed_inputs = inputs\n    module_output = self._module(normed_inputs, *args, **kwargs)\n    module_state = None\n    # If module outputs multiple items, assumes (output, state) tuple.\n    if isinstance(module_output, tuple):\n      module_output, module_state = module_output\n    if kwargs['is_training']:  # kwargs must contain is_training.\n      module_output = tf.nn.dropout(module_output, rate=self._dropout_rate)\n    output = inputs + module_output\n    if self._layer_norm in ('both', 'output'):\n      output = _layer_norm(output)\n    if module_state is None:\n      return output\n    else:\n      return output, module_state\n\n\ndef future_mask(chunk_size, dtype):\n  \"\"\"Creates attention mask to ensure an element i cannot attend to j > i.\"\"\"\n  square = tf.ones([chunk_size, chunk_size], dtype=dtype)\n  # Create upper diagonal matrix and remove diagonal entries (allow self-attn).\n  mask = tf.matrix_band_part(square, 0, -1) - tf.matrix_band_part(square, 0, 0)\n  # Multiply by -1e6 and expand to broadcast with [B, H, N, N] logits.\n  mask = -1e6 * tf.reshape(mask, [1, 1, chunk_size, chunk_size])\n  return mask\n\n\ndef _memory_size(state):\n  if isinstance(state, CompressedMemoryState):\n    return (state.episodic_memory.get_shape().as_list()[1] +\n            state.compressed_memory.get_shape().as_list()[1])\n  else:\n    return state.get_shape().as_list()[1]\n\n\ndef create_mask(inputs, state, equal_window):\n  \"\"\"Creates mask for future sequence positions.\n\n  Args:\n    inputs: inputs tensor of shape [B, N, D]\n    state: optional tensor of shape [B, M, D], CompressedMemoryState or a list\n      where the ith entry corresponds to the ith layer's state.\n    equal_window: if True, then each activation has an equally-sized attention\n      window of length 'M'. This only makes sense if a state is given.\n\n  Returns:\n    Float tensor of shape [1, 1, N, N + M], to be summed with logits.\n  \"\"\"\n  chunk_size = inputs.get_shape().as_list()[1]\n  dtype = inputs.dtype\n  mask = future_mask(chunk_size, dtype)\n  if state is not None:\n    if isinstance(state, (tuple, list)):\n      largest_memory_layer = np.argmax([_memory_size(s) for s in state])\n      state = state[largest_memory_layer]\n    mem_size = _memory_size(state)\n    mask = tf.concat(\n        [tf.zeros([1, 1, chunk_size, mem_size], dtype=dtype), mask], 3)\n\n  if equal_window:\n    attn_mask = tf.ones([chunk_size, chunk_size], dtype=dtype)\n    mask_dia = tf.cast(tf.matrix_band_part(attn_mask, 0, 0), dtype=dtype)\n    mask_l = tf.cast(tf.matrix_band_part(attn_mask, -1, 0), dtype=dtype)\n    start_mask = tf.reshape(mask_l - mask_dia,\n                            [1, 1, chunk_size, chunk_size]) * -1e6\n    mask = tf.concat(\n        [mask[:, :, :, :chunk_size] + start_mask, mask[:, :, :, chunk_size:]],\n        3)\n  return mask\n\n\ndef default_mlp(hidden_sizes, activate_final=False, init_std=2., **kwargs):\n  \"\"\"Standard batch-applied MLP for transformer modules.\"\"\"\n  init = {'w': tf.variance_scaling_initializer(init_std, distribution='normal')}\n  mlp = snt_mlp.MLP(\n      hidden_sizes,\n      activate_final=activate_final,\n      use_dropout=True,\n      initializers=init,\n      **kwargs)\n  return basic.BatchApply(mlp)\n\n\ndef get_position_encodings(sequence_length,\n                           hidden_size,\n                           clamp_value,\n                           max_timescale=10000.,\n                           min_timescale=2.0):\n  \"\"\"Creates sinusoidal encodings of shape [1, N + M, D].\"\"\"\n  # NOTE: when not using relative position encodings, min_timescale must be 2.0\n  # and hidden_size must be an even number. Otherwise, the dimensions do not\n  # match.\n  pos_seq = tf.range(sequence_length - 1, -1, -1.0)\n  if clamp_value > 0:\n    pos_seq = tf.minimum(pos_seq, clamp_value)\n  freqs = tf.range(0, hidden_size, min_timescale)\n  inv_freq = 1 / (max_timescale**(freqs / hidden_size))\n  sinusoid_inp = tf.einsum('i,j->ij', pos_seq, inv_freq)\n  pos_emb = tf.concat([tf.sin(sinusoid_inp), tf.cos(sinusoid_inp)], -1)\n  pos_emb = tf.expand_dims(pos_emb, 0)\n\n  output_dim = pos_emb.get_shape().as_list()[-1]\n  if output_dim != hidden_size:\n    raise ValueError(\n        'position embedding dimension ({}) does not match that of the input ({}).'\n        .format(output_dim, hidden_size))\n  return pos_emb\n\n\nclass MultiheadAttention(base.AbstractModule):\n  \"\"\"Implements multi-head attention with optional state context.\"\"\"\n\n  def __init__(self,\n               value_size,\n               key_size,\n               num_heads,\n               mask=None,\n               scaling=True,\n               positional_encodings=None,\n               use_relative_positions=False,\n               init_std=2.,\n               name='multihead_attention'):\n    \"\"\"Creates a MultiheadAttention module.\n\n    Args:\n      value_size: V parameter. See size glossary in class docstring.\n      key_size: K parameter. See size glossary in class docstring.\n      num_heads: The number of independent queries per timestep.\n      mask: Optional mask to attention logits. This can prevent attending to\n        future positions or unused memory slots.\n      scaling: Whether to scale the attention logits.\n      positional_encodings: Either None (none given), or an iterable of\n        `(key_positional_encodings, query_positional_encodings)` tuples, where\n        the first encodings in the list indicate the oldest entries in memory\n        and the final encodings indicate the newest entries in memory and the\n        sequence.\n      use_relative_positions: If True then relative positions are incorporated,\n        vs absolute, into the attention logits. This is done exactly as\n        described in the TransformerXL, Dai et al. 2019.\n      init_std: scaling of standard deviation for weight matrices init.\n      name: Name of module.\n    \"\"\"\n\n    super(MultiheadAttention, self).__init__(name=name)\n    self._value_size = value_size\n    self._key_size = key_size\n    self._sizes = {\n        'value': self._value_size,\n        'key': self._key_size,\n        'query': self._key_size,\n        'relative_keys': self._key_size,\n        'relative_keys_0': self._key_size,\n    }\n    self._num_heads = num_heads\n    self._mask = mask\n    self._scaling = scaling\n    self._positional_encodings = positional_encodings\n    self._use_relative_positions = use_relative_positions\n    self._init = {'w': tf.variance_scaling_initializer(init_std)}\n\n  @util.reuse_variables\n  def multihead_linear(self, inputs, name):\n    with tf.variable_scope(name, reuse=tf.AUTO_REUSE):\n      hidden_size = self._sizes[name]\n      input_size = inputs.shape[-1].value\n      w = tf.get_variable(\n          'linear/w',\n          shape=[input_size, self._num_heads * hidden_size],\n          initializer=self._init['w'])\n      w = tf.reshape(w, [input_size, self._num_heads, hidden_size])\n      out = tf.einsum('bij,jhk->bhik', inputs, w)\n      return out\n\n  def _build(self,\n             inputs,\n             query_inputs=None,\n             state=None,\n             is_training=False,\n             dropout_keep_prob=0.5,\n             key_value_inputs=None):\n    \"\"\"Calculates multi-layer self attention.\n\n    Args:\n      inputs: Tensor of shape [batch_size, num_steps, output_dim_size]. Inputs\n        used as the query, key, and value to the attention layer.\n      query_inputs: optional Tensor of shape [batch_size, num_steps,\n        output_dim_size]. Query inputs to the attention layer. Set when\n        query_inputs is different from the inputs argument.\n      state: optional CompressedMemoryState or a Tensor of shape [batch_size,\n        memory_size, dim_size] concatenated to the inputs. Set when attend to\n        the memory from previous steps.\n      is_training: if currently training.\n      dropout_keep_prob: dropout rate applied to attention weights.\n      key_value_inputs: optional Tensor of shape [batch_size, num_steps,\n        output_dim_size]. It is used as the key and value of the multihead\n        attention. Set when the key and value are different from the inputs\n        argument.\n\n    Returns:\n      output: the result Tensor of shape\n        [batch_size, num_steps, output_dim_size].\n      attention_state: named tuple of AttentionState.\n    \"\"\"\n    if key_value_inputs is not None and state is not None:\n      raise ValueError('Only one of the key_value_input and state is needed.')\n    embedding_size = self._value_size * self._num_heads\n\n    q_inputs = inputs if query_inputs is None else query_inputs\n    # Denoted by L. If query_inputs is None, L = N.\n    _, query_size = q_inputs.get_shape().as_list()[:2]\n\n    if key_value_inputs is not None:\n      k_inputs = key_value_inputs\n      v_inputs = k_inputs\n    elif state is not None:\n      if isinstance(state, CompressedMemoryState):\n        state_memory_list = [state.compressed_memory, state.episodic_memory]\n      else:\n        state_memory_list = [state]\n\n      k_inputs = tf.concat(state_memory_list + [inputs], 1)\n      v_inputs = k_inputs\n    else:\n      k_inputs = inputs\n      v_inputs = inputs\n\n    # Batch size denoted by B\n    batch_size = tf.shape(inputs)[0]\n    # Chunk_size denoted by N\n    chunk_size = inputs.get_shape().as_list()[1]\n    # Denoted by N + M\n    att_size = k_inputs.get_shape().as_list()[1]\n\n    if self._positional_encodings and not self._use_relative_positions:\n      if len(self._positional_encodings) != 1:\n        raise ValueError(\n            'Absolute positional encodings only supported for 1 memory. '\n            'Found %i.' % len(self._positional_encodings))\n      key_positions, query_positions = self._positional_encodings[0]\n      k_inputs += key_positions\n      q_inputs += query_positions\n\n    # [B, H, L, K]\n    q = self.multihead_linear(q_inputs, 'query')\n    # [B, H, N + M, K]\n    k = self.multihead_linear(k_inputs, 'key')\n    # [B, H, N + M, V]\n    v = self.multihead_linear(v_inputs, 'value')\n\n    # Scaling the dot-product\n    if self._scaling:\n      q *= self._key_size**-0.5\n\n    # [B, H, L, N + M]\n    if self._use_relative_positions:\n      r_w_bias = tf.get_variable(\n          'r_w_bias', [1, self._num_heads, 1, self._key_size],\n          dtype=inputs.dtype)\n      content_logits = tf.matmul(q + r_w_bias, k, transpose_b=True)\n      all_relative_logits = []\n      # Loop over multiple positional encodings, for the case of multiple\n      # memory types.\n      for i, positional_encodings in enumerate(self._positional_encodings):\n        key_positions, query_positions = positional_encodings\n        if key_positions.get_shape().as_list()[-1] != att_size:\n          key_positions = key_positions[:, -att_size:]  # Crop to layer mem size\n        is_final = i == len(self._positional_encodings) - 1\n        suffix = '' if is_final else '_%d' % i\n        relative_keys = self.multihead_linear(\n            key_positions, name='relative_keys' + suffix)\n        # [B, H, N, D]\n        r_r_bias = tf.get_variable(\n            'r_r_bias' + suffix, [1, self._num_heads, 1, self._key_size],\n            dtype=inputs.dtype)\n        relative_keys = tf.tile(relative_keys, [batch_size, 1, 1, 1])\n        relative_logits = tf.matmul(\n            q + r_r_bias, relative_keys, transpose_b=True)\n        relative_logits = rel_shift(relative_logits)\n        if not is_final:  # Include relative positions for input sequence.\n          relative_logits = relative_logits[:, :, :, :-chunk_size]\n        all_relative_logits.append(relative_logits)\n      all_relative_logits = tf.concat(all_relative_logits, 3)\n      logits = content_logits + all_relative_logits\n    else:\n      # [B, H, N, N + M]\n      logits = tf.matmul(q, k, transpose_b=True)\n      content_logits = logits\n\n    if self._mask is not None:\n      if self._mask.get_shape().as_list()[-1] != att_size:\n        mask = self._mask[:, :, :, -att_size:]\n      else:\n        mask = self._mask\n      logits += mask\n\n    weights = tf.nn.softmax(logits)\n    if is_training:\n      weights = tf.nn.dropout(weights, dropout_keep_prob)\n    # [B, L, H, V], where V is value_size\n    output_transpose = tf.einsum('bhij,bhjk->bihk', weights, v)\n\n    # [B, L, H, V] -> [B, L, HV]\n    attended_inputs = basic.BatchReshape([query_size, embedding_size])(\n        output_transpose)\n    # Apply final mlp to mix information between heads.\n    output = basic.BatchApply(basic.Linear(embedding_size))(attended_inputs)\n\n    attention_state = AttentionState(\n        queries=q,\n        keys=k,\n        values=v,\n        weights=weights,\n        logits=content_logits,\n        embeddings=inputs,\n        read_words=output)\n    return output, attention_state\n\n\nclass TransformerTower(base.AbstractModule):\n  \"\"\"Transformer tower.\n\n  Deep residual network using blocks of attention and MLPs, specified in\n  Vaswani et al. 2017.\n  \"\"\"\n\n  def __init__(self,\n               value_size,\n               num_heads,\n               num_layers,\n               causal=True,\n               key_size=None,\n               shared_attention=False,\n               output_size=None,\n               mlp_hidden_sizes=tuple([1024]),\n               dropout_rate=0.1,\n               use_relative_positions=True,\n               clamp_time_range=0,\n               same_attention_length=False,\n               layer_norm='input',\n               name='transformer_tower'):\n    \"\"\"Initializes TransformerTower.\n\n    Args:\n      value_size: dimensionality of values per-head.\n      num_heads: number of attention heads.\n      num_layers: number of transformer blocks, where each block contains a\n        multi-head attention layer and an MLP.\n      causal: if True, applies a causal mask.\n      key_size: optional dimensionality of key size. If unspecified then it is\n        set to `value_size`.\n      shared_attention: if True, attention params are shared across all layers.\n      output_size: if set, the desired output dimensionality. By default the\n        output size is `value_size` x `num_heads`.\n      mlp_hidden_sizes: tuple containing dimensionality of mlp layer(s). If\n        multiple values are specified, the mlp contains multiple layers for each\n        transformer block.\n      dropout_rate: dropout rate applied to hidden activations, attention, and\n        positional encodings.\n      use_relative_positions: if False, applies absolute positional encodings.\n        If true, uses relative positional encodings from Dai et al. 2019.\n      clamp_time_range: clamps max temporal positional encoding if specified.\n      same_attention_length: if True, attention is masked to ensure each\n        position in the sequence contains the same length of attention.\n      layer_norm: Where to apply layer-norm in Transformer block. Can be one of\n        'input' (Vaswani et al. 2017), 'output', or 'both'.\n      name: name of variable scope.\n    \"\"\"\n    super(TransformerTower, self).__init__(name=name)\n    self._causal = causal\n    self._mask = None\n\n    if key_size is None:\n      key_size = value_size\n    self._key_size = key_size\n    self._value_size = value_size\n    self._shared_attention = shared_attention\n    self._num_heads = num_heads\n    self._num_layers = num_layers\n    self._output_size = output_size\n    self._embedding_size = self._value_size * self._num_heads\n    self._mlp_hidden_sizes = list(mlp_hidden_sizes) + [self._embedding_size]\n    self._multihead_attention = None\n    self._object_embeddings = None\n    self._dropout_rate = dropout_rate\n    self._positional_encodings = None\n    self._use_relative_positions = use_relative_positions\n    self._clamp_time_range = clamp_time_range\n    self._same_attention_length = same_attention_length\n    self._layer_norm = layer_norm\n    self._attention_modules = []\n    self._object_mlps = []\n\n  def get_sublayers(self, is_training):\n    if self._multihead_attention is None or not self._shared_attention:\n      attention_module = MultiheadAttention(\n          value_size=self._value_size,\n          key_size=self._key_size,\n          num_heads=self._num_heads,\n          mask=self._mask,\n          positional_encodings=self._positional_encodings,\n          use_relative_positions=self._use_relative_positions,\n          init_std=2. / np.sqrt(self._num_layers),\n      )\n      self._multihead_attention = ResidualDropoutWrapper(\n          attention_module, self._dropout_rate, layer_norm=self._layer_norm)\n    mlp = default_mlp(\n        self._mlp_hidden_sizes, init_std=2. / np.sqrt(self._num_layers))\n    object_mlp = ResidualDropoutWrapper(\n        mlp, self._dropout_rate, layer_norm=self._layer_norm)\n\n    self._attention_modules.append(attention_module)\n    self._object_mlps.append(mlp)\n    return self._multihead_attention, object_mlp\n\n  def _build(self,\n             inputs,\n             state=None,\n             condition=None,\n             is_training=True,\n             final_layer_key_value_inputs=None):\n    \"\"\"Calculates multi-layer self attention and mlp transformation.\n\n    Args:\n      inputs: Tensor of shape [batch_size, num_steps, dim_size].\n      state: optional list of length num_layers of tensors of shape\n        [batch_size, memory_size, dim_size].\n      condition: optional tensor to condition on. The shape is shape\n        [batch_size, dim_size].\n      is_training: If true, dropout is applied.\n      final_layer_key_value_inputs: optional Tensor to be used as the key and\n        value for the final multi-head attention layer of shape\n        [batch_size, num_steps, dim_size]. Useful when the tower is a Seq2Seq\n        decoder and it can attend to encoder outputs.\n\n    Returns:\n      output: tensor of shape [batch_size, num_steps, output_dim_size].\n      state: list of length `num_layers` containing AttentionState tuples.\n    \"\"\"\n    # inputs: [B, N, F]\n    if final_layer_key_value_inputs is not None and state is not None and len(\n        state) == (self._num_layers - 1):\n      raise ValueError('When the final_layer_key_value_input is set, exclude'\n                       'the state of the last layer.')\n\n    if condition is not None:\n      condition_tile = tf.tile(\n          tf.expand_dims(condition, 1), [1, tf.shape(inputs)[1], 1])\n      inputs = tf.concat([inputs, condition_tile], -1)\n\n    # Map inputs to be of `embedding_size` dimension.\n    if inputs.get_shape().as_list()[-1] != self._embedding_size:\n      inputs = default_mlp([self._embedding_size], activate_final=True)(\n          inputs,\n          is_training=is_training,\n          dropout_keep_prob=1 - self._dropout_rate)\n\n    if state is None:\n      memory_sizes = [0]\n    elif isinstance(state[0], CompressedMemoryState):\n      cm_mem_size = max(_memory_size(s.compressed_memory) for s in state)\n      em_mem_size = max(_memory_size(s.episodic_memory) for s in state)\n      memory_sizes = [cm_mem_size, em_mem_size]\n    else:\n      memory_sizes = [max([_memory_size(s) for s in state])]\n    chunk_size = inputs.get_shape().as_list()[1]\n    self._positional_encodings = []\n    # Creates positional encodings for different memory types.\n    for i, memory_size in enumerate(memory_sizes):\n      seq_len = chunk_size + memory_size\n      key_positions = get_position_encodings(\n          sequence_length=seq_len,\n          hidden_size=inputs.get_shape().as_list()[2],\n          clamp_value=self._clamp_time_range,\n      )\n      if is_training:\n        key_positions = tf.nn.dropout(key_positions, rate=self._dropout_rate)\n      key_positions = tf.cast(key_positions, dtype=inputs.dtype)\n      query_positions = key_positions[:, -chunk_size:, :]\n      self._positional_encodings.append((key_positions, query_positions))\n\n    if self._causal:\n      self._mask = create_mask(inputs, state, self._same_attention_length)\n\n    layer_i_inputs = inputs\n    attention_states = []\n    key_value_inputs = None\n\n    for i in range(self._num_layers):\n      with tf.variable_scope('layer_%d' % i, reuse=tf.AUTO_REUSE):\n        multihead_attention, object_mlp = self.get_sublayers(is_training)\n        # Multihead attention with residuals.\n        state_i = None if state is None else state[i]\n        if i == (self._num_layers -\n                 1) and final_layer_key_value_inputs is not None:\n          # When the final_layer_key_value_inputs is set, the finaly layer\n          # of attention will use it as the key & value, thus no need for state.\n          key_value_inputs = final_layer_key_value_inputs\n          state_i = None\n\n        attention_outputs, attention_state = multihead_attention(\n            layer_i_inputs,\n            state=state_i,\n            is_training=is_training,\n            dropout_keep_prob=1. - self._dropout_rate,\n            key_value_inputs=key_value_inputs)\n        attention_states.append(attention_state)\n        # Feed-forward with residuals.\n        output = object_mlp(\n            attention_outputs,\n            is_training=is_training,\n            dropout_keep_prob=1 - self._dropout_rate)\n        layer_i_inputs = output\n\n    if self._output_size is not None:\n      output = basic.BatchApply(\n          basic.Linear(self._output_size, use_bias=False))(\n              output)\n\n    return output, attention_states\n\n  def attention_module(self, i):\n    \"\"\"Returns the i-th layer attention module.\"\"\"\n    return self._attention_modules[i]\n"
  },
  {
    "path": "ode_gan/README.md",
    "content": "# ODE-GAN: Training GANs by Solving Ordinary Differential Equations\n\nMixture of Gaussian Example (Colab):\n\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/ode_gan/odegan_mog16.ipynb)\n\nCifar 10 Example (Tensorflow):\nLaunch Training from\nhttps://github/deepmind/deepmind_research/tree/master/cs_gan/run_ode.sh\n\nThis package demos the algorithm [ODE-GAN](https://arxiv.org/abs/2010.15040).\n\nIf you make use of any code in your work, please cite:\n\n```\n@article{qin2020training,\n  title={Training Generative Adversarial Networks by Solving Ordinary Differential Equations},\n  author={Qin, Chongli and Wu, Yan and Springenberg, Jost Tobias and\n  Brock, Andy and Donahue, Jeff and Lillicrap, Timothy and Kohli, Pushmeet},\n  journal={Advances in Neural Information Processing Systems},\n  volume={33},\n  year={2020}\n}\n```\n"
  },
  {
    "path": "ode_gan/odegan_mog16.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"OYWMcJafmrfI\"\n      },\n      \"source\": [\n        \"Copyright 2020 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"yAHjf0hcm8Az\"\n      },\n      \"source\": [\n        \"# **This code implements ODE-GAN for Mixture of Gaussians.**\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"n8p0WAstrhUT\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Imports\\n\",\n        \"!pip install dm-haiku\\n\",\n        \"import jax\\n\",\n        \"from jax import lax\\n\",\n        \"import jax.numpy as jnp\\n\",\n        \"import numpy as np\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"import haiku as hk\\n\",\n        \"import scipy as sp\\n\",\n        \"import functools\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"aoIaRyCysZEs\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title An MLP Haiku Module \\n\",\n        \"\\n\",\n        \"class MLP(hk.Module):\\n\",\n        \"  def __init__(self, depth, hidden_size, out_dim, name='SimpleNet'):\\n\",\n        \"    super(MLP, self).__init__(name=name)\\n\",\n        \"    self._depth = depth\\n\",\n        \"    self._hidden_size = hidden_size\\n\",\n        \"    self._out_dim = out_dim\\n\",\n        \"    layers = []\\n\",\n        \"    for i in range(self._depth):\\n\",\n        \"      layers.append(hk.Linear(self._hidden_size, name='linear_%d'%(i)))\\n\",\n        \"    self._layers = layers\\n\",\n        \"    self._final_layer = hk.Linear(self._out_dim, name='final_layer')\\n\",\n        \"\\n\",\n        \"  def __call__(self, input):\\n\",\n        \"    h = input\\n\",\n        \"    for i in range(self._depth):\\n\",\n        \"      h = jax.nn.relu(self._layers[i](h))\\n\",\n        \"    return self._final_layer(h)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"KBgWwKKyv6VI\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Real Data\\n\",\n        \"def real_data(batch_size):\\n\",\n        \"  mog_mean = np.array([\\n\",\n        \"        [ 1.50,  1.50],\\n\",\n        \"        [ 1.50,  0.50],\\n\",\n        \"        [ 1.50, -0.50],\\n\",\n        \"        [ 1.50, -1.50],\\n\",\n        \"        [ 0.50,  1.50],\\n\",\n        \"        [ 0.50,  0.50],\\n\",\n        \"        [ 0.50, -0.50],\\n\",\n        \"        [ 0.50, -1.50],\\n\",\n        \"        [-1.50,  1.50],\\n\",\n        \"        [-1.50,  0.50],\\n\",\n        \"        [-1.50, -0.50],\\n\",\n        \"        [-1.50, -1.50],\\n\",\n        \"        [-0.50,  1.50],\\n\",\n        \"        [-0.50,  0.50],\\n\",\n        \"        [-0.50, -0.50],\\n\",\n        \"        [-0.50, -1.50],\\n\",\n        \"    ])\\n\",\n        \"  temp = np.tile(mog_mean, (batch_size // 16 + 1,1))\\n\",\n        \"  mus = temp[0:batch_size,:]\\n\",\n        \"  return mus + 0.02 * np.random.normal(size=(batch_size, 2))\\n\",\n        \"                                 \"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"E6uViIllRDlL\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title ODE-integrators\\n\",\n        \"def euler_step(func, y0, f0, t0, dt):\\n\",\n        \"  # Euler update\\n\",\n        \"  y1 = jax.tree_multimap(lambda u, v: dt * v + u, y0, f0)\\n\",\n        \"  return y1\\n\",\n        \"\\n\",\n        \"def euler_heun_step(func, y0, f0, t0, dt):\\n\",\n        \"  # RK2 Butcher tableaux\\n\",\n        \"  alpha = jnp.array([1. / 2., 0.])\\n\",\n        \"  beta = jnp.array([\\n\",\n        \"      [1 / 2, 0,],\\n\",\n        \"  ])\\n\",\n        \"  c_sol = jnp.array([1 / 2, 1 / 2])\\n\",\n        \"\\n\",\n        \"  def body_fun(i, k):\\n\",\n        \"    ti = t0 + dt * alpha[i-1]\\n\",\n        \"    yi = jax.tree_multimap(lambda u, v: u + dt * jnp.tensordot(beta[i-1, :], v, axes=1), y0, k)\\n\",\n        \"    ft = func(yi, ti)\\n\",\n        \"    return jax.tree_multimap(lambda x, y: x.at[i, :].set(y), k, ft)\\n\",\n        \"  k = jax.tree_map(lambda f: jnp.zeros((2,) + f.shape,\\n\",\n        \"                                       f.dtype).at[0, :].set(f), f0)\\n\",\n        \"  k = lax.fori_loop(1, 2, body_fun, k)\\n\",\n        \"\\n\",\n        \"  y1 = jax.tree_multimap(lambda u, v: dt * jnp.tensordot(c_sol, v, axes=1) + u, y0, k)\\n\",\n        \"  return y1\\n\",\n        \"\\n\",\n        \"def runge_kutta_step(func, y0, f0, t0, dt):\\n\",\n        \"  # RK4 Butcher tableaux\\n\",\n        \"  alpha = jnp.array([1. / 2., 1. / 2.,  1., 0])\\n\",\n        \"  beta = jnp.array([\\n\",\n        \"      [1. / 2., 0, 0, 0],\\n\",\n        \"      [0, 1. / 2., 0, 0],\\n\",\n        \"      [0, 0, 1., 0],\\n\",\n        \"  ])\\n\",\n        \"  c_sol = jnp.array([1. / 6., 1. / 3., 1. / 3., 1. / 6.])\\n\",\n        \"\\n\",\n        \"  def body_fun(i, k):\\n\",\n        \"    ti = t0 + dt * alpha[i-1]\\n\",\n        \"    yi = jax.tree_multimap(lambda u, v: u + dt * jnp.tensordot(beta[i-1, :], v, axes=1), y0, k)\\n\",\n        \"    ft = func(yi, ti)\\n\",\n        \"    return jax.tree_multimap(lambda x, y: x.at[i, :].set(y), k, ft)\\n\",\n        \"  k = jax.tree_map(lambda f: jnp.zeros((4,) + f.shape,\\n\",\n        \"                                       f.dtype).at[0, :].set(f), f0)\\n\",\n        \"  k = lax.fori_loop(1, 4, body_fun, k)\\n\",\n        \"\\n\",\n        \"  y1 = jax.tree_multimap(lambda u, v: dt * jnp.tensordot(c_sol, v, axes=1) + u, y0, k)\\n\",\n        \"  return y1\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"NHCYH1tnwaTL\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Utility Functions.\\n\",\n        \"def disc_loss(disc_params, gen_params, real_examples, latents):\\n\",\n        \"  fake_examples = gen_model.apply(gen_params, None, latents)\\n\",\n        \"  real_logits  = disc_model.apply(disc_params, None, real_examples)\\n\",\n        \"  fake_logits = disc_model.apply(disc_params, None, fake_examples)\\n\",\n        \"  disc_real = real_logits - jax.nn.log_sigmoid(real_logits)\\n\",\n        \"  disc_fake = - jax.nn.log_sigmoid(fake_logits)\\n\",\n        \"  return - jnp.mean(disc_real + disc_fake)\\n\",\n        \"\\n\",\n        \"def gen_loss(disc_params, gen_params, real_examples, latents):\\n\",\n        \"  fake_examples = gen_model.apply(gen_params, None, latents)\\n\",\n        \"  fake_logits = disc_model.apply(disc_params, None, fake_examples)\\n\",\n        \"  disc_fake = fake_logits - jax.nn.log_sigmoid(fake_logits)\\n\",\n        \"  return - jnp.mean(disc_fake)\\n\",\n        \"\\n\",\n        \"def gen_norm(disc_params, gen_params, real_examples, latents):\\n\",\n        \"    grad = jax.grad(gen_loss, argnums=1)(\\n\",\n        \"      disc_params, gen_params, real_examples, latents)\\n\",\n        \"    flat, _ = jax.tree_flatten(grad)\\n\",\n        \"    norm = 0.\\n\",\n        \"    for a in flat:\\n\",\n        \"      norm += jnp.sum(a * a)\\n\",\n        \"    return - norm\\n\",\n        \"\\n\",\n        \"def get_gen_grad(gen_params, t, disc_params, real_examples, latents):\\n\",\n        \"  return jax.grad(gen_loss, argnums=1)(\\n\",\n        \"      disc_params, gen_params, real_examples, latents)\\n\",\n        \"\\n\",\n        \"def get_disc_grad(disc_params, t, gen_params, real_examples, latents):\\n\",\n        \"  return jax.grad(disc_loss, argnums=0)(\\n\",\n        \"      disc_params, gen_params, real_examples, latents)\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"xjTBhJuOh_wO\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Visualising the data.\\n\",\n        \"\\n\",\n        \"def kde(mu, tau, contours=None, bbox=None, xlabel=\\\"\\\", ylabel=\\\"\\\", cmap='Blues', st=0):\\n\",\n        \"    values = np.vstack([mu, tau])\\n\",\n        \"    kernel = sp.stats.gaussian_kde(values)\\n\",\n        \"\\n\",\n        \"    fig, ax = plt.subplots()\\n\",\n        \"    ax.axis(bbox)\\n\",\n        \"    ax.set_aspect(abs(bbox[1]-bbox[0])/abs(bbox[3]-bbox[2]))\\n\",\n        \"    ax.set_xlabel(xlabel)\\n\",\n        \"    ax.set_ylabel(ylabel)\\n\",\n        \"    ax.set_xticks([])\\n\",\n        \"    ax.set_yticks([])\\n\",\n        \"\\n\",\n        \"    xx, yy = np.mgrid[bbox[0]:bbox[1]:300j, bbox[2]:bbox[3]:300j]\\n\",\n        \"    positions = np.vstack([xx.ravel(), yy.ravel()])\\n\",\n        \"    \\n\",\n        \"    f = np.reshape(kernel(positions).T, xx.shape)\\n\",\n        \"    cfset = ax.contourf(xx, yy, f, cmap=cmap)\\n\",\n        \"    if contours is not None:\\n\",\n        \"      x = np.arange(-2., 2., 0.1)\\n\",\n        \"      y = np.arange(-2., 2., 0.1)\\n\",\n        \"      cx, cy = np.meshgrid(x, y)\\n\",\n        \"      new_set = ax.contour(cx, cy, contours.squeeze().reshape(cx.shape), levels=20, colors='k', linewidths=0.8, alpha=0.5)  \\n\",\n        \"    plt.tight_layout()\\n\",\n        \"    plt.show()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"G2G32j5N1psa\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Integration\\n\",\n        \"n_itrs = 30001 #@param {type : 'integer'}\\n\",\n        \"n_save = 2000 #@param {type : 'integer'}\\n\",\n        \"latent_size = 32 #@param {type : 'integer'}\\n\",\n        \"bs = 512 #@param {type : 'integer'}\\n\",\n        \"odeint = 'runge_kutta_step' #@param ['euler_step', 'euler_heun_step', 'runge_kutta_step'] {type : 'string'}\\n\",\n        \"delta_t = 0.10 #@param {type : 'number'}\\n\",\n        \"reg_param = 0.07 #@param {type : 'number'}\\n\",\n        \"\\n\",\n        \"def forward_disc(batch):\\n\",\n        \"  disc_model = MLP(2, 25, 1)\\n\",\n        \"  return disc_model(batch)\\n\",\n        \"\\n\",\n        \"def forward_gen(batch):\\n\",\n        \"  gen_model = MLP(2, 25, 2)\\n\",\n        \"  return gen_model(batch)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"disc_model = hk.transform(forward_disc)\\n\",\n        \"gen_model = hk.transform(forward_gen)\\n\",\n        \"real_examples = real_data(bs)\\n\",\n        \"\\n\",\n        \"ODEINT = {'runge_kutta_step': runge_kutta_step, \\n\",\n        \"          'euler_heun_step': euler_heun_step,\\n\",\n        \"          'euler_step': euler_step}\\n\",\n        \"@jax.jit\\n\",\n        \"def ode_update(i, disc_params, gen_params, real_examples, latents):\\n\",\n        \"  dloss, disc_grad = jax.value_and_grad(disc_loss, argnums=0)(\\n\",\n        \"      disc_params, gen_params, real_examples, latents)\\n\",\n        \"  gloss, gen_grad = jax.value_and_grad(gen_loss, argnums=1)(\\n\",\n        \"      disc_params, gen_params, real_examples, latents)\\n\",\n        \"  disc_gen_grad = jax.grad(gen_norm, argnums=0)(\\n\",\n        \"      disc_params, gen_params, real_examples, latents)\\n\",\n        \"  grad_disc_fn = functools.partial(get_disc_grad,\\n\",\n        \"                                   **{'gen_params' : gen_params,\\n\",\n        \"                                      'real_examples' : real_examples,\\n\",\n        \"                                      'latents' : latents})\\n\",\n        \"  grad_gen_fn = functools.partial(get_gen_grad, \\n\",\n        \"                                  **{'disc_params' : disc_params,\\n\",\n        \"                                     'real_examples' : real_examples,\\n\",\n        \"                                     'latents' : latents})  \\n\",\n        \"  new_gen_params = ODEINT[odeint](\\n\",\n        \"      grad_gen_fn, gen_params, gen_grad, 0., delta_t)\\n\",\n        \"  new_disc_params = ODEINT[odeint](\\n\",\n        \"      grad_disc_fn, disc_params, disc_grad, 0., delta_t)\\n\",\n        \"  new_disc_params = jax.tree_multimap(\\n\",\n        \"      lambda x, y: x + delta_t * reg_param * y, new_disc_params, disc_gen_grad)\\n\",\n        \"  return new_disc_params, new_gen_params, -dloss, -gloss\\n\",\n        \"\\n\",\n        \"rng = jax.random.PRNGKey(np.random.randint(low=0, high=int(1e7)))\\n\",\n        \"test_latents = np.random.normal(size=(bs * 10, latent_size))\\n\",\n        \"latents = np.random.normal(size=(bs, latent_size))\\n\",\n        \"disc_params = disc_model.init(rng, real_examples)\\n\",\n        \"gen_params = gen_model.init(\\n\",\n        \"    jax.random.PRNGKey(np.random.randint(low=0, high=int(1e7))), latents)\\n\",\n        \"\\n\",\n        \"x = np.arange(-2., 2., 0.1)\\n\",\n        \"y = np.arange(-2., 2., 0.1)\\n\",\n        \"X, Y = np.meshgrid(x, y)\\n\",\n        \"pairs = np.stack((X, Y), axis=-1)\\n\",\n        \"pairs = np.reshape(pairs, (-1, 2))\\n\",\n        \"\\n\",\n        \"for e in range(n_itrs):\\n\",\n        \"  real_examples = real_data(bs)\\n\",\n        \"  latents = np.random.normal(size=(bs, latent_size))\\n\",\n        \"\\n\",\n        \"  (disc_params, gen_params,\\n\",\n        \"   dloss, gloss) = ode_update(e, disc_params, gen_params, real_examples, latents)\\n\",\n        \"   \\n\",\n        \"  if e % n_save == 0:\\n\",\n        \"    real_logits = disc_model.apply(disc_params, None, pairs)\\n\",\n        \"    disc_contour = - real_logits + jax.nn.log_sigmoid(real_logits)\\n\",\n        \"    print('i = %d, discriminant loss = %s, generator loss = %s' %\\n\",\n        \"          (e, dloss, gloss))\\n\",\n        \"    bbox = [-2, 2, -2, 2]\\n\",\n        \"    fake_examples = gen_model.apply(gen_params, None, test_latents)\\n\",\n        \"    kde(fake_examples[:, 0], fake_examples[:, 1], contours=disc_contour, bbox=bbox, st=e)\\n\",\n        \"    disc_error = 0\\n\",\n        \"    gen_error = 0\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"name\": \"odegan_mog16.ipynb\"\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "ogb_lsc/README.md",
    "content": "# DeepMind entry for OGB-LSC\n\nThis repository contains DeepMind's entry to the [PCQM4M-LSC](https://ogb.stanford.edu/kddcup2021/pcqm4m/) (quantum chemistry) and\n[MAG240M-LSC](https://ogb.stanford.edu/kddcup2021/mag240m/) (academic graph)\ntracks of the [OGB Large-Scale Challenge](https://ogb.stanford.edu/kddcup2021/)\n(OGB-LSC).\n\nFor full details regarding this entry, please see our [technical report](https://arxiv.org/abs/2107.09422).\n\n## Code structure\n\n* `pcq/`: Scripts for training, evaluating on the [PCQ dataset](https://ogb.stanford.edu/docs/graphprop/).\n* `mag/`: Scripts for training, evaluating on the [MAG dataset](https://ogb.stanford.edu/docs/nodeprop/).\n\n## Citation\n\nTo cite this work:\n\n```latex\n@article{deepmind2021ogb,\n  author = {Ravichandra Addanki and Peter Battaglia and David Budden and Andreea\n    Deac and Jonathan Godwin and Thomas Keck and Wai Lok Sibon Li and Alvaro\n    Sanchez-Gonzalez and Jacklynn Stott and Shantanu Thakoor and Petar\n    Veli\\v{c}kovi\\'{c}},\n  title = {Large-scale graph representation learning with very deep GNNs and\n    self-supervision},\n  year = {2021},\n  journal={arXiv preprint arXiv:2107.09422},\n}\n```\n"
  },
  {
    "path": "ogb_lsc/mag/README.md",
    "content": "# DeepMind entry for MAG240M-LSC\n\nThis repository contains DeepMind's entry to the [MAG240M-LSC](https://ogb.stanford.edu/kddcup2021/mag240m/) (academic graph) track of the\n[OGB Large-Scale Challenge](https://ogb.stanford.edu/kddcup2021/) (OGB-LSC).\n\nFor full details regarding this entry, please see our [technical report](https://arxiv.org/abs/2107.09422).\n\n## DeepMind MAG Team (\"Academic\")\n\n(in alphabetical order)\n\n- Ravichandra Addanki\n- Peter Battaglia\n- David Budden\n- Andreea Deac\n- Jonathan Godwin\n- Thomas Keck\n- Alvaro Sanchez-Gonzalez\n- Jacklynn Stott\n- Shantanu Thakoor\n- Petar Veličković\n\n## Performance\n\nOur final test set performance was achieved by pooling an ensemble of 10 folds.\nSee [technical report](https://arxiv.org/abs/2107.09422) for details.\n\nEach model was trained for < 72 hours using 4x Google Cloud TPUv4 and 1x AMD\nEPYC 7B12 64-core CPU @2.25GHz.\n\nInference takes < 12 hours on 4x NVIDIA V100 16GB GPU and 1x Intel Xeon Gold\n6148 20-core CPU @2.40GHz.\n\n# Running our model\n\n## Setup\n\nYou can set up Python virtual environment (you might need to install the\n`python3-venv` package first) with all needed dependencies inside the forked\n`deepmind_research` repository using:\n\n```bash\npython3 -m venv /tmp/mag_venv\nsource /tmp/mag_venv/bin/activate\npip3 install --upgrade pip setuptools wheel\npip3 install -r ogb_lsc/mag/requirements.txt\n```\n\nUse the following command to get a jaxlib version built compatible with V100 GPUs.\n```bash\npip install --upgrade jax jaxlib==0.1.67+cuda110 -f https://storage.googleapis.com/jax-releases/jax_releases.html\n```\nSee https://github.com/google/jax/issues/5231 for details.\n\n\n## Download and pre-process data\n\n\n**1. Download the dataset using the contest toolkit ([here](https://ogb.stanford.edu/kddcup2021/mag240m/#dataset)) to a local directory\n`ROOT`.**\n\n**2. Run this script to reorganize the data into a flat directory structure with\ntransparent names.**\n\n```bash\n/bin/bash organize_data.sh -r ROOT\n```\n\nOnce this completes, a new directory `ROOT/mag240m_kddcup2021/raw` will be\ncreated, with contents:\n\n- `node_feat.npy`\n- `node_label.npy`\n- `node_year.npy`\n- `author_affiliated_with_institution_edges.npy`\n- `author_writes_paper_edges.npy`\n- `paper_cites_paper_edges.npy`\n- `train_idx.npy`\n- `valid_idx.npy`\n- `test_idx.npy`\n\nWe refer to this as the \"raw\" data.\n\n**3. Run the preprocessing code.**\n\n```bash\n/bin/bash run_preprocessing.sh -r ROOT\n```\n\nThe pre-processing is both time- and memory-consuming, and should only be run\nto verify the full pipeline. You can download the pre-processed data using the\nfollowing script, for use in training and evaluating models:\n\n```bash\npython3 download_mag.py --task_root=${HOME}/mag --payload=\"data\"\n```\n\n\n## Reproducing our final results\n\nWe have provided pre-trained weights of our final submission for convenience.\nThey can be downloaded with:\n\n```bash\npython3 download_mag.py --task_root=${HOME}/mag --payload=\"models\"\n```\n\nThen to reproduce our final results, please run:\n\n```bash\n/bin/bash run_preprocessing.sh -r ${HOME}/mag/\n```\n\n## Retraining our model\n\nDisclaimer: This script is provided for illustrative purposes. It is not\npractical for actual training since it only uses a single machine, and likely\nrequires reducing the batch size and/or model size to fit on a single GPU.\n\nTo train a model, please run:\n\n```bash\n/bin/bash run_training.sh -r ${HOME}/mag/\n```\n\nTo simply validate that the code is running correctly on your hardware setup,\nconsider setting `debug=True` in `config.py`, which trains a smaller model.\n\n\n# Citation\n\nTo cite this work (together with our PCQM4M-LSC entry):\n\n```latex\n@article{deepmind2021ogb,\n  author = {Ravichandra Addanki and Peter Battaglia and David Budden and Andreea\n    Deac and Jonathan Godwin and Thomas Keck and Wai Lok Sibon Li and Alvaro\n    Sanchez-Gonzalez and Jacklynn Stott and Shantanu Thakoor and Petar\n    Veli\\v{c}kovi\\'{c}},\n  title = {Large-scale graph representation learning with very deep GNNs and\n    self-supervision},\n  year = {2021},\n  journal={arXiv preprint arXiv:2107.09422},\n}\n```\n\nOur technical report can be found [here](https://arxiv.org/abs/2107.09422).\n"
  },
  {
    "path": "ogb_lsc/mag/batching_utils.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Dynamic batching utilities.\"\"\"\n\nfrom typing import Generator, Iterable, Iterator, Sequence, Tuple\n\nimport jax.tree_util as tree\nimport jraph\nimport numpy as np\n\n_NUMBER_FIELDS = (\"n_node\", \"n_edge\", \"n_graph\")\n\n\ndef dynamically_batch(graphs_tuple_iterator: Iterator[jraph.GraphsTuple],\n                      n_node: int, n_edge: int,\n                      n_graph: int) -> Generator[jraph.GraphsTuple, None, None]:\n  \"\"\"Dynamically batches trees with `jraph.GraphsTuples` to `graph_batch_size`.\n\n  Elements of the `graphs_tuple_iterator` will be incrementally added to a batch\n  until the limits defined by `n_node`, `n_edge` and `n_graph` are reached. This\n  means each element yielded by this generator\n\n  For situations where you have variable sized data, it\"s useful to be able to\n  have variable sized batches. This is especially the case if you have a loss\n  defined on the variable shaped element (for example, nodes in a graph).\n\n  Args:\n    graphs_tuple_iterator: An iterator of `jraph.GraphsTuples`.\n    n_node: The maximum number of nodes in a batch.\n    n_edge: The maximum number of edges in a batch.\n    n_graph: The maximum number of graphs in a batch.\n\n  Yields:\n    A `jraph.GraphsTuple` batch of graphs.\n\n  Raises:\n    ValueError: if the number of graphs is < 2.\n    RuntimeError: if the `graphs_tuple_iterator` contains elements which are not\n      `jraph.GraphsTuple`s.\n    RuntimeError: if a graph is found which is larger than the batch size.\n  \"\"\"\n  if n_graph < 2:\n    raise ValueError(\"The number of graphs in a batch size must be greater or \"\n                     f\"equal to `2` for padding with graphs, got {n_graph}.\")\n  valid_batch_size = (n_node - 1, n_edge, n_graph - 1)\n  accumulated_graphs = []\n  num_accumulated_nodes = 0\n  num_accumulated_edges = 0\n  num_accumulated_graphs = 0\n  for element in graphs_tuple_iterator:\n    element_nodes, element_edges, element_graphs = _get_graph_size(element)\n    if _is_over_batch_size(element, valid_batch_size):\n      graph_size = element_nodes, element_edges, element_graphs\n      graph_size = {k: v for k, v in zip(_NUMBER_FIELDS, graph_size)}\n      batch_size = {k: v for k, v in zip(_NUMBER_FIELDS, valid_batch_size)}\n      raise RuntimeError(\"Found graph bigger than batch size. Valid Batch \"\n                         f\"Size: {batch_size}, Graph Size: {graph_size}\")\n\n    if not accumulated_graphs:\n      # If this is the first element of the batch, set it and continue.\n      accumulated_graphs = [element]\n      num_accumulated_nodes = element_nodes\n      num_accumulated_edges = element_edges\n      num_accumulated_graphs = element_graphs\n      continue\n    else:\n      # Otherwise check if there is space for the graph in the batch:\n      if ((num_accumulated_graphs + element_graphs > n_graph - 1) or\n          (num_accumulated_nodes + element_nodes > n_node - 1) or\n          (num_accumulated_edges + element_edges > n_edge)):\n        # If there is, add it to the batch\n        batched_graph = _batch_np(accumulated_graphs)\n        yield jraph.pad_with_graphs(batched_graph, n_node, n_edge, n_graph)\n        accumulated_graphs = [element]\n        num_accumulated_nodes = element_nodes\n        num_accumulated_edges = element_edges\n        num_accumulated_graphs = element_graphs\n      else:\n        # Otherwise, return the old batch and start a new batch.\n        accumulated_graphs.append(element)\n        num_accumulated_nodes += element_nodes\n        num_accumulated_edges += element_edges\n        num_accumulated_graphs += element_graphs\n\n  # We may still have data in batched graph.\n  if accumulated_graphs:\n    batched_graph = _batch_np(accumulated_graphs)\n    yield jraph.pad_with_graphs(batched_graph, n_node, n_edge, n_graph)\n\n\ndef _batch_np(graphs: Sequence[jraph.GraphsTuple]) -> jraph.GraphsTuple:\n  # Calculates offsets for sender and receiver arrays, caused by concatenating\n  # the nodes arrays.\n  offsets = np.cumsum(np.array([0] + [np.sum(g.n_node) for g in graphs[:-1]]))\n\n  def _map_concat(nests):\n    concat = lambda *args: np.concatenate(args)\n    return tree.tree_map(concat, *nests)\n\n  return jraph.GraphsTuple(\n      n_node=np.concatenate([g.n_node for g in graphs]),\n      n_edge=np.concatenate([g.n_edge for g in graphs]),\n      nodes=_map_concat([g.nodes for g in graphs]),\n      edges=_map_concat([g.edges for g in graphs]),\n      globals=_map_concat([g.globals for g in graphs]),\n      senders=np.concatenate([g.senders + o for g, o in zip(graphs, offsets)]),\n      receivers=np.concatenate(\n          [g.receivers + o for g, o in zip(graphs, offsets)]))\n\n\ndef _get_graph_size(graph: jraph.GraphsTuple) -> Tuple[int, int, int]:\n  n_node = np.sum(graph.n_node)\n  n_edge = len(graph.senders)\n  n_graph = len(graph.n_node)\n  return n_node, n_edge, n_graph\n\n\ndef _is_over_batch_size(\n    graph: jraph.GraphsTuple,\n    graph_batch_size: Iterable[int],\n) -> bool:\n  graph_size = _get_graph_size(graph)\n  return any([x > y for x, y in zip(graph_size, graph_batch_size)])\n\n\n\n"
  },
  {
    "path": "ogb_lsc/mag/config.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Experiment config for MAG240M-LSC entry.\"\"\"\n\nfrom jaxline import base_config\nfrom ml_collections import config_dict\n\n\ndef get_config(debug: bool = False) -> config_dict.ConfigDict:\n  \"\"\"Get Jaxline experiment config.\"\"\"\n  config = base_config.get_base_config()\n  config.random_seed = 42\n  # E.g. '/data/pretrained_models/k0_seed100' (and set k_fold_split_id=0, below)\n  config.restore_path = config_dict.placeholder(str)\n  config.experiment_kwargs = config_dict.ConfigDict(\n      dict(\n          config=dict(\n              debug=debug,\n              predictions_dir=config_dict.placeholder(str),\n              # 5 for model selection and early stopping, 50 for final eval.\n              num_eval_iterations_to_ensemble=5,\n              dataset_kwargs=dict(\n                  data_root='/data/',\n                  online_subsampling_kwargs=dict(\n                      max_nb_neighbours_per_type=[\n                          [[40, 20, 0, 40], [0, 0, 0, 0], [0, 0, 0, 0]],\n                          [[40, 20, 0, 40], [40, 0, 10, 0], [0, 0, 0, 0]],\n                      ],\n                      remove_future_nodes=True,\n                      deduplicate_nodes=True,\n                  ),\n                  ratio_unlabeled_data_to_labeled_data=10.0,\n                  k_fold_split_id=config_dict.placeholder(int),\n                  use_all_labels_when_not_training=False,\n                  use_dummy_adjacencies=debug,\n              ),\n              optimizer=dict(\n                  name='adamw',\n                  kwargs=dict(weight_decay=1e-5, b1=0.9, b2=0.999),\n                  learning_rate_schedule=dict(\n                      use_schedule=True,\n                      base_learning_rate=1e-2,\n                      warmup_steps=50000,\n                      total_steps=config.get_ref('training_steps'),\n                  ),\n              ),\n              model_config=dict(\n                  mlp_hidden_sizes=[32] if debug else [512],\n                  latent_size=32 if debug else 256,\n                  num_message_passing_steps=2 if debug else 4,\n                  activation='relu',\n                  dropout_rate=0.3,\n                  dropedge_rate=0.25,\n                  disable_edge_updates=True,\n                  use_sent_edges=True,\n                  normalization_type='layer_norm',\n                  aggregation_function='sum',\n              ),\n              training=dict(\n                  loss_config=dict(\n                      bgrl_loss_config=dict(\n                          stop_gradient_for_supervised_loss=False,\n                          bgrl_loss_scale=1.0,\n                          symmetrize=True,\n                          first_graph_corruption_config=dict(\n                              feature_drop_prob=0.4,\n                              edge_drop_prob=0.2,\n                          ),\n                          second_graph_corruption_config=dict(\n                              feature_drop_prob=0.4,\n                              edge_drop_prob=0.2,\n                          ),\n                      ),\n                  ),\n                  # GPU memory may require reducing the `256`s below to `48`.\n                  dynamic_batch_size_config=dict(\n                      n_node=256 if debug else 340 * 256,\n                      n_edge=512 if debug else 720 * 256,\n                      n_graph=4 if debug else 256,\n                  ),\n              ),\n              eval=dict(\n                  split='valid',\n                  ema_annealing_schedule=dict(\n                      use_schedule=True,\n                      base_rate=0.999,\n                      total_steps=config.get_ref('training_steps')),\n                  dynamic_batch_size_config=dict(\n                      n_node=256 if debug else 340 * 128,\n                      n_edge=512 if debug else 720 * 128,\n                      n_graph=4 if debug else 128,\n                  ),\n              ))))\n\n  ## Training loop config.\n  config.training_steps = 500000\n  config.checkpoint_dir = '/tmp/checkpoint/mag/'\n  config.train_checkpoint_all_hosts = False\n  config.log_train_data_interval = 10\n  config.log_tensors_interval = 10\n  config.save_checkpoint_interval = 30\n  config.best_model_eval_metric = 'accuracy'\n  config.best_model_eval_metric_higher_is_better = True\n\n  return config\n"
  },
  {
    "path": "ogb_lsc/mag/csr_builder.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Builds CSR matrices which store the MAG graphs.\"\"\"\n\nimport pathlib\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport numpy as np\nimport scipy.sparse\n\n# pylint: disable=g-bad-import-order\nimport data_utils\n\nPath = pathlib.Path\n\n\nFLAGS = flags.FLAGS\n\n_DATA_FILES_AND_PARAMETERS = {\n    'author_affiliated_with_institution_edges.npy': {\n        'content_names': ('author', 'institution'),\n        'use_boolean': False\n    },\n    'author_writes_paper_edges.npy': {\n        'content_names': ('author', 'paper'),\n        'use_boolean': False\n    },\n    'paper_cites_paper_edges.npy': {\n        'content_names': ('paper', 'paper'),\n        'use_boolean': True\n    },\n}\n\nflags.DEFINE_string('data_root', None, 'Data root directory')\nflags.DEFINE_boolean('skip_existing', True, 'Skips existing CSR files')\n\nflags.mark_flags_as_required(['data_root'])\n\n\ndef _read_edge_data(path):\n  try:\n    return np.load(path, mmap_mode='r')\n  except FileNotFoundError:\n    # If the file path can't be found by np.load, use the file handle w/o mmap.\n    with path.open('rb') as fid:\n      return np.load(fid)\n\n\ndef _build_coo(edges_data, use_boolean=False):\n  if use_boolean:\n    mat_coo = scipy.sparse.coo_matrix(\n        (np.ones_like(edges_data[1, :],\n                      dtype=bool), (edges_data[0, :], edges_data[1, :])))\n  else:\n    mat_coo = scipy.sparse.coo_matrix(\n        (edges_data[1, :], (edges_data[0, :], edges_data[1, :])))\n  return mat_coo\n\n\ndef _get_output_paths(directory, content_names, use_boolean):\n  boolean_str = '_b' if use_boolean else ''\n  transpose_str = '_t' if len(set(content_names)) == 1 else ''\n  output_prefix = '_'.join(content_names)\n  output_prefix_t = '_'.join(content_names[::-1])\n  output_filename = f'{output_prefix}{boolean_str}.npz'\n  output_filename_t = f'{output_prefix_t}{boolean_str}{transpose_str}.npz'\n  output_path = directory / output_filename\n  output_path_t = directory / output_filename_t\n  return output_path, output_path_t\n\n\ndef _write_csr(path, csr):\n  path.parent.mkdir(parents=True, exist_ok=True)\n  with path.open('wb') as fid:\n    scipy.sparse.save_npz(fid, csr)\n\n\ndef main(argv):\n  if len(argv) > 1:\n    raise app.UsageError('Too many command-line arguments.')\n\n  raw_data_dir = Path(FLAGS.data_root) / data_utils.RAW_DIR\n  preprocessed_dir = Path(FLAGS.data_root) / data_utils.PREPROCESSED_DIR\n\n  for input_filename, parameters in _DATA_FILES_AND_PARAMETERS.items():\n    input_path = raw_data_dir / input_filename\n    output_path, output_path_t = _get_output_paths(preprocessed_dir,\n                                                   **parameters)\n    if FLAGS.skip_existing and output_path.exists() and output_path_t.exists():\n      # If both files exist, skip. When only one exists, that's handled below.\n      logging.info(\n          '%s and %s exist: skipping. Use flag `--skip_existing=False`'\n          'to force overwrite existing.', output_path, output_path_t)\n      continue\n    logging.info('Reading edge data from: %s', input_path)\n    edge_data = _read_edge_data(input_path)\n    logging.info('Building CSR matrices')\n    mat_coo = _build_coo(edge_data, use_boolean=parameters['use_boolean'])\n    # Convert matrices to CSR and write to disk.\n    if not FLAGS.skip_existing or not output_path.exists():\n      logging.info('Writing CSR matrix to: %s', output_path)\n      mat_csr = mat_coo.tocsr()\n      _write_csr(output_path, mat_csr)\n      del mat_csr  # Free up memory asap.\n    else:\n      logging.info(\n          '%s exists: skipping. Use flag `--skip_existing=False`'\n          'to force overwrite existing.', output_path)\n    if not FLAGS.skip_existing or not output_path_t.exists():\n      logging.info('Writing (transposed) CSR matrix to: %s', output_path_t)\n      mat_csr_t = mat_coo.transpose().tocsr()\n      _write_csr(output_path_t, mat_csr_t)\n      del mat_csr_t  # Free up memory asap.\n    else:\n      logging.info(\n          '%s exists: skipping. Use flag `--skip_existing=False`'\n          'to force overwrite existing.', output_path_t)\n    del mat_coo  # Free up memory asap.\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "ogb_lsc/mag/data_utils.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Dataset utilities.\"\"\"\n\nimport functools\nimport pathlib\nfrom typing import Dict, Tuple\n\nfrom absl import logging\nfrom graph_nets import graphs as tf_graphs\nfrom graph_nets import utils_tf\nimport numpy as np\nimport scipy.sparse as sp\nimport tensorflow as tf\nimport tqdm\n\n# pylint: disable=g-bad-import-order\nimport sub_sampler\n\nPath = pathlib.Path\n\nNUM_PAPERS = 121751666\nNUM_AUTHORS = 122383112\nNUM_INSTITUTIONS = 25721\nEMBEDDING_SIZE = 768\nNUM_CLASSES = 153\n\nNUM_NODES = NUM_PAPERS + NUM_AUTHORS + NUM_INSTITUTIONS\nNUM_EDGES = 1_728_364_232\nassert NUM_NODES == 244_160_499\n\nNUM_K_FOLD_SPLITS = 10\n\n\nOFFSETS = {\n    \"paper\": 0,\n    \"author\": NUM_PAPERS,\n    \"institution\": NUM_PAPERS + NUM_AUTHORS,\n}\n\n\nSIZES = {\n    \"paper\": NUM_PAPERS,\n    \"author\": NUM_AUTHORS,\n    \"institution\": NUM_INSTITUTIONS\n}\n\nRAW_DIR = Path(\"raw\")\nPREPROCESSED_DIR = Path(\"preprocessed\")\n\nRAW_NODE_FEATURES_FILENAME = RAW_DIR / \"node_feat.npy\"\nRAW_NODE_LABELS_FILENAME = RAW_DIR / \"node_label.npy\"\nRAW_NODE_YEAR_FILENAME = RAW_DIR / \"node_year.npy\"\n\nTRAIN_INDEX_FILENAME = RAW_DIR / \"train_idx.npy\"\nVALID_INDEX_FILENAME = RAW_DIR / \"train_idx.npy\"\nTEST_INDEX_FILENAME = RAW_DIR / \"train_idx.npy\"\n\nEDGES_PAPER_PAPER_B = PREPROCESSED_DIR / \"paper_paper_b.npz\"\nEDGES_PAPER_PAPER_B_T = PREPROCESSED_DIR / \"paper_paper_b_t.npz\"\nEDGES_AUTHOR_INSTITUTION = PREPROCESSED_DIR / \"author_institution.npz\"\nEDGES_INSTITUTION_AUTHOR = PREPROCESSED_DIR / \"institution_author.npz\"\nEDGES_AUTHOR_PAPER = PREPROCESSED_DIR / \"author_paper.npz\"\nEDGES_PAPER_AUTHOR = PREPROCESSED_DIR / \"paper_author.npz\"\n\nPCA_PAPER_FEATURES_FILENAME = PREPROCESSED_DIR / \"paper_feat_pca_129.npy\"\nPCA_AUTHOR_FEATURES_FILENAME = (\n    PREPROCESSED_DIR / \"author_feat_from_paper_feat_pca_129.npy\")\nPCA_INSTITUTION_FEATURES_FILENAME = (\n    PREPROCESSED_DIR / \"institution_feat_from_paper_feat_pca_129.npy\")\nPCA_MERGED_FEATURES_FILENAME = (\n    PREPROCESSED_DIR / \"merged_feat_from_paper_feat_pca_129.npy\")\n\nNEIGHBOR_INDICES_FILENAME = PREPROCESSED_DIR / \"neighbor_indices.npy\"\nNEIGHBOR_DISTANCES_FILENAME = PREPROCESSED_DIR / \"neighbor_distances.npy\"\n\nFUSED_NODE_LABELS_FILENAME = PREPROCESSED_DIR / \"fused_node_labels.npy\"\nFUSED_PAPER_EDGES_FILENAME = PREPROCESSED_DIR / \"fused_paper_edges.npz\"\nFUSED_PAPER_EDGES_T_FILENAME = PREPROCESSED_DIR / \"fused_paper_edges_t.npz\"\n\nK_FOLD_SPLITS_DIR = Path(\"k_fold_splits\")\n\n\ndef get_raw_directory(data_root):\n  return Path(data_root) / \"raw\"\n\n\ndef get_preprocessed_directory(data_root):\n  return Path(data_root) / \"preprocessed\"\n\n\ndef _log_path_decorator(fn):\n  def _decorated_fn(path, **kwargs):\n    logging.info(\"Loading %s\", path)\n    output = fn(path, **kwargs)\n    logging.info(\"Finish loading %s\", path)\n    return output\n  return _decorated_fn\n\n\n@_log_path_decorator\ndef load_csr(path, debug=False):\n  if debug:\n    # Dummy matrix for debugging.\n    return sp.csr_matrix(np.zeros([10, 10]))\n  return sp.load_npz(str(path))\n\n\n@_log_path_decorator\ndef load_npy(path):\n  return np.load(str(path))\n\n\n@functools.lru_cache()\ndef get_arrays(data_root=\"/data/\",\n               use_fused_node_labels=True,\n               use_fused_node_adjacencies=True,\n               return_pca_embeddings=True,\n               k_fold_split_id=None,\n               return_adjacencies=True,\n               use_dummy_adjacencies=False):\n  \"\"\"Returns all arrays needed for training.\"\"\"\n  logging.info(\"Starting to get files\")\n\n  data_root = Path(data_root)\n\n  array_dict = {}\n  array_dict[\"paper_year\"] = load_npy(data_root / RAW_NODE_YEAR_FILENAME)\n\n  if k_fold_split_id is None:\n    train_indices = load_npy(data_root / TRAIN_INDEX_FILENAME)\n    valid_indices = load_npy(data_root / VALID_INDEX_FILENAME)\n  else:\n    train_indices, valid_indices = get_train_and_valid_idx_for_split(\n        k_fold_split_id, num_splits=NUM_K_FOLD_SPLITS,\n        root_path=data_root / K_FOLD_SPLITS_DIR)\n\n  array_dict[\"train_indices\"] = train_indices\n  array_dict[\"valid_indices\"] = valid_indices\n  array_dict[\"test_indices\"] = load_npy(data_root / TEST_INDEX_FILENAME)\n\n  if use_fused_node_labels:\n    array_dict[\"paper_label\"] = load_npy(data_root / FUSED_NODE_LABELS_FILENAME)\n  else:\n    array_dict[\"paper_label\"] = load_npy(data_root / RAW_NODE_LABELS_FILENAME)\n\n  if return_adjacencies:\n    logging.info(\"Starting to get adjacencies.\")\n    if use_fused_node_adjacencies:\n      paper_paper_index = load_csr(\n          data_root / FUSED_PAPER_EDGES_FILENAME, debug=use_dummy_adjacencies)\n      paper_paper_index_t = load_csr(\n          data_root / FUSED_PAPER_EDGES_T_FILENAME, debug=use_dummy_adjacencies)\n    else:\n      paper_paper_index = load_csr(\n          data_root / EDGES_PAPER_PAPER_B, debug=use_dummy_adjacencies)\n      paper_paper_index_t = load_csr(\n          data_root / EDGES_PAPER_PAPER_B_T, debug=use_dummy_adjacencies)\n    array_dict.update(\n        dict(\n            author_institution_index=load_csr(\n                data_root / EDGES_AUTHOR_INSTITUTION,\n                debug=use_dummy_adjacencies),\n            institution_author_index=load_csr(\n                data_root / EDGES_INSTITUTION_AUTHOR,\n                debug=use_dummy_adjacencies),\n            author_paper_index=load_csr(\n                data_root / EDGES_AUTHOR_PAPER, debug=use_dummy_adjacencies),\n            paper_author_index=load_csr(\n                data_root / EDGES_PAPER_AUTHOR, debug=use_dummy_adjacencies),\n            paper_paper_index=paper_paper_index,\n            paper_paper_index_t=paper_paper_index_t,\n        ))\n\n  if return_pca_embeddings:\n    array_dict[\"bert_pca_129\"] = np.load(\n        data_root / PCA_MERGED_FEATURES_FILENAME, mmap_mode=\"r\")\n    assert array_dict[\"bert_pca_129\"].shape == (NUM_NODES, 129)\n\n  logging.info(\"Finish getting files\")\n\n  # pytype: disable=attribute-error\n  assert array_dict[\"paper_year\"].shape[0] == NUM_PAPERS\n  assert array_dict[\"paper_label\"].shape[0] == NUM_PAPERS\n\n  if return_adjacencies and not use_dummy_adjacencies:\n    array_dict = _fix_adjacency_shapes(array_dict)\n\n    assert array_dict[\"paper_author_index\"].shape == (NUM_PAPERS, NUM_AUTHORS)\n    assert array_dict[\"author_paper_index\"].shape == (NUM_AUTHORS, NUM_PAPERS)\n    assert array_dict[\"paper_paper_index\"].shape == (NUM_PAPERS, NUM_PAPERS)\n    assert array_dict[\"paper_paper_index_t\"].shape == (NUM_PAPERS, NUM_PAPERS)\n    assert array_dict[\"institution_author_index\"].shape == (\n        NUM_INSTITUTIONS, NUM_AUTHORS)\n    assert array_dict[\"author_institution_index\"].shape == (\n        NUM_AUTHORS, NUM_INSTITUTIONS)\n\n  # pytype: enable=attribute-error\n\n  return array_dict\n\n\ndef add_nodes_year(graph, paper_year):\n  nodes = graph.nodes.copy()\n  indices = nodes[\"index\"]\n  year = paper_year[np.minimum(indices, paper_year.shape[0] - 1)].copy()\n  year[nodes[\"type\"] != 0] = 1900\n  nodes[\"year\"] = year\n  return graph._replace(nodes=nodes)\n\n\ndef add_nodes_label(graph, paper_label):\n  nodes = graph.nodes.copy()\n  indices = nodes[\"index\"]\n  label = paper_label[np.minimum(indices, paper_label.shape[0] - 1)]\n  label[nodes[\"type\"] != 0] = 0\n  nodes[\"label\"] = label\n  return graph._replace(nodes=nodes)\n\n\ndef add_nodes_embedding_from_array(graph, array):\n  \"\"\"Adds embeddings from the sstable_service for the indices.\"\"\"\n  nodes = graph.nodes.copy()\n  indices = nodes[\"index\"]\n  embedding_indices = indices.copy()\n  embedding_indices[nodes[\"type\"] == 1] += NUM_PAPERS\n  embedding_indices[nodes[\"type\"] == 2] += NUM_PAPERS + NUM_AUTHORS\n\n  # Gather the embeddings for the indices.\n  nodes[\"features\"] = array[embedding_indices]\n  return graph._replace(nodes=nodes)\n\n\ndef get_graph_subsampling_dataset(\n    prefix, arrays, shuffle_indices, ratio_unlabeled_data_to_labeled_data,\n    max_nodes, max_edges,\n    **subsampler_kwargs):\n  \"\"\"Returns tf_dataset for online sampling.\"\"\"\n\n  def generator():\n    labeled_indices = arrays[f\"{prefix}_indices\"]\n    if ratio_unlabeled_data_to_labeled_data > 0:\n      num_unlabeled_data_to_add = int(ratio_unlabeled_data_to_labeled_data *\n                                      labeled_indices.shape[0])\n      unlabeled_indices = np.random.choice(\n          NUM_PAPERS, size=num_unlabeled_data_to_add, replace=False)\n      root_node_indices = np.concatenate([labeled_indices, unlabeled_indices])\n    else:\n      root_node_indices = labeled_indices\n    if shuffle_indices:\n      root_node_indices = root_node_indices.copy()\n      np.random.shuffle(root_node_indices)\n\n    for index in root_node_indices:\n      graph = sub_sampler.subsample_graph(\n          index,\n          arrays[\"author_institution_index\"],\n          arrays[\"institution_author_index\"],\n          arrays[\"author_paper_index\"],\n          arrays[\"paper_author_index\"],\n          arrays[\"paper_paper_index\"],\n          arrays[\"paper_paper_index_t\"],\n          paper_years=arrays[\"paper_year\"],\n          max_nodes=max_nodes,\n          max_edges=max_edges,\n          **subsampler_kwargs)\n\n      graph = add_nodes_label(graph, arrays[\"paper_label\"])\n      graph = add_nodes_year(graph, arrays[\"paper_year\"])\n      graph = tf_graphs.GraphsTuple(*graph)\n      yield graph\n\n  sample_graph = next(generator())\n\n  return tf.data.Dataset.from_generator(\n      generator,\n      output_signature=utils_tf.specs_from_graphs_tuple(sample_graph))\n\n\ndef paper_features_to_author_features(\n    author_paper_index, paper_features):\n  \"\"\"Averages paper features to authors.\"\"\"\n  assert paper_features.shape[0] == NUM_PAPERS\n  assert author_paper_index.shape[0] == NUM_AUTHORS\n  author_features = np.zeros(\n      [NUM_AUTHORS, paper_features.shape[1]], dtype=paper_features.dtype)\n  for author_i in range(NUM_AUTHORS):\n    paper_indices = author_paper_index[author_i].indices\n    author_features[author_i] = paper_features[paper_indices].mean(\n        axis=0, dtype=np.float32)\n    if author_i % 10000 == 0:\n      logging.info(\"%d/%d\", author_i, NUM_AUTHORS)\n  return author_features\n\n\ndef author_features_to_institution_features(\n    institution_author_index, author_features):\n  \"\"\"Averages author features to institutions.\"\"\"\n  assert author_features.shape[0] == NUM_AUTHORS\n  assert institution_author_index.shape[0] == NUM_INSTITUTIONS\n  institution_features = np.zeros(\n      [NUM_INSTITUTIONS, author_features.shape[1]], dtype=author_features.dtype)\n  for institution_i in range(NUM_INSTITUTIONS):\n    author_indices = institution_author_index[institution_i].indices\n    institution_features[institution_i] = author_features[\n        author_indices].mean(axis=0, dtype=np.float32)\n    if institution_i % 10000 == 0:\n      logging.info(\"%d/%d\", institution_i, NUM_INSTITUTIONS)\n  return institution_features\n\n\ndef generate_fused_paper_adjacency_matrix(neighbor_indices, neighbor_distances,\n                                          paper_paper_csr):\n  \"\"\"Generates fused adjacency matrix for identical nodes.\"\"\"\n  # First construct set of identical node indices.\n  # NOTE: Since we take only top K=26 identical pairs for each node, this is not\n  # actually exhaustive. Also, if A and B are equal, and B and C are equal,\n  # this method would not necessarily detect A and C being equal.\n  # However, this should capture almost all cases.\n  logging.info(\"Generating fused paper adjacency matrix\")\n  eps = 0.0\n  mask = ((neighbor_indices != np.mgrid[:neighbor_indices.shape[0], :1]) &\n          (neighbor_distances <= eps))\n  identical_pairs = list(map(tuple, np.nonzero(mask)))\n  del mask\n\n  # Have a csc version for fast column access.\n  paper_paper_csc = paper_paper_csr.tocsc()\n\n  # Construct new matrix as coo, starting off with original rows/cols.\n  paper_paper_coo = paper_paper_csr.tocoo()\n  new_rows = [paper_paper_coo.row]\n  new_cols = [paper_paper_coo.col]\n\n  for pair in tqdm.tqdm(identical_pairs):\n    # STEP ONE: First merge papers being cited by the pair.\n    # Add edges from second paper, to all papers cited by first paper.\n    cited_by_first = paper_paper_csr.getrow(pair[0]).nonzero()[1]\n    if cited_by_first.shape[0] > 0:\n      new_rows.append(pair[1] * np.ones_like(cited_by_first))\n      new_cols.append(cited_by_first)\n\n    # Add edges from first paper, to all papers cited by second paper.\n    cited_by_second = paper_paper_csr.getrow(pair[1]).nonzero()[1]\n    if cited_by_second.shape[0] > 0:\n      new_rows.append(pair[0] * np.ones_like(cited_by_second))\n      new_cols.append(cited_by_second)\n\n    # STEP TWO: Then merge papers that cite the pair.\n    # Add edges to second paper, from all papers citing the first paper.\n    citing_first = paper_paper_csc.getcol(pair[0]).nonzero()[0]\n    if citing_first.shape[0] > 0:\n      new_rows.append(citing_first)\n      new_cols.append(pair[1] * np.ones_like(citing_first))\n\n    # Add edges to first paper, from all papers citing the second paper.\n    citing_second = paper_paper_csc.getcol(pair[1]).nonzero()[0]\n    if citing_second.shape[0] > 0:\n      new_rows.append(citing_second)\n      new_cols.append(pair[0] * np.ones_like(citing_second))\n\n  logging.info(\"Done with adjacency loop\")\n  paper_paper_coo_shape = paper_paper_coo.shape\n  del paper_paper_csr\n  del paper_paper_csc\n  del paper_paper_coo\n  # All done; now concatenate everything together and form new matrix.\n  new_rows = np.concatenate(new_rows)\n  new_cols = np.concatenate(new_cols)\n  return sp.coo_matrix(\n      (np.ones_like(new_rows, dtype=bool), (new_rows, new_cols)),\n      shape=paper_paper_coo_shape).tocsr()\n\n\ndef generate_k_fold_splits(\n    train_idx, valid_idx, output_path, num_splits=NUM_K_FOLD_SPLITS):\n  \"\"\"Generates splits adding fractions of the validation split to training.\"\"\"\n  output_path = Path(output_path)\n  np.random.seed(42)\n  valid_idx = np.random.permutation(valid_idx)\n  # Split into `num_parts` (almost) identically sized arrays.\n  valid_idx_parts = np.array_split(valid_idx, num_splits)\n\n  for i in range(num_splits):\n    # Add all but the i'th subpart to training set.\n    new_train_idx = np.concatenate(\n        [train_idx, *valid_idx_parts[:i], *valid_idx_parts[i+1:]])\n    # i'th subpart is validation set.\n    new_valid_idx = valid_idx_parts[i]\n    train_path = output_path / f\"train_idx_{i}_{num_splits}.npy\"\n    valid_path = output_path / f\"valid_idx_{i}_{num_splits}.npy\"\n    np.save(train_path, new_train_idx)\n    np.save(valid_path, new_valid_idx)\n    logging.info(\"Saved: %s\", train_path)\n    logging.info(\"Saved: %s\", valid_path)\n\n\ndef get_train_and_valid_idx_for_split(\n    split_id: int,\n    num_splits: int,\n    root_path: str,\n) -> Tuple[np.ndarray, np.ndarray]:\n  \"\"\"Returns train and valid indices for given split.\"\"\"\n  new_train_idx = load_npy(f\"{root_path}/train_idx_{split_id}_{num_splits}.npy\")\n  new_valid_idx = load_npy(f\"{root_path}/valid_idx_{split_id}_{num_splits}.npy\")\n  return new_train_idx, new_valid_idx\n\n\ndef generate_fused_node_labels(neighbor_indices, neighbor_distances,\n                               node_labels, train_indices, valid_indices,\n                               test_indices):\n  \"\"\"Generates fused adjacency matrix for identical nodes.\"\"\"\n  logging.info(\"Generating fused node labels\")\n  valid_indices = set(valid_indices.tolist())\n  test_indices = set(test_indices.tolist())\n  valid_or_test_indices = valid_indices | test_indices\n\n  train_indices = train_indices[train_indices < neighbor_indices.shape[0]]\n  # Go through list of all pairs where one node is in training set, and\n  for i in tqdm.tqdm(train_indices):\n    for j in range(neighbor_indices.shape[1]):\n      other_index = neighbor_indices[i][j]\n      # if the other is not a validation or test node,\n      if other_index in valid_or_test_indices:\n        continue\n      # and they are identical,\n      if neighbor_distances[i][j] == 0:\n        # assign the label of the training node to the other node\n        node_labels[other_index] = node_labels[i]\n\n  return node_labels\n\n\ndef _pad_to_shape(\n    sparse_csr_matrix: sp.csr_matrix,\n    output_shape: Tuple[int, int]) -> sp.csr_matrix:\n  \"\"\"Pads a csr sparse matrix to the given shape.\"\"\"\n\n  # We should not try to expand anything smaller.\n  assert np.all(sparse_csr_matrix.shape <= output_shape)\n\n  # Maybe it already has the right shape.\n  if sparse_csr_matrix.shape == output_shape:\n    return sparse_csr_matrix\n\n  # Append as many indptr elements as we need to match the leading size,\n  # This is achieved by just padding with copies of the last indptr element.\n  required_padding = output_shape[0] - sparse_csr_matrix.shape[0]\n  updated_indptr = np.concatenate(\n      [sparse_csr_matrix.indptr] +\n      [sparse_csr_matrix.indptr[-1:]] * required_padding,\n      axis=0)\n\n  # The change in trailing size does not have structural implications, it just\n  # determines the highest possible value for the indices, so it is sufficient\n  # to just pass the new output shape, with the correct trailing size.\n  return sp.csr.csr_matrix(\n      (sparse_csr_matrix.data,\n       sparse_csr_matrix.indices,\n       updated_indptr),\n      shape=output_shape)\n\n\ndef _fix_adjacency_shapes(\n    arrays: Dict[str, sp.csr.csr_matrix],\n    ) -> Dict[str, sp.csr.csr_matrix]:\n  \"\"\"Fixes the shapes of the adjacency matrices.\"\"\"\n  arrays = arrays.copy()\n  for key in [\"author_institution_index\",\n              \"author_paper_index\",\n              \"paper_paper_index\",\n              \"institution_author_index\",\n              \"paper_author_index\",\n              \"paper_paper_index_t\"]:\n    type_sender = key.split(\"_\")[0]\n    type_receiver = key.split(\"_\")[1]\n    arrays[key] = _pad_to_shape(\n        arrays[key], output_shape=(SIZES[type_sender], SIZES[type_receiver]))\n  return arrays\n"
  },
  {
    "path": "ogb_lsc/mag/datasets.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"MAG240M-LSC datasets.\"\"\"\n\nimport threading\nfrom typing import NamedTuple, Optional\n\n\nimport jax\nimport jraph\nfrom ml_collections import config_dict\nimport numpy as np\nimport tensorflow.compat.v2 as tf\nimport tensorflow_datasets as tfds\n\n# pylint: disable=g-bad-import-order\n# pytype: disable=import-error\nimport batching_utils\nimport data_utils\n\n\n# We only want to load these arrays once for all threads.\n# `get_arrays` uses an LRU cache which is not thread safe.\nLOADING_RAW_ARRAYS_LOCK = threading.Lock()\n\nNUM_CLASSES = data_utils.NUM_CLASSES\n\n\n_MAX_DEPTH_IN_SUBGRAPH = 3\n\n\nclass Batch(NamedTuple):\n  \"\"\"NamedTuple to represent batches of data.\"\"\"\n  graph: jraph.GraphsTuple\n  node_labels: np.ndarray\n  label_mask: np.ndarray\n  central_node_mask: np.ndarray\n  node_indices: np.ndarray\n  absolute_node_indices: np.ndarray\n\n\ndef build_dataset_iterator(\n    data_root: str,\n    split: str,\n    dynamic_batch_size_config: config_dict.ConfigDict,\n    online_subsampling_kwargs: dict,  # pylint: disable=g-bare-generic\n    debug: bool = False,\n    is_training: bool = True,\n    k_fold_split_id: Optional[int] = None,\n    ratio_unlabeled_data_to_labeled_data: float = 0.0,\n    use_all_labels_when_not_training: bool = False,\n    use_dummy_adjacencies: bool = False,\n):\n  \"\"\"Returns an iterator over Batches from the dataset.\"\"\"\n\n  if split == 'test':\n    use_all_labels_when_not_training = True\n\n  if not is_training:\n    ratio_unlabeled_data_to_labeled_data = 0.0\n\n  # Load the master data arrays.\n  with LOADING_RAW_ARRAYS_LOCK:\n    array_dict = data_utils.get_arrays(\n        data_root, k_fold_split_id=k_fold_split_id,\n        use_dummy_adjacencies=use_dummy_adjacencies)\n\n  node_labels = array_dict['paper_label'].reshape(-1)\n  train_indices = array_dict['train_indices'].astype(np.int32)\n  is_train_index = np.zeros(node_labels.shape[0], dtype=np.int32)\n  is_train_index[train_indices] = 1\n  valid_indices = array_dict['valid_indices'].astype(np.int32)\n  is_valid_index = np.zeros(node_labels.shape[0], dtype=np.int32)\n  is_valid_index[valid_indices] = 1\n  is_train_or_valid_index = is_train_index + is_valid_index\n\n  def sstable_to_intermediate_graph(graph):\n    indices = tf.cast(graph.nodes['index'], tf.int32)\n    first_index = indices[..., 0]\n\n    # Add an additional absolute index, but adding offsets to authors, and\n    # institution indices.\n    absolute_index = graph.nodes['index']\n    is_author = graph.nodes['type'] == 1\n    absolute_index = tf.where(\n        is_author, absolute_index + data_utils.NUM_PAPERS, absolute_index)\n    is_institution = graph.nodes['type'] == 2\n    absolute_index = tf.where(\n        is_institution,\n        absolute_index + data_utils.NUM_PAPERS + data_utils.NUM_AUTHORS,\n        absolute_index)\n\n    is_same_as_central_node = tf.math.equal(indices, first_index)\n    input_nodes = graph.nodes\n    graph = graph._replace(\n        nodes={\n            'one_hot_type':\n                tf.one_hot(tf.cast(input_nodes['type'], tf.int32), 3),\n            'one_hot_depth':\n                tf.one_hot(\n                    tf.cast(input_nodes['depth'], tf.int32),\n                    _MAX_DEPTH_IN_SUBGRAPH),\n            'year':\n                tf.expand_dims(input_nodes['year'], axis=-1),\n            'label':\n                tf.one_hot(\n                    tf.cast(input_nodes['label'], tf.int32),\n                    NUM_CLASSES),\n            'is_same_as_central_node':\n                is_same_as_central_node,\n            # Only first node in graph has a valid label.\n            'is_central_node':\n                tf.one_hot(0,\n                           tf.shape(input_nodes['label'])[0]),\n            'index':\n                input_nodes['index'],\n            'absolute_index': absolute_index,\n        },\n        globals=tf.expand_dims(graph.globals, axis=-1),\n    )\n\n    return graph\n\n  ds = data_utils.get_graph_subsampling_dataset(\n      split,\n      array_dict,\n      shuffle_indices=is_training,\n      ratio_unlabeled_data_to_labeled_data=ratio_unlabeled_data_to_labeled_data,\n      max_nodes=dynamic_batch_size_config.n_node - 1,  # Keep space for pads.\n      max_edges=dynamic_batch_size_config.n_edge,\n      **online_subsampling_kwargs)\n  if debug:\n    ds = ds.take(50)\n  ds = ds.map(\n      sstable_to_intermediate_graph,\n      num_parallel_calls=tf.data.experimental.AUTOTUNE)\n\n  if is_training:\n    ds = ds.shard(jax.process_count(), jax.process_index())\n    ds = ds.shuffle(buffer_size=1 if debug else 128)\n    ds = ds.repeat()\n  ds = ds.prefetch(1 if debug else tf.data.experimental.AUTOTUNE)\n  np_ds = iter(tfds.as_numpy(ds))\n  batched_np_ds = batching_utils.dynamically_batch(\n      np_ds,\n      **dynamic_batch_size_config,\n  )\n\n  def intermediate_graph_to_batch(graph):\n    central_node_mask = graph.nodes['is_central_node']\n    label = graph.nodes['label']\n    node_indices = graph.nodes['index']\n    absolute_indices = graph.nodes['absolute_index']\n\n    ### Construct label as a feature for non-central nodes.\n    # First do a lookup with node indices, with a np.minimum to ensure we do not\n    # index out of bounds due to num_authors being larger than num_papers.\n    is_same_as_central_node = graph.nodes['is_same_as_central_node']\n    capped_indices = np.minimum(node_indices, node_labels.shape[0] - 1)\n    label_as_feature = node_labels[capped_indices]\n    # Nodes which are not in train set should get `num_classes` label.\n    # Nodes in test set or non-arXiv nodes have -1 or nan labels.\n\n    # Mask out invalid labels and non-papers.\n    use_label_as_feature = np.logical_and(label_as_feature >= 0,\n                                          graph.nodes['one_hot_type'][..., 0])\n    if split == 'train' or not use_all_labels_when_not_training:\n      # Mask out validation papers and non-arxiv papers who\n      # got labels from fusing with arxiv papers.\n      use_label_as_feature = np.logical_and(is_train_index[capped_indices],\n                                            use_label_as_feature)\n    label_as_feature = np.where(use_label_as_feature, label_as_feature,\n                                NUM_CLASSES)\n    # Mask out central node label in case it appears again.\n    label_as_feature = np.where(is_same_as_central_node, NUM_CLASSES,\n                                label_as_feature)\n    # Nodes which are not papers get `NUM_CLASSES+1` label.\n    label_as_feature = np.where(graph.nodes['one_hot_type'][..., 0],\n                                label_as_feature, NUM_CLASSES+1)\n\n    nodes = {\n        'label_as_feature': label_as_feature,\n        'year': graph.nodes['year'],\n        'bitstring_year': _get_bitstring_year_representation(\n            graph.nodes['year']),\n        'one_hot_type': graph.nodes['one_hot_type'],\n        'one_hot_depth': graph.nodes['one_hot_depth'],\n    }\n\n    graph = graph._replace(\n        nodes=nodes,\n        globals={},\n    )\n    is_train_or_valid_node = np.logical_and(\n        is_train_or_valid_index[capped_indices],\n        graph.nodes['one_hot_type'][..., 0])\n    if is_training:\n      label_mask = np.logical_and(central_node_mask, is_train_or_valid_node)\n    else:\n      # `label_mask` is used to index into valid central nodes by prediction\n      # calculator. Since that computation is only done when not training, and\n      # at that time we are guaranteed all central nodes have valid labels,\n      # we just set label_mask = central_node_mask when not training.\n      label_mask = central_node_mask\n    batch = Batch(\n        graph=graph,\n        node_labels=label,\n        central_node_mask=central_node_mask,\n        label_mask=label_mask,\n        node_indices=node_indices,\n        absolute_node_indices=absolute_indices)\n\n    # Transform integers into one-hots.\n    batch = _add_one_hot_features_to_batch(batch)\n\n    # Gather PCA features.\n    return _add_embeddings_to_batch(batch, array_dict['bert_pca_129'])\n\n  batch_list = []\n  for batch in batched_np_ds:\n    with jax.profiler.StepTraceAnnotation('batch_postprocessing'):\n      batch = intermediate_graph_to_batch(batch)\n    if is_training:\n      batch_list.append(batch)\n      if len(batch_list) == jax.local_device_count():\n        yield jax.device_put_sharded(batch_list, jax.local_devices())\n        batch_list = []\n    else:\n      yield batch\n\n\ndef _get_bitstring_year_representation(year: np.ndarray):\n  \"\"\"Return year as bitstring.\"\"\"\n  min_year = 1900\n  max_training_year = 2018\n  offseted_year = np.minimum(year, max_training_year) - min_year\n  return np.unpackbits(offseted_year.astype(np.uint8), axis=-1)\n\n\ndef _np_one_hot(targets: np.ndarray, nb_classes: int):\n  res = np.zeros(targets.shape + (nb_classes,), dtype=np.float16)\n  np.put_along_axis(res, targets.astype(np.int32)[..., None], 1.0, axis=-1)\n  return res\n\n\ndef _get_one_hot_year_representation(\n    year: np.ndarray,\n    one_hot_type: np.ndarray,\n):\n  \"\"\"Returns good representation for year.\"\"\"\n  # Bucket edges found based on quantiles to bucket into 20 equal sized buckets.\n  bucket_edges = np.array([\n      1964, 1975, 1983, 1989, 1994, 1998, 2001, 2004,\n      2006, 2008, 2009, 2011, 2012, 2013, 2014, 2016,\n      2017,  # 2018, 2019, 2020 contain last-year-of-train, eval, test nodes\n  ])\n  year = np.squeeze(year, axis=-1)\n  year_id = np.searchsorted(bucket_edges, year)\n  is_paper = one_hot_type[..., 0]\n  bucket_id_for_non_paper = len(bucket_edges) + 1\n  bucket_id = np.where(is_paper, year_id, bucket_id_for_non_paper)\n  one_hot_year = _np_one_hot(bucket_id, len(bucket_edges) + 2)\n  return one_hot_year\n\n\ndef _add_one_hot_features_to_batch(batch: Batch) -> Batch:\n  \"\"\"Transforms integer features into one-hot features.\"\"\"\n  nodes = batch.graph.nodes.copy()\n  nodes['one_hot_year'] = _get_one_hot_year_representation(\n      nodes['year'], nodes['one_hot_type'])\n  del nodes['year']\n\n  # NUM_CLASSES plus one category for papers for which a class is not provided\n  # and another for nodes that are not papers.\n  nodes['one_hot_label_as_feature'] = _np_one_hot(\n      nodes['label_as_feature'], NUM_CLASSES + 2)\n  del nodes['label_as_feature']\n  return batch._replace(graph=batch.graph._replace(nodes=nodes))\n\n\ndef _add_embeddings_to_batch(batch: Batch, embeddings: np.ndarray) -> Batch:\n  nodes = batch.graph.nodes.copy()\n  nodes['features'] = embeddings[batch.absolute_node_indices]\n  graph = batch.graph._replace(nodes=nodes)\n  return batch._replace(graph=graph)\n"
  },
  {
    "path": "ogb_lsc/mag/download_mag.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Download data required for training and evaluating models.\"\"\"\n\nimport pathlib\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nfrom google.cloud import storage\n\n# pylint: disable=g-bad-import-order\nimport data_utils\n\nPath = pathlib.Path\n\n\n_BUCKET_NAME = 'deepmind-ogb-lsc'\n_MAX_DOWNLOAD_ATTEMPTS = 5\n\nFLAGS = flags.FLAGS\n\nflags.DEFINE_enum('payload', None, ['data', 'models'],\n                  'Download \"data\" or \"models\"?')\nflags.DEFINE_string('task_root', None, 'Local task root directory')\n\nDATA_RELATIVE_PATHS = (\n    data_utils.RAW_NODE_YEAR_FILENAME,\n    data_utils.TRAIN_INDEX_FILENAME,\n    data_utils.VALID_INDEX_FILENAME,\n    data_utils.TEST_INDEX_FILENAME,\n    data_utils.K_FOLD_SPLITS_DIR,\n    data_utils.FUSED_NODE_LABELS_FILENAME,\n    data_utils.FUSED_PAPER_EDGES_FILENAME,\n    data_utils.FUSED_PAPER_EDGES_T_FILENAME,\n    data_utils.EDGES_AUTHOR_INSTITUTION,\n    data_utils.EDGES_INSTITUTION_AUTHOR,\n    data_utils.EDGES_AUTHOR_PAPER,\n    data_utils.EDGES_PAPER_AUTHOR,\n    data_utils.PCA_MERGED_FEATURES_FILENAME,\n    )\n\n\nclass DataCorruptionError(Exception):\n  pass\n\n\ndef _get_gcs_root():\n  return Path('mag') / FLAGS.payload\n\n\ndef _get_gcs_bucket():\n  storage_client = storage.Client.create_anonymous_client()\n  return storage_client.bucket(_BUCKET_NAME)\n\n\ndef _write_blob_to_destination(blob, task_root, ignore_existing=True):\n  \"\"\"Write the blob.\"\"\"\n  logging.info(\"Copying blob: '%s'\", blob.name)\n  destination_path = Path(task_root) / Path(*Path(blob.name).parts[1:])\n  logging.info(\"  ... to: '%s'\", str(destination_path))\n  if ignore_existing and destination_path.exists():\n    return\n  destination_path.parent.mkdir(parents=True, exist_ok=True)\n  checksum = 'crc32c'\n  for attempt in range(_MAX_DOWNLOAD_ATTEMPTS):\n    try:\n      blob.download_to_filename(destination_path.as_posix(), checksum=checksum)\n    except storage.client.resumable_media.common.DataCorruption:\n      pass\n    else:\n      break\n  else:\n    raise DataCorruptionError(f\"Checksum ('{checksum}') for {blob.name} failed \"\n                              f'after {attempt + 1} attempts')\n\n\ndef main(unused_argv):\n  bucket = _get_gcs_bucket()\n  if FLAGS.payload == 'data':\n    relative_paths = DATA_RELATIVE_PATHS\n  else:\n    relative_paths = (None,)\n  for relative_path in relative_paths:\n    if relative_path is None:\n      relative_path = str(_get_gcs_root())\n    else:\n      relative_path = str(_get_gcs_root() / relative_path)\n    logging.info(\"Copying relative path: '%s'\", relative_path)\n    blobs = bucket.list_blobs(prefix=relative_path)\n    for blob in blobs:\n      _write_blob_to_destination(blob, FLAGS.task_root)\n\n\nif __name__ == '__main__':\n  flags.mark_flag_as_required('payload')\n  flags.mark_flag_as_required('task_root')\n  app.run(main)\n"
  },
  {
    "path": "ogb_lsc/mag/ensemble_predictions.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Ensemble k-fold predictions and generate final submission file.\"\"\"\n\nimport collections\nimport os\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport dill\nimport jax\nimport numpy as np\nfrom ogb import lsc\n\n# pylint: disable=g-bad-import-order\nimport data_utils\nimport losses\n\n\n_NUM_KFOLD_SPLITS = 10\n\nFLAGS = flags.FLAGS\n\n\n_DATA_ROOT = flags.DEFINE_string('data_root', None, 'Path to the data root')\n_SPLIT = flags.DEFINE_enum('split', None, ['valid', 'test'], 'Data split')\n_PREDICTIONS_PATH = flags.DEFINE_string(\n    'predictions_path', None, 'Path with the output of the k-fold models.')\n_OUTPUT_PATH = flags.DEFINE_string('output_path', None, 'Output path.')\n\n\ndef _np_one_hot(targets: np.ndarray, nb_classes: int):\n  res = np.zeros(targets.shape + (nb_classes,), dtype=np.float32)\n  np.put_along_axis(res, targets.astype(np.int32)[..., None], 1.0, axis=-1)\n  return res\n\n\ndef ensemble_predictions(\n    node_idx_to_logits_list,\n    all_labels,\n    node_indices,\n    use_mode_break_tie_by_mean: bool = True,\n):\n  \"\"\"Ensemble together predictions for each node and generate final predictions.\"\"\"\n  # First, assert that each node has the same number of predictions to ensemble.\n  num_predictions_per_node = [\n      len(x) for x in node_idx_to_logits_list.values()\n  ]\n  num_models = np.unique(num_predictions_per_node)\n  assert num_models.shape[0] == 1\n  num_models = num_models[0]\n  # Gather all logits, shape should be [num_nodes, num_models, num_classes].\n  all_logits = np.stack(\n      [np.stack(node_idx_to_logits_list[idx]) for idx in node_indices])\n  assert all_logits.shape == (node_indices.shape[0], num_models,\n                              data_utils.NUM_CLASSES)\n  # Softmax on the final axis.\n  all_probs = jax.nn.softmax(all_logits, axis=-1)\n  # Take average across models axis to get probabilities.\n  mean_probs = np.mean(all_probs, axis=1)\n\n  # Assert there are no 2 equal logits for different classes.\n  max_logit_value = np.max(all_logits, axis=-1)\n  num_classes_with_max_value = (\n      all_logits == max_logit_value[..., None]).sum(axis=-1)\n\n  num_logit_ties = (num_classes_with_max_value > 1).sum()\n  if num_logit_ties:\n    logging.warn(\n        'Found %d models with the exact same logits for two of the classes. '\n        '`argmax` will choose the first.', num_logit_ties)\n\n  # Each model votes on one class per type.\n  all_votes = np.argmax(all_logits, axis=-1)\n  assert all_votes.shape == (node_indices.shape[0], num_models)\n\n  all_votes_one_hot = _np_one_hot(all_votes, data_utils.NUM_CLASSES)\n  assert all_votes_one_hot.shape == (node_indices.shape[0], num_models,\n                                     data_utils.NUM_CLASSES)\n\n  num_votes_per_class = np.sum(all_votes_one_hot, axis=1)\n  assert num_votes_per_class.shape == (\n      node_indices.shape[0], data_utils.NUM_CLASSES)\n\n  if use_mode_break_tie_by_mean:\n    # Slight hack, give high weight to votes (any number > 1 works really)\n    # and add probabilities between [0, 1] per class to tie-break only within\n    # classes with equal votes.\n    total_score = 10 * num_votes_per_class + mean_probs\n  else:\n    # Just take mean.\n    total_score = mean_probs\n\n  ensembled_logits = np.log(total_score)\n  return losses.Predictions(\n      node_indices=node_indices,\n      labels=all_labels,\n      logits=ensembled_logits,\n      predictions=np.argmax(ensembled_logits, axis=-1),\n  )\n\n\ndef load_predictions(predictions_path, split):\n  \"\"\"Loads set of predictions made by given XID.\"\"\"\n\n  # Generate list of predictions per node.\n  # Note for validation each validation index is only present in exactly 1\n  # model of the k-fold, however for test it is present in all of them.\n  node_idx_to_logits_list = collections.defaultdict(list)\n\n  # For the 10 models in the ensemble.\n  for i in range(_NUM_KFOLD_SPLITS):\n    path = os.path.join(predictions_path, str(i))\n\n    # Find subdirectories.\n    # Directories will be something like:\n    # os.path.join(path, \"step_104899_2021-06-14T18:20:05\", \"(test|valid).dill\")\n    # So we make sure there is only one.\n    candidates = []\n    for date_str in os.listdir(path):\n      candidate_path = os.path.join(path, date_str, f'{split}.dill')\n      if os.path.exists(candidate_path):\n        candidates.append(candidate_path)\n    if not candidates:\n      raise ValueError(f'No {split} predictions found at {path}')\n    elif len(candidates) > 1:\n      raise ValueError(f'Found more than one {split} predictions: {candidates}')\n\n    path_for_kth_model_predictions = candidates[0]\n    with open(path_for_kth_model_predictions, 'rb') as f:\n      results = dill.load(f)\n    logging.info('Loaded %s', path_for_kth_model_predictions)\n    for (node_idx, logits) in zip(results.node_indices,\n                                  results.logits):\n      node_idx_to_logits_list[node_idx].append(logits)\n\n  return node_idx_to_logits_list\n\n\ndef generate_ensembled_predictions(\n    data_root: str, predictions_path: str, split: str) -> losses.Predictions:\n  \"\"\"Ensemble checkpoints from all WIDs in XID and generates submission file.\"\"\"\n\n  array_dict = data_utils.get_arrays(\n      data_root=data_root,\n      return_pca_embeddings=False,\n      return_adjacencies=False)\n\n  # Load all valid and test predictions.\n  node_idx_to_logits_list = load_predictions(predictions_path, split)\n\n  # Assert that the indices loaded are as expected.\n  expected_idx = array_dict[f'{split}_indices']\n  idx_found = np.array(list(node_idx_to_logits_list.keys()))\n  assert np.all(np.sort(idx_found) == expected_idx)\n\n  if split == 'valid':\n    true_labels = array_dict['paper_label'][expected_idx.astype(np.int32)]\n  else:\n    # Don't know the test labels.\n    true_labels = np.full(expected_idx.shape, np.nan)\n\n  # Ensemble together all predictions.\n  return ensemble_predictions(\n      node_idx_to_logits_list, true_labels, expected_idx)\n\n\ndef evaluate_validation(valid_predictions):\n\n  evaluator = lsc.MAG240MEvaluator()\n\n  evaluator_ouput = evaluator.eval(\n      dict(y_pred=valid_predictions.predictions.astype(np.float64),\n           y_true=valid_predictions.labels))\n  logging.info(\n      'Validation accuracy as reported by MAG240MEvaluator: %s',\n      evaluator_ouput)\n\n\ndef save_test_submission_file(test_predictions, output_dir):\n  evaluator = lsc.MAG240MEvaluator()\n  evaluator.save_test_submission(\n      dict(y_pred=test_predictions.predictions.astype(np.float64)), output_dir)\n  logging.info('Test submission file generated at %s', output_dir)\n\n\ndef main(argv):\n  del argv\n\n  split = _SPLIT.value\n\n  ensembled_predictions = generate_ensembled_predictions(\n      data_root=_DATA_ROOT.value,\n      predictions_path=_PREDICTIONS_PATH.value,\n      split=split)\n\n  output_dir = _OUTPUT_PATH.value\n  os.makedirs(output_dir, exist_ok=True)\n\n  if split == 'valid':\n    evaluate_validation(ensembled_predictions)\n  elif split == 'test':\n    save_test_submission_file(ensembled_predictions, output_dir)\n\n  ensembled_predictions_path = os.path.join(output_dir, f'{split}.dill')\n  assert not os.path.exists(ensembled_predictions_path)\n  with open(ensembled_predictions_path, 'wb') as f:\n    dill.dump(ensembled_predictions, f)\n  logging.info(\n      '%s predictions stored at %s', split, ensembled_predictions_path)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "ogb_lsc/mag/experiment.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# pylint: disable=line-too-long\n\nr\"\"\"MAG240M-LSC Jaxline experiment.\n\nUsage:\n\n\n```\n# A path pointing to the data root.\nDATA_ROOT=/tmp/mag/data\n# A path for checkpoints.\nCHECKPOINT_DIR=/tmp/checkpoint/\n# A path for output predictions.\nOUTPUT_DIR=/tmp/predictions/\n# Whether we are training a model of a k_fold of models (None for no k-fold)\nK_FOLD_INDEX=0\n\n```\n\n\nSome reusable arguments:\n\n```\nSHARED_ARGUMENTS=\"--config=ogb_lsc/mag/config.py \\\n                  --config.experiment_kwargs.config.dataset_kwargs.data_root=${DATA_ROOT} \\\n                  --config.experiment_kwargs.config.dataset_kwargs.k_fold_split_id=${K_FOLD_INDEX} \\\n                  --config.checkpoint_dir=${CHECKPOINT_DIR}\"\n```\n\nTrain only:\n  ```\n  python -m ogb_lsc.mag.experiment \\\n      ${SHARED_ARGUMENTS} --jaxline_mode=\"train\"\n  RESTORE_PATH=${CHECKPOINT_DIR}/models/latest/step_${STEP}_${TIMESTAMP}\n  ```\n\nTrain with early stopping on a separate eval thread:\n  ```\n  python -m ogb_lsc.mag.experiment \\\n      ${SHARED_ARGUMENTS} --jaxline_mode=\"train_eval_multithreaded\"\n  RESTORE_PATH=${CHECKPOINT_DIR}/models/best/step_${STEP}_${TIMESTAMP}\n  ```\n\nProduce predictions with a pretrained model:\n  ```\n  SPLIT=\"valid\"  # Or \"test\"\n  EPOCHS_TO_ENSEMBLE=50  # We used this in the submission.\n  python -m ogb_lsc.mag.experiment  \\\n      ${SHARED_ARGUMENTS} --jaxline_mode=\"eval\" \\\n      --config.one_off_evaluate=True \\\n      --config.experiment_kwargs.config.num_eval_iterations_to_ensemble=${EPOCHS_TO_ENSEMBLE} \\\n      --config.restore_path=${RESTORE_PATH} \\\n      --config.experiment_kwargs.config.predictions_dir=${OUTPUT_DIR} \\\n      --config.experiment_kwargs.config.eval.split=${SPLIT}\n  ```\n\nNote it is also possible to pass a `restore_path` with `--jaxline_mode=\"train\"`\nand training will continue where it left off. In the case of\n`--jaxline_mode=\"train_eval_multithreaded\"` this will also work, but early\nstopping will not take into account any past best performance up to that\nrestored model.\n\n\nOther useful options:\n\nTo reduce the training batch size in case of OOM, for example for a batch size\nof approximately 48 on average.\n\n```\n  SHARED_ARGUMENTS=\"${SHARED_ARGUMENTS} \\\n      --config.experiment_kwargs.config.training.dynamic_batch_size_config.n_node=16320 \\\n      --config.experiment_kwargs.config.training.dynamic_batch_size_config.n_edge=34560 \\\n      --config.experiment_kwargs.config.training.dynamic_batch_size_config.n_graph=48\"\n```\n\nTo reduce lead time by using dummy adjacency matrices, instead of loading the\nthe full ones into memory.\n\n```\n  SHARED_ARGUMENTS=\"${SHARED_ARGUMENTS} \\\n      --config.experiment_kwargs.config.dataset_kwargs.use_dummy_adjacencies=True\"\n```\n\n\n\"\"\"\n# pylint: enable=line-too-long\n\n\nimport datetime\nimport functools\nimport os\nimport signal\nimport threading\nfrom typing import Tuple\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport chex\nimport dill\nimport haiku as hk\nimport jax\nfrom jax.config import config as jax_config\nimport jax.numpy as jnp\nfrom jaxline import experiment\nfrom jaxline import platform\nfrom jaxline import utils\nimport jraph\nfrom ml_collections import config_dict\nimport numpy as np\nimport optax\nimport tensorflow.compat.v2 as tf\n\n# pylint: disable=g-bad-import-order\nimport datasets\nimport losses\nimport models\nimport schedules\n\n\nFLAGS = flags.FLAGS\n\n\nclass Experiment(experiment.AbstractExperiment):\n  \"\"\"MAG240M-LSC Jaxline experiment.\"\"\"\n\n  CHECKPOINT_ATTRS = {\n      '_params': 'params',\n      '_opt_state': 'opt_state',\n      '_network_state': 'network_state',\n      '_ema_network_state': 'ema_network_state',\n      '_ema_params': 'ema_params',\n  }\n\n  def __init__(\n      self,\n      mode: str,\n      init_rng: jnp.ndarray,\n      config: config_dict.ConfigDict,\n  ):\n    \"\"\"Initializes experiment.\"\"\"\n    super(Experiment, self).__init__(mode=mode, init_rng=init_rng)\n    tf.config.experimental.set_visible_devices([], device_type='GPU')\n    tf.config.experimental.set_visible_devices([], device_type='TPU')\n\n    if mode not in ('train', 'eval', 'train_eval_multithreaded'):\n      raise ValueError(f'Invalid mode {mode}.')\n\n    self.mode = mode\n    self.config = config\n    self.init_rng = init_rng\n    self.forward = hk.transform_with_state(self._forward_fn)\n\n    self._predictions = None\n\n    # Needed for checkpoint restore.\n    self._params = None\n    self._ema_params = None\n    self._network_state = None\n    self._ema_network_state = None\n    self._opt_state = None\n\n    # Track what has started.\n    self._training = False\n    self._evaluating = False\n\n  def _train_init(self):\n    iterator = self._build_numpy_dataset_iterator('train', is_training=True)\n    self._train_input = utils.py_prefetch(lambda: iterator)\n    dummy_batch = next(self._train_input)\n\n    if self._params is None:\n      self._initialize_experiment_state(self.init_rng, dummy_batch)\n    self._update_func = jax.pmap(\n        self._update_func,\n        axis_name='i',\n        donate_argnums=3,\n    )\n    self._training = True\n\n  def _eval_init(self):\n\n    split = self.config.eval.split\n    # Will build the iterator at each evaluation.\n    self._make_eval_dataset_iterator = functools.partial(\n        utils.py_prefetch,\n        lambda: self._build_numpy_dataset_iterator(split, is_training=False))\n    self.eval_forward = jax.jit(\n        functools.partial(self.forward.apply, is_training=False))\n    self._evaluating = True\n\n  #  _             _\n  # | |_ _ __ __ _(_)_ __\n  # | __| '__/ _` | | '_ \\\n  # | |_| | | (_| | | | | |\n  #  \\__|_|  \\__,_|_|_| |_|\n  #\n\n  def step(\n      self,\n      global_step: jnp.ndarray,\n      rng: jnp.ndarray,\n      **unused_args,\n  ) -> losses.LogsDict:\n    \"\"\"See Jaxline base class.\"\"\"\n    if not self._training:\n      self._train_init()\n\n    with jax.profiler.StepTraceAnnotation('next_train_input'):\n      batch = next(self._train_input)\n\n    with jax.profiler.StepTraceAnnotation('update_step'):\n      (self._params, self._ema_params, self._network_state,\n       self._ema_network_state, self._opt_state, stats) = self._update_func(\n           self._params,\n           self._ema_params,\n           self._network_state,\n           self._ema_network_state,\n           self._opt_state,\n           global_step,\n           rng,\n           batch,\n       )\n      del batch  # Buffers donated to _update_func.\n\n    with jax.profiler.StepTraceAnnotation('get_stats'):\n      stats = utils.get_first(stats)\n    return stats\n\n  def _build_numpy_dataset_iterator(self, split: str, is_training: bool):\n    if is_training:\n      dynamic_batch_size_config = self.config.training.dynamic_batch_size_config\n    else:\n      dynamic_batch_size_config = self.config.eval.dynamic_batch_size_config\n    return datasets.build_dataset_iterator(\n        split=split,\n        dynamic_batch_size_config=dynamic_batch_size_config,\n        debug=self.config.debug,\n        is_training=is_training,\n        **self.config.dataset_kwargs)\n\n  def _initialize_experiment_state(\n      self,\n      init_rng: jnp.ndarray,\n      dummy_batch: datasets.Batch,\n  ):\n    \"\"\"Initialize parameters and opt state if not restoring from checkpoint.\"\"\"\n    dummy_graph = dummy_batch.graph\n\n    # Cast features to float32 so that parameters are as appropriate.\n    dummy_graph = dummy_graph._replace(\n        nodes=jax.tree_map(lambda x: x.astype(np.float32), dummy_graph.nodes),\n        edges=jax.tree_map(lambda x: x.astype(np.float32), dummy_graph.edges),\n    )\n    init_key = utils.bcast_local_devices(init_rng)\n    p_init = jax.pmap(functools.partial(self.forward.init, is_training=True))\n    params, network_state = p_init(init_key, dummy_graph)\n    opt_init, _ = self._optimizer(\n        utils.bcast_local_devices(jnp.zeros([], jnp.int32)))\n    opt_state = jax.pmap(opt_init)(params)\n\n    # For EMA decay to work correctly, params/state must be floats.\n    chex.assert_type(jax.tree_leaves(params), jnp.floating)\n    chex.assert_type(jax.tree_leaves(network_state), jnp.floating)\n\n    self._params = params\n    self._ema_params = params\n    self._network_state = network_state\n    self._ema_network_state = network_state\n    self._opt_state = opt_state\n\n  def _get_learning_rate(self, global_step: jnp.ndarray) -> jnp.ndarray:\n    return schedules.learning_schedule(\n        global_step,\n        **self.config.optimizer.learning_rate_schedule,\n    )\n\n  def _optimizer(\n      self,\n      learning_rate: jnp.ndarray,\n  ) -> optax.GradientTransformation:\n    optimizer_fn = getattr(optax, self.config.optimizer.name)\n    return optimizer_fn(\n        learning_rate=learning_rate,\n        **self.config.optimizer.kwargs,\n    )\n\n  def _forward_fn(\n      self,\n      input_graph: jraph.GraphsTuple,\n      is_training: bool,\n      stop_gradient_embedding_to_logits: bool = False,\n  ):\n    model = models.NodePropertyEncodeProcessDecode(\n        num_classes=datasets.NUM_CLASSES,\n        **self.config.model_config,\n    )\n    return model(input_graph, is_training, stop_gradient_embedding_to_logits)\n\n  def _bgrl_loss(\n      self,\n      params: hk.Params,\n      ema_params: hk.Params,\n      network_state: hk.State,\n      ema_network_state: hk.State,\n      rng: jnp.ndarray,\n      batch: datasets.Batch,\n  ) -> Tuple[jnp.ndarray, Tuple[losses.LogsDict, hk.State]]:\n    \"\"\"Computes fully supervised loss.\"\"\"\n\n    # First compute 2 graph corrupted views.\n    first_corruption_key, second_corruption_key, rng = jax.random.split(rng, 3)\n    (first_model_key, first_model_key_ema, second_model_key,\n     second_model_key_ema, rng) = jax.random.split(rng, 5)\n    first_corrupted_graph = losses.get_corrupted_view(\n        batch.graph,\n        rng_key=first_corruption_key,\n        **self.config.training.loss_config.bgrl_loss_config.first_graph_corruption_config,  # pylint:disable=line-too-long\n    )\n    second_corrupted_graph = losses.get_corrupted_view(\n        batch.graph,\n        rng_key=second_corruption_key,\n        **self.config.training.loss_config.bgrl_loss_config.second_graph_corruption_config,  # pylint:disable=line-too-long\n    )\n\n    # Then run the model on both.\n    first_corrupted_output, _ = self.forward.apply(\n        params,\n        network_state,\n        first_model_key,\n        first_corrupted_graph,\n        is_training=True,\n        stop_gradient_embedding_to_logits=True,\n    )\n    second_corrupted_output, _ = self.forward.apply(\n        params,\n        network_state,\n        second_model_key,\n        second_corrupted_graph,\n        is_training=True,\n        stop_gradient_embedding_to_logits=True,\n    )\n    first_corrupted_output_ema, _ = self.forward.apply(\n        ema_params,\n        ema_network_state,\n        first_model_key_ema,\n        first_corrupted_graph,\n        is_training=True,\n        stop_gradient_embedding_to_logits=True,\n    )\n    second_corrupted_output_ema, _ = self.forward.apply(\n        ema_params,\n        ema_network_state,\n        second_model_key_ema,\n        second_corrupted_graph,\n        is_training=True,\n        stop_gradient_embedding_to_logits=True,\n    )\n\n    # These also contain projections for non-central nodes; remove them.\n    num_nodes_per_graph = batch.graph.n_node\n    node_central_indices = jnp.concatenate(\n        [jnp.array([0]), jnp.cumsum(num_nodes_per_graph[:-1])])\n    bgrl_loss, bgrl_stats = losses.bgrl_loss(\n        first_online_predictions=first_corrupted_output\n        .node_projection_predictions[node_central_indices],\n        second_target_projections=second_corrupted_output_ema\n        .node_embedding_projections[node_central_indices],\n        second_online_predictions=second_corrupted_output\n        .node_projection_predictions[node_central_indices],\n        first_target_projections=first_corrupted_output_ema\n        .node_embedding_projections[node_central_indices],\n        symmetrize=self.config.training.loss_config.bgrl_loss_config.symmetrize,\n        valid_mask=batch.central_node_mask[node_central_indices],\n    )\n\n    # Finally train decoder on original graph with optional stop gradient.\n    stop_gradient = (\n        self.config.training.loss_config.bgrl_loss_config\n        .stop_gradient_for_supervised_loss)\n    model_output, new_network_state = self.forward.apply(\n        params,\n        network_state,\n        rng,\n        batch.graph,\n        is_training=True,\n        stop_gradient_embedding_to_logits=stop_gradient,\n    )\n    supervised_loss, supervised_stats = losses.node_classification_loss(\n        model_output.node_logits,\n        batch,\n    )\n    stats = dict(**supervised_stats, **bgrl_stats)\n    total_loss = (\n        supervised_loss +\n        self.config.training.loss_config.bgrl_loss_config.bgrl_loss_scale *\n        bgrl_loss)\n    return total_loss, (stats, new_network_state)\n\n  def _loss(\n      self,\n      params: hk.Params,\n      ema_params: hk.Params,\n      network_state: hk.State,\n      ema_network_state: hk.State,\n      rng: jnp.ndarray,\n      batch: datasets.Batch,\n  ) -> Tuple[jnp.ndarray, Tuple[losses.LogsDict, hk.State]]:\n    \"\"\"Compute loss from params and batch.\"\"\"\n\n    # Cast to float32 since some losses are unstable with float16.\n    graph = batch.graph._replace(\n        nodes=jax.tree_map(lambda x: x.astype(jnp.float32), batch.graph.nodes),\n        edges=jax.tree_map(lambda x: x.astype(jnp.float32), batch.graph.edges),\n    )\n    batch = batch._replace(graph=graph)\n    return self._bgrl_loss(params, ema_params, network_state, ema_network_state,\n                           rng, batch)\n\n  def _update_func(\n      self,\n      params: hk.Params,\n      ema_params: hk.Params,\n      network_state: hk.State,\n      ema_network_state: hk.State,\n      opt_state: optax.OptState,\n      global_step: jnp.ndarray,\n      rng: jnp.ndarray,\n      batch: datasets.Batch,\n  ) -> Tuple[hk.Params, hk.Params, hk.State, hk.State, optax.OptState,\n             losses.LogsDict]:\n    \"\"\"Updates parameters.\"\"\"\n\n    grad_fn = jax.value_and_grad(self._loss, has_aux=True)\n    (_, (stats, new_network_state)), grads = grad_fn(\n        params,\n        ema_params,\n        network_state,\n        ema_network_state,\n        rng,\n        batch)\n    learning_rate = self._get_learning_rate(global_step)\n    _, opt_apply = self._optimizer(learning_rate)\n    grad = jax.lax.pmean(grads, axis_name='i')\n    updates, opt_state = opt_apply(grad, opt_state, params)\n    params = optax.apply_updates(params, updates)\n\n    # Stats and logging.\n    param_norm = optax.global_norm(params)\n    grad_norm = optax.global_norm(grad)\n    ema_rate = schedules.ema_decay_schedule(\n        step=global_step, **self.config.eval.ema_annealing_schedule)\n    num_non_padded_nodes = (\n        batch.graph.n_node.sum() -\n        jraph.get_number_of_padding_with_graphs_nodes(batch.graph))\n    num_non_padded_edges = (\n        batch.graph.n_edge.sum() -\n        jraph.get_number_of_padding_with_graphs_edges(batch.graph))\n    num_non_padded_graphs = (\n        batch.graph.n_node.shape[0] -\n        jraph.get_number_of_padding_with_graphs_graphs(batch.graph))\n    avg_num_nodes = num_non_padded_nodes / num_non_padded_graphs\n    avg_num_edges = num_non_padded_edges / num_non_padded_graphs\n    stats.update(\n        dict(\n            global_step=global_step,\n            grad_norm=grad_norm,\n            param_norm=param_norm,\n            learning_rate=learning_rate,\n            ema_rate=ema_rate,\n            avg_num_nodes=avg_num_nodes,\n            avg_num_edges=avg_num_edges,\n        ))\n    ema_fn = (lambda x, y:  # pylint:disable=g-long-lambda\n              schedules.apply_ema_decay(x, y, ema_rate))\n    ema_params = jax.tree_map(ema_fn, ema_params, params)\n    ema_network_state = jax.tree_map(\n        ema_fn,\n        ema_network_state,\n        network_state,\n    )\n    return (params, ema_params, new_network_state, ema_network_state, opt_state,\n            stats)\n\n  #                  _\n  #   _____   ____ _| |\n  #  / _ \\ \\ / / _` | |\n  # |  __/\\ V / (_| | |\n  #  \\___| \\_/ \\__,_|_|\n  #\n\n  def evaluate(self, global_step, rng, **unused_kwargs):\n    \"\"\"See base class.\"\"\"\n    if not self._evaluating:\n      self._eval_init()\n\n    global_step = np.array(utils.get_first(global_step))\n    ema_params = utils.get_first(self._ema_params)\n    ema_network_state = utils.get_first(self._ema_network_state)\n    rng = utils.get_first(rng)\n\n    # Evaluate using the ema params.\n    results, predictions = self._evaluate_with_ensemble(ema_params,\n                                                        ema_network_state, rng)\n    results['global_step'] = global_step\n\n    # Store predictions if we got a path.\n    self._maybe_save_predictions(predictions, global_step)\n\n    return results\n\n  def _evaluate_with_ensemble(\n      self,\n      params: hk.Params,\n      state: hk.State,\n      rng: jnp.ndarray,\n  ):\n    predictions_for_ensemble = []\n    num_iterations = self.config.num_eval_iterations_to_ensemble\n    for iteration in range(num_iterations):\n      results, predictions = self._evaluate_params(params, state, rng)\n      self._log_results(f'Eval iteration {iteration}/{num_iterations}', results)\n      predictions_for_ensemble.append(predictions)\n\n    if len(predictions_for_ensemble) > 1:\n      predictions = losses.ensemble_predictions_by_probability_average(\n          predictions_for_ensemble)\n      results = losses.get_accuracy_dict(predictions)\n      self._log_results(f'Ensembled {num_iterations} iterations', results)\n    return results, predictions\n\n  def _maybe_save_predictions(self, predictions, global_step):\n    if not self.config.predictions_dir:\n      return\n    split = self.config.eval.split\n    output_dir = os.path.join(\n        self.config.predictions_dir, _get_step_date_label(global_step))\n    os.makedirs(output_dir, exist_ok=True)\n    output_path = os.path.join(output_dir, split + '.dill')\n\n    with open(output_path, 'wb') as f:\n      dill.dump(predictions, f)\n    logging.info('Saved %s predictions at: %s', split, output_path)\n\n  def _evaluate_params(\n      self,\n      params: hk.Params,\n      state: hk.State,\n      rng: jnp.ndarray,\n  ):\n    \"\"\"Evaluate given set of parameters.\"\"\"\n    num_valid = 0\n    predictions_list = []\n    labels_list = []\n    logits_list = []\n    indices_list = []\n    for i, batch in enumerate(self._make_eval_dataset_iterator()):\n      model_output, _ = self.eval_forward(\n          params,\n          state,\n          rng,\n          batch.graph,\n      )\n\n      (masked_indices,\n       masked_predictions,\n       masked_labels,\n       masked_logits) = losses.get_predictions_labels_and_logits(\n           model_output.node_logits, batch)\n      predictions_list.append(masked_predictions)\n      indices_list.append(masked_indices)\n      labels_list.append(masked_labels)\n      logits_list.append(masked_logits)\n\n      num_valid += jnp.sum(batch.label_mask)\n\n      if i % 10 == 0:\n        logging.info('Generate predictons for %d batches so far', i + 1)\n\n    predictions = losses.Predictions(\n        np.concatenate(indices_list, axis=0),\n        np.concatenate(labels_list, axis=0),\n        np.concatenate(predictions_list, axis=0),\n        np.concatenate(logits_list, axis=0))\n\n    if self.config.eval.split == 'test':\n      results = dict(num_valid=num_valid, accuracy=np.nan)\n    else:\n      results = losses.get_accuracy_dict(predictions)\n\n    return results, predictions\n\n  def _log_results(self, prefix, results):\n    logging_str = ', '.join(\n        ['{}={:.4f}'.format(k, float(results[k]))\n         for k in sorted(results.keys())])\n    logging.info('%s: %s', prefix, logging_str)\n\n\ndef _restore_state_to_in_memory_checkpointer(restore_path):\n  \"\"\"Initializes experiment state from a checkpoint.\"\"\"\n\n  # Load pretrained experiment state.\n  python_state_path = os.path.join(restore_path, 'checkpoint.dill')\n  with open(python_state_path, 'rb') as f:\n    pretrained_state = dill.load(f)\n  logging.info('Restored checkpoint from %s', python_state_path)\n\n  # Assign state to a dummy experiment instance for the in-memory checkpointer,\n  # broadcasting to devices.\n  dummy_experiment = Experiment(\n      mode='train', init_rng=0, config=FLAGS.config.experiment_kwargs.config)\n  for attribute, key in Experiment.CHECKPOINT_ATTRS.items():\n    setattr(dummy_experiment, attribute,\n            utils.bcast_local_devices(pretrained_state[key]))\n\n  jaxline_state = dict(\n      global_step=pretrained_state['global_step'],\n      experiment_module=dummy_experiment)\n  snapshot = utils.SnapshotNT(0, jaxline_state)\n\n  # Finally, seed the jaxline `utils.InMemoryCheckpointer` global dict.\n  utils.GLOBAL_CHECKPOINT_DICT['latest'] = utils.CheckpointNT(\n      threading.local(), [snapshot])\n\n\ndef _get_step_date_label(global_step):\n  # Date removing microseconds.\n  date_str = datetime.datetime.now().isoformat().split('.')[0]\n  return f'step_{global_step}_{date_str}'\n\n\ndef _save_state_from_in_memory_checkpointer(\n    save_path, experiment_class: experiment.AbstractExperiment):\n  \"\"\"Saves experiment state to a checkpoint.\"\"\"\n  logging.info('Saving model.')\n  for checkpoint_name, checkpoint in utils.GLOBAL_CHECKPOINT_DICT.items():\n    if not checkpoint.history:\n      logging.info('Nothing to save in \"%s\"', checkpoint_name)\n      continue\n\n    pickle_nest = checkpoint.history[-1].pickle_nest\n    global_step = pickle_nest['global_step']\n\n    state_dict = {'global_step': global_step}\n    for attribute, key in experiment_class.CHECKPOINT_ATTRS.items():\n      state_dict[key] = utils.get_first(\n          getattr(pickle_nest['experiment_module'], attribute))\n    save_dir = os.path.join(\n        save_path, checkpoint_name, _get_step_date_label(global_step))\n    python_state_path = os.path.join(save_dir, 'checkpoint.dill')\n    os.makedirs(save_dir, exist_ok=True)\n    with open(python_state_path, 'wb') as f:\n      dill.dump(state_dict, f)\n    logging.info(\n        'Saved \"%s\" checkpoint to %s', checkpoint_name, python_state_path)\n\n\ndef _setup_signals(save_model_fn):\n  \"\"\"Sets up a signal for model saving.\"\"\"\n  # Save a model on Ctrl+C.\n  def sigint_handler(unused_sig, unused_frame):\n    # Ideally, rather than saving immediately, we would then \"wait\" for a good\n    # time to save. In practice this reads from an in-memory checkpoint that\n    # only saves every 30 seconds or so, so chances of race conditions are very\n    # small.\n    save_model_fn()\n    logging.info(r'Use `Ctrl+\\` to save and exit.')\n\n  # Exit on `Ctrl+\\`, saving a model.\n  prev_sigquit_handler = signal.getsignal(signal.SIGQUIT)\n  def sigquit_handler(unused_sig, unused_frame):\n    # Restore previous handler early, just in case something goes wrong in the\n    # next lines, so it is possible to press again and exit.\n    signal.signal(signal.SIGQUIT, prev_sigquit_handler)\n    save_model_fn()\n    logging.info(r'Exiting on `Ctrl+\\`')\n\n    # Re-raise for clean exit.\n    os.kill(os.getpid(), signal.SIGQUIT)\n\n  signal.signal(signal.SIGINT, sigint_handler)\n  signal.signal(signal.SIGQUIT, sigquit_handler)\n\n\ndef main(argv, experiment_class: experiment.AbstractExperiment):\n\n  # Maybe restore a model.\n  restore_path = FLAGS.config.restore_path\n  if restore_path:\n    _restore_state_to_in_memory_checkpointer(restore_path)\n\n  # Maybe save a model.\n  save_dir = os.path.join(FLAGS.config.checkpoint_dir, 'models')\n  if FLAGS.config.one_off_evaluate:\n    save_model_fn = lambda: None  # No need to save checkpoint in this case.\n  else:\n    save_model_fn = functools.partial(\n        _save_state_from_in_memory_checkpointer, save_dir, experiment_class)\n  _setup_signals(save_model_fn)  # Save on Ctrl+C (continue) or Ctrl+\\ (exit).\n\n  try:\n    platform.main(experiment_class, argv)\n  finally:\n    save_model_fn()  # Save at the end of training or in case of exception.\n\n\nif __name__ == '__main__':\n  jax_config.update('jax_debug_nans', False)\n  flags.mark_flag_as_required('config')\n  app.run(lambda argv: main(argv, Experiment))\n"
  },
  {
    "path": "ogb_lsc/mag/generate_validation_splits.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Generates the k-fold validation splits.\"\"\"\n\nimport os\n\nfrom absl import app\nfrom absl import flags\n\nimport data_utils\n\n\n_DATA_ROOT = flags.DEFINE_string(\n    'data_root', None, required=True,\n    help='Path containing the downloaded data.')\n\n\n_OUTPUT_DIR = flags.DEFINE_string(\n    'output_dir', None, required=True,\n    help='Output directory to write the splits to')\n\n\ndef main(argv):\n  del argv\n  array_dict = data_utils.get_arrays(\n      data_root=_DATA_ROOT.value,\n      return_pca_embeddings=False,\n      return_adjacencies=False)\n\n  os.makedirs(_OUTPUT_DIR.value, exist_ok=True)\n  data_utils.generate_k_fold_splits(\n      train_idx=array_dict['train_indices'],\n      valid_idx=array_dict['valid_indices'],\n      output_path=_OUTPUT_DIR.value,\n      num_splits=data_utils.NUM_K_FOLD_SPLITS)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "ogb_lsc/mag/losses.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Losses and related utilities.\"\"\"\n\nfrom typing import Mapping, Tuple, Sequence, NamedTuple, Dict, Optional\nimport jax\nimport jax.numpy as jnp\nimport jraph\nimport numpy as np\n\n# pylint: disable=g-bad-import-order\nimport datasets\n\nLogsDict = Mapping[str, jnp.ndarray]\n\n\nclass Predictions(NamedTuple):\n  node_indices: np.ndarray\n  labels: np.ndarray\n  predictions: np.ndarray\n  logits: np.ndarray\n\n\ndef node_classification_loss(\n    logits: jnp.ndarray,\n    batch: datasets.Batch,\n    extra_stats: bool = False,\n) -> Tuple[jnp.ndarray, LogsDict]:\n  \"\"\"Gets node-wise classification loss and statistics.\"\"\"\n  log_probs = jax.nn.log_softmax(logits)\n  loss = -jnp.sum(log_probs * batch.node_labels, axis=-1)\n\n  num_valid = jnp.sum(batch.label_mask)\n  labels = jnp.argmax(batch.node_labels, axis=-1)\n  is_correct = (jnp.argmax(log_probs, axis=-1) == labels)\n  num_correct = jnp.sum(is_correct * batch.label_mask)\n  loss = jnp.sum(loss * batch.label_mask) / (num_valid + 1e-8)\n  accuracy = num_correct / (num_valid + 1e-8)\n\n  entropy = -jnp.mean(jnp.sum(jax.nn.softmax(logits) * log_probs, axis=-1))\n\n  stats = {\n      'classification_loss': loss,\n      'prediction_entropy': entropy,\n      'accuracy': accuracy,\n      'num_valid': num_valid,\n      'num_correct': num_correct,\n  }\n  if extra_stats:\n    for k in range(1, 6):\n      stats[f'top_{k}_correct'] = topk_correct(logits, labels,\n                                               batch.label_mask, k)\n  return loss, stats\n\n\ndef get_predictions_labels_and_logits(\n    logits: jnp.ndarray,\n    batch: datasets.Batch,\n) -> Tuple[jnp.ndarray, jnp.ndarray, jnp.ndarray, jnp.ndarray]:\n  \"\"\"Gets prediction labels and logits.\"\"\"\n  mask = batch.label_mask > 0.\n  indices = batch.node_indices[mask]\n  logits = logits[mask]\n  predictions = jnp.argmax(logits, axis=-1)\n  labels = jnp.argmax(batch.node_labels[mask], axis=-1)\n  return indices, predictions, labels, logits\n\n\ndef topk_correct(\n    logits: jnp.ndarray,\n    labels: jnp.ndarray,\n    valid_mask: jnp.ndarray,\n    topk: int,\n) -> jnp.ndarray:\n  \"\"\"Calculates top-k accuracy.\"\"\"\n  pred_ranking = jnp.argsort(logits, axis=1)[:, ::-1]\n  pred_ranking = pred_ranking[:, :topk]\n  is_correct = jnp.any(pred_ranking == labels[:, jnp.newaxis], axis=1)\n  return (is_correct * valid_mask).sum()\n\n\ndef ensemble_predictions_by_probability_average(\n    predictions_list: Sequence[Predictions]) -> Predictions:\n  \"\"\"Ensemble predictions by ensembling the probabilities.\"\"\"\n  _assert_consistent_predictions(predictions_list)\n  all_probs = np.stack([\n      jax.nn.softmax(predictions.logits, axis=-1)\n      for predictions in predictions_list\n  ],\n                       axis=0)\n  ensembled_logits = np.log(all_probs.mean(0))\n  return predictions_list[0]._replace(\n      logits=ensembled_logits, predictions=np.argmax(ensembled_logits, axis=-1))\n\n\ndef get_accuracy_dict(predictions: Predictions) -> Dict[str, float]:\n  \"\"\"Returns the accuracy dict.\"\"\"\n  output_dict = {}\n  output_dict['num_valid'] = predictions.predictions.shape[0]\n  matches = (predictions.labels == predictions.predictions)\n  output_dict['accuracy'] = matches.mean()\n\n  pred_ranking = jnp.argsort(predictions.logits, axis=1)[:, ::-1]\n  for k in range(1, 6):\n    matches = jnp.any(\n        pred_ranking[:, :k] == predictions.labels[:, None], axis=1)\n    output_dict[f'top_{k}_correct'] = matches.mean()\n  return output_dict\n\n\ndef bgrl_loss(\n    first_online_predictions: jnp.ndarray,\n    second_target_projections: jnp.ndarray,\n    second_online_predictions: jnp.ndarray,\n    first_target_projections: jnp.ndarray,\n    symmetrize: bool,\n    valid_mask: jnp.ndarray,\n) -> Tuple[jnp.ndarray, LogsDict]:\n  \"\"\"Implements BGRL loss.\"\"\"\n  first_side_node_loss = jnp.sum(\n      jnp.square(\n          _l2_normalize(first_online_predictions, axis=-1) -\n          _l2_normalize(second_target_projections, axis=-1)),\n      axis=-1)\n  if symmetrize:\n    second_side_node_loss = jnp.sum(\n        jnp.square(\n            _l2_normalize(second_online_predictions, axis=-1) -\n            _l2_normalize(first_target_projections, axis=-1)),\n        axis=-1)\n    node_loss = first_side_node_loss + second_side_node_loss\n  else:\n    node_loss = first_side_node_loss\n  loss = (node_loss * valid_mask).sum() / (valid_mask.sum() + 1e-6)\n  return loss, dict(bgrl_loss=loss)\n\n\ndef get_corrupted_view(\n    graph: jraph.GraphsTuple,\n    feature_drop_prob: float,\n    edge_drop_prob: float,\n    rng_key: jnp.ndarray,\n) -> jraph.GraphsTuple:\n  \"\"\"Returns corrupted graph view.\"\"\"\n  node_key, edge_key = jax.random.split(rng_key)\n\n  def mask_feature(x):\n    mask = jax.random.bernoulli(node_key, 1 - feature_drop_prob, x.shape)\n    return x * mask\n\n  # Randomly mask features with fixed probability.\n  nodes = jax.tree_map(mask_feature, graph.nodes)\n\n  # Simulate dropping of edges by changing genuine edges to self-loops on\n  # the padded node.\n  num_edges = graph.senders.shape[0]\n  last_node_idx = graph.n_node.sum() - 1\n  edge_mask = jax.random.bernoulli(edge_key, 1 - edge_drop_prob, [num_edges])\n  senders = jnp.where(edge_mask, graph.senders, last_node_idx)\n  receivers = jnp.where(edge_mask, graph.receivers, last_node_idx)\n  # Note that n_edge will now be invalid since edges in the middle of the list\n  # will correspond to the final graph. Set n_edge to None to ensure we do not\n  # accidentally use this.\n  return graph._replace(\n      nodes=nodes,\n      senders=senders,\n      receivers=receivers,\n      n_edge=None,\n  )\n\n\ndef _assert_consistent_predictions(predictions_list: Sequence[Predictions]):\n  first_predictions = predictions_list[0]\n  for predictions in predictions_list:\n    assert np.all(predictions.node_indices == first_predictions.node_indices)\n    assert np.all(predictions.labels == first_predictions.labels)\n    assert np.all(\n        predictions.predictions == np.argmax(predictions.logits, axis=-1))\n\n\ndef _l2_normalize(\n    x: jnp.ndarray,\n    axis: Optional[int] = None,\n    epsilon: float = 1e-6,\n) -> jnp.ndarray:\n  return x * jax.lax.rsqrt(\n      jnp.sum(jnp.square(x), axis=axis, keepdims=True) + epsilon)\n"
  },
  {
    "path": "ogb_lsc/mag/models.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"MAG240M-LSC models.\"\"\"\n\nfrom typing import Callable, NamedTuple, Sequence\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport jraph\n\n\n_REDUCER_NAMES = {\n    'sum':\n        jax.ops.segment_sum,\n    'mean':\n        jraph.segment_mean,\n    'softmax':\n        jraph.segment_softmax,\n}\n\n\nclass ModelOutput(NamedTuple):\n  node_embeddings: jnp.ndarray\n  node_embedding_projections: jnp.ndarray\n  node_projection_predictions: jnp.ndarray\n  node_logits: jnp.ndarray\n\n\ndef build_update_fn(\n    name: str,\n    output_sizes: Sequence[int],\n    activation: Callable[[jnp.ndarray], jnp.ndarray],\n    normalization_type: str,\n    is_training: bool,\n):\n  \"\"\"Builds update function.\"\"\"\n\n  def single_mlp(inner_name: str):\n    \"\"\"Creates a single MLP performing the update.\"\"\"\n    mlp = hk.nets.MLP(\n        output_sizes=output_sizes,\n        name=inner_name,\n        activation=activation)\n    mlp = jraph.concatenated_args(mlp)\n    if normalization_type == 'layer_norm':\n      norm = hk.LayerNorm(\n          axis=-1,\n          create_scale=True,\n          create_offset=True,\n          name=name + '_layer_norm')\n    elif normalization_type == 'batch_norm':\n      batch_norm = hk.BatchNorm(\n          create_scale=True,\n          create_offset=True,\n          decay_rate=0.9,\n          name=f'{inner_name}_batch_norm',\n          cross_replica_axis=None if hk.running_init() else 'i',\n      )\n      norm = lambda x: batch_norm(x, is_training)\n    elif normalization_type == 'none':\n      return mlp\n    else:\n      raise ValueError(f'Unknown normalization type {normalization_type}')\n    return jraph.concatenated_args(hk.Sequential([mlp, norm]))\n\n  return single_mlp(f'{name}_homogeneous')\n\n\ndef build_gn(\n    output_sizes: Sequence[int],\n    activation: Callable[[jnp.ndarray], jnp.ndarray],\n    suffix: str,\n    use_sent_edges: bool,\n    is_training: bool,\n    dropedge_rate: float,\n    normalization_type: str,\n    aggregation_function: str,\n):\n  \"\"\"Builds an InteractionNetwork with MLP update functions.\"\"\"\n  node_update_fn = build_update_fn(\n      f'node_processor_{suffix}',\n      output_sizes,\n      activation=activation,\n      normalization_type=normalization_type,\n      is_training=is_training,\n  )\n  edge_update_fn = build_update_fn(\n      f'edge_processor_{suffix}',\n      output_sizes,\n      activation=activation,\n      normalization_type=normalization_type,\n      is_training=is_training,\n  )\n\n  def maybe_dropedge(x):\n    \"\"\"Dropout on edge messages.\"\"\"\n    if not is_training:\n      return x\n    return x * hk.dropout(\n        hk.next_rng_key(),\n        dropedge_rate,\n        jnp.ones([x.shape[0], 1]),\n    )\n\n  dropped_edge_update_fn = lambda *args: maybe_dropedge(edge_update_fn(*args))\n  return jraph.InteractionNetwork(\n      update_edge_fn=dropped_edge_update_fn,\n      update_node_fn=node_update_fn,\n      aggregate_edges_for_nodes_fn=_REDUCER_NAMES[aggregation_function],\n      include_sent_messages_in_node_update=use_sent_edges,\n  )\n\n\ndef _get_activation_fn(name: str) -> Callable[[jnp.ndarray], jnp.ndarray]:\n  if name == 'identity':\n    return lambda x: x\n  if hasattr(jax.nn, name):\n    return getattr(jax.nn, name)\n  raise ValueError('Unknown activation function %s specified. '\n                   'See https://jax.readthedocs.io/en/latest/jax.nn.html'\n                   'for the list of supported function names.')\n\n\nclass NodePropertyEncodeProcessDecode(hk.Module):\n  \"\"\"Node Property Prediction Encode Process Decode Model.\"\"\"\n\n  def __init__(\n      self,\n      mlp_hidden_sizes: Sequence[int],\n      latent_size: int,\n      num_classes: int,\n      num_message_passing_steps: int = 2,\n      activation: str = 'relu',\n      dropout_rate: float = 0.0,\n      dropedge_rate: float = 0.0,\n      use_sent_edges: bool = False,\n      disable_edge_updates: bool = False,\n      normalization_type: str = 'layer_norm',\n      aggregation_function: str = 'sum',\n      name='NodePropertyEncodeProcessDecode',\n  ):\n    super().__init__(name=name)\n    self._num_classes = num_classes\n    self._latent_size = latent_size\n    self._output_sizes = list(mlp_hidden_sizes) + [latent_size]\n    self._num_message_passing_steps = num_message_passing_steps\n    self._activation = _get_activation_fn(activation)\n    self._dropout_rate = dropout_rate\n    self._dropedge_rate = dropedge_rate\n    self._use_sent_edges = use_sent_edges\n    self._disable_edge_updates = disable_edge_updates\n    self._normalization_type = normalization_type\n    self._aggregation_function = aggregation_function\n\n  def _dropout_graph(self, graph: jraph.GraphsTuple) -> jraph.GraphsTuple:\n    node_key, edge_key = hk.next_rng_keys(2)\n    nodes = hk.dropout(node_key, self._dropout_rate, graph.nodes)\n    edges = graph.edges\n    if not self._disable_edge_updates:\n      edges = hk.dropout(edge_key, self._dropout_rate, edges)\n    return graph._replace(nodes=nodes, edges=edges)\n\n  def _encode(\n      self,\n      graph: jraph.GraphsTuple,\n      is_training: bool,\n  ) -> jraph.GraphsTuple:\n    node_embed_fn = build_update_fn(\n        'node_encoder',\n        self._output_sizes,\n        activation=self._activation,\n        normalization_type=self._normalization_type,\n        is_training=is_training,\n    )\n    edge_embed_fn = build_update_fn(\n        'edge_encoder',\n        self._output_sizes,\n        activation=self._activation,\n        normalization_type=self._normalization_type,\n        is_training=is_training,\n    )\n    gn = jraph.GraphMapFeatures(edge_embed_fn, node_embed_fn)\n    graph = gn(graph)\n    if is_training:\n      graph = self._dropout_graph(graph)\n    return graph\n\n  def _process(\n      self,\n      graph: jraph.GraphsTuple,\n      is_training: bool,\n  ) -> jraph.GraphsTuple:\n    for idx in range(self._num_message_passing_steps):\n      net = build_gn(\n          output_sizes=self._output_sizes,\n          activation=self._activation,\n          suffix=str(idx),\n          use_sent_edges=self._use_sent_edges,\n          is_training=is_training,\n          dropedge_rate=self._dropedge_rate,\n          normalization_type=self._normalization_type,\n          aggregation_function=self._aggregation_function)\n      residual_graph = net(graph)\n      graph = graph._replace(nodes=graph.nodes + residual_graph.nodes)\n      if not self._disable_edge_updates:\n        graph = graph._replace(edges=graph.edges + residual_graph.edges)\n      if is_training:\n        graph = self._dropout_graph(graph)\n    return graph\n\n  def _node_mlp(\n      self,\n      graph: jraph.GraphsTuple,\n      is_training: bool,\n      output_size: int,\n      name: str,\n  ) -> jnp.ndarray:\n    decoder_sizes = list(self._output_sizes[:-1]) + [output_size]\n    net = build_update_fn(\n        name,\n        decoder_sizes,\n        self._activation,\n        normalization_type=self._normalization_type,\n        is_training=is_training,\n    )\n    return net(graph.nodes)\n\n  def __call__(\n      self,\n      graph: jraph.GraphsTuple,\n      is_training: bool,\n      stop_gradient_embedding_to_logits: bool = False,\n  ) -> ModelOutput:\n    # Note that these update configs may need to change if\n    # we switch back to GraphNetwork rather than InteractionNetwork.\n\n    graph = self._encode(graph, is_training)\n    graph = self._process(graph, is_training)\n    node_embeddings = graph.nodes\n    node_projections = self._node_mlp(graph, is_training, self._latent_size,\n                                      'projector')\n    node_predictions = self._node_mlp(\n        graph._replace(nodes=node_projections),\n        is_training,\n        self._latent_size,\n        'predictor',\n    )\n    if stop_gradient_embedding_to_logits:\n      graph = jax.tree_map(jax.lax.stop_gradient, graph)\n    node_logits = self._node_mlp(graph, is_training, self._num_classes,\n                                 'logits_decoder')\n    return ModelOutput(\n        node_embeddings=node_embeddings,\n        node_logits=node_logits,\n        node_embedding_projections=node_projections,\n        node_projection_predictions=node_predictions,\n    )\n"
  },
  {
    "path": "ogb_lsc/mag/neighbor_builder.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Find neighborhoods around paper feature embeddings.\"\"\"\n\nimport pathlib\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport annoy\nimport numpy as np\nimport scipy.sparse as sp\n\n# pylint: disable=g-bad-import-order\nimport data_utils\n\nPath = pathlib.Path\n\n\n_PAPER_PAPER_B_PATH = 'ogb_mag_adjacencies/paper_paper_b.npz'\n\nFLAGS = flags.FLAGS\nflags.DEFINE_string('data_root', None, 'Data root directory')\n\n\ndef _read_paper_pca_features():\n  data_root = Path(FLAGS.data_root)\n  path = data_root / data_utils.PCA_PAPER_FEATURES_FILENAME\n  with open(path, 'rb') as fid:\n    return np.load(fid)\n\n\ndef _read_adjacency_indices():\n  # Get adjacencies.\n  return data_utils.get_arrays(\n      data_root=FLAGS.data_root,\n      use_fused_node_labels=False,\n      use_fused_node_adjacencies=False,\n      return_pca_embeddings=False,\n  )\n\n\ndef build_annoy_index(features):\n  \"\"\"Build the Annoy index.\"\"\"\n  logging.info('Building annoy index')\n  num_vectors, vector_size = features.shape\n  annoy_index = annoy.AnnoyIndex(vector_size, 'euclidean')\n  for i, x in enumerate(features):\n    annoy_index.add_item(i, x)\n    if i % 1000000 == 0:\n      logging.info('Adding: %d / %d (%.3g %%)', i, num_vectors,\n                   100 * i / num_vectors)\n  n_trees = 10\n  _ = annoy_index.build(n_trees)\n  return annoy_index\n\n\ndef _get_annoy_index_path():\n  return Path(FLAGS.data_root) / data_utils.PREPROCESSED_DIR / 'annoy_index.ann'\n\n\ndef save_annoy_index(annoy_index):\n  logging.info('Saving annoy index')\n  index_path = _get_annoy_index_path()\n  index_path.parent.mkdir(parents=True, exist_ok=True)\n  annoy_index.save(str(index_path))\n\n\ndef read_annoy_index(features):\n  index_path = _get_annoy_index_path()\n  vector_size = features.shape[1]\n  annoy_index = annoy.AnnoyIndex(vector_size, 'euclidean')\n  annoy_index.load(str(index_path))\n  return annoy_index\n\n\ndef compute_neighbor_indices_and_distances(features):\n  \"\"\"Use the pre-built Annoy index to compute neighbor indices and distances.\"\"\"\n  logging.info('Computing neighbors and distances')\n  annoy_index = read_annoy_index(features)\n  num_vectors = features.shape[0]\n\n  k = 20\n  pad_k = 5\n  search_k = -1\n  neighbor_indices = np.zeros([num_vectors, k + pad_k + 1], dtype=np.int32)\n  neighbor_distances = np.zeros([num_vectors, k + pad_k + 1], dtype=np.float32)\n  for i in range(num_vectors):\n    neighbor_indices[i], neighbor_distances[i] = annoy_index.get_nns_by_item(\n        i, k + pad_k + 1, search_k=search_k, include_distances=True)\n    if i % 10000 == 0:\n      logging.info('Finding neighbors %d / %d', i, num_vectors)\n  return neighbor_indices, neighbor_distances\n\n\ndef _write_neighbors(neighbor_indices, neighbor_distances):\n  \"\"\"Write neighbor indices and distances.\"\"\"\n  logging.info('Writing neighbors')\n  indices_path = Path(FLAGS.data_root) / data_utils.NEIGHBOR_INDICES_FILENAME\n  distances_path = (\n      Path(FLAGS.data_root) / data_utils.NEIGHBOR_DISTANCES_FILENAME)\n  indices_path.parent.mkdir(parents=True, exist_ok=True)\n  distances_path.parent.mkdir(parents=True, exist_ok=True)\n  with open(indices_path, 'wb') as fid:\n    np.save(fid, neighbor_indices)\n  with open(distances_path, 'wb') as fid:\n    np.save(fid, neighbor_distances)\n\n\ndef _write_fused_edges(fused_paper_adjacency_matrix):\n  \"\"\"Write fused edges.\"\"\"\n  data_root = Path(FLAGS.data_root)\n  edges_path = data_root / data_utils.FUSED_PAPER_EDGES_FILENAME\n  edges_t_path = data_root / data_utils.FUSED_PAPER_EDGES_T_FILENAME\n  edges_path.parent.mkdir(parents=True, exist_ok=True)\n  edges_t_path.parent.mkdir(parents=True, exist_ok=True)\n  with open(edges_path, 'wb') as fid:\n    sp.save_npz(fid, fused_paper_adjacency_matrix)\n  with open(edges_t_path, 'wb') as fid:\n    sp.save_npz(fid, fused_paper_adjacency_matrix.T)\n\n\ndef _write_fused_nodes(fused_node_labels):\n  \"\"\"Write fused nodes.\"\"\"\n  labels_path = Path(FLAGS.data_root) / data_utils.FUSED_NODE_LABELS_FILENAME\n  labels_path.parent.mkdir(parents=True, exist_ok=True)\n  with open(labels_path, 'wb') as fid:\n    np.save(fid, fused_node_labels)\n\n\ndef main(unused_argv):\n  paper_pca_features = _read_paper_pca_features()\n  # Find neighbors.\n  annoy_index = build_annoy_index(paper_pca_features)\n  save_annoy_index(annoy_index)\n  neighbor_indices, neighbor_distances = compute_neighbor_indices_and_distances(\n      paper_pca_features)\n  del paper_pca_features\n  _write_neighbors(neighbor_indices, neighbor_distances)\n\n  data = _read_adjacency_indices()\n  paper_paper_csr = data['paper_paper_index']\n  paper_label = data['paper_label']\n  train_indices = data['train_indices']\n  valid_indices = data['valid_indices']\n  test_indices = data['test_indices']\n  del data\n\n  fused_paper_adjacency_matrix = data_utils.generate_fused_paper_adjacency_matrix(\n      neighbor_indices, neighbor_distances, paper_paper_csr)\n  _write_fused_edges(fused_paper_adjacency_matrix)\n  del fused_paper_adjacency_matrix\n  del paper_paper_csr\n\n  fused_node_labels = data_utils.generate_fused_node_labels(\n      neighbor_indices, neighbor_distances, paper_label, train_indices,\n      valid_indices, test_indices)\n  _write_fused_nodes(fused_node_labels)\n\n\nif __name__ == '__main__':\n  flags.mark_flag_as_required('data_root')\n  app.run(main)\n"
  },
  {
    "path": "ogb_lsc/mag/organize_data.sh",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#!/bin/bash\n\nset -e\n\nwhile getopts \":i:o:\" opt; do\n  case ${opt} in\n    i )\n      INPUT_DIR=$OPTARG\n      ;;\n    o )\n      TASK_ROOT=$OPTARG\n      ;;\n    \\? )\n      echo \"Usage: organize_data.sh -i <Downloaded data dir> -o <Task root directory>\"\n      ;;\n    : )\n      echo \"Invalid option: $OPTARG requires an argument\" 1>&2\n      ;;\n  esac\ndone\nshift $((OPTIND -1))\n\n# Get this script's directory.\nSCRIPT_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" &> /dev/null && pwd )\"\n\nif [[ -z \"${INPUT_DIR}\" ]]; then\n  echo \"Need INPUT_DIR argument (-i <INPUT_DIR>)\"\n  exit 1\nfi\n\nif [[ -z \"${TASK_ROOT}\" ]]; then\n  echo \"Need TASK_ROOT argument (-o <TASK_ROOT>)\"\n  exit 1\nfi\n\nDATA_ROOT=\"${TASK_ROOT}\"/data\n\n# Create raw directory to move all files to it.\nmkdir \"${INPUT_DIR}\"/mag240m_kddcup2021/raw\n\nmv \"${INPUT_DIR}\"/mag240m_kddcup2021/processed/paper/node_feat.npy \\\n   \"${INPUT_DIR}\"/mag240m_kddcup2021/processed/paper/node_label.npy \\\n   \"${INPUT_DIR}\"/mag240m_kddcup2021/processed/paper/node_year.npy \\\n   \"${DATA_ROOT}\"/raw\nmv \"${INPUT_DIR}\"/mag240m_kddcup2021/processed/author___affiliated_with___institution/edge_index.npy \\\n   \"${DATA_ROOT}\"/raw/author_affiliated_with_institution_edges.npy\nmv \"${ROOT}\"/mag240m_kddcup2021/processed/author___writes___paper/edge_index.npy \\\n   \"${DATA_ROOT}\"/raw/author_writes_paper_edges.npy\nmv \"${ROOT}\"/mag240m_kddcup2021/processed/paper___cites___paper/edge_index.npy \\\n   \"${DATA_ROOT}\"/raw/paper_cites_paper_edges.npy\n\n# Split and save the train/valid/test indices to the raw directory, with names\n\"train_idx.npy\", \"valid_idx.npy\", \"test_idx.npy\":\npython3 \"${SCRIPT_DIR}\"/split_and_save_indices.py --data_root=${DATA_ROOT}\n"
  },
  {
    "path": "ogb_lsc/mag/pca_builder.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Apply PCA to the papers' BERT features.\n\nCompute papers' PCA features.\nRecompute author and institution features from the paper PCA features.\n\"\"\"\n\nimport pathlib\nimport time\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport numpy as np\n\n# pylint: disable=g-bad-import-order\nimport data_utils\n\nPath = pathlib.Path\n\n_NUMBER_OF_PAPERS_TO_ESTIMATE_PCA_ON = 1000000  # None indicates all.\n\nFLAGS = flags.FLAGS\nflags.DEFINE_string('data_root', None, 'Data root directory')\n\n\ndef _sample_vectors(vectors, num_samples, seed=0):\n  \"\"\"Randomly sample some vectors.\"\"\"\n  rand = np.random.RandomState(seed=seed)\n  indices = rand.choice(vectors.shape[0], size=num_samples, replace=False)\n  return vectors[indices]\n\n\ndef _pca(feat):\n  \"\"\"Returns evals (variances), evecs (rows are principal components).\"\"\"\n  cov = np.cov(feat.T)\n  _, evals, evecs = np.linalg.svd(cov, full_matrices=True)\n  return evals, evecs\n\n\ndef _read_raw_paper_features():\n  \"\"\"Load raw paper features.\"\"\"\n  path = Path(FLAGS.data_root) / data_utils.RAW_NODE_FEATURES_FILENAME\n  try:  # Use mmap if possible.\n    features = np.load(path, mmap_mode='r')\n  except FileNotFoundError:\n    with open(path, 'rb') as fid:\n      features = np.load(fid)\n  return features\n\n\ndef _get_principal_components(features,\n                              num_principal_components=129,\n                              num_samples=10000,\n                              seed=2,\n                              dtype='f4'):\n  \"\"\"Estimate PCA features.\"\"\"\n  sample = _sample_vectors(\n      features[:_NUMBER_OF_PAPERS_TO_ESTIMATE_PCA_ON], num_samples, seed=seed)\n  # Compute PCA basis.\n  _, evecs = _pca(sample)\n  return evecs[:num_principal_components].T.astype(dtype)\n\n\ndef _project_features_onto_principal_components(features,\n                                                principal_components,\n                                                block_size=1000000):\n  \"\"\"Apply PCA iteratively.\"\"\"\n  num_principal_components = principal_components.shape[1]\n  dtype = principal_components.dtype\n  num_vectors = features.shape[0]\n  num_features = features.shape[0]\n  num_blocks = (num_features - 1) // block_size + 1\n  pca_features = np.empty([num_vectors, num_principal_components], dtype=dtype)\n  # Loop through in blocks.\n  start_time = time.time()\n  for i in range(num_blocks):\n    i_start = i * block_size\n    i_end = (i + 1) * block_size\n    f = np.array(features[i_start:i_end].copy())\n    pca_features[i_start:i_end] = np.dot(f, principal_components).astype(dtype)\n    del f\n    elapsed_time = time.time() - start_time\n    time_left = elapsed_time / (i + 1) * (num_blocks - i - 1)\n    logging.info('Features %d / %d. Elapsed time %.1f. Time left: %.1f', i_end,\n                 num_vectors, elapsed_time, time_left)\n  return pca_features\n\n\ndef _read_adjacency_indices():\n  # Get adjacencies.\n  return data_utils.get_arrays(\n      data_root=FLAGS.data_root,\n      use_fused_node_labels=False,\n      use_fused_node_adjacencies=False,\n      return_pca_embeddings=False,\n  )\n\n\ndef _compute_author_pca_features(paper_pca_features, index_arrays):\n  return data_utils.paper_features_to_author_features(\n      index_arrays['author_paper_index'], paper_pca_features)\n\n\ndef _compute_institution_pca_features(author_pca_features, index_arrays):\n  return data_utils.author_features_to_institution_features(\n      index_arrays['institution_author_index'], author_pca_features)\n\n\ndef _write_array(path, array):\n  path.parent.mkdir(parents=True, exist_ok=True)\n  with open(path, 'wb') as fid:\n    np.save(fid, array)\n\n\ndef main(unused_argv):\n  data_root = Path(FLAGS.data_root)\n\n  raw_paper_features = _read_raw_paper_features()\n  principal_components = _get_principal_components(raw_paper_features)\n  paper_pca_features = _project_features_onto_principal_components(\n      raw_paper_features, principal_components)\n  del raw_paper_features\n  del principal_components\n\n  paper_pca_path = data_root / data_utils.PCA_PAPER_FEATURES_FILENAME\n  author_pca_path = data_root / data_utils.PCA_AUTHOR_FEATURES_FILENAME\n  institution_pca_path = (\n      data_root / data_utils.PCA_INSTITUTION_FEATURES_FILENAME)\n  merged_pca_path = data_root / data_utils.PCA_MERGED_FEATURES_FILENAME\n  _write_array(paper_pca_path, paper_pca_features)\n\n  # Compute author and institution features from paper PCA features.\n  index_arrays = _read_adjacency_indices()\n  author_pca_features = _compute_author_pca_features(paper_pca_features,\n                                                     index_arrays)\n  _write_array(author_pca_path, author_pca_features)\n\n  institution_pca_features = _compute_institution_pca_features(\n      author_pca_features, index_arrays)\n  _write_array(institution_pca_path, institution_pca_features)\n\n  merged_pca_features = np.concatenate(\n      [paper_pca_features, author_pca_features, institution_pca_features],\n      axis=0)\n  del author_pca_features\n  del institution_pca_features\n  _write_array(merged_pca_path, merged_pca_features)\n\n\nif __name__ == '__main__':\n  flags.mark_flag_as_required('data_root')\n  app.run(main)\n"
  },
  {
    "path": "ogb_lsc/mag/requirements.txt",
    "content": "wheel\nabsl-py>=0.12.0\nchex>=0.0.7\ndill>=0.3.3\ndm-haiku>=0.0.4\n# jaxline\ngit+https://github.com/deepmind/jaxline@927695a0b88e480d085590736e2daa36c2f2c68b\noptax>=0.0.8\nml_collections\nnumpy>=1.16.4\ntensorflow>=2.5.0\ntensorflow-datasets>=4.3.0\ndm-tree>=0.1.6\nogb>=1.3.1\n# graph_nets\ngit+git://github.com/deepmind/graph_nets.git@64771dff0d74ca8e77b1f1dcd5a7d26634356d61\nscipy>=1.2.1\njaxlib>=0.1.67+cuda110\ntqdm>=4.28.1\nannoy>=1.0.3\n# jraph\ngit+git://github.com/deepmind/jraph.git@80d2f9e4d82f841a71d56ba44fa9e8781e93ae1f\ngoogle-cloud-storage\n"
  },
  {
    "path": "ogb_lsc/mag/run_preprocessing.sh",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#!/bin/bash\n\nset -e\nset -x\n\n\nwhile getopts \":r:\" opt; do\n  case ${opt} in\n    r )\n      TASK_ROOT=$OPTARG\n      ;;\n    \\? )\n      echo \"Usage: preprocess_data.sh -r <Task root directory>\"\n      ;;\n    : )\n      echo \"Invalid option: $OPTARG requires an argument\" 1>&2\n      ;;\n  esac\ndone\nshift $((OPTIND -1))\n\n# Get this script's directory.\nSCRIPT_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" &> /dev/null && pwd )\"\n\n\nDATA_ROOT=\"${TASK_ROOT}\"/data\nPREPROCESSED_DIR=\"${DATA_ROOT}\"/preprocessed\n\n# Create preprocessed directory to move all files to it.\nmkdir -p \"${PREPROCESSED_DIR}\"\n\n# Run the CSR edge builder.\npython \"${SCRIPT_DIR}\"/csr_builder.py --data_root=\"${DATA_ROOT}\"\n\n# Run the PCA feature builder.\npython \"${SCRIPT_DIR}\"/pca_builder.py --data_root=\"${DATA_ROOT}\"\n\n# Run the neighbor-finder/fuser builder.\npython \"${SCRIPT_DIR}\"/neighbor_builder.py --data_root=\"${DATA_ROOT}\"\n\n# Run the validation split generator.\npython \"${SCRIPT_DIR}\"/generate_validation_splits.py \\\n  --data_root=\"${DATA_ROOT}\" \\\n  --output_dir=\"${DATA_ROOT}/k_fold_splits\"\n"
  },
  {
    "path": "ogb_lsc/mag/run_pretrained_eval.sh",
    "content": "#!/bin/bash\n# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -e\nset -x\n\nwhile getopts \":r:\" opt; do\n  case ${opt} in\n    r )\n      TASK_ROOT=$OPTARG\n      ;;\n    \\? )\n      echo \"Usage: run_pretrained_eval.sh -r <Task root directory>\"\n      ;;\n    : )\n      echo \"Invalid option: $OPTARG requires an argument\" 1>&2\n      ;;\n  esac\ndone\nshift $((OPTIND -1))\n\n# Get this script's directory.\nSCRIPT_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" &> /dev/null && pwd )\"\n\necho \"\nNote this script may take several days to run with default parameters on\na single machine. Reducing EPOCHS_TO_ENSEMBLE from 50 to < 5 should yield\nslighly lower validation performance but possibly similar test performance.\n\"\n\necho \"\nPre-requisites (See README):\n* Python dependencies have been installed.\n* pre-processed data is available in the task dir.\n* pre-trained model weights are available in the task dir.\n\"\n\nread -p \"Press enter to continue\"\n\n\n# Can set this to \"valid\" or \"test\".\n# On test the results will be ensembled for 10 models, and a submission file\n# will be created.\n# On validation, the results will be \"gathered\" for 10 models. This is because\n# each model is trained on the train split + 90% of the validation split,\n# and only evaluated on the remaining 10%, such that each validation paper\n# is left out from training in exactly one of the 10 models.\nSPLIT=\"test\"\n\n# We used 50 epochs in the submission to sample different subgraphs around\n# each central node.\n# For each of the 10 models in the ensemble, a single epoch takes about 1\n# 10-25 minutes (depending on the GPU) on the test set, and about 2-3 minutes\n# for the corresponding k-fold split of the validation set.\nEPOCHS_TO_ENSEMBLE=50\n\nDATA_ROOT=${TASK_ROOT}/data/\nMODELS_ROOT=${TASK_ROOT}/models/\nCHECKPOINT_DIR=${TASK_ROOT}/checkpoints/\nOUTPUT_DIR=${TASK_ROOT}/predictions/\n\n# We run two seeds for each model of the k=10 k-fold\n# first seed group:  [100, 101, 102, 103, 104, 105, 106, 107, 108, 109]\n# second seed group: [110, 111, 112, 113, 114, 115, 116, 117, 118, 119]\n# Thes are the seeds that was selected based on cross validation for each fold.\nBEST_SEEDS=(100 111 102 113 104 105 106 107 108 109)\nfor K_FOLD_INDEX in {0..9}; do\n  SEED=${BEST_SEEDS[${K_FOLD_INDEX}]}\n  RESTORE_PATH=${MODELS_ROOT}/k${K_FOLD_INDEX}_seed${SEED}\n  echo \"Running k=${K_FOLD_INDEX} on ${SPLIT} split using ${RESTORE_PATH}\"\n  # This saves the predictions for the K_FOLD_INDEXd'th model in the k-fold to\n  # \"config.experiment_kwargs.config.predictions_dir\" for subsequent ensembling\n  python \"${SCRIPT_DIR}\"/experiment.py \\\n      --jaxline_mode=\"eval\" \\\n      --config=\"${SCRIPT_DIR}\"/config.py  \\\n      --config.one_off_evaluate=True \\\n      --config.checkpoint_dir=${CHECKPOINT_DIR}/${K_FOLD_INDEX} \\\n      --config.restore_path=${RESTORE_PATH} \\\n      --config.experiment_kwargs.config.dataset_kwargs.data_root=${DATA_ROOT} \\\n      --config.experiment_kwargs.config.dataset_kwargs.k_fold_split_id=${K_FOLD_INDEX} \\\n      --config.experiment_kwargs.config.num_eval_iterations_to_ensemble=${EPOCHS_TO_ENSEMBLE} \\\n      --config.experiment_kwargs.config.predictions_dir=${OUTPUT_DIR}/${K_FOLD_INDEX} \\\n      --config.experiment_kwargs.config.eval.split=${SPLIT}\n\ndone\n\n\npython \"${SCRIPT_DIR}\"/ensemble_predictions.py \\\n     --split=${SPLIT} \\\n     --data_root=${DATA_ROOT} \\\n     --predictions_path=${OUTPUT_DIR} \\\n     --output_path=${OUTPUT_DIR}\n\n\necho \"Done\"\n"
  },
  {
    "path": "ogb_lsc/mag/run_training.sh",
    "content": "#!/bin/bash\n# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -e\nset -x\n\nwhile getopts \":r:\" opt; do\n  case ${opt} in\n    r )\n      TASK_ROOT=$OPTARG\n      ;;\n    \\? )\n      echo \"Usage: run_training.sh -r <Task root directory>\"\n      ;;\n    : )\n      echo \"Invalid option: $OPTARG requires an argument\" 1>&2\n      ;;\n  esac\ndone\nshift $((OPTIND -1))\n\n# Get this script's directory.\nSCRIPT_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" &> /dev/null && pwd )\"\n\necho \"\nThese scripts are provided for illustrative purposes. It is not practical for\nactual training since it only uses a single machine, and likely requires\nreducing the batch size and/or model size to fit on a single GPU.\n\nFor the actual submission we used training distributed in different ways:\n* We used 4x Cloud TPU v4s to implement batch parallelism, so batch\n  size is effectively 8 times larger than the values in the config.\n* We used separate CPUs to subsample neighborhoods around each central node, to\n  maximize TPU usage by always having a batch ready for the next iteration.\n* We ran the online early-stopping evaluator on a separate machine with an\n  NVIDIA V100 GPU.\n* We run identical replicas of all of the above for each of the 20 models\n  trained.\n\nUsing those mechanisms, training runs at ~2 steps per second, reaching 500k\nsteps in under 3 days.\n\"\n\necho \"\nPre-requisites (See README):\n* Python dependencies have been installed.\n* pre-processed data is available in the task dir.\n\"\n\nread -p \"Press enter to continue\"\n\n# During early stopping seed/selection we ensembled 5 iterations.\nEPOCHS_TO_ENSEMBLE=5\n\nDATA_ROOT=${TASK_ROOT}/data/\nCHECKPOINT_DIR=${TASK_ROOT}/checkpoints/\n\n# We run two seeds for each model of the k=10 k-fold.\nBASE_SEED=100\nfor SEED_OFFSET in 0 10; do\nfor K_FOLD_INDEX in {0..9}; do\n  MODEL_SEED=`expr ${BASE_SEED} + ${SEED_OFFSET} + ${K_FOLD_INDEX}`\n  SUFFIX=k${K_FOLD_INDEX}_seed${MODEL_SEED}\n  echo \"Running k=${K_FOLD_INDEX} with init seed ${MODEL_SEED}\"\n\n  # This runs training (each model is trained on train split + 90% of the\n  # validation split) with early stopping, storing both \"latest\" model and\n  # \"best\" early-stopped model at `--config.checkpoint_dir`.\n\n  # Models are early stopped based on accuracy of on 10% of the validation data\n  # (each K_FOLD_INDEX leaves a different 10% of data out from training) left\n  # out from training.\n\n  # Models are stored at the end of training. Intermediate models can also be\n  # stored while training by sending a SIGINT signal (Ctrl+C) which will not\n  # interrupt the training.\n\n  # It is possible to interrupt training using (Ctrl+\\) and then continue\n  # passing the corresponding `--config.restore_path=${RESTORE_PATH}` which is\n  # stored when interrupting.\n\n  python \"${SCRIPT_DIR}\"/experiment.py \\\n      --jaxline_mode=\"train_eval_multithreaded\" \\\n      --config=\"${SCRIPT_DIR}\"/config.py  \\\n      --config.random_seed=${MODEL_SEED} \\\n      --config.checkpoint_dir=${CHECKPOINT_DIR}/${SUFFIX} \\\n      --config.experiment_kwargs.config.dataset_kwargs.data_root=${DATA_ROOT} \\\n      --config.experiment_kwargs.config.dataset_kwargs.k_fold_split_id=${K_FOLD_INDEX} \\\n      --config.experiment_kwargs.config.num_eval_iterations_to_ensemble=${EPOCHS_TO_ENSEMBLE} \\\n      --config.experiment_kwargs.config.eval.split=\"valid\"\n\ndone\ndone\n\n# Each of the 20 (two for each value of k) jobs generate paths of the form:\n# RESTORE_PATH=${--config.checkpoint_dir}/models/best/step_${STEP}_${TIMESTAMP}\n# From each pair, the best one is selected (based on the validation accuracy\n# as reported on the logs or in tensorboard events also stored at\n# `${--config.checkpoint_dir}/eval`). These can then be used as the\n# \"RESTORE_PATHS\" for `./run_pretrained_eval.sh`.\n\n\necho \"Done\"\n"
  },
  {
    "path": "ogb_lsc/mag/schedules.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Scheduling utilities.\"\"\"\n\nimport jax.numpy as jnp\n\n\ndef apply_ema_decay(\n    ema_value: jnp.ndarray,\n    current_value: jnp.ndarray,\n    decay: jnp.ndarray,\n) -> jnp.ndarray:\n  \"\"\"Implements EMA.\"\"\"\n  return ema_value * decay + current_value * (1 - decay)\n\n\ndef ema_decay_schedule(\n    base_rate: jnp.ndarray,\n    step: jnp.ndarray,\n    total_steps: jnp.ndarray,\n    use_schedule: bool,\n) -> jnp.ndarray:\n  \"\"\"Anneals decay rate to 1 with cosine schedule.\"\"\"\n  if not use_schedule:\n    return base_rate\n  multiplier = _cosine_decay(step, total_steps, 1.)\n  return 1. - (1. - base_rate) * multiplier\n\n\ndef _cosine_decay(\n    global_step: jnp.ndarray,\n    max_steps: int,\n    initial_value: float,\n) -> jnp.ndarray:\n  \"\"\"Simple implementation of cosine decay from TF1.\"\"\"\n  global_step = jnp.minimum(global_step, max_steps).astype(jnp.float32)\n  cosine_decay_value = 0.5 * (1 + jnp.cos(jnp.pi * global_step / max_steps))\n  decayed_learning_rate = initial_value * cosine_decay_value\n  return decayed_learning_rate\n\n\ndef learning_schedule(\n    global_step: jnp.ndarray,\n    base_learning_rate: float,\n    total_steps: int,\n    warmup_steps: int,\n    use_schedule: bool,\n) -> float:\n  \"\"\"Cosine learning rate scheduler.\"\"\"\n  # Compute LR & Scaled LR\n  if not use_schedule:\n    return base_learning_rate\n  warmup_learning_rate = (\n      global_step.astype(jnp.float32) / int(warmup_steps) *\n      base_learning_rate if warmup_steps > 0 else base_learning_rate)\n\n  # Cosine schedule after warmup.\n  decay_learning_rate = _cosine_decay(global_step - warmup_steps,\n                                      total_steps - warmup_steps,\n                                      base_learning_rate)\n  return jnp.where(global_step < warmup_steps, warmup_learning_rate,\n                   decay_learning_rate)\n"
  },
  {
    "path": "ogb_lsc/mag/split_and_save_indices.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Split and save the train/valid/test indices.\n\nUsage:\n\npython3 split_and_save_indices.py --data_root=\"mag_data\"\n\"\"\"\n\nimport pathlib\n\nfrom absl import app\nfrom absl import flags\nimport numpy as np\nimport torch\n\nPath = pathlib.Path\n\n\nFLAGS = flags.FLAGS\n\nflags.DEFINE_string('data_root', None, 'Data root directory')\n\n\ndef main(argv) -> None:\n  if len(argv) > 1:\n    raise app.UsageError('Too many command-line arguments.')\n  mag_directory = Path(FLAGS.data_root) / 'mag240m_kddcup2021'\n  raw_directory = mag_directory / 'raw'\n  raw_directory.parent.mkdir(parents=True, exist_ok=True)\n  splits_dict = torch.load(str(mag_directory / 'split_dict.pt'))\n  for key, indices in splits_dict.items():\n    np.save(str(raw_directory / f'{key}_idx.npy'), indices)\n\n\nif __name__ == '__main__':\n  flags.mark_flag_as_required('root')\n  app.run(main)\n"
  },
  {
    "path": "ogb_lsc/mag/sub_sampler.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Utilities for subsampling the MAG dataset.\"\"\"\n\nimport collections\n\nimport jraph\nimport numpy as np\n\n\ndef get_or_sample_row(node_id: int,\n                      nb_neighbours: int,\n                      csr_matrix, remove_duplicates: bool):\n  \"\"\"Either obtain entire row or a subsampled set of neighbours.\"\"\"\n  if node_id + 1 >= csr_matrix.indptr.shape[0]:\n    lo = 0\n    hi = 0\n  else:\n    lo = csr_matrix.indptr[node_id]\n    hi = csr_matrix.indptr[node_id + 1]\n  if lo == hi:  # Skip empty neighbourhoods\n    neighbours = None\n  elif hi - lo <= nb_neighbours:\n    neighbours = csr_matrix.indices[lo:hi]\n  elif hi - lo < 5 * nb_neighbours:  # For small surroundings, sample directly\n    nb_neighbours = min(nb_neighbours, hi - lo)\n    inds = lo + np.random.choice(hi - lo, size=(nb_neighbours,), replace=False)\n    neighbours = csr_matrix.indices[inds]\n  else:  # Otherwise, do not slice -- sample indices instead\n    # To extend GraphSAGE (\"uniform w/ replacement\"), modify this call\n    inds = np.random.randint(lo, hi, size=(nb_neighbours,))\n    if remove_duplicates:\n      inds = np.unique(inds)\n    neighbours = csr_matrix.indices[inds]\n  return neighbours\n\n\ndef get_neighbours(node_id: int,\n                   node_type: int,\n                   neighbour_type: int,\n                   nb_neighbours: int,\n                   remove_duplicates: bool,\n                   author_institution_csr, institution_author_csr,\n                   author_paper_csr, paper_author_csr,\n                   paper_paper_csr, paper_paper_transpose_csr):\n  \"\"\"Fetch the edge indices from one node to corresponding neighbour type.\"\"\"\n  if node_type == 0 and neighbour_type == 0:\n    csr = paper_paper_transpose_csr  # Citing\n  elif node_type == 0 and neighbour_type == 1:\n    csr = paper_author_csr\n  elif node_type == 0 and neighbour_type == 3:\n    csr = paper_paper_csr  # Cited\n  elif node_type == 1 and neighbour_type == 0:\n    csr = author_paper_csr\n  elif node_type == 1 and neighbour_type == 2:\n    csr = author_institution_csr\n  elif node_type == 2 and neighbour_type == 1:\n    csr = institution_author_csr\n  else:\n    raise ValueError('Non-existent edge type requested')\n  return get_or_sample_row(node_id, nb_neighbours, csr, remove_duplicates)\n\n\ndef get_senders(neighbour_type: int,\n                sender_index,\n                paper_features):\n  \"\"\"Get the sender features from given neighbours.\"\"\"\n  if neighbour_type == 0 or neighbour_type == 3:\n    sender_features = paper_features[sender_index]\n  elif neighbour_type == 1 or neighbour_type == 2:\n    sender_features = np.zeros((sender_index.shape[0],\n                                paper_features.shape[1]))  # Consider averages\n  else:\n    raise ValueError('Non-existent node type requested')\n  return sender_features\n\n\ndef make_edge_type_feature(node_type: int, neighbour_type: int):\n  edge_feats = np.zeros(7)\n  edge_feats[node_type] = 1.0\n  edge_feats[neighbour_type + 3] = 1.0\n  return edge_feats\n\n\ndef subsample_graph(paper_id: int,\n                    author_institution_csr,\n                    institution_author_csr,\n                    author_paper_csr,\n                    paper_author_csr,\n                    paper_paper_csr,\n                    paper_paper_transpose_csr,\n                    max_nb_neighbours_per_type,\n                    max_nodes=None,\n                    max_edges=None,\n                    paper_years=None,\n                    remove_future_nodes=False,\n                    deduplicate_nodes=False) -> jraph.GraphsTuple:\n  \"\"\"Subsample a graph around given paper ID.\"\"\"\n  if paper_years is not None:\n    root_paper_year = paper_years[paper_id]\n  else:\n    root_paper_year = None\n  # Add the center node as \"node-zero\"\n  sub_nodes = [paper_id]\n  num_nodes_in_subgraph = 1\n  num_edges_in_subgraph = 0\n  reached_node_budget = False\n  reached_edge_budget = False\n  node_and_type_to_index_in_subgraph = dict()\n  node_and_type_to_index_in_subgraph[(paper_id, 0)] = 0\n  # Store all (integer) depths as an additional feature\n  depths = [0]\n  types = [0]\n  sub_edges = []\n  sub_senders = []\n  sub_receivers = []\n\n  # Store all unprocessed neighbours\n  # Each neighbour is stored as a 4-tuple (node_index in original graph,\n  # node_index in subsampled graph, type, number of hops away from source).\n  # TYPES: 0: paper, 1: author, 2: institution, 3: paper (for bidirectional)\n  neighbour_deque = collections.deque([(paper_id, 0, 0, 0)])\n\n  max_depth = len(max_nb_neighbours_per_type)\n\n  while neighbour_deque and not reached_edge_budget:\n    left_entry = neighbour_deque.popleft()\n    node_index, node_index_in_sampled_graph, node_type, node_depth = left_entry\n\n    # Expand from this node, to a node of related type\n    for neighbour_type in range(4):\n      if reached_edge_budget:\n        break  # Budget may have been reached in previous type; break here.\n      nb_neighbours = max_nb_neighbours_per_type[node_depth][node_type][neighbour_type]  # pylint:disable=line-too-long\n      # Only extend if we want to sample further in this edge type\n      if nb_neighbours > 0:\n        sampled_neighbors = get_neighbours(\n            node_index,\n            node_type,\n            neighbour_type,\n            nb_neighbours,\n            deduplicate_nodes,\n            author_institution_csr,\n            institution_author_csr,\n            author_paper_csr,\n            paper_author_csr,\n            paper_paper_csr,\n            paper_paper_transpose_csr,\n        )\n\n        if sampled_neighbors is not None:\n          if remove_future_nodes and root_paper_year is not None:\n            if neighbour_type in [0, 3]:\n              sampled_neighbors = [\n                  x for x in sampled_neighbors\n                  if paper_years[x] <= root_paper_year\n              ]\n              if not sampled_neighbors:\n                continue\n\n          nb_neighbours = len(sampled_neighbors)\n          edge_feature = make_edge_type_feature(node_type, neighbour_type)\n\n          for neighbor_original_idx in sampled_neighbors:\n            # Key into dict of existing nodes using both node id and type.\n            neighbor_key = (neighbor_original_idx, neighbour_type % 3)\n            # Get existing idx in subgraph if it exists.\n            neighbor_subgraph_idx = node_and_type_to_index_in_subgraph.get(\n                neighbor_key, None)\n            if (not reached_node_budget and\n                (not deduplicate_nodes or neighbor_subgraph_idx is None)):\n              # If it does not exist already, or we are not deduplicating,\n              # just create a new node and update the dict.\n              neighbor_subgraph_idx = num_nodes_in_subgraph\n              node_and_type_to_index_in_subgraph[neighbor_key] = (\n                  neighbor_subgraph_idx)\n              num_nodes_in_subgraph += 1\n              sub_nodes.append(neighbor_original_idx)\n              types.append(neighbour_type % 3)\n              depths.append(node_depth + 1)\n              if max_nodes is not None and num_nodes_in_subgraph >= max_nodes:\n                reached_node_budget = True\n                continue  # Move to next neighbor which might already exist.\n              if node_depth < max_depth - 1:\n                # If the neighbours are to be further expanded, enqueue them.\n                # Expand only if the nodes did not already exist.\n                neighbour_deque.append(\n                    (neighbor_original_idx, neighbor_subgraph_idx,\n                     neighbour_type % 3, node_depth + 1))\n            # The neighbor id within graph is now fixed; just add edges.\n            if neighbor_subgraph_idx is not None:\n              # Either node existed before or was successfully added.\n              sub_senders.append(neighbor_subgraph_idx)\n              sub_receivers.append(node_index_in_sampled_graph)\n              sub_edges.append(edge_feature)\n              num_edges_in_subgraph += 1\n            if max_edges is not None and num_edges_in_subgraph >= max_edges:\n              reached_edge_budget = True\n              break  # Break out of adding edges for this neighbor type\n\n  # Stitch the graph together\n  sub_nodes = np.array(sub_nodes, dtype=np.int32)\n\n  if sub_senders:\n    sub_senders = np.array(sub_senders, dtype=np.int32)\n    sub_receivers = np.array(sub_receivers, dtype=np.int32)\n    sub_edges = np.stack(sub_edges, axis=0)\n  else:\n    # Use empty arrays.\n    sub_senders = np.zeros([0], dtype=np.int32)\n    sub_receivers = np.zeros([0], dtype=np.int32)\n    sub_edges = np.zeros([0, 7])\n\n  # Finally, derive the sizes\n  sub_n_node = np.array([sub_nodes.shape[0]])\n  sub_n_edge = np.array([sub_senders.shape[0]])\n  assert sub_nodes.shape[0] == num_nodes_in_subgraph\n  assert sub_edges.shape[0] == num_edges_in_subgraph\n  if max_nodes is not None:\n    assert num_nodes_in_subgraph <= max_nodes\n  if max_edges is not None:\n    assert num_edges_in_subgraph <= max_edges\n\n  types = np.array(types)\n  depths = np.array(depths)\n  sub_nodes = {\n      'index': sub_nodes.astype(np.int32),\n      'type': types.astype(np.int16),\n      'depth': depths.astype(np.int16),\n  }\n\n  return jraph.GraphsTuple(nodes=sub_nodes,\n                           edges=sub_edges.astype(np.float16),\n                           senders=sub_senders.astype(np.int32),\n                           receivers=sub_receivers.astype(np.int32),\n                           globals=np.array([0], dtype=np.int16),\n                           n_node=sub_n_node.astype(dtype=np.int32),\n                           n_edge=sub_n_edge.astype(dtype=np.int32))\n"
  },
  {
    "path": "ogb_lsc/pcq/README.md",
    "content": "# DeepMind entry for PCQM4M-LSC\n\nThis repository contains DeepMind's entry to the [PCQM4M-LSC](https://ogb.stanford.edu/kddcup2021/pcqm4m/) (quantum chemistry)\ntrack of the [OGB Large-Scale Challenge](https://ogb.stanford.edu/kddcup2021/)\n(OGB-LSC).\n\nFor full details regarding this entry, please see our [technical report](https://arxiv.org/abs/2107.09422).\n\n## DeepMind PCQ Team (\"Quantum\")\n\n(in alphabetical order)\n\n- Ravichandra Addanki\n- Peter Battaglia\n- David Budden\n- Andreea Deac\n- Jonathan Godwin\n- Alvaro Sanchez-Gonzalez\n- Wai Lok Sibon Li\n- Jacklynn Stott\n- Shantanu Thakoor\n- Petar Veličković\n\n\n## Performance\n\nOur final test set performance was achieved by pooling an ensemble of 20 models\n(10 folds x 2 seeds). See [technical report](https://arxiv.org/abs/2107.09422) for details.\n\nEach model was trained for < 48 hours using 4x Google Cloud TPUv4 and 1x AMD\nEPYC 7B12 64-core CPU @2.25GHz.\n\nInference takes < 6 hours on 1x NVIDIA V100 16GB GPU and 1x Intel Xeon Gold 6148\n20-core CPU @2.40GHz.\n\n# Running our model\n\n## Setup\n\nYou can set up Python virtual environment (you might need to install the\n`python3-venv` package first) with all needed dependencies inside the forked\n`deepmind_research` repository using:\n\n```bash\npython3 -m venv /tmp/pcq_venv\nsource /tmp/pcq_venv/bin/activate\npip3 install --upgrade pip setuptools wheel\npip3 install -r ogb_lsc/pcq/requirements.txt\n```\n\n## Download and pre-process data\n\nAll the additional features used in training (k-fold splits and conformer\nposition features) can be generated by running:\n\n```bash\n/bin/bash run_preprocessing.sh -r ${HOME}/pcq/\n```\n\nOr downloaded using:\n\n```bash\npython download_pcq.py --task_root=${HOME}/pcq/ --payload=\"data\"\n```\n\n## Reproducing our final results\n\nWe have provided pre-trained weights of our final submission (~150 GB worth of\nmodel checkpoints) for convenience, which can be downloaded with:\n\n```bash\npython download_pcq.py --task_root=${HOME}/pcq/ --payload=\"models\"\n```\n\nThen to reproduce our final results please run:\n\n```bash\n/bin/bash run_pretrained_eval.sh -r ${HOME}/pcq/\n```\n\nNote that this script does not use the downloaded conformer position features,\nand instead computes them for the test set as part of the script.\n\n## Retraining our model\n\nDisclaimer: This script is provided for illustrative purposes. It is not\npractical for actual training since it only uses a single machine, and likely\nrequires reducing the batch size and/or model size to fit on a single GPU.\n\nTo train a model, please run:\n\n```bash\n/bin/bash run_training.sh -r ${HOME}/pcq/\n```\n\nTo simply validate that the code is running correctly on your hardware setup,\nconsider setting `debug=True` in `config.py`, which trains a smaller model.\n\n\n# Citation\n\nTo cite this work (together with our MAG240M-LSC entry):\n\n```latex\n@article{deepmind2021ogb,\n  author = {Ravichandra Addanki and Peter Battaglia and David Budden and Andreea\n    Deac and Jonathan Godwin and Thomas Keck and Wai Lok Sibon Li and Alvaro\n    Sanchez-Gonzalez and Jacklynn Stott and Shantanu Thakoor and Petar\n    Veli\\v{c}kovi\\'{c}},\n  title = {Large-scale graph representation learning with very deep GNNs and\n    self-supervision},\n  year = {2021},\n  journal={arXiv preprint arXiv:2107.09422},\n}\n```\n\nOur technical report can be found [here](https://arxiv.org/abs/2107.09422).\n"
  },
  {
    "path": "ogb_lsc/pcq/batching_utils.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Dynamic batching utilities.\"\"\"\n\nfrom typing import Generator, Iterator, Sequence, Tuple\n\nimport jax.tree_util as tree\nimport jraph\nimport numpy as np\n\n_NUMBER_FIELDS = (\"n_node\", \"n_edge\", \"n_graph\")\n\n\ndef dynamically_batch(graphs_tuple_iterator: Iterator[jraph.GraphsTuple],\n                      n_node: int, n_edge: int,\n                      n_graph: int) -> Generator[jraph.GraphsTuple, None, None]:\n  \"\"\"Dynamically batches trees with `jraph.GraphsTuples` to `graph_batch_size`.\n\n  Elements of the `graphs_tuple_iterator` will be incrementally added to a batch\n  until the limits defined by `n_node`, `n_edge` and `n_graph` are reached. This\n  means each element yielded by this generator\n\n  For situations where you have variable sized data, it\"s useful to be able to\n  have variable sized batches. This is especially the case if you have a loss\n  defined on the variable shaped element (for example, nodes in a graph).\n\n  Args:\n    graphs_tuple_iterator: An iterator of `jraph.GraphsTuples`.\n    n_node: The maximum number of nodes in a batch.\n    n_edge: The maximum number of edges in a batch.\n    n_graph: The maximum number of graphs in a batch.\n\n  Yields:\n    A `jraph.GraphsTuple` batch of graphs.\n\n  Raises:\n    ValueError: if the number of graphs is < 2.\n    RuntimeError: if the `graphs_tuple_iterator` contains elements which are not\n      `jraph.GraphsTuple`s.\n    RuntimeError: if a graph is found which is larger than the batch size.\n  \"\"\"\n  if n_graph < 2:\n    raise ValueError(\"The number of graphs in a batch size must be greater or \"\n                     f\"equal to `2` for padding with graphs, got {n_graph}.\")\n  valid_batch_size = (n_node - 1, n_edge, n_graph - 1)\n  accumulated_graphs = []\n  num_accumulated_nodes = 0\n  num_accumulated_edges = 0\n  num_accumulated_graphs = 0\n  for element in graphs_tuple_iterator:\n    element_nodes, element_edges, element_graphs = _get_graph_size(element)\n    if _is_over_batch_size(element, valid_batch_size):\n      graph_size = element_nodes, element_edges, element_graphs\n      graph_size = {k: v for k, v in zip(_NUMBER_FIELDS, graph_size)}\n      batch_size = {k: v for k, v in zip(_NUMBER_FIELDS, valid_batch_size)}\n      raise RuntimeError(\"Found graph bigger than batch size. Valid Batch \"\n                         f\"Size: {batch_size}, Graph Size: {graph_size}\")\n\n    if not accumulated_graphs:\n      # If this is the first element of the batch, set it and continue.\n      accumulated_graphs = [element]\n      num_accumulated_nodes = element_nodes\n      num_accumulated_edges = element_edges\n      num_accumulated_graphs = element_graphs\n      continue\n    else:\n      # Otherwise check if there is space for the graph in the batch:\n      if ((num_accumulated_graphs + element_graphs > n_graph - 1) or\n          (num_accumulated_nodes + element_nodes > n_node - 1) or\n          (num_accumulated_edges + element_edges > n_edge)):\n        # If there is, add it to the batch\n        batched_graph = _batch_np(accumulated_graphs)\n        yield jraph.pad_with_graphs(batched_graph, n_node, n_edge, n_graph)\n        accumulated_graphs = [element]\n        num_accumulated_nodes = element_nodes\n        num_accumulated_edges = element_edges\n        num_accumulated_graphs = element_graphs\n      else:\n        # Otherwise, return the old batch and start a new batch.\n        accumulated_graphs.append(element)\n        num_accumulated_nodes += element_nodes\n        num_accumulated_edges += element_edges\n        num_accumulated_graphs += element_graphs\n\n  # We may still have data in batched graph.\n  if accumulated_graphs:\n    batched_graph = _batch_np(accumulated_graphs)\n    yield jraph.pad_with_graphs(batched_graph, n_node, n_edge, n_graph)\n\n\ndef _batch_np(graphs: Sequence[jraph.GraphsTuple]) -> jraph.GraphsTuple:\n  # Calculates offsets for sender and receiver arrays, caused by concatenating\n  # the nodes arrays.\n  offsets = np.cumsum(np.array([0] + [np.sum(g.n_node) for g in graphs[:-1]]))\n\n  def _map_concat(nests):\n    concat = lambda *args: np.concatenate(args)\n    return tree.tree_map(concat, *nests)\n\n  return jraph.GraphsTuple(\n      n_node=np.concatenate([g.n_node for g in graphs]),\n      n_edge=np.concatenate([g.n_edge for g in graphs]),\n      nodes=_map_concat([g.nodes for g in graphs]),\n      edges=_map_concat([g.edges for g in graphs]),\n      globals=_map_concat([g.globals for g in graphs]),\n      senders=np.concatenate([g.senders + o for g, o in zip(graphs, offsets)]),\n      receivers=np.concatenate(\n          [g.receivers + o for g, o in zip(graphs, offsets)]))\n\n\ndef _get_graph_size(graph: jraph.GraphsTuple) -> Tuple[int, int, int]:\n  n_node = np.sum(graph.n_node)\n  n_edge = len(graph.senders)\n  n_graph = len(graph.n_node)\n  return n_node, n_edge, n_graph\n\n\ndef _is_over_batch_size(\n    graph: jraph.GraphsTuple,\n    graph_batch_size: Tuple[int, int, int],\n) -> bool:\n  graph_size = _get_graph_size(graph)\n  return any([x > y for x, y in zip(graph_size, graph_batch_size)])\n"
  },
  {
    "path": "ogb_lsc/pcq/config.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Experiment config for PCQM4M-LSC entry.\"\"\"\n\nfrom jaxline import base_config\nfrom ml_collections import config_dict\n\n\ndef get_config(debug: bool = False) -> config_dict.ConfigDict:\n  \"\"\"Get Jaxline experiment config.\"\"\"\n  config = base_config.get_base_config()\n  # E.g. '/data/pretrained_models/k0_seed100' (and set k_fold_split_id=0, below)\n  config.restore_path = config_dict.placeholder(str)\n\n  training_batch_size = 64\n  eval_batch_size = 64\n\n  ## Experiment config.\n  loss_config_name = 'RegressionLossConfig'\n  loss_kwargs = dict(\n      exponent=1.,  # 2 for l2 loss, 1 for l1 loss, etc...\n  )\n\n  dataset_config = dict(\n      data_root=config_dict.placeholder(str),\n      augment_with_random_mirror_symmetry=True,\n      k_fold_split_id=config_dict.placeholder(int),\n      num_k_fold_splits=config_dict.placeholder(int),\n      # Options: \"in\" or \"out\".\n      # Filter=in would keep the samples with nans in the conformer features.\n      # Filter=out would keep the samples with no NaNs anywhere in the conformer\n      # features.\n      filter_in_or_out_samples_with_nans_in_conformers=(\n          config_dict.placeholder(str)),\n      cached_conformers_file=config_dict.placeholder(str))\n\n  model_config = dict(\n      mlp_hidden_size=512,\n      mlp_layers=2,\n      latent_size=512,\n      use_layer_norm=False,\n      num_message_passing_steps=32,\n      shared_message_passing_weights=False,\n      mask_padding_graph_at_every_step=True,\n      loss_config_name=loss_config_name,\n      loss_kwargs=loss_kwargs,\n      processor_mode='resnet',\n      global_reducer='sum',\n      node_reducer='sum',\n      dropedge_rate=0.1,\n      dropnode_rate=0.1,\n      aux_multiplier=0.1,\n      add_relative_distance=True,\n      add_relative_displacement=True,\n      add_absolute_positions=False,\n      position_normalization=2.,\n      relative_displacement_normalization=1.,\n      ignore_globals=False,\n      ignore_globals_from_final_layer_for_predictions=True,\n  )\n\n  if debug:\n    # Make network smaller.\n    model_config.update(dict(\n        mlp_hidden_size=32,\n        mlp_layers=1,\n        latent_size=32,\n        num_message_passing_steps=1))\n\n  config.experiment_kwargs = config_dict.ConfigDict(\n      dict(\n          config=dict(\n              debug=debug,\n              predictions_dir=config_dict.placeholder(str),\n              ema=True,\n              ema_decay=0.9999,\n              sample_random=0.05,\n              optimizer=dict(\n                  name='adam',\n                  optimizer_kwargs=dict(b1=.9, b2=.95),\n                  lr_schedule=dict(\n                      warmup_steps=int(5e4),\n                      decay_steps=int(5e5),\n                      init_value=1e-5,\n                      peak_value=1e-4,\n                      end_value=0.,\n                  ),\n              ),\n              model=model_config,\n              dataset_config=dataset_config,\n              # As a rule of thumb, use the following statistics:\n              # Avg. # nodes in graph: 16.\n              # Avg. # edges in graph: 40.\n              training=dict(\n                  dynamic_batch_size={\n                      'n_node': 256 if debug else 16 * training_batch_size,\n                      'n_edge': 512 if debug else 40 * training_batch_size,\n                      'n_graph': 2 if debug else training_batch_size,\n                  },),\n              evaluation=dict(\n                  split='valid',\n                  dynamic_batch_size=dict(\n                      n_node=256 if debug else 16 * eval_batch_size,\n                      n_edge=512 if debug else 40 * eval_batch_size,\n                      n_graph=2 if debug else eval_batch_size,\n                  )))))\n\n  ## Training loop config.\n  config.training_steps = int(5e6)\n  config.checkpoint_dir = '/tmp/checkpoint/pcq/'\n  config.train_checkpoint_all_hosts = False\n  config.save_checkpoint_interval = 300\n  config.log_train_data_interval = 60\n  config.log_tensors_interval = 60\n  config.best_model_eval_metric = 'mae'\n  config.best_model_eval_metric_higher_is_better = False\n\n  return config\n"
  },
  {
    "path": "ogb_lsc/pcq/conformer_utils.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Conformer utilities.\"\"\"\n\nimport copy\nfrom typing import List, Optional\nfrom absl import logging\nimport numpy as np\nimport rdkit\nfrom rdkit import Chem\nfrom rdkit.Chem import AllChem\nimport tensorflow.compat.v2 as tf\n\n\ndef generate_conformers(\n    molecule: Chem.rdchem.Mol,\n    max_num_conformers: int,\n    *,\n    random_seed: int = -1,\n    prune_rms_thresh: float = -1.0,\n    max_iter: int = -1,\n    fallback_to_random: bool = False,\n) -> Chem.rdchem.Mol:\n  \"\"\"Generates conformers for a given molecule.\n\n  Args:\n    molecule: molecular representation of the compound.\n    max_num_conformers: maximum number of conformers to generate. If pruning is\n      done, the returned number of conformers is not guaranteed to match\n      max_num_conformers.\n    random_seed: random seed to use for conformer generation.\n    prune_rms_thresh: RMSD threshold which allows to prune conformers that are\n      too similar.\n    max_iter: Maximum number of iterations to perform when optimising MMFF force\n      field. If set to <= 0, energy optimisation is not performed.\n    fallback_to_random: if conformers cannot be obtained, use random coordinates\n      to initialise.\n\n  Returns:\n    Copy of a `molecule` with added hydrogens. The returned molecule contains\n    force field-optimised conformers. The number of conformers is guaranteed to\n    be <= max_num_conformers.\n  \"\"\"\n  mol = copy.deepcopy(molecule)\n  mol = Chem.AddHs(mol)\n  mol = _embed_conformers(\n      mol,\n      max_num_conformers,\n      random_seed,\n      prune_rms_thresh,\n      fallback_to_random,\n      use_random=False)\n\n  if max_iter > 0:\n    mol_with_conformers = _minimize_by_mmff(mol, max_iter)\n    if mol_with_conformers is None:\n      mol_with_conformers = _minimize_by_uff(mol, max_iter)\n  else:\n    mol_with_conformers = mol\n  # Aligns conformations in a molecule to each other using the first\n  # conformation as the reference.\n  AllChem.AlignMolConformers(mol_with_conformers)\n\n  # We remove hydrogens to keep the number of atoms consistent with the graph\n  # nodes.\n  mol_with_conformers = Chem.RemoveHs(mol_with_conformers)\n\n  return mol_with_conformers\n\n\ndef atom_to_feature_vector(\n    atom: rdkit.Chem.rdchem.Atom,\n    conformer: Optional[np.ndarray] = None,\n) -> List[float]:\n  \"\"\"Converts rdkit atom object to feature list of indices.\n\n  Args:\n    atom: rdkit atom object.\n    conformer: Generated conformers. Returns -1 values if set to None.\n\n  Returns:\n    List containing positions (x, y, z) of each atom from the conformer.\n  \"\"\"\n  if conformer:\n    pos = conformer.GetAtomPosition(atom.GetIdx())\n    return [pos.x, pos.y, pos.z]\n  return [np.nan, np.nan, np.nan]\n\n\ndef compute_conformer(smile: str, max_iter: int = -1) -> np.ndarray:\n  \"\"\"Computes conformer.\n\n  Args:\n    smile: Smile string.\n    max_iter: Maximum number of iterations to perform when optimising MMFF force\n      field. If set to <= 0, energy optimisation is not performed.\n\n  Returns:\n    A tuple containing index, fingerprint and conformer.\n  Raises:\n    RuntimeError: If unable to convert smile string to RDKit mol.\n  \"\"\"\n  mol = rdkit.Chem.MolFromSmiles(smile)\n  if not mol:\n    raise RuntimeError('Unable to convert smile to molecule: %s' % smile)\n  conformer_failed = False\n  try:\n    mol = generate_conformers(\n        mol,\n        max_num_conformers=1,\n        random_seed=45,\n        prune_rms_thresh=0.01,\n        max_iter=max_iter)\n  except IOError as e:\n    logging.exception('Failed to generate conformers for %s . IOError %s.',\n                      smile, e)\n    conformer_failed = True\n  except ValueError:\n    logging.error('Failed to generate conformers for %s . ValueError', smile)\n    conformer_failed = True\n  except:  # pylint: disable=bare-except\n    logging.error('Failed to generate conformers for %s.', smile)\n    conformer_failed = True\n\n  atom_features_list = []\n  conformer = None if conformer_failed else list(mol.GetConformers())[0]\n  for atom in mol.GetAtoms():\n    atom_features_list.append(atom_to_feature_vector(atom, conformer))\n  conformer_features = np.array(atom_features_list, dtype=np.float32)\n  return conformer_features\n\n\ndef get_random_rotation_matrix(include_mirror_symmetry: bool) -> tf.Tensor:\n  \"\"\"Returns a single random rotation matrix.\"\"\"\n  rotation_matrix = _get_random_rotation_3d()\n  if include_mirror_symmetry:\n    random_mirror_symmetry = _get_random_mirror_symmetry()\n    rotation_matrix = tf.matmul(rotation_matrix, random_mirror_symmetry)\n\n  return rotation_matrix\n\n\ndef rotate(vectors: tf.Tensor, rotation_matrix: tf.Tensor) -> tf.Tensor:\n  \"\"\"Batch of vectors on a single rotation matrix.\"\"\"\n  return tf.matmul(vectors, rotation_matrix)\n\n\ndef _embed_conformers(\n    molecule: Chem.rdchem.Mol,\n    max_num_conformers: int,\n    random_seed: int,\n    prune_rms_thresh: float,\n    fallback_to_random: bool,\n    *,\n    use_random: bool = False,\n) -> Chem.rdchem.Mol:\n  \"\"\"Embeds conformers into a copy of a molecule.\n\n  If random coordinates allowed, tries not to use random coordinates at first,\n  and uses random only if fails.\n\n  Args:\n    molecule: molecular representation of the compound.\n    max_num_conformers: maximum number of conformers to generate. If pruning is\n      done, the returned number of conformers is not guaranteed to match\n      max_num_conformers.\n    random_seed: random seed to use for conformer generation.\n    prune_rms_thresh: RMSD threshold which allows to prune conformers that are\n      too similar.\n    fallback_to_random: if conformers cannot be obtained, use random coordinates\n      to initialise.\n    *:\n    use_random: Use random coordinates. Shouldn't be set by any caller except\n      this function itself.\n\n  Returns:\n  A copy of a molecule with embedded conformers.\n\n  Raises:\n    ValueError: if conformers cannot be obtained for a given molecule.\n  \"\"\"\n  mol = copy.deepcopy(molecule)\n\n  # Obtains parameters for conformer generation.\n  # In particular, ETKDG is experimental-torsion basic knowledge distance\n  # geometry, which allows to randomly generate an initial conformation that\n  # satisfies various geometric constraints such as lower and upper bounds on\n  # the distances between atoms.\n  params = AllChem.ETKDGv3()\n\n  params.randomSeed = random_seed\n  params.pruneRmsThresh = prune_rms_thresh\n  params.numThreads = -1\n  params.useRandomCoords = use_random\n\n  conf_ids = AllChem.EmbedMultipleConfs(mol, max_num_conformers, params)\n\n  if not conf_ids:\n    if not fallback_to_random or use_random:\n      raise ValueError('Cant get conformers')\n    return _embed_conformers(\n        mol,\n        max_num_conformers,\n        random_seed,\n        prune_rms_thresh,\n        fallback_to_random,\n        use_random=True)\n  return mol\n\n\ndef _minimize_by_mmff(\n    molecule: Chem.rdchem.Mol,\n    max_iter: int,\n) -> Optional[Chem.rdchem.Mol]:\n  \"\"\"Minimizes forcefield for conformers using MMFF algorithm.\n\n  Args:\n    molecule: a datastructure containing conformers.\n    max_iter: number of maximum iterations to use when optimising force field.\n\n  Returns:\n    A copy of a `molecule` containing optimised conformers; or None if MMFF\n    cannot be performed.\n  \"\"\"\n  molecule_props = AllChem.MMFFGetMoleculeProperties(molecule)\n  if molecule_props is None:\n    return None\n\n  mol = copy.deepcopy(molecule)\n  for conf_id in range(mol.GetNumConformers()):\n    ff = AllChem.MMFFGetMoleculeForceField(\n        mol, molecule_props, confId=conf_id, ignoreInterfragInteractions=False)\n    ff.Initialize()\n    # minimises a conformer within a mol in place.\n    ff.Minimize(max_iter)\n  return mol\n\n\ndef _minimize_by_uff(\n    molecule: Chem.rdchem.Mol,\n    max_iter: int,\n) -> Chem.rdchem.Mol:\n  \"\"\"Minimizes forcefield for conformers using UFF algorithm.\n\n  Args:\n    molecule: a datastructure containing conformers.\n    max_iter: number of maximum iterations to use when optimising force field.\n\n  Returns:\n    A copy of a `molecule` containing optimised conformers.\n  \"\"\"\n  mol = copy.deepcopy(molecule)\n  conf_ids = range(mol.GetNumConformers())\n  for conf_id in conf_ids:\n    ff = AllChem.UFFGetMoleculeForceField(mol, confId=conf_id)\n    ff.Initialize()\n    # minimises a conformer within a mol in place.\n    ff.Minimize(max_iter)\n  return mol\n\n\ndef _get_symmetry_rotation_matrix(sign: tf.Tensor) -> tf.Tensor:\n  \"\"\"Returns the 2d/3d matrix for mirror symmetry.\"\"\"\n  zero = tf.zeros_like(sign)\n  one = tf.ones_like(sign)\n  # pylint: disable=bad-whitespace,bad-continuation\n  rot = [sign,  zero,  zero,\n         zero,  one,   zero,\n         zero,  zero,   one]\n  # pylint: enable=bad-whitespace,bad-continuation\n  shape = (3, 3)\n  rot = tf.stack(rot, axis=-1)\n  rot = tf.reshape(rot, shape)\n  return rot\n\n\ndef _quaternion_to_rotation_matrix(quaternion: tf.Tensor) -> tf.Tensor:\n  \"\"\"Converts a batch of quaternions to a batch of rotation matrices.\"\"\"\n  q0 = quaternion[0]\n  q1 = quaternion[1]\n  q2 = quaternion[2]\n  q3 = quaternion[3]\n\n  r00 = 2 * (q0 * q0 + q1 * q1) - 1\n  r01 = 2 * (q1 * q2 - q0 * q3)\n  r02 = 2 * (q1 * q3 + q0 * q2)\n  r10 = 2 * (q1 * q2 + q0 * q3)\n  r11 = 2 * (q0 * q0 + q2 * q2) - 1\n  r12 = 2 * (q2 * q3 - q0 * q1)\n  r20 = 2 * (q1 * q3 - q0 * q2)\n  r21 = 2 * (q2 * q3 + q0 * q1)\n  r22 = 2 * (q0 * q0 + q3 * q3) - 1\n\n  matrix = tf.stack([r00, r01, r02,\n                     r10, r11, r12,\n                     r20, r21, r22], axis=-1)\n  return tf.reshape(matrix, [3, 3])\n\n\ndef _get_random_rotation_3d() -> tf.Tensor:\n  random_quaternions = tf.random.normal(\n      shape=[4], dtype=tf.float32)\n  random_quaternions /= tf.linalg.norm(\n      random_quaternions, axis=-1, keepdims=True)\n  return _quaternion_to_rotation_matrix(random_quaternions)\n\n\ndef _get_random_mirror_symmetry() -> tf.Tensor:\n  random_0_1 = tf.random.uniform(\n      shape=(), minval=0, maxval=2, dtype=tf.int32)\n  random_signs = tf.cast((2 * random_0_1) - 1, tf.float32)\n  return _get_symmetry_rotation_matrix(random_signs)\n"
  },
  {
    "path": "ogb_lsc/pcq/dataset_utils.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Dataset utilities.\"\"\"\n\nimport functools\nfrom typing import List, Optional\n\nimport jax\nimport jraph\nfrom ml_collections import config_dict\nimport numpy as np\nfrom ogb import utils\nfrom ogb.utils import features\nimport tensorflow.compat.v2 as tf\nimport tensorflow_datasets as tfds\nimport tree\n\n# pylint: disable=g-bad-import-order\n# pytype: disable=import-error\nimport batching_utils\nimport conformer_utils\nimport datasets\n\n\ncurry = lambda f: functools.partial(functools.partial, f)\n\n\ndef build_dataset_iterator(\n    data_root: str,\n    split: str,\n    dynamic_batch_size_config: config_dict.ConfigDict,\n    sample_random: float,\n    cached_conformers_file: str,\n    debug: bool = False,\n    is_training: bool = True,\n    augment_with_random_mirror_symmetry: bool = False,\n    positions_noise_std: Optional[float] = None,\n    k_fold_split_id: Optional[int] = None,\n    num_k_fold_splits: Optional[int] = None,\n    filter_in_or_out_samples_with_nans_in_conformers: Optional[str] = None,\n):\n  \"\"\"Returns an iterator over Batches from the dataset.\"\"\"\n  if debug:\n    max_items_to_read_from_dataset = 10\n    prefetch_buffer_size = 1\n    shuffle_buffer_size = 1\n  else:\n    max_items_to_read_from_dataset = -1  # < 0 means no limit.\n    prefetch_buffer_size = 64\n    # It can take a while to fill the shuffle buffer with k fold splits.\n    shuffle_buffer_size = 128 if k_fold_split_id is None else int(1e6)\n\n  num_local_devices = jax.local_device_count()\n\n  # Load all smile strings.\n  indices, smiles, labels = _load_smiles(\n      data_root,\n      split,\n      k_fold_split_id=k_fold_split_id,\n      num_k_fold_splits=num_k_fold_splits)\n  if debug:\n    indices = indices[:100]\n    smiles = smiles[:100]\n    labels = labels[:100]\n  # Generate all conformer features from smile strings ahead of time.\n  # This gives us a boost from multi-parallelism as opposed to doing it\n  # online.\n  conformers = _load_conformers(indices, smiles, cached_conformers_file)\n\n  data_generator = (\n      lambda: _get_pcq_graph_generator(indices, smiles, labels, conformers))\n  # Create a dataset yielding graphs from smile strings.\n  example = next(data_generator())\n  signature_from_example = tree.map_structure(_numpy_to_tensor_spec, example)\n  ds = tf.data.Dataset.from_generator(\n      data_generator, output_signature=signature_from_example)\n\n  ds = ds.take(max_items_to_read_from_dataset)\n  ds = ds.cache()\n  if is_training:\n    ds = ds.shuffle(shuffle_buffer_size)\n\n  # Apply transformations.\n  def map_fn(graph, conformer_positions):\n    graph = _maybe_one_hot_atoms_with_noise(\n        graph, is_training=is_training, sample_random=sample_random)\n    # Add conformer features.\n    graph = _add_conformer_features(\n        graph,\n        conformer_positions,\n        augment_with_random_mirror_symmetry=augment_with_random_mirror_symmetry,\n        noise_std=positions_noise_std,\n        is_training=is_training,\n    )\n    return _downcast_ints(graph)\n\n  ds = ds.map(map_fn, num_parallel_calls=tf.data.AUTOTUNE)\n  if filter_in_or_out_samples_with_nans_in_conformers:\n    if filter_in_or_out_samples_with_nans_in_conformers not in (\"in\", \"out\"):\n      raise ValueError(\n          \"Unknown value specified for the argument \"\n          \"`filter_in_or_out_samples_with_nans_in_conformers`: %s\" %\n          filter_in_or_out_samples_with_nans_in_conformers)\n\n    filter_fn = _get_conformer_filter(\n        with_nans=(filter_in_or_out_samples_with_nans_in_conformers == \"in\"))\n    ds = ds.filter(filter_fn)\n\n  if is_training:\n    ds = ds.shard(jax.process_count(), jax.process_index())\n    ds = ds.repeat()\n\n  ds = ds.prefetch(prefetch_buffer_size)\n  it = tfds.as_numpy(ds)\n\n  # Dynamic batching.\n  batched_gen = batching_utils.dynamically_batch(\n      it,\n      n_node=dynamic_batch_size_config.n_node + 1,\n      n_edge=dynamic_batch_size_config.n_edge,\n      n_graph=dynamic_batch_size_config.n_graph + 1,\n  )\n\n  if is_training:\n    # Stack `num_local_devices` of batches together for pmap updates.\n    batch_size = num_local_devices\n\n    def _batch(l):\n      assert l\n      return tree.map_structure(lambda *l: np.stack(l, axis=0), *l)\n\n    def batcher_fn():\n      batch = []\n      for sample in batched_gen:\n        batch.append(sample)\n        if len(batch) == batch_size:\n          yield _batch(batch)\n          batch = []\n      if batch:\n        yield _batch(batch)\n\n    for sample in batcher_fn():\n      yield sample\n  else:\n    for sample in batched_gen:\n      yield sample\n\n\ndef _get_conformer_filter(with_nans: bool):\n  \"\"\"Selects a conformer filter to apply.\n\n  Args:\n    with_nans: Filter only selects samples with NaNs in conformer features.\n    Else, selects samples without any NaNs in conformer features.\n\n  Returns:\n    A function that can be used with tf.data.Dataset.filter().\n\n  Raises:\n    ValueError:\n      If the input graph to the filter has no conformer features to filter.\n  \"\"\"\n\n  def _filter(graph: jraph.GraphsTuple) -> tf.Tensor:\n\n    if (\"positions\" not in graph.nodes) or (\n        \"positions_targets\" not in graph.nodes) or (\n            \"positions_nan_mask\" not in graph.globals):\n      raise ValueError(\"Conformer features not available to filter.\")\n\n    any_nan = tf.logical_not(tf.squeeze(graph.globals[\"positions_nan_mask\"]))\n    return any_nan if with_nans else tf.logical_not(any_nan)\n\n  return _filter\n\n\ndef _numpy_to_tensor_spec(arr: np.ndarray) -> tf.TensorSpec:\n  if not isinstance(arr, np.ndarray):\n    return tf.TensorSpec([],\n                         dtype=tf.int32 if isinstance(arr, int) else tf.float32)\n  elif arr.shape:\n    return tf.TensorSpec((None,) + arr.shape[1:], arr.dtype)\n  else:\n    return tf.TensorSpec([], arr.dtype)\n\n\ndef _sample_uniform_categorical(num: int, size: int) -> tf.Tensor:\n  return tf.random.categorical(tf.math.log([[1 / size] * size]), num)[0]\n\n\n@curry(jax.tree_map)\ndef _downcast_ints(x):\n  if x.dtype == tf.int64:\n    return tf.cast(x, tf.int32)\n  return x\n\n\ndef _one_hot_atoms(atoms: tf.Tensor) -> tf.Tensor:\n  vocab_sizes = features.get_atom_feature_dims()\n  one_hots = []\n  for i in range(atoms.shape[1]):\n    one_hots.append(tf.one_hot(atoms[:, i], vocab_sizes[i], dtype=tf.float32))\n  return tf.concat(one_hots, axis=-1)\n\n\ndef _sample_one_hot_atoms(atoms: tf.Tensor) -> tf.Tensor:\n  vocab_sizes = features.get_atom_feature_dims()\n  one_hots = []\n  num_atoms = tf.shape(atoms)[0]\n  for i in range(atoms.shape[1]):\n    sampled_category = _sample_uniform_categorical(num_atoms, vocab_sizes[i])\n    one_hots.append(\n        tf.one_hot(sampled_category, vocab_sizes[i], dtype=tf.float32))\n  return tf.concat(one_hots, axis=-1)\n\n\ndef _one_hot_bonds(bonds: tf.Tensor) -> tf.Tensor:\n  vocab_sizes = features.get_bond_feature_dims()\n  one_hots = []\n  for i in range(bonds.shape[1]):\n    one_hots.append(tf.one_hot(bonds[:, i], vocab_sizes[i], dtype=tf.float32))\n  return tf.concat(one_hots, axis=-1)\n\n\ndef _sample_one_hot_bonds(bonds: tf.Tensor) -> tf.Tensor:\n  vocab_sizes = features.get_bond_feature_dims()\n  one_hots = []\n  num_bonds = tf.shape(bonds)[0]\n  for i in range(bonds.shape[1]):\n    sampled_category = _sample_uniform_categorical(num_bonds, vocab_sizes[i])\n    one_hots.append(\n        tf.one_hot(sampled_category, vocab_sizes[i], dtype=tf.float32))\n  return tf.concat(one_hots, axis=-1)\n\n\ndef _maybe_one_hot_atoms_with_noise(\n    x,\n    is_training: bool,\n    sample_random: float,\n):\n  \"\"\"One hot atoms with noise.\"\"\"\n  gt_nodes = _one_hot_atoms(x.nodes)\n  gt_edges = _one_hot_bonds(x.edges)\n  if is_training:\n    num_nodes = tf.shape(x.nodes)[0]\n    sample_node_or_not = tf.random.uniform([num_nodes],\n                                           maxval=1) < sample_random\n    nodes = tf.where(\n        tf.expand_dims(sample_node_or_not, axis=-1),\n        _sample_one_hot_atoms(x.nodes), gt_nodes)\n    num_edges = tf.shape(x.edges)[0]\n    sample_edges_or_not = tf.random.uniform([num_edges],\n                                            maxval=1) < sample_random\n    edges = tf.where(\n        tf.expand_dims(sample_edges_or_not, axis=-1),\n        _sample_one_hot_bonds(x.edges), gt_edges)\n  else:\n    nodes = gt_nodes\n    edges = gt_edges\n  return x._replace(\n      nodes={\n          \"atom_one_hots_targets\": gt_nodes,\n          \"atom_one_hots\": nodes,\n      },\n      edges={\n          \"bond_one_hots_targets\": gt_edges,\n          \"bond_one_hots\": edges\n      })\n\n\ndef _load_smiles(\n    data_root: str,\n    split: str,\n    k_fold_split_id: int,\n    num_k_fold_splits: int,\n):\n  \"\"\"Loads smiles trings for the input split.\"\"\"\n\n  if split == \"test\" or k_fold_split_id is None:\n    indices = datasets.load_splits()[split]\n  elif split == \"train\":\n    indices = datasets.load_all_except_kth_fold_indices(\n        data_root, k_fold_split_id, num_k_fold_splits)\n    indices += datasets.load_splits()[\"train\"]\n  else:\n    assert split == \"valid\"\n    indices = datasets.load_kth_fold_indices(data_root, k_fold_split_id)\n\n  smiles_and_labels = datasets.load_smile_strings(with_labels=True)\n  smiles, labels = list(zip(*smiles_and_labels))\n  return indices, [smiles[i] for i in indices], [labels[i] for i in indices]\n\n\ndef _convert_ogb_graph_to_graphs_tuple(ogb_graph):\n  \"\"\"Converts an OGB Graph to a GraphsTuple.\"\"\"\n  senders = ogb_graph[\"edge_index\"][0]\n  receivers = ogb_graph[\"edge_index\"][1]\n  edges = ogb_graph[\"edge_feat\"]\n  nodes = ogb_graph[\"node_feat\"]\n  n_node = np.array([ogb_graph[\"num_nodes\"]])\n  n_edge = np.array([len(senders)])\n  graph = jraph.GraphsTuple(\n      nodes=nodes,\n      edges=edges,\n      senders=senders,\n      receivers=receivers,\n      n_node=n_node,\n      n_edge=n_edge,\n      globals=None)\n  return tree.map_structure(lambda x: x if x is not None else np.array(0.),\n                            graph)\n\n\ndef _load_conformers(indices: List[int],\n                     smiles: List[str],\n                     cached_conformers_file: str):\n  \"\"\"Loads conformers.\"\"\"\n  smile_to_conformer = datasets.load_cached_conformers(cached_conformers_file)\n  conformers = []\n  for graph_idx, smile in zip(indices, smiles):\n    del graph_idx  # Unused.\n    if smile not in smile_to_conformer:\n      raise KeyError(\"Cache did not have conformer entry for the smile %s\" %\n                     str(smile))\n    conformers.append(dict(conformer=smile_to_conformer[smile]))\n  return conformers\n\n\ndef _add_conformer_features(\n    graph,\n    conformer_features,\n    augment_with_random_mirror_symmetry: bool,\n    noise_std: float,\n    is_training: bool,\n):\n  \"\"\"Adds conformer features.\"\"\"\n  if not isinstance(graph.nodes, dict):\n    raise ValueError(\"Expected a dict type for `graph.nodes`.\")\n  # Remove mean position to center around a canonical origin.\n  positions = conformer_features[\"conformer\"]\n  # NaN's appear in ~0.13% of training, 0.104% of validation and 0.16% of test\n  # nodes.\n  # See this colab: http://shortn/_6UcuosxY7x.\n  nan_mask = tf.reduce_any(tf.math.is_nan(positions))\n\n  positions = tf.where(nan_mask, tf.constant(0., positions.dtype), positions)\n  positions -= tf.reduce_mean(positions, axis=0, keepdims=True)\n\n  # Optionally augment with a random rotation.\n  if is_training:\n    rot_mat = conformer_utils.get_random_rotation_matrix(\n        augment_with_random_mirror_symmetry)\n    positions = conformer_utils.rotate(positions, rot_mat)\n  positions_targets = positions\n\n  # Optionally add noise to the positions.\n  if noise_std and is_training:\n    positions = tf.random.normal(tf.shape(positions), positions, noise_std)\n\n  return graph._replace(\n      nodes=dict(\n          positions=positions,\n          positions_targets=positions_targets,\n          **graph.nodes),\n      globals={\n          \"positions_nan_mask\":\n              tf.expand_dims(tf.logical_not(nan_mask), axis=0),\n          **(graph.globals if isinstance(graph.globals, dict) else {})\n      })\n\n\ndef _get_pcq_graph_generator(indices, smiles, labels, conformers):\n  \"\"\"Returns a generator to yield graph.\"\"\"\n  for idx, smile, conformer_positions, label in zip(indices, smiles, conformers,\n                                                    labels):\n    graph = utils.smiles2graph(smile)\n    graph = _convert_ogb_graph_to_graphs_tuple(graph)\n    graph = graph._replace(\n        globals={\n            \"target\": np.array([label], dtype=np.float32),\n            \"graph_index\": np.array([idx], dtype=np.int32),\n            **(graph.globals if isinstance(graph.globals, dict) else {})\n        })\n    yield graph, conformer_positions\n"
  },
  {
    "path": "ogb_lsc/pcq/datasets.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"PCQM4M-LSC datasets.\"\"\"\n\nimport functools\nimport pickle\nfrom typing import Dict, List, Tuple, Union\n\nimport numpy as np\nfrom ogb import lsc\n\nNUM_VALID_SAMPLES = 380_670\nNUM_TEST_SAMPLES = 377_423\n\nNORMALIZE_TARGET_MEAN = 5.690944545356371\nNORMALIZE_TARGET_STD = 1.1561347795107815\n\n\ndef load_splits() -> Dict[str, List[int]]:\n  \"\"\"Loads dataset splits.\"\"\"\n  dataset = _get_pcq_dataset(only_smiles=True)\n  return dataset.get_idx_split()\n\n\ndef load_kth_fold_indices(data_root: str, k_fold_split_id: int) -> List[int]:\n  \"\"\"Loads k-th fold indices.\"\"\"\n  fname = f\"{data_root}/k_fold_splits/{k_fold_split_id}.pkl\"\n  return list(map(int, _load_pickle(fname)))\n\n\ndef load_all_except_kth_fold_indices(data_root: str, k_fold_split_id: int,\n                                     num_k_fold_splits: int) -> List[int]:\n  \"\"\"Loads indices except for the kth fold.\"\"\"\n  if k_fold_split_id is None:\n    raise ValueError(\"Expected integer value for `k_fold_split_id`.\")\n  indices = []\n  for index in range(num_k_fold_splits):\n    if index != k_fold_split_id:\n      indices += load_kth_fold_indices(data_root, index)\n  return indices\n\n\ndef load_smile_strings(\n    with_labels=False) -> List[Union[str, Tuple[str, np.ndarray]]]:\n  \"\"\"Loads the smile strings in the PCQ dataset.\"\"\"\n  dataset = _get_pcq_dataset(only_smiles=True)\n  smiles = []\n  for i in range(len(dataset)):\n    smile, label = dataset[i]\n    if with_labels:\n      smiles.append((smile, label))\n    else:\n      smiles.append(smile)\n\n  return smiles\n\n\n@functools.lru_cache()\ndef load_cached_conformers(cached_fname: str) -> Dict[str, np.ndarray]:\n  \"\"\"Returns cached dict mapping smile strings to conformer features.\"\"\"\n  return _load_pickle(cached_fname)\n\n\n@functools.lru_cache()\ndef _get_pcq_dataset(only_smiles: bool):\n  return lsc.PCQM4MDataset(only_smiles=only_smiles)\n\n\ndef _load_pickle(fname: str):\n  with open(fname, \"rb\") as f:\n    return pickle.load(f)\n"
  },
  {
    "path": "ogb_lsc/pcq/download_pcq.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Download data required for training and evaluating models.\"\"\"\n\nimport pathlib\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nfrom google.cloud import storage\n\nPath = pathlib.Path\n\n\n_BUCKET_NAME = 'deepmind-ogb-lsc'\n_MAX_DOWNLOAD_ATTEMPTS = 5\n\nFLAGS = flags.FLAGS\n\nflags.DEFINE_enum('payload', None, ['data', 'models'],\n                  'Download \"data\" or \"models\"?')\nflags.DEFINE_string('task_root', None, 'Local task root directory')\n\n# GCS_DATA_ROOT = Path('pcq/data')\n# GCS_MODEL_ROOT = Path('pcq/models')\n\nDATA_RELATIVE_PATHS = [\n    'raw/data.csv.gz', 'preprocessed/smile_to_conformer.pkl',\n    'k_fold_splits'\n]\n\n\nclass DataCorruptionError(Exception):\n  pass\n\n\ndef _get_gcs_root():\n  return Path('pcq') / FLAGS.payload\n\n\ndef _get_gcs_bucket():\n  storage_client = storage.Client.create_anonymous_client()\n  return storage_client.bucket(_BUCKET_NAME)\n\n\ndef _write_blob_to_destination(blob, task_root, ignore_existing=True):\n  \"\"\"Write the blob.\"\"\"\n  logging.info(\"Copying blob: '%s'\", blob.name)\n  destination_path = Path(task_root) / Path(*Path(blob.name).parts[1:])\n  logging.info(\"  ... to: '%s'\", str(destination_path))\n  if ignore_existing and destination_path.exists():\n    return\n  destination_path.parent.mkdir(parents=True, exist_ok=True)\n  checksum = 'crc32c'\n  for attempt in range(_MAX_DOWNLOAD_ATTEMPTS):\n    try:\n      blob.download_to_filename(destination_path.as_posix(), checksum=checksum)\n    except storage.client.resumable_media.common.DataCorruption:\n      pass\n    else:\n      break\n  else:\n    raise DataCorruptionError(f\"Checksum ('{checksum}') for {blob.name} failed \"\n                              f'after {attempt + 1} attempts')\n\n\ndef main(unused_argv):\n  bucket = _get_gcs_bucket()\n  if FLAGS.payload == 'data':\n    relative_paths = DATA_RELATIVE_PATHS\n  else:\n    relative_paths = (None,)\n  for relative_path in relative_paths:\n    if relative_path is None:\n      relative_path = str(_get_gcs_root())\n    else:\n      relative_path = str(_get_gcs_root() / relative_path)\n    logging.info(\"Copying relative path: '%s'\", relative_path)\n    blobs = bucket.list_blobs(prefix=relative_path)\n    for blob in blobs:\n      _write_blob_to_destination(blob, FLAGS.task_root)\n\n\nif __name__ == '__main__':\n  flags.mark_flag_as_required('payload')\n  flags.mark_flag_as_required('task_root')\n  app.run(main)\n"
  },
  {
    "path": "ogb_lsc/pcq/ensemble_predictions.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Script to generate ensembled PCQ test predictions.\"\"\"\n\nimport collections\nimport os\nimport pathlib\nfrom typing import List, NamedTuple\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport dill\nimport numpy as np\nfrom ogb import lsc\n\n# pylint: disable=g-bad-import-order\n# pytype: disable=import-error\nimport datasets\n\n_NUM_SEEDS = 2\n\n_CLIP_VALUE = 20.\n\n_NUM_KFOLD_SPLITS = 10\n\n_SEED_START = flags.DEFINE_integer(\n    'seed_start', 42, 'Initial seed for the list of ensemble models.')\n\n_CONFORMER_PATH = flags.DEFINE_string(\n    'conformer_path', None, 'Path to conformer predictions.', required=True)\n\n_NON_CONFORMER_PATH = flags.DEFINE_string(\n    'non_conformer_path',\n    None,\n    'Path to non-conformer predictions.',\n    required=True)\n\n_OUTPUT_PATH = flags.DEFINE_string('output_path', None, 'Output path.')\n\n_SPLIT = flags.DEFINE_enum('split', 'test', ['test', 'valid'],\n                           'Split: valid or test.')\n\n\nclass _Predictions(NamedTuple):\n  predictions: np.ndarray\n  indices: np.ndarray\n\n\ndef _load_dill(fname) -> bytes:\n  with open(fname, 'rb') as f:\n    return dill.load(f)\n\n\ndef _sort_by_indices(predictions: _Predictions) -> _Predictions:\n  order = np.argsort(predictions.indices)\n  return _Predictions(\n      predictions=predictions.predictions[order],\n      indices=predictions.indices[order])\n\n\ndef load_predictions(path: str, split: str) -> _Predictions:\n  \"\"\"Load written prediction file.\"\"\"\n  if len(os.listdir(path)) != 1:\n    raise ValueError('Prediction directory must have exactly '\n                     'one prediction sub-directory: %s' % path)\n\n  prediction_subdir = os.listdir(path)[0]\n  return _Predictions(*_load_dill(f'{path}/{prediction_subdir}/{split}.dill'))\n\n\ndef mean_mae_distance(x, y):\n  return np.abs(x - y).mean()\n\n\ndef _load_valid_labels() -> np.ndarray:\n  labels = [label for _, label in datasets.load_smile_strings(with_labels=True)]\n  return np.array([labels[i] for i in datasets.load_splits()['valid']])\n\n\ndef evaluate_valid_predictions(ensembled_predictions: _Predictions):\n  \"\"\"Evaluates the predictions on the validation set.\"\"\"\n  ensembled_predictions = _sort_by_indices(ensembled_predictions)\n  evaluator = lsc.PCQM4MEvaluator()\n  results = evaluator.eval(\n      dict(\n          y_pred=ensembled_predictions.predictions,\n          y_true=_load_valid_labels()))\n  logging.info('MAE on validation dataset: %f', results['mae'])\n\n\ndef clip_predictions(predictions: _Predictions) -> _Predictions:\n  return predictions._replace(\n      predictions=np.clip(predictions.predictions, 0., _CLIP_VALUE))\n\n\ndef _generate_test_prediction_file(test_predictions: np.ndarray,\n                                   output_path: pathlib.Path) -> pathlib.Path:\n  \"\"\"Generates the final file for submission.\"\"\"\n\n  # Check that predictions are not nuts.\n  assert test_predictions.dtype in [np.float64, np.float32]\n  assert not np.any(np.isnan(test_predictions))\n  assert np.all(np.isfinite(test_predictions))\n  assert test_predictions.min() >= 0.\n  assert test_predictions.max() <= 40.\n\n  # Too risky to overwrite.\n  if output_path.exists():\n    raise ValueError(f'{output_path} already exists')\n\n  # Write to a local directory, and copy to final path (possibly cns).\n  # It is not possible to write directlt on CNS.\n  evaluator = lsc.PCQM4MEvaluator()\n\n  evaluator.save_test_submission(\n      dict(y_pred=test_predictions), str(output_path))\n  return output_path\n\n\ndef merge_complementary_results(split: str, results_a: _Predictions,\n                                results_b: _Predictions) -> _Predictions:\n  \"\"\"Merges two prediction results with no overlap.\"\"\"\n\n  indices_a = set(results_a.indices)\n  indices_b = set(results_b.indices)\n  assert not indices_a.intersection(indices_b)\n\n  if split == 'test':\n    merged_indices = list(sorted(indices_a | indices_b))\n    expected_indices = datasets.load_splits()[split]\n    assert np.all(expected_indices == merged_indices)\n\n  predictions = np.concatenate([results_a.predictions, results_b.predictions])\n  indices = np.concatenate([results_a.indices, results_b.indices])\n  predictions = _sort_by_indices(\n      _Predictions(indices=indices, predictions=predictions))\n  return predictions\n\n\ndef ensemble_valid_predictions(\n    predictions_list: List[_Predictions]) -> _Predictions:\n  \"\"\"Ensembles a list of predictions.\"\"\"\n  index_to_predictions = collections.defaultdict(list)\n  for predictions in predictions_list:\n    for idx, pred in zip(predictions.indices, predictions.predictions):\n      index_to_predictions[idx].append(pred)\n\n  for idx, ensemble_list in index_to_predictions.items():\n    if len(ensemble_list) != _NUM_SEEDS:\n      raise RuntimeError(\n          'Graph index in the validation set received wrong number of '\n          'predictions to ensemble.')\n\n  index_to_predictions = {\n      k: np.median(pred_list, axis=0)\n      for k, pred_list in index_to_predictions.items()\n  }\n  return _sort_by_indices(\n      _Predictions(\n          indices=np.array(list(index_to_predictions.keys())),\n          predictions=np.array(list(index_to_predictions.values()))))\n\n\ndef ensemble_test_predictions(\n    predictions_list: List[_Predictions]) -> _Predictions:\n  \"\"\"Ensembles a list of predictions.\"\"\"\n  predictions = np.median([pred.predictions for pred in predictions_list],\n                          axis=0)\n  common_indices = predictions_list[0].indices\n  for preds in predictions_list[1:]:\n    assert np.all(preds.indices == common_indices)\n\n  return _Predictions(predictions=predictions, indices=common_indices)\n\n\ndef create_submission_from_predictions(\n    output_path: pathlib.Path, test_predictions: _Predictions) -> pathlib.Path:\n  \"\"\"Creates a submission for predictions on a path.\"\"\"\n  assert _SPLIT.value == 'test'\n\n  output_path = _generate_test_prediction_file(\n      test_predictions.predictions,\n      output_path=output_path / 'submission_files')\n\n  return output_path / 'y_pred_pcqm4m.npz'\n\n\ndef merge_predictions(split: str) -> List[_Predictions]:\n  \"\"\"Generates features merged from conformer and non-conformer predictions.\"\"\"\n  merged_predictions: List[_Predictions] = []\n  seed = _SEED_START.value\n\n  # Load conformer and non-conformer predictions.\n  for unused_seed_group in (0, 1):\n    for k in range(_NUM_KFOLD_SPLITS):\n      conformer_predictions: _Predictions = load_predictions(\n          f'{_CONFORMER_PATH.value}/k{k}_seed{seed}', split)\n\n      non_conformer_predictions: _Predictions = load_predictions(\n          f'{_NON_CONFORMER_PATH.value}/k{k}_seed{seed}', split)\n\n      merged_predictions.append(\n          merge_complementary_results(_SPLIT.value, conformer_predictions,\n                                      non_conformer_predictions))\n\n      seed += 1\n  return merged_predictions\n\n\ndef main(_):\n  split: str = _SPLIT.value\n\n  # Merge conformer and non-conformer predictions.\n  merged_predictions = merge_predictions(split)\n\n  # Clip before ensembling.\n  clipped_predictions = list(map(clip_predictions, merged_predictions))\n\n  # Ensemble predictions.\n  if split == 'valid':\n    ensembled_predictions = ensemble_valid_predictions(clipped_predictions)\n  else:\n    assert split == 'test'\n    ensembled_predictions = ensemble_test_predictions(clipped_predictions)\n\n  # Clip after ensembling.\n  ensembled_predictions = clip_predictions(ensembled_predictions)\n\n  ensembled_predictions_path = pathlib.Path(_OUTPUT_PATH.value)\n  ensembled_predictions_path.mkdir(parents=True, exist_ok=True)\n\n  with open(ensembled_predictions_path / f'{split}_predictions.dill',\n            'wb') as f:\n    dill.dump(ensembled_predictions, f)\n\n  if split == 'valid':\n    evaluate_valid_predictions(ensembled_predictions)\n  else:\n    assert split == 'test'\n    output_path = create_submission_from_predictions(ensembled_predictions_path,\n                                                     ensembled_predictions)\n    logging.info('Submission files written to %s', output_path)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "ogb_lsc/pcq/experiment.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"PCQM4M-LSC Jaxline experiment.\"\"\"\n\nimport datetime\nimport functools\nimport os\nimport signal\nimport threading\nfrom typing import Iterable, Mapping, NamedTuple, Tuple\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport chex\nimport dill\nimport haiku as hk\nimport jax\nfrom jax.config import config as jax_config\nimport jax.numpy as jnp\nfrom jaxline import experiment\nfrom jaxline import platform\nfrom jaxline import utils\nimport jraph\nimport numpy as np\nimport optax\nimport tensorflow as tf\nimport tree\n\n# pylint: disable=g-bad-import-order\nimport dataset_utils\nimport datasets\nimport model\n\n\nFLAGS = flags.FLAGS\n\n\ndef _get_step_date_label(global_step: int):\n  # Date removing microseconds.\n  date_str = datetime.datetime.now().isoformat().split('.')[0]\n  return f'step_{global_step}_{date_str}'\n\n\nclass _Predictions(NamedTuple):\n  predictions: np.ndarray\n  indices: np.ndarray\n\n\ndef tf1_ema(ema_value, current_value, decay, step):\n  \"\"\"Implements EMA with TF1-style decay warmup.\"\"\"\n  decay = jnp.minimum(decay, (1.0 + step) / (10.0 + step))\n  return ema_value * decay + current_value * (1 - decay)\n\n\ndef _sort_predictions_by_indices(predictions: _Predictions):\n  sorted_order = np.argsort(predictions.indices)\n  return _Predictions(\n      predictions=predictions.predictions[sorted_order],\n      indices=predictions.indices[sorted_order])\n\n\nclass Experiment(experiment.AbstractExperiment):\n  \"\"\"OGB Graph Property Prediction GraphNet experiment.\"\"\"\n\n  CHECKPOINT_ATTRS = {\n      '_params': 'params',\n      '_opt_state': 'opt_state',\n      '_network_state': 'network_state',\n      '_ema_network_state': 'ema_network_state',\n      '_ema_params': 'ema_params',\n  }\n\n  def __init__(self, mode, init_rng, config):\n    \"\"\"Initializes experiment.\"\"\"\n    super(Experiment, self).__init__(mode=mode, init_rng=init_rng)\n    if mode not in ('train', 'eval', 'train_eval_multithreaded'):\n      raise ValueError(f'Invalid mode {mode}.')\n\n    # Do not use accelerators in data pipeline.\n    tf.config.experimental.set_visible_devices([], device_type='GPU')\n    tf.config.experimental.set_visible_devices([], device_type='TPU')\n\n    self.mode = mode\n    self.init_rng = init_rng\n    self.config = config\n\n    self.loss = None\n    self.forward = None\n\n    # Needed for checkpoint restore.\n    self._params = None\n    self._network_state = None\n    self._opt_state = None\n    self._ema_network_state = None\n    self._ema_params = None\n\n  #  _             _\n  # | |_ _ __ __ _(_)_ __\n  # | __| \"__/ _` | | \"_ \\\n  # | |_| | | (_| | | | | |\n  #  \\__|_|  \\__,_|_|_| |_|\n  #\n\n  def step(self, global_step: jnp.ndarray, rng: jnp.ndarray, **unused_args):\n    \"\"\"See Jaxline base class.\"\"\"\n    if self.loss is None:\n      self._train_init()\n\n    graph = next(self._train_input)\n    out = self.update_parameters(\n        self._params,\n        self._ema_params,\n        self._network_state,\n        self._ema_network_state,\n        self._opt_state,\n        global_step,\n        rng,\n        graph._asdict())\n    (self._params, self._ema_params, self._network_state,\n     self._ema_network_state, self._opt_state, scalars) = out\n    return utils.get_first(scalars)\n\n  def _construct_loss_config(self):\n    loss_config = getattr(model, self.config.model.loss_config_name)\n    if self.config.model.loss_config_name == 'RegressionLossConfig':\n      return loss_config(\n          mean=datasets.NORMALIZE_TARGET_MEAN,\n          std=datasets.NORMALIZE_TARGET_STD,\n          kwargs=self.config.model.loss_kwargs)\n    else:\n      raise ValueError('Unknown Loss Config')\n\n  def _train_init(self):\n    self.loss = hk.transform_with_state(self._loss)\n    self._train_input = utils.py_prefetch(\n        lambda: self._build_numpy_dataset_iterator('train', is_training=True))\n    init_stacked_graphs = next(self._train_input)\n    init_key = utils.bcast_local_devices(self.init_rng)\n    p_init = jax.pmap(self.loss.init)\n    self._params, self._network_state = p_init(init_key,\n                                               **init_stacked_graphs._asdict())\n\n    # Learning rate scheduling.\n    lr_schedule = optax.warmup_cosine_decay_schedule(\n        **self.config.optimizer.lr_schedule)\n\n    self.optimizer = getattr(optax, self.config.optimizer.name)(\n        learning_rate=lr_schedule, **self.config.optimizer.optimizer_kwargs)\n\n    self._opt_state = jax.pmap(self.optimizer.init)(self._params)\n    self.update_parameters = jax.pmap(self._update_parameters, axis_name='i')\n    if self.config.ema:\n      self._ema_params = self._params\n      self._ema_network_state = self._network_state\n\n  def _loss(\n      self, **graph: Mapping[str, chex.ArrayTree]) -> chex.ArrayTree:\n\n    graph = jraph.GraphsTuple(**graph)\n    model_instance = model.GraphPropertyEncodeProcessDecode(\n        loss_config=self._construct_loss_config(), **self.config.model)\n    loss, scalars = model_instance.get_loss(graph)\n    return loss, scalars\n\n  def _maybe_save_predictions(\n      self,\n      predictions: jnp.ndarray,\n      split: str,\n      global_step: jnp.ndarray,\n  ):\n    if not self.config.predictions_dir:\n      return\n    output_dir = os.path.join(self.config.predictions_dir,\n                              _get_step_date_label(global_step))\n    os.makedirs(output_dir, exist_ok=True)\n    output_path = os.path.join(output_dir, split + '.dill')\n\n    with open(output_path, 'wb') as f:\n      dill.dump(predictions, f)\n    logging.info('Saved %s predictions at: %s', split, output_path)\n\n  def _build_numpy_dataset_iterator(self, split: str, is_training: bool):\n    dynamic_batch_size_config = (\n        self.config.training.dynamic_batch_size\n        if is_training else self.config.evaluation.dynamic_batch_size)\n\n    return dataset_utils.build_dataset_iterator(\n        split=split,\n        dynamic_batch_size_config=dynamic_batch_size_config,\n        sample_random=self.config.sample_random,\n        debug=self.config.debug,\n        is_training=is_training,\n        **self.config.dataset_config)\n\n  def _update_parameters(\n      self,\n      params: hk.Params,\n      ema_params: hk.Params,\n      network_state: hk.State,\n      ema_network_state: hk.State,\n      opt_state: optax.OptState,\n      global_step: jnp.ndarray,\n      rng: jnp.ndarray,\n      graph: jraph.GraphsTuple,\n  ) -> Tuple[hk.Params, hk.Params, hk.State, hk.State, optax.OptState,\n             chex.ArrayTree]:\n    \"\"\"Updates parameters.\"\"\"\n    def get_loss(*x, **graph):\n      (loss, scalars), network_state = self.loss.apply(*x, **graph)\n      return loss, (scalars, network_state)\n    grad_loss_fn = jax.grad(get_loss, has_aux=True)\n    scaled_grads, (scalars, network_state) = grad_loss_fn(\n        params, network_state, rng, **graph)\n    grads = jax.lax.psum(scaled_grads, axis_name='i')\n    updates, opt_state = self.optimizer.update(grads, opt_state, params)\n    params = optax.apply_updates(params, updates)\n    if ema_params is not None:\n      ema = lambda x, y: tf1_ema(x, y, self.config.ema_decay, global_step)\n      ema_params = jax.tree_map(ema, ema_params, params)\n      ema_network_state = jax.tree_map(ema, ema_network_state,\n                                            network_state)\n    return params, ema_params, network_state, ema_network_state, opt_state, scalars\n\n  #                  _\n  #   _____   ____ _| |\n  #  / _ \\ \\ / / _` | |\n  # |  __/\\ V / (_| | |\n  #  \\___| \\_/ \\__,_|_|\n  #\n\n  def evaluate(self, global_step: jnp.ndarray, rng: jnp.ndarray,\n               **unused_kwargs) -> chex.ArrayTree:\n    \"\"\"See Jaxline base class.\"\"\"\n    if self.forward is None:\n      self._eval_init()\n\n    if self.config.ema:\n      params = utils.get_first(self._ema_params)\n      state = utils.get_first(self._ema_network_state)\n    else:\n      params = utils.get_first(self._params)\n      state = utils.get_first(self._network_state)\n    rng = utils.get_first(rng)\n\n    split = self.config.evaluation.split\n    predictions, scalars = self._get_predictions(\n        params, state, rng,\n        utils.py_prefetch(\n            functools.partial(\n                self._build_numpy_dataset_iterator, split, is_training=False)))\n    self._maybe_save_predictions(predictions, split, global_step[0])\n    return scalars\n\n  def _sum_regression_scalars(self, preds: jnp.ndarray,\n                              graph: jraph.GraphsTuple) -> chex.ArrayTree:\n    \"\"\"Creates unnormalised values for accumulation.\"\"\"\n    targets = graph.globals['target']\n    graph_mask = jraph.get_graph_padding_mask(graph)\n    # Sum for accumulation, normalise later since there are a\n    # variable number of graphs per batch.\n    mae = model.sum_with_mask(jnp.abs(targets - preds), graph_mask)\n    mse = model.sum_with_mask((targets - preds)**2, graph_mask)\n    count = jnp.sum(graph_mask)\n    return {'values': {'mae': mae.item(), 'mse': mse.item()},\n            'counts': {'mae': count.item(), 'mse': count.item()}}\n\n  def _get_prediction(\n      self,\n      params: hk.Params,\n      state: hk.State,\n      rng: jnp.ndarray,\n      graph: jraph.GraphsTuple,\n  ) -> np.ndarray:\n    \"\"\"Returns predictions for all the graphs in the dataset split.\"\"\"\n    model_out, _ = self.eval_apply(params, state, rng, **graph._asdict())\n    prediction = np.squeeze(model_out['globals'], axis=1)\n    return prediction\n\n  def _get_predictions(\n      self,\n      params: hk.Params,\n      state: hk.State,\n      rng: jnp.ndarray,\n      graph_iterator: Iterable[jraph.GraphsTuple],\n  ) -> Tuple[_Predictions, chex.ArrayTree]:\n    all_scalars = []\n    predictions = []\n    graph_indices = []\n    for i, graph in enumerate(graph_iterator):\n      prediction = self._get_prediction(params, state, rng, graph)\n      if 'target' in graph.globals and not jnp.isnan(\n          graph.globals['target']).any():\n        scalars = self._sum_regression_scalars(prediction, graph)\n        all_scalars.append(scalars)\n      num_padding_graphs = jraph.get_number_of_padding_with_graphs_graphs(graph)\n      num_valid_graphs = len(graph.n_node) - num_padding_graphs\n      depadded_prediction = prediction[:num_valid_graphs]\n      predictions.append(depadded_prediction)\n      graph_indices.append(graph.globals['graph_index'][:num_valid_graphs])\n\n      if i % 1000 == 0:\n        logging.info('Generated predictions for %d batches so far', i + 1)\n\n    predictions = _sort_predictions_by_indices(\n        _Predictions(\n            predictions=np.concatenate(predictions),\n            indices=np.concatenate(graph_indices)))\n\n    if all_scalars:\n      sum_all_args = lambda *l: sum(l)\n      # Sum over graphs in the dataset.\n      accum_scalars = tree.map_structure(sum_all_args, *all_scalars)\n      scalars = tree.map_structure(lambda x, y: x / y, accum_scalars['values'],\n                                   accum_scalars['counts'])\n    else:\n      scalars = {}\n    return predictions, scalars\n\n  def _eval_init(self):\n    self.forward = hk.transform_with_state(self._forward)\n    self.eval_apply = jax.jit(self.forward.apply)\n\n  def _forward(self, **graph: Mapping[str, chex.ArrayTree]) -> chex.ArrayTree:\n\n    graph = jraph.GraphsTuple(**graph)\n    model_instance = model.GraphPropertyEncodeProcessDecode(\n        loss_config=self._construct_loss_config(), **self.config.model)\n    return model_instance(graph)\n\n\ndef _restore_state_to_in_memory_checkpointer(restore_path):\n  \"\"\"Initializes experiment state from a checkpoint.\"\"\"\n\n  # Load pretrained experiment state.\n  python_state_path = os.path.join(restore_path, 'checkpoint.dill')\n  with open(python_state_path, 'rb') as f:\n    pretrained_state = dill.load(f)\n  logging.info('Restored checkpoint from %s', python_state_path)\n\n  # Assign state to a dummy experiment instance for the in-memory checkpointer,\n  # broadcasting to devices.\n  dummy_experiment = Experiment(\n      mode='train', init_rng=0, config=FLAGS.config.experiment_kwargs.config)\n  for attribute, key in Experiment.CHECKPOINT_ATTRS.items():\n    setattr(dummy_experiment, attribute,\n            utils.bcast_local_devices(pretrained_state[key]))\n\n  jaxline_state = dict(\n      global_step=pretrained_state['global_step'],\n      experiment_module=dummy_experiment)\n  snapshot = utils.SnapshotNT(0, jaxline_state)\n\n  # Finally, seed the jaxline `utils.InMemoryCheckpointer` global dict.\n  utils.GLOBAL_CHECKPOINT_DICT['latest'] = utils.CheckpointNT(\n      threading.local(), [snapshot])\n\n\ndef _save_state_from_in_memory_checkpointer(\n    save_path, experiment_class: experiment.AbstractExperiment):\n  \"\"\"Saves experiment state to a checkpoint.\"\"\"\n  logging.info('Saving model.')\n  for checkpoint_name, checkpoint in utils.GLOBAL_CHECKPOINT_DICT.items():\n    if not checkpoint.history:\n      logging.info('Nothing to save in \"%s\"', checkpoint_name)\n      continue\n\n    pickle_nest = checkpoint.history[-1].pickle_nest\n    global_step = pickle_nest['global_step']\n\n    state_dict = {'global_step': global_step}\n    for attribute, key in experiment_class.CHECKPOINT_ATTRS.items():\n      state_dict[key] = utils.get_first(\n          getattr(pickle_nest['experiment_module'], attribute))\n    save_dir = os.path.join(\n        save_path, checkpoint_name, _get_step_date_label(global_step))\n    python_state_path = os.path.join(save_dir, 'checkpoint.dill')\n    os.makedirs(save_dir, exist_ok=True)\n    with open(python_state_path, 'wb') as f:\n      dill.dump(state_dict, f)\n    logging.info(\n        'Saved \"%s\" checkpoint to %s', checkpoint_name, python_state_path)\n\n\ndef _setup_signals(save_model_fn):\n  \"\"\"Sets up a signal for model saving.\"\"\"\n  # Save a model on Ctrl+C.\n  def sigint_handler(unused_sig, unused_frame):\n    # Ideally, rather than saving immediately, we would then \"wait\" for a good\n    # time to save. In practice this reads from an in-memory checkpoint that\n    # only saves every 30 seconds or so, so chances of race conditions are very\n    # small.\n    save_model_fn()\n    logging.info(r'Use `Ctrl+\\` to save and exit.')\n\n  # Exit on `Ctrl+\\`, saving a model.\n  prev_sigquit_handler = signal.getsignal(signal.SIGQUIT)\n  def sigquit_handler(unused_sig, unused_frame):\n    # Restore previous handler early, just in case something goes wrong in the\n    # next lines, so it is possible to press again and exit.\n    signal.signal(signal.SIGQUIT, prev_sigquit_handler)\n    save_model_fn()\n    logging.info(r'Exiting on `Ctrl+\\`')\n\n    # Re-raise for clean exit.\n    os.kill(os.getpid(), signal.SIGQUIT)\n\n  signal.signal(signal.SIGINT, sigint_handler)\n  signal.signal(signal.SIGQUIT, sigquit_handler)\n\n\ndef main(argv, experiment_class: experiment.AbstractExperiment):\n\n  # Maybe restore a model.\n  restore_path = FLAGS.config.restore_path\n  if restore_path:\n    _restore_state_to_in_memory_checkpointer(restore_path)\n\n  # Maybe save a model.\n  save_dir = os.path.join(FLAGS.config.checkpoint_dir, 'models')\n  if FLAGS.config.one_off_evaluate:\n    save_model_fn = lambda: None  # No need to save checkpoint in this case.\n  else:\n    save_model_fn = functools.partial(\n        _save_state_from_in_memory_checkpointer, save_dir, experiment_class)\n  _setup_signals(save_model_fn)  # Save on Ctrl+C (continue) or Ctrl+\\ (exit).\n\n  try:\n    platform.main(experiment_class, argv)\n  finally:\n    save_model_fn()  # Save at the end of training or in case of exception.\n\n\nif __name__ == '__main__':\n  jax_config.update('jax_debug_nans', False)\n  flags.mark_flag_as_required('config')\n  app.run(lambda argv: main(argv, Experiment))\n"
  },
  {
    "path": "ogb_lsc/pcq/generate_conformer_features.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Generate conformer features to be used for training/predictions.\"\"\"\n\nimport multiprocessing as mp\nimport pickle\nfrom typing import List\n\nfrom absl import app\nfrom absl import flags\nimport numpy as np\n\n# pylint: disable=g-bad-import-order\nimport conformer_utils\nimport datasets\n\n_SPLITS = flags.DEFINE_spaceseplist(\n    'splits', ['test'], 'Splits to compute conformer features for.')\n\n_OUTPUT_FILE = flags.DEFINE_string(\n    'output_file',\n    None,\n    required=True,\n    help='Output file name to write the generated conformer features to.')\n\n_NUM_PROCS = flags.DEFINE_integer(\n    'num_parallel_procs', 64,\n    'Number of parallel processes to use for conformer generation.')\n\n\ndef generate_conformer_features(smiles: List[str]) -> List[np.ndarray]:\n  # Conformer generation is a CPU-bound task and hence can get a boost from\n  # parallel processing.\n  # To avoid GIL, we choose multiprocessing instead of the\n  # simpler multi-threading option here for parallel computing.\n  with mp.Pool(_NUM_PROCS.value) as pool:\n    return list(pool.map(conformer_utils.compute_conformer, smiles))\n\n\ndef main(_):\n  smiles = datasets.load_smile_strings(with_labels=False)\n  indices = set()\n  for split in _SPLITS.value:\n    indices.update(datasets.load_splits()[split])\n\n  smiles = [smiles[i] for i in sorted(indices)]\n  conformers = generate_conformer_features(smiles)\n  smiles_to_conformers = dict(zip(smiles, conformers))\n\n  with open(_OUTPUT_FILE.value, 'wb') as f:\n    pickle.dump(smiles_to_conformers, f)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "ogb_lsc/pcq/generate_validation_splits.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Generates the k-fold validation splits.\"\"\"\n\nimport os\nimport pickle\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport numpy as np\n\n# pylint: disable=g-bad-import-order\nimport datasets\n\n\n_OUTPUT_DIR = flags.DEFINE_string(\n    'output_dir', None, required=True,\n    help='Output directory to write the splits to')\n\n\nK = 10\n\n\ndef main(argv):\n  del argv\n  valid_indices = datasets.load_splits()['valid']\n  k_splits = np.split(valid_indices, K)\n  os.makedirs(_OUTPUT_DIR.value, exist_ok=True)\n  for k_i, split in enumerate(k_splits):\n    fname = os.path.join(_OUTPUT_DIR.value, f'{k_i}.pkl')\n    with open(fname, 'wb') as f:\n      pickle.dump(split, f)\n    logging.info('Saved: %s', fname)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "ogb_lsc/pcq/model.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"PCQM4M-LSC models.\"\"\"\n\nimport copy\nimport functools\nfrom typing import Any, Dict, Mapping, Sequence, Tuple\n\nimport chex\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport jraph\nfrom ml_collections import config_dict\n\n\n_REDUCER_NAMES = {\n    \"sum\": jax.ops.segment_sum,\n    \"mean\": jraph.segment_mean,\n}\n\n_NUM_EDGE_FEATURES = 13\n_NUM_NODE_FEATURES = 173\n\n\n@chex.dataclass\nclass RegressionLossConfig:\n  \"\"\"Regression Loss Config.\"\"\"\n  # For normalization and denormalization.\n  std: float\n  mean: float\n  kwargs: Mapping[str, Any]\n  out_size: int = 1\n\n\ndef _sigmoid_cross_entropy(\n    logits: jax.Array,\n    labels: jax.Array,\n) -> jax.Array:\n  log_p = jax.nn.log_sigmoid(logits)\n  log_not_p = jax.nn.log_sigmoid(-logits)\n  return -labels * log_p - (1. - labels) * log_not_p\n\n\ndef _softmax_cross_entropy(\n    logits: jax.Array,\n    targets: jax.Array,\n) -> jax.Array:\n  logits = jax.nn.log_softmax(logits)\n  return -jnp.sum(targets * logits, axis=-1)\n\n\ndef _regression_loss(\n    pred: jnp.ndarray,\n    targets: jnp.ndarray,\n    exponent: int,\n) -> jnp.ndarray:\n  \"\"\"Regression loss.\"\"\"\n  error = pred - targets\n  if exponent == 2:\n    return error ** 2\n  elif exponent == 1:\n    return jnp.abs(error)\n  else:\n    raise ValueError(f\"Unsupported exponent value {exponent}.\")\n\n\ndef _build_mlp(\n    name: str,\n    output_sizes: Sequence[int],\n    use_layer_norm=False,\n    activation=jax.nn.relu,\n):\n  \"\"\"Builds an MLP, optionally with layernorm.\"\"\"\n  net = hk.nets.MLP(\n      output_sizes=output_sizes, name=name + \"_mlp\", activation=activation)\n  if use_layer_norm:\n    layer_norm = hk.LayerNorm(\n        axis=-1,\n        create_scale=True,\n        create_offset=True,\n        name=name + \"_layer_norm\")\n    net = hk.Sequential([net, layer_norm])\n  return jraph.concatenated_args(net)\n\n\ndef _compute_relative_displacement_and_distance(\n    graph: jraph.GraphsTuple,\n    normalization_factor: float,\n    use_target: bool,\n) -> Tuple[jnp.ndarray, jnp.ndarray]:\n  \"\"\"Computes relative displacements and distances.\"\"\"\n\n  if use_target:\n    node_positions = graph.nodes[\"positions_targets\"]\n  else:\n    node_positions = graph.nodes[\"positions\"]\n  relative_displacement = node_positions[\n      graph.receivers] - node_positions[graph.senders]\n\n  # Note due to the random rotations in space, mean across all nodes across\n  # all batches is guaranteed to be zero, and the standard deviation is\n  # guaranteed to be the same for all 3 coordinates, so we only need to scale\n  # by a single value.\n  relative_displacement /= normalization_factor\n  relative_distance = jnp.linalg.norm(\n      relative_displacement, axis=-1, keepdims=True)\n  return relative_displacement, relative_distance\n\n\ndef _broadcast_global_to_nodes(\n    global_feature: jnp.ndarray,\n    graph: jraph.GraphsTuple,\n) -> jnp.ndarray:\n  graph_idx = jnp.arange(graph.n_node.shape[0])\n  sum_n_node = jax.tree_leaves(graph.nodes)[0].shape[0]\n  node_graph_idx = jnp.repeat(\n      graph_idx, graph.n_node, axis=0, total_repeat_length=sum_n_node)\n  return global_feature[node_graph_idx]\n\n\ndef _broadcast_global_to_edges(\n    global_feature: jnp.ndarray,\n    graph: jraph.GraphsTuple,\n) -> jnp.ndarray:\n  graph_idx = jnp.arange(graph.n_edge.shape[0])\n  sum_n_edge = graph.senders.shape[0]\n  edge_graph_idx = jnp.repeat(\n      graph_idx, graph.n_edge, axis=0, total_repeat_length=sum_n_edge)\n  return global_feature[edge_graph_idx]\n\n\nclass GraphPropertyEncodeProcessDecode(hk.Module):\n  \"\"\"Encode-process-decode model for graph property prediction.\"\"\"\n\n  def __init__(\n      self,\n      loss_config: config_dict.ConfigDict,\n      mlp_hidden_size: int,\n      mlp_layers: int,\n      latent_size: int,\n      use_layer_norm: bool,\n      num_message_passing_steps: int,\n      shared_message_passing_weights: bool,\n      mask_padding_graph_at_every_step: bool,\n      loss_config_name: str,\n      loss_kwargs: config_dict.ConfigDict,\n      processor_mode: str,\n      global_reducer: str,\n      node_reducer: str,\n      dropedge_rate: float,\n      dropnode_rate: float,\n      aux_multiplier: float,\n      ignore_globals: bool,\n      ignore_globals_from_final_layer_for_predictions: bool,\n      add_relative_distance: bool = False,\n      add_relative_displacement: bool = False,\n      add_absolute_positions: bool = False,\n      position_normalization: float = 1.,\n      relative_displacement_normalization: float = 1.,\n      add_misc_node_features: bool = None,\n      name=\"GraphPropertyEncodeProcessDecode\",\n  ):\n    super(GraphPropertyEncodeProcessDecode, self).__init__()\n    self._loss_config = loss_config\n\n    self._config = config_dict.ConfigDict(dict(\n        loss_config=loss_config,\n        mlp_hidden_size=mlp_hidden_size,\n        mlp_layers=mlp_layers,\n        latent_size=latent_size,\n        use_layer_norm=use_layer_norm,\n        num_message_passing_steps=num_message_passing_steps,\n        shared_message_passing_weights=shared_message_passing_weights,\n        mask_padding_graph_at_every_step=mask_padding_graph_at_every_step,\n        loss_config_name=loss_config_name,\n        loss_kwargs=loss_kwargs,\n        processor_mode=processor_mode,\n        global_reducer=global_reducer,\n        node_reducer=node_reducer,\n        dropedge_rate=dropedge_rate,\n        dropnode_rate=dropnode_rate,\n        aux_multiplier=aux_multiplier,\n        ignore_globals=ignore_globals,\n        ignore_globals_from_final_layer_for_predictions=ignore_globals_from_final_layer_for_predictions,\n        add_relative_distance=add_relative_distance,\n        add_relative_displacement=add_relative_displacement,\n        add_absolute_positions=add_absolute_positions,\n        position_normalization=position_normalization,\n        relative_displacement_normalization=relative_displacement_normalization,\n        add_misc_node_features=add_misc_node_features,\n    ))\n\n  def __call__(self, graph: jraph.GraphsTuple) -> chex.ArrayTree:\n    \"\"\"Model inference step.\"\"\"\n    out = self._forward(graph, is_training=False)\n    if isinstance(self._loss_config, RegressionLossConfig):\n      out[\"globals\"] = out[\n          \"globals\"]*self._loss_config.std + self._loss_config.mean\n    return out\n\n  @hk.experimental.name_like(\"__call__\")\n  def get_loss(\n      self,\n      graph: jraph.GraphsTuple,\n      is_training: bool = True,\n  ) -> Tuple[jnp.ndarray, chex.ArrayTree]:\n    \"\"\"Model loss.\"\"\"\n    scalars = get_utilization_scalars(graph)\n    targets = copy.deepcopy(graph.globals[\"target\"])\n    if len(targets.shape) == 1:\n      targets = targets[:, None]\n    del graph.globals[\"target\"]\n    target_mask = None\n    if \"target_mask\" in graph.globals:\n      target_mask = copy.deepcopy(graph.globals[\"target_mask\"])\n      del graph.globals[\"target_mask\"]\n\n    out = self._forward(graph, is_training)\n\n    if isinstance(self._loss_config, RegressionLossConfig):\n      normalized_targets = (\n          (targets - self._loss_config.mean) / self._loss_config.std)\n      per_graph_and_head_loss = _regression_loss(\n          out[\"globals\"], normalized_targets, **self._loss_config.kwargs)\n    else:\n      raise TypeError(type(self._loss_config))\n\n    # Mask out nans\n    if target_mask is None:\n      per_graph_and_head_loss = jnp.mean(per_graph_and_head_loss, axis=1)\n    else:\n      per_graph_and_head_loss = jnp.sum(\n          per_graph_and_head_loss * target_mask, axis=1)\n      per_graph_and_head_loss /= jnp.sum(target_mask + 1e-8, axis=1)\n\n    g_mask = jraph.get_graph_padding_mask(graph)\n    loss = _mean_with_mask(per_graph_and_head_loss, g_mask)\n    scalars.update({\"loss\": loss})\n\n    if self._config.aux_multiplier > 0:\n      atom_loss = self._get_node_auxiliary_loss(\n          graph, out[\"atom_one_hots\"], graph.nodes[\"atom_one_hots_targets\"],\n          is_regression=False)\n      bond_loss = self._get_edge_auxiliary_loss(\n          graph, out[\"bond_one_hots\"], graph.edges[\"bond_one_hots_targets\"],\n          is_regression=False)\n      loss += (atom_loss + bond_loss)*self._config.aux_multiplier\n      scalars.update({\"atom_loss\": atom_loss, \"bond_loss\": bond_loss})\n\n    scaled_loss = loss / jax.device_count()\n    scalars.update({\"total_loss\": loss})\n    return scaled_loss, scalars\n\n  @hk.transparent\n  def _prepare_features(self, graph: jraph.GraphsTuple) -> jraph.GraphsTuple:\n    \"\"\"Prepares features keys into flat node, edge and global features.\"\"\"\n\n    # Collect edge features.\n    edge_features_list = [graph.edges[\"bond_one_hots\"]]\n    if (self._config.add_relative_displacement or\n        self._config.add_relative_distance):\n      (relative_displacement, relative_distance\n       ) = _compute_relative_displacement_and_distance(\n           graph, self._config.relative_displacement_normalization,\n           use_target=False)\n\n      if self._config.add_relative_displacement:\n        edge_features_list.append(relative_displacement)\n      if self._config.add_relative_distance:\n        edge_features_list.append(relative_distance)\n      mask_at_edges = _broadcast_global_to_edges(\n          graph.globals[\"positions_nan_mask\"], graph)\n      edge_features_list.append(mask_at_edges[:, None].astype(jnp.float32))\n\n    edge_features = jnp.concatenate(edge_features_list, axis=-1)\n\n    # Collect node features\n    node_features_list = [graph.nodes[\"atom_one_hots\"]]\n\n    if self._config.add_absolute_positions:\n      node_features_list.append(\n          graph.nodes[\"positions\"] / self._config.position_normalization)\n      mask_at_nodes = _broadcast_global_to_nodes(\n          graph.globals[\"positions_nan_mask\"], graph)\n      node_features_list.append(mask_at_nodes[:, None].astype(jnp.float32))\n\n    node_features = jnp.concatenate(node_features_list, axis=-1)\n\n    global_features = jnp.zeros((len(graph.n_node), self._config.latent_size))\n    chex.assert_tree_shape_prefix(global_features, (len(graph.n_node),))\n    return graph._replace(\n        nodes=node_features, edges=edge_features, globals=global_features)\n\n  @hk.transparent\n  def _encoder(\n      self,\n      graph: jraph.GraphsTuple,\n      is_training: bool,\n  ) -> jraph.GraphsTuple:\n    \"\"\"Builds the encoder.\"\"\"\n    del is_training  # unused\n    graph = self._prepare_features(graph)\n\n    # Run encoders in all of the node, edge and global features.\n    output_sizes = [self._config.mlp_hidden_size] * self._config.mlp_layers\n    output_sizes += [self._config.latent_size]\n    build_mlp = functools.partial(\n        _build_mlp,\n        output_sizes=output_sizes,\n        use_layer_norm=self._config.use_layer_norm,\n    )\n\n    gmf = jraph.GraphMapFeatures(\n        embed_edge_fn=build_mlp(\"edge_encoder\"),\n        embed_node_fn=build_mlp(\"node_encoder\"),\n        embed_global_fn=None\n        if self._config.ignore_globals else build_mlp(\"global_encoder\"),\n    )\n    return gmf(graph)\n\n  @hk.transparent\n  def _processor(\n      self,\n      graph: jraph.GraphsTuple,\n      is_training: bool,\n  ) -> jraph.GraphsTuple:\n    \"\"\"Builds the processor.\"\"\"\n    output_sizes = [self._config.mlp_hidden_size] * self._config.mlp_layers\n    output_sizes += [self._config.latent_size]\n    build_mlp = functools.partial(\n        _build_mlp,\n        output_sizes=output_sizes,\n        use_layer_norm=self._config.use_layer_norm,\n    )\n\n    shared_weights = self._config.shared_message_passing_weights\n    node_reducer = _REDUCER_NAMES[self._config.node_reducer]\n    global_reducer = _REDUCER_NAMES[self._config.global_reducer]\n\n    def dropout_if_training(fn, dropout_rate: float):\n      def wrapped(*args):\n        out = fn(*args)\n        if is_training:\n          mask = hk.dropout(hk.next_rng_key(), dropout_rate,\n                            jnp.ones([out.shape[0], 1]))\n          out = out * mask\n        return out\n      return wrapped\n\n    num_mps = self._config.num_message_passing_steps\n    for step in range(num_mps):\n      if step == 0 or not shared_weights:\n        suffix = \"shared\" if shared_weights else step\n\n        update_edge_fn = dropout_if_training(\n            build_mlp(f\"edge_processor_{suffix}\"),\n            dropout_rate=self._config.dropedge_rate)\n\n        update_node_fn = dropout_if_training(\n            build_mlp(f\"node_processor_{suffix}\"),\n            dropout_rate=self._config.dropnode_rate)\n\n        if self._config.ignore_globals:\n          gnn = jraph.InteractionNetwork(\n              update_edge_fn=update_edge_fn,\n              update_node_fn=update_node_fn,\n              aggregate_edges_for_nodes_fn=node_reducer)\n        else:\n          gnn = jraph.GraphNetwork(\n              update_edge_fn=update_edge_fn,\n              update_node_fn=update_node_fn,\n              update_global_fn=build_mlp(f\"global_processor_{suffix}\"),\n              aggregate_edges_for_nodes_fn=node_reducer,\n              aggregate_nodes_for_globals_fn=global_reducer,\n              aggregate_edges_for_globals_fn=global_reducer,\n          )\n\n      mode = self._config.processor_mode\n\n      if mode == \"mlp\":\n        graph = gnn(graph)\n\n      elif mode == \"resnet\":\n        new_graph = gnn(graph)\n        graph = graph._replace(\n            nodes=graph.nodes + new_graph.nodes,\n            edges=graph.edges + new_graph.edges,\n            globals=graph.globals + new_graph.globals,\n        )\n      else:\n        raise ValueError(f\"Unknown processor_mode `{mode}`\")\n\n      if self._config.mask_padding_graph_at_every_step:\n        graph = _mask_out_padding_graph(graph)\n\n    return graph\n\n  @hk.transparent\n  def _decoder(\n      self,\n      graph: jraph.GraphsTuple,\n      input_graph: jraph.GraphsTuple,\n      is_training: bool,\n  ) -> chex.ArrayTree:\n    \"\"\"Builds the decoder.\"\"\"\n    del is_training  # unused.\n\n    output_sizes = [self._config.mlp_hidden_size] * self._config.mlp_layers\n    output_sizes += [self._loss_config.out_size]\n    net = _build_mlp(\"regress_out\", output_sizes, use_layer_norm=False)\n    summed_nodes = _aggregate_nodes_to_globals(graph, graph.nodes)\n    inputs_to_global_decoder = [summed_nodes]\n    if not self._config.ignore_globals_from_final_layer_for_predictions:\n      inputs_to_global_decoder.append(graph.globals)\n\n    out = net(jnp.concatenate(inputs_to_global_decoder, axis=-1))\n    out_dict = {}\n    out_dict[\"globals\"] = out\n\n    # Note \"linear\" names are for compatibility with pre-trained model names.\n    out_dict[\"bond_one_hots\"] = hk.Linear(\n        _NUM_EDGE_FEATURES, name=\"linear\")(graph.edges)\n    out_dict[\"atom_one_hots\"] = hk.Linear(\n        _NUM_NODE_FEATURES, name=\"linear_1\")(graph.nodes)\n    return out_dict\n\n  @hk.transparent\n  def _forward(self, graph: jraph.GraphsTuple, is_training: bool):\n    input_graph = jraph.GraphsTuple(*graph)\n    with hk.experimental.name_scope(\"encoder_scope\"):\n      graph = self._encoder(graph, is_training)\n    with hk.experimental.name_scope(\"processor_scope\"):\n      graph = self._processor(graph, is_training)\n    with hk.experimental.name_scope(\"decoder_scope\"):\n      out = self._decoder(graph, input_graph, is_training)\n    return out\n\n  def _get_node_auxiliary_loss(\n      self, graph, pred, targets, is_regression, additional_mask=None):\n    loss = self._get_loss(pred, targets, is_regression)\n    target_mask = jraph.get_node_padding_mask(graph)\n\n    if additional_mask is not None:\n      loss *= additional_mask\n      target_mask = jnp.logical_and(target_mask, additional_mask)\n\n    return _mean_with_mask(loss, target_mask)\n\n  def _get_edge_auxiliary_loss(\n      self, graph, pred, targets, is_regression, additional_mask=None):\n    loss = self._get_loss(pred, targets, is_regression)\n    target_mask = jraph.get_edge_padding_mask(graph)\n\n    if additional_mask is not None:\n      loss *= additional_mask\n      target_mask = jnp.logical_and(target_mask, additional_mask)\n\n    return _mean_with_mask(loss, target_mask)\n\n  def _get_loss(self, pred, targets, is_regression):\n    if is_regression:\n      loss = ((pred - targets)**2).mean(axis=-1)\n    else:\n      targets /= jnp.maximum(1., jnp.sum(targets, axis=-1, keepdims=True))\n      loss = _softmax_cross_entropy(pred, targets)\n    return loss\n\n\ndef get_utilization_scalars(\n    padded_graph: jraph.GraphsTuple) -> Dict[str, float]:\n  padding_nodes = jraph.get_number_of_padding_with_graphs_nodes(padded_graph)\n  all_nodes = len(jax.tree_leaves(padded_graph.nodes)[0])\n  padding_edges = jraph.get_number_of_padding_with_graphs_edges(padded_graph)\n  all_edges = len(jax.tree_leaves(padded_graph.edges)[0])\n  padding_graphs = jraph.get_number_of_padding_with_graphs_graphs(padded_graph)\n  all_graphs = len(padded_graph.n_node)\n  return {\"node_utilization\": 1 - (padding_nodes / all_nodes),\n          \"edge_utilization\": 1 - (padding_edges / all_edges),\n          \"graph_utilization\": 1 - (padding_graphs / all_graphs)}\n\n\ndef sum_with_mask(array: jnp.ndarray, mask: jnp.ndarray) -> jnp.ndarray:\n  return (mask * array).sum(0)\n\n\ndef _mean_with_mask(array: jnp.ndarray, mask: jnp.ndarray) -> jnp.ndarray:\n  num_valid_rows = mask.sum(0)\n  return sum_with_mask(array, mask) / num_valid_rows\n\n\ndef _mask_out_padding_graph(\n    padded_graph: jraph.GraphsTuple) -> jraph.GraphsTuple:\n  return padded_graph._replace(\n      nodes=jnp.where(\n          jraph.get_node_padding_mask(\n              padded_graph)[:, None], padded_graph.nodes, 0.),\n      edges=jnp.where(\n          jraph.get_edge_padding_mask(\n              padded_graph)[:, None], padded_graph.edges, 0.),\n      globals=jnp.where(\n          jraph.get_graph_padding_mask(\n              padded_graph)[:, None], padded_graph.globals, 0.),\n      )\n\n\ndef _aggregate_nodes_to_globals(graph, node_features):\n  n_graph = graph.n_node.shape[0]\n  sum_n_node = jax.tree_leaves(graph.nodes)[0].shape[0]\n  graph_idx = jnp.arange(n_graph)\n  node_gr_idx = jnp.repeat(\n      graph_idx, graph.n_node, axis=0, total_repeat_length=sum_n_node)\n  return jax.ops.segment_sum(node_features, node_gr_idx, num_segments=n_graph)\n"
  },
  {
    "path": "ogb_lsc/pcq/requirements.txt",
    "content": "wheel\nabsl-py>=0.12.0\nchex>=0.0.7\ndill>=0.3.3\ndm-haiku>=0.0.4\n# jaxline\ngit+https://github.com/deepmind/jaxline@927695a0b88e480d085590736e2daa36c2f2c68b\noptax>=0.0.8\nml_collections\nnumpy>=1.16.4\ntensorflow>=2.5.0\ntensorflow-datasets>=4.3.0\ndm-tree>=0.1.6\nogb>=1.3.1\n# graph_nets\ngit+git://github.com/deepmind/graph_nets.git@64771dff0d74ca8e77b1f1dcd5a7d26634356d61\nrdkit-pypi>=2021.3.2.3\njaxlib>=0.1.67+cuda110\n# jraph\ngit+git://github.com/deepmind/jraph.git@80d2f9e4d82f841a71d56ba44fa9e8781e93ae1f\ngoogle-cloud-storage\n"
  },
  {
    "path": "ogb_lsc/pcq/run_preprocessing.sh",
    "content": "#!/bin/bash\n# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -e\nset -x\n\nwhile getopts \":r:\" opt; do\n  case ${opt} in\n    r )\n      TASK_ROOT=$OPTARG\n      ;;\n    \\? )\n      echo \"Usage: run_training.sh -r <Task root directory>\"\n      ;;\n    : )\n      echo \"Invalid option: $OPTARG requires an argument\" 1>&2\n      ;;\n  esac\ndone\nshift $((OPTIND -1))\n\n# Get this script's directory.\nSCRIPT_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" &> /dev/null && pwd )\"\n\n\nDATA_ROOT=${TASK_ROOT}/data/\n\n\npython \"${SCRIPT_DIR}\"/generate_validation_splits.py \\\n  --output_dir=\"${DATA_ROOT}/k_fold_splits\"\n\nmkdir -p ${DATA_ROOT}/preprocessed/\npython \"${SCRIPT_DIR}\"/generate_conformer_features.py \\\n  --splits=\"test valid train\" \\\n  --num_parallel_procs=32 \\\n  --output_file=\"${DATA_ROOT}/preprocessed/smile_to_conformer.pkl\"\n"
  },
  {
    "path": "ogb_lsc/pcq/run_pretrained_eval.sh",
    "content": "# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Generates test predictions from trained model checkpoints.\n\nset -e\nset -x\n\nwhile getopts \":r:\" opt; do\n  case ${opt} in\n    r )\n      TASK_ROOT=$OPTARG\n      ;;\n    \\? )\n      echo \"Usage: run_pretrained_eval.sh -r <Task root directory>\"\n      ;;\n    : )\n      echo \"Invalid option: $OPTARG requires an argument\" 1>&2\n      ;;\n  esac\ndone\nshift $((OPTIND -1))\n\n# Get this script's directory.\nSCRIPT_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" &> /dev/null && pwd )\"\n\nSPLIT=\"test\"\n\nDATA_ROOT=${TASK_ROOT}/data/  # For valid k-fold splits.\nMODELS_ROOT=${TASK_ROOT}/models/\nCACHED_CONFORMERS_DIR=${TASK_ROOT}/online_conformers/$SPLIT\nCACHED_CONFORMERS_FILE=${CACHED_CONFORMERS_DIR}/smiles_to_conformers.pkl\nOUTPUT_DIR=${TASK_ROOT}/predictions/\n\n# First generate and cache the conformer feature data for the test split.\nmkdir -p ${CACHED_CONFORMERS_DIR}\ntime python \"${SCRIPT_DIR}\"/generate_conformer_features.py \\\n  --splits=$SPLIT \\\n  --num_parallel_procs=32 \\\n  --output_file=${CACHED_CONFORMERS_FILE}\n\nseed=42\n# Share GPU between two runs by disabling XLA memory pre-allocation.\nexport XLA_PYTHON_CLIENT_PREALLOCATE=false\n\nfor seed_group in 0 1; do\n  for k in `seq 0 9`; do\n    # Conformer\n    predictions_dir=\"${OUTPUT_DIR}/predictions/${SPLIT}/conformer/k${k}_seed${seed}\"\n    time python \"${SCRIPT_DIR}\"/experiment.py \\\n      --jaxline_mode=\"eval\" \\\n      --config=\"${SCRIPT_DIR}\"/config.py \\\n      --config.experiment_kwargs.config.evaluation.split=$SPLIT \\\n      --config.restore_path=${MODELS_ROOT}/conformer/k${k}_seed${seed} \\\n      --config.experiment_kwargs.config.predictions_dir=${predictions_dir} \\\n      --config.experiment_kwargs.config.dataset_config.data_root=${DATA_ROOT} \\\n      --config.experiment_kwargs.config.dataset_config.k_fold_split_id=$k \\\n      --config.experiment_kwargs.config.dataset_config.cached_conformers_file=${CACHED_CONFORMERS_FILE} \\\n      --config.experiment_kwargs.config.dataset_config.filter_in_or_out_samples_with_nans_in_conformers=\"out\" \\\n      --config.experiment_kwargs.config.model.latent_size=256 \\\n      --config.experiment_kwargs.config.model.mlp_hidden_size=1024 \\\n      --config.experiment_kwargs.config.model.num_message_passing_steps=32 \\\n      --config.one_off_evaluate &\n\n\n    # Non-Conformer\n    predictions_dir=\"${OUTPUT_DIR}/predictions/${SPLIT}/non_conformer/k${k}_seed${seed}\"\n    time python \"${SCRIPT_DIR}\"/experiment.py \\\n      --jaxline_mode=\"eval\" \\\n      --config=\"${SCRIPT_DIR}\"/config.py \\\n      --config.experiment_kwargs.config.evaluation.split=$SPLIT \\\n      --config.restore_path=${MODELS_ROOT}/non_conformer/k${k}_seed${seed} \\\n      --config.experiment_kwargs.config.predictions_dir=${predictions_dir} \\\n      --config.experiment_kwargs.config.dataset_config.data_root=${DATA_ROOT} \\\n      --config.experiment_kwargs.config.dataset_config.k_fold_split_id=$k \\\n      --config.experiment_kwargs.config.dataset_config.cached_conformers_file=${CACHED_CONFORMERS_FILE} \\\n      --config.experiment_kwargs.config.dataset_config.filter_in_or_out_samples_with_nans_in_conformers=\"in\" \\\n      --config.experiment_kwargs.config.model.num_message_passing_steps=50 \\\n      --config.experiment_kwargs.config.model.add_relative_distance=false \\\n      --config.experiment_kwargs.config.model.add_relative_displacement=false \\\n      --config.one_off_evaluate &\n\n    wait\n\n    ((seed=seed+1))\n\n  done\ndone\n\n# Ensemble predictions.\ntime python \"${SCRIPT_DIR}\"/ensemble_predictions.py \\\n  --seed_start=42 \\\n  --split=$SPLIT \\\n  --conformer_path=\"${OUTPUT_DIR}/predictions/${SPLIT}/conformer\" \\\n  --non_conformer_path=\"${OUTPUT_DIR}/predictions/${SPLIT}/non_conformer\" \\\n  --output_path=\"${OUTPUT_DIR}/ensembled_predictions/\"\n"
  },
  {
    "path": "ogb_lsc/pcq/run_training.sh",
    "content": "#!/bin/bash\n# Copyright 2021 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -e\nset -x\n\nwhile getopts \":r:\" opt; do\n  case ${opt} in\n    r )\n      TASK_ROOT=$OPTARG\n      ;;\n    \\? )\n      echo \"Usage: run_training.sh -r <Task root directory>\"\n      ;;\n    : )\n      echo \"Invalid option: $OPTARG requires an argument\" 1>&2\n      ;;\n  esac\ndone\nshift $((OPTIND -1))\n\n# Get this script's directory.\nSCRIPT_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" &> /dev/null && pwd )\"\n\necho \"\nThese scripts are provided for illustrative purposes. It is not practical for\nactual training since it only uses a single machine, and likely requires\nreducing the batch size and/or model size to fit on a single GPU.\n\nFor the actual submission we used training distributed in different ways:\n* We used 4x Cloud TPU v4s to implement batch parallelism, so batch\n  size is effectively 8 times larger than the values in the config.\n* We ran the online early-stopping evaluator on a separate machine with an\n  NVIDIA V100 GPU.\n* We run identical replicas of all of the above for each of the 40 models\n  trained.\n\nUsing those mechanisms, training runs at ~4 and 6 steps per second, reaching\n500k steps in about 1.5 days.\n\"\n\necho \"\nPre-requisites (See README):\n* cd into directory containing the 'ogb_lsc' folder.\n* Python dependencies have been installed.\n* pre-processed data is available at the hardcoded paths\n\"\n\nread -p \"Press enter to continue\"\n\nDATA_ROOT=${TASK_ROOT}/data/\nCHECKPOINT_DIR=${TASK_ROOT}/checkpoints/\nCACHED_CONFORMERS_FILE=\"${DATA_ROOT}/preprocessed/smile_to_conformer.pkl\"\n\n# We run two seeds for each model of the k=10 k-fold.\nBASE_SEED=42\nfor SEED_OFFSET in 0 10; do\nfor K_FOLD_INDEX in {0..9}; do\n  MODEL_SEED=`expr ${BASE_SEED} + ${SEED_OFFSET} + ${K_FOLD_INDEX}`\n\n  echo \"Running k=${K_FOLD_INDEX} with init seed ${MODEL_SEED}\"\n\n  # This runs training (each model is trained on train split + 90% of the\n  # validation split) with early stopping, storing both \"latest\" model and\n  # \"best\" early-stopped model at `--config.checkpoint_dir`.\n\n  # Models are early stopped based on accuracy of on 10% of the validation data\n  # (each K_FOLD_INDEX leaves a different 10% of data out from training) left\n  # out from training.\n\n  # Models are stored at the end of training. Intermediate models can also be\n  # stored while training by sending a SIGINT signal (Ctrl+C) which will not\n  # interrupt the training.\n\n  # It is possible to interrupt training using (Ctrl+\\) and then continue\n  # passing the corresponding `--config.restore_path=${RESTORE_PATH}` which is\n  # stored when interrupting.\n\n  # Conformer.\n  SUFFIX=\"conformer/k${K_FOLD_INDEX}_seed${MODEL_SEED}\"\n  echo \"Running ${SUFFIX}\"\n  python \"${SCRIPT_DIR}\"/experiment.py \\\n    --jaxline_mode=\"train_eval_multithreaded\" \\\n    --config=\"${SCRIPT_DIR}\"/config.py \\\n    --config.random_seed=${MODEL_SEED} \\\n    --config.checkpoint_dir=${CHECKPOINT_DIR}/${SUFFIX} \\\n    --config.experiment_kwargs.config.dataset_config.data_root=${DATA_ROOT} \\\n    --config.experiment_kwargs.config.dataset_config.k_fold_split_id=${K_FOLD_INDEX} \\\n    --config.experiment_kwargs.config.dataset_config.num_k_fold_splits=10 \\\n    --config.experiment_kwargs.config.dataset_config.cached_conformers_file=${CACHED_CONFORMERS_FILE} \\\n    --config.experiment_kwargs.config.model.latent_size=256 \\\n    --config.experiment_kwargs.config.model.mlp_hidden_size=1024 \\\n    --config.experiment_kwargs.config.model.num_message_passing_steps=32 \\\n    --config.experiment_kwargs.config.evaluation.split=\"valid\"\n\n\n  # Non-Conformer.\n  SUFFIX=\"non_conformer/k${K_FOLD_INDEX}_seed${MODEL_SEED}\"\n  echo \"Running ${SUFFIX}\"\n  python \"${SCRIPT_DIR}\"/experiment.py \\\n    --jaxline_mode=\"train_eval_multithreaded\" \\\n    --config=\"${SCRIPT_DIR}\"/config.py \\\n    --config.random_seed=${MODEL_SEED} \\\n    --config.checkpoint_dir=${CHECKPOINT_DIR}/${SUFFIX} \\\n    --config.experiment_kwargs.config.dataset_config.data_root=${DATA_ROOT} \\\n    --config.experiment_kwargs.config.dataset_config.k_fold_split_id=${K_FOLD_INDEX} \\\n    --config.experiment_kwargs.config.dataset_config.num_k_fold_splits=10 \\\n    --config.experiment_kwargs.config.dataset_config.cached_conformers_file=${CACHED_CONFORMERS_FILE} \\\n    --config.experiment_kwargs.config.model.num_message_passing_steps=50 \\\n    --config.experiment_kwargs.config.model.add_relative_distance=false \\\n    --config.experiment_kwargs.config.model.add_relative_displacement=false \\\n    --config.experiment_kwargs.config.evaluation.split=\"valid\"\n\ndone\ndone\n\n# Each of the 40 (two for each value of k, and both conformer and non conformer)\n# jobs, it will generate paths of the form with the early-stopped models:\n# RESTORE_PATH=${--config.checkpoint_dir}/models/best/step_${STEP}_${TIMESTAMP}\n# These can then be used as the \"RESTORE_PATHS\" for `./run_pretrained_eval.sh`.\n\necho \"Done\"\n"
  },
  {
    "path": "option_keyboard/README.md",
    "content": "# The Option Keyboard: Combining Skills in Reinforcement Learning\n\nThis directory contains an implementation of the Option Keyboard framework.\n\nFrom the [abstract](http://papers.nips.cc/paper/9463-the-option-keyboard-combining-skills-in-reinforcement-learning):\n\n> The ability to combine known skills to create new ones may be crucial in the\nsolution of complex reinforcement learning problems that unfold over extended\nperiods. We argue that a robust way of combining skills is to define and manipulate\nthem in the space of pseudo-rewards (or “cumulants”). Based on this premise, we\npropose a framework for combining skills using the formalism of options. We show\nthat every deterministic option can be unambiguously represented as a cumulant\ndefined in an extended domain. Building on this insight and on previous results\non transfer learning, we show how to approximate options whose cumulants are\nlinear combinations of the cumulants of known options. This means that, once we\nhave learned options associated with a set of cumulants, we can instantaneously\nsynthesise options induced by any linear combination of them, without any learning\ninvolved. We describe how this framework provides a hierarchical interface to the\nenvironment whose abstract actions correspond to combinations of basic skills.\nWe demonstrate the practical benefits of our approach in a resource management\nproblem and a navigation task involving a quadrupedal simulated robot.\n\nIf you use the code here please cite this paper\n\n> Andre Barreto, Diana Borsa, Shaobo Hou, Gheorghe Comanici, Eser Aygün, Philippe Hamel, Daniel Toyama, Jonathan hunt, Shibl Mourad, David Silver, Doina Precup.  *The Option Keyboard: Combining Skills in Reinforcement Learning*.  Neurips 2019.  [\\[paper\\]](https://papers.nips.cc/paper/9463-the-option-keyboard-combining-skills-in-reinforcement-learning).\n\n## Running the code\n\n### Setup\n```\npython3 -m venv ok_venv\nsource ok_venv/bin/activate\npip install -r option_keyboard/requirements.txt\n```\n\n### Scavenger Task\nAll agents are trained on a simple grid-world resource collection task. There\nare two types of collectible objects in the world: if the agent collects the\nobject that is less abundant of the two then it receives a reward of -1,\notherwise it receives a reward of +1 when it collects the object. See section\n5.1 in the paper for more details.\n\n### Train the DQN baseline\n```\npython3 -m option_keyboard.run_dqn\n```\nThis trains a DQN agent on the scavenger task.\n\n### Train the Option Keyboard and agent\n```\npython3 -m option_keyboard.run_ok\n```\nThis first trains an Option Keyboard on the cumulants in the task environment.\nThen it trains a DQN agent on the true task reward using high level abstract\nactions provided by the keyboard.\n\n## Disclaimer\nThis is not an official Google or DeepMind product.\n"
  },
  {
    "path": "option_keyboard/auto_reset_environment.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Auto-resetting environment base class.\n\nThe environment API states that stepping an environment after a LAST timestep\nshould return the first timestep of a new episode.\n\nHowever, environment authors sometimes don't spot this part or find it awkward\nto implement. This module contains a class that helps implement the reset\nbehaviour.\n\"\"\"\n\nimport abc\nimport dm_env\n\n\nclass Base(dm_env.Environment):\n  \"\"\"This class implements the required `step()` and `reset()` methods.\n\n  It instead requires users to implement `_step()` and `_reset()`. This class\n  handles the reset behaviour automatically when it detects a LAST timestep.\n  \"\"\"\n\n  def __init__(self):\n    self._reset_next_step = True\n\n  @abc.abstractmethod\n  def _reset(self):\n    \"\"\"Returns a `timestep` namedtuple as per the regular `reset()` method.\"\"\"\n\n  @abc.abstractmethod\n  def _step(self, action):\n    \"\"\"Returns a `timestep` namedtuple as per the regular `step()` method.\"\"\"\n\n  def reset(self):\n    self._reset_next_step = False\n    return self._reset()\n\n  def step(self, action):\n    if self._reset_next_step:\n      return self.reset()\n    timestep = self._step(action)\n    self._reset_next_step = timestep.last()\n    return timestep\n"
  },
  {
    "path": "option_keyboard/configs.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Environment configurations.\"\"\"\n\n\ndef get_task_config():\n  return dict(\n      arena_size=11,\n      num_channels=2,\n      max_num_steps=50,  # 50 for the actual task.\n      num_init_objects=10,\n      object_priors=[0.5, 0.5],\n      egocentric=True,\n      rewarder=\"BalancedCollectionRewarder\",\n  )\n\n\ndef get_pretrain_config():\n  return dict(\n      arena_size=11,\n      num_channels=2,\n      max_num_steps=40,  # 40 for pretraining.\n      num_init_objects=10,\n      object_priors=[0.5, 0.5],\n      egocentric=True,\n      default_w=(1, 1),\n  )\n\n\ndef get_fig4_task_config():\n  return dict(\n      arena_size=11,\n      num_channels=2,\n      max_num_steps=50,  # 50 for the actual task.\n      num_init_objects=10,\n      object_priors=[0.5, 0.5],\n      egocentric=True,\n      default_w=(1, -1),\n  )\n\n\ndef get_fig5_task_config(default_w):\n  return dict(\n      arena_size=11,\n      num_channels=2,\n      max_num_steps=50,  # 50 for the actual task.\n      num_init_objects=10,\n      object_priors=[0.5, 0.5],\n      egocentric=True,\n      default_w=default_w,\n  )\n"
  },
  {
    "path": "option_keyboard/dqn_agent.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"DQN agent.\"\"\"\n\nimport numpy as np\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\n\nclass Agent():\n  \"\"\"A DQN Agent.\"\"\"\n\n  def __init__(\n      self,\n      obs_spec,\n      action_spec,\n      network_kwargs,\n      epsilon,\n      additional_discount,\n      batch_size,\n      optimizer_name,\n      optimizer_kwargs,\n  ):\n    \"\"\"A simple DQN agent.\n\n    Args:\n      obs_spec: The observation spec.\n      action_spec: The action spec.\n      network_kwargs: Keyword arguments for snt.nets.MLP\n      epsilon: Exploration probability.\n      additional_discount: Discount on returns used by the agent.\n      batch_size: Size of update batch.\n      optimizer_name: Name of an optimizer from tf.train\n      optimizer_kwargs: Keyword arguments for the optimizer.\n    \"\"\"\n\n    self._epsilon = epsilon\n    self._additional_discount = additional_discount\n    self._batch_size = batch_size\n\n    self._n_actions = action_spec.num_values\n    self._network = ValueNet(self._n_actions, network_kwargs=network_kwargs)\n\n    self._replay = []\n\n    obs_spec = self._extract_observation(obs_spec)\n\n    # Placeholders for policy\n    o = tf.placeholder(shape=obs_spec.shape, dtype=obs_spec.dtype)\n    q = self._network(tf.expand_dims(o, axis=0))\n\n    # Placeholders for update.\n    o_tm1 = tf.placeholder(shape=(None,) + obs_spec.shape, dtype=obs_spec.dtype)\n    a_tm1 = tf.placeholder(shape=(None,), dtype=tf.int32)\n    r_t = tf.placeholder(shape=(None,), dtype=tf.float32)\n    d_t = tf.placeholder(shape=(None,), dtype=tf.float32)\n    o_t = tf.placeholder(shape=(None,) + obs_spec.shape, dtype=obs_spec.dtype)\n\n    # Compute values over all options.\n    q_tm1 = self._network(o_tm1)\n    q_t = self._network(o_t)\n\n    a_t = tf.cast(tf.argmax(q_t, axis=-1), tf.int32)\n    qa_tm1 = _batched_index(q_tm1, a_tm1)\n    qa_t = _batched_index(q_t, a_t)\n\n    # TD error\n    g = additional_discount * d_t\n    td_error = tf.stop_gradient(r_t + g * qa_t) - qa_tm1\n    loss = tf.reduce_sum(tf.square(td_error) / 2)\n\n    with tf.variable_scope(\"optimizer\"):\n      self._optimizer = getattr(tf.train, optimizer_name)(**optimizer_kwargs)\n      train_op = self._optimizer.minimize(loss)\n\n    # Make session and callables.\n    session = tf.Session()\n    self._update_fn = session.make_callable(train_op,\n                                            [o_tm1, a_tm1, r_t, d_t, o_t])\n    self._value_fn = session.make_callable(q, [o])\n    session.run(tf.global_variables_initializer())\n\n  def _extract_observation(self, obs):\n    return obs[\"arena\"]\n\n  def step(self, timestep, is_training=False):\n    \"\"\"Select actions according to epsilon-greedy policy.\"\"\"\n\n    if is_training and np.random.rand() < self._epsilon:\n      return np.random.randint(self._n_actions)\n\n    q_values = self._value_fn(\n        self._extract_observation(timestep.observation))\n    return int(np.argmax(q_values))\n\n  def update(self, step_tm1, action, step_t):\n    \"\"\"Takes in a transition from the environment.\"\"\"\n\n    transition = [\n        self._extract_observation(step_tm1.observation),\n        action,\n        step_t.reward,\n        step_t.discount,\n        self._extract_observation(step_t.observation),\n    ]\n    self._replay.append(transition)\n\n    if len(self._replay) == self._batch_size:\n      batch = list(zip(*self._replay))\n      self._update_fn(*batch)\n      self._replay = []  # Just a queue.\n\n\nclass ValueNet(snt.AbstractModule):\n  \"\"\"Value Network.\"\"\"\n\n  def __init__(self,\n               n_actions,\n               network_kwargs,\n               name=\"value_network\"):\n    \"\"\"Construct a value network sonnet module.\n\n    Args:\n      n_actions: Number of actions.\n      network_kwargs: Network arguments.\n      name: Name\n    \"\"\"\n    super(ValueNet, self).__init__(name=name)\n    self._n_actions = n_actions\n    self._network_kwargs = network_kwargs\n\n  def _build(self, observation):\n    flat_obs = snt.BatchFlatten()(observation)\n    net = snt.nets.MLP(**self._network_kwargs)(flat_obs)\n    net = snt.Linear(output_size=self._n_actions)(net)\n\n    return net\n\n  @property\n  def num_actions(self):\n    return self._n_actions\n\n\ndef _batched_index(values, indices):\n  one_hot_indices = tf.one_hot(indices, values.shape[-1], dtype=values.dtype)\n  return tf.reduce_sum(values * one_hot_indices, axis=-1)\n"
  },
  {
    "path": "option_keyboard/environment_wrappers.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Environment with keyboard.\"\"\"\n\nimport itertools\n\nfrom absl import logging\n\nimport dm_env\n\nimport numpy as np\nimport tensorflow.compat.v1 as tf\nimport tensorflow_hub as hub\nimport tree\n\nfrom option_keyboard import smart_module\n\n\nclass EnvironmentWithLogging(dm_env.Environment):\n  \"\"\"Wraps an environment with additional logging.\"\"\"\n\n  def __init__(self, env):\n    self._env = env\n    self._episode_return = 0\n\n  def reset(self):\n    self._episode_return = 0\n    return self._env.reset()\n\n  def step(self, action):\n    \"\"\"Take action in the environment and do some logging.\"\"\"\n\n    step = self._env.step(action)\n    if step.first():\n      step = self._env.step(action)\n      self._episode_return = 0\n\n    self._episode_return += step.reward\n    return step\n\n  @property\n  def episode_return(self):\n    return self._episode_return\n\n  def action_spec(self):\n    return self._env.action_spec()\n\n  def observation_spec(self):\n    return self._env.observation_spec()\n\n  def __getattr__(self, name):\n    return getattr(self._env, name)\n\n\nclass EnvironmentWithKeyboard(dm_env.Environment):\n  \"\"\"Wraps an environment with a keyboard.\"\"\"\n\n  def __init__(self,\n               env,\n               keyboard,\n               keyboard_ckpt_path,\n               n_actions_per_dim,\n               additional_discount,\n               call_and_return=False):\n    self._env = env\n    self._keyboard = keyboard\n    self._discount = additional_discount\n    self._call_and_return = call_and_return\n\n    options = _discretize_actions(n_actions_per_dim, keyboard.num_cumulants)\n    self._options_np = options\n    options = tf.convert_to_tensor(options, dtype=tf.float32)\n    self._options = options\n\n    obs_spec = self._extract_observation(env.observation_spec())\n    obs_ph = tf.placeholder(shape=obs_spec.shape, dtype=obs_spec.dtype)\n    option_ph = tf.placeholder(shape=(), dtype=tf.int32)\n    gpi_action = self._keyboard.gpi(obs_ph, options[option_ph])\n\n    session = tf.Session()\n    self._gpi_action = session.make_callable(gpi_action, [obs_ph, option_ph])\n    self._keyboard_action = session.make_callable(\n        self._keyboard(tf.expand_dims(obs_ph, axis=0))[0], [obs_ph])\n    session.run(tf.global_variables_initializer())\n\n    if keyboard_ckpt_path:\n      saver = tf.train.Saver(var_list=keyboard.variables)\n      saver.restore(session, keyboard_ckpt_path)\n\n  def _compute_reward(self, option, obs):\n    return np.sum(self._options_np[option] * obs[\"cumulants\"])\n\n  def reset(self):\n    return self._env.reset()\n\n  def step(self, option):\n    \"\"\"Take a step in the keyboard, then the environment.\"\"\"\n\n    step_count = 0\n    option_step = None\n    while True:\n      obs = self._extract_observation(self._env.observation())\n      action = self._gpi_action(obs, option)\n      action_step = self._env.step(action)\n      step_count += 1\n\n      if option_step is None:\n        option_step = action_step\n      else:\n        new_discount = (\n            option_step.discount * self._discount * action_step.discount)\n        new_reward = (\n            option_step.reward + new_discount * action_step.reward)\n        option_step = option_step._replace(\n            observation=action_step.observation,\n            reward=new_reward,\n            discount=new_discount,\n            step_type=action_step.step_type)\n\n      if action_step.last():\n        break\n\n      # Terminate option.\n      if self._should_terminate(option, action_step.observation):\n        break\n\n      if not self._call_and_return:\n        break\n\n    return option_step\n\n  def _should_terminate(self, option, obs):\n    if self._compute_reward(option, obs) > 0:\n      return True\n    elif np.all(self._options_np[option] <= 0):\n      # TODO(shaobohou) A hack ensure option with non-positive weights\n      # terminates after one step\n      return True\n    else:\n      return False\n\n  def action_spec(self):\n    return dm_env.specs.DiscreteArray(\n        num_values=self._options_np.shape[0], name=\"action\")\n\n  def _extract_observation(self, obs):\n    return obs[\"arena\"]\n\n  def observation_spec(self):\n    return self._env.observation_spec()\n\n  def __getattr__(self, name):\n    return getattr(self._env, name)\n\n\nclass EnvironmentWithKeyboardDirect(dm_env.Environment):\n  \"\"\"Wraps an environment with a keyboard.\n\n  This is different from EnvironmentWithKeyboard as the actions space is not\n  discretized.\n\n  TODO(shaobohou) Merge the two implementations.\n  \"\"\"\n\n  def __init__(self,\n               env,\n               keyboard,\n               keyboard_ckpt_path,\n               additional_discount,\n               call_and_return=False):\n    self._env = env\n    self._keyboard = keyboard\n    self._discount = additional_discount\n    self._call_and_return = call_and_return\n\n    obs_spec = self._extract_observation(env.observation_spec())\n    obs_ph = tf.placeholder(shape=obs_spec.shape, dtype=obs_spec.dtype)\n    option_ph = tf.placeholder(\n        shape=(keyboard.num_cumulants,), dtype=tf.float32)\n    gpi_action = self._keyboard.gpi(obs_ph, option_ph)\n\n    session = tf.Session()\n    self._gpi_action = session.make_callable(gpi_action, [obs_ph, option_ph])\n    self._keyboard_action = session.make_callable(\n        self._keyboard(tf.expand_dims(obs_ph, axis=0))[0], [obs_ph])\n    session.run(tf.global_variables_initializer())\n\n    if keyboard_ckpt_path:\n      saver = tf.train.Saver(var_list=keyboard.variables)\n      saver.restore(session, keyboard_ckpt_path)\n\n  def _compute_reward(self, option, obs):\n    assert option.shape == obs[\"cumulants\"].shape\n    return np.sum(option * obs[\"cumulants\"])\n\n  def reset(self):\n    return self._env.reset()\n\n  def step(self, option):\n    \"\"\"Take a step in the keyboard, then the environment.\"\"\"\n\n    step_count = 0\n    option_step = None\n    while True:\n      obs = self._extract_observation(self._env.observation())\n      action = self._gpi_action(obs, option)\n      action_step = self._env.step(action)\n      step_count += 1\n\n      if option_step is None:\n        option_step = action_step\n      else:\n        new_discount = (\n            option_step.discount * self._discount * action_step.discount)\n        new_reward = (\n            option_step.reward + new_discount * action_step.reward)\n        option_step = option_step._replace(\n            observation=action_step.observation,\n            reward=new_reward,\n            discount=new_discount,\n            step_type=action_step.step_type)\n\n      if action_step.last():\n        break\n\n      # Terminate option.\n      if self._should_terminate(option, action_step.observation):\n        break\n\n      if not self._call_and_return:\n        break\n\n    return option_step\n\n  def _should_terminate(self, option, obs):\n    if self._compute_reward(option, obs) > 0:\n      return True\n    elif np.all(option <= 0):\n      # TODO(shaobohou) A hack ensure option with non-positive weights\n      # terminates after one step\n      return True\n    else:\n      return False\n\n  def action_spec(self):\n    return dm_env.specs.BoundedArray(shape=(self._keyboard.num_cumulants,),\n                                     dtype=np.float32,\n                                     minimum=-1.0,\n                                     maximum=1.0,\n                                     name=\"action\")\n\n  def _extract_observation(self, obs):\n    return obs[\"arena\"]\n\n  def observation_spec(self):\n    return self._env.observation_spec()\n\n  def __getattr__(self, name):\n    return getattr(self._env, name)\n\n\ndef _discretize_actions(num_actions_per_dim,\n                        action_space_dim,\n                        min_val=-1.0,\n                        max_val=1.0):\n  \"\"\"Discrete action space.\"\"\"\n  if num_actions_per_dim > 1:\n    discretized_dim_action = np.linspace(\n        min_val, max_val, num_actions_per_dim, endpoint=True)\n    discretized_actions = [discretized_dim_action] * action_space_dim\n    discretized_actions = itertools.product(*discretized_actions)\n    discretized_actions = list(discretized_actions)\n  elif num_actions_per_dim == 1:\n    discretized_actions = [\n        max_val * np.eye(action_space_dim),\n        min_val * np.eye(action_space_dim),\n    ]\n    discretized_actions = np.concatenate(discretized_actions, axis=0)\n  elif num_actions_per_dim == 0:\n    discretized_actions = np.eye(action_space_dim)\n  else:\n    raise ValueError(\n        \"Unsupported num_actions_per_dim {}\".format(num_actions_per_dim))\n\n  discretized_actions = np.array(discretized_actions)\n\n  # Remove options with all zeros.\n  non_zero_entries = np.sum(np.square(discretized_actions), axis=-1) != 0.0\n  discretized_actions = discretized_actions[non_zero_entries]\n  logging.info(\"Total number of discretized actions: %s\",\n               len(discretized_actions))\n  logging.info(\"Discretized actions: %s\", discretized_actions)\n\n  return discretized_actions\n\n\nclass EnvironmentWithLearnedPhi(dm_env.Environment):\n  \"\"\"Wraps an environment with learned phi model.\"\"\"\n\n  def __init__(self, env, model_path):\n    self._env = env\n\n    create_ph = lambda x: tf.placeholder(shape=x.shape, dtype=x.dtype)\n    add_batch = lambda x: tf.expand_dims(x, axis=0)\n\n    # Make session and callables.\n    with tf.Graph().as_default():\n      model = smart_module.SmartModuleImport(hub.Module(model_path))\n\n      obs_spec = env.observation_spec()\n      obs_ph = tree.map_structure(create_ph, obs_spec)\n      action_ph = tf.placeholder(shape=(), dtype=tf.int32)\n      phis = model(tree.map_structure(add_batch, obs_ph), add_batch(action_ph))\n\n      self.num_phis = phis.shape.as_list()[-1]\n      self._last_phis = np.zeros((self.num_phis,), dtype=np.float32)\n\n      session = tf.Session()\n      self._session = session\n      self._phis_fn = session.make_callable(\n          phis[0], tree.flatten([obs_ph, action_ph]))\n      self._session.run(tf.global_variables_initializer())\n\n  def reset(self):\n    self._last_phis = np.zeros((self.num_phis,), dtype=np.float32)\n    return self._env.reset()\n\n  def step(self, action):\n    \"\"\"Take action in the environment and do some logging.\"\"\"\n\n    phis = self._phis_fn(*tree.flatten([self._env.observation(), action]))\n    step = self._env.step(action)\n\n    if step.first():\n      phis = self._phis_fn(*tree.flatten([self._env.observation(), action]))\n      step = self._env.step(action)\n\n    step.observation[\"cumulants\"] = phis\n    self._last_phis = phis\n\n    return step\n\n  def action_spec(self):\n    return self._env.action_spec()\n\n  def observation(self):\n    obs = self._env.observation()\n    obs[\"cumulants\"] = self._last_phis\n    return obs\n\n  def observation_spec(self):\n    obs_spec = self._env.observation_spec()\n    obs_spec[\"cumulants\"] = dm_env.specs.BoundedArray(\n        shape=(self.num_phis,),\n        dtype=np.float32,\n        minimum=-1e9,\n        maximum=1e9,\n        name=\"collected_resources\")\n    return obs_spec\n\n  def __getattr__(self, name):\n    return getattr(self._env, name)\n"
  },
  {
    "path": "option_keyboard/experiment.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"A simple training loop.\"\"\"\n\nimport csv\n\nfrom absl import logging\nfrom tensorflow.compat.v1.io import gfile\n\n\ndef _ema(base, val, decay=0.995):\n  return base * decay + (1 - decay) * val\n\n\ndef run(env, agent, num_episodes, report_every=200, num_eval_reps=1):\n  \"\"\"Runs an agent on an environment.\n\n  Args:\n    env: The environment.\n    agent: The agent.\n    num_episodes: Number of episodes to train for.\n    report_every: Frequency at which training progress are reported (episodes).\n    num_eval_reps: Number of eval episodes to run per training episode.\n\n  Returns:\n    A list of dicts containing training and evaluation returns, and a list of\n    reported returns smoothed by EMA.\n  \"\"\"\n\n  returns = []\n  logged_returns = []\n  train_return_ema = 0.\n  eval_return_ema = 0.\n  for episode in range(num_episodes):\n    returns.append(dict(episode=episode))\n\n    # Run a training episode.\n    train_episode_return = run_episode(env, agent, is_training=True)\n    train_return_ema = _ema(train_return_ema, train_episode_return)\n    returns[-1][\"train\"] = train_episode_return\n\n    # Run an evaluation episode.\n    returns[-1][\"eval\"] = []\n    for _ in range(num_eval_reps):\n      eval_episode_return = run_episode(env, agent, is_training=False)\n      eval_return_ema = _ema(eval_return_ema, eval_episode_return)\n      returns[-1][\"eval\"].append(eval_episode_return)\n\n    if ((episode + 1) % report_every) == 0 or episode == 0:\n      logged_returns.append(\n          dict(episode=episode, train=train_return_ema, eval=[eval_return_ema]))\n      logging.info(\"Episode %s, avg train return %.3f, avg eval return %.3f\",\n                   episode + 1, train_return_ema, eval_return_ema)\n      if hasattr(agent, \"get_logs\"):\n        logging.info(\"Episode %s, agent logs: %s\", episode + 1,\n                     agent.get_logs())\n\n  return returns, logged_returns\n\n\ndef run_episode(environment, agent, is_training=False):\n  \"\"\"Run a single episode.\"\"\"\n\n  timestep = environment.reset()\n\n  while not timestep.last():\n    action = agent.step(timestep, is_training)\n    new_timestep = environment.step(action)\n\n    if is_training:\n      agent.update(timestep, action, new_timestep)\n\n    timestep = new_timestep\n\n  episode_return = environment.episode_return\n\n  return episode_return\n\n\ndef write_returns_to_file(path, returns):\n  \"\"\"Write returns to file.\"\"\"\n\n  with gfile.GFile(path, \"w\") as file:\n    writer = csv.writer(file, delimiter=\" \", quoting=csv.QUOTE_MINIMAL)\n    writer.writerow([\"episode\", \"train\"] +\n                    [f\"eval_{idx}\" for idx in range(len(returns[0][\"eval\"]))])\n    for row in returns:\n      writer.writerow([row[\"episode\"], row[\"train\"]] + row[\"eval\"])\n"
  },
  {
    "path": "option_keyboard/gpe_gpi_experiments/eval_keyboard_fig5.py",
    "content": "# pylint: disable=g-bad-file-header\n# pylint: disable=line-too-long\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\nr\"\"\"Run an experiment.\n\nThis script generates the raw data for the polar plots used to visualise how\nwell a trained keyboard covers the space of w.\n\n\nFor example, train 3 separate keyboards with different base policies:\n\npython3 train_keyboard.py --logtostderr --policy_weights_name=12\npython3 train_keyboard.py --logtostderr --policy_weights_name=34\npython3 train_keyboard.py --logtostderr --policy_weights_name=5\n\n\nThen generate the polar plot data as follows:\n\npython3 eval_keyboard_fig5.py --logtostderr \\\n  --keyboard_paths=/tmp/option_keyboard/keyboard_12/tfhub,/tmp/option_keyboard/keyboard_34/tfhub,/tmp/option_keyboard/keyboard_5/tfhub \\\n  --num_episodes=1000\n\n\nExample outout:\n[[ 0.11        0.261      -0.933     ]\n [ 1.302       3.955       0.54      ]\n [ 2.398       4.434       1.2105359 ]\n [ 3.459       4.606       2.087     ]\n [ 4.09026795  4.60911325  3.06106882]\n [ 4.55499485  4.71947818  3.8123229 ]\n [ 4.715       4.835       4.395     ]\n [ 4.75743564  4.64095528  4.46330207]\n [ 4.82518207  4.71232378  4.56190708]\n [ 4.831       4.7155      4.5735    ]\n [ 4.78074425  4.6754641   4.58312762]\n [ 4.70154374  4.5416429   4.47850417]\n [ 4.694       4.631       4.427     ]\n [ 4.25085125  4.56606664  3.68157677]\n [ 3.61726795  4.4838453   2.68154403]\n [ 2.714       4.43        1.554     ]\n [ 1.69        4.505       0.9635359 ]\n [ 0.894       4.043       0.424     ]\n [ 0.099       0.349       0.055     ]]\n\"\"\"\n\nimport csv\n\nfrom absl import app\nfrom absl import flags\n\nimport numpy as np\nimport tensorflow.compat.v1 as tf\nfrom tensorflow.compat.v1.io import gfile\nimport tensorflow_hub as hub\n\nfrom option_keyboard import configs\nfrom option_keyboard import environment_wrappers\nfrom option_keyboard import experiment\nfrom option_keyboard import scavenger\nfrom option_keyboard import smart_module\n\nfrom option_keyboard.gpe_gpi_experiments import regressed_agent\n\nFLAGS = flags.FLAGS\nflags.DEFINE_integer(\"num_episodes\", 1000, \"Number of training episodes.\")\nflags.DEFINE_list(\"keyboard_paths\", [], \"Path to keyboard model.\")\nflags.DEFINE_string(\"output_path\", None, \"Path to write out returns.\")\n\n\ndef evaluate_keyboard(keyboard_path, weights_to_sweep):\n  \"\"\"Evaluate a keyboard.\"\"\"\n\n  # Load the keyboard.\n  keyboard = smart_module.SmartModuleImport(hub.Module(keyboard_path))\n\n  # Create the task environment.\n  all_returns = []\n  for w_to_sweep in weights_to_sweep.tolist():\n    base_env_config = configs.get_fig5_task_config(w_to_sweep)\n    base_env = scavenger.Scavenger(**base_env_config)\n    base_env = environment_wrappers.EnvironmentWithLogging(base_env)\n\n    # Wrap the task environment with the keyboard.\n    with tf.variable_scope(None, default_name=\"inner_loop\"):\n      additional_discount = 0.9\n      env = environment_wrappers.EnvironmentWithKeyboardDirect(\n          env=base_env,\n          keyboard=keyboard,\n          keyboard_ckpt_path=None,\n          additional_discount=additional_discount,\n          call_and_return=False)\n\n      # Create the player agent.\n      agent = regressed_agent.Agent(\n          batch_size=10,\n          optimizer_name=\"AdamOptimizer\",\n          # Disable training.\n          optimizer_kwargs=dict(learning_rate=0.0,),\n          init_w=w_to_sweep)\n\n    returns = []\n    for _ in range(FLAGS.num_episodes):\n      returns.append(experiment.run_episode(env, agent))\n    tf.logging.info(f\"Task: {w_to_sweep}, mean returns over \"\n                    f\"{FLAGS.num_episodes} episodes is {np.mean(returns)}\")\n    all_returns.append(returns)\n\n  return all_returns\n\n\ndef main(argv):\n  del argv\n\n  angles_to_sweep = np.deg2rad(np.linspace(-90, 180, num=19, endpoint=True))\n  weights_to_sweep = np.stack(\n      [np.sin(angles_to_sweep),\n       np.cos(angles_to_sweep)], axis=-1)\n  weights_to_sweep /= np.sum(\n      np.maximum(weights_to_sweep, 0.0), axis=-1, keepdims=True)\n  weights_to_sweep = np.clip(weights_to_sweep, -1000, 1000)\n  tf.logging.info(weights_to_sweep)\n\n  all_returns = []\n  for keyboard_path in FLAGS.keyboard_paths:\n    returns = evaluate_keyboard(keyboard_path, weights_to_sweep)\n    all_returns.append(returns)\n\n  print(\"Results:\")\n  print(np.mean(all_returns, axis=-1).T)\n\n  if FLAGS.output_path:\n    with gfile.GFile(FLAGS.output_path, \"w\") as file:\n      writer = csv.writer(file, delimiter=\" \", quoting=csv.QUOTE_MINIMAL)\n      writer.writerow([\"angle\", \"return\", \"idx\"])\n      for idx, returns in enumerate(all_returns):\n        for row in np.array(returns).T.tolist():\n          assert len(angles_to_sweep) == len(row)\n          for ang, val in zip(angles_to_sweep, row):\n            ang = \"{:.4g}\".format(ang)\n            val = \"{:.4g}\".format(val)\n            writer.writerow([ang, val, idx])\n\n\nif __name__ == \"__main__\":\n  tf.disable_v2_behavior()\n  app.run(main)\n"
  },
  {
    "path": "option_keyboard/gpe_gpi_experiments/generate_figures.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"N1EHYIqxd80m\"\n      },\n      \"source\": [\n        \"\\n\",\n        \"\\n\",\n        \"##### Copyright 2020 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"```\\n\",\n        \"# Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"# you may not use this file except in compliance with the License.\\n\",\n        \"# You may obtain a copy of the License at\\n\",\n        \"#\\n\",\n        \"# https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"#\\n\",\n        \"# Unless required by applicable law or agreed to in writing, software\\n\",\n        \"# distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"# See the License for the specific language governing permissions and\\n\",\n        \"# limitations under the License.\\n\",\n        \"```\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 52,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 608,\n          \"status\": \"ok\",\n          \"timestamp\": 1596666770403,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"BbsG8P6ICv2t\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Util functions\\n\",\n        \"\\n\",\n        \"import csv\\n\",\n        \"import os\\n\",\n        \"from matplotlib import pyplot as plt\\n\",\n        \"import pandas as pd\\n\",\n        \"import seaborn as sns\\n\",\n        \"import tensorflow.compat.v1 as tf\\n\",\n        \"from tensorflow.compat.v1.io import gfile\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def read_csv_as_dataframe(path):\\n\",\n        \"  with gfile.GFile(path, \\\"r\\\") as file:\\n\",\n        \"    reader = csv.reader(file, delimiter=\\\" \\\")\\n\",\n        \"    rows = [row for row in reader]\\n\",\n        \"    rows[1:] = [[float(v) for v in row] for row in rows[1:]]\\n\",\n        \"    cols = rows[0]\\n\",\n        \"    rows = dict(zip(cols, (zip(*rows[1:]))))\\n\",\n        \"\\n\",\n        \"  return pd.DataFrame(rows)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def read_data(path, num_seeds, verbose=False):\\n\",\n        \"  all_dfs = []\\n\",\n        \"  for seed in range(num_seeds):\\n\",\n        \"    seed_path = path.format(seed)\\n\",\n        \"    if verbose:\\n\",\n        \"      print(f\\\"Reading {seed_path}\\\")\\n\",\n        \"    df = read_csv_as_dataframe(seed_path)\\n\",\n        \"    df[\\\"seed\\\"] = seed \\n\",\n        \"    all_dfs.append(df)\\n\",\n        \"  return pd.concat(all_dfs)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"code\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"YiiUlbIS42px\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Unpack precomputed training curves\\n\",\n        \"!wget -q --no-check-certificate https://storage.googleapis.com/option_keyboard/gpe_gpi_experiments.zip -P -O /tmp\\n\",\n        \"!unzip -o /tmp/gpe_gpi_experiments.zip -d /tmp\\n\",\n        \"DATA_DIR = \\\"/tmp\\\"\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"OFWlVSJdght9\"\n      },\n      \"source\": [\n        \"# Figure 4b\\n\",\n        \"\\n\",\n        \"To generate the q-learning results:\\n\",\n        \"```\\n\",\n        \"python3 ../run_dqn.py --num_episodes=20000 --report_every=5 --output_path=/tmp/fig4_dqn.csv\\n\",\n        \"```\\n\",\n        \"\\n\",\n        \"To generate the regressed w results:\\n\",\n        \"```\\n\",\n        \"python3 train_keybooard.py --num_pretrain_episodes=20000 --policy_weights_name=12 --export_path=/tmp/fig4_keyboard\\n\",\n        \"python3 run_regressed_w_fig4b.py --num_episodes=4000 --report_every=5 --keyboard_path=/tmp/fig6_keyboard/tfhub \\\\\\n\",\n        \"  --output_path=/tmp/fig4b_regressed_w.csv\\n\",\n        \"```\\n\",\n        \"\\n\",\n        \"To generate the results with true w:\\n\",\n        \"```\\n\",\n        \"# Make use of a pretrained keyboard.\\n\",\n        \"python3 run_true_w_fig4.py --num_episodes=1000 --keyboard_path=/tmp/fig4_keyboard/tfhub -- output_path=/tmp/fig4b_true_w.csv\\n\",\n        \"```\\n\",\n        \"\\n\",\n        \"Repeat the above steps for multiple runs. Below shows the results for 10 runs.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 54,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 1412,\n          \"status\": \"ok\",\n          \"timestamp\": 1596666774254,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"d694MYF5ght_\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Load Data\\n\",\n        \"\\n\",\n        \"dqn_path = os.path.join(DATA_DIR, \\\"fig4_dqn_{}.csv\\\")\\n\",\n        \"dqn_df = read_data(dqn_path, num_seeds=10)\\n\",\n        \"dqn_df[\\\"method\\\"] = \\\"Q-Learning\\\"\\n\",\n        \"\\n\",\n        \"regressed_w_path = os.path.join(DATA_DIR, \\\"fig4_regressed_w_{}.csv\\\")\\n\",\n        \"regressed_w_df = read_data(regressed_w_path, num_seeds=10)\\n\",\n        \"regressed_w_df[\\\"method\\\"] = \\\"GPE+GPI with regressed w\\\"\\n\",\n        \"\\n\",\n        \"true_w_path = os.path.join(DATA_DIR, \\\"fig4_true_w_{}.csv\\\")\\n\",\n        \"true_w_df = read_data(true_w_path, num_seeds=10)\\n\",\n        \"true_w_df[\\\"method\\\"] = \\\"GPE+GPI with true w\\\"\\n\",\n        \"\\n\",\n        \"fig4b_df = pd.concat([dqn_df, regressed_w_df])\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 55,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"height\": 400\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 6285,\n          \"status\": \"ok\",\n          \"timestamp\": 1596666780546,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"dO0W-e43ghuD\",\n        \"outputId\": \"d35efafb-bd43-4c40-9a0f-4b1ac5118298\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"image/png\": \"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\\n9h4LJgAAAABJRU5ErkJggg==\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1200x600 with 1 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"#@title Plot\\n\",\n        \"\\n\",\n        \"fig, ax = plt.subplots(figsize=(12,6))\\n\",\n        \"sns.tsplot(fig4b_df, time=\\\"episode\\\", unit=\\\"seed\\\", value=\\\"eval_0\\\", condition=\\\"method\\\", ci=95, color=[\\\"r\\\", \\\"b\\\"], linestyle=\\\"--\\\", ax=ax)\\n\",\n        \"\\n\",\n        \"ax.axhline(dqn_df.groupby(\\\"seed\\\").tail(1).mean()[\\\"eval_0\\\"], color='r', linestyle='--')\\n\",\n        \"ax.axhline(true_w_df.mean()[\\\"return\\\"], color='b', linestyle='-', label=\\\"GPE+GPI with true w\\\")\\n\",\n        \"\\n\",\n        \"ax.text(\\n\",\n        \"    800,\\n\",\n        \"    4.3,\\n\",\n        \"    r\\\"$Q$-learning after $10^6$ sample transitions\\\",\\n\",\n        \"    fontdict=dict(fontsize=15))\\n\",\n        \"\\n\",\n        \"ax.set_xlim([0, 3000])\\n\",\n        \"ax.legend();\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"4ruEpAxS56s5\"\n      },\n      \"source\": [\n        \"# Figure 4c\\n\",\n        \"\\n\",\n        \"To generate the regressed w results:\\n\",\n        \"```\\n\",\n        \"python3 train_keybooard.py --num_pretrain_episodes=20000 --policy_weights_name=12 --export_path=/tmp/fig4_keyboard\\n\",\n        \"python3 run_regressed_w_fig4c.py --num_episodes=100 --report_every=1 --keyboard_path=/tmp/fig6_keyboard/tfhub \\\\\\n\",\n        \"  --output_path=/tmp/fig4b_regressed_w.csv\\n\",\n        \"```\\n\",\n        \"\\n\",\n        \"To generate the regressed w with learned phi results:\\n\",\n        \"```\\n\",\n        \"# First train a phi model. Change num_phis to phi of different dimensions e.g. 3 or 4.\\n\",\n        \"python3 train_phi_model.py --export_path=/tmp/phi_model_2d --num_phis=2\\n\",\n        \"# Then train a keyboard.\\n\",\n        \"python3 train_keybooard_with_phi.py --num_pretrain_episodes=20000 --phi_model_phi=/tmp/phi_model_2d \\\\\\n\",\n        \"  --export_path=/tmp/fig4_keyboard_with_phi\\n\",\n        \"# Finally regress w with both models.\\n\",\n        \"python3 run_regressed_w_with_phi_fig4c.py --num_episodes=100 --report_every=1 --keyboard_path=/tmp/fig4_keyboard_with_phi/tfhub \\\\\\n\",\n        \"  --output_path=/tmp/fig4c_regressed_w.csv\\n\",\n        \"```\\n\",\n        \"\\n\",\n        \"(Note that training of the phi model can converge to a poor local minima, so it maybe necessary to rerun it if the eval loss is too high, or use a larger set of random training tasks.)\\n\",\n        \"\\n\",\n        \"Repeat the above steps for multiple runs. Below shows the results for 10 runs.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 56,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 1313,\n          \"status\": \"ok\",\n          \"timestamp\": 1596666781870,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"Lp22-gE856s9\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Load Data\\n\",\n        \"\\n\",\n        \"dqn_path = os.path.join(DATA_DIR, \\\"fig4_dqn_{}.csv\\\")\\n\",\n        \"dqn_df = read_data(dqn_path, num_seeds=10)\\n\",\n        \"dqn_df[\\\"method\\\"] = \\\"Q-Learning\\\"\\n\",\n        \"\\n\",\n        \"true_w_path = os.path.join(DATA_DIR, \\\"fig4_true_w_{}.csv\\\")\\n\",\n        \"true_w_df = read_data(true_w_path, num_seeds=10)\\n\",\n        \"true_w_df[\\\"method\\\"] = \\\"GPE+GPI with true w\\\"\\n\",\n        \"\\n\",\n        \"regressed_w_path = os.path.join(DATA_DIR, \\\"fig4c_regressed_w_{}.csv\\\")\\n\",\n        \"regressed_w_df = read_data(regressed_w_path, num_seeds=10)\\n\",\n        \"regressed_w_df[\\\"method\\\"] = \\\"GPE+GPI with regressed w\\\"\\n\",\n        \"\\n\",\n        \"regressed_w_with_phi_2d_path = os.path.join(DATA_DIR, \\\"fig4c_regressed_w_with_phi_{}_2d.csv\\\")\\n\",\n        \"regressed_w_with_phi_2d_df = read_data(regressed_w_with_phi_2d_path, num_seeds=10)\\n\",\n        \"regressed_w_with_phi_2d_df[\\\"method\\\"] = \\\"GPE+GPI with regressed w and 2d phi\\\"\\n\",\n        \"\\n\",\n        \"regressed_w_with_phi_3d_path = os.path.join(DATA_DIR, \\\"fig4c_regressed_w_with_phi_{}_3d.csv\\\")\\n\",\n        \"regressed_w_with_phi_3d_df = read_data(regressed_w_with_phi_3d_path, num_seeds=10)\\n\",\n        \"regressed_w_with_phi_3d_df[\\\"method\\\"] = \\\"GPE+GPI with regressed w and 3d phi\\\"\\n\",\n        \"\\n\",\n        \"regressed_w_with_phi_4d_path = os.path.join(DATA_DIR, \\\"fig4c_regressed_w_with_phi_{}_4d.csv\\\")\\n\",\n        \"regressed_w_with_phi_4d_df = read_data(regressed_w_with_phi_4d_path, num_seeds=10)\\n\",\n        \"regressed_w_with_phi_4d_df[\\\"method\\\"] = \\\"GPE+GPI with regressed w and 4d phi\\\"\\n\",\n        \"\\n\",\n        \"fig4c_df = pd.concat([regressed_w_df, regressed_w_with_phi_2d_df, regressed_w_with_phi_3d_df, regressed_w_with_phi_4d_df])\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 57,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"height\": 400\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 1769,\n          \"status\": \"ok\",\n          \"timestamp\": 1596666783655,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"qxaeiWVz56tC\",\n        \"outputId\": \"538644f7-b0e7-4a31-b0ac-65ef41f11106\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"image/png\": \"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\\neoZHPQqWlpb4oz/6AC94wQuZnp7BOcu3vnUzr3jFxVxyyW/zyU9+gksvfdOqFm9hMqvV1dFiPffE\\niXj/CIKwNkRQC8Ix5pOf/ASf//z/4fLLrxoT0wCtVounPOWnuOGGDzE/P8+OHTvW/Ltf/OIX+OAH\\n38dXv3oTrVabJzzhx/jVX/11Op1pAL785S9xww0f4mtf+ypLS4vc615n8Pzn/xee/OSnNb9Rdzn/\\n0i9dwAc+8D6++91befe7r+aTn/wE3/rWzfzKr7yCq666gu9977vc734P4DWveR1nn32fFd+vGwP1\\n58N9D+Av//JjfOQj13Pw4AEe9ajH8KxnPZeLL34573nPNTziET888ZgPd0yXXvomPvWpTwLwlKc8\\nEYBTTz2NPXtuB+D88+PvvvjFL+WCC162pvM46TzddtstvOc91/Cwh507Vj6t15ZI6bOf/Tce85jz\\nxgT/k570FK6++ko+//n/n/PP/1FOPvkUZmZmeMxjHgvAT/zEU3j3u//wkL/7jW98gze/+VK++tWb\\nqKqSU045lWc+8xd41rN+YU3Xw+ixXnDBy3jf+97N7bd/n0c84of53d99MwcPHuTtb38LX/3qTZx5\\n5r157WvfwH3ve78V5+iaa65kz57becADHsRv/ubrufe9zz5kuddSB8vL+E//9GlgZZ2uVlfGmDXf\\nD4e7fr/1rZu56qorJp7nSffE4cq63D3kwx++lttuu5UdO3bylKf8FBdc8DKyLFtzGQ9VPkEQjgwi\\nqAXhGPOnf3oD97//A3nUo86buP3kk08BYO/eu9YsqL/0pS9w8cUX8fjHP5G3vOXtHDhwgGuuuYqF\\nhYO85S3vAGDPntt56EMfxjOe8SyKosWNN36Rt77191BK8ZM/+dTmt/bs+T7ve997ePGLX8K9730v\\n5uZiee64Yw/vfe97eOELf5lWq8VVV72bN7zhtdxww8dQSq1atrV875//+R+5/PI/4Od//jk8/vFP\\n4Etf+gJve9vvH/a4D3dML3rRSzj55FP48Iev4z3vuYaiaNFqtbjyynexuLjAq1/92+mcn7zm8zjp\\nPO3cuXNTrhe33PKdFY2GU089lXa7za23fgf4UXbu3MV97nM/vvrVm3jQgx7C//7fn+Xss+97yN+9\\n6KKLuNe9zuANb3gzeV5w6623sLS0tKZzN8odd+zh2muv4aUvvYh+v8/ll/8B73jHpdx+++08/enP\\n4PnPfyHvf/97edObXscNN/zXpl7vuON2rrzycl760l+h1Wpx3XXv5zd+41f50z/9OK1Wa2KZ11MH\\nNS960Uu44449E+s0HuvKuvrSl76wpuNfy/X727/9as4886yJ53m9ZR3lc5/7LG9842t56lN/mpe/\\n/Ne4+eZvcO2113Dw4AFe85rXrbmM6ymfIAgbQwS1IBxDbr31Fm699RZe+cqLV93nwIHoFtBut9f8\\nu9dccxXnnPNDvPnNlzXrdu8+mV/7tYv41re+ydln35ef+ImnNNtCCDzsYefygx/cwd/+7V+PCYgD\\nBw5wxRXv4373ewC7d89y550LACwsHOTqq6/j9NPPAMD76Lpy6623cOaZZ61atrV874YbPsRjH/s4\\nfuM3fguARz/6PPbv389f//VfHPK4D3dM97znvZpu9Ac+8MF0Oh0Atm3bhveec8556LrP46TztFkW\\nFg4yOzu7Yv3s7DYWFhaaz5dc8lre/va30Ot1mZmZ5bWvfcOqv7l//35uu+023vKWP+A+94nl/uEf\\nfnSzfa3XQ12+97//Q825vPnmb/DRj97A61//Jp72tJ+pf4XXvOZibrnlO5x11r2bMlx22Tt56EMf\\nBsADHvAgnvvcZ/CpT/0tz3jGsyeWez11UHPPe95r1TqFyXW11uM/3PW7f/9+vv/973HZZe+ceJ7X\\nW9ZRrr32Gs4995H8zu/8HgDnnfcjALz//e/ll37pgqbxfagybt8+t67yCYKwMURQC8Ix5NvfvhmA\\ns85avcv7llu+Q1G0OPXU07DWNuuVUk3Gh1H6/T433XQjF1/8mrH9f+iHHk6WZfzHf3yNs8++LwcP\\nHuSP/uj9/Ou//jN33XUnzjkgipVRdu8+eaJIPPXU05oXdjyGKJp+8IM7DimoD/c95xzf+MZ/8Ou/\\n/ptj3zv//B89rKBe6zGthbWex5rVztPGWWnlDyGMfb73vc/mmmv+aE2/tm3bNk477TT+8A/fyrOf\\n/Twe8YgfZseOnc329Zy7U089bcy/9573PB2ARz7yUSvW3XnnD5o63rFjZyOm69+5//0fyFe+ctNE\\nQb3eOlgrk+pqrcd/uOt327ZtnHzyKaue543inOPrX/8ar3rVb4ytf9KTnszVV1/Jl798Iz/+46cc\\ntoynn37GUSmfIAjjiKAWhGNIt9sFYG5ubuL2Xq/HZz7zLzzmMY/lS1/6Aq961a802x7+8EdMDEBb\\n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\\nEREREamE/wNr76ODwBfe1QAAAABJRU5ErkJggg==\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1200x600 with 1 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"#@title Plot\\n\",\n        \"\\n\",\n        \"fig, ax = plt.subplots(figsize=(12,6))\\n\",\n        \"sns.tsplot(fig4c_df, time=\\\"episode\\\", unit=\\\"seed\\\", value=\\\"eval_0\\\", condition=\\\"method\\\", ci=95, ax=ax)\\n\",\n        \"\\n\",\n        \"ax.axhline(dqn_df.groupby(\\\"seed\\\").tail(1).mean()[\\\"eval_0\\\"], color='r', linestyle='--')\\n\",\n        \"ax.axhline(true_w_df.mean()[\\\"return\\\"], color='b', linestyle='-', label=\\\"GPE+GPI with true w\\\")\\n\",\n        \"\\n\",\n        \"ax.text(\\n\",\n        \"    8,\\n\",\n        \"    4.3,\\n\",\n        \"    r\\\"$Q$-learning after $10^6$ sample transitions\\\",\\n\",\n        \"    fontdict=dict(fontsize=15))\\n\",\n        \"\\n\",\n        \"ax.set_xlim([0, 30])\\n\",\n        \"ax.legend();\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"LqZUN6k-ssNB\"\n      },\n      \"source\": [\n        \"# Figure 5a\\n\",\n        \"\\n\",\n        \"To generate the result for each set of policies:\\n\",\n        \"\\n\",\n        \"```\\n\",\n        \"# Train a keyboard for a set of policies, i.e. replace {POLICY} with 5, 12 or 34\\n\",\n        \"python3 train_keyboard.py --num_pretrain_episodes=20000 --policy_weights_name={POLICY} --export_path=/tmp/fig5a_keyboard_{POLICY}\\n\",\n        \"# Evaluate the trained keyboard at regular interval between [-1, 0] to [0, -1]\\n\",\n        \"python3 eval_keyboard_fig5.py --num_episodes=1000 --keyboard_paths=/tmp/fig5a_keyboard_{POLICY}/tfhub \\\\\\n\",\n        \"  --output_path=/tmp/fig5_polar_{POLICY}.csv\\n\",\n        \"```\\n\",\n        \"\\n\",\n        \"Repeat the above steps for multiple runs. Below shows the results for 10 runs.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 58,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 7098,\n          \"status\": \"ok\",\n          \"timestamp\": 1596666790760,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"pKXVbt_UssNE\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Load Data\\n\",\n        \"\\n\",\n        \"policy_12_path = os.path.join(DATA_DIR, \\\"fig5_polar_{}_12.csv\\\")\\n\",\n        \"policy_12_df = read_data(policy_12_path, num_seeds=10)\\n\",\n        \"policy_34_path = os.path.join(DATA_DIR, \\\"fig5_polar_{}_34.csv\\\")\\n\",\n        \"policy_34_df = read_data(policy_34_path, num_seeds=10)\\n\",\n        \"policy_5_path = os.path.join(DATA_DIR, \\\"fig5_polar_{}_5.csv\\\")\\n\",\n        \"policy_5_df = read_data(policy_5_path, num_seeds=10)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 59,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"height\": 606\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 1243,\n          \"status\": \"ok\",\n          \"timestamp\": 1596666792009,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"4f-68h2ZssNI\",\n        \"outputId\": \"84b9394c-7d5a-4e0b-c254-ce4674ef7565\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"image/png\": \"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\\nrkJggg==\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1000x1000 with 1 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"#@title Plot\\n\",\n        \"\\n\",\n        \"use_polar = True\\n\",\n        \"plt.figure(figsize=(10, 10))\\n\",\n        \"ax = plt.subplot(111, polar=use_polar)\\n\",\n        \"\\n\",\n        \"policy_5_mean_df = policy_5_df.groupby(\\\"angle\\\").mean()\\n\",\n        \"ax.plot(\\n\",\n        \"    policy_5_mean_df.index,\\n\",\n        \"    policy_5_mean_df[\\\"return\\\"],\\n\",\n        \"    \\\".-\\\",\\n\",\n        \"    linewidth=5, color='r')\\n\",\n        \"\\n\",\n        \"policy_12_mean_df = policy_12_df.groupby(\\\"angle\\\").mean()\\n\",\n        \"ax.plot(\\n\",\n        \"    policy_12_mean_df.index,\\n\",\n        \"    policy_12_mean_df[\\\"return\\\"],\\n\",\n        \"    \\\".-\\\",\\n\",\n        \"    linewidth=5, color='g')\\n\",\n        \"\\n\",\n        \"policy_34_mean_df = policy_34_df.groupby(\\\"angle\\\").mean()\\n\",\n        \"ax.plot(\\n\",\n        \"    policy_34_mean_df.index,\\n\",\n        \"    policy_34_mean_df[\\\"return\\\"],\\n\",\n        \"    \\\".-\\\",\\n\",\n        \"    linewidth=5, color='b')\\n\",\n        \"\\n\",\n        \"legend = ax.legend([\\n\",\n        \"    r\\\"GPE + GPI with $\\\\Pi_{5}$\\\", r\\\"GPE + GPI with $\\\\Pi_{12}$\\\", r\\\"GPE + GPI with $\\\\Pi_{34}$\\\",\\n\",\n        \"    r\\\"$Q$-learning\\\"\\n\",\n        \"],\\n\",\n        \"                   fontsize=\\\"22\\\",\\n\",\n        \"                   loc=\\\"lower left\\\")\\n\",\n        \"\\n\",\n        \"ax.set_theta_zero_location(\\\"N\\\")\\n\",\n        \"ax.set_theta_direction(-1)\\n\",\n        \"\\n\",\n        \"lines, labels = ax.set_thetagrids(\\n\",\n        \"    (0, 45, 90, 135, 315),\\n\",\n        \"    (r\\\"$\\\\mathbf{w}_2 = [0,1]$\\\", r\\\"$\\\\mathbf{w}_5 = [1,1]$\\\",\\n\",\n        \"     r\\\"$\\\\qquad \\\\mathbf{w}_1 = [1,0]$\\\", r\\\"$\\\\mathbf{w}_3 = [1,-1]$\\\",\\n\",\n        \"     r\\\"$\\\\mathbf{w}_4 = [-1,1]$\\\"),\\n\",\n        \"    fontweight=\\\"bold\\\",\\n\",\n        \"    fontsize=15)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"MlOymzIuhQh3\"\n      },\n      \"source\": [\n        \"# Figure 5b\\n\",\n        \"\\n\",\n        \"To generate the result for each set of policies:\\n\",\n        \"\\n\",\n        \"```\\n\",\n        \"# Train a keyboard for a set of policies, i.e. replace {POLICY} with 4, 42, 425, 4251 or 42513\\n\",\n        \"python3 train_keyboard.py --num_pretrain_episodes=20000 --policy_weights_name={POLICY} --export_path=/tmp/fig5a_keyboard_{POLICY}\\n\",\n        \"# Evaluate the trained keyboard at regular interval between [-1, 0] to [0, -1]\\n\",\n        \"python3 eval_keyboard_fig5.py --num_episodes=1000 --keyboard_paths=/tmp/fig5a_keyboard_{POLICY}/tfhub \\\\\\n\",\n        \"  --output_path=/tmp/fig5_polar_{POLICY}.csv\\n\",\n        \"```\\n\",\n        \"\\n\",\n        \"Repeat the above steps for multiple runs. Below shows the results for 10 runs.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 60,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 12379,\n          \"status\": \"ok\",\n          \"timestamp\": 1596666804399,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"lkACArMNhUbl\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Load Data\\n\",\n        \"\\n\",\n        \"policy_42513_path = os.path.join(DATA_DIR, \\\"fig5_polar_{}_42513.csv\\\")\\n\",\n        \"policy_42513_df = read_data(policy_42513_path, num_seeds=10)\\n\",\n        \"policy_4251_path = os.path.join(DATA_DIR, \\\"fig5_polar_{}_4251.csv\\\")\\n\",\n        \"policy_4251_df = read_data(policy_4251_path, num_seeds=10)\\n\",\n        \"policy_425_path = os.path.join(DATA_DIR, \\\"fig5_polar_{}_425.csv\\\")\\n\",\n        \"policy_425_df = read_data(policy_425_path, num_seeds=10)\\n\",\n        \"policy_42_path = os.path.join(DATA_DIR, \\\"fig5_polar_{}_42.csv\\\")\\n\",\n        \"policy_42_df = read_data(policy_42_path, num_seeds=10)\\n\",\n        \"policy_4_path = os.path.join(DATA_DIR, \\\"fig5_polar_{}_4.csv\\\")\\n\",\n        \"policy_4_df = read_data(policy_4_path, num_seeds=10)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 61,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"height\": 606\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 1288,\n          \"status\": \"ok\",\n          \"timestamp\": 1596666805694,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"mm46b10CiThP\",\n        \"outputId\": \"1bad8fe4-fa1d-4134-aaec-1805664229d3\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"image/png\": \"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\\nAAAAAElFTkSuQmCC\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1000x1000 with 1 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"#@title Plot\\n\",\n        \"\\n\",\n        \"use_polar = True\\n\",\n        \"plt.figure(figsize=(10, 10))\\n\",\n        \"ax = plt.subplot(111, polar=use_polar)\\n\",\n        \"\\n\",\n        \"policy_42513_mean_df = policy_42513_df.groupby(\\\"angle\\\").mean()\\n\",\n        \"ax.plot(\\n\",\n        \"    policy_42513_mean_df.index,\\n\",\n        \"    policy_42513_mean_df[\\\"return\\\"],\\n\",\n        \"    \\\".-\\\",\\n\",\n        \"    linewidth=5, color='y')\\n\",\n        \"\\n\",\n        \"policy_4251_mean_df = policy_4251_df.groupby(\\\"angle\\\").mean()\\n\",\n        \"ax.plot(\\n\",\n        \"    policy_4251_mean_df.index,\\n\",\n        \"    policy_4251_mean_df[\\\"return\\\"],\\n\",\n        \"    \\\".-\\\",\\n\",\n        \"    linewidth=5, color='k')\\n\",\n        \"\\n\",\n        \"policy_425_mean_df = policy_425_df.groupby(\\\"angle\\\").mean()\\n\",\n        \"ax.plot(\\n\",\n        \"    policy_425_mean_df.index,\\n\",\n        \"    policy_425_mean_df[\\\"return\\\"],\\n\",\n        \"    \\\".-\\\",\\n\",\n        \"    linewidth=5, color='b')\\n\",\n        \"\\n\",\n        \"policy_42_mean_df = policy_42_df.groupby(\\\"angle\\\").mean()\\n\",\n        \"ax.plot(\\n\",\n        \"    policy_42_mean_df.index,\\n\",\n        \"    policy_42_mean_df[\\\"return\\\"],\\n\",\n        \"    \\\".-\\\",\\n\",\n        \"    linewidth=5, color='g')\\n\",\n        \"\\n\",\n        \"policy_4_mean_df = policy_4_df.groupby(\\\"angle\\\").mean()\\n\",\n        \"ax.plot(\\n\",\n        \"    policy_4_mean_df.index,\\n\",\n        \"    policy_4_mean_df[\\\"return\\\"],\\n\",\n        \"    \\\".-\\\",\\n\",\n        \"    linewidth=5, color='r')\\n\",\n        \"\\n\",\n        \"legend = ax.legend([\\n\",\n        \"    r\\\"GPE + GPI with $\\\\Pi_{4}$\\\",\\n\",\n        \"    r\\\"GPE + GPI with $\\\\Pi_{42}$\\\",\\n\",\n        \"    r\\\"GPE + GPI with $\\\\Pi_{425}$\\\",\\n\",\n        \"    r\\\"GPE + GPI with $\\\\Pi_{4251}$\\\",\\n\",\n        \"    r\\\"GPE + GPI with $\\\\Pi_{42513}$\\\",\\n\",\n        \"    r\\\"$Q$-learning\\\",\\n\",\n        \"    ],\\n\",\n        \"                   fontsize=\\\"15\\\",\\n\",\n        \"                   loc=\\\"best\\\")\\n\",\n        \"\\n\",\n        \"ax.set_theta_zero_location(\\\"N\\\")\\n\",\n        \"ax.set_theta_direction(-1)\\n\",\n        \"\\n\",\n        \"lines, labels = ax.set_thetagrids(\\n\",\n        \"    (0, 45, 90, 135, 315),\\n\",\n        \"    (r\\\"$\\\\mathbf{w}_2 = [0,1]$\\\", r\\\"$\\\\mathbf{w}_5 = [1,1]$\\\",\\n\",\n        \"     r\\\"$\\\\qquad \\\\mathbf{w}_1 = [1,0]$\\\", r\\\"$\\\\mathbf{w}_3 = [1,-1]$\\\",\\n\",\n        \"     r\\\"$\\\\mathbf{w}_4 = [-1,1]$\\\"),\\n\",\n        \"    fontweight=\\\"bold\\\",\\n\",\n        \"    fontsize=15)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"vB8evAxHCsEF\"\n      },\n      \"source\": [\n        \"# Figure 6\\n\",\n        \"\\n\",\n        \"To generate the q-learning results:\\n\",\n        \"```\\n\",\n        \"python3 ../run_dqn.py --num_episodes=20000 --report_every=100 --output_path=/tmp/fig6_dqn.csv\\n\",\n        \"```\\n\",\n        \"\\n\",\n        \"To generate the OK results:\\n\",\n        \"```\\n\",\n        \"python3 train_keybooard.py --num_pretrain_episodes=20000 --policy_weights_name=12 --export_path=/tmp/fig6_keyboard\\n\",\n        \"python3 ../run_ok.py --num_episodes=20000 --report_every=100 --keyboard_path=/tmp/fig6_keyboard/tfhub --output_path=/tmp/fig6_ok.csv\\n\",\n        \"```\\n\",\n        \"\\n\",\n        \"To generate the results with fixed w:\\n\",\n        \"```\\n\",\n        \"# Make use of a pretrained keyboard. Change test_w to evaluate other policies such as [1,0] and [1,-1].\\n\",\n        \"python3 run_true_w_fig6.py --num_episodes=1000 --keyboard_path=/tmp/fig6_keyboard/tfhub --test_w=1,1\\n\",\n        \"```\\n\",\n        \"\\n\",\n        \"Repeat the above steps for multiple runs. Below shows the results for 10 runs.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 62,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 881,\n          \"status\": \"ok\",\n          \"timestamp\": 1596666806583,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"8RubRCQ-EhDf\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Load Data\\n\",\n        \"\\n\",\n        \"dqn_path = os.path.join(DATA_DIR, \\\"fig6_dqn_{}.csv\\\")\\n\",\n        \"dqn_df = read_data(dqn_path, num_seeds=10)\\n\",\n        \"dqn_df[\\\"method\\\"] = \\\"Q-Learning\\\"\\n\",\n        \"ok_path = os.path.join(DATA_DIR, \\\"fig6_ok_{}.csv\\\")\\n\",\n        \"ok_df = read_data(ok_path, num_seeds=10)\\n\",\n        \"ok_df[\\\"method\\\"] = \\\"GPE + GPI with varying w\\\"\\n\",\n        \"fig6_df = pd.concat([dqn_df, ok_df])\\n\",\n        \"\\n\",\n        \"test_ws = [[1, 1], [1, 0], [1, -1]]\\n\",\n        \"test_dfs = []\\n\",\n        \"for test_w in test_ws:\\n\",\n        \"  test_w_str = \\\"|\\\".join([str(x) for x in test_w])\\n\",\n        \"  path = os.path.join(DATA_DIR, \\\"fig6_true_w=\\\" + test_w_str + \\\"_{}.csv\\\")\\n\",\n        \"  test_dfs.append(read_data(path, num_seeds=10))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 63,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {\n          \"height\": 400\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 1491,\n          \"status\": \"ok\",\n          \"timestamp\": 1596666808084,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"7PBgQoxELoAz\",\n        \"outputId\": \"497bfb1c-f3d6-4c74-d180-e7b571b9b3e9\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"image/png\": \"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\\nNGGm7zreB9sfePsbl2NNWYI15bRezq9QEanlLY4tGk1Da5agHw/u3uYsT6zczuZdbVQnXT584TRm\\njCvv9YOpYSgqy1wScUeCbiGEEBJ8H2+UKgbDOvRRYVBc+OgX8HOllRSEroG3Pf+y3oML1yU0+24z\\nL8RwodE0t+fJF/quXAKwpzHDinfqeGNTI65tcsmS8SyaWYNZQv3t8rhDMu7IAkohhBCABN/HDUN7\\n6FwKHXiEfgEdagg1Wpc+272fv/nlXgNvZRig6Ti3EUnQ/6sIMbSUgiCETM6jLV3otWSg1pq2dIFt\\ndSleWVfP9r0pbMtgyayRnLNwDFG3tD+d5r563RJ4CyGE2O+YCb7vX/NTWnJtHf9+ysj5nDPuDApB\\nge+vvr/L/qeNXsTS0YtIFdL8aE3XKitnjz2dU2sX0pxr4cdv/6LL9gsnnMO8EbOpS+/l5+t+22X7\\npZMuZFbVdLa37+I3G37XZftVUy9lSvkkNre+y+82PdZl+9XTr2J8Ygxrmzbw2Lt/7LL9upkfpDY+\\nkjcb3uaP257rsv3G2R+hMlLBq3Wv8/zO5Wi/0KmKyV9OuIQyK8qK5rWsaF7b8XPLMvD9kFsnXYFj\\n2DzfuIbXWjd2bNeBR9i8i/9TOw17/mUsa3idt9q3drq240T59IK/gDDgkXeXsXb7NopZrUVxO8bH\\n5/05AP+76VG2tHY+vsIt56Y51wHw4PrfsSO1q9P2kbERXD/rGgB+tvZB9mYaOm0fVzaGa2ZcBcAD\\nb/2clnxrp+2TyyfyvqmXAfDDN/+LtNe5KdDMymlcNvkiAO55/T/wQq/T9rkjTuKiCecCcOeqeznU\\nwc/ebcv+Bc/rHMSdWM/eS1223zz3BsqcOMt3v8KK3a902f5XC/4Sx3R4bseLrNr7Rqdttm3yyXkf\\nB+Cpbc+ypuGdztsNm08u/BgAj255inXNGztt7+7ZC7VGawi1Jm4muHzM+wBYtucJ9ub2dBwbagiz\\nMfT2eexpyuCPXo2KpLFqDEZNtItNb2KjibrFhce/3/kQKa+t0/XHRMdxTu0FADy0/UE8ncPecWB2\\nfDCfvVL+7tm22en5lGev52cP4LOn3Ap0/+zFIxE+PvsmoPRn72DH09+9wXjPPfTZlGev52evlL97\\nf3/BJwF59g73PffRrU/xf8/9RJd9BtsxE3yLnmjwvcEpCqw1ur0BlMI5+aruU02UAmUSGg4YoE2X\\n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\\n3zr3LwBde8e69gDOGTXtqNfekX7f99O1d/yfez3VUtfeiX/uffL0yzg7do6uvT76N/f7c78F6No7\\n2X9zn93+PP/fnP9zzGOcrLwJ3xgLyA5ot3YkqWvuwrYMVaMKiEWClMRCBCxrcM9RREREROQojD9A\\nffa2bt3KggULaGlpoaSkhIULFzJp0qTjfn1TU5yuRJr/XLaRP67dwxkTSviL686mvCikmyl7YfTo\\nQvbtax/s0xg2VM++pXr2LdWz76iWfUv17FuqZ9+wLEN5eaz/36ff36Hb3//933PzzTezdOlSbr75\\nZv7u7/6uV69vbuviJ/9Zwx/X7uETM8fxV188n7JCBW8RERERyR8DEr4bGxtZv3491157LQDXXnst\\n69evp6mp6biPce+ypdS3dPK1z5xOXdmLvNOwGoCUm2JRTTVv12W3uzJdLKqpZnX9WgA6UnEW1VSz\\ntmE9AK3JdhbVVPNe4wYAmhMtLKqp5oOmTQA0dDWyqKaaTc2bAaiL17OoppotrdsAqO3Yy6Kaara3\\n7QRgZ3sti2qq2dleC8D2tp0sqqmmtmMvAFtat7Goppq6eD0Am5o3s6immoauRgA+aNrEoppqmhMt\\nALzXuIFFNdW0JrPfYNc2rGdRTTUdqTgAq+vXsqimmq5MFwBv161mUU01KTcFwKq9NSyqqcb1snMT\\nV+x565A5VM9v/iP//M4Due1Xdr3O/at/ldt+aecfqX733w/sv2M5v1z7UG572baX+PW6/8ptP7v1\\neX7z3m9z24u3LOU/1v8+t/3k5mf57w8ezW3/z6bF/G7D47ntRzc+xaMbn8pt/27D4/zPpsW57f/+\\n4FGe3Pxsbvs/1v+exVuW5rZ/895veXbr87ntX6/7L5Zteym3/cu1D/H8juW57ep3/52Xdv4xt33/\\n6l/xyq7Xc9v//M4DvLZ7ZW57UU01K7rn77mey6KaalbtrQGy196dL/6jrr3jvPZe273ymNfewlf/\\nNbeta+/o197xfO69tftdQNfe8Vx7x/rcW/T6/8tt69o7+X9z392bndesa0//5g70tXe0z72Da92f\\nBiR879mzhzFjxmDb2YVubNumoqKCPXv2HPcxwiGb7918AZeeU4kaCIqIiIhIPhqQOd/r1q3je9/7\\nHs8880zusc985jP87Gc/4+yzzz6uY8S7UhREnP46RRERERGRfjcg3U4qKyupq6vDdV1s28Z1Xerr\\n66msrDzuYyQ6U3R2JPvxLEcG3ZTRt1TPvqV69i3Vs++oln1L9exbqmffGFY3XJaXlzNt2jQWL87O\\nK1q8eDHTpk2jrKxsIN5eRERERGRIGLA+33feeScLFizgX//1XykqKmLhwoUD9dYiIiIiIkPCgIXv\\nqVOn8sgjjwzU24mIiIiIDDlaElJEREREZIAofIuIiIiIDBCFbxERERGRAaLwLSIiIiIyQBS+RURE\\nREQGiMK3iIiIiMgAUfgWERERERkgCt8iIiIiIgNE4VtEREREZIAM2AqXJ8uyzGCfwrChWvYt1bNv\\nqZ59S/XsO6pl31I9+5bqefIGqobG931/QN5JRERERGSE07QTEREREZEBovAtIiIiIjJAFL5FRERE\\nRAaIwreIiIiIyABR+BYRERERGSAK3yIiIiIiA0ThW0RERERkgCh8i4iIiIgMEIVvEREREZEBMqSX\\nl9+6dSsLFiygpaWFkpISFi5cyKRJkwb7tIaM5uZmvvvd77Jjxw4cx2HixIncddddlJWVMXfuXBzH\\nIRQKAXDHHXdw+eWXA0ev60iv+ZHqdqI1G8n13LVrF9/61rdy2+3t7XR0dLBq1Spdn8dh4cKFLF26\\nlN27d/P0009z+umnAyden5Fe157qebTPUDjy5wGonke6PvujZsO9nj3V8mifn6Br82iO9ns9ZD4/\\n/SHsy1/+sv/EE0/4vu/7TzzxhP/lL395kM9oaGlubvbfeOON3PZPf/pT/2/+5m983/f9K6+80t+w\\nYUOPrztaXUd6zY9UtxOt2Uiv58F+/OMf+z/60Y9839f1eTzefPNNv7a29rBa9ce1OBLq2lM9j/YZ\\n6vu6To/mSNdnf9RsuNfzSLU82MGfn76va/NojvZ7PVQ+P4ds+G5oaPAvvPBCP5PJ+L7v+5lMxr/w\\nwgv9xsbGQT6zoesPf/iD/9WvftX3/SP/Yh6trqp5z3U70Zqpngckk0l/9uzZ/rp163zf1/XZGwfX\\nqj+uxZFW16OFloM/Q4+2r+p5wPGGb12fx3ak2n308/No+6qWh9v/ez2UPj+H7LSTPXv2MGbMGGzb\\nBsC2bSoqKtizZ0/uT4JygOd5/Pa3v2Xu3Lm5x+644w583+fCCy/kr/7qrygqKjpqXX3fV805vG4n\\nWjPV84AXX3yRMWPGcPbZZ+ce0/XZe/1xLaquWT19hoKu0xPRlzVTPXv+/ARdm8fj4N/rofT5qRsu\\nh4m7776baDTKl770JQD+67/+i6eeeorHHnsM3/e56667BvkM84Pq1j8ee+wxvvCFL+S2VWcZaj76\\nGQq6Tk+Eatb3Pvr5Carz8erp93ooGLLhu7Kykrq6OlzXBcB1Xerr66msrBzkMxt6Fi5cyPbt21m0\\naBGWlf1fur9OjuNw8803U1NTk3v8SHVVzXuu24nWTPXMqqur48033+S6667LPabr88T0x7Wouvb8\\nGQq6Tk9EX9dspNezp89P0LV5PD76ez2UPj+HbPguLy9n2rRpLF68GIDFixczbdq0YfunkRN17733\\nsm7dOu6//34cxwGgs7OT9vZ2AHzfZ8mSJUybNg04el1Hes2PVLcTrdlIr+d+jz/+OHPmzKG0tBTQ\\n9Xky+uNaHOl17ekzFHSdnoj+qNlIricc/vkJujaPR0+/10Pp89P4vu/31w9/sjZv3syCBQtoa2uj\\nqKiIhQsXMmXKlME+rSFj06ZNXHvttUyaNIlwOAzAuHHjWLBgAd/+9rdxXRfP85g6dSo/+MEPqKio\\nAI5e15Fc8507dx6xbidas5Fcz/2uuuoq/vZv/5YrrrgCOHqdQfXc78c//jHLli2joaGB0tJSSkpK\\neOaZZ/rlWhwJde2pnosWLerxM/T+++/XdXoMPdWzurq6X2o23Ot5pN91OPzzE/QZeixHykb333//\\nkPn8HNLhW0RERERkOBmy005ERERERIYbhW8RERERkQGi8C0iIiIiMkAUvkVEREREBojCt4iIiIjI\\nAFH4FhHJU9dccw0rV67s02MuWLCAe++9t0+PKSIiBwQG+wREROTE7O8FLCIi+UMj3yIiIiIiA0Th\\nW0RkkNXV1fHtb3+bj33sY8ydO5eHHnoIgPvuu4/vfOc73H777cyYMYPrr7+eDz74IPe6uXPn8vrr\\nrwPw7rvv8vnPf54LLriASy65hJ/85Ce5/V544QWuueYaZs6cyZe//GU2b96ce279+vVcf/31zJgx\\ng9tvv51kMnnIub300kt87nOfY+bMmdx0002HvL+IiPSewreIyCDyPI9bb72VM844g1deeYUHH3yQ\\nBx98kFdffRXIBuerr76aVatWce2113LbbbeRTqcPO84999zDV77yFWpqanjuuef49Kc/DcDWrVv5\\n67/+a77//e+zYsUKrrjiCm655RZSqRSpVIpvfetbfO5zn2PVqlVcffXVLFu2LHfM9957j+9///vc\\nddddrFy5khtvvJHbbruNVCo1MMURERmGFL5FRAbR2rVraWpqYv78+TiOw/jx4/niF7/IkiVLADj7\\n7LO5+uqrCQaD/Pmf/zmpVIo1a9YcdpxAIMCOHTtoamqioKCA888/H4AlS5YwZ84cLr30UoLBIF//\\n+tdJJBK88847rFmzhnQ6zVe/+lWCwSBXX3015557bu6Yv//977nxxhs577zzsG2b66+/nmAwyOrV\\nqwemOCIiw5BuuBQRGUS7d++mvr6emTNn5h5zXZeZM2dSVVXF2LFjc49blsWYMWOor68/7Dj33HMP\\n//zP/8ynP/1pxo0bx/z587nyyiupr6+nqqrqkGNUVlZSV1eHbduMGTMGY0zu+YP3ra2t5YknnuA/\\n//M/c4+l0+ke319ERI6PwreIyCCqrKxk3Lhxh0z32O++++5j7969uW3P86irq6OiouKwfSdNmsQ/\\n/uM/4nkey5Yt4zvf+Q4rV66koqKCjRs35vbzfZ89e/bkQnddXR2+7+cCeG1tLePHj8+d2y233MKt\\nt97a1z+2iMiIpWknIiKDaPr06cRiMR544AESiQSu67Jx40beffddIDvvetmyZWQyGR588EEcx+G8\\n88477DhPPvkkTU1NWJZFUVERALZt8+lPf5rly5ezYsUK0uk0v/71r3EchxkzZnD++ecTCAR46KGH\\nyGQyLFu2jLVr1+aOecMNN/Dwww+zZs0afN+ns7OTl19+mY6OjoEpjojIMKSRbxGRQWTbNr/4xS9Y\\nuHAh8+bNI5VKMXnyZG6//XYA5s2bx5IlS/je977HxIkTue+++wgGg4cd59VXX+WnP/0piUSCqqoq\\n7r33XkKhEFOmTOFnP/sZd999N3V1dUybNo3q6mocxwGyo+s//OEPWbRoEXPmzOGTn/xk7pjnnnsu\\nd999N3fddRfbt28nHA5zwQUXHDJFRkREesf4vu8P9kmIiMjh7rvvPrZv387Pf/7zwT4VERHpI5p2\\nIiIiIiIyQBS+RUREREQGiKadiIiIiIgMEI18i4iIiIgMEIVvEREREZEBovAtIiIiIjJAFL5FRERE\\nRAaIwreIiIiIyABR+BYRERERGSD/P4XeUz01vwISAAAAAElFTkSuQmCC\\n\",\n            \"text/plain\": [\n              \"\\u003cFigure size 1200x600 with 1 Axes\\u003e\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"display_data\"\n        }\n      ],\n      \"source\": [\n        \"#@title Plot\\n\",\n        \"\\n\",\n        \"fig, ax = plt.subplots(figsize=(12,6))\\n\",\n        \"sns.tsplot(fig6_df, time=\\\"episode\\\", unit=\\\"seed\\\", value=\\\"eval_0\\\", condition=\\\"method\\\", ci=95, ax=ax)\\n\",\n        \"\\n\",\n        \"ax.axhline(test_dfs[0][\\\"return\\\"].mean(), color='g', linestyle='--', label=test_ws[0])\\n\",\n        \"ax.axhline(test_dfs[1][\\\"return\\\"].mean(), color='g', linestyle='-.', label=test_ws[1])\\n\",\n        \"ax.axhline(test_dfs[2][\\\"return\\\"].mean(), color='g', linestyle=':', label=test_ws[2])\\n\",\n        \"\\n\",\n        \"ax.legend();\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"last_runtime\": {\n        \"build_target\": \"//learning/deepmind/applications/hippos/atlantic:light_atlantic_auditable_colab\",\n        \"kind\": \"shared\"\n      },\n      \"name\": \"generate_figures.ipynb\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1uLGieQXt93jX0ASo-qSCvnjEV67_4ZOO\",\n          \"timestamp\": 1591027877583\n        }\n      ],\n      \"toc_visible\": true\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"language\": \"python\",\n      \"name\": \"python3\"\n    },\n    \"language_info\": {\n      \"codemirror_mode\": {\n        \"name\": \"ipython\",\n        \"version\": 3\n      },\n      \"file_extension\": \".py\",\n      \"mimetype\": \"text/x-python\",\n      \"name\": \"python\",\n      \"nbconvert_exporter\": \"python\",\n      \"pygments_lexer\": \"ipython3\",\n      \"version\": \"3.7.3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "option_keyboard/gpe_gpi_experiments/regressed_agent.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Regressed agent.\"\"\"\n\nimport numpy as np\nimport tensorflow.compat.v1 as tf\n\n\nclass Agent():\n  \"\"\"A DQN Agent.\"\"\"\n\n  def __init__(\n      self,\n      batch_size,\n      optimizer_name,\n      optimizer_kwargs,\n      init_w,\n  ):\n    \"\"\"A simple DQN agent.\n\n    Args:\n      batch_size: Size of update batch.\n      optimizer_name: Name of an optimizer from tf.train\n      optimizer_kwargs: Keyword arguments for the optimizer.\n      init_w: The initial cumulant weight.\n    \"\"\"\n    self._batch_size = batch_size\n    self._init_w = np.array(init_w)\n    self._replay = []\n\n    # Regress w by gradient descent, could also use closed-form solution.\n    self._n_cumulants = len(init_w)\n    self._regressed_w = tf.get_variable(\n        \"regressed_w\",\n        dtype=tf.float32,\n        initializer=lambda: tf.to_float(init_w))\n    cumulants_ph = tf.placeholder(\n        shape=(None, self._n_cumulants), dtype=tf.float32)\n    rewards_ph = tf.placeholder(shape=(None,), dtype=tf.float32)\n    predicted_rewards = tf.reduce_sum(\n        tf.multiply(self._regressed_w, cumulants_ph), axis=-1)\n    loss = tf.reduce_sum(tf.square(predicted_rewards - rewards_ph))\n\n    with tf.variable_scope(\"optimizer\"):\n      self._optimizer = getattr(tf.train, optimizer_name)(**optimizer_kwargs)\n      train_op = self._optimizer.minimize(loss)\n\n    # Make session and callables.\n    session = tf.Session()\n    self._update_fn = session.make_callable(train_op,\n                                            [cumulants_ph, rewards_ph])\n    self._action = session.make_callable(self._regressed_w.read_value(), [])\n    session.run(tf.global_variables_initializer())\n\n  def step(self, timestep, is_training=False):\n    \"\"\"Select actions according to epsilon-greedy policy.\"\"\"\n    del timestep\n\n    if is_training:\n      # Can also just use random actions at environment level.\n      return np.random.uniform(low=-1.0, high=1.0, size=(self._n_cumulants,))\n\n    return self._action()\n\n  def update(self, step_tm1, action, step_t):\n    \"\"\"Takes in a transition from the environment.\"\"\"\n    del step_tm1, action\n\n    transition = [\n        step_t.observation[\"cumulants\"],\n        step_t.reward,\n    ]\n    self._replay.append(transition)\n\n    if len(self._replay) == self._batch_size:\n      batch = list(zip(*self._replay))\n      self._update_fn(*batch)\n      self._replay = []  # Just a queue.\n\n  def get_logs(self):\n    return dict(regressed=self._action())\n"
  },
  {
    "path": "option_keyboard/gpe_gpi_experiments/run_dqn_fig4b.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Run an experiment.\n\nRun a q-learning agent on task (1, -1).\n\"\"\"\n\nfrom absl import app\nfrom absl import flags\n\nimport tensorflow.compat.v1 as tf\n\nfrom option_keyboard import configs\nfrom option_keyboard import dqn_agent\nfrom option_keyboard import environment_wrappers\nfrom option_keyboard import experiment\nfrom option_keyboard import scavenger\n\nFLAGS = flags.FLAGS\nflags.DEFINE_integer(\"num_episodes\", 10000, \"Number of training episodes.\")\nflags.DEFINE_integer(\"report_every\", 5,\n                     \"Frequency at which metrics are reported.\")\nflags.DEFINE_string(\"output_path\", None, \"Path to write out training curves.\")\n\n\ndef main(argv):\n  del argv\n\n  # Create the task environment.\n  env_config = configs.get_fig4_task_config()\n  env = scavenger.Scavenger(**env_config)\n  env = environment_wrappers.EnvironmentWithLogging(env)\n\n  # Create the flat agent.\n  agent = dqn_agent.Agent(\n      obs_spec=env.observation_spec(),\n      action_spec=env.action_spec(),\n      network_kwargs=dict(\n          output_sizes=(64, 128),\n          activate_final=True,\n      ),\n      epsilon=0.1,\n      additional_discount=0.9,\n      batch_size=10,\n      optimizer_name=\"AdamOptimizer\",\n      optimizer_kwargs=dict(learning_rate=3e-4,))\n\n  _, ema_returns = experiment.run(\n      env,\n      agent,\n      num_episodes=FLAGS.num_episodes,\n      report_every=FLAGS.report_every)\n  if FLAGS.output_path:\n    experiment.write_returns_to_file(FLAGS.output_path, ema_returns)\n\n\nif __name__ == \"__main__\":\n  tf.disable_v2_behavior()\n  app.run(main)\n"
  },
  {
    "path": "option_keyboard/gpe_gpi_experiments/run_dqn_fig5.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Run an experiment.\n\nRun a q-learning agent on a task.\n\"\"\"\n\nfrom absl import app\nfrom absl import flags\n\nimport tensorflow.compat.v1 as tf\n\nfrom option_keyboard import configs\nfrom option_keyboard import dqn_agent\nfrom option_keyboard import environment_wrappers\nfrom option_keyboard import experiment\nfrom option_keyboard import scavenger\n\nFLAGS = flags.FLAGS\nflags.DEFINE_integer(\"num_episodes\", 10000, \"Number of training episodes.\")\nflags.DEFINE_list(\"test_w\", None, \"The w to test.\")\nflags.DEFINE_integer(\"report_every\", 200,\n                     \"Frequency at which metrics are reported.\")\nflags.DEFINE_string(\"output_path\", None, \"Path to write out training curves.\")\n\n\ndef main(argv):\n  del argv\n\n  # Create the task environment.\n  test_w = [float(x) for x in FLAGS.test_w]\n  env_config = configs.get_fig5_task_config(test_w)\n  env = scavenger.Scavenger(**env_config)\n  env = environment_wrappers.EnvironmentWithLogging(env)\n\n  # Create the flat agent.\n  agent = dqn_agent.Agent(\n      obs_spec=env.observation_spec(),\n      action_spec=env.action_spec(),\n      network_kwargs=dict(\n          output_sizes=(64, 128),\n          activate_final=True,\n      ),\n      epsilon=0.1,\n      additional_discount=0.9,\n      batch_size=10,\n      optimizer_name=\"AdamOptimizer\",\n      optimizer_kwargs=dict(learning_rate=3e-4,))\n\n  _, ema_returns = experiment.run(\n      env,\n      agent,\n      num_episodes=FLAGS.num_episodes,\n      report_every=FLAGS.report_every)\n  if FLAGS.output_path:\n    experiment.write_returns_to_file(FLAGS.output_path, ema_returns)\n\n\nif __name__ == \"__main__\":\n  tf.disable_v2_behavior()\n  app.run(main)\n"
  },
  {
    "path": "option_keyboard/gpe_gpi_experiments/run_regressed_w_fig4b.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\nr\"\"\"Run an experiment.\n\nRun GPE/GPI on task (1, -1) with w obtained by regression.\n\n\nFor example, first train a keyboard:\n\npython3 train_keyboard.py -- --logtostderr --policy_weights_name=12 \\\n  --export_path=/tmp/option_keyboard/keyboard\n\n\nThen, evaluate the keyboard with w by regression.\n\npython3 run_regressed_w_fig4b.py -- --logtostderr \\\n  --keyboard_path=/tmp/option_keyboard/keyboard_12/tfhub\n\"\"\"\n\nfrom absl import app\nfrom absl import flags\n\nimport numpy as np\nimport tensorflow.compat.v1 as tf\nimport tensorflow_hub as hub\n\nfrom option_keyboard import configs\nfrom option_keyboard import environment_wrappers\nfrom option_keyboard import experiment\nfrom option_keyboard import scavenger\nfrom option_keyboard import smart_module\n\nfrom option_keyboard.gpe_gpi_experiments import regressed_agent\n\nFLAGS = flags.FLAGS\nflags.DEFINE_integer(\"num_episodes\", 4000, \"Number of training episodes.\")\nflags.DEFINE_integer(\"report_every\", 5,\n                     \"Frequency at which metrics are reported.\")\nflags.DEFINE_string(\"keyboard_path\", None, \"Path to keyboard model.\")\nflags.DEFINE_string(\"output_path\", None, \"Path to write out training curves.\")\n\n\ndef main(argv):\n  del argv\n\n  # Load the keyboard.\n  keyboard = smart_module.SmartModuleImport(hub.Module(FLAGS.keyboard_path))\n\n  # Create the task environment.\n  base_env_config = configs.get_fig4_task_config()\n  base_env = scavenger.Scavenger(**base_env_config)\n  base_env = environment_wrappers.EnvironmentWithLogging(base_env)\n\n  # Wrap the task environment with the keyboard.\n  additional_discount = 0.9\n  env = environment_wrappers.EnvironmentWithKeyboardDirect(\n      env=base_env,\n      keyboard=keyboard,\n      keyboard_ckpt_path=None,\n      additional_discount=additional_discount,\n      call_and_return=False)\n\n  # Create the player agent.\n  agent = regressed_agent.Agent(\n      batch_size=10,\n      optimizer_name=\"AdamOptimizer\",\n      optimizer_kwargs=dict(learning_rate=3e-2,),\n      init_w=np.random.normal(size=keyboard.num_cumulants) * 0.1,\n  )\n\n  _, ema_returns = experiment.run(\n      env,\n      agent,\n      num_episodes=FLAGS.num_episodes,\n      report_every=FLAGS.report_every,\n      num_eval_reps=20)\n  if FLAGS.output_path:\n    experiment.write_returns_to_file(FLAGS.output_path, ema_returns)\n\n\nif __name__ == \"__main__\":\n  tf.disable_v2_behavior()\n  app.run(main)\n"
  },
  {
    "path": "option_keyboard/gpe_gpi_experiments/run_regressed_w_fig4c.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\nr\"\"\"Run an experiment.\n\nRun GPE/GPI on task (1, -1) with w obtained by regression.\n\n\nFor example, first train a keyboard:\n\npython3 train_keyboard.py -- --logtostderr --policy_weights_name=12 \\\n  --export_path=/tmp/option_keyboard/keyboard\n\n\nThen, evaluate the keyboard with w by regression.\n\npython3 run_regressed_w_fig4c.py -- --logtostderr \\\n  --keyboard_path=/tmp/option_keyboard/keyboard_12/tfhub\n\"\"\"\n\nfrom absl import app\nfrom absl import flags\n\nimport numpy as np\nimport tensorflow.compat.v1 as tf\nimport tensorflow_hub as hub\n\nfrom option_keyboard import configs\nfrom option_keyboard import environment_wrappers\nfrom option_keyboard import experiment\nfrom option_keyboard import scavenger\nfrom option_keyboard import smart_module\n\nfrom option_keyboard.gpe_gpi_experiments import regressed_agent\n\nFLAGS = flags.FLAGS\nflags.DEFINE_integer(\"num_episodes\", 100, \"Number of training episodes.\")\nflags.DEFINE_integer(\"report_every\", 1,\n                     \"Frequency at which metrics are reported.\")\nflags.DEFINE_string(\"keyboard_path\", None, \"Path to keyboard model.\")\nflags.DEFINE_string(\"output_path\", None, \"Path to write out training curves.\")\n\n\ndef main(argv):\n  del argv\n\n  # Load the keyboard.\n  keyboard = smart_module.SmartModuleImport(hub.Module(FLAGS.keyboard_path))\n\n  # Create the task environment.\n  base_env_config = configs.get_fig4_task_config()\n  base_env = scavenger.Scavenger(**base_env_config)\n  base_env = environment_wrappers.EnvironmentWithLogging(base_env)\n\n  # Wrap the task environment with the keyboard.\n  additional_discount = 0.9\n  env = environment_wrappers.EnvironmentWithKeyboardDirect(\n      env=base_env,\n      keyboard=keyboard,\n      keyboard_ckpt_path=None,\n      additional_discount=additional_discount,\n      call_and_return=False)\n\n  # Create the player agent.\n  agent = regressed_agent.Agent(\n      batch_size=10,\n      optimizer_name=\"AdamOptimizer\",\n      optimizer_kwargs=dict(learning_rate=3e-2,),\n      init_w=np.random.normal(size=keyboard.num_cumulants) * 0.1,\n  )\n\n  _, ema_returns = experiment.run(\n      env,\n      agent,\n      num_episodes=FLAGS.num_episodes,\n      report_every=FLAGS.report_every,\n      num_eval_reps=100)\n  if FLAGS.output_path:\n    experiment.write_returns_to_file(FLAGS.output_path, ema_returns)\n\n\nif __name__ == \"__main__\":\n  tf.disable_v2_behavior()\n  app.run(main)\n"
  },
  {
    "path": "option_keyboard/gpe_gpi_experiments/run_regressed_w_with_phi_fig4c.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\nr\"\"\"Run an experiment.\n\nRun GPE/GPI on task (1, -1) with a learned phi model and w by regression.\n\n\nFor example, first train a phi model with 3 dimenional phi:\n\npython3 train_phi_model.py -- --logtostderr --use_random_tasks \\\n  --export_path=/tmp/option_keyboard/phi_model_3d --num_phis=3\n\n\nThen train a keyboard:\n\npython3 train_keyboard_with_phi.py -- --logtostderr \\\n  --export_path=/tmp/option_keyboard/keyboard_3d \\\n  --phi_model_path=/tmp/option_keyboard/phi_model_3d \\\n  --num_phis=2\n\n\nFinally, evaluate the keyboard with w by regression.\n\npython3 run_regressed_w_with_phi_fig4c.py -- --logtostderr \\\n  --phi_model_path=/tmp/option_keyboard/phi_model_3d \\\n  --keyboard_path=/tmp/option_keyboard/keyboard_3d/tfhub\n\"\"\"\n\nfrom absl import app\nfrom absl import flags\n\nimport numpy as np\nimport tensorflow.compat.v1 as tf\nimport tensorflow_hub as hub\n\nfrom option_keyboard import configs\nfrom option_keyboard import environment_wrappers\nfrom option_keyboard import experiment\nfrom option_keyboard import scavenger\nfrom option_keyboard import smart_module\n\nfrom option_keyboard.gpe_gpi_experiments import regressed_agent\n\nFLAGS = flags.FLAGS\nflags.DEFINE_integer(\"num_episodes\", 100, \"Number of training episodes.\")\nflags.DEFINE_integer(\"report_every\", 1,\n                     \"Frequency at which metrics are reported.\")\nflags.DEFINE_string(\"phi_model_path\", None, \"Path to phi model.\")\nflags.DEFINE_string(\"keyboard_path\", None, \"Path to keyboard model.\")\nflags.DEFINE_string(\"output_path\", None, \"Path to write out training curves.\")\n\n\ndef main(argv):\n  del argv\n\n  # Load the keyboard.\n  keyboard = smart_module.SmartModuleImport(hub.Module(FLAGS.keyboard_path))\n\n  # Create the task environment.\n  base_env_config = configs.get_fig4_task_config()\n  base_env = scavenger.Scavenger(**base_env_config)\n  base_env = environment_wrappers.EnvironmentWithLogging(base_env)\n\n  base_env = environment_wrappers.EnvironmentWithLearnedPhi(\n      base_env, FLAGS.phi_model_path)\n\n  # Wrap the task environment with the keyboard.\n  additional_discount = 0.9\n  env = environment_wrappers.EnvironmentWithKeyboardDirect(\n      env=base_env,\n      keyboard=keyboard,\n      keyboard_ckpt_path=None,\n      additional_discount=additional_discount,\n      call_and_return=False)\n\n  # Create the player agent.\n  agent = regressed_agent.Agent(\n      batch_size=10,\n      optimizer_name=\"AdamOptimizer\",\n      optimizer_kwargs=dict(learning_rate=3e-2,),\n      init_w=np.random.normal(size=keyboard.num_cumulants) * 0.1,\n  )\n\n  _, ema_returns = experiment.run(\n      env,\n      agent,\n      num_episodes=FLAGS.num_episodes,\n      report_every=FLAGS.report_every,\n      num_eval_reps=100)\n  if FLAGS.output_path:\n    experiment.write_returns_to_file(FLAGS.output_path, ema_returns)\n\n\nif __name__ == \"__main__\":\n  tf.disable_v2_behavior()\n  app.run(main)\n"
  },
  {
    "path": "option_keyboard/gpe_gpi_experiments/run_true_w_fig4.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\nr\"\"\"Run an experiment.\n\nRun GPE/GPI on task (1, -1) with the groundtruth w.\n\n\nFor example, first train a keyboard:\n\npython3 train_keyboard.py -- --logtostderr --policy_weights_name=12\n\n\nThen, evaluate the keyboard with groundtruth w.\n\npython3 run_true_w_fig4.py -- --logtostderr \\\n  --keyboard_path=/tmp/option_keyboard/keyboard_12/tfhub\n\"\"\"\n\nimport csv\n\nfrom absl import app\nfrom absl import flags\n\nimport numpy as np\nimport tensorflow.compat.v1 as tf\nfrom tensorflow.compat.v1.io import gfile\nimport tensorflow_hub as hub\n\nfrom option_keyboard import configs\nfrom option_keyboard import environment_wrappers\nfrom option_keyboard import experiment\nfrom option_keyboard import scavenger\nfrom option_keyboard import smart_module\n\nfrom option_keyboard.gpe_gpi_experiments import regressed_agent\n\nFLAGS = flags.FLAGS\nflags.DEFINE_integer(\"num_episodes\", 1000, \"Number of training episodes.\")\nflags.DEFINE_string(\"keyboard_path\", None, \"Path to keyboard model.\")\nflags.DEFINE_string(\"output_path\", None, \"Path to write out returns.\")\n\n\ndef main(argv):\n  del argv\n\n  # Load the keyboard.\n  keyboard = smart_module.SmartModuleImport(hub.Module(FLAGS.keyboard_path))\n\n  # Create the task environment.\n  base_env_config = configs.get_fig4_task_config()\n  base_env = scavenger.Scavenger(**base_env_config)\n  base_env = environment_wrappers.EnvironmentWithLogging(base_env)\n\n  # Wrap the task environment with the keyboard.\n  additional_discount = 0.9\n  env = environment_wrappers.EnvironmentWithKeyboardDirect(\n      env=base_env,\n      keyboard=keyboard,\n      keyboard_ckpt_path=None,\n      additional_discount=additional_discount,\n      call_and_return=False)\n\n  # Create the player agent.\n  agent = regressed_agent.Agent(\n      batch_size=10,\n      optimizer_name=\"AdamOptimizer\",\n      # Disable training.\n      optimizer_kwargs=dict(learning_rate=0.0,),\n      init_w=[1., -1.])\n\n  returns = []\n  for _ in range(FLAGS.num_episodes):\n    returns.append(experiment.run_episode(env, agent))\n  tf.logging.info(\"#\" * 80)\n  tf.logging.info(\n      f\"Avg. return over {FLAGS.num_episodes} episodes is {np.mean(returns)}\")\n  tf.logging.info(\"#\" * 80)\n\n  if FLAGS.output_path:\n    with gfile.GFile(FLAGS.output_path, \"w\") as file:\n      writer = csv.writer(file, delimiter=\" \", quoting=csv.QUOTE_MINIMAL)\n      writer.writerow([\"return\"])\n      for val in returns:\n        writer.writerow([val])\n\n\nif __name__ == \"__main__\":\n  tf.disable_v2_behavior()\n  app.run(main)\n"
  },
  {
    "path": "option_keyboard/gpe_gpi_experiments/run_true_w_fig6.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\nr\"\"\"Run an experiment.\n\nRun GPE/GPI on the \"balancing\" task with a fixed w\n\n\nFor example, first train a keyboard:\n\npython3 train_keyboard.py -- --logtostderr --policy_weights_name=12\n\n\nThen, evaluate the keyboard with a fixed w.\n\npython3 run_true_w_fig6.py -- --logtostderr \\\n  --keyboard_path=/tmp/option_keyboard/keyboard_12/tfhub\n\"\"\"\n\nimport csv\n\nfrom absl import app\nfrom absl import flags\n\nimport numpy as np\nimport tensorflow.compat.v1 as tf\nfrom tensorflow.compat.v1.io import gfile\nimport tensorflow_hub as hub\n\nfrom option_keyboard import configs\nfrom option_keyboard import environment_wrappers\nfrom option_keyboard import experiment\nfrom option_keyboard import scavenger\nfrom option_keyboard import smart_module\n\nfrom option_keyboard.gpe_gpi_experiments import regressed_agent\n\nFLAGS = flags.FLAGS\nflags.DEFINE_integer(\"num_episodes\", 1000, \"Number of training episodes.\")\nflags.DEFINE_string(\"keyboard_path\", None, \"Path to keyboard model.\")\nflags.DEFINE_list(\"test_w\", None, \"The w to test.\")\nflags.DEFINE_string(\"output_path\", None, \"Path to write out returns.\")\n\n\ndef main(argv):\n  del argv\n\n  # Load the keyboard.\n  keyboard = smart_module.SmartModuleImport(hub.Module(FLAGS.keyboard_path))\n\n  # Create the task environment.\n  base_env_config = configs.get_task_config()\n  base_env = scavenger.Scavenger(**base_env_config)\n  base_env = environment_wrappers.EnvironmentWithLogging(base_env)\n\n  # Wrap the task environment with the keyboard.\n  additional_discount = 0.9\n  env = environment_wrappers.EnvironmentWithKeyboardDirect(\n      env=base_env,\n      keyboard=keyboard,\n      keyboard_ckpt_path=None,\n      additional_discount=additional_discount,\n      call_and_return=False)\n\n  # Create the player agent.\n  agent = regressed_agent.Agent(\n      batch_size=10,\n      optimizer_name=\"AdamOptimizer\",\n      # Disable training.\n      optimizer_kwargs=dict(learning_rate=0.0,),\n      init_w=[float(x) for x in FLAGS.test_w])\n\n  returns = []\n  for _ in range(FLAGS.num_episodes):\n    returns.append(experiment.run_episode(env, agent))\n  tf.logging.info(\"#\" * 80)\n  tf.logging.info(\n      f\"Avg. return over {FLAGS.num_episodes} episodes is {np.mean(returns)}\")\n  tf.logging.info(\"#\" * 80)\n\n  if FLAGS.output_path:\n    with gfile.GFile(FLAGS.output_path, \"w\") as file:\n      writer = csv.writer(file, delimiter=\" \", quoting=csv.QUOTE_MINIMAL)\n      writer.writerow([\"return\"])\n      for val in returns:\n        writer.writerow([val])\n\n\nif __name__ == \"__main__\":\n  tf.disable_v2_behavior()\n  app.run(main)\n"
  },
  {
    "path": "option_keyboard/gpe_gpi_experiments/train_keyboard.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Train a keyboard.\"\"\"\n\nfrom absl import app\nfrom absl import flags\n\nimport numpy as np\nimport tensorflow.compat.v1 as tf\n\nfrom option_keyboard import keyboard_utils\n\nFLAGS = flags.FLAGS\nflags.DEFINE_integer(\"num_pretrain_episodes\", 20000,\n                     \"Number of pretraining episodes.\")\nflags.DEFINE_string(\"export_path\", None,\n                    \"Where to save the keyboard checkpoints.\")\nflags.DEFINE_string(\"policy_weights_name\", None,\n                    \"A string repsenting the policy weights.\")\n\n\ndef main(argv):\n  del argv\n\n  all_policy_weights = {\n      \"1\": [1., 0.],\n      \"2\": [0., 1.],\n      \"3\": [1., -1.],\n      \"4\": [-1., 1.],\n      \"5\": [1., 1.],\n  }\n  if FLAGS.policy_weights_name:\n    policy_weights = np.array(\n        [all_policy_weights[v] for v in FLAGS.policy_weights_name])\n    num_episodes = ((FLAGS.num_pretrain_episodes // 2) *\n                    max(2, len(policy_weights)))\n    export_path = FLAGS.export_path + \"_\" + FLAGS.policy_weights_name\n  else:\n    policy_weights = None\n    num_episodes = FLAGS.num_pretrain_episodes\n    export_path = FLAGS.export_path\n\n  keyboard_utils.create_and_train_keyboard(\n      num_episodes=num_episodes,\n      policy_weights=policy_weights,\n      export_path=export_path)\n\n\nif __name__ == \"__main__\":\n  tf.disable_v2_behavior()\n  app.run(main)\n"
  },
  {
    "path": "option_keyboard/gpe_gpi_experiments/train_keyboard_with_phi.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Train a keyboard.\"\"\"\n\nfrom absl import app\nfrom absl import flags\n\nimport numpy as np\nimport tensorflow.compat.v1 as tf\n\nfrom option_keyboard import keyboard_utils\n\nFLAGS = flags.FLAGS\nflags.DEFINE_integer(\"num_pretrain_episodes\", 20000,\n                     \"Number of pretraining episodes.\")\nflags.DEFINE_integer(\"num_phis\", None, \"Size of phi\")\nflags.DEFINE_string(\"phi_model_path\", None,\n                    \"Where to load the phi model checkpoints.\")\nflags.DEFINE_string(\"export_path\", None,\n                    \"Where to save the keyboard checkpoints.\")\n\n\ndef main(argv):\n  del argv\n\n  keyboard_utils.create_and_train_keyboard_with_phi(\n      num_episodes=FLAGS.num_pretrain_episodes,\n      phi_model_path=FLAGS.phi_model_path,\n      policy_weights=np.eye(FLAGS.num_phis, dtype=np.float32),\n      export_path=FLAGS.export_path)\n\n\nif __name__ == \"__main__\":\n  tf.disable_v2_behavior()\n  app.run(main)\n"
  },
  {
    "path": "option_keyboard/gpe_gpi_experiments/train_phi_model.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Train simple phi model.\"\"\"\n\nimport collections\nimport random\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\n\nimport numpy as np\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\nimport tree\n\nfrom option_keyboard import scavenger\nfrom option_keyboard import smart_module\n\nFLAGS = flags.FLAGS\nflags.DEFINE_integer(\"num_phis\", 2, \"Dimensionality of phis.\")\nflags.DEFINE_integer(\"num_train_steps\", 2000, \"Number of training steps.\")\nflags.DEFINE_integer(\"num_replay_steps\", 500, \"Number of replay steps.\")\nflags.DEFINE_integer(\"min_replay_size\", 1000,\n                     \"Minimum replay size before starting training.\")\nflags.DEFINE_integer(\"num_train_repeats\", 10, \"Number of training repeats.\")\nflags.DEFINE_float(\"learning_rate\", 3e-3, \"Learning rate.\")\nflags.DEFINE_bool(\"use_random_tasks\", False, \"Use random tasks.\")\nflags.DEFINE_string(\"normalisation\", \"L2\",\n                    \"Normalisation method for cumulant weights.\")\nflags.DEFINE_string(\"export_path\", None, \"Export path.\")\n\n\nStepOutput = collections.namedtuple(\"StepOutput\",\n                                    [\"obs\", \"actions\", \"rewards\", \"next_obs\"])\n\n\ndef collect_experience(env, num_episodes, verbose=False):\n  \"\"\"Collect experience.\"\"\"\n\n  num_actions = env.action_spec().maximum + 1\n\n  observations = []\n  actions = []\n  rewards = []\n  next_observations = []\n\n  for _ in range(num_episodes):\n    timestep = env.reset()\n    episode_return = 0\n    while not timestep.last():\n      action = np.random.randint(num_actions)\n      observations.append(timestep.observation)\n      actions.append(action)\n\n      timestep = env.step(action)\n      rewards.append(timestep.observation[\"aux_tasks_reward\"])\n      episode_return += timestep.reward\n\n      next_observations.append(timestep.observation)\n\n    if verbose:\n      logging.info(\"Total return for episode: %f\", episode_return)\n\n  observation_spec = tree.map_structure(lambda _: None, observations[0])\n\n  def stack_observations(obs_list):\n    obs_list = [\n        np.stack(obs) for obs in zip(*[tree.flatten(obs) for obs in obs_list])\n    ]\n    obs_dict = tree.unflatten_as(observation_spec, obs_list)\n    obs_dict.pop(\"aux_tasks_reward\")\n    return obs_dict\n\n  observations = stack_observations(observations)\n  actions = np.array(actions, dtype=np.int32)\n  rewards = np.stack(rewards)\n  next_observations = stack_observations(next_observations)\n\n  return StepOutput(observations, actions, rewards, next_observations)\n\n\nclass PhiModel(snt.AbstractModule):\n  \"\"\"A model for learning phi.\"\"\"\n\n  def __init__(self,\n               n_actions,\n               n_phis,\n               network_kwargs,\n               final_activation=\"sigmoid\",\n               name=\"PhiModel\"):\n    super(PhiModel, self).__init__(name=name)\n    self._n_actions = n_actions\n    self._n_phis = n_phis\n    self._network_kwargs = network_kwargs\n    self._final_activation = final_activation\n\n  def _build(self, observation, actions):\n    obs = observation[\"arena\"]\n\n    n_outputs = self._n_actions * self._n_phis\n    flat_obs = snt.BatchFlatten()(obs)\n    net = snt.nets.MLP(**self._network_kwargs)(flat_obs)\n    net = snt.Linear(output_size=n_outputs)(net)\n    net = snt.BatchReshape((self._n_actions, self._n_phis))(net)\n\n    indices = tf.stack([tf.range(tf.shape(actions)[0]), actions], axis=1)\n    values = tf.gather_nd(net, indices)\n    if self._final_activation:\n      values = getattr(tf.nn, self._final_activation)(values)\n\n    return values\n\n\ndef create_ph(tensor):\n  return tf.placeholder(shape=(None,) + tensor.shape[1:], dtype=tensor.dtype)\n\n\ndef main(argv):\n  del argv\n\n  if FLAGS.use_random_tasks:\n    tasks = np.random.normal(size=(8, 2))\n  else:\n    tasks = [\n        [1.0, 0.0],\n        [0.0, 1.0],\n        [1.0, 1.0],\n        [-1.0, 1.0],\n    ]\n\n  if FLAGS.normalisation == \"L1\":\n    tasks /= np.sum(np.abs(tasks), axis=-1, keepdims=True)\n  elif FLAGS.normalisation == \"L2\":\n    tasks /= np.linalg.norm(tasks, axis=-1, keepdims=True)\n  else:\n    raise ValueError(\"Unknown normlisation_method {}\".format(\n        FLAGS.normalisation))\n\n  logging.info(\"Tasks: %s\", tasks)\n\n  env_config = dict(\n      arena_size=11,\n      num_channels=2,\n      max_num_steps=100,\n      num_init_objects=10,\n      object_priors=[1.0, 1.0],\n      egocentric=True,\n      default_w=None,\n      aux_tasks_w=tasks)\n  env = scavenger.Scavenger(**env_config)\n  num_actions = env.action_spec().maximum + 1\n\n  model_config = dict(\n      n_actions=num_actions,\n      n_phis=FLAGS.num_phis,\n      network_kwargs=dict(\n          output_sizes=(64, 128),\n          activate_final=True,\n      ),\n  )\n  model = smart_module.SmartModuleExport(lambda: PhiModel(**model_config))\n\n  dummy_steps = collect_experience(env, num_episodes=10, verbose=True)\n  num_rewards = dummy_steps.rewards.shape[-1]\n\n  # Placeholders\n  steps_ph = tree.map_structure(create_ph, dummy_steps)\n\n  phis = model(steps_ph.obs, steps_ph.actions)\n  phis_to_rewards = snt.Linear(\n      num_rewards, initializers=dict(w=tf.zeros), use_bias=False)\n  preds = phis_to_rewards(phis)\n  loss_per_batch = tf.square(preds - steps_ph.rewards)\n  loss_op = tf.reduce_mean(loss_per_batch)\n\n  replay = []\n\n  # Optimizer and train op.\n  with tf.variable_scope(\"optimizer\"):\n    optimizer = tf.train.AdamOptimizer(learning_rate=FLAGS.learning_rate)\n    train_op = optimizer.minimize(loss_op)\n    # Add normalisation of weights in phis_to_rewards\n    if FLAGS.normalisation == \"L1\":\n      w_norm = tf.reduce_sum(tf.abs(phis_to_rewards.w), axis=0, keepdims=True)\n    elif FLAGS.normalisation == \"L2\":\n      w_norm = tf.norm(phis_to_rewards.w, axis=0, keepdims=True)\n    else:\n      raise ValueError(\"Unknown normlisation_method {}\".format(\n          FLAGS.normalisation))\n\n    normalise_w = tf.assign(phis_to_rewards.w,\n                            phis_to_rewards.w / tf.maximum(w_norm, 1e-6))\n\n  def filter_steps(steps):\n    mask = np.sum(np.abs(steps.rewards), axis=-1) > 0.1\n    nonzero_inds = np.where(mask)[0]\n    zero_inds = np.where(np.logical_not(mask))[0]\n    zero_inds = np.random.choice(\n        zero_inds, size=len(nonzero_inds), replace=False)\n    selected_inds = np.concatenate([nonzero_inds, zero_inds])\n    selected_steps = tree.map_structure(lambda x: x[selected_inds], steps)\n    return selected_steps, selected_inds\n\n  with tf.Session() as sess:\n    sess.run(tf.global_variables_initializer())\n\n    step = 0\n    while step < FLAGS.num_train_steps:\n      step += 1\n      steps_output = collect_experience(env, num_episodes=10)\n      selected_step_outputs, selected_inds = filter_steps(steps_output)\n\n      if len(replay) > FLAGS.min_replay_size:\n        # Do training.\n        for _ in range(FLAGS.num_train_repeats):\n          train_samples = random.choices(replay, k=128)\n          train_samples = tree.map_structure(\n              lambda *x: np.stack(x, axis=0), *train_samples)\n          train_samples = tree.unflatten_as(steps_ph, train_samples)\n          feed_dict = dict(\n              zip(tree.flatten(steps_ph), tree.flatten(train_samples)))\n          _, train_loss = sess.run([train_op, loss_op], feed_dict=feed_dict)\n          sess.run(normalise_w)\n\n        # Do evaluation.\n        if step % 50 == 0:\n          feed_dict = dict(\n              zip(tree.flatten(steps_ph), tree.flatten(selected_step_outputs)))\n          eval_loss = sess.run(loss_op, feed_dict=feed_dict)\n          logging.info(\"Step %d,   train loss %f,   eval loss %f,   replay %s\",\n                       step, train_loss, eval_loss, len(replay))\n          print(sess.run(phis_to_rewards.get_variables())[0].T)\n\n          values = dict(step=step, train_loss=train_loss, eval_loss=eval_loss)\n          logging.info(values)\n\n      # Add to replay.\n      if step <= FLAGS.num_replay_steps:\n        def select_fn(ind):\n          return lambda x: x[ind]\n        for idx in range(len(selected_inds)):\n          replay.append(\n              tree.flatten(\n                  tree.map_structure(select_fn(idx), selected_step_outputs)))\n\n    # Export trained model.\n    if FLAGS.export_path:\n      model.export(FLAGS.export_path, sess, overwrite=True)\n\n\nif __name__ == \"__main__\":\n  tf.disable_v2_behavior()\n  app.run(main)\n"
  },
  {
    "path": "option_keyboard/keyboard_agent.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Keyboard agent.\"\"\"\n\nimport os\n\nimport numpy as np\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\n\nfrom option_keyboard import smart_module\n\n\nclass Agent():\n  \"\"\"An Option Keyboard Agent.\"\"\"\n\n  def __init__(\n      self,\n      obs_spec,\n      action_spec,\n      policy_weights,\n      network_kwargs,\n      epsilon,\n      additional_discount,\n      batch_size,\n      optimizer_name,\n      optimizer_kwargs,\n  ):\n    \"\"\"A simple DQN agent.\n\n    Args:\n      obs_spec: The observation spec.\n      action_spec: The action spec.\n      policy_weights: A list of vectors each representing the cumulant weights\n        for that particular option/policy.\n      network_kwargs: Keyword arguments for snt.nets.MLP\n      epsilon: Exploration probability.\n      additional_discount: Discount on returns used by the agent.\n      batch_size: Size of update batch.\n      optimizer_name: Name of an optimizer from tf.train\n      optimizer_kwargs: Keyword arguments for the optimizer.\n    \"\"\"\n\n    tf.logging.info(policy_weights)\n    self._policy_weights = tf.convert_to_tensor(\n        policy_weights, dtype=tf.float32)\n    self._current_policy = None\n\n    self._epsilon = epsilon\n    self._additional_discount = additional_discount\n    self._batch_size = batch_size\n\n    self._n_actions = action_spec.num_values\n    self._n_policies, self._n_cumulants = policy_weights.shape\n\n    def create_network():\n      return OptionValueNet(\n          self._n_policies,\n          self._n_cumulants,\n          self._n_actions,\n          network_kwargs=network_kwargs,\n      )\n\n    self._network = smart_module.SmartModuleExport(create_network)\n    self._replay = []\n\n    obs_spec = self._extract_observation(obs_spec)\n\n    def option_values(values, policy):\n      return tf.tensordot(\n          values[:, policy, ...], self._policy_weights[policy], axes=[1, 0])\n\n    # Placeholders for policy.\n    o = tf.placeholder(shape=obs_spec.shape, dtype=obs_spec.dtype)\n    p = tf.placeholder(shape=(), dtype=tf.int32)\n    q = self._network(tf.expand_dims(o, axis=0))\n    qo = option_values(q, p)\n\n    # Placeholders for update.\n    o_tm1 = tf.placeholder(shape=(None,) + obs_spec.shape, dtype=obs_spec.dtype)\n    a_tm1 = tf.placeholder(shape=(None,), dtype=tf.int32)\n    c_t = tf.placeholder(shape=(None, self._n_cumulants), dtype=tf.float32)\n    d_t = tf.placeholder(shape=(None,), dtype=tf.float32)\n    o_t = tf.placeholder(shape=(None,) + obs_spec.shape, dtype=obs_spec.dtype)\n\n    # Compute values over all options.\n    q_tm1 = self._network(o_tm1)\n    q_t = self._network(o_t)\n    qo_t = option_values(q_t, p)\n\n    a_t = tf.cast(tf.argmax(qo_t, axis=-1), tf.int32)\n    qa_tm1 = _batched_index(q_tm1[:, p, ...], a_tm1)\n    qa_t = _batched_index(q_t[:, p, ...], a_t)\n\n    # TD error\n    g = additional_discount * tf.expand_dims(d_t, axis=-1)\n    td_error = tf.stop_gradient(c_t + g * qa_t) - qa_tm1\n    loss = tf.reduce_sum(tf.square(td_error) / 2)\n\n    # Dummy calls to keyboard for SmartModule\n    _ = self._network.gpi(o_tm1[0], c_t[0])\n    _ = self._network.num_cumulants\n    _ = self._network.num_policies\n    _ = self._network.num_actions\n\n    with tf.variable_scope(\"optimizer\"):\n      self._optimizer = getattr(tf.train, optimizer_name)(**optimizer_kwargs)\n      train_op = self._optimizer.minimize(loss)\n\n    # Make session and callables.\n    session = tf.Session()\n    self._session = session\n    self._update_fn = session.make_callable(\n        train_op, [o_tm1, a_tm1, c_t, d_t, o_t, p])\n    self._value_fn = session.make_callable(qo, [o, p])\n    session.run(tf.global_variables_initializer())\n\n    self._saver = tf.train.Saver(var_list=self._network.variables)\n\n  @property\n  def keyboard(self):\n    return self._network\n\n  def _extract_observation(self, obs):\n    return obs[\"arena\"]\n\n  def step(self, timestep, is_training=False):\n    \"\"\"Select actions according to epsilon-greedy policy.\"\"\"\n    if timestep.first():\n      self._current_policy = np.random.randint(self._n_policies)\n\n    if is_training and np.random.rand() < self._epsilon:\n      return np.random.randint(self._n_actions)\n\n    q_values = self._value_fn(\n        self._extract_observation(timestep.observation), self._current_policy)\n    return int(np.argmax(q_values))\n\n  def update(self, step_tm1, action, step_t):\n    \"\"\"Takes in a transition from the environment.\"\"\"\n\n    transition = [\n        self._extract_observation(step_tm1.observation),\n        action,\n        step_t.observation[\"cumulants\"],\n        step_t.discount,\n        self._extract_observation(step_t.observation),\n    ]\n    self._replay.append(transition)\n\n    if len(self._replay) == self._batch_size:\n      batch = list(zip(*self._replay)) + [self._current_policy]\n      self._update_fn(*batch)\n      self._replay = []  # Just a queue.\n\n  def export(self, path):\n    tf.logging.info(\"Exporting keyboard to %s\", path)\n    self._network.export(\n        os.path.join(path, \"tfhub\"), self._session, overwrite=True)\n    self._saver.save(self._session, os.path.join(path, \"checkpoints\"))\n\n\nclass OptionValueNet(snt.AbstractModule):\n  \"\"\"Option Value net.\"\"\"\n\n  def __init__(self,\n               n_policies,\n               n_cumulants,\n               n_actions,\n               network_kwargs,\n               name=\"option_keyboard\"):\n    \"\"\"Construct an Option Value Net sonnet module.\n\n    Args:\n      n_policies: Number of policies.\n      n_cumulants: Number of cumulants.\n      n_actions: Number of actions.\n      network_kwargs: Network arguments.\n      name: Name\n    \"\"\"\n    super(OptionValueNet, self).__init__(name=name)\n    self._n_policies = n_policies\n    self._n_cumulants = n_cumulants\n    self._n_actions = n_actions\n    self._network_kwargs = network_kwargs\n\n  def _build(self, observation):\n    values = []\n\n    flat_obs = snt.BatchFlatten()(observation)\n    for _ in range(self._n_cumulants):\n      net = snt.nets.MLP(**self._network_kwargs)(flat_obs)\n      net = snt.Linear(output_size=self._n_policies * self._n_actions)(net)\n      net = snt.BatchReshape([self._n_policies, self._n_actions])(net)\n      values.append(net)\n    values = tf.stack(values, axis=2)\n    return values\n\n  def gpi(self, observation, cumulant_weights):\n    q_values = self.__call__(tf.expand_dims(observation, axis=0))[0]\n    q_w = tf.tensordot(q_values, cumulant_weights, axes=[1, 0])  # [P,a]\n    q_w_actions = tf.reduce_max(q_w, axis=0)\n\n    action = tf.cast(tf.argmax(q_w_actions), tf.int32)\n\n    return action\n\n  @property\n  def num_cumulants(self):\n    return self._n_cumulants\n\n  @property\n  def num_policies(self):\n    return self._n_policies\n\n  @property\n  def num_actions(self):\n    return self._n_actions\n\n\ndef _batched_index(values, indices):\n  one_hot_indices = tf.one_hot(indices, values.shape[-1], dtype=values.dtype)\n  one_hot_indices = tf.expand_dims(one_hot_indices, axis=1)\n  return tf.reduce_sum(values * one_hot_indices, axis=-1)\n"
  },
  {
    "path": "option_keyboard/keyboard_utils.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Keyboard utils.\"\"\"\n\nimport numpy as np\n\nfrom option_keyboard import configs\nfrom option_keyboard import environment_wrappers\nfrom option_keyboard import experiment\nfrom option_keyboard import keyboard_agent\nfrom option_keyboard import scavenger\n\n\ndef create_and_train_keyboard(num_episodes,\n                              policy_weights=None,\n                              export_path=None):\n  \"\"\"Train an option keyboard.\"\"\"\n  if policy_weights is None:\n    policy_weights = np.eye(2, dtype=np.float32)\n\n  env_config = configs.get_pretrain_config()\n  env = scavenger.Scavenger(**env_config)\n  env = environment_wrappers.EnvironmentWithLogging(env)\n\n  agent = keyboard_agent.Agent(\n      obs_spec=env.observation_spec(),\n      action_spec=env.action_spec(),\n      policy_weights=policy_weights,\n      network_kwargs=dict(\n          output_sizes=(64, 128),\n          activate_final=True,\n      ),\n      epsilon=0.1,\n      additional_discount=0.9,\n      batch_size=10,\n      optimizer_name=\"AdamOptimizer\",\n      optimizer_kwargs=dict(learning_rate=3e-4,))\n\n  if num_episodes:\n    experiment.run(env, agent, num_episodes=num_episodes)\n    agent.export(export_path)\n\n  return agent\n\n\ndef create_and_train_keyboard_with_phi(num_episodes,\n                                       phi_model_path,\n                                       policy_weights,\n                                       export_path=None):\n  \"\"\"Train an option keyboard.\"\"\"\n  env_config = configs.get_pretrain_config()\n  env = scavenger.Scavenger(**env_config)\n  env = environment_wrappers.EnvironmentWithLogging(env)\n  env = environment_wrappers.EnvironmentWithLearnedPhi(env, phi_model_path)\n\n  agent = keyboard_agent.Agent(\n      obs_spec=env.observation_spec(),\n      action_spec=env.action_spec(),\n      policy_weights=policy_weights,\n      network_kwargs=dict(\n          output_sizes=(64, 128),\n          activate_final=True,\n      ),\n      epsilon=0.1,\n      additional_discount=0.9,\n      batch_size=10,\n      optimizer_name=\"AdamOptimizer\",\n      optimizer_kwargs=dict(learning_rate=3e-4,))\n\n  if num_episodes:\n    experiment.run(env, agent, num_episodes=num_episodes)\n    agent.export(export_path)\n\n  return agent\n"
  },
  {
    "path": "option_keyboard/requirements.txt",
    "content": "absl-py\ndm-env==1.2\ndm-sonnet==1.34\ndm-tree\nnumpy==1.16.4\ntensorflow==1.13.2\ntensorflow_hub==0.7.0\ntensorflow_probability==0.6.0\nwrapt\n"
  },
  {
    "path": "option_keyboard/run.sh",
    "content": "#!/bin/sh\n# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\npython3 -m venv /tmp/ok_venv\nsource /tmp/ok_venv/bin/activate\npip install -U pip\npip install -r option_keyboard/requirements.txt\n\npython3 -m option_keyboard.run_dqn_test\npython3 -m option_keyboard.run_ok_test\n"
  },
  {
    "path": "option_keyboard/run_dqn.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Run an experiment.\"\"\"\n\nfrom absl import app\nfrom absl import flags\n\nimport tensorflow.compat.v1 as tf\n\nfrom option_keyboard import configs\nfrom option_keyboard import dqn_agent\nfrom option_keyboard import environment_wrappers\nfrom option_keyboard import experiment\nfrom option_keyboard import scavenger\n\nFLAGS = flags.FLAGS\nflags.DEFINE_integer(\"num_episodes\", 10000, \"Number of training episodes.\")\nflags.DEFINE_integer(\"report_every\", 200,\n                     \"Frequency at which metrics are reported.\")\nflags.DEFINE_string(\"output_path\", None, \"Path to write out training curves.\")\n\n\ndef main(argv):\n  del argv\n\n  # Create the task environment.\n  env_config = configs.get_task_config()\n  env = scavenger.Scavenger(**env_config)\n  env = environment_wrappers.EnvironmentWithLogging(env)\n\n  # Create the flat agent.\n  agent = dqn_agent.Agent(\n      obs_spec=env.observation_spec(),\n      action_spec=env.action_spec(),\n      network_kwargs=dict(\n          output_sizes=(64, 128),\n          activate_final=True,\n      ),\n      epsilon=0.1,\n      additional_discount=0.9,\n      batch_size=10,\n      optimizer_name=\"AdamOptimizer\",\n      optimizer_kwargs=dict(learning_rate=3e-4,))\n\n  _, ema_returns = experiment.run(\n      env,\n      agent,\n      num_episodes=FLAGS.num_episodes,\n      report_every=FLAGS.report_every)\n  if FLAGS.output_path:\n    experiment.write_returns_to_file(FLAGS.output_path, ema_returns)\n\n\nif __name__ == \"__main__\":\n  tf.disable_v2_behavior()\n  app.run(main)\n"
  },
  {
    "path": "option_keyboard/run_dqn_test.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Tests for running the simple DQN agent.\"\"\"\n\nfrom absl import flags\nfrom absl.testing import absltest\n\nimport tensorflow.compat.v1 as tf\n\nfrom option_keyboard import run_dqn\n\nFLAGS = flags.FLAGS\n\n\nclass RunDQNTest(absltest.TestCase):\n\n  def test_run(self):\n    FLAGS.num_episodes = 200\n    run_dqn.main(None)\n\n\nif __name__ == '__main__':\n  tf.disable_v2_behavior()\n  absltest.main()\n"
  },
  {
    "path": "option_keyboard/run_ok.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Run an experiment.\"\"\"\n\nimport os\n\nfrom absl import app\nfrom absl import flags\n\nimport tensorflow.compat.v1 as tf\nimport tensorflow_hub as hub\n\nfrom option_keyboard import configs\nfrom option_keyboard import dqn_agent\nfrom option_keyboard import environment_wrappers\nfrom option_keyboard import experiment\nfrom option_keyboard import keyboard_utils\nfrom option_keyboard import scavenger\nfrom option_keyboard import smart_module\n\nFLAGS = flags.FLAGS\nflags.DEFINE_integer(\"num_episodes\", 10000, \"Number of training episodes.\")\nflags.DEFINE_integer(\"num_pretrain_episodes\", 20000,\n                     \"Number of pretraining episodes.\")\nflags.DEFINE_integer(\"report_every\", 200,\n                     \"Frequency at which metrics are reported.\")\nflags.DEFINE_string(\"keyboard_path\", None, \"Path to pretrained keyboard model.\")\nflags.DEFINE_string(\"output_path\", None, \"Path to write out training curves.\")\n\n\ndef main(argv):\n  del argv\n\n  # Pretrain the keyboard and save a checkpoint.\n  if FLAGS.keyboard_path:\n    keyboard_path = FLAGS.keyboard_path\n  else:\n    with tf.Graph().as_default():\n      export_path = \"/tmp/option_keyboard/keyboard\"\n      _ = keyboard_utils.create_and_train_keyboard(\n          num_episodes=FLAGS.num_pretrain_episodes, export_path=export_path)\n      keyboard_path = os.path.join(export_path, \"tfhub\")\n\n  # Load the keyboard.\n  keyboard = smart_module.SmartModuleImport(hub.Module(keyboard_path))\n\n  # Create the task environment.\n  base_env_config = configs.get_task_config()\n  base_env = scavenger.Scavenger(**base_env_config)\n  base_env = environment_wrappers.EnvironmentWithLogging(base_env)\n\n  # Wrap the task environment with the keyboard.\n  additional_discount = 0.9\n  env = environment_wrappers.EnvironmentWithKeyboard(\n      env=base_env,\n      keyboard=keyboard,\n      keyboard_ckpt_path=None,\n      n_actions_per_dim=3,\n      additional_discount=additional_discount,\n      call_and_return=False)\n\n  # Create the player agent.\n  agent = dqn_agent.Agent(\n      obs_spec=env.observation_spec(),\n      action_spec=env.action_spec(),\n      network_kwargs=dict(\n          output_sizes=(64, 128),\n          activate_final=True,\n      ),\n      epsilon=0.1,\n      additional_discount=additional_discount,\n      batch_size=10,\n      optimizer_name=\"AdamOptimizer\",\n      optimizer_kwargs=dict(learning_rate=3e-4,))\n\n  _, ema_returns = experiment.run(\n      env,\n      agent,\n      num_episodes=FLAGS.num_episodes,\n      report_every=FLAGS.report_every)\n  if FLAGS.output_path:\n    experiment.write_returns_to_file(FLAGS.output_path, ema_returns)\n\n\nif __name__ == \"__main__\":\n  tf.disable_v2_behavior()\n  app.run(main)\n"
  },
  {
    "path": "option_keyboard/run_ok_test.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Tests for training a keyboard and then running a DQN agent on top of it.\"\"\"\n\nfrom absl import flags\nfrom absl.testing import absltest\n\nimport tensorflow.compat.v1 as tf\n\nfrom option_keyboard import run_ok\n\nFLAGS = flags.FLAGS\n\n\nclass RunDQNTest(absltest.TestCase):\n\n  def test_run(self):\n    FLAGS.num_episodes = 200\n    FLAGS.num_pretrain_episodes = 200\n    run_ok.main(None)\n\n\nif __name__ == '__main__':\n  tf.disable_v2_behavior()\n  absltest.main()\n"
  },
  {
    "path": "option_keyboard/scavenger.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Simple Scavenger environment.\"\"\"\n\nimport copy\nimport enum\nimport sys\n\nimport dm_env\n\nimport numpy as np\n\nfrom option_keyboard import auto_reset_environment\n\nthis_module = sys.modules[__name__]\n\n\nclass Action(enum.IntEnum):\n  \"\"\"Actions available to the player.\"\"\"\n  UP = 0\n  DOWN = 1\n  LEFT = 2\n  RIGHT = 3\n\n\ndef _one_hot(indices, depth):\n  return np.eye(depth)[indices]\n\n\ndef _random_pos(arena_size):\n  return tuple(np.random.randint(0, arena_size, size=[2]).tolist())\n\n\nclass Scavenger(auto_reset_environment.Base):\n  \"\"\"Simple Scavenger.\"\"\"\n\n  def __init__(self,\n               arena_size,\n               num_channels,\n               max_num_steps,\n               default_w=None,\n               num_init_objects=15,\n               object_priors=None,\n               egocentric=True,\n               rewarder=None,\n               aux_tasks_w=None):\n    self._arena_size = arena_size\n    self._num_channels = num_channels\n    self._max_num_steps = max_num_steps\n    self._num_init_objects = num_init_objects\n    self._egocentric = egocentric\n    self._rewarder = (\n        getattr(this_module, rewarder)() if rewarder is not None else None)\n    self._aux_tasks_w = aux_tasks_w\n\n    if object_priors is None:\n      self._object_priors = np.ones(num_channels) / num_channels\n    else:\n      assert len(object_priors) == num_channels\n      self._object_priors = np.array(object_priors) / np.sum(object_priors)\n\n    if default_w is None:\n      self._default_w = np.ones(shape=(num_channels,))\n    else:\n      self._default_w = default_w\n\n    self._num_channels_all = self._num_channels + 2\n    self._step_in_episode = None\n\n  @property\n  def state(self):\n    return copy.deepcopy([\n        self._step_in_episode,\n        self._walls,\n        self._objects,\n        self._player_pos,\n        self._prev_collected,\n    ])\n\n  def set_state(self, state):\n    state_ = copy.deepcopy(state)\n    self._step_in_episode = state_[0]\n    self._walls = state_[1]\n    self._objects = state_[2]\n    self._player_pos = state_[3]\n    self._prev_collected = state_[4]\n\n  @property\n  def player_pos(self):\n    return self._player_pos\n\n  def _reset(self):\n    self._step_in_episode = 0\n\n    # Walls.\n    self._walls = []\n    for col in range(self._arena_size):\n      new_pos = (0, col)\n      if new_pos not in self._walls:\n        self._walls.append(new_pos)\n    for row in range(self._arena_size):\n      new_pos = (row, 0)\n      if new_pos not in self._walls:\n        self._walls.append(new_pos)\n\n    # Objects.\n    self._objects = dict()\n    for _ in range(self._num_init_objects):\n      while True:\n        new_pos = _random_pos(self._arena_size)\n        if new_pos not in self._objects and new_pos not in self._walls:\n          self._objects[new_pos] = np.random.multinomial(1, self._object_priors)\n          break\n\n    # Player\n    self._player_pos = _random_pos(self._arena_size)\n    while self._player_pos in self._objects or self._player_pos in self._walls:\n      self._player_pos = _random_pos(self._arena_size)\n\n    self._prev_collected = np.zeros(shape=(self._num_channels,))\n\n    obs = self.observation()\n\n    return dm_env.restart(obs)\n\n  def _step(self, action):\n    self._step_in_episode += 1\n\n    if action == Action.UP:\n      new_player_pos = (self._player_pos[0], self._player_pos[1] + 1)\n    elif action == Action.DOWN:\n      new_player_pos = (self._player_pos[0], self._player_pos[1] - 1)\n    elif action == Action.LEFT:\n      new_player_pos = (self._player_pos[0] - 1, self._player_pos[1])\n    elif action == Action.RIGHT:\n      new_player_pos = (self._player_pos[0] + 1, self._player_pos[1])\n    else:\n      raise ValueError(\"Invalid action `{}`\".format(action))\n\n    # Toroidal.\n    new_player_pos = (\n        (new_player_pos[0] + self._arena_size) % self._arena_size,\n        (new_player_pos[1] + self._arena_size) % self._arena_size,\n    )\n\n    if new_player_pos not in self._walls:\n      self._player_pos = new_player_pos\n\n    # Compute rewards.\n    consumed = self._objects.pop(self._player_pos,\n                                 np.zeros(shape=(self._num_channels,)))\n    if self._rewarder is None:\n      reward = np.dot(consumed, np.array(self._default_w))\n    else:\n      reward = self._rewarder.get_reward(self.state, consumed)\n    self._prev_collected = np.copy(consumed)\n\n    assert self._player_pos not in self._objects\n    assert self._player_pos not in self._walls\n\n    # Render everything.\n    obs = self.observation()\n\n    if self._step_in_episode < self._max_num_steps:\n      return dm_env.transition(reward=reward, observation=obs)\n    else:\n      # termination with discount=1.0\n      return dm_env.truncation(reward=reward, observation=obs)\n\n  def observation(self, force_non_egocentric=False):\n    arena_shape = [self._arena_size] * 2 + [self._num_channels_all]\n    arena = np.zeros(shape=arena_shape, dtype=np.float32)\n\n    def offset_position(pos_):\n      use_egocentric = self._egocentric and not force_non_egocentric\n      offset = self._player_pos if use_egocentric else (0, 0)\n      x = (pos_[0] - offset[0] + self._arena_size) % self._arena_size\n      y = (pos_[1] - offset[1] + self._arena_size) % self._arena_size\n      return (x, y)\n\n    player_pos = offset_position(self._player_pos)\n    arena[player_pos] = _one_hot(self._num_channels, self._num_channels_all)\n\n    for pos, obj in self._objects.items():\n      x, y = offset_position(pos)\n      arena[x, y, :self._num_channels] = obj\n\n    for pos in self._walls:\n      x, y = offset_position(pos)\n      arena[x, y] = _one_hot(self._num_channels + 1, self._num_channels_all)\n\n    collected_resources = np.copy(self._prev_collected).astype(np.float32)\n\n    obs = dict(\n        arena=arena,\n        cumulants=collected_resources,\n    )\n    if self._aux_tasks_w is not None:\n      obs[\"aux_tasks_reward\"] = np.dot(\n          np.array(self._aux_tasks_w), self._prev_collected).astype(np.float32)\n\n    return obs\n\n  def observation_spec(self):\n    arena = dm_env.specs.BoundedArray(\n        shape=(self._arena_size, self._arena_size, self._num_channels_all),\n        dtype=np.float32,\n        minimum=0.,\n        maximum=1.,\n        name=\"arena\")\n    collected_resources = dm_env.specs.BoundedArray(\n        shape=(self._num_channels,),\n        dtype=np.float32,\n        minimum=-1e9,\n        maximum=1e9,\n        name=\"collected_resources\")\n\n    obs_spec = dict(\n        arena=arena,\n        cumulants=collected_resources,\n    )\n    if self._aux_tasks_w is not None:\n      obs_spec[\"aux_tasks_reward\"] = dm_env.specs.BoundedArray(\n          shape=(len(self._aux_tasks_w),),\n          dtype=np.float32,\n          minimum=-1e9,\n          maximum=1e9,\n          name=\"aux_tasks_reward\")\n\n    return obs_spec\n\n  def action_spec(self):\n    return dm_env.specs.DiscreteArray(num_values=len(Action), name=\"action\")\n\n\nclass SequentialCollectionRewarder(object):\n  \"\"\"SequentialCollectionRewarder.\"\"\"\n\n  def get_reward(self, state, consumed):\n    \"\"\"Get reward.\"\"\"\n\n    object_counts = sum(list(state[2].values()) + [np.zeros(len(consumed))])\n\n    reward = 0.0\n    if np.sum(consumed) > 0:\n      for i in range(len(consumed)):\n        if np.all(object_counts[:i] <= object_counts[i]):\n          reward += consumed[i]\n        else:\n          reward -= consumed[i]\n\n    return reward\n\n\nclass BalancedCollectionRewarder(object):\n  \"\"\"BalancedCollectionRewarder.\"\"\"\n\n  def get_reward(self, state, consumed):\n    \"\"\"Get reward.\"\"\"\n\n    object_counts = sum(list(state[2].values()) + [np.zeros(len(consumed))])\n\n    reward = 0.0\n    if np.sum(consumed) > 0:\n      for i in range(len(consumed)):\n        if (object_counts[i] + consumed[i]) >= np.max(object_counts):\n          reward += consumed[i]\n        else:\n          reward -= consumed[i]\n\n    return reward\n"
  },
  {
    "path": "option_keyboard/smart_module.py",
    "content": "# pylint: disable=g-bad-file-header\n# Copyright 2020 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Smart module export/import utilities.\"\"\"\n\nimport inspect\nimport pickle\n\nimport tensorflow.compat.v1 as tf\nfrom tensorflow.compat.v1.io import gfile\nimport tensorflow_hub as hub\nimport tree as nest\nimport wrapt\n\n\n_ALLOWED_TYPES = (bool, float, int, str)\n\n\ndef _getcallargs(signature, *args, **kwargs):\n  bound_args = signature.bind(*args, **kwargs)\n  bound_args.apply_defaults()\n  inputs = bound_args.arguments\n  inputs.pop(\"self\", None)\n  return inputs\n\n\ndef _to_placeholder(arg):\n  if arg is None or isinstance(arg, bool):\n    return arg\n\n  arg = tf.convert_to_tensor(arg)\n  return tf.placeholder(dtype=arg.dtype, shape=arg.shape)\n\n\nclass SmartModuleExport(object):\n  \"\"\"Helper class for exporting TF-Hub modules.\"\"\"\n\n  def __init__(self, object_factory):\n    self._object_factory = object_factory\n    self._wrapped_object = self._object_factory()\n    self._variable_scope = tf.get_variable_scope()\n    self._captured_calls = {}\n    self._captured_attrs = {}\n\n  def _create_captured_method(self, method_name):\n    \"\"\"Creates a wrapped method that captures its inputs.\"\"\"\n    with tf.variable_scope(self._variable_scope):\n      method_ = getattr(self._wrapped_object, method_name)\n\n    @wrapt.decorator\n    def wrapper(method, instance, args, kwargs):\n      \"\"\"Wrapped method to capture inputs.\"\"\"\n      del instance\n\n      specs = inspect.signature(method)\n      inputs = _getcallargs(specs, *args, **kwargs)\n\n      with tf.variable_scope(self._variable_scope):\n        output = method(*args, **kwargs)\n\n      self._captured_calls[method_name] = [inputs, specs]\n\n      return output\n\n    return wrapper(method_)  # pylint: disable=no-value-for-parameter\n\n  def __getattr__(self, name):\n    \"\"\"Helper method for accessing an attributes of the wrapped object.\"\"\"\n    # if \"_wrapped_object\" not in self.__dict__:\n    #   return super(ExportableModule, self).__getattr__(name)\n\n    with tf.variable_scope(self._variable_scope):\n      attr = getattr(self._wrapped_object, name)\n\n    if inspect.ismethod(attr) or inspect.isfunction(attr):\n      return self._create_captured_method(name)\n    else:\n      if all([isinstance(v, _ALLOWED_TYPES) for v in nest.flatten(attr)]):\n        self._captured_attrs[name] = attr\n      return attr\n\n  def __call__(self, *args, **kwargs):\n    return self._create_captured_method(\"__call__\")(*args, **kwargs)\n\n  def export(self, path, session, overwrite=False):\n    \"\"\"Build the TF-Hub spec, module and sync ops.\"\"\"\n\n    method_specs = {}\n\n    def module_fn():\n      \"\"\"A module_fn for use with hub.create_module_spec().\"\"\"\n      # We will use a copy of the original object to build the graph.\n      wrapped_object = self._object_factory()\n\n      for method_name, method_info in self._captured_calls.items():\n        captured_inputs, captured_specs = method_info\n        tensor_inputs = nest.map_structure(_to_placeholder, captured_inputs)\n        method_to_call = getattr(wrapped_object, method_name)\n        tensor_outputs = method_to_call(**tensor_inputs)\n\n        flat_tensor_inputs = nest.flatten(tensor_inputs)\n        flat_tensor_inputs = {\n            str(k): v for k, v in zip(\n                range(len(flat_tensor_inputs)), flat_tensor_inputs)\n        }\n        flat_tensor_outputs = nest.flatten(tensor_outputs)\n        flat_tensor_outputs = {\n            str(k): v for k, v in zip(\n                range(len(flat_tensor_outputs)), flat_tensor_outputs)\n        }\n\n        method_specs[method_name] = dict(\n            specs=captured_specs,\n            inputs=nest.map_structure(lambda _: None, tensor_inputs),\n            outputs=nest.map_structure(lambda _: None, tensor_outputs))\n\n        signature_name = (\"default\"\n                          if method_name == \"__call__\" else method_name)\n        hub.add_signature(signature_name, flat_tensor_inputs,\n                          flat_tensor_outputs)\n\n      hub.attach_message(\n          \"methods\", tf.train.BytesList(value=[pickle.dumps(method_specs)]))\n      hub.attach_message(\n          \"properties\",\n          tf.train.BytesList(value=[pickle.dumps(self._captured_attrs)]))\n\n    # Create the spec that will be later used in export.\n    hub_spec = hub.create_module_spec(module_fn, drop_collections=[\"sonnet\"])\n\n    # Get variables values\n    module_weights = [\n        session.run(v) for v in self._wrapped_object.get_all_variables()\n    ]\n\n    # create the sync ops\n    with tf.Graph().as_default():\n      hub_module = hub.Module(hub_spec, trainable=True, name=\"hub\")\n\n      assign_ops = []\n      assign_phs = []\n      for _, v in sorted(hub_module.variable_map.items()):\n        ph = tf.placeholder(shape=v.shape, dtype=v.dtype)\n        assign_phs.append(ph)\n        assign_ops.append(tf.assign(v, ph))\n\n      with tf.Session() as module_session:\n        module_session.run(tf.local_variables_initializer())\n        module_session.run(tf.global_variables_initializer())\n        module_session.run(\n            assign_ops, feed_dict=dict(zip(assign_phs, module_weights)))\n\n        if overwrite and gfile.exists(path):\n          gfile.rmtree(path)\n        gfile.makedirs(path)\n        hub_module.export(path, module_session)\n\n\nclass SmartModuleImport(object):\n  \"\"\"A class for importing graph building objects from TF-Hub modules.\"\"\"\n\n  def __init__(self, module):\n    self._module = module\n    self._method_specs = pickle.loads(\n        self._module.get_attached_message(\"methods\",\n                                          tf.train.BytesList).value[0])\n    self._properties = pickle.loads(\n        self._module.get_attached_message(\"properties\",\n                                          tf.train.BytesList).value[0])\n\n  def _create_wrapped_method(self, method):\n    \"\"\"Creates a wrapped method that converts nested inputs and outputs.\"\"\"\n\n    def wrapped_method(*args, **kwargs):\n      \"\"\"A wrapped method around a TF-Hub module signature.\"\"\"\n\n      inputs = _getcallargs(self._method_specs[method][\"specs\"], *args,\n                            **kwargs)\n      nest.assert_same_structure(self._method_specs[method][\"inputs\"], inputs)\n      flat_inputs = nest.flatten(inputs)\n      flat_inputs = {\n          str(k): v for k, v in zip(range(len(flat_inputs)), flat_inputs)\n      }\n\n      signature = \"default\" if method == \"__call__\" else method\n      flat_outputs = self._module(\n          flat_inputs, signature=signature, as_dict=True)\n      flat_outputs = [v for _, v in sorted(flat_outputs.items())]\n\n      output_spec = self._method_specs[method][\"outputs\"]\n      if output_spec is None:\n        if len(flat_outputs) != 1:\n          raise ValueError(\n              \"Expected output containing a single tensor, found {}\".format(\n                  flat_outputs))\n        outputs = flat_outputs[0]\n      else:\n        outputs = nest.unflatten_as(output_spec, flat_outputs)\n\n      return outputs\n\n    return wrapped_method\n\n  def __getattr__(self, name):\n    if name in self._method_specs:\n      return self._create_wrapped_method(name)\n\n    if name in self._properties:\n      return self._properties[name]\n\n    return getattr(self._module, name)\n\n  def __call__(self, *args, **kwargs):\n    return self._create_wrapped_method(\"__call__\")(*args, **kwargs)\n"
  },
  {
    "path": "perceiver/README.md",
    "content": "# Perceiver and Perceiver IO\n\nPerceiver [1] is a general architecture that works on many kinds of data,\nincluding images, video, audio, 3D point clouds, language and symbolic inputs,\nmultimodal combinations, etc.\nPerceivers can handle new types of data with only minimal modifications.\nPerceivers process inputs using domain-agnostic Transformer-style attention.\nUnlike Transformers, Perceivers first map inputs to a small latent space where\nprocessing is cheap and doesn't depend on the input size.\nThis makes it possible to build very deep networks\neven when using large inputs like images or videos.\n\nPerceiver IO [2] is a generalization of Perceiver to handle arbitrary *outputs*\nin addition to arbitrary inputs.\nThe original Perceiver only produced a single classification label.\nIn addition to classification labels,\nPerceiver IO can produce (for example) language, optical flow,\nand multimodal videos with audio.\nThis is done using the same building blocks as the original Perceiver.\nThe computational complexity of Perceiver IO is linear in the input and output\nsize and the bulk of the processing occurs in the latent space,\nallowing us to process inputs and outputs that are much larger\nthan can be handled by standard Transformers.\nThis means, for example, Perceiver IO can do BERT-style masked language modeling\ndirectly using *bytes* instead of tokenized inputs.\n\nThis directory contains our implementation of Perceiver IO\n(encompassing the original Perceiver as a special case).\nThe `perceiver.py` file contains our implementation of Perceiver IO,\nand `io_processors.py` contains domain-specific input and output processors\nfor the experiments we ran.\nWe provide example colabs in the `colabs` directory to demonstrate\nhow our models can be used and show the qualitative performance of Perceiver IO\non a diverse collection of tasks.\n\n## Usage\n\nFirst, install dependencies following these instructions:\n\n1. Create a virtual env: `python3 -m venv ~/.venv/perceiver`\n2. Switch to the virtual env: `source ~/.venv/perceiver/bin/activate`\n3. Follow instructions for installing JAX on your platform:\n   https://github.com/google/jax#installation\n4. Install other dependencies: `pip install -f requirements.txt`\n\nAfter installing dependencies, you can open the notebooks in the `colabs` directory\nusing Jupyter or Colab, and you can run our example training script.\nOur colabs and training script assume that you are running from the\n`deepmind_research` directory.\n\n### Colabs\nWe provide the following colabs:\n\n* [colabs/masked_language_modelling.ipynb](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/perceiver/colabs/masked_language_modelling.ipynb):\n  Colab for running a pre-trained\n  Perceiver IO masked-language model (Section 4.1 in [2]).\n* [colabs/optical_flow.ipynb](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/perceiver/colabs/optical_flow.ipynb):\n  Colab for running a pre-trained optical flow\n  Perceiver IO model and visualizing the output flow (Section 4.2 in [2]).\n* [colabs/video_autoencoding.ipynb](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/perceiver/colabs/video_autoencoding.ipynb):\n  Colab for running a pre-trained\n  video autoencoding Perceiver IO model and visualizing video reconstructions\n  (Section 4.3 in [2]).\n* [colabs/imagenet_classification.ipynb](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/perceiver/colabs/imagenet_classification.ipynb):\n  Colab for running three pre-trained\n  ImageNet classification Perceiver IO models (Section 4.5 in [2]).\n\n### Training scripts\nWe also provide an example training script to train a Perceiver IO model for\nImageNet classification.\nThe provided hyperparameters are the settings used to train Perceiver IO\nwith 2D Fourier position encodings, as described in\nsection 4.5 and supplemental section H of the paper [2].\n\nTo run the script locally and train a miniature Perceiver model,\nrun: `perceiver/train/launch_local.sh`.\nThe script would need to be adapted to run on a distributed training setup\nin order to train a full-scale model with the full batch size.\n\n## Attributions and Disclaimers\n\nThe file `perceiver/train/autoaugment.py` originates from the `tensorflow/tpu`\nrepository (https://github.com/tensorflow/tpu/blob/b24729de804fdb751b06467d3dce0637fa652060/models/official/efficientnet/autoaugment.py),\ncopyright (c) The Tensorflow Authors.\n\nSintel data is provided by and available from Sintel.org (https://durian.blender.org/),\ncopyright (c) Blender Foundation/www.sintel.org.\n\nThe sample image in `imagenet_classification.ipynb` is obtained from\nGetty Images under license (https://www.gettyimages.co.uk/eula#RF).\n\nVideo content may include clips provided as part of the THUMOS Challenge datasets,\nwhich may be accessed at http://crcv.ucf.edu/THUMOS14/download.html,\ncopyrights held by the creators.\n\nAll data and parameters included with Perceiver are made available\nunder the terms of the CC BY 4.0 license,\navailable at https://creativecommons.org/licenses/by/4.0/legalcode.\n\nThis is not an officially supported Google product.\n\n## References\n\n[1] Andrew Jaegle, Felix Gimeno, Andrew Brock, Andrew Zisserman, Oriol Vinyals,\nJoão Carreira.\n*Perceiver: General Perception with Iterative Attention*. ICML 2021.\nhttps://arxiv.org/abs/2103.03206\n\n[2] Andrew Jaegle, Sebastian Borgeaud, Jean-Baptiste Alayrac, Carl Doersch,\nCatalin Ionescu, David Ding, Skanda Koppula, Daniel Zoran, Andrew Brock,\nEvan Shelhamer, Olivier Hénaff, Matthew M. Botvinick, Andrew Zisserman,\nOriol Vinyals, João Carreira.\n*Perceiver IO: A General Architecture for Structured Inputs & Outputs*.\narXiv, 2021.\nhttps://arxiv.org/abs/2107.14795\n"
  },
  {
    "path": "perceiver/bytes_tokenizer.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Tokenizer implementation mapping strings to their UTF-8 bytes.\"\"\"\n\nfrom typing import Union\nimport numpy as np\n\n\nclass BytesTokenizer:\n  \"\"\"Tokenizes string to utf-8 bytes.\"\"\"\n\n  def __init__(self):\n    self._num_reserved_tokens = 6  # PAD, BOS, EOS, MASK, CLS, SEP\n\n  def to_string(self, inputs: np.ndarray) -> str:\n    inputs_no_special = (\n        inputs[inputs >= self._num_reserved_tokens] - self._num_reserved_tokens)\n    decoded_bytes = inputs_no_special.astype(np.uint8).tobytes()\n    return decoded_bytes.decode('utf-8', errors='replace')\n\n  def to_int(self, inputs: Union[str, bytes]) -> np.ndarray:\n    if isinstance(inputs, str):\n      inputs = inputs.encode('utf-8')\n    encoded = np.frombuffer(inputs, np.uint8).astype(np.int32)\n    encoded = encoded + self._num_reserved_tokens\n    return encoded.astype(np.int32)\n\n  @property\n  def vocab_size(self) -> int:\n    return 256 + self._num_reserved_tokens\n\n  @property\n  def pad_token(self) -> int:\n    return 0\n\n  @property\n  def bos_token(self) -> int:\n    return 1\n\n  @property\n  def eos_token(self) -> int:\n    return 2\n\n  @property\n  def mask_token(self) -> int:\n    return 3\n\n  @property\n  def cls_token(self) -> int:\n    return 4\n\n  @property\n  def sep_token(self) -> int:\n    return 5\n"
  },
  {
    "path": "perceiver/colabs/imagenet_classification.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"532jUiWVFvuK\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Copyright 2021 DeepMind Technologies Limited\\n\",\n        \"#\\n\",\n        \"# Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"# you may not use this file except in compliance with the License.\\n\",\n        \"# You may obtain a copy of the License at\\n\",\n        \"#\\n\",\n        \"#     https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"#\\n\",\n        \"# Unless required by applicable law or agreed to in writing, software\\n\",\n        \"# distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"# See the License for the specific language governing permissions and\\n\",\n        \"# limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"TJtDrQ8nxlbs\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Install dependencies for Google Colab.\\n\",\n        \"# If you want to run this notebook on your own machine, you can skip this cell\\n\",\n        \"!pip install dm-haiku\\n\",\n        \"!pip install einops\\n\",\n        \"\\n\",\n        \"!mkdir /content/perceiver\\n\",\n        \"!touch /content/perceiver/__init__.py\\n\",\n        \"!wget -O /content/perceiver/io_processors.py https://raw.githubusercontent.com/deepmind/deepmind-research/master/perceiver/io_processors.py\\n\",\n        \"!wget -O /content/perceiver/perceiver.py https://raw.githubusercontent.com/deepmind/deepmind-research/master/perceiver/perceiver.py\\n\",\n        \"!wget -O /content/perceiver/position_encoding.py https://raw.githubusercontent.com/deepmind/deepmind-research/master/perceiver/position_encoding.py\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"VHzUTH5KqNEt\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Imports\\n\",\n        \"\\n\",\n        \"import functools\\n\",\n        \"import itertools\\n\",\n        \"import pickle\\n\",\n        \"\\n\",\n        \"import cv2\\n\",\n        \"import haiku as hk\\n\",\n        \"import imageio\\n\",\n        \"import jax\\n\",\n        \"import jax.numpy as jnp\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"import numpy as np\\n\",\n        \"\\n\",\n        \"from perceiver import perceiver, io_processors\\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"uxeP5yit7hJg\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Model construction\\n\",\n        \"\\n\",\n        \"# One of learned_position_encoding, fourier_position_encoding, or conv_preprocessing'\\n\",\n        \"# learned_position_encoding: Uses a learned position encoding over the image\\n\",\n        \"#     and 1x1 convolution over the pixels\\n\",\n        \"# fourier_position_encoding: Uses a 2D fourier position encoding\\n\",\n        \"#     and the raw pixels\\n\",\n        \"# conv_preprocessing: Uses a 2D fourier position encoding\\n\",\n        \"#     and a 2D conv-net as preprocessing\\n\",\n        \"model_type = 'conv_preprocessing' #@param ['learned_position_encoding', 'fourier_position_encoding', 'conv_preprocessing']\\n\",\n        \"\\n\",\n        \"IMAGE_SIZE = (224, 224)\\n\",\n        \"\\n\",\n        \"learned_pos_configs = dict(\\n\",\n        \"    input_preprocessor=dict(\\n\",\n        \"        position_encoding_type='trainable',\\n\",\n        \"        trainable_position_encoding_kwargs=dict(\\n\",\n        \"            init_scale=0.02,\\n\",\n        \"            num_channels=256,\\n\",\n        \"        ),\\n\",\n        \"        prep_type='conv1x1',\\n\",\n        \"        project_pos_dim=256,\\n\",\n        \"        num_channels=256,\\n\",\n        \"        spatial_downsample=1,\\n\",\n        \"        concat_or_add_pos='concat',\\n\",\n        \"    ),\\n\",\n        \"    encoder=dict(\\n\",\n        \"        cross_attend_widening_factor=1,\\n\",\n        \"        cross_attention_shape_for_attn='kv',\\n\",\n        \"        dropout_prob=0,\\n\",\n        \"        num_blocks=8,\\n\",\n        \"        num_cross_attend_heads=1,\\n\",\n        \"        num_self_attend_heads=8,\\n\",\n        \"        num_self_attends_per_block=6,\\n\",\n        \"        num_z_channels=1024,\\n\",\n        \"        self_attend_widening_factor=1,\\n\",\n        \"        use_query_residual=True,\\n\",\n        \"        z_index_dim=512,\\n\",\n        \"        z_pos_enc_init_scale=0.02\\n\",\n        \"    ),\\n\",\n        \"    decoder=dict(\\n\",\n        \"        num_z_channels=1024,\\n\",\n        \"        position_encoding_type='trainable',\\n\",\n        \"        trainable_position_encoding_kwargs=dict(\\n\",\n        \"            init_scale=0.02,\\n\",\n        \"            num_channels=1024,\\n\",\n        \"        ),\\n\",\n        \"        use_query_residual=False,\\n\",\n        \"    )\\n\",\n        \")\\n\",\n        \"\\n\",\n        \"fourier_pos_configs = dict(\\n\",\n        \"    input_preprocessor=dict(\\n\",\n        \"        position_encoding_type='fourier',\\n\",\n        \"        fourier_position_encoding_kwargs=dict(\\n\",\n        \"            concat_pos=True,\\n\",\n        \"            max_resolution=(224, 224),\\n\",\n        \"            num_bands=64,\\n\",\n        \"            sine_only=False\\n\",\n        \"        ),\\n\",\n        \"        prep_type='pixels',\\n\",\n        \"        spatial_downsample=1,\\n\",\n        \"    ),\\n\",\n        \"    encoder=dict(\\n\",\n        \"        cross_attend_widening_factor=1,\\n\",\n        \"        cross_attention_shape_for_attn='kv',\\n\",\n        \"        dropout_prob=0,\\n\",\n        \"        num_blocks=8,\\n\",\n        \"        num_cross_attend_heads=1,\\n\",\n        \"        num_self_attend_heads=8,\\n\",\n        \"        num_self_attends_per_block=6,\\n\",\n        \"        num_z_channels=1024,\\n\",\n        \"        self_attend_widening_factor=1,\\n\",\n        \"        use_query_residual=True,\\n\",\n        \"        z_index_dim=512,\\n\",\n        \"        z_pos_enc_init_scale=0.02\\n\",\n        \"    ),\\n\",\n        \"    decoder=dict(\\n\",\n        \"        num_z_channels=1024,\\n\",\n        \"        position_encoding_type='trainable',\\n\",\n        \"        trainable_position_encoding_kwargs=dict(\\n\",\n        \"            init_scale=0.02,\\n\",\n        \"            num_channels=1024,\\n\",\n        \"        ),\\n\",\n        \"        use_query_residual=True,\\n\",\n        \"    )\\n\",\n        \")\\n\",\n        \"\\n\",\n        \"conv_maxpool_configs = dict(\\n\",\n        \"    input_preprocessor=dict(\\n\",\n        \"        position_encoding_type='fourier',\\n\",\n        \"        fourier_position_encoding_kwargs=dict(\\n\",\n        \"            concat_pos=True,\\n\",\n        \"            max_resolution=(56, 56),\\n\",\n        \"            num_bands=64,\\n\",\n        \"            sine_only=False\\n\",\n        \"        ),\\n\",\n        \"        prep_type='conv',\\n\",\n        \"    ),\\n\",\n        \"    encoder=dict(\\n\",\n        \"        cross_attend_widening_factor=1,\\n\",\n        \"        cross_attention_shape_for_attn='kv',\\n\",\n        \"        dropout_prob=0,\\n\",\n        \"        num_blocks=8,\\n\",\n        \"        num_cross_attend_heads=1,\\n\",\n        \"        num_self_attend_heads=8,\\n\",\n        \"        num_self_attends_per_block=6,\\n\",\n        \"        num_z_channels=1024,\\n\",\n        \"        self_attend_widening_factor=1,\\n\",\n        \"        use_query_residual=True,\\n\",\n        \"        z_index_dim=512,\\n\",\n        \"        z_pos_enc_init_scale=0.02\\n\",\n        \"    ),\\n\",\n        \"    decoder=dict(\\n\",\n        \"        num_z_channels=1024,\\n\",\n        \"        position_encoding_type='trainable',\\n\",\n        \"        trainable_position_encoding_kwargs=dict(\\n\",\n        \"            init_scale=0.02,\\n\",\n        \"            num_channels=1024,\\n\",\n        \"        ),\\n\",\n        \"        use_query_residual=True,\\n\",\n        \"    )\\n\",\n        \")\\n\",\n        \"\\n\",\n        \"CONFIGS = {\\n\",\n        \"    'learned_position_encoding': learned_pos_configs,\\n\",\n        \"    'fourier_position_encoding': fourier_pos_configs,\\n\",\n        \"    'conv_preprocessing': conv_maxpool_configs,\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"def imagenet_classifier(config, images):\\n\",\n        \"  input_preprocessor = io_processors.ImagePreprocessor(\\n\",\n        \"      **config['input_preprocessor'])\\n\",\n        \"  encoder = perceiver.PerceiverEncoder(**config['encoder'])\\n\",\n        \"  decoder = perceiver.ClassificationDecoder(\\n\",\n        \"      1000,\\n\",\n        \"      **config['decoder'])\\n\",\n        \"  model = perceiver.Perceiver(\\n\",\n        \"      encoder=encoder,\\n\",\n        \"      decoder=decoder,\\n\",\n        \"      input_preprocessor=input_preprocessor)\\n\",\n        \"  logits = model(images, is_training=False)\\n\",\n        \"  return logits\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"imagenet_classifier = hk.transform_with_state(imagenet_classifier)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"EVRWatw4LXFx\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Load parameters from checkpoint\\n\",\n        \"\\n\",\n        \"rng = jax.random.PRNGKey(42)\\n\",\n        \"\\n\",\n        \"CHECKPOINT_URLS = {\\n\",\n        \"    'conv_preprocessing': 'https://storage.googleapis.com/perceiver_io/imagenet_conv_preprocessing.pystate',\\n\",\n        \"    'fourier_position_encoding': 'https://storage.googleapis.com/perceiver_io/imagenet_fourier_position_encoding.pystate',\\n\",\n        \"    'learned_position_encoding': 'https://storage.googleapis.com/perceiver_io/imagenet_learned_position_encoding.pystate',\\n\",\n        \"}\\n\",\n        \"url = CHECKPOINT_URLS[model_type]\\n\",\n        \"!wget -O imagenet_checkpoint.pystate $url\\n\",\n        \"\\n\",\n        \"rng = jax.random.PRNGKey(42)\\n\",\n        \"with open('imagenet_checkpoint.pystate', 'rb') as f:\\n\",\n        \"  ckpt = pickle.loads(f.read())\\n\",\n        \"\\n\",\n        \"params = ckpt['params']\\n\",\n        \"state = ckpt['state']\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"NJ_9qoQvRFPY\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Imagenet labels\\n\",\n        \"\\n\",\n        \"# ImageNet labels were obtained from the ImageNet dataset: https://image-net.org/.\\n\",\n        \"# ImageNet is provided for non-commercial research and educational purposes.\\n\",\n        \"# See https://image-net.org/download for details.\\n\",\n        \"\\n\",\n        \"IMAGENET_LABELS = [\\n\",\n        \"    \\\"tench, Tinca tinca\\\",\\n\",\n        \"    \\\"goldfish, Carassius auratus\\\",\\n\",\n        \"    \\\"great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias\\\",\\n\",\n        \"    \\\"tiger shark, Galeocerdo cuvieri\\\",\\n\",\n        \"    \\\"hammerhead, hammerhead shark\\\",\\n\",\n        \"    \\\"electric ray, crampfish, numbfish, torpedo\\\",\\n\",\n        \"    \\\"stingray\\\",\\n\",\n        \"    \\\"cock\\\",\\n\",\n        \"    \\\"hen\\\",\\n\",\n        \"    \\\"ostrich, Struthio camelus\\\",\\n\",\n        \"    \\\"brambling, Fringilla montifringilla\\\",\\n\",\n        \"    \\\"goldfinch, Carduelis carduelis\\\",\\n\",\n        \"    \\\"house finch, linnet, Carpodacus mexicanus\\\",\\n\",\n        \"    \\\"junco, snowbird\\\",\\n\",\n        \"    \\\"indigo bunting, indigo finch, indigo bird, Passerina cyanea\\\",\\n\",\n        \"    \\\"robin, American robin, Turdus migratorius\\\",\\n\",\n        \"    \\\"bulbul\\\",\\n\",\n        \"    \\\"jay\\\",\\n\",\n        \"    \\\"magpie\\\",\\n\",\n        \"    \\\"chickadee\\\",\\n\",\n        \"    \\\"water ouzel, dipper\\\",\\n\",\n        \"    \\\"kite\\\",\\n\",\n        \"    \\\"bald eagle, American eagle, Haliaeetus leucocephalus\\\",\\n\",\n        \"    \\\"vulture\\\",\\n\",\n        \"    \\\"great grey owl, great gray owl, Strix nebulosa\\\",\\n\",\n        \"    \\\"European fire salamander, Salamandra salamandra\\\",\\n\",\n        \"    \\\"common newt, Triturus vulgaris\\\",\\n\",\n        \"    \\\"eft\\\",\\n\",\n        \"    \\\"spotted salamander, Ambystoma maculatum\\\",\\n\",\n        \"    \\\"axolotl, mud puppy, Ambystoma mexicanum\\\",\\n\",\n        \"    \\\"bullfrog, Rana catesbeiana\\\",\\n\",\n        \"    \\\"tree frog, tree-frog\\\",\\n\",\n        \"    \\\"tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui\\\",\\n\",\n        \"    \\\"loggerhead, loggerhead turtle, Caretta caretta\\\",\\n\",\n        \"    \\\"leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea\\\",\\n\",\n        \"    \\\"mud turtle\\\",\\n\",\n        \"    \\\"terrapin\\\",\\n\",\n        \"    \\\"box turtle, box tortoise\\\",\\n\",\n        \"    \\\"banded gecko\\\",\\n\",\n        \"    \\\"common iguana, iguana, Iguana iguana\\\",\\n\",\n        \"    \\\"American chameleon, anole, Anolis carolinensis\\\",\\n\",\n        \"    \\\"whiptail, whiptail lizard\\\",\\n\",\n        \"    \\\"agama\\\",\\n\",\n        \"    \\\"frilled lizard, Chlamydosaurus kingi\\\",\\n\",\n        \"    \\\"alligator lizard\\\",\\n\",\n        \"    \\\"Gila monster, Heloderma suspectum\\\",\\n\",\n        \"    \\\"green lizard, Lacerta viridis\\\",\\n\",\n        \"    \\\"African chameleon, Chamaeleo chamaeleon\\\",\\n\",\n        \"    \\\"Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis\\\",\\n\",\n        \"    \\\"African crocodile, Nile crocodile, Crocodylus niloticus\\\",\\n\",\n        \"    \\\"American alligator, Alligator mississipiensis\\\",\\n\",\n        \"    \\\"triceratops\\\",\\n\",\n        \"    \\\"thunder snake, worm snake, Carphophis amoenus\\\",\\n\",\n        \"    \\\"ringneck snake, ring-necked snake, ring snake\\\",\\n\",\n        \"    \\\"hognose snake, puff adder, sand viper\\\",\\n\",\n        \"    \\\"green snake, grass snake\\\",\\n\",\n        \"    \\\"king snake, kingsnake\\\",\\n\",\n        \"    \\\"garter snake, grass snake\\\",\\n\",\n        \"    \\\"water snake\\\",\\n\",\n        \"    \\\"vine snake\\\",\\n\",\n        \"    \\\"night snake, Hypsiglena torquata\\\",\\n\",\n        \"    \\\"boa constrictor, Constrictor constrictor\\\",\\n\",\n        \"    \\\"rock python, rock snake, Python sebae\\\",\\n\",\n        \"    \\\"Indian cobra, Naja naja\\\",\\n\",\n        \"    \\\"green mamba\\\",\\n\",\n        \"    \\\"sea snake\\\",\\n\",\n        \"    \\\"horned viper, cerastes, sand viper, horned asp, Cerastes cornutus\\\",\\n\",\n        \"    \\\"diamondback, diamondback rattlesnake, Crotalus adamanteus\\\",\\n\",\n        \"    \\\"sidewinder, horned rattlesnake, Crotalus cerastes\\\",\\n\",\n        \"    \\\"trilobite\\\",\\n\",\n        \"    \\\"harvestman, daddy longlegs, Phalangium opilio\\\",\\n\",\n        \"    \\\"scorpion\\\",\\n\",\n        \"    \\\"black and gold garden spider, Argiope aurantia\\\",\\n\",\n        \"    \\\"barn spider, Araneus cavaticus\\\",\\n\",\n        \"    \\\"garden spider, Aranea diademata\\\",\\n\",\n        \"    \\\"black widow, Latrodectus mactans\\\",\\n\",\n        \"    \\\"tarantula\\\",\\n\",\n        \"    \\\"wolf spider, hunting spider\\\",\\n\",\n        \"    \\\"tick\\\",\\n\",\n        \"    \\\"centipede\\\",\\n\",\n        \"    \\\"black grouse\\\",\\n\",\n        \"    \\\"ptarmigan\\\",\\n\",\n        \"    \\\"ruffed grouse, partridge, Bonasa umbellus\\\",\\n\",\n        \"    \\\"prairie chicken, prairie grouse, prairie fowl\\\",\\n\",\n        \"    \\\"peacock\\\",\\n\",\n        \"    \\\"quail\\\",\\n\",\n        \"    \\\"partridge\\\",\\n\",\n        \"    \\\"African grey, African gray, Psittacus erithacus\\\",\\n\",\n        \"    \\\"macaw\\\",\\n\",\n        \"    \\\"sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita\\\",\\n\",\n        \"    \\\"lorikeet\\\",\\n\",\n        \"    \\\"coucal\\\",\\n\",\n        \"    \\\"bee eater\\\",\\n\",\n        \"    \\\"hornbill\\\",\\n\",\n        \"    \\\"hummingbird\\\",\\n\",\n        \"    \\\"jacamar\\\",\\n\",\n        \"    \\\"toucan\\\",\\n\",\n        \"    \\\"drake\\\",\\n\",\n        \"    \\\"red-breasted merganser, Mergus serrator\\\",\\n\",\n        \"    \\\"goose\\\",\\n\",\n        \"    \\\"black swan, Cygnus atratus\\\",\\n\",\n        \"    \\\"tusker\\\",\\n\",\n        \"    \\\"echidna, spiny anteater, anteater\\\",\\n\",\n        \"    \\\"platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus\\\",\\n\",\n        \"    \\\"wallaby, brush kangaroo\\\",\\n\",\n        \"    \\\"koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus\\\",\\n\",\n        \"    \\\"wombat\\\",\\n\",\n        \"    \\\"jellyfish\\\",\\n\",\n        \"    \\\"sea anemone, anemone\\\",\\n\",\n        \"    \\\"brain coral\\\",\\n\",\n        \"    \\\"flatworm, platyhelminth\\\",\\n\",\n        \"    \\\"nematode, nematode worm, roundworm\\\",\\n\",\n        \"    \\\"conch\\\",\\n\",\n        \"    \\\"snail\\\",\\n\",\n        \"    \\\"slug\\\",\\n\",\n        \"    \\\"sea slug, nudibranch\\\",\\n\",\n        \"    \\\"chiton, coat-of-mail shell, sea cradle, polyplacophore\\\",\\n\",\n        \"    \\\"chambered nautilus, pearly nautilus, nautilus\\\",\\n\",\n        \"    \\\"Dungeness crab, Cancer magister\\\",\\n\",\n        \"    \\\"rock crab, Cancer irroratus\\\",\\n\",\n        \"    \\\"fiddler crab\\\",\\n\",\n        \"    \\\"king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica\\\",\\n\",\n        \"    \\\"American lobster, Northern lobster, Maine lobster, Homarus americanus\\\",\\n\",\n        \"    \\\"spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish\\\",\\n\",\n        \"    \\\"crayfish, crawfish, crawdad, crawdaddy\\\",\\n\",\n        \"    \\\"hermit crab\\\",\\n\",\n        \"    \\\"isopod\\\",\\n\",\n        \"    \\\"white stork, Ciconia ciconia\\\",\\n\",\n        \"    \\\"black stork, Ciconia nigra\\\",\\n\",\n        \"    \\\"spoonbill\\\",\\n\",\n        \"    \\\"flamingo\\\",\\n\",\n        \"    \\\"little blue heron, Egretta caerulea\\\",\\n\",\n        \"    \\\"American egret, great white heron, Egretta albus\\\",\\n\",\n        \"    \\\"bittern\\\",\\n\",\n        \"    \\\"crane\\\",\\n\",\n        \"    \\\"limpkin, Aramus pictus\\\",\\n\",\n        \"    \\\"European gallinule, Porphyrio porphyrio\\\",\\n\",\n        \"    \\\"American coot, marsh hen, mud hen, water hen, Fulica americana\\\",\\n\",\n        \"    \\\"bustard\\\",\\n\",\n        \"    \\\"ruddy turnstone, Arenaria interpres\\\",\\n\",\n        \"    \\\"red-backed sandpiper, dunlin, Erolia alpina\\\",\\n\",\n        \"    \\\"redshank, Tringa totanus\\\",\\n\",\n        \"    \\\"dowitcher\\\",\\n\",\n        \"    \\\"oystercatcher, oyster catcher\\\",\\n\",\n        \"    \\\"pelican\\\",\\n\",\n        \"    \\\"king penguin, Aptenodytes patagonica\\\",\\n\",\n        \"    \\\"albatross, mollymawk\\\",\\n\",\n        \"    \\\"grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus\\\",\\n\",\n        \"    \\\"killer whale, killer, orca, grampus, sea wolf, Orcinus orca\\\",\\n\",\n        \"    \\\"dugong, Dugong dugon\\\",\\n\",\n        \"    \\\"sea lion\\\",\\n\",\n        \"    \\\"Chihuahua\\\",\\n\",\n        \"    \\\"Japanese spaniel\\\",\\n\",\n        \"    \\\"Maltese dog, Maltese terrier, Maltese\\\",\\n\",\n        \"    \\\"Pekinese, Pekingese, Peke\\\",\\n\",\n        \"    \\\"Shih-Tzu\\\",\\n\",\n        \"    \\\"Blenheim spaniel\\\",\\n\",\n        \"    \\\"papillon\\\",\\n\",\n        \"    \\\"toy terrier\\\",\\n\",\n        \"    \\\"Rhodesian ridgeback\\\",\\n\",\n        \"    \\\"Afghan hound, Afghan\\\",\\n\",\n        \"    \\\"basset, basset hound\\\",\\n\",\n        \"    \\\"beagle\\\",\\n\",\n        \"    \\\"bloodhound, sleuthhound\\\",\\n\",\n        \"    \\\"bluetick\\\",\\n\",\n        \"    \\\"black-and-tan coonhound\\\",\\n\",\n        \"    \\\"Walker hound, Walker foxhound\\\",\\n\",\n        \"    \\\"English foxhound\\\",\\n\",\n        \"    \\\"redbone\\\",\\n\",\n        \"    \\\"borzoi, Russian wolfhound\\\",\\n\",\n        \"    \\\"Irish wolfhound\\\",\\n\",\n        \"    \\\"Italian greyhound\\\",\\n\",\n        \"    \\\"whippet\\\",\\n\",\n        \"    \\\"Ibizan hound, Ibizan Podenco\\\",\\n\",\n        \"    \\\"Norwegian elkhound, elkhound\\\",\\n\",\n        \"    \\\"otterhound, otter hound\\\",\\n\",\n        \"    \\\"Saluki, gazelle hound\\\",\\n\",\n        \"    \\\"Scottish deerhound, deerhound\\\",\\n\",\n        \"    \\\"Weimaraner\\\",\\n\",\n        \"    \\\"Staffordshire bullterrier, Staffordshire bull terrier\\\",\\n\",\n        \"    \\\"American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier\\\",\\n\",\n        \"    \\\"Bedlington terrier\\\",\\n\",\n        \"    \\\"Border terrier\\\",\\n\",\n        \"    \\\"Kerry blue terrier\\\",\\n\",\n        \"    \\\"Irish terrier\\\",\\n\",\n        \"    \\\"Norfolk terrier\\\",\\n\",\n        \"    \\\"Norwich terrier\\\",\\n\",\n        \"    \\\"Yorkshire terrier\\\",\\n\",\n        \"    \\\"wire-haired fox terrier\\\",\\n\",\n        \"    \\\"Lakeland terrier\\\",\\n\",\n        \"    \\\"Sealyham terrier, Sealyham\\\",\\n\",\n        \"    \\\"Airedale, Airedale terrier\\\",\\n\",\n        \"    \\\"cairn, cairn terrier\\\",\\n\",\n        \"    \\\"Australian terrier\\\",\\n\",\n        \"    \\\"Dandie Dinmont, Dandie Dinmont terrier\\\",\\n\",\n        \"    \\\"Boston bull, Boston terrier\\\",\\n\",\n        \"    \\\"miniature schnauzer\\\",\\n\",\n        \"    \\\"giant schnauzer\\\",\\n\",\n        \"    \\\"standard schnauzer\\\",\\n\",\n        \"    \\\"Scotch terrier, Scottish terrier, Scottie\\\",\\n\",\n        \"    \\\"Tibetan terrier, chrysanthemum dog\\\",\\n\",\n        \"    \\\"silky terrier, Sydney silky\\\",\\n\",\n        \"    \\\"soft-coated wheaten terrier\\\",\\n\",\n        \"    \\\"West Highland white terrier\\\",\\n\",\n        \"    \\\"Lhasa, Lhasa apso\\\",\\n\",\n        \"    \\\"flat-coated retriever\\\",\\n\",\n        \"    \\\"curly-coated retriever\\\",\\n\",\n        \"    \\\"golden retriever\\\",\\n\",\n        \"    \\\"Labrador retriever\\\",\\n\",\n        \"    \\\"Chesapeake Bay retriever\\\",\\n\",\n        \"    \\\"German short-haired pointer\\\",\\n\",\n        \"    \\\"vizsla, Hungarian pointer\\\",\\n\",\n        \"    \\\"English setter\\\",\\n\",\n        \"    \\\"Irish setter, red setter\\\",\\n\",\n        \"    \\\"Gordon setter\\\",\\n\",\n        \"    \\\"Brittany spaniel\\\",\\n\",\n        \"    \\\"clumber, clumber spaniel\\\",\\n\",\n        \"    \\\"English springer, English springer spaniel\\\",\\n\",\n        \"    \\\"Welsh springer spaniel\\\",\\n\",\n        \"    \\\"cocker spaniel, English cocker spaniel, cocker\\\",\\n\",\n        \"    \\\"Sussex spaniel\\\",\\n\",\n        \"    \\\"Irish water spaniel\\\",\\n\",\n        \"    \\\"kuvasz\\\",\\n\",\n        \"    \\\"schipperke\\\",\\n\",\n        \"    \\\"groenendael\\\",\\n\",\n        \"    \\\"malinois\\\",\\n\",\n        \"    \\\"briard\\\",\\n\",\n        \"    \\\"kelpie\\\",\\n\",\n        \"    \\\"komondor\\\",\\n\",\n        \"    \\\"Old English sheepdog, bobtail\\\",\\n\",\n        \"    \\\"Shetland sheepdog, Shetland sheep dog, Shetland\\\",\\n\",\n        \"    \\\"collie\\\",\\n\",\n        \"    \\\"Border collie\\\",\\n\",\n        \"    \\\"Bouvier des Flandres, Bouviers des Flandres\\\",\\n\",\n        \"    \\\"Rottweiler\\\",\\n\",\n        \"    \\\"German shepherd, German shepherd dog, German police dog, alsatian\\\",\\n\",\n        \"    \\\"Doberman, Doberman pinscher\\\",\\n\",\n        \"    \\\"miniature pinscher\\\",\\n\",\n        \"    \\\"Greater Swiss Mountain dog\\\",\\n\",\n        \"    \\\"Bernese mountain dog\\\",\\n\",\n        \"    \\\"Appenzeller\\\",\\n\",\n        \"    \\\"EntleBucher\\\",\\n\",\n        \"    \\\"boxer\\\",\\n\",\n        \"    \\\"bull mastiff\\\",\\n\",\n        \"    \\\"Tibetan mastiff\\\",\\n\",\n        \"    \\\"French bulldog\\\",\\n\",\n        \"    \\\"Great Dane\\\",\\n\",\n        \"    \\\"Saint Bernard, St Bernard\\\",\\n\",\n        \"    \\\"Eskimo dog, husky\\\",\\n\",\n        \"    \\\"malamute, malemute, Alaskan malamute\\\",\\n\",\n        \"    \\\"Siberian husky\\\",\\n\",\n        \"    \\\"dalmatian, coach dog, carriage dog\\\",\\n\",\n        \"    \\\"affenpinscher, monkey pinscher, monkey dog\\\",\\n\",\n        \"    \\\"basenji\\\",\\n\",\n        \"    \\\"pug, pug-dog\\\",\\n\",\n        \"    \\\"Leonberg\\\",\\n\",\n        \"    \\\"Newfoundland, Newfoundland dog\\\",\\n\",\n        \"    \\\"Great Pyrenees\\\",\\n\",\n        \"    \\\"Samoyed, Samoyede\\\",\\n\",\n        \"    \\\"Pomeranian\\\",\\n\",\n        \"    \\\"chow, chow chow\\\",\\n\",\n        \"    \\\"keeshond\\\",\\n\",\n        \"    \\\"Brabancon griffon\\\",\\n\",\n        \"    \\\"Pembroke, Pembroke Welsh corgi\\\",\\n\",\n        \"    \\\"Cardigan, Cardigan Welsh corgi\\\",\\n\",\n        \"    \\\"toy poodle\\\",\\n\",\n        \"    \\\"miniature poodle\\\",\\n\",\n        \"    \\\"standard poodle\\\",\\n\",\n        \"    \\\"Mexican hairless\\\",\\n\",\n        \"    \\\"timber wolf, grey wolf, gray wolf, Canis lupus\\\",\\n\",\n        \"    \\\"white wolf, Arctic wolf, Canis lupus tundrarum\\\",\\n\",\n        \"    \\\"red wolf, maned wolf, Canis rufus, Canis niger\\\",\\n\",\n        \"    \\\"coyote, prairie wolf, brush wolf, Canis latrans\\\",\\n\",\n        \"    \\\"dingo, warrigal, warragal, Canis dingo\\\",\\n\",\n        \"    \\\"dhole, Cuon alpinus\\\",\\n\",\n        \"    \\\"African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus\\\",\\n\",\n        \"    \\\"hyena, hyaena\\\",\\n\",\n        \"    \\\"red fox, Vulpes vulpes\\\",\\n\",\n        \"    \\\"kit fox, Vulpes macrotis\\\",\\n\",\n        \"    \\\"Arctic fox, white fox, Alopex lagopus\\\",\\n\",\n        \"    \\\"grey fox, gray fox, Urocyon cinereoargenteus\\\",\\n\",\n        \"    \\\"tabby, tabby cat\\\",\\n\",\n        \"    \\\"tiger cat\\\",\\n\",\n        \"    \\\"Persian cat\\\",\\n\",\n        \"    \\\"Siamese cat, Siamese\\\",\\n\",\n        \"    \\\"Egyptian cat\\\",\\n\",\n        \"    \\\"cougar, puma, catamount, mountain lion, painter, panther, Felis concolor\\\",\\n\",\n        \"    \\\"lynx, catamount\\\",\\n\",\n        \"    \\\"leopard, Panthera pardus\\\",\\n\",\n        \"    \\\"snow leopard, ounce, Panthera uncia\\\",\\n\",\n        \"    \\\"jaguar, panther, Panthera onca, Felis onca\\\",\\n\",\n        \"    \\\"lion, king of beasts, Panthera leo\\\",\\n\",\n        \"    \\\"tiger, Panthera tigris\\\",\\n\",\n        \"    \\\"cheetah, chetah, Acinonyx jubatus\\\",\\n\",\n        \"    \\\"brown bear, bruin, Ursus arctos\\\",\\n\",\n        \"    \\\"American black bear, black bear, Ursus americanus, Euarctos americanus\\\",\\n\",\n        \"    \\\"ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus\\\",\\n\",\n        \"    \\\"sloth bear, Melursus ursinus, Ursus ursinus\\\",\\n\",\n        \"    \\\"mongoose\\\",\\n\",\n        \"    \\\"meerkat, mierkat\\\",\\n\",\n        \"    \\\"tiger beetle\\\",\\n\",\n        \"    \\\"ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle\\\",\\n\",\n        \"    \\\"ground beetle, carabid beetle\\\",\\n\",\n        \"    \\\"long-horned beetle, longicorn, longicorn beetle\\\",\\n\",\n        \"    \\\"leaf beetle, chrysomelid\\\",\\n\",\n        \"    \\\"dung beetle\\\",\\n\",\n        \"    \\\"rhinoceros beetle\\\",\\n\",\n        \"    \\\"weevil\\\",\\n\",\n        \"    \\\"fly\\\",\\n\",\n        \"    \\\"bee\\\",\\n\",\n        \"    \\\"ant, emmet, pismire\\\",\\n\",\n        \"    \\\"grasshopper, hopper\\\",\\n\",\n        \"    \\\"cricket\\\",\\n\",\n        \"    \\\"walking stick, walkingstick, stick insect\\\",\\n\",\n        \"    \\\"cockroach, roach\\\",\\n\",\n        \"    \\\"mantis, mantid\\\",\\n\",\n        \"    \\\"cicada, cicala\\\",\\n\",\n        \"    \\\"leafhopper\\\",\\n\",\n        \"    \\\"lacewing, lacewing fly\\\",\\n\",\n        \"    \\\"dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk\\\",\\n\",\n        \"    \\\"damselfly\\\",\\n\",\n        \"    \\\"admiral\\\",\\n\",\n        \"    \\\"ringlet, ringlet butterfly\\\",\\n\",\n        \"    \\\"monarch, monarch butterfly, milkweed butterfly, Danaus plexippus\\\",\\n\",\n        \"    \\\"cabbage butterfly\\\",\\n\",\n        \"    \\\"sulphur butterfly, sulfur butterfly\\\",\\n\",\n        \"    \\\"lycaenid, lycaenid butterfly\\\",\\n\",\n        \"    \\\"starfish, sea star\\\",\\n\",\n        \"    \\\"sea urchin\\\",\\n\",\n        \"    \\\"sea cucumber, holothurian\\\",\\n\",\n        \"    \\\"wood rabbit, cottontail, cottontail rabbit\\\",\\n\",\n        \"    \\\"hare\\\",\\n\",\n        \"    \\\"Angora, Angora rabbit\\\",\\n\",\n        \"    \\\"hamster\\\",\\n\",\n        \"    \\\"porcupine, hedgehog\\\",\\n\",\n        \"    \\\"fox squirrel, eastern fox squirrel, Sciurus niger\\\",\\n\",\n        \"    \\\"marmot\\\",\\n\",\n        \"    \\\"beaver\\\",\\n\",\n        \"    \\\"guinea pig, Cavia cobaya\\\",\\n\",\n        \"    \\\"sorrel\\\",\\n\",\n        \"    \\\"zebra\\\",\\n\",\n        \"    \\\"hog, pig, grunter, squealer, Sus scrofa\\\",\\n\",\n        \"    \\\"wild boar, boar, Sus scrofa\\\",\\n\",\n        \"    \\\"warthog\\\",\\n\",\n        \"    \\\"hippopotamus, hippo, river horse, Hippopotamus amphibius\\\",\\n\",\n        \"    \\\"ox\\\",\\n\",\n        \"    \\\"water buffalo, water ox, Asiatic buffalo, Bubalus bubalis\\\",\\n\",\n        \"    \\\"bison\\\",\\n\",\n        \"    \\\"ram, tup\\\",\\n\",\n        \"    \\\"bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis\\\",\\n\",\n        \"    \\\"ibex, Capra ibex\\\",\\n\",\n        \"    \\\"hartebeest\\\",\\n\",\n        \"    \\\"impala, Aepyceros melampus\\\",\\n\",\n        \"    \\\"gazelle\\\",\\n\",\n        \"    \\\"Arabian camel, dromedary, Camelus dromedarius\\\",\\n\",\n        \"    \\\"llama\\\",\\n\",\n        \"    \\\"weasel\\\",\\n\",\n        \"    \\\"mink\\\",\\n\",\n        \"    \\\"polecat, fitch, foulmart, foumart, Mustela putorius\\\",\\n\",\n        \"    \\\"black-footed ferret, ferret, Mustela nigripes\\\",\\n\",\n        \"    \\\"otter\\\",\\n\",\n        \"    \\\"skunk, polecat, wood pussy\\\",\\n\",\n        \"    \\\"badger\\\",\\n\",\n        \"    \\\"armadillo\\\",\\n\",\n        \"    \\\"three-toed sloth, ai, Bradypus tridactylus\\\",\\n\",\n        \"    \\\"orangutan, orang, orangutang, Pongo pygmaeus\\\",\\n\",\n        \"    \\\"gorilla, Gorilla gorilla\\\",\\n\",\n        \"    \\\"chimpanzee, chimp, Pan troglodytes\\\",\\n\",\n        \"    \\\"gibbon, Hylobates lar\\\",\\n\",\n        \"    \\\"siamang, Hylobates syndactylus, Symphalangus syndactylus\\\",\\n\",\n        \"    \\\"guenon, guenon monkey\\\",\\n\",\n        \"    \\\"patas, hussar monkey, Erythrocebus patas\\\",\\n\",\n        \"    \\\"baboon\\\",\\n\",\n        \"    \\\"macaque\\\",\\n\",\n        \"    \\\"langur\\\",\\n\",\n        \"    \\\"colobus, colobus monkey\\\",\\n\",\n        \"    \\\"proboscis monkey, Nasalis larvatus\\\",\\n\",\n        \"    \\\"marmoset\\\",\\n\",\n        \"    \\\"capuchin, ringtail, Cebus capucinus\\\",\\n\",\n        \"    \\\"howler monkey, howler\\\",\\n\",\n        \"    \\\"titi, titi monkey\\\",\\n\",\n        \"    \\\"spider monkey, Ateles geoffroyi\\\",\\n\",\n        \"    \\\"squirrel monkey, Saimiri sciureus\\\",\\n\",\n        \"    \\\"Madagascar cat, ring-tailed lemur, Lemur catta\\\",\\n\",\n        \"    \\\"indri, indris, Indri indri, Indri brevicaudatus\\\",\\n\",\n        \"    \\\"Indian elephant, Elephas maximus\\\",\\n\",\n        \"    \\\"African elephant, Loxodonta africana\\\",\\n\",\n        \"    \\\"lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens\\\",\\n\",\n        \"    \\\"giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca\\\",\\n\",\n        \"    \\\"barracouta, snoek\\\",\\n\",\n        \"    \\\"eel\\\",\\n\",\n        \"    \\\"coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch\\\",\\n\",\n        \"    \\\"rock beauty, Holocanthus tricolor\\\",\\n\",\n        \"    \\\"anemone fish\\\",\\n\",\n        \"    \\\"sturgeon\\\",\\n\",\n        \"    \\\"gar, garfish, garpike, billfish, Lepisosteus osseus\\\",\\n\",\n        \"    \\\"lionfish\\\",\\n\",\n        \"    \\\"puffer, pufferfish, blowfish, globefish\\\",\\n\",\n        \"    \\\"abacus\\\",\\n\",\n        \"    \\\"abaya\\\",\\n\",\n        \"    \\\"academic gown, academic robe, judge's robe\\\",\\n\",\n        \"    \\\"accordion, piano accordion, squeeze box\\\",\\n\",\n        \"    \\\"acoustic guitar\\\",\\n\",\n        \"    \\\"aircraft carrier, carrier, flattop, attack aircraft carrier\\\",\\n\",\n        \"    \\\"airliner\\\",\\n\",\n        \"    \\\"airship, dirigible\\\",\\n\",\n        \"    \\\"altar\\\",\\n\",\n        \"    \\\"ambulance\\\",\\n\",\n        \"    \\\"amphibian, amphibious vehicle\\\",\\n\",\n        \"    \\\"analog clock\\\",\\n\",\n        \"    \\\"apiary, bee house\\\",\\n\",\n        \"    \\\"apron\\\",\\n\",\n        \"    \\\"ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin\\\",\\n\",\n        \"    \\\"assault rifle, assault gun\\\",\\n\",\n        \"    \\\"backpack, back pack, knapsack, packsack, rucksack, haversack\\\",\\n\",\n        \"    \\\"bakery, bakeshop, bakehouse\\\",\\n\",\n        \"    \\\"balance beam, beam\\\",\\n\",\n        \"    \\\"balloon\\\",\\n\",\n        \"    \\\"ballpoint, ballpoint pen, ballpen, Biro\\\",\\n\",\n        \"    \\\"Band Aid\\\",\\n\",\n        \"    \\\"banjo\\\",\\n\",\n        \"    \\\"bannister, banister, balustrade, balusters, handrail\\\",\\n\",\n        \"    \\\"barbell\\\",\\n\",\n        \"    \\\"barber chair\\\",\\n\",\n        \"    \\\"barbershop\\\",\\n\",\n        \"    \\\"barn\\\",\\n\",\n        \"    \\\"barometer\\\",\\n\",\n        \"    \\\"barrel, cask\\\",\\n\",\n        \"    \\\"barrow, garden cart, lawn cart, wheelbarrow\\\",\\n\",\n        \"    \\\"baseball\\\",\\n\",\n        \"    \\\"basketball\\\",\\n\",\n        \"    \\\"bassinet\\\",\\n\",\n        \"    \\\"bassoon\\\",\\n\",\n        \"    \\\"bathing cap, swimming cap\\\",\\n\",\n        \"    \\\"bath towel\\\",\\n\",\n        \"    \\\"bathtub, bathing tub, bath, tub\\\",\\n\",\n        \"    \\\"beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon\\\",\\n\",\n        \"    \\\"beacon, lighthouse, beacon light, pharos\\\",\\n\",\n        \"    \\\"beaker\\\",\\n\",\n        \"    \\\"bearskin, busby, shako\\\",\\n\",\n        \"    \\\"beer bottle\\\",\\n\",\n        \"    \\\"beer glass\\\",\\n\",\n        \"    \\\"bell cote, bell cot\\\",\\n\",\n        \"    \\\"bib\\\",\\n\",\n        \"    \\\"bicycle-built-for-two, tandem bicycle, tandem\\\",\\n\",\n        \"    \\\"bikini, two-piece\\\",\\n\",\n        \"    \\\"binder, ring-binder\\\",\\n\",\n        \"    \\\"binoculars, field glasses, opera glasses\\\",\\n\",\n        \"    \\\"birdhouse\\\",\\n\",\n        \"    \\\"boathouse\\\",\\n\",\n        \"    \\\"bobsled, bobsleigh, bob\\\",\\n\",\n        \"    \\\"bolo tie, bolo, bola tie, bola\\\",\\n\",\n        \"    \\\"bonnet, poke bonnet\\\",\\n\",\n        \"    \\\"bookcase\\\",\\n\",\n        \"    \\\"bookshop, bookstore, bookstall\\\",\\n\",\n        \"    \\\"bottlecap\\\",\\n\",\n        \"    \\\"bow\\\",\\n\",\n        \"    \\\"bow tie, bow-tie, bowtie\\\",\\n\",\n        \"    \\\"brass, memorial tablet, plaque\\\",\\n\",\n        \"    \\\"brassiere, bra, bandeau\\\",\\n\",\n        \"    \\\"breakwater, groin, groyne, mole, bulwark, seawall, jetty\\\",\\n\",\n        \"    \\\"breastplate, aegis, egis\\\",\\n\",\n        \"    \\\"broom\\\",\\n\",\n        \"    \\\"bucket, pail\\\",\\n\",\n        \"    \\\"buckle\\\",\\n\",\n        \"    \\\"bulletproof vest\\\",\\n\",\n        \"    \\\"bullet train, bullet\\\",\\n\",\n        \"    \\\"butcher shop, meat market\\\",\\n\",\n        \"    \\\"cab, hack, taxi, taxicab\\\",\\n\",\n        \"    \\\"caldron, cauldron\\\",\\n\",\n        \"    \\\"candle, taper, wax light\\\",\\n\",\n        \"    \\\"cannon\\\",\\n\",\n        \"    \\\"canoe\\\",\\n\",\n        \"    \\\"can opener, tin opener\\\",\\n\",\n        \"    \\\"cardigan\\\",\\n\",\n        \"    \\\"car mirror\\\",\\n\",\n        \"    \\\"carousel, carrousel, merry-go-round, roundabout, whirligig\\\",\\n\",\n        \"    \\\"carpenter's kit, tool kit\\\",\\n\",\n        \"    \\\"carton\\\",\\n\",\n        \"    \\\"car wheel\\\",\\n\",\n        \"    \\\"cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM\\\",\\n\",\n        \"    \\\"cassette\\\",\\n\",\n        \"    \\\"cassette player\\\",\\n\",\n        \"    \\\"castle\\\",\\n\",\n        \"    \\\"catamaran\\\",\\n\",\n        \"    \\\"CD player\\\",\\n\",\n        \"    \\\"cello, violoncello\\\",\\n\",\n        \"    \\\"cellular telephone, cellular phone, cellphone, cell, mobile phone\\\",\\n\",\n        \"    \\\"chain\\\",\\n\",\n        \"    \\\"chainlink fence\\\",\\n\",\n        \"    \\\"chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour\\\",\\n\",\n        \"    \\\"chain saw, chainsaw\\\",\\n\",\n        \"    \\\"chest\\\",\\n\",\n        \"    \\\"chiffonier, commode\\\",\\n\",\n        \"    \\\"chime, bell, gong\\\",\\n\",\n        \"    \\\"china cabinet, china closet\\\",\\n\",\n        \"    \\\"Christmas stocking\\\",\\n\",\n        \"    \\\"church, church building\\\",\\n\",\n        \"    \\\"cinema, movie theater, movie theatre, movie house, picture palace\\\",\\n\",\n        \"    \\\"cleaver, meat cleaver, chopper\\\",\\n\",\n        \"    \\\"cliff dwelling\\\",\\n\",\n        \"    \\\"cloak\\\",\\n\",\n        \"    \\\"clog, geta, patten, sabot\\\",\\n\",\n        \"    \\\"cocktail shaker\\\",\\n\",\n        \"    \\\"coffee mug\\\",\\n\",\n        \"    \\\"coffeepot\\\",\\n\",\n        \"    \\\"coil, spiral, volute, whorl, helix\\\",\\n\",\n        \"    \\\"combination lock\\\",\\n\",\n        \"    \\\"computer keyboard, keypad\\\",\\n\",\n        \"    \\\"confectionery, confectionary, candy store\\\",\\n\",\n        \"    \\\"container ship, containership, container vessel\\\",\\n\",\n        \"    \\\"convertible\\\",\\n\",\n        \"    \\\"corkscrew, bottle screw\\\",\\n\",\n        \"    \\\"cornet, horn, trumpet, trump\\\",\\n\",\n        \"    \\\"cowboy boot\\\",\\n\",\n        \"    \\\"cowboy hat, ten-gallon hat\\\",\\n\",\n        \"    \\\"cradle\\\",\\n\",\n        \"    \\\"crane\\\",\\n\",\n        \"    \\\"crash helmet\\\",\\n\",\n        \"    \\\"crate\\\",\\n\",\n        \"    \\\"crib, cot\\\",\\n\",\n        \"    \\\"Crock Pot\\\",\\n\",\n        \"    \\\"croquet ball\\\",\\n\",\n        \"    \\\"crutch\\\",\\n\",\n        \"    \\\"cuirass\\\",\\n\",\n        \"    \\\"dam, dike, dyke\\\",\\n\",\n        \"    \\\"desk\\\",\\n\",\n        \"    \\\"desktop computer\\\",\\n\",\n        \"    \\\"dial telephone, dial phone\\\",\\n\",\n        \"    \\\"diaper, nappy, napkin\\\",\\n\",\n        \"    \\\"digital clock\\\",\\n\",\n        \"    \\\"digital watch\\\",\\n\",\n        \"    \\\"dining table, board\\\",\\n\",\n        \"    \\\"dishrag, dishcloth\\\",\\n\",\n        \"    \\\"dishwasher, dish washer, dishwashing machine\\\",\\n\",\n        \"    \\\"disk brake, disc brake\\\",\\n\",\n        \"    \\\"dock, dockage, docking facility\\\",\\n\",\n        \"    \\\"dogsled, dog sled, dog sleigh\\\",\\n\",\n        \"    \\\"dome\\\",\\n\",\n        \"    \\\"doormat, welcome mat\\\",\\n\",\n        \"    \\\"drilling platform, offshore rig\\\",\\n\",\n        \"    \\\"drum, membranophone, tympan\\\",\\n\",\n        \"    \\\"drumstick\\\",\\n\",\n        \"    \\\"dumbbell\\\",\\n\",\n        \"    \\\"Dutch oven\\\",\\n\",\n        \"    \\\"electric fan, blower\\\",\\n\",\n        \"    \\\"electric guitar\\\",\\n\",\n        \"    \\\"electric locomotive\\\",\\n\",\n        \"    \\\"entertainment center\\\",\\n\",\n        \"    \\\"envelope\\\",\\n\",\n        \"    \\\"espresso maker\\\",\\n\",\n        \"    \\\"face powder\\\",\\n\",\n        \"    \\\"feather boa, boa\\\",\\n\",\n        \"    \\\"file, file cabinet, filing cabinet\\\",\\n\",\n        \"    \\\"fireboat\\\",\\n\",\n        \"    \\\"fire engine, fire truck\\\",\\n\",\n        \"    \\\"fire screen, fireguard\\\",\\n\",\n        \"    \\\"flagpole, flagstaff\\\",\\n\",\n        \"    \\\"flute, transverse flute\\\",\\n\",\n        \"    \\\"folding chair\\\",\\n\",\n        \"    \\\"football helmet\\\",\\n\",\n        \"    \\\"forklift\\\",\\n\",\n        \"    \\\"fountain\\\",\\n\",\n        \"    \\\"fountain pen\\\",\\n\",\n        \"    \\\"four-poster\\\",\\n\",\n        \"    \\\"freight car\\\",\\n\",\n        \"    \\\"French horn, horn\\\",\\n\",\n        \"    \\\"frying pan, frypan, skillet\\\",\\n\",\n        \"    \\\"fur coat\\\",\\n\",\n        \"    \\\"garbage truck, dustcart\\\",\\n\",\n        \"    \\\"gasmask, respirator, gas helmet\\\",\\n\",\n        \"    \\\"gas pump, gasoline pump, petrol pump, island dispenser\\\",\\n\",\n        \"    \\\"goblet\\\",\\n\",\n        \"    \\\"go-kart\\\",\\n\",\n        \"    \\\"golf ball\\\",\\n\",\n        \"    \\\"golfcart, golf cart\\\",\\n\",\n        \"    \\\"gondola\\\",\\n\",\n        \"    \\\"gong, tam-tam\\\",\\n\",\n        \"    \\\"gown\\\",\\n\",\n        \"    \\\"grand piano, grand\\\",\\n\",\n        \"    \\\"greenhouse, nursery, glasshouse\\\",\\n\",\n        \"    \\\"grille, radiator grille\\\",\\n\",\n        \"    \\\"grocery store, grocery, food market, market\\\",\\n\",\n        \"    \\\"guillotine\\\",\\n\",\n        \"    \\\"hair slide\\\",\\n\",\n        \"    \\\"hair spray\\\",\\n\",\n        \"    \\\"half track\\\",\\n\",\n        \"    \\\"hammer\\\",\\n\",\n        \"    \\\"hamper\\\",\\n\",\n        \"    \\\"hand blower, blow dryer, blow drier, hair dryer, hair drier\\\",\\n\",\n        \"    \\\"hand-held computer, hand-held microcomputer\\\",\\n\",\n        \"    \\\"handkerchief, hankie, hanky, hankey\\\",\\n\",\n        \"    \\\"hard disc, hard disk, fixed disk\\\",\\n\",\n        \"    \\\"harmonica, mouth organ, harp, mouth harp\\\",\\n\",\n        \"    \\\"harp\\\",\\n\",\n        \"    \\\"harvester, reaper\\\",\\n\",\n        \"    \\\"hatchet\\\",\\n\",\n        \"    \\\"holster\\\",\\n\",\n        \"    \\\"home theater, home theatre\\\",\\n\",\n        \"    \\\"honeycomb\\\",\\n\",\n        \"    \\\"hook, claw\\\",\\n\",\n        \"    \\\"hoopskirt, crinoline\\\",\\n\",\n        \"    \\\"horizontal bar, high bar\\\",\\n\",\n        \"    \\\"horse cart, horse-cart\\\",\\n\",\n        \"    \\\"hourglass\\\",\\n\",\n        \"    \\\"iPod\\\",\\n\",\n        \"    \\\"iron, smoothing iron\\\",\\n\",\n        \"    \\\"jack-o'-lantern\\\",\\n\",\n        \"    \\\"jean, blue jean, denim\\\",\\n\",\n        \"    \\\"jeep, landrover\\\",\\n\",\n        \"    \\\"jersey, T-shirt, tee shirt\\\",\\n\",\n        \"    \\\"jigsaw puzzle\\\",\\n\",\n        \"    \\\"jinrikisha, ricksha, rickshaw\\\",\\n\",\n        \"    \\\"joystick\\\",\\n\",\n        \"    \\\"kimono\\\",\\n\",\n        \"    \\\"knee pad\\\",\\n\",\n        \"    \\\"knot\\\",\\n\",\n        \"    \\\"lab coat, laboratory coat\\\",\\n\",\n        \"    \\\"ladle\\\",\\n\",\n        \"    \\\"lampshade, lamp shade\\\",\\n\",\n        \"    \\\"laptop, laptop computer\\\",\\n\",\n        \"    \\\"lawn mower, mower\\\",\\n\",\n        \"    \\\"lens cap, lens cover\\\",\\n\",\n        \"    \\\"letter opener, paper knife, paperknife\\\",\\n\",\n        \"    \\\"library\\\",\\n\",\n        \"    \\\"lifeboat\\\",\\n\",\n        \"    \\\"lighter, light, igniter, ignitor\\\",\\n\",\n        \"    \\\"limousine, limo\\\",\\n\",\n        \"    \\\"liner, ocean liner\\\",\\n\",\n        \"    \\\"lipstick, lip rouge\\\",\\n\",\n        \"    \\\"Loafer\\\",\\n\",\n        \"    \\\"lotion\\\",\\n\",\n        \"    \\\"loudspeaker, speaker, speaker unit, loudspeaker system, speaker system\\\",\\n\",\n        \"    \\\"loupe, jeweler's loupe\\\",\\n\",\n        \"    \\\"lumbermill, sawmill\\\",\\n\",\n        \"    \\\"magnetic compass\\\",\\n\",\n        \"    \\\"mailbag, postbag\\\",\\n\",\n        \"    \\\"mailbox, letter box\\\",\\n\",\n        \"    \\\"maillot\\\",\\n\",\n        \"    \\\"maillot, tank suit\\\",\\n\",\n        \"    \\\"manhole cover\\\",\\n\",\n        \"    \\\"maraca\\\",\\n\",\n        \"    \\\"marimba, xylophone\\\",\\n\",\n        \"    \\\"mask\\\",\\n\",\n        \"    \\\"matchstick\\\",\\n\",\n        \"    \\\"maypole\\\",\\n\",\n        \"    \\\"maze, labyrinth\\\",\\n\",\n        \"    \\\"measuring cup\\\",\\n\",\n        \"    \\\"medicine chest, medicine cabinet\\\",\\n\",\n        \"    \\\"megalith, megalithic structure\\\",\\n\",\n        \"    \\\"microphone, mike\\\",\\n\",\n        \"    \\\"microwave, microwave oven\\\",\\n\",\n        \"    \\\"military uniform\\\",\\n\",\n        \"    \\\"milk can\\\",\\n\",\n        \"    \\\"minibus\\\",\\n\",\n        \"    \\\"miniskirt, mini\\\",\\n\",\n        \"    \\\"minivan\\\",\\n\",\n        \"    \\\"missile\\\",\\n\",\n        \"    \\\"mitten\\\",\\n\",\n        \"    \\\"mixing bowl\\\",\\n\",\n        \"    \\\"mobile home, manufactured home\\\",\\n\",\n        \"    \\\"Model T\\\",\\n\",\n        \"    \\\"modem\\\",\\n\",\n        \"    \\\"monastery\\\",\\n\",\n        \"    \\\"monitor\\\",\\n\",\n        \"    \\\"moped\\\",\\n\",\n        \"    \\\"mortar\\\",\\n\",\n        \"    \\\"mortarboard\\\",\\n\",\n        \"    \\\"mosque\\\",\\n\",\n        \"    \\\"mosquito net\\\",\\n\",\n        \"    \\\"motor scooter, scooter\\\",\\n\",\n        \"    \\\"mountain bike, all-terrain bike, off-roader\\\",\\n\",\n        \"    \\\"mountain tent\\\",\\n\",\n        \"    \\\"mouse, computer mouse\\\",\\n\",\n        \"    \\\"mousetrap\\\",\\n\",\n        \"    \\\"moving van\\\",\\n\",\n        \"    \\\"muzzle\\\",\\n\",\n        \"    \\\"nail\\\",\\n\",\n        \"    \\\"neck brace\\\",\\n\",\n        \"    \\\"necklace\\\",\\n\",\n        \"    \\\"nipple\\\",\\n\",\n        \"    \\\"notebook, notebook computer\\\",\\n\",\n        \"    \\\"obelisk\\\",\\n\",\n        \"    \\\"oboe, hautboy, hautbois\\\",\\n\",\n        \"    \\\"ocarina, sweet potato\\\",\\n\",\n        \"    \\\"odometer, hodometer, mileometer, milometer\\\",\\n\",\n        \"    \\\"oil filter\\\",\\n\",\n        \"    \\\"organ, pipe organ\\\",\\n\",\n        \"    \\\"oscilloscope, scope, cathode-ray oscilloscope, CRO\\\",\\n\",\n        \"    \\\"overskirt\\\",\\n\",\n        \"    \\\"oxcart\\\",\\n\",\n        \"    \\\"oxygen mask\\\",\\n\",\n        \"    \\\"packet\\\",\\n\",\n        \"    \\\"paddle, boat paddle\\\",\\n\",\n        \"    \\\"paddlewheel, paddle wheel\\\",\\n\",\n        \"    \\\"padlock\\\",\\n\",\n        \"    \\\"paintbrush\\\",\\n\",\n        \"    \\\"pajama, pyjama, pj's, jammies\\\",\\n\",\n        \"    \\\"palace\\\",\\n\",\n        \"    \\\"panpipe, pandean pipe, syrinx\\\",\\n\",\n        \"    \\\"paper towel\\\",\\n\",\n        \"    \\\"parachute, chute\\\",\\n\",\n        \"    \\\"parallel bars, bars\\\",\\n\",\n        \"    \\\"park bench\\\",\\n\",\n        \"    \\\"parking meter\\\",\\n\",\n        \"    \\\"passenger car, coach, carriage\\\",\\n\",\n        \"    \\\"patio, terrace\\\",\\n\",\n        \"    \\\"pay-phone, pay-station\\\",\\n\",\n        \"    \\\"pedestal, plinth, footstall\\\",\\n\",\n        \"    \\\"pencil box, pencil case\\\",\\n\",\n        \"    \\\"pencil sharpener\\\",\\n\",\n        \"    \\\"perfume, essence\\\",\\n\",\n        \"    \\\"Petri dish\\\",\\n\",\n        \"    \\\"photocopier\\\",\\n\",\n        \"    \\\"pick, plectrum, plectron\\\",\\n\",\n        \"    \\\"pickelhaube\\\",\\n\",\n        \"    \\\"picket fence, paling\\\",\\n\",\n        \"    \\\"pickup, pickup truck\\\",\\n\",\n        \"    \\\"pier\\\",\\n\",\n        \"    \\\"piggy bank, penny bank\\\",\\n\",\n        \"    \\\"pill bottle\\\",\\n\",\n        \"    \\\"pillow\\\",\\n\",\n        \"    \\\"ping-pong ball\\\",\\n\",\n        \"    \\\"pinwheel\\\",\\n\",\n        \"    \\\"pirate, pirate ship\\\",\\n\",\n        \"    \\\"pitcher, ewer\\\",\\n\",\n        \"    \\\"plane, carpenter's plane, woodworking plane\\\",\\n\",\n        \"    \\\"planetarium\\\",\\n\",\n        \"    \\\"plastic bag\\\",\\n\",\n        \"    \\\"plate rack\\\",\\n\",\n        \"    \\\"plow, plough\\\",\\n\",\n        \"    \\\"plunger, plumber's helper\\\",\\n\",\n        \"    \\\"Polaroid camera, Polaroid Land camera\\\",\\n\",\n        \"    \\\"pole\\\",\\n\",\n        \"    \\\"police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria\\\",\\n\",\n        \"    \\\"poncho\\\",\\n\",\n        \"    \\\"pool table, billiard table, snooker table\\\",\\n\",\n        \"    \\\"pop bottle, soda bottle\\\",\\n\",\n        \"    \\\"pot, flowerpot\\\",\\n\",\n        \"    \\\"potter's wheel\\\",\\n\",\n        \"    \\\"power drill\\\",\\n\",\n        \"    \\\"prayer rug, prayer mat\\\",\\n\",\n        \"    \\\"printer\\\",\\n\",\n        \"    \\\"prison, prison house\\\",\\n\",\n        \"    \\\"projectile, missile\\\",\\n\",\n        \"    \\\"projector\\\",\\n\",\n        \"    \\\"puck, hockey puck\\\",\\n\",\n        \"    \\\"punching bag, punch bag, punching ball, punchball\\\",\\n\",\n        \"    \\\"purse\\\",\\n\",\n        \"    \\\"quill, quill pen\\\",\\n\",\n        \"    \\\"quilt, comforter, comfort, puff\\\",\\n\",\n        \"    \\\"racer, race car, racing car\\\",\\n\",\n        \"    \\\"racket, racquet\\\",\\n\",\n        \"    \\\"radiator\\\",\\n\",\n        \"    \\\"radio, wireless\\\",\\n\",\n        \"    \\\"radio telescope, radio reflector\\\",\\n\",\n        \"    \\\"rain barrel\\\",\\n\",\n        \"    \\\"recreational vehicle, RV, R.V.\\\",\\n\",\n        \"    \\\"reel\\\",\\n\",\n        \"    \\\"reflex camera\\\",\\n\",\n        \"    \\\"refrigerator, icebox\\\",\\n\",\n        \"    \\\"remote control, remote\\\",\\n\",\n        \"    \\\"restaurant, eating house, eating place, eatery\\\",\\n\",\n        \"    \\\"revolver, six-gun, six-shooter\\\",\\n\",\n        \"    \\\"rifle\\\",\\n\",\n        \"    \\\"rocking chair, rocker\\\",\\n\",\n        \"    \\\"rotisserie\\\",\\n\",\n        \"    \\\"rubber eraser, rubber, pencil eraser\\\",\\n\",\n        \"    \\\"rugby ball\\\",\\n\",\n        \"    \\\"rule, ruler\\\",\\n\",\n        \"    \\\"running shoe\\\",\\n\",\n        \"    \\\"safe\\\",\\n\",\n        \"    \\\"safety pin\\\",\\n\",\n        \"    \\\"saltshaker, salt shaker\\\",\\n\",\n        \"    \\\"sandal\\\",\\n\",\n        \"    \\\"sarong\\\",\\n\",\n        \"    \\\"sax, saxophone\\\",\\n\",\n        \"    \\\"scabbard\\\",\\n\",\n        \"    \\\"scale, weighing machine\\\",\\n\",\n        \"    \\\"school bus\\\",\\n\",\n        \"    \\\"schooner\\\",\\n\",\n        \"    \\\"scoreboard\\\",\\n\",\n        \"    \\\"screen, CRT screen\\\",\\n\",\n        \"    \\\"screw\\\",\\n\",\n        \"    \\\"screwdriver\\\",\\n\",\n        \"    \\\"seat belt, seatbelt\\\",\\n\",\n        \"    \\\"sewing machine\\\",\\n\",\n        \"    \\\"shield, buckler\\\",\\n\",\n        \"    \\\"shoe shop, shoe-shop, shoe store\\\",\\n\",\n        \"    \\\"shoji\\\",\\n\",\n        \"    \\\"shopping basket\\\",\\n\",\n        \"    \\\"shopping cart\\\",\\n\",\n        \"    \\\"shovel\\\",\\n\",\n        \"    \\\"shower cap\\\",\\n\",\n        \"    \\\"shower curtain\\\",\\n\",\n        \"    \\\"ski\\\",\\n\",\n        \"    \\\"ski mask\\\",\\n\",\n        \"    \\\"sleeping bag\\\",\\n\",\n        \"    \\\"slide rule, slipstick\\\",\\n\",\n        \"    \\\"sliding door\\\",\\n\",\n        \"    \\\"slot, one-armed bandit\\\",\\n\",\n        \"    \\\"snorkel\\\",\\n\",\n        \"    \\\"snowmobile\\\",\\n\",\n        \"    \\\"snowplow, snowplough\\\",\\n\",\n        \"    \\\"soap dispenser\\\",\\n\",\n        \"    \\\"soccer ball\\\",\\n\",\n        \"    \\\"sock\\\",\\n\",\n        \"    \\\"solar dish, solar collector, solar furnace\\\",\\n\",\n        \"    \\\"sombrero\\\",\\n\",\n        \"    \\\"soup bowl\\\",\\n\",\n        \"    \\\"space bar\\\",\\n\",\n        \"    \\\"space heater\\\",\\n\",\n        \"    \\\"space shuttle\\\",\\n\",\n        \"    \\\"spatula\\\",\\n\",\n        \"    \\\"speedboat\\\",\\n\",\n        \"    \\\"spider web, spider's web\\\",\\n\",\n        \"    \\\"spindle\\\",\\n\",\n        \"    \\\"sports car, sport car\\\",\\n\",\n        \"    \\\"spotlight, spot\\\",\\n\",\n        \"    \\\"stage\\\",\\n\",\n        \"    \\\"steam locomotive\\\",\\n\",\n        \"    \\\"steel arch bridge\\\",\\n\",\n        \"    \\\"steel drum\\\",\\n\",\n        \"    \\\"stethoscope\\\",\\n\",\n        \"    \\\"stole\\\",\\n\",\n        \"    \\\"stone wall\\\",\\n\",\n        \"    \\\"stopwatch, stop watch\\\",\\n\",\n        \"    \\\"stove\\\",\\n\",\n        \"    \\\"strainer\\\",\\n\",\n        \"    \\\"streetcar, tram, tramcar, trolley, trolley car\\\",\\n\",\n        \"    \\\"stretcher\\\",\\n\",\n        \"    \\\"studio couch, day bed\\\",\\n\",\n        \"    \\\"stupa, tope\\\",\\n\",\n        \"    \\\"submarine, pigboat, sub, U-boat\\\",\\n\",\n        \"    \\\"suit, suit of clothes\\\",\\n\",\n        \"    \\\"sundial\\\",\\n\",\n        \"    \\\"sunglass\\\",\\n\",\n        \"    \\\"sunglasses, dark glasses, shades\\\",\\n\",\n        \"    \\\"sunscreen, sunblock, sun blocker\\\",\\n\",\n        \"    \\\"suspension bridge\\\",\\n\",\n        \"    \\\"swab, swob, mop\\\",\\n\",\n        \"    \\\"sweatshirt\\\",\\n\",\n        \"    \\\"swimming trunks, bathing trunks\\\",\\n\",\n        \"    \\\"swing\\\",\\n\",\n        \"    \\\"switch, electric switch, electrical switch\\\",\\n\",\n        \"    \\\"syringe\\\",\\n\",\n        \"    \\\"table lamp\\\",\\n\",\n        \"    \\\"tank, army tank, armored combat vehicle, armoured combat vehicle\\\",\\n\",\n        \"    \\\"tape player\\\",\\n\",\n        \"    \\\"teapot\\\",\\n\",\n        \"    \\\"teddy, teddy bear\\\",\\n\",\n        \"    \\\"television, television system\\\",\\n\",\n        \"    \\\"tennis ball\\\",\\n\",\n        \"    \\\"thatch, thatched roof\\\",\\n\",\n        \"    \\\"theater curtain, theatre curtain\\\",\\n\",\n        \"    \\\"thimble\\\",\\n\",\n        \"    \\\"thresher, thrasher, threshing machine\\\",\\n\",\n        \"    \\\"throne\\\",\\n\",\n        \"    \\\"tile roof\\\",\\n\",\n        \"    \\\"toaster\\\",\\n\",\n        \"    \\\"tobacco shop, tobacconist shop, tobacconist\\\",\\n\",\n        \"    \\\"toilet seat\\\",\\n\",\n        \"    \\\"torch\\\",\\n\",\n        \"    \\\"totem pole\\\",\\n\",\n        \"    \\\"tow truck, tow car, wrecker\\\",\\n\",\n        \"    \\\"toyshop\\\",\\n\",\n        \"    \\\"tractor\\\",\\n\",\n        \"    \\\"trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi\\\",\\n\",\n        \"    \\\"tray\\\",\\n\",\n        \"    \\\"trench coat\\\",\\n\",\n        \"    \\\"tricycle, trike, velocipede\\\",\\n\",\n        \"    \\\"trimaran\\\",\\n\",\n        \"    \\\"tripod\\\",\\n\",\n        \"    \\\"triumphal arch\\\",\\n\",\n        \"    \\\"trolleybus, trolley coach, trackless trolley\\\",\\n\",\n        \"    \\\"trombone\\\",\\n\",\n        \"    \\\"tub, vat\\\",\\n\",\n        \"    \\\"turnstile\\\",\\n\",\n        \"    \\\"typewriter keyboard\\\",\\n\",\n        \"    \\\"umbrella\\\",\\n\",\n        \"    \\\"unicycle, monocycle\\\",\\n\",\n        \"    \\\"upright, upright piano\\\",\\n\",\n        \"    \\\"vacuum, vacuum cleaner\\\",\\n\",\n        \"    \\\"vase\\\",\\n\",\n        \"    \\\"vault\\\",\\n\",\n        \"    \\\"velvet\\\",\\n\",\n        \"    \\\"vending machine\\\",\\n\",\n        \"    \\\"vestment\\\",\\n\",\n        \"    \\\"viaduct\\\",\\n\",\n        \"    \\\"violin, fiddle\\\",\\n\",\n        \"    \\\"volleyball\\\",\\n\",\n        \"    \\\"waffle iron\\\",\\n\",\n        \"    \\\"wall clock\\\",\\n\",\n        \"    \\\"wallet, billfold, notecase, pocketbook\\\",\\n\",\n        \"    \\\"wardrobe, closet, press\\\",\\n\",\n        \"    \\\"warplane, military plane\\\",\\n\",\n        \"    \\\"washbasin, handbasin, washbowl, lavabo, wash-hand basin\\\",\\n\",\n        \"    \\\"washer, automatic washer, washing machine\\\",\\n\",\n        \"    \\\"water bottle\\\",\\n\",\n        \"    \\\"water jug\\\",\\n\",\n        \"    \\\"water tower\\\",\\n\",\n        \"    \\\"whiskey jug\\\",\\n\",\n        \"    \\\"whistle\\\",\\n\",\n        \"    \\\"wig\\\",\\n\",\n        \"    \\\"window screen\\\",\\n\",\n        \"    \\\"window shade\\\",\\n\",\n        \"    \\\"Windsor tie\\\",\\n\",\n        \"    \\\"wine bottle\\\",\\n\",\n        \"    \\\"wing\\\",\\n\",\n        \"    \\\"wok\\\",\\n\",\n        \"    \\\"wooden spoon\\\",\\n\",\n        \"    \\\"wool, woolen, woollen\\\",\\n\",\n        \"    \\\"worm fence, snake fence, snake-rail fence, Virginia fence\\\",\\n\",\n        \"    \\\"wreck\\\",\\n\",\n        \"    \\\"yawl\\\",\\n\",\n        \"    \\\"yurt\\\",\\n\",\n        \"    \\\"web site, website, internet site, site\\\",\\n\",\n        \"    \\\"comic book\\\",\\n\",\n        \"    \\\"crossword puzzle, crossword\\\",\\n\",\n        \"    \\\"street sign\\\",\\n\",\n        \"    \\\"traffic light, traffic signal, stoplight\\\",\\n\",\n        \"    \\\"book jacket, dust cover, dust jacket, dust wrapper\\\",\\n\",\n        \"    \\\"menu\\\",\\n\",\n        \"    \\\"plate\\\",\\n\",\n        \"    \\\"guacamole\\\",\\n\",\n        \"    \\\"consomme\\\",\\n\",\n        \"    \\\"hot pot, hotpot\\\",\\n\",\n        \"    \\\"trifle\\\",\\n\",\n        \"    \\\"ice cream, icecream\\\",\\n\",\n        \"    \\\"ice lolly, lolly, lollipop, popsicle\\\",\\n\",\n        \"    \\\"French loaf\\\",\\n\",\n        \"    \\\"bagel, beigel\\\",\\n\",\n        \"    \\\"pretzel\\\",\\n\",\n        \"    \\\"cheeseburger\\\",\\n\",\n        \"    \\\"hotdog, hot dog, red hot\\\",\\n\",\n        \"    \\\"mashed potato\\\",\\n\",\n        \"    \\\"head cabbage\\\",\\n\",\n        \"    \\\"broccoli\\\",\\n\",\n        \"    \\\"cauliflower\\\",\\n\",\n        \"    \\\"zucchini, courgette\\\",\\n\",\n        \"    \\\"spaghetti squash\\\",\\n\",\n        \"    \\\"acorn squash\\\",\\n\",\n        \"    \\\"butternut squash\\\",\\n\",\n        \"    \\\"cucumber, cuke\\\",\\n\",\n        \"    \\\"artichoke, globe artichoke\\\",\\n\",\n        \"    \\\"bell pepper\\\",\\n\",\n        \"    \\\"cardoon\\\",\\n\",\n        \"    \\\"mushroom\\\",\\n\",\n        \"    \\\"Granny Smith\\\",\\n\",\n        \"    \\\"strawberry\\\",\\n\",\n        \"    \\\"orange\\\",\\n\",\n        \"    \\\"lemon\\\",\\n\",\n        \"    \\\"fig\\\",\\n\",\n        \"    \\\"pineapple, ananas\\\",\\n\",\n        \"    \\\"banana\\\",\\n\",\n        \"    \\\"jackfruit, jak, jack\\\",\\n\",\n        \"    \\\"custard apple\\\",\\n\",\n        \"    \\\"pomegranate\\\",\\n\",\n        \"    \\\"hay\\\",\\n\",\n        \"    \\\"carbonara\\\",\\n\",\n        \"    \\\"chocolate sauce, chocolate syrup\\\",\\n\",\n        \"    \\\"dough\\\",\\n\",\n        \"    \\\"meat loaf, meatloaf\\\",\\n\",\n        \"    \\\"pizza, pizza pie\\\",\\n\",\n        \"    \\\"potpie\\\",\\n\",\n        \"    \\\"burrito\\\",\\n\",\n        \"    \\\"red wine\\\",\\n\",\n        \"    \\\"espresso\\\",\\n\",\n        \"    \\\"cup\\\",\\n\",\n        \"    \\\"eggnog\\\",\\n\",\n        \"    \\\"alp\\\",\\n\",\n        \"    \\\"bubble\\\",\\n\",\n        \"    \\\"cliff, drop, drop-off\\\",\\n\",\n        \"    \\\"coral reef\\\",\\n\",\n        \"    \\\"geyser\\\",\\n\",\n        \"    \\\"lakeside, lakeshore\\\",\\n\",\n        \"    \\\"promontory, headland, head, foreland\\\",\\n\",\n        \"    \\\"sandbar, sand bar\\\",\\n\",\n        \"    \\\"seashore, coast, seacoast, sea-coast\\\",\\n\",\n        \"    \\\"valley, vale\\\",\\n\",\n        \"    \\\"volcano\\\",\\n\",\n        \"    \\\"ballplayer, baseball player\\\",\\n\",\n        \"    \\\"groom, bridegroom\\\",\\n\",\n        \"    \\\"scuba diver\\\",\\n\",\n        \"    \\\"rapeseed\\\",\\n\",\n        \"    \\\"daisy\\\",\\n\",\n        \"    \\\"yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum\\\",\\n\",\n        \"    \\\"corn\\\",\\n\",\n        \"    \\\"acorn\\\",\\n\",\n        \"    \\\"hip, rose hip, rosehip\\\",\\n\",\n        \"    \\\"buckeye, horse chestnut, conker\\\",\\n\",\n        \"    \\\"coral fungus\\\",\\n\",\n        \"    \\\"agaric\\\",\\n\",\n        \"    \\\"gyromitra\\\",\\n\",\n        \"    \\\"stinkhorn, carrion fungus\\\",\\n\",\n        \"    \\\"earthstar\\\",\\n\",\n        \"    \\\"hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa\\\",\\n\",\n        \"    \\\"bolete\\\",\\n\",\n        \"    \\\"ear, spike, capitulum\\\",\\n\",\n        \"    \\\"toilet tissue, toilet paper, bathroom tissue\\\",\\n\",\n        \"]\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"MAfLTtEXeE3-\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# dalmation.jpg is obtained from Getty Images under license\\n\",\n        \"# (https://www.gettyimages.co.uk/eula#RF).\\n\",\n        \"\\n\",\n        \"!wget -O dog.jpg https://storage.googleapis.com/perceiver_io/dalmation.jpg\\n\",\n        \"with open('dog.jpg', 'rb') as f:\\n\",\n        \"  img = imageio.imread(f)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"Z7ZQJ2auy4Lt\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Image Utility Functions\\n\",\n        \"\\n\",\n        \"MEAN_RGB = (0.485 * 255, 0.456 * 255, 0.406 * 255)\\n\",\n        \"STDDEV_RGB = (0.229 * 255, 0.224 * 255, 0.225 * 255)\\n\",\n        \"\\n\",\n        \"def normalize(im):\\n\",\n        \"  return (im - np.array(MEAN_RGB)) / np.array(STDDEV_RGB)\\n\",\n        \"\\n\",\n        \"def resize_and_center_crop(image):\\n\",\n        \"  \\\"\\\"\\\"Crops to center of image with padding then scales.\\\"\\\"\\\"\\n\",\n        \"  shape = image.shape\\n\",\n        \"\\n\",\n        \"  image_height = shape[0]\\n\",\n        \"  image_width = shape[1]\\n\",\n        \"\\n\",\n        \"  padded_center_crop_size = ((224 / (224 + 32)) *\\n\",\n        \"       np.minimum(image_height, image_width).astype(np.float32)).astype(np.int32)\\n\",\n        \"\\n\",\n        \"  offset_height = ((image_height - padded_center_crop_size) + 1) // 2\\n\",\n        \"  offset_width = ((image_width - padded_center_crop_size) + 1) // 2\\n\",\n        \"  crop_window = [offset_height, offset_width,\\n\",\n        \"                 padded_center_crop_size, padded_center_crop_size]\\n\",\n        \"\\n\",\n        \"  # image = tf.image.crop_to_bounding_box(image_bytes, *crop_window)\\n\",\n        \"  image = image[crop_window[0]:crop_window[0] + crop_window[2], crop_window[1]:crop_window[1]+crop_window[3]]\\n\",\n        \"  return cv2.resize(image, (224, 224), interpolation=cv2.INTER_CUBIC)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"FfWpBNZJLib4\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Imagenet classification\\n\",\n        \"\\n\",\n        \"# Obtain a [224, 224] crop of the image while preserving aspect ratio.\\n\",\n        \"# With Fourier position encoding, no resize is needed -- the model can\\n\",\n        \"# generalize to image sizes it never saw in training\\n\",\n        \"centered_img = resize_and_center_crop(img)  # img\\n\",\n        \"logits, _ = imagenet_classifier.apply(params, state, rng, CONFIGS[model_type], normalize(centered_img)[None])\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"vy75nEs6PdYO\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"_, indices = jax.lax.top_k(logits[0], 5)\\n\",\n        \"probs = jax.nn.softmax(logits[0])\\n\",\n        \"\\n\",\n        \"plt.imshow(img)\\n\",\n        \"plt.axis('off')\\n\",\n        \"print('Top 5 labels:')\\n\",\n        \"for i in list(indices):\\n\",\n        \"  print(f'{IMAGENET_LABELS[i]}: {probs[i]}')\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"last_runtime\": {\n        \"build_target\": \"//learning/deepmind/dm_python:dm_notebook3\",\n        \"kind\": \"private\"\n      },\n      \"name\": \"Perceiver IO: ImageNet Classification.ipynb\",\n      \"private_outputs\": true,\n      \"provenance\": [\n        {\n          \"file_id\": \"13GmNq76sKk9-gQSxpiaYg-ASC4rFQkIk\",\n          \"timestamp\": 1627599827239\n        },\n        {\n          \"file_id\": \"1bt4J3-jS7C-xZQrtx0AgAeKSBxOUoOPy\",\n          \"timestamp\": 1627592566036\n        }\n      ],\n      \"toc_visible\": true\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    },\n    \"language_info\": {\n      \"name\": \"python\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "perceiver/colabs/masked_language_modelling.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"uFsBlyxwmRq2\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Copyright 2021 DeepMind Technologies Limited\\n\",\n        \"#\\n\",\n        \"# Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"# you may not use this file except in compliance with the License.\\n\",\n        \"# You may obtain a copy of the License at\\n\",\n        \"#\\n\",\n        \"#     https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"#\\n\",\n        \"# Unless required by applicable law or agreed to in writing, software\\n\",\n        \"# distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"# See the License for the specific language governing permissions and\\n\",\n        \"# limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"rmw6HSr7xZvZ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Install dependencies for Google Colab.\\n\",\n        \"# If you want to run this notebook on your own machine, you can skip this cell\\n\",\n        \"!pip install dm-haiku\\n\",\n        \"!pip install einops\\n\",\n        \"\\n\",\n        \"!mkdir /content/perceiver\\n\",\n        \"!touch /content/perceiver/__init__.py\\n\",\n        \"!wget -O /content/perceiver/bytes_tokenizer.py https://raw.githubusercontent.com/deepmind/deepmind-research/master/perceiver/bytes_tokenizer.py\\n\",\n        \"!wget -O /content/perceiver/io_processors.py https://raw.githubusercontent.com/deepmind/deepmind-research/master/perceiver/io_processors.py\\n\",\n        \"!wget -O /content/perceiver/perceiver.py https://raw.githubusercontent.com/deepmind/deepmind-research/master/perceiver/perceiver.py\\n\",\n        \"!wget -O /content/perceiver/position_encoding.py https://raw.githubusercontent.com/deepmind/deepmind-research/master/perceiver/position_encoding.py\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"IBVh06qUojjm\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Import\\n\",\n        \"from typing import Union\\n\",\n        \"\\n\",\n        \"import haiku as hk\\n\",\n        \"import jax\\n\",\n        \"import jax.numpy as jnp\\n\",\n        \"import numpy as np\\n\",\n        \"import pickle\\n\",\n        \"\\n\",\n        \"from perceiver import perceiver, position_encoding, io_processors, bytes_tokenizer\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"sFa-lRuVfKZt\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Load parameters from checkpoint\\n\",\n        \"!wget -O language_perceiver_io_bytes.pickle https://storage.googleapis.com/perceiver_io/language_perceiver_io_bytes.pickle\\n\",\n        \"\\n\",\n        \"with open(\\\"language_perceiver_io_bytes.pickle\\\", \\\"rb\\\") as f:\\n\",\n        \"  params = pickle.loads(f.read())\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"LBzQQ7t_VCBo\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Model config\\n\",\n        \"D_MODEL = 768\\n\",\n        \"D_LATENTS = 1280\\n\",\n        \"MAX_SEQ_LEN = 2048\\n\",\n        \"\\n\",\n        \"encoder_config = dict(\\n\",\n        \"    num_self_attends_per_block=26,\\n\",\n        \"    num_blocks=1,\\n\",\n        \"    z_index_dim=256,\\n\",\n        \"    num_z_channels=D_LATENTS,\\n\",\n        \"    num_self_attend_heads=8,\\n\",\n        \"    num_cross_attend_heads=8,\\n\",\n        \"    qk_channels=8 * 32,\\n\",\n        \"    v_channels=D_LATENTS,\\n\",\n        \"    use_query_residual=True,\\n\",\n        \"    cross_attend_widening_factor=1,\\n\",\n        \"    self_attend_widening_factor=1)\\n\",\n        \"\\n\",\n        \"decoder_config = dict(\\n\",\n        \"    output_num_channels=D_LATENTS,\\n\",\n        \"    position_encoding_type='trainable',\\n\",\n        \"    output_index_dims=MAX_SEQ_LEN,\\n\",\n        \"    num_z_channels=D_LATENTS,\\n\",\n        \"    qk_channels=8 * 32,\\n\",\n        \"    v_channels=D_MODEL,\\n\",\n        \"    num_heads=8,\\n\",\n        \"    final_project=False,\\n\",\n        \"    use_query_residual=False,\\n\",\n        \"    trainable_position_encoding_kwargs=dict(num_channels=D_MODEL))\\n\",\n        \"\\n\",\n        \"# The tokenizer is just UTF-8 encoding (with an offset)\\n\",\n        \"tokenizer = bytes_tokenizer.BytesTokenizer()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"EWOeFoF0aCaT\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Decoding Perceiver Model\\n\",\n        \"def apply_perceiver(\\n\",\n        \"    inputs: jnp.ndarray, input_mask: jnp.ndarray) -\\u003e jnp.ndarray:\\n\",\n        \"  \\\"\\\"\\\"Runs a forward pass on the Perceiver.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    inputs: input bytes, an int array of shape [B, T]\\n\",\n        \"    input_mask: Array of shape indicating which entries are valid and which are\\n\",\n        \"      masked. A truthy value indicates that the entry is valid.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    The output logits, an array of shape [B, T, vocab_size].\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  assert inputs.shape[1] == MAX_SEQ_LEN\\n\",\n        \"\\n\",\n        \"  embedding_layer = hk.Embed(\\n\",\n        \"      vocab_size=tokenizer.vocab_size,\\n\",\n        \"      embed_dim=D_MODEL)\\n\",\n        \"  embedded_inputs = embedding_layer(inputs)\\n\",\n        \"\\n\",\n        \"  batch_size = embedded_inputs.shape[0]\\n\",\n        \"\\n\",\n        \"  input_pos_encoding = perceiver.position_encoding.TrainablePositionEncoding(\\n\",\n        \"      index_dim=MAX_SEQ_LEN, num_channels=D_MODEL)\\n\",\n        \"  embedded_inputs = embedded_inputs + input_pos_encoding(batch_size)\\n\",\n        \"  perceiver_mod = perceiver.Perceiver(\\n\",\n        \"      encoder=perceiver.PerceiverEncoder(**encoder_config),\\n\",\n        \"      decoder=perceiver.BasicDecoder(**decoder_config))\\n\",\n        \"  output_embeddings = perceiver_mod(\\n\",\n        \"      embedded_inputs, is_training=False, input_mask=input_mask, query_mask=input_mask)\\n\",\n        \"\\n\",\n        \"  logits = io_processors.EmbeddingDecoder(\\n\",\n        \"      embedding_matrix=embedding_layer.embeddings)(output_embeddings)\\n\",\n        \"  return logits\\n\",\n        \"\\n\",\n        \"apply_perceiver = hk.transform(apply_perceiver).apply\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Pna1ZXEyOJZb\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"input_str = \\\"This is an incomplete sentence where some words are missing.\\\"\\n\",\n        \"input_tokens = tokenizer.to_int(input_str)\\n\",\n        \"\\n\",\n        \"# Mask \\\" missing.\\\". Note that the model performs much better if the masked chunk\\n\",\n        \"# starts with a space.\\n\",\n        \"input_tokens[51:60] = tokenizer.mask_token\\n\",\n        \"print(\\\"Tokenized string without masked bytes:\\\")\\n\",\n        \"print(tokenizer.to_string(input_tokens))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"6TCMuVUabnTg\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Pad and reshape inputs\\n\",\n        \"inputs = input_tokens[None]\\n\",\n        \"input_mask = np.ones_like(inputs)\\n\",\n        \"\\n\",\n        \"def pad(max_sequence_length: int, inputs, input_mask):\\n\",\n        \"  input_len = inputs.shape[1]\\n\",\n        \"  assert input_len \\u003c= max_sequence_length\\n\",\n        \"  pad_len = max_sequence_length - input_len\\n\",\n        \"  padded_inputs = np.pad(\\n\",\n        \"      inputs,\\n\",\n        \"      pad_width=((0, 0), (0, pad_len)),\\n\",\n        \"      constant_values=tokenizer.pad_token)\\n\",\n        \"  padded_mask = np.pad(\\n\",\n        \"      input_mask,\\n\",\n        \"      pad_width=((0, 0), (0, pad_len)),\\n\",\n        \"      constant_values=0)\\n\",\n        \"  return padded_inputs, padded_mask\\n\",\n        \"\\n\",\n        \"inputs, input_mask = pad(MAX_SEQ_LEN, inputs, input_mask)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"ipZs6p0Xk3lb\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"rng = jax.random.PRNGKey(1)  # Unused\\n\",\n        \"\\n\",\n        \"out = apply_perceiver(params, rng=rng, inputs=inputs, input_mask=input_mask)\\n\",\n        \"\\n\",\n        \"masked_tokens_predictions = out[0, 51:60].argmax(axis=-1)\\n\",\n        \"print(\\\"Greedy predictions:\\\")\\n\",\n        \"print(masked_tokens_predictions)\\n\",\n        \"print()\\n\",\n        \"print(\\\"Predicted string:\\\")\\n\",\n        \"print(tokenizer.to_string(masked_tokens_predictions))\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"last_runtime\": {\n        \"build_target\": \"//learning/deepmind/dm_python:dm_notebook3\",\n        \"kind\": \"private\"\n      },\n      \"name\": \"Perceiver IO: Masked Language Modelling\",\n      \"private_outputs\": true,\n      \"provenance\": [\n        {\n          \"file_id\": \"1N31dQM-SzjG-_acz405i3jCR_m6D4bq8\",\n          \"timestamp\": 1627567455889\n        }\n      ],\n      \"toc_visible\": true\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    },\n    \"language_info\": {\n      \"name\": \"python\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "perceiver/colabs/optical_flow.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"AEigJ-mOGOk9\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Copyright 2021 DeepMind Technologies Limited\\n\",\n        \"#\\n\",\n        \"# Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"# you may not use this file except in compliance with the License.\\n\",\n        \"# You may obtain a copy of the License at\\n\",\n        \"#\\n\",\n        \"#     https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"#\\n\",\n        \"# Unless required by applicable law or agreed to in writing, software\\n\",\n        \"# distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"# See the License for the specific language governing permissions and\\n\",\n        \"# limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"YyGBRVPJxLzo\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Install dependencies for Google Colab.\\n\",\n        \"# If you want to run this notebook on your own machine, you can skip this cell\\n\",\n        \"!pip install dm-haiku\\n\",\n        \"!pip install einops\\n\",\n        \"\\n\",\n        \"!mkdir /content/perceiver\\n\",\n        \"!touch /content/perceiver/__init__.py\\n\",\n        \"!wget -O /content/perceiver/io_processors.py https://raw.githubusercontent.com/deepmind/deepmind-research/master/perceiver/io_processors.py\\n\",\n        \"!wget -O /content/perceiver/perceiver.py https://raw.githubusercontent.com/deepmind/deepmind-research/master/perceiver/perceiver.py\\n\",\n        \"!wget -O /content/perceiver/position_encoding.py https://raw.githubusercontent.com/deepmind/deepmind-research/master/perceiver/position_encoding.py\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"VHzUTH5KqNEt\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Imports\\n\",\n        \"\\n\",\n        \"import functools\\n\",\n        \"import itertools\\n\",\n        \"import pickle\\n\",\n        \"\\n\",\n        \"import haiku as hk\\n\",\n        \"import jax\\n\",\n        \"import jax.numpy as jnp\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"import numpy as np\\n\",\n        \"\\n\",\n        \"import cv2\\n\",\n        \"import imageio\\n\",\n        \"\\n\",\n        \"from perceiver import perceiver, io_processors\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"uxeP5yit7hJg\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Model construction\\n\",\n        \"\\n\",\n        \"FLOW_SCALE_FACTOR = 20\\n\",\n        \"# The network assumes images are of the following size\\n\",\n        \"TRAIN_SIZE = (368, 496)\\n\",\n        \"\\n\",\n        \"def optical_flow(images):\\n\",\n        \"  \\\"\\\"\\\"Perceiver IO model for optical flow.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    images: Array of two stacked images, of shape [B, 2, H, W, C]\\n\",\n        \"  Returns:\\n\",\n        \"    Optical flow field, of shape [B, H, W, 2].\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  input_preprocessor = io_processors.ImagePreprocessor(\\n\",\n        \"      position_encoding_type='fourier',\\n\",\n        \"      fourier_position_encoding_kwargs=dict(\\n\",\n        \"          num_bands=64,\\n\",\n        \"          max_resolution=TRAIN_SIZE,\\n\",\n        \"          sine_only=False,\\n\",\n        \"          concat_pos=True,\\n\",\n        \"      ),\\n\",\n        \"      n_extra_pos_mlp=0,\\n\",\n        \"      prep_type='patches',\\n\",\n        \"      spatial_downsample=1,\\n\",\n        \"      conv_after_patching=True,\\n\",\n        \"      temporal_downsample=2)\\n\",\n        \"\\n\",\n        \"  encoder = encoder = perceiver.PerceiverEncoder(\\n\",\n        \"      num_self_attends_per_block=24,\\n\",\n        \"      # Weights won't be shared if num_blocks is set to 1.\\n\",\n        \"      num_blocks=1,\\n\",\n        \"      z_index_dim=2048,\\n\",\n        \"      num_cross_attend_heads=1,\\n\",\n        \"      num_z_channels=512,\\n\",\n        \"      num_self_attend_heads=16,\\n\",\n        \"      cross_attend_widening_factor=1,\\n\",\n        \"      self_attend_widening_factor=1,\\n\",\n        \"      dropout_prob=0.0,\\n\",\n        \"      z_pos_enc_init_scale=0.02,\\n\",\n        \"      cross_attention_shape_for_attn='kv',\\n\",\n        \"      name='perceiver_encoder')\\n\",\n        \"\\n\",\n        \"  decoder = perceiver.FlowDecoder(\\n\",\n        \"      TRAIN_SIZE,\\n\",\n        \"      rescale_factor=100.0,\\n\",\n        \"      use_query_residual=False,\\n\",\n        \"      output_num_channels=2,\\n\",\n        \"      output_w_init=jnp.zeros,\\n\",\n        \"      # We query the decoder using the first frame features\\n\",\n        \"      # rather than a standard decoder position encoding.\\n\",\n        \"      position_encoding_type='fourier',\\n\",\n        \"      fourier_position_encoding_kwargs=dict(\\n\",\n        \"          concat_pos=True,\\n\",\n        \"          max_resolution=TRAIN_SIZE,\\n\",\n        \"          num_bands=64,\\n\",\n        \"          sine_only=False\\n\",\n        \"      )\\n\",\n        \"  )\\n\",\n        \"\\n\",\n        \"  model = perceiver.Perceiver(\\n\",\n        \"      input_preprocessor=input_preprocessor,\\n\",\n        \"      encoder=encoder,\\n\",\n        \"      decoder=decoder,\\n\",\n        \"      output_postprocessor=None)\\n\",\n        \"\\n\",\n        \"  return model(io_processors.patches_for_flow(images),\\n\",\n        \"               is_training=False) * FLOW_SCALE_FACTOR\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"optical_flow = hk.transform(optical_flow)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"dmvRv3o-6ASw\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Function to compute flow between pairs of images\\n\",\n        \"\\n\",\n        \"# If you encounter GPU memory errors while running the function below,\\n\",\n        \"# you can run it on the CPU instead:\\n\",\n        \"# _apply_optical_flow_model = jax.jit(optical_flow.apply, backend=\\\"cpu\\\")\\n\",\n        \"_apply_optical_flow_model = jax.jit(optical_flow.apply)\\n\",\n        \"\\n\",\n        \"def compute_grid_indices(image_shape, patch_size=TRAIN_SIZE, min_overlap=20):\\n\",\n        \"  if min_overlap \\u003e= TRAIN_SIZE[0] or min_overlap \\u003e= TRAIN_SIZE[1]:\\n\",\n        \"    raise ValueError(\\n\",\n        \"        f\\\"Overlap should be less than size of patch (got {min_overlap}\\\"\\n\",\n        \"        f\\\"for patch size {patch_size}).\\\")\\n\",\n        \"  ys = list(range(0, image_shape[0], TRAIN_SIZE[0] - min_overlap))\\n\",\n        \"  xs = list(range(0, image_shape[1], TRAIN_SIZE[1] - min_overlap))\\n\",\n        \"  # Make sure the final patch is flush with the image boundary\\n\",\n        \"  ys[-1] = image_shape[0] - patch_size[0]\\n\",\n        \"  xs[-1] = image_shape[1] - patch_size[1]\\n\",\n        \"  return itertools.product(ys, xs)\\n\",\n        \"\\n\",\n        \"def compute_optical_flow(params, rng, img1, img2, grid_indices,\\n\",\n        \"                       patch_size=TRAIN_SIZE):\\n\",\n        \"  \\\"\\\"\\\"Function to compute optical flow between two images.\\n\",\n        \"\\n\",\n        \"  To compute the flow between images of arbitrary sizes, we divide the image\\n\",\n        \"  into patches, compute the flow for each patch, and stitch the flows together.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    params: model parameters\\n\",\n        \"    rng: jax.random.PRNGKey, not used in this model\\n\",\n        \"    img1: first image\\n\",\n        \"    img2: second image\\n\",\n        \"    grid_indices: indices of the upper left corner for each patch.\\n\",\n        \"    patch_size: size of patch, should be TRAIN_SIZE.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  imgs = jnp.stack([img1, img2], axis=0)[None]\\n\",\n        \"  height = imgs.shape[-3]\\n\",\n        \"  width = imgs.shape[-2]\\n\",\n        \"\\n\",\n        \"  if height \\u003c patch_size[0]:\\n\",\n        \"    raise ValueError(\\n\",\n        \"        f\\\"Height of image (shape: {imgs.shape}) must be at least {patch_size[0]}.\\\"\\n\",\n        \"        \\\"Please pad or resize your image to the minimum dimension.\\\"\\n\",\n        \"    )\\n\",\n        \"  if width \\u003c patch_size[1]:\\n\",\n        \"    raise ValueError(\\n\",\n        \"        f\\\"Width of image (shape: {imgs.shape}) must be at least {patch_size[1]}.\\\"\\n\",\n        \"        \\\"Please pad or resize your image to the minimum dimension.\\\"\\n\",\n        \"    )\\n\",\n        \"\\n\",\n        \"  flows = 0\\n\",\n        \"  flow_count = 0\\n\",\n        \"\\n\",\n        \"  for y, x in grid_indices:\\n\",\n        \"    inp_piece = imgs[..., y : y + patch_size[0],\\n\",\n        \"                     x : x + patch_size[1], :]\\n\",\n        \"    flow_piece = _apply_optical_flow_model(params, rng, inp_piece)\\n\",\n        \"    weights_x, weights_y = jnp.meshgrid(\\n\",\n        \"        jnp.arange(patch_size[1]), jnp.arange(patch_size[0]))\\n\",\n        \"\\n\",\n        \"    weights_x = jnp.minimum(weights_x + 1, patch_size[1] - weights_x)\\n\",\n        \"    weights_y = jnp.minimum(weights_y + 1, patch_size[0] - weights_y)\\n\",\n        \"    weights = jnp.minimum(weights_x, weights_y)[jnp.newaxis, :, :,\\n\",\n        \"                                                jnp.newaxis]\\n\",\n        \"    padding = [(0, 0), (y, height - y - patch_size[0]),\\n\",\n        \"               (x, width - x - patch_size[1]), (0, 0)]\\n\",\n        \"    flows += jnp.pad(flow_piece * weights, padding)\\n\",\n        \"    flow_count += jnp.pad(weights, padding)\\n\",\n        \"\\n\",\n        \"  flows /= flow_count\\n\",\n        \"  return flows\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"EVRWatw4LXFx\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Load parameters from checkpoint\\n\",\n        \"\\n\",\n        \"!wget -O optical_flow_checkpoint.pystate https://storage.googleapis.com/perceiver_io/optical_flow_checkpoint.pystate\\n\",\n        \"\\n\",\n        \"rng = jax.random.PRNGKey(42)\\n\",\n        \"with open(\\\"optical_flow_checkpoint.pystate\\\", \\\"rb\\\") as f:\\n\",\n        \"  params = pickle.loads(f.read())\\n\",\n        \"\\n\",\n        \"state = {}\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"MAfLTtEXeE3-\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Download two example frames from the Sintel dataset.\\n\",\n        \"# These files are obtained from the Sintel dataset test split,\\n\",\n        \"# downloaded from http://sintel.is.tue.mpg.de/downloads.\\n\",\n        \"# They correspond to MPI-Sintel-testing/test/clean/cave_3/frame_0001.png\\n\",\n        \"# and MPI-Sintel-testing/test/clean/cave_3/frame_0002.png.\\n\",\n        \"#\\n\",\n        \"# Citation for Sintel dataset:\\n\",\n        \"# D. J. Butler, J. Wulff, G. B. Stanley, and M. J. Black.\\n\",\n        \"# A naturalistic open source movie for optical flow evaluation.\\n\",\n        \"# European Conf. on Computer Vision (ECCV), 2012.\\n\",\n        \"# https://files.is.tue.mpg.de/black/papers/ButlerECCV2012.pdf\\n\",\n        \"#\\n\",\n        \"# The Sintel images are originally generated for the Durian Open Movie project\\n\",\n        \"# and are licensed under the Creative Commons Attribution 3.0 license (https://durian.blender.org/sharing/).\\n\",\n        \"# The images are copyrighted by the Blender Foundation (https://durian.blender.org).\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"!wget -O sintel_frame1.png https://storage.googleapis.com/perceiver_io/sintel_frame1.png\\n\",\n        \"!wget -O sintel_frame2.png https://storage.googleapis.com/perceiver_io/sintel_frame2.png\\n\",\n        \"\\n\",\n        \"with open(\\\"sintel_frame1.png\\\", \\\"rb\\\") as f:\\n\",\n        \"  im1 = imageio.imread(f)\\n\",\n        \"with open(\\\"sintel_frame2.png\\\", \\\"rb\\\") as f:\\n\",\n        \"  im2 = imageio.imread(f)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"Z7ZQJ2auy4Lt\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Image Utility Functions\\n\",\n        \"\\n\",\n        \"def normalize(im):\\n\",\n        \"  return im / 255.0 * 2 - 1\\n\",\n        \"\\n\",\n        \"def visualize_flow(flow):\\n\",\n        \"  flow = np.array(flow)\\n\",\n        \"  # Use Hue, Saturation, Value colour model \\n\",\n        \"  hsv = np.zeros((flow.shape[0], flow.shape[1], 3), dtype=np.uint8)\\n\",\n        \"  hsv[..., 2] = 255\\n\",\n        \"\\n\",\n        \"  mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1])\\n\",\n        \"  hsv[..., 0] = ang / np.pi / 2 * 180\\n\",\n        \"  hsv[..., 1] = np.clip(mag * 255 / 24, 0, 255)\\n\",\n        \"  bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)\\n\",\n        \"  plt.imshow(bgr)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"FfWpBNZJLib4\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Compute optical flow\\n\",\n        \"\\n\",\n        \"# Divide images into patches, compute flow between corresponding patches\\n\",\n        \"# of both images, and stitch the flows together\\n\",\n        \"grid_indices = compute_grid_indices(im1.shape)\\n\",\n        \"flow = compute_optical_flow(params, rng, normalize(im1), normalize(im2), grid_indices)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Bz7G04rmtHVI\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Visualize the computed flow\\n\",\n        \"visualize_flow(flow[0])\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"name\": \"Perceiver IO: Optical Flow Visualization.ipynb\",\n      \"private_outputs\": true,\n      \"provenance\": [\n        {\n          \"file_id\": \"1bt4J3-jS7C-xZQrtx0AgAeKSBxOUoOPy\",\n          \"timestamp\": 1627577366926\n        }\n      ],\n      \"toc_visible\": true\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    },\n    \"language_info\": {\n      \"name\": \"python\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "perceiver/colabs/video_autoencoding.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"6hVqbkgBFVKB\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Copyright 2021 DeepMind Technologies Limited\\n\",\n        \"#\\n\",\n        \"# Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"# you may not use this file except in compliance with the License.\\n\",\n        \"# You may obtain a copy of the License at\\n\",\n        \"#\\n\",\n        \"#     https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"#\\n\",\n        \"# Unless required by applicable law or agreed to in writing, software\\n\",\n        \"# distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"# See the License for the specific language governing permissions and\\n\",\n        \"# limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"sm0mo9ciwhKu\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Install dependencies for Google Colab.\\n\",\n        \"# If you want to run this notebook on your own machine, you can skip this cell\\n\",\n        \"!pip install dm-haiku\\n\",\n        \"!pip install einops\\n\",\n        \"\\n\",\n        \"!mkdir /content/perceiver\\n\",\n        \"!touch /content/perceiver/__init__.py\\n\",\n        \"!wget -O /content/perceiver/io_processors.py https://raw.githubusercontent.com/deepmind/deepmind-research/master/perceiver/io_processors.py\\n\",\n        \"!wget -O /content/perceiver/perceiver.py https://raw.githubusercontent.com/deepmind/deepmind-research/master/perceiver/perceiver.py\\n\",\n        \"!wget -O /content/perceiver/position_encoding.py https://raw.githubusercontent.com/deepmind/deepmind-research/master/perceiver/position_encoding.py\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"VHzUTH5KqNEt\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Imports\\n\",\n        \"\\n\",\n        \"import base64\\n\",\n        \"import functools\\n\",\n        \"import os\\n\",\n        \"import pickle\\n\",\n        \"import ssl\\n\",\n        \"import re\\n\",\n        \"import tempfile\\n\",\n        \"\\n\",\n        \"from urllib import request\\n\",\n        \"\\n\",\n        \"import cv2\\n\",\n        \"import haiku as hk\\n\",\n        \"import imageio\\n\",\n        \"import jax\\n\",\n        \"import jax.numpy as jnp\\n\",\n        \"import numpy as np\\n\",\n        \"import scipy.io.wavfile\\n\",\n        \"\\n\",\n        \"from IPython.display import HTML\\n\",\n        \"\\n\",\n        \"from perceiver import perceiver, io_processors\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"Bn1jTwkv3gHf\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Helper functions for the UCF101 dataset\\n\",\n        \"\\n\",\n        \"# Utilities to fetch videos from UCF101 dataset\\n\",\n        \"UCF_ROOT = 'https://www.crcv.ucf.edu/THUMOS14/UCF101/UCF101/'\\n\",\n        \"_VIDEO_LIST = None\\n\",\n        \"_CACHE_DIR = tempfile.mkdtemp()\\n\",\n        \"# As of July 2020, crcv.ucf.edu doesn't use a certificate accepted by the\\n\",\n        \"# default Colab environment anymore.\\n\",\n        \"unverified_context = ssl._create_unverified_context()\\n\",\n        \"\\n\",\n        \"def list_ucf_videos():\\n\",\n        \"  \\\"\\\"\\\"Lists videos available in UCF101 dataset.\\\"\\\"\\\"\\n\",\n        \"  global _VIDEO_LIST\\n\",\n        \"  if not _VIDEO_LIST:\\n\",\n        \"    index = request.urlopen(UCF_ROOT, context=unverified_context).read().decode('utf-8')\\n\",\n        \"    videos = re.findall('(v_[\\\\w_]+\\\\.avi)', index)\\n\",\n        \"    _VIDEO_LIST = sorted(set(videos))\\n\",\n        \"  return list(_VIDEO_LIST)\\n\",\n        \"\\n\",\n        \"def fetch_ucf_video(video):\\n\",\n        \"  \\\"\\\"\\\"Fetchs a video and cache into local filesystem.\\\"\\\"\\\"\\n\",\n        \"  cache_path = os.path.join(_CACHE_DIR, video)\\n\",\n        \"  if not os.path.exists(cache_path):\\n\",\n        \"    urlpath = request.urljoin(UCF_ROOT, video)\\n\",\n        \"    print('Fetching %s =\\u003e %s' % (urlpath, cache_path))\\n\",\n        \"    data = request.urlopen(urlpath, context=unverified_context).read()\\n\",\n        \"    open(cache_path, \\\"wb\\\").write(data)\\n\",\n        \"  return cache_path\\n\",\n        \"\\n\",\n        \"# Utilities to open video files using CV2\\n\",\n        \"def crop_center_square(frame):\\n\",\n        \"  y, x = frame.shape[0:2]\\n\",\n        \"  min_dim = min(y, x)\\n\",\n        \"  start_x = (x // 2) - (min_dim // 2)\\n\",\n        \"  start_y = (y // 2) - (min_dim // 2)\\n\",\n        \"  return frame[start_y:start_y+min_dim,start_x:start_x+min_dim]\\n\",\n        \"\\n\",\n        \"def load_video(path, max_frames=0, resize=(224, 224)):\\n\",\n        \"  cap = cv2.VideoCapture(path)\\n\",\n        \"  frames = []\\n\",\n        \"  try:\\n\",\n        \"    while True:\\n\",\n        \"      ret, frame = cap.read()\\n\",\n        \"      if not ret:\\n\",\n        \"        break\\n\",\n        \"      frame = crop_center_square(frame)\\n\",\n        \"      frame = cv2.resize(frame, resize)\\n\",\n        \"      frame = frame[:, :, [2, 1, 0]]\\n\",\n        \"      frames.append(frame)\\n\",\n        \"      \\n\",\n        \"      if len(frames) == max_frames:\\n\",\n        \"        break\\n\",\n        \"  finally:\\n\",\n        \"    cap.release()\\n\",\n        \"  return np.array(frames) / 255.0\\n\",\n        \"\\n\",\n        \"def to_gif(images):\\n\",\n        \"  converted_images = np.clip(images * 255, 0, 255).astype(np.uint8)\\n\",\n        \"  imageio.mimsave('./animation.gif', converted_images, fps=25)\\n\",\n        \"  with open('./animation.gif', 'rb') as f:\\n\",\n        \"    gif_64 = base64.b64encode(f.read()).decode('utf-8')\\n\",\n        \"  return HTML('\\u003cimg src=\\\"data:image/gif;base64,%s\\\"/\\u003e' % gif_64)\\n\",\n        \"\\n\",\n        \"def play_audio(data, sample_rate=48000):\\n\",\n        \"  scipy.io.wavfile.write('tmp_audio.wav', sample_rate, data)\\n\",\n        \"\\n\",\n        \"  with open('./tmp_audio.wav', 'rb') as f:\\n\",\n        \"    audio_64 = base64.b64encode(f.read()).decode('utf-8')\\n\",\n        \"  return HTML('\\u003caudio controls src=\\\"data:audio/wav;base64,%s\\\"/\\u003e' % audio_64)\\n\",\n        \"\\n\",\n        \"def table(elements):\\n\",\n        \"  row = ['\\u003ctd\\u003e%s\\u003c/td\\u003e' % el.data for el in elements]\\n\",\n        \"  return HTML('\\u003ctable\\u003e\\u003ctr\\u003e%s\\u003c/tr\\u003e\\u003c/table\\u003e' % ''.join(row))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"QqXUfdsF3iZ6\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Load video and audio from UCF\\n\",\n        \"\\n\",\n        \"video_names = list_ucf_videos()\\n\",\n        \"video_path = fetch_ucf_video(video_names[0])\\n\",\n        \"\\n\",\n        \"# Extract audio using FFMPEG and encode as pcm float wavfile (only format readable by scipy.io.wavfile).\\n\",\n        \"!yes | ffmpeg -i \\\"$video_path\\\"  -c copy  -f wav -map 0:a pcm_f32le -ar 48000 output.wav\\n\",\n        \"\\n\",\n        \"sample_rate, audio = scipy.io.wavfile.read(\\\"output.wav\\\")\\n\",\n        \"if audio.dtype == np.int16:\\n\",\n        \"  audio = audio.astype(np.float32) / 2**15\\n\",\n        \"elif audio.dtype != np.float32:\\n\",\n        \"  raise ValueError('Unexpected datatype. Model expects sound samples to lie in [-1, 1]')\\n\",\n        \"\\n\",\n        \"video = load_video(video_path)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"6hxYUvnpqD8Y\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Kinetics 700 Classes\\n\",\n        \"KINETICS_CLASSES = [\\\"abseiling\\\", \\\"acting in play\\\", \\\"adjusting glasses\\\", \\\"air drumming\\\", \\n\",\n        \"\\\"alligator wrestling\\\", \\\"answering questions\\\", \\\"applauding\\\", \\\"applying cream\\\", \\n\",\n        \"\\\"archaeological excavation\\\", \\\"archery\\\", \\\"arguing\\\", \\\"arm wrestling\\\", \\n\",\n        \"\\\"arranging flowers\\\", \\\"arresting\\\", \\\"assembling bicycle\\\", \\\"assembling computer\\\", \\n\",\n        \"\\\"attending conference\\\", \\\"auctioning\\\", \\\"baby waking up\\\", \\\"backflip (human)\\\", \\n\",\n        \"\\\"baking cookies\\\", \\\"bandaging\\\", \\\"barbequing\\\", \\\"bartending\\\", \\n\",\n        \"\\\"base jumping\\\", \\\"bathing dog\\\", \\\"battle rope training\\\", \\\"beatboxing\\\", \\n\",\n        \"\\\"bee keeping\\\", \\\"being excited\\\", \\\"being in zero gravity\\\", \\\"belly dancing\\\", \\n\",\n        \"\\\"bench pressing\\\", \\\"bending back\\\", \\\"bending metal\\\", \\\"biking through snow\\\", \\n\",\n        \"\\\"blasting sand\\\", \\\"blending fruit\\\", \\\"blowdrying hair\\\", \\\"blowing bubble gum\\\", \\n\",\n        \"\\\"blowing glass\\\", \\\"blowing leaves\\\", \\\"blowing nose\\\", \\\"blowing out candles\\\", \\n\",\n        \"\\\"bobsledding\\\", \\\"bodysurfing\\\", \\\"bookbinding\\\", \\\"bottling\\\", \\n\",\n        \"\\\"bouncing ball (not juggling)\\\", \\\"bouncing on bouncy castle\\\", \\\"bouncing on trampoline\\\", \\\"bowling\\\", \\n\",\n        \"\\\"braiding hair\\\", \\\"breading or breadcrumbing\\\", \\\"breakdancing\\\", \\\"breaking boards\\\", \\n\",\n        \"\\\"breaking glass\\\", \\\"breathing fire\\\", \\\"brush painting\\\", \\\"brushing floor\\\", \\n\",\n        \"\\\"brushing hair\\\", \\\"brushing teeth\\\", \\\"building cabinet\\\", \\\"building lego\\\", \\n\",\n        \"\\\"building sandcastle\\\", \\\"building shed\\\", \\\"bulldozing\\\", \\\"bungee jumping\\\", \\n\",\n        \"\\\"burping\\\", \\\"busking\\\", \\\"calculating\\\", \\\"calligraphy\\\", \\n\",\n        \"\\\"canoeing or kayaking\\\", \\\"capoeira\\\", \\\"capsizing\\\", \\\"card stacking\\\", \\n\",\n        \"\\\"card throwing\\\", \\\"carrying baby\\\", \\\"carrying weight\\\", \\\"cartwheeling\\\", \\n\",\n        \"\\\"carving ice\\\", \\\"carving marble\\\", \\\"carving pumpkin\\\", \\\"carving wood with a knife\\\", \\n\",\n        \"\\\"casting fishing line\\\", \\\"catching fish\\\", \\\"catching or throwing baseball\\\", \\\"catching or throwing frisbee\\\", \\n\",\n        \"\\\"catching or throwing softball\\\", \\\"celebrating\\\", \\\"changing gear in car\\\", \\\"changing oil\\\", \\n\",\n        \"\\\"changing wheel (not on bike)\\\", \\\"chasing\\\", \\\"checking tires\\\", \\\"checking watch\\\", \\n\",\n        \"\\\"cheerleading\\\", \\\"chewing gum\\\", \\\"chiseling stone\\\", \\\"chiseling wood\\\", \\n\",\n        \"\\\"chopping meat\\\", \\\"chopping wood\\\", \\\"clam digging\\\", \\\"clapping\\\", \\n\",\n        \"\\\"clay pottery making\\\", \\\"clean and jerk\\\", \\\"cleaning gutters\\\", \\\"cleaning pool\\\", \\n\",\n        \"\\\"cleaning shoes\\\", \\\"cleaning toilet\\\", \\\"cleaning windows\\\", \\\"climbing a rope\\\", \\n\",\n        \"\\\"climbing ladder\\\", \\\"climbing tree\\\", \\\"closing door\\\", \\\"coloring in\\\", \\n\",\n        \"\\\"combing hair\\\", \\\"contact juggling\\\", \\\"contorting\\\", \\\"cooking chicken\\\", \\n\",\n        \"\\\"cooking egg\\\", \\\"cooking on campfire\\\", \\\"cooking sausages (not on barbeque)\\\", \\\"cooking scallops\\\", \\n\",\n        \"\\\"cosplaying\\\", \\\"coughing\\\", \\\"counting money\\\", \\\"country line dancing\\\", \\n\",\n        \"\\\"cracking back\\\", \\\"cracking knuckles\\\", \\\"cracking neck\\\", \\\"crawling baby\\\", \\n\",\n        \"\\\"crocheting\\\", \\\"crossing eyes\\\", \\\"crossing river\\\", \\\"crying\\\", \\n\",\n        \"\\\"cumbia\\\", \\\"curling (sport)\\\", \\\"curling eyelashes\\\", \\\"curling hair\\\", \\n\",\n        \"\\\"cutting apple\\\", \\\"cutting cake\\\", \\\"cutting nails\\\", \\\"cutting orange\\\", \\n\",\n        \"\\\"cutting pineapple\\\", \\\"cutting watermelon\\\", \\\"dancing ballet\\\", \\\"dancing charleston\\\", \\n\",\n        \"\\\"dancing gangnam style\\\", \\\"dancing macarena\\\", \\\"deadlifting\\\", \\\"dealing cards\\\", \\n\",\n        \"\\\"decorating the christmas tree\\\", \\\"decoupage\\\", \\\"delivering mail\\\", \\\"digging\\\", \\n\",\n        \"\\\"dining\\\", \\\"directing traffic\\\", \\\"disc golfing\\\", \\\"diving cliff\\\", \\n\",\n        \"\\\"docking boat\\\", \\\"dodgeball\\\", \\\"doing aerobics\\\", \\\"doing jigsaw puzzle\\\", \\n\",\n        \"\\\"doing laundry\\\", \\\"doing nails\\\", \\\"doing sudoku\\\", \\\"drawing\\\", \\n\",\n        \"\\\"dribbling basketball\\\", \\\"drinking shots\\\", \\\"driving car\\\", \\\"driving tractor\\\", \\n\",\n        \"\\\"drooling\\\", \\\"drop kicking\\\", \\\"drumming fingers\\\", \\\"dumpster diving\\\", \\n\",\n        \"\\\"dunking basketball\\\", \\\"dyeing eyebrows\\\", \\\"dyeing hair\\\", \\\"eating burger\\\", \\n\",\n        \"\\\"eating cake\\\", \\\"eating carrots\\\", \\\"eating chips\\\", \\\"eating doughnuts\\\", \\n\",\n        \"\\\"eating hotdog\\\", \\\"eating ice cream\\\", \\\"eating nachos\\\", \\\"eating spaghetti\\\", \\n\",\n        \"\\\"eating watermelon\\\", \\\"egg hunting\\\", \\\"embroidering\\\", \\\"entering church\\\", \\n\",\n        \"\\\"exercising arm\\\", \\\"exercising with an exercise ball\\\", \\\"extinguishing fire\\\", \\\"faceplanting\\\", \\n\",\n        \"\\\"falling off bike\\\", \\\"falling off chair\\\", \\\"feeding birds\\\", \\\"feeding fish\\\", \\n\",\n        \"\\\"feeding goats\\\", \\\"fencing (sport)\\\", \\\"fidgeting\\\", \\\"filling cake\\\", \\n\",\n        \"\\\"filling eyebrows\\\", \\\"finger snapping\\\", \\\"fixing bicycle\\\", \\\"fixing hair\\\", \\n\",\n        \"\\\"flint knapping\\\", \\\"flipping bottle\\\", \\\"flipping pancake\\\", \\\"fly tying\\\", \\n\",\n        \"\\\"flying kite\\\", \\\"folding clothes\\\", \\\"folding napkins\\\", \\\"folding paper\\\", \\n\",\n        \"\\\"front raises\\\", \\\"frying vegetables\\\", \\\"gargling\\\", \\\"geocaching\\\", \\n\",\n        \"\\\"getting a haircut\\\", \\\"getting a piercing\\\", \\\"getting a tattoo\\\", \\\"giving or receiving award\\\", \\n\",\n        \"\\\"gold panning\\\", \\\"golf chipping\\\", \\\"golf driving\\\", \\\"golf putting\\\", \\n\",\n        \"\\\"gospel singing in church\\\", \\\"grinding meat\\\", \\\"grooming cat\\\", \\\"grooming dog\\\", \\n\",\n        \"\\\"grooming horse\\\", \\\"gymnastics tumbling\\\", \\\"hammer throw\\\", \\\"hand washing clothes\\\", \\n\",\n        \"\\\"head stand\\\", \\\"headbanging\\\", \\\"headbutting\\\", \\\"helmet diving\\\", \\n\",\n        \"\\\"herding cattle\\\", \\\"high fiving\\\", \\\"high jump\\\", \\\"high kick\\\", \\n\",\n        \"\\\"historical reenactment\\\", \\\"hitting baseball\\\", \\\"hockey stop\\\", \\\"holding snake\\\", \\n\",\n        \"\\\"home roasting coffee\\\", \\\"hopscotch\\\", \\\"hoverboarding\\\", \\\"huddling\\\", \\n\",\n        \"\\\"hugging (not baby)\\\", \\\"hugging baby\\\", \\\"hula hooping\\\", \\\"hurdling\\\", \\n\",\n        \"\\\"hurling (sport)\\\", \\\"ice climbing\\\", \\\"ice fishing\\\", \\\"ice skating\\\", \\n\",\n        \"\\\"ice swimming\\\", \\\"inflating balloons\\\", \\\"installing carpet\\\", \\\"ironing\\\", \\n\",\n        \"\\\"ironing hair\\\", \\\"javelin throw\\\", \\\"jaywalking\\\", \\\"jetskiing\\\", \\n\",\n        \"\\\"jogging\\\", \\\"juggling balls\\\", \\\"juggling fire\\\", \\\"juggling soccer ball\\\", \\n\",\n        \"\\\"jumping bicycle\\\", \\\"jumping into pool\\\", \\\"jumping jacks\\\", \\\"jumping sofa\\\", \\n\",\n        \"\\\"jumpstyle dancing\\\", \\\"karaoke\\\", \\\"kicking field goal\\\", \\\"kicking soccer ball\\\", \\n\",\n        \"\\\"kissing\\\", \\\"kitesurfing\\\", \\\"knitting\\\", \\\"krumping\\\", \\n\",\n        \"\\\"land sailing\\\", \\\"laughing\\\", \\\"lawn mower racing\\\", \\\"laying bricks\\\", \\n\",\n        \"\\\"laying concrete\\\", \\\"laying decking\\\", \\\"laying stone\\\", \\\"laying tiles\\\", \\n\",\n        \"\\\"leatherworking\\\", \\\"letting go of balloon\\\", \\\"licking\\\", \\\"lifting hat\\\", \\n\",\n        \"\\\"lighting candle\\\", \\\"lighting fire\\\", \\\"listening with headphones\\\", \\\"lock picking\\\", \\n\",\n        \"\\\"long jump\\\", \\\"longboarding\\\", \\\"looking at phone\\\", \\\"looking in mirror\\\", \\n\",\n        \"\\\"luge\\\", \\\"lunge\\\", \\\"making a cake\\\", \\\"making a sandwich\\\", \\n\",\n        \"\\\"making balloon shapes\\\", \\\"making bubbles\\\", \\\"making cheese\\\", \\\"making horseshoes\\\", \\n\",\n        \"\\\"making jewelry\\\", \\\"making latte art\\\", \\\"making paper aeroplanes\\\", \\\"making pizza\\\", \\n\",\n        \"\\\"making slime\\\", \\\"making snowman\\\", \\\"making sushi\\\", \\\"making tea\\\", \\n\",\n        \"\\\"making the bed\\\", \\\"marching\\\", \\\"marriage proposal\\\", \\\"massaging back\\\", \\n\",\n        \"\\\"massaging feet\\\", \\\"massaging legs\\\", \\\"massaging neck\\\", \\\"massaging person's head\\\", \\n\",\n        \"\\\"metal detecting\\\", \\\"milking cow\\\", \\\"milking goat\\\", \\\"mixing colours\\\", \\n\",\n        \"\\\"moon walking\\\", \\\"mopping floor\\\", \\\"mosh pit dancing\\\", \\\"motorcycling\\\", \\n\",\n        \"\\\"mountain climber (exercise)\\\", \\\"moving baby\\\", \\\"moving child\\\", \\\"moving furniture\\\", \\n\",\n        \"\\\"mowing lawn\\\", \\\"mushroom foraging\\\", \\\"needle felting\\\", \\\"news anchoring\\\", \\n\",\n        \"\\\"opening bottle (not wine)\\\", \\\"opening coconuts\\\", \\\"opening door\\\", \\\"opening present\\\", \\n\",\n        \"\\\"opening refrigerator\\\", \\\"opening wine bottle\\\", \\\"packing\\\", \\\"paragliding\\\", \\n\",\n        \"\\\"parasailing\\\", \\\"parkour\\\", \\\"passing American football (in game)\\\", \\\"passing American football (not in game)\\\", \\n\",\n        \"\\\"passing soccer ball\\\", \\\"peeling apples\\\", \\\"peeling banana\\\", \\\"peeling potatoes\\\", \\n\",\n        \"\\\"person collecting garbage\\\", \\\"petting animal (not cat)\\\", \\\"petting cat\\\", \\\"petting horse\\\", \\n\",\n        \"\\\"photobombing\\\", \\\"photocopying\\\", \\\"picking apples\\\", \\\"picking blueberries\\\", \\n\",\n        \"\\\"pillow fight\\\", \\\"pinching\\\", \\\"pirouetting\\\", \\\"planing wood\\\", \\n\",\n        \"\\\"planting trees\\\", \\\"plastering\\\", \\\"playing accordion\\\", \\\"playing american football\\\", \\n\",\n        \"\\\"playing badminton\\\", \\\"playing bagpipes\\\", \\\"playing basketball\\\", \\\"playing bass guitar\\\", \\n\",\n        \"\\\"playing beer pong\\\", \\\"playing billiards\\\", \\\"playing blackjack\\\", \\\"playing cards\\\", \\n\",\n        \"\\\"playing cello\\\", \\\"playing checkers\\\", \\\"playing chess\\\", \\\"playing clarinet\\\", \\n\",\n        \"\\\"playing controller\\\", \\\"playing cricket\\\", \\\"playing cymbals\\\", \\\"playing darts\\\", \\n\",\n        \"\\\"playing didgeridoo\\\", \\\"playing dominoes\\\", \\\"playing drums\\\", \\\"playing field hockey\\\", \\n\",\n        \"\\\"playing flute\\\", \\\"playing gong\\\", \\\"playing guitar\\\", \\\"playing hand clapping games\\\", \\n\",\n        \"\\\"playing harmonica\\\", \\\"playing harp\\\", \\\"playing ice hockey\\\", \\\"playing keyboard\\\", \\n\",\n        \"\\\"playing kickball\\\", \\\"playing laser tag\\\", \\\"playing lute\\\", \\\"playing mahjong\\\", \\n\",\n        \"\\\"playing maracas\\\", \\\"playing marbles\\\", \\\"playing monopoly\\\", \\\"playing netball\\\", \\n\",\n        \"\\\"playing nose flute\\\", \\\"playing oboe\\\", \\\"playing ocarina\\\", \\\"playing organ\\\", \\n\",\n        \"\\\"playing paintball\\\", \\\"playing pan pipes\\\", \\\"playing piano\\\", \\\"playing piccolo\\\", \\n\",\n        \"\\\"playing pinball\\\", \\\"playing ping pong\\\", \\\"playing poker\\\", \\\"playing polo\\\", \\n\",\n        \"\\\"playing recorder\\\", \\\"playing road hockey\\\", \\\"playing rounders\\\", \\\"playing rubiks cube\\\", \\n\",\n        \"\\\"playing saxophone\\\", \\\"playing scrabble\\\", \\\"playing shuffleboard\\\", \\\"playing slot machine\\\", \\n\",\n        \"\\\"playing squash or racquetball\\\", \\\"playing tennis\\\", \\\"playing trombone\\\", \\\"playing trumpet\\\", \\n\",\n        \"\\\"playing ukulele\\\", \\\"playing violin\\\", \\\"playing volleyball\\\", \\\"playing with trains\\\", \\n\",\n        \"\\\"playing xylophone\\\", \\\"poaching eggs\\\", \\\"poking bellybutton\\\", \\\"pole vault\\\", \\n\",\n        \"\\\"polishing furniture\\\", \\\"polishing metal\\\", \\\"popping balloons\\\", \\\"pouring beer\\\", \\n\",\n        \"\\\"pouring milk\\\", \\\"pouring wine\\\", \\\"preparing salad\\\", \\\"presenting weather forecast\\\", \\n\",\n        \"\\\"pretending to be a statue\\\", \\\"pull ups\\\", \\\"pulling espresso shot\\\", \\\"pulling rope (game)\\\", \\n\",\n        \"\\\"pumping fist\\\", \\\"pumping gas\\\", \\\"punching bag\\\", \\\"punching person (boxing)\\\", \\n\",\n        \"\\\"push up\\\", \\\"pushing car\\\", \\\"pushing cart\\\", \\\"pushing wheelbarrow\\\", \\n\",\n        \"\\\"pushing wheelchair\\\", \\\"putting in contact lenses\\\", \\\"putting on eyeliner\\\", \\\"putting on foundation\\\", \\n\",\n        \"\\\"putting on lipstick\\\", \\\"putting on mascara\\\", \\\"putting on sari\\\", \\\"putting on shoes\\\", \\n\",\n        \"\\\"putting wallpaper on wall\\\", \\\"raising eyebrows\\\", \\\"reading book\\\", \\\"reading newspaper\\\", \\n\",\n        \"\\\"recording music\\\", \\\"repairing puncture\\\", \\\"riding a bike\\\", \\\"riding camel\\\", \\n\",\n        \"\\\"riding elephant\\\", \\\"riding mechanical bull\\\", \\\"riding mule\\\", \\\"riding or walking with horse\\\", \\n\",\n        \"\\\"riding scooter\\\", \\\"riding snow blower\\\", \\\"riding unicycle\\\", \\\"ripping paper\\\", \\n\",\n        \"\\\"roasting marshmallows\\\", \\\"roasting pig\\\", \\\"robot dancing\\\", \\\"rock climbing\\\", \\n\",\n        \"\\\"rock scissors paper\\\", \\\"roller skating\\\", \\\"rolling eyes\\\", \\\"rolling pastry\\\", \\n\",\n        \"\\\"rope pushdown\\\", \\\"running on treadmill\\\", \\\"sailing\\\", \\\"salsa dancing\\\", \\n\",\n        \"\\\"saluting\\\", \\\"sanding floor\\\", \\\"sanding wood\\\", \\\"sausage making\\\", \\n\",\n        \"\\\"sawing wood\\\", \\\"scrambling eggs\\\", \\\"scrapbooking\\\", \\\"scrubbing face\\\", \\n\",\n        \"\\\"scuba diving\\\", \\\"seasoning food\\\", \\\"separating eggs\\\", \\\"setting table\\\", \\n\",\n        \"\\\"sewing\\\", \\\"shaking hands\\\", \\\"shaking head\\\", \\\"shaping bread dough\\\", \\n\",\n        \"\\\"sharpening knives\\\", \\\"sharpening pencil\\\", \\\"shaving head\\\", \\\"shaving legs\\\", \\n\",\n        \"\\\"shearing sheep\\\", \\\"shining flashlight\\\", \\\"shining shoes\\\", \\\"shoot dance\\\", \\n\",\n        \"\\\"shooting basketball\\\", \\\"shooting goal (soccer)\\\", \\\"shooting off fireworks\\\", \\\"shopping\\\", \\n\",\n        \"\\\"shot put\\\", \\\"shouting\\\", \\\"shoveling snow\\\", \\\"shredding paper\\\", \\n\",\n        \"\\\"shucking oysters\\\", \\\"shuffling cards\\\", \\\"shuffling feet\\\", \\\"side kick\\\", \\n\",\n        \"\\\"sieving\\\", \\\"sign language interpreting\\\", \\\"silent disco\\\", \\\"singing\\\", \\n\",\n        \"\\\"sipping cup\\\", \\\"situp\\\", \\\"skateboarding\\\", \\\"ski ballet\\\", \\n\",\n        \"\\\"ski jumping\\\", \\\"skiing crosscountry\\\", \\\"skiing mono\\\", \\\"skiing slalom\\\", \\n\",\n        \"\\\"skipping rope\\\", \\\"skipping stone\\\", \\\"skydiving\\\", \\\"slacklining\\\", \\n\",\n        \"\\\"slapping\\\", \\\"sled dog racing\\\", \\\"sleeping\\\", \\\"slicing onion\\\", \\n\",\n        \"\\\"smashing\\\", \\\"smelling feet\\\", \\\"smoking\\\", \\\"smoking hookah\\\", \\n\",\n        \"\\\"smoking pipe\\\", \\\"snatch weight lifting\\\", \\\"sneezing\\\", \\\"snorkeling\\\", \\n\",\n        \"\\\"snowboarding\\\", \\\"snowkiting\\\", \\\"snowmobiling\\\", \\\"somersaulting\\\", \\n\",\n        \"\\\"spelunking\\\", \\\"spinning plates\\\", \\\"spinning poi\\\", \\\"splashing water\\\", \\n\",\n        \"\\\"spray painting\\\", \\\"spraying\\\", \\\"springboard diving\\\", \\\"square dancing\\\", \\n\",\n        \"\\\"squat\\\", \\\"squeezing orange\\\", \\\"stacking cups\\\", \\\"stacking dice\\\", \\n\",\n        \"\\\"standing on hands\\\", \\\"staring\\\", \\\"steer roping\\\", \\\"steering car\\\", \\n\",\n        \"\\\"sticking tongue out\\\", \\\"stomping grapes\\\", \\\"stretching arm\\\", \\\"stretching leg\\\", \\n\",\n        \"\\\"sucking lolly\\\", \\\"surfing crowd\\\", \\\"surfing water\\\", \\\"surveying\\\", \\n\",\n        \"\\\"sweeping floor\\\", \\\"swimming backstroke\\\", \\\"swimming breast stroke\\\", \\\"swimming butterfly stroke\\\", \\n\",\n        \"\\\"swimming front crawl\\\", \\\"swimming with dolphins\\\", \\\"swimming with sharks\\\", \\\"swing dancing\\\", \\n\",\n        \"\\\"swinging baseball bat\\\", \\\"swinging on something\\\", \\\"sword fighting\\\", \\\"sword swallowing\\\", \\n\",\n        \"\\\"tackling\\\", \\\"tagging graffiti\\\", \\\"tai chi\\\", \\\"taking photo\\\", \\n\",\n        \"\\\"talking on cell phone\\\", \\\"tango dancing\\\", \\\"tap dancing\\\", \\\"tapping guitar\\\", \\n\",\n        \"\\\"tapping pen\\\", \\\"tasting beer\\\", \\\"tasting food\\\", \\\"tasting wine\\\", \\n\",\n        \"\\\"testifying\\\", \\\"texting\\\", \\\"threading needle\\\", \\\"throwing axe\\\", \\n\",\n        \"\\\"throwing ball (not baseball or American football)\\\", \\\"throwing discus\\\", \\\"throwing knife\\\", \\\"throwing snowballs\\\", \\n\",\n        \"\\\"throwing tantrum\\\", \\\"throwing water balloon\\\", \\\"tickling\\\", \\\"tie dying\\\", \\n\",\n        \"\\\"tightrope walking\\\", \\\"tiptoeing\\\", \\\"tobogganing\\\", \\\"tossing coin\\\", \\n\",\n        \"\\\"tossing salad\\\", \\\"training dog\\\", \\\"trapezing\\\", \\\"treating wood\\\", \\n\",\n        \"\\\"trimming or shaving beard\\\", \\\"trimming shrubs\\\", \\\"trimming trees\\\", \\\"triple jump\\\", \\n\",\n        \"\\\"twiddling fingers\\\", \\\"tying bow tie\\\", \\\"tying knot (not on a tie)\\\", \\\"tying necktie\\\", \\n\",\n        \"\\\"tying shoe laces\\\", \\\"unboxing\\\", \\\"uncorking champagne\\\", \\\"unloading truck\\\", \\n\",\n        \"\\\"using a microscope\\\", \\\"using a paint roller\\\", \\\"using a power drill\\\", \\\"using a sledge hammer\\\", \\n\",\n        \"\\\"using a wrench\\\", \\\"using atm\\\", \\\"using bagging machine\\\", \\\"using circular saw\\\", \\n\",\n        \"\\\"using inhaler\\\", \\\"using megaphone\\\", \\\"using puppets\\\", \\\"using remote controller (not gaming)\\\", \\n\",\n        \"\\\"using segway\\\", \\\"vacuuming car\\\", \\\"vacuuming floor\\\", \\\"visiting the zoo\\\", \\n\",\n        \"\\\"wading through mud\\\", \\\"wading through water\\\", \\\"waiting in line\\\", \\\"waking up\\\", \\n\",\n        \"\\\"walking on stilts\\\", \\\"walking the dog\\\", \\\"walking through snow\\\", \\\"walking with crutches\\\", \\n\",\n        \"\\\"washing dishes\\\", \\\"washing feet\\\", \\\"washing hair\\\", \\\"washing hands\\\", \\n\",\n        \"\\\"watching tv\\\", \\\"water skiing\\\", \\\"water sliding\\\", \\\"watering plants\\\", \\n\",\n        \"\\\"waving hand\\\", \\\"waxing armpits\\\", \\\"waxing back\\\", \\\"waxing chest\\\", \\n\",\n        \"\\\"waxing eyebrows\\\", \\\"waxing legs\\\", \\\"weaving basket\\\", \\\"weaving fabric\\\", \\n\",\n        \"\\\"welding\\\", \\\"whistling\\\", \\\"windsurfing\\\", \\\"winking\\\", \\n\",\n        \"\\\"wood burning (art)\\\", \\\"wrapping present\\\", \\\"wrestling\\\", \\\"writing\\\", \\n\",\n        \"\\\"yarn spinning\\\", \\\"yawning\\\", \\\"yoga\\\", \\\"zumba\\\"]\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"bQpSe7DMhuln\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Visualize inputs\\n\",\n        \"table([to_gif(video), play_audio(audio)])\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"uxeP5yit7hJg\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Model construction\\n\",\n        \"NUM_FRAMES = 16\\n\",\n        \"AUDIO_SAMPLES_PER_FRAME = 48000 // 25\\n\",\n        \"SAMPLES_PER_PATCH = 16\\n\",\n        \"NUM_CLASSES = 700\\n\",\n        \"IMG_SZ = 56\\n\",\n        \"\\n\",\n        \"def video_autoencoder(images, audio, subsampling):\\n\",\n        \"  n_audio_samples = NUM_FRAMES * AUDIO_SAMPLES_PER_FRAME\\n\",\n        \"  input_preprocessor = io_processors.MultimodalPreprocessor(\\n\",\n        \"      min_padding_size=4,\\n\",\n        \"      modalities={\\n\",\n        \"          'audio': io_processors.AudioPreprocessor(\\n\",\n        \"              position_encoding_type='fourier',\\n\",\n        \"              fourier_position_encoding_kwargs=dict(\\n\",\n        \"                  num_bands=192,\\n\",\n        \"                  max_resolution=(n_audio_samples,),\\n\",\n        \"                  sine_only=False,\\n\",\n        \"                  concat_pos=True,\\n\",\n        \"              ),\\n\",\n        \"              n_extra_pos_mlp=0,\\n\",\n        \"              prep_type='patches',\\n\",\n        \"              samples_per_patch=16),\\n\",\n        \"          'image': io_processors.ImagePreprocessor(\\n\",\n        \"              position_encoding_type='fourier',\\n\",\n        \"              fourier_position_encoding_kwargs=dict(\\n\",\n        \"                  num_bands=32,\\n\",\n        \"                  max_resolution=(NUM_FRAMES, IMG_SZ, IMG_SZ),\\n\",\n        \"                  sine_only=False,\\n\",\n        \"                  concat_pos=True,\\n\",\n        \"              ),\\n\",\n        \"              n_extra_pos_mlp=0,\\n\",\n        \"              prep_type='patches',\\n\",\n        \"              spatial_downsample=4,\\n\",\n        \"              temporal_downsample=1),\\n\",\n        \"          'label': io_processors.OneHotPreprocessor(),\\n\",\n        \"      },\\n\",\n        \"      mask_probs={'image': 0.0, 'audio': 0.0, 'label': 1.0},\\n\",\n        \"  )\\n\",\n        \"\\n\",\n        \"  output_postprocessor = io_processors.MultimodalPostprocessor(\\n\",\n        \"      modalities={\\n\",\n        \"          'audio': io_processors.AudioPostprocessor(\\n\",\n        \"              samples_per_patch=SAMPLES_PER_PATCH),\\n\",\n        \"          'image': io_processors.ProjectionPostprocessor(\\n\",\n        \"              num_outputs=3),\\n\",\n        \"          'label': io_processors.ClassificationPostprocessor(\\n\",\n        \"              num_classes=NUM_CLASSES),\\n\",\n        \"      })\\n\",\n        \"\\n\",\n        \"  encoder = encoder = perceiver.PerceiverEncoder(\\n\",\n        \"      num_self_attends_per_block=8,\\n\",\n        \"      # Weights won't be shared if num_blocks is set to 1.\\n\",\n        \"      num_blocks=1,\\n\",\n        \"      z_index_dim=28*28*1,\\n\",\n        \"      num_z_channels=512,\\n\",\n        \"      num_cross_attend_heads=1,\\n\",\n        \"      num_self_attend_heads=8,\\n\",\n        \"      cross_attend_widening_factor=1,\\n\",\n        \"      self_attend_widening_factor=1,\\n\",\n        \"      dropout_prob=0.0,\\n\",\n        \"      z_pos_enc_init_scale=0.02,\\n\",\n        \"      cross_attention_shape_for_attn='kv',\\n\",\n        \"      name='encoder')\\n\",\n        \"\\n\",\n        \"  subsampled_index_dims = {\\n\",\n        \"      'audio': subsampling['audio'].shape[0],\\n\",\n        \"      'image': subsampling['image'].shape[0],\\n\",\n        \"      'label': 1,\\n\",\n        \"  }\\n\",\n        \"  image_decoder = perceiver.BasicVideoAutoencodingDecoder(\\n\",\n        \"      # Autoencoding, don't pass inputs to the queries.\\n\",\n        \"      concat_preprocessed_input=False,\\n\",\n        \"      subsampled_index_dims=subsampling['image'],\\n\",\n        \"      output_shape=images.shape[:4],\\n\",\n        \"      num_z_channels=1024,\\n\",\n        \"      output_num_channels=512,\\n\",\n        \"      use_query_residual=False,\\n\",\n        \"      position_encoding_type='fourier',\\n\",\n        \"      fourier_position_encoding_kwargs=dict(\\n\",\n        \"          num_bands=32,\\n\",\n        \"          max_resolution=(NUM_FRAMES, IMG_SZ, IMG_SZ),\\n\",\n        \"          sine_only=False,\\n\",\n        \"          concat_pos=True,\\n\",\n        \"      ),\\n\",\n        \"  )\\n\",\n        \"\\n\",\n        \"  decoder = perceiver.MultimodalDecoder(\\n\",\n        \"      # Autoencoding, don't pass inputs to the queries.\\n\",\n        \"      concat_preprocessed_input=False,\\n\",\n        \"      subsampled_index_dims=subsampled_index_dims,\\n\",\n        \"      # Modality specific decoders are used ONLY to generate queries.\\n\",\n        \"      # All modalties are decoded together using a unified decoder.\\n\",\n        \"      modalities={\\n\",\n        \"          'audio': perceiver.BasicDecoder(\\n\",\n        \"              # Autoencoding, don't pass inputs to the queries.\\n\",\n        \"              concat_preprocessed_input=False,\\n\",\n        \"              subsampled_index_dims=subsampling['audio'],\\n\",\n        \"              output_index_dims=(n_audio_samples // SAMPLES_PER_PATCH,),\\n\",\n        \"              num_z_channels=1024,\\n\",\n        \"              output_num_channels=512,\\n\",\n        \"              use_query_residual=False,\\n\",\n        \"              position_encoding_type='fourier',\\n\",\n        \"              fourier_position_encoding_kwargs=dict(\\n\",\n        \"                  num_bands=192,\\n\",\n        \"                  max_resolution=(n_audio_samples,),\\n\",\n        \"                  sine_only=False,\\n\",\n        \"                  concat_pos=True,\\n\",\n        \"              ),\\n\",\n        \"           ),\\n\",\n        \"          'image': image_decoder,\\n\",\n        \"          'label': perceiver.ClassificationDecoder(\\n\",\n        \"              # Autoencoding, don't pass inputs to the queries.\\n\",\n        \"              concat_preprocessed_input=False,\\n\",\n        \"              num_classes=NUM_CLASSES,\\n\",\n        \"              num_z_channels=1024,\\n\",\n        \"              use_query_residual=False,\\n\",\n        \"              position_encoding_type='trainable',\\n\",\n        \"              trainable_position_encoding_kwargs=dict(\\n\",\n        \"                  num_channels=1024,\\n\",\n        \"                  init_scale=0.02,\\n\",\n        \"              ),\\n\",\n        \"          ),\\n\",\n        \"      },\\n\",\n        \"      num_outputs=None,\\n\",\n        \"      output_num_channels=512,\\n\",\n        \"      use_query_residual=False,)\\n\",\n        \"  \\n\",\n        \"  model = perceiver.Perceiver(\\n\",\n        \"      input_preprocessor=input_preprocessor,\\n\",\n        \"      encoder=encoder,\\n\",\n        \"      decoder=decoder,\\n\",\n        \"      output_postprocessor=output_postprocessor)\\n\",\n        \"  \\n\",\n        \"  return model({'image': images,\\n\",\n        \"                'audio': audio,\\n\",\n        \"                'label': np.zeros((images.shape[0], 700))},\\n\",\n        \"               is_training=False, subsampled_output_points=subsampling)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"video_autoencoder = hk.transform_with_state(video_autoencoder)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"N88EZZ7QHvbu\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Model application\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def autoencode_video(params, state, rng, images, audio):\\n\",\n        \"  nchunks = 128\\n\",\n        \"  reconstruction = {}\\n\",\n        \"  for chunk_idx in range(nchunks):\\n\",\n        \"    image_chunk_size = np.prod(images.shape[1:-1]) // nchunks\\n\",\n        \"    audio_chunk_size = audio.shape[1] // SAMPLES_PER_PATCH // nchunks\\n\",\n        \"    subsampling = {\\n\",\n        \"        'image': jnp.arange(\\n\",\n        \"            image_chunk_size * chunk_idx, image_chunk_size * (chunk_idx + 1)),\\n\",\n        \"        'audio': jnp.arange(\\n\",\n        \"            audio_chunk_size * chunk_idx, audio_chunk_size * (chunk_idx + 1)),\\n\",\n        \"        'label': None,\\n\",\n        \"    }\\n\",\n        \"    output, state = video_autoencoder.apply(\\n\",\n        \"        params, state, rng, images, audio, subsampling)\\n\",\n        \"    reconstruction['label'] = output['label']\\n\",\n        \"    if 'image' not in reconstruction:\\n\",\n        \"      reconstruction['image'] = output['image']\\n\",\n        \"      reconstruction['audio'] = output['audio']\\n\",\n        \"    else:\\n\",\n        \"      reconstruction['image'] = jnp.concatenate(\\n\",\n        \"          [reconstruction['image'], output['image']], axis=1)\\n\",\n        \"      reconstruction['audio'] = jnp.concatenate(\\n\",\n        \"          [reconstruction['audio'], output['audio']], axis=1)\\n\",\n        \"      \\n\",\n        \"  reconstruction['image'] = jnp.reshape(reconstruction['image'], images.shape)\\n\",\n        \"  reconstruction['audio'] = jnp.reshape(reconstruction['audio'], audio.shape)\\n\",\n        \"  return reconstruction\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"EVRWatw4LXFx\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Load parameters from checkpoint\\n\",\n        \"\\n\",\n        \"!wget -O video_autoencoding_checkpoint.pystate https://storage.googleapis.com/perceiver_io/video_autoencoding_checkpoint.pystate\\n\",\n        \"\\n\",\n        \"rng = jax.random.PRNGKey(42)\\n\",\n        \"with open(\\\"video_autoencoding_checkpoint.pystate\\\", \\\"rb\\\") as f:\\n\",\n        \"  params = pickle.loads(f.read())\\n\",\n        \"\\n\",\n        \"state = {}\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"FfWpBNZJLib4\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Auto-encode the first 16 frames of the video and one of the audio channels\\n\",\n        \"reconstruction = autoencode_video(params, state, rng, video[None, :16], audio[None, :16*AUDIO_SAMPLES_PER_FRAME, 0:1])\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"cZpggBTO4eO5\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Visualize reconstruction of first 16 frames\\n\",\n        \"table([to_gif(reconstruction[\\\"image\\\"][0]), play_audio(np.array(reconstruction[\\\"audio\\\"][0]))])\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"oTJzBsl6xkOP\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Kinetics 700 Labels\\n\",\n        \"scores, indices = jax.lax.top_k(jax.nn.softmax(reconstruction[\\\"label\\\"]), 5)\\n\",\n        \"\\n\",\n        \"for score, index in zip(scores[0], indices[0]):\\n\",\n        \"  print(\\\"%s: %s\\\" % (KINETICS_CLASSES[index], score))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"7JZRtQdwC4eE\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Auto-encode the entire video, one chunk at a time\\n\",\n        \"\\n\",\n        \"# Partial video and audio into 16-frame chunks\\n\",\n        \"nframes = video.shape[0]\\n\",\n        \"# Truncate to be divisible by 16\\n\",\n        \"nframes = nframes - (nframes % 16)\\n\",\n        \"video_chunks = jnp.reshape(video[:nframes], [nframes // 16, 16, 224, 224, 3])\\n\",\n        \"audio_chunks = jnp.reshape(audio[:nframes * AUDIO_SAMPLES_PER_FRAME],\\n\",\n        \"                           [nframes // 16, 16 * AUDIO_SAMPLES_PER_FRAME, 2])\\n\",\n        \"\\n\",\n        \"encode = jax.jit(functools.partial(autoencode_video, params, state, rng))\\n\",\n        \"\\n\",\n        \"# Logically, what we do is the following code. We write out the loop to allocate\\n\",\n        \"# GPU memory for only one chunk\\n\",\n        \"#\\n\",\n        \"# reconstruction = jax.vmap(encode, in_axes=1, out_axes=1)(\\n\",\n        \"#     video_chunks[None, :], audio_chunks[None, :, :, 0:1])\\n\",\n        \"\\n\",\n        \"chunks = []\\n\",\n        \"for i in range(nframes // 16):\\n\",\n        \"  reconstruction = encode(video_chunks[None, i], audio_chunks[None, i, :, 0:1])\\n\",\n        \"  chunks.append(jax.tree_map(lambda x: np.array(x), reconstruction))\\n\",\n        \"\\n\",\n        \"reconstruction = jax.tree_multimap(lambda *args: np.stack(args, axis=1),\\n\",\n        \"                                   *chunks)\\n\",\n        \"\\n\",\n        \"reconstruction = jax.tree_map(lambda x: np.reshape(x, [-1] + list(x.shape[2:])), reconstruction)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"lzwbz1mgES4d\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Visualize reconstruction of entire video\\n\",\n        \"table([to_gif(reconstruction['image'][0]), play_audio(np.array(reconstruction['audio'][0]))])\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"last_runtime\": {\n        \"build_target\": \"\",\n        \"kind\": \"local\"\n      },\n      \"name\": \"Perceiver IO: Video Autoencoding.ipynb\",\n      \"private_outputs\": true,\n      \"provenance\": [\n        {\n          \"file_id\": \"1qD1lvE-5c4LVw9l7H9XjA3DNtiYIcTgj\",\n          \"timestamp\": 1626089023488\n        }\n      ],\n      \"toc_visible\": true\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    },\n    \"language_info\": {\n      \"name\": \"python\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "perceiver/io_processors.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"IO pre- and post-processors for Perceiver.\"\"\"\n\nimport functools\nimport math\nfrom typing import Any, Callable, Mapping, Optional, Sequence, Tuple\n\nimport einops\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\n\nfrom perceiver import position_encoding\n\n\nModalitySizeT = Mapping[str, int]\nPreprocessorOutputT = Tuple[jnp.ndarray, Optional[jnp.ndarray], jnp.ndarray]\nPreprocessorT = Callable[..., PreprocessorOutputT]\nPostprocessorT = Callable[..., Any]\n\n\ndef reverse_space_to_depth(\n    frames: jnp.ndarray,\n    temporal_block_size: int = 1,\n    spatial_block_size: int = 1) -> jnp.ndarray:\n  \"\"\"Reverse space to depth transform.\"\"\"\n  if len(frames.shape) == 4:\n    return einops.rearrange(\n        frames, 'b h w (dh dw c) -> b (h dh) (w dw) c',\n        dh=spatial_block_size, dw=spatial_block_size)\n  elif len(frames.shape) == 5:\n    return einops.rearrange(\n        frames, 'b t h w (dt dh dw c) -> b (t dt) (h dh) (w dw) c',\n        dt=temporal_block_size, dh=spatial_block_size, dw=spatial_block_size)\n  else:\n    raise ValueError(\n        'Frames should be of rank 4 (batch, height, width, channels)'\n        ' or rank 5 (batch, time, height, width, channels)')\n\n\ndef space_to_depth(\n    frames: jnp.ndarray,\n    temporal_block_size: int = 1,\n    spatial_block_size: int = 1) -> jnp.ndarray:\n  \"\"\"Space to depth transform.\"\"\"\n  if len(frames.shape) == 4:\n    return einops.rearrange(\n        frames, 'b (h dh) (w dw) c -> b h w (dh dw c)',\n        dh=spatial_block_size, dw=spatial_block_size)\n  elif len(frames.shape) == 5:\n    return einops.rearrange(\n        frames, 'b (t dt) (h dh) (w dw) c -> b t h w (dt dh dw c)',\n        dt=temporal_block_size, dh=spatial_block_size, dw=spatial_block_size)\n  else:\n    raise ValueError(\n        'Frames should be of rank 4 (batch, height, width, channels)'\n        ' or rank 5 (batch, time, height, width, channels)')\n\n\ndef extract_patches(images: jnp.ndarray,\n                    sizes: Sequence[int],\n                    strides: Sequence[int],\n                    rates: Sequence[int],\n                    padding: str = 'VALID') -> jnp.ndarray:\n  \"\"\"Extract patches from images.\n\n  This function is a wrapper for jax.lax.conv_general_dilated_patches\n  to conforms to the same interface as tf.image.extract_patches.\n  The function extracts patches of shape sizes from the input images in the same\n  manner as a convolution with kernel of shape sizes, stride equal to strides,\n  and the given padding scheme.\n  The patches are stacked in the channel dimension.\n\n  Args:\n    images: input batch of images of shape [B, H, W, C].\n    sizes: size of extracted patches. Must be [1, size_rows, size_cols, 1].\n    strides: strides, must be [1, stride_rows, stride_cols, 1].\n    rates: sampling rate (as in dilated convolutions),\n      must be [1, rate_rows, rate_cols, 1].\n    padding: padding algorithm to use.\n  Returns:\n    Tensor of shape [B, patch_rows, patch_cols, size_rows * size_cols * C]\n  \"\"\"\n\n  if len(sizes) != 4 or sizes[0] != 1 or sizes[3] != 1:\n    raise ValueError(\n        f'Shape of sizes must be [1, size_rows, size_cols, 1], got {sizes}.')\n  if len(strides) != 4 or strides[0] != 1 or strides[3] != 1:\n    raise ValueError(\n        f'Shape of strides must be [1, size_rows, size_cols, 1], '\n        f'got {strides}.')\n  if len(rates) != 4 or rates[0] != 1 or rates[3] != 1:\n    raise ValueError(\n        f'Shape of rates must be [1, size_rows, size_cols, 1], got {rates}.')\n  if images.ndim != 4:\n    raise ValueError(\n        f'Rank of images must be 4 (got tensor of shape {jnp.shape(images)})')\n  # Rearrange axes of images to NCHW for conv_general_dilated_patches\n  images = einops.rearrange(images, 'n h w c -> n c h w')\n  channels = images.shape[1]\n  patches = jax.lax.conv_general_dilated_patches(\n      images, sizes[1:-1], strides[1:-1], padding, rhs_dilation=rates[1:-1])\n  # conv_general_dilated_patches returns patches in channel-major order.\n  # Rearrange to match interface of tf.image.extract_patches.\n  patches = einops.rearrange(patches, 'n (c ph pw) h w -> n h w (ph pw c)',\n                             c=channels, ph=sizes[1], pw=sizes[2])\n  return patches\n\n\ndef patches_for_flow(inputs: jnp.ndarray) -> jnp.ndarray:\n  \"\"\"Extract 3x3x2 image patches for flow inputs.\"\"\"\n\n  def pad_and_extract_patches(inputs):\n    padded_inputs = jnp.pad(inputs, [[0, 0], [1, 1], [1, 1], [0, 0]],\n                            mode='constant')\n    return extract_patches(\n        padded_inputs,\n        sizes=[1, 3, 3, 1],\n        strides=[1, 1, 1, 1],\n        padding='VALID',\n        rates=[1, 1, 1, 1])\n\n  return jax.vmap(pad_and_extract_patches, in_axes=1, out_axes=1)(inputs)\n\n\n#  ------------------------------------------------------------\n#  -------------------  Up/down-sampling  ---------------------\n#  ------------------------------------------------------------\n\n\nclass Conv2DDownsample(hk.Module):\n  \"\"\"Downsamples 4x by applying a 2D convolution and doing max pooling.\"\"\"\n\n  def __init__(\n      self,\n      num_layers: int = 1,\n      num_channels: int = 64,\n      use_batchnorm: bool = True,\n      bn_config: Optional[Mapping[str, float]] = None,\n      name: Optional[str] = None,\n  ):\n    \"\"\"Constructs a Conv2DDownsample model.\n\n    Args:\n      num_layers: The number of conv->max_pool layers.\n      num_channels: The number of conv output channels.\n      use_batchnorm: Whether to use batchnorm.\n      bn_config: A dictionary of two elements, ``decay_rate`` and ``eps`` to be\n        passed on to the :class:`~haiku.BatchNorm` layers. By default the\n        ``decay_rate`` is ``0.9`` and ``eps`` is ``1e-5``.\n      name: Name of the module.\n    \"\"\"\n    super().__init__(name=name)\n\n    self._num_layers = num_layers\n    self._use_batchnorm = use_batchnorm\n\n    bn_config = dict(bn_config or {})\n    bn_config.setdefault('decay_rate', 0.9)\n    bn_config.setdefault('eps', 1e-5)\n    bn_config.setdefault('create_scale', True)\n    bn_config.setdefault('create_offset', True)\n\n    self.layers = []\n    for _ in range(self._num_layers):\n      conv = hk.Conv2D(\n          output_channels=num_channels,\n          kernel_shape=7,\n          stride=2,\n          with_bias=False,\n          padding='SAME',\n          name='conv')\n      if use_batchnorm:\n        batchnorm = hk.BatchNorm(name='batchnorm', **bn_config)\n      else:\n        batchnorm = None\n      self.layers.append(dict(conv=conv, batchnorm=batchnorm))\n\n  def __call__(self, inputs: jnp.ndarray, *,\n               is_training: bool,\n               test_local_stats: bool = False) -> jnp.ndarray:\n    out = inputs\n    for layer in self.layers:\n      out = layer['conv'](out)\n      if layer['batchnorm'] is not None:\n        out = layer['batchnorm'](out, is_training, test_local_stats)\n      out = jax.nn.relu(out)\n      out = hk.max_pool(out,\n                        window_shape=(1, 3, 3, 1),\n                        strides=(1, 2, 2, 1),\n                        padding='SAME')\n    return out\n\n\nclass Conv2DUpsample(hk.Module):\n  \"\"\"Upsamples 4x using 2 2D transposed convolutions.\"\"\"\n\n  def __init__(\n      self,\n      n_outputs: int,\n      name: Optional[str] = None,\n  ):\n    \"\"\"Constructs a Conv2DUpsample model.\n\n    Args:\n      n_outputs: The number of output channels of the module.\n      name: Name of the module.\n    \"\"\"\n    super().__init__(name=name)\n\n    self.transp_conv1 = hk.Conv2DTranspose(\n        output_channels=n_outputs*2,\n        kernel_shape=4,\n        stride=2,\n        with_bias=True,\n        padding='SAME',\n        name='transp_conv_1')\n\n    self.transp_conv2 = hk.Conv2DTranspose(\n        output_channels=n_outputs,\n        kernel_shape=4,\n        stride=2,\n        with_bias=True,\n        padding='SAME',\n        name='transp_conv_2')\n\n  def __call__(self, inputs: jnp.ndarray, *,\n               is_training: bool,\n               test_local_stats: bool = False) -> jnp.ndarray:\n    out = inputs\n    out = self.transp_conv1(out)\n    out = jax.nn.relu(out)\n    out = self.transp_conv2(out)\n\n    return out\n\n\nclass Conv3DUpsample(hk.Module):\n  \"\"\"Simple convolutional auto-encoder.\"\"\"\n\n  def __init__(self,\n               n_outputs: int,\n               n_time_upsamples: int = 2,\n               n_space_upsamples: int = 4,\n               name: Optional[str] = None):\n\n    super().__init__(name=name)\n\n    self._n_outputs = n_outputs\n    self._n_time_upsamples = n_time_upsamples\n    self._n_space_upsamples = n_space_upsamples\n\n  def __call__(self, x: jnp.ndarray, *, is_training: bool) -> jnp.ndarray:\n    n_upsamples = max(self._n_time_upsamples, self._n_space_upsamples)\n\n    time_stride = 2\n    space_stride = 2\n\n    for i in range(n_upsamples):\n      if i >= self._n_time_upsamples:\n        time_stride = 1\n      if i >= self._n_space_upsamples:\n        space_stride = 1\n\n      channels = self._n_outputs * pow(2, n_upsamples - 1 - i)\n\n      x = hk.Conv3DTranspose(output_channels=channels,\n                             stride=[time_stride, space_stride, space_stride],\n                             kernel_shape=[4, 4, 4],\n                             name=f'conv3d_transpose_{i}')(x)\n      if i != n_upsamples - 1:\n        x = jax.nn.relu(x)\n\n    return x\n\n\nclass ImagePreprocessor(hk.Module):\n  \"\"\"Image preprocessing for Perceiver Encoder.\"\"\"\n\n  def __init__(\n      self,\n      prep_type='conv',\n      spatial_downsample: int = 4,\n      temporal_downsample: int = 1,\n      position_encoding_type: str = 'fourier',\n      n_extra_pos_mlp: int = 0,\n      num_channels: int = 64,\n      conv_after_patching: bool = False,\n      conv2d_use_batchnorm: bool = True,\n      concat_or_add_pos: str = 'concat',\n      name: Optional[str] = None,\n      **position_encoding_kwargs):\n    super().__init__(name=name)\n\n    if prep_type not in ('conv', 'patches', 'pixels', 'conv1x1'):\n      raise ValueError('Invalid prep_type!')\n\n    if concat_or_add_pos not in ['concat', 'add']:\n      raise ValueError(\n          f'Invalid value {concat_or_add_pos} for concat_or_add_pos.')\n\n    self._prep_type = prep_type\n    self._spatial_downsample = spatial_downsample\n    self._temporal_downsample = temporal_downsample\n    self._concat_or_add_pos = concat_or_add_pos\n    self._conv_after_patching = conv_after_patching\n    self._num_channels = num_channels\n\n    if self._prep_type == 'conv':\n      # Downsampling with conv is currently restricted\n      convnet_num_layers = math.log(spatial_downsample, 4)\n      convnet_num_layers_is_int = (\n          convnet_num_layers == np.round(convnet_num_layers))\n      if not convnet_num_layers_is_int or temporal_downsample != 1:\n        raise ValueError('Only powers of 4 expected for spatial '\n                         'and 1 expected for temporal '\n                         'downsampling with conv.')\n\n      self.convnet = Conv2DDownsample(\n          num_layers=int(convnet_num_layers),\n          num_channels=num_channels,\n          use_batchnorm=conv2d_use_batchnorm)\n    elif self._prep_type == 'conv1x1':\n      assert temporal_downsample == 1, 'conv1x1 does not downsample in time.'\n      self.convnet_1x1 = hk.Conv2D(\n          num_channels, kernel_shape=[1, 1],\n          # spatial_downsample is unconstrained for 1x1 convolutions.\n          stride=[spatial_downsample, spatial_downsample])\n\n    # Partially construct the positional encoding function.\n    # We fully construct it when we know the input size.\n    self._positional_encoding_ctor = functools.partial(\n        position_encoding.build_position_encoding,\n        position_encoding_type=position_encoding_type,\n        **position_encoding_kwargs)\n\n    # Stack MLPs to get a deeper positional embedding.\n    self._n_extra_pos_mlp = n_extra_pos_mlp\n\n  def _build_network_inputs(\n      self, inputs: jnp.ndarray, pos: jnp.ndarray,\n      network_input_is_1d: bool = True) -> Tuple[jnp.ndarray, jnp.ndarray]:\n    \"\"\"Construct the final input, including position encoding.\"\"\"\n    batch_size = inputs.shape[0]\n    index_dims = inputs.shape[1:-1]\n\n    # Reshape input features to a 1D index dimension if necessary.\n    if len(inputs.shape) > 3 and network_input_is_1d:\n      inputs = jnp.reshape(\n          inputs, [batch_size, np.prod(index_dims), -1])\n\n    # Construct the position encoding.\n    pos_enc = self._positional_encoding_ctor(\n        index_dims=index_dims)(batch_size=batch_size, pos=pos)\n\n    for i in range(0, self._n_extra_pos_mlp):\n      pos_enc += hk.Linear(pos_enc.shape[-1])(pos_enc)\n      if i < (self._n_extra_pos_mlp-1):\n        pos_enc = jax.nn.relu(pos_enc)\n\n    if not network_input_is_1d:\n      # Reshape pos to match the input feature shape\n      # if the network takes non-1D inputs\n      sh = inputs.shape\n      pos_enc = jnp.reshape(pos_enc, list(sh)[:-1]+[-1])\n\n    if self._concat_or_add_pos == 'concat':\n      inputs_with_pos = jnp.concatenate([inputs, pos_enc], axis=-1)\n    elif self._concat_or_add_pos == 'add':\n      inputs_with_pos = inputs + pos_enc\n\n    return inputs_with_pos, inputs\n\n  def __call__(\n      self, inputs: jnp.ndarray, *,\n      is_training: bool,\n      pos: Optional[jnp.ndarray] = None,\n      network_input_is_1d: bool = True) -> PreprocessorOutputT:\n    if self._prep_type == 'conv':\n      # Convnet image featurization.\n      # Downsamples spatially by a factor of 4\n      conv = self.convnet\n      if len(inputs.shape) == 5:\n        conv = hk.BatchApply(conv)\n\n      inputs = conv(inputs, is_training=is_training)\n    elif self._prep_type == 'conv1x1':\n      # maps inputs to 64d\n\n      conv = self.convnet_1x1\n\n      if len(inputs.shape) == 5:\n        conv = hk.BatchApply(conv)\n\n      inputs = conv(inputs)\n    elif self._prep_type == 'patches':\n      # Space2depth featurization.\n      # Video: B x T x H x W x C\n      inputs = space_to_depth(\n          inputs,\n          temporal_block_size=self._temporal_downsample,\n          spatial_block_size=self._spatial_downsample)\n\n      if inputs.ndim == 5 and inputs.shape[1] == 1:\n        # for flow\n        inputs = jnp.squeeze(inputs, axis=1)\n\n      if self._conv_after_patching:\n        inputs = hk.Linear(self._num_channels, name='patches_linear')(inputs)\n    elif self._prep_type == 'pixels':\n      # if requested, downsamples in the crudest way\n      if inputs.ndim == 4:\n        inputs = inputs[:,\n                        ::self._spatial_downsample, ::self._spatial_downsample]\n      elif inputs.ndim == 5:\n        inputs = inputs[:, ::self._temporal_downsample,\n                        ::self._spatial_downsample, ::self._spatial_downsample]\n      else:\n        raise ValueError('Unsupported data format for pixels.')\n\n    inputs, inputs_without_pos = self._build_network_inputs(\n        inputs, pos, network_input_is_1d)\n    modality_sizes = None  # Size for each modality, only needed for multimodal\n    return inputs, modality_sizes, inputs_without_pos\n\n\nclass ImagePostprocessor(hk.Module):\n  \"\"\"Image postprocessing for Perceiver.\"\"\"\n\n  def __init__(\n      self,\n      postproc_type: str = 'pixels',\n      spatial_upsample: int = 1,\n      temporal_upsample: int = 1,\n      n_outputs: int = -1,  # only relevant for 'conv1x1', 'conv', and 'raft'\n      input_reshape_size: Optional[Sequence[int]] = None,\n      name: Optional[str] = None):\n    super().__init__(name=name)\n\n    if postproc_type not in ('conv', 'patches', 'pixels', 'raft', 'conv1x1'):\n      raise ValueError('Invalid postproc_type!')\n\n    # Architecture parameters:\n    self._postproc_type = postproc_type\n\n    self._temporal_upsample = temporal_upsample\n    self._spatial_upsample = spatial_upsample\n    self._input_reshape_size = input_reshape_size\n\n    if self._postproc_type == 'pixels':\n      # No postprocessing.\n      if self._temporal_upsample != 1 or self._spatial_upsample != 1:\n        raise ValueError('Pixels postprocessing should not currently upsample.')\n    elif self._postproc_type == 'conv1x1':\n      assert self._temporal_upsample == 1, 'conv1x1 does not upsample in time.'\n      if n_outputs == -1:\n        raise ValueError('Expected value for n_outputs')\n      self.conv1x1 = hk.Conv2D(\n          n_outputs, kernel_shape=[1, 1],\n          # spatial_downsample is unconstrained for 1x1 convolutions.\n          stride=[self._spatial_upsample, self._spatial_upsample])\n    elif self._postproc_type == 'conv':\n      if n_outputs == -1:\n        raise ValueError('Expected value for n_outputs')\n      if self._temporal_upsample != 1:\n        def int_log2(x):\n          return int(np.round(np.log(x) / np.log(2)))\n        self.convnet = Conv3DUpsample(\n            n_outputs, int_log2(temporal_upsample), int_log2(spatial_upsample))\n      else:\n        self.convnet = Conv2DUpsample(n_outputs)\n\n  def __call__(\n      self, inputs: jnp.ndarray, *,\n      is_training: bool,\n      pos: Optional[jnp.ndarray] = None,\n      modality_sizes: Optional[ModalitySizeT] = None) -> jnp.ndarray:\n    if self._input_reshape_size is not None:\n      inputs = jnp.reshape(\n          inputs,\n          [inputs.shape[0]] + list(self._input_reshape_size)\n          + [inputs.shape[-1]])\n\n    if self._postproc_type == 'conv' or self._postproc_type == 'raft':\n      # Convnet image featurization.\n      conv = self.convnet\n      if len(inputs.shape) == 5 and self._temporal_upsample == 1:\n        conv = hk.BatchApply(conv)\n      inputs = conv(inputs, is_training=is_training)\n    elif self._postproc_type == 'conv1x1':\n      inputs = self.conv1x1(inputs)\n    elif self._postproc_type == 'patches':\n      inputs = reverse_space_to_depth(\n          inputs, self._temporal_upsample, self._spatial_upsample)\n\n    return inputs\n\n\nclass OneHotPreprocessor(hk.Module):\n  \"\"\"One-hot preprocessor for Perceiver Encoder.\"\"\"\n\n  def __init__(self, name: Optional[str] = None):\n    super().__init__(name=name)\n\n  def __call__(self, inputs: jnp.ndarray, *,\n               is_training: bool,\n               pos: Optional[jnp.ndarray] = None,\n               network_input_is_1d: bool = True) -> PreprocessorOutputT:\n    # Add a dummy index dimension.\n    inputs = inputs[:, None, :]\n\n    # No position encodings, so the 1st (input) and 3rd (inputs_without_pos)\n    # outputs are identical.\n    return inputs, None, inputs\n\n\nclass AudioPreprocessor(hk.Module):\n  \"\"\"Audio preprocessing for Perceiver Encoder.\"\"\"\n\n  def __init__(\n      self,\n      prep_type: str = 'patches',\n      samples_per_patch: int = 96,\n      position_encoding_type: str = 'fourier',\n      n_extra_pos_mlp: int = 0,\n      concat_or_add_pos: str = 'concat',\n      name: Optional[str] = None,\n      **position_encoding_kwargs):\n    super().__init__(name=name)\n\n    if prep_type not in ('patches',):\n      raise ValueError('Invalid prep_type!')\n\n    if concat_or_add_pos not in ['concat', 'add']:\n      raise ValueError(\n          f'Invalid value {concat_or_add_pos} for concat_or_add_pos.')\n\n    self._samples_per_patch = samples_per_patch\n    self._concat_or_add_pos = concat_or_add_pos\n\n    # Partially construct the positional encoding function.\n    # We fully construct it when we know the input size.\n    self._positional_encoding_ctor = functools.partial(\n        position_encoding.build_position_encoding,\n        position_encoding_type=position_encoding_type,\n        **position_encoding_kwargs)\n\n    # for deeper positional embeddings\n    self._n_extra_pos_mlp = n_extra_pos_mlp\n\n  def _build_network_inputs(\n      self, inputs: jnp.ndarray,\n      pos: jnp.ndarray) -> Tuple[jnp.ndarray, jnp.ndarray]:\n    \"\"\"Construct the final input, including position encoding.\"\"\"\n    batch_size = inputs.shape[0]\n    index_dims = inputs.shape[1:-1]\n\n    # Construct the position encoding.\n    pos_enc = self._positional_encoding_ctor(\n        index_dims=index_dims)(batch_size=batch_size, pos=pos)\n\n    for i in range(0, self._n_extra_pos_mlp):\n      pos_enc += hk.Linear(pos_enc.shape[-1])(pos_enc)\n      if i < (self._n_extra_pos_mlp-1):\n        pos_enc = jax.nn.relu(pos_enc)\n\n    if self._concat_or_add_pos == 'concat':\n      inputs_with_pos = jnp.concatenate([inputs, pos_enc], axis=-1)\n    elif self._concat_or_add_pos == 'add':\n      inputs_with_pos = inputs + pos_enc\n\n    return inputs_with_pos, inputs\n\n  def __call__(self, inputs: jnp.ndarray, *,\n               is_training: bool,\n               pos: Optional[jnp.ndarray] = None,\n               network_input_is_1d: bool = True) -> PreprocessorOutputT:\n    inputs = jnp.reshape(inputs, [inputs.shape[0], -1,\n                                  self._samples_per_patch])\n\n    inputs, inputs_without_pos = self._build_network_inputs(inputs, pos)\n    modality_sizes = None  # Size for each modality, only needed for multimodal\n    return inputs, modality_sizes, inputs_without_pos\n\n\nclass AudioPostprocessor(hk.Module):\n  \"\"\"Audio postprocessing for Perceiver.\"\"\"\n\n  def __init__(\n      self,\n      postproc_type: str = 'patches',  # 'conv', 'patches', 'pixels'\n      samples_per_patch: int = 96,\n      name: Optional[str] = None):\n    super().__init__(name=name)\n\n    if postproc_type not in ('patches',):\n      raise ValueError('Invalid postproc_type!')\n    self._samples_per_patch = samples_per_patch\n\n    # Architecture parameters:\n    self._postproc_type = postproc_type\n\n  def __call__(self, inputs: jnp.ndarray, *,\n               is_training: bool,\n               pos: Optional[jnp.ndarray] = None,\n               modality_sizes: Optional[ModalitySizeT] = None) -> jnp.ndarray:\n    out = hk.Linear(self._samples_per_patch)(inputs)\n    return jnp.reshape(out, [inputs.shape[0], -1])\n\n\nclass IdentityPostprocessor(hk.Module):\n  \"\"\"Passes through the inputs unchanged.\"\"\"\n\n  def __init__(self, name: Optional[str] = None):\n    super().__init__(name=name)\n\n  def __call__(self, inputs: jnp.ndarray, *,\n               is_training: bool,\n               pos: Optional[jnp.ndarray] = None,\n               modality_sizes: Optional[ModalitySizeT] = None) -> jnp.ndarray:\n    return inputs\n\n\ndef restructure(modality_sizes: ModalitySizeT,\n                inputs: jnp.ndarray) -> Mapping[str, jnp.ndarray]:\n  \"\"\"Partitions a [B, N, C] tensor into tensors for each modality.\n\n  Args:\n    modality_sizes: dict specifying the size of the modality\n    inputs: input tensor\n  Returns:\n    dict mapping name of modality to its associated tensor.\n  \"\"\"\n  outputs = {}\n  index = 0\n  # Apply a predictable ordering to the modalities\n  for modality in sorted(modality_sizes.keys()):\n    size = modality_sizes[modality]\n    inp = inputs[:, index:index + size]\n    index += size\n    outputs[modality] = inp\n  return outputs\n\n\nclass MultimodalPreprocessor(hk.Module):\n  \"\"\"Multimodal preprocessing for Perceiver Encoder.\n\n  Inputs for each modality is preprocessed then padded with trainable position\n  embeddings to have the same number of channels.\n  \"\"\"\n\n  def __init__(\n      self,\n      modalities: Mapping[str, PreprocessorT],\n      mask_probs: Optional[Mapping[str, float]] = None,\n      min_padding_size: int = 2,\n      name: Optional[str] = None):\n    \"\"\"Constructor.\n\n    Args:\n      modalities: dict mapping modality name to preprocessor\n      mask_probs: dict mapping modality name to masking probability of that\n        modality\n      min_padding_size: the minimum padding size for all modalities.\n        The final output will have num_channels equal to the maximum channels\n        across all modalities plus min_padding_size.\n      name: name of module\n    \"\"\"\n    super().__init__(name=name)\n    self._modalities = modalities\n    self._min_padding_size = min_padding_size\n    self._mask_probs = mask_probs\n\n  def __call__(self, inputs: jnp.ndarray, *,\n               is_training: bool,\n               pos: Optional[jnp.ndarray] = None,\n               network_input_is_1d: bool = True) -> PreprocessorOutputT:\n    outputs = {}\n    inputs_without_pos = {}\n    for modality, preprocessor in self._modalities.items():\n      outputs[modality], _, inputs_without_pos[modality] = preprocessor(\n          inputs[modality], is_training=is_training, pos=pos,\n          network_input_is_1d=network_input_is_1d)\n\n    common_channel_size = (max(o.shape[2] for o in outputs.values())\n                           + self._min_padding_size)\n\n    padded = {}\n    modality_sizes = {}\n    for modality, output in outputs.items():\n      pos_enc = position_encoding.TrainablePositionEncoding(\n          1, num_channels=common_channel_size-output.shape[2],\n          init_scale=0.02, name=f'{modality}_padding')\n      padding = jnp.broadcast_to(\n          pos_enc(batch_size=output.shape[0]),\n          [output.shape[0], output.shape[1],\n           common_channel_size-output.shape[2]])\n      output_padded = jnp.concatenate([output, padding], axis=2)\n\n      if self._mask_probs is not None:\n        # Randomly mask out each token corresponding to this modality\n        mask_token = position_encoding.TrainablePositionEncoding(\n            1, num_channels=output_padded.shape[2],\n            init_scale=0.02, name=f'{modality}_mask_token')(output.shape[0])\n        mask_prob = self._mask_probs[modality]\n        rng = hk.next_rng_key()\n        mask = jax.random.bernoulli(rng, mask_prob,\n                                    shape=[output.shape[0], output.shape[1]])\n        mask = jnp.expand_dims(mask, axis=2)\n        output_padded = (1 - mask) * output_padded + mask * mask_token\n\n      padded[modality] = output_padded\n      modality_sizes[modality] = output_padded.shape[1]\n\n    # Apply a predictable ordering to the modalities\n    padded_ls = [padded[k] for k in sorted(padded.keys())]\n    return (jnp.concatenate(padded_ls, axis=1),  # pytype: disable=bad-return-type  # jax-ndarray\n            modality_sizes,\n            inputs_without_pos)\n\n\nclass MultimodalPostprocessor(hk.Module):\n  \"\"\"Multimodal postprocessing for Perceiver.\"\"\"\n\n  def __init__(\n      self,\n      modalities: Mapping[str, PostprocessorT],\n      input_is_dict: bool = False,\n      name: Optional[str] = None):\n    \"\"\"Constructor.\n\n    Args:\n      modalities: dict mapping modality name to post processor for that modality\n      input_is_dict: If True, input is assumed to be dictionary structured,\n        and outputs keep the same dictionary shape. If False, input is a tensor\n        which is sliced up during postprocessing by `modality_sizes`.\n      name: name of the module\n    \"\"\"\n    super().__init__(name=name)\n    self._modalities = modalities\n    self._input_is_dict = input_is_dict\n\n  def __call__(\n      self, inputs: jnp.ndarray, *,\n      is_training: bool,\n      pos: Optional[jnp.ndarray] = None,\n      modality_sizes: Optional[ModalitySizeT] = None) -> Mapping[str,\n                                                                 jnp.ndarray]:\n    if not self._input_is_dict:\n      # Slice up modalities by their sizes.\n      assert modality_sizes is not None\n      inputs = restructure(modality_sizes=modality_sizes, inputs=inputs)\n    outputs = {modality: postprocessor(\n        inputs[modality], is_training=is_training, pos=pos, modality_sizes=None)\n               for modality, postprocessor in self._modalities.items()}\n    return outputs\n\n\nclass ClassificationPostprocessor(hk.Module):\n  \"\"\"Classification postprocessing for Perceiver.\"\"\"\n\n  def __init__(\n      self,\n      num_classes: int,\n      name: Optional[str] = None):\n    super().__init__(name=name)\n    self._num_classes = num_classes\n\n  def __call__(self, inputs: jnp.ndarray, *,\n               is_training: bool,\n               pos: Optional[jnp.ndarray] = None,\n               modality_sizes: Optional[ModalitySizeT] = None) -> jnp.ndarray:\n    logits = hk.Linear(self._num_classes)(inputs)\n    return logits[:, 0, :]\n\n\nclass ProjectionPostprocessor(hk.Module):\n  \"\"\"Projection postprocessing for Perceiver.\"\"\"\n\n  def __init__(\n      self,\n      num_outputs: int,\n      name: Optional[str] = None):\n    super().__init__(name=name)\n    self._num_outputs = num_outputs\n\n  def __call__(self, inputs: jnp.ndarray, *,\n               is_training: bool,\n               pos: Optional[jnp.ndarray] = None,\n               modality_sizes: Optional[ModalitySizeT] = None) -> jnp.ndarray:\n    logits = hk.Linear(self._num_outputs)(inputs)\n    return logits\n\n\nclass EmbeddingDecoder(hk.Module):\n  \"\"\"Haiku module to decode embeddings.\"\"\"\n\n  def __init__(self, embedding_matrix: jnp.ndarray, name='embedding_decoder'):\n    \"\"\"Constructs the module.\n\n    Args:\n      embedding_matrix: Array of shape [vocab_size, d_model].\n      name: Name of the module.\n    \"\"\"\n    super().__init__(name=name)\n    self._embedding_matrix = embedding_matrix\n    self._vocab_size, self._d_model = embedding_matrix.shape\n\n  def __call__(self, embeddings: jnp.ndarray) -> jnp.ndarray:\n    batch_size, seq_len, _ = embeddings.shape\n    output = jnp.matmul(\n        embeddings.reshape([-1, self._d_model]),  # Flatten batch dim\n        jnp.transpose(self._embedding_matrix))\n    bias = hk.get_parameter('bias', shape=[self._vocab_size], init=jnp.zeros)\n    output = output + bias\n    return output.reshape([batch_size, seq_len, self._vocab_size])\n"
  },
  {
    "path": "perceiver/io_processors_test.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Tests for io_processors.\"\"\"\n\nimport numpy as np\nimport tensorflow as tf\n\nfrom perceiver import io_processors\n\n\ndef _create_test_image(shape):\n  image = np.arange(np.prod(np.array(shape)))\n  return np.reshape(image, shape)\n\n\ndef test_space_to_depth_image():\n  image_shape = (2, 3 * 5, 3 * 7, 11)\n  image = _create_test_image(image_shape)\n  output = io_processors.space_to_depth(image, spatial_block_size=3)\n  assert output.shape == (2, 5, 7, 3 * 3 * 11)\n\n\ndef test_space_to_depth_video():\n  image_shape = (2, 5 * 7, 3 * 11, 3 * 13, 17)\n  image = _create_test_image(image_shape)\n  output = io_processors.space_to_depth(image, spatial_block_size=3,\n                                        temporal_block_size=5)\n  assert output.shape == (2, 7, 11, 13, 5 * 3 * 3 * 17)\n\n\ndef test_reverse_space_to_depth_image():\n  image_shape = (2, 5, 7, 3 * 3 * 11)\n  image = _create_test_image(image_shape)\n  output = io_processors.reverse_space_to_depth(image, spatial_block_size=3)\n  assert output.shape == (2, 3 * 5, 3 * 7, 11)\n\n\ndef test_reverse_space_to_depth_video():\n  image_shape = (2, 7, 11, 13, 5 * 3 * 3 * 17)\n  image = _create_test_image(image_shape)\n  output = io_processors.reverse_space_to_depth(\n      image, spatial_block_size=3, temporal_block_size=5)\n  assert output.shape == (2, 5 * 7, 3 * 11, 3 * 13, 17)\n\n\ndef test_extract_patches():\n  image_shape = (2, 5, 7, 3)\n  image = _create_test_image(image_shape)\n\n  sizes = [1, 2, 3, 1]\n  strides = [1, 1, 2, 1]\n  rates = [1, 2, 1, 1]\n\n  for padding in [\"VALID\", \"SAME\"]:\n    jax_patches = io_processors.extract_patches(\n        image, sizes=sizes, strides=strides, rates=rates, padding=padding)\n    tf_patches = tf.image.extract_patches(\n        image, sizes=sizes, strides=strides, rates=rates, padding=padding)\n    assert np.array_equal(\n        np.array(jax_patches),\n        tf_patches.numpy())\n"
  },
  {
    "path": "perceiver/perceiver.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Perceiver architecture and components.\"\"\"\n\nimport abc\nimport math\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\n\nfrom perceiver import io_processors\nfrom perceiver import position_encoding\n\n\n#  -----------------------------------------------------------\n#  ----------------------  Primitives  -----------------------\n#  -----------------------------------------------------------\n\n\ndef attend(q, k, v, dropout_prob=0.0, attention_mask=None):\n  \"\"\"Computes multi-head attention using a query, key and value.\n\n  Args:\n    q: Query with shape [batch, q_indices, num_heads, head_dim].\n    k: Key with shape [batch, kv_indices, num_heads, head_dim].\n    v: Value with shape [batch, kv_indices, num_heads, head_dim].\n    dropout_prob: dropout probability on the attention weights.\n    attention_mask: Array of shape [batch, q_indices, kv_indices] indicating\n      which attentions are valid\n  Returns:\n    Output of the attention with shape [batch, q_indices, hiddens]\n  \"\"\"\n  batch, q_indices, num_heads, q_head_dim = q.shape\n  _, _, _, v_head_dim = v.shape\n  hiddens = num_heads * v_head_dim\n\n  attention = jnp.einsum('bthd,bThd->bhtT', q, k)\n\n  scale = 1. / math.sqrt(q_head_dim)\n  attention *= scale\n\n  if attention_mask is not None:\n    # Use large_k instead of np.NINF because np.NINF breaks for causal-masked\n    # left-padded sampling.\n    large_k = jnp.array(1e4 if attention.dtype == jnp.float16 else 1e30,\n                        dtype=attention.dtype)\n\n    attention = jnp.where(attention_mask[:, None, :, :], attention,\n                          -large_k)\n\n  normalized = jax.nn.softmax(attention)\n  if dropout_prob > 0:\n    normalized = hk.dropout(hk.next_rng_key(), dropout_prob, normalized)\n  summed = jnp.einsum('bhtT,bThd->bthd', normalized, v)\n  summed = jnp.reshape(summed, [batch, q_indices, hiddens])\n\n  if attention_mask is not None:\n    # If all attended tokens are masked, or for masked tokens\n    # some rows of logits gets completely masked, in which case the softmax\n    # gives a uniform row and we obtain non-zero outputs where it should be\n    # zero. We force zeros.\n    wipe_attn = jnp.all(\n        attention_mask == 0, axis=2, keepdims=True)  # shape (B, T, 1)\n    summed = jnp.where(wipe_attn, jnp.zeros_like(summed), summed)\n  return summed\n\n\ndef conv_1d(\n    output_channels,\n    init_scale=1.0,\n    with_bias=True,\n    name=None):\n  \"\"\"A 1D convolution.\"\"\"\n  return hk.Linear(\n      output_size=output_channels,\n      with_bias=with_bias,\n      w_init=hk.initializers.VarianceScaling(init_scale),\n      name=name)\n\n\ndef layer_norm(x, name=None):\n  return hk.LayerNorm(axis=-1, create_scale=True, create_offset=True,\n                      name=name)(x)\n\n\ndef make_cross_attention_mask(query_mask, kv_mask):\n  batch_size, query_len = query_mask.shape\n  _, key_len = kv_mask.shape\n  mask = jax.vmap(jnp.outer)(query_mask, kv_mask)\n  assert mask.shape == (batch_size, query_len, key_len)\n  return mask\n\n\n#  -----------------------------------------------------------\n#  -----------------------  Modules  -------------------------\n#  -----------------------------------------------------------\n\n\nclass Attention(hk.Module):\n  \"\"\"Multi-headed {cross, self}-attention.\"\"\"\n\n  def __init__(self,\n               num_heads=8,\n               init_scale=1.0,\n               with_final_bias=True,\n               final_init_scale_multiplier=1.,\n               dropout_prob=0.0,\n               qk_channels=None,\n               v_channels=None,\n               output_channels=None,\n               name=None):\n    super(Attention, self).__init__(name=name)\n    self._num_heads = num_heads\n    self._init_scale = init_scale\n    self._with_final_bias = with_final_bias\n    self._final_init_scale = final_init_scale_multiplier * init_scale\n    self._dropout_prob = dropout_prob\n\n    # If none of these are passed, the Q input determines the output shape:\n    self._qk_channels = qk_channels\n    self._v_channels = v_channels\n    self._output_channels = output_channels\n\n  def __call__(self, inputs_q, inputs_kv, attention_mask=None):\n    # Q and K must have the same number of channels.\n    # Default to preserving Q's input's shape.\n    if self._qk_channels is None:\n      self._qk_channels = inputs_q.shape[-1]\n    # V's num_channels determines the shape of the output of QKV-attention.\n    # Default to the same number of channels used in the key-query operation.\n    if self._v_channels is None:\n      self._v_channels = self._qk_channels\n    # Project the output of QKV attention to a desired number of channels.\n    # Default to the same number as the output of the QKV attention operation.\n    if self._output_channels is None:\n      self._output_channels = self._v_channels\n\n    if self._qk_channels % self._num_heads != 0:\n      raise ValueError(f'qk_channels ({self._qk_channels}) must be divisible by'\n                       f' num_heads ({self._num_heads}).')\n    if self._v_channels % self._num_heads != 0:\n      raise ValueError(f'v_channels ({self._v_channels}) must be divisible by'\n                       f' num_heads ({self._num_heads}).')\n    qk_channels_per_head = self._qk_channels // self._num_heads\n    v_channels_per_head = self._v_channels // self._num_heads\n\n    # Project QKV to a common feature dimension.\n    q = conv_1d(self._qk_channels, init_scale=self._init_scale)(inputs_q)\n    k = conv_1d(self._qk_channels, init_scale=self._init_scale)(inputs_kv)\n    v = conv_1d(self._v_channels, init_scale=self._init_scale)(inputs_kv)\n\n    # Reshape channels for multi-head attention.\n    batch, q_time, _ = q.shape\n    _, kv_time, _ = k.shape\n    q = jnp.reshape(q, [batch, q_time, self._num_heads, qk_channels_per_head])\n    k = jnp.reshape(k, [batch, kv_time, self._num_heads, qk_channels_per_head])\n    v = jnp.reshape(v, [batch, kv_time, self._num_heads, v_channels_per_head])\n\n    result = attend(q, k, v, dropout_prob=self._dropout_prob,\n                    attention_mask=attention_mask)\n    return conv_1d(\n        self._output_channels,\n        with_bias=self._with_final_bias,\n        init_scale=self._final_init_scale)(result)\n\n\nclass MLP(hk.Module):\n  \"\"\"A Transformer-style dense module to follow attention.\"\"\"\n\n  def __init__(self,\n               widening_factor=4,\n               dropout_prob=0.0,\n               init_scale=1.,\n               name=None):\n    super(MLP, self).__init__(name=name)\n    self._widening_factor = widening_factor\n    self._dropout_prob = dropout_prob\n    self._init_scale = init_scale\n\n  def __call__(self, x, *, is_training):\n    dropout_prob = self._dropout_prob if is_training else 0.0\n    output_channels = x.shape[-1]\n    x = conv_1d(\n        output_channels=self._widening_factor * output_channels,\n        init_scale=self._init_scale)(x)\n    x = jax.nn.gelu(x)\n    x = conv_1d(\n        output_channels=output_channels,\n        init_scale=self._init_scale)(x)\n    return hk.dropout(hk.next_rng_key(), dropout_prob, x)\n\n\nclass SelfAttention(hk.Module):\n  \"\"\"A self-attention module, including a dense block.\"\"\"\n\n  def __init__(self,\n               widening_factor=4,\n               dropout_prob=0.0,\n               dropout_attn_prob=0.0,\n               num_heads=8,\n               att_init_scale=1.0,\n               dense_init_scale=1.0,\n               qk_channels=None,\n               v_channels=None,\n               name=None):\n    super(SelfAttention, self).__init__(name=name)\n    self._widening_factor = widening_factor\n    self._dropout_prob = dropout_prob\n    self._dropout_attn_prob = dropout_attn_prob\n    self._num_heads = num_heads\n    self._att_init_scale = att_init_scale\n    self._dense_init_scale = dense_init_scale\n    self._qk_channels = qk_channels\n    self._v_channels = v_channels\n\n  def __call__(self,\n               inputs,\n               *,\n               attention_mask=None,\n               is_training):\n    dropout_prob = self._dropout_prob if is_training else 0.0\n    dropout_attn_prob = self._dropout_attn_prob if is_training else 0.0\n\n    x = inputs\n    qkv_inputs = layer_norm(inputs)\n    attention = Attention(\n        num_heads=self._num_heads,\n        init_scale=self._att_init_scale,\n        qk_channels=self._qk_channels,\n        v_channels=self._v_channels,\n        dropout_prob=dropout_attn_prob)(qkv_inputs, qkv_inputs,\n                                        attention_mask=attention_mask)\n    attention = hk.dropout(hk.next_rng_key(), dropout_prob, attention)\n    x += attention\n\n    x += MLP(\n        widening_factor=self._widening_factor,\n        dropout_prob=dropout_prob,\n        init_scale=self._dense_init_scale)(\n            layer_norm(x), is_training=is_training)\n    return x\n\n\nclass CrossAttention(hk.Module):\n  \"\"\"A cross-attention module, including a dense block.\"\"\"\n\n  def __init__(self,\n               widening_factor=1,\n               dropout_prob=0.0,\n               dropout_attn_prob=0.0,\n               num_heads=8,\n               att_init_scale=1.0,\n               dense_init_scale=1.0,\n               shape_for_attn='kv',\n               use_query_residual=True,\n               qk_channels=None,\n               v_channels=None,\n               name=None):\n    super(CrossAttention, self).__init__(name=name)\n    self._widening_factor = widening_factor\n    self._dropout_prob = dropout_prob\n    self._dropout_attn_prob = dropout_attn_prob\n    self._num_heads = num_heads\n    self._att_init_scale = att_init_scale\n    self._dense_init_scale = dense_init_scale\n    self._shape_for_attn = shape_for_attn\n    self._use_query_residual = use_query_residual\n    self._qk_channels = qk_channels\n    self._v_channels = v_channels\n\n  def __call__(self,\n               inputs_q,\n               inputs_kv,\n               *,\n               attention_mask=None,\n               is_training):\n    dropout_prob = self._dropout_prob if is_training else 0.0\n    dropout_attn_prob = self._dropout_attn_prob if is_training else 0.0\n\n    output_channels = inputs_q.shape[-1]\n    if self._shape_for_attn == 'q':\n      qk_channels = inputs_q.shape[-1]\n    elif self._shape_for_attn == 'kv':\n      qk_channels = inputs_kv.shape[-1]\n    else:\n      raise ValueError(f'Unknown value {self._shape_for_attn} for '\n                       'shape_for_attention.')\n\n    v_channels = None\n    if self._qk_channels is not None:\n      qk_channels = self._qk_channels\n    if self._v_channels is not None:\n      v_channels = self._v_channels\n\n    attention = Attention(\n        num_heads=self._num_heads,\n        init_scale=self._att_init_scale,\n        dropout_prob=dropout_attn_prob,\n        qk_channels=qk_channels,\n        v_channels=v_channels,\n        output_channels=output_channels)(layer_norm(inputs_q),\n                                         layer_norm(inputs_kv),\n                                         attention_mask=attention_mask)\n    attention = hk.dropout(hk.next_rng_key(), dropout_prob, attention)\n\n    # Optionally include a residual to the query.\n    # Consider omitting the residual if the semantics of query and output\n    # are different, e.g. if queries are positions and outputs are pixels.\n    if self._use_query_residual:\n      x = inputs_q + attention\n    else:\n      x = attention\n\n    x += MLP(\n        widening_factor=self._widening_factor,\n        dropout_prob=dropout_prob,\n        init_scale=self._dense_init_scale)(\n            layer_norm(x), is_training=is_training)\n    return x\n\n\n#  -----------------------------------------------------------\n#  -----------------------  Perceiver  -----------------------\n#  -----------------------------------------------------------\n\n\nclass Perceiver(hk.Module):\n  \"\"\"The Perceiver: a scalable, fully attentional architecture.\"\"\"\n\n  def __init__(\n      self,\n      encoder,\n      decoder,\n      input_preprocessor=None,\n      output_postprocessor=None,\n      name='perceiver'):\n    super().__init__(name=name)\n\n    # Feature and task parameters:\n    self._input_preprocessor = input_preprocessor\n    self._output_postprocessor = output_postprocessor\n    self._decoder = decoder\n    self._encoder = encoder\n\n  def __call__(self, inputs, *, is_training, subsampled_output_points=None,\n               pos=None, input_mask=None, query_mask=None):\n    if self._input_preprocessor:\n      network_input_is_1d = self._encoder._input_is_1d\n      inputs, modality_sizes, inputs_without_pos = self._input_preprocessor(\n          inputs, pos=pos, is_training=is_training,\n          network_input_is_1d=network_input_is_1d)\n    else:\n      modality_sizes = None\n      inputs_without_pos = None\n\n    # Get the queries for encoder and decoder cross-attends.\n    encoder_query = self._encoder.latents(inputs)\n    decoder_query = self._decoder.decoder_query(\n        inputs, modality_sizes, inputs_without_pos,\n        subsampled_points=subsampled_output_points)\n\n    # Run the network forward:\n    z = self._encoder(inputs, encoder_query,\n                      is_training=is_training, input_mask=input_mask)\n    _, output_modality_sizes = self._decoder.output_shape(\n        inputs)\n    output_modality_sizes = output_modality_sizes or modality_sizes\n\n    outputs = self._decoder(\n        decoder_query, z, is_training=is_training, query_mask=query_mask)\n\n    if self._output_postprocessor:\n      outputs = self._output_postprocessor(outputs, is_training=is_training,\n                                           modality_sizes=output_modality_sizes)\n\n    return outputs\n\n\nclass PerceiverEncoder(hk.Module):\n  \"\"\"The Perceiver Encoder: a scalable, fully attentional encoder.\"\"\"\n\n  def __init__(\n      self,\n      # The encoder has a total of\n      #   num_self_attends_per_block * num_blocks\n      # self-attend layers. We share weights between blocks.\n      num_self_attends_per_block=6,\n      num_blocks=8,\n      z_index_dim=512,\n      num_z_channels=1024,\n      qk_channels=None,\n      v_channels=None,\n      num_cross_attend_heads=1,\n      num_self_attend_heads=8,\n      cross_attend_widening_factor=1,\n      self_attend_widening_factor=1,\n      dropout_prob=0.0,\n      z_pos_enc_init_scale=0.02,\n      cross_attention_shape_for_attn='kv',\n      use_query_residual=True,\n      name='perceiver_encoder'):\n    super().__init__(name=name)\n\n    # Check that we can use multihead-attention with these shapes.\n    if num_z_channels % num_self_attend_heads != 0:\n      raise ValueError(f'num_z_channels ({num_z_channels}) must be divisible by'\n                       f' num_self_attend_heads ({num_self_attend_heads}).')\n    if num_z_channels % num_cross_attend_heads != 0:\n      raise ValueError(f'num_z_channels ({num_z_channels}) must be divisible by'\n                       f' num_cross_attend_heads ({num_cross_attend_heads}).')\n\n    self._input_is_1d = True\n\n    self._num_blocks = num_blocks\n\n    # Construct the latent array initial state.\n    self.z_pos_enc = position_encoding.TrainablePositionEncoding(\n        index_dim=z_index_dim,\n        num_channels=num_z_channels,\n        init_scale=z_pos_enc_init_scale)\n\n    # Construct the cross attend:\n    self.cross_attend = CrossAttention(\n        dropout_prob=dropout_prob,\n        num_heads=num_cross_attend_heads,\n        widening_factor=cross_attend_widening_factor,\n        shape_for_attn=cross_attention_shape_for_attn,\n        qk_channels=qk_channels,\n        v_channels=v_channels,\n        use_query_residual=use_query_residual)\n\n    # Construct the block of self-attend layers.\n    # We get deeper architectures by applying this block more than once.\n    self.self_attends = []\n    for _ in range(num_self_attends_per_block):\n      self_attend = SelfAttention(\n          num_heads=num_self_attend_heads,\n          dropout_prob=dropout_prob,\n          qk_channels=qk_channels,\n          v_channels=v_channels,\n          widening_factor=self_attend_widening_factor)\n      self.self_attends.append(self_attend)\n\n  def latents(self, inputs):\n    # Initialize the latent array for the initial cross-attend.\n    return self.z_pos_enc(batch_size=inputs.shape[0])\n\n  def __call__(self, inputs, z, *, is_training, input_mask=None):\n    attention_mask = None\n    if input_mask is not None:\n      attention_mask = make_cross_attention_mask(\n          query_mask=jnp.ones(z.shape[:2], dtype=jnp.int32),\n          kv_mask=input_mask)\n    z = self.cross_attend(z, inputs, is_training=is_training,\n                          attention_mask=attention_mask)\n    for _ in range(self._num_blocks):\n      for self_attend in self.self_attends:\n        z = self_attend(z, is_training=is_training)\n    return z\n\n\nclass AbstractPerceiverDecoder(hk.Module, metaclass=abc.ABCMeta):\n  \"\"\"Abstract Perceiver decoder.\"\"\"\n\n  @abc.abstractmethod\n  def decoder_query(self, inputs, modality_sizes=None, inputs_without_pos=None,\n                    subsampled_points=None):\n    raise NotImplementedError\n\n  @abc.abstractmethod\n  def output_shape(self, inputs):\n    raise NotImplementedError\n\n  @abc.abstractmethod\n  def __call__(self, query, z, *, is_training, query_mask=None):\n    raise NotImplementedError\n\n\nclass ProjectionDecoder(AbstractPerceiverDecoder):\n  \"\"\"Baseline projection decoder (no cross-attention).\"\"\"\n\n  def __init__(\n      self,\n      num_classes,\n      final_avg_before_project=False,\n      name='projection_decoder'):\n    super().__init__(name=name)\n    self._final_avg_before_project = final_avg_before_project\n    self._num_classes = num_classes\n    self.final_layer = hk.Linear(\n        num_classes, w_init=jnp.zeros, name='logits')\n\n  def decoder_query(self, inputs, modality_sizes=None, inputs_without_pos=None,\n                    subsampled_points=None):\n    return None\n\n  def output_shape(self, inputs):\n    return ((inputs.shape[0], self._num_classes), None)\n\n  def __call__(self, query, z, *, is_training, query_mask=None):\n    # b x n_z x c -> b x c\n    z = jnp.mean(z, axis=1, dtype=z.dtype)\n    # b x c -> b x n_logits\n    logits = self.final_layer(z)\n    return logits\n\n\nclass BasicDecoder(AbstractPerceiverDecoder):\n  \"\"\"Cross-attention-based decoder.\"\"\"\n\n  def __init__(self,\n               output_num_channels,\n               position_encoding_type='trainable',\n               # Ignored if position_encoding_type == 'none':\n               output_index_dims=None,\n               subsampled_index_dims=None,\n               num_z_channels=1024,\n               qk_channels=None,\n               v_channels=None,\n               use_query_residual=False,\n               output_w_init=None,\n               concat_preprocessed_input=False,\n               num_heads=1,\n               name='basic_decoder',\n               final_project=True,\n               **position_encoding_kwargs):\n    super().__init__(name=name)\n    self._position_encoding_type = position_encoding_type\n\n    # If `none`, the decoder will not construct any position encodings.\n    # You should construct your own when quering the decoder.\n    self.output_pos_enc = None\n    if self._position_encoding_type != 'none':\n      self.output_pos_enc = position_encoding.build_position_encoding(\n          position_encoding_type,\n          index_dims=output_index_dims,\n          **position_encoding_kwargs)\n\n    self._output_index_dim = output_index_dims\n    if subsampled_index_dims is None:\n      subsampled_index_dims = output_index_dims\n    self._subsampled_index_dims = subsampled_index_dims\n    self._output_num_channels = output_num_channels\n    self._output_w_init = output_w_init\n    self._use_query_residual = use_query_residual\n    self._qk_channels = qk_channels\n    self._v_channels = v_channels\n    self._final_project = final_project\n    self._num_heads = num_heads\n\n    self._concat_preprocessed_input = concat_preprocessed_input\n\n  def output_shape(self, inputs):\n    return ((inputs[0], self._subsampled_index_dims, self._output_num_channels),\n            None)\n\n  def decoder_query(self, inputs, modality_sizes=None,\n                    inputs_without_pos=None, subsampled_points=None):\n    assert self._position_encoding_type != 'none'  # Queries come from elsewhere\n    if subsampled_points is not None:\n      # unravel_index returns a tuple (x_idx, y_idx, ...)\n      # stack to get the [n, d] tensor of coordinates\n      pos = jnp.stack(\n          jnp.unravel_index(subsampled_points, self._output_index_dim),\n          axis=1)\n      # Map these coordinates to [-1, 1]\n      pos = -1 + 2 * pos / jnp.array(self._output_index_dim)[None, :]\n      pos = jnp.broadcast_to(pos[None],\n                             [inputs.shape[0], pos.shape[0], pos.shape[1]])\n      pos_emb = self.output_pos_enc(\n          batch_size=inputs.shape[0],\n          pos=pos)\n      pos_emb = jnp.reshape(pos_emb, [pos_emb.shape[0], -1, pos_emb.shape[-1]])\n    else:\n      pos_emb = self.output_pos_enc(batch_size=inputs.shape[0])\n    if self._concat_preprocessed_input:\n      if inputs_without_pos is None:\n        raise ValueError('Value is required for inputs_without_pos if'\n                         ' concat_preprocessed_input is True')\n      pos_emb = jnp.concatenate([inputs_without_pos, pos_emb], axis=-1)\n\n    return pos_emb\n\n  def __call__(self, query, z, *, is_training,\n               query_mask=None):\n    # Cross-attention decoding.\n    # key, value: B x N x K; query: B x M x K\n    # Attention maps -> B x N x M\n    # Output -> B x M x K\n    # Construct cross attention and linear layer lazily, in case we don't need\n    # them.\n    attention_mask = None\n    if query_mask is not None:\n      attention_mask = make_cross_attention_mask(\n          query_mask=query_mask,\n          kv_mask=jnp.ones(z.shape[:2], dtype=jnp.int32))\n    decoding_cross_attn = CrossAttention(\n        dropout_prob=0.0,\n        num_heads=self._num_heads,\n        widening_factor=1,\n        shape_for_attn='kv',\n        qk_channels=self._qk_channels,\n        v_channels=self._v_channels,\n        use_query_residual=self._use_query_residual)\n    final_layer = hk.Linear(\n        self._output_num_channels, w_init=self._output_w_init, name='output')\n    output = decoding_cross_attn(query, z, is_training=is_training,\n                                 attention_mask=attention_mask)\n    if self._final_project:\n      output = final_layer(output)\n    return output\n\n\nclass ClassificationDecoder(AbstractPerceiverDecoder):\n  \"\"\"Cross-attention based classification decoder.\n\n  Light-weight wrapper of `BasicDecoder` for logit output.\n  \"\"\"\n\n  def __init__(self,\n               num_classes,\n               name='classification_decoder',\n               **decoder_kwargs):\n    super().__init__(name=name)\n\n    self._num_classes = num_classes\n    self.decoder = BasicDecoder(\n        output_index_dims=(1,),  # Predict a single logit array.\n        output_num_channels=num_classes,\n        **decoder_kwargs)\n\n  def decoder_query(self, inputs, modality_sizes=None,\n                    inputs_without_pos=None, subsampled_points=None):\n    return self.decoder.decoder_query(inputs, modality_sizes,\n                                      inputs_without_pos,\n                                      subsampled_points=subsampled_points)\n\n  def output_shape(self, inputs):\n    return (inputs.shape[0], self._num_classes), None\n\n  def __call__(self, query, z, *, is_training, query_mask=None):\n    # B x 1 x num_classes -> B x num_classes\n    logits = self.decoder(query, z, is_training=is_training)\n    return logits[:, 0, :]\n\n\nclass MultimodalDecoder(AbstractPerceiverDecoder):\n  \"\"\"Multimodal decoding by composing uni-modal decoders.\n\n  The modalities argument of the constructor is a dictionary mapping modality\n  name to the decoder of that modality. That decoder will be used to construct\n  queries for that modality. However, there is a shared cross attention across\n  all modalities, using the concatenated per-modality query vectors.\n  \"\"\"\n\n  def __init__(self, modalities, num_outputs, output_num_channels,\n               min_padding_size=2,\n               subsampled_index_dims=None,\n               name='multimodal_decoder', **decoder_kwargs):\n    super().__init__(name=name)\n    self._modalities = modalities\n    self._subsampled_index_dims = subsampled_index_dims\n    self._min_padding_size = min_padding_size\n    self._output_num_channels = output_num_channels\n    self._num_outputs = num_outputs\n    self._decoder = BasicDecoder(\n        output_index_dims=(num_outputs,),\n        output_num_channels=output_num_channels,\n        position_encoding_type='none',\n        **decoder_kwargs)\n\n  def decoder_query(self, inputs, modality_sizes, inputs_without_pos=None,  # pytype: disable=signature-mismatch  # overriding-parameter-count-checks\n                    subsampled_points=None):\n    # Partition the flat inputs among the different modalities\n    inputs = io_processors.restructure(modality_sizes, inputs)\n    # Obtain modality-specific decoders' queries\n    subsampled_points = subsampled_points or dict()\n    decoder_queries = dict()\n    for modality, decoder in self._modalities.items():\n      # Get input_without_pos for this modality if it exists.\n      input_without_pos = None\n      if inputs_without_pos is not None:\n        input_without_pos = inputs_without_pos.get(modality, None)\n      decoder_queries[modality] = decoder.decoder_query(\n          inputs=inputs[modality],\n          modality_sizes=None,\n          inputs_without_pos=input_without_pos,\n          subsampled_points=subsampled_points.get(modality, None)\n      )\n\n    # Pad all queries with trainable position encodings to make them\n    # have the same channels\n    num_channels = (max(query.shape[2] for query in decoder_queries.values())\n                    + self._min_padding_size)\n    def embed(modality, x):\n      x = jnp.reshape(x, [x.shape[0], np.prod(x.shape[1:-1]), x.shape[-1]])\n      pos = position_encoding.TrainablePositionEncoding(\n          1, num_channels=num_channels - x.shape[2],\n          init_scale=0.02, name=f'{modality}_padding')(x.shape[0])\n      pos = jnp.broadcast_to(\n          pos, [x.shape[0], x.shape[1], num_channels - x.shape[2]])\n      return jnp.concatenate([x, pos], axis=2)\n\n    # Apply a predictable ordering to the modalities\n    return jnp.concatenate([\n        embed(modality, decoder_queries[modality])\n        for modality in sorted(self._modalities.keys())\n    ], axis=1)\n\n  def output_shape(self, inputs):\n    if self._subsampled_index_dims is not None:\n      subsampled_index_dims = sum(self._subsampled_index_dims.values())\n    else:\n      subsampled_index_dims = self._num_outputs\n    return ((inputs.shape[0], subsampled_index_dims, self._output_num_channels),\n            self._subsampled_index_dims)\n\n  def __call__(self, query, z, *, is_training, query_mask=None):\n    # B x 1 x num_classes -> B x num_classes\n    return self._decoder(query, z, is_training=is_training)\n\n\nclass BasicVideoAutoencodingDecoder(AbstractPerceiverDecoder):\n  \"\"\"Cross-attention based video-autoencoding decoder.\n\n  Light-weight wrapper of `BasicDecoder` with video reshaping logic.\n  \"\"\"\n\n  def __init__(self,\n               output_shape,\n               position_encoding_type,\n               name='basic_video_autoencoding_decoder',\n               **decoder_kwargs):\n    super().__init__(name=name)\n    if len(output_shape) != 4:  # B, T, H, W\n      raise ValueError(f'Expected rank 4 output_shape, got {output_shape}.')\n    # Build the decoder components:\n    self._output_shape = output_shape\n    self._output_num_channels = decoder_kwargs['output_num_channels']\n\n    self.decoder = BasicDecoder(\n        output_index_dims=self._output_shape[1:4],  # T*H*W\n        position_encoding_type=position_encoding_type,\n        **decoder_kwargs)\n\n  def decoder_query(self, inputs, modality_sizes=None,\n                    inputs_without_pos=None, subsampled_points=None):\n    return self.decoder.decoder_query(inputs,\n                                      modality_sizes=modality_sizes,\n                                      inputs_without_pos=inputs_without_pos,\n                                      subsampled_points=subsampled_points)\n\n  def output_shape(self, inputs):\n    return ([inputs.shape[0]] + self._output_shape[1:] +\n            [self._output_num_channels], None)\n\n  def __call__(self, query, z, *, is_training, query_mask=None):\n    output = self.decoder(query, z, is_training=is_training)\n\n    output = jnp.reshape(output, self._output_shape + [output.shape[-1]])\n    return output\n\n\nclass FlowDecoder(AbstractPerceiverDecoder):\n  \"\"\"Cross-attention based flow decoder.\"\"\"\n\n  def __init__(self,\n               output_image_shape,\n               output_num_channels=2,\n               rescale_factor=100.0,\n               name='flow_decoder',\n               **decoder_kwargs):\n    super().__init__(name=name)\n\n    self._output_image_shape = output_image_shape\n    self._output_num_channels = output_num_channels\n    self._rescale_factor = rescale_factor\n    self.decoder = BasicDecoder(\n        output_num_channels=output_num_channels,\n        **decoder_kwargs)\n\n  def output_shape(self, inputs):\n    # The channel dimensions of output here don't necessarily correspond to\n    # (u, v) of flow: they may contain dims needed for the post-processor.\n    return ((inputs.shape[0],) + tuple(self._output_image_shape) + (\n        self._output_num_channels,), None)\n\n  def decoder_query(\n      self, inputs, modality_sizes=None, inputs_without_pos=None,\n      subsampled_points=None):\n    if subsampled_points is not None:\n      raise ValueError(\"FlowDecoder doesn't support subsampling yet.\")\n    # assumes merged in time\n    return inputs\n\n  def __call__(self, query, z, *, is_training, query_mask=None):\n    # Output flow and rescale.\n    preds = self.decoder(query, z, is_training=is_training)\n    preds /= self._rescale_factor\n\n    return preds.reshape([preds.shape[0]] + list(self._output_image_shape) +\n                         [preds.shape[-1]])\n"
  },
  {
    "path": "perceiver/position_encoding.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Position encodings and utilities.\"\"\"\n\nimport abc\nimport functools\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\n\n\ndef generate_fourier_features(\n    pos, num_bands, max_resolution=(224, 224),\n    concat_pos=True, sine_only=False):\n  \"\"\"Generate a Fourier frequency position encoding with linear spacing.\n\n  Args:\n    pos: The position of n points in d dimensional space.\n      A jnp array of shape [n, d].\n    num_bands: The number of bands (K) to use.\n    max_resolution: The maximum resolution (i.e. the number of pixels per dim).\n      A tuple representing resolution for each dimension\n    concat_pos: Concatenate the input position encoding to the Fourier features?\n    sine_only: Whether to use a single phase (sin) or two (sin/cos) for each\n      frequency band.\n  Returns:\n    embedding: A 1D jnp array of shape [n, n_channels]. If concat_pos is True\n      and sine_only is False, output dimensions are ordered as:\n        [dim_1, dim_2, ..., dim_d,\n         sin(pi*f_1*dim_1), ..., sin(pi*f_K*dim_1), ...,\n         sin(pi*f_1*dim_d), ..., sin(pi*f_K*dim_d),\n         cos(pi*f_1*dim_1), ..., cos(pi*f_K*dim_1), ...,\n         cos(pi*f_1*dim_d), ..., cos(pi*f_K*dim_d)],\n       where dim_i is pos[:, i] and f_k is the kth frequency band.\n  \"\"\"\n  min_freq = 1.0\n  # Nyquist frequency at the target resolution:\n\n  freq_bands = jnp.stack([\n      jnp.linspace(min_freq, res / 2, num=num_bands, endpoint=True)\n      for res in max_resolution], axis=0)\n\n  # Get frequency bands for each spatial dimension.\n  # Output is size [n, d * num_bands]\n  per_pos_features = pos[:, :, None] * freq_bands[None, :, :]\n  per_pos_features = jnp.reshape(per_pos_features,\n                                 [-1, np.prod(per_pos_features.shape[1:])])\n\n  if sine_only:\n    # Output is size [n, d * num_bands]\n    per_pos_features = jnp.sin(jnp.pi * (per_pos_features))\n  else:\n    # Output is size [n, 2 * d * num_bands]\n    per_pos_features = jnp.concatenate(\n        [jnp.sin(jnp.pi * per_pos_features),\n         jnp.cos(jnp.pi * per_pos_features)], axis=-1)\n  # Concatenate the raw input positions.\n  if concat_pos:\n    # Adds d bands to the encoding.\n    per_pos_features = jnp.concatenate([pos, per_pos_features], axis=-1)\n  return per_pos_features\n\n\ndef build_linear_positions(index_dims, output_range=(-1.0, 1.0)):\n  \"\"\"Generate an array of position indices for an N-D input array.\n\n  Args:\n    index_dims: The shape of the index dimensions of the input array.\n    output_range: The min and max values taken by each input index dimension.\n  Returns:\n    A jnp array of shape [index_dims[0], index_dims[1], .., index_dims[-1], N].\n  \"\"\"\n  def _linspace(n_xels_per_dim):\n    return jnp.linspace(\n        output_range[0], output_range[1],\n        num=n_xels_per_dim,\n        endpoint=True, dtype=jnp.float32)\n\n  dim_ranges = [\n      _linspace(n_xels_per_dim) for n_xels_per_dim in index_dims]\n  array_index_grid = jnp.meshgrid(*dim_ranges, indexing='ij')\n\n  return jnp.stack(array_index_grid, axis=-1)\n\n\nclass AbstractPositionEncoding(hk.Module, metaclass=abc.ABCMeta):\n  \"\"\"Abstract Perceiver decoder.\"\"\"\n\n  @abc.abstractmethod\n  def __call__(self, batch_size, pos):\n    raise NotImplementedError\n\n\nclass TrainablePositionEncoding(AbstractPositionEncoding):\n  \"\"\"Trainable position encoding.\"\"\"\n\n  def __init__(self, index_dim, num_channels=128, init_scale=0.02, name=None):\n    super(TrainablePositionEncoding, self).__init__(name=name)\n    self._index_dim = index_dim\n    self._num_channels = num_channels\n    self._init_scale = init_scale\n\n  def __call__(self, batch_size, pos=None):\n    del pos  # Unused.\n    pos_embs = hk.get_parameter(\n        'pos_embs', [self._index_dim, self._num_channels],\n        init=hk.initializers.TruncatedNormal(stddev=self._init_scale))\n\n    if batch_size is not None:\n      pos_embs = jnp.broadcast_to(\n          pos_embs[None, :, :], (batch_size,) + pos_embs.shape)\n    return pos_embs\n\n\ndef _check_or_build_spatial_positions(pos, index_dims, batch_size):\n  \"\"\"Checks or builds spatial position features (x, y, ...).\n\n  Args:\n    pos: None, or an array of position features. If None, position features\n      are built. Otherwise, their size is checked.\n    index_dims: An iterable giving the spatial/index size of the data to be\n      featurized.\n    batch_size: The batch size of the data to be featurized.\n  Returns:\n    An array of position features, of shape [batch_size, prod(index_dims)].\n  \"\"\"\n  if pos is None:\n    pos = build_linear_positions(index_dims)\n    pos = jnp.broadcast_to(pos[None], (batch_size,) + pos.shape)\n    pos = jnp.reshape(pos, [batch_size, np.prod(index_dims), -1])\n  else:\n    # Just a warning label: you probably don't want your spatial features to\n    # have a different spatial layout than your pos coordinate system.\n    # But feel free to override if you think it'll work!\n    assert pos.shape[-1] == len(index_dims)\n\n  return pos\n\n\nclass FourierPositionEncoding(AbstractPositionEncoding):\n  \"\"\"Fourier (Sinusoidal) position encoding.\"\"\"\n\n  def __init__(self, index_dims, num_bands, concat_pos=True,\n               max_resolution=None, sine_only=False, name=None):\n    super(FourierPositionEncoding, self).__init__(name=name)\n    self._num_bands = num_bands\n    self._concat_pos = concat_pos\n    self._sine_only = sine_only\n    self._index_dims = index_dims\n    # Use the index dims as the maximum resolution if it's not provided.\n    self._max_resolution = max_resolution or index_dims\n\n  def __call__(self, batch_size, pos=None):\n    pos = _check_or_build_spatial_positions(pos, self._index_dims, batch_size)\n    build_ff_fn = functools.partial(\n        generate_fourier_features,\n        num_bands=self._num_bands,\n        max_resolution=self._max_resolution,\n        concat_pos=self._concat_pos,\n        sine_only=self._sine_only)\n    return jax.vmap(build_ff_fn, 0, 0)(pos)\n\n\nclass PositionEncodingProjector(AbstractPositionEncoding):\n  \"\"\"Projects a position encoding to a target size.\"\"\"\n\n  def __init__(self, output_size, base_position_encoding, name=None):\n    super(PositionEncodingProjector, self).__init__(name=name)\n    self._output_size = output_size\n    self._base_position_encoding = base_position_encoding\n\n  def __call__(self, batch_size, pos=None):\n    base_pos = self._base_position_encoding(batch_size, pos)\n    projected_pos = hk.Linear(output_size=self._output_size)(base_pos)\n    return projected_pos\n\n\ndef build_position_encoding(\n    position_encoding_type,\n    index_dims,\n    project_pos_dim=-1,\n    trainable_position_encoding_kwargs=None,\n    fourier_position_encoding_kwargs=None,\n    name=None):\n  \"\"\"Builds the position encoding.\"\"\"\n\n  if position_encoding_type == 'trainable':\n    assert trainable_position_encoding_kwargs is not None\n    output_pos_enc = TrainablePositionEncoding(\n        # Construct 1D features:\n        index_dim=np.prod(index_dims),\n        name=name,\n        **trainable_position_encoding_kwargs)\n  elif position_encoding_type == 'fourier':\n    assert fourier_position_encoding_kwargs is not None\n    output_pos_enc = FourierPositionEncoding(\n        index_dims=index_dims,\n        name=name,\n        **fourier_position_encoding_kwargs)\n  else:\n    raise ValueError(f'Unknown position encoding: {position_encoding_type}.')\n\n  if project_pos_dim > 0:\n    # Project the position encoding to a target dimension:\n    output_pos_enc = PositionEncodingProjector(\n        output_size=project_pos_dim,\n        base_position_encoding=output_pos_enc)\n\n  return output_pos_enc\n"
  },
  {
    "path": "perceiver/requirements.txt",
    "content": "absl-py==0.13.0\ndill==0.3.4\ndm-haiku==0.0.4\neinops==0.3.0\nflatbuffers~=1.12.0\nimageio==2.9.0\nimmutabledict==2.0.0\njaxline==0.0.3\nnumpy~=1.19.2\nopencv-python==4.5.2.54\nopt-einsum==3.3.0\noptax==0.0.9\nPillow==8.3.1\nscipy==1.7.0\nsix~=1.15.0\ntabulate==0.8.9\ntensorflow==2.5.0\ntensorflow-addons==0.13.0\ntensorflow-datasets==4.3.0\ntensorflow-probability==0.13.0\n"
  },
  {
    "path": "perceiver/train/autoaugment.py",
    "content": "# Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ==============================================================================\n\n\"\"\"AutoAugment and RandAugment policies for enhanced image preprocessing.\n\nAutoAugment Reference: https://arxiv.org/abs/1805.09501\nRandAugment Reference: https://arxiv.org/abs/1909.13719\n\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport inspect\nimport math\nfrom ml_collections import config_dict\nimport tensorflow.compat.v1 as tf\nfrom tensorflow_addons import image as contrib_image\n# pylint: disable=deprecated-method\n\n# This signifies the max integer that the controller RNN could predict for the\n# augmentation scheme.\n_MAX_LEVEL = 10.\n\n\ndef policy_v0():\n  \"\"\"Autoaugment policy that was used in AutoAugment Paper.\"\"\"\n  # Each tuple is an augmentation operation of the form\n  # (operation, probability, magnitude). Each element in policy is a\n  # sub-policy that will be applied sequentially on the image.\n  policy = [\n      [('Equalize', 0.8, 1), ('ShearY', 0.8, 4)],\n      [('Color', 0.4, 9), ('Equalize', 0.6, 3)],\n      [('Color', 0.4, 1), ('Rotate', 0.6, 8)],\n      [('Solarize', 0.8, 3), ('Equalize', 0.4, 7)],\n      [('Solarize', 0.4, 2), ('Solarize', 0.6, 2)],\n      [('Color', 0.2, 0), ('Equalize', 0.8, 8)],\n      [('Equalize', 0.4, 8), ('SolarizeAdd', 0.8, 3)],\n      [('ShearX', 0.2, 9), ('Rotate', 0.6, 8)],\n      [('Color', 0.6, 1), ('Equalize', 1.0, 2)],\n      [('Invert', 0.4, 9), ('Rotate', 0.6, 0)],\n      [('Equalize', 1.0, 9), ('ShearY', 0.6, 3)],\n      [('Color', 0.4, 7), ('Equalize', 0.6, 0)],\n      [('Posterize', 0.4, 6), ('AutoContrast', 0.4, 7)],\n      [('Solarize', 0.6, 8), ('Color', 0.6, 9)],\n      [('Solarize', 0.2, 4), ('Rotate', 0.8, 9)],\n      [('Rotate', 1.0, 7), ('TranslateY', 0.8, 9)],\n      [('ShearX', 0.0, 0), ('Solarize', 0.8, 4)],\n      [('ShearY', 0.8, 0), ('Color', 0.6, 4)],\n      [('Color', 1.0, 0), ('Rotate', 0.6, 2)],\n      [('Equalize', 0.8, 4), ('Equalize', 0.0, 8)],\n      [('Equalize', 1.0, 4), ('AutoContrast', 0.6, 2)],\n      [('ShearY', 0.4, 7), ('SolarizeAdd', 0.6, 7)],\n      [('Posterize', 0.8, 2), ('Solarize', 0.6, 10)],\n      [('Solarize', 0.6, 8), ('Equalize', 0.6, 1)],\n      [('Color', 0.8, 6), ('Rotate', 0.4, 5)],\n  ]\n  return policy\n\n\ndef policy_vtest():\n  \"\"\"Autoaugment test policy for debugging.\"\"\"\n  # Each tuple is an augmentation operation of the form\n  # (operation, probability, magnitude). Each element in policy is a\n  # sub-policy that will be applied sequentially on the image.\n  policy = [\n      [('TranslateX', 1.0, 4), ('Equalize', 1.0, 10)],\n  ]\n  return policy\n\n\ndef blend(image1, image2, factor):\n  \"\"\"Blend image1 and image2 using 'factor'.\n\n  Factor can be above 0.0.  A value of 0.0 means only image1 is used.\n  A value of 1.0 means only image2 is used.  A value between 0.0 and\n  1.0 means we linearly interpolate the pixel values between the two\n  images.  A value greater than 1.0 \"extrapolates\" the difference\n  between the two pixel values, and we clip the results to values\n  between 0 and 255.\n\n  Args:\n    image1: An image Tensor of type uint8.\n    image2: An image Tensor of type uint8.\n    factor: A floating point value above 0.0.\n\n  Returns:\n    A blended image Tensor of type uint8.\n  \"\"\"\n  if factor == 0.0:\n    return tf.convert_to_tensor(image1)\n  if factor == 1.0:\n    return tf.convert_to_tensor(image2)\n\n  image1 = tf.to_float(image1)\n  image2 = tf.to_float(image2)\n\n  difference = image2 - image1\n  scaled = factor * difference\n\n  # Do addition in float.\n  temp = tf.to_float(image1) + scaled\n\n  # Interpolate\n  if factor > 0.0 and factor < 1.0:\n    # Interpolation means we always stay within 0 and 255.\n    return tf.cast(temp, tf.uint8)\n\n  # Extrapolate:\n  #\n  # We need to clip and then cast.\n  return tf.cast(tf.clip_by_value(temp, 0.0, 255.0), tf.uint8)\n\n\ndef cutout(image, pad_size, replace=0):\n  \"\"\"Apply cutout (https://arxiv.org/abs/1708.04552) to image.\n\n  This operation applies a (2*pad_size x 2*pad_size) mask of zeros to\n  a random location within `img`. The pixel values filled in will be of the\n  value `replace`. The located where the mask will be applied is randomly\n  chosen uniformly over the whole image.\n\n  Args:\n    image: An image Tensor of type uint8.\n    pad_size: Specifies how big the zero mask that will be generated is that\n      is applied to the image. The mask will be of size\n      (2*pad_size x 2*pad_size).\n    replace: What pixel value to fill in the image in the area that has\n      the cutout mask applied to it.\n\n  Returns:\n    An image Tensor that is of type uint8.\n  \"\"\"\n  image_height = tf.shape(image)[0]\n  image_width = tf.shape(image)[1]\n\n  # Sample the center location in the image where the zero mask will be applied.\n  cutout_center_height = tf.random_uniform(\n      shape=[], minval=0, maxval=image_height,\n      dtype=tf.int32)\n\n  cutout_center_width = tf.random_uniform(\n      shape=[], minval=0, maxval=image_width,\n      dtype=tf.int32)\n\n  lower_pad = tf.maximum(0, cutout_center_height - pad_size)\n  upper_pad = tf.maximum(0, image_height - cutout_center_height - pad_size)\n  left_pad = tf.maximum(0, cutout_center_width - pad_size)\n  right_pad = tf.maximum(0, image_width - cutout_center_width - pad_size)\n\n  cutout_shape = [image_height - (lower_pad + upper_pad),\n                  image_width - (left_pad + right_pad)]\n  padding_dims = [[lower_pad, upper_pad], [left_pad, right_pad]]\n  mask = tf.pad(\n      tf.zeros(cutout_shape, dtype=image.dtype),\n      padding_dims, constant_values=1)\n  mask = tf.expand_dims(mask, -1)\n  mask = tf.tile(mask, [1, 1, 3])\n  image = tf.where(\n      tf.equal(mask, 0),\n      tf.ones_like(image, dtype=image.dtype) * replace,\n      image)\n  return image\n\n\ndef solarize(image, threshold=128):\n  # For each pixel in the image, select the pixel\n  # if the value is less than the threshold.\n  # Otherwise, subtract the pixel from 255.\n  return tf.where(image < threshold, image, 255 - image)\n\n\ndef solarize_add(image, addition=0, threshold=128):\n  # For each pixel in the image less than threshold\n  # we add 'addition' amount to it and then clip the\n  # pixel value to be between 0 and 255. The value\n  # of 'addition' is between -128 and 128.\n  added_image = tf.cast(image, tf.int64) + addition\n  added_image = tf.cast(tf.clip_by_value(added_image, 0, 255), tf.uint8)\n  return tf.where(image < threshold, added_image, image)\n\n\ndef color(image, factor):\n  \"\"\"Equivalent of PIL Color.\"\"\"\n  degenerate = tf.image.grayscale_to_rgb(tf.image.rgb_to_grayscale(image))\n  return blend(degenerate, image, factor)\n\n\ndef contrast(image, factor):\n  \"\"\"Equivalent of PIL Contrast.\"\"\"\n  degenerate = tf.image.rgb_to_grayscale(image)\n  # Cast before calling tf.histogram.\n  degenerate = tf.cast(degenerate, tf.int32)\n\n  # Compute the grayscale histogram, then compute the mean pixel value,\n  # and create a constant image size of that value.  Use that as the\n  # blending degenerate target of the original image.\n  hist = tf.histogram_fixed_width(degenerate, [0, 255], nbins=256)\n  mean = tf.reduce_sum(tf.cast(hist, tf.float32)) / 256.0\n  degenerate = tf.ones_like(degenerate, dtype=tf.float32) * mean\n  degenerate = tf.clip_by_value(degenerate, 0.0, 255.0)\n  degenerate = tf.image.grayscale_to_rgb(tf.cast(degenerate, tf.uint8))\n  return blend(degenerate, image, factor)\n\n\ndef brightness(image, factor):\n  \"\"\"Equivalent of PIL Brightness.\"\"\"\n  degenerate = tf.zeros_like(image)\n  return blend(degenerate, image, factor)\n\n\ndef posterize(image, bits):\n  \"\"\"Equivalent of PIL Posterize.\"\"\"\n  shift = 8 - bits\n  return tf.bitwise.left_shift(tf.bitwise.right_shift(image, shift), shift)\n\n\ndef rotate(image, degrees, replace):\n  \"\"\"Rotates the image by degrees either clockwise or counterclockwise.\n\n  Args:\n    image: An image Tensor of type uint8.\n    degrees: Float, a scalar angle in degrees to rotate all images by. If\n      degrees is positive the image will be rotated clockwise otherwise it will\n      be rotated counterclockwise.\n    replace: A one or three value 1D tensor to fill empty pixels caused by\n      the rotate operation.\n\n  Returns:\n    The rotated version of image.\n  \"\"\"\n  # Convert from degrees to radians.\n  degrees_to_radians = math.pi / 180.0\n  radians = degrees * degrees_to_radians\n\n  # In practice, we should randomize the rotation degrees by flipping\n  # it negatively half the time, but that's done on 'degrees' outside\n  # of the function.\n  image = contrib_image.rotate(wrap(image), radians)\n  return unwrap(image, replace)\n\n\ndef translate_x(image, pixels, replace):\n  \"\"\"Equivalent of PIL Translate in X dimension.\"\"\"\n  image = contrib_image.translate(wrap(image), [-pixels, 0])\n  return unwrap(image, replace)\n\n\ndef translate_y(image, pixels, replace):\n  \"\"\"Equivalent of PIL Translate in Y dimension.\"\"\"\n  image = contrib_image.translate(wrap(image), [0, -pixels])\n  return unwrap(image, replace)\n\n\ndef shear_x(image, level, replace):\n  \"\"\"Equivalent of PIL Shearing in X dimension.\"\"\"\n  # Shear parallel to x axis is a projective transform\n  # with a matrix form of:\n  # [1  level\n  #  0  1].\n  image = contrib_image.transform(\n      wrap(image), [1., level, 0., 0., 1., 0., 0., 0.])\n  return unwrap(image, replace)\n\n\ndef shear_y(image, level, replace):\n  \"\"\"Equivalent of PIL Shearing in Y dimension.\"\"\"\n  # Shear parallel to y axis is a projective transform\n  # with a matrix form of:\n  # [1  0\n  #  level  1].\n  image = contrib_image.transform(\n      wrap(image), [1., 0., 0., level, 1., 0., 0., 0.])\n  return unwrap(image, replace)\n\n\ndef autocontrast(image):\n  \"\"\"Implements Autocontrast function from PIL using TF ops.\n\n  Args:\n    image: A 3D uint8 tensor.\n\n  Returns:\n    The image after it has had autocontrast applied to it and will be of type\n    uint8.\n  \"\"\"\n\n  def scale_channel(image):\n    \"\"\"Scale the 2D image using the autocontrast rule.\"\"\"\n    # A possibly cheaper version can be done using cumsum/unique_with_counts\n    # over the histogram values, rather than iterating over the entire image.\n    # to compute mins and maxes.\n    lo = tf.to_float(tf.reduce_min(image))\n    hi = tf.to_float(tf.reduce_max(image))\n\n    # Scale the image, making the lowest value 0 and the highest value 255.\n    def scale_values(im):\n      scale = 255.0 / (hi - lo)\n      offset = -lo * scale\n      im = tf.to_float(im) * scale + offset\n      im = tf.clip_by_value(im, 0.0, 255.0)\n      return tf.cast(im, tf.uint8)\n\n    result = tf.cond(hi > lo, lambda: scale_values(image), lambda: image)\n    return result\n\n  # Assumes RGB for now.  Scales each channel independently\n  # and then stacks the result.\n  s1 = scale_channel(image[:, :, 0])\n  s2 = scale_channel(image[:, :, 1])\n  s3 = scale_channel(image[:, :, 2])\n  image = tf.stack([s1, s2, s3], 2)\n  return image\n\n\ndef sharpness(image, factor):\n  \"\"\"Implements Sharpness function from PIL using TF ops.\"\"\"\n  orig_image = image\n  image = tf.cast(image, tf.float32)\n  # Make image 4D for conv operation.\n  image = tf.expand_dims(image, 0)\n  # SMOOTH PIL Kernel.\n  kernel = tf.constant(\n      [[1, 1, 1], [1, 5, 1], [1, 1, 1]], dtype=tf.float32,\n      shape=[3, 3, 1, 1]) / 13.\n  # Tile across channel dimension.\n  kernel = tf.tile(kernel, [1, 1, 3, 1])\n  strides = [1, 1, 1, 1]\n  with tf.device('/cpu:0'):\n    # Some augmentation that uses depth-wise conv will cause crashing when\n    # training on GPU. See (b/156242594) for details.\n    degenerate = tf.nn.depthwise_conv2d(\n        image, kernel, strides, padding='VALID', rate=[1, 1])\n  degenerate = tf.clip_by_value(degenerate, 0.0, 255.0)\n  degenerate = tf.squeeze(tf.cast(degenerate, tf.uint8), [0])\n\n  # For the borders of the resulting image, fill in the values of the\n  # original image.\n  mask = tf.ones_like(degenerate)\n  padded_mask = tf.pad(mask, [[1, 1], [1, 1], [0, 0]])\n  padded_degenerate = tf.pad(degenerate, [[1, 1], [1, 1], [0, 0]])\n  result = tf.where(tf.equal(padded_mask, 1), padded_degenerate, orig_image)\n\n  # Blend the final result.\n  return blend(result, orig_image, factor)\n\n\ndef equalize(image):\n  \"\"\"Implements Equalize function from PIL using TF ops.\"\"\"\n  def scale_channel(im, c):\n    \"\"\"Scale the data in the channel to implement equalize.\"\"\"\n    im = tf.cast(im[:, :, c], tf.int32)\n    # Compute the histogram of the image channel.\n    histo = tf.histogram_fixed_width(im, [0, 255], nbins=256)\n\n    # For the purposes of computing the step, filter out the nonzeros.\n    nonzero = tf.where(tf.not_equal(histo, 0))\n    nonzero_histo = tf.reshape(tf.gather(histo, nonzero), [-1])\n    step = (tf.reduce_sum(nonzero_histo) - nonzero_histo[-1]) // 255\n\n    def build_lut(histo, step):\n      # Compute the cumulative sum, shifting by step // 2\n      # and then normalization by step.\n      lut = (tf.cumsum(histo) + (step // 2)) // step\n      # Shift lut, prepending with 0.\n      lut = tf.concat([[0], lut[:-1]], 0)\n      # Clip the counts to be in range.  This is done\n      # in the C code for image.point.\n      return tf.clip_by_value(lut, 0, 255)\n\n    # If step is zero, return the original image.  Otherwise, build\n    # lut from the full histogram and step and then index from it.\n    result = tf.cond(tf.equal(step, 0),\n                     lambda: im,\n                     lambda: tf.gather(build_lut(histo, step), im))\n\n    return tf.cast(result, tf.uint8)\n\n  # Assumes RGB for now.  Scales each channel independently\n  # and then stacks the result.\n  s1 = scale_channel(image, 0)\n  s2 = scale_channel(image, 1)\n  s3 = scale_channel(image, 2)\n  image = tf.stack([s1, s2, s3], 2)\n  return image\n\n\ndef invert(image):\n  \"\"\"Inverts the image pixels.\"\"\"\n  image = tf.convert_to_tensor(image)\n  return 255 - image\n\n\ndef wrap(image):\n  \"\"\"Returns 'image' with an extra channel set to all 1s.\"\"\"\n  shape = tf.shape(image)\n  extended_channel = tf.ones([shape[0], shape[1], 1], image.dtype)\n  extended = tf.concat([image, extended_channel], 2)\n  return extended\n\n\ndef unwrap(image, replace):\n  \"\"\"Unwraps an image produced by wrap.\n\n  Where there is a 0 in the last channel for every spatial position,\n  the rest of the three channels in that spatial dimension are grayed\n  (set to 128).  Operations like translate and shear on a wrapped\n  Tensor will leave 0s in empty locations.  Some transformations look\n  at the intensity of values to do preprocessing, and we want these\n  empty pixels to assume the 'average' value, rather than pure black.\n\n\n  Args:\n    image: A 3D Image Tensor with 4 channels.\n    replace: A one or three value 1D tensor to fill empty pixels.\n\n  Returns:\n    image: A 3D image Tensor with 3 channels.\n  \"\"\"\n  image_shape = tf.shape(image)\n  # Flatten the spatial dimensions.\n  flattened_image = tf.reshape(image, [-1, image_shape[2]])\n\n  # Find all pixels where the last channel is zero.\n  alpha_channel = flattened_image[:, 3]\n\n  replace = tf.concat([replace, tf.ones([1], image.dtype)], 0)\n\n  # Where they are zero, fill them in with 'replace'.\n  flattened_image = tf.where(\n      tf.equal(alpha_channel, 0),\n      tf.ones_like(flattened_image, dtype=image.dtype) * replace,\n      flattened_image)\n\n  image = tf.reshape(flattened_image, image_shape)\n  image = tf.slice(image, [0, 0, 0], [image_shape[0], image_shape[1], 3])\n  return image\n\n\nNAME_TO_FUNC = {\n    'AutoContrast': autocontrast,\n    'Equalize': equalize,\n    'Invert': invert,\n    'Rotate': rotate,\n    'Posterize': posterize,\n    'Solarize': solarize,\n    'SolarizeAdd': solarize_add,\n    'Color': color,\n    'Contrast': contrast,\n    'Brightness': brightness,\n    'Sharpness': sharpness,\n    'ShearX': shear_x,\n    'ShearY': shear_y,\n    'TranslateX': translate_x,\n    'TranslateY': translate_y,\n    'Cutout': cutout,\n}\n\n\ndef _randomly_negate_tensor(tensor):\n  \"\"\"With 50% prob turn the tensor negative.\"\"\"\n  should_flip = tf.cast(tf.floor(tf.random_uniform([]) + 0.5), tf.bool)\n  final_tensor = tf.cond(should_flip, lambda: tensor, lambda: -tensor)\n  return final_tensor\n\n\ndef _rotate_level_to_arg(level):\n  level = (level/_MAX_LEVEL) * 30.\n  level = _randomly_negate_tensor(level)\n  return (level,)\n\n\ndef _shrink_level_to_arg(level):\n  \"\"\"Converts level to ratio by which we shrink the image content.\"\"\"\n  if level == 0:\n    return (1.0,)  # if level is zero, do not shrink the image\n  # Maximum shrinking ratio is 2.9.\n  level = 2. / (_MAX_LEVEL / level) + 0.9\n  return (level,)\n\n\ndef _enhance_level_to_arg(level):\n  return ((level/_MAX_LEVEL) * 1.8 + 0.1,)\n\n\ndef _shear_level_to_arg(level):\n  level = (level/_MAX_LEVEL) * 0.3\n  # Flip level to negative with 50% chance.\n  level = _randomly_negate_tensor(level)\n  return (level,)\n\n\ndef _translate_level_to_arg(level, translate_const):\n  level = (level/_MAX_LEVEL) * float(translate_const)\n  # Flip level to negative with 50% chance.\n  level = _randomly_negate_tensor(level)\n  return (level,)\n\n\ndef level_to_arg(hparams):\n  return {\n      'AutoContrast': lambda level: (),\n      'Equalize': lambda level: (),\n      'Invert': lambda level: (),\n      'Rotate': _rotate_level_to_arg,\n      'Posterize': lambda level: (int((level/_MAX_LEVEL) * 4),),\n      'Solarize': lambda level: (int((level/_MAX_LEVEL) * 256),),\n      'SolarizeAdd': lambda level: (int((level/_MAX_LEVEL) * 110),),\n      'Color': _enhance_level_to_arg,\n      'Contrast': _enhance_level_to_arg,\n      'Brightness': _enhance_level_to_arg,\n      'Sharpness': _enhance_level_to_arg,\n      'ShearX': _shear_level_to_arg,\n      'ShearY': _shear_level_to_arg,\n      'Cutout': lambda level: (int((level/_MAX_LEVEL) * hparams.cutout_const),),\n      # pylint:disable=g-long-lambda\n      'TranslateX': lambda level: _translate_level_to_arg(\n          level, hparams.translate_const),\n      'TranslateY': lambda level: _translate_level_to_arg(\n          level, hparams.translate_const),\n      # pylint:enable=g-long-lambda\n  }\n\n\ndef _parse_policy_info(name, prob, level, replace_value, augmentation_hparams):\n  \"\"\"Return the function that corresponds to `name` and update `level` param.\"\"\"\n  func = NAME_TO_FUNC[name]\n  args = level_to_arg(augmentation_hparams)[name](level)\n\n  # Check to see if prob is passed into function. This is used for operations\n  # where we alter bboxes independently.\n  # pytype:disable=wrong-arg-types\n  if 'prob' in inspect.getargspec(func)[0]:\n    args = tuple([prob] + list(args))\n  # pytype:enable=wrong-arg-types\n\n  # Add in replace arg if it is required for the function that is being called.\n  # pytype:disable=wrong-arg-types\n  if 'replace' in inspect.getargspec(func)[0]:\n    # Make sure replace is the final argument\n    assert 'replace' == inspect.getargspec(func)[0][-1]\n    args = tuple(list(args) + [replace_value])\n  # pytype:enable=wrong-arg-types\n\n  return (func, prob, args)\n\n\ndef _apply_func_with_prob(func, image, args, prob):\n  \"\"\"Apply `func` to image w/ `args` as input with probability `prob`.\"\"\"\n  assert isinstance(args, tuple)\n\n  # If prob is a function argument, then this randomness is being handled\n  # inside the function, so make sure it is always called.\n  # pytype:disable=wrong-arg-types\n  if 'prob' in inspect.getargspec(func)[0]:\n    prob = 1.0\n  # pytype:enable=wrong-arg-types\n\n  # Apply the function with probability `prob`.\n  should_apply_op = tf.cast(\n      tf.floor(tf.random_uniform([], dtype=tf.float32) + prob), tf.bool)\n  augmented_image = tf.cond(\n      should_apply_op,\n      lambda: func(image, *args),\n      lambda: image)\n  return augmented_image\n\n\ndef select_and_apply_random_policy(policies, image):\n  \"\"\"Select a random policy from `policies` and apply it to `image`.\"\"\"\n  policy_to_select = tf.random_uniform([], maxval=len(policies), dtype=tf.int32)\n  # Note that using tf.case instead of tf.conds would result in significantly\n  # larger graphs and would even break export for some larger policies.\n  for (i, policy) in enumerate(policies):\n    image = tf.cond(\n        tf.equal(i, policy_to_select),\n        lambda selected_policy=policy: selected_policy(image),\n        lambda: image)\n  return image\n\n\ndef build_and_apply_nas_policy(policies, image,\n                               augmentation_hparams):\n  \"\"\"Build a policy from the given policies passed in and apply to image.\n\n  Args:\n    policies: list of lists of tuples in the form `(func, prob, level)`, `func`\n      is a string name of the augmentation function, `prob` is the probability\n      of applying the `func` operation, `level` is the input argument for\n      `func`.\n    image: tf.Tensor that the resulting policy will be applied to.\n    augmentation_hparams: Hparams associated with the NAS learned policy.\n\n  Returns:\n    A version of image that now has data augmentation applied to it based on\n    the `policies` pass into the function.\n  \"\"\"\n  replace_value = [128, 128, 128]\n\n  # func is the string name of the augmentation function, prob is the\n  # probability of applying the operation and level is the parameter associated\n  # with the tf op.\n\n  # tf_policies are functions that take in an image and return an augmented\n  # image.\n  tf_policies = []\n  for policy in policies:\n    tf_policy = []\n    # Link string name to the correct python function and make sure the correct\n    # argument is passed into that function.\n    for policy_info in policy:\n      policy_info = list(policy_info) + [replace_value, augmentation_hparams]\n\n      tf_policy.append(_parse_policy_info(*policy_info))\n    # Now build the tf policy that will apply the augmentation procedue\n    # on image.\n    def make_final_policy(tf_policy_):\n      def final_policy(image_):\n        for func, prob, args in tf_policy_:\n          image_ = _apply_func_with_prob(\n              func, image_, args, prob)\n        return image_\n      return final_policy\n    tf_policies.append(make_final_policy(tf_policy))\n\n  augmented_image = select_and_apply_random_policy(\n      tf_policies, image)\n  return augmented_image\n\n\ndef distort_image_with_autoaugment(image, augmentation_name):\n  \"\"\"Applies the AutoAugment policy to `image`.\n\n  AutoAugment is from the paper: https://arxiv.org/abs/1805.09501.\n\n  Args:\n    image: `Tensor` of shape [height, width, 3] representing an image.\n    augmentation_name: The name of the AutoAugment policy to use. The available\n      options are `v0` and `test`. `v0` is the policy used for\n      all of the results in the paper and was found to achieve the best results\n      on the COCO dataset. `v1`, `v2` and `v3` are additional good policies\n      found on the COCO dataset that have slight variation in what operations\n      were used during the search procedure along with how many operations are\n      applied in parallel to a single image (2 vs 3).\n\n  Returns:\n    A tuple containing the augmented versions of `image`.\n  \"\"\"\n  available_policies = {'v0': policy_v0,\n                        'test': policy_vtest}\n  if augmentation_name not in available_policies:\n    raise ValueError('Invalid augmentation_name: {}'.format(augmentation_name))\n\n  policy = available_policies[augmentation_name]()\n  # Hparams that will be used for AutoAugment.\n  augmentation_hparams = config_dict.ConfigDict(dict(\n      cutout_const=100, translate_const=250))\n\n  return build_and_apply_nas_policy(policy, image, augmentation_hparams)\n\n\ndef distort_image_with_randaugment(image, num_layers, magnitude):\n  \"\"\"Applies the RandAugment policy to `image`.\n\n  RandAugment is from the paper https://arxiv.org/abs/1909.13719,\n\n  Args:\n    image: `Tensor` of shape [height, width, 3] representing an image.\n    num_layers: Integer, the number of augmentation transformations to apply\n      sequentially to an image. Represented as (N) in the paper. Usually best\n      values will be in the range [1, 3].\n    magnitude: Integer, shared magnitude across all augmentation operations.\n      Represented as (M) in the paper. Usually best values are in the range\n      [5, 30].\n\n  Returns:\n    The augmented version of `image`.\n  \"\"\"\n  replace_value = [128] * 3\n  tf.logging.info('Using RandAug.')\n  augmentation_hparams = config_dict.ConfigDict(dict(\n      cutout_const=40, translate_const=100))\n  available_ops = [\n      'AutoContrast', 'Equalize', 'Invert', 'Rotate', 'Posterize',\n      'Solarize', 'Color', 'Contrast', 'Brightness', 'Sharpness',\n      'ShearX', 'ShearY', 'TranslateX', 'TranslateY', 'Cutout', 'SolarizeAdd']\n\n  for layer_num in range(num_layers):\n    op_to_select = tf.random_uniform(\n        [], maxval=len(available_ops), dtype=tf.int32)\n    random_magnitude = float(magnitude)\n    with tf.name_scope('randaug_layer_{}'.format(layer_num)):\n      for (i, op_name) in enumerate(available_ops):\n        prob = tf.random_uniform([], minval=0.2, maxval=0.8, dtype=tf.float32)\n        func, _, args = _parse_policy_info(op_name, prob, random_magnitude,\n                                           replace_value, augmentation_hparams)\n        image = tf.cond(\n            tf.equal(i, op_to_select),\n            # pylint:disable=g-long-lambda\n            lambda selected_func=func, selected_args=args: selected_func(\n                image, *selected_args),\n            # pylint:enable=g-long-lambda\n            lambda: image)\n  return image\n"
  },
  {
    "path": "perceiver/train/dataset.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"ImageNet dataset with pre-processing and augmentation.\n\nDeng, et al CVPR 2009 - ImageNet: A large-scale hierarchical image database.\nhttps://image-net.org/\n\"\"\"\n\nimport enum\nfrom typing import Any, Generator, Mapping, Optional, Sequence, Text, Tuple\n\nimport jax\nimport numpy as np\nimport tensorflow.compat.v2 as tf\nimport tensorflow_datasets as tfds\nimport tensorflow_probability as tfp\n\nfrom perceiver.train import autoaugment\n\n\nBatch = Mapping[Text, np.ndarray]\nMEAN_RGB = (0.485 * 255, 0.456 * 255, 0.406 * 255)\nSTDDEV_RGB = (0.229 * 255, 0.224 * 255, 0.225 * 255)\nAUTOTUNE = tf.data.experimental.AUTOTUNE\n\nINPUT_DIM = 224  # The number of pixels in the image resize.\n\n\nclass Split(enum.Enum):\n  \"\"\"ImageNet dataset split.\"\"\"\n  TRAIN = 1\n  TRAIN_AND_VALID = 2\n  VALID = 3\n  TEST = 4\n\n  @classmethod\n  def from_string(cls, name: Text) -> 'Split':\n    return {'TRAIN': Split.TRAIN, 'TRAIN_AND_VALID': Split.TRAIN_AND_VALID,\n            'VALID': Split.VALID, 'VALIDATION': Split.VALID,\n            'TEST': Split.TEST}[name.upper()]\n\n  @property\n  def num_examples(self):\n    return {Split.TRAIN_AND_VALID: 1281167, Split.TRAIN: 1271167,\n            Split.VALID: 10000, Split.TEST: 50000}[self]\n\n\ndef load(\n    split: Split,\n    *,\n    is_training: bool,\n    # batch_dims should be:\n    # [device_count, per_device_batch_size] or [total_batch_size]\n    batch_dims: Sequence[int],\n    augmentation_settings: Mapping[str, Any],\n    # The shape to which images are resized.\n    im_dim: int = INPUT_DIM,\n    threadpool_size: int = 48,\n    max_intra_op_parallelism: int = 1,\n) -> Generator[Batch, None, None]:\n  \"\"\"Loads the given split of the dataset.\"\"\"\n  start, end = _shard(split, jax.host_id(), jax.host_count())\n\n  im_size = (im_dim, im_dim)\n\n  total_batch_size = np.prod(batch_dims)\n\n  tfds_split = tfds.core.ReadInstruction(_to_tfds_split(split),\n                                         from_=start, to=end, unit='abs')\n\n  ds = tfds.load('imagenet2012:5.*.*', split=tfds_split,\n                 decoders={'image': tfds.decode.SkipDecoding()})\n\n  options = tf.data.Options()\n  options.experimental_threading.private_threadpool_size = threadpool_size\n  options.experimental_threading.max_intra_op_parallelism = (\n      max_intra_op_parallelism)\n  options.experimental_optimization.map_parallelization = True\n  if is_training:\n    options.experimental_deterministic = False\n  ds = ds.with_options(options)\n\n  if is_training:\n    if jax.host_count() > 1:\n      # Only cache if we are reading a subset of the dataset.\n      ds = ds.cache()\n    ds = ds.repeat()\n    ds = ds.shuffle(buffer_size=10 * total_batch_size, seed=0)\n\n  else:\n    if split.num_examples % total_batch_size != 0:\n      raise ValueError(f'Test/valid must be divisible by {total_batch_size}')\n\n  def crop_augment_preprocess(example):\n    image, _ = _preprocess_image(\n        example['image'], is_training, im_size, augmentation_settings)\n\n    label = tf.cast(example['label'], tf.int32)\n\n    out = {'images': image, 'labels': label}\n\n    if is_training:\n      if augmentation_settings['cutmix']:\n        out['mask'] = cutmix_padding(*im_size)\n        out['cutmix_ratio'] = tf.reduce_mean(out['mask'])\n      if augmentation_settings['mixup_alpha'] is not None:\n        beta = tfp.distributions.Beta(\n            augmentation_settings['mixup_alpha'],\n            augmentation_settings['mixup_alpha'])\n        out['mixup_ratio'] = beta.sample()\n    return out\n\n  ds = ds.map(crop_augment_preprocess, num_parallel_calls=AUTOTUNE)\n\n  # Mixup/cutmix by temporarily batching (using the per-device batch size):\n  use_cutmix = augmentation_settings['cutmix']\n  use_mixup = augmentation_settings['mixup_alpha'] is not None\n  if is_training and (use_cutmix or use_mixup):\n    inner_batch_size = batch_dims[-1]\n    # Apply mixup, cutmix, or mixup + cutmix on batched data.\n    # We use data from 2 batches to produce 1 mixed batch.\n    ds = ds.batch(inner_batch_size * 2)\n    if not use_cutmix and use_mixup:\n      ds = ds.map(my_mixup, num_parallel_calls=AUTOTUNE)\n    elif use_cutmix and not use_mixup:\n      ds = ds.map(my_cutmix, num_parallel_calls=AUTOTUNE)\n    elif use_cutmix and use_mixup:\n      ds = ds.map(my_mixup_cutmix, num_parallel_calls=AUTOTUNE)\n\n    # Unbatch for further processing.\n    ds = ds.unbatch()\n\n  for batch_size in reversed(batch_dims):\n    ds = ds.batch(batch_size)\n\n  ds = ds.prefetch(AUTOTUNE)\n\n  yield from tfds.as_numpy(ds)\n\n\n# cutmix_padding, my_cutmix, my_mixup, and my_mixup_cutmix taken from:\n# https://github.com/deepmind/deepmind-research/blob/master/nfnets/dataset.py\ndef cutmix_padding(h, w):\n  \"\"\"Returns image mask for CutMix.\n\n  Taken from (https://github.com/google/edward2/blob/master/experimental\n  /marginalization_mixup/data_utils.py#L367)\n  Args:\n    h: image height.\n    w: image width.\n  \"\"\"\n  r_x = tf.random.uniform([], 0, w, tf.int32)\n  r_y = tf.random.uniform([], 0, h, tf.int32)\n\n  # Beta dist in paper, but they used Beta(1,1) which is just uniform.\n  image1_proportion = tf.random.uniform([])\n  patch_length_ratio = tf.math.sqrt(1 - image1_proportion)\n  r_w = tf.cast(patch_length_ratio * tf.cast(w, tf.float32), tf.int32)\n  r_h = tf.cast(patch_length_ratio * tf.cast(h, tf.float32), tf.int32)\n  bbx1 = tf.clip_by_value(tf.cast(r_x - r_w // 2, tf.int32), 0, w)\n  bby1 = tf.clip_by_value(tf.cast(r_y - r_h // 2, tf.int32), 0, h)\n  bbx2 = tf.clip_by_value(tf.cast(r_x + r_w // 2, tf.int32), 0, w)\n  bby2 = tf.clip_by_value(tf.cast(r_y + r_h // 2, tf.int32), 0, h)\n\n  # Create the binary mask.\n  pad_left = bbx1\n  pad_top = bby1\n  pad_right = tf.maximum(w - bbx2, 0)\n  pad_bottom = tf.maximum(h - bby2, 0)\n  r_h = bby2 - bby1\n  r_w = bbx2 - bbx1\n\n  mask = tf.pad(\n      tf.ones((r_h, r_w)),\n      paddings=[[pad_top, pad_bottom], [pad_left, pad_right]],\n      mode='CONSTANT',\n      constant_values=0)\n  mask.set_shape((h, w))\n  return mask[..., None]  # Add channel dim.\n\n\ndef my_cutmix(batch):\n  \"\"\"Apply CutMix: https://arxiv.org/abs/1905.04899.\"\"\"\n  batch = dict(**batch)\n  bs = tf.shape(batch['images'])[0] // 2\n  mask = batch['mask'][:bs]\n  images = (mask * batch['images'][:bs] + (1.0 - mask) * batch['images'][bs:])\n  mix_labels = batch['labels'][bs:]\n  labels = batch['labels'][:bs]\n  ratio = batch['cutmix_ratio'][:bs]\n  return {'images': images, 'labels': labels,\n          'mix_labels': mix_labels, 'ratio': ratio}\n\n\ndef my_mixup(batch):\n  \"\"\"Apply mixup: https://arxiv.org/abs/1710.09412.\"\"\"\n  batch = dict(**batch)\n  bs = tf.shape(batch['images'])[0] // 2\n  ratio = batch['mixup_ratio'][:bs, None, None, None]\n  images = (ratio * batch['images'][:bs] + (1.0 - ratio) * batch['images'][bs:])\n  mix_labels = batch['labels'][bs:]\n  labels = batch['labels'][:bs]\n  ratio = ratio[..., 0, 0, 0]  # Unsqueeze\n  return {'images': images, 'labels': labels,\n          'mix_labels': mix_labels, 'ratio': ratio}\n\n\ndef my_mixup_cutmix(batch):\n  \"\"\"Apply mixup to half the batch, and cutmix to the other.\"\"\"\n  batch = dict(**batch)\n  bs = tf.shape(batch['images'])[0] // 4\n  mixup_ratio = batch['mixup_ratio'][:bs, None, None, None]\n  mixup_images = (mixup_ratio * batch['images'][:bs]\n                  + (1.0 - mixup_ratio) * batch['images'][bs:2*bs])\n  mixup_labels = batch['labels'][:bs]\n  mixup_mix_labels = batch['labels'][bs:2*bs]\n\n  cutmix_mask = batch['mask'][2*bs:3*bs]\n  cutmix_images = (cutmix_mask * batch['images'][2*bs:3*bs]\n                   + (1.0 - cutmix_mask) * batch['images'][-bs:])\n  cutmix_labels = batch['labels'][2*bs:3*bs]\n  cutmix_mix_labels = batch['labels'][-bs:]\n  cutmix_ratio = batch['cutmix_ratio'][2*bs : 3*bs]\n\n  return {'images': tf.concat([mixup_images, cutmix_images], axis=0),\n          'labels': tf.concat([mixup_labels, cutmix_labels], axis=0),\n          'mix_labels': tf.concat([mixup_mix_labels, cutmix_mix_labels], 0),\n          'ratio': tf.concat([mixup_ratio[..., 0, 0, 0], cutmix_ratio], axis=0)}\n\n\ndef _to_tfds_split(split: Split) -> tfds.Split:\n  \"\"\"Returns the TFDS split appropriately sharded.\"\"\"\n  # NOTE: Imagenet did not release labels for the test split used in the\n  # competition, so it has been typical at DeepMind to consider the VALID\n  # split the TEST split and to reserve 10k images from TRAIN for VALID.\n  if split in (\n      Split.TRAIN, Split.TRAIN_AND_VALID, Split.VALID):\n    return tfds.Split.TRAIN\n  else:\n    assert split == Split.TEST\n    return tfds.Split.VALIDATION\n\n\ndef _shard(\n    split: Split, shard_index: int, num_shards: int) -> Tuple[int, int]:\n  \"\"\"Returns [start, end) for the given shard index.\"\"\"\n  assert shard_index < num_shards\n  arange = np.arange(split.num_examples)\n  shard_range = np.array_split(arange, num_shards)[shard_index]\n  start, end = shard_range[0], (shard_range[-1] + 1)\n  if split == Split.TRAIN:\n    # Note that our TRAIN=TFDS_TRAIN[10000:] and VALID=TFDS_TRAIN[:10000].\n    offset = Split.VALID.num_examples\n    start += offset\n    end += offset\n  return start, end\n\n\ndef _preprocess_image(\n    image_bytes: tf.Tensor,\n    is_training: bool,\n    image_size: Sequence[int],\n    augmentation_settings: Mapping[str, Any],\n) -> Tuple[tf.Tensor, tf.Tensor]:\n  \"\"\"Returns processed and resized images.\"\"\"\n\n  # Get the image crop.\n  if is_training:\n    image, im_shape = _decode_and_random_crop(image_bytes)\n    image = tf.image.random_flip_left_right(image)\n  else:\n    image, im_shape = _decode_and_center_crop(image_bytes)\n  assert image.dtype == tf.uint8\n\n  # Optionally apply RandAugment: https://arxiv.org/abs/1909.13719\n  if is_training:\n    if augmentation_settings['randaugment'] is not None:\n      # Input and output images are dtype uint8.\n      image = autoaugment.distort_image_with_randaugment(\n          image,\n          num_layers=augmentation_settings['randaugment']['num_layers'],\n          magnitude=augmentation_settings['randaugment']['magnitude'])\n\n  # Resize and normalize the image crop.\n  # NOTE: Bicubic resize (1) casts uint8 to float32 and (2) resizes without\n  # clamping overshoots. This means values returned will be outside the range\n  # [0.0, 255.0] (e.g. we have observed outputs in the range [-51.1, 336.6]).\n  image = tf.image.resize(\n      image, image_size, tf.image.ResizeMethod.BICUBIC)\n  image = _normalize_image(image)\n\n  return image, im_shape\n\n\ndef _normalize_image(image: tf.Tensor) -> tf.Tensor:\n  \"\"\"Normalize the image to zero mean and unit variance.\"\"\"\n  image -= tf.constant(MEAN_RGB, shape=[1, 1, 3], dtype=image.dtype)\n  image /= tf.constant(STDDEV_RGB, shape=[1, 1, 3], dtype=image.dtype)\n  return image\n\n\ndef _distorted_bounding_box_crop(\n    image_bytes: tf.Tensor,\n    *,\n    jpeg_shape: tf.Tensor,\n    bbox: tf.Tensor,\n    min_object_covered: float,\n    aspect_ratio_range: Tuple[float, float],\n    area_range: Tuple[float, float],\n    max_attempts: int,\n) -> Tuple[tf.Tensor, tf.Tensor]:\n  \"\"\"Generates cropped_image using one of the bboxes randomly distorted.\"\"\"\n  bbox_begin, bbox_size, _ = tf.image.sample_distorted_bounding_box(\n      jpeg_shape,\n      bounding_boxes=bbox,\n      min_object_covered=min_object_covered,\n      aspect_ratio_range=aspect_ratio_range,\n      area_range=area_range,\n      max_attempts=max_attempts,\n      use_image_if_no_bounding_boxes=True)\n\n  # Crop the image to the specified bounding box.\n  offset_y, offset_x, _ = tf.unstack(bbox_begin)\n  target_height, target_width, _ = tf.unstack(bbox_size)\n  crop_window = [offset_y, offset_x, target_height, target_width]\n\n  if image_bytes.dtype == tf.dtypes.string:\n    image = tf.image.decode_and_crop_jpeg(image_bytes,\n                                          tf.stack(crop_window),\n                                          channels=3)\n  else:\n    image = tf.image.crop_to_bounding_box(image_bytes, *crop_window)\n\n  im_shape = tf.stack([target_height, target_width])\n  return image, im_shape\n\n\ndef _decode_whole_image(image_bytes: tf.Tensor) -> Tuple[tf.Tensor, tf.Tensor]:\n  image = tf.io.decode_jpeg(image_bytes, channels=3)\n  im_shape = tf.io.extract_jpeg_shape(image_bytes, output_type=tf.int32)\n  return image, im_shape\n\n\ndef _decode_and_random_crop(\n    image_bytes: tf.Tensor\n) -> Tuple[tf.Tensor, tf.Tensor]:\n  \"\"\"Make a random crop of INPUT_DIM.\"\"\"\n\n  if image_bytes.dtype == tf.dtypes.string:\n    jpeg_shape = tf.image.extract_jpeg_shape(image_bytes)\n  else:\n    jpeg_shape = tf.shape(image_bytes)\n\n  bbox = tf.constant([0.0, 0.0, 1.0, 1.0], dtype=tf.float32, shape=[1, 1, 4])\n  image, im_shape = _distorted_bounding_box_crop(\n      image_bytes,\n      jpeg_shape=jpeg_shape,\n      bbox=bbox,\n      min_object_covered=0.1,\n      aspect_ratio_range=(3 / 4, 4 / 3),\n      area_range=(0.08, 1.0),\n      max_attempts=10)\n\n  if tf.reduce_all(tf.equal(jpeg_shape, tf.shape(image))):\n    # If the random crop failed fall back to center crop.\n    image, im_shape = _decode_and_center_crop(image_bytes, jpeg_shape)\n  return image, im_shape\n\n\ndef _center_crop(image, crop_dim):\n  \"\"\"Center crops an image to a target dimension.\"\"\"\n  image_height = image.shape[0]\n  image_width = image.shape[1]\n  offset_height = ((image_height - crop_dim) + 1) // 2\n  offset_width = ((image_width - crop_dim) + 1) // 2\n  return tf.image.crop_to_bounding_box(\n      image, offset_height, offset_width, crop_dim, crop_dim)\n\n\ndef _decode_and_center_crop(\n    image_bytes: tf.Tensor,\n    jpeg_shape: Optional[tf.Tensor] = None,\n) -> Tuple[tf.Tensor, tf.Tensor]:\n  \"\"\"Crops to center of image with padding then scales.\"\"\"\n  if jpeg_shape is None:\n    if image_bytes.dtype == tf.dtypes.string:\n      jpeg_shape = tf.image.extract_jpeg_shape(image_bytes)\n    else:\n      jpeg_shape = tf.shape(image_bytes)\n\n  image_height = jpeg_shape[0]\n  image_width = jpeg_shape[1]\n\n  padded_center_crop_size = tf.cast(\n      ((INPUT_DIM / (INPUT_DIM + 32)) *\n       tf.cast(tf.minimum(image_height, image_width), tf.float32)), tf.int32)\n\n  offset_height = ((image_height - padded_center_crop_size) + 1) // 2\n  offset_width = ((image_width - padded_center_crop_size) + 1) // 2\n  crop_window = [offset_height, offset_width,\n                 padded_center_crop_size, padded_center_crop_size]\n\n  if image_bytes.dtype == tf.dtypes.string:\n    image = tf.image.decode_and_crop_jpeg(image_bytes,\n                                          tf.stack(crop_window),\n                                          channels=3)\n  else:\n    image = tf.image.crop_to_bounding_box(image_bytes, *crop_window)\n\n  im_shape = tf.stack([padded_center_crop_size, padded_center_crop_size])\n  return image, im_shape\n"
  },
  {
    "path": "perceiver/train/experiment.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"A reference training pipeline for Perceiver/Perceiver IO on ImageNet.\n\nWe use the Jaxline (https://github.com/deepmind/jaxline) training framework.\nTwo sets of hyperparameters are provided, the hyperparameters we used for the\nPerceiver IO paper, and scaled-down hyperparameters for local testing.\nThis script should run out-of-the-box with the local hyper parameters.\nThe scaled-up hyperparameters requires a distributed learning setup to run,\nand this script will need to be adapted to your specific setup.\n\"\"\"\n\nimport functools\nfrom typing import Generator, Mapping, Text, Tuple\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nfrom jaxline import base_config\nfrom jaxline import experiment\nfrom jaxline import platform\nfrom jaxline import utils as jl_utils\nfrom ml_collections import config_dict\nimport numpy as np\nimport optax\n\n\nfrom perceiver import io_processors\nfrom perceiver import perceiver\nfrom perceiver.train import dataset\nfrom perceiver.train import utils\n\nFLAGS = flags.FLAGS\n\nOptState = Tuple[optax.TraceState, optax.ScaleByScheduleState, optax.ScaleState]\nScalars = Mapping[Text, jnp.ndarray]\n\n\nN_TRAIN_EXAMPLES = dataset.Split.TRAIN_AND_VALID.num_examples\nN_CLASSES = 1000\n# Only local/debug parameters are supported out of the box.\n# To use the scaled-up hyperparameters, please adapt this script to your\n# training setup and set this flag to False\nIS_LOCAL = True\n\n\ndef get_training_steps(batch_size, n_epochs):\n  return (N_TRAIN_EXAMPLES * n_epochs) // batch_size\n\n\ndef get_config():\n  \"\"\"Return config object for training.\"\"\"\n  use_debug_settings = IS_LOCAL\n  config = base_config.get_base_config()\n\n  # Experiment config.\n  local_batch_size = 2\n  # Modify this to adapt to your custom distributed learning setup\n  num_devices = 1\n  config.train_batch_size = local_batch_size * num_devices\n  config.n_epochs = 110\n\n  def _default_or_debug(default_value, debug_value):\n    return debug_value if use_debug_settings else default_value\n\n  n_train_examples = N_TRAIN_EXAMPLES\n  num_classes = N_CLASSES\n\n  config.experiment_kwargs = config_dict.ConfigDict(\n      dict(\n          config=dict(\n              optimizer=dict(\n                  base_lr=5e-4,\n                  max_norm=10.0,  # < 0 to turn off.\n                  schedule_type='constant_cosine',\n                  weight_decay=1e-1,\n                  decay_pos_embs=True,\n                  scale_by_batch=True,\n                  cosine_decay_kwargs=dict(\n                      init_value=0.0,\n                      warmup_epochs=0,\n                      end_value=0.0,\n                  ),\n                  step_decay_kwargs=dict(\n                      decay_boundaries=[0.5, 0.8, 0.95],\n                      decay_rate=0.1,\n                  ),\n                  constant_cosine_decay_kwargs=dict(\n                      constant_fraction=0.5,\n                      end_value=0.0,\n                  ),\n                  optimizer='lamb',\n                  # Optimizer-specific kwargs:\n                  adam_kwargs=dict(\n                      b1=0.9,\n                      b2=0.999,\n                      eps=1e-8,\n                  ),\n                  lamb_kwargs=dict(\n                      b1=0.9,\n                      b2=0.999,\n                      eps=1e-6,\n                  ),\n              ),\n              # Don't specify output_channels - it's not used for\n              # classifiers.\n              model=dict(\n                  perceiver_kwargs=dict(\n                      input_preprocessor=dict(\n                          prep_type='pixels',\n                          # Channels for conv/conv1x1 preprocessing:\n                          num_channels=64,\n                          # -------------------------\n                          # Position encoding arguments:\n                          # -------------------------\n                          position_encoding_type='fourier',\n                          concat_or_add_pos='concat',\n                          spatial_downsample=1,\n                          # If >0, project position to this size:\n                          project_pos_dim=-1,\n                          trainable_position_encoding_kwargs=dict(\n                              num_channels=258,  # Match default # for Fourier.\n                              init_scale=0.02,\n                          ),\n                          fourier_position_encoding_kwargs=dict(\n                              num_bands=64,\n                              max_resolution=(224, 224),\n                              sine_only=False,\n                              concat_pos=True,\n                          ),\n                      ),\n                      encoder=dict(\n                          num_self_attends_per_block=_default_or_debug(6, 2),\n                          # Weights won't be shared if num_blocks is set to 1.\n                          num_blocks=_default_or_debug(8, 2),\n                          z_index_dim=512,\n                          num_z_channels=1024,\n                          num_cross_attend_heads=1,\n                          num_self_attend_heads=8,\n                          cross_attend_widening_factor=1,\n                          self_attend_widening_factor=1,\n                          dropout_prob=0.0,\n                          # Position encoding for the latent array.\n                          z_pos_enc_init_scale=0.02,\n                          cross_attention_shape_for_attn='kv',\n                          use_query_residual=True,\n                          ),\n                      decoder=dict(\n                          num_z_channels=1024,\n                          use_query_residual=True,\n                          # Position encoding for the output logits.\n                          position_encoding_type='trainable',\n                          trainable_position_encoding_kwargs=dict(\n                              num_channels=1024,\n                              init_scale=0.02,\n                          ),\n                      ),\n                  ),\n              ),\n              training=dict(\n                  images_per_epoch=n_train_examples,\n                  label_smoothing=0.1,\n                  n_epochs=config.get_oneway_ref('n_epochs'),\n                  batch_size=config.get_oneway_ref('train_batch_size')\n              ),\n              data=dict(\n                  num_classes=num_classes,\n                  # Run on smaller images to debug.\n                  im_dim=_default_or_debug(224, 32),\n                  augmentation=dict(\n                      # Typical randaug params:\n                      # num_layers in [1, 3]\n                      # magnitude in [5, 30]\n                      # Set randaugment to None to disable.\n                      randaugment=dict(\n                          num_layers=4,\n                          magnitude=5),\n                      cutmix=True,\n                      # Mixup alpha should be in [0, 1].\n                      # Set to None to disable.\n                      mixup_alpha=0.2,\n                  ),\n                  ),\n              evaluation=dict(\n                  subset='test',\n                  batch_size=2,\n              ),\n          )\n      )\n  )\n\n  # Training loop config.\n  config.training_steps = get_training_steps(\n      config.get_oneway_ref('train_batch_size'),\n      config.get_oneway_ref('n_epochs'))\n  config.log_train_data_interval = 60\n  config.log_tensors_interval = 60\n  config.save_checkpoint_interval = 300\n  config.eval_specific_checkpoint_dir = ''\n  config.best_model_eval_metric = 'eval_top_1_acc'\n  config.checkpoint_dir = '/tmp/perceiver_imagnet_checkpoints'\n  config.train_checkpoint_all_hosts = False\n\n  # Prevents accidentally setting keys that aren't recognized (e.g. in tests).\n  config.lock()\n\n  return config\n\n\nclass Experiment(experiment.AbstractExperiment):\n  \"\"\"ImageNet experiment.\"\"\"\n\n  # A map from object properties that will be checkpointed to their name\n  # in a checkpoint. Currently we assume that these are all sharded\n  # device arrays.\n  CHECKPOINT_ATTRS = {\n      '_params': 'params',\n      '_state': 'state',\n      '_opt_state': 'opt_state',\n  }\n\n  def __init__(self, mode, init_rng, config):\n    \"\"\"Initializes experiment.\"\"\"\n\n    super(Experiment, self).__init__(mode=mode, init_rng=init_rng)\n\n    self.mode = mode\n    self.init_rng = init_rng\n    self.config = config\n\n    # Checkpointed experiment state.\n    self._params = None\n    self._state = None\n    self._opt_state = None\n\n    # Input pipelines.\n    self._train_input = None\n    self._eval_input = None\n\n    self.forward = hk.transform_with_state(self._forward_fn)\n\n    # NOTE: We \"donate\" the `params, state, opt_state` arguments which allows\n    # JAX (on some backends) to reuse the device memory associated with these\n    # inputs to store the outputs of our function (which also start with\n    # `params, state, opt_state`).\n    self._update_func = jax.pmap(self._update_func, axis_name='i',\n                                 donate_argnums=(0, 1, 2))\n    self._eval_batch = jax.jit(self._eval_batch)\n\n  def _forward_fn(\n      self,\n      inputs: dataset.Batch,\n      is_training: bool,\n  ) -> jnp.ndarray:\n\n    images = inputs['images']\n\n    perceiver_kwargs = self.config.model.perceiver_kwargs\n    input_preprocessor = io_processors.ImagePreprocessor(\n        **perceiver_kwargs['input_preprocessor'])\n    encoder = perceiver.PerceiverEncoder(**perceiver_kwargs['encoder'])\n    decoder = perceiver.ClassificationDecoder(\n        self.config.data.num_classes,\n        **perceiver_kwargs['decoder'])\n    model = perceiver.Perceiver(\n        encoder=encoder,\n        decoder=decoder,\n        input_preprocessor=input_preprocessor)\n\n    return model(images, is_training=is_training)\n\n  #  _             _\n  # | |_ _ __ __ _(_)_ __\n  # | __| '__/ _` | | '_ \\\n  # | |_| | | (_| | | | | |\n  #  \\__|_|  \\__,_|_|_| |_|\n  #\n\n  def step(self, global_step: int, rng: jnp.ndarray,  # pytype: disable=signature-mismatch  # jax-ndarray\n           *unused_args, **unused_kwargs):\n    \"\"\"See base class.\"\"\"\n\n    if self._train_input is None:\n      self._initialize_train()\n\n    inputs = next(self._train_input)\n\n    self._params, self._state, self._opt_state, scalars = (\n        self._update_func(\n            self._params, self._state, self._opt_state, inputs, rng, global_step\n            ))\n\n    scalars = jl_utils.get_first(scalars)\n    return scalars\n\n  def _initialize_train(self):\n    self._train_input = jl_utils.py_prefetch(self._build_train_input)\n\n    total_batch_size = self.config.training.batch_size\n    steps_per_epoch = (\n        self.config.training.images_per_epoch / self.config.training.batch_size)\n    total_steps = self.config.training.n_epochs * steps_per_epoch\n    # Scale by the (negative) learning rate.\n    self._lr_schedule = utils.get_learning_rate_schedule(\n        total_batch_size, steps_per_epoch, total_steps, self.config.optimizer)\n\n    self._optimizer = utils.make_optimizer(\n        self.config.optimizer,\n        self._lr_schedule)\n\n    # Check we haven't already restored params\n    if self._params is None:\n      logging.info('Initializing parameters.')\n\n      inputs = next(self._train_input)\n\n      init_net = jax.pmap(lambda *a: self.forward.init(*a, is_training=True))\n      init_opt = jax.pmap(self._optimizer.init)\n\n      # Init uses the same RNG key on all hosts+devices to ensure everyone\n      # computes the same initial state.\n      init_rng = jl_utils.bcast_local_devices(self.init_rng)\n\n      self._params, self._state = init_net(init_rng, inputs)\n      self._opt_state = init_opt(self._params)\n\n  def _load_data(self, split, is_training, batch_dims):\n    \"\"\"Wrapper for dataset loading.\"\"\"\n\n    return dataset.load(\n        split=split,\n        is_training=is_training,\n        batch_dims=batch_dims,\n        im_dim=self.config.data.im_dim,\n        augmentation_settings=self.config.data.augmentation,\n        )\n\n  def _build_train_input(self) -> Generator[dataset.Batch, None, None]:\n    \"\"\"See base class.\"\"\"\n    num_devices = jax.device_count()\n    global_batch_size = self.config.training.batch_size\n    per_device_batch_size, ragged = divmod(global_batch_size, num_devices)\n\n    if ragged:\n      raise ValueError(\n          f'Global batch size {global_batch_size} must be divisible by '\n          f'num devices {num_devices}')\n\n    split = dataset.Split.TRAIN_AND_VALID\n\n    return self._load_data(\n        split=split,\n        is_training=True,\n        batch_dims=[jax.local_device_count(), per_device_batch_size])\n\n  def _one_hot(self, value):\n    \"\"\"One-hot encoding potentially over a sequence of labels.\"\"\"\n    y = jax.nn.one_hot(value, self.config.data.num_classes)\n    return y\n\n  def _loss_fn(\n      self,\n      params: hk.Params,\n      state: hk.State,\n      inputs: dataset.Batch,\n      rng: jnp.ndarray,\n  ) -> Tuple[jnp.ndarray, Tuple[Scalars, hk.State]]:\n    logits, state = self.forward.apply(\n        params, state, rng, inputs, is_training=True)\n\n    label = self._one_hot(inputs['labels'])\n    # Handle cutmix/mixup label mixing:\n    if 'mix_labels' in inputs:\n      logging.info('Using mixup or cutmix!')\n      mix_label = self._one_hot(inputs['mix_labels'])\n      mix_ratio = inputs['ratio'][:, None]\n      label = mix_ratio * label + (1. - mix_ratio) * mix_label\n\n    # Apply label-smoothing to one-hot labels.\n    label_smoothing = self.config.training.label_smoothing\n    if not (label_smoothing >= 0. and label_smoothing < 1.):\n      raise ValueError(\n          f\"'label_smoothing is {label_smoothing} and should be in [0, 1)\")\n    if label_smoothing > 0:\n      smooth_positives = 1. - label_smoothing\n      smooth_negatives = label_smoothing / self.config.data.num_classes\n      label = smooth_positives * label + smooth_negatives\n\n    loss_w_batch = utils.softmax_cross_entropy(logits, label)\n    loss = jnp.mean(loss_w_batch, dtype=loss_w_batch.dtype)\n    scaled_loss = loss / jax.device_count()\n\n    metrics = utils.topk_correct(logits, inputs['labels'], prefix='')\n    metrics = jax.tree_map(jnp.mean, metrics)\n\n    top_1_acc = metrics['top_1_acc']\n    top_5_acc = metrics['top_5_acc']\n\n    loss_scalars = dict(\n        loss=loss,\n        top_1_acc=top_1_acc,\n        top_5_acc=top_5_acc,\n    )\n\n    return scaled_loss, (loss_scalars, state)\n\n  def _update_func(\n      self,\n      params: hk.Params,\n      state: hk.State,\n      opt_state: OptState,\n      inputs: dataset.Batch,\n      rng: jnp.ndarray,\n      global_step: int,\n  ) -> Tuple[hk.Params, hk.State, OptState, Scalars]:\n    \"\"\"Applies an update to parameters and returns new state.\"\"\"\n    # This function computes the gradient of the first output of loss_fn and\n    # passes through the other arguments unchanged.\n    grad_loss_fn = jax.grad(self._loss_fn, has_aux=True)\n    scaled_grads, (loss_scalars, state) = grad_loss_fn(\n        params, state, inputs, rng)\n    grads = jax.lax.psum(scaled_grads, axis_name='i')\n\n    # Grab the learning rate to log before performing the step.\n    learning_rate = self._lr_schedule(global_step)\n\n    # Compute and apply updates via our optimizer.\n    updates, opt_state = self._optimizer.update(grads, opt_state, params)\n    params = optax.apply_updates(params, updates)\n\n    n_params = 0\n    for k in params.keys():  # pytype: disable=attribute-error  # numpy-scalars\n      for l in params[k]:\n        n_params = n_params + np.prod(params[k][l].shape)  # pytype: disable=attribute-error  # numpy-scalars\n\n    # Scalars to log (note: we log the mean across all hosts/devices).\n    scalars = {'learning_rate': learning_rate,\n               'n_params (M)': float(n_params/1e6),\n               'global_gradient_norm': optax.global_norm(grads)}\n    loss_scalars = {f'train_{k}': v for k, v in loss_scalars.items()}\n    scalars.update(loss_scalars)\n    scalars = jax.lax.pmean(scalars, axis_name='i')\n\n    return params, state, opt_state, scalars\n\n  #                  _\n  #   _____   ____ _| |\n  #  / _ \\ \\ / / _` | |\n  # |  __/\\ V / (_| | |\n  #  \\___| \\_/ \\__,_|_|\n  #\n\n  def evaluate(self, global_step, rng, **unused_args):\n    \"\"\"See base class.\"\"\"\n    global_step = np.array(jl_utils.get_first(global_step))\n    scalars = jax.device_get(self._eval_epoch(jl_utils.get_first(rng)))\n\n    logging.info('[Step %d] Eval scalars: %s', global_step, scalars)\n    return scalars\n\n  def _eval_batch(\n      self,\n      params: hk.Params,\n      state: hk.State,\n      inputs: dataset.Batch,\n      rng: jnp.ndarray,\n  ) -> Scalars:\n    \"\"\"Evaluates a batch.\"\"\"\n    logits, _ = self.forward.apply(\n        params, state, rng, inputs, is_training=False)\n\n    labels = self._one_hot(inputs['labels'])\n    loss = utils.softmax_cross_entropy(logits, labels)\n\n    metrics = utils.topk_correct(logits, inputs['labels'], prefix='')\n    metrics = jax.tree_map(jnp.mean, metrics)\n    top_1_acc = metrics['top_1_acc']\n    top_5_acc = metrics['top_5_acc']\n\n    bs = logits.shape[0]\n\n    top_1_acc = jnp.expand_dims(top_1_acc, axis=0) * bs\n    top_5_acc = jnp.expand_dims(top_5_acc, axis=0) * bs\n\n    # NOTE: Returned values will be summed and finally divided by num_samples.\n    return {\n        'eval_loss': loss,\n        'eval_top_1_acc': top_1_acc, 'eval_top_5_acc': top_5_acc}\n\n  def _build_eval_input(self) -> Generator[dataset.Batch, None, None]:\n    split = dataset.Split.from_string(self.config.evaluation.subset)\n\n    return self._load_data(\n        split=split,\n        is_training=False,\n        batch_dims=[self.config.evaluation.batch_size])\n\n  def _eval_epoch(self, rng):\n    \"\"\"Evaluates an epoch.\"\"\"\n    num_samples = 0.\n    summed_scalars = None\n\n    params = jl_utils.get_first(self._params)\n    state = jl_utils.get_first(self._state)\n\n    for inputs in self._build_eval_input():\n      num_samples += inputs['labels'].shape[0]\n      scalars = self._eval_batch(params, state, inputs, rng)\n\n      # Accumulate the sum of scalars for each step.\n      scalars = jax.tree_map(lambda x: jnp.sum(x, axis=0), scalars)\n      if summed_scalars is None:\n        summed_scalars = scalars\n      else:\n        summed_scalars = jax.tree_map(jnp.add, summed_scalars, scalars)\n\n    mean_scalars = jax.tree_map(lambda x: x / num_samples, summed_scalars)\n    return mean_scalars\n\n\nif __name__ == '__main__':\n  flags.mark_flag_as_required('config')\n  app.run(functools.partial(platform.main, Experiment))\n"
  },
  {
    "path": "perceiver/train/launch_local.sh",
    "content": "#!/bin/bash\n\n# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Command for running training script.\n\nPYTHONPATH=.::$PYTHONPATH python perceiver/train/experiment.py \\\n  --config=perceiver/train/experiment.py --logtostderr\n"
  },
  {
    "path": "perceiver/train/utils.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Utilities.\"\"\"\n\nfrom typing import Callable, List, Mapping, NamedTuple, Optional, Tuple, Union\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\nimport optax\n\n\nBatch = Mapping[str, np.ndarray]\nOptState = Tuple[optax.TraceState, optax.ScaleByScheduleState, optax.ScaleState]\nScalars = Mapping[str, jnp.ndarray]\nParamsOrState = Union[hk.Params, hk.State]\n\n\nNORM_NAMES = ['layer_norm', 'batchnorm']\n\n\n# any_in and topk_correct taken from\n# https://github.com/deepmind/deepmind-research/blob/master/nfnets/utils.py\n@jax.vmap\ndef any_in(prediction, target):\n  \"\"\"For each row in a and b, checks if any element of a is in b.\"\"\"\n  return jnp.isin(prediction, target)\n\n\ndef topk_correct(logits, labels, mask=None, prefix='', topk=(1, 5)):\n  \"\"\"Calculate top-k error for multiple k values.\"\"\"\n  metrics = {}\n  argsorted_logits = jnp.argsort(logits)\n  for k in topk:\n    pred_labels = argsorted_logits[..., -k:]\n    # Get the number of examples where the label is in the top-k predictions\n    correct = any_in(pred_labels, labels).any(axis=-1).astype(jnp.float32)\n    if mask is not None:\n      correct *= mask\n    metrics[f'{prefix}top_{k}_acc'] = correct\n  return metrics\n\n\ndef softmax_cross_entropy(logits, labels):\n  \"\"\"Computes softmax cross entropy given logits and one-hot class labels.\n\n  Args:\n    logits: Logit output values.\n    labels: Ground truth one-hot-encoded labels.\n\n  Returns:\n    Loss value with the same shape as `labels`;\n  \"\"\"\n  return jnp.asarray(optax.softmax_cross_entropy(logits, labels))\n\n\ndef _get_batch_scaled_lr(total_batch_size, lr, scale_by_batch=True):\n  # This is the linear scaling rule in Section 5.1 of\n  # https://arxiv.org/pdf/1706.02677.pdf.\n\n  if scale_by_batch:\n    lr = (lr * total_batch_size) / 256\n\n  return lr\n\n\ndef get_learning_rate_schedule(\n    total_batch_size, steps_per_epoch, total_steps, optimizer_config):\n  \"\"\"Build the learning rate schedule function.\"\"\"\n  base_lr = _get_batch_scaled_lr(total_batch_size, optimizer_config.base_lr,\n                                 optimizer_config.scale_by_batch)\n\n  schedule_type = optimizer_config.schedule_type\n  if schedule_type == 'steps':\n    boundaries = optimizer_config.step_decay_kwargs.decay_boundaries\n    boundaries.sort()\n\n    decay_rate = optimizer_config.step_decay_kwargs.decay_rate\n    boundaries_and_scales = {\n        int(boundary * total_steps): decay_rate for boundary in boundaries}\n    schedule_fn = optax.piecewise_constant_schedule(\n        init_value=base_lr, boundaries_and_scales=boundaries_and_scales)\n  elif schedule_type == 'cosine':\n    warmup_steps = (optimizer_config.cosine_decay_kwargs.warmup_epochs\n                    * steps_per_epoch)\n    # Batch scale the other lr values as well:\n    init_value = _get_batch_scaled_lr(\n        total_batch_size,\n        optimizer_config.cosine_decay_kwargs.init_value,\n        optimizer_config.scale_by_batch)\n    end_value = _get_batch_scaled_lr(\n        total_batch_size,\n        optimizer_config.cosine_decay_kwargs.end_value,\n        optimizer_config.scale_by_batch)\n\n    schedule_fn = optax.warmup_cosine_decay_schedule(\n        init_value=init_value,\n        peak_value=base_lr,\n        warmup_steps=warmup_steps,\n        decay_steps=total_steps,\n        end_value=end_value)\n  elif schedule_type == 'constant_cosine':\n    # Convert end_value to alpha, used by cosine_decay_schedule.\n    alpha = optimizer_config.constant_cosine_decay_kwargs.end_value / base_lr\n\n    # Number of steps spent in constant phase.\n    constant_steps = int(\n        optimizer_config.constant_cosine_decay_kwargs.constant_fraction\n        * total_steps)\n    decay_steps = total_steps - constant_steps\n\n    constant_phase = optax.constant_schedule(value=base_lr)\n    decay_phase = optax.cosine_decay_schedule(\n        init_value=base_lr,\n        decay_steps=decay_steps,\n        alpha=alpha)\n    schedule_fn = optax.join_schedules(\n        schedules=[constant_phase, decay_phase],\n        boundaries=[constant_steps])\n  else:\n    raise ValueError(f'Unknown learning rate schedule: {schedule_type}')\n\n  return schedule_fn\n\n\ndef _weight_decay_exclude(\n    exclude_names: Optional[List[str]] = None\n) -> Callable[[str, str, jnp.ndarray], bool]:\n  \"\"\"Logic for deciding which parameters to include for weight decay..\n\n  Args:\n    exclude_names: an optional list of names to include for weight_decay. ['w']\n      by default.\n\n  Returns:\n    A predicate that returns True for params that need to be excluded from\n    weight_decay.\n  \"\"\"\n  # By default weight_decay the weights but not the biases.\n  if not exclude_names:\n    exclude_names = ['b']\n\n  def exclude(module_name: str, name: str, value: jnp.array):\n    del value\n    # Do not weight decay the parameters of normalization blocks.\n    if any([norm_name in module_name for norm_name in NORM_NAMES]):\n      return True\n    else:\n      return name in exclude_names\n\n  return exclude\n\n\nclass AddWeightDecayState(NamedTuple):\n  \"\"\"Stateless transformation.\"\"\"\n\n\ndef add_weight_decay(\n    weight_decay: float,\n    exclude_names: Optional[List[str]] = None) -> optax.GradientTransformation:\n  \"\"\"Add parameter scaled by `weight_decay` to the `updates`.\n\n  Same as optax.add_decayed_weights but can exclude parameters by name.\n\n  Args:\n    weight_decay: weight_decay coefficient.\n    exclude_names: an optional list of names to exclude for weight_decay. ['b']\n      by default.\n\n  Returns:\n    An (init_fn, update_fn) tuple.\n  \"\"\"\n\n  def init_fn(_):\n    return AddWeightDecayState()\n\n  def update_fn(updates, state, params):\n    exclude = _weight_decay_exclude(exclude_names=exclude_names)\n\n    u_ex, u_in = hk.data_structures.partition(exclude, updates)\n    _, p_in = hk.data_structures.partition(exclude, params)\n    u_in = jax.tree_map(lambda g, p: g + weight_decay * p, u_in, p_in)\n    updates = hk.data_structures.merge(u_ex, u_in)\n    return updates, state\n\n  return optax.GradientTransformation(init_fn, update_fn)\n\n\ndef make_optimizer(optimizer_config, lr_schedule):\n  \"\"\"Construct the optax optimizer with given LR schedule.\"\"\"\n  if (optimizer_config.get('decay_pos_embs') is None or\n      optimizer_config.decay_pos_embs):\n    # Decay learned position embeddings by default.\n    weight_decay_exclude_names = ['b']\n  else:\n    weight_decay_exclude_names = ['pos_embs', 'b']\n\n  optax_chain = []\n  if optimizer_config.max_norm > 0:\n    optax_chain.append(\n        optax.clip_by_global_norm(optimizer_config.max_norm))\n\n  if optimizer_config.optimizer == 'adam':\n    # See: https://arxiv.org/abs/1412.6980\n    optax_chain.extend([\n        optax.scale_by_adam(**optimizer_config.adam_kwargs),\n        add_weight_decay(\n            optimizer_config.weight_decay,\n            exclude_names=weight_decay_exclude_names)\n    ])\n  elif optimizer_config.optimizer == 'lamb':\n    # See: https://arxiv.org/abs/1904.00962\n    optax_chain.extend([\n        optax.scale_by_adam(**optimizer_config.lamb_kwargs),\n        add_weight_decay(\n            optimizer_config.weight_decay,\n            exclude_names=weight_decay_exclude_names),\n        optax.scale_by_trust_ratio()\n    ])\n  else:\n    raise ValueError(f'Undefined optimizer {optimizer_config.optimizer}')\n\n  # Scale by the (negative) learning rate.\n  optax_chain.extend([\n      optax.scale_by_schedule(lr_schedule),\n      optax.scale(-1),\n  ])\n\n  return optax.chain(*optax_chain)\n"
  },
  {
    "path": "physics_inspired_models/README.md",
    "content": "# Implementation of multiple physics inspired models for modelling dynamics\n\nThis repository contains an implementation of different physics inspired models\nused in the papers: **SyMetric: Measuring the Quality of Learnt Hamiltonian\nDynamics Inferred from Vision** and **Which priors matter? Benchmarking models\nfor learning latent dynamics**.\n\n\n## Contributing\n\nThis is purely research code, provided with no further intentions of support or\nany guarantees of backward compatibility.\n\n\n## Installation\n\nAll package requirements are listed in `requirements.txt`.\nYou will still need to download and setup the datasets from the\n[DeepMind Hamiltonian Dynamics Suite] manually.\n\n```shell\ngit clone git@github.com:deepmind/deepmind-research.git\npip install -r ./deepmind_research/physics_inspired_models/requirements.txt\npip install ./deepmind_research/physics_inspired_models\npip install --upgrade \"jax[XXX]\"\n```\n\nwhere `XXX` is the correct type of accelerator that you have on your machine.\nNote that if you are using a GPU you might need `XXX` to also include the\ncorrect version of CUDA and cuDNN installed on your machine.\nFor more details please read [here](https://github.com/google/jax#installation).\n\n## Usage\n\nThe file `jaxline_configs.py` contains all the configurations specifications for\nthe experiments in the two papers. To run an experiment, in addition to passing\nthe location of the configs file, you must provide extra arguments in the\nfollowing manner:\n\n`${name_of_configuration},${index_in_sweep},${dataset_name}`\n\nFor example to run the second hyper-parameter configuration of the improved\nHamiltonian Generative Network (HGN++) on the mass-spring dataset you should\nrun in the command line (assuming that you are in the folder of the project):\n\n```shell\npython3 jaxline_train.py \\\n  --config=\"jaxline_configs.py:sym_metric_hgn_plus_plus_sweep,1,toy_physics/mass_spring\" \\\n  --jaxline_mode=\"train\" \\\n  --logtostderr\n```\n\n\n## Reference\n\n**SyMetric: Measuring the Quality of Learnt Hamiltonian Dynamics Inferred from Vision**\n\nIrina Higgins, Peter Wirnsberger, Andrew Jaegle, Aleksandar Botev\n\nURL: https://openreview.net/forum?id=9Qu0U9Fj7IP\n\n\n**Which priors matter? Benchmarking models for learning latent dynamics**\n\nAleksandar Botev, Drew Jaegle, Peter Wirnsberger, Daniel Hennes and Irina\nHiggins\n\nURL: https://openreview.net/forum?id=qBl8hnwR0px\n\n\n[DeepMind Hamiltonian Dynamics Suite]: https://github.com/deepmind/dm_hamiltonian_dynamics_suite\n"
  },
  {
    "path": "physics_inspired_models/__init__.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n"
  },
  {
    "path": "physics_inspired_models/eval_metric.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Module containing model evaluation metric.\"\"\"\nimport _thread as thread\nimport sys\nimport threading\nimport time\nimport warnings\nfrom absl import logging\nimport distrax\n\nimport numpy as np\nfrom sklearn import linear_model\nfrom sklearn import model_selection\nfrom sklearn import preprocessing\n\n\ndef quit_function(fn_name):\n  logging.error('%s took too long', fn_name)\n  sys.stderr.flush()\n  thread.interrupt_main()\n\n\ndef exit_after(s):\n  \"\"\"Use as decorator to exit function after s seconds.\"\"\"\n  def outer(fn):\n\n    def inner(*args, **kwargs):\n      timer = threading.Timer(s, quit_function, args=[fn.__name__])\n      timer.start()\n      try:\n        result = fn(*args, **kwargs)\n      finally:\n        timer.cancel()\n      return result\n\n    return inner\n\n  return outer\n\n\n@exit_after(400)\ndef do_grid_search(data_x_exp, data_y, clf, parameters, cv):\n  scoring_choice = 'explained_variance'\n  regressor = model_selection.GridSearchCV(\n      clf, parameters, cv=cv, refit=True, scoring=scoring_choice)\n  regressor.fit(data_x_exp, data_y)\n  return regressor\n\n\ndef symplectic_matrix(dim):\n  \"\"\"Return anti-symmetric identity matrix of given dimensionality.\"\"\"\n  half_dims = int(dim/2)\n  eye = np.eye(half_dims)\n  zeros = np.zeros([half_dims, half_dims])\n  top_rows = np.concatenate([zeros, - eye], axis=1)\n  bottom_rows = np.concatenate([eye, zeros], axis=1)\n  return np.concatenate([top_rows, bottom_rows], axis=0)\n\n\ndef create_latent_mask(z0, dist_std_threshold=0.5):\n  \"\"\"Create mask based on informativeness of each latent dimension.\n\n  For stochastic models those latent dimensions that are too close to the prior\n  are likely to be uninformative and can be ignored.\n\n  Args:\n    z0: distribution or array of phase space\n    dist_std_threshold: informative latents have average inferred stds <\n      dist_std_threshold\n\n  Returns:\n    latent_mask_final: boolean mask of the same dimensionality as z0\n  \"\"\"\n  if isinstance(z0, distrax.Normal):\n    std_vals = np.mean(z0.variance(), axis=0)\n  elif isinstance(z0, distrax.Distribution):\n    raise NotImplementedError()\n  else:\n    # If the latent is deterministic, pass through all dimensions\n    return np.array([True]*z0.shape[-1])\n\n  tensor_shape = std_vals.shape\n  half_dims = int(tensor_shape[-1] / 2)\n\n  std_vals_q = std_vals[:half_dims]\n  std_vals_p = std_vals[half_dims:]\n\n  # Keep both q and corresponding p as either one is informative\n  informative_latents_inds = np.array([\n      x for x in range(len(std_vals_q)) if\n      std_vals_q[x] < dist_std_threshold or std_vals_p[x] < dist_std_threshold\n  ])\n\n  if informative_latents_inds.shape[0] > 0:\n    latent_mask_final = np.zeros_like(std_vals_q)\n    latent_mask_final[informative_latents_inds] = 1\n    latent_mask_final = np.concatenate([latent_mask_final, latent_mask_final])\n    latent_mask_final = latent_mask_final == 1\n\n    return latent_mask_final\n  else:\n    return np.array([True]*tensor_shape[-1])\n\n\ndef standardize_data(data):\n  \"\"\"Applies the sklearn standardization to the data.\"\"\"\n  scaler = preprocessing.StandardScaler()\n  scaler.fit(data)\n  return scaler.transform(data)\n\n\ndef find_best_polynomial(data_x, data_y, max_poly_order, rsq_threshold,\n                         max_dim_n=32,\n                         alpha_sweep=None,\n                         max_iter=1000, cv=2):\n  \"\"\"Find minimal polynomial expansion that is sufficient to explain data using Lasso regression.\"\"\"\n  rsq = 0\n  poly_order = 1\n\n  if not np.any(alpha_sweep):\n    alpha_sweep = [1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2]\n\n  # Avoid a large polynomial expansion for large latent sizes\n  if data_x.shape[-1] > max_dim_n:\n    print(f'>WARNING! Data is too high dimensional at {data_x.shape[-1]}')\n    print('>WARNING! Setting max_poly_order = 1')\n    max_poly_order = 1\n\n  while rsq < rsq_threshold and poly_order <= max_poly_order:\n    time_start = time.perf_counter()\n    poly = preprocessing.PolynomialFeatures(poly_order, include_bias=False)\n    data_x_exp = poly.fit_transform(data_x)\n    time_end = time.perf_counter()\n    print(\n        f'Took {time_end-time_start}s to create polynomial features of order '\n        f'{poly_order} and size {data_x_exp.shape[1]}.')\n\n    with warnings.catch_warnings():\n      warnings.simplefilter('ignore')\n      time_start = time.perf_counter()\n      clf = linear_model.Lasso(\n          random_state=0, max_iter=max_iter, normalize=False, warm_start=False)\n      parameters = {'alpha': alpha_sweep}\n      try:\n        regressor = do_grid_search(data_x_exp, data_y, clf, parameters, cv)\n        time_end = time.perf_counter()\n        print(f'Took {time_end-time_start}s to do regression grid search.')\n\n        # Get rsq results\n        time_start = time.perf_counter()\n        clf = linear_model.Lasso(\n            random_state=0,\n            alpha=regressor.best_params_['alpha'],\n            max_iter=max_iter,\n            normalize=False,\n            warm_start=False)\n        clf.fit(data_x_exp, data_y)\n        rsq = clf.score(data_x_exp, data_y)\n        time_end = time.perf_counter()\n        print(f'Took {time_end-time_start}s to get rsq results.')\n\n        old_regressor = regressor\n        old_poly_order = poly_order\n        old_poly = poly\n        old_data_x_exp = data_x_exp\n        old_rsq = rsq\n        old_clf = clf\n        print(f'Polynomial of order {poly_order} with '\n              f' alpha={regressor.best_params_} RSQ: {rsq}')\n        poly_order += 1\n\n      except KeyboardInterrupt:\n        time_end = time.perf_counter()\n        print(f'Timed out after {time_end-time_start}s of doing grid search.')\n        # pytype: disable=name-error  # py39-upgrade\n        print(f'Continuing with previous poly_order={old_poly_order}...')\n        regressor = old_regressor\n        poly_order = old_poly_order\n        poly = old_poly\n        data_x_exp = old_data_x_exp\n        rsq = old_rsq\n        clf = old_clf\n        # pytype: enable=name-error  # py39-upgrade\n        print(f'Polynomial of order {poly_order} with '\n              f' alpha={regressor.best_params_} RSQ: {rsq}')\n        break\n\n  return clf, poly, data_x_exp, rsq\n\n\ndef eval_monomial_grad(feature, x, w, grad_acc):\n  \"\"\"Accumulates gradient from polynomial features and their weights.\"\"\"\n  features = feature.split(' ')\n  variable_indices = []\n  grads = np.ones(len(features)) * w\n  for i, feature in enumerate(features):\n    name_and_power = feature.split('^')\n    if len(name_and_power) == 1:\n      name, power = name_and_power[0], 1\n    else:\n      name, power = name_and_power\n      power = int(power)\n    var_index = int(name[1:])\n    variable_indices.append(var_index)\n    new_prod = np.ones_like(grads) * (x[var_index] ** power)\n    # This needs a special case, for situation where x[index] = 0.0\n    if power == 1:\n      new_prod[i] = 1.0\n    else:\n      new_prod[i] = power * (x[var_index] ** (power - 1))\n    grads = grads * new_prod\n  grad_acc[variable_indices] += grads\n  return grad_acc\n\n\ndef compute_jacobian_manual(x, polynomial_features, weight_matrix, tolerance):\n  \"\"\"Computes the jacobian manually.\"\"\"\n  # Put together the equation for each output var\n  # polynomial_features = np.array(polynomial_obj.get_feature_names())\n  weight_mask = np.abs(weight_matrix) > tolerance\n  weight_matrix = weight_mask * weight_matrix\n  jacobians = list()\n  for i in range(weight_matrix.shape[0]):\n    grad_accumulator = np.zeros_like(x)\n    for j, feature in enumerate(polynomial_features):\n      eval_monomial_grad(feature, x, weight_matrix[i, j], grad_accumulator)\n    jacobians.append(grad_accumulator)\n  return np.stack(jacobians)\n\n\ndef calculate_jacobian_prod(jacobian, noise_eps=1e-6):\n  \"\"\"Calculates AA*, where A=JEJ^T and A*=JE^TJ^T, which should be I.\"\"\"\n  # Add noise as 0 in jacobian creates issues in calculations later\n  jacobian = jacobian + noise_eps\n  sym_matrix = symplectic_matrix(jacobian.shape[1])\n  pred = np.matmul(jacobian, sym_matrix)\n  pred = np.matmul(pred, np.transpose(jacobian))\n\n  pred_t = np.matmul(jacobian, np.transpose(sym_matrix))\n  pred_t = np.matmul(pred_t, np.transpose(jacobian))\n\n  pred_id = np.matmul(pred, pred_t)\n\n  return pred_id\n\n\ndef normalise_jacobian_prods(jacobian_preds):\n  \"\"\"Normalises Jacobians evaluated at various points by a constant.\"\"\"\n  stacked_preds = np.stack(jacobian_preds)\n  # For each attempt at estimating E, get the max term, and take their average\n  normalisation_factor = np.mean(np.max(np.abs(stacked_preds), axis=(1, 2)))\n\n  if normalisation_factor != 0:\n    stacked_preds = stacked_preds/normalisation_factor\n\n  return stacked_preds\n\n\ndef calculate_symetric_score(\n    gt_data,\n    model_data,\n    max_poly_order,\n    max_sym_score,\n    rsq_threshold,\n    sym_threshold,\n    evaluation_point_n,\n    trajectory_n=1,\n    weight_tolerance=1e-5,\n    alpha_sweep=None,\n    max_iter=1000,\n    cv=2):\n  \"\"\"Finds minimal polynomial expansion to explain data using Lasso regression, gets the Jacobian of the mapping and calculates how symplectic the map is.\"\"\"\n  model_data = model_data[..., :gt_data.shape[0], :]\n\n  # Fing polynomial expansion that explains enough variance in the gt data\n  print('Finding best polynomial expansion...')\n  time_start = time.perf_counter()\n  # Clean up model data to ensure it doesn't contain NaN, infinity\n  # or values too large for dtype('float32')\n  model_data = np.nan_to_num(model_data)\n  model_data = np.clip(model_data, -999999, 999999)\n\n  clf, poly, model_data_exp, best_rsq = find_best_polynomial(\n      model_data, gt_data, max_poly_order, rsq_threshold,\n      32, alpha_sweep, max_iter, cv)\n  time_end = time.perf_counter()\n  print(f'Took {time_end - time_start}s to find best polynomial.')\n\n  # Calculate Symplecticity score\n  all_raw_scores = []\n  features = np.array(poly.get_feature_names())\n\n  points_per_trajectory = int(len(gt_data) / trajectory_n)\n  for trajectory in range(trajectory_n):\n    random_data_inds = np.random.permutation(\n        range(points_per_trajectory))[:evaluation_point_n]\n\n    jacobian_preds = []\n    for point_ind in random_data_inds:\n      input_data_point = model_data[points_per_trajectory * trajectory +\n                                    point_ind]\n      time_start = time.perf_counter()\n      jacobian = compute_jacobian_manual(input_data_point, features,\n                                         clf.coef_, weight_tolerance)\n      pred = calculate_jacobian_prod(jacobian)\n      jacobian_preds.append(pred)\n      time_end = time.perf_counter()\n      print(f'Took {time_end - time_start}s to evaluate jacobian '\n            f'around point {point_ind}.')\n\n    # Normalise\n    normalised_jacobian_preds = normalise_jacobian_prods(jacobian_preds)\n    # The score is measured as the deviation from I\n    identity = np.eye(normalised_jacobian_preds.shape[-1])\n    scores = np.mean(np.power(normalised_jacobian_preds - identity, 2),\n                     axis=(1, 2))\n    all_raw_scores.append(scores)\n\n  sym_score = np.min([np.mean(all_raw_scores), max_sym_score])\n  # Calculate final SyMetric score\n  if best_rsq > rsq_threshold and sym_score < sym_threshold:\n    sy_metric = 1.0\n  else:\n    sy_metric = 0.0\n\n  results = {\n      'poly_exp_order': poly.get_params()['degree'],\n      'rsq': best_rsq,\n      'sym': sym_score,\n      'SyMetric': sy_metric,\n  }\n  with np.printoptions(precision=4, suppress=True):\n    print(f'----------------FINAL RESULTS FOR {trajectory_n} '\n          'TRAJECTORIES------------------')\n    print(f'BEST POLYNOMIAL EXPANSION ORDER: {results[\"poly_exp_order\"]}')\n    print(f'BEST RSQ (1-best): {results[\"rsq\"]}')\n    print(f'SYMPLECTICITY SCORE AROUND ALL POINTS AND ALL '\n          f'TRAJECTORIES (0-best): {sym_score}')\n    print(f'SyMETRIC SCORE: {sy_metric}')\n    print(f'----------------FINAL RESULTS FOR {trajectory_n} '\n          f'TRAJECTORIES------------------')\n  return results, clf, poly, model_data_exp\n"
  },
  {
    "path": "physics_inspired_models/integrators.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Module containing the implementations of the various numerical integrators.\n\nHigher order methods mostly taken from [1].\n\nReferences:\n  [1] Leimkuhler, Benedict and Sebastian Reich. Simulating hamiltonian dynamics.\n    Vol. 14. Cambridge university press, 2004.\n  [2] Forest, Etienne and Ronald D. Ruth. Fourth-order symplectic integration.\n    Physica D: Nonlinear Phenomena 43.1 (1990): 105-117.\n  [3] Blanes, Sergio and Per Christian Moan. Practical symplectic partitioned\n    Runge–Kutta and Runge–Kutta–Nyström methods. Journal of Computational and\n    Applied Mathematics 142.2 (2002): 313-330.\n  [4] McLachlan, Robert I. On the numerical integration of ordinary differential\n    equations by symmetric composition methods. SIAM Journal on Scientific\n    Computing 16.1 (1995): 151-168.\n  [5] Yoshida, Haruo. Construction of higher order symplectic integrators.\n    Physics letters A 150.5-7 (1990): 262-268.\n  [6] Süli, Endre; Mayers, David (2003), An Introduction to Numerical Analysis,\n    Cambridge University Press, ISBN 0-521-00794-1.\n  [7] Hairer, Ernst; Nørsett, Syvert Paul; Wanner, Gerhard (1993), Solving\n    ordinary differential equations I: Nonstiff problems, Berlin, New York:\n    Springer-Verlag, ISBN 978-3-540-56670-0.\n\"\"\"\nfrom typing import Callable, Dict, Optional, Sequence, Tuple, TypeVar, Union\n\nfrom dm_hamiltonian_dynamics_suite.hamiltonian_systems import phase_space\nimport jax\nfrom jax import lax\nfrom jax.experimental import ode\nimport jax.numpy as jnp\nimport numpy as np\n\nM = TypeVar(\"M\")\nTM = TypeVar(\"TM\")\nTimeInterval = Union[jnp.ndarray, Tuple[float, float]]\n\n#    _____                           _\n#   / ____|                         | |\n#  | |  __  ___ _ __   ___ _ __ __ _| |\n#  | | |_ |/ _ \\ '_ \\ / _ \\ '__/ _` | |\n#  | |__| |  __/ | | |  __/ | | (_| | |\n#   \\_____|\\___|_| |_|\\___|_|  \\__,_|_|\n#   _____       _                       _   _\n#  |_   _|     | |                     | | (_)\n#    | |  _ __ | |_ ___  __ _ _ __ __ _| |_ _  ___  _ __\n#    | | | '_ \\| __/ _ \\/ _` | '__/ _` | __| |/ _ \\| '_ \\\n#   _| |_| | | | ||  __/ (_| | | | (_| | |_| | (_) | | | |\n#  |_____|_| |_|\\__\\___|\\__, |_|  \\__,_|\\__|_|\\___/|_| |_|\n#                        __/ |\n#                       |___/\n\n\nGeneralTangentFunction = Callable[\n    [\n        Optional[Union[float, jnp.ndarray]],  # t\n        M  # y\n    ],\n    TM  # dy_dt\n]\n\nGeneralIntegrator = Callable[\n    [\n        GeneralTangentFunction,\n        Optional[Union[float, jnp.ndarray]],  # t\n        M,  # y\n        jnp.ndarray,  # dt\n    ],\n    M  # y_next\n]\n\n\ndef solve_ivp_dt(\n    fun: GeneralTangentFunction,\n    y0: M,\n    t0: Union[float, jnp.ndarray],\n    dt: Union[float, jnp.ndarray],\n    method: Union[str, GeneralIntegrator],\n    num_steps: Optional[int] = None,\n    steps_per_dt: int = 1,\n    use_scan: bool = True,\n    ode_int_kwargs: Optional[Dict[str, Union[float, int]]] = None\n) -> Tuple[jnp.ndarray, M]:\n  \"\"\"Solve an initial value problem for a system of ODEs using explicit method.\n\n  This function numerically integrates a system of ordinary differential\n  equations given an initial value::\n      dy / dt = f(t, y)\n      y(t0) = y0\n  Here t is a one-dimensional independent variable (time), y(t) is an\n  n-dimensional vector-valued function (state), and an n-dimensional\n  vector-valued function f(t, y) determines the differential equations.\n  The goal is to find y(t) approximately satisfying the differential\n  equations, given an initial value y(t0)=y0.\n\n  All of the solvers supported here are explicit and non-adaptive. This makes\n  them easy to run with a fixed amount of computation and ensures solutions are\n  easily differentiable.\n\n  Args:\n    fun: callable\n      Right-hand side of the system. The calling signature is ``fun(t, y)``.\n      Here `t` is a scalar representing the time instance. `y` can be any\n      type `M`, including a flat array, that is registered as a\n      pytree. In addition, there is a type denoted as `TM` that represents\n      the tangent space to `M`. It is assumed that any element of `TM` can be\n      multiplied by arrays and scalars, can be added to other `TM` instances\n      as well as they can be right added to an element of `M`, that is\n      add(M, TM) exists. The function should return an element of `TM` that\n      defines the time derivative of `y`.\n    y0: an instance of `M`\n      Initial state at `t_span[0]`.\n    t0: float or array.\n      The initial time point of integration.\n    dt: array\n      Array containing all consecutive increments in time, at which the integral\n      to be evaluated. The size of this array along axis 0 defines the number of\n      steps that the integrator would do.\n    method: string or `GeneralIntegrator`\n      The integrator method to use. Possible values for string are:\n        * general_euler - see `GeneralEuler`\n        * rk2 - see `RungaKutta2`\n        * rk4 - see `RungaKutta4`\n        * rk38 - see `RungaKutta38`\n    num_steps: Optional int.\n      If provided the `dt` will be treated as the same per step time interval,\n      applied for this many steps. In other words setting this argument is\n      equivalent to replicating `dt` num_steps times and stacking over axis=0.\n    steps_per_dt: int\n      This determines the overall step size. Between any two values of t_eval\n      the step size is `dt = (t_eval[i+1] - t_eval[i]) / steps_per_dt.\n    use_scan: bool\n      Whether for the loop to use `lax.scan` or a python loop\n    ode_int_kwargs: dict\n      Extra arguments to be passed to `ode.odeint` when method=\"adaptive\"\n\n  Returns:\n    t: array\n      Time points at which the solution is evaluated.\n    y : an instance of M\n      Values of the solution at `t`.\n  \"\"\"\n  if method == \"adaptive\":\n    ndim = y0.q.ndim if isinstance(y0, phase_space.PhaseSpace) else y0.ndim\n    signs = jnp.asarray(jnp.sign(dt))\n    signs = signs.reshape([-1] + [1] * (ndim - 1))\n    if isinstance(dt, float) or dt.ndim == 0:\n      true_t_eval = t0 + dt * np.arange(1, num_steps + 1)\n    else:\n      true_t_eval = t0 + dt[None] * np.arange(1, num_steps + 1)[:, None]\n    if isinstance(dt, float):\n      dt = np.asarray(dt)\n    if isinstance(dt, np.ndarray) and dt.ndim > 0:\n      if np.all(np.abs(dt) != np.abs(dt[0])):\n        raise ValueError(\"Not all values of `dt` where the same.\")\n    elif isinstance(dt, jnp.ndarray) and dt.ndim > 0:\n      raise ValueError(\"The code here works only when `dy_dt` is time \"\n                       \"independent and `np.abs(dt)` is the same. For this we \"\n                       \"allow calling this only with numpy (not jax.numpy) \"\n                       \"arrays.\")\n    dt: jnp.ndarray = jnp.abs(jnp.asarray(dt))\n    dt = dt.reshape([-1])[0]\n    t_eval = t0 + dt * np.arange(num_steps + 1)\n\n    outputs = ode.odeint(\n        func=lambda y_, t_: fun(None, y_) * signs,\n        y0=y0,\n        t=jnp.abs(t_eval - t0),\n        **(ode_int_kwargs or dict())\n    )\n    # Note that we do not return the initial point\n    return true_t_eval, jax.tree_map(lambda x: x[1:], outputs)\n\n  method = get_integrator(method)\n  if num_steps is not None:\n    dt = jnp.repeat(jnp.asarray(dt)[None], repeats=num_steps, axis=0)\n  t_eval = t0 + jnp.cumsum(dt, axis=0)\n  t0 = jnp.ones_like(t_eval[..., :1]) * t0\n  t = jnp.concatenate([t0, t_eval[..., :-1]], axis=-1)\n  def loop_body(y_: M, t_dt: Tuple[jnp.ndarray, jnp.ndarray]) -> Tuple[M, M]:\n    t_, dt_ = t_dt\n    dt_: jnp.ndarray = dt_ / steps_per_dt\n    for _ in range(steps_per_dt):\n      y_ = method(fun, t_, y_, dt_)\n      t_ = t_ + dt_\n    return y_, y_\n  if use_scan:\n    return t_eval, lax.scan(loop_body, init=y0, xs=(t, dt))[1]\n  else:\n    y = [y0]\n    for t_and_dt_i in zip(t, dt):\n      y.append(loop_body(y[-1], t_and_dt_i)[0])\n    # Note that we do not return the initial point\n    return t_eval, jax.tree_map(lambda *args: jnp.stack(args, axis=0),\n                                     *y[1:])\n\n\ndef solve_ivp_dt_two_directions(\n    fun: GeneralTangentFunction,\n    y0: M,\n    t0: Union[float, jnp.ndarray],\n    dt: Union[float, jnp.ndarray],\n    method: Union[str, GeneralIntegrator],\n    num_steps_forward: int,\n    num_steps_backward: int,\n    include_y0: bool = True,\n    steps_per_dt: int = 1,\n    use_scan: bool = True,\n    ode_int_kwargs: Optional[Dict[str, Union[float, int]]] = None\n) -> M:\n  \"\"\"Equivalent to `solve_ivp_dt` but you can specify unrolling the problem for a fixed number of steps in both time directions.\"\"\"\n  yt = []\n  if num_steps_backward > 0:\n    yt_bck = solve_ivp_dt(\n        fun=fun,\n        y0=y0,\n        t0=t0,\n        dt=- dt,\n        method=method,\n        num_steps=num_steps_backward,\n        steps_per_dt=steps_per_dt,\n        use_scan=use_scan,\n        ode_int_kwargs=ode_int_kwargs\n    )[1]\n    yt.append(jax.tree_map(lambda x: jnp.flip(x, axis=0), yt_bck))\n  if include_y0:\n    yt.append(jax.tree_map(lambda x: x[None], y0))\n  if num_steps_forward > 0:\n    yt_fwd = solve_ivp_dt(\n        fun=fun,\n        y0=y0,\n        t0=t0,\n        dt=dt,\n        method=method,\n        num_steps=num_steps_forward,\n        steps_per_dt=steps_per_dt,\n        use_scan=use_scan,\n        ode_int_kwargs=ode_int_kwargs\n    )[1]\n    yt.append(yt_fwd)\n  if len(yt) > 1:\n    return jax.tree_map(lambda *a: jnp.concatenate(a, axis=0), *yt)\n  else:\n    return yt[0]\n\n\ndef solve_ivp_t_eval(\n    fun: GeneralTangentFunction,\n    t_span: TimeInterval,\n    y0: M,\n    method: Union[str, GeneralIntegrator],\n    t_eval: Optional[jnp.ndarray] = None,\n    steps_per_dt: int = 1,\n    use_scan: bool = True,\n    ode_int_kwargs: Optional[Dict[str, Union[float, int]]] = None\n) -> Tuple[jnp.ndarray, M]:\n  \"\"\"Solve an initial value problem for a system of ODEs using an explicit method.\n\n  This function numerically integrates a system of ordinary differential\n  equations given an initial value::\n      dy / dt = f(t, y)\n      y(t0) = y0\n  Here t is a one-dimensional independent variable (time), y(t) is an\n  n-dimensional vector-valued function (state), and an n-dimensional\n  vector-valued function f(t, y) determines the differential equations.\n  The goal is to find y(t) approximately satisfying the differential\n  equations, given an initial value y(t0)=y0.\n\n  All of the solvers supported here are explicit and non-adaptive. This in\n  terms makes them easy to run with fixed amount of computation and\n  the solutions to be easily differentiable.\n\n  Args:\n    fun: callable\n      Right-hand side of the system. The calling signature is ``fun(t, y)``.\n      Here `t` is a scalar representing the time instance. `y` can be any\n      type `M`, including a flat array, that is registered as a\n      pytree. In addition, there is a type denoted as `TM` that represents\n      the tangent space to `M`. It is assumed that any element of `TM` can be\n      multiplied by arrays and scalars, can be added to other `TM` instances\n      as well as they can be right added to an element of `M`, that is\n      add(M, TM) exists. The function should return an element of `TM` that\n      defines the time derivative of `y`.\n    t_span: 2-tuple of floats\n      Interval of integration (t0, tf). The solver starts with t=t0 and\n      integrates until it reaches t=tf.\n    y0: an instance of `M`\n      Initial state at `t_span[0]`.\n    method: string or `GeneralIntegrator`\n      The integrator method to use. Possible values for string are:\n        * general_euler - see `GeneralEuler`\n        * rk2 - see `RungaKutta2`\n        * rk4 - see `RungaKutta4`\n        * rk38 - see `RungaKutta38`\n    t_eval: array or None.\n      Times at which to store the computed solution. Must be sorted and lie\n      within `t_span`. If None then t_eval = [t_span[-1]]\n    steps_per_dt: int\n      This determines the overall step size. Between any two values of t_eval\n      the step size is `dt = (t_eval[i+1] - t_eval[i]) / steps_per_dt.\n    use_scan: bool\n      Whether for the loop to use `lax.scan` or a python loop\n    ode_int_kwargs: dict\n      Extra arguments to be passed to `ode.odeint` when method=\"adaptive\"\n\n  Returns:\n    t: array\n      Time points at which the solution is evaluated.\n    y : an instance of M\n      Values of the solution at `t`.\n  \"\"\"\n  # Check for t_eval\n  if t_eval is None:\n    t_eval = np.asarray([t_span[-1]])\n  if isinstance(t_span[0], float) and isinstance(t_span[1], float):\n    t_span = np.asarray(t_span)\n  elif isinstance(t_span[0], float) and isinstance(t_span[1], jnp.ndarray):\n    t_span = (np.full_like(t_span[1], t_span[0]), t_span[1])\n    t_span = np.stack(t_span, axis=0)\n  elif isinstance(t_span[1], float) and isinstance(t_span[0], jnp.ndarray):\n    t_span = (t_span[0], jnp.full_like(t_span[0], t_span[1]))\n    t_span = np.stack(t_span, axis=0)\n  else:\n    t_span = np.stack(t_span, axis=0)\n  def check_span(span, ts):\n    # Verify t_span and t_eval\n    if span[0] < span[1]:\n      # Forward in time\n      if not np.all(np.logical_and(span[0] <= ts, ts <= span[1])):\n        raise ValueError(\"Values in `t_eval` are not within `t_span`.\")\n      if not np.all(ts[:-1] < ts[1:]):\n        raise ValueError(\"Values in `t_eval` are not properly sorted.\")\n    else:\n      # Backward in time\n      if not np.all(np.logical_and(span[0] >= ts, ts >= span[1])):\n        raise ValueError(\"Values in `t_eval` are not within `t_span`.\")\n      if not np.all(ts[:-1] > ts[1:]):\n        raise ValueError(\"Values in `t_eval` are not properly sorted.\")\n  if t_span.ndim == 1:\n    check_span(t_span, t_eval)\n  elif t_span.ndim == 2:\n    if t_eval.ndim != 2:\n      raise ValueError(\"t_eval should have rank 2.\")\n    for i in range(t_span.shape[1]):\n      check_span(t_span[:, i], t_eval[:, i])\n\n  t = np.concatenate([t_span[:1], t_eval[:-1]], axis=0)\n\n  return solve_ivp_dt(\n      fun=fun,\n      y0=y0,\n      t0=t_span[0],\n      dt=t_eval - t,\n      method=method,\n      steps_per_dt=steps_per_dt,\n      use_scan=use_scan,\n      ode_int_kwargs=ode_int_kwargs\n  )\n\n\nclass RungaKutta(GeneralIntegrator):\n  \"\"\"A general Runga-Kutta integrator defined using a Butcher tableau.\"\"\"\n\n  def __init__(\n      self,\n      a_tableau: Sequence[Sequence[float]],\n      b_tableau: Sequence[float],\n      c_tableau: Sequence[float],\n      order: int):\n    if len(b_tableau) != len(c_tableau) + 1:\n      raise ValueError(\"The length of b_tableau should be exactly one more than\"\n                       \" the length of c_tableau.\")\n    if len(b_tableau) != len(a_tableau) + 1:\n      raise ValueError(\"The length of b_tableau should be exactly one more than\"\n                       \" the length of a_tableau.\")\n    self.a_tableau = a_tableau\n    self.b_tableau = b_tableau\n    self.c_tableau = c_tableau\n    self.order = order\n\n  def __call__(\n      self,\n      tangent_func: GeneralTangentFunction,\n      t: jnp.ndarray,\n      y: M,\n      dt: jnp.ndarray\n  ) -> M:  # pytype: disable=invalid-annotation\n    k = [tangent_func(t, y)]\n    zero = jax.tree_map(jnp.zeros_like, k[0])\n    # We always broadcast opposite to numpy (e.g. leading dims (batch) count)\n    if dt.ndim > 0:\n      dt = dt.reshape(dt.shape + (1,) * (y.ndim - dt.ndim))\n    if t.ndim > 0:\n      t = t.reshape(t.shape + (1,) * (y.ndim - t.ndim))\n    for c_n, a_n_row in zip(self.c_tableau, self.a_tableau):\n      t_n = t + dt * c_n\n      products = [a_i * k_i for a_i, k_i in zip(a_n_row, k) if a_i != 0.0]\n      delta_n = sum(products, zero)\n      y_n = y + dt * delta_n\n      k.append(tangent_func(t_n, y_n))\n    products = [b_i * k_i for b_i, k_i in zip(self.b_tableau, k) if b_i != 0.0]\n    delta = sum(products, zero)\n    return y + dt * delta\n\n\nclass GeneralEuler(RungaKutta):\n  \"\"\"The standard Euler method (for general ODE problems).\"\"\"\n\n  def __init__(self):\n    super().__init__(\n        a_tableau=[],\n        b_tableau=[1.0],\n        c_tableau=[],\n        order=1\n    )\n\n\nclass RungaKutta2(RungaKutta):\n  \"\"\"The second order Runga-Kutta method corresponding to the mid-point rule.\"\"\"\n\n  def __init__(self):\n    super().__init__(\n        a_tableau=[[1.0 / 2.0]],\n        b_tableau=[0.0, 1.0],\n        c_tableau=[1.0 / 2.0],\n        order=2\n    )\n\n\nclass RungaKutta4(RungaKutta):\n  \"\"\"The fourth order Runga-Kutta method from [6].\"\"\"\n\n  def __init__(self):\n    super().__init__(\n        a_tableau=[[1.0 / 2.0],\n                   [0.0, 1.0 / 2.0],\n                   [0.0, 0.0, 1.0]],\n        b_tableau=[1.0 / 6.0, 1.0 / 3.0, 1.0 / 3.0, 1.0 / 6.0],\n        c_tableau=[1.0 / 2.0, 1.0 / 2.0, 1.0],\n        order=4\n    )\n\n\nclass RungaKutta38(RungaKutta):\n  \"\"\"The fourth order 3/8 rule Runga-Kutta method from [7].\"\"\"\n\n  def __init__(self):\n    super().__init__(\n        a_tableau=[[1.0 / 3.0],\n                   [-1.0 / 3.0, 1.0],\n                   [1.0, -1.0, 1.0]],\n        b_tableau=[1.0 / 8.0, 3.0 / 8.0, 3.0 / 8.0, 1.0 / 8.0],\n        c_tableau=[1.0 / 3.0, 2.0 / 3.0, 1.0],\n        order=4\n    )\n\n\n#    _____                       _           _   _\n#   / ____|                     | |         | | (_)\n#  | (___  _   _ _ __ ___  _ __ | | ___  ___| |_ _  ___\n#   \\___ \\| | | | '_ ` _ \\| '_ \\| |/ _ \\/ __| __| |/ __|\n#   ____) | |_| | | | | | | |_) | |  __/ (__| |_| | (__\n#  |_____/ \\__, |_| |_| |_| .__/|_|\\___|\\___|\\__|_|\\___|\n#           __/ |         | |\n#          |___/          |_|\n#   _____       _                       _   _\n#  |_   _|     | |                     | | (_)\n#    | |  _ __ | |_ ___  __ _ _ __ __ _| |_ _  ___  _ __\n#    | | | '_ \\| __/ _ \\/ _` | '__/ _` | __| |/ _ \\| '_ \\\n#   _| |_| | | | ||  __/ (_| | | | (_| | |_| | (_) | | | |\n#  |_____|_| |_|\\__\\___|\\__, |_|  \\__,_|\\__|_|\\___/|_| |_|\n#                        __/ |\n#                       |___/\n\n\nSymplecticIntegrator = Callable[\n    [\n        phase_space.SymplecticTangentFunction,\n        jnp.ndarray,  # t\n        phase_space.PhaseSpace,  # (q, p)\n        jnp.ndarray,  # dt\n    ],\n    phase_space.PhaseSpace  # (q_next, p_next)\n]\n\n\ndef solve_hamiltonian_ivp_dt(\n    hamiltonian: phase_space.HamiltonianFunction,\n    y0: phase_space.PhaseSpace,\n    t0: Union[float, jnp.ndarray],\n    dt: Union[float, jnp.ndarray],\n    method: Union[str, SymplecticIntegrator],\n    num_steps: Optional[int] = None,\n    steps_per_dt: int = 1,\n    use_scan: bool = True,\n    ode_int_kwargs: Optional[Dict[str, Union[float, int]]] = None\n) -> Tuple[jnp.ndarray, phase_space.PhaseSpace]:\n  \"\"\"Solve an initial value problem for a Hamiltonian system.\n\n  This function numerically integrates a Hamiltonian system given an\n  initial value::\n      dq / dt = dH / dp\n      dp / dt = - dH / dq\n      q(t0), p(t0) = y0.q, y0.p\n  Here t is a one-dimensional independent variable (time), y(t) is an\n  n-dimensional vector-valued function (state), and an n-dimensional\n  vector-valued function H(t, q, p) determines the value of the Hamiltonian.\n  The goal is to find q(t) and p(t) approximately satisfying the differential\n  equations, given an initial values q(t0), p(t0) = y0.q, y0.p\n\n  All of the solvers supported here are explicit and non-adaptive. This in\n  terms makes them easy to run with fixed amount of computation and\n  the solutions to be easily differentiable.\n\n  Args:\n    hamiltonian: callable\n      The Hamiltonian function. The calling signature is ``h(t, s)``, where\n      `s` is an instance of `PhaseSpace`.\n    y0: an instance of `M`\n      Initial state at t=t0.\n    t0: float or array.\n      The initial time point of integration.\n    dt: array\n      Array containing all consecutive increments in time, at which the integral\n      to be evaluated. The size of this array along axis 0 defines the number of\n      steps that the integrator would do.\n    method: string or `GeneralIntegrator`\n      The integrator method to use. Possible values for string are:\n        * symp_euler - see `SymplecticEuler`\n        * symp_euler_q - a `SymplecticEuler` with position_first=True\n        * symp_euler_p - a `SymplecticEuler` with position_first=False\n        * leap_frog - see `LeapFrog`\n        * leap_frog_q - a `LeapFrog` with position_first=True\n        * leap_frog_p - a `LeapFrog` with position_first=False\n        * stormer_verlet - same as leap_frog\n        * stormer_verlet_q - same as leap_frog_q\n        * stormer_verlet_p - same as leap_frog_p\n        * ruth4 - see `Ruth4`,\n        * sym4 - see `Symmetric4`\n        * sym6 - see `Symmetric6`\n        * so4 - see `SymmetricSo4`\n        * so4_q - a `SymmetricSo4` with position_first=True\n        * so4_p - a `SymmetricSo4` with position_first=False\n        * so6 - see `SymmetricSo6`\n        * so6_q - a `SymmetricSo6` with position_first=True\n        * so6_p - a `SymmetricSo6` with position_first=False\n        * so8 - see `SymmetricSo8`\n        * so8_q - a `SymmetricSo8` with position_first=True\n        * so8_p - a `SymmetricSo8` with position_first=False\n    num_steps: Optional int.\n      If provided the `dt` will be treated as the same per step time interval,\n      applied for this many steps. In other words setting this argument is\n      equivalent to replicating `dt` num_steps times and stacking over axis=0.\n    steps_per_dt: int\n      This determines the overall step size. Between any two values of t_eval\n      the step size is `dt = (t_eval[i+1] - t_eval[i]) / steps_per_dt.\n    use_scan: bool\n      Whether for the loop to use `lax.scan` or a python loop\n    ode_int_kwargs: dict\n      Extra arguments to be passed to `ode.odeint` when method=\"adaptive\"\n\n  Returns:\n    t: array\n      Time points at which the solution is evaluated.\n    y : an instance of M\n      Values of the solution at `t`.\n  \"\"\"\n  if not isinstance(y0, phase_space.PhaseSpace):\n    raise ValueError(\"The initial state must be an instance of `PhaseSpace`.\")\n  dy_dt = phase_space.poisson_bracket_with_q_and_p(hamiltonian)\n\n  return solve_ivp_dt(\n      fun=dy_dt,\n      y0=y0,\n      t0=t0,\n      dt=dt,\n      method=method,\n      num_steps=num_steps,\n      steps_per_dt=steps_per_dt,\n      use_scan=use_scan,\n      ode_int_kwargs=ode_int_kwargs\n  )\n\n\ndef solve_hamiltonian_ivp_t_eval(\n    hamiltonian: phase_space.HamiltonianFunction,\n    t_span: TimeInterval,\n    y0: phase_space.PhaseSpace,\n    method: Union[str, SymplecticIntegrator],\n    t_eval: Optional[jnp.ndarray] = None,\n    steps_per_dt: int = 1,\n    use_scan: bool = True,\n    ode_int_kwargs: Optional[Dict[str, Union[float, int]]] = None\n) -> Tuple[jnp.ndarray, phase_space.PhaseSpace]:\n  \"\"\"Solve an initial value problem for a Hamiltonian system.\n\n  This function numerically integrates a Hamiltonian system given an\n  initial value::\n      dq / dt = dH / dp\n      dp / dt = - dH / dq\n      q(t0), p(t0) = y0.q, y0.p\n  Here t is a one-dimensional independent variable (time), y(t) is an\n  n-dimensional vector-valued function (state), and an n-dimensional\n  vector-valued function H(t, q, p) determines the value of the Hamiltonian.\n  The goal is to find q(t) and p(t) approximately satisfying the differential\n  equations, given an initial values q(t0), p(t0) = y0.q, y0.p\n\n  All of the solvers supported here are explicit and non-adaptive. This in\n  terms makes them easy to run with fixed amount of computation and\n  the solutions to be easily differentiable.\n\n  Args:\n    hamiltonian: callable\n      The Hamiltonian function. The calling signature is ``h(t, s)``, where\n      `s` is an instance of `PhaseSpace`.\n    t_span: 2-tuple of floats\n      Interval of integration (t0, tf). The solver starts with t=t0 and\n      integrates until it reaches t=tf.\n    y0: an instance of `M`\n      Initial state at `t_span[0]`.\n    method: string or `GeneralIntegrator`\n      The integrator method to use. Possible values for string are:\n        * symp_euler - see `SymplecticEuler`\n        * symp_euler_q - a `SymplecticEuler` with position_first=True\n        * symp_euler_p - a `SymplecticEuler` with position_first=False\n        * leap_frog - see `LeapFrog`\n        * leap_frog_q - a `LeapFrog` with position_first=True\n        * leap_frog_p - a `LeapFrog` with position_first=False\n        * stormer_verlet - same as leap_frog\n        * stormer_verlet_q - same as leap_frog_q\n        * stormer_verlet_p - same as leap_frog_p\n        * ruth4 - see `Ruth4`,\n        * sym4 - see `Symmetric4`\n        * sym6 - see `Symmetric6`\n        * so4 - see `SymmetricSo4`\n        * so4_q - a `SymmetricSo4` with position_first=True\n        * so4_p - a `SymmetricSo4` with position_first=False\n        * so6 - see `SymmetricSo6`\n        * so6_q - a `SymmetricSo6` with position_first=True\n        * so6_p - a `SymmetricSo6` with position_first=False\n        * so8 - see `SymmetricSo8`\n        * so8_q - a `SymmetricSo8` with position_first=True\n        * so8_p - a `SymmetricSo8` with position_first=False\n    t_eval: array or None.\n      Times at which to store the computed solution. Must be sorted and lie\n      within `t_span`. If None then t_eval = [t_span[-1]]\n    steps_per_dt: int\n      This determines the overall step size. Between any two values of t_eval\n      the step size is `dt = (t_eval[i+1] - t_eval[i]) / steps_per_dt.\n    use_scan: bool\n      Whether for the loop to use `lax.scan` or a python loop\n    ode_int_kwargs: dict\n      Extra argumrnts to be passed to `ode.odeint` when method=\"adaptive\"\n\n  Returns:\n    t: array\n      Time points at which the solution is evaluated.\n    y : an instance of M\n      Values of the solution at `t`.\n  \"\"\"\n  if not isinstance(y0, phase_space.PhaseSpace):\n    raise ValueError(\"The initial state must be an instance of `PhaseSpace`.\")\n  dy_dt = phase_space.poisson_bracket_with_q_and_p(hamiltonian)\n  if method == \"adaptive\":\n    dy_dt = phase_space.transform_symplectic_tangent_function_using_array(dy_dt)\n\n  return solve_ivp_t_eval(  # pytype: disable=bad-return-type  # jax-ndarray\n      fun=dy_dt,\n      t_span=t_span,\n      y0=y0,\n      method=method,\n      t_eval=t_eval,\n      steps_per_dt=steps_per_dt,\n      use_scan=use_scan,\n      ode_int_kwargs=ode_int_kwargs\n    )\n\n\nclass CompositionSymplectic(SymplecticIntegrator):\n  \"\"\"A generalized symplectic integrator based on compositions.\n\n  Simulates Hamiltonian dynamics using a composition of symplectic steps:\n    q_{0} = q_init, p_{0} = p_init\n    for i in [1, n]:\n      p_{i+1} = p_{i} - c_{i} * dH/dq(q_{i}) * dt\n      q_{i+1} = q_{i} + d_{i} * dH/dp(p_{i+1}) * dt\n    q_next = q_{n}, p_next = p_{n}\n\n  This integrator always starts with updating the momentum.\n  The order argument is used mainly for testing to estimate the error when\n  integrating various systems.\n  \"\"\"\n\n  def __init__(\n      self,\n      momentum_coefficients: Sequence[float],\n      position_coefficients: Sequence[float],\n      order: int):\n    if len(position_coefficients) != len(momentum_coefficients):\n      raise ValueError(\"The number of momentum_coefficients and \"\n                       \"position_coefficients must be the same.\")\n    if not np.allclose(sum(position_coefficients), 1.0):\n      raise ValueError(\"The sum of the position_coefficients \"\n                       \"must be equal to 1.\")\n    if not np.allclose(sum(momentum_coefficients), 1.0):\n      raise ValueError(\"The sum of the momentum_coefficients \"\n                       \"must be equal to 1.\")\n    self.momentum_coefficients = momentum_coefficients\n    self.position_coefficients = position_coefficients\n    self.order = order\n\n  def __call__(\n      self,\n      tangent_func: phase_space.SymplecticTangentFunction,\n      t: jnp.ndarray,\n      y: phase_space.PhaseSpace,\n      dt: jnp.ndarray\n  ) -> phase_space.PhaseSpace:\n    q, p = y.q, y.p\n    # This is intentional to prevent a bug where one uses y later\n    del y\n    # We always broadcast opposite to numpy (e.g. leading dims (batch) count)\n    if dt.ndim > 0:\n      dt = dt.reshape(dt.shape + (1,) * (q.ndim - dt.ndim))\n    if t.ndim > 0:\n      t = t.reshape(t.shape + (1,) * (q.ndim - t.ndim))\n    t_q = t\n    t_p = t\n    for c, d in zip(self.momentum_coefficients, self.position_coefficients):\n      # Update momentum\n      if c != 0.0:\n        dp_dt = tangent_func(t_p, phase_space.PhaseSpace(q, p)).p\n        p = p + c * dt * dp_dt\n        t_p = t_p + c * dt\n      # Update position\n      if d != 0.0:\n        dq_dt = tangent_func(t_q, phase_space.PhaseSpace(q, p)).q\n        q = q + d * dt * dq_dt\n        t_q = t_q + d * dt\n    return phase_space.PhaseSpace(position=q, momentum=p)\n\n\nclass SymplecticEuler(CompositionSymplectic):\n  \"\"\"The symplectic Euler method (for Hamiltonian systems).\n\n  If position_first = True:\n    q_{t+1} = q_{t} + dH/dp(p_{t}) * dt\n    p_{t+1} = p_{t} - dH/dq(q_{t+1}) * dt\n  else:\n    p_{t+1} = p_{t} - dH/dq(q_{t}) * dt\n    q_{t+1} = q_{t} + dH/dp(p_{t+1}) * dt\n  \"\"\"\n\n  def __init__(self, position_first=True):\n    if position_first:\n      super().__init__(\n          momentum_coefficients=[0.0, 1.0],\n          position_coefficients=[1.0, 0.0],\n          order=1\n      )\n    else:\n      super().__init__(\n          momentum_coefficients=[1.0],\n          position_coefficients=[1.0],\n          order=1\n      )\n\n\nclass SymmetricCompositionSymplectic(CompositionSymplectic):\n  \"\"\"A generalized composition integrator that is symmetric.\n\n  The integrators produced are always of the form:\n    [update_q, update_p, ..., update_p, update_q]\n  or\n    [update_p, update_q, ..., update_q, update_p]\n  based on the position_first argument. The method will expect which ever is\n  updated first to have one more coefficient.\n  \"\"\"\n\n  def __init__(\n      self,\n      momentum_coefficients: Sequence[float],\n      position_coefficients: Sequence[float],\n      position_first: bool,\n      order: int):\n    position_coefficients = list(position_coefficients)\n    momentum_coefficients = list(momentum_coefficients)\n    if position_first:\n      if len(position_coefficients) != len(momentum_coefficients) + 1:\n        raise ValueError(\"The number of position_coefficients must be one more \"\n                         \"than momentum_coefficients when position_first=True.\")\n      momentum_coefficients = [0.0] + momentum_coefficients\n    else:\n      if len(position_coefficients) + 1 != len(momentum_coefficients):\n        raise ValueError(\"The number of momentum_coefficients must be one more \"\n                         \"than position_coefficients when position_first=True.\")\n      position_coefficients = position_coefficients + [0.0]\n    super().__init__(\n        position_coefficients=position_coefficients,\n        momentum_coefficients=momentum_coefficients,\n        order=order\n    )\n\n\ndef symmetrize_coefficients(\n    coefficients: Sequence[float],\n    odd_number: bool\n) -> Sequence[float]:\n  \"\"\"Symmetrizes the coefficients for an integrator.\"\"\"\n  coefficients = list(coefficients)\n  if odd_number:\n    final = 1.0 - 2.0 * sum(coefficients)\n    return coefficients + [final] + coefficients[::-1]\n  else:\n    final = 0.5 - sum(coefficients)\n    return coefficients + [final, final] + coefficients[::-1]\n\n\nclass LeapFrog(SymmetricCompositionSymplectic):\n  \"\"\"The standard Leap-Frog method (also known as Stormer-Verlet).\n\n  If position_first = True:\n    q_half = q_{t} + dH/dp(p_{t}) * dt / 2\n    p_{t+1} = p_{t} - dH/dq(q_half) * dt\n    q_{t+1} = q_half + dH/dp(p_{t+1}) * dt / 2\n  else:\n    p_half = p_{t} - dH/dq(q_{t}) * dt / 2\n    q_{t+1} = q_{t} + dH/dp(p_half) * dt\n    p_{t+1} = p_half - dH/dq(q_{t+1}) * dt / 2\n  \"\"\"\n\n  def __init__(self, position_first=False):\n    if position_first:\n      super().__init__(\n          position_coefficients=[0.5, 0.5],\n          momentum_coefficients=[1.0],\n          position_first=True,\n          order=2\n      )\n    else:\n      super().__init__(\n          position_coefficients=[1.0],\n          momentum_coefficients=[0.5, 0.5],\n          position_first=False,\n          order=2\n      )\n\n\nclass Ruth4(SymmetricCompositionSymplectic):\n  \"\"\"The Fourth order method from [2].\"\"\"\n\n  def __init__(self):\n    cbrt_2 = float(np.cbrt(2.0))\n\n    c = [1.0 / (2.0 - cbrt_2)]\n    # 3: [c1, 1.0 - 2*c1, c1]\n    c = symmetrize_coefficients(c, odd_number=True)\n\n    d = [1.0 / (4.0 - 2.0 * cbrt_2)]\n    # 4: [d1, 0.5 - d1, 0.5 - d1, d1]\n    d = symmetrize_coefficients(d, odd_number=False)\n\n    super().__init__(\n        position_coefficients=d,\n        momentum_coefficients=c,\n        position_first=True,\n        order=4\n    )\n\n\nclass Symmetric4(SymmetricCompositionSymplectic):\n  \"\"\"The fourth order method from Table 6.1 in [1] (originally from [3]).\"\"\"\n\n  def __init__(self):\n    c = [0.0792036964311957, 0.353172906049774, -0.0420650803577195]\n    # 7 : [c1, c2, c3, 1.0 - c1 - c2 - c3, c3, c2, c1]\n    c = symmetrize_coefficients(c, odd_number=True)\n\n    d = [0.209515106613362, -0.143851773179818]\n    # 6: [d1, d2, 0.5 - d1, 0.5 - d1, d2,  d1]\n    d = symmetrize_coefficients(d, odd_number=False)\n\n    super().__init__(\n        position_coefficients=d,\n        momentum_coefficients=c,\n        position_first=False,\n        order=4\n    )\n\n\nclass Symmetric6(SymmetricCompositionSymplectic):\n  \"\"\"The sixth order method from Table 6.1 in [1] (originally from [3]).\"\"\"\n\n  def __init__(self):\n    c = [0.0502627644003922, 0.413514300428344, 0.0450798897943977,\n         -0.188054853819569, 0.541960678450780]\n    # 11 : [c1, c2, c3, c4, c5, 1.0 - sum(ci), c5, c4, c3, c2, c1]\n    c = symmetrize_coefficients(c, odd_number=True)\n\n    d = [0.148816447901042, -0.132385865767784, 0.067307604692185,\n         0.432666402578175]\n    # 10: [d1, d2, d3, d4, 0.5 - sum(di), 0.5 - sum(di), d4, d3, d2,  d1]\n    d = symmetrize_coefficients(d, odd_number=False)\n\n    super().__init__(\n        position_coefficients=d,\n        momentum_coefficients=c,\n        position_first=False,\n        order=4\n    )\n\n\ndef coefficients_based_on_composing_second_order(\n    weights: Sequence[float]\n) -> Tuple[Sequence[float], Sequence[float]]:\n  \"\"\"Constructs the coefficients for methods based on second-order schemes.\"\"\"\n  coefficients_0 = []\n  coefficients_1 = []\n  coefficients_0.append(weights[0] / 2.0)\n  for i in range(len(weights) - 1):\n    coefficients_1.append(weights[i])\n    coefficients_0.append((weights[i] + weights[i + 1]) / 2.0)\n  coefficients_1.append(weights[-1])\n  coefficients_0.append(weights[-1] / 2.0)\n  return coefficients_0, coefficients_1\n\n\nclass SymmetricSo4(SymmetricCompositionSymplectic):\n  \"\"\"The fourth order method from Table 6.2 in [1] (originally from [4]).\"\"\"\n\n  def __init__(self, position_first: bool = False):\n    w = [0.28, 0.62546642846767004501]\n    # 5\n    w = symmetrize_coefficients(w, odd_number=True)\n    c0, c1 = coefficients_based_on_composing_second_order(w)\n    c_q, c_p = (c0, c1) if position_first else (c1, c0)\n    super().__init__(\n        position_coefficients=c_q,\n        momentum_coefficients=c_p,\n        position_first=position_first,\n        order=4\n    )\n\n\nclass SymmetricSo6(SymmetricCompositionSymplectic):\n  \"\"\"The sixth order method from Table 6.2 in [1] (originally from [5]).\"\"\"\n\n  def __init__(self, position_first: bool = False):\n    w = [0.78451361047755726382, 0.23557321335935813368,\n         -1.17767998417887100695]\n    # 7\n    w = symmetrize_coefficients(w, odd_number=True)\n    c0, c1 = coefficients_based_on_composing_second_order(w)\n    c_q, c_p = (c0, c1) if position_first else (c1, c0)\n    super().__init__(\n        position_coefficients=c_q,\n        momentum_coefficients=c_p,\n        position_first=position_first,\n        order=6\n    )\n\n\nclass SymmetricSo8(SymmetricCompositionSymplectic):\n  \"\"\"The eighth order method from Table 6.2 in [1] (originally from [4]).\"\"\"\n\n  def __init__(self, position_first: bool = False):\n    w = [0.74167036435061295345, -0.40910082580003159400,\n         0.19075471029623837995, -0.57386247111608226666,\n         0.29906418130365592384, 0.33462491824529818378,\n         0.31529309239676659663]\n    # 15\n    w = symmetrize_coefficients(w, odd_number=True)\n    c0, c1 = coefficients_based_on_composing_second_order(w)\n    c_q, c_p = (c0, c1) if position_first else (c1, c0)\n    super().__init__(\n        position_coefficients=c_q,\n        momentum_coefficients=c_p,\n        position_first=position_first,\n        order=8\n    )\n\n\ngeneral_integrators = dict(\n    general_euler=GeneralEuler(),\n    rk2=RungaKutta2(),\n    rk4=RungaKutta4(),\n    rk38=RungaKutta38()\n)\n\nsymplectic_integrators = dict(\n    symp_euler=SymplecticEuler(position_first=True),\n    symp_euler_q=SymplecticEuler(position_first=True),\n    symp_euler_p=SymplecticEuler(position_first=False),\n    leap_frog=LeapFrog(position_first=False),\n    leap_frog_q=LeapFrog(position_first=True),\n    leap_frog_p=LeapFrog(position_first=False),\n    stormer_verlet=LeapFrog(position_first=False),\n    stormer_verlet_q=LeapFrog(position_first=True),\n    stormer_verlet_p=LeapFrog(position_first=False),\n    ruth4=Ruth4(),\n    sym4=Symmetric4(),\n    sym6=Symmetric6(),\n    so4=SymmetricSo4(position_first=False),\n    so4_q=SymmetricSo4(position_first=True),\n    so4_p=SymmetricSo4(position_first=False),\n    so6=SymmetricSo6(position_first=False),\n    so6_q=SymmetricSo6(position_first=True),\n    so6_p=SymmetricSo6(position_first=False),\n    so8=SymmetricSo8(position_first=False),\n    so8_q=SymmetricSo8(position_first=True),\n    so8_p=SymmetricSo8(position_first=False),\n)\n\n\ndef get_integrator(\n    name_or_callable: Union[str, GeneralIntegrator]\n) -> GeneralIntegrator:\n  \"\"\"Returns any integrator with the provided name or the argument.\"\"\"\n  if isinstance(name_or_callable, str):\n    if name_or_callable in general_integrators:\n      return general_integrators[name_or_callable]\n    elif name_or_callable in symplectic_integrators:\n      return symplectic_integrators[name_or_callable]\n    else:\n      raise ValueError(f\"Unrecognized integrator with name {name_or_callable}.\")\n  if not callable(name_or_callable):\n    raise ValueError(f\"Expected a callable, but got {type(name_or_callable)}.\")\n  return name_or_callable\n"
  },
  {
    "path": "physics_inspired_models/jaxline_configs.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Module containing all of the configurations for various models.\"\"\"\nimport copy\nimport os\nfrom jaxline import base_config\nimport ml_collections as collections\n\n_DATASETS_PATH_VAR_NAME = \"DM_HAMILTONIAN_DYNAMICS_SUITE_DATASETS\"\n\n\ndef get_config(arg_string):\n  \"\"\"Return config object for training.\"\"\"\n  args = arg_string.split(\",\")\n  if len(args) != 3:\n    raise ValueError(\"You must provide exactly three arguments separated by a \"\n                     \"comma - model_config_name,sweep_index,dataset_name.\")\n  model_config_name, sweep_index, dataset_name = args\n  sweep_index = int(sweep_index)\n\n  config = base_config.get_base_config()\n  config.random_seed = 123109801\n  config.eval_modes = (\"eval\", \"eval_metric\")\n\n  # Get the model config and the sweeps\n  if model_config_name not in globals():\n    raise ValueError(f\"The config name {model_config_name} does not exist in \"\n                     f\"jaxline_configs.py\")\n  config_and_sweep_fn = globals()[model_config_name]\n  model_config, sweeps = config_and_sweep_fn()\n\n  if not os.environ.get(_DATASETS_PATH_VAR_NAME, None):\n    raise ValueError(f\"You need to set the {_DATASETS_PATH_VAR_NAME}\")\n  dm_hamiltonian_suite_path = os.environ[_DATASETS_PATH_VAR_NAME]\n  dataset_folder = os.path.join(dm_hamiltonian_suite_path, dataset_name)\n\n  # Experiment config. Note that batch_size is per device.\n  # In the experiments we run on 4 GPUs, so the effective batch size was 128.\n  config.experiment_kwargs = collections.ConfigDict(\n      dict(\n          config=dict(\n              dataset_folder=dataset_folder,\n              model_kwargs=model_config,\n              num_extrapolation_steps=60,\n              drop_stats_containing=(\"neg_log_p_x\", \"l2_over_time\", \"neg_elbo\"),\n              optimizer=dict(\n                  name=\"adam\",\n                  kwargs=dict(\n                      learning_rate=1.5e-4,\n                      b1=0.9,\n                      b2=0.999,\n                  )\n              ),\n              training=dict(\n                  batch_size=32,\n                  burnin_steps=5,\n                  num_epochs=None,\n                  lagging_vae=False\n              ),\n              evaluation=dict(\n                  batch_size=64,\n              ),\n              evaluation_metric=dict(\n                  batch_size=5,\n                  batch_n=20,\n                  num_eval_metric_steps=60,\n                  max_poly_order=5,\n                  max_jacobian_score=1000,\n                  rsq_threshold=0.9,\n                  sym_threshold=0.05,\n                  evaluation_point_n=10,\n                  weight_tolerance=1e-03,\n                  max_iter=1000,\n                  cv=2,\n                  alpha_min_logspace=-4,\n                  alpha_max_logspace=-0.5,\n                  alpha_step_n=10,\n                  calculate_fully_after_steps=40000,\n              ),\n              evaluation_metric_mlp=dict(\n                  batch_size=64,\n                  batch_n=10000,\n                  datapoint_param_multiplier=1000,\n                  num_eval_metric_steps=60,\n                  evaluation_point_n=10,\n                  evaluation_trajectory_n=50,\n                  rsq_threshold=0.9,\n                  sym_threshold=0.05,\n                  ridge_lambda=0.01,\n                  model=dict(\n                      num_units=4,\n                      num_layers=4,\n                      activation=\"tanh\",\n                  ),\n                  optimizer=dict(\n                      name=\"adam\",\n                      kwargs=dict(\n                          learning_rate=1.5e-3,\n                      )\n                  ),\n              ),\n              evaluation_vpt=dict(\n                  batch_size=5,\n                  batch_n=2,\n                  vpt_threshold=0.025,\n              )\n          )\n      )\n  )\n\n  # Training loop config.\n  config.training_steps = int(500000)\n  config.interval_type = \"steps\"\n  config.log_tensors_interval = 50\n  config.log_train_data_interval = 50\n  config.log_all_train_data = False\n\n  config.save_checkpoint_interval = 100\n  config.checkpoint_dir = \"/tmp/physics_inspired_models/\"\n  config.train_checkpoint_all_hosts = False\n  config.eval_specific_checkpoint_dir = \"\"\n\n  config.update_from_flattened_dict(sweeps[sweep_index])\n  return config\n\n\nconfig_prefix = \"experiment_kwargs.config.\"\nmodel_prefix = config_prefix + \"model_kwargs.\"\n\ndefault_encoder_kwargs = collections.ConfigDict(dict(\n    conv_channels=64,\n    num_blocks=3,\n    blocks_depth=2,\n    activation=\"leaky_relu\",\n))\n\ndefault_decoder_kwargs = collections.ConfigDict(dict(\n    conv_channels=64,\n    num_blocks=3,\n    blocks_depth=2,\n    activation=\"leaky_relu\",\n))\n\ndefault_latent_system_net_kwargs = collections.ConfigDict(dict(\n    conv_channels=64,\n    num_units=250,\n    num_layers=5,\n    activation=\"swish\",\n))\n\n\ndefault_latent_system_kwargs = collections.ConfigDict(dict(\n    # Physics model arguments\n    input_space=collections.config_dict.placeholder(str),\n    simulation_space=collections.config_dict.placeholder(str),\n    potential_func_form=\"separable_net\",\n    kinetic_func_form=collections.config_dict.placeholder(str),\n    hgn_kinetic_func_form=\"separable_net\",\n    lgn_kinetic_func_form=\"matrix_dep_quad\",\n    parametrize_mass_matrix=collections.config_dict.placeholder(bool),\n    hgn_parametrize_mass_matrix=False,\n    lgn_parametrize_mass_matrix=True,\n    mass_eps=1.0,\n    # ODE model arguments\n    integrator_method=collections.config_dict.placeholder(str),\n    # RGN model arguments\n    residual=collections.config_dict.placeholder(bool),\n    # General arguments\n    net_kwargs=default_latent_system_net_kwargs\n))\n\ndefault_config_dict = collections.ConfigDict(dict(\n    name=collections.config_dict.placeholder(str),\n    latent_system_dim=32,\n    latent_system_net_type=\"mlp\",\n    latent_system_kwargs=default_latent_system_kwargs,\n    encoder_aggregation_type=\"linear_projection\",\n    decoder_de_aggregation_type=collections.config_dict.placeholder(str),\n    encoder_kwargs=default_encoder_kwargs,\n    decoder_kwargs=default_decoder_kwargs,\n    has_latent_transform=False,\n    num_inference_steps=5,\n    num_target_steps=60,\n    latent_training_type=\"forward\",\n    # Choices: overlap_by_one, no_overlap, include_inference\n    training_data_split=\"overlap_by_one\",\n    objective_type=\"ELBO\",\n    elbo_beta_delay=0,\n    elbo_beta_final=1.0,\n    geco_kappa=0.001,\n    geco_alpha=0.0,\n    dt=0.125,\n))\n\nhgn_paper_encoder_kwargs = collections.ConfigDict(dict(\n    conv_channels=[[32, 64], [64, 64], [64]],\n    num_blocks=3,\n    blocks_depth=2,\n    activation=\"relu\",\n    kernel_shapes=[2, 4],\n    padding=[\"VALID\", \"SAME\"],\n))\n\nhgn_paper_decoder_kwargs = collections.ConfigDict(dict(\n    conv_channels=64,\n    num_blocks=3,\n    blocks_depth=2,\n    activation=\"tf_leaky_relu\",\n))\n\nhgn_paper_latent_net_kwargs = collections.ConfigDict(dict(\n    conv_channels=[32, 64, 64, 64],\n    num_units=250,\n    num_layers=5,\n    activation=\"softplus\",\n    kernel_shapes=[3, 2, 2, 2, 2],\n    strides=[1, 2, 1, 2, 1],\n    padding=[\"SAME\", \"VALID\", \"SAME\", \"VALID\", \"SAME\"]\n))\n\nhgn_paper_latent_system_kwargs = collections.ConfigDict(dict(\n    potential_func_form=\"separable_net\",\n    kinetic_func_form=\"separable_net\",\n    parametrize_mass_matrix=False,\n    net_kwargs=hgn_paper_latent_net_kwargs\n))\n\nhgn_paper_latent_transform_kwargs = collections.ConfigDict(dict(\n    num_layers=5,\n    conv_channels=64,\n    num_units=64,\n    activation=\"relu\",\n))\n\nhgn_paper_config = copy.deepcopy(default_config_dict)\nhgn_paper_config.training_data_split = \"include_inference\"\nhgn_paper_config.latent_system_net_type = \"conv\"\nhgn_paper_config.encoder_aggregation_type = (collections.config_dict.\n                                             placeholder(str))\nhgn_paper_config.decoder_de_aggregation_type = (collections.config_dict.\n                                                placeholder(str))\nhgn_paper_config.latent_system_kwargs = hgn_paper_latent_system_kwargs\nhgn_paper_config.encoder_kwargs = hgn_paper_encoder_kwargs\nhgn_paper_config.decoder_kwargs = hgn_paper_decoder_kwargs\nhgn_paper_config.has_latent_transform = True\nhgn_paper_config.latent_transform_kwargs = hgn_paper_latent_transform_kwargs\nhgn_paper_config.num_inference_steps = 31\nhgn_paper_config.num_target_steps = 0\nhgn_paper_config.objective_type = \"GECO\"\n\n\nforward_overlap_by_one = {\n    model_prefix + \"latent_training_type\": \"forward\",\n    model_prefix + \"training_data_split\": \"overlap_by_one\",\n}\n\nforward_backward_include_inference = {\n    model_prefix + \"latent_training_type\": \"forward_backward\",\n    model_prefix + \"training_data_split\": \"include_inference\",\n}\n\nlatent_training_sweep = [\n    forward_overlap_by_one,\n    forward_backward_include_inference,\n]\n\n\ndef sym_metric_hgn_plus_plus_sweep():\n  \"\"\"HGN++ experimental sweep for the SyMetric paper.\"\"\"\n  model_config = copy.deepcopy(default_config_dict)\n  model_config.name = \"HGN\"\n  sweeps = list()\n  for elbo_beta_final in [0.001, 0.1, 1.0, 2.0]:\n    sweeps.append({\n        config_prefix + \"optimizer.kwargs.learning_rate\": 1.5e-4,\n        model_prefix + \"latent_training_type\": \"forward\",\n        model_prefix + \"training_data_split\": \"overlap_by_one\",\n        model_prefix + \"elbo_beta_final\": elbo_beta_final,\n    })\n  for elbo_beta_final in [0.001, 0.1, 1.0, 2.0]:\n    sweeps.append({\n        config_prefix + \"optimizer.kwargs.learning_rate\": 1.5e-4,\n        model_prefix + \"latent_training_type\": \"forward_backward\",\n        model_prefix + \"training_data_split\": \"include_inference\",\n        model_prefix + \"elbo_beta_final\": elbo_beta_final,\n    })\n\n  return model_config, sweeps\n\n\ndef sym_metric_hgn_sweep():\n  \"\"\"HGN experimental sweep for the SyMetric paper.\"\"\"\n  model_config = copy.deepcopy(hgn_paper_config)\n  model_config.name = \"HGN\"\n  return model_config, list(dict())\n\n\ndef benchmark_hgn_overlap_sweep():\n  \"\"\"HGN++ sweep for the benchmark paper.\"\"\"\n  model_config = copy.deepcopy(default_config_dict)\n  model_config.name = \"HGN\"\n\n  sweeps = list()\n  for elbo_beta_final in [0.001, 0.1, 1.0, 2.0]:\n    for train_dict in latent_training_sweep:\n      sweeps.append({\n          config_prefix + \"optimizer.kwargs.learning_rate\": 1.5e-4,\n          model_prefix + \"elbo_beta_final\": elbo_beta_final,\n      })\n      sweeps[-1].update(train_dict)\n\n  return model_config, sweeps\n\n\ndef benchmark_lgn_sweep():\n  \"\"\"LGN sweep for the benchmark paper.\"\"\"\n  model_config = copy.deepcopy(default_config_dict)\n  model_config.name = \"LGN\"\n\n  sweeps = list()\n  for elbo_beta_final in [0.001, 0.1, 1.0, 2.0]:\n    for train_dict in latent_training_sweep:\n      sweeps.append({\n          config_prefix + \"optimizer.kwargs.learning_rate\": 1.5e-4,\n          model_prefix + \"latent_system_kwargs.kinetic_func_form\":\n              \"matrix_dep_pure_quad\",\n          model_prefix + \"elbo_beta_final\": elbo_beta_final,\n      })\n      sweeps[-1].update(train_dict)\n\n  return model_config, sweeps\n\n\ndef benchmark_ode_sweep():\n  \"\"\"Neural ODE sweep for the benchmark paper.\"\"\"\n  model_config = copy.deepcopy(default_config_dict)\n  model_config.name = \"ODE\"\n\n  sweeps = list()\n  for elbo_beta_final in [0.001, 0.1, 1.0, 2.0]:\n    for integrator in (\"adaptive\", \"rk2\"):\n      for train_dict in latent_training_sweep:\n        sweeps.append({\n            config_prefix + \"optimizer.kwargs.learning_rate\": 1.5e-4,\n            model_prefix + \"integrator_method\": integrator,\n            model_prefix + \"elbo_beta_final\": elbo_beta_final,\n        })\n        sweeps[-1].update(train_dict)\n\n  return model_config, sweeps\n\n\ndef benchmark_rgn_sweep():\n  \"\"\"RGN sweep for the benchmark paper.\"\"\"\n  model_config = copy.deepcopy(default_config_dict)\n  model_config.name = \"RGN\"\n\n  sweeps = list()\n  for elbo_beta_final in [0.001, 0.1, 1.0, 2.0]:\n    for residual in (True, False):\n      sweeps.append({\n          config_prefix + \"optimizer.kwargs.learning_rate\": 1.5e-4,\n          model_prefix + \"latent_system_kwargs.residual\": residual,\n          model_prefix + \"elbo_beta_final\": elbo_beta_final,\n      })\n\n  return model_config, sweeps\n\n\ndef benchmark_ar_sweep():\n  \"\"\"AR sweep for the benchmark paper.\"\"\"\n  model_config = copy.deepcopy(default_config_dict)\n  model_config.name = \"AR\"\n  model_config.latent_dynamics_type = \"vanilla\"\n\n  sweeps = list()\n  for elbo_beta_final in [0.001, 0.1, 1.0, 2.0]:\n    for ar_type in (\"vanilla\", \"lstm\", \"gru\"):\n      sweeps.append({\n          config_prefix + \"optimizer.kwargs.learning_rate\": 1.5e-4,\n          model_prefix + \"latent_dynamics_type\": ar_type,\n          model_prefix + \"elbo_beta_final\": elbo_beta_final,\n      })\n\n  return model_config, sweeps\n"
  },
  {
    "path": "physics_inspired_models/jaxline_train.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"The training script for the HGN models.\"\"\"\nimport functools\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nfrom dm_hamiltonian_dynamics_suite import load_datasets\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nfrom jaxline import experiment\nfrom jaxline import platform\nimport numpy as np\nimport optax\n\nfrom physics_inspired_models import eval_metric\nfrom physics_inspired_models import utils\nfrom physics_inspired_models.models import common\n\nAutoregressiveModel = common.autoregressive.TeacherForcingAutoregressiveModel\n\n\nclass HGNExperiment(experiment.AbstractExperiment):\n  \"\"\"HGN experiment.\"\"\"\n  CHECKPOINT_ATTRS = {\n      \"_params\": \"params\",\n      \"_state\": \"state\",\n      \"_opt_state\": \"opt_state\",\n  }\n  NON_BROADCAST_CHECKPOINT_ATTRS = {\n      \"_python_step\": \"python_step\"\n  }\n\n  def __init__(self, mode, init_rng, config):\n    super().__init__(mode=mode)\n    self.mode = mode\n    self.init_rng = init_rng\n    self.config = config\n\n    # Checkpointed experiment state.\n    self._python_step = None\n    self._params = None\n    self._state = None\n    self._opt_state = None\n\n    # Input pipelines.\n    self._train_input = None\n    self._step_fn = None\n    self._burnin_fn = None\n    self._eval_input = None\n    self._eval_batch = None\n    self._eval_input_metric = None\n    self._eval_input_vpt = None\n    self._compute_gt_state_and_latents = None\n    self._get_reconstructions = None\n    self._get_samples = None\n\n    # Construct the model\n    model_kwargs = dict(**self.config.model_kwargs)\n    self.model = common.construct_model(**model_kwargs)\n    # Construct the optimizer\n    optimizer_ctor = getattr(optax, self.config.optimizer.name)\n    self.optimizer = optimizer_ctor(**self.config.optimizer.kwargs)\n    self.model_init = jax.pmap(self.model.init)\n    self.opt_init = jax.pmap(self.optimizer.init)\n    logging.info(\"Number of hosts: %d/%d\",\n                 jax.process_index(), jax.process_count())\n    logging.info(\"Number of local devices: %d/%d\", jax.local_device_count(),\n                 jax.device_count())\n\n  def _process_stats(self, stats, axis_name=None):\n    keys_to_remove = list()\n    for key in stats.keys():\n      for dropped_keys in self.config.drop_stats_containing:\n        if dropped_keys in key:\n          keys_to_remove.append(key)\n          break\n    for key in keys_to_remove:\n      stats.pop(key)\n    # Take average statistics\n    stats = jax.tree_map(utils.mean_if_not_scalar, stats)\n    stats = utils.filter_only_scalar_stats(stats)\n    if axis_name is not None:\n      stats = utils.pmean_if_pmap(stats, axis_name=\"i\")\n    return stats\n\n  #  _             _\n  # | |_ _ __ __ _(_)_ __\n  # | __| '__/ _` | | '_ \\\n  # | |_| | | (_| | | | | |\n  #  \\__|_|  \\__,_|_|_| |_|\n  #\n  def step(self, global_step, rng, **unused_args):\n    \"\"\"See base class.\"\"\"\n    if self._train_input is None:\n      self._initialize_train()\n\n    # Do a small burnin to accumulate any persistent network state\n    if self._python_step == 0 and self._state:\n      for _ in range(self.config.training.burnin_steps):\n        rng, key = utils.p_split(rng, 2)\n        batch = next(self._train_input)\n        self._state = self._burnin_fn(self._params, self._state, key, batch)\n      self._state = jax.tree_map(\n          lambda x: x / self.config.training.burnin_steps, self._state)\n\n    batch = next(self._train_input)\n    self._params, self._state, self._opt_state, stats = self._step_fn(\n        self._params, self._state, self._opt_state, rng, batch, global_step)\n    self._python_step += 1\n\n    stats = utils.get_first(stats)\n    logging.info(\"global_step: %d, %s\", self._python_step,\n                 jax.tree_map(float, stats))\n    return stats\n\n  def _initialize_train(self):\n    self._train_input = utils.py_prefetch(\n        load_datasets.dataset_as_iter(self._build_train_input))\n    self._burnin_fn = jax.pmap(\n        self._jax_burnin_fn, axis_name=\"i\", donate_argnums=list(range(1, 4)))\n    self._step_fn = jax.pmap(\n        self._jax_train_step_fn, axis_name=\"i\", donate_argnums=list(range(5)))\n\n    if self._params is not None:\n      logging.info(\"Not running initialization - loaded from checkpoint.\")\n      assert self._opt_state is not None\n      return\n\n    logging.info(\"Initializing parameters - NOT loading from checkpoint.\")\n\n    # Use the same rng on all devices, so that the initialization is identical\n    init_rng = utils.bcast_local_devices(self.init_rng)\n\n    # Initialize the parameters and the optimizer\n    batch = next(self._train_input)\n    self._params, self._state = self.model_init(init_rng, batch)\n    self._python_step = 0\n    self._opt_state = self.opt_init(self._params)\n\n  def _build_train_input(self):\n    batch_size = self.config.training.batch_size\n    return load_datasets.load_dataset(\n        path=self.config.dataset_folder,\n        tfrecord_prefix=\"train\",\n        sub_sample_length=self.model.train_sequence_length,\n        per_device_batch_size=batch_size,\n        num_epochs=self.config.training.num_epochs,\n        drop_remainder=True,\n        multi_device=True,\n        shuffle=True,\n        shuffle_buffer=100 * batch_size,\n        cache=False,\n        keys_to_preserve=[\"image\"],\n    )\n\n  def _jax_train_step_fn(self, params, state, opt_state, rng_key, batch, step):\n    # The loss and the stats are averaged over the batch\n    def loss_func(*args):\n      outs = self.model.training_objectives(*args, is_training=True)\n      # Average everything over the batch\n      return jax.tree_map(utils.mean_if_not_scalar, outs)\n\n    # Compute gradients\n    grad_fn = jax.grad(loss_func, has_aux=True)\n    grads, (state, stats, _) = grad_fn(params, state, rng_key, batch, step)\n    # Average everything over the devices (e.g. average and sync)\n    grads, state = utils.pmean_if_pmap((grads, state), axis_name=\"i\")\n    # Apply updates\n    updates, opt_state = self.optimizer.update(grads, opt_state)\n    params = optax.apply_updates(params, updates)\n    return params, state, opt_state, self._process_stats(stats, axis_name=\"i\")\n\n  def _jax_burnin_fn(self, params, state, rng_key, batch):\n    _, (new_state, _, _) = self.model.training_objectives(\n        params, state, rng_key, batch, jnp.zeros([]), is_training=True)\n    new_state = jax.tree_map(utils.mean_if_not_scalar, new_state)\n    new_state = utils.pmean_if_pmap(new_state, axis_name=\"i\")\n    new_state = hk.data_structures.to_mutable_dict(new_state)\n    new_state = hk.data_structures.to_immutable_dict(new_state)\n    return jax.tree_map(jnp.add, new_state, state)\n\n  #                  _\n  #   _____   ____ _| |\n  #  / _ \\ \\ / / _` | |\n  # |  __/\\ V / (_| | |\n  #  \\___| \\_/ \\__,_|_|\n  #\n  def evaluate(self, global_step, rng, writer):\n    \"\"\"See base class.\"\"\"\n    logging.info(\"Starting evaluation.\")\n    if self.mode == \"eval\":\n      if self._eval_input is None:\n        self._initialize_eval()\n        self._initialize_eval_vpt()\n      key1, _ = utils.p_split(rng, 2)\n      stats = utils.to_numpy(self._eval_epoch(global_step, key1))\n      stats.update(utils.to_numpy(self._eval_epoch_vpt(global_step, rng)))\n    elif self.mode == \"eval_metric\":\n      if self._eval_input_metric is None:\n        self._initialize_eval_metric()\n      stats = utils.to_numpy(self._eval_epoch_metric(global_step, rng))\n    else:\n      raise NotImplementedError()\n    logging.info(\"Finished evaluation.\")\n    return stats\n\n  def _eval_epoch(self, step, rng):\n    \"\"\"Evaluates an epoch.\"\"\"\n    accumulator = utils.MultiBatchAccumulator()\n    for batch in self._eval_input():\n      rng, key = utils.p_split(rng, 2)\n      stats, num_samples = utils.get_first(\n          self._eval_batch(self._params, self._state, key, batch, step)\n      )\n      accumulator.add(stats, num_samples)\n    return accumulator.value()\n\n  def _eval_epoch_metric(self, step, rng):\n    \"\"\"Evaluates an epoch.\"\"\"\n    # To prevent from calculating SyMetric early on in training where a large\n    # polynomial expansion is likely to be required and the score is likely\n    # to be bad anyway, we only compute using a single batch to save compute\n    if step[0] > self.config.evaluation_metric.calculate_fully_after_steps:\n      batch_n = self.config.evaluation_metric.batch_n\n    else:\n      batch_n = 1\n    logging.info(\"Step: %d, batch_n: %d\", step[0], batch_n)\n\n    accumulator = utils.MultiBatchAccumulator()\n    for _ in range(self.config.evaluation_metric.batch_n):\n      batch = next(self._eval_input_metric)\n      rng, key = utils.p_split(rng, 2)\n      stats = self._eval_batch_metric(\n          self._params, key, batch,\n          eval_seq_len=self.config.evaluation_metric.num_eval_metric_steps,\n          )\n      accumulator.add(stats, 1)\n    stats = utils.flatten_dict(accumulator.value())\n    max_keys = (\"sym\", \"SyMetric\")\n    for k, v in utils.flatten_dict(accumulator.max()).items():\n      if any(m in k for m in max_keys):\n        stats[k + \"_max\"] = v\n\n    min_keys = (\"sym\", \"SyMetric\")\n    for k, v in utils.flatten_dict(accumulator.min()).items():\n      if any(m in k for m in min_keys):\n        stats[k + \"_min\"] = v\n\n    sum_keys = (\"sym\", \"SyMetric\")\n    for k, v in utils.flatten_dict(accumulator.sum()).items():\n      if any(m in k for m in sum_keys):\n        stats[k + \"_sum\"] = v\n    return stats\n\n  def _eval_epoch_vpt(self, step, rng):\n    \"\"\"Evaluates an epoch.\"\"\"\n    accumulator = utils.MultiBatchAccumulator()\n    for _ in range(self.config.evaluation_vpt.batch_n):\n      batch = next(self._eval_input_vpt)\n      rng, key = utils.p_split(rng, 2)\n      stats = self._eval_batch_vpt(self._params, self._state, key, batch)\n      accumulator.add(stats, 1)\n    stats = utils.flatten_dict(accumulator.value())\n    return stats\n\n  def _reconstruct_and_align(self, rng_key, full_trajectory, prefix, suffix):\n    if hasattr(self.model, \"training_data_split\"):\n      if self.model.training_data_split == \"overlap_by_one\":\n        reconstruction_skip = self.model.num_inference_steps - 1\n      elif self.model.training_data_split == \"no_overlap\":\n        reconstruction_skip = self.model.num_inference_steps\n      elif self.model.training_data_split == \"include_inference\":\n        reconstruction_skip = 0\n      else:\n        raise NotImplementedError()\n    else:\n      reconstruction_skip = 1\n\n    full_forward_targets = jax.tree_map(\n        lambda x: x[:, :, reconstruction_skip:], full_trajectory)\n    full_backward_targets = jax.tree_map(\n        lambda x: x[:, :, :x.shape[2] - reconstruction_skip], full_trajectory)\n    train_targets_length = (self.model.train_sequence_length -\n                            reconstruction_skip)\n    full_targets_length = full_forward_targets.shape[2]\n\n    # Fully unroll the model and reconstruct the whole sequence, take the mean\n    full_prediction = self._get_reconstructions(self._params, full_trajectory,\n                                                rng_key, prefix == \"forward\",\n                                                True).mean()\n    full_targets = (full_forward_targets if prefix == \"forward\" else\n                    full_backward_targets)\n\n    # In cases where the model can run backwards it is possible to reconstruct\n    # parts which were indented to be skipped, so here we take care of that.\n    if full_prediction.mean().shape[2] > full_targets_length:\n      if prefix == \"forward\":\n        full_prediction = jax.tree_map(\n            lambda x: x[:, :, -full_targets_length:], full_prediction)\n      else:\n        full_prediction = jax.tree_map(\n            lambda x: x[:, :, :full_targets_length], full_prediction)\n\n    # Based on the prefix and suffix fetch correct predictions and targets\n    if prefix == \"forward\" and suffix == \"train\":\n      predict, targets = jax.tree_map(\n          lambda x: x[:, :, :train_targets_length],\n          (full_prediction, full_targets))\n    elif prefix == \"forward\" and suffix == \"extrapolation\":\n      predict, targets = jax.tree_map(\n          lambda x: x[:, :, train_targets_length:],\n          (full_prediction, full_targets))\n    elif prefix == \"backward\" and suffix == \"train\":\n      predict, targets = jax.tree_map(\n          lambda x: x[:, :, -train_targets_length:],\n          (full_prediction, full_targets))\n    elif prefix == \"backward\" and suffix == \"extrapolation\":\n      predict, targets = jax.tree_map(\n          lambda x: x[:, :, :-train_targets_length],\n          (full_prediction, full_targets))\n    else:\n      predict, targets = full_prediction, full_targets\n\n    return predict, targets\n\n  def _initialize_eval(self):\n    length = (self.model.train_sequence_length +\n              self.config.num_extrapolation_steps)\n    batch_size = self.config.evaluation.batch_size\n    self._eval_input = load_datasets.dataset_as_iter(\n        load_datasets.load_dataset,\n        path=self.config.dataset_folder,\n        tfrecord_prefix=\"test\",\n        sub_sample_length=length,\n        per_device_batch_size=batch_size,\n        num_epochs=1,\n        drop_remainder=False,\n        shuffle=False,\n        cache=False,\n        keys_to_preserve=[\"image\"]\n    )\n    self._eval_batch = jax.pmap(\n        self._jax_eval_step_fn, axis_name=\"i\")\n    self._get_reconstructions = jax.pmap(\n        self.model.reconstruct, axis_name=\"i\",\n        static_broadcasted_argnums=(3, 4))\n    if isinstance(self.model,\n                  common.deterministic_vae.DeterministicLatentsGenerativeModel):\n      self._get_samples = jax.pmap(\n          self.model.sample_trajectories_from_prior,\n          static_broadcasted_argnums=(1, 3, 4))\n\n  def _initialize_eval_metric(self):\n    self._eval_input_metric = utils.py_prefetch(\n        load_datasets.dataset_as_iter(\n            load_datasets.load_dataset,\n            path=self.config.dataset_folder,\n            tfrecord_prefix=\"test\",\n            sub_sample_length=None,\n            per_device_batch_size=self.config.evaluation_metric.batch_size,\n            num_epochs=None,\n            drop_remainder=False,\n            cache=False,\n            shuffle=False,\n            keys_to_preserve=[\"image\", \"x\"]\n        )\n    )\n    def compute_gt_state_and_latents(*args):\n      # Note that the `dt` has to be passed as a kwargs argument\n      if len(args) == 4:\n        return self.model.gt_state_and_latents(*args[:4])\n      elif len(args) == 5:\n        return self.model.gt_state_and_latents(*args[:4], dt=args[4])\n      else:\n        raise NotImplementedError()\n    self._compute_gt_state_and_latents = jax.pmap(\n        compute_gt_state_and_latents, static_broadcasted_argnums=3)\n\n  def _initialize_eval_vpt(self):\n    dataset_name = self.config.dataset_folder.split(\"/\")[-1]\n    dataset_folder = self.config.dataset_folder\n    if dataset_name in (\"hnn_mass_spring_dt_0_05\",\n                        \"mass_spring_colors_v1_dt_0_05\",\n                        \"hnn_pendulum_dt_0_05\",\n                        \"pendulum_colors_v1_dt_0_05\",\n                        \"matrix_rps_dt_0_1\",\n                        \"matrix_mp_dt_0_1\"):\n      dataset_folder += \"_long_trajectory\"\n\n    self._eval_input_vpt = utils.py_prefetch(\n        load_datasets.dataset_as_iter(\n            load_datasets.load_dataset,\n            path=dataset_folder,\n            tfrecord_prefix=\"test\",\n            sub_sample_length=None,\n            per_device_batch_size=self.config.evaluation_vpt.batch_size,\n            num_epochs=None,\n            drop_remainder=False,\n            cache=False,\n            shuffle=False,\n            keys_to_preserve=[\"image\", \"x\"]\n        )\n    )\n\n    self._get_reconstructions = jax.pmap(\n        self.model.reconstruct, axis_name=\"i\",\n        static_broadcasted_argnums=(3, 4))\n\n  def _jax_eval_step_fn(self, params, state, rng_key, batch, step):\n    # We care only about the statistics\n    _, (_, stats, _) = self.model.training_objectives(params, state, rng_key,\n                                                      batch, step,\n                                                      is_training=False)\n    # Compute the full batch size\n    batch_size = jax.tree_flatten(batch)[0][0].shape[0]\n    batch_size = utils.psum_if_pmap(batch_size, axis_name=\"i\")\n\n    return self._process_stats(stats, axis_name=\"i\"), batch_size\n\n  def _eval_batch_vpt(self, params, state, rng_key, batch):\n    full_trajectory = utils.extract_image(batch)\n    prefixes = (\"forward\",\n                \"backward\") if self.model.can_run_backwards else (\"forward\",)\n    stats = dict()\n    vpt_abs_scores = []\n    vpt_rel_scores = []\n    seq_length = None\n    for prefix in prefixes:\n      reconstruction, gt_images = self._reconstruct_and_align(\n          rng_key, full_trajectory, prefix, \"extrapolation\")\n      seq_length = gt_images.shape[2]\n\n      mse_norm = np.mean(\n          (gt_images - reconstruction)**2, axis=(3, 4, 5)) / np.mean(\n              gt_images**2, axis=(3, 4, 5))\n\n      vpt_scores = []\n      for i in range(mse_norm.shape[1]):\n        vpt_ind = np.argwhere(\n            mse_norm[:, i:i + 1, :] > self.config.evaluation_vpt.vpt_threshold)\n\n        if vpt_ind.shape[0] > 0:\n          vpt_ind = vpt_ind[0][2]\n        else:\n          vpt_ind = mse_norm.shape[-1]\n\n        vpt_scores.append(vpt_ind)\n\n      vpt_abs_scores.append(np.median(vpt_scores))\n      vpt_rel_scores.append(np.median(vpt_scores) / seq_length)\n      scores = {\"vpt_abs\": vpt_abs_scores[-1], \"vpt_rel\": vpt_rel_scores[-1]}\n      scores = utils.to_numpy(scores)\n      scores = utils.filter_only_scalar_stats(scores)\n      stats[prefix] = scores\n\n    stats[\"vpt_abs\"] = utils.to_numpy(np.mean(vpt_abs_scores))\n    stats[\"vpt_rel\"] = utils.to_numpy(np.mean(vpt_rel_scores))\n    logging.info(\"vpt_abs: %s, seq_length: %d}\",\n                 str(vpt_abs_scores), seq_length)\n    return stats\n\n  def _eval_batch_metric(self, params, rng, batch, eval_seq_len=200):\n    # Initialise alpha values for Lasso regression\n    alpha_sweep = np.logspace(self.config.evaluation_metric.alpha_min_logspace,\n                              self.config.evaluation_metric.alpha_max_logspace,\n                              self.config.evaluation_metric.alpha_step_n)\n    trajectory_n = self.config.evaluation_metric.batch_size\n    subsection = f\"{trajectory_n}tr\"\n    stats = dict()\n\n    # Get data\n    (gt_trajectory,\n     model_trajectory,\n     informative_dim_n) = self._get_gt_and_model_phase_space_for_eval(\n         params, rng, batch, eval_seq_len)\n\n    # Calculate SyMetric scores\n    if informative_dim_n > 1:\n      scores, *_ = eval_metric.calculate_symetric_score(\n          gt_trajectory,\n          model_trajectory,\n          self.config.evaluation_metric.max_poly_order,\n          self.config.evaluation_metric.max_jacobian_score,\n          self.config.evaluation_metric.rsq_threshold,\n          self.config.evaluation_metric.sym_threshold,\n          self.config.evaluation_metric.evaluation_point_n,\n          trajectory_n=trajectory_n,\n          weight_tolerance=self.config.evaluation_metric.weight_tolerance,\n          alpha_sweep=alpha_sweep,\n          max_iter=self.config.evaluation_metric.max_iter,\n          cv=self.config.evaluation_metric.cv)\n\n      scores[\"unmasked_latents\"] = informative_dim_n\n      scores = utils.to_numpy(scores)\n      scores = utils.filter_only_scalar_stats(scores)\n      stats[subsection] = scores\n    else:\n      scores = {\n          \"poly_exp_order\":\n              self.config.evaluation_metric.max_poly_order,\n          \"rsq\":\n              0,\n          \"sym\":\n              self.config.evaluation_metric.max_jacobian_score,\n          \"SyMetric\": 0.0,\n          \"unmasked_latents\":\n              informative_dim_n\n      }\n      scores = utils.to_numpy(scores)\n      scores = utils.filter_only_scalar_stats(scores)\n      stats[subsection] = scores\n\n    return stats\n\n  def _get_gt_and_model_phase_space_for_eval(self, params, rng, batch,\n                                             eval_seq_len):\n    # Get data\n    gt_data, model_data, z0 = utils.stack_device_dim_into_batch(\n        self._compute_gt_state_and_latents(params, rng, batch, eval_seq_len)\n    )\n\n    if isinstance(self.model, AutoregressiveModel):\n      # These models return the `z` for the whole sequence\n      z0 = z0[:, 0]\n\n    # If latent space is image like, reshape it down to vector\n    if self.model.latent_system_net_type == \"conv\":\n      z0 = jax.tree_map(utils.reshape_latents_conv_to_flat, z0)\n      model_data = jax.tree_map(\n          lambda x: utils.reshape_latents_conv_to_flat(x, axis_n_to_keep=2),\n          model_data)\n\n    # Create mask to get rid of uninformative latents\n    latent_mask = eval_metric.create_latent_mask(z0)\n    informative_dim_n = np.sum(latent_mask)\n\n    model_data = model_data[:, :, latent_mask]\n    logging.info(\"Masking out model data, leaving dim_n=%d dimensions.\",\n                 model_data.shape[-1])\n\n    gt_trajectory = np.reshape(\n        gt_data,\n        [np.product(gt_data.shape[:-1]), gt_data.shape[-1]]\n        )\n\n    model_trajectory = np.reshape(model_data, [\n        np.product(model_data.shape[:-1]), model_data.shape[-1]\n    ])\n\n    # Standardize data\n    gt_trajectory = eval_metric.standardize_data(gt_trajectory)\n    model_trajectory = eval_metric.standardize_data(model_trajectory)\n\n    return gt_trajectory, model_trajectory, informative_dim_n\n\nif __name__ == \"__main__\":\n  flags.mark_flag_as_required(\"config\")\n  logging.set_stderrthreshold(logging.INFO)\n  app.run(functools.partial(platform.main, HGNExperiment))\n"
  },
  {
    "path": "physics_inspired_models/launch_all.sh",
    "content": "#!/bin/bash\n# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Script to execute a single configuration on all datasets.\nif [[ \"$#\" -eq 2 ]]; then\n  readonly CONFIG_NAME=\"$1\"\n  readonly NUM_SWEEPS=\"$2\"\nelse\n   echo \"You must provide exactly two arguments - the configuration name and \" \\\n   \"how many sweeps it contains. For example:\"\n   echo \"./launch_all.sh sym_metric_hgn_plus_plus_sweep 1\"\n   exit 2\nfi\n\nDATASETS=(\n  \"toy_physics/mass_spring\"\n  \"toy_physics/mass_spring_colors\"\n  \"toy_physics/mass_spring_colors_friction\"\n  \"toy_physics/pendulum\"\n  \"toy_physics/pendulum_colors\"\n  \"toy_physics/pendulum_colors_friction\"\n  \"toy_physics/two_body\"\n  \"toy_physics/two_body_colors\"\n  \"toy_physics/double_pendulum\"\n  \"toy_physics/double_pendulum_colors\"\n  \"toy_physics/double_pendulum_colors_friction\"\n  \"molecular_dynamics/lj_4\"\n  \"molecular_dynamics/lj_16\"\n  \"multi_agent/rock_paper_scissors\"\n  \"multi_agent/matching_pennies\"\n  \"mujoco_room/circle\"\n  \"mujoco_room/spiral\"\n)\n\nreadonly DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" >/dev/null 2>&1 && pwd )\"\n\nfor dataset in \"${DATASETS[@]}\"; do\n  \"${DIR}/launch_local.sh\" \"${CONFIG_NAME}\" \"${NUM_SWEEPS}\" \"${dataset}\"\ndone\n"
  },
  {
    "path": "physics_inspired_models/launch_local.sh",
    "content": "#!/bin/bash\n# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# A script to execute a single configuration name on a given dataset.\nif [[ \"$#\" -eq 3 ]]; then\n  readonly CONFIG_NAME=\"$1\"\n  readonly NUM_SWEEPS=\"$2\"\n  readonly DATASET=\"$3\"\nelse\n   echo \"You must provide exactly three arguments - the configuration name, \" \\\n   \"the number of sweeps it contains and the dataset name. For example:\"\n   echo \"./launch_local.sh sym_metric_hgn_plus_plus_sweep 1 \" \\\n   \"toy_physics/mass_spring\"\n   exit 2\nfi\necho \"Running with config ${CONFIG_NAME} on ${DATASET}.\"\n\nreadonly EXPERIMENT_DIR=\"$( cd -- \"$( dirname -- \"${BASH_SOURCE[0]}\" )\" &> /dev/null && pwd )\"\nreadonly TRAIN_FILE=\"${EXPERIMENT_DIR}/jaxline_train.py\"\nreadonly CONFIG_FILE=\"${EXPERIMENT_DIR}/jaxline_configs.py\"\n\nfor sweep_id in $(seq 0 $((NUM_SWEEPS - 1))); do\n  python3 \"${TRAIN_FILE}\" \\\n    --config=\"${CONFIG_FILE}:${CONFIG_NAME},${sweep_id},${DATASET}\" \\\n    --jaxline_mode=\"train\" \\\n    --logtostderr\ndone\n"
  },
  {
    "path": "physics_inspired_models/metrics.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Module containing code for computing various metrics for training and evaluation.\"\"\"\nfrom typing import Callable, Dict, Optional\n\nimport distrax\nimport haiku as hk\nimport jax\nimport jax.nn as nn\nimport jax.numpy as jnp\nimport numpy as np\n\nimport physics_inspired_models.utils as utils\n\n\n_ReconstructFunc = Callable[[utils.Params, jnp.ndarray, jnp.ndarray, bool],\n                            distrax.Distribution]\n\n\ndef calculate_small_latents(dist, threshold=0.5):\n  \"\"\"Calculates the number of active latents by thresholding the variance of their distribution.\"\"\"\n  if not isinstance(dist, distrax.Normal):\n    raise NotImplementedError()\n  latent_means = dist.mean()\n  latent_stddevs = dist.variance()\n  small_latents = jnp.sum(\n      (latent_stddevs < threshold) & (jnp.abs(latent_means) > 0.1), axis=1)\n  return jnp.mean(small_latents)\n\n\ndef compute_scale(\n    targets: jnp.ndarray,\n    rescale_by: str\n) -> jnp.ndarray:\n  \"\"\"Compute a scaling factor based on targets shape and the rescale_by argument.\"\"\"\n  if rescale_by == \"pixels_and_time\":\n    return jnp.asarray(np.prod(targets.shape[-4:]))\n  elif rescale_by is not None:\n    raise ValueError(f\"Unrecognized rescale_by={rescale_by}.\")\n  else:\n    return jnp.ones([])\n\n\ndef compute_data_domain_stats(\n    p_x: distrax.Distribution,\n    targets: jnp.ndarray\n) -> Dict[str, jnp.ndarray]:\n  \"\"\"Compute several statistics in the data domain, such as L2 and negative log likelihood.\"\"\"\n  axis = tuple(range(2, targets.ndim))\n  l2_over_time = jnp.sum((p_x.mean() - targets) ** 2, axis=axis)\n  l2 = jnp.sum(l2_over_time, axis=1)\n\n  # Calculate relative L2 normalised by image \"length\"\n  norm_factor = jnp.sum(targets**2, axis=(2, 3, 4))\n  l2_over_time_norm = l2_over_time / norm_factor\n  l2_norm = jnp.sum(l2_over_time_norm, axis=1)\n\n  # Compute negative log-likelihood under p(x)\n  neg_log_p_x_over_time = - np.sum(p_x.log_prob(targets), axis=axis)\n  neg_log_p_x = jnp.sum(neg_log_p_x_over_time, axis=1)\n\n  return dict(\n      neg_log_p_x_over_time=neg_log_p_x_over_time,\n      neg_log_p_x=neg_log_p_x,\n      l2_over_time=l2_over_time,\n      l2=l2,\n      l2_over_time_norm=l2_over_time_norm,\n      l2_norm=l2_norm,\n  )\n\n\ndef compute_vae_stats(\n    neg_log_p_x: jnp.ndarray,\n    rng: jnp.ndarray,\n    q_z: distrax.Distribution,\n    prior: distrax.Distribution\n) -> Dict[str, jnp.ndarray]:\n  \"\"\"Compute the KL(q(z|x)||p(z)) and the negative ELBO, which are used for VAE models.\"\"\"\n  # Compute the KL\n  kl = distrax.estimate_kl_best_effort(q_z, prior, rng_key=rng, num_samples=1)\n  kl = np.sum(kl, axis=list(range(1, kl.ndim)))\n  # Sanity check\n  assert kl.shape == neg_log_p_x.shape\n  return dict(\n      kl=kl,\n      neg_elbo=neg_log_p_x + kl,\n  )\n\n\ndef training_statistics(\n    p_x: distrax.Distribution,\n    targets: jnp.ndarray,\n    rescale_by: Optional[str],\n    rng: Optional[jnp.ndarray] = None,\n    q_z: Optional[distrax.Distribution] = None,\n    prior: Optional[distrax.Distribution] = None,\n    p_x_learned_sigma: bool = False\n) -> Dict[str, jnp.ndarray]:\n  \"\"\"Computes various statistics we track during training.\"\"\"\n  stats = compute_data_domain_stats(p_x, targets)\n\n  if rng is not None and q_z is not None and prior is not None:\n    stats.update(compute_vae_stats(stats[\"neg_log_p_x\"], rng, q_z, prior))\n  else:\n    assert rng is None and q_z is None and prior is None\n\n  # Rescale these stats accordingly\n  scale = compute_scale(targets, rescale_by)\n  # Note that \"_over_time\" stats are getting normalised by time here\n  stats = jax.tree_map(lambda x: x / scale, stats)\n  if p_x_learned_sigma:\n    stats[\"p_x_sigma\"] = p_x.variance().reshape([-1])[0]  # pytype: disable=attribute-error  # numpy-scalars\n  if q_z is not None:\n    stats[\"small_latents\"] = calculate_small_latents(q_z)\n  return stats\n\n\ndef evaluation_only_statistics(\n    reconstruct_func: _ReconstructFunc,\n    params: hk.Params,\n    inputs: jnp.ndarray,\n    rng: jnp.ndarray,\n    rescale_by: str,\n    can_run_backwards: bool,\n    train_sequence_length: int,\n    reconstruction_skip: int,\n    p_x_learned_sigma: bool = False,\n) -> Dict[str, jnp.ndarray]:\n  \"\"\"Computes various statistics we track only during evaluation.\"\"\"\n  full_trajectory = utils.extract_image(inputs)\n  prefixes = (\"forward\", \"backward\") if can_run_backwards else (\"forward\",)\n\n  full_forward_targets = jax.tree_map(\n      lambda x: x[:, reconstruction_skip:], full_trajectory)\n  full_backward_targets = jax.tree_map(\n      lambda x: x[:, :x.shape[1]-reconstruction_skip], full_trajectory)\n  train_targets_length = train_sequence_length - reconstruction_skip\n  full_targets_length = full_forward_targets.shape[1]\n\n  stats = dict()\n  keys = ()\n\n  for prefix in prefixes:\n    # Fully unroll the model and reconstruct the whole sequence\n    full_prediction = reconstruct_func(params, full_trajectory, rng,\n                                       prefix == \"forward\")\n    assert isinstance(full_prediction, distrax.Normal)\n    full_targets = (full_forward_targets if prefix == \"forward\" else\n                    full_backward_targets)\n    # In cases where the model can run backwards it is possible to reconstruct\n    # parts which were indented to be skipped, so here we take care of that.\n    if full_prediction.mean().shape[1] > full_targets_length:\n      if prefix == \"forward\":\n        full_prediction = jax.tree_map(lambda x: x[:, -full_targets_length:],\n                                       full_prediction)\n      else:\n        full_prediction = jax.tree_map(lambda x: x[:, :full_targets_length],\n                                       full_prediction)\n\n    # Based on the prefix and suffix fetch correct predictions and targets\n    for suffix in (\"train\", \"extrapolation\", \"full\"):\n      if prefix == \"forward\" and suffix == \"train\":\n        predict, targets = jax.tree_map(lambda x: x[:, :train_targets_length],\n                                        (full_prediction, full_targets))\n      elif prefix == \"forward\" and suffix == \"extrapolation\":\n        predict, targets = jax.tree_map(lambda x: x[:, train_targets_length:],\n                                        (full_prediction, full_targets))\n      elif prefix == \"backward\" and suffix == \"train\":\n        predict, targets = jax.tree_map(lambda x: x[:, -train_targets_length:],\n                                        (full_prediction, full_targets))\n      elif prefix == \"backward\" and suffix == \"extrapolation\":\n        predict, targets = jax.tree_map(lambda x: x[:, :-train_targets_length],\n                                        (full_prediction, full_targets))\n      else:\n        predict, targets = full_prediction, full_targets\n\n      # Compute train statistics\n      train_stats = training_statistics(predict, targets, rescale_by,\n                                        p_x_learned_sigma=p_x_learned_sigma)\n      for key, value in train_stats.items():\n        stats[prefix + \"_\" + suffix + \"_\" + key] = value\n      # Copy all stats keys\n      keys = tuple(train_stats.keys())\n\n  # Make a combined metric summing forward and backward\n  if can_run_backwards:\n    # Also compute\n    for suffix in (\"train\", \"extrapolation\", \"full\"):\n      for key in keys:\n        forward = stats[\"forward_\" + suffix + \"_\" + key]\n        backward = stats[\"backward_\" + suffix + \"_\" + key]\n        combined = (forward + backward) / 2\n        stats[\"combined_\" + suffix + \"_\" + key] = combined\n\n  return stats\n\n\ndef geco_objective(\n    l2_loss,\n    kl,\n    alpha,\n    kappa,\n    constraint_ema,\n    lambda_var,\n    is_training\n) -> Dict[str, jnp.ndarray]:\n  \"\"\"Computes the objective for GECO and some of it statistics used ofr updates.\"\"\"\n  # C_t\n  constraint_t = l2_loss - kappa\n  if is_training:\n    # We update C_ma only during training\n    constraint_ema = alpha * constraint_ema + (1 - alpha) * constraint_t\n  lagrange = nn.softplus(lambda_var)\n  lagrange = jnp.broadcast_to(lagrange, constraint_ema.shape)\n  # Add this special op for getting all gradients correct\n  loss = utils.geco_lagrange_product(lagrange, constraint_ema, constraint_t)\n  return dict(\n      loss=loss + kl,\n      geco_multiplier=lagrange,\n      geco_constraint=constraint_t,\n      geco_constraint_ema=constraint_ema\n  )\n\n\ndef elbo_objective(neg_log_p_x, kl, final_beta, beta_delay, step):\n  \"\"\"Computes objective for optimizing the Evidence Lower Bound (ELBO).\"\"\"\n  if beta_delay == 0:\n    beta = final_beta\n  else:\n    delayed_beta = jnp.minimum(float(step) / float(beta_delay), 1.0)\n    beta = delayed_beta * final_beta\n  return dict(\n      loss=neg_log_p_x + beta * kl,\n      elbo_beta=beta\n  )\n"
  },
  {
    "path": "physics_inspired_models/models/__init__.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n"
  },
  {
    "path": "physics_inspired_models/models/autoregressive.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Module for all autoregressive models.\"\"\"\nimport functools\nfrom typing import Any, Dict, Mapping, Optional, Sequence, Tuple, Union\n\nimport distrax\nimport haiku as hk\nfrom jax import lax\nimport jax.numpy as jnp\nimport jax.random as jnr\n\nimport physics_inspired_models.metrics as metrics\nimport physics_inspired_models.models.base as base\nimport physics_inspired_models.models.networks as nets\nimport physics_inspired_models.utils as utils\n\n\nclass TeacherForcingAutoregressiveModel(base.SequenceModel):\n  \"\"\"A standard autoregressive model trained via teacher forcing.\"\"\"\n\n  def __init__(\n      self,\n      latent_system_dim: int,\n      latent_system_net_type: str,\n      latent_system_kwargs: Dict[str, Any],\n      latent_dynamics_type: str,\n      encoder_aggregation_type: Optional[str],\n      decoder_de_aggregation_type: Optional[str],\n      encoder_kwargs: Dict[str, Any],\n      decoder_kwargs: Dict[str, Any],\n      num_inference_steps: int,\n      num_target_steps: int,\n      name: Optional[str] = None,\n      **kwargs\n  ):\n\n    # Remove any parameters from vae models\n    encoder_kwargs = dict(**encoder_kwargs)\n    encoder_kwargs[\"distribution_name\"] = None\n\n    if kwargs.get(\"has_latent_transform\", False):\n      raise ValueError(\"We do not support AR models with latent transform.\")\n\n    super().__init__(\n        can_run_backwards=False,\n        latent_system_dim=latent_system_dim,\n        latent_system_net_type=latent_system_net_type,\n        latent_system_kwargs=latent_system_kwargs,\n        encoder_aggregation_type=encoder_aggregation_type,\n        decoder_de_aggregation_type=decoder_de_aggregation_type,\n        encoder_kwargs=encoder_kwargs,\n        decoder_kwargs=decoder_kwargs,\n        num_inference_steps=num_inference_steps,\n        num_target_steps=num_target_steps,\n        name=name,\n        **kwargs\n    )\n    self.latent_dynamics_type = latent_dynamics_type\n\n    # Arguments checks\n    if self.latent_system_net_type != \"mlp\":\n      raise ValueError(\"Currently we do not support non-mlp AR models.\")\n\n    def recurrence_function(sequence, initial_state=None):\n      core = nets.make_flexible_recurrent_net(\n          core_type=latent_dynamics_type,\n          net_type=latent_system_net_type,\n          output_dims=self.latent_system_dim,\n          **self.latent_system_kwargs[\"net_kwargs\"])\n      initial_state = initial_state or core.initial_state(sequence.shape[1])\n      core(sequence[0], initial_state)\n      return hk.dynamic_unroll(core, sequence, initial_state)\n\n    self.recurrence = hk.transform(recurrence_function)\n\n  def process_inputs_for_encoder(self, x: jnp.ndarray) -> jnp.ndarray:\n    return x\n\n  def process_latents_for_dynamics(self, z: jnp.ndarray) -> jnp.ndarray:\n    return z\n\n  def process_latents_for_decoder(self, z: jnp.ndarray) -> jnp.ndarray:\n    return z\n\n  @property\n  def inferred_index(self) -> int:\n    return self.num_inference_steps - 1\n\n  @property\n  def train_sequence_length(self) -> int:\n    return self.num_target_steps\n\n  def train_data_split(\n      self,\n      images: jnp.ndarray\n  ) -> Tuple[jnp.ndarray, jnp.ndarray, Mapping[str, Any]]:\n    images = images[:, :self.train_sequence_length]\n    inference_data = images[:, :-1]\n    target_data = images[:, 1:]\n    return inference_data, target_data, dict(\n        num_steps_forward=1,\n        num_steps_backward=0,\n        include_z0=False)\n\n  def unroll_without_inputs(\n      self,\n      params: utils.Params,\n      rng: jnp.ndarray,\n      x_init: jnp.ndarray,\n      h_init: jnp.ndarray,\n      num_steps: int,\n      is_training: bool\n  ) -> Tuple[Tuple[distrax.Distribution, jnp.ndarray], Any]:\n    if num_steps < 1:\n      raise ValueError(\"`num_steps` must be at least 1.\")\n\n    def step_fn(carry, key):\n      x_last, h_last = carry\n      enc_key, dec_key = jnr.split(key)\n      z_in_next = self.encoder.apply(params, enc_key, x_last,\n                                     is_training=is_training)\n      z_next, h_next = self.recurrence.apply(params, None, z_in_next[None],\n                                             h_last)\n      p_x_next = self.decode_latents(params, dec_key, z_next[0],\n                                     is_training=is_training)\n      return (p_x_next.mean(), h_next), (p_x_next, z_next[0])\n\n    return lax.scan(\n        step_fn,\n        init=(x_init, h_init),\n        xs=jnr.split(rng, num_steps)\n    )\n\n  def unroll_latent_dynamics(\n      self,\n      z: jnp.ndarray,\n      params: utils.Params,\n      key: jnp.ndarray,\n      num_steps_forward: int,\n      num_steps_backward: int,\n      include_z0: bool,\n      is_training: bool,\n      **kwargs: Any\n  ) -> Tuple[jnp.ndarray, Mapping[str, jnp.ndarray]]:\n    init_key, unroll_key, dec_key = jnr.split(key, 3)\n\n    if num_steps_backward != 0:\n      raise ValueError(\"This model can not run backwards.\")\n\n    # Change 'z' time dimension to be first\n    z = jnp.swapaxes(z, 0, 1)\n\n    # Run recurrent model on inputs\n    z_0, h_0 = self.recurrence.apply(params, init_key, z)\n\n    if num_steps_forward == 1:\n      z_t = z_0\n    elif num_steps_forward > 1:\n      p_x_0 = self.decode_latents(params, dec_key, z_0[-1], is_training=False)\n      _, (_, z_t) = self.unroll_without_inputs(\n          params=params,\n          rng=unroll_key,\n          x_init=p_x_0.mean(),\n          h_init=h_0,\n          num_steps=num_steps_forward-1,\n          is_training=is_training\n      )\n      z_t = jnp.concatenate([z_0, z_t], axis=0)\n    else:\n      raise ValueError(\"num_steps_forward should be at least 1.\")\n\n    # Make time dimension second\n    return jnp.swapaxes(z_t, 0, 1), dict()\n\n  def _models_core(\n      self,\n      params: utils.Params,\n      keys: jnp.ndarray,\n      image_data: jnp.ndarray,\n      is_training: bool,\n      **unroll_kwargs: Any\n  ) -> Tuple[distrax.Distribution, jnp.ndarray, jnp.ndarray]:\n    enc_key, _, transform_key, unroll_key, dec_key, _ = keys\n\n    # Calculate latent input representation\n    inference_data = self.process_inputs_for_encoder(image_data)\n    z_raw = self.encoder.apply(params, enc_key, inference_data,\n                               is_training=is_training)\n\n    # Apply latent transformation (should be identity)\n    z0 = self.apply_latent_transform(params, transform_key, z_raw,\n                                     is_training=is_training)\n    z0 = self.process_latents_for_dynamics(z0)\n\n    # Calculate latent output representation\n    decoder_z, _ = self.unroll_latent_dynamics(\n        z=z0,\n        params=params,\n        key=unroll_key,\n        is_training=is_training,\n        **unroll_kwargs\n    )\n    decoder_z = self.process_latents_for_decoder(decoder_z)\n\n    # Compute p(x|z)\n    p_x = self.decode_latents(params, dec_key, decoder_z,\n                              is_training=is_training)\n    return p_x, z0, decoder_z\n\n  def training_objectives(  # pytype: disable=signature-mismatch  # jax-ndarray\n      self,\n      params: hk.Params,\n      state: hk.State,\n      rng: jnp.ndarray,\n      inputs: jnp.ndarray,\n      step: jnp.ndarray,\n      is_training: bool = True,\n      use_mean_for_eval_stats: bool = True\n  ) -> Tuple[jnp.ndarray, Sequence[Dict[str, jnp.ndarray]]]:\n    \"\"\"Computes the training objective and any supporting stats.\"\"\"\n    # Split all rng keys\n    keys = jnr.split(rng, 6)\n\n    # Process training data\n    images = utils.extract_image(inputs)\n    image_data, target_data, unroll_kwargs = self.train_data_split(images)\n\n    p_x, _, _ = self._models_core(\n        params=params,\n        keys=keys,\n        image_data=image_data,\n        is_training=is_training,\n        **unroll_kwargs\n    )\n\n    # Compute training statistics\n    stats = metrics.training_statistics(\n        p_x=p_x,\n        targets=target_data,\n        rescale_by=self.rescale_by,\n        p_x_learned_sigma=self.decoder_kwargs.get(\"learned_sigma\", False)\n    )\n\n    # The loss is just the negative log-likelihood (e.g. the L2 loss)\n    stats[\"loss\"] = stats[\"neg_log_p_x\"]\n\n    if not is_training:\n      # Optionally add the evaluation stats when not training\n      # Add also the evaluation statistics\n      # We need to be able to set `use_mean = False` for some of the tests\n      stats.update(metrics.evaluation_only_statistics(\n          reconstruct_func=functools.partial(\n              self.reconstruct, use_mean=use_mean_for_eval_stats),\n          params=params,\n          inputs=inputs,\n          rng=rng,\n          rescale_by=self.rescale_by,\n          can_run_backwards=self.can_run_backwards,\n          train_sequence_length=self.train_sequence_length,\n          reconstruction_skip=1,\n          p_x_learned_sigma=self.decoder_kwargs.get(\"learned_sigma\", False)\n      ))\n\n    return stats[\"loss\"], (dict(), stats, dict())\n\n  def reconstruct(\n      self,\n      params: utils.Params,\n      inputs: jnp.ndarray,\n      rng: jnp.ndarray,\n      forward: bool,\n      use_mean: bool = True,\n  ) -> distrax.Distribution:\n    \"\"\"Reconstructs the input sequence.\"\"\"\n    if not forward:\n      raise ValueError(\"This model can not run backwards.\")\n    images = utils.extract_image(inputs)\n    image_data = images[:, :self.num_inference_steps]\n\n    return self._models_core(\n        params=params,\n        keys=jnr.split(rng, 6),\n        image_data=image_data,\n        is_training=False,\n        num_steps_forward=images.shape[1] - self.num_inference_steps,\n        num_steps_backward=0,\n        include_z0=False,\n    )[0]\n\n  def gt_state_and_latents(  # pytype: disable=signature-mismatch  # jax-ndarray\n      self,\n      params: hk.Params,\n      rng: jnp.ndarray,\n      inputs: Dict[str, jnp.ndarray],\n      seq_length: int,\n      is_training: bool = False,\n      unroll_direction: str = \"forward\",\n      **kwargs: Dict[str, Any]\n  ) -> Tuple[jnp.ndarray, jnp.ndarray,\n             Union[distrax.Distribution, jnp.ndarray]]:\n    \"\"\"Computes the ground state and matching latents.\"\"\"\n    assert unroll_direction == \"forward\"\n    images = utils.extract_image(inputs)\n    gt_state = utils.extract_gt_state(inputs)\n    image_data = images[:, :self.num_inference_steps]\n    gt_state = gt_state[:, 1:seq_length + 1]\n\n    _, z_in, z_out = self._models_core(\n        params=params,\n        keys=jnr.split(rng, 6),\n        image_data=image_data,\n        is_training=False,\n        num_steps_forward=images.shape[1] - self.num_inference_steps,\n        num_steps_backward=0,\n        include_z0=False,\n    )\n\n    return gt_state, z_out, z_in\n\n  def _init_non_model_params_and_state(\n      self,\n      rng: jnp.ndarray\n  ) -> Tuple[Dict[str, jnp.ndarray], Dict[str, jnp.ndarray]]:\n    return dict(), dict()\n\n  def _init_latent_system(  # pytype: disable=signature-mismatch  # jax-ndarray\n      self,\n      rng: jnp.ndarray,\n      z: jnp.ndarray,\n      **kwargs: Any\n  ) -> utils.Params:\n    return self.recurrence.init(rng, z)\n"
  },
  {
    "path": "physics_inspired_models/models/base.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Module containing the base abstract classes for sequence models.\"\"\"\nimport abc\nfrom typing import Any, Dict, Generic, Mapping, Optional, Sequence, Tuple, TypeVar, Union\n\nfrom absl import logging\nimport distrax\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport jax.random as jnr\n\n\nfrom physics_inspired_models import utils\nfrom physics_inspired_models.models import networks\n\nT = TypeVar(\"T\")\n\n\nclass SequenceModel(abc.ABC, Generic[T]):\n  \"\"\"An abstract class for sequence models.\"\"\"\n\n  def __init__(\n      self,\n      can_run_backwards: bool,\n      latent_system_dim: int,\n      latent_system_net_type: str,\n      latent_system_kwargs: Dict[str, Any],\n      encoder_aggregation_type: Optional[str],\n      decoder_de_aggregation_type: Optional[str],\n      encoder_kwargs: Dict[str, Any],\n      decoder_kwargs: Dict[str, Any],\n      num_inference_steps: int,\n      num_target_steps: int,\n      name: str,\n      latent_spatial_shape: Optional[Tuple[int, int]] = (4, 4),\n      has_latent_transform: bool = False,\n      latent_transform_kwargs: Optional[Dict[str, Any]] = None,\n      rescale_by: Optional[str] = \"pixels_and_time\",\n      data_format: str = \"NHWC\",\n      **unused_kwargs\n  ):\n    # Arguments checks\n    encoder_kwargs = encoder_kwargs or dict()\n    decoder_kwargs = decoder_kwargs or dict()\n\n    # Set the decoder de-aggregation type the \"same\" type as the encoder if not\n    # provided\n    if (decoder_de_aggregation_type is None and\n        encoder_aggregation_type is not None):\n      if encoder_aggregation_type == \"linear_projection\":\n        decoder_de_aggregation_type = \"linear_projection\"\n      elif encoder_aggregation_type in (\"mean\", \"max\"):\n        decoder_de_aggregation_type = \"tile\"\n      else:\n        raise ValueError(f\"Unrecognized encoder_aggregation_type=\"\n                         f\"{encoder_aggregation_type}\")\n    if latent_system_net_type == \"conv\":\n      if encoder_aggregation_type is not None:\n        raise ValueError(\"When the latent system is convolutional, the encoder \"\n                         \"aggregation type should be None.\")\n      if decoder_de_aggregation_type is not None:\n        raise ValueError(\"When the latent system is convolutional, the decoder \"\n                         \"aggregation type should be None.\")\n    else:\n      if encoder_aggregation_type is None:\n        raise ValueError(\"When the latent system is not convolutional, the \"\n                         \"you must provide an encoder aggregation type.\")\n      if decoder_de_aggregation_type is None:\n        raise ValueError(\"When the latent system is not convolutional, the \"\n                         \"you must provide an decoder aggregation type.\")\n    if has_latent_transform and latent_transform_kwargs is None:\n      raise ValueError(\"When using latent transformation you have to provide \"\n                       \"the latent_transform_kwargs argument.\")\n    if unused_kwargs:\n      logging.warning(\"Unused kwargs: %s\", str(unused_kwargs))\n    super().__init__(**unused_kwargs)\n    self.can_run_backwards = can_run_backwards\n    self.latent_system_dim = latent_system_dim\n    self.latent_system_kwargs = latent_system_kwargs\n    self.latent_system_net_type = latent_system_net_type\n    self.latent_spatial_shape = latent_spatial_shape\n    self.num_inference_steps = num_inference_steps\n    self.num_target_steps = num_target_steps\n    self.rescale_by = rescale_by\n    self.data_format = data_format\n    self.name = name\n\n    # Encoder\n    self.encoder_kwargs = encoder_kwargs\n    self.encoder = hk.transform(\n        lambda *args, **kwargs: networks.SpatialConvEncoder(  # pylint: disable=unnecessary-lambda,g-long-lambda\n            latent_dim=latent_system_dim,\n            aggregation_type=encoder_aggregation_type,\n            data_format=data_format,\n            name=\"Encoder\",\n            **encoder_kwargs\n        )(*args, **kwargs))\n\n    # Decoder\n    self.decoder_kwargs = decoder_kwargs\n    self.decoder = hk.transform(\n        lambda *args, **kwargs: networks.SpatialConvDecoder(  # pylint: disable=unnecessary-lambda,g-long-lambda\n            initial_spatial_shape=self.latent_spatial_shape,\n            de_aggregation_type=decoder_de_aggregation_type,\n            data_format=data_format,\n            max_de_aggregation_dims=self.latent_system_dim // 2,\n            name=\"Decoder\",\n            **decoder_kwargs,\n        )(*args, **kwargs))\n\n    self.has_latent_transform = has_latent_transform\n    if has_latent_transform:\n      self.latent_transform = hk.transform(\n          lambda *args, **kwargs: networks.make_flexible_net(  # pylint: disable=unnecessary-lambda,g-long-lambda\n              net_type=latent_system_net_type,\n              output_dims=latent_system_dim,\n              name=\"LatentTransform\",\n              **latent_transform_kwargs\n          )(*args, **kwargs))\n    else:\n      self.latent_transform = None\n\n    self._jit_init = None\n\n  @property\n  @abc.abstractmethod\n  def train_sequence_length(self) -> int:\n    \"\"\"Computes the total length of a sequence needed for training or evaluation.\"\"\"\n    pass\n\n  @abc.abstractmethod\n  def train_data_split(\n      self,\n      images: jnp.ndarray,\n  ) -> Tuple[jnp.ndarray, jnp.ndarray, Mapping[str, Any]]:\n    \"\"\"Extracts from the inputs the data splits for training.\"\"\"\n    pass\n\n  def decode_latents(\n      self,\n      params: hk.Params,\n      rng: jnp.ndarray,\n      z: jnp.ndarray,\n      **kwargs: Any\n  ) -> distrax.Distribution:\n    \"\"\"Decodes the latent variable given the parameters of the model.\"\"\"\n    # Allow to run with both the full parameters and only the decoders\n    if self.latent_system_net_type == \"mlp\":\n      fixed_dims = 1\n    elif self.latent_system_net_type == \"conv\":\n      fixed_dims = 1 + len(self.latent_spatial_shape)\n    else:\n      raise NotImplementedError()\n    n_shape = z.shape[:-fixed_dims]\n    z = z.reshape((-1,) + z.shape[-fixed_dims:])\n    x = self.decoder.apply(params, rng, z, **kwargs)\n    return jax.tree_map(lambda a: a.reshape(n_shape + a.shape[1:]), x)\n\n  def apply_latent_transform(\n      self,\n      params: hk.Params,\n      key: jnp.ndarray,\n      z: jnp.ndarray,\n      **kwargs: Any\n  ) -> jnp.ndarray:\n    if self.latent_transform is not None:\n      return self.latent_transform.apply(params, key, z, **kwargs)\n    else:\n      return z\n\n  @abc.abstractmethod\n  def process_inputs_for_encoder(self, x: jnp.ndarray) -> jnp.ndarray:\n    pass\n\n  @abc.abstractmethod\n  def process_latents_for_dynamics(self, z: jnp.ndarray) -> T:\n    pass\n\n  @abc.abstractmethod\n  def process_latents_for_decoder(self, z: T) -> jnp.ndarray:\n    pass\n\n  @abc.abstractmethod\n  def unroll_latent_dynamics(\n      self,\n      z: T,\n      params: utils.Params,\n      key: jnp.ndarray,\n      num_steps_forward: int,\n      num_steps_backward: int,\n      include_z0: bool,\n      is_training: bool,\n      **kwargs: Any\n  ) -> Tuple[T, Mapping[str, jnp.ndarray]]:\n    \"\"\"Unrolls the latent dynamics starting from z and pre-processing for the decoder.\"\"\"\n    pass\n\n  @abc.abstractmethod\n  def reconstruct(\n      self,\n      params: utils.Params,\n      inputs: jnp.ndarray,\n      rng_key: Optional[jnp.ndarray],\n      forward: bool,\n  ) -> distrax.Distribution:\n    \"\"\"Using the first `num_inference_steps` parts of inputs reconstructs the rest.\"\"\"\n    pass\n\n  @abc.abstractmethod\n  def training_objectives(\n      self,\n      params: utils.Params,\n      state: hk.State,\n      rng: jnp.ndarray,\n      inputs: Union[Dict[str, jnp.ndarray], jnp.ndarray],\n      step: jnp.ndarray,\n      is_training: bool = True,\n      use_mean_for_eval_stats: bool = True\n  ) -> Tuple[jnp.ndarray, Sequence[Dict[str, jnp.ndarray]]]:\n    \"\"\"Returns all training objectives statistics and update states.\"\"\"\n    pass\n\n  @property\n  @abc.abstractmethod\n  def inferred_index(self):\n    \"\"\"Returns the time index in the input sequence, for which the encoder infers.\n\n    If the encoder takes as input the sequence x[0:n-1], where\n    `n = self.num_inference_steps`, then this outputs the index `k` relative to\n    the begging of the input sequence `x_0`, which the encoder infers.\n    \"\"\"\n    pass\n\n  @property\n  def inferred_right_offset(self):\n    return self.num_inference_steps - 1 - self.inferred_index\n\n  @abc.abstractmethod\n  def gt_state_and_latents(\n      self,\n      params: hk.Params,\n      rng: jnp.ndarray,\n      inputs: Dict[str, jnp.ndarray],\n      seq_len: int,\n      is_training: bool = False,\n      unroll_direction: str = \"forward\",\n      **kwargs: Dict[str, Any]\n  ) -> Tuple[jnp.ndarray, jnp.ndarray, jnp.ndarray]:\n    \"\"\"Computes the ground state and matching latents.\"\"\"\n    pass\n\n  @abc.abstractmethod\n  def _init_non_model_params_and_state(\n      self,\n      rng: jnp.ndarray\n  ) -> Tuple[utils.Params, utils.Params]:\n    \"\"\"Initializes any non-model parameters and state.\"\"\"\n    pass\n\n  @abc.abstractmethod\n  def _init_latent_system(\n      self,\n      rng: jnp.ndarray,\n      z: jnp.ndarray,\n      **kwargs: Any\n  ) -> hk.Params:\n    \"\"\"Initializes the parameters of the latent system.\"\"\"\n    pass\n\n  def _init(\n      self,\n      rng: jnp.ndarray,\n      images: jnp.ndarray\n  ) -> Tuple[hk.Params, hk.State]:\n    \"\"\"Initializes the whole model parameters and state.\"\"\"\n    inference_data, _, _ = self.train_data_split(images)\n    # Initialize parameters and state for the vae training\n    rng, key = jnr.split(rng)\n    params, state = self._init_non_model_params_and_state(key)\n\n    # Initialize and run encoder\n    inference_data = self.process_inputs_for_encoder(inference_data)\n    rng, key = jnr.split(rng)\n    encoder_params = self.encoder.init(key, inference_data, is_training=True)\n    rng, key = jnr.split(rng)\n    z_in = self.encoder.apply(encoder_params, key, inference_data,\n                              is_training=True)\n\n    # For probabilistic models this will be a distribution\n    if isinstance(z_in, distrax.Distribution):\n      z_in = z_in.mean()\n\n    # Initialize and run the optional latent transform\n    if self.latent_transform is not None:\n      rng, key = jnr.split(rng)\n      transform_params = self.latent_transform.init(key, z_in, is_training=True)\n      rng, key = jnr.split(rng)\n      z_in = self.latent_transform.apply(transform_params, key, z_in,\n                                         is_training=True)\n    else:\n      transform_params = dict()\n\n    # Initialize and run the latent system\n    z_in = self.process_latents_for_dynamics(z_in)\n    rng, key = jnr.split(rng)\n    latent_params = self._init_latent_system(key, z_in, is_training=True)\n    rng, key = jnr.split(rng)\n    z_out, _ = self.unroll_latent_dynamics(\n        z=z_in,\n        params=latent_params,\n        key=key,\n        num_steps_forward=1,\n        num_steps_backward=0,\n        include_z0=False,\n        is_training=True\n    )\n    z_out = self.process_latents_for_decoder(z_out)\n\n    # Initialize and run the decoder\n    rng, key = jnr.split(rng)\n    decoder_params = self.decoder.init(key, z_out[:, 0], is_training=True)\n    _ = self.decoder.apply(decoder_params, rng, z_out[:, 0], is_training=True)\n\n    # Combine all and make immutable\n    params = hk.data_structures.merge(params, encoder_params, transform_params,\n                                      latent_params, decoder_params)\n    params = hk.data_structures.to_immutable_dict(params)\n    state = hk.data_structures.to_immutable_dict(state)\n\n    return params, state  # pytype: disable=bad-return-type  # jax-ndarray\n\n  def init(\n      self,\n      rng: jnp.ndarray,\n      inputs_or_shape: Union[jnp.ndarray, Mapping[str, jnp.ndarray],\n                             Sequence[int]],\n  ) -> Tuple[utils.Params, hk.State]:\n    \"\"\"Initializes the whole model parameters and state.\"\"\"\n    if (isinstance(inputs_or_shape, (tuple, list))\n        and isinstance(inputs_or_shape[0], int)):\n      images = jnp.zeros(inputs_or_shape)\n    else:\n      images = utils.extract_image(inputs_or_shape)\n    if self._jit_init is None:\n      self._jit_init = jax.jit(self._init)\n    return self._jit_init(rng, images)\n"
  },
  {
    "path": "physics_inspired_models/models/common.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Module for all models.\"\"\"\nfrom typing import Any, Dict, Optional\n\nimport physics_inspired_models.models.autoregressive as autoregressive\nimport physics_inspired_models.models.deterministic_vae as deterministic_vae\n\n_physics_arguments = (\n    \"input_space\", \"simulation_space\", \"potential_func_form\",\n    \"kinetic_func_form\", \"hgn_kinetic_func_form\", \"lgn_kinetic_func_form\",\n    \"parametrize_mass_matrix\", \"hgn_parametrize_mass_matrix\",\n    \"lgn_parametrize_mass_matrix\", \"mass_eps\"\n)\n\n\ndef construct_model(\n    name: str,\n    *args,\n    **kwargs: Dict[str, Any]\n):\n  \"\"\"Constructs the correct instance of a model given the short name.\"\"\"\n  latent_dynamics_type: Optional[str] = kwargs.pop(\"latent_dynamics_type\", None)  # pytype: disable=annotation-type-mismatch\n  latent_system_kwargs = dict(**kwargs.pop(\"latent_system_kwargs\", dict()))\n  if name == \"AR\":\n    assert latent_dynamics_type in (\"vanilla\", \"lstm\", \"gru\")\n    # This arguments are not part of the AR models\n    for k in _physics_arguments + (\"integrator_method\", \"residual\"):\n      latent_system_kwargs.pop(k, None)\n    return autoregressive.TeacherForcingAutoregressiveModel(\n        *args,\n        latent_dynamics_type=latent_dynamics_type,\n        latent_system_kwargs=latent_system_kwargs,\n        **kwargs\n    )\n  elif name == \"RGN\":\n    assert latent_dynamics_type in (\"Discrete\", None)\n    latent_dynamics_type = \"Discrete\"\n    # This arguments are not part of the RGN models\n    for k in _physics_arguments + (\"integrator_method\",):\n      latent_system_kwargs.pop(k, None)\n  elif name == \"ODE\":\n    assert latent_dynamics_type in (\"ODE\", None)\n    latent_dynamics_type = \"ODE\"\n    # This arguments are not part of the ODE models\n    for k in _physics_arguments + (\"residual\",):\n      latent_system_kwargs.pop(k, None)\n  elif name == \"HGN\":\n    assert latent_dynamics_type in (\"Physics\", None)\n    latent_dynamics_type = \"Physics\"\n    assert latent_system_kwargs.get(\"input_space\", None) in (\"momentum\", None)\n    latent_system_kwargs[\"input_space\"] = \"momentum\"\n    assert (latent_system_kwargs.get(\"simulation_space\", None)\n            in (\"momentum\", None))\n    latent_system_kwargs[\"simulation_space\"] = \"momentum\"\n    # Kinetic func form\n    hgn_specific = latent_system_kwargs.pop(\"hgn_kinetic_func_form\", None)\n    if hgn_specific is not None:\n      latent_system_kwargs[\"kinetic_func_form\"] = hgn_specific\n    # Mass matrix\n    hgn_specific = latent_system_kwargs.pop(\"hgn_parametrize_mass_matrix\",\n                                            None)\n    if hgn_specific is not None:\n      latent_system_kwargs[\"parametrize_mass_matrix\"] = hgn_specific\n    # This arguments are not part of the HGN models\n    latent_system_kwargs.pop(\"residual\", None)\n    latent_system_kwargs.pop(\"lgn_kinetic_func_form\", None)\n    latent_system_kwargs.pop(\"lgn_parametrize_mass_matrix\", None)\n  elif name == \"LGN\":\n    assert latent_dynamics_type in (\"Physics\", None)\n    latent_dynamics_type = \"Physics\"\n    assert latent_system_kwargs.get(\"input_space\", None) in (\"velocity\", None)\n    latent_system_kwargs[\"input_space\"] = \"velocity\"\n    assert (latent_system_kwargs.get(\"simulation_space\", None) in\n            (\"velocity\", None))\n    latent_system_kwargs[\"simulation_space\"] = \"velocity\"\n    # Kinetic func form\n    lgn_specific = latent_system_kwargs.pop(\"lgn_kinetic_func_form\", None)\n    if lgn_specific is not None:\n      latent_system_kwargs[\"kinetic_func_form\"] = lgn_specific\n    # Mass matrix\n    lgn_specific = latent_system_kwargs.pop(\"lgn_parametrize_mass_matrix\",\n                                            None)\n    if lgn_specific is not None:\n      latent_system_kwargs[\"parametrize_mass_matrix\"] = lgn_specific\n    # This arguments are not part of the HGN models\n    latent_system_kwargs.pop(\"residual\", None)\n    latent_system_kwargs.pop(\"hgn_kinetic_func_form\", None)\n    latent_system_kwargs.pop(\"hgn_parametrize_mass_matrix\", None)\n  elif name == \"PGN\":\n    assert latent_dynamics_type in (\"Physics\", None)\n    latent_dynamics_type = \"Physics\"\n    # This arguments are not part of the PGN models\n    latent_system_kwargs.pop(\"residual\")\n    latent_system_kwargs.pop(\"hgn_kinetic_func_form\", None)\n    latent_system_kwargs.pop(\"hgn_parametrize_mass_matrix\", None)\n    latent_system_kwargs.pop(\"lgn_kinetic_func_form\", None)\n    latent_system_kwargs.pop(\"lgn_parametrize_mass_matrix\", None)\n  else:\n    raise NotImplementedError()\n  return deterministic_vae.DeterministicLatentsGenerativeModel(\n      *args,\n      latent_dynamics_type=latent_dynamics_type,\n      latent_system_kwargs=latent_system_kwargs,\n      **kwargs)\n"
  },
  {
    "path": "physics_inspired_models/models/deterministic_vae.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Module containing the main models code.\"\"\"\nimport functools\nfrom typing import Any, Dict, Mapping, Optional, Sequence, Tuple, Union\n\nimport distrax\nfrom dm_hamiltonian_dynamics_suite.hamiltonian_systems import phase_space\nimport haiku as hk\nimport jax.numpy as jnp\nimport jax.random as jnr\nimport numpy as np\n\nfrom physics_inspired_models import metrics\nfrom physics_inspired_models import utils\nfrom physics_inspired_models.models import base\nfrom physics_inspired_models.models import dynamics\n\n_ArrayOrPhase = Union[jnp.ndarray, phase_space.PhaseSpace]\n\n\nclass DeterministicLatentsGenerativeModel(base.SequenceModel[_ArrayOrPhase]):\n  \"\"\"Common class for generative models with deterministic latent dynamics.\"\"\"\n\n  def __init__(\n      self,\n      latent_system_dim: int,\n      latent_system_net_type: str,\n      latent_system_kwargs: Dict[str, Any],\n      latent_dynamics_type: str,\n      encoder_aggregation_type: Optional[str],\n      decoder_de_aggregation_type: Optional[str],\n      encoder_kwargs: Dict[str, Any],\n      decoder_kwargs: Dict[str, Any],\n      num_inference_steps: int,\n      num_target_steps: int,\n      latent_training_type: str,\n      training_data_split: str,\n      objective_type: str,\n      dt: float = 0.125,\n      render_from_q_only: bool = True,\n      prior_type: str = \"standard_normal\",\n      use_analytical_kl: bool = True,\n      geco_kappa: float = 0.001,\n      geco_alpha: Optional[float] = 0.0,\n      elbo_beta_delay: int = 0,\n      elbo_beta_final: float = 1.0,\n      name: Optional[str] = None,\n      **kwargs\n  ):\n    can_run_backwards = latent_dynamics_type in (\"ODE\", \"Physics\")\n\n    # Verify arguments\n    if objective_type not in (\"GECO\", \"ELBO\", \"NON-PROB\"):\n      raise ValueError(f\"Unrecognized training type - {objective_type}\")\n    if geco_alpha is None:\n      geco_alpha = 0\n    if geco_alpha < 0 or geco_alpha >= 1:\n      raise ValueError(\"GECO alpha parameter must be in [0, 1).\")\n    if prior_type not in (\"standard_normal\", \"made\", \"made_gated\"):\n      raise ValueError(f\"Unrecognized prior_type='{prior_type}.\")\n    if (latent_training_type == \"forward_backward\" and\n        training_data_split != \"include_inference\"):\n      raise ValueError(\"Training forward_backward works only when \"\n                       \"training_data_split=include_inference.\")\n    if (latent_training_type == \"forward_backward\" and\n        num_inference_steps % 2 == 0):\n      raise ValueError(\"Training forward_backward works only when \"\n                       \"num_inference_steps are odd.\")\n    if latent_training_type == \"forward_backward\" and not can_run_backwards:\n      raise ValueError(\"Training forward_backward works only when the model can\"\n                       \" be run backwards.\")\n    if prior_type != \"standard_normal\":\n      raise ValueError(\"For now we support only `standard_normal`.\")\n\n    super().__init__(\n        can_run_backwards=can_run_backwards,\n        latent_system_dim=latent_system_dim,\n        latent_system_net_type=latent_system_net_type,\n        latent_system_kwargs=latent_system_kwargs,\n        encoder_aggregation_type=encoder_aggregation_type,\n        decoder_de_aggregation_type=decoder_de_aggregation_type,\n        encoder_kwargs=encoder_kwargs,\n        decoder_kwargs=decoder_kwargs,\n        num_inference_steps=num_inference_steps,\n        num_target_steps=num_target_steps,\n        name=name,\n        **kwargs\n    )\n    # VAE specific arguments\n    self.prior_type = prior_type\n    self.objective_type = objective_type\n    self.use_analytical_kl = use_analytical_kl\n    self.geco_kappa = geco_kappa\n    self.geco_alpha = geco_alpha\n    self.elbo_beta_delay = elbo_beta_delay\n    self.elbo_beta_final = jnp.asarray(elbo_beta_final)\n\n    # The dynamics module and arguments\n    self.latent_dynamics_type = latent_dynamics_type\n    self.latent_training_type = latent_training_type\n    self.training_data_split = training_data_split\n    self.dt = dt\n    self.render_from_q_only = render_from_q_only\n    latent_system_kwargs[\"net_kwargs\"] = dict(\n        latent_system_kwargs[\"net_kwargs\"])\n    latent_system_kwargs[\"net_kwargs\"][\"net_type\"] = self.latent_system_net_type\n\n    if self.latent_dynamics_type == \"Physics\":\n      # Note that here system_dim means the dimensionality of `q` and `p`.\n      model_constructor = functools.partial(\n          dynamics.PhysicsSimulationNetwork,\n          system_dim=self.latent_system_dim // 2,\n          name=\"Physics\",\n          **latent_system_kwargs\n      )\n    elif self.latent_dynamics_type == \"ODE\":\n      model_constructor = functools.partial(\n          dynamics.OdeNetwork,\n          system_dim=self.latent_system_dim,\n          name=\"ODE\",\n          **latent_system_kwargs\n      )\n    elif self.latent_dynamics_type == \"Discrete\":\n      model_constructor = functools.partial(\n          dynamics.DiscreteDynamicsNetwork,\n          system_dim=self.latent_system_dim,\n          name=\"Discrete\",\n          **latent_system_kwargs\n      )\n    else:\n      raise NotImplementedError()\n    self.dynamics = hk.transform(\n        lambda *args, **kwargs_: model_constructor()(*args, **kwargs_))  # pylint: disable=unnecessary-lambda\n\n  def process_inputs_for_encoder(self, x: jnp.ndarray) -> jnp.ndarray:\n    return utils.stack_time_into_channels(x, self.data_format)\n\n  def process_latents_for_dynamics(self, z: jnp.ndarray) -> _ArrayOrPhase:\n    if self.latent_dynamics_type == \"Physics\":\n      return phase_space.PhaseSpace.from_state(z)\n    return z\n\n  def process_latents_for_decoder(self, z: _ArrayOrPhase) -> jnp.ndarray:\n    if self.latent_dynamics_type == \"Physics\":\n      return z.q if self.render_from_q_only else z.single_state  # pytype: disable=attribute-error  # jax-ndarray\n    return z  # pytype: disable=bad-return-type  # jax-ndarray\n\n  @property\n  def inferred_index(self) -> int:\n    if self.latent_training_type == \"forward\":\n      return self.num_inference_steps - 1\n    elif self.latent_training_type == \"forward_backward\":\n      assert self.num_inference_steps % 2 == 1\n      return self.num_inference_steps // 2\n    else:\n      raise NotImplementedError()\n\n  @property\n  def targets_index_offset(self) -> int:\n    if self.training_data_split == \"overlap_by_one\":\n      return -1\n    elif self.training_data_split == \"no_overlap\":\n      return 0\n    elif self.training_data_split == \"include_inference\":\n      return - self.num_inference_steps\n    else:\n      raise NotImplementedError()\n\n  @property\n  def targets_length(self) -> int:\n    if self.training_data_split == \"include_inference\":\n      return self.num_inference_steps + self.num_target_steps\n    return self.num_target_steps\n\n  @property\n  def train_sequence_length(self) -> int:\n    \"\"\"Computes the total length of a sequence needed for training.\"\"\"\n    if self.training_data_split == \"overlap_by_one\":\n      # Input -     [-------------------------------------------------]\n      # Inference - [---------------]\n      # Targets -                   [---------------------------------]\n      return self.num_inference_steps + self.num_target_steps - 1\n    elif self.training_data_split == \"no_overlap\":\n      # Input -     [-------------------------------------------------]\n      # Inference - [---------------]\n      # Targets -                    [--------------------------------]\n      return self.num_inference_steps + self.num_target_steps\n    elif self.training_data_split == \"include_inference\":\n      # Input -     [-------------------------------------------------]\n      # Inference - [---------------]\n      # Targets -   [-------------------------------------------------]\n      return self.num_inference_steps + self.num_target_steps\n    else:\n      raise NotImplementedError()\n\n  def train_data_split(\n      self,\n      images: jnp.ndarray\n  ) -> Tuple[jnp.ndarray, jnp.ndarray, Mapping[str, Any]]:\n    images = images[:, :self.train_sequence_length]\n    inf_idx = self.num_inference_steps\n    t_idx = self.num_inference_steps + self.targets_index_offset\n    if self.latent_training_type == \"forward\":\n      inference_data = images[:, :inf_idx]\n      target_data = images[:, t_idx:]\n      if self.training_data_split == \"include_inference\":\n        num_steps_backward = self.inferred_index\n      else:\n        num_steps_backward = 0\n      num_steps_forward = self.num_target_steps\n      if self.training_data_split == \"overlap_by_one\":\n        num_steps_forward -= 1\n      unroll_kwargs = dict(\n          num_steps_backward=num_steps_backward,\n          include_z0=self.training_data_split != \"no_overlap\",\n          num_steps_forward=num_steps_forward,\n          dt=self.dt\n      )\n    elif self.latent_training_type == \"forward_backward\":\n      assert self.training_data_split == \"include_inference\"\n      n_fwd = images.shape[0] // 2\n      inference_fwd = images[:n_fwd, :inf_idx]\n      targets_fwd = images[:n_fwd, t_idx:]\n      inference_bckwd = images[n_fwd:, -inf_idx:]\n      targets_bckwd = jnp.flip(images[n_fwd:, :images.shape[1] - t_idx], axis=1)\n      inference_data = jnp.concatenate([inference_fwd, inference_bckwd], axis=0)\n      target_data = jnp.concatenate([targets_fwd, targets_bckwd], axis=0)\n      # This needs to by numpy rather than jax.numpy, because we make some\n      # verification checks in `integrators.py:149-161`.\n      dt_fwd = np.full([n_fwd], self.dt)\n      dt_bckwd = np.full([images.shape[0] - n_fwd], self.dt)\n      dt = np.concatenate([dt_fwd, -dt_bckwd], axis=0)\n      unroll_kwargs = dict(\n          num_steps_backward=self.inferred_index,\n          include_z0=True,\n          num_steps_forward=self.targets_length - self.inferred_index - 1,\n          dt=dt\n      )\n    else:\n      raise NotImplementedError()\n    return inference_data, target_data, unroll_kwargs\n\n  def prior(self) -> distrax.Distribution:\n    \"\"\"Given the parameters returns the prior distribution of the model.\"\"\"\n    # Allow to run with both the full parameters and only the priors\n    if self.prior_type == \"standard_normal\":\n      # assert self.prior_nets is None and self.gated_made is None\n      if self.latent_system_net_type == \"mlp\":\n        event_shape = (self.latent_system_dim,)\n      elif self.latent_system_net_type == \"conv\":\n        if self.data_format == \"NHWC\":\n          event_shape = self.latent_spatial_shape + (self.latent_system_dim,)\n        else:\n          event_shape = (self.latent_system_dim,) + self.latent_spatial_shape\n      else:\n        raise NotImplementedError()\n      return distrax.Normal(jnp.zeros(event_shape), jnp.ones(event_shape))\n    else:\n      raise ValueError(f\"Unrecognized prior_type='{self.prior_type}'.\")\n\n  def sample_latent_from_prior(\n      self,\n      params: utils.Params,\n      rng: jnp.ndarray,\n      num_samples: int = 1,\n      **kwargs: Any) -> jnp.ndarray:\n    \"\"\"Takes sample from the prior (and optionally puts them through the latent transform function.\"\"\"\n    _, sample_key, transf_key = jnr.split(rng, 3)\n    prior = self.prior()\n    z_raw = prior.sample(seed=sample_key, sample_shape=[num_samples])\n    return self.apply_latent_transform(params, transf_key, z_raw, **kwargs)\n\n  def sample_trajectories_from_prior(\n      self,\n      params: utils.Params,\n      num_steps: int,\n      rng: jnp.ndarray,\n      num_samples: int = 1,\n      is_training: bool = False,\n      **kwargs\n  ) -> distrax.Distribution:\n    \"\"\"Generates samples from the prior (unconditional generation).\"\"\"\n    sample_key, unroll_key, dec_key = jnr.split(rng, 3)\n    z0 = self.sample_latent_from_prior(params, sample_key, num_samples,\n                                       is_training=is_training)\n    z, _ = self.unroll_latent_dynamics(\n        z=self.process_latents_for_dynamics(z0),\n        params=params,\n        key=unroll_key,\n        num_steps_forward=num_steps,\n        num_steps_backward=0,\n        include_z0=True,\n        is_training=is_training,\n        **kwargs\n    )\n    z = self.process_latents_for_decoder(z)\n    return self.decode_latents(params, dec_key, z, is_training=is_training)\n\n  def verify_unroll_args(\n      self,\n      num_steps_forward: int,\n      num_steps_backward: int,\n      include_z0: bool\n  ) -> None:\n    if num_steps_forward < 0 or num_steps_backward < 0:\n      raise ValueError(\"num_steps_forward and num_steps_backward can not be \"\n                       \"negative.\")\n    if num_steps_forward == 0 and num_steps_backward == 0:\n      raise ValueError(\"You need one of num_steps_forward or \"\n                       \"num_of_steps_backward to be positive.\")\n    if num_steps_forward > 0 and num_steps_backward > 0 and not include_z0:\n      raise ValueError(\"When both num_steps_forward and num_steps_backward are \"\n                       \"positive include_t0 should be True.\")\n    if num_steps_backward > 0 and not self.can_run_backwards:\n      raise ValueError(\"This model can not be unrolled backward in time.\")\n\n  def unroll_latent_dynamics(  # pytype: disable=signature-mismatch  # jax-ndarray\n      self,\n      z: phase_space.PhaseSpace,\n      params: hk.Params,\n      key: jnp.ndarray,\n      num_steps_forward: int,\n      num_steps_backward: int,\n      include_z0: bool,\n      is_training: bool,\n      **kwargs: Any\n  ) -> Tuple[_ArrayOrPhase, Mapping[str, jnp.ndarray]]:\n    self.verify_unroll_args(num_steps_forward, num_steps_backward, include_z0)\n    return self.dynamics.apply(\n        params,\n        key,\n        y0=z,\n        dt=kwargs.pop(\"dt\", self.dt),\n        num_steps_forward=num_steps_forward,\n        num_steps_backward=num_steps_backward,\n        include_y0=include_z0,\n        return_stats=True,\n        is_training=is_training\n    )\n\n  def _models_core(\n      self,\n      params: utils.Params,\n      keys: jnp.ndarray,\n      image_data: jnp.ndarray,\n      use_mean: bool,\n      is_training: bool,\n      **unroll_kwargs: Any\n  ) -> Tuple[distrax.Distribution, distrax.Distribution, distrax.Distribution,\n             jnp.ndarray, jnp.ndarray, Mapping[str, jnp.ndarray]]:\n    enc_key, sample_key, transform_key, unroll_key, dec_key, _ = keys\n\n    # Calculate the approximate posterior q(z|x)\n    inference_data = self.process_inputs_for_encoder(image_data)\n    q_z: distrax.Distribution = self.encoder.apply(params, enc_key,\n                                                   inference_data,\n                                                   is_training=is_training)\n\n    # Sample latent variables or take the mean\n    z_raw = q_z.mean() if use_mean else q_z.sample(seed=sample_key)\n\n    # Apply latent transformation\n    z0 = self.apply_latent_transform(params, transform_key, z_raw,\n                                     is_training=is_training)\n\n    # Unroll the latent variable\n    z, dyn_stats = self.unroll_latent_dynamics(\n        z=self.process_latents_for_dynamics(z0),\n        params=params,\n        key=unroll_key,\n        is_training=is_training,\n        **unroll_kwargs\n    )\n    decoder_z = self.process_latents_for_decoder(z)\n\n    # Compute p(x|z)\n    p_x = self.decode_latents(params, dec_key, decoder_z,\n                              is_training=is_training)\n\n    z = z.single_state if isinstance(z, phase_space.PhaseSpace) else z\n    return p_x, q_z, self.prior(), z0, z, dyn_stats\n\n  def training_objectives(  # pytype: disable=signature-mismatch  # jax-ndarray\n      self,\n      params: utils.Params,\n      state: hk.State,\n      rng: jnp.ndarray,\n      inputs: jnp.ndarray,\n      step: jnp.ndarray,\n      is_training: bool = True,\n      use_mean_for_eval_stats: bool = True\n  ) -> Tuple[jnp.ndarray, Sequence[Dict[str, jnp.ndarray]]]:\n    # Split all rng keys\n    keys = jnr.split(rng, 6)\n\n    # Process training data\n    images = utils.extract_image(inputs)\n    image_data, target_data, unroll_kwargs = self.train_data_split(images)\n\n    p_x, q_z, prior, _, _, dyn_stats = self._models_core(\n        params=params,\n        keys=keys,\n        image_data=image_data,\n        use_mean=False,\n        is_training=is_training,\n        **unroll_kwargs\n    )\n\n    # Note: we reuse the rng key used to sample the latent variable here\n    # so that it can be reused to evaluate a (non-analytical) KL at that sample.\n    stats = metrics.training_statistics(\n        p_x=p_x,\n        targets=target_data,\n        rescale_by=self.rescale_by,\n        rng=keys[1],\n        q_z=q_z,\n        prior=prior,\n        p_x_learned_sigma=self.decoder_kwargs.get(\"learned_sigma\", False)\n    )\n    stats.update(dyn_stats)\n\n    # Compute other (non-reported statistics)\n    z_stats = dict()\n    other_stats = dict(x_reconstruct=p_x.mean(), z_stats=z_stats)\n\n    # The loss computation and GECO state update\n    new_state = dict()\n    if self.objective_type == \"GECO\":\n      geco_stats = metrics.geco_objective(\n          l2_loss=stats[\"l2\"],\n          kl=stats[\"kl\"],\n          alpha=self.geco_alpha,\n          kappa=self.geco_kappa,\n          constraint_ema=state[\"GECO\"][\"geco_constraint_ema\"],\n          lambda_var=params[\"GECO\"][\"geco_lambda_var\"],\n          is_training=is_training\n      )\n      new_state[\"GECO\"] = dict(\n          geco_constraint_ema=geco_stats[\"geco_constraint_ema\"])\n      stats.update(geco_stats)\n    elif self.objective_type == \"ELBO\":\n      elbo_stats = metrics.elbo_objective(\n          neg_log_p_x=stats[\"neg_log_p_x\"],\n          kl=stats[\"kl\"],\n          final_beta=self.elbo_beta_final,\n          beta_delay=self.elbo_beta_delay,\n          step=step\n      )\n      stats.update(elbo_stats)\n    elif self.objective_type == \"NON-PROB\":\n      stats[\"loss\"] = stats[\"neg_log_p_x\"]\n    else:\n      raise ValueError()\n\n    if not is_training:\n      if self.training_data_split == \"overlap_by_one\":\n        reconstruction_skip = self.num_inference_steps - 1\n      elif self.training_data_split == \"no_overlap\":\n        reconstruction_skip = self.num_inference_steps\n      elif self.training_data_split == \"include_inference\":\n        reconstruction_skip = 0\n      else:\n        raise NotImplementedError()\n      # We intentionally reuse the same rng as the training, in order to be able\n      # to run tests and verify that the evaluation and reconstruction work\n      # correctly.\n      # We need to be able to set `use_mean = False` for some of the tests\n      stats.update(metrics.evaluation_only_statistics(\n          reconstruct_func=functools.partial(\n              self.reconstruct, use_mean=use_mean_for_eval_stats),\n          params=params,\n          inputs=inputs,\n          rng=rng,\n          rescale_by=self.rescale_by,\n          can_run_backwards=self.can_run_backwards,\n          train_sequence_length=self.train_sequence_length,\n          reconstruction_skip=reconstruction_skip,\n          p_x_learned_sigma=self.decoder_kwargs.get(\"learned_sigma\", False)\n      ))\n\n    # Make new state the same type as state\n    new_state = utils.convert_to_pytype(new_state, state)\n    return stats[\"loss\"], (new_state, stats, other_stats)\n\n  def reconstruct(\n      self,\n      params: utils.Params,\n      inputs: jnp.ndarray,\n      rng: Optional[jnp.ndarray],\n      forward: bool,\n      use_mean: bool = True,\n  ) -> distrax.Distribution:\n    if not self.can_run_backwards and not forward:\n      raise ValueError(\"This model can not be run backwards.\")\n    images = utils.extract_image(inputs)\n    # This is intentionally matching the split for the training stats\n    if forward:\n      num_steps_backward = self.inferred_index\n      num_steps_forward = images.shape[1] - num_steps_backward - 1\n    else:\n      num_steps_forward = self.num_inference_steps - self.inferred_index - 1\n      num_steps_backward = images.shape[1] - num_steps_forward - 1\n    if not self.can_run_backwards:\n      num_steps_backward = 0\n\n    if forward:\n      image_data = images[:, :self.num_inference_steps]\n    else:\n      image_data = images[:, -self.num_inference_steps:]\n\n    return self._models_core(\n        params=params,\n        keys=jnr.split(rng, 6),\n        image_data=image_data,\n        use_mean=use_mean,\n        is_training=False,\n        num_steps_forward=num_steps_forward,\n        num_steps_backward=num_steps_backward,\n        include_z0=True,\n    )[0]\n\n  def gt_state_and_latents(  # pytype: disable=signature-mismatch  # jax-ndarray\n      self,\n      params: hk.Params,\n      rng: jnp.ndarray,\n      inputs: Dict[str, jnp.ndarray],\n      seq_length: int,\n      is_training: bool = False,\n      unroll_direction: str = \"forward\",\n      **kwargs: Dict[str, Any]\n  ) -> Tuple[jnp.ndarray, jnp.ndarray,\n             Union[distrax.Distribution, jnp.ndarray]]:\n    \"\"\"Computes the ground state and matching latents.\"\"\"\n    assert unroll_direction in (\"forward\", \"backward\")\n    if unroll_direction == \"backward\" and not self.can_run_backwards:\n      raise ValueError(\"This model can not be unrolled backwards.\")\n\n    images = utils.extract_image(inputs)\n    gt_state = utils.extract_gt_state(inputs)\n\n    if unroll_direction == \"forward\":\n      image_data = images[:, :self.num_inference_steps]\n      if self.can_run_backwards:\n        num_steps_backward = self.inferred_index\n        gt_start_idx = 0\n      else:\n        num_steps_backward = 0\n        gt_start_idx = self.inferred_index\n      num_steps_forward = seq_length - num_steps_backward - 1\n      gt_state = gt_state[:, gt_start_idx: seq_length + gt_start_idx]\n    elif unroll_direction == \"backward\":\n      inference_start_idx = seq_length - self.num_inference_steps\n      image_data = images[:, inference_start_idx: seq_length]\n      num_steps_forward = self.num_inference_steps - self.inferred_index - 1\n      num_steps_backward = seq_length - num_steps_forward - 1\n      gt_state = gt_state[:, :seq_length]\n    else:\n      raise NotImplementedError()\n\n    _, q_z, _, z0, z, _ = self._models_core(\n        params=params,\n        keys=jnr.split(rng, 6),\n        image_data=image_data,\n        use_mean=True,\n        is_training=False,\n        num_steps_forward=num_steps_forward,\n        num_steps_backward=num_steps_backward,\n        include_z0=True,\n    )\n\n    if self.has_latent_transform:\n      return gt_state, z, z0\n    else:\n      return gt_state, z, q_z\n\n  def _init_non_model_params_and_state(\n      self,\n      rng: jnp.ndarray\n  ) -> Tuple[utils.Params, utils.Params]:\n    if self.objective_type == \"GECO\":\n      # Initialize such that softplus(lambda_var) = 1\n      geco_lambda_var = jnp.asarray(jnp.log(jnp.e - 1.0))\n      geco_constraint_ema = jnp.asarray(0.0)\n      return (dict(GECO=dict(geco_lambda_var=geco_lambda_var)),\n              dict(GECO=dict(geco_constraint_ema=geco_constraint_ema)))\n    else:\n      return dict(), dict()\n\n  def _init_latent_system(\n      self,\n      rng: jnp.ndarray,\n      z: jnp.ndarray,\n      **kwargs: Mapping[str, Any]\n  ) -> hk.Params:\n    \"\"\"Initializes the parameters of the latent system.\"\"\"\n    return self.dynamics.init(\n        rng,\n        y0=z,\n        dt=self.dt,\n        num_steps_forward=1,\n        num_steps_backward=0,\n        include_y0=True,\n        **kwargs\n    )\n"
  },
  {
    "path": "physics_inspired_models/models/dynamics.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Module containing all of the networks as Haiku modules.\"\"\"\nfrom typing import Any, Mapping, Optional, Tuple, Union\n\nfrom dm_hamiltonian_dynamics_suite.hamiltonian_systems import phase_space\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\n\nfrom physics_inspired_models import integrators\nfrom physics_inspired_models import utils\nfrom physics_inspired_models.models import networks\n\n_PhysicsSimulationOutput = Union[\n    phase_space.PhaseSpace,\n    Tuple[phase_space.PhaseSpace, Mapping[str, jnp.ndarray]]\n]\n\n\nclass PhysicsSimulationNetwork(hk.Module):\n  \"\"\"A model for simulating an abstract physical system, whose energy is defined by a neural network.\"\"\"\n\n  def __init__(\n      self,\n      system_dim: int,\n      input_space: str,\n      simulation_space: str,\n      potential_func_form: str,\n      kinetic_func_form: str,\n      parametrize_mass_matrix: bool,\n      net_kwargs: Mapping[str, Any],\n      mass_eps: float = 1.0,\n      integrator_method: Optional[str] = None,\n      steps_per_dt: int = 1,\n      ode_int_kwargs: Optional[Mapping[str, float]] = None,\n      use_scan: bool = True,\n      feature_axis: int = -1,\n      features_extra_dims: Optional[int] = None,\n      network_creation_func=networks.make_flexible_net,\n      name: Optional[str] = None\n  ):\n    \"\"\"Initializes the model.\n\n    Args:\n      system_dim: The number of system dimensions. Note that this specifies the\n        number of dimensions only of the position vectors, not of position and\n        momentum. Hence the generalized coordinates would be of dimension\n        `2 * system_dim`.\n      input_space: Either `velocity` or `momentum`. Specifies whether the inputs\n        to the model are to be interpreted as `(position, velocity)` or as\n        `(position, momentum)`.\n      simulation_space: Either `velocity` or `momentum`. Specifies whether the\n        model should simulate the dynamics in `(position, velocity)` space\n        using the Lagrangian formulation or in `(position, momentum)` space\n        using the Hamiltonian formulation. If this is different than the value\n        of `input_space` then `kinetic_func_form` must be one of pure_quad,\n        matrix_diag_quad, matrix_quad, matrix_dep_diag_quad, matrix_dep_quad.\n        In all other cases one can not compute analytically the form of the\n        functional (Lagrangian or Hamiltonian) from the other.\n      potential_func_form: String specifying the form of the potential energy:\n        * separable_net - The network uses only the position:\n          U(q, q_dot/p) = f(q)    f: R^d -> R\n        * dep_net - The network uses both the position and velocity/momentum:\n          U(q, q_dot/p) = f(q, q_dot/p)     f: R^d x R^d -> R\n        * embed_quad - A quadratic of the embedding of a network embedding of\n          the velocity/momentum:\n          U(q, q_dot/p) = f(q)^T f(q) / 2    f: R^d -> R^d\n      kinetic_func_form: String specifying the form of the potential energy:\n        * separable_net - The network uses only the velocity/momentum:\n          K(q, q_dot/p) = f(q_dot/p)    f: R^d -> R\n        * dep_net - The network uses both the position and velocity/momentum:\n          K(q, q_dot/p) = f(q, q_dot/p)     f: R^d x R^d -> R\n        * pure_quad - A quadratic function of the velocity/momentum:\n          K(q, q_dot/p) = (q_dot/p)^T (q_dot/p) / 2\n        * matrix_diag_quad - A quadratic function of the velocity/momentum,\n          where there is diagonal mass matrix, whose log `P` is a parameter:\n          K(q, q_dot) = q_dot^T M q_dot / 2\n          K(q, p) = p^T M^-1 p / 2\n          [if `parameterize_mass_matrix`]\n          M = diag(exp(P) + mass_eps)\n          [else]\n          M^-1 = diag(exp(P) + mass_eps)\n        * matrix_quad - A quadratic function of the velocity/momentum, where\n          there is a full mass matrix, whose Cholesky factor L is a parameter:\n          K(q, q_dot) = q_dot^T M q_dot / 2\n          K(q, p) = p^T M^-1 p / 2\n          [if `parameterize_mass_matrix`]\n          M = LL^T + mass_eps * I\n          [else]\n          M^-1 = LL^T + mass_eps * I\n        * matrix_dep_quad - A quadratic function of the velocity/momentum, where\n          there is a full mass matrix defined as a function of the position:\n          K(q, q_dot) = q_dot^T M(q) q_dot / 2\n          K(q, p) = p^T M(q)^-1 p / 2\n          [if `parameterize_mass_matrix`]\n          M(q) = g(q) g(q)^T + mass_eps * I    g: R^d -> R^(d(d+1)/2)\n          [else]\n          M(q)^-1 = g(q) g(q)^T + mass_eps * I    g: R^d -> R^(d(d+1)/2)\n        * embed_quad - A quadratic of the embedding of a network embedding of\n          the velocity/momentum:\n          K(q, q_dot/p) = f(q_dot/p)^T f(q_dot/p) / 2    f: R^d -> R^d\n        * matrix_dep_diag_embed_quad - A quadratic of the embedding of a network\n          embedding of the velocity/momentum where there is diagonal mass matrix\n          defined as a function of the position:\n          K(q, q_dot) = f(q_dot)^T M(q) f(q_dot) / 2    f: R^d -> R^d\n          K(q, p) = f(p)^T M(q)^-1 f(p) / 2    f: R^d -> R^d\n          [if `parameterize_mass_matrix`]\n          M(q) = diag(exp(g(q)) + mass_eps * I    g: R^d -> R^d\n          [else]\n          M(q)^-1 = diag(exp(g(q)) + mass_eps * I    g: R^d -> R^d\n        * matrix_dep_embed_quad - A quadratic of the embedding of a network\n          embedding of the velocity/momentum where there is a full mass matrix\n          defined as a function of the position:\n          K(q, q_dot) = f(q_dot)^T M(q) f(q_dot) / 2    f: R^d -> R^d\n          K(q, p) = f(p)^T M(q)^-1 f(p) / 2    f: R^d -> R^d\n          [if `parameterize_mass_matrix`]\n          M(q) = g(q) g(q)^T + mass_eps * I    g: R^d -> R^(d(d+1)/2)\n          [else]\n          M(q)^-1 = g(q) g(q)^T + mass_eps * I    g: R^d -> R^(d(d+1)/2)\n        For any of the function forms with mass matrices, if we have a\n          convolutional input it is assumed that the matrix is shared across all\n          spatial locations.\n      parametrize_mass_matrix: Defines for the kinetic functional form, whether\n        the network output defines the mass or the inverse of the mass matrix.\n      net_kwargs: Any keyword arguments to pass down to the networks.\n      mass_eps: The additional weight of the identity added to the mass matrix,\n        when relevant.\n      integrator_method: What method to use for integrating the system.\n      steps_per_dt: How many internal steps per a single `dt` step to do.\n      ode_int_kwargs: Extra arguments when using \"implicit\" integrator method.\n      use_scan: Whether to use `lax.scan` for explicit integrators.\n      feature_axis: The number of the features axis in the inputs.\n      features_extra_dims: If the inputs have extra features (like spatial for\n        convolutions) this specifies how many of them there are.\n      network_creation_func: A function that creates the networks. Should have a\n        signature `network_creation_func(output_dims, name, **net_kwargs)`.\n      name: The name of this Haiku module.\n    \"\"\"\n    super().__init__(name=name)\n    if input_space not in (\"velocity\", \"momentum\"):\n      raise ValueError(\"input_space must be either velocity or momentum.\")\n    if simulation_space not in (\"velocity\", \"momentum\"):\n      raise ValueError(\"simulation_space must be either velocity or momentum.\")\n    if potential_func_form not in (\"separable_net\", \"dep_net\", \"embed_quad\"):\n      raise ValueError(\"The potential network can be only a network.\")\n    if kinetic_func_form not in (\"separable_net\", \"dep_net\", \"pure_quad\",\n                                 \"matrix_diag_quad\", \"matrix_quad\",\n                                 \"matrix_dep_diag_quad\", \"matrix_dep_quad\",\n                                 \"embed_quad\", \"matrix_dep_diag_embed_quad\",\n                                 \"matrix_dep_embed_quad\"):\n      raise ValueError(f\"Unrecognized kinetic func form {kinetic_func_form}.\")\n    if input_space != simulation_space:\n      if kinetic_func_form not in (\n          \"pure_quad\", \"matrix_diag_quad\", \"matrix_quad\",\n          \"matrix_dep_diag_quad\", \"matrix_dep_quad\"):\n        raise ValueError(\n            \"When the input and simulation space are not the same, it is \"\n            \"possible to simulate the physical system only if kinetic_func_form\"\n            \" is one of pure_quad, matrix_diag_quad, matrix_quad, \"\n            \"matrix_dep_diag_quad, matrix_dep_quad. In all other cases one can\"\n            \"not compute analytically the form of the functional (Lagrangian or\"\n            \" Hamiltonian) from the other.\")\n    if feature_axis != -1:\n      raise ValueError(\"Currently we only support features_axis=-1.\")\n    if integrator_method is None:\n      if simulation_space == \"velocity\":\n        integrator_method = \"rk2\"\n      else:\n        integrator_method = \"leap_frog\"\n    if features_extra_dims is None:\n      if net_kwargs[\"net_type\"] == \"mlp\":\n        features_extra_dims = 0\n      elif net_kwargs[\"net_type\"] == \"conv\":\n        features_extra_dims = 2\n      else:\n        raise NotImplementedError()\n    ode_int_kwargs = dict(ode_int_kwargs or {})\n    ode_int_kwargs.setdefault(\"rtol\", 1e-6)\n    ode_int_kwargs.setdefault(\"atol\", 1e-6)\n    ode_int_kwargs.setdefault(\"mxstep\", 50)\n\n    self.system_dim = system_dim\n    self.input_space = input_space\n    self.simulation_space = simulation_space\n    self.potential_func_form = potential_func_form\n    self.kinetic_func_form = kinetic_func_form\n    self.parametrize_mass_matrix = parametrize_mass_matrix\n    self.features_axis = feature_axis\n    self.features_extra_dims = features_extra_dims\n    self.integrator_method = integrator_method\n    self.steps_per_dt = steps_per_dt\n    self.ode_int_kwargs = ode_int_kwargs\n    self.net_kwargs = net_kwargs\n    self.mass_eps = mass_eps\n    self.use_scan = use_scan\n    self.name = name\n\n    self.potential_net = network_creation_func(\n        output_dims=1, name=\"PotentialNet\", **net_kwargs)\n\n    if kinetic_func_form in (\"separable_net\", \"dep_net\"):\n      self.kinetic_net = network_creation_func(\n          output_dims=1, name=\"KineticNet\", **net_kwargs)\n    else:\n      self.kinetic_net = None\n    if kinetic_func_form in (\"matrix_dep_quad\", \"matrix_dep_embed_quad\"):\n      output_dims = (system_dim * (system_dim + 1)) // 2\n      name = \"MatrixNet\" if parametrize_mass_matrix else \"InvMatrixNet\"\n      self.mass_matrix_net = network_creation_func(\n          output_dims=output_dims, name=name, **net_kwargs)\n    elif kinetic_func_form in (\"matrix_dep_diag_quad\",\n                               \"matrix_dep_diag_embed_quad\",\n                               \"matrix_dep_embed_quad\"):\n      name = \"MatrixNet\" if parametrize_mass_matrix else \"InvMatrixNet\"\n      self.mass_matrix_net = network_creation_func(\n          output_dims=system_dim, name=name, **net_kwargs)\n    else:\n      self.mass_matrix_net = None\n    if kinetic_func_form in (\"embed_quad\", \"matrix_dep_diag_embed_quad\",\n                             \"matrix_dep_embed_quad\"):\n      self.kinetic_embed_net = network_creation_func(\n          output_dims=system_dim, name=\"KineticEmbed\", **net_kwargs)\n    else:\n      self.kinetic_embed_net = None\n\n  def sum_per_dim_energy(self, energy: jnp.ndarray) -> jnp.ndarray:\n    \"\"\"Sums the per dimension energy.\"\"\"\n    axis = [-i-1 for i in range(self.features_extra_dims + 1)]\n    return jnp.sum(energy, axis=axis)\n\n  def feature_matrix_vector(self, m, v):\n    \"\"\"A utility function to compute the product of a matrix and vector in the features axis.\"\"\"\n    v = jnp.expand_dims(v, axis=self.features_axis-1)\n    return jnp.sum(m * v, axis=self.features_axis)\n\n  def mass_matrix_mul(\n      self,\n      q: jnp.ndarray,\n      v: jnp.ndarray,\n      **kwargs\n  ) -> jnp.ndarray:\n    \"\"\"Computes the product of the mass matrix with a vector and throws an error if not applicable.\"\"\"\n    if self.kinetic_func_form in (\"separable_net\", \"dep_net\"):\n      raise ValueError(\"It is not possible to compute `M q_dot` when using a \"\n                       \"network for the kinetic energy.\")\n    if self.kinetic_func_form in (\"pure_quad\", \"embed_quad\"):\n      return v\n    if self.kinetic_func_form == \"matrix_diag_quad\":\n      if self.parametrize_mass_matrix:\n        m_diag_log = hk.get_parameter(\"MassMatrixDiagLog\",\n                                      shape=[self.system_dim],\n                                      init=hk.initializers.Constant(0.0))\n        m_diag = jnp.exp(m_diag_log) + self.mass_eps\n      else:\n        m_inv_diag_log = hk.get_parameter(\"InvMassMatrixDiagLog\",\n                                          shape=[self.system_dim],\n                                          init=hk.initializers.Constant(0.0))\n        m_diag = 1.0 / (jnp.exp(m_inv_diag_log) + self.mass_eps)\n      return m_diag * v\n    if self.kinetic_func_form == \"matrix_quad\":\n      if self.parametrize_mass_matrix:\n        m_triu = hk.get_parameter(\"MassMatrixU\",\n                                  shape=[self.system_dim, self.system_dim],\n                                  init=hk.initializers.Identity())\n        m_triu = jnp.triu(m_triu)\n        m = jnp.matmul(m_triu.T, m_triu)\n        m = m + self.mass_eps * jnp.eye(self.system_dim)\n        return self.feature_matrix_vector(m, v)\n      else:\n        m_inv_triu = hk.get_parameter(\"InvMassMatrixU\",\n                                      shape=[self.system_dim, self.system_dim],\n                                      init=hk.initializers.Identity())\n        m_inv_triu = jnp.triu(m_inv_triu)\n        m_inv = jnp.matmul(m_inv_triu.T, m_inv_triu)\n        m_inv = m_inv + self.mass_eps * jnp.eye(self.system_dim)\n        solve = jnp.linalg.solve\n        for _ in range(v.ndim + 1 - m_inv.ndim):\n          solve = jax.vmap(solve, in_axes=(None, 0))\n        return solve(m_inv, v)\n    if self.kinetic_func_form in (\"matrix_dep_diag_quad\",\n                                  \"matrix_dep_diag_embed_quad\"):\n      if self.parametrize_mass_matrix:\n        m_diag_log = self.mass_matrix_net(q, **kwargs)\n        m_diag = jnp.exp(m_diag_log) + self.mass_eps\n      else:\n        m_inv_diag_log = self.mass_matrix_net(q, **kwargs)\n        m_diag = 1.0 / (jnp.exp(m_inv_diag_log) + self.mass_eps)\n      return m_diag * v\n    if self.kinetic_func_form in (\"matrix_dep_quad\",\n                                  \"matrix_dep_embed_quad\"):\n      if self.parametrize_mass_matrix:\n        m_triu = self.mass_matrix_net(q, **kwargs)\n        m_triu = utils.triu_matrix_from_v(m_triu, self.system_dim)\n        m = jnp.matmul(jnp.swapaxes(m_triu, -1, -2), m_triu)\n        m = m + self.mass_eps * jnp.eye(self.system_dim)\n        return self.feature_matrix_vector(m, v)\n      else:\n        m_inv_triu = self.mass_matrix_net(q, **kwargs)\n        m_inv_triu = utils.triu_matrix_from_v(m_inv_triu, self.system_dim)\n        m_inv = jnp.matmul(jnp.swapaxes(m_inv_triu, -1, -2), m_inv_triu)\n        m_inv = m_inv + self.mass_eps * jnp.eye(self.system_dim)\n        return jnp.linalg.solve(m_inv, v)\n    raise NotImplementedError()\n\n  def mass_matrix_inv_mul(\n      self,\n      q: jnp.ndarray,\n      v: jnp.ndarray,\n      **kwargs\n  ) -> jnp.ndarray:\n    \"\"\"Computes the product of the inverse mass matrix with a vector.\"\"\"\n    if self.kinetic_func_form in (\"separable_net\", \"dep_net\"):\n      raise ValueError(\"It is not possible to compute `M^-1 p` when using a \"\n                       \"network for the kinetic energy.\")\n    if self.kinetic_func_form in (\"pure_quad\", \"embed_quad\"):\n      return v\n    if self.kinetic_func_form == \"matrix_diag_quad\":\n      if self.parametrize_mass_matrix:\n        m_diag_log = hk.get_parameter(\"MassMatrixDiagLog\",\n                                      shape=[self.system_dim],\n                                      init=hk.initializers.Constant(0.0))\n        m_inv_diag = 1.0 / (jnp.exp(m_diag_log) + self.mass_eps)\n      else:\n        m_inv_diag_log = hk.get_parameter(\"InvMassMatrixDiagLog\",\n                                          shape=[self.system_dim],\n                                          init=hk.initializers.Constant(0.0))\n        m_inv_diag = jnp.exp(m_inv_diag_log) + self.mass_eps\n      return m_inv_diag * v\n    if self.kinetic_func_form == \"matrix_quad\":\n      if self.parametrize_mass_matrix:\n        m_triu = hk.get_parameter(\"MassMatrixU\",\n                                  shape=[self.system_dim, self.system_dim],\n                                  init=hk.initializers.Identity())\n        m_triu = jnp.triu(m_triu)\n        m = jnp.matmul(m_triu.T, m_triu)\n        m = m + self.mass_eps * jnp.eye(self.system_dim)\n        solve = jnp.linalg.solve\n        for _ in range(v.ndim + 1 - m.ndim):\n          solve = jax.vmap(solve, in_axes=(None, 0))\n        return solve(m, v)\n      else:\n        m_inv_triu = hk.get_parameter(\"InvMassMatrixU\",\n                                      shape=[self.system_dim, self.system_dim],\n                                      init=hk.initializers.Identity())\n        m_inv_triu = jnp.triu(m_inv_triu)\n        m_inv = jnp.matmul(m_inv_triu.T, m_inv_triu)\n        m_inv = m_inv + self.mass_eps * jnp.eye(self.system_dim)\n        return self.feature_matrix_vector(m_inv, v)\n    if self.kinetic_func_form in (\"matrix_dep_diag_quad\",\n                                  \"matrix_dep_diag_embed_quad\"):\n      if self.parametrize_mass_matrix:\n        m_diag_log = self.mass_matrix_net(q, **kwargs)\n        m_inv_diag = 1.0 / (jnp.exp(m_diag_log) + self.mass_eps)\n      else:\n        m_inv_diag_log = self.mass_matrix_net(q, **kwargs)\n        m_inv_diag = jnp.exp(m_inv_diag_log) + self.mass_eps\n      return m_inv_diag * v\n    if self.kinetic_func_form in (\"matrix_dep_quad\",\n                                  \"matrix_dep_embed_quad\"):\n      if self.parametrize_mass_matrix:\n        m_triu = self.mass_matrix_net(q, **kwargs)\n        m_triu = utils.triu_matrix_from_v(m_triu, self.system_dim)\n        m = jnp.matmul(jnp.swapaxes(m_triu, -2, -1), m_triu)\n        m = m + self.mass_eps * jnp.eye(self.system_dim)\n        return jnp.linalg.solve(m, v)\n      else:\n        m_inv_triu = self.mass_matrix_net(q, **kwargs)\n        m_inv_triu = utils.triu_matrix_from_v(m_inv_triu, self.system_dim)\n        m_inv = jnp.matmul(jnp.swapaxes(m_inv_triu, -2, -1), m_inv_triu)\n        m_inv = m_inv + self.mass_eps * jnp.eye(self.system_dim)\n        return self.feature_matrix_vector(m_inv, v)\n    raise NotImplementedError()\n\n  def momentum_from_velocity(\n      self,\n      q: jnp.ndarray,\n      q_dot: jnp.ndarray,\n      **kwargs\n  ) -> jnp.ndarray:\n    \"\"\"Computes the momentum from position and velocity.\"\"\"\n    def local_lagrangian(q_dot_):\n      # We take the sum so we can easily take gradients\n      return jnp.sum(self.lagrangian(\n          phase_space.PhaseSpace(q, q_dot_), **kwargs))\n    return jax.grad(local_lagrangian)(q_dot)\n\n  def velocity_from_momentum(\n      self,\n      q: jnp.ndarray,\n      p: jnp.ndarray,\n      **kwargs\n  ) -> jnp.ndarray:\n    \"\"\"Computes the velocity from position and momentum.\"\"\"\n    def local_hamiltonian(p_):\n      # We take the sum so we can easily take gradients\n      return jnp.sum(self.hamiltonian(\n          phase_space.PhaseSpace(q, p_), **kwargs))\n    return jax.grad(local_hamiltonian)(p)\n\n  def kinetic_energy_velocity(\n      self,\n      q: jnp.ndarray,\n      q_dot: jnp.ndarray,\n      **kwargs\n  ) -> jnp.ndarray:\n    \"\"\"Computes the kinetic energy in velocity coordinates.\"\"\"\n    if self.kinetic_func_form in (\"separable_net\", \"dep_net\"):\n      if self.input_space != \"velocity\":\n        raise ValueError(\"Can not evaluate the Kinetic energy from velocity, \"\n                         \"when the input space is momentum and \"\n                         \"kinetic_func_form is separable_net or dep_net.\")\n      if self.kinetic_func_form == \"separable_net\":\n        s = q_dot\n      else:\n        s = jnp.concatenate([q, q_dot], axis=-1)\n      per_dim_energy = self.kinetic_net(s, **kwargs)\n    else:\n      if self.kinetic_embed_net is not None:\n        if self.input_space != \"velocity\":\n          raise ValueError(\"Can not evaluate the Kinetic energy from velocity, \"\n                           \"when the input space is momentum and \"\n                           \"kinetic_func_form is embed_quad, \"\n                           \"matrix_dep_diag_embed_quad or \"\n                           \"matrix_dep_embed_quad.\")\n        q_dot = self.kinetic_embed_net(q_dot, **kwargs)\n      m_q_dot = self.mass_matrix_mul(q, q_dot, **kwargs)\n      per_dim_energy = q_dot * m_q_dot / 2\n\n    return self.sum_per_dim_energy(per_dim_energy)\n\n  def kinetic_energy_momentum(\n      self,\n      q: jnp.ndarray,\n      p: jnp.ndarray,\n      **kwargs\n  ) -> jnp.ndarray:\n    \"\"\"Computes the kinetic energy in momentum coordinates.\"\"\"\n    if self.kinetic_func_form in (\"separable_net\", \"dep_net\"):\n      if self.input_space != \"momentum\":\n        raise ValueError(\"Can not evaluate the Kinetic energy from momentum, \"\n                         \"when the input space is velocity and \"\n                         \"kinetic_func_form is separable_net or dep_net.\")\n      if self.kinetic_func_form == \"separable_net\":\n        s = p\n      else:\n        s = jnp.concatenate([q, p], axis=-1)\n      per_dim_energy = self.kinetic_net(s, **kwargs)\n    else:\n      if self.kinetic_embed_net is not None:\n        if self.input_space != \"momentum\":\n          raise ValueError(\"Can not evaluate the Kinetic energy from momentum, \"\n                           \"when the input space is velocity and \"\n                           \"kinetic_func_form is embed_quad, \"\n                           \"matrix_dep_diag_embed_quad or \"\n                           \"matrix_dep_embed_quad.\")\n        p = self.kinetic_embed_net(p, **kwargs)\n      m_inv_p = self.mass_matrix_inv_mul(q, p, **kwargs)\n      per_dim_energy = p * m_inv_p / 2\n\n    return self.sum_per_dim_energy(per_dim_energy)\n\n  def potential_energy_velocity(\n      self,\n      q: jnp.ndarray,\n      q_dot: jnp.ndarray,\n      **kwargs\n  ) -> jnp.ndarray:\n    \"\"\"Computes the potential energy in velocity coordinates.\"\"\"\n    if self.potential_func_form == \"separable_net\":\n      per_dim_energy = self.potential_net(q, **kwargs)\n    elif self.input_space != \"momentum\":\n      raise ValueError(\"Can not evaluate the Potential energy from velocity, \"\n                       \"when the input space is momentum and \"\n                       \"potential_func_form is dep_net.\")\n    else:\n      s = jnp.concatenate([q, q_dot], axis=-1)\n      per_dim_energy = self.potential_net(s, **kwargs)\n    return self.sum_per_dim_energy(per_dim_energy)\n\n  def potential_energy_momentum(\n      self,\n      q: jnp.ndarray,\n      p: jnp.ndarray,\n      **kwargs\n  ) -> jnp.ndarray:\n    \"\"\"Computes the potential energy in momentum coordinates.\"\"\"\n    if self.potential_func_form == \"separable_net\":\n      per_dim_energy = self.potential_net(q, **kwargs)\n    elif self.input_space != \"momentum\":\n      raise ValueError(\"Can not evaluate the Potential energy from momentum, \"\n                       \"when the input space is velocity and \"\n                       \"potential_func_form is dep_net.\")\n    else:\n      s = jnp.concatenate([q, p], axis=-1)\n      per_dim_energy = self.potential_net(s, **kwargs)\n    return self.sum_per_dim_energy(per_dim_energy)\n\n  def hamiltonian(\n      self,\n      s: phase_space.PhaseSpace,\n      **kwargs\n  ) -> jnp.ndarray:\n    \"\"\"Computes the Hamiltonian in momentum coordinates.\"\"\"\n    potential = self.potential_energy_momentum(s.q, s.p, **kwargs)\n    kinetic = self.kinetic_energy_momentum(s.q, s.p, **kwargs)\n    # Sanity check\n    assert potential.shape == kinetic.shape\n    return kinetic + potential\n\n  def lagrangian(\n      self,\n      s: phase_space.PhaseSpace,\n      **kwargs\n  ) -> jnp.ndarray:\n    \"\"\"Computes the Lagrangian in velocity coordinates.\"\"\"\n    potential = self.potential_energy_velocity(s.q, s.p, **kwargs)\n    kinetic = self.kinetic_energy_velocity(s.q, s.p, **kwargs)\n    # Sanity check\n    assert potential.shape == kinetic.shape\n    return kinetic - potential\n\n  def energy_from_momentum(\n      self,\n      s: phase_space.PhaseSpace,\n      **kwargs\n  ) -> jnp.ndarray:\n    \"\"\"Computes the energy of the system in momentum coordinates.\"\"\"\n    return self.hamiltonian(s, **kwargs)\n\n  def energy_from_velocity(\n      self,\n      s: phase_space.PhaseSpace,\n      **kwargs\n  ) -> jnp.ndarray:\n    \"\"\"Computes the energy of the system in velocity coordinates.\"\"\"\n    q, q_dot = s.q, s.p\n    p = self.momentum_from_velocity(q, q_dot, **kwargs)\n    q_dot_p = jnp.sum(q_dot * p, self.features_axis)\n    return q_dot_p - self.lagrangian(s, **kwargs)\n\n  def velocity_and_acceleration(\n      self,\n      q: jnp.ndarray,\n      q_dot: jnp.ndarray,\n      **kwargs\n  ) -> phase_space.TangentPhaseSpace:\n    \"\"\"Computes the velocity and acceleration of the system in velocity coordinates.\"\"\"\n    def local_lagrangian(*q_and_q_dot):\n      # We take the sum so we can easily take gradients\n      return jnp.sum(self.lagrangian(\n          phase_space.PhaseSpace(*q_and_q_dot), **kwargs))\n\n    grad_q = jax.grad(local_lagrangian, 0)(q, q_dot)\n    grad_q_dot_func = jax.grad(local_lagrangian, 1)\n    _, grad_q_dot_grad_q_times_q_dot = jax.jvp(grad_q_dot_func, (q, q_dot),\n                                               (q_dot, jnp.zeros_like(q_dot)))\n    pre_acc_vector = grad_q - grad_q_dot_grad_q_times_q_dot\n    if self.kinetic_func_form in (\"pure_quad\", \"matrix_diag_quad\",\n                                  \"matrix_quad\", \"matrix_dep_diag_quad\",\n                                  \"matrix_dep_quad\"):\n      q_dot_dot = self.mass_matrix_inv_mul(q, pre_acc_vector, **kwargs)\n    else:\n      hess_q_dot = jax.vmap(jax.hessian(local_lagrangian, 1))(q, q_dot)\n      q_dot_dot = jnp.linalg.solve(hess_q_dot, pre_acc_vector)\n    return phase_space.TangentPhaseSpace(q_dot, q_dot_dot)\n\n  def simulate(\n      self,\n      y0: phase_space.PhaseSpace,\n      dt: Union[float, jnp.ndarray],\n      num_steps_forward: int,\n      num_steps_backward: int,\n      include_y0: bool,\n      return_stats: bool = True,\n      **nets_kwargs\n  ) -> _PhysicsSimulationOutput:\n    \"\"\"Simulates the continuous dynamics of the physical system.\n\n    Args:\n      y0: Initial state of the system.\n      dt: The size of the time intervals at which to evolve the system.\n      num_steps_forward: Number of steps to make into the future.\n      num_steps_backward: Number of steps to make into the past.\n      include_y0: Whether to include the initial state in the result.\n      return_stats: Whether to return additional statistics.\n      **nets_kwargs: Keyword arguments to pass to the networks.\n\n    Returns:\n      * The state of the system evolved as many steps as specified by the\n      arguments into the past and future, all in chronological order.\n      * Optionally return a dictionary of additional statistics. For the moment\n        this only returns the energy of the system at each evaluation point.\n    \"\"\"\n    # Define the dynamics\n    if self.simulation_space == \"velocity\":\n      dy_dt = lambda t_, y: self.velocity_and_acceleration(  # pylint: disable=g-long-lambda\n          y.q, y.p, **nets_kwargs)\n      # Special Haiku magic to avoid tracer issues\n      if hk.running_init():\n        return self.lagrangian(y0, **nets_kwargs)  # pytype: disable=bad-return-type  # jax-ndarray\n    else:\n      hamiltonian = lambda t_, y: self.hamiltonian(y, **nets_kwargs)\n      dy_dt = phase_space.poisson_bracket_with_q_and_p(hamiltonian)\n      if hk.running_init():\n        return self.hamiltonian(y0, **nets_kwargs)  # pytype: disable=bad-return-type  # jax-ndarray\n\n    # Optionally switch coordinate frame\n    if self.input_space == \"velocity\" and self.simulation_space == \"momentum\":\n      p = self.momentum_from_velocity(y0.q, y0.p, **nets_kwargs)\n      y0 = phase_space.PhaseSpace(y0.q, p)\n    if self.input_space == \"momentum\" and self.simulation_space == \"velocity\":\n      q_dot = self.velocity_from_momentum(y0.q, y0.p, **nets_kwargs)\n      y0 = phase_space.PhaseSpace(y0.q, q_dot)\n\n    yt = integrators.solve_ivp_dt_two_directions(\n        fun=dy_dt,\n        y0=y0,\n        t0=0.0,\n        dt=dt,\n        method=self.integrator_method,\n        num_steps_forward=num_steps_forward,\n        num_steps_backward=num_steps_backward,\n        include_y0=include_y0,\n        steps_per_dt=self.steps_per_dt,\n        ode_int_kwargs=self.ode_int_kwargs\n    )\n    # Make time axis second\n    yt = jax.tree_map(lambda x: jnp.swapaxes(x, 0, 1), yt)\n\n    # Compute energies for the full trajectory\n    yt_energy = jax.tree_map(utils.merge_first_dims, yt)\n    if self.simulation_space == \"momentum\":\n      energy = self.energy_from_momentum(yt_energy, **nets_kwargs)\n    else:\n      energy = self.energy_from_velocity(yt_energy, **nets_kwargs)\n    energy = energy.reshape(yt.q.shape[:2])\n\n    # Optionally switch back to input coordinate frame\n    if self.input_space == \"velocity\" and self.simulation_space == \"momentum\":\n      q_dot = self.velocity_from_momentum(yt.q, yt.p, **nets_kwargs)\n      yt = phase_space.PhaseSpace(yt.q, q_dot)\n    if self.input_space == \"momentum\" and self.simulation_space == \"velocity\":\n      p = self.momentum_from_velocity(yt.q, yt.p, **nets_kwargs)\n      yt = phase_space.PhaseSpace(yt.q, p)\n\n    # Compute energy deficit\n    t = energy.shape[-1]\n    non_zero_diffs = float((t * (t - 1)) // 2)\n    energy_deficits = jnp.abs(energy[..., None, :] - energy[..., None])\n    avg_deficit = jnp.sum(energy_deficits, axis=(-2, -1)) / non_zero_diffs\n    max_deficit = jnp.max(energy_deficits)\n\n    # Return the states and energies\n    if return_stats:\n      return yt, dict(avg_energy_deficit=avg_deficit,\n                      max_energy_deficit=max_deficit)\n    else:\n      return yt\n\n  def __call__(self, *args, **kwargs):\n    return self.simulate(*args, **kwargs)\n\n\nclass OdeNetwork(hk.Module):\n  \"\"\"A simple haiku module for constructing a NeuralODE.\"\"\"\n\n  def __init__(\n      self,\n      system_dim: int,\n      net_kwargs: Mapping[str, Any],\n      integrator_method: Optional[str] = None,\n      steps_per_dt: int = 1,\n      ode_int_kwargs: Optional[Mapping[str, float]] = None,\n      use_scan: bool = True,\n      network_creation_func=networks.make_flexible_net,\n      name: Optional[str] = None,\n  ):\n    super().__init__(name=name)\n    ode_int_kwargs = dict(ode_int_kwargs or {})\n    ode_int_kwargs.setdefault(\"rtol\", 1e-6)\n    ode_int_kwargs.setdefault(\"atol\", 1e-6)\n    ode_int_kwargs.setdefault(\"mxstep\", 50)\n\n    self.system_dim = system_dim\n    self.integrator_method = integrator_method or \"adaptive\"\n    self.steps_per_dt = steps_per_dt\n    self.ode_int_kwargs = ode_int_kwargs\n    self.net_kwargs = net_kwargs\n    self.use_scan = use_scan\n\n    self.core = network_creation_func(\n        output_dims=system_dim, name=\"Net\", **net_kwargs)\n\n  def simulate(\n      self,\n      y0: jnp.ndarray,\n      dt: Union[float, jnp.ndarray],\n      num_steps_forward: int,\n      num_steps_backward: int,\n      include_y0: bool,\n      return_stats: bool = True,\n      **nets_kwargs\n  ) -> Union[jnp.ndarray, Tuple[jnp.ndarray, Mapping[str, jnp.ndarray]]]:\n    \"\"\"Simulates the continuous dynamics of the ODE specified by the network.\n\n    Args:\n      y0: Initial state of the system.\n      dt: The size of the time intervals at which to evolve the system.\n      num_steps_forward: Number of steps to make into the future.\n      num_steps_backward: Number of steps to make into the past.\n      include_y0: Whether to include the initial state in the result.\n      return_stats: Whether to return additional statistics.\n      **nets_kwargs: Keyword arguments to pass to the networks.\n\n    Returns:\n      * The state of the system evolved as many steps as specified by the\n      arguments into the past and future, all in chronological order.\n      * Optionally return a dictionary of additional statistics. For the moment\n        this is just an empty dictionary.\n    \"\"\"\n    if hk.running_init():\n      return self.core(y0, **nets_kwargs)\n    yt = integrators.solve_ivp_dt_two_directions(\n        fun=lambda t, y: self.core(y, **nets_kwargs),\n        y0=y0,\n        t0=0.0,\n        dt=dt,\n        method=self.integrator_method,\n        num_steps_forward=num_steps_forward,\n        num_steps_backward=num_steps_backward,\n        include_y0=include_y0,\n        steps_per_dt=self.steps_per_dt,\n        ode_int_kwargs=self.ode_int_kwargs\n    )\n    # Make time axis second\n    yt = jax.tree_map(lambda x: jnp.swapaxes(x, 0, 1), yt)\n    if return_stats:\n      return yt, dict()\n    else:\n      return yt\n\n  def __call__(self, *args, **kwargs):\n    return self.simulate(*args, **kwargs)\n\n\nclass DiscreteDynamicsNetwork(hk.Module):\n  \"\"\"A simple haiku module for constructing a discrete dynamics network.\"\"\"\n\n  def __init__(\n      self,\n      system_dim: int,\n      residual: bool,\n      net_kwargs: Mapping[str, Any],\n      use_scan: bool = True,\n      network_creation_func=networks.make_flexible_net,\n      name: Optional[str] = None,\n  ):\n    super().__init__(name=name)\n    self.system_dim = system_dim\n    self.residual = residual\n    self.net_kwargs = net_kwargs\n    self.use_scan = use_scan\n    self.core = network_creation_func(\n        output_dims=system_dim, name=\"Net\", **net_kwargs)\n\n  def simulate(\n      self,\n      y0: jnp.ndarray,\n      num_steps_forward: int,\n      include_y0: bool,\n      return_stats: bool = True,\n      **nets_kwargs\n  ) -> Union[jnp.ndarray, Tuple[jnp.ndarray, Mapping[str, jnp.ndarray]]]:\n    \"\"\"Simulates the dynamics of the discrete system.\n\n    Args:\n      y0: Initial state of the system.\n      num_steps_forward: Number of steps to make into the future.\n      include_y0: Whether to include the initial state in the result.\n      return_stats: Whether to return additional statistics.\n      **nets_kwargs: Keyword arguments to pass to the networks.\n\n    Returns:\n      * The state of the system evolved as many steps as specified by the\n      arguments into the past and future, all in chronological order.\n      * Optionally return a dictionary of additional statistics. For the moment\n        this is just an empty dictionary.\n    \"\"\"\n    if num_steps_forward < 0:\n      raise ValueError(\"It is required to unroll at least one step.\")\n    nets_kwargs.pop(\"dt\", None)\n    nets_kwargs.pop(\"num_steps_backward\", None)\n    if hk.running_init():\n      return self.core(y0, **nets_kwargs)\n\n    def step(*args):\n      y, _ = args\n      if self.residual:\n        y_next = y + self.core(y, **nets_kwargs)\n      else:\n        y_next = self.core(y, **nets_kwargs)\n      return y_next, y_next\n\n    if self.use_scan:\n      _, yt = jax.lax.scan(step, init=y0, xs=None, length=num_steps_forward)\n      if include_y0:\n        yt = jnp.concatenate([y0[None], yt], axis=0)\n      # Make time axis second\n      yt = jax.tree_map(lambda x: jnp.swapaxes(x, 0, 1), yt)\n    else:\n      yt = [y0]\n      for _ in range(num_steps_forward):\n        yt.append(step(yt[-1], None)[0])\n      if not include_y0:\n        yt = yt[1:]\n      if len(yt) == 1:\n        yt = yt[0][:, None]\n      else:\n        yt = jax.tree_map(lambda args: jnp.stack(args, 1), yt)\n    if return_stats:\n      return yt, dict()\n    else:\n      return yt\n\n  def __call__(self, *args, **kwargs):\n    return self.simulate(*args, **kwargs)\n"
  },
  {
    "path": "physics_inspired_models/models/networks.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Module containing all of the networks as Haiku modules.\"\"\"\nfrom typing import Any, Callable, Mapping, Optional, Sequence, Union\n\nfrom absl import logging\nimport distrax\nimport haiku as hk\nimport jax.numpy as jnp\n\nfrom physics_inspired_models import utils\n\nActivation = Union[str, Callable[[jnp.ndarray], jnp.ndarray]]\n\n\nclass DenseNet(hk.Module):\n  \"\"\"A feed forward network (MLP).\"\"\"\n\n  def __init__(\n      self,\n      num_units: Sequence[int],\n      activate_final: bool = False,\n      activation: Activation = \"leaky_relu\",\n      name: Optional[str] = None):\n    super().__init__(name=name)\n    self.num_units = num_units\n    self.num_layers = len(self.num_units)\n    self.activate_final = activate_final\n    self.activation = utils.get_activation(activation)\n\n    self.linear_modules = []\n    for i in range(self.num_layers):\n      self.linear_modules.append(\n          hk.Linear(\n              output_size=self.num_units[i],\n              name=f\"ff_{i}\"\n          )\n      )\n\n  def __call__(self, inputs: jnp.ndarray, is_training: bool):\n    net = inputs\n    for i, linear in enumerate(self.linear_modules):\n      net = linear(net)\n      if i < self.num_layers - 1 or self.activate_final:\n        net = self.activation(net)\n    return net\n\n\nclass Conv2DNet(hk.Module):\n  \"\"\"Convolutional Network.\"\"\"\n\n  def __init__(\n      self,\n      output_channels: Sequence[int],\n      kernel_shapes: Union[int, Sequence[int]] = 3,\n      strides: Union[int, Sequence[int]] = 1,\n      padding: Union[str, Sequence[str]] = \"SAME\",\n      data_format: str = \"NHWC\",\n      with_batch_norm: bool = False,\n      activate_final: bool = False,\n      activation: Activation = \"leaky_relu\",\n      name: Optional[str] = None):\n    super().__init__(name=name)\n    self.output_channels = tuple(output_channels)\n    self.num_layers = len(self.output_channels)\n    self.kernel_shapes = utils.bcast_if(kernel_shapes, int, self.num_layers)\n    self.strides = utils.bcast_if(strides, int, self.num_layers)\n    self.padding = utils.bcast_if(padding, str, self.num_layers)\n    self.data_format = data_format\n    self.with_batch_norm = with_batch_norm\n    self.activate_final = activate_final\n    self.activation = utils.get_activation(activation)\n\n    if len(self.kernel_shapes) != self.num_layers:\n      raise ValueError(f\"Kernel shapes is of size {len(self.kernel_shapes)}, \"\n                       f\"while output_channels is of size{self.num_layers}.\")\n    if len(self.strides) != self.num_layers:\n      raise ValueError(f\"Strides is of size {len(self.kernel_shapes)}, while \"\n                       f\"output_channels is of size{self.num_layers}.\")\n    if len(self.padding) != self.num_layers:\n      raise ValueError(f\"Padding is of size {len(self.padding)}, while \"\n                       f\"output_channels is of size{self.num_layers}.\")\n\n    self.conv_modules = []\n    self.bn_modules = []\n    for i in range(self.num_layers):\n      self.conv_modules.append(\n          hk.Conv2D(\n              output_channels=self.output_channels[i],\n              kernel_shape=self.kernel_shapes[i],\n              stride=self.strides[i],\n              padding=self.padding[i],\n              data_format=data_format,\n              name=f\"conv_2d_{i}\")\n      )\n      if with_batch_norm:\n        self.bn_modules.append(\n            hk.BatchNorm(\n                create_offset=True,\n                create_scale=False,\n                decay_rate=0.999,\n                name=f\"batch_norm_{i}\")\n        )\n      else:\n        self.bn_modules.append(None)\n\n  def __call__(self, inputs: jnp.ndarray, is_training: bool):\n    assert inputs.ndim == 4\n    net = inputs\n    for i, (conv, bn) in enumerate(zip(self.conv_modules, self.bn_modules)):\n      net = conv(net)\n      # Batch norm\n      if bn is not None:\n        net = bn(net, is_training=is_training)\n      if i < self.num_layers - 1 or self.activate_final:\n        net = self.activation(net)\n    return net\n\n\nclass SpatialConvEncoder(hk.Module):\n  \"\"\"Spatial Convolutional Encoder for learning the Hamiltonian.\"\"\"\n\n  def __init__(\n      self,\n      latent_dim: int,\n      conv_channels: Union[Sequence[int], int],\n      num_blocks: int,\n      blocks_depth: int = 2,\n      distribution_name: str = \"diagonal_normal\",\n      aggregation_type: Optional[str] = None,\n      data_format: str = \"NHWC\",\n      activation: Activation = \"leaky_relu\",\n      scale_factor: int = 2,\n      kernel_shapes: Union[Sequence[int], int] = 3,\n      padding: Union[Sequence[str], str] = \"SAME\",\n      name: Optional[str] = None):\n    super().__init__(name=name)\n    if aggregation_type not in (None, \"max\", \"mean\", \"linear_projection\"):\n      raise ValueError(f\"Unrecognized aggregation_type={aggregation_type}.\")\n    self.latent_dim = latent_dim\n    self.conv_channels = conv_channels\n    self.num_blocks = num_blocks\n    self.scale_factor = scale_factor\n    self.data_format = data_format\n    self.distribution_name = distribution_name\n    self.aggregation_type = aggregation_type\n\n    # Compute the required size of the output\n    if distribution_name is None:\n      self.output_dim = latent_dim\n    elif distribution_name == \"diagonal_normal\":\n      self.output_dim = 2 * latent_dim\n    else:\n      raise ValueError(f\"Unrecognized distribution_name={distribution_name}.\")\n\n    if isinstance(conv_channels, int):\n      conv_channels = [[conv_channels] * blocks_depth\n                       for _ in range(num_blocks)]\n      conv_channels[-1] += [self.output_dim]\n    else:\n      assert isinstance(conv_channels, (list, tuple))\n      assert len(conv_channels) == num_blocks\n      conv_channels = list(list(c) for c in conv_channels)\n      conv_channels[-1].append(self.output_dim)\n\n    if isinstance(kernel_shapes, tuple):\n      kernel_shapes = list(kernel_shapes)\n\n    # Convolutional blocks\n    self.blocks = []\n    for i, channels in enumerate(conv_channels):\n      if isinstance(kernel_shapes, int):\n        extra_kernel_shapes = 0\n      else:\n        extra_kernel_shapes = [3] * (len(channels) - len(kernel_shapes))\n\n      self.blocks.append(Conv2DNet(\n          output_channels=channels,\n          kernel_shapes=kernel_shapes + extra_kernel_shapes,\n          strides=[self.scale_factor] + [1] * (len(channels) - 1),\n          padding=padding,\n          data_format=data_format,\n          with_batch_norm=False,\n          activate_final=i < num_blocks - 1,\n          activation=activation,\n          name=f\"block_{i}\"\n      ))\n\n  def spatial_aggregation(self, x: jnp.ndarray) -> jnp.ndarray:\n    if self.aggregation_type is None:\n      return x\n    axis = (1, 2) if self.data_format == \"NHWC\" else (2, 3)\n    if self.aggregation_type == \"max\":\n      return jnp.max(x, axis=axis)\n    if self.aggregation_type == \"mean\":\n      return jnp.mean(x, axis=axis)\n    if self.aggregation_type == \"linear_projection\":\n      x = x.reshape(x.shape[:-3] + (-1,))\n      return hk.Linear(self.output_dim, name=\"LinearProjection\")(x)\n    raise NotImplementedError()\n\n  def make_distribution(self, net_output: jnp.ndarray) -> distrax.Distribution:\n    if self.distribution_name is None:\n      return net_output\n    elif self.distribution_name == \"diagonal_normal\":\n      if self.aggregation_type is None:\n        split_axis, num_axes = self.data_format.index(\"C\"), 3\n      else:\n        split_axis, num_axes = 1, 1\n      # Add an extra axis if the input has more than 1 batch dimension\n      split_axis += net_output.ndim - num_axes - 1\n      loc, log_scale = jnp.split(net_output, 2, axis=split_axis)\n      return distrax.Normal(loc, jnp.exp(log_scale))\n    else:\n      raise NotImplementedError()\n\n  def __call__(\n      self,\n      inputs: jnp.ndarray,\n      is_training: bool\n  ) -> Union[jnp.ndarray, distrax.Distribution]:\n    # Treat any extra dimensions (like time) as the batch\n    batched_shape = inputs.shape[:-3]\n    net = jnp.reshape(inputs, (-1,) + inputs.shape[-3:])\n\n    # Apply all blocks in sequence\n    for block in self.blocks:\n      net = block(net, is_training=is_training)\n\n    # Final projection\n    net = self.spatial_aggregation(net)\n\n    # Reshape back to correct dimensions (like batch + time)\n    net = jnp.reshape(net, batched_shape + net.shape[1:])\n\n    # Return a distribution over the observations\n    return self.make_distribution(net)\n\n\nclass SpatialConvDecoder(hk.Module):\n  \"\"\"Spatial Convolutional Decoder for learning the Hamiltonian.\"\"\"\n\n  def __init__(\n      self,\n      initial_spatial_shape: Sequence[int],\n      conv_channels: Union[Sequence[int], int],\n      num_blocks: int,\n      max_de_aggregation_dims: int,\n      blocks_depth: int = 2,\n      scale_factor: int = 2,\n      output_channels: int = 3,\n      h_const_channels: int = 2,\n      data_format: str = \"NHWC\",\n      activation: Activation = \"leaky_relu\",\n      learned_sigma: bool = False,\n      de_aggregation_type: Optional[str] = None,\n      final_activation: Activation = \"sigmoid\",\n      discard_half_de_aggregated: bool = False,\n      kernel_shapes: Union[Sequence[int], int] = 3,\n      padding: Union[Sequence[str], str] = \"SAME\",\n      name: Optional[str] = None):\n    super().__init__(name=name)\n    if de_aggregation_type not in (None, \"tile\", \"linear_projection\"):\n      raise ValueError(f\"Unrecognized de_aggregation_type=\"\n                       f\"{de_aggregation_type}.\")\n    self.num_blocks = num_blocks\n    self.scale_factor = scale_factor\n    self.h_const_channels = h_const_channels\n    self.data_format = data_format\n    self.learned_sigma = learned_sigma\n    self.initial_spatial_shape = tuple(initial_spatial_shape)\n    self.final_activation = utils.get_activation(final_activation)\n    self.de_aggregation_type = de_aggregation_type\n    self.max_de_aggregation_dims = max_de_aggregation_dims\n    self.discard_half_de_aggregated = discard_half_de_aggregated\n\n    if isinstance(conv_channels, int):\n      conv_channels = [[conv_channels] * blocks_depth\n                       for _ in range(num_blocks)]\n      conv_channels[-1] += [output_channels]\n    else:\n      assert isinstance(conv_channels, (list, tuple))\n      assert len(conv_channels) == num_blocks\n      conv_channels = list(list(c) for c in conv_channels)\n      conv_channels[-1].append(output_channels)\n\n    # Convolutional blocks\n    self.blocks = []\n    for i, channels in enumerate(conv_channels):\n      is_final_block = i == num_blocks - 1\n      self.blocks.append(\n          Conv2DNet(  # pylint: disable=g-complex-comprehension\n              output_channels=channels,\n              kernel_shapes=kernel_shapes,\n              strides=1,\n              padding=padding,\n              data_format=data_format,\n              with_batch_norm=False,\n              activate_final=not is_final_block,\n              activation=activation,\n              name=f\"block_{i}\"\n          ))\n\n  def spatial_de_aggregation(self, x: jnp.ndarray) -> jnp.ndarray:\n    if self.de_aggregation_type is None:\n      assert x.ndim >= 4\n      if self.data_format == \"NHWC\":\n        assert x.shape[1:3] == self.initial_spatial_shape\n      elif self.data_format == \"NCHW\":\n        assert x.shape[2:4] == self.initial_spatial_shape\n      return x\n    elif self.de_aggregation_type == \"linear_projection\":\n      assert x.ndim == 2\n      n, d = x.shape\n      d = min(d, self.max_de_aggregation_dims or d)\n      out_d = d * self.initial_spatial_shape[0] * self.initial_spatial_shape[1]\n      x = hk.Linear(out_d, name=\"LinearProjection\")(x)\n      if self.data_format == \"NHWC\":\n        shape = (n,) + self.initial_spatial_shape + (d,)\n      else:\n        shape = (n, d) + self.initial_spatial_shape\n      return x.reshape(shape)\n    elif self.de_aggregation_type == \"tile\":\n      assert x.ndim == 2\n      if self.data_format == \"NHWC\":\n        repeats = (1,) + self.initial_spatial_shape + (1,)\n        x = x[:, None, None, :]\n      else:\n        repeats = (1, 1) + self.initial_spatial_shape\n        x = x[:, :, None, None]\n      return jnp.tile(x, repeats)\n    else:\n      raise NotImplementedError()\n\n  def add_constant_channels(self, inputs: jnp.ndarray) -> jnp.ndarray:\n    # --------------------------------------------\n    # This is purely for TF compatibility purposes\n    if self.discard_half_de_aggregated:\n      axis = self.data_format.index(\"C\")\n      inputs, _ = jnp.split(inputs, 2, axis=axis)\n    # --------------------------------------------\n\n    # An extra constant channels\n    if self.data_format == \"NHWC\":\n      h_shape = self.initial_spatial_shape + (self.h_const_channels,)\n    else:\n      h_shape = (self.h_const_channels,) + self.initial_spatial_shape\n    h_const = hk.get_parameter(\"h\", h_shape, dtype=inputs.dtype,\n                               init=hk.initializers.Constant(1))\n    h_const = jnp.tile(h_const, reps=[inputs.shape[0], 1, 1, 1])\n    return jnp.concatenate([h_const, inputs], axis=self.data_format.index(\"C\"))\n\n  def make_distribution(self, net_output: jnp.ndarray) -> distrax.Distribution:\n    if self.learned_sigma:\n      init = hk.initializers.Constant(- jnp.log(2.0) / 2.0)\n      log_scale = hk.get_parameter(\"log_scale\", shape=(),\n                                   dtype=net_output.dtype, init=init)\n      scale = jnp.full_like(net_output, jnp.exp(log_scale))\n    else:\n      scale = jnp.full_like(net_output, 1 / jnp.sqrt(2.0))\n\n    return distrax.Normal(net_output, scale)\n\n  def __call__(\n      self,\n      inputs: jnp.ndarray,\n      is_training: bool\n  ) -> distrax.Distribution:\n    # Apply the spatial de-aggregation\n    inputs = self.spatial_de_aggregation(inputs)\n\n    # Add the parameterized constant channels\n    net = self.add_constant_channels(inputs)\n\n    # Apply all the blocks\n    for block in self.blocks:\n      # Up-sample the image\n      net = utils.nearest_neighbour_upsampling(net, self.scale_factor)\n      # Apply the convolutional block\n      net = block(net, is_training=is_training)\n\n    # Apply any specific output nonlinearity\n    net = self.final_activation(net)\n\n    # Construct the distribution over the observations\n    return self.make_distribution(net)\n\n\ndef make_flexible_net(\n    net_type: str,\n    output_dims: int,\n    conv_channels: Union[Sequence[int], int],\n    num_units: Union[Sequence[int], int],\n    num_layers: Optional[int],\n    activation: Activation,\n    activate_final: bool = False,\n    kernel_shapes: Union[Sequence[int], int] = 3,\n    strides: Union[Sequence[int], int] = 1,\n    padding: Union[Sequence[str], str] = \"SAME\",\n    name: Optional[str] = None,\n    **unused_kwargs: Mapping[str, Any]\n):\n  \"\"\"Commonly used for creating a flexible network.\"\"\"\n  if unused_kwargs:\n    logging.warning(\"Unused kwargs of `make_flexible_net`: %s\",\n                    str(unused_kwargs))\n  if net_type == \"mlp\":\n    if isinstance(num_units, int):\n      assert num_layers is not None\n      num_units = [num_units] * (num_layers - 1) + [output_dims]\n    else:\n      num_units = list(num_units) + [output_dims]\n    return DenseNet(\n        num_units=num_units,\n        activation=activation,\n        activate_final=activate_final,\n        name=name\n    )\n  elif net_type == \"conv\":\n    if isinstance(conv_channels, int):\n      assert num_layers is not None\n      conv_channels = [conv_channels] * (num_layers - 1) + [output_dims]\n    else:\n      conv_channels = list(conv_channels) + [output_dims]\n    return Conv2DNet(\n        output_channels=conv_channels,\n        kernel_shapes=kernel_shapes,\n        strides=strides,\n        padding=padding,\n        activation=activation,\n        activate_final=activate_final,\n        name=name\n    )\n  elif net_type == \"transformer\":\n    raise NotImplementedError()\n  else:\n    raise ValueError(f\"Unrecognized net_type={net_type}.\")\n\n\ndef make_flexible_recurrent_net(\n    core_type: str,\n    net_type: str,\n    output_dims: int,\n    num_units: Union[Sequence[int], int],\n    num_layers: Optional[int],\n    activation: Activation,\n    activate_final: bool = False,\n    name: Optional[str] = None,\n    **unused_kwargs\n):\n  \"\"\"Commonly used for creating a flexible recurrences.\"\"\"\n  if net_type != \"mlp\":\n    raise ValueError(\"We do not support convolutional recurrent nets atm.\")\n  if unused_kwargs:\n    logging.warning(\"Unused kwargs of `make_flexible_recurrent_net`: %s\",\n                    str(unused_kwargs))\n\n  if isinstance(num_units, (list, tuple)):\n    num_units = list(num_units) + [output_dims]\n    num_layers = len(num_units)\n  else:\n    assert num_layers is not None\n    num_units = [num_units] * (num_layers - 1) + [output_dims]\n  name = name or f\"{core_type.upper()}\"\n\n  activation = utils.get_activation(activation)\n  core_list = []\n  for i, n in enumerate(num_units):\n    if core_type.lower() == \"vanilla\":\n      core_list.append(hk.VanillaRNN(hidden_size=n, name=f\"{name}_{i}\"))\n    elif core_type.lower() == \"lstm\":\n      core_list.append(hk.LSTM(hidden_size=n, name=f\"{name}_{i}\"))\n    elif core_type.lower() == \"gru\":\n      core_list.append(hk.GRU(hidden_size=n, name=f\"{name}_{i}\"))\n    else:\n      raise ValueError(f\"Unrecognized core_type={core_type}.\")\n    if i != num_layers - 1:\n      core_list.append(activation)\n  if activate_final:\n    core_list.append(activation)\n\n  return hk.DeepRNN(core_list, name=\"RNN\")\n"
  },
  {
    "path": "physics_inspired_models/requirements.txt",
    "content": "git+https://github.com/deepmind/dm_hamiltonian_dynamics_suite@main#egg=dm_hamiltonian_dynamics_suite\nabsl-py==0.12.0\nnumpy>=1.16.4\nscikit-learn>=1.0\ntyping>=3.7.4.3\njax==0.2.20\njaxline==0.0.3\ndistrax==0.0.2\noptax==0.0.6\ndm-haiku==0.0.3\n"
  },
  {
    "path": "physics_inspired_models/setup.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Setup for pip package.\"\"\"\nfrom setuptools import setup\n\nREQUIRED_PACKAGES = (\n    \"dm_hamiltonian_dynamics_suite@git+https://github.com/deepmind/dm_hamiltonian_dynamics_suite\",  # pylint: disable=line-too-long.\n    \"absl-py>=0.12.0\",\n    \"numpy>=1.16.4\",\n    \"scikit-learn>=1.0\",\n    \"typing>=3.7.4.3\",\n    \"jax==0.2.20\",\n    \"jaxline==0.0.3\",\n    \"distrax==0.0.2\",\n    \"optax==0.0.6\",\n    \"dm-haiku==0.0.3\",\n)\n\nLONG_DESCRIPTION = \"\\n\".join([\n    \"A codebase containing the implementation of the following models:\",\n    \"Hamiltonian Generative Network (HGN)\",\n    \"Lagrangian Generative Network (LGN)\",\n    \"Neural ODE\",\n    \"Recurrent Generative Network (RGN)\",\n    \"and RNN, LSTM and GRU.\",\n    \"This is code accompanying the publication of:\"\n])\n\n\nsetup(\n    name=\"physics_inspired_models\",\n    version=\"0.0.1\",\n    description=\"Implementation of multiple physically inspired models.\",\n    long_description=LONG_DESCRIPTION,\n    url=\"https://github.com/deepmind/deepmind-research/physics_inspired_models\",\n    author=\"DeepMind\",\n    package_dir={\"physics_inspired_models\": \".\"},\n    packages=[\"physics_inspired_models\", \"physics_inspired_models.models\"],\n    install_requires=REQUIRED_PACKAGES,\n    platforms=[\"any\"],\n    license=\"Apache License, Version 2.0\",\n)\n"
  },
  {
    "path": "physics_inspired_models/utils.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Utilities functions for Jax.\"\"\"\nfrom collections import abc\nimport functools\nfrom typing import Any, Callable, Dict, Mapping, Union\n\nimport distrax\nimport jax\nfrom jax import core\nfrom jax import lax\nfrom jax import nn\nimport jax.numpy as jnp\nfrom jax.tree_util import register_pytree_node\nfrom jaxline import utils\nimport numpy as np\n\nHaikuParams = Mapping[str, Mapping[str, jnp.ndarray]]\nParams = Union[Mapping[str, jnp.ndarray], HaikuParams, jnp.ndarray]\n_Activation = Callable[[jnp.ndarray], jnp.ndarray]\n\ntf_leaky_relu = functools.partial(nn.leaky_relu, negative_slope=0.2)\n\n\ndef filter_only_scalar_stats(stats):\n  return {k: v for k, v in stats.items() if v.size == 1}\n\n\ndef to_numpy(obj):\n  return jax.tree_map(np.array, obj)\n\n\n@jax.custom_gradient\ndef geco_lagrange_product(lagrange_multiplier, constraint_ema, constraint_t):\n  \"\"\"Modifies the gradients so that they work as described in GECO.\n\n  The evaluation gives:\n    lagrange * C_ema\n  The gradient w.r.t lagrange:\n    - g * C_t\n  The gradient w.r.t constraint_ema:\n    0.0\n  The gradient w.r.t constraint_t:\n    g * lagrange\n\n  Note that if you pass the same value for `constraint_ema` and `constraint_t`\n  this would only flip the gradient for the lagrange multiplier.\n\n  Args:\n    lagrange_multiplier: The lagrange multiplier\n    constraint_ema: The moving average of the constraint\n    constraint_t: The current constraint\n\n  Returns:\n\n  \"\"\"\n  def grad(gradient):\n    return (- gradient * constraint_t,\n            jnp.zeros_like(constraint_ema),\n            gradient * lagrange_multiplier)\n  return lagrange_multiplier * constraint_ema, grad\n\n\ndef bcast_if(x, t, n):\n  return [x] * n if isinstance(x, t) else x\n\n\ndef stack_time_into_channels(\n    images: jnp.ndarray,\n    data_format: str\n) -> jnp.ndarray:\n  axis = data_format.index(\"C\")\n  list_of_time = [jnp.squeeze(v, axis=1) for v in\n                  jnp.split(images, images.shape[1], axis=1)]\n  return jnp.concatenate(list_of_time, axis)\n\n\ndef stack_device_dim_into_batch(obj):\n  return jax.tree_map(lambda x: x.reshape((-1,) + x.shape[2:]), obj)\n\n\ndef nearest_neighbour_upsampling(x, scale, data_format=\"NHWC\"):\n  \"\"\"Performs nearest-neighbour upsampling.\"\"\"\n\n  if data_format == \"NCHW\":\n    b, c, h, w = x.shape\n    x = jnp.reshape(x, [b, c, h, 1, w, 1])\n    ones = jnp.ones([1, 1, 1, scale, 1, scale], dtype=x.dtype)\n    return jnp.reshape(x * ones, [b, c, scale * h, scale * w])\n  elif data_format == \"NHWC\":\n    b, h, w, c = x.shape\n    x = jnp.reshape(x, [b, h, 1, w, 1, c])\n    ones = jnp.ones([1, 1, scale, 1, scale, 1], dtype=x.dtype)\n    return jnp.reshape(x * ones, [b, scale * h, scale * w, c])\n  else:\n    raise ValueError(f\"Unrecognized data_format={data_format}.\")\n\n\ndef get_activation(arg: Union[_Activation, str]) -> _Activation:\n  \"\"\"Returns an activation from provided string.\"\"\"\n  if isinstance(arg, str):\n    # Try fetch in order - [this module, jax.nn, jax.numpy]\n    if arg in globals():\n      return globals()[arg]\n    if hasattr(nn, arg):\n      return getattr(nn, arg)\n    elif hasattr(jnp, arg):\n      return getattr(jnp, arg)\n    else:\n      raise ValueError(f\"Unrecognized activation with name {arg}.\")\n  if not callable(arg):\n    raise ValueError(f\"Expected a callable, but got {type(arg)}\")\n  return arg\n\n\ndef merge_first_dims(x: jnp.ndarray, num_dims_to_merge: int = 2) -> jnp.ndarray:\n  return x.reshape((-1,) + x.shape[num_dims_to_merge:])\n\n\ndef extract_image(\n    inputs: Union[jnp.ndarray, Mapping[str, jnp.ndarray]]\n) -> jnp.ndarray:\n  \"\"\"Extracts a tensor with key `image` or `x_image` if it is a dict, otherwise returns the inputs.\"\"\"\n  if isinstance(inputs, dict):\n    if \"image\" in inputs:\n      return inputs[\"image\"]\n    else:\n      return inputs[\"x_image\"]\n  elif isinstance(inputs, jnp.ndarray):\n    return inputs\n  raise NotImplementedError(f\"Not implemented of inputs of type\"\n                            f\" {type(inputs)}.\")\n\n\ndef extract_gt_state(inputs: Any) -> jnp.ndarray:\n  if isinstance(inputs, dict):\n    return inputs[\"x\"]\n  elif not isinstance(inputs, jnp.ndarray):\n    raise NotImplementedError(f\"Not implemented of inputs of type\"\n                              f\" {type(inputs)}.\")\n  return inputs\n\n\ndef reshape_latents_conv_to_flat(conv_latents, axis_n_to_keep=1):\n  q, p = jnp.split(conv_latents, 2, axis=-1)\n  q = jax.tree_map(lambda x: x.reshape(x.shape[:axis_n_to_keep] + (-1,)), q)\n  p = jax.tree_map(lambda x: x.reshape(x.shape[:axis_n_to_keep] + (-1,)), p)\n  flat_latents = jnp.concatenate([q, p], axis=-1)\n\n  return flat_latents\n\n\ndef triu_matrix_from_v(x, ndim):\n  assert x.shape[-1] == (ndim * (ndim + 1)) // 2\n  matrix = jnp.zeros(x.shape[:-1] + (ndim, ndim))\n  idx = jnp.triu_indices(ndim)\n  index_update = lambda x, idx, y: x.at[idx].set(y)\n  for _ in range(x.ndim - 1):\n    index_update = jax.vmap(index_update, in_axes=(0, None, 0))\n  return index_update(matrix, idx, x)\n\n\ndef flatten_dict(d, parent_key: str = \"\", sep: str = \"_\") -> Dict[str, Any]:\n  items = []\n  for k, v in d.items():\n    new_key = parent_key + sep + k if parent_key else k\n    if isinstance(v, abc.MutableMapping):\n      items.extend(flatten_dict(v, new_key, sep=sep).items())\n    else:\n      items.append((new_key, v))\n  return dict(items)\n\n\ndef convert_to_pytype(target, reference):\n  \"\"\"Makes target the same pytype as reference, by jax.tree_flatten.\"\"\"\n  _, pytree = jax.tree_flatten(reference)\n  leaves, _ = jax.tree_flatten(target)\n  return jax.tree_unflatten(pytree, leaves)\n\n\ndef func_if_not_scalar(func):\n  \"\"\"Makes a function that uses func only on non-scalar values.\"\"\"\n  @functools.wraps(func)\n  def wrapped(array, axis=0):\n    if array.ndim == 0:\n      return array\n    return func(array, axis=axis)\n  return wrapped\n\n\nmean_if_not_scalar = func_if_not_scalar(jnp.mean)\n\n\nclass MultiBatchAccumulator(object):\n  \"\"\"Class for abstracting statistics accumulation over multiple batches.\"\"\"\n\n  def __init__(self):\n    self._obj = None\n    self._obj_max = None\n    self._obj_min = None\n    self._num_samples = None\n\n  def add(self, averaged_values, num_samples):\n    \"\"\"Adds an element to the moving average and the max.\"\"\"\n    if self._obj is None:\n      self._obj_max = jax.tree_map(lambda y: y * 1.0, averaged_values)\n      self._obj_min = jax.tree_map(lambda y: y * 1.0, averaged_values)\n      self._obj = jax.tree_map(lambda y: y * num_samples, averaged_values)\n      self._num_samples = num_samples\n    else:\n      self._obj_max = jax.tree_map(jnp.maximum, self._obj_max,\n                                        averaged_values)\n      self._obj_min = jax.tree_map(jnp.minimum, self._obj_min,\n                                        averaged_values)\n      self._obj = jax.tree_map(lambda x, y: x + y * num_samples, self._obj,\n                                    averaged_values)\n      self._num_samples += num_samples\n\n  def value(self):\n    return jax.tree_map(lambda x: x / self._num_samples, self._obj)\n\n  def max(self):\n    return jax.tree_map(float, self._obj_max)\n\n  def min(self):\n    return jax.tree_map(float, self._obj_min)\n\n  def sum(self):\n    return self._obj\n\n\nregister_pytree_node(\n    distrax.Normal,\n    lambda instance: ([instance.loc, instance.scale], None),\n    lambda _, args: distrax.Normal(*args)\n)\n\n\ndef inner_product(x: Any, y: Any) -> jnp.ndarray:\n  products = jax.tree_map(lambda x_, y_: jnp.sum(x_ * y_), x, y)\n  return sum(jax.tree_leaves(products))\n\n\nget_first = utils.get_first\nbcast_local_devices = utils.bcast_local_devices\npy_prefetch = utils.py_prefetch\np_split = jax.pmap(lambda x, num: list(jax.random.split(x, num)),\n                   static_broadcasted_argnums=1)\n\n\ndef wrap_if_pmap(p_func):\n  def p_func_if_pmap(obj, axis_name):\n    try:\n      core.axis_frame(axis_name)\n      return p_func(obj, axis_name)\n    except NameError:\n      return obj\n  return p_func_if_pmap\n\n\npmean_if_pmap = wrap_if_pmap(lax.pmean)\npsum_if_pmap = wrap_if_pmap(lax.psum)\n"
  },
  {
    "path": "physics_planning_games/README.md",
    "content": "# Physically Embedded Planning Environments\n\nThis repository contains the three environments introduced in\n'Physically Embedded Planning Problems: New Challenges for Reinforcement\nLearning'\n\nIf you use this package, please cite our accompanying [tech report]:\n\n```\n@misc{mirza2020physically,\n    title={Physically Embedded Planning Problems: New Challenges for Reinforcement Learning},\n    author={Mehdi Mirza and Andrew Jaegle and Jonathan J. Hunt and Arthur Guez and Saran Tunyasuvunakool and Alistair Muldal and Théophane Weber and Peter Karkus and Sébastien Racanière and Lars Buesing and Timothy Lillicrap and Nicolas Heess},\n    year={2020},\n    eprint={2009.05524},\n    archivePrefix={arXiv},\n    primaryClass={cs.AI}\n}\n```\n\n## Requirements and Installation\n\nThis repository is divided into 'mujoban' and 'board_games' folders.\nBoth of them are built on top of [dm_control] which requires MuJoCo. Please\nfollow [these] instructions to install MuJoCo.\nOther dependencies can be installed\nby:\n```\npip3 install -r requirements.txt\n```\n### Board games\nThe game logic is based on [open_spiel]. Please install as instructed [here].\n[gnugo] is required to play the game of Go against a non-random opponent. [gnugo] can be installed in Ubuntu by:\n```\napt install gnugo\n```\n\nBoard game scripts expect gnugo binary to be at: `/usr/games/gnugo`. Users can\nchange this path inside `board_games/go_logic.py`\n\nThis library has only been tested on Ubuntu.\n\n## Example usage\n\nThe code snippets below show examples of instantiating each of the environments.\n\n### Mujoban\n\n```python\nfrom dm_control import composer\nfrom dm_control.locomotion import walkers\nfrom physics_planning_games.mujoban.mujoban import Mujoban\nfrom physics_planning_games.mujoban.mujoban_level import MujobanLevel\nfrom physics_planning_games.mujoban.boxoban import boxoban_level_generator\n\nwalker = walkers.JumpingBallWithHead(add_ears=True, camera_height=0.25)\nmaze = MujobanLevel(boxoban_level_generator)\ntask = Mujoban(walker=walker,\n               maze=maze,\n               control_timestep=0.1,\n               top_camera_height=96,\n               top_camera_width=96)\nenv = composer.Environment(time_limit=1000, task=task)\n```\n\n### Board games\n\n```python\nfrom  physics_planning_games  import  board_games\n\nenvironment_name = 'go_7x7'\nenv = board_games.load(environment_name=environment_name)\n```\n\n### Stepping through environment.\n\nThe returned environments are of type of `dm_env.Environment` and can be stepped\nthrough as shown here with random actions:\n\n```python\nimport numpy as np\n\ntimestep = env.reset()\naction_spec = env.action_spec()\nwhile True:\n  action = np.stack([\n      np.random.uniform(low=minimum, high=maximum)\n      for minimum, maximum in zip(action_spec.minimum, action_spec.maximum)\n  ])\n  timestep = env.step(action)\n```\n\n### Visualization\n\nFor visualization of the environments `explore.py` loads them using the [viewer]\nfrom [dm_control].\n\n## More details\n\nFor more details please refer to the [tech report], [dm_control] and [dm_env].\n\n[tech report]: https://arxiv.org/abs/2009.05524\n[dm_control]: https://github.com/deepmind/dm_control\n[dm_env]: https://github.com/deepmind/dm_env\n[gnugo]: https://www.gnu.org/software/gnugo/\n[open_spiel]: https://github.com/deepmind/open_spiel\n[here]: https://github.com/deepmind/open_spiel/blob/master/docs/install.md\n[these]: https://github.com/deepmind/dm_control#requirements-and-installation\n[viewer]: https://github.com/deepmind/dm_control/tree/master/dm_control/viewer\n"
  },
  {
    "path": "physics_planning_games/board_games/__init__.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Physically-grounded board game environments.\"\"\"\n\nfrom dm_control import composer as _composer\n\nfrom physics_planning_games.board_games import go as _go\nfrom physics_planning_games.board_games import tic_tac_toe as _tic_tac_toe\nfrom physics_planning_games.board_games._internal import registry as _registry\n\n_registry.done_importing_tasks()\n\nALL = tuple(_registry.get_all_names())\nTAGS = tuple(_registry.get_tags())\n\n\ndef get_environments_by_tag(tag):\n  \"\"\"Returns the names of all environments matching a given tag.\n\n  Args:\n    tag: A string from `TAGS`.\n\n  Returns:\n    A tuple of environment names.\n  \"\"\"\n  return tuple(_registry.get_names_by_tag(tag))\n\n\ndef load(environment_name,\n         env_kwargs=None,\n         seed=None,\n         time_limit=float('inf'),\n         strip_singleton_obs_buffer_dim=False):\n  \"\"\"Loads an environment from board_games.\n\n  Args:\n    environment_name: String, the name of the environment to load. Must be in\n      `ALL`.\n    env_kwargs: extra params to pass to task creation.\n    seed: Optional, either an int seed or an `np.random.RandomState`\n      object. If None (default), the random number generator will self-seed\n      from a platform-dependent source of entropy.\n    time_limit: (optional) A float, the time limit in seconds beyond which an\n      episode is forced to terminate.\n    strip_singleton_obs_buffer_dim: (optional) A boolean, if `True`,\n      the array shape of observations with `buffer_size == 1` will not have a\n      leading buffer dimension.\n\n  Returns:\n    An instance of `composer.Environment`.\n  \"\"\"\n  if env_kwargs is not None:\n    task = _registry.get_constructor(environment_name)(**env_kwargs)\n  else:\n    task = _registry.get_constructor(environment_name)()\n  return _composer.Environment(\n      task=task,\n      time_limit=time_limit,\n      strip_singleton_obs_buffer_dim=strip_singleton_obs_buffer_dim,\n      random_state=seed)\n"
  },
  {
    "path": "physics_planning_games/board_games/_internal/arenas.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Board game-specific arena classes.\"\"\"\n\n\nfrom dm_control import composer\nfrom dm_control.composer.observation import observable\nfrom dm_control.mujoco import wrapper\n\n# Robot geoms will be assigned to this group in order to disable their\n# visibility to the top-down camera.\nROBOT_GEOM_GROUP = 1\n\n\nclass Standard(composer.Arena):\n  \"\"\"\"Board game-specific arena class.\"\"\"\n\n  def _build(self, name=None):\n    \"\"\"Initializes this arena.\n\n    Args:\n      name: (optional) A string, the name of this arena. If `None`, use the\n        model name defined in the MJCF file.\n    \"\"\"\n    super(Standard, self)._build(name=name)\n\n    # Add visual assets.\n    self.mjcf_model.asset.add(\n        'texture',\n        type='skybox',\n        builtin='gradient',\n        rgb1=(0.4, 0.6, 0.8),\n        rgb2=(0., 0., 0.),\n        width=100,\n        height=100)\n    groundplane_texture = self.mjcf_model.asset.add(\n        'texture',\n        name='groundplane',\n        type='2d',\n        builtin='checker',\n        rgb1=(0.2, 0.3, 0.4),\n        rgb2=(0.1, 0.2, 0.3),\n        width=300,\n        height=300,\n        mark='edge',\n        markrgb=(.8, .8, .8))\n    groundplane_material = self.mjcf_model.asset.add(\n        'material',\n        name='groundplane',\n        texture=groundplane_texture,\n        texrepeat=(5, 5),\n        texuniform='true',\n        reflectance=0.2)\n\n    # Add ground plane.\n    self.mjcf_model.worldbody.add(\n        'geom',\n        name='ground',\n        type='plane',\n        material=groundplane_material,\n        size=(1, 1, 0.1),\n        friction=(0.4,),\n        solimp=(0.95, 0.99, 0.001),\n        solref=(0.002, 1))\n\n    # Add lighting\n    self.mjcf_model.worldbody.add(\n        'light',\n        pos=(0, 0, 1.5),\n        dir=(0, 0, -1),\n        diffuse=(0.7, 0.7, 0.7),\n        specular=(.3, .3, .3),\n        directional='false',\n        castshadow='true')\n\n    # Add some fixed cameras to the arena.\n    self._front_camera = self.mjcf_model.worldbody.add(\n        'camera',\n        name='front',\n        pos=(0., -0.6, 0.75),\n        xyaxes=(1., 0., 0., 0., 0.7, 0.75))\n\n    # Ensures a 7x7 go board fits into the view from camera\n    self._front_camera_2 = self.mjcf_model.worldbody.add(\n        'camera',\n        name='front_2',\n        pos=(0., -0.65, 0.85),\n        xyaxes=(1., 0., 0., 0., 0.85, 0.6))\n\n    self._top_down_camera = self.mjcf_model.worldbody.add(\n        'camera',\n        name='top_down',\n        pos=(0., 0., 0.5),\n        xyaxes=(1., 0., 0., 0., 1., 0.))\n\n    # Always initialize the free camera so that it points at the origin.\n    self.mjcf_model.statistic.center = (0., 0., 0.)\n\n  def _build_observables(self):\n    return ArenaObservables(self)\n\n  @property\n  def front_camera(self):\n    return self._front_camera\n\n  @property\n  def front_camera_2(self):\n    return self._front_camera_2\n\n  @property\n  def top_down_camera(self):\n    return self._top_down_camera\n\n  def attach_offset(self, entity, offset, attach_site=None):\n    \"\"\"Attaches another entity at a position offset from the attachment site.\n\n    Args:\n      entity: The `Entity` to attach.\n      offset: A length 3 array-like object representing the XYZ offset.\n      attach_site: (optional) The site to which to attach the entity's model.\n        If not set, defaults to self.attachment_site.\n    Returns:\n      The frame of the attached model.\n    \"\"\"\n    frame = self.attach(entity, attach_site=attach_site)\n    frame.pos = offset\n    return frame\n\n\nclass ArenaObservables(composer.Observables):\n  \"\"\"Observables belonging to the arena.\"\"\"\n\n  @composer.observable\n  def front_camera(self):\n    return observable.MJCFCamera(mjcf_element=self._entity.front_camera)\n\n  @composer.observable\n  def front_camera_2(self):\n    return observable.MJCFCamera(mjcf_element=self._entity.front_camera_2)\n\n  @composer.observable\n  def top_down_camera(self):\n    return observable.MJCFCamera(mjcf_element=self._entity.top_down_camera)\n\n  @composer.observable\n  def top_down_camera_invisible_robot(self):\n    # Custom scene options for making robot geoms invisible.\n    robot_geoms_invisible = wrapper.MjvOption()\n    robot_geoms_invisible.geomgroup[ROBOT_GEOM_GROUP] = 0\n    return observable.MJCFCamera(mjcf_element=self._entity.top_down_camera,\n                                 scene_option=robot_geoms_invisible)\n"
  },
  {
    "path": "physics_planning_games/board_games/_internal/boards.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Composer entities corresponding to game boards.\"\"\"\n\nimport copy\nimport os\n\nfrom dm_control import composer\nfrom dm_control import mjcf\nimport numpy as np\n\nfrom dm_control.utils import io as resources\n\n_TOUCH_THRESHOLD = 1e-3  # Activation threshold for touch sensors (N).\n\n# whether to display underlying sensors for Goboard (useful to align texture)\n_SHOW_DEBUG_GRID = False\n_TEXTURE_PATH = os.path.join(os.path.dirname(__file__), 'goboard_7x7.png')\n\n\ndef _make_checkerboard(rows,\n                       columns,\n                       square_halfwidth,\n                       height=0.01,\n                       sensor_size=0.7,\n                       name='checkerboard'):\n  \"\"\"Builds a checkerboard with touch sensors centered on each square.\"\"\"\n  root = mjcf.RootElement(model=name)\n  black_mat = root.asset.add('material', name='black', rgba=(0.2, 0.2, 0.2, 1))\n  white_mat = root.asset.add('material', name='white', rgba=(0.8, 0.8, 0.8, 1))\n  sensor_mat = root.asset.add('material', name='sensor', rgba=(0, 1, 0, 0.3))\n  root.default.geom.set_attributes(\n      type='box', size=(square_halfwidth, square_halfwidth, height))\n  root.default.site.set_attributes(\n      type='box',\n      size=(sensor_size * square_halfwidth,) * 2 + (0.5 * height,),\n      material=sensor_mat, group=composer.SENSOR_SITES_GROUP)\n\n  xpos = (np.arange(columns) - 0.5*(columns - 1)) * 2 * square_halfwidth\n  ypos = (np.arange(rows) - 0.5*(rows - 1)) * 2 * square_halfwidth\n  geoms = []\n  touch_sensors = []\n  for i in range(rows):\n    for j in range(columns):\n      geom_mat = black_mat if ((i % 2) == (j % 2)) else white_mat\n      name = '{}_{}'.format(i, j)\n      geoms.append(\n          root.worldbody.add(\n              'geom',\n              pos=(xpos[j], ypos[i], height),\n              name=name,\n              material=geom_mat))\n      site = root.worldbody.add('site', pos=(xpos[j], ypos[i], 2*height),\n                                name=name)\n      touch_sensors.append(root.sensor.add('touch', site=site, name=name))\n\n  return root, geoms, touch_sensors\n\n\ndef _make_goboard(boardsize,\n                  square_halfwidth,\n                  height=0.01,\n                  sensor_size=0.7,\n                  name='goboard'):\n  \"\"\"Builds a Go with touch sensors centered on each intersection.\"\"\"\n  y_offset = -0.08\n  rows = boardsize\n  columns = boardsize\n  root = mjcf.RootElement(model=name)\n  if _SHOW_DEBUG_GRID:\n    black_mat = root.asset.add('material', name='black',\n                               rgba=(0.2, 0.2, 0.2, 0.5))\n    white_mat = root.asset.add('material', name='white',\n                               rgba=(0.8, 0.8, 0.8, 0.5))\n  else:\n    transparent_mat = root.asset.add('material', name='intersection',\n                                     rgba=(0, 1, 0, 0.0))\n\n  sensor_mat = root.asset.add('material', name='sensor', rgba=(0, 1, 0, 0.3))\n\n  contents = resources.GetResource(_TEXTURE_PATH)\n  root.asset.add('texture', name='goboard', type='2d',\n                 file=mjcf.Asset(contents, '.png'))\n  board_mat = root.asset.add(\n      'material', name='goboard', texture='goboard',\n      texrepeat=[0.97, 0.97])\n\n  root.default.geom.set_attributes(\n      type='box', size=(square_halfwidth, square_halfwidth, height))\n  root.default.site.set_attributes(\n      type='box',\n      size=(sensor_size * square_halfwidth,) * 2 + (0.5 * height,),\n      material=sensor_mat, group=composer.SENSOR_SITES_GROUP)\n\n  board_height = height\n  if _SHOW_DEBUG_GRID:\n    board_height = 0.5*height\n\n  root.worldbody.add(\n      'geom',\n      pos=(0, 0+y_offset, height),\n      type='box',\n      size=(square_halfwidth * boardsize,) * 2 + (board_height,),\n      name=name,\n      material=board_mat)\n\n  xpos = (np.arange(columns) - 0.5*(columns - 1)) * 2 * square_halfwidth\n  ypos = (np.arange(rows) - 0.5*(rows - 1)) * 2 * square_halfwidth + y_offset\n  geoms = []\n  touch_sensors = []\n  for i in range(rows):\n    for j in range(columns):\n      name = '{}_{}'.format(i, j)\n      if _SHOW_DEBUG_GRID:\n        transparent_mat = black_mat if ((i % 2) == (j % 2)) else white_mat\n      geoms.append(\n          root.worldbody.add(\n              'geom',\n              pos=(xpos[j], ypos[i], height),\n              name=name,\n              material=transparent_mat))\n      site = root.worldbody.add('site', pos=(xpos[j], ypos[i], 2*height),\n                                name=name)\n      touch_sensors.append(root.sensor.add('touch', site=site, name=name))\n\n  pass_geom = root.worldbody.add(\n      'geom',\n      pos=(0, y_offset, 0.0),\n      size=(square_halfwidth*boardsize*2,\n            square_halfwidth*boardsize)  + (0.5 * height,),\n      name='pass',\n      material=transparent_mat)\n  site = root.worldbody.add('site', pos=(0, y_offset, 0.0),\n                            size=(square_halfwidth*boardsize*2,\n                                  square_halfwidth*boardsize) + (0.5 * height,),\n                            name='pass')\n  pass_sensor = root.sensor.add('touch', site=site, name='pass')\n\n  return root, geoms, touch_sensors, pass_geom, pass_sensor\n\n\nclass CheckerBoard(composer.Entity):\n  \"\"\"An entity representing a checkerboard.\"\"\"\n\n  def __init__(self, *args, **kwargs):\n    super(CheckerBoard, self).__init__(*args, **kwargs)\n    self._contact_from_before_substep = None\n\n  def _build(self, rows=3, columns=3, square_halfwidth=0.05):\n    \"\"\"Builds a `CheckerBoard` entity.\n\n    Args:\n      rows: Integer, the number of rows.\n      columns: Integer, the number of columns.\n      square_halfwidth: Float, the halfwidth of the squares on the board.\n    \"\"\"\n    root, geoms, touch_sensors = _make_checkerboard(\n        rows=rows, columns=columns, square_halfwidth=square_halfwidth)\n    self._mjcf_model = root\n    self._geoms = np.array(geoms).reshape(rows, columns)\n    self._touch_sensors = np.array(touch_sensors).reshape(rows, columns)\n\n  @property\n  def mjcf_model(self):\n    return self._mjcf_model\n\n  def before_substep(self, physics, random_state):\n    del random_state  # Unused.\n    # Cache a copy of the array of active contacts before each substep.\n    self._contact_from_before_substep = [\n        copy.copy(c) for c in physics.data.contact\n    ]\n\n  def validate_finger_touch(self, physics, row, col, hand):\n    # Geom for the board square\n    geom_id = physics.bind(self._geoms[row, col]).element_id\n    # finger geoms\n    finger_geoms_ids = set(physics.bind(hand.finger_geoms).element_id)\n    contacts = self._contact_from_before_substep\n\n    set1, set2 = set([geom_id]), finger_geoms_ids\n    for contact in contacts:\n      finger_tile_contact = ((contact.geom1 in set1 and\n                              contact.geom2 in set2) or\n                             (contact.geom1 in set2 and contact.geom2 in set1))\n      if finger_tile_contact:\n        return True\n    return False\n\n  def get_contact_pos(self, physics, row, col):\n    geom_id = physics.bind(self._geoms[row, col]).element_id\n    # Here we use the array of active contacts from the previous substep, rather\n    # than the current values in `physics.data.contact`. This is because we use\n    # touch sensors to detect when a square on the board is being pressed, and\n    # the pressure readings are based on forces that were calculated at the end\n    # of the previous substep. It's possible that `physics.data.contact` no\n    # longer contains any active contacts involving the board geoms, even though\n    # the touch sensors are telling us that one of the squares on the board is\n    # being pressed.\n    contacts = self._contact_from_before_substep\n    relevant_contacts = [\n        c for c in contacts if c.geom1 == geom_id or c.geom2 == geom_id\n    ]\n    if relevant_contacts:\n      # If there are multiple contacts involving this square of the board, just\n      # pick the first one.\n      return relevant_contacts[0].pos.copy()\n    else:\n      print(\"Touch sensor at ({},{}) doesn't have any active contacts!\".format(\n          row, col))\n      return False\n\n  def get_contact_indices(self, physics):\n    pressures = physics.bind(self._touch_sensors.ravel()).sensordata\n    # If any of the touch sensors exceed the threshold, return the (row, col)\n    # indices of the most strongly activated sensor.\n    if np.any(pressures > _TOUCH_THRESHOLD):\n      return np.unravel_index(np.argmax(pressures), self._touch_sensors.shape)\n    else:\n      return None\n\n  def sample_pos_inside_touch_sensor(self, physics, random_state, row, col):\n    bound_site = physics.bind(self._touch_sensors[row, col].site)\n    jitter = bound_site.size * np.array([1., 1., 0.])\n    return bound_site.xpos + random_state.uniform(-jitter, jitter)\n\n\nclass GoBoard(CheckerBoard):\n  \"\"\"An entity representing a Goboard.\"\"\"\n\n  def _build(self, boardsize=7, square_halfwidth=0.05):  # pytype: disable=signature-mismatch  # overriding-default-value-checks\n    \"\"\"Builds a `GoBoard` entity.\n\n    Args:\n      boardsize: Integer, the size of the board (boardsize x boardsize).\n      square_halfwidth: Float, the halfwidth of the squares on the board.\n    \"\"\"\n\n    if boardsize != 7:\n      raise ValueError('Only boardsize of 7x7 is implemented at the moment')\n\n    root, geoms, touch_sensors, pass_geom, pass_sensor = _make_goboard(\n        boardsize=boardsize, square_halfwidth=square_halfwidth)\n    self._mjcf_model = root\n    self._geoms = np.array(geoms).reshape(boardsize, boardsize)\n    self._touch_sensors = np.array(touch_sensors).reshape(boardsize, boardsize)\n    self._pass_geom = pass_geom\n    self._pass_sensor = pass_sensor\n\n  def get_contact_indices(self, physics):\n    pressures = physics.bind(self._touch_sensors.ravel()).sensordata\n    # Deal with pass first\n    pass_pressure = physics.bind(self._pass_sensor).sensordata\n    if pass_pressure > np.max(pressures) and pass_pressure > _TOUCH_THRESHOLD:\n      return -1, -1\n\n    # If any of the other touch sensors exceed the threshold, return the\n    # (row, col) indices of the most strongly activated sensor.\n    if np.any(pressures > _TOUCH_THRESHOLD):\n      return np.unravel_index(np.argmax(pressures), self._touch_sensors.shape)\n    else:\n      return None\n\n  def validate_finger_touch(self, physics, row, col, hand):\n    # Geom for the board square\n    if row == -1 and col == -1:\n      geom_id = physics.bind(self._pass_geom).element_id\n    else:\n      geom_id = physics.bind(self._geoms[row, col]).element_id\n    # finger geoms\n    finger_geoms_ids = set(physics.bind(hand.finger_geoms).element_id)\n    contacts = self._contact_from_before_substep\n\n    set1, set2 = set([geom_id]), finger_geoms_ids\n    for contact in contacts:\n      finger_tile_contact = ((contact.geom1 in set1 and\n                              contact.geom2 in set2) or\n                             (contact.geom1 in set2 and contact.geom2 in set1))\n      if finger_tile_contact:\n        return True\n    return False\n\n  def sample_pos_inside_touch_sensor(self, physics, random_state, row, col):\n    bound_site = physics.bind(self._touch_sensors[row, col].site)\n    jitter = bound_site.size * np.array([0.25, 0.25, 0.])\n    return bound_site.xpos + random_state.uniform(-jitter, jitter)\n"
  },
  {
    "path": "physics_planning_games/board_games/_internal/observations.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Configuration for observations.\"\"\"\n\nimport collections\nimport numpy as np\n\n\nclass ObservableSpec(collections.namedtuple(\n    'ObservableSpec',\n    ['enabled', 'update_interval', 'buffer_size', 'delay', 'aggregator',\n     'corruptor'])):\n  \"\"\"Configuration options for generic observables.\"\"\"\n  __slots__ = ()\n\n\nclass CameraObservableSpec(collections.namedtuple(\n    'CameraObservableSpec', ('height', 'width') + ObservableSpec._fields)):\n  \"\"\"Configuration options for camera observables.\"\"\"\n  __slots__ = ()\n\n\nclass ObservationSettings(collections.namedtuple(\n    'ObservationSettings',\n    ['proprio', 'ftt', 'prop_pose', 'board_state', 'camera'])):\n  \"\"\"Container of `ObservableSpecs` grouped by category.\"\"\"\n  __slots__ = ()\n\n\nclass ObservableNames(collections.namedtuple(\n    'ObservableNames',\n    ['proprio', 'ftt', 'prop_pose', 'board_state', 'camera'])):\n  \"\"\"Container that groups the names of observables by category.\"\"\"\n  __slots__ = ()\n\n  def __new__(cls, proprio=(), ftt=(), prop_pose=(), board_state=(), camera=()):\n    return super(ObservableNames, cls).__new__(\n        cls,\n        proprio=proprio,\n        ftt=ftt,\n        prop_pose=prop_pose,\n        board_state=board_state,\n        camera=camera)\n\n\n# Global defaults for \"feature\" observables (i.e. anything that isn't a camera).\n_DISABLED_FEATURE = ObservableSpec(\n    enabled=False,\n    update_interval=1,\n    buffer_size=1,\n    delay=0,\n    aggregator=None,\n    corruptor=None)\n_ENABLED_FEATURE = _DISABLED_FEATURE._replace(enabled=True)\n\n# Force, torque and touch-sensor readings are scaled using a symmetric\n# logarithmic transformation that handles 0 and negative values.\n_symlog1p = lambda x, random_state: np.sign(x) * np.log1p(abs(x))\n_DISABLED_FTT = _DISABLED_FEATURE._replace(corruptor=_symlog1p)\n_ENABLED_FTT = _ENABLED_FEATURE._replace(corruptor=_symlog1p)\n\n# Global defaults for camera observables.\n_DISABLED_CAMERA = CameraObservableSpec(\n    height=84,\n    width=84,\n    enabled=False,\n    update_interval=1,\n    buffer_size=1,\n    delay=0,\n    aggregator=None,\n    corruptor=None)\n_ENABLED_CAMERA = _DISABLED_CAMERA._replace(enabled=True)\n\n# Predefined sets of configurations options to apply to each category of\n# observable.\nPERFECT_FEATURES = ObservationSettings(\n    proprio=_ENABLED_FEATURE,\n    ftt=_ENABLED_FTT,\n    prop_pose=_ENABLED_FEATURE,\n    board_state=_ENABLED_FEATURE,\n    camera=_ENABLED_CAMERA)\n\nARENA_OBSERVABLES = ObservableNames(camera=['front_camera', 'front_camera_2'])\nJACO_ARM_OBSERVABLES = ObservableNames(\n    proprio=['joints_pos', 'joints_vel'], ftt=['joints_torque'])\nJACO_HAND_OBSERVABLES = ObservableNames(\n    proprio=['joints_pos', 'joints_vel', 'pinch_site_pos', 'pinch_site_rmat'])\nMARKER_OBSERVABLES = ObservableNames(prop_pose=['position'])\n\n\ndef make_options(obs_settings, obs_names):\n  \"\"\"Constructs a dict of configuration options for a set of named observables.\n\n  Args:\n    obs_settings: An `ObservationSettings` instance.\n    obs_names: An `ObservableNames` instance.\n\n  Returns:\n    A nested dict containing `{observable_name: {option_name: value}}`.\n  \"\"\"\n  observable_options = {}\n  for category, spec in obs_settings._asdict().items():\n    for observable_name in getattr(obs_names, category):\n      observable_options[observable_name] = spec._asdict()\n  return observable_options\n"
  },
  {
    "path": "physics_planning_games/board_games/_internal/pieces.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Entities representing board game pieces.\"\"\"\n\n\nimport itertools\n\nfrom dm_control import composer\nfrom dm_control import mjcf\nfrom dm_control.composer.observation import observable\nimport numpy as np\n\n_VISIBLE_SITE_GROUP = 0\n_INVISIBLE_SITE_GROUP = 3\n_RED = (1., 0., 0., 0.5)\n_BLUE = (0., 0, 1., 0.5)\n\n_INVALID_PLAYER_ID = '`player_id` must be between 0 and {}, got {}.'\n_NO_MORE_MARKERS_AVAILABLE = (\n    'All {} markers for player {} have already been placed.')\n\n\nclass Markers(composer.Entity):\n  \"\"\"A collection of non-physical entities for marking board positions.\"\"\"\n\n  def _build(self,\n             num_per_player,\n             player_colors=(_RED, _BLUE),\n             halfwidth=0.025,\n             height=0.01,\n             board_size=7):\n    \"\"\"Builds a `Markers` entity.\n\n    Args:\n      num_per_player: Integer, the total number of markers to create per player.\n      player_colors: Sequence of (R, G, B, A) values specifying the marker\n        colors for each player.\n      halfwidth: Scalar, the halfwidth of each marker.\n      height: Scalar, height of each marker.\n      board_size: Integer, optional if using the integer indexing.\n    \"\"\"\n    root = mjcf.RootElement(model='markers')\n    root.default.site.set_attributes(type='cylinder', size=(halfwidth, height))\n    all_markers = []\n    for i, color in enumerate(player_colors):\n      player_name = 'player_{}'.format(i)\n      # TODO(alimuldal): Would look cool if these were textured.\n      material = root.asset.add('material', name=player_name, rgba=color)\n      player_markers = []\n      for j in range(num_per_player):\n        player_markers.append(\n            root.worldbody.add(\n                'site',\n                name='player_{}_move_{}'.format(i, j),\n                material=material))\n      all_markers.append(player_markers)\n    self._num_players = len(player_colors)\n    self._mjcf_model = root\n    self._all_markers = all_markers\n    self._move_counts = [0] * self._num_players\n    # To go from integer position to marker index in the all_markers array\n    self._marker_ids = np.zeros((2, board_size, board_size))\n    self._board_size = board_size\n\n  def _build_observables(self):\n    return MarkersObservables(self)\n\n  @property\n  def mjcf_model(self):\n    \"\"\"`mjcf.RootElement` for this entity.\"\"\"\n    return self._mjcf_model\n\n  @property\n  def markers(self):\n    \"\"\"Marker sites belonging to all players.\n\n    Returns:\n      A nested list, where `markers[i][j]` contains the `mjcf.Element`\n      corresponding to player i's jth marker.\n    \"\"\"\n    return self._all_markers\n\n  def initialize_episode(self, physics, random_state):\n    \"\"\"Resets the markers at the start of an episode.\"\"\"\n    del random_state  # Unused.\n    self._reset(physics)\n\n  def _reset(self, physics):\n    for player_markers in self._all_markers:\n      for marker in player_markers:\n        bound_marker = physics.bind(marker)\n        bound_marker.pos = 0.  # Markers are initially placed at the origin.\n        bound_marker.group = _INVISIBLE_SITE_GROUP\n    self._move_counts = [0] * self._num_players\n    self._marker_ids = np.zeros((2, self._board_size, self._board_size),\n                                dtype=np.int32)\n\n  def make_all_invisible(self, physics):\n    for player_markers in self._all_markers:\n      for marker in player_markers:\n        bound_marker = physics.bind(marker)\n        bound_marker.group = _INVISIBLE_SITE_GROUP\n\n  def make_visible_by_bpos(self, physics, player_id, all_bpos):\n    for bpos in all_bpos:\n      marker_id = self._marker_ids[player_id][bpos[0]][bpos[1]]\n      marker = self._all_markers[player_id][marker_id]\n      bound_marker = physics.bind(marker)\n      bound_marker.group = _VISIBLE_SITE_GROUP\n\n  def mark(self, physics, player_id, pos, bpos=None):\n    \"\"\"Enables the visibility of a marker, moves it to the specified position.\n\n    Args:\n      physics: `mjcf.Physics` instance.\n      player_id: Integer specifying the ID of the player whose marker to use.\n      pos: Array-like object specifying the cartesian position of the marker.\n      bpos: Board position, optional integer coordinates to index the markers.\n\n    Raises:\n      ValueError: If `player_id` is invalid.\n      RuntimeError: If `player_id` has no more available markers.\n    \"\"\"\n    if not 0 <= player_id < self._num_players:\n      raise ValueError(\n          _INVALID_PLAYER_ID.format(self._num_players - 1, player_id))\n    markers = self._all_markers[player_id]\n    move_count = self._move_counts[player_id]\n    if move_count >= len(markers):\n      raise RuntimeError(\n          _NO_MORE_MARKERS_AVAILABLE.format(move_count, player_id))\n    bound_marker = physics.bind(markers[move_count])\n    bound_marker.pos = pos\n    # TODO(alimuldal): Set orientation as well (random? same as contact frame?)\n    bound_marker.group = _VISIBLE_SITE_GROUP\n    self._move_counts[player_id] += 1\n\n    if bpos:\n      self._marker_ids[player_id][bpos[0]][bpos[1]] = move_count\n\n\nclass MarkersObservables(composer.Observables):\n  \"\"\"Observables for a `Markers` entity.\"\"\"\n\n  @composer.observable\n  def position(self):\n    \"\"\"Cartesian positions of all marker sites.\n\n    Returns:\n      An `observable.MJCFFeature` instance. When called with an instance of\n      `physics` as the argument, this will return a numpy float64 array of shape\n      (num_players * num_markers, 3) where each row contains the cartesian\n      position of a marker. Unplaced markers will have position (0, 0, 0).\n    \"\"\"\n    return observable.MJCFFeature(\n        'xpos', list(itertools.chain.from_iterable(self._entity.markers)))\n"
  },
  {
    "path": "physics_planning_games/board_games/_internal/pieces_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Tests for physics_planning_games.board_games._internal.pieces.py.\"\"\"\n\nfrom absl.testing import absltest\nfrom dm_control import mjcf\nimport numpy as np\n\nfrom physics_planning_games.board_games._internal import pieces\n\n\nclass MarkersTest(absltest.TestCase):\n\n  def test_position_observable(self):\n    num_per_player = 3\n    markers = pieces.Markers(num_per_player=num_per_player)\n    physics = mjcf.Physics.from_mjcf_model(markers.mjcf_model)\n    all_positions = [\n        [(0, 1, 2), (3, 4, 5), (6, 7, 8)],  # Player 0\n        [(-1, 2, -3), (4, -5, 6)],  # Player 1\n    ]\n    for player_id, positions in enumerate(all_positions):\n      for marker_pos in positions:\n        markers.mark(physics=physics, player_id=player_id, pos=marker_pos)\n    expected_positions = np.zeros((2, num_per_player, 3), dtype=np.double)\n    expected_positions[0, :len(all_positions[0])] = all_positions[0]\n    expected_positions[1, :len(all_positions[1])] = all_positions[1]\n    observed_positions = markers.observables.position(physics)\n    np.testing.assert_array_equal(\n        expected_positions.reshape(-1, 3), observed_positions)\n\n  def test_invalid_player_id(self):\n    markers = pieces.Markers(num_per_player=5)\n    physics = mjcf.Physics.from_mjcf_model(markers.mjcf_model)\n    invalid_player_id = 99\n    with self.assertRaisesWithLiteralMatch(\n        ValueError, pieces._INVALID_PLAYER_ID.format(1, 99)):\n      markers.mark(physics=physics, player_id=invalid_player_id, pos=(1, 2, 3))\n\n  def test_too_many_moves(self):\n    num_per_player = 5\n    player_id = 0\n    markers = pieces.Markers(num_per_player=num_per_player)\n    physics = mjcf.Physics.from_mjcf_model(markers.mjcf_model)\n    for _ in range(num_per_player):\n      markers.mark(physics=physics, player_id=player_id, pos=(1, 2, 3))\n    with self.assertRaisesWithLiteralMatch(\n        RuntimeError,\n        pieces._NO_MORE_MARKERS_AVAILABLE.format(num_per_player, player_id)):\n      markers.mark(physics=physics, player_id=player_id, pos=(1, 2, 3))\n\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "physics_planning_games/board_games/_internal/registry.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"A global registry of constructors for board game environments.\"\"\"\n\n\nfrom dm_control.utils import containers\n\n_ALL_CONSTRUCTORS = containers.TaggedTasks(allow_overriding_keys=False)\n\nadd = _ALL_CONSTRUCTORS.add\nget_constructor = _ALL_CONSTRUCTORS.__getitem__\nget_all_names = _ALL_CONSTRUCTORS.keys\nget_tags = _ALL_CONSTRUCTORS.tags\nget_names_by_tag = _ALL_CONSTRUCTORS.tagged\n\n# This disables the check that prevents the same task constructor name from\n# being added to the container more than once. This is done in order to allow\n# individual task modules to be reloaded without also reloading `registry.py`\n# first (e.g. when \"hot-reloading\" environments in domain explorer).\n\n\ndef done_importing_tasks():\n  _ALL_CONSTRUCTORS.allow_overriding_keys = True\n"
  },
  {
    "path": "physics_planning_games/board_games/_internal/tags.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"String constants used to annotate task constructors.\"\"\"\n\nFEATURES = 'features'\nVISION = 'vision'\n\nEASY = 'easy'\nMED = 'medium'\nHARD = 'hard'\n"
  },
  {
    "path": "physics_planning_games/board_games/board_games_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Basic smoke test for board_games environments.\"\"\"\n\nfrom absl.testing import absltest\nfrom dm_env import test_utils\n\nfrom physics_planning_games import board_games\n\n\nclass GoTest(test_utils.EnvironmentTestMixin, absltest.TestCase):\n\n  def make_object_under_test(self):\n    return board_games.load(environment_name='go_7x7', seed=0)\n\n\nclass TicTacToeTest(test_utils.EnvironmentTestMixin, absltest.TestCase):\n\n  def make_object_under_test(self):\n    return board_games.load(\n        environment_name='tic_tac_toe_mixture_opponent_markers_features',\n        seed=0)\n\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "physics_planning_games/board_games/go.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"A Go board game.\"\"\"\n\nfrom dm_control.composer.observation import observable\nimport numpy as np\nfrom physics_planning_games.board_games import go_logic\nfrom physics_planning_games.board_games import jaco_arm_board_game\nfrom physics_planning_games.board_games._internal import boards\nfrom physics_planning_games.board_games._internal import observations\nfrom physics_planning_games.board_games._internal import pieces\nfrom physics_planning_games.board_games._internal import registry\nfrom physics_planning_games.board_games._internal import tags\n\n_BLACK = (0., 0., 0., 0.75)\n_WHITE = (1., 1., 1., 0.75)\n\n_GO_PIECE_SIZE = 0.04\n_DEFAULT_OPPONENT_MIXTURE = 0.2\n\n\nclass Go(jaco_arm_board_game.JacoArmBoardGame):\n  \"\"\"Single-player Go of configurable size.\"\"\"\n\n  def __init__(self, board_size, observation_settings, opponent=None,\n               reset_arm_after_move=True):\n    \"\"\"Initializes a `Go` task.\n\n    Args:\n      board_size: board size\n      observation_settings: An `observations.ObservationSettings` namedtuple\n        specifying configuration options for each category of observation.\n      opponent: Go opponent to use for the opponent player actions.\n      reset_arm_after_move: Whether to reset arm to random position after every\n        piece being placed on the board.\n    \"\"\"\n    game_logic = go_logic.GoGameLogic(board_size=board_size)\n\n    if opponent is None:\n      opponent = go_logic.GoGTPOpponent(board_size=board_size,\n                                        mixture_p=_DEFAULT_OPPONENT_MIXTURE)\n\n    self._last_valid_move_is_pass = False\n    super(Go, self).__init__(observation_settings=observation_settings,\n                             opponent=opponent,\n                             game_logic=game_logic,\n                             board=boards.GoBoard(boardsize=board_size),\n                             markers=pieces.Markers(\n                                 player_colors=(_BLACK, _WHITE),\n                                 halfwidth=_GO_PIECE_SIZE,\n                                 num_per_player=board_size*board_size*2,\n                                 observable_options=observations.make_options(\n                                     observation_settings,\n                                     observations.MARKER_OBSERVABLES),\n                                 board_size=board_size))\n    self._reset_arm_after_move = reset_arm_after_move\n    # Add an observable exposing the move history (to reconstruct game states)\n    move_history_observable = observable.Generic(\n        lambda physics: self._game_logic.get_move_history())\n    move_history_observable.configure(\n        **observation_settings.board_state._asdict())\n    self._task_observables['move_history'] = move_history_observable\n\n  @property\n  def name(self):\n    return 'Go'\n\n  @property\n  def control_timestep(self):\n    return 0.05\n\n  def after_substep(self, physics, random_state):\n    if not self._made_move_this_step:\n      # which board square received the most contact pressure\n      indices = self._board.get_contact_indices(physics)\n      if not indices:\n        return\n      row, col = indices\n      # Makes sure that contact with that board square involved a finger\n      finger_touch = self._board.validate_finger_touch(physics,\n                                                       row, col, self._hand)\n      if not finger_touch:\n        return\n\n      pass_action = True if (row == -1 and col == -1) else False\n      if pass_action and self._last_valid_move_is_pass:\n        # Don't allow two passes in a row (otherwise hard to only pass once)\n        valid_move = False\n      else:\n        valid_move = self._game_logic.apply(\n            player=jaco_arm_board_game.SELF,\n            action=go_logic.GoMarkerAction(row=int(row), col=int(col),\n                                           pass_action=pass_action))\n\n      if valid_move:\n        self._made_move_this_step = True\n        if not pass_action:\n          self._last_valid_move_is_pass = False\n          marker_pos = self._board.get_contact_pos(\n              physics=physics, row=row, col=col)\n          self._markers.mark(physics=physics,\n                             player_id=jaco_arm_board_game.SELF,\n                             pos=marker_pos,\n                             bpos=(row, col))\n        else:\n          self._last_valid_move_is_pass = True\n        if not self._game_logic.is_game_over:\n          opponent_move = self._game_opponent.policy(\n              game_logic=self._game_logic, player=jaco_arm_board_game.OPPONENT,\n              random_state=random_state)\n          assert opponent_move\n          assert self._game_logic.apply(player=jaco_arm_board_game.OPPONENT,\n                                        action=opponent_move)\n          marker_pos = self._board.sample_pos_inside_touch_sensor(\n              physics=physics,\n              random_state=random_state,\n              row=opponent_move.row,\n              col=opponent_move.col)\n          self._markers.mark(physics=physics,\n                             player_id=jaco_arm_board_game.OPPONENT,\n                             pos=marker_pos,\n                             bpos=(opponent_move.row,\n                                   opponent_move.col))\n        if self._reset_arm_after_move:\n          self._tcp_initializer(physics, random_state)\n\n        # Redraw all markers that are on the board (after captures)\n        self._markers.make_all_invisible(physics)\n        board = self._game_logic.get_board_state()\n        black_stones = np.transpose(np.nonzero(board[:, :, 1]))\n        white_stones = np.transpose(np.nonzero(board[:, :, 2]))\n        if black_stones.size > 0:\n          self._markers.make_visible_by_bpos(physics, 0, black_stones)\n        if white_stones.size > 0:\n          self._markers.make_visible_by_bpos(physics, 1, white_stones)\n\n\n@registry.add(tags.EASY, tags.FEATURES)\ndef go_7x7():\n  return Go(board_size=7,\n            observation_settings=observations.PERFECT_FEATURES)\n"
  },
  {
    "path": "physics_planning_games/board_games/go_logic.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Logic for the Go Game.\"\"\"\n\nimport abc\nimport collections\nimport enum\nimport shutil\nimport subprocess\n\nfrom absl import logging\nimport numpy as np\n\nfrom dm_control.utils import io as resources\nfrom physics_planning_games.board_games import logic_base\nimport pyspiel\n\nGNUGO_PATH = '/usr/games/gnugo'\nGoMarkerAction = collections.namedtuple('GoMarkerAction',\n                                        ['row', 'col', 'pass_action'])\n\n# Note that there is no 'i' in these Go board coordinates\n# (cf https://senseis.xmp.net/?Coordinates)\n_X_CHARS = 'abcdefghjklmnopqrstuvwxyz'\n_X_MAP = {c: x for c, x in zip(_X_CHARS, range(len(_X_CHARS)))}\n\n\ndef _go_marker_to_int(go_marker, board_size):\n  \"\"\"Convert GoMarkerAction into GoPoint integer encoding of move.\n\n  Args:\n    go_marker: GoMarkerAction.\n    board_size: Board size of the go board (e.g. 9 or 19).\n\n  Returns:\n    GoPoint int value.\n  \"\"\"\n  if go_marker.pass_action:\n    return board_size * board_size\n  else:\n    return int((go_marker.row) * board_size + go_marker.col)\n\n\ndef _int_to_go_marker(move_int, board_size):\n  \"\"\"Decode the integer move encoding to a GoMarkerAction.\n\n  Args:\n    move_int: Integer encoding the go move.\n    board_size: Board size of the go board (e.g. 9 or 19).\n\n  Returns:\n    GoMarkerAction encoding of move.\n  \"\"\"\n  if move_int == board_size * board_size:\n    go_marker_action = GoMarkerAction(row=-1, col=-1, pass_action=True)\n  else:\n    row = move_int // board_size\n    col = move_int % board_size\n    go_marker_action = GoMarkerAction(row=row, col=col, pass_action=False)\n\n  return go_marker_action\n\n\ndef _go_marker_to_str(go_marker):\n  if go_marker.pass_action:\n    return 'PASS'\n  else:\n    move_str = _X_CHARS[go_marker.col] + str(go_marker.row + 1)\n    return move_str\n\n\ndef _str_to_go_marker(move_str):\n  \"\"\"Convert from a 2-letter Go move str (e.g.\n\n  a3) to a GoMarker.\n\n  Args:\n    move_str: String describing the move (e.g. a3).\n\n  Returns:\n    GoMarkerAction encoding of move.\n  \"\"\"\n  move_str = move_str.lower()\n  if move_str == 'pass':\n    action = GoMarkerAction(row=-1, col=-1, pass_action=True)\n  elif move_str == 'resign':\n    raise NotImplementedError('Not dealing with resign')\n  else:\n    assert len(move_str) == 2\n    col, row = move_str[0], move_str[1]\n    col = _X_MAP[col]\n    row = int(row) - 1\n    action = GoMarkerAction(row=row, col=col, pass_action=False)\n  return action\n\n\ndef _get_gnugo_ref_config(level=1, binary_path=None):\n  \"\"\"Reference config for GnuGo.\n\n  Args:\n    level: GnuGo level\n    binary_path: string pointing to GnuGo binary\n\n  Returns:\n    Config dict that can be passed to gtp engine\n  \"\"\"\n\n  try:\n    gnugo_binary_path = resources.GetResourceFilename(binary_path)\n  except FileNotFoundError:\n    gnugo_binary_path = shutil.which('gnugo')\n    if not gnugo_binary_path:\n      raise FileNotFoundError('Not able to locate gnugo library. ',\n                              'Try installing it by:  apt install gnugo')\n\n  gnugo_extra_flags = ['--mode', 'gtp']\n  gnugo_extra_flags += ['--chinese-rules', '--capture-all-dead']\n  gtp_player_cfg = {\n      'name': 'gnugo',\n      'binary_path': gnugo_binary_path,\n      'level': level,\n      'extra_flags': gnugo_extra_flags,\n  }\n  return gtp_player_cfg\n\n\nclass Stone(enum.Enum):\n  EMPTY = 1\n  WHITE = 2\n  BLACK = 3\n\n  def __lt__(self, other):\n    value = int(self.value)\n    return value < other.value\n\n\ndef gtp_to_sgf_point(gtp_point, board_size):\n  \"\"\"Format a GTP point according to the SGF format.\"\"\"\n  if gtp_point.lower() == 'pass' or gtp_point.lower() == 'resign':\n    return 'tt'\n  column, row = gtp_point[0], gtp_point[1:]\n  # GTP doesn't use i, but SGF does, so we need to convert.\n  gtp_columns = 'abcdefghjklmnopqrstuvwxyz'\n  sgf_columns = 'abcdefghijklmnopqrstuvwxyz'\n  x = gtp_columns.find(column.lower())\n  y = board_size - int(row)\n  return '%s%s' % (sgf_columns[x], sgf_columns[y])\n\n\nclass Gtp(object):\n  \"\"\"Wrapper around Go playing program that communicates using GTP.\"\"\"\n\n  __metaclass__ = abc.ABCMeta\n\n  def __init__(self, checkpoint_file=None):\n    self.stones = {\n        '.': Stone.EMPTY,\n        '+': Stone.EMPTY,\n        'O': Stone.WHITE,\n        'X': Stone.BLACK\n    }\n    self.moves = []\n    self.comments = []\n    self.handicap = 0\n    self.board_size = 19\n    self.komi = 0\n    self.free_handicap = None\n    self.byo_yomi_time = None\n    self.checkpoint_file = checkpoint_file\n    self.stderr = None\n\n  def set_board_size(self, size):\n    self.board_size = size\n    self.gtp_command('boardsize %d' % size)\n    self.gtp_command('clear_board')\n\n  def set_komi(self, komi):\n    self.komi = komi\n    self.gtp_command('komi %s' % komi)\n\n  def set_free_handicap(self, vertices):\n    self.free_handicap = vertices\n    self.gtp_command('set_free_handicap %s' % vertices)\n\n  def place_free_handicap(self, n):\n    self.free_handicap = self.gtp_command('place_free_handicap %d' % n)\n    return self.free_handicap\n\n  def make_move(self, move, record=True):\n    self.gtp_command('play %s' % move)\n    if record:\n      self._record_move(move)\n\n  def set_byo_yomi_time(self, t):\n    self.byo_yomi_time = t\n\n  def num_moves(self):\n    return len(self.moves)\n\n  def clear_board(self):\n    self.moves = []\n    self.comments = []\n    self.gtp_command('clear_board')\n\n  def generate_move(self, color):\n    if self.byo_yomi_time is not None:\n      self.gtp_command('time_left %s %d 1' % (color, self.byo_yomi_time))\n    move = '%s %s' % (color, self.gtp_command(\n        'genmove %s' % color).split(' ')[-1].lower())\n    self._record_move(move, stderr=self.stderr)\n    return move\n\n  def board(self):\n    raw_board = self.gtp_command('showboard', log=False)[1:].strip()\n    rows = [line.strip().split('  ')[0] for line in raw_board.split('\\n')][1:-1]\n    rows = [''.join(row.split(' ')[1:-1]) for row in rows]\n    return [[self.stones[cell] for cell in row] for row in rows]\n\n  def quit(self):\n    self.gtp_command('quit')\n\n  def final_status(self, status):\n    return self.gtp_command('final_status_list %s' % status)[2:].replace(\n        '\\n', ' ').split(' ')\n\n  def fixed_handicap(self, handicap):\n    self.handicap = handicap\n    self.gtp_command('fixed_handicap %d' % handicap)\n\n  def undo(self, num_moves):\n    self.gtp_command('gg-undo %d' % num_moves)\n    for _ in range(num_moves):\n      self.moves.pop()\n      self.comments.pop()\n\n  def _record_move(self, move, stderr=None):\n    self.moves.append(move)\n    self.comments.append(stderr)\n\n    if self.checkpoint_file:\n      with open(self.checkpoint_file, 'w') as f:\n        f.write(self.to_sgf())\n\n  def to_sgf(self):\n    sgf = '(;PB[Black]PW[White]KM[%.1f]HA[%d]SZ[19]' % (self.komi,\n                                                        self.handicap)\n    for i, move in enumerate(self.moves):\n      sgf += '\\n;' + self._format_sgf_move(move)\n      if self.comments[i]:\n        sgf += 'C[' + self._sgf_escape(self.comments[i]) + ']'\n    return sgf + ')'\n\n  def _format_sgf_move(self, move):\n    \"\"\"Format a move according to the SGF format.\"\"\"\n    color, vertex = str(move).split(' ')\n    return '%s[%s]' % (color[0].upper(),\n                       gtp_to_sgf_point(vertex, self.board_size))\n\n  def _sgf_escape(self, text):\n    return ''.join(['\\\\' + t if t == ']' or t == '\\\\' else t for t in text])\n\n  @abc.abstractmethod\n  def gtp_command(self, command, log=True):\n    \"\"\"Executes a GTP command and returns its response.\n\n    Args:\n      command: The GTP command to run, no trailing newline.\n      log: Whether to log command and response to INFO.\n\n    Returns:\n      The GTP response.\n    Raises:\n      GtpError: if the response is not ok (doesn't start with '=').\n    \"\"\"\n    pass\n\n\nclass GtpError(Exception):\n\n  def __init__(self, response):\n    super(GtpError, self).__init__()\n    self.response = response\n\n  def __str__(self):\n    return self.response\n\n\nclass GoEngine(Gtp):\n  \"\"\"GTP-based Go engine.\n\n  Supports at least GnuGo and Pachi.\n\n  For GnuGo, at least specify ['--mode', 'gtp'] in extra_flags.\n  \"\"\"\n\n  def __init__(self, command='', checkpoint_file=None, extra_flags=None):\n    super(GoEngine, self).__init__(checkpoint_file)\n    if extra_flags:\n      command = [command] + extra_flags\n    self.p = subprocess.Popen(\n        command,\n        stdin=subprocess.PIPE,\n        stdout=subprocess.PIPE,\n        universal_newlines=True)\n\n  def gtp_command(self, command, log=True):\n    if log:\n      logging.info('GTP: %s', command)\n    self.p.stdin.write(command)\n    self.p.stdin.write('\\n')\n    self.p.stdin.flush()\n\n    response = [self.p.stdout.readline()]\n    while response[-1] != '\\n':\n      response.append(self.p.stdout.readline())\n    response = ''.join(response).strip()\n\n    if log:\n      logging.info('GTP: %s', response)\n\n    if response[0][0] != '=':\n      raise GtpError(response)\n\n    return response\n\n\nclass GoGameLogic(logic_base.OpenSpielBasedLogic):\n  \"\"\"Logic for Go game.\"\"\"\n\n  def __init__(self, board_size, gnugo_level=1, komi=5.5):\n    self._board_size = board_size\n    self._komi = komi\n    gtp_player_cfg = _get_gnugo_ref_config(\n        level=gnugo_level,\n        binary_path=GNUGO_PATH)\n\n    self._gtp_player = GoEngine(\n        command=gtp_player_cfg['binary_path'],\n        extra_flags=gtp_player_cfg['extra_flags'])\n    self._gtp_player.set_board_size(board_size)\n    self.reset()\n\n  def board_size(self):\n    return self._board_size\n\n  def get_gtp_player(self):\n    return self._gtp_player\n\n  def reset(self):\n    \"\"\"Resets the game state.\"\"\"\n    # For now we always assume we are the starting player and use a random\n    # opponent.\n    self._gtp_player.gtp_command('clear_board', log=False)\n    self._gtp_player.set_board_size(self._board_size)\n    self._gtp_player.set_komi(self._komi)\n    game = pyspiel.load_game('go', {'board_size': self._board_size})\n    self._open_spiel_state = game.new_initial_state()\n\n    self._moves = np.ones(\n        (self._board_size * self._board_size * 2,), dtype=np.int32) * -1\n    self._move_id = 0\n\n  def show_board(self):\n    self._gtp_player.gtp_command('showboard')\n\n  def get_gtp_reward(self):\n    self._gtp_player.gtp_command('final_score')\n\n  def get_board_state(self):\n    \"\"\"Returns the logical board state as a numpy array.\n\n    Returns: A boolean array of shape (H, W, C), where H=3, W=3 (height and\n      width of the board) and C=4 for the 4 planes. The 4 planes are, in order,\n      unmarked, black (player 0), white (player 1) and komi (this layer is\n      always all the same value indicating whether white is to play).\n    \"\"\"\n    board_state = np.reshape(\n        np.array(self._open_spiel_state.observation_tensor(0), dtype=bool),\n        [4, self._board_size, self._board_size])\n    board_state = np.transpose(board_state, [1, 2, 0])\n    board_state = board_state[:, :, [2, 0, 1, 3]]\n    return board_state\n\n  def set_state_from_history(self, move_history):\n    self.reset()\n    move_history = np.squeeze(move_history.numpy())\n    for t in range(move_history.size):\n      if move_history[t] < 0:\n        break\n      else:\n        self.apply(t % 2, move_history[t])\n    # self.show_board()\n\n  def get_move_history(self):\n    \"\"\"Returns the move history as padded numpy array.\"\"\"\n    return self._moves\n\n  def apply(self, player, action):\n    \"\"\"Checks whether action is valid, and if so applies it to the game state.\n\n    Args:\n      player: Integer specifying the player ID; either 0 or 1.\n      action: A `GoMarkerAction` instance (or numpy.int32) which represent the\n        action in the board of size `board_size`.\n\n    Returns:\n      True if the action was valid, else False.\n    \"\"\"\n    if isinstance(action, GoMarkerAction):\n      action = _go_marker_to_int(action, self._board_size)\n\n    if self._open_spiel_state.current_player() != player:\n      return False\n\n    legal_actions = self._open_spiel_state.legal_actions()\n    if np.isin(action, legal_actions):\n      self._open_spiel_state.apply_action(action)\n      was_valid_move = True\n    else:\n      was_valid_move = False\n\n    if not was_valid_move:\n      return False\n\n    self._moves[self._move_id] = action\n    self._move_id += 1\n\n    # Apply to the Go program\n    player_color = 'B' if player == 0 else 'W'\n    action_str = _go_marker_to_str(_int_to_go_marker(action, self._board_size))\n    self._gtp_player.gtp_command('play {} {}'.format(player_color, action_str))\n\n    return was_valid_move\n\n\ndef gen_move(game_logic, player):\n  \"\"\"Generate move from GTP player and game state defined in game_logic.\"\"\"\n  player_color = 'B' if player == 0 else 'W'\n  gtp_player = game_logic.get_gtp_player()\n  move_str = gtp_player.gtp_command(\n      'reg_genmove {}'.format(player_color), log=True)\n  move_str = move_str[2:].lower()\n  action = _str_to_go_marker(move_str)\n  return action\n\n\ndef gen_random_move(game_logic, random_state):\n  \"\"\"Generate random move for current state in game logic.\"\"\"\n  if game_logic.is_game_over:\n    return None\n  valid_moves = game_logic.open_spiel_state.legal_actions()\n  assert valid_moves\n  move = random_state.choice(valid_moves)\n  go_action = _int_to_go_marker(move, board_size=game_logic.board_size())\n  return go_action\n\n\nclass GoGTPOpponent(logic_base.Opponent):\n  \"\"\"Use external binary Pachi to generate opponent moves.\"\"\"\n\n  def __init__(self, board_size, mixture_p=0.0):\n    \"\"\"Initialize Go opponent.\n\n    Args:\n      board_size: Go board size (int)\n      mixture_p: Probability of playing a random move (amongst legal moves).\n    \"\"\"\n    self._board_size = board_size\n    self._mixture_p = mixture_p\n\n  def reset(self):\n    pass\n\n  def policy(self, game_logic, player, random_state):\n    \"\"\"Return policy action.\n\n    Args:\n      game_logic: Go game logic state.\n      player: Integer specifying the player ID; either 0 or 1.\n      random_state: Numpy random state object.\n\n    Returns:\n      GoMarkerAction indicating opponent move.\n    \"\"\"\n    if random_state.rand() < self._mixture_p:\n      return gen_random_move(game_logic, random_state)\n    else:\n      return gen_move(game_logic, player)\n\n\nclass GoRandomOpponent(logic_base.Opponent):\n  \"\"\"An easy opponent for Go.\"\"\"\n\n  def __init__(self, board_size):\n    self._board_size = board_size\n\n  def reset(self):\n    \"\"\"Resets the opponent's internal state (not implemented).\"\"\"\n    pass\n\n  def policy(self, game_logic, player, random_state):\n    \"\"\"Return a random, valid move.\n\n    Args:\n      game_logic: TicTacToeGameLogic state of the game.\n      player: Integer specifying the player ID; either 0 or 1.\n      random_state: An instance of `np.random.RandomState`\n\n    Returns:\n      GoMarkerAction of opponent.\n    \"\"\"\n    return gen_random_move(game_logic, random_state)\n"
  },
  {
    "path": "physics_planning_games/board_games/go_logic_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\nfrom absl.testing import absltest\nfrom absl.testing import parameterized\nimport numpy as np\n\nfrom physics_planning_games.board_games import go_logic\n\n\nclass GoGameLogicTest(parameterized.TestCase):\n\n  def setUp(self):\n    super(GoGameLogicTest, self).setUp()\n    self.logic = go_logic.GoGameLogic(board_size=5)\n    self.expected_board_state = np.zeros((5, 5, 4), dtype=bool)\n    self.expected_board_state[:, :, 0] = True\n\n  def test_valid_move_sequence(self):\n    np.testing.assert_array_equal(self.logic.get_board_state(),\n                                  self.expected_board_state)\n\n    action = go_logic.GoMarkerAction(col=1, row=2, pass_action=False)\n    self.assertTrue(self.logic.apply(player=0, action=action),\n                    msg='Invalid action: {}'.format(action))\n\n  def test_pass(self):\n    action = go_logic.GoMarkerAction(col=0, row=0, pass_action=True)\n    self.assertTrue(self.logic.apply(player=0, action=action),\n                    msg='Invalid action: {}'.format(action))\n    self.expected_board_state[:, :, 3] = True\n    np.testing.assert_array_equal(self.logic.get_board_state(),\n                                  self.expected_board_state)\n\n  def test_invalid_move_sequence(self):\n    np.testing.assert_array_equal(self.logic.get_board_state(),\n                                  self.expected_board_state)\n    action = go_logic.GoMarkerAction(col=1, row=2, pass_action=False)\n    self.assertTrue(self.logic.apply(player=0, action=action),\n                    msg='Invalid action: {}'.format(action))\n    self.expected_board_state[action.row, action.col, 0] = False\n    self.expected_board_state[action.row, action.col, 1] = True\n    self.expected_board_state[:, :, 3] = True\n    np.testing.assert_array_equal(self.logic.get_board_state(),\n                                  self.expected_board_state)\n\n    action = go_logic.GoMarkerAction(col=1, row=2, pass_action=False)\n    self.assertFalse(self.logic.apply(player=0, action=action),\n                     msg='Invalid action was accepted: {}'.format(action))\n\n    # Player 1 tries to move in the same location as player 0.\n    self.assertFalse(self.logic.apply(player=1, action=action),\n                     msg='Invalid action was accepted: {}'.format(action))\n\n    # The board state should not have changed as a result of invalid actions.\n    np.testing.assert_array_equal(self.logic.get_board_state(),\n                                  self.expected_board_state)\n\n  def test_random_opponent_vs_gnugo(self):\n    \"\"\"Play random v gnugo opponents and check that optimal largely wins.\n    \"\"\"\n    board_size = 9\n    rand_state = np.random.RandomState(42)\n    pachi_opponent = go_logic.GoGTPOpponent(board_size)\n    random_opponent = go_logic.GoRandomOpponent(board_size)\n    players = [pachi_opponent, random_opponent]\n    pachi_returns = []\n    random_returns = []\n\n    for _ in range(3):\n      logic = go_logic.GoGameLogic(board_size)\n      pachi_opponent.reset()\n      random_opponent.reset()\n\n      rand_state.shuffle(players)\n      current_player_idx = 0\n\n      while not logic.is_game_over:\n        current_player = players[current_player_idx]\n        action = current_player.policy(logic, current_player_idx, rand_state)\n        valid_action = logic.apply(current_player_idx, action)\n        self.assertTrue(valid_action,\n                        msg='Opponent {} selected invalid action {}'.format(\n                            current_player, action))\n        current_player_idx = (current_player_idx + 1) % 2\n\n      # Record the winner.\n      reward = logic.get_reward\n      if players[0] == pachi_opponent:\n        pachi_return = reward[0]\n        random_return = reward[1]\n      else:\n        pachi_return = reward[1]\n        random_return = reward[0]\n      pachi_returns.append(pachi_return)\n      random_returns.append(random_return)\n\n    mean_pachi_returns = np.mean(pachi_returns)\n    mean_random_returns = np.mean(random_returns)\n    self.assertGreater(mean_pachi_returns, 0.95)\n    self.assertLess(mean_random_returns, 0.05)\n\n  @parameterized.named_parameters([\n      dict(testcase_name='00',\n           row=0, col=0),\n      dict(testcase_name='01',\n           row=1, col=0)])\n  def test_go_marker_to_int(self, row, col):\n    go_marker = go_logic.GoMarkerAction(row=row, col=col, pass_action=False)\n    int_action = go_logic._go_marker_to_int(go_marker, board_size=19)\n    recovered_go_marker = go_logic._int_to_go_marker(int_action, board_size=19)\n    self.assertEqual(go_marker, recovered_go_marker,\n                     msg='Initial go marker {}, recovered {}'.format(\n                         go_marker, recovered_go_marker))\n\n  @parameterized.named_parameters([\n      dict(testcase_name='00',\n           row=0, col=0),\n      dict(testcase_name='01',\n           row=1, col=0)])\n  def test_go_marker_to_str(self, row, col):\n    go_marker = go_logic.GoMarkerAction(row=row, col=col, pass_action=False)\n    str_action = go_logic._go_marker_to_str(go_marker)\n    recovered_go_marker = go_logic._str_to_go_marker(str_action)\n    self.assertEqual(go_marker,\n                     recovered_go_marker,\n                     msg='Initial go marker {}, recovered {}, '\n                         'str_action {}'.format(go_marker, recovered_go_marker,\n                                                str_action))\n\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "physics_planning_games/board_games/jaco_arm_board_game.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Shared base class for two-player Jaco arm board games.\n\"\"\"\n\nimport functools\n\nfrom dm_control import composer\nfrom dm_control.composer import initializers\nfrom dm_control.composer.observation import observable\nfrom dm_control.composer.variation import distributions\nfrom dm_control.composer.variation import rotations\nfrom dm_control.entities.manipulators import base\nfrom dm_control.entities.manipulators import kinova\nimport numpy as np\n\nfrom physics_planning_games.board_games._internal import arenas\nfrom physics_planning_games.board_games._internal import observations\n\n_ARM_Y_OFFSET = 0.4\n_TCP_LOWER_BOUNDS = (-0.1, -0.1, 0.2)\n_TCP_UPPER_BOUNDS = (0.1, 0.1, 0.4)\n\n# Player IDs\nSELF = 0\nOPPONENT = 1\n\n\ndef _uniform_downward_rotation():\n  angle = distributions.Uniform(-np.pi, np.pi, single_sample=True)\n  quaternion = rotations.QuaternionFromAxisAngle(axis=(0., 0., 1.), angle=angle)\n  return functools.partial(rotations.QuaternionPreMultiply(quaternion),\n                           initial_value=base.DOWN_QUATERNION)\n\n\nclass JacoArmBoardGame(composer.Task):\n  \"\"\"Base class for two-player checker-like board games.\"\"\"\n\n  def __init__(self, observation_settings, opponent, game_logic, board,\n               markers):\n    \"\"\"Initializes the task.\n\n    Args:\n      observation_settings: An `observations.ObservationSettings` namedtuple\n        specifying configuration options for each category of observation.\n      opponent: Opponent used for generating opponent moves.\n      game_logic: Logic for keeping track of the logical state of the board.\n      board: Board to use.\n      markers: Markers to use.\n    \"\"\"\n    self._game_logic = game_logic\n    self._game_opponent = opponent\n    arena = arenas.Standard(observable_options=observations.make_options(\n        observation_settings, observations.ARENA_OBSERVABLES))\n    arena.attach(board)\n    arm = kinova.JacoArm(observable_options=observations.make_options(\n        observation_settings, observations.JACO_ARM_OBSERVABLES))\n    hand = kinova.JacoHand(observable_options=observations.make_options(\n        observation_settings, observations.JACO_HAND_OBSERVABLES))\n    arm.attach(hand)\n    arena.attach_offset(arm, offset=(0, _ARM_Y_OFFSET, 0))\n    arena.attach(markers)\n\n    # Geoms belonging to the arm and hand are placed in a custom group in order\n    # to disable their visibility to the top-down camera. NB: we assume that\n    # there are no other geoms in ROBOT_GEOM_GROUP that don't belong to the\n    # robot (this is usually the case since the default geom group is 0). If\n    # there are then these will also be invisible to the top-down camera.\n    for robot_geom in arm.mjcf_model.find_all('geom'):\n      robot_geom.group = arenas.ROBOT_GEOM_GROUP\n\n    self._arena = arena\n    self._board = board\n    self._arm = arm\n    self._hand = hand\n    self._markers = markers\n    self._tcp_initializer = initializers.ToolCenterPointInitializer(\n        hand=hand, arm=arm,\n        position=distributions.Uniform(_TCP_LOWER_BOUNDS, _TCP_UPPER_BOUNDS),\n        quaternion=_uniform_downward_rotation())\n\n    # Add an observable exposing the logical state of the board.\n    board_state_observable = observable.Generic(\n        lambda physics: self._game_logic.get_board_state())\n    board_state_observable.configure(\n        **observation_settings.board_state._asdict())\n    self._task_observables = {'board_state': board_state_observable}\n\n  @property\n  def root_entity(self):\n    return self._arena\n\n  @property\n  def arm(self):\n    return self._arm\n\n  @property\n  def hand(self):\n    return self._hand\n\n  @property\n  def task_observables(self):\n    return self._task_observables\n\n  def get_reward(self, physics):\n    del physics  # Unused.\n    return self._game_logic.get_reward[SELF]\n\n  def should_terminate_episode(self, physics):\n    return self._game_logic.is_game_over\n\n  def initialize_episode(self, physics, random_state):\n    self._tcp_initializer(physics, random_state)\n    self._game_logic.reset()\n    self._game_opponent.reset()\n\n  def before_step(self, physics, action, random_state):\n    super(JacoArmBoardGame, self).before_step(physics, action, random_state)\n    self._made_move_this_step = False\n\n  def after_substep(self, physics, random_state):\n    raise NotImplementedError('Subclass must implement after_substep.')\n"
  },
  {
    "path": "physics_planning_games/board_games/logic_base.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Abstract base classes and utility functions for logical aspects of the games.\n\"\"\"\n\nimport abc\n\nABC = abc.ABCMeta('ABC', (object,), {'__slots__': ()})\n\n\nclass GameLogic(ABC):\n  \"\"\"Define the abstrat game logic class.\n  \"\"\"\n\n  @abc.abstractmethod\n  def __init__(self):\n    pass\n\n  @abc.abstractmethod\n  def reset(self):\n    pass\n\n  @abc.abstractproperty\n  def is_game_over(self):\n    \"\"\"Boolean specifying whether the current game has ended.\"\"\"\n\n  @abc.abstractproperty\n  def get_reward(self):\n    pass\n\n  @abc.abstractmethod\n  def get_board_state(self):\n    \"\"\"Returns the logical board state as a numpy array.\"\"\"\n\n  @abc.abstractmethod\n  def apply(self, player, action):\n    \"\"\"Checks whether action is valid, and if so applies it to the game state.\n\n    Args:\n      player: Integer specifying the player ID; either 0 or 1.\n      action: A `GoMarkerAction` instance.\n\n    Returns:\n      True if the action was valid, else False.\n    \"\"\"\n\n\nclass OpenSpielBasedLogic(GameLogic):\n  \"\"\"GameLogic using OpenSpiel for tracking game state.\n  \"\"\"\n\n  @property\n  def is_game_over(self):\n    \"\"\"Boolean specifying whether the current game has ended.\"\"\"\n    return  self._open_spiel_state.is_terminal()\n\n  @property\n  def get_reward(self):\n    \"\"\"Returns a dictionary that maps from `{player_id: player_reward}`.\"\"\"\n\n    if self.is_game_over:\n      player0_return = self._open_spiel_state.player_return(0)\n      # Translate from OpenSpiel returns to 0.5 for draw, -1 for loss,\n      # +1 for win.\n      if player0_return == 0.:\n        reward = {0: 0.5, 1: 0.5}\n      elif player0_return == 1.:\n        reward = {0: 1., 1: 0.}\n      else:\n        assert player0_return == -1.\n        reward = {0: 0., 1: 1.}\n    else:\n      reward = {0: 0.,\n                1: 0.}\n    return reward\n\n  @property\n  def open_spiel_state(self):\n    \"\"\"OpenSpiel object representing the underlying game state.\"\"\"\n    return self._open_spiel_state\n\n\nclass Opponent(ABC):\n  \"\"\"Abstract Opponent class.\"\"\"\n\n  @abc.abstractmethod\n  def __init__(self):\n    pass\n\n  @abc.abstractmethod\n  def reset(self):\n    pass\n\n  @abc.abstractmethod\n  def policy(self, game_logic, random_state):\n    \"\"\"Return policy action.\n\n    Args:\n      game_logic: Go game logic state.\n      random_state: Numpy random state object.\n    Returns:\n      NamedTuple indicating opponent move.\n    \"\"\"\n"
  },
  {
    "path": "physics_planning_games/board_games/tic_tac_toe.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"A Tic Tac Toe task.\"\"\"\n\nfrom physics_planning_games.board_games import jaco_arm_board_game\nfrom physics_planning_games.board_games import tic_tac_toe_logic\nfrom physics_planning_games.board_games._internal import boards\nfrom physics_planning_games.board_games._internal import observations\nfrom physics_planning_games.board_games._internal import pieces\nfrom physics_planning_games.board_games._internal import registry\nfrom physics_planning_games.board_games._internal import tags\n\n\nclass TicTacToe(jaco_arm_board_game.JacoArmBoardGame):\n  \"\"\"Single-player Tic Tac Toe.\"\"\"\n\n  def __init__(self, observation_settings, opponent=None,\n               reset_arm_after_move=True):\n    \"\"\"Initializes a `TicTacToe` task.\n\n    Args:\n      observation_settings: An `observations.ObservationSettings` namedtuple\n        specifying configuration options for each category of observation.\n      opponent: TicTacToeOpponent used for generating opponent moves.\n      reset_arm_after_move: Whether to reset arm to random position after every\n        piece being placed on the board.\n    \"\"\"\n    game_logic = tic_tac_toe_logic.TicTacToeGameLogic()\n    if opponent is None:\n      opponent = tic_tac_toe_logic.TicTacToeRandomOpponent()\n\n    markers = pieces.Markers(num_per_player=5,\n                             observable_options=observations.make_options(\n                                 observation_settings,\n                                 observations.MARKER_OBSERVABLES))\n    self._reset_arm_after_move = reset_arm_after_move\n    super(TicTacToe, self).__init__(observation_settings=observation_settings,\n                                    opponent=opponent,\n                                    game_logic=game_logic,\n                                    board=boards.CheckerBoard(),\n                                    markers=markers)\n\n  @property\n  def control_timestep(self):\n    return 0.05\n\n  def after_substep(self, physics, random_state):\n    if not self._made_move_this_step:\n      indices = self._board.get_contact_indices(physics)\n      if not indices:\n        return\n      row, col = indices\n      valid_move = self._game_logic.apply(\n          player=jaco_arm_board_game.SELF,\n          action=tic_tac_toe_logic.SingleMarkerAction(row=row, col=col))\n      if valid_move:\n        self._made_move_this_step = True\n        marker_pos = self._board.get_contact_pos(\n            physics=physics, row=row, col=col)\n        self._markers.mark(physics=physics, player_id=jaco_arm_board_game.SELF,\n                           pos=marker_pos)\n        if not self._game_logic.is_game_over:\n          opponent_move = self._game_opponent.policy(\n              game_logic=self._game_logic, random_state=random_state)\n          assert opponent_move\n          assert self._game_logic.apply(player=jaco_arm_board_game.OPPONENT,\n                                        action=opponent_move)\n          marker_pos = self._board.sample_pos_inside_touch_sensor(\n              physics=physics,\n              random_state=random_state,\n              row=opponent_move.row,\n              col=opponent_move.col)\n          self._markers.mark(physics=physics,\n                             player_id=jaco_arm_board_game.OPPONENT,\n                             pos=marker_pos)\n          if self._reset_arm_after_move:\n            self._tcp_initializer(physics, random_state)\n\n\n@registry.add(tags.EASY, tags.FEATURES)\ndef tic_tac_toe_markers_features(**unused_kwargs):\n  return TicTacToe(observation_settings=observations.PERFECT_FEATURES)\n\n\n@registry.add(tags.MED, tags.FEATURES)\ndef tic_tac_toe_mixture_opponent_markers_features(mixture_p=0.25):\n  print('Creating tictactoe task with random/optimal opponent mixture, p={}'\n        .format(mixture_p))\n  return TicTacToe(\n      observation_settings=observations.PERFECT_FEATURES,\n      opponent=tic_tac_toe_logic.TicTacToeMixtureOpponent(mixture_p))\n\n\n@registry.add(tags.HARD, tags.FEATURES)\ndef tic_tac_toe_optimal_opponent_markers_features(**unused_kwargs):\n  return TicTacToe(observation_settings=observations.PERFECT_FEATURES,\n                   opponent=tic_tac_toe_logic.TicTacToeOptimalOpponent())\n"
  },
  {
    "path": "physics_planning_games/board_games/tic_tac_toe_logic.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"TicTacToe logic wrapper for use in manipulation tasks.\"\"\"\n\nimport collections\nimport itertools\n\nimport numpy as np\n\nfrom physics_planning_games.board_games import logic_base\nfrom open_spiel.python.algorithms import minimax\nimport pyspiel\n\n\nSingleMarkerAction = collections.namedtuple('SingleMarkerAction',\n                                            ['row', 'col'])\nforce_random_start_position = False\n\n\nclass TicTacToeGameLogic(logic_base.OpenSpielBasedLogic):\n  \"\"\"Logic for TicTacToe game.\"\"\"\n\n  def __init__(self):\n    self.reset()\n\n  def reset(self):\n    \"\"\"Resets the game state.\"\"\"\n    # For now we always assume we are the starting player.\n\n    game = pyspiel.load_game('tic_tac_toe')\n    self._open_spiel_state = game.new_initial_state()\n\n    if force_random_start_position:\n      # For debugging purposes only, force some random moves\n      rand_state = np.random.RandomState(46)\n      rand_player = TicTacToeRandomOpponent()\n      num_moves = 4\n      for _ in range(num_moves):\n        action = rand_player.policy(self, rand_state)\n        action_1d = np.ravel_multi_index(action, (3, 3))\n        self._open_spiel_state.apply_action(action_1d)\n\n  def get_board_state(self):\n    \"\"\"Returns the logical board state as a numpy array.\n\n    Returns:\n      A boolean array of shape (H, W, C), where H=3, W=3 (height and width\n      of the board) and C=3 for the 3 planes. The 3 planes are, in order,\n      unmarked squares, x's (player 0) and y's (player 1).\n    \"\"\"\n    board_state = np.reshape(\n        np.array(self._open_spiel_state.observation_tensor(0), dtype=bool),\n        [3, 3, 3])\n    board_state = np.transpose(board_state, [1, 2, 0])\n    board_state = board_state[:, :, [0, 2, 1]]\n    return board_state\n\n  def apply(self, player, action):\n    \"\"\"Checks whether action is valid, and if so applies it to the game state.\n\n    Args:\n      player: Integer specifying the player ID; either 0 or 1.\n      action: A `SingleMarkerAction` instance.\n\n    Returns:\n      True if the action was valid, else False.\n    \"\"\"\n    action_value = np.ravel_multi_index((action.row, action.col), (3, 3))\n    if self._open_spiel_state.current_player() != player:\n      return False\n\n    try:\n      self._open_spiel_state.apply_action(action_value)\n      was_valid_move = True\n    except RuntimeError:\n      was_valid_move = False\n\n    return was_valid_move\n\n\nclass TicTacToeRandomOpponent(logic_base.Opponent):\n  \"\"\"An easy opponent for TicTacToe.\"\"\"\n\n  def __init__(self):\n    pass\n\n  def reset(self):\n    \"\"\"Resets the opponent's internal state (not implemented).\"\"\"\n    pass\n\n  def policy(self, game_logic, random_state):\n    \"\"\"Return a random, valid move.\n\n    Args:\n      game_logic: TicTacToeGameLogic state of the game.\n      random_state: An instance of `np.random.RandomState`\n\n    Returns:\n      SingleMarkerAction of opponent.\n    \"\"\"\n    if game_logic.is_game_over:\n      return None\n\n    valid_moves = game_logic.open_spiel_state.legal_actions()\n    assert valid_moves\n    move = random_state.choice(valid_moves)\n    row, col = np.unravel_index(move, shape=(3, 3))\n    return SingleMarkerAction(row=row, col=col)\n\n\nclass TicTacToeMixtureOpponent(logic_base.Opponent):\n  \"\"\"A TicTacToe opponent which makes a mixture of optimal and random moves.\n\n  The optimal mixture component uses minimax search.\n  \"\"\"\n\n  def __init__(self, mixture_p):\n    \"\"\"Initialize the mixture opponent.\n\n    Args:\n      mixture_p: The mixture probability. We choose moves from the random\n        opponent with probability mixture_p and moves from the optimal\n        opponent with probability 1 - mixture_p.\n    \"\"\"\n\n    self._random_opponent = TicTacToeRandomOpponent()\n    self._optimal_opponent = TicTacToeOptimalOpponent()\n    self._mixture_p = mixture_p\n\n  def reset(self):\n    pass\n\n  def policy(self, game_logic, random_state):\n    if random_state.rand() < self._mixture_p:\n      return self._random_opponent.policy(game_logic, random_state)\n    else:\n      return self._optimal_opponent.policy(game_logic, random_state)\n\n\nclass TicTacToeOptimalOpponent(logic_base.Opponent):\n  \"\"\"A TicTacToe opponent which makes perfect moves.\n\n  Uses minimax search.\n  \"\"\"\n\n  def __init__(self):\n    pass\n\n  def reset(self):\n    pass\n\n  def policy(self, game_logic, random_state):\n    action = tic_tac_toe_minimax(game_logic.open_spiel_state, random_state)\n    return action\n\n\ndef numpy_array_to_open_spiel_state(board_state):\n  \"\"\"Take a numpy observation [3x3x3] bool area and create an OpenSpiel state.\n\n  Args:\n    board_state: 3x3x3 bool array with [col, row, c] with c indexing, in order,\n      empty squares, x moves, y moves.\n\n  Returns:\n    open_spiel_state: OpenSpiel state of this position.\n  \"\"\"\n  game = pyspiel.load_game('tic_tac_toe')\n  open_spiel_state = game.new_initial_state()\n\n  x_moves = np.flatnonzero(board_state[:, :, 1])\n  y_moves = np.flatnonzero(board_state[:, :, 2])\n\n  for x_m, y_m in itertools.zip_longest(x_moves, y_moves):\n    if open_spiel_state.is_terminal():\n      break\n    open_spiel_state.apply_action(x_m)\n    if open_spiel_state.is_terminal():\n      break\n    if y_m is not None:\n      open_spiel_state.apply_action(y_m)\n\n  return open_spiel_state\n\n\ndef open_spiel_move_to_single_marker_action(action):\n  row, col = np.unravel_index(action, shape=(3, 3))\n  return SingleMarkerAction(row=row, col=col)\n\n\ndef tic_tac_toe_random_move(state, random_state):\n  \"\"\"Returns a legal move at random from current state.\n\n  Args:\n    state: World state of the game. Either an OpenSpiel state\n      or a numpy encoding of the board.\n    random_state: numpy random state used for choosing randomly if there is more\n      than one optimal action.\n\n  Returns:\n    action: SingleMarkerAction of a random move.\n  \"\"\"\n  if isinstance(state, np.ndarray):\n    spiel_state = numpy_array_to_open_spiel_state(state)\n  else:\n    spiel_state = state\n  if spiel_state.is_terminal():\n    return False\n\n  legal_actions = spiel_state.legal_actions()\n  action = random_state.choice(legal_actions)\n  return open_spiel_move_to_single_marker_action(action)\n\n\ndef tic_tac_toe_minimax(state, random_state):\n  \"\"\"Tree search from the world_state in order to find the optimal action.\n\n  Args:\n    state: World state of the game. Either an OpenSpiel state\n      or a numpy encoding of the board.\n    random_state: numpy random state used for choosing randomly if there is more\n      than one optimal action.\n\n  Returns:\n    action: SingleMarkerAction of an optimal move.\n  \"\"\"\n  if isinstance(state, np.ndarray):\n    spiel_state = numpy_array_to_open_spiel_state(state)\n  else:\n    spiel_state = state\n  if spiel_state.is_terminal():\n    return False\n\n  current_player = spiel_state.current_player()\n  legal_actions = spiel_state.legal_actions()\n  best_actions = []\n  best_value = -100\n\n  for action in legal_actions:\n    state_after_action = spiel_state.clone()\n    state_after_action.apply_action(action)\n    value, _ = minimax.expectiminimax(state_after_action, 100, None,\n                                      current_player)\n    if value > best_value:\n      best_value = value\n      best_actions = [action]\n    elif value == best_value:\n      best_actions.append(action)\n\n  assert best_actions\n  action = random_state.choice(best_actions)\n\n  return open_spiel_move_to_single_marker_action(action)\n"
  },
  {
    "path": "physics_planning_games/board_games/tic_tac_toe_logic_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\nfrom absl.testing import absltest\nfrom absl.testing import parameterized\nimport numpy as np\n\nfrom physics_planning_games.board_games import tic_tac_toe_logic\n\n\nclass TicTacToeGameLogicTest(parameterized.TestCase):\n\n  def setUp(self):\n    super(TicTacToeGameLogicTest, self).setUp()\n    self.logic = tic_tac_toe_logic.TicTacToeGameLogic()\n    self.expected_board_state = np.zeros((3, 3, 3), dtype=bool)\n    self.expected_board_state[..., 0] = True  # All positions initially empty.\n\n  def test_valid_move_sequence(self):\n    np.testing.assert_array_equal(self.logic.get_board_state(),\n                                  self.expected_board_state)\n\n    action = tic_tac_toe_logic.SingleMarkerAction(col=1, row=2)\n    self.assertTrue(self.logic.apply(player=0, action=action),\n                    msg='Invalid action: {}'.format(action))\n    self.expected_board_state[action.row, action.col, 0] = False\n    self.expected_board_state[action.row, action.col, 1] = True\n    np.testing.assert_array_equal(self.logic.get_board_state(),\n                                  self.expected_board_state)\n\n    action = tic_tac_toe_logic.SingleMarkerAction(col=0, row=1)\n    self.assertTrue(self.logic.apply(player=1, action=action),\n                    msg='Invalid action: {}'.format(action))\n    self.expected_board_state[action.row, action.col, 0] = False\n    self.expected_board_state[action.row, action.col, 2] = True\n    np.testing.assert_array_equal(self.logic.get_board_state(),\n                                  self.expected_board_state)\n\n  def test_invalid_move_sequence(self):\n    np.testing.assert_array_equal(self.logic.get_board_state(),\n                                  self.expected_board_state)\n    action = tic_tac_toe_logic.SingleMarkerAction(col=1, row=2)\n    self.assertTrue(self.logic.apply(player=0, action=action),\n                    msg='Invalid action: {}'.format(action))\n    self.expected_board_state[action.row, action.col, 0] = False\n    self.expected_board_state[action.row, action.col, 1] = True\n    np.testing.assert_array_equal(self.logic.get_board_state(),\n                                  self.expected_board_state)\n\n    # Player 0 tries to move again in the same location.\n    action = tic_tac_toe_logic.SingleMarkerAction(col=1, row=2)\n    self.assertFalse(self.logic.apply(player=0, action=action),\n                     msg='Invalid action was accepted: {}'.format(action))\n\n    # Player 1 tries to move in the same location as player 0.\n    self.assertFalse(self.logic.apply(player=1, action=action),\n                     msg='Invalid action was accepted: {}'.format(action))\n\n    # The board state should not have changed as a result of invalid actions.\n    np.testing.assert_array_equal(self.logic.get_board_state(),\n                                  self.expected_board_state)\n\n  @parameterized.named_parameters([\n      dict(testcase_name='player_0_win',\n           move_sequence=((0, 0, 0),\n                          (1, 0, 1),\n                          (0, 1, 0),\n                          (1, 2, 1),\n                          (0, 2, 0)),\n           winner_id=0),\n      dict(testcase_name='player_1_win',\n           move_sequence=((0, 0, 0),\n                          (1, 0, 2),\n                          (0, 1, 0),\n                          (1, 1, 1),\n                          (0, 0, 1),\n                          (1, 2, 0)),\n           winner_id=1),\n      dict(testcase_name='draw',\n           move_sequence=((0, 0, 0),\n                          (1, 1, 1),\n                          (0, 1, 0),\n                          (1, 2, 0),\n                          (0, 0, 2),\n                          (1, 0, 1),\n                          (0, 2, 1),\n                          (1, 2, 2),\n                          (0, 1, 2)),\n           winner_id=None)])\n  def test_reward_and_termination(self, move_sequence, winner_id):\n    for (player_id, row, col) in move_sequence:\n      self.assertFalse(self.logic.is_game_over)\n      self.assertDictEqual(self.logic.get_reward, {0: 0.0, 1: 0.0})\n      action = tic_tac_toe_logic.SingleMarkerAction(col=col, row=row)\n      self.assertTrue(self.logic.apply(player=player_id, action=action),\n                      msg='Invalid action: {}'.format(action))\n    self.assertTrue(self.logic.is_game_over)\n    rewards = self.logic.get_reward\n    if winner_id is not None:\n      loser_id = 1 - winner_id\n      self.assertDictEqual(rewards, {winner_id: 1.0, loser_id: 0.0})\n    else:  # Draw\n      self.assertDictEqual(rewards, {0: 0.5, 1: 0.5})\n\n  def test_random_opponent_vs_optimal(self):\n    \"\"\"Play random v optimal opponents and check that optimal largely wins.\n    \"\"\"\n    rand_state = np.random.RandomState(42)\n    optimal_opponent = tic_tac_toe_logic.TicTacToeOptimalOpponent()\n    random_opponent = tic_tac_toe_logic.TicTacToeRandomOpponent()\n    players = [optimal_opponent, random_opponent]\n    optimal_returns = []\n    random_returns = []\n\n    for _ in range(20):\n      logic = tic_tac_toe_logic.TicTacToeGameLogic()\n      optimal_opponent.reset()\n      random_opponent.reset()\n\n      rand_state.shuffle(players)\n      current_player_idx = 0\n\n      while not logic.is_game_over:\n        current_player = players[current_player_idx]\n        action = current_player.policy(logic, rand_state)\n        self.assertTrue(logic.apply(current_player_idx, action),\n                        msg='Opponent {} selected invalid action {}'.format(\n                            current_player, action))\n        current_player_idx = (current_player_idx + 1) % 2\n\n      # Record the winner.\n      reward = logic.get_reward\n      if players[0] == optimal_opponent:\n        optimal_return = reward[0]\n        random_return = reward[1]\n      else:\n        optimal_return = reward[1]\n        random_return = reward[0]\n      optimal_returns.append(optimal_return)\n      random_returns.append(random_return)\n\n    mean_optimal_returns = np.mean(optimal_returns)\n    mean_random_returns = np.mean(random_returns)\n    self.assertGreater(mean_optimal_returns, 0.9)\n    self.assertLess(mean_random_returns, 0.1)\n\n  @parameterized.named_parameters([\n      dict(testcase_name='pos0',\n           move_sequence=((0, 0, 1),\n                          (1, 1, 1),\n                          (0, 0, 2),\n                          (1, 1, 2)),\n           optimal_move=(0, 0)),\n      dict(testcase_name='pos1',\n           move_sequence=((0, 0, 1),\n                          (1, 1, 2),\n                          (0, 0, 2),\n                          (1, 1, 1)),\n           optimal_move=(0, 0)),\n      dict(testcase_name='pos2',\n           move_sequence=((0, 2, 1),\n                          (1, 1, 2),\n                          (0, 2, 2),\n                          (1, 1, 1)),\n           optimal_move=(2, 0)),\n  ])\n  def test_minimax_policy(self, move_sequence, optimal_move):\n    rand_state = np.random.RandomState(42)\n    for (player_id, row, col) in move_sequence:\n      action = tic_tac_toe_logic.SingleMarkerAction(col=col, row=row)\n      self.assertTrue(self.logic.apply(player=player_id, action=action),\n                      msg='Invalid action: {}'.format(action))\n\n    state = self.logic.open_spiel_state\n    planner_action = tic_tac_toe_logic.tic_tac_toe_minimax(state,\n                                                           rand_state)\n    self.assertEqual(planner_action, optimal_move)\n\n    # Do the same but with np array as input\n    self.logic = tic_tac_toe_logic.TicTacToeGameLogic()\n    for (player_id, row, col) in move_sequence:\n      action = tic_tac_toe_logic.SingleMarkerAction(col=col, row=row)\n      self.assertTrue(self.logic.apply(player=player_id, action=action),\n                      msg='Invalid action: {}'.format(action))\n\n    board = self.logic.get_board_state()\n    planner_action = tic_tac_toe_logic.tic_tac_toe_minimax(board,\n                                                           rand_state)\n    self.assertEqual(planner_action, optimal_move)\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "physics_planning_games/explore.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Visualize physical planning games in Domain Explorer.\n\"\"\"\n\nimport functools\n\nfrom absl import app\nfrom absl import flags\nfrom dm_control import composer\nfrom dm_control import viewer\nfrom dm_control.locomotion import walkers\n\nfrom physics_planning_games import board_games\nfrom physics_planning_games.mujoban.boxoban import boxoban_level_generator\nfrom physics_planning_games.mujoban.mujoban import Mujoban\nfrom physics_planning_games.mujoban.mujoban_level import MujobanLevel\n\nflags.DEFINE_enum('environment_name', 'mujoban', [\n    'mujoban', 'go_7x7', 'tic_tac_toe_markers_features',\n    'tic_tac_toe_mixture_opponent_markers_features',\n    'tic_tac_toe_optimal_opponent_markers_features'],\n                  'Name of an environment to load.')\nFLAGS = flags.FLAGS\n\nTIME_LIMIT = 1000\nCONTROL_TIMESTEP = .1\n\n\ndef main(argv):\n  if len(argv) > 1:\n    raise app.UsageError('Too many command-line arguments.')\n\n  environment_name = FLAGS.environment_name\n  if environment_name == 'mujoban':\n    walker = walkers.JumpingBallWithHead(add_ears=True, camera_height=0.25)\n    arena = MujobanLevel(boxoban_level_generator)\n    task = Mujoban(\n        walker=walker,\n        maze=arena,\n        control_timestep=CONTROL_TIMESTEP,\n        top_camera_height=64,\n        top_camera_width=48)\n    env = composer.Environment(\n        time_limit=TIME_LIMIT, task=task, strip_singleton_obs_buffer_dim=True)\n  else:\n    env = functools.partial(\n        board_games.load, environment_name=environment_name)\n\n  viewer.launch(env)\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "physics_planning_games/mujoban/__init__.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Top-level module definitions for mujoban.\"\"\"\n\nfrom physics_planning_games.mujoban.mujoban import Mujoban\nfrom physics_planning_games.mujoban.mujoban_level import MujobanLevel\n"
  },
  {
    "path": "physics_planning_games/mujoban/boxoban.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Level generator for Mujoban based on levels from follwing dataset.\n\nhttps://github.com/deepmind/boxoban-levels/\n\"\"\"\n\nimport glob\nimport os\nimport zipfile\n\nimport numpy as np\nimport requests\n\nBOXOBAN_URL = \"https://github.com/deepmind/boxoban-levels/archive/master.zip\"\n\n\ndef boxoban_level_generator(levels_set=\"unfiltered\", data_split=\"valid\"):\n  env = Boxoban(levels_set=levels_set, data_split=data_split)\n  while True:\n    index = np.random.randint(0, env.num_levels-1)\n    yield env.levels[index]\n\n\nclass Boxoban(object):\n  \"\"\"Class for loading and generatting Boxoban levels.\"\"\"\n\n  def __init__(self,\n               levels_set=\"unfiltered\",\n               data_split=\"valid\"):\n    self._levels_set = levels_set\n    self._data_split = data_split\n    self._levels = []\n\n    data_file_path_local = os.path.join(os.path.dirname(__file__),\n                                        \"boxoban_cache\",\n                                        \"{}_{}.npz\".format(self._levels_set,\n                                                           self._data_split))\n\n    data_file_path_global = os.path.join(\"/tmp/boxoban_cache\",\n                                         \"{}_{}.npz\".format(self._levels_set,\n                                                            self._data_split))\n\n    if os.path.exists(data_file_path_local):\n      self.levels = np.load(data_file_path_local)[\"levels\"]\n    elif os.path.exists(data_file_path_global):\n      self.levels = np.load(data_file_path_global)[\"levels\"]\n    else:\n      self.levels = self.get_data()\n    self.num_levels = len(self.levels)\n\n  def get_data(self):\n    \"\"\"Downloads and cache the data.\"\"\"\n    try:\n      cache_path = os.path.join(\n          os.path.dirname(__file__), \"boxoban_cache\")\n      os.makedirs(cache_path, exist_ok=True)\n    except PermissionError:\n      cache_path = os.path.join(\"/tmp/boxoban_cache\")\n      if not os.path.exists(cache_path):\n        os.makedirs(cache_path, exist_ok=True)\n\n    # Get the zip file\n    zip_file_path = os.path.join(cache_path, \"master.zip\")\n    if not os.path.exists(zip_file_path):\n      response = requests.get(BOXOBAN_URL, stream=True)\n      handle = open(zip_file_path, \"wb\")\n      for chunk in response.iter_content(chunk_size=512):\n        if chunk:\n          handle.write(chunk)\n      handle.close()\n\n      with zipfile.ZipFile(zip_file_path, \"r\") as zipref:\n        zipref.extractall(cache_path)\n\n    # convert to npz\n    path = os.path.join(cache_path, \"boxoban-levels-master\",\n                        self._levels_set,\n                        self._data_split)\n    files = glob.glob(path + \"/*.txt\")\n    levels = \"\".join([open(f, \"r\").read() for f in files])\n    levels = levels.split(\"\\n;\")\n    levels = [\"\\n\".join(item.split(\"\\n\")[1:]) for item in levels]\n    levels = np.asarray(levels)\n    data_file_path = os.path.join(\n        cache_path, \"{}_{}.npz\".format(self._levels_set, self._data_split))\n    np.savez(data_file_path, levels=levels)\n    return levels\n"
  },
  {
    "path": "physics_planning_games/mujoban/mujoban.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"MuJoban task.\n\nMujoban is a single player puzzle-solving game embedded in the MuJoCo\nsimulation environment. The puzzle is based on the 2D game of Sokoban,\nwhere an agent situated on a grid has to push boxes onto target locations.\n\"\"\"\n\nimport collections\n\nfrom dm_control import composer\nfrom dm_control.composer.observation import observable as observable_lib\nfrom dm_control.locomotion.arenas import labmaze_textures\nfrom dm_control.locomotion.arenas.mazes import MazeWithTargets\nfrom dm_env import specs\nimport numpy as np\nfrom six.moves import range\nfrom six.moves import zip\n\nfrom physics_planning_games.mujoban import mujoban_level\nfrom physics_planning_games.mujoban.mujoban_pad import MujobanPad\nfrom physics_planning_games.mujoban.props import BoxWithSites\n\n_FLOOR_GAP_CHAR = '#'\n_AMBIENT_HEADLIGHT = 0.8\n_BOX_SIZE = 0.4\n_BOX_HEIGHT = 0.15\n_BOX_MASS = 2.5\n_BOX_FRICTION = [0.5, 0.005, 0.0001]\n\n_BOX_RGBA = [173. / 255., 179. / 255., 60. / 255., 1.]\n_BOX_PRESSED_RGBA = [0, 0, 1, 1]\n_TARGET_RGBA = [1.0, 0., 0., 1.]\n_PRESSED_TARGET_RGBA = [0., 1., 0., 1.]\n\n_PEG_SIZE = 0.05\n_PEG_HEIGHT = 0.25\n_PEG_RGBA = [0.5, 0.5, 0.5, 1]\n_PEG_ANGLE = np.pi / 4\n\n# Aliveness in [-1., 0.].\n_ALIVE_THRESHOLD = -0.5\n\n# Constants used by the full entity layer\n_WALL_LAYER = 0\n_TARGET_LAYER = 1\n_SOKOBAN_LAYER = 2\n_BOX_LAYER = 3\n\n\ndef _round_positions(boxes, walker, last_round_walker):\n  \"\"\"Round float positions to snap objects to grid.\"\"\"\n  round_walker = np.round(walker).astype('int32')\n  round_boxes = [np.round(box).astype('int32') for box in boxes]\n  for box in round_boxes:\n    if np.array_equal(box, round_walker):\n      round_walker = last_round_walker\n  return round_boxes, round_walker\n\n\nclass Mujoban(composer.Task):\n  \"\"\"Requires objects to be moved onto matching-colored floor pads.\n\n  Agent only receives instantaneous rewards of +1 for the\n  timestep in which a box first enters a target, and -1 for the\n  timestep in which a box leaves the target. There is an additional reward of\n  +10 when all the boxes are put on targets, at which point the episode\n  terminates.\n  \"\"\"\n\n  def __init__(self,\n               walker,\n               maze,\n               target_height=0,\n               box_prop=None,\n               box_size=None,\n               box_mass=None,\n               with_grid_pegs=False,\n               detection_tolerance=0.0,\n               physics_timestep=0.001,\n               control_timestep=0.025,\n               top_camera_height=128,\n               top_camera_width=128,\n               box_on_target_reward=1.0,\n               level_solved_reward=10.0):\n    \"\"\"Initializes this task.\n\n    Args:\n      walker: A `Walker` object.\n      maze: A `BaseMaze` object.\n      target_height: The height of the target pads above the ground, in meters.\n      box_prop: An optional `Primitive` prop to use as the box.\n      box_size: An optional three element sequence defining the half lengths of\n        the sides of the box.\n      box_mass: Box mass. If this is a list or tuple, a random value is sampled\n        from the truncated exponential distribution in [a, b) where a =\n        box_mass[0] and b = box_mass[1], with scale factor box_mass[2] * (b -\n        a).\n      with_grid_pegs: Whether to add solid pegs at the corners of the maze\n        grid cells. This helps to enforce the usual Sokoban rules where\n        diagonal movements are forbidden.\n      detection_tolerance: A maximum length scale (in metres) within which a\n        box is allowed to stick outside a target pad while still activating it.\n        For example, if this is set to 0.1 then a box will activate a pad if it\n        sticks out of the pad by no more than 10 centimetres.\n      physics_timestep: The time step of the physics simulation.\n      control_timestep: Should be an integer multiple of the physics time step.\n      top_camera_height: An int; the height of the top camera in the\n        observation. Setting this to 0 will disable the top camera.\n      top_camera_width: An int; the width of the top camera in the observation.\n        Setting this to 0 will disable the top camera.\n      box_on_target_reward: A float; reward for putting a box on a target.\n      level_solved_reward: A float: reward for solving the level.\n    \"\"\"\n    skybox_texture = labmaze_textures.SkyBox(style='sky_03')\n    wall_textures = labmaze_textures.WallTextures(style='style_01')\n    floor_textures = labmaze_textures.FloorTextures(style='style_01')\n\n    self._detection_tolerance = detection_tolerance\n    self._box_prop = box_prop\n    self._box_on_target_reward = box_on_target_reward\n    self._level_solved_reward = level_solved_reward\n\n    self._maze = maze\n    self._arena = MazeWithTargets(\n        maze=maze,\n        xy_scale=1,\n        z_height=1,\n        skybox_texture=skybox_texture,\n        wall_textures=wall_textures,\n        floor_textures=floor_textures)\n    self._walker = walker\n    self._arena.mjcf_model.visual.headlight.ambient = [_AMBIENT_HEADLIGHT] * 3\n    self._arena.text_maze_regenerated_hook = self._regenerate_positions\n    self._first_step = True\n\n    # Targets.\n    self._targets = []\n    self._target_positions = []\n\n    # Boxes.\n    self._box_size = box_size or [_BOX_SIZE] * 2 + [_BOX_HEIGHT]\n    self._box_mass = box_mass or _BOX_MASS\n    self._boxes = []\n    self._box_positions = []\n    self._with_grid_pegs = with_grid_pegs\n    self._peg_body = None\n    self._last_walker_position = None\n\n    # Create walkers and corresponding observables.\n    self._walker.create_root_joints(self._arena.attach(self._walker))\n    enabled_observables = [self._walker.observables.sensors_touch,\n                           self._walker.observables.orientation]\n    enabled_observables += self._walker.observables.proprioception\n    enabled_observables += self._walker.observables.kinematic_sensors\n    for observable in enabled_observables:\n      observable.enabled = True\n    if top_camera_width and top_camera_height:\n      self._arena.observables.top_camera.enabled = True\n      self._arena.observables.top_camera.width = top_camera_width\n      self._arena.observables.top_camera.height = top_camera_height\n    # symbolic entity repenstaion in labyrinth format.\n    self._entity_layer = self._maze.entity_layer\n    # pixel layer is same as pixel rendering of symbolic sokoban.\n    self._pixel_layer = np.zeros(self._entity_layer.shape + (3,), dtype='uint8')\n    self._full_entity_layer = np.zeros(self._entity_layer.shape + (4,),\n                                       dtype='bool')\n    pixel_layer_obs = observable_lib.Generic(lambda _: self._pixel_layer)\n    pixel_layer_obs.enabled = True\n    full_entity_layer_obs = observable_lib.Generic(\n        lambda _: self._full_entity_layer)\n    full_entity_layer_obs.enabled = True\n    self._task_observables = collections.OrderedDict({\n        'pixel_layer': pixel_layer_obs,\n        'full_entity_layer': full_entity_layer_obs,\n    })\n    # Set time steps.\n    self.set_timesteps(\n        physics_timestep=physics_timestep, control_timestep=control_timestep)\n    self._discount = 1.\n\n  @property\n  def name(self):\n    return 'Mujoban'\n\n  @property\n  def root_entity(self):\n    return self._arena\n\n  def _regenerate_positions(self):\n    self._object_positions = self._arena.find_token_grid_positions(\n        [mujoban_level.TARGET_CHAR, mujoban_level.BOX_CHAR])\n    self._box_positions = self._arena.grid_to_world_positions(\n        self._object_positions[mujoban_level.BOX_CHAR])\n    target_grid_positions = self._object_positions[mujoban_level.TARGET_CHAR]\n    self._target_positions = self._arena.grid_to_world_positions(\n        target_grid_positions)\n\n    for idx in range(len(self._target_positions)):\n      target_grid_position = target_grid_positions[idx]\n      grid_y, grid_x = target_grid_position\n      self._arena.maze.variations_layer[grid_y, grid_x] = _FLOOR_GAP_CHAR\n\n  def initialize_episode_mjcf(self, random_state):\n    self._arena.regenerate()\n\n    # Clear existing targets and boxes\n    for target in self._targets:\n      target.detach()\n    self._targets = []\n    for box in self._boxes:\n      box.detach()\n    self._boxes = []\n    self._arena.mjcf_model.contact.remove('pair')\n\n    for _ in range(self._maze.num_targets):\n      target = MujobanPad(\n          size=self._arena.xy_scale,\n          height=0,\n          detection_tolerance=self._detection_tolerance)\n      self._arena.attach(target)\n      self._targets.append(target)\n\n    for _ in range(self._maze.num_boxes):\n      box = self._box_prop\n      if not box:\n        box = BoxWithSites(half_lengths=self._box_size)\n        box.geom.mass = _BOX_MASS\n      box.geom.rgba = [0, 0, 0, 1]  # Will be randomized for each episode.\n      frame = self._arena.attach(box)\n      frame.add('joint', type='slide', axis=[1, 0, 0], name='x_slider')\n      frame.add('joint', type='slide', axis=[0, 1, 0], name='y_slider')\n      frame.add('joint', type='slide', axis=[0, 0, 1], name='z_slider')\n      self._boxes.append(box)\n      for target in self._targets:\n        target.register_box(box)\n\n      # Reduce the friction between box and ground.\n      ground_geom = self._arena.mjcf_model.find('geom', 'ground')\n      self._arena.mjcf_model.contact.add(\n          'pair',\n          geom1=box.geom,\n          geom2=ground_geom,\n          condim=6,\n          friction=[\n              _BOX_FRICTION[0], _BOX_FRICTION[0], _BOX_FRICTION[1],\n              _BOX_FRICTION[2], _BOX_FRICTION[2]\n          ])\n\n    # Set box masses.\n    for box in self._boxes:\n      box.geom.mass = _BOX_MASS\n      box.geom.rgba[:] = _BOX_RGBA\n\n    for target in self._targets:\n      target.rgba[:] = _TARGET_RGBA\n      target.pressed_rgba[:] = _PRESSED_TARGET_RGBA\n\n    if self._with_grid_pegs:\n      if self._peg_body is not None:\n        self._peg_body.remove()\n\n      self._peg_body = self._arena.mjcf_model.worldbody.add('body')\n      for y in range(self._arena.maze.height - 1):\n        for x in range(self._arena.maze.width - 1):\n          peg_x, peg_y, _ = self._arena.grid_to_world_positions(\n              [[x + 0.5, y + 0.5]])[0]\n          self._peg_body.add(\n              'geom', type='box',\n              size=[_PEG_SIZE / np.sqrt(2),\n                    _PEG_SIZE / np.sqrt(2),\n                    _PEG_HEIGHT / 2],\n              pos=[peg_x, peg_y, _PEG_HEIGHT / 2],\n              quat=[np.cos(_PEG_ANGLE / 2), 0, 0, np.sin(_PEG_ANGLE / 2)],\n              rgba=_PEG_RGBA)\n\n  def initialize_episode(self, physics, random_state):\n    self._first_step = True\n    self._was_activated = [False] * len(self._targets)\n    self._is_solved = False\n    self._discount = 1.\n\n    self._walker.reinitialize_pose(physics, random_state)\n    spawn_position = self._arena.spawn_positions[0]\n    spawn_rotation = random_state.uniform(-np.pi, np.pi)\n    spawn_quat = np.array(\n        [np.cos(spawn_rotation / 2), 0, 0,\n         np.sin(spawn_rotation / 2)])\n    self._walker.shift_pose(\n        physics, [spawn_position[0], spawn_position[1], 0.0], spawn_quat)\n\n    for box, box_xy_position in zip(self._boxes, self._box_positions):\n      # Position at the middle of a maze cell.\n      box_position = np.array(\n          [box_xy_position[0], box_xy_position[1], self._box_size[2]])\n\n      # Commit the box's final pose.\n      box.set_pose(physics, position=box_position, quaternion=[1., 0., 0., 0.])\n\n    for target, target_position in zip(self._targets, self._target_positions):\n      target.set_pose(physics, position=target_position)\n      target.reset(physics)\n\n    self._update_entity_pixel_layers(physics)\n\n  def before_step(self, physics, actions, random_state):\n    if isinstance(actions, list):\n      actions = np.concatenate(actions)\n    super(Mujoban, self).before_step(physics, actions, random_state)\n    if self._first_step:\n      self._first_step = False\n    else:\n      self._was_activated = [target.activated for target in self._targets]\n\n  def _get_object_positions_in_grid(self, physics):\n    box_positions = self._arena.world_to_grid_positions(\n        [physics.bind(box.geom).xpos for box in self._boxes])\n    walker_position = self._arena.world_to_grid_positions(\n        [physics.bind(self._walker.root_body).xpos])[0]\n\n    return box_positions, walker_position\n\n  def _update_entity_pixel_layers(self, physics):\n    \"\"\"Updates the pixel observation and both layered representations.\n\n    Mujoban offers 3 grid representations of the world:\n    * the pixel layer: this is a grid representations with an RGB value at\n      each grid point;\n    * the entity layer: this is a grid representation with a character at\n      each grid point. This representation hides information since if Sokoban\n      or a box are over a target, then the target is occluded. This is the\n      official entity layer used by arenas which is based on dm_control labmaze;\n    * the full entity layer: this is a grid represention with a boolean vector\n      of length 4 at each grid point. The first value is `True` iff there is a\n      wall at this location. The second value is `True` iff there is a target at\n      this location. The third value is for Sokoban, and fourth value is for\n      boxes. Note that this is not a one-hot encoding since Sokoban or a box\n      can share the same location as a target.\n\n    Args:\n      physics: a Mujoco physics object.\n\n    Raises:\n      RuntimeError: if a box or walker are overlapping with a wall.\n    \"\"\"\n    # The entity layer from the maze is a string that shows the maze at the\n    # *beginning* of the level. This is fixed throughout an episode.\n    entity_layer = self._maze.entity_layer.copy()\n    box_positions, walker_position = self._get_object_positions_in_grid(physics)\n    # round positions to snap to grid.\n    box_positions, walker_position = _round_positions(\n        box_positions, walker_position, self._last_walker_position)\n\n    # setup pixel layer\n    map_size = entity_layer.shape\n    pixel_layer = np.ndarray(map_size + (3,), dtype='uint8')\n    pixel_layer.fill(128)\n    # setup full entity layer\n    full_entity_layer = np.zeros(map_size + (4,), dtype='bool')\n    # remove boxes and agent\n    entity_layer[entity_layer == mujoban_level.BOX_CHAR] = '.'\n    entity_layer[entity_layer == 'P'] = '.'\n    # draw empty space and goals\n    pixel_layer[entity_layer == '.'] = [0, 0, 0]\n    pixel_layer[entity_layer == 'G'] = [255, 0, 0]\n    full_entity_layer[:, :, _WALL_LAYER] = True\n    full_entity_layer[:, :, _WALL_LAYER][entity_layer == '.'] = False\n    full_entity_layer[:, :, _WALL_LAYER][entity_layer == 'G'] = False\n    full_entity_layer[:, :, _TARGET_LAYER][entity_layer == 'G'] = True\n\n    # update boxes\n    for pos in box_positions:\n      # to ensure we are not changing the walls.\n      if entity_layer[pos[0], pos[1]] == '*':\n        raise RuntimeError('Box and wall positions are overlapping and this ',\n                           'should not happen. It requires investigation and ',\n                           'and fixing.')\n      # the entity layer has no representation of box on goal.\n      entity_layer[pos[0], pos[1]] = mujoban_level.BOX_CHAR\n      if np.array_equal(pixel_layer[pos[0], pos[1]], [255, 0, 0]):\n        pixel_layer[pos[0], pos[1]] = [0, 255, 0]  # box on goal\n      else:\n        pixel_layer[pos[0], pos[1]] = [255, 255, 0]\n      full_entity_layer[pos[0], pos[1], _BOX_LAYER] = True\n\n    # update player\n    if entity_layer[walker_position[0], walker_position[1]] == '*':\n      raise RuntimeError('Walker and wall positions are overlapping and this ',\n                         'should have not happen. It requires investigation ',\n                         'and fixing.')\n\n    entity_layer[walker_position[0], walker_position[1]] = 'P'\n    pixel_layer[walker_position[0], walker_position[1]] = 0, 0, 255\n    full_entity_layer[\n        walker_position[0], walker_position[1], _SOKOBAN_LAYER] = True\n\n    self._last_walker_position = walker_position\n    self._entity_layer = entity_layer\n    self._pixel_layer = pixel_layer\n    self._full_entity_layer = full_entity_layer\n\n  def after_step(self, physics, random_state):\n    super(Mujoban, self).after_step(physics, random_state)\n    for box in self._boxes:\n      physics.bind(box.geom).rgba = _BOX_RGBA\n    for target in self._targets:\n      if target.activated:\n        target.activator.rgba = _BOX_PRESSED_RGBA\n    self._update_entity_pixel_layers(physics)\n    self._is_solved = all([target.activated for target in self._targets])\n    if self._is_solved:\n      self._discount = 0.\n\n  def get_reward(self, physics):\n    reward = 0.0\n    for target, was_activated in zip(self._targets, self._was_activated):\n      if target.activated and not was_activated:\n        reward += self._box_on_target_reward\n      elif was_activated and not target.activated:\n        reward -= self._box_on_target_reward\n    if self._is_solved:\n      reward += self._level_solved_reward\n    return reward\n\n  def get_discount(self, physics):\n    return self._discount\n\n  def should_terminate_episode(self, physics):\n    is_dead = self._walker.aliveness(physics) < _ALIVE_THRESHOLD\n    return self._is_solved or is_dead\n\n  def get_reward_spec(self):\n    return specs.ArraySpec(shape=[], dtype=np.float32)\n\n  @property\n  def task_observables(self):\n    return self._task_observables\n"
  },
  {
    "path": "physics_planning_games/mujoban/mujoban_level.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Module for generating Mujoban level.\n\n\"\"\"\n\n\nimport labmaze\n\n\nBOX_CHAR = 'B'\nTARGET_CHAR = labmaze.defaults.OBJECT_TOKEN\n\n_DEFAULT_LEVEL = \"\"\"\n   #####\n   #   #\n#### # #\n# . .# #\n#  .   #\n# .## $##\n##  #$$ #\n ##   $@#\n  ##  ###\n   ####\"\"\"\n\n\n# The meaning of symbols here are the same as defined in\n# http://sneezingtiger.com/sokoban/levels/sasquatch5Text.html. These are the\n# same symbols as used by the Sokoban community.\nEMPTY_CELL = ' '\nGOAL = '.'\nPLAYER = '@'\nPLAYER_ON_GOAL = '+'\nBOX = '$'\nBOX_ON_GOAL = '*'\nWALL = '#'\n_SOKOBAN_SYMBOLS = [\n    EMPTY_CELL, GOAL, PLAYER, PLAYER_ON_GOAL, BOX, BOX_ON_GOAL, WALL\n]\n\n\ndef single_level_generator(level=_DEFAULT_LEVEL):\n  while True:\n    yield level\n\n\ndef _ascii_to_text_grid_level(ascii_level):\n  \"\"\"Goes from official Sokoban ASCII art to string understood by Mujoban.\n\n  Args:\n    ascii_level: a multiline string; each character is a location in a\n      gridworld.\n\n  Returns:\n    A string.\n  \"\"\"\n  level = ascii_level\n  if level.startswith('\\n'):\n    level = level[1:]\n  level = level.replace('$', BOX_CHAR)\n  level = level.replace('.', TARGET_CHAR)\n  level = level.replace(' ', '.')\n  level = level.replace('#', '*')\n  level = level.replace('@', 'P')\n  if level[-1] == '\\n':\n    level = level[:-1]\n  # Pad\n  all_rows = level.split('\\n')\n  width = max(len(row) for row in all_rows)\n  padded_rows = []\n  for row in all_rows:\n    row += '*' * (width - len(row))\n    padded_rows.append(row)\n  level = '\\n'.join(padded_rows)\n  return level + '\\n'\n\n\nclass MujobanLevel(labmaze.BaseMaze):\n  \"\"\"A maze that represents a level in Mujoban.\"\"\"\n\n  def __init__(self, ascii_level_generator=single_level_generator):\n    \"\"\"Constructor.\n\n    Args:\n      ascii_level_generator: a Python generator. At each iteration, this should\n      return a string representing a level. The symbols in the string should be\n      those of http://sneezingtiger.com/sokoban/levels/sasquatch5Text.html.\n      These are the same symbols as used by the Sokoban community.\n    \"\"\"\n    self._level_iterator = ascii_level_generator()\n    self.regenerate()\n\n  def regenerate(self):\n    \"\"\"Regenerates the maze if required.\"\"\"\n    level = next(self._level_iterator)\n    self._entity_layer = labmaze.TextGrid(_ascii_to_text_grid_level(level))\n    self._variation_layer = self._entity_layer.copy()\n    self._variation_layer[:] = '.'\n    self._num_boxes = (self._entity_layer == BOX_CHAR).sum()\n    num_targets = (self._entity_layer == TARGET_CHAR).sum()\n    if num_targets != self._num_boxes:\n      raise ValueError('Number of targets {} should equal number of boxes {}.'\n                       .format(num_targets, self._num_boxes))\n\n  @property\n  def num_boxes(self):\n    return self._num_boxes\n\n  @property\n  def num_targets(self):\n    return self._num_boxes\n\n  @property\n  def entity_layer(self):\n    return self._entity_layer\n\n  @property\n  def variations_layer(self):\n    return self._variation_layer\n\n  @property\n  def height(self):\n    return self._entity_layer.shape[0]\n\n  @property\n  def width(self):\n    return self._entity_layer.shape[1]\n"
  },
  {
    "path": "physics_planning_games/mujoban/mujoban_level_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Tests for mujoban_level.\"\"\"\n\n\nfrom absl.testing import absltest\n\nfrom physics_planning_games.mujoban import mujoban_level\n\n\n_LEVEL = \"\"\"\n#####\n#  @####\n#  $.  #\n###$.# #\n#  $.# #\n# #$.  #\n#    ###\n######\"\"\"\n\n_GRID_LEVEL = \"\"\"********\n*..P****\n*..BG..*\n***BG*.*\n*..BG*.*\n*.*BG..*\n*....***\n********\n\"\"\"\n\n\nclass MujobanLevelTest(absltest.TestCase):\n\n  def test_ascii_to_text_grid_level(self):\n    grid_level = mujoban_level._ascii_to_text_grid_level(_LEVEL)\n    self.assertEqual(_GRID_LEVEL, grid_level)\n\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "physics_planning_games/mujoban/mujoban_pad.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"A floor pad that is activated through touch.\"\"\"\n\nimport weakref\nfrom dm_control import composer\nfrom dm_control import mjcf\nimport numpy as np\n\n\ndef _get_activator_box(pad_xpos, pad_size, boxes, tolerance=0.0):\n  \"\"\"Returns the activator box, if any. Otherwise returns None.\"\"\"\n  # Ignore the height\n  pad_min = pad_xpos[0:2] - pad_size[0:2]\n  pad_max = pad_xpos[0:2] + pad_size[0:2]\n  for box in boxes:\n    box_xpos = np.array(box.xpos[0:2])\n    box_size = np.array(box.size[0:2])\n\n    min_ = pad_min + box_size - tolerance\n    max_ = pad_max - box_size + tolerance\n    in_range = np.logical_and(box_xpos >= min_, box_xpos <= max_).all()\n    if in_range:\n      return box\n  # No activator box was found\n  return None\n\n\nclass MujobanPad(composer.Entity):\n  \"\"\"A less sensitive floor pad for Mujoban.\"\"\"\n\n  def _build(self, rgba=None, pressed_rgba=None,\n             size=1, height=0.02, detection_tolerance=0.0, name='mujoban_pad'):\n    rgba = tuple(rgba or (1, 0, 0, 1))\n    pressed_rgba = tuple(pressed_rgba or (0.2, 0, 0, 1))\n    self._mjcf_root = mjcf.RootElement(model=name)\n    self._site = self._mjcf_root.worldbody.add(\n        'site', type='box', name='site',\n        pos=[0, 0, (height / 2 or -0.001)],\n        size=[size / 2, size / 2, (height / 2 or 0.001)], rgba=rgba)\n    self._activated = False\n    self._rgba = np.array(rgba, dtype=float)\n    self._pressed_rgba = np.array(pressed_rgba, dtype=float)\n    self._activator = None\n    self._detection_tolerance = detection_tolerance\n    self._boxes = []\n\n  @property\n  def rgba(self):\n    return self._rgba\n\n  @property\n  def pressed_rgba(self):\n    return self._pressed_rgba\n\n  def register_box(self, box_entity):\n    self._boxes.append(weakref.proxy(box_entity))\n\n  @property\n  def site(self):\n    return self._site\n\n  @property\n  def boxes(self):\n    return self._boxes\n\n  @property\n  def activator(self):\n    return self._activator if self._activated else None\n\n  @property\n  def mjcf_model(self):\n    return self._mjcf_root\n\n  def initialize_episode_mjcf(self, unused_random_state):\n    self._activated = False\n\n  def initialize_episode(self, physics, unused_random_state):\n    self._update_activation(physics)\n\n  def _update_activation(self, physics):\n    # Note: we get the physically bound box, not an object from self._boxes.\n    # That's because the generator expression below generates bound objects.\n    box = _get_activator_box(\n        pad_xpos=np.array(physics.bind(self._site).xpos),\n        pad_size=np.array(physics.bind(self._site).size),\n        boxes=(physics.bind(box.geom) for box in self._boxes),\n        tolerance=self._detection_tolerance,)\n    if box:\n      self._activated = True\n      self._activator = box\n    else:\n      self._activated = False\n      self._activator = None\n    if self._activated:\n      physics.bind(self._site).rgba = self._pressed_rgba\n    else:\n      physics.bind(self._site).rgba = self._rgba\n\n  def before_step(self, physics, unused_random_state):\n    self._update_activation(physics)\n\n  def after_substep(self, physics, unused_random_state):\n    self._update_activation(physics)\n\n  @property\n  def activated(self):\n    \"\"\"Whether this floor pad is pressed at the moment.\"\"\"\n    return self._activated\n\n  def reset(self, physics):\n    self._activated = False\n    physics.bind(self._site).rgba = self._rgba\n"
  },
  {
    "path": "physics_planning_games/mujoban/mujoban_test.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Tests for Mujoban.\"\"\"\n\n\nfrom absl.testing import absltest\nfrom dm_control import composer\nfrom dm_control.locomotion import walkers\nimport dm_env as environment\nimport numpy as np\n\nfrom physics_planning_games.mujoban.mujoban import Mujoban\nfrom physics_planning_games.mujoban.mujoban_level import MujobanLevel\n\n\nTIME_LIMIT = 5\nCONTROL_TIMESTEP = .1\n\n\nclass MujobanTest(absltest.TestCase):\n\n  def test(self):\n    walker = walkers.JumpingBallWithHead(add_ears=True, camera_height=0.25)\n    arena = MujobanLevel()\n    task = Mujoban(\n        walker=walker,\n        maze=arena,\n        control_timestep=CONTROL_TIMESTEP,\n        top_camera_height=64,\n        top_camera_width=48)\n    env = composer.Environment(\n        time_limit=TIME_LIMIT,\n        task=task,\n        strip_singleton_obs_buffer_dim=True)\n    time_step = env.reset()\n    self.assertEqual(\n        set([\n            'pixel_layer', 'full_entity_layer', 'top_camera',\n            'walker/body_height', 'walker/end_effectors_pos',\n            'walker/joints_pos', 'walker/joints_vel',\n            'walker/sensors_accelerometer', 'walker/sensors_gyro',\n            'walker/sensors_touch', 'walker/sensors_velocimeter',\n            'walker/world_zaxis', 'walker/orientation',\n        ]), set(time_step.observation.keys()))\n    top_camera = time_step.observation['top_camera']\n    self.assertEqual(np.uint8, top_camera.dtype)\n    self.assertEqual((64, 48, 3), top_camera.shape)\n    all_step_types = []\n    # Run enough actions that we are guaranteed to have restarted the\n    # episode at least once.\n    for _ in range(int(2*TIME_LIMIT/CONTROL_TIMESTEP)):\n      action = 2*np.random.random(env.action_spec().shape) - 1\n      time_step = env.step(action)\n      all_step_types.append(time_step.step_type)\n    self.assertEqual(set([environment.StepType.FIRST,\n                          environment.StepType.MID,\n                          environment.StepType.LAST]),\n                     set(all_step_types))\n\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "physics_planning_games/mujoban/props.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\n\"\"\"Box props used in Mujoban that the agent pushes.\n\"\"\"\n\nimport itertools\n\nfrom dm_control import composer\nfrom dm_control.entities import props\n\n\nclass Box(props.Primitive):\n  \"\"\"A class representing a box prop.\"\"\"\n\n  def _build(self, half_lengths=None, mass=None, name='box'):\n    half_lengths = half_lengths or [0.05, 0.1, 0.15]\n    super(Box, self)._build(geom_type='box',\n                            size=half_lengths,\n                            mass=mass,\n                            name=name)\n\n\nclass BoxWithSites(Box):\n  \"\"\"A class representing a box prop with sites on the corners.\"\"\"\n\n  def _build(self, half_lengths=None, mass=None, name='box'):\n    half_lengths = half_lengths or [0.05, 0.1, 0.15]\n    super(BoxWithSites, self)._build(half_lengths=half_lengths, mass=mass,\n                                     name=name)\n\n    corner_positions = itertools.product([half_lengths[0], -half_lengths[0]],\n                                         [half_lengths[1], -half_lengths[1]],\n                                         [half_lengths[2], -half_lengths[2]])\n    corner_sites = []\n    for i, corner_pos in enumerate(corner_positions):\n      corner_sites.append(\n          self.mjcf_model.worldbody.add(\n              'site',\n              type='sphere',\n              name='corner_{}'.format(i),\n              size=[0.1],\n              pos=corner_pos,\n              rgba=[1, 0, 0, 1.0],\n              group=composer.SENSOR_SITES_GROUP))\n    self._corner_sites = tuple(corner_sites)\n\n  @property\n  def corner_sites(self):\n    return self._corner_sites\n"
  },
  {
    "path": "physics_planning_games/requirements.txt",
    "content": "absl-py == 0.9.0\ndm-control == 0.0.403778684\ndm-env\nlabmaze\nnumpy == 1.19.1\nrequests == 2.24.0\n"
  },
  {
    "path": "pitfalls_static_language_models/README.md",
    "content": "# Mind the Gap: Assessing Temporal Generalization in Neural Language Models\n\nThis repository contains the dataset splits used in\n[Mind the Gap: Assessing Temporal Generalization in Neural Language Models](https://arxiv.org/abs/2102.01951)\n(Lazaridou, Kuncoro, Gribovskaya et al., 2021).\n\n## Datasets\n\nWe provide splits of two public datasets used in the paper:\nWMT News Crawl and arXiv abstracts.\n\nEach subset is stored on Google Cloud Storage as gzipped text file specifying publication dates (in the `YYYYMMDD` format) and IDs of documents contained in the subset.\n\n### arXiv\n\narXiv abstracts and publication dates were obtained through arXiv's [OAI-PMH service](https://arxiv.org/help/oa) on January 2, 2021. We used the value in the `created` field as the article's publication date. The arXiv dataset can also be downloaded from [Kaggle](https://www.kaggle.com/Cornell-University/arxiv).\n\n### WMT\n\nWe downloaded document-split versions of the English and German [WMT News Crawl dataset](http://data.statmt.org/news-crawl/README). As the dataset does not provide document IDs, we used SHA256 hashes of the Base64 encoded unsplit texts of articles as their IDs, i.e.:\n\n```python\nimport gzip\nimport hashlib\n\nwith gzip.open('news-docs.2007.en.filtered.gz', 'rb') as gz_file:\n  for line in gz_file:\n    date, sentence_split_text, unsplit_text = line.decode('utf-8').strip().split('\\t')\n    docid = hashlib.sha256(unsplit_text.encode('utf-8')).hexdigest()\n    yield docid, (date, sentence_split_text, unsplit_text)\n```\n\nWe trained models on sentence split article texts. Some articles may appear multiple times in the dataset with different publication dates; we used each article's earliest publication date.\n\n\n## Splits used in experiments\n\n| Experiments | Dataset | Splits |\n|---|:---:|:---:|\n| Sections 3-5 | WMT | control: [train](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2017-09-30/control_train.gz), [validation](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2017-09-30/control_validation.gz) <br /> time-stratified: [train](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2017-09-30/time_stratified_train.gz), [validation](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2017-09-30/time_stratified_validation.gz) <br /> [test](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2017-09-30/test.gz)|\n|| arXiv | control: [train](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/arxiv/time_stratified_control/split_2017-09-30/control_train.gz), [validation](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/arxiv/time_stratified_control/split_2017-09-30/control_validation.gz) <br /> time-stratified: [train](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/arxiv/time_stratified_control/split_2017-09-30/time_stratified_train.gz), [validation](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/arxiv/time_stratified_control/split_2017-09-30/time_stratified_validation.gz) <br /> [test](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/arxiv/time_stratified_control/split_2017-09-30/test.gz)|\n| Appendix B: The effect of outdated models persists beyond the 2018/2019 test period | WMT | test period 2017/2018: control: [train](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2016-09-30/control_train.gz), [validation](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2016-09-30/control_validation.gz); time-stratified: [train](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2016-09-30/time_stratified_train.gz), [validation](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2016-09-30/time_stratified_validation.gz); [test](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2016-09-30/test.gz) <br /> test period 2016/2017: control: [train](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2015-09-30/control_train.gz), [validation](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2015-09-30/control_validation.gz); time-stratified: [train](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2015-09-30/time_stratified_train.gz), [validation](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2015-09-30/time_stratified_validation.gz); [test](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2015-09-30/test.gz) <br /> test period 2015/2016: control: [train](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2014-09-30/control_train.gz), [validation](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2014-09-30/control_validation.gz); time-stratified: [train](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2014-09-30/time_stratified_train.gz), [validation](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2014-09-30/time_stratified_validation.gz); [test](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2014-09-30/test.gz) <br /> test period 2014/2015: control: [train](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2013-09-30/control_train.gz), [validation](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2013-09-30/control_validation.gz); time-stratified: [train](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2013-09-30/time_stratified_train.gz), [validation](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2013-09-30/time_stratified_validation.gz); [test](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2013-09-30/test.gz) <br /> test period 2013/2014: control: [train](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2012-09-30/control_train.gz), [validation](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2012-09-30/control_validation.gz); time-stratified: [train](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2012-09-30/time_stratified_train.gz), [validation](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2012-09-30/time_stratified_validation.gz); [test](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/time_stratified_control/split_2012-09-30/test.gz) |\n| Appendix C: The effect of outdated models persists beyond the two-year gap | WMT | test: same as the one for Sections 3-5 <br /> validation: same as the one for the time-stratified setup for Sections 3-5 <br /> train until: [2017-09-30](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/increasing_distance/split_2017-09-30/train.gz), [2017-03-31](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/increasing_distance/split_2017-03-31/train.gz), [2016-09-30](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/increasing_distance/split_2016-09-30/train.gz), [2016-03-31](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/increasing_distance/split_2016-03-31/train.gz), [2015-09-30](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/increasing_distance/split_2015-09-30/train.gz), [2015-03-31](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/increasing_distance/split_2015-03-31/train.gz), [2014-09-30](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/increasing_distance/split_2014-09-30/train.gz), [2014-03-31](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/increasing_distance/split_2014-03-31/train.gz), [2013-09-30](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/increasing_distance/split_2013-09-30/train.gz), [2013-03-31](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/increasing_distance/split_2013-03-31/train.gz), [2012-09-30](https://storage.googleapis.com/deepmind-pitfalls-static-language-models/wmt/increasing_distance/split_2012-09-30/train.gz)\n"
  },
  {
    "path": "polygen/README.md",
    "content": "# PolyGen: An Autoregressive Generative Model of 3D Meshes\n\n![](media/example_samples.png)\n\nThis package provides an implementation of PolyGen as described in:\n\n> **PolyGen: An Autoregressive Generative Model of 3D Meshes**, *Charlie Nash, Yaroslav Ganin, S. M. Ali Eslami, Peter W. Battaglia*, ICML, 2020. ([abs](https://arxiv.org/abs/2002.10880))\n\nPolyGen is a generative model of 3D meshes that sequentially outputs mesh\nvertices and faces. PolyGen consists of two parts: A vertex model, that\nunconditionally models mesh vertices, and a face model, that models the mesh\nfaces conditioned on input vertices. The vertex model uses a masked Transformer\ndecoder to express a distribution over the vertex sequences. For the face model\nwe combine Transformers with [pointer networks](https://arxiv.org/abs/1506.03134)\nto express a distribution over variable length vertex sequences.\n\nIn this repository we provide model code in `modules.py`, as well as data\nprocessing utilities in `data_utils.py`. We also provide Colabs that demo\ntraining PolyGen from scratch on a toy dataset, as well as sampling from a\npre-trained model.\n\nThere are some minor differences between this implementation and the paper:\n* We add global information (e.g. class label embeddings) as an additional input in the first sequence position rather than project it at each layer. This reduces parameters, but does not significantly impact performance.\n* We use [ReZero](https://arxiv.org/abs/2003.04887) which improves training speed.\n* We train with only shifting augmentations, which we find to be as effective as the combination of augmentations described in the paper. This helps to simplify the data pre-processing pipeline.\n\n## Training Colab [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind-research/blob/master/polygen/training.ipynb)\n\nTo train a PolyGen model from scratch on a collection of simple meshes use this\ncolab. This demonstrates the data pre-processing required to create inputs for\nthe vertex and face models.\n\n## Sampling pre-trained model Colab [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind-research/blob/master/polygen/sample-pretrained.ipynb)\n\nTo sample a model pre-trained on [ShapeNet](https://www.shapenet.org/)\nuse this colab. The model is class-conditional, and is trained on longer\nsequence lengths than those described in the paper. This colab uses the\nfollowing checkpoints: ([Google Cloud Storage\nbucket](https://console.cloud.google.com/storage/browser/deepmind-research-polygen)).\n\n## Installation\n\nTo install the package locally run:\n```bash\ngit clone https://github.com/deepmind/deepmind-research.git .\ncd deepmind-research/polygen\npip install -e .\n```\n\n## Giving Credit\n\nIf you use this code in your work, we ask you to cite this paper:\n\n```\n@article{nash2020polygen,\n  author={Charlie Nash and Yaroslav Ganin and S. M. Ali Eslami and Peter W. Battaglia},\n  title={PolyGen: An Autoregressive Generative Model of 3D Meshes},\n  journal={ICML},\n  year={2020}\n}\n```\n\n## Disclaimer\n\nThis is not an official Google product.\n"
  },
  {
    "path": "polygen/data_utils.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Mesh data utilities.\"\"\"\nimport matplotlib.pyplot as plt\nfrom mpl_toolkits import mplot3d  # pylint: disable=unused-import\nfrom mpl_toolkits.mplot3d.art3d import Poly3DCollection\nimport networkx as nx\nimport numpy as np\nimport six\nfrom six.moves import range\nimport tensorflow.compat.v1 as tf\nimport tensorflow_probability as tfp\ntfd = tfp.distributions\n\n\ndef random_shift(vertices, shift_factor=0.25):\n  \"\"\"Apply random shift to vertices.\"\"\"\n  max_shift_pos = tf.cast(255 - tf.reduce_max(vertices, axis=0), tf.float32)\n  max_shift_pos = tf.maximum(max_shift_pos, 1e-9)\n\n  max_shift_neg = tf.cast(tf.reduce_min(vertices, axis=0), tf.float32)\n  max_shift_neg = tf.maximum(max_shift_neg, 1e-9)\n\n  shift = tfd.TruncatedNormal(\n      tf.zeros([1, 3]), shift_factor*255, -max_shift_neg,\n      max_shift_pos).sample()\n  shift = tf.cast(shift, tf.int32)\n  vertices += shift\n  return vertices\n\n\ndef make_vertex_model_dataset(ds, apply_random_shift=False):\n  \"\"\"Prepare dataset for vertex model training.\"\"\"\n  def _vertex_model_map_fn(example):\n    vertices = example['vertices']\n\n    # Randomly shift vertices\n    if apply_random_shift:\n      vertices = random_shift(vertices)\n\n    # Re-order vertex coordinates as (z, y, x).\n    vertices_permuted = tf.stack(\n        [vertices[:, 2], vertices[:, 1], vertices[:, 0]], axis=-1)\n\n    # Flatten quantized vertices, reindex starting from 1, and pad with a\n    # zero stopping token.\n    vertices_flat = tf.reshape(vertices_permuted, [-1])\n    example['vertices_flat'] = tf.pad(vertices_flat + 1, [[0, 1]])\n\n    # Create mask to indicate valid tokens after padding and batching.\n    example['vertices_flat_mask'] = tf.ones_like(\n        example['vertices_flat'], dtype=tf.float32)\n    return example\n  return ds.map(_vertex_model_map_fn)\n\n\ndef make_face_model_dataset(\n    ds, apply_random_shift=False, shuffle_vertices=True, quantization_bits=8):\n  \"\"\"Prepare dataset for face model training.\"\"\"\n  def _face_model_map_fn(example):\n    vertices = example['vertices']\n\n    # Randomly shift vertices\n    if apply_random_shift:\n      vertices = random_shift(vertices)\n    example['num_vertices'] = tf.shape(vertices)[0]\n\n    # Optionally shuffle vertices and re-order faces to match\n    if shuffle_vertices:\n      permutation = tf.random_shuffle(tf.range(example['num_vertices']))\n      vertices = tf.gather(vertices, permutation)\n      face_permutation = tf.concat(\n          [tf.constant([0, 1], dtype=tf.int32), tf.argsort(permutation) + 2],\n          axis=0)\n      example['faces'] = tf.cast(\n          tf.gather(face_permutation, example['faces']), tf.int64)\n\n    def _dequantize_verts(verts, n_bits):\n      min_range = -0.5\n      max_range = 0.5\n      range_quantize = 2**n_bits - 1\n      verts = tf.cast(verts, tf.float32)\n      verts = verts * (max_range - min_range) / range_quantize + min_range\n      return verts\n\n    # Vertices are quantized. So convert to floats for input to face model\n    example['vertices'] = _dequantize_verts(vertices, quantization_bits)\n    example['vertices_mask'] = tf.ones_like(\n        example['vertices'][..., 0], dtype=tf.float32)\n    example['faces_mask'] = tf.ones_like(example['faces'], dtype=tf.float32)\n    return example\n  return ds.map(_face_model_map_fn)\n\n\ndef read_obj_file(obj_file):\n  \"\"\"Read vertices and faces from already opened file.\"\"\"\n  vertex_list = []\n  flat_vertices_list = []\n  flat_vertices_indices = {}\n  flat_triangles = []\n\n  for line in obj_file:\n    tokens = line.split()\n    if not tokens:\n      continue\n    line_type = tokens[0]\n    # We skip lines not starting with v or f.\n    if line_type == 'v':\n      vertex_list.append([float(x) for x in tokens[1:]])\n    elif line_type == 'f':\n      triangle = []\n      for i in range(len(tokens) - 1):\n        vertex_name = tokens[i + 1]\n        if vertex_name in flat_vertices_indices:\n          triangle.append(flat_vertices_indices[vertex_name])\n          continue\n        flat_vertex = []\n        for index in six.ensure_str(vertex_name).split('/'):\n          if not index:\n            continue\n          # obj triangle indices are 1 indexed, so subtract 1 here.\n          flat_vertex += vertex_list[int(index) - 1]\n        flat_vertex_index = len(flat_vertices_list)\n        flat_vertices_list.append(flat_vertex)\n        flat_vertices_indices[vertex_name] = flat_vertex_index\n        triangle.append(flat_vertex_index)\n      flat_triangles.append(triangle)\n\n  return np.array(flat_vertices_list, dtype=np.float32), flat_triangles\n\n\ndef read_obj(obj_path):\n  \"\"\"Open .obj file from the path provided and read vertices and faces.\"\"\"\n\n  with open(obj_path) as obj_file:\n    return read_obj_file(obj_file)\n\n\ndef write_obj(vertices, faces, file_path, transpose=True, scale=1.):\n  \"\"\"Write vertices and faces to obj.\"\"\"\n  if transpose:\n    vertices = vertices[:, [1, 2, 0]]\n  vertices *= scale\n  if faces is not None:\n    if min(min(faces)) == 0:\n      f_add = 1\n    else:\n      f_add = 0\n  with open(file_path, 'w') as f:\n    for v in vertices:\n      f.write('v {} {} {}\\n'.format(v[0], v[1], v[2]))\n    for face in faces:\n      line = 'f'\n      for i in face:\n        line += ' {}'.format(i + f_add)\n      line += '\\n'\n      f.write(line)\n\n\ndef quantize_verts(verts, n_bits=8):\n  \"\"\"Convert vertices in [-1., 1.] to discrete values in [0, n_bits**2 - 1].\"\"\"\n  min_range = -0.5\n  max_range = 0.5\n  range_quantize = 2**n_bits - 1\n  verts_quantize = (verts - min_range) * range_quantize / (\n      max_range - min_range)\n  return verts_quantize.astype('int32')\n\n\ndef dequantize_verts(verts, n_bits=8, add_noise=False):\n  \"\"\"Convert quantized vertices to floats.\"\"\"\n  min_range = -0.5\n  max_range = 0.5\n  range_quantize = 2**n_bits - 1\n  verts = verts.astype('float32')\n  verts = verts * (max_range - min_range) / range_quantize + min_range\n  if add_noise:\n    verts += np.random.uniform(size=verts.shape) * (1 / range_quantize)\n  return verts\n\n\ndef face_to_cycles(face):\n  \"\"\"Find cycles in face.\"\"\"\n  g = nx.Graph()\n  for v in range(len(face) - 1):\n    g.add_edge(face[v], face[v + 1])\n  g.add_edge(face[-1], face[0])\n  return list(nx.cycle_basis(g))\n\n\ndef flatten_faces(faces):\n  \"\"\"Converts from list of faces to flat face array with stopping indices.\"\"\"\n  if not faces:\n    return np.array([0])\n  else:\n    l = [f + [-1] for f in faces[:-1]]\n    l += [faces[-1] + [-2]]\n    return np.array([item for sublist in l for item in sublist]) + 2  # pylint: disable=g-complex-comprehension\n\n\ndef unflatten_faces(flat_faces):\n  \"\"\"Converts from flat face sequence to a list of separate faces.\"\"\"\n  def group(seq):\n    g = []\n    for el in seq:\n      if el == 0 or el == -1:\n        yield g\n        g = []\n      else:\n        g.append(el - 1)\n    yield g\n  outputs = list(group(flat_faces - 1))[:-1]\n  # Remove empty faces\n  return [o for o in outputs if len(o) > 2]\n\n\ndef center_vertices(vertices):\n  \"\"\"Translate the vertices so that bounding box is centered at zero.\"\"\"\n  vert_min = vertices.min(axis=0)\n  vert_max = vertices.max(axis=0)\n  vert_center = 0.5 * (vert_min + vert_max)\n  return vertices - vert_center\n\n\ndef normalize_vertices_scale(vertices):\n  \"\"\"Scale the vertices so that the long diagonal of the bounding box is one.\"\"\"\n  vert_min = vertices.min(axis=0)\n  vert_max = vertices.max(axis=0)\n  extents = vert_max - vert_min\n  scale = np.sqrt(np.sum(extents**2))\n  return vertices / scale\n\n\ndef quantize_process_mesh(vertices, faces, tris=None, quantization_bits=8):\n  \"\"\"Quantize vertices, remove resulting duplicates and reindex faces.\"\"\"\n  vertices = quantize_verts(vertices, quantization_bits)\n  vertices, inv = np.unique(vertices, axis=0, return_inverse=True)\n\n  # Sort vertices by z then y then x.\n  sort_inds = np.lexsort(vertices.T)\n  vertices = vertices[sort_inds]\n\n  # Re-index faces and tris to re-ordered vertices.\n  faces = [np.argsort(sort_inds)[inv[f]] for f in faces]\n  if tris is not None:\n    tris = np.array([np.argsort(sort_inds)[inv[t]] for t in tris])\n\n  # Merging duplicate vertices and re-indexing the faces causes some faces to\n  # contain loops (e.g [2, 3, 5, 2, 4]). Split these faces into distinct\n  # sub-faces.\n  sub_faces = []\n  for f in faces:\n    cliques = face_to_cycles(f)\n    for c in cliques:\n      c_length = len(c)\n      # Only append faces with more than two verts.\n      if c_length > 2:\n        d = np.argmin(c)\n        # Cyclically permute faces just that first index is the smallest.\n        sub_faces.append([c[(d + i) % c_length] for i in range(c_length)])\n  faces = sub_faces\n  if tris is not None:\n    tris = np.array([v for v in tris if len(set(v)) == len(v)])\n\n  # Sort faces by lowest vertex indices. If two faces have the same lowest\n  # index then sort by next lowest and so on.\n  faces.sort(key=lambda f: tuple(sorted(f)))\n  if tris is not None:\n    tris = tris.tolist()\n    tris.sort(key=lambda f: tuple(sorted(f)))\n    tris = np.array(tris)\n\n  # After removing degenerate faces some vertices are now unreferenced.\n  # Remove these.\n  num_verts = vertices.shape[0]\n  vert_connected = np.equal(\n      np.arange(num_verts)[:, None], np.hstack(faces)[None]).any(axis=-1)\n  vertices = vertices[vert_connected]\n\n  # Re-index faces and tris to re-ordered vertices.\n  vert_indices = (\n      np.arange(num_verts) - np.cumsum(1 - vert_connected.astype('int')))\n  faces = [vert_indices[f].tolist() for f in faces]\n  if tris is not None:\n    tris = np.array([vert_indices[t].tolist() for t in tris])\n\n  return vertices, faces, tris\n\n\ndef process_mesh(vertices, faces, quantization_bits=8):\n  \"\"\"Process mesh vertices and faces.\"\"\"\n\n  # Transpose so that z-axis is vertical.\n  vertices = vertices[:, [2, 0, 1]]\n\n  # Translate the vertices so that bounding box is centered at zero.\n  vertices = center_vertices(vertices)\n\n  # Scale the vertices so that the long diagonal of the bounding box is equal\n  # to one.\n  vertices = normalize_vertices_scale(vertices)\n\n  # Quantize and sort vertices, remove resulting duplicates, sort and reindex\n  # faces.\n  vertices, faces, _ = quantize_process_mesh(\n      vertices, faces, quantization_bits=quantization_bits)\n\n  # Flatten faces and add 'new face' = 1 and 'stop' = 0 tokens.\n  faces = flatten_faces(faces)\n\n  # Discard degenerate meshes without faces.\n  return {\n      'vertices': vertices,\n      'faces': faces,\n  }\n\n\ndef load_process_mesh(mesh_obj_path, quantization_bits=8):\n  \"\"\"Load obj file and process.\"\"\"\n  # Load mesh\n  vertices, faces = read_obj(mesh_obj_path)\n  return process_mesh(vertices, faces, quantization_bits)\n\n\ndef plot_meshes(mesh_list,\n                ax_lims=0.3,\n                fig_size=4,\n                el=30,\n                rot_start=120,\n                vert_size=10,\n                vert_alpha=0.75,\n                n_cols=4):\n  \"\"\"Plots mesh data using matplotlib.\"\"\"\n\n  n_plot = len(mesh_list)\n  n_cols = np.minimum(n_plot, n_cols)\n  n_rows = np.ceil(n_plot / n_cols).astype('int')\n  fig = plt.figure(figsize=(fig_size * n_cols, fig_size * n_rows))\n  for p_inc, mesh in enumerate(mesh_list):\n\n    for key in [\n        'vertices', 'faces', 'vertices_conditional', 'pointcloud', 'class_name'\n    ]:\n      if key not in list(mesh.keys()):\n        mesh[key] = None\n\n    ax = fig.add_subplot(n_rows, n_cols, p_inc + 1, projection='3d')\n\n    if mesh['faces'] is not None:\n      if mesh['vertices_conditional'] is not None:\n        face_verts = np.concatenate(\n            [mesh['vertices_conditional'], mesh['vertices']], axis=0)\n      else:\n        face_verts = mesh['vertices']\n      collection = []\n      for f in mesh['faces']:\n        collection.append(face_verts[f])\n      plt_mesh = Poly3DCollection(collection)\n      plt_mesh.set_edgecolor((0., 0., 0., 0.3))\n      plt_mesh.set_facecolor((1, 0, 0, 0.2))\n      ax.add_collection3d(plt_mesh)\n\n    if mesh['vertices'] is not None:\n      ax.scatter3D(\n          mesh['vertices'][:, 0],\n          mesh['vertices'][:, 1],\n          mesh['vertices'][:, 2],\n          lw=0.,\n          s=vert_size,\n          c='g',\n          alpha=vert_alpha)\n\n    if mesh['vertices_conditional'] is not None:\n      ax.scatter3D(\n          mesh['vertices_conditional'][:, 0],\n          mesh['vertices_conditional'][:, 1],\n          mesh['vertices_conditional'][:, 2],\n          lw=0.,\n          s=vert_size,\n          c='b',\n          alpha=vert_alpha)\n\n    if mesh['pointcloud'] is not None:\n      ax.scatter3D(\n          mesh['pointcloud'][:, 0],\n          mesh['pointcloud'][:, 1],\n          mesh['pointcloud'][:, 2],\n          lw=0.,\n          s=2.5 * vert_size,\n          c='b',\n          alpha=1.)\n\n    ax.set_xlim(-ax_lims, ax_lims)\n    ax.set_ylim(-ax_lims, ax_lims)\n    ax.set_zlim(-ax_lims, ax_lims)\n\n    ax.view_init(el, rot_start)\n\n    display_string = ''\n    if mesh['faces'] is not None:\n      display_string += 'Num. faces: {}\\n'.format(len(collection))\n    if mesh['vertices'] is not None:\n      num_verts = mesh['vertices'].shape[0]\n      if mesh['vertices_conditional'] is not None:\n        num_verts += mesh['vertices_conditional'].shape[0]\n      display_string += 'Num. verts: {}\\n'.format(num_verts)\n    if mesh['class_name'] is not None:\n      display_string += 'Synset: {}'.format(mesh['class_name'])\n    if mesh['pointcloud'] is not None:\n      display_string += 'Num. pointcloud: {}\\n'.format(\n          mesh['pointcloud'].shape[0])\n    ax.text2D(0.05, 0.8, display_string, transform=ax.transAxes)\n  plt.subplots_adjust(\n      left=0., right=1., bottom=0., top=1., wspace=0.025, hspace=0.025)\n  plt.show()\n"
  },
  {
    "path": "polygen/meshes/cone.obj",
    "content": "v 0.000000 -1.000000 -1.000000\nv 0.195090 -1.000000 -0.980785\nv 0.382683 -1.000000 -0.923880\nv 0.555570 -1.000000 -0.831470\nv 0.707107 -1.000000 -0.707107\nv 0.831470 -1.000000 -0.555570\nv 0.923880 -1.000000 -0.382683\nv 0.980785 -1.000000 -0.195090\nv 1.000000 -1.000000 -0.000000\nv 0.980785 -1.000000 0.195090\nv 0.923880 -1.000000 0.382683\nv 0.831470 -1.000000 0.555570\nv 0.707107 -1.000000 0.707107\nv 0.555570 -1.000000 0.831470\nv 0.382683 -1.000000 0.923880\nv 0.195090 -1.000000 0.980785\nv -0.000000 -1.000000 1.000000\nv -0.195091 -1.000000 0.980785\nv -0.382684 -1.000000 0.923879\nv -0.555571 -1.000000 0.831469\nv -0.707107 -1.000000 0.707106\nv -0.831470 -1.000000 0.555570\nv -0.923880 -1.000000 0.382683\nv 0.000000 1.000000 0.000000\nv -0.980785 -1.000000 0.195089\nv -1.000000 -1.000000 -0.000001\nv -0.980785 -1.000000 -0.195091\nv -0.923879 -1.000000 -0.382684\nv -0.831469 -1.000000 -0.555571\nv -0.707106 -1.000000 -0.707108\nv -0.555569 -1.000000 -0.831470\nv -0.382682 -1.000000 -0.923880\nv -0.195089 -1.000000 -0.980786\nf 1 24 2\nf 2 24 3\nf 3 24 4\nf 4 24 5\nf 5 24 6\nf 6 24 7\nf 7 24 8\nf 8 24 9\nf 9 24 10\nf 10 24 11\nf 11 24 12\nf 12 24 13\nf 13 24 14\nf 14 24 15\nf 15 24 16\nf 16 24 17\nf 17 24 18\nf 18 24 19\nf 19 24 20\nf 20 24 21\nf 21 24 22\nf 22 24 23\nf 23 24 25\nf 25 24 26\nf 26 24 27\nf 27 24 28\nf 28 24 29\nf 29 24 30\nf 30 24 31\nf 31 24 32\nf 32 24 33\nf 33 24 1\nf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33\n"
  },
  {
    "path": "polygen/meshes/cube.obj",
    "content": "v -1.000000 -1.000000 1.000000\nv -1.000000 1.000000 1.000000\nv -1.000000 -1.000000 -1.000000\nv -1.000000 1.000000 -1.000000\nv 1.000000 -1.000000 1.000000\nv 1.000000 1.000000 1.000000\nv 1.000000 -1.000000 -1.000000\nv 1.000000 1.000000 -1.000000\nf 1 2 4 3\nf 3 4 8 7\nf 7 8 6 5\nf 5 6 2 1\nf 3 7 5 1\nf 8 4 2 6\n"
  },
  {
    "path": "polygen/meshes/cylinder.obj",
    "content": "v 0.000000 -1.000000 -1.000000\nv 0.000000 1.000000 -1.000000\nv 0.195090 -1.000000 -0.980785\nv 0.195090 1.000000 -0.980785\nv 0.382683 -1.000000 -0.923880\nv 0.382683 1.000000 -0.923880\nv 0.555570 -1.000000 -0.831470\nv 0.555570 1.000000 -0.831470\nv 0.707107 -1.000000 -0.707107\nv 0.707107 1.000000 -0.707107\nv 0.831470 -1.000000 -0.555570\nv 0.831470 1.000000 -0.555570\nv 0.923880 -1.000000 -0.382683\nv 0.923880 1.000000 -0.382683\nv 0.980785 -1.000000 -0.195090\nv 0.980785 1.000000 -0.195090\nv 1.000000 -1.000000 -0.000000\nv 1.000000 1.000000 -0.000000\nv 0.980785 -1.000000 0.195090\nv 0.980785 1.000000 0.195090\nv 0.923880 -1.000000 0.382683\nv 0.923880 1.000000 0.382683\nv 0.831470 -1.000000 0.555570\nv 0.831470 1.000000 0.555570\nv 0.707107 -1.000000 0.707107\nv 0.707107 1.000000 0.707107\nv 0.555570 -1.000000 0.831470\nv 0.555570 1.000000 0.831470\nv 0.382683 -1.000000 0.923880\nv 0.382683 1.000000 0.923880\nv 0.195090 -1.000000 0.980785\nv 0.195090 1.000000 0.980785\nv -0.000000 -1.000000 1.000000\nv -0.000000 1.000000 1.000000\nv -0.195091 -1.000000 0.980785\nv -0.195091 1.000000 0.980785\nv -0.382684 -1.000000 0.923879\nv -0.382684 1.000000 0.923879\nv -0.555571 -1.000000 0.831469\nv -0.555571 1.000000 0.831469\nv -0.707107 -1.000000 0.707106\nv -0.707107 1.000000 0.707106\nv -0.831470 -1.000000 0.555570\nv -0.831470 1.000000 0.555570\nv -0.923880 -1.000000 0.382683\nv -0.923880 1.000000 0.382683\nv -0.980785 -1.000000 0.195089\nv -0.980785 1.000000 0.195089\nv -1.000000 -1.000000 -0.000001\nv -1.000000 1.000000 -0.000001\nv -0.980785 -1.000000 -0.195091\nv -0.980785 1.000000 -0.195091\nv -0.923879 -1.000000 -0.382684\nv -0.923879 1.000000 -0.382684\nv -0.831469 -1.000000 -0.555571\nv -0.831469 1.000000 -0.555571\nv -0.707106 -1.000000 -0.707108\nv -0.707106 1.000000 -0.707108\nv -0.555569 -1.000000 -0.831470\nv -0.555569 1.000000 -0.831470\nv -0.382682 -1.000000 -0.923880\nv -0.382682 1.000000 -0.923880\nv -0.195089 -1.000000 -0.980786\nv -0.195089 1.000000 -0.980786\nf 1 2 4 3\nf 3 4 6 5\nf 5 6 8 7\nf 7 8 10 9\nf 9 10 12 11\nf 11 12 14 13\nf 13 14 16 15\nf 15 16 18 17\nf 17 18 20 19\nf 19 20 22 21\nf 21 22 24 23\nf 23 24 26 25\nf 25 26 28 27\nf 27 28 30 29\nf 29 30 32 31\nf 31 32 34 33\nf 33 34 36 35\nf 35 36 38 37\nf 37 38 40 39\nf 39 40 42 41\nf 41 42 44 43\nf 43 44 46 45\nf 45 46 48 47\nf 47 48 50 49\nf 49 50 52 51\nf 51 52 54 53\nf 53 54 56 55\nf 55 56 58 57\nf 57 58 60 59\nf 59 60 62 61\nf 4 2 64 62 60 58 56 54 52 50 48 46 44 42 40 38 36 34 32 30 28 26 24 22 20 18 16 14 12 10 8 6\nf 61 62 64 63\nf 63 64 2 1\nf 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63\n"
  },
  {
    "path": "polygen/meshes/icosphere.obj",
    "content": "v 0.000000 -1.000000 0.000000\nv 0.723607 -0.447220 0.525725\nv -0.276388 -0.447220 0.850649\nv -0.894426 -0.447216 0.000000\nv -0.276388 -0.447220 -0.850649\nv 0.723607 -0.447220 -0.525725\nv 0.276388 0.447220 0.850649\nv -0.723607 0.447220 0.525725\nv -0.723607 0.447220 -0.525725\nv 0.276388 0.447220 -0.850649\nv 0.894426 0.447216 0.000000\nv 0.000000 1.000000 0.000000\nv -0.162456 -0.850654 0.499995\nv 0.425323 -0.850654 0.309011\nv 0.262869 -0.525738 0.809012\nv 0.850648 -0.525736 0.000000\nv 0.425323 -0.850654 -0.309011\nv -0.525730 -0.850652 0.000000\nv -0.688189 -0.525736 0.499997\nv -0.162456 -0.850654 -0.499995\nv -0.688189 -0.525736 -0.499997\nv 0.262869 -0.525738 -0.809012\nv 0.951058 0.000000 0.309013\nv 0.951058 0.000000 -0.309013\nv 0.000000 0.000000 1.000000\nv 0.587786 0.000000 0.809017\nv -0.951058 0.000000 0.309013\nv -0.587786 0.000000 0.809017\nv -0.587786 0.000000 -0.809017\nv -0.951058 0.000000 -0.309013\nv 0.587786 0.000000 -0.809017\nv 0.000000 0.000000 -1.000000\nv 0.688189 0.525736 0.499997\nv -0.262869 0.525738 0.809012\nv -0.850648 0.525736 0.000000\nv -0.262869 0.525738 -0.809012\nv 0.688189 0.525736 -0.499997\nv 0.162456 0.850654 0.499995\nv 0.525730 0.850652 0.000000\nv -0.425323 0.850654 0.309011\nv -0.425323 0.850654 -0.309011\nv 0.162456 0.850654 -0.499995\nf 1 14 13\nf 2 14 16\nf 1 13 18\nf 1 18 20\nf 1 20 17\nf 2 16 23\nf 3 15 25\nf 4 19 27\nf 5 21 29\nf 6 22 31\nf 2 23 26\nf 3 25 28\nf 4 27 30\nf 5 29 32\nf 6 31 24\nf 7 33 38\nf 8 34 40\nf 9 35 41\nf 10 36 42\nf 11 37 39\nf 39 42 12\nf 39 37 42\nf 37 10 42\nf 42 41 12\nf 42 36 41\nf 36 9 41\nf 41 40 12\nf 41 35 40\nf 35 8 40\nf 40 38 12\nf 40 34 38\nf 34 7 38\nf 38 39 12\nf 38 33 39\nf 33 11 39\nf 24 37 11\nf 24 31 37\nf 31 10 37\nf 32 36 10\nf 32 29 36\nf 29 9 36\nf 30 35 9\nf 30 27 35\nf 27 8 35\nf 28 34 8\nf 28 25 34\nf 25 7 34\nf 26 33 7\nf 26 23 33\nf 23 11 33\nf 31 32 10\nf 31 22 32\nf 22 5 32\nf 29 30 9\nf 29 21 30\nf 21 4 30\nf 27 28 8\nf 27 19 28\nf 19 3 28\nf 25 26 7\nf 25 15 26\nf 15 2 26\nf 23 24 11\nf 23 16 24\nf 16 6 24\nf 17 22 6\nf 17 20 22\nf 20 5 22\nf 20 21 5\nf 20 18 21\nf 18 4 21\nf 18 19 4\nf 18 13 19\nf 13 3 19\nf 16 17 6\nf 16 14 17\nf 14 1 17\nf 13 15 3\nf 13 14 15\nf 14 2 15\n"
  },
  {
    "path": "polygen/model_test.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Tests for the PolyGen open-source version.\"\"\"\nfrom modules import FaceModel\nfrom modules import VertexModel\nimport numpy as np\nimport tensorflow as tf\n\n_BATCH_SIZE = 4\n_TRANSFORMER_CONFIG = {\n    'num_layers': 2,\n    'hidden_size': 64,\n    'fc_size': 256\n}\n_CLASS_CONDITIONAL = True\n_NUM_CLASSES = 4\n_NUM_INPUT_VERTS = 50\n_NUM_PAD_VERTS = 10\n_NUM_INPUT_FACE_INDICES = 200\n_QUANTIZATION_BITS = 8\n_VERTEX_MODEL_USE_DISCRETE_EMBEDDINGS = True\n_FACE_MODEL_DECODER_CROSS_ATTENTION = True\n_FACE_MODEL_DISCRETE_EMBEDDINGS = True\n_MAX_SAMPLE_LENGTH_VERTS = 10\n_MAX_SAMPLE_LENGTH_FACES = 10\n\n\ndef _get_vertex_model_batch():\n  \"\"\"Returns batch with placeholders for vertex model inputs.\"\"\"\n  return {\n      'class_label': tf.range(_BATCH_SIZE),\n      'vertices_flat': tf.placeholder(\n          dtype=tf.int32, shape=[_BATCH_SIZE, None]),\n  }\n\n\ndef _get_face_model_batch():\n  \"\"\"Returns batch with placeholders for face model inputs.\"\"\"\n  return {\n      'vertices': tf.placeholder(\n          dtype=tf.float32, shape=[_BATCH_SIZE, None, 3]),\n      'vertices_mask': tf.placeholder(\n          dtype=tf.float32, shape=[_BATCH_SIZE, None]),\n      'faces': tf.placeholder(\n          dtype=tf.int32, shape=[_BATCH_SIZE, None]),\n  }\n\n\nclass VertexModelTest(tf.test.TestCase):\n\n  def setUp(self):\n    \"\"\"Defines a vertex model.\"\"\"\n    super(VertexModelTest, self).setUp()\n    self.model = VertexModel(\n        decoder_config=_TRANSFORMER_CONFIG,\n        class_conditional=_CLASS_CONDITIONAL,\n        num_classes=_NUM_CLASSES,\n        max_num_input_verts=_NUM_INPUT_VERTS,\n        quantization_bits=_QUANTIZATION_BITS,\n        use_discrete_embeddings=_VERTEX_MODEL_USE_DISCRETE_EMBEDDINGS)\n\n  def test_model_runs(self):\n    \"\"\"Tests if the model runs without crashing.\"\"\"\n    batch = _get_vertex_model_batch()\n    pred_dist = self.model(batch, is_training=False)\n    logits = pred_dist.logits\n    with self.session() as sess:\n      sess.run(tf.global_variables_initializer())\n      vertices_flat = np.random.randint(\n          2**_QUANTIZATION_BITS + 1,\n          size=[_BATCH_SIZE, _NUM_INPUT_VERTS * 3 + 1])\n      sess.run(logits, {batch['vertices_flat']: vertices_flat})\n\n  def test_sample_outputs_range(self):\n    \"\"\"Tests if the model produces samples in the correct range.\"\"\"\n    context = {'class_label': tf.zeros((_BATCH_SIZE,), dtype=tf.int32)}\n    sample_dict = self.model.sample(\n        _BATCH_SIZE, max_sample_length=_MAX_SAMPLE_LENGTH_VERTS,\n        context=context)\n    with self.session() as sess:\n      sess.run(tf.global_variables_initializer())\n      sample_dict_np = sess.run(sample_dict)\n      in_range = np.logical_and(\n          0 <= sample_dict_np['vertices'],\n          sample_dict_np['vertices'] <= 2**_QUANTIZATION_BITS).all()\n      self.assertTrue(in_range)\n\n\nclass FaceModelTest(tf.test.TestCase):\n\n  def setUp(self):\n    \"\"\"Defines a face model.\"\"\"\n    super(FaceModelTest, self).setUp()\n    self.model = FaceModel(\n        encoder_config=_TRANSFORMER_CONFIG,\n        decoder_config=_TRANSFORMER_CONFIG,\n        class_conditional=False,\n        max_seq_length=_NUM_INPUT_FACE_INDICES,\n        decoder_cross_attention=_FACE_MODEL_DECODER_CROSS_ATTENTION,\n        use_discrete_vertex_embeddings=_FACE_MODEL_DISCRETE_EMBEDDINGS,\n        quantization_bits=_QUANTIZATION_BITS)\n\n  def test_model_runs(self):\n    \"\"\"Tests if the model runs without crashing.\"\"\"\n    batch = _get_face_model_batch()\n    pred_dist = self.model(batch, is_training=False)\n    logits = pred_dist.logits\n    with self.session() as sess:\n      sess.run(tf.global_variables_initializer())\n      vertices = np.random.rand(_BATCH_SIZE, _NUM_INPUT_VERTS, 3) - 0.5\n      vertices_mask = np.ones([_BATCH_SIZE, _NUM_INPUT_VERTS])\n      faces = np.random.randint(\n          _NUM_INPUT_VERTS + 2, size=[_BATCH_SIZE, _NUM_INPUT_FACE_INDICES])\n      sess.run(\n          logits,\n          {batch['vertices']: vertices,\n           batch['vertices_mask']: vertices_mask,\n           batch['faces']: faces}\n          )\n\n  def test_sample_outputs_range(self):\n    \"\"\"Tests if the model produces samples in the correct range.\"\"\"\n    context = _get_face_model_batch()\n    del context['faces']\n    sample_dict = self.model.sample(\n        context, max_sample_length=_MAX_SAMPLE_LENGTH_FACES)\n    with self.session() as sess:\n      sess.run(tf.global_variables_initializer())\n      # Pad the vertices in order to test that the face model only outputs\n      # vertex indices in the unpadded range\n      vertices = np.pad(\n          np.random.rand(_BATCH_SIZE, _NUM_INPUT_VERTS, 3) - 0.5,\n          [[0, 0], [0, _NUM_PAD_VERTS], [0, 0]], mode='constant')\n      vertices_mask = np.pad(\n          np.ones([_BATCH_SIZE, _NUM_INPUT_VERTS]),\n          [[0, 0], [0, _NUM_PAD_VERTS]], mode='constant')\n      sample_dict_np = sess.run(\n          sample_dict,\n          {context['vertices']: vertices,\n           context['vertices_mask']: vertices_mask})\n      in_range = np.logical_and(\n          0 <= sample_dict_np['faces'],\n          sample_dict_np['faces'] <= _NUM_INPUT_VERTS + 1).all()\n      self.assertTrue(in_range)\n\nif __name__ == '__main__':\n  tf.test.main()\n"
  },
  {
    "path": "polygen/modules.py",
    "content": "# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Modules and networks for mesh generation.\"\"\"\nimport sonnet as snt\nfrom tensor2tensor.layers import common_attention\nfrom tensor2tensor.layers import common_layers\nimport tensorflow.compat.v1 as tf\nfrom tensorflow.python.framework import function\nimport tensorflow_probability as tfp\n\ntfd = tfp.distributions\ntfb = tfp.bijectors\n\n\ndef dequantize_verts(verts, n_bits, add_noise=False):\n  \"\"\"Quantizes vertices and outputs integers with specified n_bits.\"\"\"\n  min_range = -0.5\n  max_range = 0.5\n  range_quantize = 2**n_bits - 1\n  verts = tf.cast(verts, tf.float32)\n  verts = verts * (max_range - min_range) / range_quantize + min_range\n  if add_noise:\n    verts += tf.random_uniform(tf.shape(verts)) * (1 / float(range_quantize))\n  return verts\n\n\ndef quantize_verts(verts, n_bits):\n  \"\"\"Dequantizes integer vertices to floats.\"\"\"\n  min_range = -0.5\n  max_range = 0.5\n  range_quantize = 2**n_bits - 1\n  verts_quantize = (\n      (verts - min_range) * range_quantize / (max_range - min_range))\n  return tf.cast(verts_quantize, tf.int32)\n\n\ndef top_k_logits(logits, k):\n  \"\"\"Masks logits such that logits not in top-k are small.\"\"\"\n  if k == 0:\n    return logits\n  else:\n    values, _ = tf.math.top_k(logits, k=k)\n    k_largest = tf.reduce_min(values)\n    logits = tf.where(tf.less_equal(logits, k_largest),\n                      tf.ones_like(logits)*-1e9, logits)\n    return logits\n\n\ndef top_p_logits(logits, p):\n  \"\"\"Masks logits using nucleus (top-p) sampling.\"\"\"\n  if p == 1:\n    return logits\n  else:\n    logit_shape = tf.shape(logits)\n    seq, dim = logit_shape[1], logit_shape[2]\n    logits = tf.reshape(logits, [-1, dim])\n    sort_indices = tf.argsort(logits, axis=-1, direction='DESCENDING')\n    probs = tf.gather(tf.nn.softmax(logits), sort_indices, batch_dims=1)\n    cumprobs = tf.cumsum(probs, axis=-1, exclusive=True)\n    # The top 1 candidate always will not be masked.\n    # This way ensures at least 1 indices will be selected.\n    sort_mask = tf.cast(tf.greater(cumprobs, p), logits.dtype)\n    batch_indices = tf.tile(\n        tf.expand_dims(tf.range(tf.shape(logits)[0]), axis=-1), [1, dim])\n    top_p_mask = tf.scatter_nd(\n        tf.stack([batch_indices, sort_indices], axis=-1), sort_mask,\n        tf.shape(logits))\n    logits -= top_p_mask * 1e9\n    return tf.reshape(logits, [-1, seq, dim])\n\n\n_function_cache = {}  # For multihead_self_attention_memory_efficient\n\n\ndef multihead_self_attention_memory_efficient(x,\n                                              bias,\n                                              num_heads,\n                                              head_size=None,\n                                              cache=None,\n                                              epsilon=1e-6,\n                                              forget=True,\n                                              test_vars=None,\n                                              name=None):\n  \"\"\"Memory-efficient Multihead scaled-dot-product self-attention.\n\n  Based on Tensor2Tensor version but adds optional caching.\n\n  Returns multihead-self-attention(layer_norm(x))\n\n  Computes one attention head at a time to avoid exhausting memory.\n\n  If forget=True, then forget all forwards activations and recompute on\n  the backwards pass.\n\n  Args:\n    x: a Tensor with shape [batch, length, input_size]\n    bias: an attention bias tensor broadcastable to [batch, 1, length, length]\n    num_heads: an integer\n    head_size: an optional integer - defaults to input_size/num_heads\n    cache: Optional dict containing tensors which are the results of previous\n        attentions, used for fast decoding. Expects the dict to contain two\n        keys ('k' and 'v'), for the initial call the values for these keys\n        should be empty Tensors of the appropriate shape.\n        'k' [batch_size, 0, key_channels] 'v' [batch_size, 0, value_channels]\n    epsilon: a float, for layer norm\n    forget: a boolean - forget forwards activations and recompute on backprop\n    test_vars: optional tuple of variables for testing purposes\n    name: an optional string\n\n  Returns:\n    A Tensor.\n  \"\"\"\n  io_size = x.get_shape().as_list()[-1]\n  if head_size is None:\n    assert io_size % num_heads == 0\n    head_size = io_size / num_heads\n\n  def forward_internal(x, wqkv, wo, attention_bias, norm_scale, norm_bias):\n    \"\"\"Forward function.\"\"\"\n    n = common_layers.layer_norm_compute(x, epsilon, norm_scale, norm_bias)\n    wqkv_split = tf.unstack(wqkv, num=num_heads)\n    wo_split = tf.unstack(wo, num=num_heads)\n    y = 0\n    if cache is not None:\n      cache_k = []\n      cache_v = []\n    for h in range(num_heads):\n      with tf.control_dependencies([y] if h > 0 else []):\n        combined = tf.nn.conv1d(n, wqkv_split[h], 1, 'SAME')\n        q, k, v = tf.split(combined, 3, axis=2)\n        if cache is not None:\n          k = tf.concat([cache['k'][:, h], k], axis=1)\n          v = tf.concat([cache['v'][:, h], v], axis=1)\n          cache_k.append(k)\n          cache_v.append(v)\n        o = common_attention.scaled_dot_product_attention_simple(\n            q, k, v, attention_bias)\n        y += tf.nn.conv1d(o, wo_split[h], 1, 'SAME')\n    if cache is not None:\n      cache['k'] = tf.stack(cache_k, axis=1)\n      cache['v'] = tf.stack(cache_v, axis=1)\n    return y\n\n  key = (\n      'multihead_self_attention_memory_efficient %s %s' % (num_heads, epsilon))\n  if not forget:\n    forward_fn = forward_internal\n  elif key in _function_cache:\n    forward_fn = _function_cache[key]\n  else:\n\n    @function.Defun(compiled=True)\n    def grad_fn(x, wqkv, wo, attention_bias, norm_scale, norm_bias, dy):\n      \"\"\"Custom gradient function.\"\"\"\n      with tf.control_dependencies([dy]):\n        n = common_layers.layer_norm_compute(x, epsilon, norm_scale, norm_bias)\n        wqkv_split = tf.unstack(wqkv, num=num_heads)\n        wo_split = tf.unstack(wo, num=num_heads)\n        deps = []\n        dwqkvs = []\n        dwos = []\n        dn = 0\n        for h in range(num_heads):\n          with tf.control_dependencies(deps):\n            combined = tf.nn.conv1d(n, wqkv_split[h], 1, 'SAME')\n            q, k, v = tf.split(combined, 3, axis=2)\n            o = common_attention.scaled_dot_product_attention_simple(\n                q, k, v, attention_bias)\n            partial_y = tf.nn.conv1d(o, wo_split[h], 1, 'SAME')\n            pdn, dwqkvh, dwoh = tf.gradients(\n                ys=[partial_y],\n                xs=[n, wqkv_split[h], wo_split[h]],\n                grad_ys=[dy])\n            dn += pdn\n            dwqkvs.append(dwqkvh)\n            dwos.append(dwoh)\n            deps = [dn, dwqkvh, dwoh]\n        dwqkv = tf.stack(dwqkvs)\n        dwo = tf.stack(dwos)\n        with tf.control_dependencies(deps):\n          dx, dnorm_scale, dnorm_bias = tf.gradients(\n              ys=[n], xs=[x, norm_scale, norm_bias], grad_ys=[dn])\n        return (dx, dwqkv, dwo, tf.zeros_like(attention_bias), dnorm_scale,\n                dnorm_bias)\n\n    @function.Defun(\n        grad_func=grad_fn, compiled=True, separate_compiled_gradients=True)\n    def forward_fn(x, wqkv, wo, attention_bias, norm_scale, norm_bias):\n      return forward_internal(x, wqkv, wo, attention_bias, norm_scale,\n                              norm_bias)\n\n    _function_cache[key] = forward_fn\n\n  if bias is not None:\n    bias = tf.squeeze(bias, 1)\n  with tf.variable_scope(name, default_name='multihead_attention', values=[x]):\n    if test_vars is not None:\n      wqkv, wo, norm_scale, norm_bias = list(test_vars)\n    else:\n      wqkv = tf.get_variable(\n          'wqkv', [num_heads, 1, io_size, 3 * head_size],\n          initializer=tf.random_normal_initializer(stddev=io_size**-0.5))\n      wo = tf.get_variable(\n          'wo', [num_heads, 1, head_size, io_size],\n          initializer=tf.random_normal_initializer(\n              stddev=(head_size * num_heads)**-0.5))\n      norm_scale, norm_bias = common_layers.layer_norm_vars(io_size)\n    y = forward_fn(x, wqkv, wo, bias, norm_scale, norm_bias)\n    y.set_shape(x.get_shape())  #  pytype: disable=attribute-error\n    return y\n\n\nclass TransformerEncoder(snt.AbstractModule):\n  \"\"\"Transformer encoder.\n\n  Sonnet Transformer encoder module as described in Vaswani et al. 2017. Uses\n  the Tensor2Tensor multihead_attention function for full self attention\n  (no masking). Layer norm is applied inside the residual path as in sparse\n  transformers (Child 2019).\n\n  This module expects inputs to be already embedded, and does not add position\n  embeddings.\n  \"\"\"\n\n  def __init__(self,\n               hidden_size=256,\n               fc_size=1024,\n               num_heads=4,\n               layer_norm=True,\n               num_layers=8,\n               dropout_rate=0.2,\n               re_zero=True,\n               memory_efficient=False,\n               name='transformer_encoder'):\n    \"\"\"Initializes TransformerEncoder.\n\n    Args:\n      hidden_size: Size of embedding vectors.\n      fc_size: Size of fully connected layer.\n      num_heads: Number of attention heads.\n      layer_norm: If True, apply layer normalization\n      num_layers: Number of Transformer blocks, where each block contains a\n        multi-head attention layer and a MLP.\n      dropout_rate: Dropout rate applied immediately after the ReLU in each\n        fully-connected layer.\n      re_zero: If True, alpha scale residuals with zero init.\n      memory_efficient: If True, recompute gradients for memory savings.\n      name: Name of variable scope\n    \"\"\"\n    super(TransformerEncoder, self).__init__(name=name)\n    self.hidden_size = hidden_size\n    self.num_heads = num_heads\n    self.layer_norm = layer_norm\n    self.fc_size = fc_size\n    self.num_layers = num_layers\n    self.dropout_rate = dropout_rate\n    self.re_zero = re_zero\n    self.memory_efficient = memory_efficient\n\n  def _build(self, inputs, is_training=False):\n    \"\"\"Passes inputs through Transformer encoder network.\n\n    Args:\n      inputs: Tensor of shape [batch_size, sequence_length, embed_size]. Zero\n        embeddings are masked in self-attention.\n      is_training: If True, dropout is applied.\n\n    Returns:\n      output: Tensor of shape [batch_size, sequence_length, embed_size].\n    \"\"\"\n    if is_training:\n      dropout_rate = self.dropout_rate\n    else:\n      dropout_rate = 0.\n\n    # Identify elements with all zeros as padding, and create bias to mask\n    # out padding elements in self attention.\n    encoder_padding = common_attention.embedding_to_padding(inputs)\n    encoder_self_attention_bias = (\n        common_attention.attention_bias_ignore_padding(encoder_padding))\n\n    x = inputs\n    for layer_num in range(self.num_layers):\n      with tf.variable_scope('layer_{}'.format(layer_num)):\n\n        # Multihead self-attention from Tensor2Tensor.\n        res = x\n        if self.memory_efficient:\n          res = multihead_self_attention_memory_efficient(\n              res,\n              bias=encoder_self_attention_bias,\n              num_heads=self.num_heads,\n              head_size=self.hidden_size // self.num_heads,\n              forget=True if is_training else False,\n              name='self_attention'\n              )\n        else:\n          if self.layer_norm:\n            res = common_layers.layer_norm(res, name='self_attention')\n          res = common_attention.multihead_attention(\n              res,\n              memory_antecedent=None,\n              bias=encoder_self_attention_bias,\n              total_key_depth=self.hidden_size,\n              total_value_depth=self.hidden_size,\n              output_depth=self.hidden_size,\n              num_heads=self.num_heads,\n              dropout_rate=0.,\n              make_image_summary=False,\n              name='self_attention')\n        if self.re_zero:\n          res *= tf.get_variable('self_attention/alpha', initializer=0.)\n        if dropout_rate:\n          res = tf.nn.dropout(res, rate=dropout_rate)\n        x += res\n\n        # MLP\n        res = x\n        if self.layer_norm:\n          res = common_layers.layer_norm(res, name='fc')\n        res = tf.layers.dense(\n            res, self.fc_size, activation=tf.nn.relu, name='fc_1')\n        res = tf.layers.dense(res, self.hidden_size, name='fc_2')\n        if self.re_zero:\n          res *= tf.get_variable('fc/alpha', initializer=0.)\n        if dropout_rate:\n          res = tf.nn.dropout(res, rate=dropout_rate)\n        x += res\n\n    if self.layer_norm:\n      output = common_layers.layer_norm(x, name='output')\n    else:\n      output = x\n    return output\n\n\nclass TransformerDecoder(snt.AbstractModule):\n  \"\"\"Transformer decoder.\n\n  Sonnet Transformer decoder module as described in Vaswani et al. 2017. Uses\n  the Tensor2Tensor multihead_attention function for masked self attention, and\n  non-masked cross attention attention. Layer norm is applied inside the\n  residual path as in sparse transformers (Child 2019).\n\n  This module expects inputs to be already embedded, and does not\n  add position embeddings.\n  \"\"\"\n\n  def __init__(self,\n               hidden_size=256,\n               fc_size=1024,\n               num_heads=4,\n               layer_norm=True,\n               num_layers=8,\n               dropout_rate=0.2,\n               re_zero=True,\n               memory_efficient=False,\n               name='transformer_decoder'):\n    \"\"\"Initializes TransformerDecoder.\n\n    Args:\n      hidden_size: Size of embedding vectors.\n      fc_size: Size of fully connected layer.\n      num_heads: Number of attention heads.\n      layer_norm: If True, apply layer normalization. If mem_efficient_attention\n        is True, then layer norm is always applied.\n      num_layers: Number of Transformer blocks, where each block contains a\n        multi-head attention layer and a MLP.\n      dropout_rate: Dropout rate applied immediately after the ReLU in each\n        fully-connected layer.\n      re_zero: If True, alpha scale residuals with zero init.\n      memory_efficient: If True, recompute gradients for memory savings.\n      name: Name of variable scope\n    \"\"\"\n    super(TransformerDecoder, self).__init__(name=name)\n    self.hidden_size = hidden_size\n    self.num_heads = num_heads\n    self.layer_norm = layer_norm\n    self.fc_size = fc_size\n    self.num_layers = num_layers\n    self.dropout_rate = dropout_rate\n    self.re_zero = re_zero\n    self.memory_efficient = memory_efficient\n\n  def _build(self,\n             inputs,\n             sequential_context_embeddings=None,\n             is_training=False,\n             cache=None):\n    \"\"\"Passes inputs through Transformer decoder network.\n\n    Args:\n      inputs: Tensor of shape [batch_size, sequence_length, embed_size]. Zero\n        embeddings are masked in self-attention.\n      sequential_context_embeddings: Optional tensor with global context\n        (e.g image embeddings) of shape\n        [batch_size, context_seq_length, context_embed_size].\n      is_training: If True, dropout is applied.\n      cache: Optional dict containing tensors which are the results of previous\n        attentions, used for fast decoding. Expects the dict to contain two\n        keys ('k' and 'v'), for the initial call the values for these keys\n        should be empty Tensors of the appropriate shape.\n        'k' [batch_size, 0, key_channels] 'v' [batch_size, 0, value_channels]\n\n    Returns:\n      output: Tensor of shape [batch_size, sequence_length, embed_size].\n    \"\"\"\n    if is_training:\n      dropout_rate = self.dropout_rate\n    else:\n      dropout_rate = 0.\n\n    # create bias to mask future elements for causal self-attention.\n    seq_length = tf.shape(inputs)[1]\n    decoder_self_attention_bias = common_attention.attention_bias_lower_triangle(\n        seq_length)\n\n    # If using sequential_context, identify elements with all zeros as padding,\n    # and create bias to mask out padding elements in self attention.\n    if sequential_context_embeddings is not None:\n      encoder_padding = common_attention.embedding_to_padding(\n          sequential_context_embeddings)\n      encoder_decoder_attention_bias = (\n          common_attention.attention_bias_ignore_padding(encoder_padding))\n\n    x = inputs\n    for layer_num in range(self.num_layers):\n      with tf.variable_scope('layer_{}'.format(layer_num)):\n\n        # If using cached decoding, access cache for current layer, and create\n        # bias that enables un-masked attention into the cache\n        if cache is not None:\n          layer_cache = cache[layer_num]\n          layer_decoder_bias = tf.zeros([1, 1, 1, 1])\n        # Otherwise use standard masked bias\n        else:\n          layer_cache = None\n          layer_decoder_bias = decoder_self_attention_bias\n\n        # Multihead self-attention from Tensor2Tensor.\n        res = x\n        if self.memory_efficient:\n          res = multihead_self_attention_memory_efficient(\n              res,\n              bias=layer_decoder_bias,\n              cache=layer_cache,\n              num_heads=self.num_heads,\n              head_size=self.hidden_size // self.num_heads,\n              forget=True if is_training else False,\n              name='self_attention'\n              )\n        else:\n          if self.layer_norm:\n            res = common_layers.layer_norm(res, name='self_attention')\n          res = common_attention.multihead_attention(\n              res,\n              memory_antecedent=None,\n              bias=layer_decoder_bias,\n              total_key_depth=self.hidden_size,\n              total_value_depth=self.hidden_size,\n              output_depth=self.hidden_size,\n              num_heads=self.num_heads,\n              cache=layer_cache,\n              dropout_rate=0.,\n              make_image_summary=False,\n              name='self_attention')\n        if self.re_zero:\n          res *= tf.get_variable('self_attention/alpha', initializer=0.)\n        if dropout_rate:\n          res = tf.nn.dropout(res, rate=dropout_rate)\n        x += res\n\n        # Optional cross attention into sequential context\n        if sequential_context_embeddings is not None:\n          res = x\n          if self.layer_norm:\n            res = common_layers.layer_norm(res, name='cross_attention')\n          res = common_attention.multihead_attention(\n              res,\n              memory_antecedent=sequential_context_embeddings,\n              bias=encoder_decoder_attention_bias,\n              total_key_depth=self.hidden_size,\n              total_value_depth=self.hidden_size,\n              output_depth=self.hidden_size,\n              num_heads=self.num_heads,\n              dropout_rate=0.,\n              make_image_summary=False,\n              name='cross_attention')\n          if self.re_zero:\n            res *= tf.get_variable('cross_attention/alpha', initializer=0.)\n          if dropout_rate:\n            res = tf.nn.dropout(res, rate=dropout_rate)\n          x += res\n\n        # FC layers\n        res = x\n        if self.layer_norm:\n          res = common_layers.layer_norm(res, name='fc')\n        res = tf.layers.dense(\n            res, self.fc_size, activation=tf.nn.relu, name='fc_1')\n        res = tf.layers.dense(res, self.hidden_size, name='fc_2')\n        if self.re_zero:\n          res *= tf.get_variable('fc/alpha', initializer=0.)\n        if dropout_rate:\n          res = tf.nn.dropout(res, rate=dropout_rate)\n        x += res\n\n    if self.layer_norm:\n      output = common_layers.layer_norm(x, name='output')\n    else:\n      output = x\n    return output\n\n  def create_init_cache(self, batch_size):\n    \"\"\"Creates empty cache dictionary for use in fast decoding.\"\"\"\n\n    def compute_cache_shape_invariants(tensor):\n      \"\"\"Helper function to get dynamic shapes for cache tensors.\"\"\"\n      shape_list = tensor.shape.as_list()\n      if len(shape_list) == 4:\n        return tf.TensorShape(\n            [shape_list[0], shape_list[1], None, shape_list[3]])\n      elif len(shape_list) == 3:\n        return tf.TensorShape([shape_list[0], None, shape_list[2]])\n\n    # Build cache\n    k = common_attention.split_heads(\n        tf.zeros([batch_size, 0, self.hidden_size]), self.num_heads)\n    v = common_attention.split_heads(\n        tf.zeros([batch_size, 0, self.hidden_size]), self.num_heads)\n    cache = [{'k': k, 'v': v} for _ in range(self.num_layers)]\n    shape_invariants = tf.nest.map_structure(\n        compute_cache_shape_invariants, cache)\n    return cache, shape_invariants\n\n\ndef conv_residual_block(inputs,\n                        output_channels=None,\n                        downsample=False,\n                        kernel_size=3,\n                        re_zero=True,\n                        dropout_rate=0.,\n                        name='conv_residual_block'):\n  \"\"\"Convolutional block with residual connections for 2D or 3D inputs.\n\n  Args:\n    inputs: Input tensor of shape [batch_size, height, width, channels] or\n      [batch_size, height, width, depth, channels].\n    output_channels: Number of output channels.\n    downsample: If True, downsample by 1/2 in this block.\n    kernel_size: Spatial size of convolutional kernels.\n    re_zero: If True, alpha scale residuals with zero init.\n    dropout_rate: Dropout rate applied after second ReLU in residual path.\n    name: Name for variable scope.\n\n  Returns:\n    outputs: Output tensor of shape [batch_size, height, width, output_channels]\n      or [batch_size, height, width, depth, output_channels].\n  \"\"\"\n  with tf.variable_scope(name):\n    input_shape = inputs.get_shape().as_list()\n    num_dims = len(input_shape) - 2\n\n    if num_dims == 2:\n      conv = tf.layers.conv2d\n    elif num_dims == 3:\n      conv = tf.layers.conv3d\n\n    input_channels = input_shape[-1]\n    if output_channels is None:\n      output_channels = input_channels\n    if downsample:\n      shortcut = conv(\n          inputs,\n          filters=output_channels,\n          strides=2,\n          kernel_size=kernel_size,\n          padding='same',\n          name='conv_shortcut')\n    else:\n      shortcut = inputs\n\n    res = inputs\n    res = tf.nn.relu(res)\n    res = conv(\n        res, filters=input_channels, kernel_size=kernel_size, padding='same',\n        name='conv_1')\n\n    res = tf.nn.relu(res)\n    if dropout_rate:\n      res = tf.nn.dropout(res, rate=dropout_rate)\n    if downsample:\n      out_strides = 2\n    else:\n      out_strides = 1\n    res = conv(\n        res,\n        filters=output_channels,\n        kernel_size=kernel_size,\n        padding='same',\n        strides=out_strides,\n        name='conv_2')\n    if re_zero:\n      res *= tf.get_variable('alpha', initializer=0.)\n  return shortcut + res\n\n\nclass ResNet(snt.AbstractModule):\n  \"\"\"ResNet architecture for 2D image or 3D voxel inputs.\"\"\"\n\n  def __init__(self,\n               num_dims,\n               hidden_sizes=(64, 256),\n               num_blocks=(2, 2),\n               dropout_rate=0.1,\n               re_zero=True,\n               name='res_net'):\n    \"\"\"Initializes ResNet.\n\n    Args:\n      num_dims: Number of spatial dimensions. 2 for images or 3 for voxels.\n      hidden_sizes: Sizes of hidden layers in resnet blocks.\n      num_blocks: Number of resnet blocks at each size.\n      dropout_rate: Dropout rate applied immediately after the ReLU in each\n        fully-connected layer.\n      re_zero: If True, alpha scale residuals with zero init.\n      name: Name of variable scope\n    \"\"\"\n    super(ResNet, self).__init__(name=name)\n    self.num_dims = num_dims\n    self.hidden_sizes = hidden_sizes\n    self.num_blocks = num_blocks\n    self.dropout_rate = dropout_rate\n    self.re_zero = re_zero\n\n  def _build(self, inputs, is_training=False):\n    \"\"\"Passes inputs through resnet.\n\n    Args:\n      inputs: Tensor of shape [batch_size, height, width, channels] or\n        [batch_size, height, width, depth, channels].\n      is_training: If True, dropout is applied.\n\n    Returns:\n      output: Tensor of shape [batch_size, height, width, depth, output_size].\n    \"\"\"\n    if is_training:\n      dropout_rate = self.dropout_rate\n    else:\n      dropout_rate = 0.\n\n    # Initial projection with large kernel as in original resnet architecture\n    if self.num_dims == 3:\n      conv = tf.layers.conv3d\n    elif self.num_dims == 2:\n      conv = tf.layers.conv2d\n    x = conv(\n        inputs,\n        filters=self.hidden_sizes[0],\n        kernel_size=7,\n        strides=2,\n        padding='same',\n        name='conv_input')\n\n    if self.num_dims == 2:\n      x = tf.layers.max_pooling2d(\n          x, strides=2, pool_size=3, padding='same', name='pool_input')\n\n    for d, (hidden_size,\n            blocks) in enumerate(zip(self.hidden_sizes, self.num_blocks)):\n\n      with tf.variable_scope('resolution_{}'.format(d)):\n\n        # Downsample at the start of each collection of blocks\n        x = conv_residual_block(\n            x,\n            downsample=False if d == 0 else True,\n            dropout_rate=dropout_rate,\n            output_channels=hidden_size,\n            re_zero=self.re_zero,\n            name='block_1_downsample')\n        for i in range(blocks - 1):\n          x = conv_residual_block(\n              x,\n              dropout_rate=dropout_rate,\n              output_channels=hidden_size,\n              re_zero=self.re_zero,\n              name='block_{}'.format(i + 2))\n    return x\n\n\nclass VertexModel(snt.AbstractModule):\n  \"\"\"Autoregressive generative model of quantized mesh vertices.\n\n  Operates on flattened vertex sequences with a stopping token:\n\n  [z_0, y_0, x_0, z_1, y_1, x_1, ..., z_n, y_n, z_n, STOP]\n\n  Input vertex coordinates are embedded and tagged with learned coordinate and\n  position indicators. A transformer decoder outputs logits for a quantized\n  vertex distribution.\n  \"\"\"\n\n  def __init__(self,\n               decoder_config,\n               quantization_bits,\n               class_conditional=False,\n               num_classes=55,\n               max_num_input_verts=2500,\n               use_discrete_embeddings=True,\n               name='vertex_model'):\n    \"\"\"Initializes VertexModel.\n\n    Args:\n      decoder_config: Dictionary with TransformerDecoder config\n      quantization_bits: Number of quantization used in mesh preprocessing.\n      class_conditional: If True, then condition on learned class embeddings.\n      num_classes: Number of classes to condition on.\n      max_num_input_verts: Maximum number of vertices. Used for learned position\n        embeddings.\n      use_discrete_embeddings: If True, use discrete rather than continuous\n        vertex embeddings.\n      name: Name of variable scope\n    \"\"\"\n    super(VertexModel, self).__init__(name=name)\n    self.embedding_dim = decoder_config['hidden_size']\n    self.class_conditional = class_conditional\n    self.num_classes = num_classes\n    self.max_num_input_verts = max_num_input_verts\n    self.quantization_bits = quantization_bits\n    self.use_discrete_embeddings = use_discrete_embeddings\n\n    with self._enter_variable_scope():\n      self.decoder = TransformerDecoder(**decoder_config)\n\n  @snt.reuse_variables\n  def _embed_class_label(self, labels):\n    \"\"\"Embeds class label with learned embedding matrix.\"\"\"\n    init_dict = {'embeddings': tf.glorot_uniform_initializer}\n    return snt.Embed(\n        vocab_size=self.num_classes,\n        embed_dim=self.embedding_dim,\n        initializers=init_dict,\n        densify_gradients=True,\n        name='class_label')(labels)\n\n  @snt.reuse_variables\n  def _prepare_context(self, context, is_training=False):\n    \"\"\"Prepare class label context.\"\"\"\n    if self.class_conditional:\n      global_context_embedding = self._embed_class_label(context['class_label'])\n    else:\n      global_context_embedding = None\n    return global_context_embedding, None\n\n  @snt.reuse_variables\n  def _embed_inputs(self, vertices, global_context_embedding=None):\n    \"\"\"Embeds flat vertices and adds position and coordinate information.\"\"\"\n    # Dequantize inputs and get shapes\n    input_shape = tf.shape(vertices)\n    batch_size, seq_length = input_shape[0], input_shape[1]\n\n    # Coord indicators (x, y, z)\n    coord_embeddings = snt.Embed(\n        vocab_size=3,\n        embed_dim=self.embedding_dim,\n        initializers={'embeddings': tf.glorot_uniform_initializer},\n        densify_gradients=True,\n        name='coord_embeddings')(tf.mod(tf.range(seq_length), 3))\n\n    # Position embeddings\n    pos_embeddings = snt.Embed(\n        vocab_size=self.max_num_input_verts,\n        embed_dim=self.embedding_dim,\n        initializers={'embeddings': tf.glorot_uniform_initializer},\n        densify_gradients=True,\n        name='coord_embeddings')(tf.floordiv(tf.range(seq_length), 3))\n\n    # Discrete vertex value embeddings\n    if self.use_discrete_embeddings:\n      vert_embeddings = snt.Embed(\n          vocab_size=2**self.quantization_bits + 1,\n          embed_dim=self.embedding_dim,\n          initializers={'embeddings': tf.glorot_uniform_initializer},\n          densify_gradients=True,\n          name='value_embeddings')(vertices)\n    # Continuous vertex value embeddings\n    else:\n      vert_embeddings = tf.layers.dense(\n          dequantize_verts(vertices[..., None], self.quantization_bits),\n          self.embedding_dim,\n          use_bias=True,\n          name='value_embeddings')\n\n    # Step zero embeddings\n    if global_context_embedding is None:\n      zero_embed = tf.get_variable(\n          'embed_zero', shape=[1, 1, self.embedding_dim])\n      zero_embed_tiled = tf.tile(zero_embed, [batch_size, 1, 1])\n    else:\n      zero_embed_tiled = global_context_embedding[:, None]\n\n    # Aggregate embeddings\n    embeddings = vert_embeddings + (coord_embeddings + pos_embeddings)[None]\n    embeddings = tf.concat([zero_embed_tiled, embeddings], axis=1)\n\n    return embeddings\n\n  @snt.reuse_variables\n  def _project_to_logits(self, inputs):\n    \"\"\"Projects transformer outputs to logits for predictive distribution.\"\"\"\n    return tf.layers.dense(\n        inputs,\n        2**self.quantization_bits + 1,  # + 1 for stopping token\n        use_bias=True,\n        kernel_initializer=tf.zeros_initializer(),\n        name='project_to_logits')\n\n  @snt.reuse_variables\n  def _create_dist(self,\n                   vertices,\n                   global_context_embedding=None,\n                   sequential_context_embeddings=None,\n                   temperature=1.,\n                   top_k=0,\n                   top_p=1.,\n                   is_training=False,\n                   cache=None):\n    \"\"\"Outputs categorical dist for quantized vertex coordinates.\"\"\"\n\n    # Embed inputs\n    decoder_inputs = self._embed_inputs(vertices, global_context_embedding)\n    if cache is not None:\n      decoder_inputs = decoder_inputs[:, -1:]\n\n    # pass through decoder\n    outputs = self.decoder(\n        decoder_inputs, cache=cache,\n        sequential_context_embeddings=sequential_context_embeddings,\n        is_training=is_training)\n\n    # Get logits and optionally process for sampling\n    logits = self._project_to_logits(outputs)\n    logits /= temperature\n    logits = top_k_logits(logits, top_k)\n    logits = top_p_logits(logits, top_p)\n    cat_dist = tfd.Categorical(logits=logits)\n    return cat_dist\n\n  def _build(self, batch, is_training=False):\n    \"\"\"Pass batch through vertex model and get log probabilities under model.\n\n    Args:\n      batch: Dictionary containing:\n        'vertices_flat': int32 vertex tensors of shape [batch_size, seq_length].\n      is_training: If True, use dropout.\n\n    Returns:\n      pred_dist: tfd.Categorical predictive distribution with batch shape\n          [batch_size, seq_length].\n    \"\"\"\n    global_context, seq_context = self._prepare_context(\n        batch, is_training=is_training)\n    pred_dist = self._create_dist(\n        batch['vertices_flat'][:, :-1],  # Last element not used for preds\n        global_context_embedding=global_context,\n        sequential_context_embeddings=seq_context,\n        is_training=is_training)\n    return pred_dist\n\n  def sample(self,\n             num_samples,\n             context=None,\n             max_sample_length=None,\n             temperature=1.,\n             top_k=0,\n             top_p=1.,\n             recenter_verts=True,\n             only_return_complete=True):\n    \"\"\"Autoregressive sampling with caching.\n\n    Args:\n      num_samples: Number of samples to produce.\n      context: Dictionary of context, such as class labels. See _prepare_context\n        for details.\n      max_sample_length: Maximum length of sampled vertex sequences. Sequences\n        that do not complete are truncated.\n      temperature: Scalar softmax temperature > 0.\n      top_k: Number of tokens to keep for top-k sampling.\n      top_p: Proportion of probability mass to keep for top-p sampling.\n      recenter_verts: If True, center vertex samples around origin. This should\n        be used if model is trained using shift augmentations.\n      only_return_complete: If True, only return completed samples. Otherwise\n        return all samples along with completed indicator.\n\n    Returns:\n      outputs: Output dictionary with fields:\n        'completed': Boolean tensor of shape [num_samples]. If True then\n          corresponding sample completed within max_sample_length.\n        'vertices': Tensor of samples with shape [num_samples, num_verts, 3].\n        'num_vertices': Tensor indicating number of vertices for each example\n          in padded vertex samples.\n        'vertices_mask': Tensor of shape [num_samples, num_verts] that masks\n          corresponding invalid elements in 'vertices'.\n    \"\"\"\n    # Obtain context for decoder\n    global_context, seq_context = self._prepare_context(\n        context, is_training=False)\n\n    # num_samples is the minimum value of num_samples and the batch size of\n    # context inputs (if present).\n    if global_context is not None:\n      num_samples = tf.minimum(num_samples, tf.shape(global_context)[0])\n      global_context = global_context[:num_samples]\n      if seq_context is not None:\n        seq_context = seq_context[:num_samples]\n    elif seq_context is not None:\n      num_samples = tf.minimum(num_samples, tf.shape(seq_context)[0])\n      seq_context = seq_context[:num_samples]\n\n    def _loop_body(i, samples, cache):\n      \"\"\"While-loop body for autoregression calculation.\"\"\"\n      cat_dist = self._create_dist(\n          samples,\n          global_context_embedding=global_context,\n          sequential_context_embeddings=seq_context,\n          cache=cache,\n          temperature=temperature,\n          top_k=top_k,\n          top_p=top_p)\n      next_sample = cat_dist.sample()\n      samples = tf.concat([samples, next_sample], axis=1)\n      return i + 1, samples, cache\n\n    def _stopping_cond(i, samples, cache):\n      \"\"\"Stopping condition for sampling while-loop.\"\"\"\n      del i, cache  # Unused\n      return tf.reduce_any(tf.reduce_all(tf.not_equal(samples, 0), axis=-1))\n\n    # Initial values for loop variables\n    samples = tf.zeros([num_samples, 0], dtype=tf.int32)\n    max_sample_length = max_sample_length or self.max_num_input_verts\n    cache, cache_shape_invariants = self.decoder.create_init_cache(num_samples)\n    _, v, _ = tf.while_loop(\n        cond=_stopping_cond,\n        body=_loop_body,\n        loop_vars=(0, samples, cache),\n        shape_invariants=(tf.TensorShape([]), tf.TensorShape([None, None]),\n                          cache_shape_invariants),\n        maximum_iterations=max_sample_length * 3 + 1,\n        back_prop=False,\n        parallel_iterations=1)\n\n    # Check if samples completed. Samples are complete if the stopping token\n    # is produced.\n    completed = tf.reduce_any(tf.equal(v, 0), axis=-1)\n\n    # Get the number of vertices in the sample. This requires finding the\n    # index of the stopping token. For complete samples use to argmax to get\n    # first nonzero index.\n    stop_index_completed = tf.argmax(\n        tf.cast(tf.equal(v, 0), tf.int32), axis=-1, output_type=tf.int32)\n    # For incomplete samples the stopping index is just the maximum index.\n    stop_index_incomplete = (\n        max_sample_length * 3 * tf.ones_like(stop_index_completed))\n    stop_index = tf.where(\n        completed, stop_index_completed, stop_index_incomplete)\n    num_vertices = tf.floordiv(stop_index, 3)\n\n    # Convert to 3D vertices by reshaping and re-ordering x -> y -> z\n    v = v[:, :(tf.reduce_max(num_vertices) * 3)] - 1\n    verts_dequantized = dequantize_verts(v, self.quantization_bits)\n    vertices = tf.reshape(verts_dequantized, [num_samples, -1, 3])\n    vertices = tf.stack(\n        [vertices[..., 2], vertices[..., 1], vertices[..., 0]], axis=-1)\n\n    # Pad samples to max sample length. This is required in order to concatenate\n    # Samples across different replicator instances. Pad with stopping tokens\n    # for incomplete samples.\n    pad_size = max_sample_length - tf.shape(vertices)[1]\n    vertices = tf.pad(vertices, [[0, 0], [0, pad_size], [0, 0]])\n\n    # 3D Vertex mask\n    vertices_mask = tf.cast(\n        tf.range(max_sample_length)[None] < num_vertices[:, None], tf.float32)\n\n    if recenter_verts:\n      vert_max = tf.reduce_max(\n          vertices - 1e10 * (1. - vertices_mask)[..., None], axis=1,\n          keepdims=True)\n      vert_min = tf.reduce_min(\n          vertices + 1e10 * (1. - vertices_mask)[..., None], axis=1,\n          keepdims=True)\n      vert_centers = 0.5 * (vert_max + vert_min)\n      vertices -= vert_centers\n    vertices *= vertices_mask[..., None]\n\n    if only_return_complete:\n      vertices = tf.boolean_mask(vertices, completed)\n      num_vertices = tf.boolean_mask(num_vertices, completed)\n      vertices_mask = tf.boolean_mask(vertices_mask, completed)\n      completed = tf.boolean_mask(completed, completed)\n\n    # Outputs\n    outputs = {\n        'completed': completed,\n        'vertices': vertices,\n        'num_vertices': num_vertices,\n        'vertices_mask': vertices_mask,\n    }\n    return outputs\n\n\nclass ImageToVertexModel(VertexModel):\n  \"\"\"Generative model of quantized mesh vertices with image conditioning.\n\n  Operates on flattened vertex sequences with a stopping token:\n\n  [z_0, y_0, x_0, z_1, y_1, x_1, ..., z_n, y_n, z_n, STOP]\n\n  Input vertex coordinates are embedded and tagged with learned coordinate and\n  position indicators. A transformer decoder outputs logits for a quantized\n  vertex distribution. Image inputs are encoded and used to condition the\n  vertex decoder.\n  \"\"\"\n\n  def __init__(self,\n               res_net_config,\n               decoder_config,\n               quantization_bits,\n               use_discrete_embeddings=True,\n               max_num_input_verts=2500,\n               name='image_to_vertex_model'):\n    \"\"\"Initializes VoxelToVertexModel.\n\n    Args:\n      res_net_config: Dictionary with ResNet config.\n      decoder_config: Dictionary with TransformerDecoder config.\n      quantization_bits: Number of quantization used in mesh preprocessing.\n      use_discrete_embeddings: If True, use discrete rather than continuous\n        vertex embeddings.\n      max_num_input_verts: Maximum number of vertices. Used for learned position\n        embeddings.\n      name: Name of variable scope\n    \"\"\"\n    super(ImageToVertexModel, self).__init__(\n        decoder_config=decoder_config,\n        quantization_bits=quantization_bits,\n        max_num_input_verts=max_num_input_verts,\n        use_discrete_embeddings=use_discrete_embeddings,\n        name=name)\n\n    with self._enter_variable_scope():\n      self.res_net = ResNet(num_dims=2, **res_net_config)\n\n  @snt.reuse_variables\n  def _prepare_context(self, context, is_training=False):\n\n    # Pass images through encoder\n    image_embeddings = self.res_net(\n        context['image'] - 0.5, is_training=is_training)\n\n    # Add 2D coordinate grid embedding\n    processed_image_resolution = tf.shape(image_embeddings)[1]\n    x = tf.linspace(-1., 1., processed_image_resolution)\n    image_coords = tf.stack(tf.meshgrid(x, x), axis=-1)\n    image_coord_embeddings = tf.layers.dense(\n        image_coords,\n        self.embedding_dim,\n        use_bias=True,\n        name='image_coord_embeddings')\n    image_embeddings += image_coord_embeddings[None]\n\n    # Reshape spatial grid to sequence\n    batch_size = tf.shape(image_embeddings)[0]\n    sequential_context_embedding = tf.reshape(\n        image_embeddings, [batch_size, -1, self.embedding_dim])\n\n    return None, sequential_context_embedding\n\n\nclass VoxelToVertexModel(VertexModel):\n  \"\"\"Generative model of quantized mesh vertices with voxel conditioning.\n\n  Operates on flattened vertex sequences with a stopping token:\n\n  [z_0, y_0, x_0, z_1, y_1, x_1, ..., z_n, y_n, z_n, STOP]\n\n  Input vertex coordinates are embedded and tagged with learned coordinate and\n  position indicators. A transformer decoder outputs logits for a quantized\n  vertex distribution. Image inputs are encoded and used to condition the\n  vertex decoder.\n  \"\"\"\n\n  def __init__(self,\n               res_net_config,\n               decoder_config,\n               quantization_bits,\n               use_discrete_embeddings=True,\n               max_num_input_verts=2500,\n               name='voxel_to_vertex_model'):\n    \"\"\"Initializes VoxelToVertexModel.\n\n    Args:\n      res_net_config: Dictionary with ResNet config.\n      decoder_config: Dictionary with TransformerDecoder config.\n      quantization_bits: Integer number of bits used for vertex quantization.\n      use_discrete_embeddings: If True, use discrete rather than continuous\n        vertex embeddings.\n      max_num_input_verts: Maximum number of vertices. Used for learned position\n        embeddings.\n      name: Name of variable scope\n    \"\"\"\n    super(VoxelToVertexModel, self).__init__(\n        decoder_config=decoder_config,\n        quantization_bits=quantization_bits,\n        max_num_input_verts=max_num_input_verts,\n        use_discrete_embeddings=use_discrete_embeddings,\n        name=name)\n\n    with self._enter_variable_scope():\n      self.res_net = ResNet(num_dims=3, **res_net_config)\n\n  @snt.reuse_variables\n  def _prepare_context(self, context, is_training=False):\n\n    # Embed binary input voxels\n    voxel_embeddings = snt.Embed(\n        vocab_size=2,\n        embed_dim=self.pre_embed_dim,\n        initializers={'embeddings': tf.glorot_uniform_initializer},\n        densify_gradients=True,\n        name='voxel_embeddings')(context['voxels'])\n\n    # Pass embedded voxels through voxel encoder\n    voxel_embeddings = self.res_net(\n        voxel_embeddings, is_training=is_training)\n\n    # Add 3D coordinate grid embedding\n    processed_voxel_resolution = tf.shape(voxel_embeddings)[1]\n    x = tf.linspace(-1., 1., processed_voxel_resolution)\n    voxel_coords = tf.stack(tf.meshgrid(x, x, x), axis=-1)\n    voxel_coord_embeddings = tf.layers.dense(\n        voxel_coords,\n        self.embedding_dim,\n        use_bias=True,\n        name='voxel_coord_embeddings')\n    voxel_embeddings += voxel_coord_embeddings[None]\n\n    # Reshape spatial grid to sequence\n    batch_size = tf.shape(voxel_embeddings)[0]\n    sequential_context_embedding = tf.reshape(\n        voxel_embeddings, [batch_size, -1, self.embedding_dim])\n\n    return None, sequential_context_embedding\n\n\nclass FaceModel(snt.AbstractModule):\n  \"\"\"Autoregressive generative model of n-gon meshes.\n\n  Operates on sets of input vertices as well as flattened face sequences with\n  new face and stopping tokens:\n\n  [f_0^0, f_0^1, f_0^2, NEW, f_1^0, f_1^1, ..., STOP]\n\n  Input vertices are encoded using a Transformer encoder.\n\n  Input face sequences are embedded and tagged with learned position indicators,\n  as well as their corresponding vertex embeddings. A transformer decoder\n  outputs a pointer which is compared to each vertex embedding to obtain a\n  distribution over vertex indices.\n  \"\"\"\n\n  def __init__(self,\n               encoder_config,\n               decoder_config,\n               class_conditional=True,\n               num_classes=55,\n               decoder_cross_attention=True,\n               use_discrete_vertex_embeddings=True,\n               quantization_bits=8,\n               max_seq_length=5000,\n               name='face_model'):\n    \"\"\"Initializes FaceModel.\n\n    Args:\n      encoder_config: Dictionary with TransformerEncoder config.\n      decoder_config: Dictionary with TransformerDecoder config.\n      class_conditional: If True, then condition on learned class embeddings.\n      num_classes: Number of classes to condition on.\n      decoder_cross_attention: If True, the use cross attention from decoder\n        querys into encoder outputs.\n      use_discrete_vertex_embeddings: If True, use discrete vertex embeddings.\n      quantization_bits: Number of quantization bits for discrete vertex\n        embeddings.\n      max_seq_length: Maximum face sequence length. Used for learned position\n        embeddings.\n      name: Name of variable scope\n    \"\"\"\n    super(FaceModel, self).__init__(name=name)\n    self.embedding_dim = decoder_config['hidden_size']\n    self.class_conditional = class_conditional\n    self.num_classes = num_classes\n    self.max_seq_length = max_seq_length\n    self.decoder_cross_attention = decoder_cross_attention\n    self.use_discrete_vertex_embeddings = use_discrete_vertex_embeddings\n    self.quantization_bits = quantization_bits\n\n    with self._enter_variable_scope():\n      self.decoder = TransformerDecoder(**decoder_config)\n      self.encoder = TransformerEncoder(**encoder_config)\n\n  @snt.reuse_variables\n  def _embed_class_label(self, labels):\n    \"\"\"Embeds class label with learned embedding matrix.\"\"\"\n    init_dict = {'embeddings': tf.glorot_uniform_initializer}\n    return snt.Embed(\n        vocab_size=self.num_classes,\n        embed_dim=self.embedding_dim,\n        initializers=init_dict,\n        densify_gradients=True,\n        name='class_label')(labels)\n\n  @snt.reuse_variables\n  def _prepare_context(self, context, is_training=False):\n    \"\"\"Prepare class label and vertex context.\"\"\"\n    if self.class_conditional:\n      global_context_embedding = self._embed_class_label(context['class_label'])\n    else:\n      global_context_embedding = None\n    vertex_embeddings = self._embed_vertices(\n        context['vertices'], context['vertices_mask'],\n        is_training=is_training)\n    if self.decoder_cross_attention:\n      sequential_context_embeddings = (\n          vertex_embeddings *\n          tf.pad(context['vertices_mask'], [[0, 0], [2, 0]],\n                 constant_values=1)[..., None])\n    else:\n      sequential_context_embeddings = None\n    return (vertex_embeddings, global_context_embedding,\n            sequential_context_embeddings)\n\n  @snt.reuse_variables\n  def _embed_vertices(self, vertices, vertices_mask, is_training=False):\n    \"\"\"Embeds vertices with transformer encoder.\"\"\"\n    # num_verts = tf.shape(vertices)[1]\n    if self.use_discrete_vertex_embeddings:\n      vertex_embeddings = 0.\n      verts_quantized = quantize_verts(vertices, self.quantization_bits)\n      for c in range(3):\n        vertex_embeddings += snt.Embed(\n            vocab_size=256,\n            embed_dim=self.embedding_dim,\n            initializers={'embeddings': tf.glorot_uniform_initializer},\n            densify_gradients=True,\n            name='coord_{}'.format(c))(verts_quantized[..., c])\n    else:\n      vertex_embeddings = tf.layers.dense(\n          vertices, self.embedding_dim, use_bias=True, name='vertex_embeddings')\n    vertex_embeddings *= vertices_mask[..., None]\n\n    # Pad vertex embeddings with learned embeddings for stopping and new face\n    # tokens\n    stopping_embeddings = tf.get_variable(\n        'stopping_embeddings', shape=[1, 2, self.embedding_dim])\n    stopping_embeddings = tf.tile(stopping_embeddings,\n                                  [tf.shape(vertices)[0], 1, 1])\n    vertex_embeddings = tf.concat(\n        [stopping_embeddings, vertex_embeddings], axis=1)\n\n    # Pass through Transformer encoder\n    vertex_embeddings = self.encoder(vertex_embeddings, is_training=is_training)\n    return vertex_embeddings\n\n  @snt.reuse_variables\n  def _embed_inputs(self, faces_long, vertex_embeddings,\n                    global_context_embedding=None):\n    \"\"\"Embeds face sequences and adds within and between face positions.\"\"\"\n\n    # Face value embeddings are gathered vertex embeddings\n    face_embeddings = tf.gather(vertex_embeddings, faces_long, batch_dims=1)\n\n    # Position embeddings\n    pos_embeddings = snt.Embed(\n        vocab_size=self.max_seq_length,\n        embed_dim=self.embedding_dim,\n        initializers={'embeddings': tf.glorot_uniform_initializer},\n        densify_gradients=True,\n        name='coord_embeddings')(tf.range(tf.shape(faces_long)[1]))\n\n    # Step zero embeddings\n    batch_size = tf.shape(face_embeddings)[0]\n    if global_context_embedding is None:\n      zero_embed = tf.get_variable(\n          'embed_zero', shape=[1, 1, self.embedding_dim])\n      zero_embed_tiled = tf.tile(zero_embed, [batch_size, 1, 1])\n    else:\n      zero_embed_tiled = global_context_embedding[:, None]\n\n    # Aggregate embeddings\n    embeddings = face_embeddings + pos_embeddings[None]\n    embeddings = tf.concat([zero_embed_tiled, embeddings], axis=1)\n\n    return embeddings\n\n  @snt.reuse_variables\n  def _project_to_pointers(self, inputs):\n    \"\"\"Projects transformer outputs to pointer vectors.\"\"\"\n    return tf.layers.dense(\n        inputs,\n        self.embedding_dim,\n        use_bias=True,\n        kernel_initializer=tf.zeros_initializer(),\n        name='project_to_pointers'\n        )\n\n  @snt.reuse_variables\n  def _create_dist(self,\n                   vertex_embeddings,\n                   vertices_mask,\n                   faces_long,\n                   global_context_embedding=None,\n                   sequential_context_embeddings=None,\n                   temperature=1.,\n                   top_k=0,\n                   top_p=1.,\n                   is_training=False,\n                   cache=None):\n    \"\"\"Outputs categorical dist for vertex indices.\"\"\"\n\n    # Embed inputs\n    decoder_inputs = self._embed_inputs(\n        faces_long, vertex_embeddings, global_context_embedding)\n\n    # Pass through Transformer decoder\n    if cache is not None:\n      decoder_inputs = decoder_inputs[:, -1:]\n    decoder_outputs = self.decoder(\n        decoder_inputs,\n        cache=cache,\n        sequential_context_embeddings=sequential_context_embeddings,\n        is_training=is_training)\n\n    # Get pointers\n    pred_pointers = self._project_to_pointers(decoder_outputs)\n\n    # Get logits and mask\n    logits = tf.matmul(pred_pointers, vertex_embeddings, transpose_b=True)\n    logits /= tf.sqrt(float(self.embedding_dim))\n    f_verts_mask = tf.pad(\n        vertices_mask, [[0, 0], [2, 0]], constant_values=1.)[:, None]\n    logits *= f_verts_mask\n    logits -= (1. - f_verts_mask) * 1e9\n    logits /= temperature\n    logits = top_k_logits(logits, top_k)\n    logits = top_p_logits(logits, top_p)\n    return tfd.Categorical(logits=logits)\n\n  def _build(self, batch, is_training=False):\n    \"\"\"Pass batch through face model and get log probabilities.\n\n    Args:\n      batch: Dictionary containing:\n        'vertices_dequantized': Tensor of shape [batch_size, num_vertices, 3].\n        'faces': int32 tensor of shape [batch_size, seq_length] with flattened\n          faces.\n        'vertices_mask': float32 tensor with shape\n          [batch_size, num_vertices] that masks padded elements in 'vertices'.\n      is_training: If True, use dropout.\n\n    Returns:\n      pred_dist: tfd.Categorical predictive distribution with batch shape\n          [batch_size, seq_length].\n    \"\"\"\n    vertex_embeddings, global_context, seq_context = self._prepare_context(\n        batch, is_training=is_training)\n    pred_dist = self._create_dist(\n        vertex_embeddings,\n        batch['vertices_mask'],\n        batch['faces'][:, :-1],\n        global_context_embedding=global_context,\n        sequential_context_embeddings=seq_context,\n        is_training=is_training)\n    return pred_dist\n\n  def sample(self,\n             context,\n             max_sample_length=None,\n             temperature=1.,\n             top_k=0,\n             top_p=1.,\n             only_return_complete=True):\n    \"\"\"Sample from face model using caching.\n\n    Args:\n      context: Dictionary of context, including 'vertices' and 'vertices_mask'.\n        See _prepare_context for details.\n      max_sample_length: Maximum length of sampled vertex sequences. Sequences\n        that do not complete are truncated.\n      temperature: Scalar softmax temperature > 0.\n      top_k: Number of tokens to keep for top-k sampling.\n      top_p: Proportion of probability mass to keep for top-p sampling.\n      only_return_complete: If True, only return completed samples. Otherwise\n        return all samples along with completed indicator.\n\n    Returns:\n      outputs: Output dictionary with fields:\n        'completed': Boolean tensor of shape [num_samples]. If True then\n          corresponding sample completed within max_sample_length.\n        'faces': Tensor of samples with shape [num_samples, num_verts, 3].\n        'num_face_indices': Tensor indicating number of vertices for each\n          example in padded vertex samples.\n    \"\"\"\n    vertex_embeddings, global_context, seq_context = self._prepare_context(\n        context, is_training=False)\n    num_samples = tf.shape(vertex_embeddings)[0]\n\n    def _loop_body(i, samples, cache):\n      \"\"\"While-loop body for autoregression calculation.\"\"\"\n      pred_dist = self._create_dist(\n          vertex_embeddings,\n          context['vertices_mask'],\n          samples,\n          global_context_embedding=global_context,\n          sequential_context_embeddings=seq_context,\n          cache=cache,\n          temperature=temperature,\n          top_k=top_k,\n          top_p=top_p)\n      next_sample = pred_dist.sample()[:, -1:]\n      samples = tf.concat([samples, next_sample], axis=1)\n      return i + 1, samples, cache\n\n    def _stopping_cond(i, samples, cache):\n      \"\"\"Stopping conditions for autoregressive calculation.\"\"\"\n      del i, cache  # Unused\n      return tf.reduce_any(tf.reduce_all(tf.not_equal(samples, 0), axis=-1))\n\n    # While loop sampling with caching\n    samples = tf.zeros([num_samples, 0], dtype=tf.int32)\n    max_sample_length = max_sample_length or self.max_seq_length\n    cache, cache_shape_invariants = self.decoder.create_init_cache(num_samples)\n    _, f, _ = tf.while_loop(\n        cond=_stopping_cond,\n        body=_loop_body,\n        loop_vars=(0, samples, cache),\n        shape_invariants=(tf.TensorShape([]), tf.TensorShape([None, None]),\n                          cache_shape_invariants),\n        back_prop=False,\n        parallel_iterations=1,\n        maximum_iterations=max_sample_length)\n\n    # Record completed samples\n    complete_samples = tf.reduce_any(tf.equal(f, 0), axis=-1)\n\n    # Find number of faces\n    sample_length = tf.shape(f)[-1]\n    # Get largest new face (1) index as stopping point for incomplete samples.\n    max_one_ind = tf.reduce_max(\n        tf.range(sample_length)[None] * tf.cast(tf.equal(f, 1), tf.int32),\n        axis=-1)\n    zero_inds = tf.cast(\n        tf.argmax(tf.cast(tf.equal(f, 0), tf.int32), axis=-1), tf.int32)\n    num_face_indices = tf.where(complete_samples, zero_inds, max_one_ind) + 1\n\n    # Mask faces beyond stopping token with zeros\n    # This mask has a -1 in order to replace the last new face token with zero\n    faces_mask = tf.cast(\n        tf.range(sample_length)[None] < num_face_indices[:, None] - 1, tf.int32)\n    f *= faces_mask\n    # This is the real mask\n    faces_mask = tf.cast(\n        tf.range(sample_length)[None] < num_face_indices[:, None], tf.int32)\n\n    # Pad to maximum size with zeros\n    pad_size = max_sample_length - sample_length\n    f = tf.pad(f, [[0, 0], [0, pad_size]])\n\n    if only_return_complete:\n      f = tf.boolean_mask(f, complete_samples)\n      num_face_indices = tf.boolean_mask(num_face_indices, complete_samples)\n      context = tf.nest.map_structure(\n          lambda x: tf.boolean_mask(x, complete_samples), context)\n      complete_samples = tf.boolean_mask(complete_samples, complete_samples)\n\n    # outputs\n    outputs = {\n        'context': context,\n        'completed': complete_samples,\n        'faces': f,\n        'num_face_indices': num_face_indices,\n    }\n    return outputs\n"
  },
  {
    "path": "polygen/run.sh",
    "content": "#!/bin/sh\n# Copyright 2020 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\npython3 -m venv polygen\nsource polygen/bin/activate\npip3 install .\npython3 model_test.py\ndeactivate\n"
  },
  {
    "path": "polygen/sample-pretrained.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"lUh_eWpealmh\"\n      },\n      \"source\": [\n        \"Copyright 2020 DeepMind Technologies Limited\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"you may not use this file except in compliance with the License.\\n\",\n        \"You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"     https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software\\n\",\n        \"distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"See the License for the specific language governing permissions and\\n\",\n        \"limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"kYd9gIfGJYZ8\"\n      },\n      \"source\": [\n        \"## Clone repo and import dependencies\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"Ux33ZDQ_tqUV\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!pip install tensorflow==1.15 dm-sonnet==1.36 tensor2tensor==1.14\\n\",\n        \"\\n\",\n        \"import time\\n\",\n        \"import numpy as np\\n\",\n        \"import tensorflow.compat.v1 as tf\\n\",\n        \"tf.logging.set_verbosity(tf.logging.ERROR)  # Hide TF deprecation messages\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"\\n\",\n        \"%cd /tmp\\n\",\n        \"%rm -rf /tmp/deepmind_research\\n\",\n        \"!git clone https://github.com/deepmind/deepmind-research.git \\\\\\n\",\n        \"  /tmp/deepmind_research\\n\",\n        \"%cd /tmp/deepmind_research/polygen\\n\",\n        \"import modules\\n\",\n        \"import data_utils\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"YUZNqHTVJbm3\"\n      },\n      \"source\": [\n        \"## Download pre-trained model weights from Google Cloud Storage\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"LpZjBUmq10gX\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!mkdir /tmp/vertex_model\\n\",\n        \"!mkdir /tmp/face_model\\n\",\n        \"!gsutil cp gs://deepmind-research-polygen/vertex_model.tar.gz /tmp/vertex_model/\\n\",\n        \"!gsutil cp gs://deepmind-research-polygen/face_model.tar.gz /tmp/face_model/\\n\",\n        \"!tar xvfz /tmp/vertex_model/vertex_model.tar.gz -C /tmp/vertex_model/\\n\",\n        \"!tar xvfz /tmp/face_model/face_model.tar.gz -C /tmp/face_model/\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"vXhMOoxaJ3Xb\"\n      },\n      \"source\": [\n        \"## Pre-trained model config\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"7VGSSS9vJSn-\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"vertex_module_config=dict(\\n\",\n        \"  decoder_config=dict(\\n\",\n        \"      hidden_size=512,\\n\",\n        \"      fc_size=2048,\\n\",\n        \"      num_heads=8,\\n\",\n        \"      layer_norm=True,\\n\",\n        \"      num_layers=24,\\n\",\n        \"      dropout_rate=0.4,\\n\",\n        \"      re_zero=True,\\n\",\n        \"      memory_efficient=True\\n\",\n        \"      ),\\n\",\n        \"  quantization_bits=8,\\n\",\n        \"  class_conditional=True,\\n\",\n        \"  max_num_input_verts=5000,\\n\",\n        \"  use_discrete_embeddings=True,\\n\",\n        \"  )\\n\",\n        \"\\n\",\n        \"face_module_config=dict(\\n\",\n        \"  encoder_config=dict(\\n\",\n        \"      hidden_size=512,\\n\",\n        \"      fc_size=2048,\\n\",\n        \"      num_heads=8,\\n\",\n        \"      layer_norm=True,\\n\",\n        \"      num_layers=10,\\n\",\n        \"      dropout_rate=0.2,\\n\",\n        \"      re_zero=True,\\n\",\n        \"      memory_efficient=True,\\n\",\n        \"      ),\\n\",\n        \"  decoder_config=dict(\\n\",\n        \"      hidden_size=512,\\n\",\n        \"      fc_size=2048,\\n\",\n        \"      num_heads=8,\\n\",\n        \"      layer_norm=True,\\n\",\n        \"      num_layers=14,\\n\",\n        \"      dropout_rate=0.2,\\n\",\n        \"      re_zero=True,\\n\",\n        \"      memory_efficient=True,\\n\",\n        \"      ),\\n\",\n        \"  class_conditional=False,\\n\",\n        \"  decoder_cross_attention=True,\\n\",\n        \"  use_discrete_vertex_embeddings=True,\\n\",\n        \"  max_seq_length=8000,\\n\",\n        \"  )\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"WNXf_XbuKW4S\"\n      },\n      \"source\": [\n        \"## Generate class-conditional samples\\n\",\n        \"\\n\",\n        \"Try varying the `class_id` parameter to generate meshes from different object categories. Good classes to try are tables (49), lamps (30), and cabinets (32). \\n\",\n        \"\\n\",\n        \"We can also specify the maximum number of vertices / face indices we want to see in the generated meshes using `max_num_vertices` and `max_num_face_indices`. The code will keep generating batches of samples until there are at least `num_samples_min` complete samples with the required number of vertices / faces.\\n\",\n        \"\\n\",\n        \"`top_p_vertex_model` and `top_p_face_model` control how varied the outputs are, with `1.` being the most varied, and `0.` the least varied. `0.9` is a good value for both the vertex and face models.\\n\",\n        \"\\n\",\n        \"Sampling should take around 2-5 minutes with a colab GPU using the default settings depending on the object class.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"kqKMbPJJu3lk\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"class_id = '49) table' #@param ['0) airplane,aeroplane,plane','1) ashcan,trash can,garbage can,wastebin,ash bin,ash-bin,ashbin,dustbin,trash barrel,trash bin','2) bag,traveling bag,travelling bag,grip,suitcase','3) basket,handbasket','4) bathtub,bathing tub,bath,tub','5) bed','6) bench','7) birdhouse','8) bookshelf','9) bottle','10) bowl','11) bus,autobus,coach,charabanc,double-decker,jitney,motorbus,motorcoach,omnibus,passenger vehi','12) cabinet','13) camera,photographic camera','14) can,tin,tin can','15) cap','16) car,auto,automobile,machine,motorcar','17) cellular telephone,cellular phone,cellphone,cell,mobile phone','18) chair','19) clock','20) computer keyboard,keypad','21) dishwasher,dish washer,dishwashing machine','22) display,video display','23) earphone,earpiece,headphone,phone','24) faucet,spigot','25) file,file cabinet,filing cabinet','26) guitar','27) helmet','28) jar','29) knife','30) lamp','31) laptop,laptop computer','32) loudspeaker,speaker,speaker unit,loudspeaker system,speaker system','33) mailbox,letter box','34) microphone,mike','35) microwave,microwave oven','36) motorcycle,bike','37) mug','38) piano,pianoforte,forte-piano','39) pillow','40) pistol,handgun,side arm,shooting iron','41) pot,flowerpot','42) printer,printing machine','43) remote control,remote','44) rifle','45) rocket,projectile','46) skateboard','47) sofa,couch,lounge','48) stove','49) table','50) telephone,phone,telephone set','51) tower','52) train,railroad train','53) vessel,watercraft','54) washer,automatic washer,washing machine']\\n\",\n        \"num_samples_min = 1 #@param\\n\",\n        \"num_samples_batch = 8 #@param\\n\",\n        \"max_num_vertices = 400 #@param\\n\",\n        \"max_num_face_indices = 2000 #@param\\n\",\n        \"top_p_vertex_model = 0.9 #@param\\n\",\n        \"top_p_face_model = 0.9 #@param\\n\",\n        \"\\n\",\n        \"tf.reset_default_graph()\\n\",\n        \"\\n\",\n        \"# Build models\\n\",\n        \"vertex_model = modules.VertexModel(**vertex_module_config)\\n\",\n        \"face_model = modules.FaceModel(**face_module_config)\\n\",\n        \"\\n\",\n        \"# Tile out class label to every element in batch\\n\",\n        \"class_id = int(class_id.split(')')[0])\\n\",\n        \"vertex_model_context = {'class_label': tf.fill([num_samples_batch,], class_id)}\\n\",\n        \"vertex_samples = vertex_model.sample(\\n\",\n        \"    num_samples_batch, context=vertex_model_context, \\n\",\n        \"    max_sample_length=max_num_vertices, top_p=top_p_vertex_model, \\n\",\n        \"    recenter_verts=True, only_return_complete=True)\\n\",\n        \"vertex_model_saver = tf.train.Saver(var_list=vertex_model.variables)\\n\",\n        \"\\n\",\n        \"# The face model generates samples conditioned on a context, which here is\\n\",\n        \"# the vertex model samples\\n\",\n        \"face_samples = face_model.sample(\\n\",\n        \"    vertex_samples, max_sample_length=max_num_face_indices, \\n\",\n        \"    top_p=top_p_face_model, only_return_complete=True)\\n\",\n        \"face_model_saver = tf.train.Saver(var_list=face_model.variables)\\n\",\n        \"\\n\",\n        \"# Start sampling\\n\",\n        \"start = time.time()\\n\",\n        \"print('Generating samples...')\\n\",\n        \"with tf.Session() as sess:\\n\",\n        \"  vertex_model_saver.restore(sess, '/tmp/vertex_model/model')\\n\",\n        \"  face_model_saver.restore(sess, '/tmp/face_model/model')\\n\",\n        \"  mesh_list = []\\n\",\n        \"  num_samples_complete = 0\\n\",\n        \"  while num_samples_complete \\u003c num_samples_min:\\n\",\n        \"    v_samples_np = sess.run(vertex_samples)\\n\",\n        \"    if v_samples_np['completed'].size == 0:\\n\",\n        \"      print('No vertex samples completed in this batch. Try increasing ' +\\n\",\n        \"            'max_num_vertices.')\\n\",\n        \"      continue\\n\",\n        \"    f_samples_np = sess.run(\\n\",\n        \"        face_samples,\\n\",\n        \"        {vertex_samples[k]: v_samples_np[k] for k in vertex_samples.keys()})\\n\",\n        \"    v_samples_np = f_samples_np['context']\\n\",\n        \"    num_samples_complete_batch = f_samples_np['completed'].sum()\\n\",\n        \"    num_samples_complete += num_samples_complete_batch\\n\",\n        \"    print('Num. samples complete: {}'.format(num_samples_complete))\\n\",\n        \"    for k in range(num_samples_complete_batch):\\n\",\n        \"      verts = v_samples_np['vertices'][k][:v_samples_np['num_vertices'][k]]\\n\",\n        \"      faces = data_utils.unflatten_faces(\\n\",\n        \"          f_samples_np['faces'][k][:f_samples_np['num_face_indices'][k]])\\n\",\n        \"      mesh_list.append({'vertices': verts, 'faces': faces})\\n\",\n        \"end = time.time()\\n\",\n        \"print('sampling time: {}'.format(end - start))\\n\",\n        \"\\n\",\n        \"data_utils.plot_meshes(mesh_list, ax_lims=0.4)  \"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"OOQV6pMvSymz\"\n      },\n      \"source\": [\n        \"## Export meshes as `.obj` files\\n\",\n        \"Pick a `mesh_id` (starting at 0) corresponding to the samples generated above. Refresh the colab file browser to find an `.obj` file with the mesh data.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"fO0Klbq2Sx0m\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"mesh_id = 4  #@param\\n\",\n        \"data_utils.write_obj(\\n\",\n        \"    mesh_list[mesh_id]['vertices'], mesh_list[mesh_id]['faces'], \\n\",\n        \"    'mesh-{}.obj'.format(mesh_id))\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"name\": \"sampling-pretrained.ipynb\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1yj-oHYqCnwYVGSM22coa68NqnSoNdyVr\",\n          \"timestamp\": 1591622616999\n        },\n        {\n          \"file_id\": \"1v_7DtLnpXrEhVbwZhzDiVQW7ghroi11Y\",\n          \"timestamp\": 1591264007511\n        }\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "polygen/setup.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Setup for pip package.\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nfrom setuptools import find_packages\nfrom setuptools import setup\n\n\nREQUIRED_PACKAGES = ['numpy', 'dm-sonnet==1.36', 'tensorflow==1.14',\n                     'tensor2tensor==1.15', 'networkx', 'matplotlib', 'six']\n\nsetup(\n    name='polygen',\n    version='0.1',\n    description='A library for PolyGen: An Autoregressive Generative Model of 3D Meshes.',\n    url='https://github.com/deepmind/deepmind-research/polygen',\n    author='DeepMind',\n    author_email='no-reply@google.com',\n    # Contained modules and scripts.\n    packages=find_packages(),\n    install_requires=REQUIRED_PACKAGES,\n    platforms=['any'],\n    license='Apache 2.0',\n)\n"
  },
  {
    "path": "polygen/training.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"szgmaK1HajOc\"\n      },\n      \"source\": [\n        \"Copyright 2020 DeepMind Technologies Limited\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"you may not use this file except in compliance with the License.\\n\",\n        \"You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"     https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software\\n\",\n        \"distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"See the License for the specific language governing permissions and\\n\",\n        \"limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"_dv0afOrKheU\"\n      },\n      \"source\": [\n        \"## Clone repo and import dependencies\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"Ux33ZDQ_tqUV\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!pip install tensorflow==1.15 dm-sonnet==1.36 tensor2tensor==1.14\\n\",\n        \"\\n\",\n        \"import os\\n\",\n        \"import numpy as np\\n\",\n        \"import tensorflow.compat.v1 as tf\\n\",\n        \"tf.logging.set_verbosity(tf.logging.ERROR)  # Hide TF deprecation messages\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"\\n\",\n        \"%cd /tmp\\n\",\n        \"%rm -rf /tmp/deepmind_research\\n\",\n        \"!git clone https://github.com/deepmind/deepmind-research.git \\\\\\n\",\n        \"  /tmp/deepmind_research\\n\",\n        \"%cd /tmp/deepmind_research/polygen\\n\",\n        \"import modules\\n\",\n        \"import data_utils\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"U3GDZhJ5wGOf\"\n      },\n      \"source\": [\n        \"## Prepare a synthetic dataset\\n\",\n        \"We prepare a dataset of meshes using four simple geometric primitives.\\n\",\n        \"\\n\",\n        \"The important function here is `data_utils.load_process_mesh`, which loads the raw `.obj` file, normalizes and centers the meshes, and applies quantization to the vertex positions. The mesh faces are flattened and treated as a long sequence, with a new-face token (`=1`) separating the faces. For each of the four synthetic meshes, we associate a unique class label, so we can train class-conditional models.\\n\",\n        \"\\n\",\n        \"After processing the raw mesh data into numpy arrays, we create a `tf.data.Dataset` that we can use to feed data to our models. \"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"3QAqwyZjtOdC\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Prepare synthetic dataset\\n\",\n        \"ex_list = []\\n\",\n        \"for k, mesh in enumerate(['cube', 'cylinder', 'cone', 'icosphere']):\\n\",\n        \"  mesh_dict = data_utils.load_process_mesh(\\n\",\n        \"      os.path.join('meshes', '{}.obj'.format(mesh)))\\n\",\n        \"  mesh_dict['class_label'] = k\\n\",\n        \"  ex_list.append(mesh_dict)\\n\",\n        \"synthetic_dataset = tf.data.Dataset.from_generator(\\n\",\n        \"    lambda: ex_list, \\n\",\n        \"    output_types={\\n\",\n        \"        'vertices': tf.int32, 'faces': tf.int32, 'class_label': tf.int32},\\n\",\n        \"    output_shapes={\\n\",\n        \"        'vertices': tf.TensorShape([None, 3]), 'faces': tf.TensorShape([None]), \\n\",\n        \"        'class_label': tf.TensorShape(())}\\n\",\n        \"    )\\n\",\n        \"ex = synthetic_dataset.make_one_shot_iterator().get_next()\\n\",\n        \"\\n\",\n        \"# Inspect the first mesh\\n\",\n        \"with tf.Session() as sess:\\n\",\n        \"  ex_np = sess.run(ex)\\n\",\n        \"print(ex_np)\\n\",\n        \"\\n\",\n        \"# Plot the meshes\\n\",\n        \"mesh_list = []\\n\",\n        \"with tf.Session() as sess:\\n\",\n        \"  for i in range(4):\\n\",\n        \"    ex_np = sess.run(ex)\\n\",\n        \"    mesh_list.append(\\n\",\n        \"        {'vertices': data_utils.dequantize_verts(ex_np['vertices']), \\n\",\n        \"         'faces': data_utils.unflatten_faces(ex_np['faces'])})\\n\",\n        \"data_utils.plot_meshes(mesh_list, ax_lims=0.4)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"9G2FCQQyyTXw\"\n      },\n      \"source\": [\n        \"## Vertex model\\n\",\n        \"\\n\",\n        \"#### Prepare the dataset for vertex model training\\n\",\n        \"We need to perform some additional processing to make the dataset ready for vertex model training. In particular, `data_utils.make_vertex_model_dataset` flattens the `[V, 3]` vertex arrays, ordering by `Z-\\u003eY-\\u003eX` coordinates. It also creates masks, which are used to mask padded elements in data batches. We also add random shifts to make the modelling task more challenging.\\n\",\n        \"\\n\",\n        \"#### Create a vertex model\\n\",\n        \"`modules.VertexModel` is a Sonnet module that. Calling the module on a batch of data will produce outputs which are the sequential predictions for each vertex coordinate. The basis of the vertex model is a Transformer decoder, and we specify it's parameters in `decoder_config`. \\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"o2KCoDeeFP8C\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Prepare the dataset for vertex model training\\n\",\n        \"vertex_model_dataset = data_utils.make_vertex_model_dataset(\\n\",\n        \"    synthetic_dataset, apply_random_shift=False)\\n\",\n        \"vertex_model_dataset = vertex_model_dataset.repeat()\\n\",\n        \"vertex_model_dataset = vertex_model_dataset.padded_batch(\\n\",\n        \"    4, padded_shapes=vertex_model_dataset.output_shapes)\\n\",\n        \"vertex_model_dataset = vertex_model_dataset.prefetch(1)\\n\",\n        \"vertex_model_batch = vertex_model_dataset.make_one_shot_iterator().get_next()\\n\",\n        \"\\n\",\n        \"# Create vertex model\\n\",\n        \"vertex_model = modules.VertexModel(\\n\",\n        \"    decoder_config={\\n\",\n        \"        'hidden_size': 128,\\n\",\n        \"        'fc_size': 512, \\n\",\n        \"        'num_layers': 3,\\n\",\n        \"        'dropout_rate': 0.\\n\",\n        \"    },\\n\",\n        \"    class_conditional=True,\\n\",\n        \"    num_classes=4,\\n\",\n        \"    max_num_input_verts=250,\\n\",\n        \"    quantization_bits=8,\\n\",\n        \")\\n\",\n        \"vertex_model_pred_dist = vertex_model(vertex_model_batch)\\n\",\n        \"vertex_model_loss = -tf.reduce_sum(\\n\",\n        \"    vertex_model_pred_dist.log_prob(vertex_model_batch['vertices_flat']) * \\n\",\n        \"    vertex_model_batch['vertices_flat_mask'])\\n\",\n        \"vertex_samples = vertex_model.sample(\\n\",\n        \"    4, context=vertex_model_batch, max_sample_length=200, top_p=0.95,\\n\",\n        \"    recenter_verts=False, only_return_complete=False)\\n\",\n        \"\\n\",\n        \"print(vertex_model_batch)\\n\",\n        \"print(vertex_model_pred_dist)\\n\",\n        \"print(vertex_samples)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"-9RNYr5x1jov\"\n      },\n      \"source\": [\n        \"## Face model\\n\",\n        \"\\n\",\n        \"#### Prepare the dataset for face model training\\n\",\n        \"We need to perform some additional processing to make the dataset ready for vertex model training. In particular, `data_utils.make_vertex_model_dataset` flattens the `[V, 3]` vertex arrays, ordering by `Z-\\u003eY-\\u003eX` coordinates. It also creates masks, which are used to mask padded elements in data batches. We also add random shifts to make the modelling task more challenging.\\n\",\n        \"\\n\",\n        \"#### Create a face model\\n\",\n        \"`modules.VertexModel` is a Sonnet module that. Calling the module on a batch of data will produce outputs which are the sequential predictions for each vertex coordinate. The basis of the vertex model is a Transformer decoder, and we specify it's parameters in `decoder_config`. \"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"a2yO6dOGzn8c\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"face_model_dataset = data_utils.make_face_model_dataset(\\n\",\n        \"    synthetic_dataset, apply_random_shift=False)\\n\",\n        \"face_model_dataset = face_model_dataset.repeat()\\n\",\n        \"face_model_dataset = face_model_dataset.padded_batch(\\n\",\n        \"    4, padded_shapes=face_model_dataset.output_shapes)\\n\",\n        \"face_model_dataset = face_model_dataset.prefetch(1)\\n\",\n        \"face_model_batch = face_model_dataset.make_one_shot_iterator().get_next()\\n\",\n        \"\\n\",\n        \"# Create face model\\n\",\n        \"face_model = modules.FaceModel(\\n\",\n        \"    encoder_config={\\n\",\n        \"        'hidden_size': 128,\\n\",\n        \"        'fc_size': 512, \\n\",\n        \"        'num_layers': 3,\\n\",\n        \"        'dropout_rate': 0.\\n\",\n        \"    },\\n\",\n        \"    decoder_config={\\n\",\n        \"        'hidden_size': 128,\\n\",\n        \"        'fc_size': 512, \\n\",\n        \"        'num_layers': 3,\\n\",\n        \"        'dropout_rate': 0.\\n\",\n        \"    },\\n\",\n        \"    class_conditional=False,\\n\",\n        \"    max_seq_length=500,\\n\",\n        \"    quantization_bits=8,\\n\",\n        \"    decoder_cross_attention=True,\\n\",\n        \"    use_discrete_vertex_embeddings=True,\\n\",\n        \")\\n\",\n        \"face_model_pred_dist = face_model(face_model_batch)\\n\",\n        \"face_model_loss = -tf.reduce_sum(\\n\",\n        \"    face_model_pred_dist.log_prob(face_model_batch['faces']) * \\n\",\n        \"    face_model_batch['faces_mask'])\\n\",\n        \"face_samples = face_model.sample(\\n\",\n        \"    context=vertex_samples, max_sample_length=500, top_p=0.95,\\n\",\n        \"    only_return_complete=False)\\n\",\n        \"print(face_model_batch)\\n\",\n        \"print(face_model_pred_dist)\\n\",\n        \"print(face_samples)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"hL7yloXB1pUb\"\n      },\n      \"source\": [\n        \"## Train on the synthetic data\\n\",\n        \"\\n\",\n        \"Now that we've created vertex and face models and their respective data loaders, we can train them and look at some outputs. While we train the models together here, they can be trained seperately and recombined later if required. \"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"hjrbofa8zqQt\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Optimization settings\\n\",\n        \"learning_rate = 5e-4\\n\",\n        \"training_steps = 500\\n\",\n        \"check_step = 5\\n\",\n        \"\\n\",\n        \"# Create an optimizer an minimize the summed log probability of the mesh \\n\",\n        \"# sequences\\n\",\n        \"optimizer = tf.train.AdamOptimizer(learning_rate)\\n\",\n        \"vertex_model_optim_op = optimizer.minimize(vertex_model_loss)\\n\",\n        \"face_model_optim_op = optimizer.minimize(face_model_loss)\\n\",\n        \"\\n\",\n        \"# Training loop\\n\",\n        \"with tf.Session() as sess:\\n\",\n        \"  sess.run(tf.global_variables_initializer())\\n\",\n        \"  for n in range(training_steps):\\n\",\n        \"    if n % check_step == 0:\\n\",\n        \"      v_loss, f_loss = sess.run((vertex_model_loss, face_model_loss))\\n\",\n        \"      print('Step {}'.format(n))\\n\",\n        \"      print('Loss (vertices) {}'.format(v_loss))\\n\",\n        \"      print('Loss (faces) {}'.format(f_loss))\\n\",\n        \"      v_samples_np, f_samples_np, b_np = sess.run(\\n\",\n        \"        (vertex_samples, face_samples, vertex_model_batch))\\n\",\n        \"      mesh_list = []\\n\",\n        \"      for n in range(4):\\n\",\n        \"        mesh_list.append(\\n\",\n        \"            {\\n\",\n        \"                'vertices': v_samples_np['vertices'][n][:v_samples_np['num_vertices'][n]],\\n\",\n        \"                'faces': data_utils.unflatten_faces(\\n\",\n        \"                    f_samples_np['faces'][n][:f_samples_np['num_face_indices'][n]])\\n\",\n        \"            }\\n\",\n        \"        )\\n\",\n        \"      data_utils.plot_meshes(mesh_list, ax_lims=0.5)\\n\",\n        \"    sess.run((vertex_model_optim_op, face_model_optim_op))\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"name\": \"training.ipynb\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1QL8ib2FKPGUWFQbuX8AttUk-H34Al8Ue\",\n          \"timestamp\": 1591364245034\n        },\n        {\n          \"file_id\": \"1v_7DtLnpXrEhVbwZhzDiVQW7ghroi11Y\",\n          \"timestamp\": 1591355096822\n        }\n      ],\n      \"toc_visible\": true\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "powerpropagation/README.md",
    "content": "# Powerpropagation\n\nThis notebook contains code to accompany the NeurIPS 2021 paper on Powerpropagation.  [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/powerpropagation/powerpropagation.ipynb)\n\nIf you find this code useful, please consider citing this paper:\n\n```\n@article{schwarz2021powerpropagation,\n  title={Powerpropagation: A sparsity inducing weight reparameterisation},\n  author={Schwarz, Jonathan and Jayakumar, Siddhant M and Pascanu, Razvan and Latham, Peter and Teh, Yee Whye},\n  year={2021},\n  journal={Neural Information Processing Systems (NeurIPS)},\n  keywords={conference},\n}\n```\n"
  },
  {
    "path": "powerpropagation/powerpropagation.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"V7L7Byz8qQZd\"\n      },\n      \"source\": [\n        \"Copyright 2021 The Powerpropagation Authors. All rights reserved\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"SuSveOpsxQuA\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Imports\\n\",\n        \"\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"import numpy as np\\n\",\n        \"import seaborn as sns\\n\",\n        \"\\n\",\n        \"import tensorflow as tf\\n\",\n        \"import tensorflow_probability as tfp\\n\",\n        \"\\n\",\n        \"#@title Installing and Importing Dependencies\\n\",\n        \"\\n\",\n        \"print('Installing necessary libraries...')\\n\",\n        \"\\n\",\n        \"def install_libraries():\\n\",\n        \"  !pip install dm-sonnet\\n\",\n        \"\\n\",\n        \"import IPython\\n\",\n        \"\\n\",\n        \"with IPython.utils.io.capture_output() as captured:\\n\",\n        \"  install_libraries()\\n\",\n        \"\\n\",\n        \"import sonnet as snt\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"zNZE9eU_poe0\"\n      },\n      \"source\": [\n        \"### Implementation\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"pQBoLdNFL7fE\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Training \\u0026 Pruning functions\\n\",\n        \"\\n\",\n        \"@tf.function\\n\",\n        \"def train_fn(model, train_x, train_y, optimizer_to_use):\\n\",\n        \"  with tf.GradientTape() as tape:\\n\",\n        \"    loss, stats = model.loss(train_x, train_y)\\n\",\n        \"\\n\",\n        \"  train_vars = model.trainable_variables()\\n\",\n        \"  train_grads = tape.gradient(loss, train_vars)\\n\",\n        \"  optimizer_to_use.apply(train_grads, train_vars)\\n\",\n        \"\\n\",\n        \"  return stats\\n\",\n        \"\\n\",\n        \"@tf.function\\n\",\n        \"def eval_fn(model, eval_x, eval_y):\\n\",\n        \"  _, stats = model.loss(eval_x, eval_y)\\n\",\n        \"\\n\",\n        \"  return stats\\n\",\n        \"\\n\",\n        \"def _bottom_k_mask(percent_to_keep, condition):\\n\",\n        \"  how_many = int(percent_to_keep * condition.size)\\n\",\n        \"  top_k = tf.nn.top_k(condition, k=how_many)\\n\",\n        \"\\n\",\n        \"  mask = np.zeros(shape=condition.shape, dtype=np.float32)\\n\",\n        \"  mask[top_k.indices.numpy()] = 1\\n\",\n        \"\\n\",\n        \"  assert np.sum(mask) == how_many\\n\",\n        \"\\n\",\n        \"  return mask\\n\",\n        \"\\n\",\n        \"def prune_by_magnitude(percent_to_keep, weight):\\n\",\n        \"  mask = _bottom_k_mask(percent_to_keep, np.abs(weight.flatten()))\\n\",\n        \"\\n\",\n        \"  return mask.reshape(weight.shape)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"uAPa99KakJDB\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Initialisers\\n\",\n        \"\\n\",\n        \"class PowerPropVarianceScaling(snt.initializers.VarianceScaling):\\n\",\n        \"\\n\",\n        \"  def __init__(self, alpha, *args, **kwargs):\\n\",\n        \"    super(PowerPropVarianceScaling, self).__init__(*args, **kwargs)\\n\",\n        \"    self._alpha = alpha\\n\",\n        \"\\n\",\n        \"  def __call__(self, shape, dtype):\\n\",\n        \"    u = super(PowerPropVarianceScaling, self).__call__(shape, dtype).numpy()\\n\",\n        \"\\n\",\n        \"    return tf.sign(u) * tf.pow(tf.abs(u), 1.0/self._alpha)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"UXtgeSdPgufJ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Models\\n\",\n        \"\\n\",\n        \"class PowerPropLinear(snt.Linear):\\n\",\n        \"  \\\"\\\"\\\"Powerpropagation Linear module.\\\"\\\"\\\"\\n\",\n        \"  def __init__(self, alpha, *args, **kwargs):\\n\",\n        \"    super(PowerPropLinear, self).__init__(*args, **kwargs)\\n\",\n        \"    self._alpha = alpha\\n\",\n        \"\\n\",\n        \"  def get_weights(self):\\n\",\n        \"    return tf.sign(self.w) * tf.pow(tf.abs(self.w), self._alpha)\\n\",\n        \"\\n\",\n        \"  def __call__(self, inputs, mask=None):\\n\",\n        \"    self._initialize(inputs)\\n\",\n        \"    params = self.w * tf.pow(tf.abs(self.w), self._alpha-1)\\n\",\n        \"\\n\",\n        \"    if mask is not None:\\n\",\n        \"      params *= mask\\n\",\n        \"\\n\",\n        \"    outputs = tf.matmul(inputs, params) + self.b\\n\",\n        \"\\n\",\n        \"    return outputs\\n\",\n        \"\\n\",\n        \"class MLP(snt.Module):\\n\",\n        \"  \\\"\\\"\\\"A multi-layer perceptron module.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self, alpha, w_init, output_sizes=[300, 100, 10], name='MLP'):\\n\",\n        \"\\n\",\n        \"    super(MLP, self).__init__(name=name)\\n\",\n        \"    self._alpha = alpha\\n\",\n        \"    self._w_init = w_init\\n\",\n        \"\\n\",\n        \"    self._layers = []\\n\",\n        \"    for index, output_size in enumerate(output_sizes):\\n\",\n        \"      self._layers.append(\\n\",\n        \"          PowerPropLinear(\\n\",\n        \"              output_size=output_size,\\n\",\n        \"              alpha=alpha,\\n\",\n        \"              w_init=w_init,\\n\",\n        \"              name=\\\"linear_{}\\\".format(index)))\\n\",\n        \"\\n\",\n        \"  def get_weights(self):\\n\",\n        \"    return [l.get_weights().numpy() for l in self._layers]\\n\",\n        \"\\n\",\n        \"  def __call__(self, inputs, masks=None):\\n\",\n        \"    num_layers = len(self._layers)\\n\",\n        \"\\n\",\n        \"    for i, layer in enumerate(self._layers):\\n\",\n        \"      if masks is not None:\\n\",\n        \"        inputs = layer(inputs, masks[i])\\n\",\n        \"      else:\\n\",\n        \"        inputs = layer(inputs)\\n\",\n        \"      if i \\u003c (num_layers - 1):\\n\",\n        \"        inputs = tf.nn.relu(inputs)\\n\",\n        \"\\n\",\n        \"    return inputs\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"class DensityNetwork(snt.Module):\\n\",\n        \"  \\\"\\\"\\\"Produces categorical distribution.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self, network=None, name=\\\"DensityNetwork\\\", *args, **kwargs):\\n\",\n        \"    super(DensityNetwork, self).__init__(name=name)\\n\",\n        \"    self._network = network\\n\",\n        \"\\n\",\n        \"  def __call__(self, inputs, masks=None, *args, **kwargs):\\n\",\n        \"    outputs = self._network(inputs, masks, *args, **kwargs)\\n\",\n        \"\\n\",\n        \"    return tfp.distributions.Categorical(logits=outputs), outputs\\n\",\n        \"\\n\",\n        \"  def trainable_variables(self):\\n\",\n        \"    return self._network.trainable_variables\\n\",\n        \"\\n\",\n        \"  def get_weights(self):\\n\",\n        \"    return self._network.get_weights()\\n\",\n        \"\\n\",\n        \"  def loss(self, inputs, targets, masks=None, *args, **kwargs):\\n\",\n        \"    dist, logits = self.__call__(\\n\",\n        \"        inputs, masks, *args, **kwargs)\\n\",\n        \"    loss = -tf.reduce_mean(dist.log_prob(targets))\\n\",\n        \"\\n\",\n        \"    accuracy = tf.reduce_mean(\\n\",\n        \"        tf.cast(tf.equal(tf.argmax(logits, axis=1), targets), tf.float32))\\n\",\n        \"\\n\",\n        \"    return loss, {'loss': loss, 'acc': accuracy}\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"J8M6PJ4oNK0X\"\n      },\n      \"source\": [\n        \"### Training\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"9TwBkiSmKWCz\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Training configuration\\n\",\n        \"\\n\",\n        \"model_seed = 0  #@param\\n\",\n        \"\\n\",\n        \"alphas = [1.0, 2.0, 3.0, 4.0, 5.0]  #@param\\n\",\n        \"init_distribution = 'truncated_normal'\\n\",\n        \"init_mode = 'fan_in'\\n\",\n        \"init_scale = 1.0\\n\",\n        \"\\n\",\n        \"# Fixed values taken from the Lottery Ticket Hypothesis paper\\n\",\n        \"train_batch_size = 60\\n\",\n        \"num_train_steps = 50000\\n\",\n        \"learning_rate = 0.1\\n\",\n        \"\\n\",\n        \"report_interval = 2500\\n\",\n        \"\\n\",\n        \"tf.random.set_seed(model_seed)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"JGFVxUjCRe3v\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Get data\\n\",\n        \"\\n\",\n        \"(train_x, train_y), (test_x, test_y) = tf.keras.datasets.mnist.load_data()\\n\",\n        \"\\n\",\n        \"train_x = train_x.reshape([60000, 784]).astype(np.float32) / 255.0\\n\",\n        \"test_x = test_x.reshape([10000, 784]).astype(np.float32) / 255.0\\n\",\n        \"\\n\",\n        \"train_y = train_y.astype(np.int64)\\n\",\n        \"test_y = test_y.astype(np.int64)\\n\",\n        \"\\n\",\n        \"# Reserve some data for a validation set\\n\",\n        \"valid_x = train_x[-5000:]\\n\",\n        \"valid_y = train_y[-5000:]\\n\",\n        \"train_x = train_x[:-5000]\\n\",\n        \"train_y = train_y[:-5000]\\n\",\n        \"\\n\",\n        \"train_dataset = tf.data.Dataset.from_tensor_slices((train_x, train_y))\\n\",\n        \"\\n\",\n        \"# Sample random batches of data from the entire training set\\n\",\n        \"train_iterator = iter(\\n\",\n        \"    train_dataset.repeat().shuffle(10000).batch(train_batch_size))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"nWemRI-x4FEa\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Training set-up\\n\",\n        \"\\n\",\n        \"model_types = []\\n\",\n        \"models = []\\n\",\n        \"n_models = len(alphas)\\n\",\n        \"\\n\",\n        \"for alpha in alphas:\\n\",\n        \"  w_init = PowerPropVarianceScaling(alpha)\\n\",\n        \"  models.append(DensityNetwork(MLP(alpha=alpha, w_init=w_init)))\\n\",\n        \"  if alpha \\u003e 1.0:\\n\",\n        \"    model_types.append('Powerprop. ($\\\\\\\\alpha={}$)'.format(alpha))\\n\",\n        \"  else:\\n\",\n        \"    model_types.append('Baseline')\\n\",\n        \"\\n\",\n        \"# Initalise variables\\n\",\n        \"for m in models:\\n\",\n        \"  m(valid_x)\\n\",\n        \"\\n\",\n        \"initial_weights = [m.get_weights() for m in models]\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"optimizers = [snt.optimizers.SGD(learning_rate=learning_rate)\\n\",\n        \"              for _ in range(n_models)]\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"xvtAESbqFGaQ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Training loop\\n\",\n        \"\\n\",\n        \"all_train_stats = [[] for _ in range(n_models)]\\n\",\n        \"all_valid_stats = [[] for _ in range(n_models)]\\n\",\n        \"\\n\",\n        \"for step in range(num_train_steps+1):\\n\",\n        \"  train_x_batch, train_y_batch = next(train_iterator)\\n\",\n        \"\\n\",\n        \"  for m_id, model in enumerate(models):\\n\",\n        \"    all_train_stats[m_id].append(\\n\",\n        \"        train_fn(model, train_x_batch, train_y_batch, optimizers[m_id]))\\n\",\n        \"\\n\",\n        \"  if step % report_interval == 0:\\n\",\n        \"    for m_id, model in enumerate(models):\\n\",\n        \"      print('[Train Step {}, Alpha {}] Loss: {:1.3f}. Acc: {:1.3f}'.format(\\n\",\n        \"            step, \\n\",\n        \"            alphas[m_id], \\n\",\n        \"            all_train_stats[m_id][-1]['loss'], \\n\",\n        \"            all_train_stats[m_id][-1]['acc']))\\n\",\n        \"      all_valid_stats[m_id].append(eval_fn(model, valid_x, valid_y))\\n\",\n        \"\\n\",\n        \"      print('[Eval Step {}, Alpha {}] Loss: {:1.3f}. Acc: {:1.3f}'.format(\\n\",\n        \"            step, \\n\",\n        \"            alphas[m_id], \\n\",\n        \"            all_valid_stats[m_id][-1]['loss'], \\n\",\n        \"            all_valid_stats[m_id][-1]['acc']))\\n\",\n        \"    print('---')\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"NDBNpC_4piOg\"\n      },\n      \"source\": [\n        \"### Results\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"dG7tyvmOQxeX\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Pruning\\n\",\n        \"\\n\",\n        \"final_weights = [m.get_weights() for m in models]\\n\",\n        \"\\n\",\n        \"eval_at_sparsity_level = np.geomspace(0.01, 1.0, 20).tolist()\\n\",\n        \"acc_at_sparsity = [[] for _ in range(n_models)]\\n\",\n        \"\\n\",\n        \"for p_to_use in eval_at_sparsity_level:\\n\",\n        \"\\n\",\n        \"  # Half the sparsity at output layer\\n\",\n        \"  percent = 2*[p_to_use] + [min(1.0, p_to_use*2)]\\n\",\n        \"\\n\",\n        \"  for m_id, model_to_use in enumerate(models):\\n\",\n        \"    masks = []\\n\",\n        \"    for i, w in enumerate(final_weights[m_id]):\\n\",\n        \"      masks.append(prune_by_magnitude(percent[i], w))\\n\",\n        \"\\n\",\n        \"    _, stats = model_to_use.loss(test_x, test_y, masks=masks)\\n\",\n        \"\\n\",\n        \"    acc_at_sparsity[m_id].append(stats['acc'].numpy())\\n\",\n        \"    print(' Performance @ {:1.0f}% of weights [Alpha {}]: Acc {:1.3f} NLL {:1.3f} '.format(\\n\",\n        \"        100*p_to_use, alphas[m_id], stats['acc'], stats['loss']))\\n\",\n        \"  print('---')\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"nv8u662-4yug\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"sns.set_style(\\\"whitegrid\\\")\\n\",\n        \"sns.set_context(\\\"paper\\\")\\n\",\n        \"\\n\",\n        \"#@title Plot\\n\",\n        \"f, ax = plt.subplots(1, 1, figsize=(7,5))\\n\",\n        \"\\n\",\n        \"for acc, label in zip(acc_at_sparsity, model_types):\\n\",\n        \"  ax.plot(eval_at_sparsity_level, acc, label=label, marker='o', lw=2)\\n\",\n        \"\\n\",\n        \"ax.set_xscale('log')\\n\",\n        \"ax.set_xlim([1.0, 0.01])\\n\",\n        \"ax.set_ylim([0.0, 1.0])\\n\",\n        \"ax.legend(frameon=False)\\n\",\n        \"ax.set_xlabel('Weights Remaining (%)')\\n\",\n        \"ax.set_ylabel('Test Accuracy (%)')\\n\",\n        \"\\n\",\n        \"sns.despine()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"-NEnDx52w9NL\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"accelerator\": \"GPU\",\n    \"colab\": {\n      \"collapsed_sections\": [\n        \"zNZE9eU_poe0\",\n        \"J8M6PJ4oNK0X\",\n        \"NDBNpC_4piOg\"\n      ],\n      \"last_runtime\": {\n        \"build_target\": \"//learning/deepmind/dm_python:dm_notebook3\",\n        \"kind\": \"private\"\n      },\n      \"name\": \"Powerpropagation\",\n      \"private_outputs\": true,\n      \"provenance\": [\n        {\n          \"file_id\": \"12kDm1gRUsFQaQUfmf1AzONNtg2Oxm96h\",\n          \"timestamp\": 1621155153435\n        },\n        {\n          \"file_id\": \"1m7j2OKVrTR0YkvMXwDIZRmZdvFlB_HMk\",\n          \"timestamp\": 1615900826226\n        },\n        {\n          \"file_id\": \"11JbbynSJgkt4n92oEKrrgfHzCQo-4sRp\",\n          \"timestamp\": 1613740982607\n        },\n        {\n          \"file_id\": \"1Pa7Szt1OuHZXczMcMxLE_UctRRtMIbkO\",\n          \"timestamp\": 1612795019221\n        }\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "rapid_task_solving/README.md",
    "content": "# One-shot StreetLearn and Memory & Planning Game\n\nThis repository contains code for the environments used in the paper\n[\"Rapid Task-Solving in Novel Environments\"](https://arxiv.org/abs/2006.03662)\nby Sam Ritter, Ryan Faulkner, Laurent Sartran, Adam Santoro, Matt Botvinick and\nDavid Raposo. It was published as a conference paper at ICLR 2021.\n\nTo cite this work:\n\n```\n@inproceedings{\n  ritter2021rapid,\n  title={Rapid Task-Solving in Novel Environments},\n  author={Samuel Ritter and Ryan Faulkner and Laurent Sartran and Adam Santoro\n  and Matthew Botvinick and David Raposo},\n  booktitle={International Conference on Learning Representations},\n  year={2021},\n  url={https://openreview.net/forum?id=F-mvpFpn_0q}\n}\n```\n\n### Memory&Planning Game\n\nThe _Memory&Planning Game_ is a simple variation of the well-known _Memory\nGame_, wherein players must remember the locations of cards in a grid. This\nvariation extends the challenge to require planning as well as remembering.\n\nIn the _Memory&Planning Game_, the agent occupies an environment consisting\nof a grid of symbols (e.g. 4x4). The observation consists of two symbols — one\nwhich corresponds to the agent's current location, and another that corresponds\nto the \"goal\" the agent is tasked with navigating to. The agent can not see its\nrelative location with respect to other symbols in the grid. At each step the\nagent selects one of 5 possible actions: _move left_, _move right_, _move up_,\n_move down_, and _collect_. If the agent chooses the \"collect\" action when its\ncurrent location symbol matches the goal symbol, a reward of +1 is received.\nOtherwise, the agent receives a reward of 0. At the beginning of each episode, a\nnew set of symbols is sampled, effectively inducing a new transition function.\nThe agent is allowed a fixed number of steps (e.g. 100) per episode to \"collect\"\nas many goals as possible. Each time the agent collects a goal — which\ncorresponds to completing a task —, a new goal is sampled in and the transition\nfunction stays fixed.\n\n#### Example\n\nThe following code snipped shows an example of how to load the environment,\nstart a new episode and take a few random steps. A plot representing the current\nstate of the environment is displayed for each step.\n\n```\nimport memory_planning_game\n\nenv = memory_planning_game.MemoryPlanningGame(4, seed=123)\n_ = env.reset()\nfor _ in range(5):\n  timestep = env.take_random_action()\n  fig, ax = env.draw_maze()\n```\n\n![Memory & Planning Game environment](images/example_mpg.png)\n\n### One-Shot StreetLearn\n\nThe _One-Shot StreetLearn_ is a domain wherein environments are sampled as\nneighborhoods from the _StreetLearn_ dataset (Mirowski et al., 2019). Tasks are\nthen sampled by selecting a position and orientation that the agent must\nnavigate to from its current location.\n\nIn _One-Shot StreetLearn_, the agent's observations consist of a representation\nof the current state and a representation of the goal state. The agent receives\nno other information from the environment. The available actions are _turn\nright_, which orients the agent clockwise toward the next available direction of\nmotion from its current location; _turn left_, which does the same in the other\ndirection; and _move forward_, which moves the agent along the direction it is\nfacing to the next available location. In each episode, we sample a new\nneighborhood with 5 intersections from one of 12 cities. To reduce the\nexploration problem while keeping the planning difficulty constant, we removed\nall the locations that were not intersections (i.e. that corresponded to\ndegree-2 nodes in the connectivity graph of the sampled neighbourhood).\n\nNote: In the paper we used images to represent each location, taken from the\n_StreetLearn_ dataset. In this codebase, to simplify the public release process,\nwe replace the images with one-hot vectors, to represent each location.\n\nEvery time the agent reaches a goal, a new starting- and goal-state pair is\nsampled, initiating a new task, until the fixed episode step limit is reached\n(e.g. 200 steps). A step that takes the agent to the goal state results in a\nreward of +1. Any other step results in a reward of 0.\n\n#### City graph datasets\n\nIn this [link]\n(https://console.cloud.google.com/storage/browser/one_shot_streetlearn_graphs)\nyou can download the datasets containing the connectivity graphs of different\ncities. You will need at least one of these datasets in order to build the\nenvironment.\n\n#### Example\n\nThe following code snipped shows an example of how to load the environment for\nan example city (in this case, Madrid), start a new episode and take a few\nrandom steps. A plot representing the current state of the environment is\ndisplayed for each step.\n\n```\nimport numpy as np\nimport one_shot_streetlearn\n\nregion = 'madrid'\nsl_config = {\n    'dataset_path': f'./datasets/{region}_full_graph.gexf',\n    'max_episode_steps': 200,\n    'num_junctions': 5,\n}\nenv = one_shot_streetlearn.OneShotStreetLearn(**sl_config)\n\n_ = env.reset()\nfor _ in range(4):\n  rnd_action = np.random.randint(env.NUM_ACTIONS)\n  timestep = env.step(rnd_action)\n  fig, ax = env.draw_subgraph()\n```\n\n![One-shot StreetLearn environment](images/example_osl.png)\n"
  },
  {
    "path": "rapid_task_solving/memory_planning_game.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Memory & Planning Game environment.\"\"\"\nimport string\n\nimport dm_env\nimport matplotlib.pyplot as plt\nimport networkx as nx\nimport numpy as np\n\n\nclass MemoryPlanningGame(dm_env.Environment):\n  \"\"\"Memory & Planning Game environment.\"\"\"\n\n  ACTION_NAMES = ['Up', 'Down', 'Left', 'Right', 'Collect']\n  NUM_ACTIONS = len(ACTION_NAMES)\n  DIRECTIONS = [\n      (0, 1),   # Up\n      (0, -1),  # Down\n      (-1, 0),  # Left\n      (1, 0),   # Right\n      (0, 0),   # Collect\n  ]\n\n  def __init__(self,\n               maze_size=4,\n               max_episode_steps=100,\n               target_reward=1.,\n               per_step_reward=0.,\n               random_respawn=False,\n               seed=None):\n    \"\"\"The Memory & Planning Game environment.\n\n    Args:\n      maze_size: (int) size of the maze dimension.\n      max_episode_steps: (int) number of steps per episode.\n      target_reward: (float) reward value of the target.\n      per_step_reward: (float) reward/cost of taking a step.\n      random_respawn: (bool) whether the agent respawns in a random location\n        upon collecting the goal.\n      seed: (int or None) seed for random number generator.\n    \"\"\"\n    self._maze_size = maze_size\n    self._num_labels = maze_size * maze_size\n    # The graph itself is the same across episodes, but the node labels will be\n    # randomly sampled in each episode.\n    self._graph = nx.grid_2d_graph(\n        self._maze_size, self._maze_size, periodic=True)\n    self._max_episode_steps = max_episode_steps\n    self._target_reward = target_reward\n    self._per_step_reward = per_step_reward\n    self._random_respawn = random_respawn\n    self._rng = np.random.RandomState(seed)\n\n  def _one_hot(self, node):\n    one_hot_vector = np.zeros([self._num_labels], dtype=np.int32)\n    one_hot_vector[self._labels[node]] = 1\n    return one_hot_vector\n\n  def step(self, action):\n    # If previous step was the last step of an episode, reset.\n    if self._needs_reset:\n      return self.reset()\n\n    # Increment step count and check if it's the last step of the episode.\n    self._episode_steps += 1\n    if self._episode_steps >= self._max_episode_steps:\n      self._needs_reset = True\n      transition = dm_env.termination\n    else:\n      transition = dm_env.transition\n\n    # Recompute agent's position given the selected action.\n    direction = self.DIRECTIONS[action]\n    self._position = tuple(\n        (np.array(self._position) + np.array(direction)) % self._maze_size)\n    self._previous_action = self.ACTION_NAMES[action]\n\n    # Get reward if agent is over the goal location and the selected action is\n    # `collect`.\n    if self._position == self._goal and self.ACTION_NAMES[action] == 'Collect':\n      reward = self._target_reward\n      self._set_new_goal()\n    else:\n      reward = self._per_step_reward\n    self._episode_reward += reward\n\n    return transition(reward, self._observation())\n\n  def _observation(self):\n    return {\n        'position': np.array(self._one_hot(self.position), dtype=np.int32),\n        'goal': np.array(self._one_hot(self.goal), dtype=np.int32),\n    }\n\n  def observation_spec(self):\n    return {\n        'position': dm_env.specs.Array(\n            shape=(self._num_labels,), dtype=np.int32, name='position'),\n        'goal': dm_env.specs.Array(\n            shape=(self._num_labels,), dtype=np.int32, name='goal'),\n    }\n\n  def action_spec(self):\n    return dm_env.specs.DiscreteArray(self.NUM_ACTIONS)\n\n  def take_random_action(self):\n    return self.step(self._rng.randint(self.NUM_ACTIONS))\n\n  def reset(self):\n    self._previous_action = ''\n    self._episode_reward = 0.\n    self._episode_steps = 0\n    self._needs_reset = False\n    random_labels = self._rng.permutation(self._num_labels)\n    self._labels = {n: random_labels[i]\n                    for i, n in enumerate(self._graph.nodes())}\n    self._respawn()\n    self._set_new_goal()\n    return dm_env.restart(self._observation())\n\n  def _respawn(self):\n    random_idx = self._rng.randint(self._num_labels)\n    self._position = list(self._graph.nodes())[random_idx]\n\n  def _set_new_goal(self):\n    if self._random_respawn:\n      self._respawn()\n    goal = self._position\n    while goal == self._position:\n      random_idx = self._rng.randint(self._num_labels)\n      goal = list(self._graph.nodes())[random_idx]\n    self._goal = goal\n\n  @property\n  def position(self):\n    return self._position\n\n  @property\n  def goal(self):\n    return self._goal\n\n  @property\n  def previous_action(self):\n    return self._previous_action\n\n  @property\n  def episode_reward(self):\n    return self._episode_reward\n\n  def draw_maze(self, ax=None):\n    if ax is None:\n      plt.figure()\n      ax = plt.gca()\n    node_positions = {(x, y): (x, y) for x, y in self._graph.nodes()}\n    letters = string.ascii_uppercase + string.ascii_lowercase\n    labels = {n: letters[self._labels[n]] for n in self._graph.nodes()}\n    node_list = list(self._graph.nodes())\n    colors = []\n    for n in node_list:\n      if n == self.position:\n        colors.append('lightblue')\n      elif n == self.goal:\n        colors.append('lightgreen')\n      else:\n        colors.append('pink')\n    nx.draw(self._graph, pos=node_positions, nodelist=node_list, ax=ax,\n            node_color=colors, with_labels=True, node_size=200, labels=labels)\n    ax.set_title('{}\\nEpisode reward={:.1f}'.format(\n        self.previous_action, self.episode_reward))\n    ax.margins(.1)\n    return plt.gcf(), ax\n"
  },
  {
    "path": "rapid_task_solving/one_shot_streetlearn.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"One-shot StreetLearn environment.\"\"\"\n\nimport dm_env\nimport matplotlib.pyplot as plt\nimport networkx as nx\nimport numpy as np\n\n\ndef deg_to_rad(x):\n  \"\"\"Convert degrees to radians.\"\"\"\n  return x / 180. * np.pi\n\n\ndef rad_to_deg(x):\n  \"\"\"Convert radians to degrees.\"\"\"\n  return x * 180. / np.pi\n\n\nclass OneShotStreetLearn(dm_env.Environment):\n  \"\"\"One-shot Streetlearn environment.\"\"\"\n\n  ACTION_NAMES = [\n      'Forward',\n      'Left',\n      'Right',\n      'Collect',\n  ]\n  NUM_ACTIONS = len(ACTION_NAMES)\n\n  def __init__(self, dataset_path, max_episode_steps, num_junctions=8,\n               target_reward=1., per_step_reward=0., observation_length=60,\n               seed=None):\n    self._graph = nx.read_gexf(dataset_path)\n    self._node_attrs = self._graph.nodes(data=True)\n    self._num_junctions = num_junctions\n    self._observation_length = observation_length\n    self._max_episode_steps = max_episode_steps\n    self._target_reward = target_reward\n    self._per_step_reward = per_step_reward\n    self._rng = np.random.RandomState(seed)\n    self.reset()\n\n  def reset(self):\n    self._previous_action = ''\n    self._episode_reward = 0.\n    self._episode_steps = 0\n    self._needs_reset = False\n    self._subgraph = self.get_random_subgraph()\n    self._observation_map = self.randomize_observations(self._subgraph)\n    self._position = self._rng.choice(list(self._subgraph.nodes()))\n    neighbours = self._neighbors_bearings(self._subgraph, self._position)\n    self._neighbour = neighbours[self._rng.randint(len(neighbours))]\n    self._set_new_goal()\n    return dm_env.restart(self._observation())\n\n  @property\n  def _current_edge(self):\n    return (self._position, self._neighbour['neighbour'])\n\n  def _set_new_goal(self):\n    goal = None\n    edges = list(self._observation_map.keys())\n    while goal is None or goal == self._current_edge:\n      goal = edges[self._rng.randint(len(edges))]\n    self._goal = goal\n\n  def _one_hot(self, edge):\n    one_hot_vector = np.zeros([self._observation_length], dtype=np.int32)\n    one_hot_vector[self._observation_map[edge]] = 1\n    return one_hot_vector\n\n  def _observation(self):\n    return {\n        'position': np.array(self._one_hot(self._current_edge), dtype=np.int32),\n        'goal': np.array(self._one_hot(self._goal), dtype=np.int32),\n    }\n\n  def observation_spec(self):\n    return {\n        'position': dm_env.specs.Array(\n            shape=(self._observation_length,), dtype=np.int32, name='position'),\n        'goal': dm_env.specs.Array(\n            shape=(self._observation_length,), dtype=np.int32, name='goal'),\n    }\n\n  def action_spec(self):\n    return dm_env.specs.DiscreteArray(self.NUM_ACTIONS)\n\n  def step(self, action):\n    # If previous step was the last step of an episode, reset.\n    if self._needs_reset:\n      return self.reset()\n\n    # Increment step count and check if it's the last step of the episode.\n    self._episode_steps += 1\n    if self._episode_steps >= self._max_episode_steps:\n      self._needs_reset = True\n      transition = dm_env.termination\n    else:\n      transition = dm_env.transition\n\n    # Recompute agent's position\n    self._move(action)\n    self._previous_action = self.ACTION_NAMES[action]\n\n    # Get reward if agent is at the goal location and the selected action is\n    # `collect`.\n    if (self._current_edge == self._goal and\n        self.ACTION_NAMES[action] == 'Collect'):\n      reward = self._target_reward\n      self._set_new_goal()\n    else:\n      reward = self._per_step_reward\n    self._episode_reward += reward\n\n    return transition(reward, self._observation())\n\n  def randomize_observations(self, subgraph):\n    edges = list(subgraph.edges())\n    edges.extend([(y, x) for (x, y) in edges])\n    obs_permutation = self._rng.permutation(self._observation_length)\n    return {e: obs_permutation[i] for i, e in enumerate(edges)}\n\n  def _calculate_bearing(self, node, neighbor):\n    lat1 = deg_to_rad(self._node_attrs[node]['lat'])\n    lng1 = deg_to_rad(self._node_attrs[node]['lng'])\n    lat2 = deg_to_rad(self._node_attrs[neighbor]['lat'])\n    lng2 = deg_to_rad(self._node_attrs[neighbor]['lng'])\n    delta_lng = lng2 - lng1\n    theta = np.arctan2(\n        np.sin(delta_lng) * np.cos(lat2),\n        np.cos(lat1) * np.sin(lat2) -\n        np.sin(lat1) * np.cos(lat2) * np.cos(delta_lng))\n    return theta\n\n  def _neighbors_bearings(self, subgraph, node):\n    bearings = []\n    for neighbor in list(subgraph[node]):\n      orientation = self._calculate_bearing(node, neighbor)\n      bearings.append({'neighbour': neighbor, 'orientation': orientation})\n    bearings.sort(key=lambda x: x['orientation'])\n    return bearings\n\n  def _sort_neighbors(self, node, neighbour):\n    bearings = self._neighbors_bearings(self._subgraph, node)\n    bs = [x['orientation'] for x in bearings]\n    idx = np.argmin(np.abs(bs - neighbour['orientation']))\n    return {\n        'forward': bearings[idx],\n        'right': bearings[idx-1],\n        'left': bearings[(idx+1) % len(bearings)],\n    }\n\n  def _move(self, action):\n    neighbours = self._sort_neighbors(self._position, self._neighbour)\n    if action == 0:\n      new_node = self._neighbour['neighbour']\n      neighbours = self._sort_neighbors(new_node, neighbours['forward'])\n      new_neighbour = neighbours['forward']\n    else:\n      new_node = self._position\n      if action == 1:\n        new_neighbour = neighbours['left']\n      elif action == 2:\n        new_neighbour = neighbours['right']\n      else:\n        new_neighbour = self._neighbour\n    self._position = new_node\n    self._neighbour = new_neighbour\n\n  def _all_next_junctions(self, subgraph, node):\n    neighbors = list(subgraph[node])\n    edges = [self._get_next_junction(subgraph, node, nb) for nb in neighbors]\n    nodes = [y for (_, y) in edges]\n    return nodes, edges\n\n  def _get_next_junction(self, subgraph, initial_node, next_node):\n    node = initial_node\n    while subgraph.degree(next_node) == 2:\n      neighbours = list(subgraph.neighbors(next_node))\n      neighbours.remove(node)\n      node = next_node\n      next_node = neighbours.pop()\n    return (initial_node, next_node)\n\n  def get_random_subgraph(self):\n    graph = self._graph\n    num_nodes = len(graph)\n    rnd_index = self._rng.randint(num_nodes)\n    center_node = list(graph.nodes())[rnd_index]\n    while graph.degree(center_node) <= 2:\n      rnd_index = self._rng.randint(num_nodes)\n      center_node = list(graph.nodes())[rnd_index]\n    to_visit = [center_node]\n    visited = []\n    subgraph = nx.Graph()\n    while to_visit:\n      node = to_visit.pop(0)\n      visited.append(node)\n      new_nodes, new_edges = self._all_next_junctions(graph, node)\n      subgraph.add_edges_from(new_edges)\n      node_degrees = [subgraph.degree(n) for n in subgraph.nodes()]\n      count_junctions = len(list(filter(lambda x: x > 2, node_degrees)))\n      if count_junctions >= self._num_junctions:\n        break\n      new_nodes = filter(lambda x: x not in visited + to_visit, new_nodes)\n      to_visit.extend(new_nodes)\n    return subgraph\n\n  def draw_subgraph(self, ax=None):\n    if ax is None:\n      _ = plt.figure(figsize=(3, 3))\n      ax = plt.gca()\n    node_ids = list(self._subgraph.nodes())\n    pos = {\n        x: (self._node_attrs[x]['lat'], self._node_attrs[x]['lng'])\n        for x in node_ids\n    }\n    labels = {}\n    nc = 'pink'\n    ec = 'black'\n    ns = 50\n    nshape = 'o'\n    # Draw the current subgraph\n    nx.draw(self._subgraph, pos=pos, node_color=nc, with_labels=False,\n            node_size=ns, labels=labels, edgecolors=ec, node_shape=nshape,\n            ax=ax)\n    max_xy = np.array([np.array(x) for x in pos.values()]).max(0)\n    min_xy = np.array([np.array(x) for x in pos.values()]).min(0)\n    delta_xy = (max_xy - min_xy) / 6.\n    ax.set_xlim([min_xy[0] - delta_xy[0], max_xy[0] + delta_xy[0]])\n    ax.set_ylim([min_xy[1] - delta_xy[1], max_xy[1] + delta_xy[1]])\n    # Draw goal position and orientation\n    x = self._node_attrs[self._goal[0]]['lat']\n    y = self._node_attrs[self._goal[0]]['lng']\n    rotation = rad_to_deg(self._calculate_bearing(*self._goal))\n    _ = ax.plot(x, y, marker=(3, 0, rotation - 90), color=(0, 0, 0),\n                markersize=14, markerfacecolor='white')\n    _ = ax.plot(x, y, marker=(2, 0, rotation - 90), color=(0, 0, 0),\n                markersize=12, markerfacecolor='None')\n    # Draw current position and orientation\n    x = self._node_attrs[self._position]['lat']\n    y = self._node_attrs[self._position]['lng']\n    rotation = rad_to_deg(self._neighbour['orientation'])\n    _ = ax.plot(x, y, marker=(3, 0, rotation - 90), color=(0, 0, 0),\n                markersize=14, markerfacecolor='lightgreen')\n    _ = ax.plot(x, y, marker=(2, 0, rotation - 90), color=(0, 0, 0),\n                markersize=12, markerfacecolor='None')\n    ax.set_title('{}\\nEpisode reward = {}'.format(\n        self._previous_action, self._episode_reward))\n    return plt.gcf(), ax\n"
  },
  {
    "path": "rapid_task_solving/requirements.txt",
    "content": "dm-env>=1.2\ndm-haiku>=0.0.3\njax>=0.2.8\nmatplotlib>=3.1.2\nnetworkx>=2.3\nnumpy>=1.18.0\n"
  },
  {
    "path": "regal/README.md",
    "content": "# REGAL\n\nThis dataset contains dataflow computational graphs generated procedurally,\nintended for training and evaluating algorithms that optimize execution (e.g.\nplacement and scheduling), in\n[TensorFlow's CostGraphDef](https://github.com/tensorflow/tensorflow/blob/59ee7f9138482d85cd93c004aca961bea35820c7/tensorflow/core/framework/cost_graph.proto#L12)\n[protocol buffer](https://en.wikipedia.org/wiki/Protocol_Buffers) format and\nencoded as\n[text](https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.text_format).\n\nOriginal paper\n[REGAL: Transfer Learning For Fast Optimization of Computation Graphs](https://arxiv.org/abs/1905.02494)\n(Paliwal, Gimeno, Nair, Li, Lubin, Kohli, Vinyals)\n\n## Folder structure\n\nThere are 10000 training graphs, 1000 validation graphs and 1000 test graphs.\nThe file names follow the format of \"graph_\" plus a hash of the graph topology\nplus \".pbtxt\".\n\n## Filtering\n\nFor each set (train, valid, test) there are not two graphs with the same\ntopology. We used the Biased Random Key Genetic Algorithm (BRKGA) to filter out\ngraphs that did not have \"room for improvement\"\n\n\"Room for improvement\" was defined as the union of two conditions:\n\n*   if BRKGA with a low fitness evaluation limit (number of calls to fitness\n    function) did not fit the hardware constraints and BRKGA with a high number\n    did.\n*   if BRKGA with a high fitness evaluation limit was 20% faster in running time\n    that BRKGA with a low number.\n\n## Example Graph\n\n```protobuf\nnode {\n  name: \"_SOURCE\"\n}\nnode {\n  name: \"node_0\"\n  id: 1\n  control_input: 0\n}\nnode {\n  name: \"node_1\"\n  id: 2\n  output_info {\n    size: 70\n    alias_input_port: -1\n  }\n  control_input: 0\n  compute_cost: 58\n}\nnode {\n  name: \"node_2\"\n  id: 3\n  output_info {\n    size: 52\n    alias_input_port: -1\n  }\n  control_input: 0\n  compute_cost: 47\n}\nnode {\n  name: \"node_3\"\n  id: 4\n  input_info {\n    preceding_node: 2\n  }\n  output_info {\n    size: 55\n    alias_input_port: -1\n  }\n  control_input: 0\n  compute_cost: 58\n}\n```\n\n## Dataset Location\n\nThe dataset is available in the following\n[link](https://storage.googleapis.com/synthetic-graphs-dataset/synthetic-graphs.tar.gz)\n\n## Dataset Metadata\n\nThe following table is necessary for this dataset to be indexed by search\nengines such as <a href=\"https://g.co/datasetsearch\">Google Dataset Search</a>.\n<div itemscope itemtype=\"http://schema.org/Dataset\">\n<table>\n  <tr>\n    <th>property</th>\n    <th>value</th>\n  </tr>\n  <tr>\n    <td>name</td>\n    <td><code itemprop=\"name\">REGAL CostGraphDef Synthetic Dataset</code></td>\n  </tr>\n  <tr>\n    <td>url</td>\n    <td><code itemprop=\"url\">https://github.com/deepmind/deepmind-research/tree/master/regal</code></td>\n  </tr>\n  <tr>\n    <td>sameAs</td>\n    <td><code itemprop=\"sameAs\">https://github.com/deepmind/deepmind-research/tree/master/regal</code></td>\n  </tr>\n  <tr>\n    <td>description</td>\n    <td><code itemprop=\"description\">\n      This dataset contains dataflow computational graphs generated\n      procedurally, intended for training and evaluating algorithms that\n      optimize execution (e.g. placement and scheduling), in\n      [TensorFlow's CostGraphDef](https://github.com/tensorflow/tensorflow/blob/59ee7f9138482d85cd93c004aca961bea35820c7/tensorflow/core/framework/cost_graph.proto#L12)\n      [protocol buffer](https://en.wikipedia.org/wiki/Protocol_Buffers)\n      format and encoded as\n      [text](https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.text_format).\n      </code></td>\n  </tr>\n  <tr>\n    <td>provider</td>\n    <td>\n      <div itemscope itemtype=\"http://schema.org/Organization\" itemprop=\"provider\">\n        <table>\n          <tr>\n            <th>property</th>\n            <th>value</th>\n          </tr>\n          <tr>\n            <td>name</td>\n            <td><code itemprop=\"name\">DeepMind</code></td>\n          </tr>\n          <tr>\n            <td>sameAs</td>\n            <td><code itemprop=\"sameAs\">https://en.wikipedia.org/wiki/DeepMind</code></td>\n          </tr>\n        </table>\n      </div>\n    </td>\n  </tr>\n  <tr>\n    <td>citation</td>\n    <td><code itemprop=\"citation\">https://identifiers.org/arxiv:1905.02494</code></td>\n  </tr>\n</table>\n</div>\n\n## Disclaimer\n\nThis is not an officially supported Google product.\n"
  },
  {
    "path": "rl_unplugged/README.md",
    "content": "<img src=\"./images/tasks.png\" width=\"50%\">\n\n# RL Unplugged: Benchmarks for Offline Reinforcement Learning\n\nRL Unplugged is suite of benchmarks for offline reinforcement learning. The RL\nUnplugged is designed around the following considerations: to facilitate ease of\nuse, we provide the datasets with a unified API which makes it easy for the\npractitioner to work with all data in the suite once a general pipeline has been\nestablished. This is a dataset accompanying the paper\n[RL Unplugged: Benchmarks for Offline Reinforcement Learning]([https://arxiv.org/abs/2006.13888]).\n\nIn this suite of benchmarks, we try to focus on the following problems:\n\n-   High dimensional action spaces, for example the locomotion humanoid domains,\n    we have 56 dimensional actions.\n\n-   High dimensional observations.\n\n-   Partial observability, observations have egocentric vision.\n\n-   Difficulty of exploration, using states of the art algorithms and imitation\n    to generate data for difficult environments.\n\n-   Real world challenges.\n\nThe data is available under\n[RL Unplugged GCP bucket](https://console.cloud.google.com/storage/browser/rl_unplugged).\n\n## Atari Dataset\n\nWe are releasing a large and diverse dataset of gameplay following the protocol\ndescribed by [Agarwal et al., 2020], which can be used to evaluate several\ndiscrete offline RL algorithms. The dataset is generated by running an online\nDQN agent and recording transitions from its replay during training with sticky\nactions [Machado et al., 2018]. As stated in [Agarwal et al., 2020], for each\ngame we use data from five runs with 50 million transitions each. States in each\ntransition include stacks of four frames to be able to do frame-stacking with\nour baselines. We release datasets for 46 Atari games. For details on how the\ndataset was generated, please refer to the paper.\n\nAtari is a standard RL benchmark. We recommend you to try offline RL methods\non Atari if you are interested in comparing your approach to other state of the\nart offline RL methods with discrete actions.\n\n\n## DeepMind Locomotion Dataset\n\nThese tasks are made up of the corridor locomotion tasks involving the CMU\nHumanoid, for which prior efforts have either used motion capture data [Merel et\nal., 2019a], [Merel et al., 2019b] or training from scratch [Song et al., 2020].\nIn addition, the DM Locomotion repository contains a set of tasks adapted to be\nsuited to a virtual rodent [Merel et al., 2020]. We emphasize that the DM\nLocomotion tasks feature the combination of challenging high-DoF continuous\ncontrol along with perception from rich egocentric observations. For details on\nhow the dataset was generated, please refer to the paper.\n\nWe recommend you to try offline RL methods on DeepMind Locomotion dataset, if\nyou are interested in very challenging offline RL dataset with continuous\naction space.\n\n## DeepMind Control Suite Dataset\n\nDeepMind Control Suite [Tassa et al., 2018] is a set of control tasks\nimplemented in MuJoCo [Todorov et al., 2012]. We consider a subset of the tasks\nprovided in the suite that cover a wide range of difficulties.\n\nMost of the datasets in this domain are generated using D4PG. For the\nenvironments Manipulator insert ball and Manipulator insert peg we use V-MPO\n[Song et al., 2020] to generate the data as D4PG is unable to solve these tasks.\nWe release datasets for 9 control suite tasks. For details on how the dataset\nwas generated, please refer to the paper.\n\nDeepMind Control Suite is a traditional continuous action RL benchmark. In\nparticular, we recommend you test your approach in DeepMind Control Suite if\nyou are interested in comparing against other state of the art offline RL\nmethods.\n\n## Realworld RL Dataset\n\nExamples in the dataset represent SARS transitions stored when running a\npartially online trained agent as described in\n[RWRL](https://arxiv.org/abs/2003.11881).\n\nWe release 8 datasets in total -- with no combined challenge and easy combined\nchallenge on the cartpole, walker, quadruped, and humanoid tasks. For details on\nhow the dataset was generated, please refer to the paper.\n\n## DeepMind Lab Dataset\n\nDeepMind Lab dataset has several levels from the challenging, partially\nobservable [Deepmind Lab suite](https://github.com/deepmind/lab). DeepMind Lab\ndataset is collected by training distributed R2D2 by [Kapturowski et al., 2018]\nagents from scratch on individual tasks. We recorded the experience across all\nactors during entire training runs a few times for every task. The details of\nthe dataset generation process is described in [Gulcehre et al., 2021].\n\nWe release datasets for five different DeepMind Lab levels: `seekavoid_arena_01`,\n`explore_rewards_few`, `explore_rewards_many`, `rooms_watermaze`,\n`rooms_select_nonmatching_object`. We also release the snapshot datasets for\n`seekavoid_arena_01` level that we generated the datasets from a trained R2D2\nsnapshot with different levels of epsilons for the epsilon-greedy algorithm\nwhen evaluating the agent in the environment.\n\nDeepMind Lab dataset is fairly large-scale. We recommend you to try it if you\nare interested in large-scale offline RL models with memory.\n\n## bsuite Dataset\n\n[bsuite](https://github.com/deepmind/bsuite) data was collected by training DQN\nagents with the default setting in [Acme](https://github.com/deepmind/acme) from\nscratch in each one of the following three tasks: cartpole, catch, and\nmountain_car.\n\nWe converted the originally deterministic environments into stochastic ones by\nrandomly replacing the agent action with a uniformly sampled action with a\nprobability  of {0, 0.1, 0.2, 0.3, 0.4, 0.5}. In this case, probability of 0\ncorresponds to original environment.  The details of\nthe dataset generation process is described in [Gulcehre et al., 2021].\n\nbsuite datasets are fairly light-weight and running experiments doesn't require\ntoo much compute. We recommend you to try bsuite, if you are interested in\nsmall-scale and easy to run offline RL datasets generated by stochastic\nenvironments where the stochasticity of the environment is easy to control.\n\n## Running the code\n\n### Installation\n\n* Install dependencies: `pip install -r requirements.txt`\n* (Optional) Setup MuJoCo license key for DM Control environments\n([instructions](https://github.com/deepmind/dm_control#requirements-and-installation)).\n* (Optional) Install\n[realworldrl_suite](https://github.com/google-research/realworldrl_suite#installation).\n\n### Atari example\n\n```\nmkdir -p /tmp/dataset/Asterix\ngsutil cp gs://rl_unplugged/atari/Asterix/run_1-00000-of-00100 \\\n    /tmp/dataset/Asterix/run_1-00000-of-00001\npython atari_example.py --path=/tmp/dataset --game=Asterix\n```\n\nThis copies a single shard from one of the Asterix datasets from GCP to a local\nfolder, and then runs a script that loads a single example and runs a step on\nthe Atari environment.\n\n## Citation\n\nPlease use the following bibtex for citations:\n\n```\n@misc{gulcehre2020rl,\n    title={RL Unplugged: Benchmarks for Offline Reinforcement Learning},\n    author={Caglar Gulcehre and Ziyu Wang and Alexander Novikov and Tom Le Paine\n        and  Sergio Gómez Colmenarejo and Konrad Zolna and Rishabh Agarwal and\n        Josh Merel and Daniel Mankowitz and Cosmin Paduraru and Gabriel\n        Dulac-Arnold and Jerry Li and Mohammad Norouzi and Matt Hoffman and\n        Ofir Nachum and George Tucker and Nicolas Heess and Nando deFreitas},\n    year={2020},\n    eprint={2006.13888},\n    archivePrefix={arXiv},\n    primaryClass={cs.LG}\n}\n```\n\n# Dataset Metadata\n\nThe following table is necessary for this dataset to be indexed by search\nengines such as <a href=\"https://g.co/datasetsearch\">Google Dataset Search</a>.\n<div itemscope itemtype=\"http://schema.org/Dataset\">\n<table>\n  <tr>\n    <th>property</th>\n    <th>value</th>\n  </tr>\n  <tr>\n    <td>name</td>\n    <td><code itemprop=\"name\">RL Unplugged</code></td>\n  </tr>\n  <tr>\n    <td>url</td>\n    <td><code itemprop=\"url\">https://github.com/deepmind/deepmind-research/tree/master/rl_unplugged</code></td>\n  </tr>\n  <tr>\n    <td>sameAs</td>\n    <td><code itemprop=\"sameAs\">https://github.com/deepmind/deepmind-research/tree/master/rl_unplugged</code></td>\n  </tr>\n  <tr>\n    <td>description</td>\n    <td><code itemprop=\"description\">\n      Data accompanying\n[RL Unplugged: Benchmarks for Offline Reinforcement Learning]().\n      </code></td>\n  </tr>\n  <tr>\n    <td>provider</td>\n    <td>\n      <div itemscope itemtype=\"http://schema.org/Organization\" itemprop=\"provider\">\n        <table>\n          <tr>\n            <th>property</th>\n            <th>value</th>\n          </tr>\n          <tr>\n            <td>name</td>\n            <td><code itemprop=\"name\">DeepMind</code></td>\n          </tr>\n          <tr>\n            <td>sameAs</td>\n            <td><code itemprop=\"sameAs\">https://en.wikipedia.org/wiki/DeepMind</code></td>\n          </tr>\n        </table>\n      </div>\n    </td>\n  </tr>\n  <tr>\n    <td>citation</td>\n    <td><code itemprop=\"citation\">https://identifiers.org/arxiv:2006.13888</code></td>\n  </tr>\n</table>\n</div>\n\n[Agarwal et al., 2020]: https://arxiv.org/abs/1907.04543\n[Machado et al., 2018]: https://arxiv.org/abs/1709.06009\n[Merel et al., 2019a]: https://arxiv.org/abs/1811.09656\n[Merel et al., 2019b]: https://arxiv.org/abs/1811.11711\n[Merel et al., 2020]: https://arxiv.org/abs/1911.09451\n[Song et al., 2020]: https://arxiv.org/abs/1909.12238\n[Tassa et al., 2018]: https://arxiv.org/abs/1801.00690\n[Todorov et al., 2012]: https://homes.cs.washington.edu/~todorov/papers/TodorovIROS12.pdf\n[Kapturowski et al., 2018]: https://openreview.net/forum?id=r1lyTjAqYX\n[Gulcehre et al., 2021]: https://arxiv.org/abs/2103.09575\n"
  },
  {
    "path": "rl_unplugged/atari.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Atari RL Unplugged datasets.\n\nExamples in the dataset represent SARSA transitions stored during a\nDQN training run as described in https://arxiv.org/pdf/1907.04543.\n\nFor every training run we have recorded all 50 million transitions corresponding\nto 200 million environment steps (4x factor because of frame skipping). There\nare 5 separate datasets for each of the 45 games.\n\nEvery transition in the dataset is a tuple containing the following features:\n\n* o_t: Observation at time t. Observations have been processed using the\n    canonical Atari frame processing, including 4x frame stacking. The shape\n    of a single observation is [84, 84, 4].\n* a_t: Action taken at time t.\n* r_t: Reward after a_t.\n* d_t: Discount after a_t.\n* o_tp1: Observation at time t+1.\n* a_tp1: Action at time t+1.\n* extras:\n  * episode_id: Episode identifier.\n  * episode_return: Total episode return computed using per-step [-1, 1]\n      clipping.\n\"\"\"\nimport functools\nimport os\nfrom typing import Dict\n\nfrom acme import wrappers\nimport dm_env\nfrom dm_env import specs\nfrom dopamine.discrete_domains import atari_lib\nimport reverb\nimport tensorflow as tf\n\n\n# 9 tuning games.\nTUNING_SUITE = [\n    'BeamRider',\n    'DemonAttack',\n    'DoubleDunk',\n    'IceHockey',\n    'MsPacman',\n    'Pooyan',\n    'RoadRunner',\n    'Robotank',\n    'Zaxxon',\n]\n\n# 36 testing games.\nTESTING_SUITE = [\n    'Alien',\n    'Amidar',\n    'Assault',\n    'Asterix',\n    'Atlantis',\n    'BankHeist',\n    'BattleZone',\n    'Boxing',\n    'Breakout',\n    'Carnival',\n    'Centipede',\n    'ChopperCommand',\n    'CrazyClimber',\n    'Enduro',\n    'FishingDerby',\n    'Freeway',\n    'Frostbite',\n    'Gopher',\n    'Gravitar',\n    'Hero',\n    'Jamesbond',\n    'Kangaroo',\n    'Krull',\n    'KungFuMaster',\n    'NameThisGame',\n    'Phoenix',\n    'Pong',\n    'Qbert',\n    'Riverraid',\n    'Seaquest',\n    'SpaceInvaders',\n    'StarGunner',\n    'TimePilot',\n    'UpNDown',\n    'VideoPinball',\n    'WizardOfWor',\n    'YarsRevenge',\n]\n\n# Total of 45 games.\nALL = TUNING_SUITE + TESTING_SUITE\n\n\ndef _decode_frames(pngs: tf.Tensor):\n  \"\"\"Decode PNGs.\n\n  Args:\n    pngs: String Tensor of size (4,) containing PNG encoded images.\n\n  Returns:\n    4 84x84 grayscale images packed in a (84, 84, 4) uint8 Tensor.\n  \"\"\"\n  # Statically unroll png decoding\n  frames = [tf.image.decode_png(pngs[i], channels=1) for i in range(4)]\n  frames = tf.concat(frames, axis=2)\n  frames.set_shape((84, 84, 4))\n  return frames\n\n\ndef _make_reverb_sample(o_t: tf.Tensor,\n                        a_t: tf.Tensor,\n                        r_t: tf.Tensor,\n                        d_t: tf.Tensor,\n                        o_tp1: tf.Tensor,\n                        a_tp1: tf.Tensor,\n                        extras: Dict[str, tf.Tensor]) -> reverb.ReplaySample:\n  \"\"\"Create Reverb sample with offline data.\n\n  Args:\n    o_t: Observation at time t.\n    a_t: Action at time t.\n    r_t: Reward at time t.\n    d_t: Discount at time t.\n    o_tp1: Observation at time t+1.\n    a_tp1: Action at time t+1.\n    extras: Dictionary with extra features.\n\n  Returns:\n    Replay sample with fake info: key=0, probability=1, table_size=0.\n  \"\"\"\n  info = reverb.SampleInfo(\n      key=tf.constant(0, tf.uint64),\n      probability=tf.constant(1.0, tf.float64),\n      table_size=tf.constant(0, tf.int64),\n      priority=tf.constant(1.0, tf.float64),\n      times_sampled=tf.constant(1, tf.int32))\n  data = (o_t, a_t, r_t, d_t, o_tp1, a_tp1, extras)\n  return reverb.ReplaySample(info=info, data=data)\n\n\ndef _tf_example_to_reverb_sample(tf_example: tf.train.Example\n                                 ) -> reverb.ReplaySample:\n  \"\"\"Create a Reverb replay sample from a TF example.\"\"\"\n\n  # Parse tf.Example.\n  feature_description = {\n      'o_t': tf.io.FixedLenFeature([4], tf.string),\n      'o_tp1': tf.io.FixedLenFeature([4], tf.string),\n      'a_t': tf.io.FixedLenFeature([], tf.int64),\n      'a_tp1': tf.io.FixedLenFeature([], tf.int64),\n      'r_t': tf.io.FixedLenFeature([], tf.float32),\n      'd_t': tf.io.FixedLenFeature([], tf.float32),\n      'episode_id': tf.io.FixedLenFeature([], tf.int64),\n      'episode_return': tf.io.FixedLenFeature([], tf.float32),\n  }\n  data = tf.io.parse_single_example(tf_example, feature_description)\n\n  # Process data.\n  o_t = _decode_frames(data['o_t'])\n  o_tp1 = _decode_frames(data['o_tp1'])\n  a_t = tf.cast(data['a_t'], tf.int32)\n  a_tp1 = tf.cast(data['a_tp1'], tf.int32)\n  episode_id = tf.bitcast(data['episode_id'], tf.uint64)\n\n  # Build Reverb replay sample.\n  extras = {\n      'episode_id': episode_id,\n      'return': data['episode_return']\n  }\n  return _make_reverb_sample(o_t, a_t, data['r_t'], data['d_t'], o_tp1, a_tp1,\n                             extras)\n\n\ndef dataset(path: str,\n            game: str,\n            run: int,\n            num_shards: int = 100,\n            shuffle_buffer_size: int = 100000) -> tf.data.Dataset:\n  \"\"\"TF dataset of Atari SARSA tuples.\"\"\"\n  path = os.path.join(path, f'{game}/run_{run}')\n  filenames = [f'{path}-{i:05d}-of-{num_shards:05d}' for i in range(num_shards)]\n  file_ds = tf.data.Dataset.from_tensor_slices(filenames)\n  file_ds = file_ds.repeat().shuffle(num_shards)\n  example_ds = file_ds.interleave(\n      functools.partial(tf.data.TFRecordDataset, compression_type='GZIP'),\n      cycle_length=tf.data.experimental.AUTOTUNE,\n      block_length=5)\n  example_ds = example_ds.shuffle(shuffle_buffer_size)\n  return example_ds.map(_tf_example_to_reverb_sample,\n                        num_parallel_calls=tf.data.experimental.AUTOTUNE)\n\n\nclass AtariDopamineWrapper(dm_env.Environment):\n  \"\"\"Wrapper for Atari Dopamine environmnet.\"\"\"\n\n  def __init__(self, env, max_episode_steps=108000):\n    self._env = env\n    self._max_episode_steps = max_episode_steps\n    self._episode_steps = 0\n    self._reset_next_episode = True\n\n  def reset(self):\n    self._episode_steps = 0\n    self._reset_next_step = False\n    observation = self._env.reset()\n    return dm_env.restart(observation.squeeze(-1))\n\n  def step(self, action):\n    if self._reset_next_step:\n      return self.reset()\n\n    observation, reward, terminal, _ = self._env.step(action.item())\n    observation = observation.squeeze(-1)\n    discount = 1 - float(terminal)\n    self._episode_steps += 1\n    if terminal:\n      self._reset_next_episode = True\n      return dm_env.termination(reward, observation)\n    elif self._episode_steps == self._max_episode_steps:\n      self._reset_next_episode = True\n      return dm_env.truncation(reward, observation, discount)\n    else:\n      return dm_env.transition(reward, observation, discount)\n\n  def observation_spec(self):\n    space = self._env.observation_space\n    return specs.Array(space.shape[:-1], space.dtype)\n\n  def action_spec(self):\n    return specs.DiscreteArray(self._env.action_space.n)\n\n\ndef environment(game: str) -> dm_env.Environment:\n  \"\"\"Atari environment.\"\"\"\n  env = atari_lib.create_atari_environment(game_name=game,\n                                           sticky_actions=True)\n  env = AtariDopamineWrapper(env)\n  env = wrappers.FrameStackingWrapper(env, num_frames=4)\n  return wrappers.SinglePrecisionWrapper(env)\n"
  },
  {
    "path": "rl_unplugged/atari_dqn.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"KDiJzbb8KFvP\"\n      },\n      \"source\": [\n        \"Copyright 2020 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n\",\n        \"this file except in compliance with the License. You may obtain a copy of the\\n\",\n        \"License at\\n\",\n        \"\\n\",\n        \"[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software distributed\\n\",\n        \"under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR\\n\",\n        \"CONDITIONS OF ANY KIND, either express or implied. See the License for the\\n\",\n        \"specific language governing permissions and limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"ULdrhOaVbsdO\"\n      },\n      \"source\": [\n        \"# RL Unplugged: Offline DQN - Atari\\n\",\n        \"## Guide to  training an Acme DQN agent on Atari data.\\n\",\n        \"# \\u003ca href=\\\"https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/rl_unplugged/atari_dqn.ipynb\\\" target=\\\"_parent\\\"\\u003e\\u003cimg src=\\\"https://colab.research.google.com/assets/colab-badge.svg\\\" alt=\\\"Open In Colab\\\"/\\u003e\\u003c/a\\u003e\\n\",\n        \"\\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"xaJxoatMhJ71\"\n      },\n      \"source\": [\n        \"## Installation\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"both\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"KH3O0zcXUeun\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!pip install dm-acme\\n\",\n        \"!pip install dm-acme[reverb]\\n\",\n        \"!pip install dm-acme[tf]\\n\",\n        \"!pip install dm-sonnet\\n\",\n        \"!pip install dopamine-rl==3.1.2\\n\",\n        \"!pip install atari-py\\n\",\n        \"!git clone https://github.com/deepmind/deepmind-research.git\\n\",\n        \"%cd deepmind-research\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"c-H2d6UZi7Sf\"\n      },\n      \"source\": [\n        \"## Imports\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"both\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"HJ74Id-8MERq\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"import copy\\n\",\n        \"\\n\",\n        \"import acme\\n\",\n        \"from acme.agents.tf import actors\\n\",\n        \"from acme.agents.tf.dqn import learning as dqn\\n\",\n        \"from acme.tf import utils as acme_utils\\n\",\n        \"from acme.utils import loggers\\n\",\n        \"from rl_unplugged import atari\\n\",\n        \"import sonnet as snt\\n\",\n        \"import tensorflow as tf\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"JrOSnoWiY4Xl\"\n      },\n      \"source\": [\n        \"## Data\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"Vi3_H_h1zy_0\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"game = 'Pong' #@param\\n\",\n        \"run = 1  #@param\\n\",\n        \"\\n\",\n        \"tmp_path = '/tmp/atari'\\n\",\n        \"gs_path = 'gs://rl_unplugged/atari'\\n\",\n        \"\\n\",\n        \"!mkdir -p {tmp_path}/{game}\\n\",\n        \"\\n\",\n        \"src = f'{gs_path}/{game}/run_{run}-00000-of-00100'\\n\",\n        \"dest = f'{tmp_path}/{game}/run_{run}-00000-of-00001'\\n\",\n        \"!gsutil cp {src} {dest}\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"a9vF7LtYvLzy\"\n      },\n      \"source\": [\n        \"## Dataset and environment\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"01AHHNd9cEX2\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"batch_size = 10  #@param\\n\",\n        \"\\n\",\n        \"def discard_extras(sample):\\n\",\n        \"  return sample._replace(data=sample.data[:5])\\n\",\n        \"\\n\",\n        \"dataset = atari.dataset(path=tmp_path, game='Pong', run=1, num_shards=1)\\n\",\n        \"# Small batch size, experiments in the paper were run with batch size 256.\\n\",\n        \"dataset = dataset.map(discard_extras).batch(batch_size)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"KoYBhjPtI_N6\"\n      },\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"4b4_rHwCmQg-\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"environment = atari.environment(game='Pong')\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"BukOfOsmtSQn\"\n      },\n      \"source\": [\n        \"## DQN learner\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 34\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 83,\n          \"status\": \"ok\",\n          \"timestamp\": 1593614657342,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"3Jcjk1w6oHVX\",\n        \"outputId\": \"1746b0bb-5a5c-45dd-b5a1-c77852545e12\"\n      },\n      \"outputs\": [\n        {\n          \"data\": {\n            \"text/plain\": [\n              \"TensorSpec(shape=(6,), dtype=tf.float32, name=None)\"\n            ]\n          },\n          \"execution_count\": 20,\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"output_type\": \"execute_result\"\n        }\n      ],\n      \"source\": [\n        \"# Get total number of actions.\\n\",\n        \"num_actions = environment.action_spec().num_values\\n\",\n        \"\\n\",\n        \"# Create the Q network.\\n\",\n        \"network = snt.Sequential([\\n\",\n        \"    lambda x: tf.image.convert_image_dtype(x, tf.float32),\\n\",\n        \"    snt.Conv2D(32, [8, 8], [4, 4]),\\n\",\n        \"    tf.nn.relu,\\n\",\n        \"    snt.Conv2D(64, [4, 4], [2, 2]),\\n\",\n        \"    tf.nn.relu,\\n\",\n        \"    snt.Conv2D(64, [3, 3], [1, 1]),\\n\",\n        \"    tf.nn.relu,\\n\",\n        \"    snt.Flatten(),\\n\",\n        \"    snt.nets.MLP([512, num_actions])\\n\",\n        \"])\\n\",\n        \"acme_utils.create_variables(network, [environment.observation_spec()])\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"9CD2sNK-oA9S\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create a logger.\\n\",\n        \"logger = loggers.TerminalLogger(label='learner', time_delta=1.)\\n\",\n        \"\\n\",\n        \"# Create the DQN learner.\\n\",\n        \"learner = dqn.DQNLearner(\\n\",\n        \"    network=network,\\n\",\n        \"    target_network=copy.deepcopy(network),\\n\",\n        \"    discount=0.99,\\n\",\n        \"    learning_rate=3e-4,\\n\",\n        \"    importance_sampling_exponent=0.2,\\n\",\n        \"    target_update_period=2500,\\n\",\n        \"    dataset=dataset,\\n\",\n        \"    logger=logger)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"oKeGQxzitXYC\"\n      },\n      \"source\": [\n        \"## Training loop\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 51\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 4694,\n          \"status\": \"ok\",\n          \"timestamp\": 1593614662237,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"VWZd5N-Qoz82\",\n        \"outputId\": \"5ee2ce7c-b3fe-483b-8893-5a6e13519f48\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[Learner] Loss = 0.003 | Steps = 1 | Walltime = 0\\n\",\n            \"[Learner] Loss = 0.004 | Steps = 54 | Walltime = 1.126\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"for _ in range(100):\\n\",\n        \"  learner.step()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"qFQDrp0CgIzU\"\n      },\n      \"source\": [\n        \"## Evaluation\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 102\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 15099,\n          \"status\": \"ok\",\n          \"timestamp\": 1593614677360,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"DWYHBalygIDF\",\n        \"outputId\": \"4ec412c3-810a-4208-b521-919a8ece40df\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[Evaluation] Episode Length = 842 | Episode Return = -20.000 | Episodes = 1 | Steps = 842 | Steps Per Second = 265.850\\n\",\n            \"[Evaluation] Episode Length = 792 | Episode Return = -21.000 | Episodes = 2 | Steps = 1634 | Steps Per Second = 270.043\\n\",\n            \"[Evaluation] Episode Length = 812 | Episode Return = -21.000 | Episodes = 3 | Steps = 2446 | Steps Per Second = 274.792\\n\",\n            \"[Evaluation] Episode Length = 812 | Episode Return = -21.000 | Episodes = 4 | Steps = 3258 | Steps Per Second = 270.967\\n\",\n            \"[Evaluation] Episode Length = 812 | Episode Return = -21.000 | Episodes = 5 | Steps = 4070 | Steps Per Second = 274.253\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"# Create a logger.\\n\",\n        \"logger = loggers.TerminalLogger(label='evaluation', time_delta=1.)\\n\",\n        \"\\n\",\n        \"# Create an environment loop.\\n\",\n        \"policy_network = snt.Sequential([\\n\",\n        \"    network,\\n\",\n        \"    lambda q: tf.argmax(q, axis=-1),\\n\",\n        \"])\\n\",\n        \"loop = acme.EnvironmentLoop(\\n\",\n        \"    environment=environment,\\n\",\n        \"    actor=actors.DeprecatedFeedForwardActor(policy_network=policy_network),\\n\",\n        \"    logger=logger)\\n\",\n        \"\\n\",\n        \"loop.run(5)\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"last_runtime\": {\n        \"build_target\": \"//learning/deepmind/dm_python:dm_notebook3\",\n        \"kind\": \"private\"\n      },\n      \"name\": \"RL Unplugged: Offline DQN - Atari\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1g9yTbTuk9aeERxWflOWqUGpx2M3osx0l\",\n          \"timestamp\": 1593685504110\n        }\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "rl_unplugged/atari_example.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nr\"\"\"Atari dataset example.\n\nInstructions:\n> mkdir -p /tmp/dataset/Asterix\n> gsutil cp gs://rl_unplugged/atari/Asterix/run_1-00000-of-00100 \\\n    /tmp/dataset/Asterix/run_1-00000-of-00001\n> python atari_example.py --path=/tmp/dataset --game=Asterix\n\"\"\"\n\nfrom absl import app\nfrom absl import flags\nfrom acme import specs\nimport tree\n\nfrom rl_unplugged import atari\n\nflags.DEFINE_string('path', '/tmp/dataset', 'Path to dataset.')\nflags.DEFINE_string('game', 'Asterix', 'Game.')\n\nFLAGS = flags.FLAGS\n\n\ndef main(_):\n  ds = atari.dataset(FLAGS.path, FLAGS.game, 1,\n                     num_shards=1,\n                     shuffle_buffer_size=1)\n  for sample in ds.take(1):\n    print('Data spec')\n    print(tree.map_structure(lambda x: (x.dtype, x.shape), sample.data))\n\n  env = atari.environment(FLAGS.game)\n  print('Environment spec')\n  print(specs.make_environment_spec(env))\n  print('Environment observation')\n  timestep = env.reset()\n  print(tree.map_structure(lambda x: (x.dtype, x.shape), timestep.observation))\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "rl_unplugged/bsuite.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"KDiJzbb8KFvP\"\n      },\n      \"source\": [\n        \"Copyright 2021 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n\",\n        \"this file except in compliance with the License. You may obtain a copy of the\\n\",\n        \"License at\\n\",\n        \"\\n\",\n        \"[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software distributed\\n\",\n        \"under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR\\n\",\n        \"CONDITIONS OF ANY KIND, either express or implied. See the License for the\\n\",\n        \"specific language governing permissions and limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ULdrhOaVbsdO\"\n      },\n      \"source\": [\n        \"# RL Unplugged: Offline DQN - Bsuite\\n\",\n        \"## Guide to  training an Acme DQN agent on Bsuite data.\\n\",\n        \"# \\u003ca href=\\\"https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/rl_unplugged/atari_dqn.ipynb\\\" target=\\\"_parent\\\"\\u003e\\u003cimg src=\\\"https://colab.research.google.com/assets/colab-badge.svg\\\" alt=\\\"Open In Colab\\\"/\\u003e\\u003c/a\\u003e\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"collapsed\": true,\n        \"id\": \"KH3O0zcXUeun\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title Installation\\n\",\n        \"!pip install dm-acme\\n\",\n        \"!pip install dm-acme[reverb]\\n\",\n        \"!pip install dm-acme[tf]\\n\",\n        \"!pip install dm-sonnet\\n\",\n        \"!pip install dopamine-rl==3.1.2\\n\",\n        \"!pip install atari-py\\n\",\n        \"!pip install dm_env\\n\",\n        \"!git clone https://github.com/deepmind/deepmind-research.git\\n\",\n        \"%cd deepmind-research\\n\",\n        \"\\n\",\n        \"!git clone https://github.com/deepmind/bsuite.git\\n\",\n        \"!pip install -q bsuite/\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"HJ74Id-8MERq\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title Imports\\n\",\n        \"import copy\\n\",\n        \"import functools\\n\",\n        \"from typing import Dict, Tuple\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"import acme\\n\",\n        \"from acme.agents.tf import actors\\n\",\n        \"from acme.agents.tf.dqn import learning as dqn\\n\",\n        \"from acme.tf import utils as acme_utils\\n\",\n        \"from acme.utils import loggers\\n\",\n        \"\\n\",\n        \"import sonnet as snt\\n\",\n        \"import tensorflow as tf\\n\",\n        \"\\n\",\n        \"import numpy as np\\n\",\n        \"import tree\\n\",\n        \"import dm_env\\n\",\n        \"import reverb\\n\",\n        \"from acme.wrappers import base as wrapper_base\\n\",\n        \"from acme.wrappers import single_precision\\n\",\n        \"\\n\",\n        \"import bsuite\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"j0Aahizs2ff-\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title Data Loading Utilities\\n\",\n        \"def _parse_seq_tf_example(example, shapes, dtypes):\\n\",\n        \"    \\\"\\\"\\\"Parse tf.Example containing one or two episode steps.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"    def to_feature(shape, dtype):\\n\",\n        \"        if np.issubdtype(dtype, np.floating):\\n\",\n        \"            return tf.io.FixedLenSequenceFeature(\\n\",\n        \"                shape=shape, dtype=tf.float32, allow_missing=True)\\n\",\n        \"        elif dtype == np.bool or np.issubdtype(dtype, np.integer):\\n\",\n        \"            return tf.io.FixedLenSequenceFeature(\\n\",\n        \"                shape=shape, dtype=tf.int64, allow_missing=True)\\n\",\n        \"        else:\\n\",\n        \"            raise ValueError(f'Unsupported type {dtype} to '\\n\",\n        \"            f'convert from TF Example.')\\n\",\n        \"\\n\",\n        \"    feature_map = {}\\n\",\n        \"    for k, v in shapes.items():\\n\",\n        \"        feature_map[k] = to_feature(v, dtypes[k])\\n\",\n        \"\\n\",\n        \"    parsed = tf.io.parse_single_example(example, features=feature_map)\\n\",\n        \"\\n\",\n        \"    restructured = {}\\n\",\n        \"    for k, v in parsed.items():\\n\",\n        \"        dtype = tf.as_dtype(dtypes[k])\\n\",\n        \"        if v.dtype == dtype:\\n\",\n        \"            restructured[k] = parsed[k]\\n\",\n        \"        else:\\n\",\n        \"            restructured[k] = tf.cast(parsed[k], dtype)\\n\",\n        \"\\n\",\n        \"    return restructured\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def _build_sars_example(sequences):\\n\",\n        \"    \\\"\\\"\\\"Convert raw sequences into a Reverb SARS' sample.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"    o_tm1 = tree.map_structure(lambda t: t[0], sequences['observation'])\\n\",\n        \"    o_t = tree.map_structure(lambda t: t[1], sequences['observation'])\\n\",\n        \"    a_tm1 = tree.map_structure(lambda t: t[0], sequences['action'])\\n\",\n        \"    r_t = tree.map_structure(lambda t: t[0], sequences['reward'])\\n\",\n        \"    p_t = tree.map_structure(\\n\",\n        \"        lambda d, st: d[0] * tf.cast(st[1] != dm_env.StepType.LAST, d.dtype),\\n\",\n        \"        sequences['discount'], sequences['step_type'])\\n\",\n        \"\\n\",\n        \"    info = reverb.SampleInfo(key=tf.constant(0, tf.uint64),\\n\",\n        \"                             probability=tf.constant(1.0, tf.float64),\\n\",\n        \"                             table_size=tf.constant(0, tf.int64),\\n\",\n        \"                             priority=tf.constant(1.0, tf.float64))\\n\",\n        \"    return reverb.ReplaySample(info=info, data=(\\n\",\n        \"        o_tm1, a_tm1, r_t, p_t, o_t))\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def bsuite_dataset_params(env):\\n\",\n        \"    \\\"\\\"\\\"Return shapes and dtypes parameters for bsuite offline dataset.\\\"\\\"\\\"\\n\",\n        \"    shapes = {\\n\",\n        \"        'observation': env.observation_spec().shape,\\n\",\n        \"        'action': env.action_spec().shape,\\n\",\n        \"        'discount': env.discount_spec().shape,\\n\",\n        \"        'reward': env.reward_spec().shape,\\n\",\n        \"        'episodic_reward': env.reward_spec().shape,\\n\",\n        \"        'step_type': (),\\n\",\n        \"    }\\n\",\n        \"\\n\",\n        \"    dtypes = {\\n\",\n        \"        'observation': env.observation_spec().dtype,\\n\",\n        \"        'action': env.action_spec().dtype,\\n\",\n        \"        'discount': env.discount_spec().dtype,\\n\",\n        \"        'reward': env.reward_spec().dtype,\\n\",\n        \"        'episodic_reward': env.reward_spec().dtype,\\n\",\n        \"        'step_type': np.int64,\\n\",\n        \"    }\\n\",\n        \"\\n\",\n        \"    return {'shapes': shapes, 'dtypes': dtypes}\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def bsuite_dataset(path: str,\\n\",\n        \"                   shapes: Dict[str, Tuple[int]],\\n\",\n        \"                   dtypes: Dict[str, type],  # pylint:disable=g-bare-generic\\n\",\n        \"                   num_threads: int,\\n\",\n        \"                   batch_size: int,\\n\",\n        \"                   num_shards: int,\\n\",\n        \"                   shuffle_buffer_size: int = 100000,\\n\",\n        \"                   shuffle: bool = True) -\\u003e tf.data.Dataset:\\n\",\n        \"    \\\"\\\"\\\"Create tf dataset for training.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"    filenames = [f'{path}-{i:05d}-of-{num_shards:05d}' for i in range(\\n\",\n        \"        num_shards)]\\n\",\n        \"    file_ds = tf.data.Dataset.from_tensor_slices(filenames)\\n\",\n        \"    if shuffle:\\n\",\n        \"      file_ds = file_ds.repeat().shuffle(num_shards)\\n\",\n        \"\\n\",\n        \"    example_ds = file_ds.interleave(\\n\",\n        \"        functools.partial(tf.data.TFRecordDataset, compression_type='GZIP'),\\n\",\n        \"        cycle_length=tf.data.experimental.AUTOTUNE,\\n\",\n        \"        block_length=5)\\n\",\n        \"    if shuffle:\\n\",\n        \"      example_ds = example_ds.shuffle(shuffle_buffer_size)\\n\",\n        \"\\n\",\n        \"    def map_func(example):\\n\",\n        \"        example = _parse_seq_tf_example(example, shapes, dtypes)\\n\",\n        \"        return example\\n\",\n        \"\\n\",\n        \"    example_ds = example_ds.map(map_func, num_parallel_calls=num_threads)\\n\",\n        \"    if shuffle:\\n\",\n        \"      example_ds = example_ds.repeat().shuffle(batch_size * 10)\\n\",\n        \"\\n\",\n        \"    example_ds = example_ds.map(\\n\",\n        \"        _build_sars_example,\\n\",\n        \"        num_parallel_calls=tf.data.experimental.AUTOTUNE)\\n\",\n        \"    example_ds = example_ds.batch(batch_size, drop_remainder=True)\\n\",\n        \"\\n\",\n        \"    example_ds = example_ds.prefetch(tf.data.experimental.AUTOTUNE)\\n\",\n        \"\\n\",\n        \"    return example_ds\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def load_offline_bsuite_dataset(\\n\",\n        \"        bsuite_id: str,\\n\",\n        \"        path: str,\\n\",\n        \"        batch_size: int,\\n\",\n        \"        num_shards: int = 1,\\n\",\n        \"        num_threads: int = 1,\\n\",\n        \"        single_precision_wrapper: bool = True,\\n\",\n        \"        shuffle: bool = True) -\\u003e Tuple[tf.data.Dataset,\\n\",\n        \"                                                        dm_env.Environment]:\\n\",\n        \"    \\\"\\\"\\\"Load bsuite offline dataset.\\\"\\\"\\\"\\n\",\n        \"    # Data file path format: {path}-?????-of-{num_shards:05d}\\n\",\n        \"    # The dataset is not deterministic and not repeated if shuffle = False.\\n\",\n        \"    environment = bsuite.load_from_id(bsuite_id)\\n\",\n        \"    if single_precision_wrapper:\\n\",\n        \"        environment = single_precision.SinglePrecisionWrapper(environment)\\n\",\n        \"    params = bsuite_dataset_params(environment)\\n\",\n        \"    dataset = bsuite_dataset(path=path,\\n\",\n        \"                      num_threads=num_threads,\\n\",\n        \"                      batch_size=batch_size,\\n\",\n        \"                      num_shards=num_shards,\\n\",\n        \"                      shuffle_buffer_size=2,\\n\",\n        \"                      shuffle=shuffle,\\n\",\n        \"                      **params)\\n\",\n        \"    return dataset, environment\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"a9vF7LtYvLzy\"\n      },\n      \"source\": [\n        \"## Dataset and environment\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"2I4lHR5jLeXm\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"tmp_path = 'gs://rl_unplugged/bsuite'\\n\",\n        \"level = 'catch'\\n\",\n        \"dir = '0_0.0'\\n\",\n        \"filename = '0_full'\\n\",\n        \"path = f'{tmp_path}/{level}/{dir}/{filename}'\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"collapsed\": true,\n        \"id\": \"01AHHNd9cEX2\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"batch_size = 2  #@param\\n\",\n        \"bsuite_id = level + '/0'\\n\",\n        \"dataset, environment = load_offline_bsuite_dataset(bsuite_id=bsuite_id,\\n\",\n        \"                                                   path=path,\\n\",\n        \"                                                   batch_size=batch_size)\\n\",\n        \"dataset = dataset.prefetch(1)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"BukOfOsmtSQn\"\n      },\n      \"source\": [\n        \"## DQN learner\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"3Jcjk1w6oHVX\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Get total number of actions.\\n\",\n        \"num_actions = environment.action_spec().num_values\\n\",\n        \"obs_spec = environment.observation_spec()\\n\",\n        \"print(environment.observation_spec())\\n\",\n        \"# Create the Q network.\\n\",\n        \"network = snt.Sequential([\\n\",\n        \"      snt.flatten,\\n\",\n        \"      snt.nets.MLP([56, 56]),\\n\",\n        \"      snt.nets.MLP([num_actions])\\n\",\n        \"  ])\\n\",\n        \"acme_utils.create_variables(network, [environment.observation_spec()])\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"9CD2sNK-oA9S\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create a logger.\\n\",\n        \"logger = loggers.TerminalLogger(label='learner', time_delta=1.)\\n\",\n        \"\\n\",\n        \"# Create the DQN learner.\\n\",\n        \"learner = dqn.DQNLearner(\\n\",\n        \"    network=network,\\n\",\n        \"    target_network=copy.deepcopy(network),\\n\",\n        \"    discount=0.99,\\n\",\n        \"    learning_rate=3e-4,\\n\",\n        \"    importance_sampling_exponent=0.2,\\n\",\n        \"    target_update_period=2500,\\n\",\n        \"    dataset=dataset,\\n\",\n        \"    logger=logger)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"oKeGQxzitXYC\"\n      },\n      \"source\": [\n        \"## Training loop\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"VWZd5N-Qoz82\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"for _ in range(10000):\\n\",\n        \"  learner.step()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"qFQDrp0CgIzU\"\n      },\n      \"source\": [\n        \"## Evaluation\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"DWYHBalygIDF\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create a logger.\\n\",\n        \"logger = loggers.TerminalLogger(label='evaluation', time_delta=1.)\\n\",\n        \"\\n\",\n        \"# Create an environment loop.\\n\",\n        \"policy_network = snt.Sequential([\\n\",\n        \"    network,\\n\",\n        \"    lambda q: tf.argmax(q, axis=-1),\\n\",\n        \"])\\n\",\n        \"loop = acme.EnvironmentLoop(\\n\",\n        \"    environment=environment,\\n\",\n        \"    actor=actors.DeprecatedFeedForwardActor(policy_network=policy_network),\\n\",\n        \"    logger=logger)\\n\",\n        \"\\n\",\n        \"loop.run(400)\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"name\": \"RL_Unplugged_Offline_DQN_Bsuite.ipynb\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1rhoeTFuan8B_q8eBeCEtQPiIeMux1pWU\",\n          \"timestamp\": 1613499802780\n        }\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "rl_unplugged/dm_control_suite.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Control RL Unplugged datasets.\n\nExamples in the dataset represent sequences stored when running a partially\ntrained agent (trained in online way) as described in\nhttps://arxiv.org/abs/2006.13888.\n\nEvery dataset has a SARSA version, and datasets for environments for solving\nwhich we believe one may need a recurrent agent also include a version of the\ndataset with overlapping sequences of length 40.\n\nDatasets for the dm_control_suite environments only include proprio\nobservations, while datasets for dm_locomotion include both pixel and proprio\nobservations.\n\"\"\"\n\nimport collections\nimport functools\nimport os\nfrom typing import Dict, Optional, Tuple, Set\n\nfrom acme import wrappers\nfrom acme.adders import reverb as adders\nfrom dm_control import composer\nfrom dm_control import suite\nfrom dm_control.composer.variation import colors\nfrom dm_control.composer.variation import distributions\nfrom dm_control.locomotion import arenas\nfrom dm_control.locomotion import props\nfrom dm_control.locomotion import tasks\nfrom dm_control.locomotion import walkers\nfrom dm_env import specs\nimport numpy as np\nimport reverb\nimport tensorflow as tf\nimport tree\n\n\ndef _build_rodent_escape_env():\n  \"\"\"Build environment where a rodent escapes from a bowl.\"\"\"\n  walker = walkers.Rat(\n      observable_options={'egocentric_camera': dict(enabled=True)},\n  )\n  arena = arenas.bowl.Bowl(\n      size=(20., 20.),\n      aesthetic='outdoor_natural')\n  locomotion_task = tasks.escape.Escape(\n      walker=walker,\n      arena=arena,\n      physics_timestep=0.001,\n      control_timestep=.02)\n  raw_env = composer.Environment(\n      time_limit=20,\n      task=locomotion_task,\n      strip_singleton_obs_buffer_dim=True)\n\n  return raw_env\n\n\ndef _build_rodent_maze_env():\n  \"\"\"Build environment where a rodent runs to targets.\"\"\"\n  walker = walkers.Rat(\n      observable_options={'egocentric_camera': dict(enabled=True)},\n  )\n\n  wall_textures = arenas.labmaze_textures.WallTextures(\n      style='style_01')\n\n  arena = arenas.mazes.RandomMazeWithTargets(\n      x_cells=11,\n      y_cells=11,\n      xy_scale=.5,\n      z_height=.3,\n      max_rooms=4,\n      room_min_size=4,\n      room_max_size=5,\n      spawns_per_room=1,\n      targets_per_room=3,\n      wall_textures=wall_textures,\n      aesthetic='outdoor_natural')\n\n  rodent_task = tasks.random_goal_maze.ManyGoalsMaze(\n      walker=walker,\n      maze_arena=arena,\n      target_builder=functools.partial(\n          props.target_sphere.TargetSphere,\n          radius=0.05,\n          height_above_ground=.125,\n          rgb1=(0, 0, 0.4),\n          rgb2=(0, 0, 0.7)),\n      target_reward_scale=50.,\n      contact_termination=False,\n      control_timestep=.02,\n      physics_timestep=0.001)\n  raw_env = composer.Environment(\n      time_limit=30,\n      task=rodent_task,\n      strip_singleton_obs_buffer_dim=True)\n\n  return raw_env\n\n\ndef _build_rodent_corridor_gaps():\n  \"\"\"Build environment where a rodent runs over gaps.\"\"\"\n  walker = walkers.Rat(\n      observable_options={'egocentric_camera': dict(enabled=True)},\n  )\n\n  platform_length = distributions.Uniform(low=0.4, high=0.8)\n  gap_length = distributions.Uniform(low=0.05, high=0.2)\n  arena = arenas.corridors.GapsCorridor(\n      corridor_width=2,\n      platform_length=platform_length,\n      gap_length=gap_length,\n      corridor_length=40,\n      aesthetic='outdoor_natural')\n\n  rodent_task = tasks.corridors.RunThroughCorridor(\n      walker=walker,\n      arena=arena,\n      walker_spawn_position=(5, 0, 0),\n      walker_spawn_rotation=0,\n      target_velocity=1.0,\n      contact_termination=False,\n      terminate_at_height=-0.3,\n      physics_timestep=0.001,\n      control_timestep=.02)\n  raw_env = composer.Environment(\n      time_limit=30,\n      task=rodent_task,\n      strip_singleton_obs_buffer_dim=True)\n\n  return raw_env\n\n\ndef _build_rodent_two_touch_env():\n  \"\"\"Build environment where a rodent touches targets.\"\"\"\n  walker = walkers.Rat(\n      observable_options={'egocentric_camera': dict(enabled=True)},\n  )\n\n  arena_floor = arenas.floors.Floor(\n      size=(10., 10.), aesthetic='outdoor_natural')\n  task_reach = tasks.reach.TwoTouch(\n      walker=walker,\n      arena=arena_floor,\n      target_builders=[\n          functools.partial(\n              props.target_sphere.TargetSphereTwoTouch,\n              radius=0.025),\n      ],\n      randomize_spawn_rotation=True,\n      target_type_rewards=[25.],\n      shuffle_target_builders=False,\n      target_area=(1.5, 1.5),\n      physics_timestep=0.001,\n      control_timestep=.02)\n\n  raw_env = composer.Environment(\n      time_limit=30,\n      task=task_reach,\n      strip_singleton_obs_buffer_dim=True)\n\n  return raw_env\n\n\ndef _build_humanoid_walls_env():\n  \"\"\"Build humanoid walker walls environment.\"\"\"\n  walker = walkers.CMUHumanoidPositionControlled(\n      name='walker',\n      observable_options={'egocentric_camera': dict(enabled=True)},\n  )\n  wall_width = distributions.Uniform(low=1, high=7)\n  wall_height = distributions.Uniform(low=2.5, high=4.0)\n  swap_wall_side = distributions.Bernoulli(prob=0.5)\n  wall_r = distributions.Uniform(low=0.5, high=0.6)\n  wall_g = distributions.Uniform(low=0.21, high=0.41)\n  wall_rgba = colors.RgbVariation(r=wall_r, g=wall_g, b=0, alpha=1)\n  arena = arenas.WallsCorridor(\n      wall_gap=5.0,\n      wall_width=wall_width,\n      wall_height=wall_height,\n      swap_wall_side=swap_wall_side,\n      wall_rgba=wall_rgba,\n      corridor_width=10,\n      corridor_length=100)\n  humanoid_task = tasks.RunThroughCorridor(\n      walker=walker,\n      arena=arena,\n      walker_spawn_rotation=1.57,  # pi / 2\n      physics_timestep=0.005,\n      control_timestep=0.03)\n  raw_env = composer.Environment(\n      time_limit=30,\n      task=humanoid_task,\n      strip_singleton_obs_buffer_dim=True)\n\n  return raw_env\n\n\ndef _build_humanoid_corridor_env():\n  \"\"\"Build humanoid walker walls environment.\"\"\"\n  walker = walkers.CMUHumanoidPositionControlled(\n      name='walker',\n      observable_options={'egocentric_camera': dict(enabled=True)},\n  )\n  arena = arenas.EmptyCorridor(\n      corridor_width=10,\n      corridor_length=100)\n  humanoid_task = tasks.RunThroughCorridor(\n      walker=walker,\n      arena=arena,\n      walker_spawn_rotation=1.57,  # pi / 2\n      physics_timestep=0.005,\n      control_timestep=0.03)\n  raw_env = composer.Environment(\n      time_limit=30,\n      task=humanoid_task,\n      strip_singleton_obs_buffer_dim=True)\n\n  return raw_env\n\n\ndef _build_humanoid_corridor_gaps():\n  \"\"\"Build humanoid walker walls environment.\"\"\"\n  walker = walkers.CMUHumanoidPositionControlled(\n      name='walker',\n      observable_options={'egocentric_camera': dict(enabled=True)},\n  )\n  platform_length = distributions.Uniform(low=0.3, high=2.5)\n  gap_length = distributions.Uniform(low=0.75, high=1.25)\n  arena = arenas.GapsCorridor(\n      corridor_width=10,\n      platform_length=platform_length,\n      gap_length=gap_length,\n      corridor_length=100)\n  humanoid_task = tasks.RunThroughCorridor(\n      walker=walker,\n      arena=arena,\n      walker_spawn_position=(2, 0, 0),\n      walker_spawn_rotation=1.57,  # pi / 2\n      physics_timestep=0.005,\n      control_timestep=0.03)\n  raw_env = composer.Environment(\n      time_limit=30,\n      task=humanoid_task,\n      strip_singleton_obs_buffer_dim=True)\n\n  return raw_env\n\n\nclass MujocoActionNormalizer(wrappers.EnvironmentWrapper):\n  \"\"\"Rescale actions to [-1, 1] range for mujoco physics engine.\n\n  For control environments whose actions have bounded range in [-1, 1], this\n    adaptor rescale actions to the desired range. This allows actor network to\n    output unscaled actions for better gradient dynamics.\n  \"\"\"\n\n  def __init__(self, environment, rescale='clip'):\n    super().__init__(environment)\n    self._rescale = rescale\n\n  def step(self, action):\n    \"\"\"Rescale actions to [-1, 1] range before stepping wrapped environment.\"\"\"\n    if self._rescale == 'tanh':\n      scaled_actions = tree.map_structure(np.tanh, action)\n    elif self._rescale == 'clip':\n      scaled_actions = tree.map_structure(lambda a: np.clip(a, -1., 1.), action)\n    else:\n      raise ValueError('Unrecognized scaling option: %s' % self._rescale)\n    return self._environment.step(scaled_actions)\n\n\nclass NormilizeActionSpecWrapper(wrappers.EnvironmentWrapper):\n  \"\"\"Turn each dimension of the actions into the range of [-1, 1].\"\"\"\n\n  def __init__(self, environment):\n    super().__init__(environment)\n\n    action_spec = environment.action_spec()\n    # pytype: disable=attribute-error  # always-use-return-annotations\n    self._scale = action_spec.maximum - action_spec.minimum\n    self._offset = action_spec.minimum\n\n    minimum = action_spec.minimum * 0 - 1.\n    maximum = action_spec.minimum * 0 + 1.\n    self._action_spec = specs.BoundedArray(\n        action_spec.shape,\n        action_spec.dtype,\n        minimum,\n        maximum,\n        name=action_spec.name)\n    # pytype: enable=attribute-error  # always-use-return-annotations\n\n  def _from_normal_actions(self, actions):\n    actions = 0.5 * (actions + 1.0)  # a_t is now in the range [0, 1]\n    # scale range to [minimum, maximum]\n    return actions * self._scale + self._offset\n\n  def step(self, action):\n    action = self._from_normal_actions(action)\n    return self._environment.step(action)\n\n  def action_spec(self):\n    return self._action_spec\n\n\nclass FilterObservationsWrapper(wrappers.EnvironmentWrapper):\n  \"\"\"Filter out all the observations not specified to this wrapper.\"\"\"\n\n  def __init__(self, environment, observations_to_keep):\n    super().__init__(environment)\n    self._observations_to_keep = observations_to_keep\n    spec = self._environment.observation_spec()\n    filtered = [(k, spec[k]) for k in observations_to_keep]\n    self._observation_spec = collections.OrderedDict(filtered)\n\n  def _filter_observation(self, timestep):\n    observation = timestep.observation\n    filtered = [(k, observation[k]) for k in self._observations_to_keep]\n    return timestep._replace(observation=collections.OrderedDict(filtered))\n\n  def step(self, action):\n    return self._filter_observation(self._environment.step(action))\n\n  def reset(self):\n    return self._filter_observation(self._environment.reset())\n\n  def observation_spec(self):\n    return self._observation_spec\n\n\nclass ControlSuite:\n  \"\"\"Create bits needed to run agents on an Control Suite dataset.\"\"\"\n\n  def __init__(self, task_name='humanoid_run'):\n    \"\"\"Initializes datasets/environments for the Deepmind Control suite.\n\n    Args:\n      task_name: take name. Must be one of,\n        finger_turn_hard, manipulator_insert_peg, humanoid_run,\n        cartpole_swingup, cheetah_run, fish_swim, manipulator_insert_ball,\n        walker_stand, walker_walk\n    \"\"\"\n    self.task_name = task_name\n    self._uint8_features = set([])\n    self._environment = None\n\n    if task_name == 'swim':\n      self._domain_name = 'fish'\n      self._task_name = 'swim'\n\n      self._shapes = {\n          'observation/target': (3,),\n          'observation/velocity': (13,),\n          'observation/upright': (1,),\n          'observation/joint_angles': (7,),\n          'action': (5,),\n          'discount': (),\n          'reward': (),\n          'episodic_reward': (),\n          'step_type': ()\n      }\n    elif task_name == 'humanoid_run':\n      self._domain_name = 'humanoid'\n      self._task_name = 'run'\n\n      self._shapes = {\n          'observation/velocity': (27,),\n          'observation/com_velocity': (3,),\n          'observation/torso_vertical': (3,),\n          'observation/extremities': (12,),\n          'observation/head_height': (1,),\n          'observation/joint_angles': (21,),\n          'action': (21,),\n          'discount': (),\n          'reward': (),\n          'episodic_reward': (),\n          'step_type': ()\n      }\n    elif task_name == 'manipulator_insert_ball':\n      self._domain_name = 'manipulator'\n      self._task_name = 'insert_ball'\n      self._shapes = {\n          'observation/arm_pos': (16,),\n          'observation/arm_vel': (8,),\n          'observation/touch': (5,),\n          'observation/hand_pos': (4,),\n          'observation/object_pos': (4,),\n          'observation/object_vel': (3,),\n          'observation/target_pos': (4,),\n          'action': (5,),\n          'discount': (),\n          'reward': (),\n          'episodic_reward': (),\n          'step_type': ()}\n    elif task_name == 'manipulator_insert_peg':\n      self._domain_name = 'manipulator'\n      self._task_name = 'insert_peg'\n      self._shapes = {\n          'observation/arm_pos': (16,),\n          'observation/arm_vel': (8,),\n          'observation/touch': (5,),\n          'observation/hand_pos': (4,),\n          'observation/object_pos': (4,),\n          'observation/object_vel': (3,),\n          'observation/target_pos': (4,),\n          'episodic_reward': (),\n          'action': (5,),\n          'discount': (),\n          'reward': (),\n          'step_type': ()}\n    elif task_name == 'cartpole_swingup':\n      self._domain_name = 'cartpole'\n      self._task_name = 'swingup'\n      self._shapes = {\n          'observation/position': (3,),\n          'observation/velocity': (2,),\n          'action': (1,),\n          'discount': (),\n          'reward': (),\n          'episodic_reward': (),\n          'step_type': ()}\n    elif task_name == 'walker_walk':\n      self._domain_name = 'walker'\n      self._task_name = 'walk'\n      self._shapes = {\n          'observation/orientations': (14,),\n          'observation/velocity': (9,),\n          'observation/height': (1,),\n          'action': (6,),\n          'discount': (),\n          'reward': (),\n          'episodic_reward': (),\n          'step_type': ()}\n    elif task_name == 'walker_stand':\n      self._domain_name = 'walker'\n      self._task_name = 'stand'\n      self._shapes = {\n          'observation/orientations': (14,),\n          'observation/velocity': (9,),\n          'observation/height': (1,),\n          'action': (6,),\n          'discount': (),\n          'reward': (),\n          'episodic_reward': (),\n          'step_type': ()}\n    elif task_name == 'cheetah_run':\n      self._domain_name = 'cheetah'\n      self._task_name = 'run'\n      self._shapes = {\n          'observation/position': (8,),\n          'observation/velocity': (9,),\n          'action': (6,),\n          'discount': (),\n          'reward': (),\n          'episodic_reward': (),\n          'step_type': ()}\n    elif task_name == 'finger_turn_hard':\n      self._domain_name = 'finger'\n      self._task_name = 'turn_hard'\n      self._shapes = {\n          'observation/position': (4,),\n          'observation/velocity': (3,),\n          'observation/touch': (2,),\n          'observation/target_position': (2,),\n          'observation/dist_to_target': (1,),\n          'action': (2,),\n          'discount': (),\n          'reward': (),\n          'episodic_reward': (),\n          'step_type': ()}\n    else:\n      raise ValueError('Task \\'{}\\' not found.'.format(task_name))\n\n    self._data_path = 'dm_control_suite/{}/train'.format(task_name)\n\n  @property\n  def shapes(self):\n    return self._shapes\n\n  @property\n  def data_path(self):\n    return self._data_path\n\n  @property\n  def uint8_features(self):\n    return self._uint8_features\n\n  @property\n  def environment(self):\n    \"\"\"Build and return the environment.\"\"\"\n    if self._environment is not None:\n      return self._environment\n\n    self._environment = suite.load(\n        domain_name=self._domain_name,\n        task_name=self._task_name)\n\n    self._environment = wrappers.SinglePrecisionWrapper(self._environment)\n    self._environment = NormilizeActionSpecWrapper(self._environment)\n\n    return self._environment\n\n\nclass CmuThirdParty:\n  \"\"\"Create bits needed to run agents on an locomotion humanoid dataset.\"\"\"\n\n  def __init__(self, task_name='humanoid_walls'):\n    # 'humanoid_corridor|humanoid_gaps|humanoid_walls'\n    self._task_name = task_name\n    self._pixel_keys = self.get_pixel_keys()\n    self._uint8_features = set(['observation/walker/egocentric_camera'])\n    self.additional_paths = {}\n    self._proprio_keys = [\n        'walker/joints_vel',\n        'walker/sensors_velocimeter',\n        'walker/sensors_gyro',\n        'walker/joints_pos',\n        'walker/world_zaxis',\n        'walker/body_height',\n        'walker/sensors_accelerometer',\n        'walker/end_effectors_pos'\n    ]\n\n    self._shapes = {\n        'observation/walker/joints_vel': (56,),\n        'observation/walker/sensors_velocimeter': (3,),\n        'observation/walker/sensors_gyro': (3,),\n        'observation/walker/joints_pos': (56,),\n        'observation/walker/world_zaxis': (3,),\n        'observation/walker/body_height': (1,),\n        'observation/walker/sensors_accelerometer': (3,),\n        'observation/walker/end_effectors_pos': (12,),\n        'observation/walker/egocentric_camera': (\n            64,\n            64,\n            3,\n        ),\n        'action': (56,),\n        'discount': (),\n        'reward': (),\n        'episodic_reward': (),\n        'step_type': ()\n    }\n\n    if task_name == 'humanoid_corridor':\n      self._data_path = 'dm_locomotion/humanoid_corridor/seq2/train'\n    elif task_name == 'humanoid_gaps':\n      self._data_path = 'dm_locomotion/humanoid_gaps/seq2/train'\n    elif task_name == 'humanoid_walls':\n      self._data_path = 'dm_locomotion/humanoid_walls/seq40/train'\n    else:\n      raise ValueError('Task \\'{}\\' not found.'.format(task_name))\n\n  @staticmethod\n  def get_pixel_keys():\n    return ('walker/egocentric_camera',)\n\n  @property\n  def uint8_features(self):\n    return self._uint8_features\n\n  @property\n  def shapes(self):\n    return self._shapes\n\n  @property\n  def data_path(self):\n    return self._data_path\n\n  @property\n  def environment(self):\n    \"\"\"Build and return the environment.\"\"\"\n\n    if self._task_name == 'humanoid_corridor':\n      self._environment = _build_humanoid_corridor_env()\n    elif self._task_name == 'humanoid_gaps':\n      self._environment = _build_humanoid_corridor_gaps()\n    elif self._task_name == 'humanoid_walls':\n      self._environment = _build_humanoid_walls_env()\n\n    self._environment = NormilizeActionSpecWrapper(self._environment)\n    self._environment = MujocoActionNormalizer(\n        environment=self._environment, rescale='clip')\n    self._environment = wrappers.SinglePrecisionWrapper(self._environment)\n\n    all_observations = list(self._proprio_keys) + list(self._pixel_keys)\n    self._environment = FilterObservationsWrapper(self._environment,\n                                                  all_observations)\n\n    return self._environment\n\n\nclass Rodent:\n  \"\"\"Create bits needed to run agents on an Rodent dataset.\"\"\"\n\n  def __init__(self, task_name='rodent_gaps'):\n    # 'rodent_escape|rodent_two_touch|rodent_gaps|rodent_mazes'\n    self._task_name = task_name\n    self._pixel_keys = self.get_pixel_keys()\n    self._uint8_features = set(['observation/walker/egocentric_camera'])\n\n    self._proprio_keys = [\n        'walker/joints_pos', 'walker/joints_vel', 'walker/tendons_pos',\n        'walker/tendons_vel', 'walker/appendages_pos', 'walker/world_zaxis',\n        'walker/sensors_accelerometer', 'walker/sensors_velocimeter',\n        'walker/sensors_gyro', 'walker/sensors_touch',\n    ]\n\n    self._shapes = {\n        'observation/walker/joints_pos': (30,),\n        'observation/walker/joints_vel': (30,),\n        'observation/walker/tendons_pos': (8,),\n        'observation/walker/tendons_vel': (8,),\n        'observation/walker/appendages_pos': (15,),\n        'observation/walker/world_zaxis': (3,),\n        'observation/walker/sensors_accelerometer': (3,),\n        'observation/walker/sensors_velocimeter': (3,),\n        'observation/walker/sensors_gyro': (3,),\n        'observation/walker/sensors_touch': (4,),\n        'observation/walker/egocentric_camera': (64, 64, 3),\n        'action': (38,),\n        'discount': (),\n        'reward': (),\n        'step_type': ()\n    }\n\n    if task_name == 'rodent_gaps':\n      self._data_path = 'dm_locomotion/rodent_gaps/seq2/train'\n    elif task_name == 'rodent_escape':\n      self._data_path = 'dm_locomotion/rodent_bowl_escape/seq2/train'\n    elif task_name == 'rodent_two_touch':\n      self._data_path = 'dm_locomotion/rodent_two_touch/seq40/train'\n    elif task_name == 'rodent_mazes':\n      self._data_path = 'dm_locomotion/rodent_mazes/seq40/train'\n    else:\n      raise ValueError('Task \\'{}\\' not found.'.format(task_name))\n\n  @staticmethod\n  def get_pixel_keys():\n    return ('walker/egocentric_camera',)\n\n  @property\n  def shapes(self):\n    return self._shapes\n\n  @property\n  def uint8_features(self):\n    return self._uint8_features\n\n  @property\n  def data_path(self):\n    return self._data_path\n\n  @property\n  def environment(self):\n    \"\"\"Return environment.\"\"\"\n    if self._task_name == 'rodent_escape':\n      self._environment = _build_rodent_escape_env()\n    elif self._task_name == 'rodent_gaps':\n      self._environment = _build_rodent_corridor_gaps()\n    elif self._task_name == 'rodent_two_touch':\n      self._environment = _build_rodent_two_touch_env()\n    elif self._task_name == 'rodent_mazes':\n      self._environment = _build_rodent_maze_env()\n\n    self._environment = NormilizeActionSpecWrapper(self._environment)\n    self._environment = MujocoActionNormalizer(\n        environment=self._environment, rescale='clip')\n    self._environment = wrappers.SinglePrecisionWrapper(self._environment)\n\n    all_observations = list(self._proprio_keys) + list(self._pixel_keys)\n    self._environment = FilterObservationsWrapper(self._environment,\n                                                  all_observations)\n\n    return self._environment\n\n\ndef _parse_seq_tf_example(example, uint8_features, shapes):\n  \"\"\"Parse tf.Example containing one or two episode steps.\"\"\"\n  def to_feature(key, shape):\n    if key in uint8_features:\n      return tf.io.FixedLenSequenceFeature(\n          shape=[], dtype=tf.string, allow_missing=True)\n    else:\n      return tf.io.FixedLenSequenceFeature(\n          shape=shape, dtype=tf.float32, allow_missing=True)\n\n  feature_map = {}\n  for k, v in shapes.items():\n    feature_map[k] = to_feature(k, v)\n\n  parsed = tf.io.parse_single_example(example, features=feature_map)\n\n  observation = {}\n  restructured = {}\n  for k in parsed.keys():\n    if 'observation' not in k:\n      restructured[k] = parsed[k]\n      continue\n\n    if k in uint8_features:\n      observation[k.replace('observation/', '')] = tf.reshape(\n          tf.io.decode_raw(parsed[k], out_type=tf.uint8), (-1,) + shapes[k])\n    else:\n      observation[k.replace('observation/', '')] = parsed[k]\n\n  restructured['observation'] = observation\n\n  restructured['length'] = tf.shape(restructured['action'])[0]\n\n  return restructured\n\n\ndef _build_sequence_example(sequences):\n  \"\"\"Convert raw sequences into a Reverb sequence sample.\"\"\"\n  data = adders.Step(\n      observation=sequences['observation'],\n      action=sequences['action'],\n      reward=sequences['reward'],\n      discount=sequences['discount'],\n      start_of_episode=(),\n      extras=())\n\n  info = reverb.SampleInfo(\n      key=tf.constant(0, tf.uint64),\n      probability=tf.constant(1.0, tf.float64),\n      table_size=tf.constant(0, tf.int64),\n      priority=tf.constant(1.0, tf.float64),\n      times_sampled=tf.constant(1.0, tf.int32))\n  return reverb.ReplaySample(info=info, data=data)\n\n\ndef _build_sarsa_example(sequences):\n  \"\"\"Convert raw sequences into a Reverb n-step SARSA sample.\"\"\"\n\n  o_tm1 = tree.map_structure(lambda t: t[0], sequences['observation'])\n  o_t = tree.map_structure(lambda t: t[1], sequences['observation'])\n  a_tm1 = tree.map_structure(lambda t: t[0], sequences['action'])\n  a_t = tree.map_structure(lambda t: t[1], sequences['action'])\n  r_t = tree.map_structure(lambda t: t[0], sequences['reward'])\n  p_t = tree.map_structure(lambda t: t[0], sequences['discount'])\n\n  info = reverb.SampleInfo(\n      key=tf.constant(0, tf.uint64),\n      probability=tf.constant(1.0, tf.float64),\n      table_size=tf.constant(0, tf.int64),\n      priority=tf.constant(1.0, tf.float64),\n      times_sampled=tf.constant(1.0, tf.int32))\n  return reverb.ReplaySample(info=info, data=(o_tm1, a_tm1, r_t, p_t, o_t, a_t))\n\n\ndef _padded_batch(example_ds, batch_size, shapes, drop_remainder=False):\n  \"\"\"Batch data while handling unequal lengths.\"\"\"\n  padded_shapes = {}\n  padded_shapes['observation'] = {}\n  for k, v in shapes.items():\n    if 'observation' in k:\n      padded_shapes['observation'][\n          k.replace('observation/', '')] = (-1,) + v\n    else:\n      padded_shapes[k] = (-1,) + v\n\n  padded_shapes['length'] = ()\n\n  return example_ds.padded_batch(batch_size,\n                                 padded_shapes=padded_shapes,\n                                 drop_remainder=drop_remainder)\n\n\ndef dataset(root_path: str,\n            data_path: str,\n            shapes: Dict[str, Tuple[int]],\n            num_threads: int,\n            batch_size: int,\n            uint8_features: Optional[Set[str]] = None,\n            num_shards: int = 100,\n            shuffle_buffer_size: int = 100000,\n            sarsa: bool = True) -> tf.data.Dataset:\n  \"\"\"Create tf dataset for training.\"\"\"\n\n  uint8_features = uint8_features if uint8_features else {}\n  path = os.path.join(root_path, data_path)\n\n  filenames = [f'{path}-{i:05d}-of-{num_shards:05d}' for i in range(num_shards)]\n  file_ds = tf.data.Dataset.from_tensor_slices(filenames)\n  file_ds = file_ds.repeat().shuffle(num_shards)\n\n  example_ds = file_ds.interleave(\n      functools.partial(tf.data.TFRecordDataset, compression_type='GZIP'),\n      cycle_length=tf.data.experimental.AUTOTUNE,\n      block_length=5)\n  example_ds = example_ds.shuffle(shuffle_buffer_size)\n\n  def map_func(example):\n    example = _parse_seq_tf_example(example, uint8_features, shapes)\n    return example\n  example_ds = example_ds.map(map_func, num_parallel_calls=num_threads)\n  example_ds = example_ds.repeat().shuffle(batch_size * 10)\n\n  if sarsa:\n    example_ds = example_ds.map(\n        _build_sarsa_example,\n        num_parallel_calls=tf.data.experimental.AUTOTUNE)\n    example_ds.batch(batch_size)\n  else:\n    example_ds = _padded_batch(\n        example_ds, batch_size, shapes, drop_remainder=True)\n\n    example_ds = example_ds.map(\n        _build_sequence_example,\n        num_parallel_calls=tf.data.experimental.AUTOTUNE)\n\n  example_ds = example_ds.prefetch(tf.data.experimental.AUTOTUNE)\n\n  return example_ds\n"
  },
  {
    "path": "rl_unplugged/dm_control_suite_crr.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"KDiJzbb8KFvP\"\n      },\n      \"source\": [\n        \"Copyright 2020 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n\",\n        \"this file except in compliance with the License. You may obtain a copy of the\\n\",\n        \"License at\\n\",\n        \"\\n\",\n        \"[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software distributed\\n\",\n        \"under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR\\n\",\n        \"CONDITIONS OF ANY KIND, either express or implied. See the License for the\\n\",\n        \"specific language governing permissions and limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"zzJlIvx4tnrM\"\n      },\n      \"source\": [\n        \"# RL Unplugged: CRR agent with GPU/TPU support - DM control\\n\",\n        \"\\n\",\n        \"## Guide to training an Acme CRR agent on DM control data.\\n\",\n        \"# \\u003ca href=\\\"https://colab.research.google.com/github/deepmind/deepmind-research/blob/master/rl_unplugged/dm_control_suite_crr.ipynb\\\" target=\\\"_parent\\\"\\u003e\\u003cimg src=\\\"https://colab.research.google.com/assets/colab-badge.svg\\\" alt=\\\"Open In Colab\\\"/\\u003e\\u003c/a\\u003e\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"o1eig5zGEL4y\"\n      },\n      \"source\": [\n        \"## Installation\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"WbpMoLbgEL41\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!pip install git+https://github.com/deepmind/acme.git#egg=dm-acme\\n\",\n        \"!pip install dm-acme[reverb]\\n\",\n        \"!pip install dm-acme[tf]\\n\",\n        \"!pip install dm-sonnet\\n\",\n        \"!git clone https://github.com/deepmind/deepmind-research.git\\n\",\n        \"%cd deepmind-research\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"04bMANoeEPM3\"\n      },\n      \"source\": [\n        \"### dm_control\\n\",\n        \"\\n\",\n        \"More detailed instructions in [this tutorial](https://colab.research.google.com/github/deepmind/dm_control/blob/master/tutorial.ipynb#scrollTo=YvyGCsgSCxHQ).\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"VEEj3Qw60y73\"\n      },\n      \"source\": [\n        \"#### Institutional MuJoCo license.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"both\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"IbZxYDxzoz5R\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Edit and run\\n\",\n        \"mjkey = \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"REPLACE THIS LINE WITH YOUR MUJOCO LICENSE KEY\\n\",\n        \"\\n\",\n        \"\\\"\\\"\\\".strip()\\n\",\n        \"\\n\",\n        \"mujoco_dir = \\\"$HOME/.mujoco\\\"\\n\",\n        \"\\n\",\n        \"# Install OpenGL deps\\n\",\n        \"!apt-get update \\u0026\\u0026 apt-get install -y --no-install-recommends \\\\\\n\",\n        \"  libgl1-mesa-glx libosmesa6 libglew2.0\\n\",\n        \"\\n\",\n        \"# Fetch MuJoCo binaries from Roboti\\n\",\n        \"!wget -q https://www.roboti.us/download/mujoco200_linux.zip -O mujoco.zip\\n\",\n        \"!unzip -o -q mujoco.zip -d \\\"$mujoco_dir\\\"\\n\",\n        \"\\n\",\n        \"# Copy over MuJoCo license\\n\",\n        \"!echo \\\"$mjkey\\\" \\u003e \\\"$mujoco_dir/mjkey.txt\\\"\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# Configure dm_control to use the OSMesa rendering backend\\n\",\n        \"%env MUJOCO_GL=osmesa\\n\",\n        \"\\n\",\n        \"# Install dm_control\\n\",\n        \"!pip install dm_control\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"-_7tVg-zzjzW\"\n      },\n      \"source\": [\n        \"#### Machine-locked MuJoCo license.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"OvMLEDE-D9oF\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Add your MuJoCo License and run\\n\",\n        \"mjkey = \\\"\\\"\\\"\\n\",\n        \"\\\"\\\"\\\".strip()\\n\",\n        \"\\n\",\n        \"mujoco_dir = \\\"$HOME/.mujoco\\\"\\n\",\n        \"\\n\",\n        \"# Install OpenGL dependencies\\n\",\n        \"!apt-get update \\u0026\\u0026 apt-get install -y --no-install-recommends \\\\\\n\",\n        \"  libgl1-mesa-glx libosmesa6 libglew2.0\\n\",\n        \"\\n\",\n        \"# Get MuJoCo binaries\\n\",\n        \"!wget -q https://www.roboti.us/download/mujoco200_linux.zip -O mujoco.zip\\n\",\n        \"!unzip -o -q mujoco.zip -d \\\"$mujoco_dir\\\"\\n\",\n        \"\\n\",\n        \"# Copy over MuJoCo license\\n\",\n        \"!echo \\\"$mjkey\\\" \\u003e \\\"$mujoco_dir/mjkey.txt\\\"\\n\",\n        \"\\n\",\n        \"# Install dm_control\\n\",\n        \"!pip install dm_control[locomotion_mazes]\\n\",\n        \"\\n\",\n        \"# Configure dm_control to use the OSMesa rendering backend\\n\",\n        \"%env MUJOCO_GL=osmesa\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"IE2nV9Hivnv5\"\n      },\n      \"source\": [\n        \"## Imports\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"RI7NgnJIvs4s\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"import copy\\n\",\n        \"from typing import Sequence\\n\",\n        \"import acme\\n\",\n        \"from acme import specs\\n\",\n        \"from acme.agents.tf import actors\\n\",\n        \"from acme.agents.tf import crr\\n\",\n        \"from acme.tf import networks as acme_networks\\n\",\n        \"from acme.tf import utils as tf2_utils\\n\",\n        \"from acme.utils import loggers\\n\",\n        \"import numpy as np\\n\",\n        \"from rl_unplugged import dm_control_suite\\n\",\n        \"from rl_unplugged import networks\\n\",\n        \"import sonnet as snt\\n\",\n        \"import tensorflow as tf\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"a2PCwF3bwBII\"\n      },\n      \"source\": [\n        \"## Data\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"both\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"VaEJbXjampPy\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"task_name = 'cartpole_swingup' #@param\\n\",\n        \"gs_path = 'gs://rl_unplugged/dm_control_suite'\\n\",\n        \"\\n\",\n        \"num_shards_str, = !gsutil ls {gs_path}/{task_name}/* | wc -l\\n\",\n        \"num_shards = int(num_shards_str)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"mQ1as51Mww7X\"\n      },\n      \"source\": [\n        \"## Dataset and environment\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"5kHzJpfcw306\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"batch_size = 256  #@param\\n\",\n        \"\\n\",\n        \"task = dm_control_suite.ControlSuite(task_name)\\n\",\n        \"\\n\",\n        \"environment = task.environment\\n\",\n        \"environment_spec = specs.make_environment_spec(environment)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"T2wd9sHeGrD-\"\n      },\n      \"source\": [\n        \"## Networks\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"Gc2Qsdi7GpCI\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"def make_networks(\\n\",\n        \"    action_spec: specs.BoundedArray,\\n\",\n        \"    policy_lstm_sizes: Sequence[int] = None,\\n\",\n        \"    critic_lstm_sizes: Sequence[int] = None,\\n\",\n        \"    num_components: int = 5,\\n\",\n        \"    vmin: float = 0.,\\n\",\n        \"    vmax: float = 100.,\\n\",\n        \"    num_atoms: int = 21,\\n\",\n        \"):\\n\",\n        \"  \\\"\\\"\\\"Creates recurrent networks with GMM head used by the agents.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  action_size = np.prod(action_spec.shape, dtype=int)\\n\",\n        \"  actor_head = acme_networks.MultivariateGaussianMixture(\\n\",\n        \"      num_components=num_components, num_dimensions=action_size)\\n\",\n        \"\\n\",\n        \"  if policy_lstm_sizes is None:\\n\",\n        \"    policy_lstm_sizes = [1024, 1024]\\n\",\n        \"  if critic_lstm_sizes is None:\\n\",\n        \"    critic_lstm_sizes = [1024, 1024]\\n\",\n        \"\\n\",\n        \"  actor_neck = acme_networks.LayerNormAndResidualMLP(hidden_size=1024,\\n\",\n        \"                                                     num_blocks=4)\\n\",\n        \"  actor_encoder = networks.ControlNetwork(\\n\",\n        \"      proprio_encoder_size=300,\\n\",\n        \"      activation=tf.nn.relu)\\n\",\n        \"\\n\",\n        \"  policy_lstms = [snt.LSTM(s) for s in policy_lstm_sizes]\\n\",\n        \"\\n\",\n        \"  policy_network = snt.DeepRNN([actor_encoder, actor_neck] + policy_lstms +\\n\",\n        \"                               [actor_head])\\n\",\n        \"\\n\",\n        \"  critic_encoder = networks.ControlNetwork(\\n\",\n        \"      proprio_encoder_size=400,\\n\",\n        \"      activation=tf.nn.relu)\\n\",\n        \"  critic_neck = acme_networks.LayerNormAndResidualMLP(\\n\",\n        \"      hidden_size=1024, num_blocks=4)\\n\",\n        \"  distributional_head = acme_networks.DiscreteValuedHead(\\n\",\n        \"      vmin=vmin, vmax=vmax, num_atoms=num_atoms)\\n\",\n        \"  critic_lstms = [snt.LSTM(s) for s in critic_lstm_sizes]\\n\",\n        \"  critic_network = acme_networks.CriticDeepRNN([critic_encoder, critic_neck] +\\n\",\n        \"                                                critic_lstms + [\\n\",\n        \"                                                    distributional_head,\\n\",\n        \"                                                ])\\n\",\n        \"\\n\",\n        \"  return {\\n\",\n        \"      'policy': policy_network,\\n\",\n        \"      'critic': critic_network,\\n\",\n        \"  }\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"zL1fAYN8GvCf\"\n      },\n      \"source\": [\n        \"## Set up TPU if present\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"V3fQxmeiGtrQ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"try:\\n\",\n        \"  tpu = tf.distribute.cluster_resolver.TPUClusterResolver()  # TPU detection\\n\",\n        \"  tf.config.experimental_connect_to_cluster(tpu)\\n\",\n        \"  tf.tpu.experimental.initialize_tpu_system(tpu)\\n\",\n        \"  accelerator_strategy = snt.distribute.TpuReplicator()\\n\",\n        \"  print('Running on TPU ', tpu.cluster_spec().as_dict()['worker'])\\n\",\n        \"except ValueError:\\n\",\n        \"  print('Running on CPU or GPU (no TPUs available)')\\n\",\n        \"  accelerator_strategy = snt.distribute.Replicator()\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"adb0cyE5qu9G\"\n      },\n      \"source\": [\n        \"## CRR learner\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"83naOY7a_A4I\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"action_spec = environment_spec.actions\\n\",\n        \"action_size = np.prod(action_spec.shape, dtype=int)\\n\",\n        \"\\n\",\n        \"with accelerator_strategy.scope():\\n\",\n        \"  dataset = dm_control_suite.dataset(\\n\",\n        \"    'gs://rl_unplugged/',\\n\",\n        \"    data_path=task.data_path,\\n\",\n        \"    shapes=task.shapes,\\n\",\n        \"    uint8_features=task.uint8_features,\\n\",\n        \"    num_threads=1,\\n\",\n        \"    batch_size=batch_size,\\n\",\n        \"    num_shards=num_shards,\\n\",\n        \"    sarsa=False)\\n\",\n        \"  # CRR learner assumes that the dataset samples don't have metadata,\\n\",\n        \"  # so let's remove it here.\\n\",\n        \"  dataset = dataset.map(lambda sample: sample.data)\\n\",\n        \"  nets = make_networks(action_spec)\\n\",\n        \"  policy_network, critic_network = nets['policy'], nets['critic']\\n\",\n        \"\\n\",\n        \"  # Create the target networks\\n\",\n        \"  target_policy_network = copy.deepcopy(policy_network)\\n\",\n        \"  target_critic_network = copy.deepcopy(critic_network)\\n\",\n        \"\\n\",\n        \"  # Create variables.\\n\",\n        \"  tf2_utils.create_variables(network=policy_network,\\n\",\n        \"                            input_spec=[environment_spec.observations])\\n\",\n        \"  tf2_utils.create_variables(network=critic_network,\\n\",\n        \"                            input_spec=[environment_spec.observations,\\n\",\n        \"                                        environment_spec.actions])\\n\",\n        \"  tf2_utils.create_variables(network=target_policy_network,\\n\",\n        \"                            input_spec=[environment_spec.observations])\\n\",\n        \"  tf2_utils.create_variables(network=target_critic_network,\\n\",\n        \"                            input_spec=[environment_spec.observations,\\n\",\n        \"                                        environment_spec.actions])\\n\",\n        \"\\n\",\n        \"# The learner updates the parameters (and initializes them).\\n\",\n        \"learner = crr.RCRRLearner(\\n\",\n        \"    policy_network=policy_network,\\n\",\n        \"    critic_network=critic_network,\\n\",\n        \"    accelerator_strategy=accelerator_strategy,\\n\",\n        \"    target_policy_network=target_policy_network,\\n\",\n        \"    target_critic_network=target_critic_network,\\n\",\n        \"    dataset=dataset,\\n\",\n        \"    discount=0.99,\\n\",\n        \"    target_update_period=100)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"PYkjKaduy_xj\"\n      },\n      \"source\": [\n        \"## Training loop\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"HbQOyCG4zCwa\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Run\\n\",\n        \"#   tf.config.run_functions_eagerly(True)\\n\",\n        \"# if you want to debug the code in eager mode.\\n\",\n        \"\\n\",\n        \"for _ in range(100):\\n\",\n        \"  learner.step()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"LJ_XsuQSzFSV\"\n      },\n      \"source\": [\n        \"## Evaluation\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"blvNCANKb22J\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create a logger.\\n\",\n        \"logger = loggers.TerminalLogger(label='evaluation', time_delta=1.)\\n\",\n        \"\\n\",\n        \"# Create an environment loop.\\n\",\n        \"loop = acme.EnvironmentLoop(\\n\",\n        \"    environment=environment,\\n\",\n        \"    actor=actors.DeprecatedRecurrentActor(policy_network),\\n\",\n        \"    logger=logger)\\n\",\n        \"\\n\",\n        \"loop.run(5)\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"last_runtime\": {\n        \"build_target\": \"\",\n        \"kind\": \"local\"\n      },\n      \"name\": \"RL Unplugged: Offline CRR - DM control\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1OerSIsTjv4d3rQCjAsi0ljPaLan87juJ\",\n          \"timestamp\": 1593080049369\n        }\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "rl_unplugged/dm_control_suite_d4pg.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"KDiJzbb8KFvP\"\n      },\n      \"source\": [\n        \"Copyright 2020 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n\",\n        \"this file except in compliance with the License. You may obtain a copy of the\\n\",\n        \"License at\\n\",\n        \"\\n\",\n        \"[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software distributed\\n\",\n        \"under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR\\n\",\n        \"CONDITIONS OF ANY KIND, either express or implied. See the License for the\\n\",\n        \"specific language governing permissions and limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"zzJlIvx4tnrM\"\n      },\n      \"source\": [\n        \"# RL Unplugged: Offline D4PG - DM control\\n\",\n        \"\\n\",\n        \"## Guide to  training an Acme D4PG agent on DM control data.\\n\",\n        \"# \\u003ca href=\\\"https://colab.research.google.com/github/deepmind/deepmind-research/blob/master/rl_unplugged/dm_control_suite_d4pg.ipynb\\\" target=\\\"_parent\\\"\\u003e\\u003cimg src=\\\"https://colab.research.google.com/assets/colab-badge.svg\\\" alt=\\\"Open In Colab\\\"/\\u003e\\u003c/a\\u003e\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"o1eig5zGEL4y\"\n      },\n      \"source\": [\n        \"## Installation\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"WbpMoLbgEL41\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!pip install dm-acme\\n\",\n        \"!pip install dm-acme[reverb]\\n\",\n        \"!pip install dm-acme[tf]\\n\",\n        \"!pip install dm-sonnet\\n\",\n        \"!git clone https://github.com/deepmind/deepmind-research.git\\n\",\n        \"%cd deepmind-research\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"04bMANoeEPM3\"\n      },\n      \"source\": [\n        \"### dm_control\\n\",\n        \"\\n\",\n        \"More detailed instructions in [this tutorial](https://colab.research.google.com/github/deepmind/dm_control/blob/master/tutorial.ipynb#scrollTo=YvyGCsgSCxHQ).\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"VEEj3Qw60y73\"\n      },\n      \"source\": [\n        \"#### Institutional MuJoCo license.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"both\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"IbZxYDxzoz5R\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Edit and run\\n\",\n        \"mjkey = \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"REPLACE THIS LINE WITH YOUR MUJOCO LICENSE KEY\\n\",\n        \"\\n\",\n        \"\\\"\\\"\\\".strip()\\n\",\n        \"\\n\",\n        \"mujoco_dir = \\\"$HOME/.mujoco\\\"\\n\",\n        \"\\n\",\n        \"# Install OpenGL deps\\n\",\n        \"!apt-get update \\u0026\\u0026 apt-get install -y --no-install-recommends \\\\\\n\",\n        \"  libgl1-mesa-glx libosmesa6 libglew2.0\\n\",\n        \"\\n\",\n        \"# Fetch MuJoCo binaries from Roboti\\n\",\n        \"!wget -q https://www.roboti.us/download/mujoco200_linux.zip -O mujoco.zip\\n\",\n        \"!unzip -o -q mujoco.zip -d \\\"$mujoco_dir\\\"\\n\",\n        \"\\n\",\n        \"# Copy over MuJoCo license\\n\",\n        \"!echo \\\"$mjkey\\\" \\u003e \\\"$mujoco_dir/mjkey.txt\\\"\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"# Configure dm_control to use the OSMesa rendering backend\\n\",\n        \"%env MUJOCO_GL=osmesa\\n\",\n        \"\\n\",\n        \"# Install dm_control\\n\",\n        \"!pip install dm_control\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"-_7tVg-zzjzW\"\n      },\n      \"source\": [\n        \"#### Machine-locked MuJoCo license.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"OvMLEDE-D9oF\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Add your MuJoCo License and run\\n\",\n        \"mjkey = \\\"\\\"\\\"\\n\",\n        \"\\\"\\\"\\\".strip()\\n\",\n        \"\\n\",\n        \"mujoco_dir = \\\"$HOME/.mujoco\\\"\\n\",\n        \"\\n\",\n        \"# Install OpenGL dependencies\\n\",\n        \"!apt-get update \\u0026\\u0026 apt-get install -y --no-install-recommends \\\\\\n\",\n        \"  libgl1-mesa-glx libosmesa6 libglew2.0\\n\",\n        \"\\n\",\n        \"# Get MuJoCo binaries\\n\",\n        \"!wget -q https://www.roboti.us/download/mujoco200_linux.zip -O mujoco.zip\\n\",\n        \"!unzip -o -q mujoco.zip -d \\\"$mujoco_dir\\\"\\n\",\n        \"\\n\",\n        \"# Copy over MuJoCo license\\n\",\n        \"!echo \\\"$mjkey\\\" \\u003e \\\"$mujoco_dir/mjkey.txt\\\"\\n\",\n        \"\\n\",\n        \"# Install dm_control\\n\",\n        \"!pip install dm_control[locomotion_mazes]\\n\",\n        \"\\n\",\n        \"# Configure dm_control to use the OSMesa rendering backend\\n\",\n        \"%env MUJOCO_GL=osmesa\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"IE2nV9Hivnv5\"\n      },\n      \"source\": [\n        \"## Imports\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"RI7NgnJIvs4s\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"import collections\\n\",\n        \"import copy\\n\",\n        \"from typing import Mapping, Sequence\\n\",\n        \"\\n\",\n        \"import acme\\n\",\n        \"from acme import specs\\n\",\n        \"from acme.agents.tf import actors\\n\",\n        \"from acme.agents.tf import d4pg\\n\",\n        \"from acme.tf import networks\\n\",\n        \"from acme.tf import utils as tf2_utils\\n\",\n        \"from acme.utils import loggers\\n\",\n        \"from acme.wrappers import single_precision\\n\",\n        \"from acme.tf import utils as tf2_utils\\n\",\n        \"import numpy as np\\n\",\n        \"from rl_unplugged import dm_control_suite\\n\",\n        \"import sonnet as snt\\n\",\n        \"import tensorflow as tf\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"a2PCwF3bwBII\"\n      },\n      \"source\": [\n        \"## Data\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"both\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"VaEJbXjampPy\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"task_name = 'cartpole_swingup' #@param\\n\",\n        \"tmp_path = '/tmp/dm_control_suite'\\n\",\n        \"gs_path = 'gs://rl_unplugged/dm_control_suite'\\n\",\n        \"\\n\",\n        \"!mkdir -p {tmp_path}/{task_name}\\n\",\n        \"!gsutil cp {gs_path}/{task_name}/* {tmp_path}/{task_name}\\n\",\n        \"\\n\",\n        \"num_shards_str, = !ls {tmp_path}/{task_name}/* | wc -l\\n\",\n        \"num_shards = int(num_shards_str)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"mQ1as51Mww7X\"\n      },\n      \"source\": [\n        \"## Dataset and environment\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"5kHzJpfcw306\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"batch_size = 10  #@param\\n\",\n        \"\\n\",\n        \"task = dm_control_suite.ControlSuite(task_name)\\n\",\n        \"\\n\",\n        \"environment = task.environment\\n\",\n        \"environment_spec = specs.make_environment_spec(environment)\\n\",\n        \"\\n\",\n        \"dataset = dm_control_suite.dataset(\\n\",\n        \"    '/tmp',\\n\",\n        \"    data_path=task.data_path,\\n\",\n        \"    shapes=task.shapes,\\n\",\n        \"    uint8_features=task.uint8_features,\\n\",\n        \"    num_threads=1,\\n\",\n        \"    batch_size=batch_size,\\n\",\n        \"    num_shards=num_shards)\\n\",\n        \"\\n\",\n        \"def discard_extras(sample):\\n\",\n        \"  return sample._replace(data=sample.data[:5])\\n\",\n        \"\\n\",\n        \"dataset = dataset.map(discard_extras).batch(batch_size)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"adb0cyE5qu9G\"\n      },\n      \"source\": [\n        \"## D4PG learner\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"83naOY7a_A4I\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create the networks to optimize.\\n\",\n        \"action_spec = environment_spec.actions\\n\",\n        \"action_size = np.prod(action_spec.shape, dtype=int)\\n\",\n        \"\\n\",\n        \"policy_network = snt.Sequential([\\n\",\n        \"    tf2_utils.batch_concat,\\n\",\n        \"    networks.LayerNormMLP(layer_sizes=(300, 200, action_size)),\\n\",\n        \"    networks.TanhToSpec(spec=environment_spec.actions)])\\n\",\n        \"\\n\",\n        \"critic_network = snt.Sequential([\\n\",\n        \"    networks.CriticMultiplexer(\\n\",\n        \"        observation_network=tf2_utils.batch_concat,\\n\",\n        \"        action_network=tf.identity,\\n\",\n        \"        critic_network=networks.LayerNormMLP(\\n\",\n        \"            layer_sizes=(400, 300),\\n\",\n        \"            activate_final=True)),\\n\",\n        \"    # Value-head gives a 51-atomed delta distribution over state-action values.\\n\",\n        \"    networks.DiscreteValuedHead(vmin=-150., vmax=150., num_atoms=51)])\\n\",\n        \"\\n\",\n        \"# Create the target networks\\n\",\n        \"target_policy_network = copy.deepcopy(policy_network)\\n\",\n        \"target_critic_network = copy.deepcopy(critic_network)\\n\",\n        \"\\n\",\n        \"# Create variables.\\n\",\n        \"tf2_utils.create_variables(network=policy_network,\\n\",\n        \"                           input_spec=[environment_spec.observations])\\n\",\n        \"tf2_utils.create_variables(network=critic_network,\\n\",\n        \"                           input_spec=[environment_spec.observations,\\n\",\n        \"                                       environment_spec.actions])\\n\",\n        \"tf2_utils.create_variables(network=target_policy_network,\\n\",\n        \"                           input_spec=[environment_spec.observations])\\n\",\n        \"tf2_utils.create_variables(network=target_critic_network,\\n\",\n        \"                           input_spec=[environment_spec.observations,\\n\",\n        \"                                       environment_spec.actions])\\n\",\n        \"\\n\",\n        \"# The learner updates the parameters (and initializes them).\\n\",\n        \"learner = d4pg.D4PGLearner(\\n\",\n        \"    policy_network=policy_network,\\n\",\n        \"    critic_network=critic_network,\\n\",\n        \"    target_policy_network=target_policy_network,\\n\",\n        \"    target_critic_network=target_critic_network,\\n\",\n        \"    dataset=dataset,\\n\",\n        \"    discount=0.99,\\n\",\n        \"    target_update_period=100)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"PYkjKaduy_xj\"\n      },\n      \"source\": [\n        \"## Training loop\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 34\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 3493,\n          \"status\": \"ok\",\n          \"timestamp\": 1593622068277,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"HbQOyCG4zCwa\",\n        \"outputId\": \"cfb99d00-da2d-4ce8-e010-034a26e2ada0\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[Learner] Critic Loss = 3.919 | Policy Loss = 0.326 | Steps = 1 | Walltime = 0\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"for _ in range(100):\\n\",\n        \"  learner.step()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"LJ_XsuQSzFSV\"\n      },\n      \"source\": [\n        \"## Evaluation\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 51\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 4197,\n          \"status\": \"ok\",\n          \"timestamp\": 1593620604870,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"blvNCANKb22J\",\n        \"outputId\": \"af5ae073-9847-45cc-e51e-a803fc2148b0\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[Evaluation] Episode Length = 1000 | Episode Return = 129.717 | Episodes = 2 | Steps = 2000 | Steps Per Second = 1480.399\\n\",\n            \"[Evaluation] Episode Length = 1000 | Episode Return = 34.790 | Episodes = 4 | Steps = 4000 | Steps Per Second = 1449.009\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"# Create a logger.\\n\",\n        \"logger = loggers.TerminalLogger(label='evaluation', time_delta=1.)\\n\",\n        \"\\n\",\n        \"# Create an environment loop.\\n\",\n        \"loop = acme.EnvironmentLoop(\\n\",\n        \"    environment=environment,\\n\",\n        \"    actor=actors.DeprecatedFeedForwardActor(policy_network),\\n\",\n        \"    logger=logger)\\n\",\n        \"\\n\",\n        \"loop.run(5)\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"last_runtime\": {\n        \"build_target\": \"\",\n        \"kind\": \"local\"\n      },\n      \"name\": \"RL Unplugged: Offline D4PG - DM control\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1OerSIsTjv4d3rQCjAsi0ljPaLan87juJ\",\n          \"timestamp\": 1593080049369\n        }\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "rl_unplugged/dm_control_suite_example.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nr\"\"\"DM control suite and locomotion dataset examples.\n\nExample:\nInstructions:\n> export TMP_PATH=/tmp/dataset\n> export TASK_NAME=humanoid_run\n> mkdir -p $TMP_PATH/$TASK_NAME\n> gsutil cp gs://rl_unplugged/dm_control_suite/$TASK_NAME/train-00000-of-00100 \\\n$TMP_PATH/dm_control_suite/$TASK_NAME/train-00000-of-00001\n> python dm_control_suite_example.py --path=$TMP_PATH \\\n--task_class=control_suite --task_name=$TASK_NAME\n\"\"\"\n\nfrom absl import app\nfrom absl import flags\nimport tree\n\nfrom rl_unplugged import dm_control_suite\n\nflags.DEFINE_string('path', '/tmp/dataset', 'Path to dataset.')\nflags.DEFINE_string('task_name', 'humanoid_run', 'Game.')\nflags.DEFINE_enum('task_class', 'control_suite',\n                  ['humanoid', 'rodent', 'control_suite'],\n                  'Task classes.')\n\nFLAGS = flags.FLAGS\n\n\ndef main(_):\n\n  if FLAGS.task_class == 'control_suite':\n    task = dm_control_suite.ControlSuite(task_name=FLAGS.task_name)\n  elif FLAGS.task_class == 'humanoid':\n    task = dm_control_suite.CmuThirdParty(task_name=FLAGS.task_name)\n  elif FLAGS.task_class == 'rodent':\n    task = dm_control_suite.Rodent(task_name=FLAGS.task_name)\n\n  ds = dm_control_suite.dataset(root_path=FLAGS.path,\n                                data_path=task.data_path,\n                                shapes=task.shapes,\n                                num_threads=1,\n                                batch_size=2,\n                                uint8_features=task.uint8_features,\n                                num_shards=1,\n                                shuffle_buffer_size=10)\n\n  for sample in ds.take(1):\n    print('Data spec')\n    print(tree.map_structure(lambda x: (x.dtype, x.shape), sample.data))\n\n  environment = task.environment\n  timestep = environment.reset()\n  print(tree.map_structure(lambda x: (x.dtype, x.shape), timestep.observation))\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "rl_unplugged/dmlab_r2d2.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"pdgOfM42e7in\"\n      },\n      \"source\": [\n        \"Copyright 2021 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n\",\n        \"this file except in compliance with the License. You may obtain a copy of the\\n\",\n        \"License at\\n\",\n        \"\\n\",\n        \"[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software distributed\\n\",\n        \"under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR\\n\",\n        \"CONDITIONS OF ANY KIND, either express or implied. See the License for the\\n\",\n        \"specific language governing permissions and limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"WOzmAie8e-NK\"\n      },\n      \"source\": [\n        \"# RL Unplugged: Offline R2D2 - DeepMind Lab\\n\",\n        \"\\n\",\n        \"## A Colab example of an Acme R2D2 agent on DeepMind Lab data.\\n\",\n        \"# \\u003ca href=\\\"https://colab.research.google.com/github/deepmind/deepmind_research/blob/master/rl_unplugged/dmlab_r2d2.ipynb\\\" target=\\\"_parent\\\"\\u003e\\u003cimg src=\\\"https://colab.research.google.com/assets/colab-badge.svg\\\" alt=\\\"Open In Colab\\\"/\\u003e\\u003c/a\\u003e\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"tr2MoADAQepq\"\n      },\n      \"source\": [\n        \"## Installation\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"SvWeEWGd5Nx_\"\n      },\n      \"source\": [\n        \"### External dependencies\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"fTuqZxDv4v0y\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!apt-get install libsdl2-dev\\n\",\n        \"!apt-get install libosmesa6-dev\\n\",\n        \"!apt-get install libffi-dev\\n\",\n        \"!apt-get install gettext\\n\",\n        \"!apt-get install python3-numpy-dev python3-dev\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"ewPoBUDd04xh\"\n      },\n      \"source\": [\n        \"### Bazel\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"ewVV3-Oh0sBm\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"BAZEL_VERSION = '3.6.0'\\n\",\n        \"!wget https://github.com/bazelbuild/bazel/releases/download/{BAZEL_VERSION}/bazel-{BAZEL_VERSION}-installer-linux-x86_64.sh\\n\",\n        \"!chmod +x bazel-{BAZEL_VERSION}-installer-linux-x86_64.sh\\n\",\n        \"!./bazel-{BAZEL_VERSION}-installer-linux-x86_64.sh\\n\",\n        \"!bazel --version\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"fwdmJWW3KB7g\"\n      },\n      \"source\": [\n        \"### DeepMind Lab\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Ng9xopirzVYA\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!git clone https://github.com/deepmind/lab.git\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"NeO57QYqDG-L\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"%%writefile lab/bazel/python.BUILD\\n\",\n        \"\\n\",\n        \"# Description:\\n\",\n        \"#   Build rule for Python and Numpy.\\n\",\n        \"#   This rule works for Debian and Ubuntu. Other platforms might keep the\\n\",\n        \"#   headers in different places, cf. 'How to build DeepMind Lab' in build.md.\\n\",\n        \"\\n\",\n        \"cc_library(\\n\",\n        \"    name = \\\"python\\\",\\n\",\n        \"    hdrs = select(\\n\",\n        \"        {\\n\",\n        \"            \\\"@bazel_tools//tools/python:PY3\\\": glob([\\n\",\n        \"                \\\"usr/include/python3.6m/*.h\\\",\\n\",\n        \"                \\\"usr/local/lib/python3.6/dist-packages/numpy/core/include/numpy/*.h\\\",\\n\",\n        \"            ]),\\n\",\n        \"        },\\n\",\n        \"        no_match_error = \\\"Internal error, Python version should be one of PY2 or PY3\\\",\\n\",\n        \"    ),\\n\",\n        \"    includes = select(\\n\",\n        \"        {\\n\",\n        \"            \\\"@bazel_tools//tools/python:PY3\\\": [\\n\",\n        \"                \\\"usr/include/python3.6m\\\",\\n\",\n        \"                \\\"usr/local/lib/python3.6/dist-packages/numpy/core/include\\\",\\n\",\n        \"            ],\\n\",\n        \"        },\\n\",\n        \"        no_match_error = \\\"Internal error, Python version should be one of PY2 or PY3\\\",\\n\",\n        \"    ),\\n\",\n        \"    visibility = [\\\"//visibility:public\\\"],\\n\",\n        \")\\n\",\n        \"\\n\",\n        \"alias(\\n\",\n        \"    name = \\\"python_headers\\\",\\n\",\n        \"    actual = \\\":python\\\",\\n\",\n        \"    visibility = [\\\"//visibility:public\\\"],\\n\",\n        \")\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"pRuLCRzpzX8E\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!cd lab \\u0026\\u0026 bazel build -c opt --python_version=PY3 //python/pip_package:build_pip_package\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Oen2E99T0E58\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!cd lab \\u0026\\u0026 ./bazel-bin/python/pip_package/build_pip_package /tmp/dmlab_pkg\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"okrzzmrC0H_O\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!pip install /tmp/dmlab_pkg/deepmind_lab-1.0-py3-none-any.whl --force-reinstall\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"hq-VGgvbRKSI\"\n      },\n      \"source\": [\n        \"### Python dependencies\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"8Fme7zxOKejg\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!pip install dm_env\\n\",\n        \"!pip install dm-acme[reverb]\\n\",\n        \"!pip install dm-acme[tf]\\n\",\n        \"!pip install dm-sonnet\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"Rfd4jQGFt-HB\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Upgrade to recent commit for latest R2D2 learner.\\n\",\n        \"!pip install --upgrade git+https://github.com/deepmind/acme.git@3dfda9d392312d948906e6c567c7f56d8c911de5\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"DvicrJPBqemz\"\n      },\n      \"source\": [\n        \"## Imports and Utils\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"_8qxA0KLU468\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title Imports\\n\",\n        \"import copy\\n\",\n        \"import functools\\n\",\n        \"\\n\",\n        \"from acme import environment_loop\\n\",\n        \"from acme import specs\\n\",\n        \"from acme.adders import reverb as acme_reverb\\n\",\n        \"from acme.agents.tf import actors\\n\",\n        \"from acme.agents.tf.r2d2 import learning as r2d2\\n\",\n        \"from acme.tf import utils as tf_utils\\n\",\n        \"from acme.tf import networks\\n\",\n        \"from acme.utils import loggers\\n\",\n        \"from acme.wrappers import observation_action_reward\\n\",\n        \"import tree\\n\",\n        \"\\n\",\n        \"import deepmind_lab\\n\",\n        \"import dm_env\\n\",\n        \"import numpy as np\\n\",\n        \"import reverb\\n\",\n        \"import sonnet as snt\\n\",\n        \"import tensorflow as tf\\n\",\n        \"import trfl\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"becmQVMMuCRU\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title Environment\\n\",\n        \"\\n\",\n        \"_ACTION_MAP = {\\n\",\n        \"    0: (0, 0, 0, 1, 0, 0, 0),\\n\",\n        \"    1: (0, 0, 0, -1, 0, 0, 0),\\n\",\n        \"    2: (0, 0, -1, 0, 0, 0, 0),\\n\",\n        \"    3: (0, 0, 1, 0, 0, 0, 0),\\n\",\n        \"    4: (-10, 0, 0, 0, 0, 0, 0),\\n\",\n        \"    5: (10, 0, 0, 0, 0, 0, 0),\\n\",\n        \"    6: (-60, 0, 0, 0, 0, 0, 0),\\n\",\n        \"    7: (60, 0, 0, 0, 0, 0, 0),\\n\",\n        \"    8: (0, 10, 0, 0, 0, 0, 0),\\n\",\n        \"    9: (0, -10, 0, 0, 0, 0, 0),\\n\",\n        \"    10: (-10, 0, 0, 1, 0, 0, 0),\\n\",\n        \"    11: (10, 0, 0, 1, 0, 0, 0),\\n\",\n        \"    12: (-60, 0, 0, 1, 0, 0, 0),\\n\",\n        \"    13: (60, 0, 0, 1, 0, 0, 0),\\n\",\n        \"    14: (0, 0, 0, 0, 1, 0, 0),\\n\",\n        \"}\\n\",\n        \"\\n\",\n        \"class DeepMindLabEnvironment(dm_env.Environment):\\n\",\n        \"  \\\"\\\"\\\"DeepMind Lab environment.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  def __init__(self, level_name: str, action_repeats: int = 4):\\n\",\n        \"    \\\"\\\"\\\"Construct environment.\\n\",\n        \"\\n\",\n        \"    Args:\\n\",\n        \"      level_name: DeepMind lab level name (e.g. 'rooms_watermaze').\\n\",\n        \"      action_repeats: Number of times the same action is repeated on every\\n\",\n        \"        step().\\n\",\n        \"    \\\"\\\"\\\"\\n\",\n        \"    config = dict(fps='30',\\n\",\n        \"                  height='72',\\n\",\n        \"                  width='96',\\n\",\n        \"                  maxAltCameraHeight='1',\\n\",\n        \"                  maxAltCameraWidth='1',\\n\",\n        \"                  hasAltCameras='false')\\n\",\n        \"\\n\",\n        \"    # seekavoid_arena_01 is not part of dmlab30.\\n\",\n        \"    if level_name != 'seekavoid_arena_01':\\n\",\n        \"      level_name = 'contributed/dmlab30/{}'.format(level_name)\\n\",\n        \"\\n\",\n        \"    self._lab = deepmind_lab.Lab(level_name, ['RGB_INTERLEAVED'], config)\\n\",\n        \"    self._action_repeats = action_repeats\\n\",\n        \"    self._reward = 0\\n\",\n        \"\\n\",\n        \"  def _observation(self):\\n\",\n        \"    last_action = getattr(self, '_action', 0)\\n\",\n        \"    last_reward = getattr(self, '_reward', 0)\\n\",\n        \"    self._last_observation = observation_action_reward.OAR(\\n\",\n        \"        observation=self._lab.observations()['RGB_INTERLEAVED'],\\n\",\n        \"        action=np.array(last_action, dtype=np.int64),\\n\",\n        \"        reward=np.array(last_reward, dtype=np.float32))\\n\",\n        \"    return self._last_observation\\n\",\n        \"\\n\",\n        \"  def reset(self):\\n\",\n        \"    self._lab.reset()\\n\",\n        \"    return dm_env.restart(self._observation())\\n\",\n        \"\\n\",\n        \"  def step(self, action):\\n\",\n        \"    if not self._lab.is_running():\\n\",\n        \"      return dm_env.restart(self.reset())\\n\",\n        \"\\n\",\n        \"    self._action = action.item()\\n\",\n        \"    if self._action not in _ACTION_MAP:\\n\",\n        \"      raise ValueError('Action not available')\\n\",\n        \"    lab_action = np.array(_ACTION_MAP[self._action], dtype=np.intc)\\n\",\n        \"    self._reward = self._lab.step(lab_action, num_steps=self._action_repeats)\\n\",\n        \"\\n\",\n        \"    if self._lab.is_running():\\n\",\n        \"      return dm_env.transition(self._reward, self._observation())\\n\",\n        \"    return dm_env.termination(self._reward, self._last_observation)\\n\",\n        \"\\n\",\n        \"  def observation_spec(self):\\n\",\n        \"    return observation_action_reward.OAR(\\n\",\n        \"        observation=dm_env.specs.Array(shape=(72, 96, 3), dtype=np.uint8),\\n\",\n        \"        action=dm_env.specs.Array(shape=(), dtype=np.int64),\\n\",\n        \"        reward=dm_env.specs.Array(shape=(), dtype=np.float32))\\n\",\n        \"\\n\",\n        \"  def action_spec(self):\\n\",\n        \"    return dm_env.specs.DiscreteArray(num_values=15, dtype=np.int64)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"id\": \"4ms1TBjDSXr0\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# @title Dataset\\n\",\n        \"\\n\",\n        \"def _decode_images(pngs):\\n\",\n        \"  \\\"\\\"\\\"Decode tensor of PNGs.\\\"\\\"\\\"\\n\",\n        \"  decode_rgb_png = functools.partial(tf.io.decode_png, channels=3)\\n\",\n        \"  images = tf.map_fn(decode_rgb_png, pngs, dtype=tf.uint8,\\n\",\n        \"                     parallel_iterations=10)\\n\",\n        \"  # [N, 72, 96, 3]\\n\",\n        \"  images.set_shape((pngs.shape[0], 72, 96, 3))\\n\",\n        \"  return images\\n\",\n        \"\\n\",\n        \"def _tf_example_to_step_ds(tf_example: tf.train.Example,\\n\",\n        \"                           episode_length: int) -\\u003e reverb.ReplaySample:\\n\",\n        \"  \\\"\\\"\\\"Create a Reverb replay sample from a TF example.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  # Parse tf.Example.\\n\",\n        \"  def sequence_feature(shape, dtype=tf.float32):\\n\",\n        \"    return tf.io.FixedLenFeature(shape=[episode_length] + shape, dtype=dtype)\\n\",\n        \"\\n\",\n        \"  feature_description = {\\n\",\n        \"      'episode_id': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"      'start_idx': tf.io.FixedLenFeature([], tf.int64),\\n\",\n        \"      'episode_return': tf.io.FixedLenFeature([], tf.float32),\\n\",\n        \"      'observations_pixels': sequence_feature([], tf.string),\\n\",\n        \"      'observations_reward': sequence_feature([]),\\n\",\n        \"      # actions are one-hot arrays.\\n\",\n        \"      'observations_action': sequence_feature([15]),\\n\",\n        \"      'actions': sequence_feature([], tf.int64),\\n\",\n        \"      'rewards': sequence_feature([]),\\n\",\n        \"      'discounted_rewards': sequence_feature([]),\\n\",\n        \"      'discounts': sequence_feature([]),\\n\",\n        \"  }\\n\",\n        \"\\n\",\n        \"  data = tf.io.parse_single_example(tf_example, feature_description)\\n\",\n        \"  pixels = _decode_images(data['observations_pixels'])\\n\",\n        \"\\n\",\n        \"  observation = observation_action_reward.OAR(\\n\",\n        \"      observation=pixels,\\n\",\n        \"      action=tf.argmax(data['observations_action'],\\n\",\n        \"                       axis=1, output_type=tf.int64),\\n\",\n        \"      reward=data['observations_reward'])\\n\",\n        \"\\n\",\n        \"  data = acme_reverb.Step(\\n\",\n        \"      observation=observation,\\n\",\n        \"      action=data['actions'],\\n\",\n        \"      reward=data['rewards'],\\n\",\n        \"      discount=data['discounts'],\\n\",\n        \"      start_of_episode=tf.zeros((episode_length,), tf.bool),\\n\",\n        \"      extras={})\\n\",\n        \"\\n\",\n        \"  # Keys are all zero and probabilities are all one.\\n\",\n        \"  info = reverb.SampleInfo(key=tf.zeros((episode_length,), tf.int64),\\n\",\n        \"                           probability=tf.ones((episode_length,), tf.float32),\\n\",\n        \"                           table_size=tf.zeros((episode_length,), tf.int64),\\n\",\n        \"                           priority=tf.ones((episode_length,), tf.float32))\\n\",\n        \"  sample = reverb.ReplaySample(info=info, data=data)\\n\",\n        \"  return tf.data.Dataset.from_tensor_slices(sample)\\n\",\n        \"\\n\",\n        \"def subsequences(step_ds: tf.data.Dataset,\\n\",\n        \"                 length: int, shift: int = 1\\n\",\n        \"                 ) -\\u003e tf.data.Dataset:\\n\",\n        \"  \\\"\\\"\\\"Dataset of subsequences from a dataset of episode steps.\\\"\\\"\\\"\\n\",\n        \"  window_ds = step_ds.window(length, shift=shift, stride=1)\\n\",\n        \"  return window_ds.interleave(_nest_ds).batch(length, drop_remainder=True)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def _nest_ds(nested_ds: tf.data.Dataset) -\\u003e tf.data.Dataset:\\n\",\n        \"  \\\"\\\"\\\"Produces a dataset of nests from a nest of datasets of the same size.\\\"\\\"\\\"\\n\",\n        \"  flattened_ds = tuple(tree.flatten(nested_ds))\\n\",\n        \"  zipped_ds = tf.data.Dataset.zip(flattened_ds)\\n\",\n        \"  return zipped_ds.map(lambda *x: tree.unflatten_as(nested_ds, x))\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def make_dataset(path: str,\\n\",\n        \"                 episode_length: int,\\n\",\n        \"                 sequence_length: int,\\n\",\n        \"                 sequence_shift: int,\\n\",\n        \"                 num_shards: int = 500) -\\u003e tf.data.Dataset:\\n\",\n        \"  \\\"\\\"\\\"Create dataset of DeepMind Lab sequences.\\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"  filenames = [f'{path}/tfrecord-{i:05d}-of-{num_shards:05d}'\\n\",\n        \"               for i in range(num_shards)]\\n\",\n        \"  file_ds = tf.data.Dataset.from_tensor_slices(filenames)\\n\",\n        \"  file_ds = file_ds.repeat().shuffle(num_shards)\\n\",\n        \"  tfrecord_dataset = functools.partial(tf.data.TFRecordDataset,\\n\",\n        \"                                       compression_type='GZIP')\\n\",\n        \"\\n\",\n        \"  # Dataset of tf.Examples containing full episodes.\\n\",\n        \"  example_ds = file_ds.interleave(tfrecord_dataset)\\n\",\n        \"\\n\",\n        \"  # Dataset of episodes, each represented as a dataset of steps.\\n\",\n        \"  _tf_example_to_step_ds_with_length = functools.partial(\\n\",\n        \"      _tf_example_to_step_ds, episode_length=episode_length)\\n\",\n        \"  episode_ds = example_ds.map(_tf_example_to_step_ds_with_length,\\n\",\n        \"                              num_parallel_calls=tf.data.experimental.AUTOTUNE)\\n\",\n        \"\\n\",\n        \"  # Dataset of sequences.\\n\",\n        \"  training_sequences = functools.partial(subsequences, length=sequence_length,\\n\",\n        \"                                         shift=sequence_shift)\\n\",\n        \"  return episode_ds.interleave(training_sequences)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"sV2vXWAsU5Zg\"\n      },\n      \"source\": [\n        \"## Experiment\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"0F-l-4LolX1c\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# task                            | episode length | run\\n\",\n        \"# ----------------------------------------------------------------------------\\n\",\n        \"# seekavoid_arena_01              | 301            | training_{0..2}\\n\",\n        \"# seekavoid_arena_01              | 301            | snapshot_{0..1}_eps_0.0\\n\",\n        \"# seekavoid_arena_01              | 301            | snapshot_{0..1}_eps_0.01\\n\",\n        \"# seekavoid_arena_01              | 301            | snapshot_{0..1}_eps_0.1\\n\",\n        \"# seekavoid_arena_01              | 301            | snapshot_{0..1}_eps_0.25\\n\",\n        \"# explore_object_rewards_few      | 1351           | training_{0..2}\\n\",\n        \"# explore_object_rewards_many     | 1801           | training_{0..2}\\n\",\n        \"# rooms_select_nonmatching_object | 181            | training_{0..2}\\n\",\n        \"# rooms_watermaze                 | 1801           | training_{0..2}\\n\",\n        \"\\n\",\n        \"TASK = 'seekavoid_arena_01'\\n\",\n        \"RUN = 'training_0'\\n\",\n        \"EPISODE_LENGTH = 301\\n\",\n        \"BATCH_SIZE = 1\\n\",\n        \"DATASET_PATH = f'gs://rl_unplugged/dmlab/{TASK}/{RUN}'\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"H7YN_qwDVPqQ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"environment = DeepMindLabEnvironment(TASK, action_repeats=2)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"-B25Lcgt8JD4\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"dataset = make_dataset(DATASET_PATH, num_shards=500,\\n\",\n        \"                       episode_length=EPISODE_LENGTH,\\n\",\n        \"                       sequence_length=120,\\n\",\n        \"                       sequence_shift=40)\\n\",\n        \"dataset = dataset.padded_batch(BATCH_SIZE, drop_remainder=True)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"gTO61WolqkzG\"\n      },\n      \"source\": [\n        \"### Learning\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"cBFmIYxTtBg4\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create network.\\n\",\n        \"def process_observations(x):\\n\",\n        \"  return x._replace(observation=tf.image.convert_image_dtype(x.observation, tf.float32))\\n\",\n        \"\\n\",\n        \"environment_spec = specs.make_environment_spec(environment)\\n\",\n        \"num_actions = environment_spec.actions.maximum + 1\\n\",\n        \"network = snt.DeepRNN([\\n\",\n        \"    process_observations,\\n\",\n        \"    networks.R2D2AtariNetwork(num_actions=num_actions)\\n\",\n        \"])\\n\",\n        \"tf_utils.create_variables(network, [environment_spec.observations])\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"QLoAU2zwwi3X\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create a logger.\\n\",\n        \"logger = loggers.TerminalLogger(label='learner', time_delta=1.)\\n\",\n        \"\\n\",\n        \"# Create the R2D2 learner.\\n\",\n        \"learner = r2d2.R2D2Learner(\\n\",\n        \"    environment_spec=environment_spec,\\n\",\n        \"    network=network,\\n\",\n        \"    target_network=copy.deepcopy(network),\\n\",\n        \"    discount=0.99,\\n\",\n        \"    learning_rate=1e-4,\\n\",\n        \"    importance_sampling_exponent=0.2,\\n\",\n        \"    target_update_period=100,\\n\",\n        \"    burn_in_length=0,\\n\",\n        \"    sequence_length=120,\\n\",\n        \"    store_lstm_state=False,\\n\",\n        \"    dataset=dataset,\\n\",\n        \"    logger=logger)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"lqMgZS9UWfWl\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"for _ in range(5):\\n\",\n        \"  learner.step()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"eMpO7eBeqmZn\"\n      },\n      \"source\": [\n        \"### Evaluation\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"orUDJVmpA0lU\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create a logger.\\n\",\n        \"logger = loggers.TerminalLogger(label='evaluator', time_delta=1.)\\n\",\n        \"\\n\",\n        \"# Create evaluation loop.\\n\",\n        \"eval_network = snt.DeepRNN([\\n\",\n        \"    network,\\n\",\n        \"    lambda q: trfl.epsilon_greedy(q, epsilon=0.4**8).sample(),\\n\",\n        \"])\\n\",\n        \"eval_loop = environment_loop.EnvironmentLoop(\\n\",\n        \"    environment=environment,\\n\",\n        \"    actor=actors.DeprecatedRecurrentActor(policy_network=eval_network),\\n\",\n        \"    logger=logger)\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"id\": \"6FDsfWVXCcYZ\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"eval_loop.run(2)\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"accelerator\": \"GPU\",\n    \"colab\": {\n      \"collapsed_sections\": [\n        \"tr2MoADAQepq\",\n        \"SvWeEWGd5Nx_\",\n        \"ewPoBUDd04xh\",\n        \"fwdmJWW3KB7g\"\n      ],\n      \"name\": \"RL Unplugged: Offline R2D2 - DeepMind Lab\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1vgfEtkThYTNWHhi3pisuRFxgmoMniuQz\",\n          \"timestamp\": 1605722818242\n        },\n        {\n          \"file_id\": \"/v2/external/notebooks/intro.ipynb\",\n          \"timestamp\": 1602763830869\n        }\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "rl_unplugged/networks.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Networks used for training agents.\n\"\"\"\n\nfrom acme.tf import networks as acme_networks\nfrom acme.tf import utils as tf2_utils\nimport numpy as np\nimport sonnet as snt\nimport tensorflow as tf\n\n\ndef instance_norm_and_elu(x):\n  mean = tf.reduce_mean(x, axis=[1, 2], keepdims=True)\n  x_ = x - mean\n  var = tf.reduce_mean(x_**2, axis=[1, 2], keepdims=True)\n  x_norm = x_ / (var + 1e-6)\n  return tf.nn.elu(x_norm)\n\n\nclass ControlNetwork(snt.Module):\n  \"\"\"Image, proprio and optionally action encoder used for actors and critics.\n  \"\"\"\n\n  def __init__(self,\n               proprio_encoder_size: int,\n               proprio_keys=None,\n               activation=tf.nn.elu):\n    \"\"\"Creates a ControlNetwork.\n\n    Args:\n      proprio_encoder_size: Size of the linear layer for the proprio encoder.\n      proprio_keys: Optional list of names of proprioceptive observations.\n        Defaults to all observations. Note that if this is specified, any\n        observation not contained in proprio_keys will be ignored by the agent.\n      activation: Linear layer activation function.\n    \"\"\"\n    super().__init__(name='control_network')\n    self._activation = activation\n    self._proprio_keys = proprio_keys\n\n    self._proprio_encoder = acme_networks.LayerNormMLP([proprio_encoder_size])\n\n  def __call__(self, inputs, action: tf.Tensor = None, task=None):\n    \"\"\"Evaluates the ControlNetwork.\n\n    Args:\n      inputs:  A dictionary of agent observation tensors.\n      action:  Agent actions.\n      task:    Optional encoding of the task.\n\n    Raises:\n      ValueError: if neither proprio_input is provided.\n      ValueError: if some proprio input looks suspiciously like pixel inputs.\n\n    Returns:\n      Processed network output.\n    \"\"\"\n    if not isinstance(inputs, dict):\n      inputs = {'inputs': inputs}\n\n    proprio_input = []\n    # By default, treat all observations as proprioceptive.\n    if self._proprio_keys is None:\n      self._proprio_keys = list(sorted(inputs.keys()))\n    for key in self._proprio_keys:\n      proprio_input.append(snt.Flatten()(inputs[key]))\n      if np.prod(inputs[key].shape[1:]) > 32*32*3:\n        raise ValueError(\n            'This input does not resemble a proprioceptive '\n            'state: {} with shape {}'.format(\n                key, inputs[key].shape))\n\n    # Append optional action input (i.e. for critic networks).\n    if action is not None:\n      proprio_input.append(action)\n\n    proprio_input = tf2_utils.batch_concat(proprio_input)\n    proprio_state = self._proprio_encoder(proprio_input)\n\n    return proprio_state\n"
  },
  {
    "path": "rl_unplugged/requirements.txt",
    "content": "absl-py==0.9.0\nastunparse==1.6.3\natari-py==0.2.6\ncachetools==4.1.1\ncertifi==2020.6.20\nchardet==3.0.4\ncloudpickle==1.3.0\ndecorator==4.4.2\ndm-acme==0.1.7\ndm-control==0.0.319497192\ndm-env==1.2\ndm-reverb-nightly==0.1.0.dev20200616\ndm-sonnet==2.0.0\ndm-tree==0.1.5\ndopamine-rl==3.1.2\nfuture==0.18.2\ngast==0.3.3\ngin-config==0.3.0\nglfw==1.11.2\ngoogle-auth==1.18.0\ngoogle-auth-oauthlib==0.4.1\ngoogle-pasta==0.2.0\ngrpcio==1.30.0\ngym==0.17.2\nh5py==2.10.0\nidna==2.10\nKeras-Preprocessing==1.1.2\nlxml==4.5.1\nMarkdown==3.2.2\nnumpy==1.19.0\noauthlib==3.1.0\nopencv-python==4.3.0.36\nopt-einsum==3.2.1\nPillow==7.2.0\npkg-resources==0.0.0\nportpicker==1.3.1\nprotobuf==3.12.2\npyasn1==0.4.8\npyasn1-modules==0.2.8\npyglet==1.5.0\nPyOpenGL==3.1.5\npyparsing==2.4.7\nrequests==2.24.0\nrequests-oauthlib==1.3.0\nrsa==4.6\nscipy==1.4.1\nsix==1.15.0\ntabulate==0.8.7\ntb-nightly==2.3.0a20200706\ntensorboard-plugin-wit==1.7.0\ntermcolor==1.1.0\ntf-estimator-nightly==2.4.0.dev2020070701\ntf-nightly==2.3.0.dev20200616\ntfp-nightly==0.11.0.dev20200707\ntrfl==1.1.0\nurllib3==1.25.9\nWerkzeug==1.0.1\nwrapt==1.12.1\n"
  },
  {
    "path": "rl_unplugged/rwrl.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Real World RL for RL Unplugged datasets.\n\nExamples in the dataset represent SARS transitions stored when running a\npartially online trained agent as described in https://arxiv.org/abs/1904.12901.\n\nWe release 8 datasets in total -- with no combined challenge and easy combined\nchallenge on the cartpole, walker, quadruped, and humanoid tasks. For details\non how the dataset was generated, please refer to the paper.\n\nEvery transition in the dataset is a tuple containing the following features:\n\n* o_t: Observation at time t. Observations have been processed using the\n    canonical\n* a_t: Action taken at time t.\n* r_t: Reward at time t.\n* d_t: Discount at time t.\n* o_tp1: Observation at time t+1.\n* a_tp1: Action taken at time t+1. This is set to equal to the last action\n    for the last timestep.\n\nNote that this serves as an example. For optimal data loading speed, consider\nseparating out data preprocessing from the data loading loop during training,\ne.g. saving the preprocessed data.\n\"\"\"\n\nimport collections\nimport functools\nimport os\nfrom typing import Any, Dict, Optional, Sequence\n\nfrom acme import wrappers\nimport dm_env\nimport realworldrl_suite.environments as rwrl_envs\nimport reverb\nimport tensorflow as tf\nimport tree\n\nDELIMITER = ':'\n# Control suite tasks have 1000 timesteps per episode. One additional timestep\n# accounts for the very first observation where no action has been taken yet.\nDEFAULT_NUM_TIMESTEPS = 1001\n\n\ndef _decombine_key(k: str, delimiter: str = DELIMITER) -> Sequence[str]:\n  return k.split(delimiter)\n\n\ndef tf_example_to_feature_description(example,\n                                      num_timesteps=DEFAULT_NUM_TIMESTEPS):\n  \"\"\"Takes a string tensor encoding an tf example and returns its features.\"\"\"\n  if not tf.executing_eagerly():\n    raise AssertionError(\n        'tf_example_to_reverb_sample() only works under eager mode.')\n  example = tf.train.Example.FromString(example.numpy())\n\n  ret = {}\n  for k, v in example.features.feature.items():\n    l = len(v.float_list.value)\n    if l % num_timesteps:\n      raise ValueError('Unexpected feature length %d. It should be divisible '\n                       'by num_timesteps: %d' % (l, num_timesteps))\n    size = l // num_timesteps\n    ret[k] = tf.io.FixedLenFeature([num_timesteps, size], tf.float32)\n  return ret\n\n\ndef tree_deflatten_with_delimiter(\n    flat_dict: Dict[str, Any], delimiter: str = DELIMITER) -> Dict[str, Any]:\n  \"\"\"De-flattens a dict to its originally nested structure.\n\n  Does the opposite of {combine_nested_keys(k) :v\n                        for k, v in tree.flatten_with_path(nested_dicts)}\n  Example: {'a:b': 1} -> {'a': {'b': 1}}\n  Args:\n    flat_dict: the keys of which equals the `path` separated by `delimiter`.\n    delimiter: the delimiter that separates the keys of the nested dict.\n\n  Returns:\n    An un-flattened dict.\n  \"\"\"\n  root = collections.defaultdict(dict)\n  for delimited_key, v in flat_dict.items():\n    keys = _decombine_key(delimited_key, delimiter=delimiter)\n    node = root\n    for k in keys[:-1]:\n      node = node[k]\n    node[keys[-1]] = v\n  return dict(root)\n\n\ndef get_slice_of_nested(nested: Dict[str, Any], start: int,\n                        end: int) -> Dict[str, Any]:\n  return tree.map_structure(lambda item: item[start:end], nested)\n\n\ndef repeat_last_and_append_to_nested(nested: Dict[str, Any]) -> Dict[str, Any]:\n  return tree.map_structure(\n      lambda item: tf.concat((item, item[-1:]), axis=0), nested)\n\n\ndef tf_example_to_reverb_sample(example,\n                                feature_description,\n                                num_timesteps=DEFAULT_NUM_TIMESTEPS):\n  \"\"\"Converts the episode encoded as a tf example into SARSA reverb samples.\"\"\"\n  example = tf.io.parse_single_example(example, feature_description)\n  kv = tree_deflatten_with_delimiter(example)\n  output = (\n      get_slice_of_nested(kv['observation'], 0, num_timesteps - 1),\n      get_slice_of_nested(kv['action'], 1, num_timesteps),\n      kv['reward'][1:num_timesteps],\n      # The two fields below aren't needed for learning,\n      # but are kept here to be compatible with acme learner format.\n      kv['discount'][1:num_timesteps],\n      get_slice_of_nested(kv['observation'], 1, num_timesteps),\n      repeat_last_and_append_to_nested(\n          get_slice_of_nested(kv['action'], 2, num_timesteps)))\n  ret = tf.data.Dataset.from_tensor_slices(output)\n  ret = ret.map(lambda *x: reverb.ReplaySample(info=b'None', data=x))  # pytype: disable=wrong-arg-types\n  return ret\n\n\ndef dataset(path: str,\n            combined_challenge: str,\n            domain: str,\n            task: str,\n            difficulty: str,\n            num_shards: int = 100,\n            shuffle_buffer_size: int = 100000) -> tf.data.Dataset:\n  \"\"\"TF dataset of RWRL SARSA tuples.\"\"\"\n  path = os.path.join(\n      path,\n      f'combined_challenge_{combined_challenge}/{domain}/{task}/'\n      f'offline_rl_challenge_{difficulty}'\n  )\n  filenames = [\n      f'{path}/episodes.tfrecord-{i:05d}-of-{num_shards:05d}'\n      for i in range(num_shards)\n  ]\n  file_ds = tf.data.Dataset.from_tensor_slices(filenames)\n  file_ds = file_ds.repeat().shuffle(num_shards)\n  tf_example_ds = file_ds.interleave(\n      tf.data.TFRecordDataset,\n      cycle_length=tf.data.experimental.AUTOTUNE,\n      block_length=5)\n\n  # Take one item to get the output types and shapes.\n  example_item = None\n  for example_item in tf.data.TFRecordDataset(filenames[:1]).take(1):\n    break\n  if example_item is None:\n    raise ValueError('Empty dataset')\n\n  feature_description = tf_example_to_feature_description(example_item)\n\n  reverb_ds = tf_example_ds.interleave(\n      functools.partial(\n          tf_example_to_reverb_sample, feature_description=feature_description),\n      num_parallel_calls=tf.data.experimental.AUTOTUNE,\n      deterministic=False)\n  reverb_ds = reverb_ds.prefetch(100)\n  reverb_ds = reverb_ds.shuffle(shuffle_buffer_size)\n\n  return reverb_ds\n\n\ndef environment(\n    combined_challenge: str,\n    domain: str,\n    task: str,\n    log_output: Optional[str] = None,\n    environment_kwargs: Optional[Dict[str, Any]] = None) -> dm_env.Environment:\n  \"\"\"RWRL environment.\"\"\"\n  env = rwrl_envs.load(\n      domain_name=domain,\n      task_name=task,\n      log_output=log_output,\n      environment_kwargs=environment_kwargs,\n      combined_challenge=combined_challenge)\n  return wrappers.SinglePrecisionWrapper(env)\n"
  },
  {
    "path": "rl_unplugged/rwrl_d4pg.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"KDiJzbb8KFvP\"\n      },\n      \"source\": [\n        \"Copyright 2020 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n\",\n        \"this file except in compliance with the License. You may obtain a copy of the\\n\",\n        \"License at\\n\",\n        \"\\n\",\n        \"[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software distributed\\n\",\n        \"under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR\\n\",\n        \"CONDITIONS OF ANY KIND, either express or implied. See the License for the\\n\",\n        \"specific language governing permissions and limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"zzJlIvx4tnrM\"\n      },\n      \"source\": [\n        \"# RL Unplugged: Offline D4PG - RWRL\\n\",\n        \"\\n\",\n        \"## Guide to  training an Acme D4PG agent on RWRL data.\\n\",\n        \"# \\u003ca href=\\\"https://colab.research.google.com/github/deepmind/deepmind-research/blob/master/rl_unplugged/rwrl_d4pg.ipynb\\\" target=\\\"_parent\\\"\\u003e\\u003cimg src=\\\"https://colab.research.google.com/assets/colab-badge.svg\\\" alt=\\\"Open In Colab\\\"/\\u003e\\u003c/a\\u003e\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"L6EObDZat-6b\"\n      },\n      \"source\": [\n        \"## Installation\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"GxZogj3guCzN\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!pip install dm-acme\\n\",\n        \"!pip install dm-acme[reverb]\\n\",\n        \"!pip install dm-acme[tf]\\n\",\n        \"!pip install dm-sonnet\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"pDil_q8cDjov\"\n      },\n      \"source\": [\n        \"### MuJoCo\\n\",\n        \"\\n\",\n        \"More detailed instructions in [this tutorial](https://colab.research.google.com/github/deepmind/dm_control/blob/master/tutorial.ipynb#scrollTo=YvyGCsgSCxHQ).\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"VEEj3Qw60y73\"\n      },\n      \"source\": [\n        \"#### Institutional MuJoCo license.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"both\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"IbZxYDxzoz5R\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Edit and run\\n\",\n        \"mjkey = \\\"\\\"\\\"\\n\",\n        \"\\n\",\n        \"REPLACE THIS LINE WITH YOUR MUJOCO LICENSE KEY\\n\",\n        \"\\n\",\n        \"\\\"\\\"\\\".strip()\\n\",\n        \"\\n\",\n        \"mujoco_dir = \\\"$HOME/.mujoco\\\"\\n\",\n        \"\\n\",\n        \"# Install OpenGL deps\\n\",\n        \"!apt-get update \\u0026\\u0026 apt-get install -y --no-install-recommends \\\\\\n\",\n        \"  libgl1-mesa-glx libosmesa6 libglew2.0\\n\",\n        \"\\n\",\n        \"# Fetch MuJoCo binaries from Roboti\\n\",\n        \"!wget -q https://www.roboti.us/download/mujoco200_linux.zip -O mujoco.zip\\n\",\n        \"!unzip -o -q mujoco.zip -d \\\"$mujoco_dir\\\"\\n\",\n        \"\\n\",\n        \"# Copy over MuJoCo license\\n\",\n        \"!echo \\\"$mjkey\\\" \\u003e \\\"$mujoco_dir/mjkey.txt\\\"\\n\",\n        \"\\n\",\n        \"# Configure dm_control to use the OSMesa rendering backend\\n\",\n        \"%env MUJOCO_GL=osmesa\\n\",\n        \"\\n\",\n        \"# Install dm_control\\n\",\n        \"!pip install dm_control\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"-_7tVg-zzjzW\"\n      },\n      \"source\": [\n        \"#### Machine-locked MuJoCo license.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"both\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"ZvCGB5LSr-30\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Add your MuJoCo License and run\\n\",\n        \"mjkey = \\\"\\\"\\\"\\n\",\n        \"\\\"\\\"\\\".strip()\\n\",\n        \"\\n\",\n        \"mujoco_dir = \\\"$HOME/.mujoco\\\"\\n\",\n        \"\\n\",\n        \"# Install OpenGL dependencies\\n\",\n        \"!apt-get update \\u0026\\u0026 apt-get install -y --no-install-recommends \\\\\\n\",\n        \"  libgl1-mesa-glx libosmesa6 libglew2.0\\n\",\n        \"\\n\",\n        \"# Get MuJoCo binaries\\n\",\n        \"!wget -q https://www.roboti.us/download/mujoco200_linux.zip -O mujoco.zip\\n\",\n        \"!unzip -o -q mujoco.zip -d \\\"$mujoco_dir\\\"\\n\",\n        \"\\n\",\n        \"# Copy over MuJoCo license\\n\",\n        \"!echo \\\"$mjkey\\\" \\u003e \\\"$mujoco_dir/mjkey.txt\\\"\\n\",\n        \"\\n\",\n        \"# Configure dm_control to use the OSMesa rendering backend\\n\",\n        \"%env MUJOCO_GL=osmesa\\n\",\n        \"\\n\",\n        \"# Install dm_control, including extra dependencies needed for the locomotion\\n\",\n        \"# mazes.\\n\",\n        \"!pip install dm_control[locomotion_mazes]\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"ZrszOaSSMGiF\"\n      },\n      \"source\": [\n        \"### RWRL\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"Oe5D7pEQAq82\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!git clone https://github.com/google-research/realworldrl_suite.git\\n\",\n        \"!pip install realworldrl_suite/\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"jSr-8p2BA1wl\"\n      },\n      \"source\": [\n        \"### RL Unplugged\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"DGCc6SBaAnyb\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"!git clone https://github.com/deepmind/deepmind-research.git\\n\",\n        \"%cd deepmind-research\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"IE2nV9Hivnv5\"\n      },\n      \"source\": [\n        \"## Imports\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"RI7NgnJIvs4s\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"import collections\\n\",\n        \"import copy\\n\",\n        \"from typing import Mapping, Sequence\\n\",\n        \"\\n\",\n        \"import acme\\n\",\n        \"from acme import specs\\n\",\n        \"from acme.agents.tf import actors\\n\",\n        \"from acme.agents.tf import d4pg\\n\",\n        \"from acme.tf import networks\\n\",\n        \"from acme.tf import utils as tf2_utils\\n\",\n        \"from acme.utils import loggers\\n\",\n        \"from acme.wrappers import single_precision\\n\",\n        \"from acme.tf import utils as tf2_utils\\n\",\n        \"import numpy as np\\n\",\n        \"import realworldrl_suite.environments as rwrl_envs\\n\",\n        \"from reverb import replay_sample\\n\",\n        \"import six\\n\",\n        \"from rl_unplugged import rwrl\\n\",\n        \"import sonnet as snt\\n\",\n        \"import tensorflow as tf\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"a2PCwF3bwBII\"\n      },\n      \"source\": [\n        \"## Data\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"VaEJbXjampPy\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"domain_name = 'cartpole' #@param\\n\",\n        \"task_name = 'swingup'  #@param\\n\",\n        \"difficulty = 'easy'  #@param\\n\",\n        \"combined_challenge = 'easy'  #@param\\n\",\n        \"combined_challenge_str = str(combined_challenge).lower()\\n\",\n        \"\\n\",\n        \"tmp_path = '/tmp/rwrl'\\n\",\n        \"gs_path = f'gs://rl_unplugged/rwrl'\\n\",\n        \"data_path = (f'combined_challenge_{combined_challenge_str}/{domain_name}/'\\n\",\n        \"             f'{task_name}/offline_rl_challenge_{difficulty}')\\n\",\n        \"\\n\",\n        \"!mkdir -p {tmp_path}/{data_path}\\n\",\n        \"!gsutil cp -r {gs_path}/{data_path}/* {tmp_path}/{data_path}\\n\",\n        \"\\n\",\n        \"num_shards_str, = !ls {tmp_path}/{data_path}/* | wc -l\\n\",\n        \"num_shards = int(num_shards_str)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"mQ1as51Mww7X\"\n      },\n      \"source\": [\n        \"## Dataset and environment\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"form\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"K8HnIIi3ywYC\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Auxiliary functions\\n\",\n        \"\\n\",\n        \"def flatten_observation(observation):\\n\",\n        \"  \\\"\\\"\\\"Flattens multiple observation arrays into a single tensor.\\n\",\n        \"\\n\",\n        \"  Args:\\n\",\n        \"    observation: A mutable mapping from observation names to tensors.\\n\",\n        \"\\n\",\n        \"  Returns:\\n\",\n        \"    A flattened and concatenated observation array.\\n\",\n        \"\\n\",\n        \"  Raises:\\n\",\n        \"    ValueError: If `observation` is not a `collections.MutableMapping`.\\n\",\n        \"  \\\"\\\"\\\"\\n\",\n        \"  if not isinstance(observation, collections.MutableMapping):\\n\",\n        \"    raise ValueError('Can only flatten dict-like observations.')\\n\",\n        \"\\n\",\n        \"  if isinstance(observation, collections.OrderedDict):\\n\",\n        \"    keys = six.iterkeys(observation)\\n\",\n        \"  else:\\n\",\n        \"    # Keep a consistent ordering for other mappings.\\n\",\n        \"    keys = sorted(six.iterkeys(observation))\\n\",\n        \"\\n\",\n        \"  observation_arrays = [tf.reshape(observation[key], [-1]) for key in keys]\\n\",\n        \"  return tf.concat(observation_arrays, 0)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"def preprocess_fn(sample):\\n\",\n        \"  o_tm1, a_tm1, r_t, d_t, o_t = sample.data[:5]\\n\",\n        \"  o_tm1 = flatten_observation(o_tm1)\\n\",\n        \"  o_t = flatten_observation(o_t)\\n\",\n        \"  return replay_sample.ReplaySample(\\n\",\n        \"      info=sample.info, data=(o_tm1, a_tm1, r_t, d_t, o_t))\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"5kHzJpfcw306\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"batch_size = 10  #@param\\n\",\n        \"\\n\",\n        \"environment = rwrl_envs.load(\\n\",\n        \"    domain_name=domain_name,\\n\",\n        \"    task_name=f'realworld_{task_name}',\\n\",\n        \"    environment_kwargs=dict(log_safety_vars=False, flat_observation=True),\\n\",\n        \"    combined_challenge=combined_challenge)\\n\",\n        \"environment = single_precision.SinglePrecisionWrapper(environment)\\n\",\n        \"environment_spec = specs.make_environment_spec(environment)\\n\",\n        \"act_spec = environment_spec.actions\\n\",\n        \"obs_spec = environment_spec.observations\\n\",\n        \"\\n\",\n        \"dataset = rwrl.dataset(\\n\",\n        \"    tmp_path,\\n\",\n        \"    combined_challenge=combined_challenge_str,\\n\",\n        \"    domain=domain_name,\\n\",\n        \"    task=task_name,\\n\",\n        \"    difficulty=difficulty,\\n\",\n        \"    num_shards=num_shards,\\n\",\n        \"    shuffle_buffer_size=10)\\n\",\n        \"dataset = dataset.map(preprocess_fn).batch(batch_size)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"adb0cyE5qu9G\"\n      },\n      \"source\": [\n        \"## D4PG learner\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"cellView\": \"both\",\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"CriIaelxqwQg\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"#@title Auxiliary functions\\n\",\n        \"\\n\",\n        \"def make_networks(\\n\",\n        \"    action_spec: specs.BoundedArray,\\n\",\n        \"    hidden_size: int = 1024,\\n\",\n        \"    num_blocks: int = 4,\\n\",\n        \"    num_mixtures: int = 5,\\n\",\n        \"    vmin: float = -150.,\\n\",\n        \"    vmax: float = 150.,\\n\",\n        \"    num_atoms: int = 51,\\n\",\n        \"):\\n\",\n        \"  \\\"\\\"\\\"Creates networks used by the agent.\\\"\\\"\\\"\\n\",\n        \"  num_dimensions = np.prod(action_spec.shape, dtype=int)\\n\",\n        \"\\n\",\n        \"  policy_network = snt.Sequential([\\n\",\n        \"      networks.LayerNormAndResidualMLP(\\n\",\n        \"          hidden_size=hidden_size, num_blocks=num_blocks),\\n\",\n        \"      # Converts the policy output into the same shape as the action spec.\\n\",\n        \"      snt.Linear(num_dimensions),\\n\",\n        \"      # Note that TanhToSpec applies tanh to the input.\\n\",\n        \"      networks.TanhToSpec(action_spec)\\n\",\n        \"  ])\\n\",\n        \"  # The multiplexer concatenates the (maybe transformed) observations/actions.\\n\",\n        \"  critic_network = snt.Sequential([\\n\",\n        \"      networks.CriticMultiplexer(\\n\",\n        \"          critic_network=networks.LayerNormAndResidualMLP(\\n\",\n        \"              hidden_size=hidden_size, num_blocks=num_blocks),\\n\",\n        \"          observation_network=tf2_utils.batch_concat),\\n\",\n        \"      networks.DiscreteValuedHead(vmin, vmax, num_atoms)\\n\",\n        \"  ])\\n\",\n        \"\\n\",\n        \"  return {\\n\",\n        \"      'policy': policy_network,\\n\",\n        \"      'critic': critic_network,\\n\",\n        \"  }\\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"83naOY7a_A4I\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Create the networks to optimize.\\n\",\n        \"online_networks = make_networks(act_spec)\\n\",\n        \"target_networks = copy.deepcopy(online_networks)\\n\",\n        \"\\n\",\n        \"# Create variables.\\n\",\n        \"tf2_utils.create_variables(online_networks['policy'], [obs_spec])\\n\",\n        \"tf2_utils.create_variables(online_networks['critic'], [obs_spec, act_spec])\\n\",\n        \"tf2_utils.create_variables(target_networks['policy'], [obs_spec])\\n\",\n        \"tf2_utils.create_variables(target_networks['critic'], [obs_spec, act_spec])\\n\",\n        \"\\n\",\n        \"# The learner updates the parameters (and initializes them).\\n\",\n        \"learner = d4pg.D4PGLearner(\\n\",\n        \"    policy_network=online_networks['policy'],\\n\",\n        \"    critic_network=online_networks['critic'],\\n\",\n        \"    target_policy_network=target_networks['policy'],\\n\",\n        \"    target_critic_network=target_networks['critic'],\\n\",\n        \"    dataset=dataset,\\n\",\n        \"    discount=0.99,\\n\",\n        \"    target_update_period=100)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"PYkjKaduy_xj\"\n      },\n      \"source\": [\n        \"## Training loop\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 136\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 15293,\n          \"status\": \"ok\",\n          \"timestamp\": 1593617156917,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"HbQOyCG4zCwa\",\n        \"outputId\": \"7a1055c4-4256-41b9-92a6-6fb05af89725\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[Learner] Critic Loss = 4.016 | Policy Loss = 0.500 | Steps = 1 | Walltime = 0\\n\",\n            \"[Learner] Critic Loss = 3.851 | Policy Loss = 0.279 | Steps = 16 | Walltime = 2.165\\n\",\n            \"[Learner] Critic Loss = 3.832 | Policy Loss = 0.190 | Steps = 32 | Walltime = 3.216\\n\",\n            \"[Learner] Critic Loss = 3.744 | Policy Loss = 0.223 | Steps = 48 | Walltime = 4.262\\n\",\n            \"[Learner] Critic Loss = 3.782 | Policy Loss = 0.287 | Steps = 64 | Walltime = 5.305\\n\",\n            \"[Learner] Critic Loss = 3.799 | Policy Loss = 0.315 | Steps = 80 | Walltime = 6.353\\n\",\n            \"[Learner] Critic Loss = 3.796 | Policy Loss = 0.230 | Steps = 96 | Walltime = 7.397\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"for _ in range(100):\\n\",\n        \"  learner.step()\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"LJ_XsuQSzFSV\"\n      },\n      \"source\": [\n        \"## Evaluation\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": null,\n      \"metadata\": {\n        \"colab\": {\n          \"height\": 102\n        },\n        \"colab_type\": \"code\",\n        \"executionInfo\": {\n          \"elapsed\": 21830,\n          \"status\": \"ok\",\n          \"timestamp\": 1593617178762,\n          \"user\": {\n            \"displayName\": \"\",\n            \"photoUrl\": \"\",\n            \"userId\": \"\"\n          },\n          \"user_tz\": -60\n        },\n        \"id\": \"blvNCANKb22J\",\n        \"outputId\": \"b05b7272-78cc-4bef-fe64-b95cc6fe5688\"\n      },\n      \"outputs\": [\n        {\n          \"name\": \"stdout\",\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[Evaluation] Episode Length = 1000 | Episode Return = 135.244 | Episodes = 1 | Steps = 1000 | Steps Per Second = 222.692\\n\",\n            \"[Evaluation] Episode Length = 1000 | Episode Return = 136.972 | Episodes = 2 | Steps = 2000 | Steps Per Second = 233.214\\n\",\n            \"[Evaluation] Episode Length = 1000 | Episode Return = 136.173 | Episodes = 3 | Steps = 3000 | Steps Per Second = 229.496\\n\",\n            \"[Evaluation] Episode Length = 1000 | Episode Return = 146.131 | Episodes = 4 | Steps = 4000 | Steps Per Second = 230.199\\n\",\n            \"[Evaluation] Episode Length = 1000 | Episode Return = 137.818 | Episodes = 5 | Steps = 5000 | Steps Per Second = 232.834\\n\"\n          ]\n        }\n      ],\n      \"source\": [\n        \"# Create a logger.\\n\",\n        \"logger = loggers.TerminalLogger(label='evaluation', time_delta=1.)\\n\",\n        \"\\n\",\n        \"# Create an environment loop.\\n\",\n        \"loop = acme.EnvironmentLoop(\\n\",\n        \"    environment=environment,\\n\",\n        \"    actor=actors.DeprecatedFeedForwardActor(online_networks['policy']),\\n\",\n        \"    logger=logger)\\n\",\n        \"\\n\",\n        \"loop.run(5)\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [\n        \"VEEj3Qw60y73\",\n        \"-_7tVg-zzjzW\"\n      ],\n      \"last_runtime\": {\n        \"build_target\": \"\",\n        \"kind\": \"local\"\n      },\n      \"name\": \"RL Unplugged: Offline D4PG - RWRL\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1OerSIsTjv4d3rQCjAsi0ljPaLan87juJ\",\n          \"timestamp\": 1593080049369\n        }\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 3\",\n      \"name\": \"python3\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "rl_unplugged/rwrl_example.py",
    "content": "# pylint: disable=line-too-long\n# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nr\"\"\"RWRL dataset example.\n\nInstructions:\n> export TMP_PATH=/tmp/dataset/rwrl\n> export DATA_PATH=combined_challenge_easy/quadruped/walk/offline_rl_challenge_easy\n> mkdir -p $TMP_PATH/$DATA_PATH\n> gsutil cp gs://rl_unplugged/rwrl/$DATA_PATH/episodes.tfrecord-00001-of-00015 \\\n$TMP_PATH/$DATA_PATH/episodes.tfrecord-00000-of-00001\n> python rwrl_example.py --path=$TMP_PATH\n\"\"\"\n# pylint: enable=line-too-long\n\nfrom absl import app\nfrom absl import flags\nimport tree\n\nfrom rl_unplugged import rwrl\n\nflags.DEFINE_string('path', '/tmp/dataset', 'Path to dataset.')\n\n\ndef main(_):\n  ds = rwrl.dataset(\n      flags.FLAGS.path,\n      combined_challenge='easy',\n      domain='quadruped',\n      task='walk',\n      difficulty='easy',\n      num_shards=1,\n      shuffle_buffer_size=1)\n  for replay_sample in ds.take(1):\n    print(tree.map_structure(lambda x: (x.dtype, x.shape), replay_sample.data))\n    break\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "satore/Clause.rkt",
    "content": "#lang racket/base\n\n;**************************************************************************************;\n;****            Clause: Clauses With Additional Properties In A Struct            ****;\n;**************************************************************************************;\n\n(require define2\n         define2/define-wrapper\n         racket/format\n         racket/list\n         racket/string\n         satore/clause\n         satore/clause-format\n         satore/misc\n         satore/unification\n         text-table)\n\n(provide (all-defined-out))\n\n;==============;\n;=== Clause ===;\n;==============;\n\n;; TODO: A lot of space is wasted in Clause (boolean flags?)\n;; TODO: What's the best way to gain space without losing time or readability?\n\n;; idx : exact-nonnegative-integer? ; unique id of the Clause.\n;; parents : (listof Clause?) ; The first parent is the 'mother'.\n;; clause : clause? ; the list of literals.\n;; type : symbol? ; How the Clause was generated (loaded from file, input clause, rewrite, resolution,\n;;   factor, etc.)\n;; binary-rewrite-rule? : boolean? ; Initially #false, set to #true if the clause has been added\n;;   (at some point) to the binary rewrite rules (but may not be in the set anymore if subsumed).\n;; candidate? : boolean? ; Whether the clause is currently a candidate (see `saturation` in\n;;   saturation.rkt).\n;; discarded? : boolean? ; whether the Clause has been discarded (see `saturation` in saturation.rkt).\n;; n-literals : exact-nonnegative-integer? ; number of literals in the clause.\n;; size : number? ; tree-size of the clause.\n;; depth : exact-nonnegative-integer? : Number of parents up to the input clauses, when following\n;;   resolutions and factorings.\n;; cost : number? ; Used to sort Clauses in `saturation` (in saturation.rkt).\n(struct Clause (idx\n                parents\n                clause\n                type\n                [binary-rewrite-rule? #:mutable]\n                [candidate? #:mutable]\n                [discarded? #:mutable]\n                n-literals\n                size\n                depth\n                [cost #:mutable])\n  #:prefab)\n\n;; Unique clause index. No two Clauses should have the same index.\n(define-counter clause-index 0)\n\n;; Clause constructor. See the struct Clause for more information.\n;;\n;; parents : (listof Clause?)\n;; candidate? : boolean?\n;; n-literals : exact-nonnegative-integer?\n;; size : number?\n;; depth : exact-nonnegative-integer?\n(define (make-Clause cl\n                     [parents '()]\n                     #:? [type '?]\n                     #:? [candidate? #false]\n                     #:? [n-literals (length cl)]\n                     #:? [size (clause-size cl)]\n                     #:? [depth (if (empty? parents) 1 (+ 1 (Clause-depth (first parents))))])\n  (++clause-index)\n  (when-debug>= steps\n                (define cl2 (clause-normalize cl))  ; costly, hence done only in debug mode\n                (unless (= (tree-size cl) (tree-size cl2))\n                  (displayln \"Assertion failed: clause is in normal form\")\n                  (printf \"Clause (type: ~a):\\n~a\\n\" type (clause->string cl))\n                  (displayln \"Parents:\")\n                  (print-Clauses parents)\n                  (error (format \"Assertion failed: (= (tree-size cl) (tree-size cl2)): ~a ~a\"\n                                 (tree-size cl) (tree-size cl2)))))\n  ; Notice: Variables are ASSUMED freshed. Freshing is not performed here.\n  (Clause clause-index\n          parents\n          cl\n          type\n          #false ; binary-rewrite-rule\n          candidate?\n          #false ; discarded?\n          n-literals\n          size\n          depth ; depth (C0 is of depth 0, axioms are of depth 1)\n          0. ; cost\n          ))\n\n;; Sets the Clause as discarded. Used in `saturation`.\n;;\n;; Clause? -> void?\n(define (discard-Clause! C) (set-Clause-discarded?! C #true))\n\n;; A tautological clause used for as parent of the converse of a unit Clause.\n(define true-Clause (make-Clause (list ltrue)))\n\n;; Returns a  converse Clause of a unit or binary Clause.\n;; These are meant to be temporary.\n;;\n;; C : Clause?\n;; candidate? : boolean?\n;; -> Clause?\n(define (make-converse-Clause C #:? [candidate? #false])\n  (if (unit-Clause? C)\n      true-Clause ; If C has 1 literal A, then C = A | false, and converse is ~A | true = true\n      (make-Clause (fresh (clause-converse (Clause-clause C)))\n                   (list C)\n                   #:type 'converse\n                   #:candidate? candidate?)))\n\n;; List of possible fields for output formatting.\n(define Clause->string-all-fields '(idx parents clause type binary-rw? depth size cost))\n\n;; Returns a tree representation of the Clause, for human reading.\n;; If what is a list, each element is printed (possibly multiple times).\n;; If what is 'all, all fields are printed.\n;;\n;; Clause? (or/c 'all (listof symbol?)) -> list?\n(define (Clause->list C [what '(idx parents clause)])\n  (when (eq? what 'all)\n    (set! what Clause->string-all-fields))\n  (for/list ([w (in-list what)])\n    (case w\n      [(idx)            (~a (Clause-idx C))]\n      [(parents)        (~a (map Clause-idx (Clause-parents C)))]\n      [(clause)         (clause->string (Clause-clause C))]\n      [(clause-pretty)  (clause->string/pretty (Clause-clause C))]\n      [(type)           (~a (Clause-type C))]\n      [(binary-rw?)     (~a (Clause-binary-rewrite-rule? C))]\n      [(depth)          (~r (Clause-depth C))]\n      [(size)           (~r (Clause-size C))]\n      [(cost)           (~r2 (Clause-cost C))])))\n\n;; Returns a string representation of a Clause.\n;;\n;; Clause? (or/c 'all (listof symbol?)) -> string?\n(define (Clause->string C [what '(idx parents clause)])\n  (string-join (Clause->list C what) \" \"))\n\n;; Returns a string representation of a Clause, for displaying a single Clause.\n;;\n;; Clause? (listof symbol?) -> string?\n(define (Clause->string/alone C [what '(idx parents clause)])\n  (when (eq? what 'all)\n    (set! what Clause->string-all-fields))\n  (string-join (map (λ (f w) (format \"~a: ~a \" w f))\n                    (Clause->list C what)\n                    what)\n               \" \"))\n\n;; Outputs the Clauses `Cs` in a table for human reading.\n;;\n;; (listof Clause?) (or/c 'all (listof symbol?)) -> void?\n(define (print-Clauses Cs [what '(idx parents clause)])\n  (when (eq? what 'all)\n    (set! what Clause->string-all-fields))\n  (print-simple-table\n   (cons what\n         (map (λ (C) (Clause->list C what)) Cs))))\n\n;; Returns a substitution if C1 subsumes C2 and the number of literals of C1 is no larger\n;; than that of C2, #false otherwise.\n;; Indeed, even when the clauses are safely factored, there can still be issues, for example,\n;; this prevents cases infinite chains such as:\n;; p(A, A) subsumed by p(A, B) | p(B, A) subsumed by p(A, B) | p(B, C) | p(C, A) subsumed by…\n;; Notice: This is an approximation of the correct subsumption based on multisets.\n;;\n;; Clause? Clause? -> (or/c #false subst?)\n(define (Clause-subsumes C1 C2)\n  (and (<= (Clause-n-literals C1) (Clause-n-literals C2))\n       (clause-subsumes (Clause-clause C1) (Clause-clause C2))))\n\n;; Like Clause-subsumes but first takes the converse of C1.\n;; Useful for rewrite rules.\n;;\n;; Clause? Clause? -> (or/c #false subst?)\n(define (Clause-converse-subsumes C1 C2)\n  (and (<= (Clause-n-literals C1) (Clause-n-literals C2))\n       (clause-subsumes (clause-converse (Clause-clause C1))\n                        (Clause-clause C2))))\n\n;; Clause? -> boolean?\n(define (unit-Clause? C)\n  (= 1 (Clause-n-literals C)))\n\n;; Clause? -> boolean?\n(define (binary-Clause? C)\n  (= 2 (Clause-n-literals C)))\n\n;; Clause? -> boolean?\n(define (Clause-tautology? C)\n  (clause-tautology? (Clause-clause C)))\n\n;; Returns whether C1 and C2 are α-equivalences, that is,\n;; if there exists a renaming substitution α such that C1α = C2\n;; and C2α⁻¹ = C1.\n;;\n;; Clause? Clause? -> boolean?\n(define (Clause-equivalence? C1 C2)\n  (and (Clause-subsumes C1 C2)\n       (Clause-subsumes C2 C1)))\n\n;================;\n;=== Printing ===;\n;================;\n\n;; Returns the tree of ancestor Clauses of C up to init Clauses,\n;; but each Clause appears only once in the tree.\n;; (The full tree can be further retrieved from the Clause-parents.)\n;; Used for proofs.\n;;\n;; C : Clause?\n;; dmax : number?\n;; -> (treeof Clause?)\n(define (Clause-ancestor-graph C #:depth [dmax +inf.0])\n  (define h (make-hasheq))\n  (let loop ([C C] [depth 0])\n    (cond\n      [(or (> depth dmax)\n           (hash-has-key? h C))\n       #false]\n      [else\n       (hash-set! h C #true)\n       (cons C (filter-map (λ (C2) (loop C2 (+ depth 1)))\n                           (Clause-parents C)))])))\n\n;; Like `Clause-ancestor-graph` but represented as a string for printing.\n;;\n;; C : Clause?\n;; prefix : string? ; a prefix before each line\n;; tab : string? ; tabulation string to show the tree-like structure\n;; what : (or/c 'all (listof symbol?)) ; see `Clause->string`\n;; -> string?\n(define (Clause-ancestor-graph-string C\n                                      #:? [depth +inf.0]\n                                      #:? [prefix \"\"]\n                                      #:? [tab \" \"]\n                                      #:? [what '(idx parents type clause)])\n  (define h (make-hasheq))\n  (define str-out \"\")\n  (let loop ([C C] [d 0])\n    (unless (or (> d depth)\n                (hash-has-key? h C))\n      (set! str-out (string-append str-out\n                                   prefix\n                                   (string-append* (make-list d tab))\n                                   (Clause->string C what)\n                                   \"\\n\"))\n      (hash-set! h C #true)\n      (for ([P (in-list (Clause-parents C))])\n        (loop P (+ d 1)))))\n  str-out)\n\n;; Like `Clause-ancestor-graph-string` but directly outputs it.\n(define-wrapper (display-Clause-ancestor-graph\n                 (Clause-ancestor-graph-string C #:? depth #:? prefix #:? tab #:? what))\n  #:call-wrapped call\n  (display (call)))\n\n;; Returns #true if C1 was generated before C2\n;;\n;; Clause? Clause? -> boolean?\n(define (Clause-age>= C1 C2)\n  (<= (Clause-idx C1) (Clause-idx C2)))\n\n\n;=================;\n;=== Save/load ===;\n;=================;\n\n;; Saves the Clauses `Cs` to the file `f`.\n;;\n;; Cs : (listof Clause?)\n;; f : file?\n;; exists : symbol? ; see `with-output-to-file`\n;; -> void?\n(define (save-Clauses! Cs f #:? exists)\n  (save-clauses! (map Clause-clause Cs) f #:exists exists))\n\n;; Loads Clauses from a file. If `sort?` is not #false, Clauses are sorted by Clause-size.\n;; The type defaults to `'load` and can be changed with `type`.\n;;\n;; f : file?\n;; sort? : boolean?\n;; type : symbol?\n;; -> (listof Clause?)\n(define (load-Clauses f #:? [sort? #true] #:? [type 'load])\n  (define Cs (map (λ (c) (make-Clause c #:type type))\n                  (load-clauses f)))\n  (if sort?\n      (sort Cs <= #:key Clause-size)\n      Cs))\n\n;======================;\n;=== Test utilities ===;\n;======================;\n\n;; Provides testing utilities. Use with `(require (submod satore/Clause test))`.\n(module+ test\n  (require rackunit)\n  (provide Clausify\n           check-Clause-set-equivalent?)\n\n  ;; Takes a symbol tree, turns symbol variables into actual `Var`s, freshes them,\n  ;; sorts the literals and makes a new Clause.\n  ;;\n  ;; tree? -> Clause?\n  (define Clausify (compose make-Clause clausify))\n\n  ;; Returns whether for every clause of Cs1 there is an α-equivalent clause in Cs2.\n  ;;\n  ;; (listof Clause?)  (listof Clause?) -> any/c\n  (define-check (check-Clause-set-equivalent? Cs1 Cs2)\n    (unless (= (length Cs1) (length Cs2))\n      (fail-check \"not =\"))\n    (for/fold ([Cs2 Cs2])\n              ([C1 (in-list Cs1)])\n      (define C1b\n        (for/first ([C2 (in-list Cs2)] #:when (Clause-equivalence? C1 C2))\n          C2))\n      (unless C1b\n        (printf \"Cannot find equivalence Clause for ~a\\n\" (Clause->string C1))\n        (print-Clauses Cs1)\n        (print-Clauses Cs2)\n        (fail-check))\n      (remq C1b Cs2))))\n"
  },
  {
    "path": "satore/README.md",
    "content": "# Satore: First-order logic saturation with atom rewriting\n\nSatore is a first-order logic resolution based theorem prover in CNF without\nequality, but with atom rewrite rules. New rewrite rules can be\ndiscovered during the proof search, potentially reducing exponentially the\nsearch space.\n\nSatore stands for Saturation with Atom Rewriting.\n\n## Installation\n\nFirst, install the **Racket** programming language (Apache2/MIT):\nhttps://download.racket-lang.org\n\nNote for Linux users: Do read the comments on the download page.\n\nYou may need to\n[configure the PATH environment variable](https://github.com/racket/racket/wiki/Configure-Command-Line-for-Racket)\nto include the directory containing the `racket` and `raco` executables.\n\nTo install **satore** and its dependencies (all are Apache2/MIT licensed),\ntype:\n\n```shell\nraco pkg install --auto --update-deps satore\n```\n\n<!--\nCloning only the correct subdirectory of the deemind-research repository is\ninconvenient, but the Racket package does that itself rather nicely.\n-->\n\n## Running Satore\n\nFirst, you can check that satore is correctly installed by typing:\n\n```shell\nracket -l- satore --help\n```\n\nThere are some examples in the `examples` subdirectory of the `satore`\ndirectory, and its location can be found with\n\n```shell\nracket -e '(displayln (collection-file-path \"examples\" \"satore\"))'\n```\n\nRun a trivial example:\n\n```shell\nracket -l- satore -p path-to-satore/examples/socrates.p --proof\n```\n\nThe `.p` file is assumed to be a standalone file with only comments and\n`cnf(…).` lines without equality, where the logic clause must be surrounded by\nparentheses. All axioms must be included. (This will likely be improved soon.)\n\n## Results on TPTP 7.2.0 (corrected)\n\nCorrected results on TPTP 7.2.0, on a 2-2.5GHz CPU, with a limit of 5 minutes\nand 32GB per problem, either with the default settings, or with\n`--no-discover-online` to disable atom rewriting:\n\n```\n┌────────────────────────────┬───────┬───────┬───────┬───────┬───────┬────────┐\n│Strategy                    │   UEQ │   CNE │   CEQ │   FNE │   FEQ │    All │\n│                 Class size→│  1092 │  2212 │  4436 │  1784 │  5860 │  15384 │\n├────────────────────────────┼───────┼───────┼───────┼───────┼───────┼────────┤\n│Satore               (all)  │   177 │  1140 │   956 │   822 │  1324 │   4419 │\n│                    (proof) │   177 │  1078 │   952 │   766 │  1324 │   4297 │\n│                     (sat)  │     0 │    62 │     4 │    56 │     0 │    122 │\n├────────────────────────────┼───────┼───────┼───────┼───────┼───────┼────────┤\n│Satore w/o atom rw   (all)  │   128 │   967 │   674 │   711 │   843 │   3323 │\n│                    (proof) │   128 │   913 │   670 │   658 │   843 │   3212 │\n│                     (sat)  │     0 │    54 │     4 │    53 │     0 │    111 │\n└────────────────────────────┴───────┴───────┴───────┴───────┴───────┴────────┘\n```\n"
  },
  {
    "path": "satore/clause-format.rkt",
    "content": "#lang racket/base\n\n;***************************************************************************************;\n;****                         Clause <-> String Conversions                         ****;\n;***************************************************************************************;\n\n;;; In a separate file because of cyclic dependencies with \"tptp.rkt\" if in \"clause.rkt\"\n\n(require define2\n         racket/format\n         racket/list\n         racket/pretty\n         satore/tptp\n         satore/unification\n         text-table)\n\n(provide (all-defined-out))\n\n;; Returns a string representation of the clause.\n;;\n;; clause? -> string?\n(define (clause->string cl)\n  ((if (*tptp-out?*)\n       clause->tptp-string\n       ~a)\n   (Vars->symbols cl)))\n\n;; Same as clause->string but pretty prints the result for better reading.\n;;\n;; clause? -> string?\n(define (clause->string/pretty cl)\n  (pretty-format (Vars->symbols cl)))\n\n;; clause? -> void?\n(define (print-clause cl)\n  (displayln (clause->string cl)))\n\n;; Prints the list of clauses in a table, possibly sothing them first.\n;;\n;; cls : (listof clause?)\n;; sort? : boolean?\n(define (print-clauses cls #:? [sort? #false])\n  (unless (empty? cls)\n    (print-table\n     (for/list ([cl (in-list (if sort?\n                                 (sort cls < #:key tree-size #:cache-keys? #true)\n                                 cls))]\n                [i (in-naturals)])\n       (cons i (Vars->symbols cl)))\n     #:border-style 'space\n     #:row-sep? #false\n     #:framed? #false)))\n"
  },
  {
    "path": "satore/clause.rkt",
    "content": "#lang racket/base\n\n;***************************************************************************************;\n;****                             Operations on clauses                             ****;\n;***************************************************************************************;\n\n(require bazaar/cond-else\n         bazaar/list\n         bazaar/loop\n         bazaar/mutation\n         (except-in bazaar/order atom<=>)\n         define2\n         global\n         racket/file\n         racket/list\n         satore/misc\n         satore/trie\n         satore/unification\n         syntax/parse/define)\n\n(provide (all-defined-out))\n\n(define-global *subsumes-iter-limit* 0\n  '(\"Number of iterations in the θ-subsumption loop before failing.\"\n    \"May help in cases where subsumption take far too long.\"\n    \"0 = no limit.\")\n  exact-nonnegative-integer?\n  string->number)\n\n(define-counter n-tautologies 0)\n\n;; Returns a new clause where the literals have been sorted according to `literal<?`.\n;;\n;; (listof literal?) -> (listof literal?)\n(define (sort-clause cl)\n  (sort cl literal<?))\n\n;; 'Normalizes' a clause by sorting the literals, safely factoring it (removes duplicate literals),\n;; and 'freshing' the variables.\n;; cl is assumed to be already Varified, but possibly not freshed.\n;;\n;; (listof literal?) -> (listof literal?)\n(define (clause-normalize cl)\n   ; fresh the variables just to make sure\n  (fresh (safe-factoring (sort-clause cl))))\n\n;; Takes a tree of symbols and returns a clause, after turning symbol variables into `Var`s.\n;; Used to turn human-readable clauses into computer-friendly clauses.\n;;\n;; tree? -> clause?\n(define (clausify l)\n  (clause-normalize (Varify l)))\n\n;; clause? -> boolean?\n(define (empty-clause? cl)\n  (empty? cl))\n\n;; Returns whether the clause `cl` is a tautologie.\n;; cl is a tautology if it contains the literals `l` and `(not l)`.\n;; Assumes that the clause cl is sorted according to `sort-clause`.\n;;\n;; clause? -> boolean?\n(define (clause-tautology? cl)\n  (define-values (neg pos) (partition lnot? cl))\n  (define pneg (map lnot neg))\n  (and\n   (or\n    (memq ltrue pos)\n    (memq lfalse pneg)\n    (let loop ([pos pos] [pneg pneg])\n      (cond/else\n       [(or (empty? pos) (empty? pneg)) #false]\n       #:else\n       (define p (first pos))\n       (define n (first pneg))\n       (define c (literal<=> p n))\n       #:cond\n       [(order<? c) (loop (rest pos) pneg)]\n       [(order>? c) (loop pos (rest pneg))]\n       [(literal==? p n)]\n       #:else (error \"uh?\"))))\n   (begin (++n-tautologies) #true)))\n\n;; Returns the converse clause of `cl`.\n;; Notice: This does *not* rename the variables.\n;;\n;; clause? -> clause?\n(define (clause-converse cl)\n  (sort-clause (map lnot cl)))\n\n;; Returns the pair of (predicate-symbol . arity) of the literal.\n;;\n;; literal? -> (cons/c symbol? exact-nonnegative-integer?)\n(define (predicate.arity lit)\n  (let ([lit (depolarize lit)])\n    (cond [(list? lit) (cons (first lit) (length lit))]\n          [else (cons lit 0)])))\n\n;; Several counters to keep track of statistics.\n(define-counter n-subsumes-checks 0)\n(define-counter n-subsumes-steps 0)\n(define-counter n-subsumes-breaks 0)\n(define (reset-subsumes-stats!)\n  (reset-n-subsumes-checks!)\n  (reset-n-subsumes-steps!)\n  (reset-n-subsumes-breaks!))\n\n\n;; θ-subsumption. Returns a (unreduced) most-general unifier θ such that caθ ⊆ cb, in the sense\n;; of set inclusion.\n;; Assumes vars(ca) ∩ vars(cb) = ∅.\n;; Note that this function does not check for multiset inclusion. A length check is performed in\n;; Clause-subsumes?.\n;;\n;; clause? clause? -> subst?\n(define (clause-subsumes ca cb)\n  (++n-subsumes-checks)\n  ; For every each la of ca  with current substitution β, we need to find a literal lb of cb\n  ; such that we can extend β to β' so that la β' = lb.\n\n  (define cbtrie (make-trie #:variable? Var?))\n  (for ([litb (in-list cb)])\n    ; the key must be a list, but a literal may be just a constant, so we need to `list` it.\n    (trie-insert! cbtrie (list litb) litb))\n\n  ;; Each literal lita of ca is paired with a list of potential literals in cb that lita matches,\n  ;; for subsequent left-unification.\n  ;; We sort the groups by smallest size first, to fail fast.\n  (define groups\n    (sort\n     (for/list ([lita (in-list ca)])\n       ; lita must match litb, hence inverse-ref\n       (cons lita (append* (trie-inverse-ref cbtrie (list lita)))))\n     < #:key length #:cache-keys? #true))\n\n  ;; Depth-first search while trying to find a substitution that works for all literals of ca.\n  (define n-iter-max (*subsumes-iter-limit*))\n  (define n-iter 0)\n\n  (let/ec return\n    (let loop ([groups groups] [subst '()])\n      (++ n-iter)\n      ; Abort when we have reached the step limit\n      (when (= n-iter n-iter-max) ; if n-iter-max = 0 then no limit\n        (++n-subsumes-breaks)\n        (return #false))\n      (++n-subsumes-steps)\n      (cond\n        [(empty? groups) subst]\n        [else\n         (define gp (first groups))\n         (define lita (car gp))\n         (define litbs (cdr gp))\n         (for/or ([litb (in-list litbs)])\n           ; We use a immutable substitution to let racket handle copies when needed.\n           (define new-subst (left-unify/assoc lita litb subst))\n           (and new-subst (loop (rest groups) new-subst)))]))))\n\n;; Returns the shortest clause `cl2` such that `cl2` subsumes `cl`.\n;; Since `cl` subsumes each of its factors (safe or unsafe, and in the sense of\n;; non-multiset subsumption above), this means that `cl2` is equivalent to `cl`\n;; (hence no information is lost in `cl2`, it's a 'safe' factor).\n;; Assumes that the clause cl is sorted according to `sort-clause`.\n;; - The return value is eq? to the argument cl if no safe-factoring is possible.\n;; - Applies safe-factoring as much as possible.\n;;\n;; clause? -> clause?\n(define (safe-factoring cl)\n  (let/ec return\n    (zip-loop ([(l x r) cl])\n      (define pax (predicate.arity x))\n      (zip-loop ([(l2 y r2) r] #:break (not (equal? pax (predicate.arity y))))\n        ; To avoid code duplication:\n        (define-simple-macro (attempt a b)\n          (begin\n            (define s (left-unify a b))\n            (when s\n              (define new-cl\n                (sort-clause\n                 (fresh ; required for clause-subsumes below\n                  (left-substitute (rev-append l (rev-append l2 (cons a r2))) ; remove b\n                                   s))))\n              (when (clause-subsumes new-cl cl)\n                ; Try one more time with new-cl.\n                (return (safe-factoring new-cl))))))\n\n        (attempt x y)\n        (attempt y x)))\n    cl))\n\n;; Returns whether the two clauses subsume each other,\n;; in the sense of (non-multiset) subsumption above.\n;;\n;; clause? clause? -> boolean?\n(define (clause-equivalence? cl1 cl2)\n  (and (clause-subsumes cl1 cl2)\n       (clause-subsumes cl2 cl1)))\n\n;=================;\n;=== Save/load ===;\n;=================;\n\n;; Save the clauses `cls` to the file `f`.\n;;\n;; cls : (listof clause?)\n;; f : file?\n;; exists : symbol? ; See `with-output-to-file`.\n(define (save-clauses! cls f #:? [exists 'replace])\n  (with-output-to-file f #:exists exists\n    (λ () (for-each writeln cls))))\n\n;; Returns the list of clauses loaded from the file `f`.\n;;\n;; file? -> (listof clause?)\n(define (load-clauses f)\n  (map clausify (file->list f)))\n"
  },
  {
    "path": "satore/examples/binary30.p",
    "content": "cnf(i_0, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a))).\ncnf(i_1, plain, (~num(b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28) | num(a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28))).\ncnf(i_2, plain, (num(b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28) | ~num(a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28))).\ncnf(i_3, plain, (~num(a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27) | num(b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27))).\ncnf(i_4, plain, (num(a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27) | ~num(b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27))).\ncnf(i_5, plain, (~num(a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26) | num(b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26))).\ncnf(i_6, plain, (num(a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26) | ~num(b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26))).\ncnf(i_7, plain, (~num(a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25) | num(b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25))).\ncnf(i_8, plain, (num(a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25) | ~num(b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25))).\ncnf(i_9, plain, (~num(a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24) | num(b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24))).\ncnf(i_10, plain, (num(a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24) | ~num(b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24))).\ncnf(i_11, plain, (~num(a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23) | num(b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23))).\ncnf(i_12, plain, (num(a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23) | ~num(b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23))).\ncnf(i_13, plain, (~num(a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22) | num(b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22))).\ncnf(i_14, plain, (num(a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22) | ~num(b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22))).\ncnf(i_15, plain, (~num(a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21) | num(b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21))).\ncnf(i_16, plain, (num(a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21) | ~num(b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21))).\ncnf(i_17, plain, (~num(a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20) | num(b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20))).\ncnf(i_18, plain, (num(a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20) | ~num(b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20))).\ncnf(i_19, plain, (~num(a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19) | num(b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19))).\ncnf(i_20, plain, (num(a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19) | ~num(b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19))).\ncnf(i_21, plain, (~num(a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18) | num(b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18))).\ncnf(i_22, plain, (num(a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18) | ~num(b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18))).\ncnf(i_23, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17) | num(b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17))).\ncnf(i_24, plain, (num(a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17) | ~num(b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17))).\ncnf(i_25, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16) | num(b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16))).\ncnf(i_26, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16))).\ncnf(i_27, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15))).\ncnf(i_28, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15))).\ncnf(i_29, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14))).\ncnf(i_30, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14))).\ncnf(i_31, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13))).\ncnf(i_32, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13))).\ncnf(i_33, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12))).\ncnf(i_34, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12))).\ncnf(i_35, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11))).\ncnf(i_36, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11))).\ncnf(i_37, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10))).\ncnf(i_38, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10))).\ncnf(i_39, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9))).\ncnf(i_40, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8, X9))).\ncnf(i_41, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8))).\ncnf(i_42, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7, X8) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7, X8))).\ncnf(i_43, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7))).\ncnf(i_44, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6, X7) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6, X7))).\ncnf(i_45, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6))).\ncnf(i_46, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5, X6) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5, X6))).\ncnf(i_47, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5))).\ncnf(i_48, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4, X5) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4, X5))).\ncnf(i_49, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4))).\ncnf(i_50, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3, X4) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3, X4))).\ncnf(i_51, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3))).\ncnf(i_52, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2, X3) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2, X3))).\ncnf(i_53, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2))).\ncnf(i_54, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1, X2) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1, X2))).\ncnf(i_55, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1))).\ncnf(i_56, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0, X1) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0, X1))).\ncnf(i_57, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0))).\ncnf(i_58, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, X0) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a, X0))).\ncnf(i_59, plain, (~num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b) | num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a))).\ncnf(i_60, plain, (num(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b) | ~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, a))).\ncnf(i_0, negated_conjecture, (~num(b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b))).\n"
  },
  {
    "path": "satore/examples/socrates.p",
    "content": "cnf(humans_are_mortal, axiom, (~human(X) | mortal(X))).\ncnf(socrates_is_human, hypothesis, (human(socrates))).\ncnf(socrates_is_mortal, negated_conjecture, (~mortal(socrates))).\n"
  },
  {
    "path": "satore/info.rkt",
    "content": "#lang info\n(define collection \"satore\")\n(define deps '(\"bazaar\"\n               \"data-lib\"\n               \"define2\"\n               \"global\"\n               \"math-lib\"\n               \"text-table\"\n               \"base\"))\n(define build-deps '(\"rackunit-lib\"\n                     \"scribble-lib\"\n                     ))\n(define scribblings '((\"scribblings/satore.scrbl\" ())))\n(define pkg-desc \"First-order logic prover in CNF without equality, but with atom rewrite rules\")\n(define version \"0.1\")\n(define pkg-authors '(orseau))\n\n(define racket-launcher-names '(\"satore\"))\n(define racket-launcher-libraries '(\"satore.rkt\"))\n\n(define test-omit-paths '(\"info.rkt\"\n                          \"last-results.rkt\"\n                          \"parse-log.rkt\"\n                          \"in-progress/\"\n                          \"find-rules.rkt\"\n                          \"print-rules.rkt\"\n                          \"run-eprover.rkt\"\n                          \"rules/\"\n                          \"logs/\"\n                          \"scribblings/\"))\n"
  },
  {
    "path": "satore/interact.rkt",
    "content": "#lang racket/base\n\n;***************************************************************************************;\n;****                           User Interaction Commands                           ****;\n;***************************************************************************************;\n\n(require (for-syntax racket/base syntax/parse)\n         racket/format\n         racket/list\n         racket/match\n         racket/port)\n\n(provide (all-defined-out))\n\n;; Notice: variables set via eval or only set locally, in the local namespace,\n;; and not in the main namespace.\n;; variables set via the (list 'var val) pattern are set in the main namespace.\n;; Even though the namespace is at the module level, the variables\n;; are set in the namespace with their value so they can be used with eval.\n(define-syntax (interact stx)\n  (syntax-parse stx\n    #:literals (list)\n    [(_ (~alt (~optional (~seq #:prompt prompt:expr)) ; must evaluate to a string, default \"> \"\n              (~optional (~seq #:command command:expr))\n              (~optional (~seq #:namespace-anchor ns-anchor:expr)) ; default #false\n              (~optional (~seq #:variables (var:id ...))) ; must be bound identifiers\n              (~optional (~seq #:readline? readline?:expr))) ; start with readline enabled? (#false)\n        ...\n        [(list pat ...) help-string body ...+] ...) ; match patterns\n     (with-syntax ([(var ...) #'(~? (var ...) ())])\n       #'(begin\n           (define names (list 'var ...))\n           (define nsa (~? ns-anchor #false))\n           (define ns (and nsa (namespace-anchor->namespace nsa)))\n           (when (~? readline? #false) (eval '(require readline) ns))\n           (when ns\n             (namespace-set-variable-value! 'var var #false ns) ...\n             (void)) ; to avoid bad 'when' form if no variable\n           (define the-prompt (~? prompt \"> \"))\n           (let loop ()\n             (with-handlers ([exn:fail? (λ (e)\n                                          (displayln (exn-message e))\n                                          (loop))])\n               (define cmd (~? command #false))\n               (when (and cmd (not (string? cmd)))\n                 (error \"command must be a string\"))\n               (unless cmd (display the-prompt))\n               (define cmd-str (or cmd (read-line)))\n               (unless (eof-object? cmd-str)\n                 (define cmd (with-input-from-string (string-append \"(\" cmd-str \")\") read))\n                 (match cmd\n                   ['() (void)]\n                   ['(help)\n                    (unless (empty? names)\n                      (printf \"Available variables: ~a\\n\" names))\n                    (displayln \"Other commands:\")\n                    (parameterize ([print-reader-abbreviations #true]\n                                   [print-as-expression #false])\n                      (void)\n                      (begin\n                        (displayln (string-append \"  \" (apply ~v '(pat ...) #:separator \" \")))\n                        (displayln (string-append \"    \" help-string)))\n                      ...)\n                    (when ns\n                      (displayln \"  eval expr\")\n                      (displayln\n                       \"    Evaluate expr in a namespace that is local to this interaction loop.\"))\n                    (loop)]\n                   [(list 'eval cmd)\n                    (if ns\n                        (call-with-values (λ () (eval cmd ns))\n                                          (λ l (if (= 1 (length l))\n                                                   (unless (void? (first l))\n                                                     (displayln (first l)))\n                                                   (for-each displayln l))))\n                        (displayln \"Cannot use eval without a namespace-anchor\"))\n                    (loop)]\n                   ['(var) (println var) (loop)] ...\n                   [(list 'var val) (set! var val) (loop)] ...\n                   [(list pat ...) body ... (loop)] ...\n                   [else (printf \"Unknown command: ~a\\n\" cmd)\n                         (loop)]))))))]))\n\n;; For manual testing in DrRacket\n(module+ drracket\n  (define-namespace-anchor ns-anchor) ; optional, to use the eval command\n\n  (let ([x 3] [y 'a])\n    (interact\n     #:prompt \">> \"\n     #:namespace-anchor ns-anchor\n     #:variables (x y)\n     ;; All patterns must be of the form (list ....)\n     [(list 'yo) \"prints yo\" (displayln \"yo\")]\n     [(list 'yo (? number? n)) \"prints multiple yos\" (displayln (make-list n 'yo))])))\n"
  },
  {
    "path": "satore/json-output.rkt",
    "content": "#lang racket/base\n\n;***************************************************************************************;\n;****                                  Json Output                                  ****;\n;***************************************************************************************;\n\n(require racket/dict\n         racket/string)\n\n(provide (all-defined-out))\n\n;; Correspondance with Eprover output values\n(define status-dict\n  '((running   . UNSPECIFIED_PROOF_STATUS)\n    (refuted   . REFUTATION_FOUND)\n    (time      . TIME_LIMIT_REACHED)\n    (memory    . MEMORY_LIMIT_REACHED)\n    (steps     . STEP_LIMIT_REACHED)\n    (saturated . COUNTER_SATISFIABLE)))\n\n;; Take a result dictionary from `saturation` and returns a JSON string representation of it.\n;;\n;; dict? -> string?\n(define (saturation-result->json res)\n  (define d\n    (let* ([res (dict-remove res 'name)]\n           [res (dict-remove res 'file)]\n           [res (dict-update res 'status (λ (v) (dict-ref status-dict v)))])\n      res))\n  (string-join\n   #:before-first \"{\\n  \"\n   (for/list ([(k v) (in-dict d)])\n     (define kstr (regexp-replace* #px\"-|:\" (symbol->string k) \"_\"))\n     (format \"~s: ~s\" kstr (if (symbol? v) (symbol->string v) v)))\n   \",\\n  \"\n   #:after-last \"\\n}\"))\n\n;; Simple visual test.\n(module+ drracket\n  (define res\n  '((name . \"GEO170+1.p\")\n    (file . \"data/tptp_geo/GEO170+1.p\")\n    (status . refuted)\n    (steps . 205)\n    (generated . 3186)\n    (actives . 106)\n    (candidates . 2651)\n    (priority-remaining . 0)\n    (tautologies . 156)\n    (rules . 30)\n    (unit-rules . 24)\n    (binary-rules . 6)\n    (binary-rules-static . 0)\n    (binary-rules-dynamic . 6)\n    (binary-rewrites . 164)\n    (forward-subsumed . 96)\n    (backward-subsumed . 0)\n    (subsumes-checks . 7654)\n    (subsumes-steps . 13268)\n    (subsumes-breaks . 0)\n    (L-resolvent-pruning . 0)\n    (memory . 181509744)\n    (time . 196)\n    (proof-length . 12)\n    (proof-inferences . 5)\n    (proof-type:in . 7)\n    (proof-type:res . 4)\n    (proof-type:rw . 1)))\n  (displayln (saturation-result->json res)))\n"
  },
  {
    "path": "satore/log.rkt",
    "content": "#lang racket/base\n\n;***************************************************************************************;\n;****             Logging To File With Consistent Debugging Information             ****;\n;***************************************************************************************;\n\n(require bazaar/date\n         bazaar/debug\n         define2\n         global\n         racket/file\n         racket/port\n         racket/pretty\n         racket/string\n         racket/system)\n\n(provide call-with-log\n         *log*)\n\n(define-global:boolean *log* #false\n  \"Output to a log file?\")\n\n(define-global:boolean *git?* #false\n  \"Commit to git if needed and include the last git commit hash in the globals.\")\n\n;; Calls thunk. Outputs to a log file if `log?` is not #false.\n;; When `git?` is not #false, also commits to git to ensure consistency of the code base\n;; with the experiment, and adds the git commit number to the global variables.\n;;\n;; thunk : thunk?\n;; dir : path-string?\n;; filename : string?\n;; filepath : path-string?\n;; log? : boolean?\n;; git? : boolean?\n;; quiet? : boolean?\n(define (call-with-log thunk\n                       #:? [dir \"logs\"]\n                       #:? [filename (string-append \"log-\" (date-iso-file) \".txt\")]\n                       ; if given, dir and filename have no effect:\n                       #:? [filepath (build-path dir filename)]\n                       #:? [log? (*log*)]\n                       #:? [git? (*git?*)]\n                       #:? [quiet? #false])\n\n  (when git?\n    (define cmd \"git commit -am \\\".\\\" \")\n    (displayln cmd)\n    (system cmd))\n\n  ;; Non-quiet mode.\n  (define (thunk2)\n    ; Also write the last commit hash for easy retrieval.\n    (pretty-write\n     (list* `(cmd-line . ,(current-command-line-arguments))\n            `(git-commit . ,(and git?\n                                 (string-normalize-spaces\n                                  (with-output-to-string (λ () (system \"git rev-parse HEAD\"))))))\n            (globals->assoc)))\n    (thunk))\n\n  (cond [log?\n         (make-parent-directory* filepath)\n         (assert (not (file-exists? filepath)) filepath)\n         (printf \"Logging to: ~a\\n\" filepath)\n         (pretty-write (globals->assoc))\n         (with-output-to-file filepath thunk2)]\n        [quiet? (thunk)]\n        [else (thunk2)]))\n"
  },
  {
    "path": "satore/main.rkt",
    "content": "#!/usr/bin/env racket\n#lang racket/base\n\n;**************************************************************************************;\n;****                                    Satore                                    ****;\n;**************************************************************************************;\n\n;;; Try:\n;;;   racket -l- satore --help\n;;; to see all the available flags.\n\n(module+ main\n  (require global\n           racket/file\n           racket/port\n           satore/misc\n           satore/rewrite-tree\n           satore/saturation\n           satore/unification)\n\n  (define-global *prog* #false\n    '(\"Data file containing a single TPTP program.\"\n      \"If not provided, reads from the input port.\")\n    file-exists?\n    values\n    '(\"-p\"))\n\n  ;; If -p is not specified, reads from current-input-port\n  (void (globals->command-line #:program \"satore\"))\n\n  ;; No validation here yet.\n  (define program\n    (if (*prog*)\n        (file->string (*prog*))\n        (port->string)))\n\n  (iterative-saturation\n   (λ (#:clauses input-clauses #:cpu-limit cpu-limit #:rwtree-in rwtree-in #:rwtree-out rwtree-out)\n     (saturation input-clauses\n                 #:cpu-limit cpu-limit\n                 #:rwtree rwtree-in\n                 #:rwtree-out rwtree-out))\n   #:tptp-program program\n   #:rwtree-in (make-rewrite-tree #:atom<=> (get-atom<=>)\n                                  #:dynamic-ok? (*dynamic-rules?*)\n                                  #:rules-file (*input-rules*))))\n"
  },
  {
    "path": "satore/misc.rkt",
    "content": "#lang racket/base\n\n;***************************************************************************************;\n;****                               Various Utilities                               ****;\n;***************************************************************************************;\n\n(require (for-syntax racket/base racket/port racket/syntax)\n         global\n         racket/format\n         racket/port)\n\n(provide (all-defined-out))\n\n;; Prints #true and #false\n(print-boolean-long-form #true)\n\n(define-syntax-rule (begin-for-both e)\n  (begin\n    e\n    (begin-for-syntax e)))\n\n(begin-for-both\n  ;; (or/c string? symbol? number?) -> number?\n  (define (debug-level->number lev)\n    (cond\n      [(number? lev) lev]\n      [(string? lev) (debug-level->number (with-input-from-string lev read))]\n      [else\n       (case lev\n         [(none) 0]\n         [(init) 1]\n         [(step steps) 2]\n         [(interact) 3]\n         [else (error \"unknown debug level\" lev)])])))\n\n(define-global *debug-level* 0\n  \"Number or one of (none=0 init=1 steps interact).\"\n  exact-nonnegative-integer?\n  debug-level->number\n  '(\"--debug\"))\n\n;; ;; (or/c string? symbol? number?) -> boolean?\n(define (debug>= lev)\n  (>= (*debug-level*) (debug-level->number lev)))\n\n;; Do a sequence of actions only when debug-level is greater than a given level.\n(define-syntax (when-debug>= stx)\n  (syntax-case stx ()\n    [(_ lev body ...)\n     (with-syntax ([levv (debug-level->number (syntax-e #'lev))])\n       #'(when (>= (*debug-level*) levv)\n           body ...))]))\n\n;; any/c -> boolean?\n(define (thunk? p)\n  (and (procedure? p)\n       (procedure-arity-includes? p 0)))\n\n;; Defines a counter with a reset function and an increment function.\n;; Ex:\n;; (define-counter num 0)\n;; (++num)\n;; (++num 3)\n;; (reset-num!)\n(define-syntax (define-counter stx)\n  (syntax-case stx ()\n    [(_ name init)\n     (with-syntax ([reset (format-id stx #:source stx \"reset-~a!\" (syntax-e #'name))]\n                   [++ (format-id stx #:source stx \"++~a\" (syntax-e #'name))])\n       #'(begin\n           (define name init)\n           (define (reset)\n             (set! name init))\n           (define (++ [n 1])\n             (set! name (+ name n)))))]))\n\n;; -> number?\n(define (current-inexact-seconds)\n  (* 0.001 (current-inexact-milliseconds)))\n\n;; -> exact-nonnegative-integere?\n(define (current-memory-use-MB)\n  (arithmetic-shift (current-memory-use) -20))\n\n;; Prints `x` with a given precision if it is a rational, otherwise formants it with `~a`.\n;;\n;; x : any/c\n;; precision : (or/c exact-nonnegative-integer? (list/c '= exact-nonnegative-integer?))\n(define (~r2 x #:precision [precision 2])\n  (if (rational? x)\n      (~r x #:precision precision)\n      (~a x)))\n"
  },
  {
    "path": "satore/rewrite-tree.rkt",
    "content": "#lang racket/base\n\n;***************************************************************************************;\n;****                              Binary Rewrite Tree                              ****;\n;***************************************************************************************;\n\n(require bazaar/cond-else\n         bazaar/mutation\n         (except-in bazaar/order atom<=>)\n         define2\n         define2/define-wrapper\n         global\n         racket/file\n         racket/list\n         racket/string\n         satore/Clause\n         satore/clause-format\n         satore/clause\n         satore/misc\n         satore/trie\n         satore/unification)\n\n(provide (all-defined-out)\n         (all-from-out satore/trie))\n\n;===============;\n;=== Globals ===;\n;===============;\n\n(define-counter n-rule-added 0)\n(define-counter n-binary-rewrites 0)\n\n(define-global:boolean *bounded-confluence?* #true\n  '(\"When performing confluence, should the size of the critical pairs \"\n    \"be bounded by the size of parent rules?\"))\n\n(define-global *confluence-max-steps* 10\n  \"Maximum number of confluence steps\"\n  number?\n  string->number)\n\n;====================;\n;=== Rewrite tree ===;\n;====================;\n\n;; atom<=> : comparator?\n;; dynamic-ok? : boolean? ; whether we keep dynamic rules\n;; rules-file : file? ; if not #false, loads rules from the given file\n(struct rewrite-tree trie (atom<=> dynamic?))\n\n;; rewrite-tree constructor.\n;;\n;; constructor: procedure?\n;; atom<=> : comparator?\n;; dynamic-ok? : boolean?\n;; rules-file : file?\n;; other-args : list?\n;; -> rewrite-tree?\n(define (make-rewrite-tree #:? [constructor rewrite-tree]\n                           #:! atom<=>\n                           #:? [dynamic-ok? #true]\n                           #:? [rules-file #false]\n                           . other-args)\n  (define rwtree\n    (apply make-trie\n           #:constructor constructor\n           #:variable? Var?\n           atom<=>\n           dynamic-ok?\n           other-args))\n  (when rules-file\n    (load-rules! rwtree #:rules-file rules-file #:rewrite? #true))\n  rwtree)\n\n;; Returns a new rewrite-tree.\n;; Duplicates the structure of rwtree, but the Clauses and rules are shared.\n;; This means that the Clause ancestors of the rules are preserved.\n;;\n;; rwtree : rewrite-tree?\n;; -> rewrite-tree?\n(define (rewrite-tree-shallow-copy rwtree)\n  (define new-rwtree (make-rewrite-tree #:atom<=> (rewrite-tree-atom<=> rwtree)\n                                        #:dynamic-ok? (rewrite-tree-dynamic? rwtree)))\n  (for ([rl (in-list (rewrite-tree-rules rwtree))])\n    (add-rule! new-rwtree rl))\n  new-rwtree)\n\n;; Returns the list of values that match the literal t.\n;;\n;; rwtree : rewrite-tree?\n;; t : any/c\n;; -> list?\n(define (rewrite-tree-ref rwtree t)\n  ; Node values are lists of rules, and trie-ref returns a list of node-values,\n  ; hence the append*.\n  (append* (trie-ref rwtree t)))\n\n;; Clause : The Clause from which this rule originates\n;;   NOTICE: Clause may subsume the rule, and can be *more* general if the rule is asymmetric.\n;; from-literal : heavy-side\n;; to-literal : light side\n;; to-fresh : variables of to-literal not in from-literal that need to be freshed\n;;   after applying the rule\n;;\n;; Clause : Clause?\n;; rule-group : rule-group?\n;; from-literal? : literal?\n;; to-literal? : literal?\n;; to-fresh : unused\n;; static? : boolean?\n(struct rule (Clause rule-group from-literal to-literal to-fresh static?)\n  #:prefab)\n\n;; A rule group holds all the rules that have been created by a single call to\n;; Clause->rules.\n;; A rule also has a reference to its rule group, so it makes it easy to find\n;; the other rules of the same group from a given group.\n;; A single group can have 2 or 4 rules: 2 for static rules or dynamic self-converse rules,\n;; and 4 for dynamic non-self-converse rules.\n;;\n;; Clause : (or/c false/c Clause?)\n;; Converse : Clause?\n;; rules: (listof rule?)\n(struct rule-group (Clause Converse [rules #:mutable]) #:prefab)\n\n;; Rule constructor.\n;;\n;; C : Clause?\n;; rule-gp : rule-group?\n;; from : literal?\n;; to : literal?\n;; static? : boolean?\n;; -> rule?\n(define (make-rule C rule-gp from to static?)\n  (define-values (lit1 lit2) (apply values (fresh (list from to))))\n  (rule C rule-gp lit1 lit2 (variables-minus lit2 lit1) static?))\n\n;; Returns whether rule is a unit rule, that is, if the `to` literal\n;; is either ltrue or lfalse.\n;;\n;; rl : rule?\n;; -> any/c\n(define (unit-rule? rl)\n  (memq (rule-to-literal rl) (list lfalse ltrue)))\n\n;; Returns whether rl is a 'tautology', that is, if its `to` and `from`\n;; literals are syntactically equal.\n;;\n;; rl : rule?\n;; -> boolean?\n(define (rule-tautology? rl)\n  (equal? (rule-from-literal rl) (rule-to-literal rl)))\n\n;; Returns whether the rule is left linear, that is, if each variable\n;; occurs at most once in the `from` literal.\n;;\n;; rl : rule?\n;; -> boolean?\n(define (left-linear? rl)\n  (define occs (var-occs (rule-from-literal rl)))\n  (for/and ([(v n) (in-hash occs)])\n    (<= n 1)))\n\n;; Returns whether rl1 subsumes rl2.\n;;\n;; rl1 : rule?\n;; rl2 : rule?\n;; -> any/c\n(define (rule-subsumes rl1 rl2)\n  (define subst (left-unify (rule-from-literal rl1) (rule-from-literal rl2)))\n  (and subst (left-unify (rule-to-literal rl1) (rule-to-literal rl2) subst)))\n\n;; A binary Clause [lit1 lit2] is treated as an *equivalence* (4 implications)\n;; rather than two implications,\n;; which means that a converse Clause or one that subsumes the latter MUST have been proven too\n;; before adding the rules.\n;; Thus: (Clause->rules C <=>) == (Clause->rules (make-converse-Clause C) <=>).\n;; That is, if C = ~q | p, the converse C' = q | ~p MUST have been proven.\n;; We MUST add the four rules at the same time, because the if we add just the (max 2) rules\n;; corresponding to the implications of C only, and then add the rules for C',\n;; then C' is going to be rewritten to a tautology before it has a chance to propose its rules\n;; (since resolution(C, converse(C)) = tautology).\n;; The number of returned rules is either 2 or 4.\n;; Conv is either the converse Clause of C, or a Clause that subsumes it, and is used\n;; as a parent reference (for proofs), even if converse(C) is more specific than Conv.\n;; Conv is *not* used to generate the rules themselves (only C), so if Conv is more general than C\n;; (as for asymmetric rules) the generated rules will *not* be more general than those of C.\n;;\n;; C : Clause?\n;; Conv : Clause?\n;; atom<=> : comparator?\n;; dynamic-ok? : boolean?\n;; -> (listof rule?)\n(define (Clause->rules C Conv #:! atom<=> #:? [dynamic-ok? #true])\n  (define cl (Clause-clause C))\n  (define unit? (unit-Clause? C))\n  (define lit1 (first cl))\n  (define lit2 (if unit? lfalse (second cl)))\n\n  (define rg (rule-group C Conv #false))\n  ; Not the most efficient. The last 2 cases can be deduced from the first 2,\n  ; as long as atom<=> does not count polarity (which SHOULD be the case).\n  (define rules\n    (for/list ([parent\n                (in-list (cond [unit?\n                                (list C           #false      C)]\n                               [(eq? C Conv) ; self-converse, no need to duplicate the rules\n                                (list C           C)]\n                               [else\n                                (list C           C           Conv        Conv)]))]\n               [from (in-list   (list (lnot lit1) (lnot lit2) lit1        lit2))]\n               [to   (in-list   (list lit2        lit1        (lnot lit2) (lnot lit1)))]\n               ; if Conv is #false for example, skip it (see force-add-binary-Clause!)\n               ; also useful for unit?\n               #:when parent\n               [c (in-value (atom<=> from to))]\n               #:when (and (not (order<? c)) ; wrong direction\n                           ; either we keep dynamic rules or the rule is static\n                           ; TODO: Tests\n                           (or dynamic-ok? (order>? c))))\n      ; rule cannot be oriented to → from,\n      ; so the rule from → to is valid.\n      ; It is 'static' if it can be oriented from → to, 'dynamic' otherwise.\n      (make-rule parent rg from to (order>? c))))\n  (set-rule-group-rules! rg rules)\n  rules)\n\n;; a is left-unify< to b if a left-unifies with b.\n;;\n;; comparator?\n;; literal? literal? -> (one-of '< '> '= #false)\n(define left-unify<=> (make<=> left-unify) ; left-unify is <=?\n  ; equivalent to:\n  #;(if (left-unify c1 c2)\n      (if (left-unify c2 c1)\n          '=\n          '<)\n      (if (left-unify c2 c1)\n          '>\n          #false)))\n\n;;; What we want to assess is whether\n;;; when applying rl1 to any clause c to get c1,\n;;; c1 is always necessarily better than c2 when applying rl2 to c.\n\n;; Compares 2 rules. May help decide if one should be discarded.\n;; rl1 <= rl2 if the heavyside of rl1 subsumes that of rl2,\n;;   and its light side is no heavier than that of rl2.\n;; NOTICE: A return value of '= does not mean that rl1 and rl2 are equal or equivalent;\n;; it only means that either can be used. It does mean that their heavy sides are equivalent though.\n;;\n;; rl1 : rule?\n;; rl2 : rule?\n;; atom<=> : comparator?\n;; -> (one-of '< '> '= #false)\n(define (rule<=> rl1 rl2 atom<=>)\n  (chain-comparisons\n   (left-unify<=> (rule-from-literal rl1) (rule-from-literal rl2))\n   (atom<=> (rule-to-literal rl1) (rule-to-literal rl2))))\n\n;; Returns a rule of rwtree that subsumes rl if any.\n;;\n;; rwtree : rewrite-tree?\n;; rl : rule?\n;; -> (or/c #false rule?)\n(define (find-subsuming-rule rwtree rl)\n  (for/or ([rl2 (in-list (rewrite-tree-ref rwtree (rule-from-literal rl)))])\n    (and (rule-subsumes rl2 rl) rl2)))\n\n;; If there is a substitution α such that rule-from α = lit, then rule-to α is returned,\n;; otherwise #false is returned.\n;; If the rule introduces variables, these are freshed.\n;;\n;; rl : rule?\n;; lit : literal?\n;; -> literal?\n(define (rule-rewrite-literal rl lit)\n  (define subst (left-unify (rule-from-literal rl) lit))\n  (cond [subst\n         ; NOTICE: We need to fresh the variables\n         ; that are introduced by the rule.\n         ; Ex:\n         ; clause: [(p a) (p b)] rule: (p X) -> (q Y)\n         ; Then this must be rewritten to:\n         ; [(q A) (q B)] and NOT [(q Y) (q Y)]\n         (for ([v (in-list (rule-to-fresh rl))])\n           (subst-set!/name subst v (new-Var)))\n         (left-substitute (rule-to-literal rl) subst)]\n        [else #false]))\n\n;; Recursively rewrites the given literal lit from the rules in rwtree.\n;; Returns the new literal and the sequence of rules used to rewrite it\n;; (may contain duplicate rules).\n;; lit: literal?\n;; C: The Clause containing the literal lit. Used to avoid backward rewriting C to a tautology.\n;;\n;; rwtree : rewrite-tree?\n;; lit : literal?\n;; C : Clause?\n(define (binary-rewrite-literal rwtree lit C)\n  (define atom<=> (rewrite-tree-atom<=> rwtree))\n  (let loop ([lit lit] [rules '()])\n    (define candidate-rules (rewrite-tree-ref rwtree lit))\n    ; Find the best rewrite of lit according to atom<=>.\n    ; Q: Can we rewrite more greedily, that is, applied each rewrite asap?\n    ; A: if the set of rules is confluent, yes, since they are all equivalent (although\n    ; choosing the one that leads to the smallest literal may still be faster)\n    ;   But if the rules are not confluent then we may have a problem.\n    (for/fold ([best-lit lit]\n               [best-rule #false]\n               #:result (if best-rule\n                            (loop best-lit (cons best-rule rules)) ; try once more\n                            (values best-lit (reverse rules)))) ; no more rewrites\n              ([r (in-list candidate-rules)]\n               #:unless (let ([g (rule-rule-group r)])\n                          ; Don't rewrite yourself or your converse!\n                          (or (eq? C (rule-group-Clause g))\n                              (eq? C (rule-group-Converse g)))))\n      (define new-lit (rule-rewrite-literal r lit))\n      (if (and new-lit (order<? (atom<=> new-lit best-lit)))\n          (values new-lit r)\n          (values best-lit best-rule)))))\n\n;; Returns a rewritten clause and the set (without duplicates) of rules used for rewriting.\n;; Rewriting a clause is a simple as rewriting each literal, because\n;; only left-unification is used, so the substitution cannot apply to the rest of the clause.\n;; NOTICE: The variables of the resulting clause are not freshed.\n;;\n;; rwtree : rewrite-tree?\n;; cl : clause?\n;; C : Clause?\n(define (binary-rewrite-clause rwtree cl C)\n  (let/ec return\n    (for/fold ([lits '()]\n               [rules '()]\n               #:result (values (sort-clause lits)\n                                (remove-duplicates rules eq?)))\n              ([lit (in-list cl)])\n      (define-values (new-lit new-rules) (binary-rewrite-literal rwtree lit C))\n      (values (cond [(ltrue? new-lit) (return (list new-lit) new-rules)] ; tautology shortcut\n                    [(lfalse? new-lit) lits]\n                    [else (cons new-lit lits)])\n              (append new-rules rules)))))\n\n(define Clause-type-rw 'rw)\n\n;; Clause? -> boolean?\n(define (Clause-type-rw? C)\n  (eq? (Clause-type C) Clause-type-rw))\n\n;; Returns a new Clause if C can be rewritten, C otherwise.\n;; The parents of the new Clause are C followed by the set of clauses from which the rules\n;; used for rewriting C originate.\n;;\n;; rwtree : rewrite-tree?\n;; C : Clause?\n;; -> Clause?\n(define (binary-rewrite-Clause rwtree C)\n  (define-values (new-cl rules) (binary-rewrite-clause rwtree (Clause-clause C) C))\n  (cond [(empty? rules)\n         C]\n        [else\n         (++n-binary-rewrites)\n         (make-Clause (clause-normalize new-cl)\n                      (cons C (remove-duplicates (map rule-Clause rules) eq?))\n                      #:type Clause-type-rw)]))\n\n;; Returns whether the clause cl would be rewritten. Does not perform the rewriting.\n;;\n;; rwtree : rewrite-tree?\n;; cl : clause?\n;; C : Clause?\n;; -> boolean?\n(define (binary-rewrite-clause? rwtree cl C)\n  (for/or ([lit (in-list cl)])\n    ; We need to perform the literal rewriting anyway, because\n    ; we need to check if the result is order<?\n    (define-values (new-lit new-rules) (binary-rewrite-literal rwtree lit C))\n    (not (empty? new-rules))))\n\n;; Returns whether the Clause C would be rewritten. Does not perform the rewriting.\n;;\n;; rwtree : rewrite-tree?\n;; C : Clause?\n;; -> boolean?\n(define (binary-rewrite-Clause? rwtree C)\n  (binary-rewrite-clause? rwtree (Clause-clause C) C))\n\n;; Unconditionally adds the rule rl to the rewrite-tree rwtree,\n;; and removes from rwtree the rules that are subsumed by rl\n;;\n;; rwtree : rewrite-tree?\n;; rl : rule?\n;; -> void?\n(define (add-rule! rwtree rl)\n  (define atom<=> (rewrite-tree-atom<=> rwtree))\n  (unless (or (rule-tautology? rl)\n              (find-subsuming-rule rwtree rl))\n    ;; Remove existing rules that are subsumed by rl.\n    (define from-lit (rule-from-literal rl))\n    (trie-inverse-find rwtree from-lit\n                       (λ (nd)\n                         (define matches (trie-node-value nd))\n                         (when (list? matches) ; o.w. no-value\n                           (define new-value\n                             (for/list ([rl2 (in-list matches)]\n                                        #:unless (rule-subsumes rl rl2))\n                               rl2))\n                           ;; TODO: If new-value is '(), the node should be removed from the trie,\n                           ;; TODO: along with any similar parent. (this could be made automatic?)\n                           (set-trie-node-value! nd new-value))))\n\n    ;; NOTICE: No need to backward-rewrite the rules.\n    ;; Resolution (in the saturation loop) will take care of generating new rules\n    ;; and rewriting both their heavy sides and the light sides,\n    ;; while add-rule! takes care of subsumption on the heavy side.\n    ;; Letting the resolution loop take care of this is much safer, as it ensures\n    ;; that rwtree and utree are in sync, and that rwtree is not going to rewrite\n    ;; clauses before utree has a chance to generate new candidates via resolution.\n    ;; That is, if we only *remove* stuff from rwtree, and not do the job of resolution\n    ;; (apart from forward rewriting), then we should be fine?\n    (++n-rule-added)\n    (trie-insert! rwtree from-lit rl)))\n\n;; Unconditionally removes a single (oriented) rule from the tree.\n;; Use with caution and see instead remove-rule-group!.\n;;\n;; rwtree : rewrite-tree?\n;; rl : rule?\n;; -> void?\n(define (remove-rule! rwtree rl)\n  (trie-find rwtree (rule-from-literal rl)\n             (λ (nd)\n               (define old-value (trie-node-value nd))\n               (when (list? old-value) ; o.w. no-value\n                 ;; TODO: If new-value is '(), the node should be removed from the trie,\n                 ;; TODO: along with any similar parent. (this could be made automatic?)\n                 (set-trie-node-value! nd (remove rl old-value eq?))))))\n\n;; Removes a group of rules that were added at the same time via Clause->rules\n;; (via add-binary-Clause!).\n;;\n;; rwtree : rewrite-tree?\n;; gp : rule-group?\n;; -> void?\n(define (remove-rule-group! rwtree gp)\n  (for ([rl (in-list (rule-group-rules gp))])\n    (remove-rule! rwtree rl)))\n\n;; Turn the unit Clause into a binary Clause before adding it.\n;; As for self-converses, we say that C is its own converse but that's a lie;\n;; This is to avoid problems and specific cases when loading/saving rules.\n;; A self-converse rule is necessarily dynamic (unless commutativity can be handled statically?),.\n;; A unit rule is necessarily static (since $false is the bottom element).\n;; Hence a 'self-converse' static rule is necessarily a unit rule (for now).\n;;\n;; rwtree : rewrite-tree?\n;; C : Clause?\n;; rewrite? : boolean?\n;; -> void?\n(define (rewrite-tree-add-unit-Clause! rwtree C #:? rewrite?)\n  (unless (unit-Clause? C) (error \"Non-unit Clause v\" C))\n  (rewrite-tree-add-binary-Clause! rwtree C C #:rewrite? rewrite?))\n\n;; Rewriting of the clause C must be done prior to calling this function.\n;; Conv: Converse of C. See Clause->rules.\n;; Returns the new rules (use these to obtain the rewritten Clauses).\n;;\n;; rwtree : rewrite-tree?\n;; C : Clause?\n;; Conv : Clause?\n;; rewrite? : boolean?\n;; -> void?\n(define (rewrite-tree-add-binary-Clause! rwtree C Conv #:? [rewrite? #true])\n  (cond\n    [(Clause-binary-rewrite-rule? C) ; already added as a rule in the past?\n     (when-debug>= steps\n                   (displayln \"Clause has already been added before. Skipping.\"))\n     '()]\n    [else\n     (let-values\n         ([(C Conv)\n           (cond/else\n            [(not rewrite?) (values C Conv)]\n            #:else ; Rewriting\n            (define C2 (binary-rewrite-Clause rwtree C))\n            (when-debug>= steps\n                          (displayln \"Considering binary Clause for a rule (before rewriting):\")\n                          (display-Clause-ancestor-graph C #:depth 0)\n                          (displayln \"After rewriting:\")\n                          (display-Clause-ancestor-graph C2)\n                          (when (Clause-tautology? C2)\n                            (displayln \"...but tautology.\")))\n            #:cond\n            [(Clause-tautology? C2)\n             (values #false #false)]\n            #:else\n            ; Rewritten rule can still be used, rewrite the converse too. Not very efficient.\n            (define Conv2 (if (eq? C Conv) Conv (binary-rewrite-Clause rwtree Conv)))\n            (values C2 Conv2))])\n\n       (cond\n         [(not C) '()]\n         [(empty-clause? (Clause-clause C))\n          ; Refutation found!\n          (when-debug>= steps\n                        (displayln \"Refutation found while adding rules!\")\n                        (display-Clause-ancestor-graph C))\n          ; TODO: Let's just discard it for now. A refutation will probably be found very early\n          ; TODO: at the next saturation iteration.\n          '()]\n         [else\n          (define atom<=> (rewrite-tree-atom<=> rwtree))\n          (define dynamic-ok? (rewrite-tree-dynamic? rwtree))\n          (define rls (Clause->rules C Conv #:atom<=> atom<=> #:dynamic-ok? dynamic-ok?))\n          (when-debug>= steps\n                        (displayln \"Adding the following rules:\")\n                        (display-rules rls))\n          (for ([rl (in-list rls)])\n            (add-rule! rwtree rl))\n          ; We set the bit to #true, *even if* no rule has been added,\n          ; because the purpose of this bit is to avoid considering\n          ; C later again to save time.\n          ; TODO: We could set Conv as a rewrite-rule too but ONLY if C also subsumes the converse\n          ; TODO: of conv.\n          (set-Clause-binary-rewrite-rule?! C #true)\n          rls]))]))\n\n;; Adds the binary Clauses Cs as rules and returns the corresponding rules.\n;; If rewrite? is not #false, the clauses are rewritten beforehand using the rules in the tree\n;; (the order of the rules in Cs does matter as of now)\n;; and tautologies are filtered out.\n;;   The default rewrite = #true is 'safe' because when considering A->B, Clause->rules also considers\n;;   B->A because we provide it with the converse equivalence (that is, the proof that B->A is valid).\n;;   Hence even converse implications can safely be rewritten to tautologies without losing rules.\n;; Conv: MUST Subsumes the converse clause of each of Cs.\n;;\n;; rwtree : rewrite-tree?\n;; Cs : (listof Clause?)\n;; Conv : Clause?\n;; rewrite? : boolean?\n;; -> void?\n(define (rewrite-tree-add-binary-Clauses! rwtree Cs Conv #:? rewrite?)\n  (for/fold ([rules '()])\n            ([C (in-list Cs)])\n    (define rls (rewrite-tree-add-binary-Clause! rwtree C Conv #:rewrite? rewrite?))\n    (append rls rules)))\n\n;; Returns the list of rules (without duplicates) of rwtree.\n;;\n;; rwtree : rewrite-tree?\n;; -> (listof rule?)\n(define (rewrite-tree-rules rwtree)\n  (remove-duplicates (append* (trie-values rwtree)) eq?))\n\n;; Returns the list of rule groups (without duplicates) of rwtree.\n;;\n;; rwtree : rewrite-tree?\n;; -> (listof rule-group?)\n(define (rewrite-tree-rule-groups rwtree)\n  (remove-duplicates (map rule-rule-group (append* (trie-values rwtree))) eq?))\n\n;; Returns the list of unique Clauses that have been used to create the rules\n;; held by the given rule groups.\n;;\n;; groups : (listof rule-group?)\n;; -> (listof Clause?)\n(define (rule-groups-original-Clauses groups)\n  (remove-duplicates (append (map rule-group-Clause groups)\n                             (map rule-group-Converse groups))\n                     eq?))\n\n;; Returns the list of unique Clauses that have been used to create the rules.\n;;\n;; rules : (listof rule?)\n;; -> (listof Clause?)\n(define (rules-original-Clauses rules)\n  (rule-groups-original-Clauses (map rule-rule-group rules)))\n\n;; Returns the list of unique Clauses that have been used to create the rules\n;; of the rewrite tree.\n;;\n;; rwtree : rewrite-tree?\n;; -> (listof Clause?)\n(define (rewrite-tree-original-Clauses rwtree)\n  (rule-groups-original-Clauses (rewrite-tree-rule-groups rwtree)))\n\n;; Returns the number of rules in the rewrite tree.\n;;\n;; rwtree : rewrite-tree?\n;; -> exact-nonnegative-integer?\n(define (rewrite-tree-count rwtree)\n  (length (rewrite-tree-rules rwtree))) ; not efficient\n\n;; Returns a dictionary of statistics about the rewrite tree.\n;;\n;; rwtree : rewrite-tree?\n;; -> list?\n(define (rewrite-tree-stats rwtree)\n  (define rules (rewrite-tree-rules rwtree))\n  (define n-rules (length rules))\n  (define n-dyn (count (λ (r) (not (rule-static? r))) rules))\n  (define n-unit (count unit-rule? rules))\n  (define n-bin (- n-rules n-unit))\n  `((rules . ,n-rules)\n    (unit-rules . ,n-unit)\n    (binary-rules . ,n-bin)\n    (binary-rules-static . ,(- n-bin n-dyn))\n    (binary-rules-dynamic . ,n-dyn)))\n\n;; Attempts to simplify the rules by successively removing each rule,\n;; rewrite its underlying Clause and add the rule again—checking for subsumption.\n;; Since all rules are processed, the new set of rules can be obtained via rewrite-tree-rules.\n;; Notice: Not (currently) suitable for use *inside* the saturation loop because the new Clauses\n;; (as per `eq?` are not part of the active set or candidates.\n;;\n;; rwtree : rewrite-tree?\n;; -> void?\n(define (re-add-rules! rwtree)\n  (define groups (rewrite-tree-rule-groups rwtree))\n  (for ([gp (in-list groups)])\n    (remove-rule-group! rwtree gp)\n    (define C (rule-group-Clause gp))\n    (set-Clause-binary-rewrite-rule?! C #false) ; otherwise will not be added\n    (rewrite-tree-add-binary-Clause! rwtree C (rule-group-Converse gp) #:rewrite? #true)))\n\n;===================;\n;=== Save / load ===;\n;===================;\n\n;; Save the rules to file f (as clauses).\n;;\n;; rwtree : rewrite-tree?\n;; rules-file : file?\n;; exists : symbol? ; see `display-to-file`.\n;; -> void?\n(define (save-rules! rwtree #:! rules-file #:? [exists 'replace])\n  (define groups (rewrite-tree-rule-groups rwtree))\n  ; We use hash to avoid duplicating clauses, so that we also avoid loading\n  ; the same clause under different names.\n  (define-counter idx 0)\n  (define h (make-hasheq))\n  (define (get-clause C)\n    (if (hash-has-key? h C)\n        (hash-ref h C)\n        (begin0 (Clause-clause C)\n                (++idx)\n                (hash-set! h C idx))))\n\n  (make-parent-directory* rules-file) ; ensure the path exists\n  (with-output-to-file rules-file #:exists exists\n    (λ () (for ([gp (in-list groups)])\n            (define C (rule-group-Clause gp))\n            (define Conv (rule-group-Converse gp))\n            (writeln (if (eq? C Conv)\n                         (list (get-clause C))  ; self-converse\n                         (list (get-clause C)\n                               (get-clause Conv))))))))\n\n;; Private.\n;;\n;; rules-file : file?\n;; -> (listof Clause?)\n(define (load-rule-Clause-lists #:! rules-file)\n  (define-counter idx 0)\n  ; Each clause has a number (local to the file) and if a number appears while reading\n  ; then we must load the saved clause of the same number.\n  (define h (make-hasheqv))\n  (define (get-Clause! x)\n    (cond [(number? x)\n           (hash-ref h x)]\n          [else\n           (++idx)\n           (define C (make-Clause x #:type 'load))\n           (hash-set! h idx C)\n           C]))\n\n  (for/list ([cls (in-list (file->list rules-file))])\n    (map get-Clause! cls)))\n\n;; Load the rules from file into the rewrite-tree.\n;; Optionally: rewrites the rules before adding them\n;; Returns the set of new rules.\n;;\n;; rwtree : rewrite-tree?\n;; rules-file : file?\n;; rewrite? : boolean?\n;; -> (listof rule?)\n(define (load-rules! rwtree #:! rules-file #:? [rewrite? #true])\n  (define Crules (load-rule-Clause-lists #:rules-file rules-file))\n  (for/fold ([rules '()])\n            ([Cs (in-list Crules)])\n    (define C (first Cs))\n    (define Conv\n      (if (= (length Cs) 1)\n          C ; self-converse\n          (second Cs)))\n    (define new-rules (rewrite-tree-add-binary-Clause! rwtree C Conv #:rewrite? rewrite?))\n    (append new-rules rules)))\n\n;=======================;\n;=== Filtering rules ===;\n;=======================;\n\n;; Returns a new rwtree containing only the filtered rules\n;;\n;; rwtree : rewrite-tree?\n;; proc : rule-group? -> boolean?\n;; -> rewrite-tree?\n(define (filter-rule-groups rwtree proc)\n  (define rwtree2 (make-rewrite-tree #:atom<=> (rewrite-tree-atom<=> rwtree)\n                                     #:dynamic-ok? (rewrite-tree-dynamic? rwtree)))\n  (define groups (rewrite-tree-rule-groups rwtree))\n  (for ([gp (in-list groups)])\n    (when (proc gp)\n      ; Copy the clauses (shallow)\n      (define C    (make-Clause (Clause-clause (rule-group-Clause   gp)) #:type 'filter-rule-groups))\n      (define Conv (make-Clause (Clause-clause (rule-group-Converse gp)) #:type 'filter-rule-groups))\n      (rewrite-tree-add-binary-Clause! rwtree2 C Conv #:rewrite? #true)))\n  rwtree2)\n\n;==================;\n;=== Confluence ===;\n;==================;\n\n;; Unifies (resolves) only with the lhs of rules and returns\n;; the new set of Clauses (and converse Clauses).\n;; If bounded? is not #false, then Clauses which have a literal\n;; that is heavier (in literal-size) than a `from' literal of its parent rules\n;; are discarded.\n;;\n;; rwtree : rewrite-tree?\n;; rl : rule?\n;; bounded? : boolean?\n;; -> (listof Clause?)\n(define (find-critical-pairs rwtree rl #:? [bounded? (*bounded-confluence?*)])\n  (define lnot-from-lit1 (lnot (rule-from-literal rl)))\n  (define to-lit1 (rule-to-literal rl))\n  (define new-Clauses '())\n  ; Resolution (like unification with the converse)\n  ; to ensure that the Clause parents are correct\n  (trie-both-find rwtree lnot-from-lit1\n                  (λ (nd)\n                    (define rls (trie-node-value nd))\n                    (when (list? rls)\n                      (for ([rl2 (in-list rls)]\n                            #:unless (eq? rl rl2))\n                        (define from-lit2 (rule-from-literal rl2))\n                        (define to-lit2 (rule-to-literal rl2))\n                        (define s (unify lnot-from-lit1 from-lit2))\n                        (when s\n                          (define cl (clause-normalize (substitute (list to-lit1 to-lit2) s)))\n                          (define C (make-Clause cl (list (rule-Clause rl) (rule-Clause rl2))\n                                                 #:type 'c-p)) ; critical-pair\n                          (define max-size (max (literal-size (rule-from-literal rl))\n                                                (literal-size from-lit2)))\n                          (unless (or (Clause-tautology? C)\n                                      (and bounded?\n                                           (> (max (literal-size (first cl))\n                                                   (literal-size (second cl)))\n                                              max-size)))\n                            (cons! C new-Clauses)))))))\n  new-Clauses)\n\n;; This is a bad fix. Instead we should find the correct converse Clause (via rule groups)\n;; Returns the list of rules that were added, or '() if none.\n;;\n;; rwtree : rewrite-tree?\n;; C : Clause?\n;; -> void?\n(define (force-add-binary-Clause! rwtree C)\n  (define Conv (make-converse-Clause C))\n  (rewrite-tree-add-binary-Clause! rwtree C (if (Clause-equivalence? C Conv) C Conv)))\n\n;; Add all critical pairs between existing rules.\n;; This procedure may need to be called several times, but such a loop may not terminate\n;; as some rules can be inductive.\n;; It is recommended to call `simplify-rewrite-tree!` before and after calling this procedure.\n;; Returns #true if any rules has been added.\n;;\n;; rwtree : rewrite-tree?\n;; bounded? : boolean?\n;; -> boolean?\n(define (rewrite-tree-confluence-step! rwtree #:? bounded?)\n  (define rules (rewrite-tree-rules rwtree))\n  (for/fold ([any-change? #false])\n            ([rl (in-list rules)])\n    (define pairs (find-critical-pairs rwtree rl #:bounded? bounded?))\n    (for/fold ([any-change? any-change?])\n              ([C (in-list pairs)])\n      (define change? (force-add-binary-Clause! rwtree C))\n      (or any-change? (and change? #true)))))\n\n;; Performs several steps of confluence until no more change happens.\n;; Returns whether any change has been made.\n;; Notice: if bounded? is #false, this may loop forever.\n;; If it does halt however, the system is confluent, but may not be minimal;\n;; call re-add-rules! to remove unnecessary rules and simplify rhs of rules\n;; (this should help make rewriting faster).\n;; It is advised to call re-add-rules! once before and once after rewrite-tree-confluence!.\n;;\n;; rwtree : rewrite-tree?\n;; bounded? : boolean?\n;; max-steps : exact-nonnegative-integer?\n;; -> boolean?\n(define (rewrite-tree-confluence! rwtree #:? bounded? #:? [max-steps (*confluence-max-steps*)])\n  (let loop ([step 1] [any-change? #false])\n    (define changed? (rewrite-tree-confluence-step! rwtree #:bounded? bounded?))\n    (cond [(or (>= step max-steps)\n               (not changed?))\n           any-change?]\n          [else (loop (+ step 1) #true)])))\n\n;================;\n;=== Printing ===;\n;================;\n\n;; Returns a list representing the rule.\n;;\n;; rule? -> list?\n(define (rule->list rl)\n  (cons (Clause-idx (rule-Clause rl))\n        (Vars->symbols (list (rule-from-literal rl)\n                             (rule-to-literal rl)))))\n\n;; A comparator to sort the rules for printing\n(define display-rule<=>\n  (make-chain<=> boolean<=> rule-static?\n                 boolean<=> unit-rule?\n                 boolean<=> (λ (r) (lnot? (rule-from-literal r)))\n                 number<=> (λ (r) (+ (tree-size (rule-from-literal r))\n                                     (tree-size (rule-to-literal r))))\n                 number<=> (λ (r) (tree-size (rule-to-literal r)))\n                 length<=> rule-to-fresh))\n\n;; (listof rule?) -> (listof rule?)\n(define (sort-rules rls)\n  (sort rls (λ (a b) (order>? (display-rule<=> a b)))))\n\n;; Human-readable output\n;; Notice: Since unit rules are asymmetric (only one rule per unit clause),\n;; if positive-only is not #false it may not display some unit rules.\n;;\n;; rls : (listof rule?)\n;; sort? : boolean?\n;; positive-only? : boolean?\n;; unit? : boolean?\n(define (rules->string rls #:? [sort? #true] #:? [positive-only? #false] #:? [unit? #true])\n  (string-join\n   (for/list ([rl (in-list (if sort? (sort-rules rls) rls))]\n              #:unless (or (and (not unit?) (unit-rule? rl))\n                           (and positive-only? (lnot? (rule-from-literal rl)))))\n     ; abusing clause->string:\n     (clause->string (list (if (rule-static? rl) \"static \" \"dynamic\")\n                           (map Var (rule-to-fresh rl))\n                           ':\n                           (rule-from-literal rl)\n                           '→\n                           (rule-to-literal rl))))\n   \"\\n\"))\n\n;; Like rules->string but directly displays the result.\n;;\n;; rls : (listof rule?)\n;; sort? : boolean?\n;; positive-only? : boolean?\n;; unit? : boolean?\n(define-wrapper (display-rules (rules->string rls #:? sort? #:? positive-only? #:? unit?))\n  #:call-wrapped call\n  (displayln (call)))\n"
  },
  {
    "path": "satore/saturation.rkt",
    "content": "#lang racket/base\n\n;**************************************************************************************;\n;****                             Saturation Algorithm                             ****;\n;**************************************************************************************;\n\n(require bazaar/cond-else\n         bazaar/date\n         bazaar/debug\n         bazaar/dict\n         bazaar/mutation\n         data/heap/unsafe\n         data/queue\n         define2\n         global\n         racket/block\n         racket/dict\n         racket/format\n         racket/list\n         racket/math\n         racket/pretty\n         racket/string\n         satore/Clause\n         satore/clause-format\n         satore/clause\n         satore/interact\n         satore/json-output\n         satore/misc\n         satore/rewrite-tree\n         satore/tptp\n         satore/unification-tree\n         satore/unification)\n\n(provide (all-defined-out))\n\n;===============;\n;=== Globals ===;\n;===============;\n\n(define-global:boolean *quiet-json?* #false\n  '(\"JSON output format and silent mode. Deactivates some verbose options.\"))\n\n(define-global *memory-limit* 4096\n  \"Memory limit in MB, including the Racket VM.\"\n  exact-positive-integer?\n  string->number)\n\n(define-global:boolean *find-unit-rules-in-candidates?* #false\n  '(\"Search for unit rewrite rules in the condidate set?\"\n    \"This may speed up the search significantly, or slow it down significantly,\"\n    \"depending on how many unit rules can be generated.\"))\n\n(define-global:boolean *backward-rw?* #true\n  '(\"Use binary-clause rewriting? (aka θ-equivalences).\"\n    \"The iterative mode does not use backward rewrites.\"))\n\n(define-global:boolean *dynamic-rules?* #false\n  \"Use dynamic rules? Experimental.\")\n\n(define-global:boolean *proof?* #false\n  \"Display the proof when found?\")\n\n(define-global *age:cost* '(1 9)\n  \"Age:cost ratio. Format: <age-freq>:<cost-freq>, e.g., '1:3'\"\n  (λ (p) (and (list? p) (= 2 (length p)) (andmap exact-nonnegative-integer? p)))\n  (λ (s) (map string->number (string-split s \":\"))))\n\n(define-global:category *cost-type* 'weight-fair\n  '(weight-fair weight)\n  \"Cost type.\")\n\n(define-global *cost-depth-factor* 1.5\n  \"Cost = weight + cost-depth-factor * depth\"\n  (λ (x) #true)\n  string->number)\n\n(define-global *cost-noise* 0.\n  \"Noise factor to add to costs\"\n  (λ (x) (and (real? x) (>= x 0)))\n  string->number)\n\n(define-global:boolean *parent-discard?* #false\n  \"Discard clauses when at least one parent has been discarded?\")\n\n(define-global:boolean *discover-online?* #true\n  '(\"Use rewrite rules as soon as they are discovered?\"\n    \"The rules will not be made confluence until the next restart\"))\n\n(define-global:boolean *negative-literal-selection?* #true\n  \"When resolving, if a clause has negative literals, only select one of them.\")\n\n(define-global *cpu-limit* +inf.0\n  \"CPU limit in seconds per problem.\"\n  exact-positive-integer?\n  string->number)\n\n(define-global *cpu-first-limit* +inf.0\n  \"CPU limit in seconds per problem.\"\n  exact-positive-integer?\n  string->number)\n\n(define-global *cpu-limit-factor* 3\n  '(\"Increase of cpu limit of cpu-first-limit once an iteration has failed.\"\n    \"Set to 0 to avoid restarting.\"\n    \"Assumes --cpu-limit.\")\n  (λ (x) (and (real? x) (>= x 0)))\n  string->number)\n\n(define-global *input-rules* #false\n  '(\"File to read rewrite rules from.\")\n  file-exists?\n  values)\n\n(define-global *output-rules* #false\n  '(\"File to write rewrite rules to. If 'auto', a unique name is chosen automatically.\")\n  (λ (x) #true)\n  (λ (str)\n    (if (string=? str \"auto\")\n        (build-path \"rules\" (string-append \"rules-\" (date-iso-file) \".txt\"))\n        str)))\n\n;======================;\n;=== Rule discovery ===;\n;======================;\n\n;; Finds new binary equivalences between `C` and the clauses of `utree`,\n;; and adds and returns the set of resulting new rules that can be added to `rwtree`.\n;;\n;; rwtree-out : rewrite-tree?\n;; C : Clause?\n;; utree : unification-tree?\n(define (discover-new-rules! rwtree-out C utree)\n  (cond/else\n   [(not rwtree-out) '()]\n\n   ;; FIND UNIT REWRITE RULES\n   ;; Unit rewrite using the binary rewrite tree\n   [(unit-Clause? C)\n    (when-debug>= steps (displayln \"Found unit clause\"))\n    ;; Add the new unit clause to the set of unit rewrite rules\n    (rewrite-tree-add-unit-Clause! rwtree-out C #:rewrite? #false)]\n\n   [(not (binary-Clause? C))\n    '()]\n\n   ;; FIND BINARY REWRITE RULES\n   #:else\n   (when-debug>= steps (displayln \"Found binary clause\"))\n\n   ;; We search for the converse implication in the active set.\n   ;; This takes care of clauses that have converse clauses but not the converse.\n   ;; Ex: C1 = p(X) | q(X)  ;   C2 = ~p(a) | ~q(a)\n   ;; C2 has a converse clause, but not C1. Hence C2 can be added as a binary rewrite rule\n   ;; but not C1.\n   (define Conv (make-converse-Clause C))\n   (define self-conv? (Clause-subsumes C Conv))\n   #:cond\n   [self-conv?\n    ; Self-converse Clause, so only one Clause to add (but will lead to 2 rules).\n    (when-debug>= steps (displayln \"Self-converse\"))\n    (rewrite-tree-add-binary-Clause! rwtree-out C C #:rewrite? #false)]\n   #:else\n   (define Subs (utree-find/any utree Conv (λ (a Conv) (and (binary-Clause? a)\n                                                            (Clause-subsumes a Conv)))))\n   #:cond\n   [Subs\n    ; We found a converse Clause in the active set, or a Clause that subsumes the\n    ; converse Clause, so we can add selected-Clause as a rule and also its\n    ; converse Clause.\n    ; We can't add Subs, since Subs may not itself have a converse\n    ; clause in the active set. Ex:\n    ; selected-Clause = p(a) | q(a), so Conv = ~p(a) | ~q(a) and Subs = ~p(X) | ~q(X)\n    ; Subs cannot be added as a rule because (supposedly) we haven't found a converse\n    ; clause yet, but we can still add Conv as a rule.\n    ; If Subs is aleardy a rule, Conv will be rewritten to a tautology and discarded.\n    (when-debug>= steps (printf \"Found converse subsuming clause: ~a\\n\"\n                                (Clause->string Subs)))\n    ; Since C has already been rewritten, there is no need to do it again.\n    (rewrite-tree-add-binary-Clause! rwtree-out C Subs #:rewrite? #false)]\n   #:else\n   ; Asymmetric rules.\n   ; Even when selected-Clause is not a rule (yet?), it may still enable\n   ; other more specific Clauses of the active set to be added as rules too.\n   ; Eg, selected-Clause = p(X) | q(X) and some other active clause is ~p(a) | ~q(a).\n   (define Subsd (utree-find/all utree Conv (λ (a Conv) (and (binary-Clause? a)\n                                                             (Clause-subsumes Conv a)))))\n   #:cond\n   [(not (empty? Subsd))\n    (when-debug>= steps\n                  (displayln \"Found converse subsumed clauses:\")\n                  (print-Clauses Subsd))\n    ; rewrite=#true is ok here because Clause->rules already considers both directions\n    ; of the implication. Hence if a potential rule is rewritten to a tautology,\n    ; we know it's already redundant anyway.\n    ; TODO: Rename this to add-asymmetric-rules ?\n    (rewrite-tree-add-binary-Clauses! rwtree-out Subsd C #:rewrite? #true)]\n   #:else '()))\n\n;====================;\n;=== Clause costs ===;\n;====================;\n\n;; Clause comparison for the cost queue.\n;;\n;; Clause? Clause? -> boolean?\n(define (Candidate<= C1 C2)\n  (<= (Clause-cost C1) (Clause-cost C2)))\n\n;; Sets the cost of a list of Clauses that all have the same parent `parent`.\n;; Some noise can be added to the cost via *cost-noise*.\n;;\n;; Cs : (listof Clause?)\n;; cost-type: symbol?\n;; parent : Clause?\n;; cost-depth-factor : number?\n;; -> void?\n(define (Clauses-calculate-cost! Cs\n                                 cost-type\n                                 parent\n                                 #:! cost-depth-factor)\n  (case cost-type\n    ;; Very simple cost function that uses the weight of the Clause. May not be fair.\n    [(weight)\n     (for ([C (in-list Cs)])\n       (set-Clause-cost! C\n         (if (empty? (Clause-clause C))\n             -inf.0 ; empty clause should always be top of the list\n             (Clause-size C))))]\n\n    ;; Very simple cost function that is fair\n    [(weight-fair)\n     (for ([C (in-list Cs)])\n       (set-Clause-cost! C\n         (if (empty? (Clause-clause C))\n             -inf.0 ; empty clause should always be top of the list\n             (+ (* (Clause-depth C) cost-depth-factor)\n                (Clause-size C)))))])\n\n  ;; Add noise to the cost so as to potentially solve more later.\n  ;; To combine with a slowly increasing step-limit-factor in iterative saturation\n  (unless (zero? (*cost-noise*))\n    (define ε (*cost-noise*))\n    (for ([C (in-list Cs)])\n      (set-Clause-cost! C\n        (* (+ (- 1. ε) (* ε (random)))\n           (Clause-cost C))))))\n\n;==================;\n;=== Saturation ===;\n;==================;\n\n;; List of possible status values. Used to prevent mistakes.\n(define statuses '(refuted saturated time memory steps running))\n\n;; Returns whether the result dictionary `res` has the status `status`.\n;;\n;; res : dict?\n;; status : symbol?\n(define (check-status res status)\n  (define res-status (dict-ref res 'status #false))\n\n  ; To avoid silent typo bugs.\n  (assert (memq status statuses) status)\n  (assert (memq res-status statuses) res-status)\n\n  (eq? status res-status))\n\n;; The main algorithm. Saturates the formula given by the input clauses\n;; by adding new clauses (either resolutions or factors) until either\n;; the empty clause is produced, or a resource limit is reached (steps, time, memory).\n;;\n;; input-clauses : (listof clause?)\n;; step-limit : number?\n;; memory-limit : number?\n;; cpu-limit : number?\n;; rwtree : (or/c #false rewrite-tree?)\n;; rwtree-out : (or/c #false rewrite-tree?)\n;; backward-rewrite? : boolean?\n;; parent-discard? : boolean?\n;; age:cost : (list/c exact-nonnegative-integer? exact-nonnegative-integer?)\n;; cost-type : symbol?\n;; disp-proof? : boolean?\n;; L-resolvent-pruning : boolean?\n;; find-unit-rules-in-candidates? : boolean?\n;; negative-literal-selection? : boolean?\n;; -> dict?\n(define (saturation input-clauses\n                    #:? [step-limit +inf.0]\n                    #:? [memory-limit (*memory-limit*)] ; in MB\n                    #:? [cpu-limit +inf.0] ; in seconds\n                    ; The rewrite tree holding the binary rules.\n                    ; Set it to #false to deactivate it.\n                    #:? [rwtree (make-rewrite-tree #:atom<=> (get-atom<=>)\n                                                   #:dynamic-ok? (*dynamic-rules?*)\n                                                   #:rules-file (*input-rules*))]\n                    ; rewrite-tree where new rules found during saturation are stored.\n                    ; If rwtree-out is different from rwtree, new rules are not used but only stored,\n                    ; and backward rewriting is deactivated.\n                    #:? [rwtree-out rwtree] ; or #false if don't care\n                    ; Only effective if (eq? rwtree rwtree-out)\n                    #:? [backward-rewrite? (*backward-rw?*)]\n                    #:? [parent-discard? (*parent-discard?*)]\n                    #:? [age:cost (*age:cost*)] ; chooses age if (< (modulo t (+ age cost)) age)\n                    #:? [cost-type (*cost-type*)]\n                    #:? [disp-proof? (*proof?*)]\n                    #:? [L-resolvent-pruning? (*L-resolvent-pruning?*)]\n                    #:? [find-unit-rules-in-candidates? (*find-unit-rules-in-candidates?*)]\n                    #:? [negative-literal-selection? (*negative-literal-selection?*)])\n  ;; Do NOT reset the clause-index, in particular if rwtree is kept over several calls to saturation.\n  #;(reset-clause-index!)\n\n  ;; Tree containing the active Clauses\n  (define utree (make-unification-tree))\n  ;; Clauses are pulled from priority first, unless empty.\n  ;; INVARIANT: active-Clauses U priority is (should be!) equisatisfiable with input-Clauses.\n  ;; In other words, if priority is empty, then the set of active-Clauses\n  ;; is equisatisfiable with the input-Clauses.\n  ;; Some active clauses may be removed from utree and pushed back into priority for further\n  ;; processing like 'backward' rewriting. In that case, the active Clauses (utree) is not\n  ;; 'complete'.\n  (define priority (make-queue))\n\n  ;; Both heaps contain the candidate clauses (there may be duplicates between the two,\n  ;; but this is checked when extracting Clauses from either heap).\n  (define candidates (make-heap Candidate<=))\n  (define age-queue (make-heap Clause-age>=))\n  ;; Frequency of extracting Clauses from either heap.\n  (define age-freq (first age:cost))\n  (define cost-freq (second age:cost))\n  (define age+cost-freq (+ age-freq cost-freq))\n\n  ;; Add the Clauses Cs to the priority queue for priority processing.\n  (define (add-priority-Clauses! Cs)\n    (for ([C (in-list Cs)])\n      ; Need to set candidate? to #true otherwise it may be skipped.\n      ; (or maybe we should not skip clauses loaded from `priority`?)\n      (set-Clause-candidate?! C #true)\n      (enqueue! priority C)))\n\n  (define cost-depth-factor (*cost-depth-factor*)) ; immutable value\n\n  (define (add-candidates! parent Cs)\n    ;; Calculate costs and add to candidate heap.\n    (unless (empty? Cs)\n      (Clauses-calculate-cost! Cs cost-type parent #:cost-depth-factor cost-depth-factor)\n\n      (for ([C (in-list Cs)])\n        (set-Clause-candidate?! C #true))\n\n      (unless (= 0 cost-freq) (heap-add-all! candidates Cs))\n      (unless (= 0 age-freq)  (heap-add-all! age-queue  Cs))\n      (when-debug>= steps\n                    (printf \"#new candidates: ~a #candidates: ~a\\n\"\n                            (length Cs)\n                            (heap-count candidates)))))\n\n  (define input-Clauses\n    (map (λ (c) (make-Clause c '() #:type 'in)) input-clauses))\n\n  ;; This maintains the invariant: If priority is empty, then the set of active-Clauses\n  ;; is equisatisfiable with the input-Clauses.\n  ;; In other words active-Clauses U priority is (should be!) equisatisfiable with input-Clauses.\n  (add-priority-Clauses! input-Clauses)\n\n  ;; We add the Clauses of the binary rules as candidates, so as to not cluter the active set\n  ;; in case there are many rules.\n  ;; Another option is to add them to the priority queue because they can be seen as possibly\n  ;; useful lemmas.\n  (when rwtree\n    ; A mock root clause parent of all input rules\n    (define C0rules (make-Clause (list ltrue) '() #:type 'rules-root))\n    ; rewrite=#false should not be necessary (since rewriting checks if a clause is from the original\n    (add-candidates! C0rules (rewrite-tree-original-Clauses rwtree)))\n\n  (define step 0)\n  (reset-n-tautologies!)\n  (define n-parent-discard 0)\n  (define n-forward-subsumed 0)\n  (define n-backward-subsumed 0)\n  (reset-n-binary-rewrites!)\n  (reset-n-rule-added!)\n  (reset-subsumes-stats!)\n  (reset-n-L-resolvent-pruning!)\n  (define start-time (current-milliseconds))\n\n  ;; TODO: Some calls are very slow...\n  (define (make-return-dict status [other '()])\n    (assert (memq status statuses) status)\n    (define stop-time (current-milliseconds))\n    `((status . ,status)\n      (steps . ,step)\n      (generated . ,clause-index) ; includes all input clauses and rules and intermediate steps\n      (actives . ,(length (unification-tree-Clauses utree)))\n      (candidates . ,(heap-count candidates))\n      (priority-remaining . ,(queue-length priority))\n      (tautologies . ,n-tautologies) ; counted in generated, (mostly) not in candidates\n      ,@(rewrite-tree-stats rwtree)\n      (binary-rewrites . ,n-binary-rewrites)\n      (forward-subsumed . ,n-forward-subsumed)\n      (backward-subsumed . ,n-backward-subsumed)\n      (subsumes-checks . ,n-subsumes-checks)\n      (subsumes-steps . ,n-subsumes-steps)\n      (subsumes-breaks . ,n-subsumes-breaks)\n      (parent-discard . ,n-parent-discard)\n      (L-resolvent-pruning . ,n-L-resolvent-pruning)\n      (memory . ,(current-memory-use)) ; doesn't account for GC---this would take too much time\n      (time . ,(- stop-time start-time))\n      . ,other))\n\n  (define (make-refuted-dict C)\n    (define proof (Clause-ancestor-graph C)) ; no duplicates\n    (define flat-proof (flatten proof))\n    (define type-occs (occurrences flat-proof #:key Clause-type))\n    (when disp-proof?\n      (displayln \"#| begin-proof\")\n      (display-Clause-ancestor-graph C #:tab \" \")\n      (displayln \"end-proof |#\"))\n    (make-return-dict 'refuted\n                      `((proof-length . ,(length flat-proof)) ; doesn't account for compound rewrites\n                        (proof-steps . ,(for/sum ([C2 (in-list flat-proof)])\n                                          (define n (length (Clause-parents C2)))\n                                          (if (< n 2) n (- n 1))))\n                        (proof-inferences . ,(count (λ (C2) (not (empty? (Clause-parents C2))))\n                                                    flat-proof))\n                        ,@(for/list ([(t o) (in-dict type-occs)])\n                            (cons (string->symbol (format \"proof-type:~a\" t)) o)))))\n\n  ;:::::::::::::::::::::;\n  ;:: Saturation Loop ::;\n  ;:::::::::::::::::::::;\n\n  (define result\n    (let loop ()\n      (++ step)\n      (define time-passed (- (current-milliseconds) start-time)) ; this is fast\n      (define mem (current-memory-use-MB)) ; mflatt says it's fast\n\n      (when-debug>= steps\n                    (printf \"\\nstep: ~a  generated: ~a  processed/s: ~a  generated/s: ~a\\n\"\n                            step\n                            clause-index\n                            (quotient (* 1000 step) (+ 1 time-passed))\n                            (quotient (* 1000 clause-index) (+ 1 time-passed))))\n      (cond/else\n       [(and (= 0 (heap-count candidates))\n             (= 0 (heap-count age-queue))\n             (= 0 (queue-length priority)))\n        (when-debug>= steps (displayln \"Saturated\"))\n        (make-return-dict 'saturated)]\n       [(> step step-limit) (make-return-dict 'steps)]\n       [(> time-passed (* 1000 cpu-limit)) (make-return-dict 'time)]\n       [(and (> mem memory-limit)\n             (block\n              (define pre (current-milliseconds))\n              ;; Memory is full, but try to collect garbage first.\n              (unless (*quiet-json?*)\n                (printf \"; before GC: memory-limit: ~a memory-use: ~a\\n\" memory-limit mem))\n              (collect-garbage)\n              (collect-garbage)\n              (define mem2 (current-memory-use-MB))\n              (define post (current-milliseconds))\n              (unless (*quiet-json?*)\n                (printf \"; after  GC: memory-limit: ~a memory-use: ~a gc-time: ~a\\n\"\n                        memory-limit mem2 (* 0.001 (- post pre))))\n              (> mem2 memory-limit)))\n        ; mem is full even after GC, so exit\n        (make-return-dict 'memory)]\n       #:else\n       ;; Choose a queue/heap to extract the selected-Clause from.\n       (define queue\n         (cond [(> (queue-length priority) 0)\n                ; Always has priority.\n                priority]\n               [(or (= 0 (heap-count candidates))\n                    (and (> (heap-count age-queue) 0)\n                         (< (modulo step age+cost-freq) age-freq)))\n                ; TODO: This is somewhat defeated by the `priority` queue.\n                age-queue]\n               [else candidates]))\n       (when-debug>= steps\n                     (printf \"Selected queue: ~a\\n\" (cond [(eq? queue priority) \"priority\"]\n                                                          [(eq? queue candidates) \"candidates\"]\n                                                          [else \"age queue\"])))\n       (define selected-Clause\n         (if (heap? queue)\n             (begin0 (heap-min queue)\n                     (heap-remove-min! queue))\n             (dequeue! queue)))\n\n       #:cond\n       ;; ALREADY PROCESSED\n       [(not (Clause-candidate? selected-Clause))\n        (when-debug>= steps (displayln \"Clause already processed. Skipping.\"))\n        (-- step) ; don't count this as a step\n        (loop)]\n       ;; ONE PARENT DISCARDED\n       [(and parent-discard? (ormap Clause-discarded? (Clause-parents selected-Clause)))\n        (when-debug>= steps (displayln \"At least one parent has been discarded. Discard too.\"))\n        (discard-Clause! selected-Clause)\n        (++ n-parent-discard)\n        (loop)]\n       #:else\n       (set-Clause-candidate?! selected-Clause #false)\n\n       ;; FORWARD REWRITE\n       ;; BINARY CLAUSE REWRITE OF SELECTED\n       ;; NOTICE: We do binary rewrites first because if we did unit then binary\n       ;; we would need to attempt a second unit-rewrite after that.\n       ;; (This may lead to unnecessary binary rewrites, but it's cleaner this way.)\n       (define selected-Clause-brw\n         (if rwtree\n             (binary-rewrite-Clause rwtree selected-Clause)\n             selected-Clause))\n\n       (when-debug>= steps\n                     (printf \"|\\nstep ~a: selected: ~a\\n\"\n                             step (Clause->string/alone selected-Clause 'all))\n                     (define binary-rewritten? (not (eq? selected-Clause-brw selected-Clause)))\n                     (when binary-rewritten?\n                       (displayln \"Binary rewritten:\")\n                       (display-Clause-ancestor-graph selected-Clause-brw #:depth 1))\n                     (unless (eq? selected-Clause-brw selected-Clause-brw)\n                       (displayln \"Unit rewritten:\")\n                       (display-Clause-ancestor-graph selected-Clause-brw #:depth 1))\n                     (when-debug>= interact\n                                   (interact-saturation\n                                    (priority utree rwtree selected-Clause make-return-dict)\n                                    selected-Clause-brw selected-Clause-brw)))\n\n       (set! selected-Clause selected-Clause-brw)\n       ;;; From now on, only selected-Clause should be used\n\n       (define selected-clause (Clause-clause selected-Clause))\n       #:cond\n       ;; REFUTED?\n       [(empty-clause? selected-clause)\n        (make-refuted-dict selected-Clause)]\n       ;; TAUTOLOGY?\n       [(clause-tautology? selected-clause)\n        (when-debug>= steps (displayln \"Tautology.\"))\n        (discard-Clause! selected-Clause)\n        (loop)] ; skip clause\n       ;; FORWARD SUBSUMPTION\n       [(utree-find/any utree selected-Clause Clause-subsumes)\n        ;; TODO: Tests\n        =>\n        (λ (C2)\n          (++ n-forward-subsumed)\n          (when-debug>= steps (printf \"Subsumed by ~a\\n\" (Clause->string C2 'all)))\n          (discard-Clause! selected-Clause)\n          (loop))] ; skip clause\n       #:else\n       ;; Clause is being processed.\n\n       ;; BACKWARD SUBSUMPTION\n       (define removed (utree-inverse-find/remove! utree selected-Clause Clause-subsumes))\n       (for-each discard-Clause! removed)\n       (+= n-backward-subsumed (length removed))\n\n       (when-debug>= steps\n                     (define n-removed (length removed))\n                     (when (> n-removed 0)\n                       (printf \"#backward subsumed: ~a\\n\" n-removed)\n                       (when-debug>= interact\n                                     (print-Clauses removed 'all))))\n\n       ;; FIND NEW REWRITE RULES\n       (define clause-index-before-discover clause-index)\n       (define new-rules (discover-new-rules! rwtree-out selected-Clause utree))\n       (define new-rule-Clauses (rules-original-Clauses new-rules))\n       ;; NOTICE: We MUST add Clauses that are newly generated to the set of active rules\n       ;; (via priority) otherwise we may miss some resolutions.\n       ;; Only the Clauses that have been created during the discovery process need to be added.\n       ;; Notice: To prevent the clauses from which the rules have originated to be rewritten to\n       ;; tautologies, a test is performed in binary-rewrite-literal.\n       ;; But this applies *only* to the `eq?`-Clause of the rule, hence beware of copies or\n       ;; rewrites.\n       (add-priority-Clauses!\n        (filter (λ (C) (> (Clause-idx C) clause-index-before-discover))\n                new-rule-Clauses))\n\n       ;; BACKWARD BINARY REWRITING\n       ;; We don't need to backward rewrite if the new rules are not stored in rwtree,\n       ;; as this means the set of used rules does not change during the whole saturation.\n       (when (and backward-rewrite?\n                  rwtree\n                  (eq? rwtree rwtree-out) ; not storing new rules in a different rwtree\n                  (not (empty? new-rules)))\n         ; Remove active Clauses that can be rewritten, and push them into priority.\n         ; We must check whether the clauses we remove will be rewritten,\n         ; otherwise we might add all the same candidates again when the removed Clause\n         ; is popped from priority.\n         (define removed-active-Clauses\n           ;; TODO: This is inefficient. We should modify utree-inverse-find/remove!\n           ;; TODO: to handle multiple rule-C so as to take advantage of its hash/cache.\n           (remove-duplicates\n            (flatten\n             (for/list ([rule-C (in-list new-rule-Clauses)])\n               (utree-inverse-find/remove! utree rule-C\n                                           (λ (_rule-C C2)\n                                             (binary-rewrite-Clause? rwtree C2)))))\n            eq?))\n         (unless (empty? removed-active-Clauses)\n           (when-debug>= steps\n                         (displayln \"Some active Clauses can be backward binary rewritten:\")\n                         (print-Clauses removed-active-Clauses))\n           (add-priority-Clauses! removed-active-Clauses)))\n       ;; Note that backward-rewritable Clauses are not yet discarded. They may be discarded\n       ;; when they are pulled from priority and deemed discardable.\n\n       ;;; Even if the selected Clause is a unit/binary rewrite rule, we must continue processing it\n       ;;; and generate resolutions (because rewriting is only left-unification, not full unification)\n\n       ;;; NEW CANDIDATES\n\n       (define L-resolvent-pruning-allowed?\n         (and L-resolvent-pruning?\n              ; As per the invariant, if no Clause is in the priority queue,\n              ; then the set of active Clauses of utree is equisatisfiable with the input clauses.\n              (= 0 (queue-length priority))))\n\n       (define new-Candidates\n         (if negative-literal-selection?\n             (utree-resolve+unsafe-factors/select utree selected-Clause\n                                                  #:rewriter (λ (C) (binary-rewrite-Clause rwtree C)))\n             (utree-resolve+unsafe-factors utree selected-Clause\n                                           #:rewriter (λ (C) (binary-rewrite-Clause rwtree C))\n                                           #:L-resolvent-pruning? L-resolvent-pruning-allowed?)))\n\n       (when-debug>= interact\n                      (displayln \"New candidates:\")\n                      (print-Clauses new-Candidates))\n\n       ;; If a clause has no resolvent with the active set (when complete)\n       ;; then it will never resolve with anything and can thus be discarded.\n       #:cond\n       [(and L-resolvent-pruning-allowed?\n             (empty? new-Candidates))\n        (discard-Clause! selected-Clause)\n        (when-debug>= steps\n                      (printf \"No resolvent (L-resolvent-pruning?=~a). Clause discarded. \\n\"\n                              L-resolvent-pruning?))\n        (loop)]\n       #:else\n       ;; ADD CLAUSE TO ACTIVES\n       ;; Rewrite the candidates with unit and binary rules, filter out tautologies,\n       ;; calculate their costs and add them to the queues.\n       (add-candidates! selected-Clause new-Candidates)\n\n       ;; UNIT RULE DISCOVERY IN CANDIDATES\n       ;; Look for unit rewrite rules in the candidate set.\n       ;; (Looking for binary rules would be too costly here)\n       (when find-unit-rules-in-candidates?\n         (when rwtree-out\n           (for ([C (in-list new-Candidates)])\n             (when (unit-Clause? C)\n               ;; TODO: Should be calling/merged with discover-rules! to avoid inconsistencies\n               (rewrite-tree-add-unit-Clause! rwtree-out C #:rewrite? #false)))))\n\n       (add-Clause! utree selected-Clause)\n       (when-debug>= steps\n                     (displayln \"Adding clause.\")\n                     (print-active-Clauses utree #false))\n\n       (loop))))\n\n  (when-debug>= interact\n                (displayln \"Saturation loop finished.\")\n                (pretty-print result)\n                (define selected-Clause #false) ; mock up\n                (interact-saturation\n                 (priority utree rwtree selected-Clause make-return-dict)))\n  result)\n\n;========================;\n;=== User interaction ===;\n;========================;\n\n;; Some commands to use with '--debug interact'. Type 'help' for information.\n\n(define interact-commands '())\n\n(define-namespace-anchor ns-anchor)\n(define-syntax-rule (interact-saturation\n                     (priority utree rwtree selected-Clause make-return-dict)\n                     more ...)\n  (begin\n    (define what '(idx parents clause-pretty))\n    (interact\n     #:command (and (not (empty? interact-commands))\n                    (begin0 (first interact-commands)\n                            (rest! interact-commands)))\n     #:variables (priority utree rwtree what more ...)\n     #:namespace-anchor ns-anchor\n     #:readline? #true\n     [(list 'steps (? number? n))\n      \"skips n steps\"\n      (when (> n 0)\n        (cons! \"\" interact-commands)\n        (cons! (format \"steps ~a\" (- n 1)) interact-commands))]\n     [(list (or 'ancestors 'ancestor-graph 'graph))\n      \"display the ancestor graph of the selected Clause.\"\n      (display-Clause-ancestor-graph selected-Clause)]\n     [(list (or 'ancestors 'ancestor-graph 'graph) (? number? depth))\n      \"display the ancestor graph of the selected Clause down to the given depth.\"\n      (display-Clause-ancestor-graph selected-Clause #:depth depth)]\n     [(list 'what-fields)\n      (string-append\n       \"Prints which fields are available for 'what,\\n\"\n       \"which is used for printing clause information.\")\n      (displayln Clause->string-all-fields)]\n     [(list 'selected)\n      \"Selected clause\"\n      (print-Clauses (list selected-Clause) what)]\n     [(list 'active)\n      \"Active clauses\"\n      (print-active-Clauses utree #true what)]\n     [(list (or 'binary 'rules))\n      \"Found binary rules\"\n      (print-binary-rules rwtree #true)]\n     [(list 'stats)\n      \"Return-dictionary-like stats\"\n      (pretty-print (make-return-dict 'running))]\n     [(list 'save-rules)\n      \"Save the binary rules from the default rules-file\"\n      (save-rules! rwtree #:rules-file (*output-rules*))])))\n\n;; Prints the set of active Clauses (held in utree).\n;;\n;; utree : unification-tree?\n;; long? : boolean?\n;; what : (or/c 'all (listof symbol?))\n;; -> void?\n(define (print-active-Clauses utree long? [what 'all])\n  (define actives (unification-tree-Clauses utree))\n  (printf \"#active clauses: ~a\\n\" (length actives))\n  (when long?\n    (displayln \"Active clauses:\")\n    (print-Clauses (sort actives < #:key Clause-idx) what)))\n\n;; Prints the set of binary rules.\n;;\n;; rewrite-tree? boolean? -> void?\n(define (print-binary-rules rwtree long?)\n  (define rules (rewrite-tree-rules rwtree))\n  (printf \"#binary rules: ~a #original clauses: ~a\\n\"\n          (length rules)\n          (length (remove-duplicates (map rule-Clause rules) eq?)))\n  (when long?\n    (display-rules (rewrite-tree-rules rwtree))))\n\n;============================;\n;=== Iterative saturation ===;\n;============================;\n\n;; A struct holding information about a given input formula.\n(struct problem (file name clauses [time-used #:mutable] [last-time #:mutable]))\n\n;; file? (or/ #false string?) (listof clause?) -> problem?\n(define (make-problem file name clauses)\n  (problem file name clauses 0 0))\n\n;; Returns the same values as body ... but evaluates time-body ... before returning.\n;; The result of time-body ... is discarded.\n(define-syntax-rule (with-time-result [(cpu real gc) time-body ...] body ...)\n  (let-values ([(res cpu real gc) (time-apply (λ () body ...) '())])\n    time-body ...\n    (apply values res)))\n\n;; Calls saturation for a set of problems in a loop.\n;; Tries again each unsolved problem after multiplying the step-limit by step-limit-factor\n;; and so on untill all problems are solved.\n;; Loading time from files is *not* taken into account.\n;;\n;; problems : (listof problem?)\n;; saturate : procedure?\n;; memory-limit : number?\n;; cpu-limit : number?\n;; cpu-first-limit : number?\n;; cpu-limit-factor? : number?\n;; -> void?\n(define (iterative-saturation/problem-set problems\n                                          saturate\n                                          #:! memory-limit\n                                          #:! cpu-limit         ; in second\n                                          #:! cpu-first-limit   ; in seconds\n                                          #:! cpu-limit-factor) ; in seconds\n  (define n-problems (length problems))\n  (define n-attempted 0)\n  (define n-solved 0)\n  (with-time-result [(cpu real gc)\n                     (unless (*quiet-json?*)\n                       (printf \"; Total time: cpu: ~a real: ~a gc: ~a\\n\" cpu real gc))]\n    (let loop ([problems problems] [iter 0])\n      (define n-unsolved (length problems))\n      (define n-solved-iter 0)\n      (define n-attempted-iter 0)\n      (define new-unsolved\n        (for/fold ([unsolved '()]\n                   [cumu-time 0]\n                   #:result (reverse unsolved))\n                  ([prob (in-list problems)])\n          (define input-clauses (problem-clauses prob))\n          (when-debug>= init (for-each (compose displayln clause->string) input-clauses))\n\n          ;; Collecting garbage can take time even when there's nothing to collect,\n          ;; and can take a significant proportion of the time when solving is fast,\n          ;; hence it's better to trigger GC only if needed.\n          (when (>= (current-memory-use-MB) (* 0.8 memory-limit))\n            (collect-garbage)\n            (collect-garbage))\n\n          ;; Main call\n          (define cpu-limit-problem (min (max cpu-first-limit\n                                              (* cpu-limit-factor (problem-last-time prob)))\n                                         (- cpu-limit (problem-time-used prob))))\n          (define res (saturate input-clauses cpu-limit-problem))\n\n          (set! res (append `((name . ,(problem-name prob))\n                              (file . ,(problem-file prob)))\n                            res))\n          (++ n-attempted-iter)\n          (when (= 0 iter) (++ n-attempted))\n          (define solved? (or (check-status res 'refuted)\n                              (check-status res 'saturated)))\n          (when solved?\n            (++ n-solved-iter)\n            (++ n-solved))\n\n          (define last-time (* 0.001 (dict-ref res 'time)))\n          (set-problem-last-time! prob last-time)\n          (set-problem-time-used! prob (+ (problem-time-used prob) last-time))\n          (set! res (dict-set res 'cumulative-time (exact-ceiling (* 1000 (problem-time-used prob)))))\n\n          (define remove-problem?\n            (or solved?\n                (check-status res 'memory) ; more time won't help if status=memory\n                (>= (problem-time-used prob) cpu-limit))) ; cpu exhausted for this problem\n\n          ; Don't pretty-print to keep it on a single line which is simpler for parsing.\n          ; Only print the last iteration of a problem for borg.\n          (cond\n            [(*quiet-json?*)\n             (when remove-problem? (displayln (saturation-result->json res)))]\n            [else\n             (pretty-write res)\n             (printf \"; ~a/~a solved (iter: ~a/~a/~a success: ~a% avg-time: ~as ETA: ~as)\\n\"\n                     n-solved n-attempted\n                     n-solved-iter n-attempted-iter n-unsolved\n                     (~r (* 100 (/ n-solved-iter n-attempted-iter)) #:precision '(= 1))\n                     (~r (/ cumu-time n-attempted-iter 1000.) #:precision '(= 3))\n                     (~r (* (/ cumu-time n-attempted-iter 1000.)\n                            (- n-unsolved n-attempted-iter)) #:precision '(= 2)))])\n          (flush-output)\n\n          (values\n            (if remove-problem?\n                unsolved\n                (cons prob unsolved))\n            (+ cumu-time last-time))))\n      (unless (or (empty? new-unsolved)\n                  (= cpu-limit-factor 0))\n        (loop new-unsolved (+ iter 1))))))\n\n;; Calls saturate on a single set of clauses, first with a time limit of cpu-first-limit,\n;; then restarts and doubles it until the cumulative time reaches cpu-limit.\n;; Loading time is taken into account.\n;; During a call to saturate, the new rewrite rules are saved in a separate tree,\n;; which means that no new rule is introduced until the next restart—and thus the first\n;; call to saturate uses no rewrite rule.\n;;\n;; NOTICE: In this mode the unit rewrites are gathered only for the next round, but this is\n;; likely not necessary!\n;;\n;; saturate : procedure?\n;; tptp-program : string?\n;; rwtree-in : rewrite-tree?\n;; discover-online? : boolean?\n;; cpu-limit : number?\n;; cpu-first-limit : number?\n;; cpu-limit-factor? : number?\n;; -> void?\n(define (iterative-saturation saturate\n                              #:! tptp-program\n                              #:! rwtree-in\n                              #:? [discover-online? (*discover-online?*)]\n                              #:? [cpu-limit (*cpu-limit*)]\n                              #:? [cpu-first-limit (*cpu-first-limit*)]\n                              #:? [cpu-limit-factor (*cpu-limit-factor*)])\n  (define cpu-start (current-inexact-seconds))\n  ; Don't make new Clauses here, they need to be created at each `saturation` call.\n  (define clauses (tptp-prog->clauses tptp-program))\n  (define quiet? (*quiet-json?*))\n\n  (define n-rules-init (rewrite-tree-count rwtree-in))\n\n  (let loop ([iter 1] [uncapped-current-cpu-limit cpu-first-limit] [rwtree-in rwtree-in])\n    (define remaining-cpu (- cpu-limit (- (current-inexact-seconds) cpu-start)))\n    (define current-cpu-limit (min remaining-cpu uncapped-current-cpu-limit))\n    (unless quiet?\n      (printf \"; iter: ~a remaining-cpu: ~a current-cpu-limit: ~a\\n\"\n              iter\n              remaining-cpu\n              current-cpu-limit))\n\n    ; Simplify the set of rules (only once)\n    (unless (and (= 1 iter)\n                 (= 0 n-rules-init)) ; don't do this if no restarting\n      ; Note that these steps destroy the Clause ancestry, and proofs will be incomplete.\n      (unless quiet?\n        (printf \"; Rules stats: ~v\\n\" (rewrite-tree-stats rwtree-in))\n        (displayln \"; Simplifying the rules via re-add-rules!\"))\n\n      ;; Rewrite lhs and rhs of rules, remove subsumed and tautologies.\n      (re-add-rules! rwtree-in)\n      (unless quiet?\n        (printf \"; Rules stats: ~v\\n\" (rewrite-tree-stats rwtree-in))\n        (printf \"; Confluence! bounded? = ~a\\n\" (*bounded-confluence?*)))\n\n      ;; Unify rhs of rules to produce new rules.\n      (rewrite-tree-confluence! rwtree-in)\n      (unless quiet?\n        (printf \"; Rules stats: ~v\\n\" (rewrite-tree-stats rwtree-in))\n        (displayln \"; Simplifying the rules via re-add-rules! (again)\"))\n\n      ;; Rewrite and simplify again.\n      (re-add-rules! rwtree-in)\n      (unless quiet? (printf \"; Rules stats: ~v\\n\" (rewrite-tree-stats rwtree-in))))\n    (flush-output)\n\n    (define rwtree-out (if discover-online? rwtree-in (rewrite-tree-shallow-copy rwtree-in)))\n\n    (define res (saturate #:clauses clauses\n                          #:cpu-limit current-cpu-limit\n                          #:rwtree-in rwtree-in\n                          #:rwtree-out rwtree-out))\n\n    (define new-cumulative-cpu (- (current-inexact-seconds) cpu-start))\n    (set! res (dict-set res 'cumulative-time (exact-ceiling (* 1000. new-cumulative-cpu)))) ; ms\n    (set! res (dict-set res 'saturation-iter iter))\n\n    (define solved? (or (check-status res 'refuted)\n                        (check-status res 'saturated)))\n\n    ;; We exit also if memory limit has been reached, but we could instead restart\n    ;; if new rules have been found.\n    (define finished? (or solved?\n                          (check-status res 'memory)\n                          (> new-cumulative-cpu cpu-limit)))\n\n    (cond\n      [(*quiet-json?*)\n       (when finished? (displayln (saturation-result->json res)))]\n      [else\n       (pretty-write res)])\n    (flush-output)\n\n    (cond\n      [finished?\n       (when (*output-rules*)\n         (unless quiet?\n           (printf \"Saving rules to ~a\\n\"\n                   (if (string? (*output-rules*))\n                       (*output-rules*)\n                       (path->string (*output-rules*)))))\n         (save-rules! rwtree-out #:rules-file (*output-rules*)))]\n      [else\n       (loop (+ iter 1)\n             (* uncapped-current-cpu-limit cpu-limit-factor)\n             rwtree-out)])))\n"
  },
  {
    "path": "satore/scribblings/satore.scrbl",
    "content": "#lang scribble/manual\n\n@title{First-order logic saturation with atom rewriting}\n\nSee the @hyperlink[\"https://github.com/deepmind/deepmind-research/tree/master/satore\"]{readme}.\n"
  },
  {
    "path": "satore/tests/Clause.rkt",
    "content": "#lang racket/base\n\n(require racket/list\n         rackunit\n         (submod satore/Clause test)\n         satore/Clause\n         satore/unification)\n\n;; Polarity should not count for the 'weight' cost function because otherwise it will be harder\n;; to prove ~A | ~B than A | B.\n(check-equal? (Clause-size (make-Clause '[p q]))\n              (Clause-size (make-Clause '[(not p) (not q)])))\n(check-equal? (Clause-size (make-Clause '[p q]))\n              (Clause-size (make-Clause '[(not p) q])))\n\n(let ()\n  (define Cs1 (map Clausify '([(p A B) (p B C) (p D E)]\n                              [(q A B C) (q B A C)]\n                              [(r X Y)])))\n  (define Cs2 (shuffle (map (λ (C) (make-Clause (fresh (Clause-clause C)))) Cs1)))\n  (check-Clause-set-equivalent? Cs1 Cs2)\n  (check-Clause-set-equivalent? Cs2 Cs1))\n"
  },
  {
    "path": "satore/tests/clause.rkt",
    "content": "#lang racket/base\n\n(require racket/dict\n         rackunit\n         satore/clause\n         satore/misc\n         satore/unification)\n\n(*subsumes-iter-limit* 0)\n\n(begin\n  (define-simple-check (check-tautology cl res)\n    (check-equal? (clause-tautology? (sort-clause (Varify cl))) res))\n\n  (check-tautology '[] #false)\n  (check-tautology `[,ltrue] #true)\n  (check-tautology `[,(lnot lfalse)] #true)\n  (check-tautology '[a] #false)\n  (check-tautology '[a a] #false)\n  (check-tautology '[a (not a)] #true)\n  (check-tautology '[a b (not c)] #false)\n  (check-tautology '[a b (not a)] #true)\n  (check-tautology '[a (not (a a)) (a b) (not (a (not a)))] #false)\n  (check-tautology '[a (a a) b c (not (a a))] #true)\n  (check-tautology `[(a b) b (not (b a)) (not (b b)) (not (a c)) (not (a ,(Var 'b)))] #false)\n  )\n\n(begin\n  ;; Equivalences\n  (for ([(A B) (in-dict '(([] . [] ) ; if empty clause #true, everything is #true\n                          ([p] . [p] )\n                          ([(p X)] . [(p X)] )\n                          ([(p X)] . [(p Y)] )\n                          ([(not (p X))] . [(not (p X))] )\n                          ([(p X) (q X)] . [(p X) (q X) (q Y)] )\n                          ))])\n    (define cl1 (sort-clause (Varify A)))\n    (define cl2 (sort-clause (fresh (Varify B))))\n    (check-not-false (clause-subsumes cl1 cl2)\n                     (format \"cl1: ~a\\ncl2: ~a\" cl1 cl2))\n    (check-not-false (clause-subsumes cl2 cl1)\n                     (format \"cl1: ~a\\ncl2: ~a\" cl1 cl2))\n    )\n\n  ;; One-way implication (not equivalence)\n  (for ([(A B) (in-dict '(([] . [p] ) ; if empty clause #true, everything is #true\n                          ([p] . [p q] )\n                          ([(p X)] . [(p c)] )\n                          ([(p X) (p X) (p Y)] . [(p c)] )\n                          ([(p X)] . [(p X) (q X)] )\n                          ([(p X)] . [(p X) (q Y)] )\n                          ([(p X Y)] . [(p X X)] )\n                          ([(p X) (q Y)] . [(p X) (p Y) (q Y)] )\n                          ([(p X) (p Y) (q Y)] . [(p Y) (q Y) c] )\n                          ([(p X Y) (p Y X)] . [(p X X)] )\n                          ([(q X X) (q X Y) (q Y Z)]  . [(q a a) (q b b)])\n                          ([(f (q X)) (p X)] . [(p c) (f (q c))])\n                          ; A θ-subsumes B, but does not θ-subsume it 'strictly'\n                          ([(p X Y) (p Y X)] . [(p X X) (r)])\n                          ))])\n    (define cl1 (sort-clause (Varify A)))\n    (define cl2 (sort-clause (fresh (Varify B))))\n    (check-not-false (clause-subsumes cl1 cl2))\n    (check-false (clause-subsumes cl2 cl1)))\n\n  ; Not implications, both ways. Actually, this is independence\n  (for ([(A B) (in-dict '(([p] . [q])\n                          ([(p X)] . [(q X)])\n                          ([p] . [(not p)])\n                          ([(p X c)] . [(p d Y)])\n                          ([(p X) (q X)] . [(p c)])\n                          ([(p X) (f (q X))] . [(p c)])\n                          ([(eq X X)] . [(eq (mul X0 X1) (mul X2 X3))\n                                         (not (eq X0 X2)) (not (eq X1 X3))])\n                          ; A implies B, but there is no θ-subsumption\n                          ; https://www.doc.ic.ac.uk/~kb/MACTHINGS/SLIDES/2013Notes/6LSub4up13.pdf\n                          ([(p (f X)) (not (p X))] . [(p (f (f Y))) (not (p Y))])\n                          ))])\n    (define cl1 (sort-clause (Varify A)))\n    (define cl2 (sort-clause (fresh (Varify B))))\n    (check-false (clause-subsumes cl1 cl2)\n                 (list (list 'A= A) (list 'B= B)))\n    (check-false (clause-subsumes cl2 cl1)\n                 (list A B)))\n\n  (let* ()\n    (define cl\n      (Varify\n       `((not (incident X Y))\n         (not (incident ab Y))\n         (not (incident ab Z))\n         (not (incident ab Z))\n         (not (incident ac Y))\n         (not (incident ac Z))\n         (not (incident ac Z))\n         (not (incident bc a1b1))\n         (not (line_equal Z Z))\n         (not (point_equal bc X)))))\n    (define cl2\n      (sort-clause (fresh (left-substitute cl (hasheq (symbol->Var-name 'X) 'bc\n                                                      (symbol->Var-name 'Y) 'a1b1)))))\n    (check-not-false (clause-subsumes cl cl2))))\n\n#;\n(begin\n  ; This case SHOULD pass, according to the standard definition of clause subsumption based on\n  ; multisets, but our current definition of subsumption is more general (not necessarily in a\n  ; good way.)\n  ; Our definition is based on sets, with a constraint on the number of literals (in\n  ; Clause-subsumes).\n  ; This makes it more general, but also not well-founded (though I'm not sure yet whether this is\n  ; really bad).\n  (check-false (clause-subsumes (clausify '[(p A A) (q X Y) (q Y Z)])\n                                (clausify '[(p a a) (p b b) (q C C)]))))\n\n\n(begin\n\n  (*debug-level* (debug-level->number 'steps))\n\n  (define-simple-check (check-safe-factoring cl res)\n    (define got (safe-factoring (sort-clause (Varify cl))))\n    (set! res (sort-clause (Varify res)))\n    ; Check equivalence\n    (check-not-false (clause-subsumes res got))\n    (check-not-false (clause-subsumes got res)))\n\n  (check-safe-factoring '[(p a b) (p A B)]\n                        '[(p a b)]) ; Note that [(p a b) (p A B)] ≠> (p A B)\n  (check-safe-factoring '[(p X) (p Y)]\n                        '[(p Y)])\n  (check-safe-factoring '[(p Y) (p Y)]\n                        '[(p Y)])\n  (check-safe-factoring '[(p X) (q X) (p Y) (q Y)]\n                        '[(p Y) (q Y)])\n  (check-safe-factoring '[(p X Y) (p A X)]\n                        '[(p X Y) (p A X)])\n  (check-safe-factoring '[(p X Y) (p X X)]\n                        '[(p X X)]) ; is a subset of above, so necessarily no less general\n  (check-safe-factoring '[(p X Y) (p A X) (p Y A)]\n                        '[(p X Y) (p A X) (p Y A)]) ; cannot be safely factored?\n  (check-safe-factoring '[(p X) (p Y) (q X Y)]\n                        '[(p X) (p Y) (q X Y)]) ; Cannot be safely factored (proven)\n  (check-safe-factoring '[(leq B A) (leq A B) (not (def B)) (not (def A))]\n                        '[(leq B A) (leq A B) (not (def B)) (not (def A))]) ; no safe factor\n  (check-safe-factoring '[(p X) (p (f X))]\n                        '[(p X) (p (f X))])\n\n  (check-safe-factoring\n   (fresh '((not (incident #s(Var 5343) #s(Var 5344)))\n            (not (incident ab #s(Var 5344)))\n            (not (incident ab #s(Var 5345)))\n            (not (incident ab #s(Var 5345)))\n            (not (incident ac #s(Var 5344)))\n            (not (incident ac #s(Var 5345)))\n            (not (incident ac #s(Var 5345)))\n            (not (incident bc a1b1))\n            (not (line_equal #s(Var 5345) #s(Var 5345)))\n            (not (point_equal bc #s(Var 5343)))))\n   (fresh\n    '((not (incident #s(Var 148) #s(Var 149)))\n      (not (incident ab #s(Var 149)))\n      (not (incident ab #s(Var 150)))\n      (not (incident ac #s(Var 149)))\n      (not (incident ac #s(Var 150)))\n      (not (incident bc a1b1))\n      (not (line_equal #s(Var 150) #s(Var 150)))\n      (not (point_equal bc #s(Var 148))))))\n\n  (check-not-exn (λ () (safe-factoring\n                        (fresh '((not (incident #s(Var 5343) #s(Var 5344)))\n                                 (not (incident ab #s(Var 5344)))\n                                 (not (incident ab #s(Var 5345)))\n                                 (not (incident ab #s(Var 5345)))\n                                 (not (incident ac #s(Var 5344)))\n                                 (not (incident ac #s(Var 5345)))\n                                 (not (incident ac #s(Var 5345)))\n                                 (not (incident bc a1b1))\n                                 (not (line_equal #s(Var 5345) #s(Var 5345)))\n                                 (not (point_equal bc #s(Var 5343))))))))\n  )\n"
  },
  {
    "path": "satore/tests/confluence.rkt",
    "content": "#lang racket/base\n\n(require (for-syntax racket/base syntax/parse)\n         define2\n         global\n         racket/list\n         racket/pretty\n         rackunit\n         satore/Clause\n         satore/clause\n         satore/rewrite-tree\n         satore/unification)\n\n(define-global:boolean *dynamic-ok?* #true\n  \"Use dynamic rules?\")\n\n(define (take-at-most l n)\n  (take l (min (length l) n)))\n\n(define (display-rwtree rwtree #:? [n-max 100])\n  (define rules (rewrite-tree-rules rwtree))\n  (define-values (statics dyns)\n    (partition rule-static?\n               (filter-not (λ (rl) (lnot? (rule-from-literal rl)))\n                           rules)))\n  (display-rules (take-at-most (reverse (sort-rules statics)) n-max))\n  (display-rules (take-at-most (reverse (sort-rules    dyns)) n-max))\n  (when (or (> (length statics) n-max) (> (length dyns) n-max))\n    (displayln \"(output truncated because there are too many rules)\"))\n  (pretty-write (rewrite-tree-stats rwtree)))\n\n;; Adds an equivalence as rules.\n;; For testing purposes.\n(define (add-equiv! rwtree equiv)\n  (define C (make-Clause (clausify (list (lnot (first equiv)) (second equiv)))))\n  (force-add-binary-Clause! rwtree C))\n\n(define (rewrite-literal rwt lit)\n  (define-values (new-lit rls) (binary-rewrite-literal rwt lit #false))\n  new-lit)\n\n;; Given a set of implications, generate equivalence\n(define (equivs->rwtree equivs\n                        #:? [dynamic-ok? (*dynamic-ok?*)]\n                        #:? [atom<=> (get-atom<=>)])\n  (define rwt (make-rewrite-tree #:atom<=> atom<=> #:dynamic-ok? dynamic-ok?))\n  (for ([equiv (in-list equivs)])\n    (add-equiv! rwt equiv)\n    (add-equiv! rwt (map lnot equiv)))\n  rwt)\n\n(define-syntax (test-confluence stx)\n  (syntax-parse stx\n    [(_ equivs expected-stats #:with rwt body ...)\n     #'(let ()\n         (define rwt (equivs->rwtree equivs))\n         (rewrite-tree-confluence! rwt)\n         (define stats (rewrite-tree-stats rwt))\n         (unless (equal? stats expected-stats)\n           (display-rwtree rwt))\n         (check-equal? stats expected-stats)\n         body ...)]\n    [(_ equivs expected-stats)\n     #'(test-confluence equivs expected-stats #:with _rwt)]))\n\n\n(with-globals ([*bounded-confluence?* #true]\n               [*dynamic-ok?* #false])\n  ;; This induction does work and is not subsumed.\n  ;; This is possibly the minimal induction scheme (that doesn't lead to subsumed rules).\n  (test-confluence\n   '([(p A (f B)) (p A B)]\n     [(p C C)     d])  ; not left linear\n   ; Should not produce longer rules than the parents!\n   '((rules . 6)\n     (unit-rules . 0)\n     (binary-rules . 6)\n     (binary-rules-static . 6)\n     (binary-rules-dynamic . 0)))\n\n  (test-confluence\n   '([(p (f (f (f z))) (f (f (f z)))) (g (g (g b)))] ; should -> b\n     [(p (f (f (f z))) (f (f (f X)))) b]\n     [(p (f (f z)) (f (f X))) c]\n     [(p (f z) (f X)) d]\n     [(p X X) (q X)])\n   '((rules . 18) ; 16 also ok\n     (unit-rules . 0)\n     (binary-rules . 18)\n     (binary-rules-static . 18)\n     (binary-rules-dynamic . 0))\n   #:with rwt\n   (check-equal? (rewrite-literal rwt '(p z z)) '(q z))\n   (check-equal? (rewrite-literal rwt '(p (f (f (f z))) (f (f (f a))))) 'b)\n   (check-equal? (rewrite-literal rwt '(p (f (f (f z))) (f (f (f z))))) 'b))\n\n  (test-confluence\n   '([(p a X) q]\n     [(p X a) f]\n     [(p a a) (g b)])\n   '((rules . 8)\n     (unit-rules . 0)\n     (binary-rules . 8)\n     (binary-rules-static . 8)\n     (binary-rules-dynamic . 0))\n   #:with rwt\n   (check-equal? (rewrite-literal rwt '(p a a)) 'f)\n   (check-equal? (rewrite-literal rwt '(p a b)) 'f)\n   (check-equal? (rewrite-literal rwt '(g b)) 'f)\n   (check-equal? (rewrite-literal rwt 'q) 'f))\n  )\n\n\n"
  },
  {
    "path": "satore/tests/interact.rkt",
    "content": "#lang racket/base\n\n(require racket/list\n         racket/port\n         rackunit\n         satore/interact)\n\n(define-syntax-rule (check-interact in out args ...)\n  (check-equal?\n   (with-output-to-string\n     (λ ()\n       (with-input-from-string (string-append in \"\\n\\n\") ; ensure no read loop\n         (λ () (interact args ...)))))\n   out))\n\n(define-namespace-anchor ns-anchor) ; optional, to use the eval command\n\n(let ([x 2] [y 'a])\n  (check-interact\n   \"x\\ny\\nx 3\\nx\"\n   \"2\\n'a\\n3\\n\"\n   #:prompt \"\"\n   #:variables (x y)))\n\n(let ([x 3] [y 'a])\n  (check-interact\n   \"yo\\nyo 4\\nx\\nx 2\\nx\"\n   \"yo\\n(yo yo yo yo)\\n3\\n2\\n\"\n   #:prompt \"\"\n   #:namespace-anchor ns-anchor\n   #:variables (x y)\n   ;; All patterns must be of the form (list ....)\n   [(list 'yo) \"prints yo\" (displayln \"yo\")]\n   [(list 'yo (? number? n)) \"prints multiple yos\" (displayln (make-list n 'yo))]))\n"
  },
  {
    "path": "satore/tests/misc.rkt",
    "content": "#lang racket/base\n\n(require rackunit\n         satore/misc)\n\n(define-counter num 0)\n(check-equal? num 0)\n(++num)\n(check-equal? num 1)\n(++num 3)\n(check-equal? num 4)\n(reset-num!)\n(check-equal? num 0)\n"
  },
  {
    "path": "satore/tests/rewrite-tree.rkt",
    "content": "#lang racket/base\n\n(require bazaar/debug\n         (except-in bazaar/order atom<=>)\n         racket/file\n         racket/list\n         racket/random\n         rackunit\n         (submod satore/Clause test)\n         satore/Clause\n         satore/clause\n         satore/misc\n         satore/rewrite-tree\n         satore/unification)\n\n(*debug-level* 0)\n\n(define-check (check-rewrite rwtree c crw)\n  (define C (Clausify c))\n  (define Crw (binary-rewrite-Clause rwtree C))\n  (define crw-sorted (sort-clause crw))\n  (unless (equal? (Clause-clause Crw) crw-sorted)\n    (eprintf \"c-sorted  : ~a\\ncrw-sorted: ~a\\n\" (Clause-clause C) crw-sorted)\n    (eprintf (Clause-ancestor-graph-string Crw))\n    (fail-check)))\n\n(define-simple-check (check-not-rewrite rwtree c)\n  (check-rewrite rwtree c c))\n\n;;; Self-equivalence\n(let ()\n  (define rwtree (make-rewrite-tree #:atom<=> atom1<=>))\n\n  (define C1 (make-Clause (clausify '[(not (eq A B)) (eq B A)])))\n  (define rls1 (Clause->rules C1 C1 #:atom<=> atom1<=>))\n  (rewrite-tree-add-binary-Clause! rwtree C1 C1)\n  (check-equal? (rewrite-tree-count rwtree) 2)\n  ; Rewrite clause in lexicographical order\n  (check-rewrite rwtree '[(eq b a)] '[(eq a b)]))\n\n;;; Adding two converse implications\n(let ()\n  (define rwtree (make-rewrite-tree #:atom<=> atom1<=>))\n\n  (define C1 (make-Clause (clausify '[(not (p A A)) (q A)])))\n  (define C2 (make-Clause (clausify '[(not (q A)) (p A A)])))\n  (define rls1 (Clause->rules C1 C2 #:atom<=> atom1<=>))\n  (rewrite-tree-add-binary-Clause! rwtree C1 C2)\n  ; This is not needed because both polarities are considered by Clause->rules:\n  (rewrite-tree-add-binary-Clauses! rwtree (list C2) C1 #:rewrite? #true)\n  (check-equal? (rewrite-tree-count rwtree) 2)\n  (check-rewrite rwtree '[(p a a) (z c)] '[(q a) (z c)])\n  (check-rewrite rwtree '[(not (p a a)) (z c)] '[(not (q a)) (z c)]))\n\n;;; Adding rules where the converse implication is more general\n(let ()\n  (define rwtree (make-rewrite-tree #:atom<=> atom1<=>))\n\n  (define Crules\n    (map (compose make-Clause clausify)\n         '([(not (p A A)) (q A)]\n           [(not (q a)) (p a a)]\n           [(not (q b)) (p b b)])))\n  (for ([C (in-list (rest Crules))])\n    (rewrite-tree-add-binary-Clause! rwtree C (first Crules)))\n  (check-equal? (rewrite-tree-count rwtree) 4)\n  (check-rewrite rwtree '[(p a a) (z c)] '[(q a) (z c)])\n  (check-rewrite rwtree '[(not (p a a)) (z c)] '[(not (q a)) (z c)])\n  (check-rewrite rwtree '[(p b b) (z c)] '[(q b) (z c)])\n  (check-rewrite rwtree '[(not (p b b)) (z c)] '[(not (q b)) (z c)])\n  (check-not-rewrite rwtree '[(p x x) (z c)]))\n;;; The same with add-binary-Clauses\n(let ()\n  (define rwtree (make-rewrite-tree #:atom<=> atom1<=>))\n\n  (define Crules\n    (map (compose make-Clause clausify)\n         '([(not (p A A)) (q A)]\n           [(not (q a)) (p a a)]\n           [(not (q b)) (p b b)])))\n  (rewrite-tree-add-binary-Clauses! rwtree (rest Crules) (first Crules))\n  (check-equal? (rewrite-tree-count rwtree) 4)\n  (check-rewrite rwtree '[(p a a) (z c)] '[(q a) (z c)])\n  (check-rewrite rwtree '[(not (p a a)) (z c)] '[(not (q a)) (z c)])\n  (check-not-rewrite rwtree '[(p x x) (z c)]))\n\n;;; Dynamic, non-self-converse Clauses, leading to 4 rules\n(let ()\n  (define rwtree (make-rewrite-tree #:atom<=> atom1<=>))\n\n  (define C1 (make-Clause (clausify '[(not (p A B C)) (p C A B)])))\n  (define C2 (make-converse-Clause C1))\n  (define rls1 (Clause->rules C1 C2 #:atom<=> atom1<=>))\n  (rewrite-tree-add-binary-Clause! rwtree C1 C2)\n  (check-equal? (rewrite-tree-count rwtree) 4)\n  (check-rewrite rwtree '[(p a b c)] '[(p a b c)])\n  (check-rewrite rwtree '[(p c a b)] '[(p a b c)])\n  (check-rewrite rwtree '[(p b c a)] '[(p a b c)])\n  (check-rewrite rwtree '[(p b a c)] '[(p a c b)]))\n\n;;; Some random testing to make sure atom<=> has the Groundedness property.\n\n(define (random-atom)\n  (define syms '(aaa a p q r z zzz))\n  (define choices (append syms syms '(NV OV L L))) ; reduce proba of NV and OV\n  (define vars '())\n  (let loop ()\n    (define r (random-ref choices))\n    (case r\n      [(NV) ; new var\n       (define v (new-Var))\n       (set! vars (cons v vars))\n       v]\n      [(OV) (if (empty? vars) (loop) (random-ref vars))] ; old vars\n      [(L) (cons (random-ref syms) ; first element must be a symbol\n                 (build-list (random 4) (λ (i) (loop))))]\n      [else r])))\n\n(define random-atom-bank\n  (remove-duplicates (build-list 1000 (λ _ (random-atom)))))\n(debug-vars (length random-atom-bank))\n\n(define (check-groundedness atom<=> lita litb)\n  (define from<=>to (atom<=> lita litb))\n  ; no point in testing groundedness if we don't have from literal< to\n  (assert (order<? from<=>to) lita litb from<=>to)\n  (define vs (vars (list lita litb)))\n  (define s (make-subst))\n  (for ([v (in-list vs)])\n    (subst-set!/name s v (random-ref random-atom-bank)))\n  (define lita2 (substitute lita s))\n  (define litb2 (substitute litb s))\n  (check-equal? (atom<=> lita2 litb2) '<))\n\n(for ([i 10000])\n  (apply check-groundedness atom1<=> (Varify '[(eq A B) (eq A (mul B a))]))\n  (apply check-groundedness atom1<=> (Varify '[(eq A B a) (eq A (mul B a))])))\n\n; IMPORTANT CASE: Check circularity of the rules\n; Imagine we have two clauses:\n; c1 = p | q\n; c2 = ~p | ~q\n; They are converse implications.\n; From c1 we can generate the rules:\n; r1 = ~p → q\n; r2 = ~q → p\n; and from c2 we can generate:\n; r3 = p → ~q\n; r4 = q → ~p\n; If we choose {r1, r4} or {r2, r3} we run in circles!\n; Hence the valid choices are {r2, r4} and {r1, r2}\n; {r2, r4} is justified by removing negations and considering 'p < 'q.\n; {r1, r2} is justified by considering that the negated atoms 'weigh' more.\n;\n; Now if the two clauses are:\n; c3 = ~p | q  with rules   p → q   and  ~q → ~p\n; c4 = p | ~q  with rules  ~p → ~q  and  q → p\n; Now we should choose q → p and ~q → ~p to avoid running in circles.\n(for* ([lits (in-list '( (p q) ; + ((not p) (not q))\n                         (p (not q))\n                         ((distinct_points A B) (equal_points A B))\n                         ((distinct_points A B) (not (equal_points A B)))\n                         ))]\n       [r1 (in-list\n            (Clause->rules (Clausify lits) #false #:atom<=> atom1<=>))]\n       [r2 (in-list\n            (Clause->rules (Clausify (map lnot lits)) #false #:atom<=> atom1<=>))])\n  ; The rules should NOT be circular!\n  (check-not-equal?\n   (Vars->symbols (list (rule-from-literal r1) (rule-to-literal r1)))\n   (Vars->symbols (list (rule-to-literal r2) (rule-from-literal r2)))))\n\n;; Saving and loading rules, especially with asymmetric rules.\n(let ()\n  (define rwtree  (make-rewrite-tree #:atom<=> atom1<=>))\n  (define rwtree2 (make-rewrite-tree #:atom<=> atom1<=>))\n\n  ;; Asymmetric rules\n  (let ([Conv (Clausify '[(not (p A A)) (q A)])])\n    (rewrite-tree-add-binary-Clauses! rwtree\n                                      (map Clausify\n                                           '([(not (q a)) (p a a)]\n                                             [(not (q b)) (p b b)]\n                                             [(not (q c)) (p c c)]))\n                                      Conv))\n  ; Self-converse\n  (let ([C (Clausify '[(not (eq A B)) (eq B A)])])\n    (rewrite-tree-add-binary-Clause! rwtree C C))\n  ; Symmetric\n  (rewrite-tree-add-binary-Clause! rwtree\n                                   (Clausify '[(not (pp A A)) (qq A)])\n                                   (Clausify '[(pp A A) (not (qq A))]))\n\n  (define Crules (rewrite-tree-original-Clauses rwtree))\n  (define f (make-temporary-file))\n  (save-rules! rwtree #:rules-file f)\n  (load-rules! rwtree2 #:rules-file f)\n  (define Crules2 (rewrite-tree-original-Clauses rwtree2))\n  (check-equal? (length Crules2) (length Crules))\n  ;; not efficient\n  (for ([C (in-list Crules)])\n    (define cl (Clause-clause C))\n    (check-not-false (for/or ([C2 (in-list Crules2)])\n                       (Clause-equivalence? C C2))\n                     cl)))\n\n;; Tautology reduction\n(let ()\n  (define rwtree (make-rewrite-tree #:atom<=> atom1<=>))\n  (rewrite-tree-add-binary-Clause! rwtree\n                                   (make-Clause (clausify '[(not (p (p X))) (p X)]))\n                                   (make-Clause (clausify '[(p (p X)) (not (p X))])))\n  (check-equal? (rewrite-tree-stats rwtree)\n                '((rules . 2)\n                  (unit-rules . 0)\n                  (binary-rules . 2)\n                  (binary-rules-static . 2)\n                  (binary-rules-dynamic . 0)))\n  ; These should be reduced to tautologies and thus not added\n  (rewrite-tree-add-binary-Clause! rwtree\n                                   (make-Clause (clausify '[(not (p (p (p X)))) (p X)]))\n                                   (make-Clause (clausify '[(p (p (p X))) (not (p X))])))\n  (check-equal? (rewrite-tree-stats rwtree)\n                '((rules . 2)\n                  (unit-rules . 0)\n                  (binary-rules . 2)\n                  (binary-rules-static . 2)\n                  (binary-rules-dynamic . 0))))\n\n;; Tautology reduction by dynamic rule\n;; Currently fails\n#;\n(let ()\n  (define rwtree (make-rewrite-tree #:atom<=> atom1<=>))\n  (define Cp (Clausify '[(not (p A B)) (p B A)]))\n  (rewrite-tree-add-binary-Clause! rwtree Cp Cp)\n  ; What should we do?\n  ; The dynamic rule *can* reduce this to a tautology, but doesn't because\n  ; it can't be ground-oriented.\n  (check Clause-equivalence?\n         (binary-rewrite-Clause rwtree (Clausify '[(p A B) (p B A) q]))\n         (Clausify '[(p A B) q]))\n  ; Same,  but after a rewrite\n  (rewrite-tree-add-binary-Clause! rwtree\n                                   (Clausify '[(not (p (f A) B)) (p A B)])\n                                   (Clausify '[(p (f A) B) (not (p A B))]))\n  (check Clause-equivalence?\n         (binary-rewrite-Clause rwtree (Clausify '[(p (f A) B) (p B A) q]))\n         (Clausify '[(p A B) q])))\n"
  },
  {
    "path": "satore/tests/saturation.rkt",
    "content": "#lang racket/base\n\n(require (for-syntax racket/base)\n         define2\n         define2/define-wrapper\n         global\n         racket/dict\n         racket/pretty\n         rackunit\n         (prefix-in sat: satore/saturation)\n         satore/clause\n         satore/misc\n         satore/rewrite-tree\n         satore/unification\n         syntax/parse/define)\n\n(define-global *cpu-limit* 10\n  \"Time limit in seconds for tests\"\n  number?\n  string->number)\n\n(define (Vars+clausify-list l)\n  (map clausify\n       (symbol-variables->Vars l)))\n\n(define current-saturation-args #false)\n\n(define-syntax (for-in-list* stx)\n  (syntax-parse stx\n      [(_ ([var x ...] ... clauses ...) body ...)\n       #:with (name ...) (generate-temporaries #'(var ...))\n       #'(for ((~@ [var (in-list (list x ...))]\n                   [name (in-list '(x ...))]\n                   #:when #true)\n               ...)\n           (set! current-saturation-args (list (cons 'var name) ...))\n           body ...)]))\n\n;; Print additional information\n(define old-check-handler (current-check-handler))\n(current-check-handler\n (λ (e)\n   (eprintf (pretty-format current-saturation-args))\n   (eprintf \"\\n\")\n   (old-check-handler e)))\n\n;; USE THIS FOR DEBUGGING\n(define-simple-macro (replay-on-failure body ...)\n  (let ([old-check-handler (current-check-handler)])\n    (parameterize ([current-check-handler\n                    (λ (e)\n                      (old-check-handler e)\n                      (eprintf\n                       \"Some checks have failed. Replaying in interactive mode for debugging.\\n\")\n                      (*debug-level* 3)\n                      (*cpu-limit* +inf.0)\n                      (let () body ...))])\n      ; encapsulated to avoid collisions\n      (let () body ...))))\n\n(for-in-list* ([neg-lit-select? #true #false]\n               [l-res-pruning? #true #false]\n               [atom<=> #false KBO1lex<=> atom1<=>]\n               [dynamic-ok? #;#true #false]\n               [parent-discard? #false]\n               ; notice: if parent-discard? is #true, then can't have both rewriting and\n               ; neg-lit-select.\n               )\n\n  (define-wrapper (saturation\n                   (sat:saturation input-clauses\n                                   #:? [step-limit 200]\n                                   #:? [memory-limit 4096] ; in MB\n                                   #:? [cpu-limit (*cpu-limit*)] ; in seconds\n                                   #:? [rwtree (make-rewrite-tree #:atom<=> atom<=>\n                                                                  #:dynamic-ok? dynamic-ok?)]\n                                   #:? [rwtree-out (and atom<=> rwtree)]\n                                   #:? backward-rewrite?\n                                   #:? age:cost\n                                   #:? cost-type\n                                   #:? [parent-discard? parent-discard?]\n                                   #:? [disp-proof? #false]\n                                   #:? [L-resolvent-pruning? l-res-pruning?]\n                                   #:? [negative-literal-selection? neg-lit-select?]))\n    #:call-wrapped call\n    (define res (call))\n    (unless l-res-pruning?\n      (check-equal? (dict-ref res 'L-resolvent-pruning) 0))\n    (unless dynamic-ok?\n      (check-equal? (dict-ref res 'binary-rules-dynamic) 0))\n    (unless atom<=>\n      (check-equal? (dict-ref res 'binary-rules) 0)\n      (check-true (= (dict-ref res 'binary-rewrites) 0)))\n    res)\n\n\n  ;; Some refutation tests\n  (check-equal?\n   (dict-ref (saturation (Vars+clausify-list '( [] )))\n             'status)\n   'refuted)\n  (check-equal?\n   (dict-ref (saturation (Vars+clausify-list '( [p] )))\n             'status)\n   'saturated)\n  (check-equal?\n   (dict-ref (saturation (Vars+clausify-list '( [p]\n                                                [(not p)])))\n             'status)\n   'refuted)\n  (check-equal?\n   (dict-ref (saturation (Vars+clausify-list '( [p]\n                                                [(not q)])))\n             'status)\n   'saturated)\n\n  ;; To do: If L-resolvents-pruning applied to input clauses too,\n  ;; it would discard the 2nd clause immediately and would saturate.\n  (replay-on-failure\n   (check-equal?\n    (dict-ref (saturation (Vars+clausify-list '( [(p z)]\n                                                 [(not (p X)) (p (s X))]\n                                                 [(not q)])))\n              'status)\n    'steps))\n\n\n\n  ;; Russell's 'paradox', requires factoring:\n  (check-equal?\n   (dict-ref (saturation (Vars+clausify-list\n                          '( [(s X X) (s b X)]\n                             [(not (s X X)) (not (s b X))])))\n             'status)\n   'refuted)\n\n  ;; Second version\n  (check-equal?\n   (dict-ref (saturation (Vars+clausify-list\n                          '( [(s X b) (s b X)]\n                             [(not (s X b)) (not (s b X))])))\n             'status)\n   'refuted)\n\n\n\n  (check-equal?\n   (dict-ref (saturation (Vars+clausify-list\n                          '( [(big_f T0_0 T0_1) (big_g T0_0 T0_2)]\n                             [(big_f T1_0 T1_1) (not (big_g T1_0 T1_0))]\n                             [(big_g T2_0 T2_1) (not (big_f T2_0 T2_2))]\n                             [(not (big_f T3_0 T3_1)) (not (big_g T3_0 (esk1_1 T3_0)))])))\n             'status)\n   'refuted)\n\n\n  (check-equal?\n   (dict-ref (saturation (Vars+clausify-list '( [p1 p2]\n                                                [p1 (not p2)]\n                                                [p2 (not p1)]\n                                                [(not p1) (not p2)])))\n             'status)\n   'refuted)\n\n  (check-equal?\n   (dict-ref (saturation\n              '((p1 p2 p3)\n                (p1 p3 (not p2))\n                (p2 p3 (not p1))\n                (p1 p2 (not p3))\n                (p1 (not p2) (not p3))\n                (p2 (not p1) (not p3))\n                (p3 (not p1) (not p2))\n                ((not p1) (not p2) (not p3))))\n             'status)\n   'refuted)\n\n\n  (check-equal?\n   (dict-ref (saturation\n              (Vars+clausify-list\n               '( [(big_f T0_0 T0_1 (esk3_2 T0_0 T0_1))]\n                  [(big_f esk1_0 esk2_0 esk2_0) (not (big_f esk1_0 esk1_0 esk2_0))]\n                  [(big_f esk1_0 esk1_0 esk2_0)\n                   (big_f esk1_0 esk2_0 esk2_0)\n                   (not (big_f esk2_0 esk2_0 T2_0))]\n                  [(big_f esk1_0 esk1_0 esk2_0)\n                   (big_f esk2_0 T3_0 T3_1)\n                   (not (big_f esk1_0 esk2_0 esk2_0))]\n                  [(not (big_f esk1_0 esk1_0 esk2_0))\n                   (not (big_f esk1_0 esk2_0 esk2_0))\n                   (not (big_f esk2_0 esk2_0 T4_0))]\n                  [(big_f esk1_0 esk2_0 esk2_0)\n                   (not (big_f T5_0 T5_1 (esk3_2 T5_1 T5_0)))\n                   (not (big_f esk1_0 esk1_0 esk2_0))]\n                  [(big_f esk1_0 esk1_0 esk2_0)\n                   (not (big_f T6_0 (esk3_2 T6_0 T6_1) (esk3_2 T6_0 T6_1)))\n                   (not (big_f esk1_0 esk2_0 esk2_0))] )))\n             'status)\n   'refuted)\n\n  (check-equal?\n   (dict-ref\n    (saturation\n     (Vars+clausify-list\n      '([(p X) (not (p (p X)))]\n        [(not (p a))]\n        [(not (q a))]\n        [(q X) (not (q (q (q X))))]\n        [(q (q (q (q (q (q (q (q (q (q (q (q (q (q (q a)))))))))))))))])))\n    'status)\n   'refuted)\n  ;; This problem shows there may be some loops with implication-removal and factoring!\n  (check-equal?\n   (dict-ref\n    (saturation\n     (Vars+clausify-list\n      '([(not (p X Y)) (p X Z) (p Z Y)]\n        [(p x x)]\n        [(not (q a a a a b b b b c c c c))]\n        [(q A A A A B B B B C C C C) (not (q (q A A A A) (q B B B B) (q C C C C)))]\n        [(q (q a a a a) (q b b b b) (q c c c c))])))\n    'status)\n   'refuted)\n\n  ;; Binary rewrite\n  ;; This example shows that *not* backward rewriting rules can be a problem:\n  ;; Around step 19, there should be immediate resolution to '() with an active clause.\n  ;; But because [(not (p a A))] has not been rewritten to [(notp a A)],\n  ;; it cannot unify to '() immediately, and must wait for a *resolution* between\n  ;; the rule and the clause to pop up from the queue.\n  (replay-on-failure\n    (define res\n      (saturation\n       (map clausify\n            '(((notp A B) (p A B)) ; axiom, binary clause\n              ((not (notp A B)) (not (p A B))) ; axiom, converse binary clause\n              ((p a A) (q b B) (r c C) (s d D)) ; these two clauses should resolve to '() immediately\n              ((not (p A a))) ; Note that 'a A' is to prevent unit-clause rewrites\n              ((not (q B b)))\n              ((not (r C c)))\n              ((not (s D d)))\n              ))))\n    (check-equal? (dict-ref res 'status) 'refuted)\n    (when atom<=>\n      (check > (dict-ref res 'unit-rules) 0)\n      (check-equal? (dict-ref res 'binary-rules) 2)\n      (check > (dict-ref res 'binary-rewrites) 0)))\n\n  ;; 'Asymmetric' rules\n  (replay-on-failure\n    (define res\n      (saturation\n       (map clausify\n            '([(not (p A A)) (q A)] ; Not a rule in itself (too general), but enables the next ones\n              [(p a a) (not (q a))] ; rule (p a a) <-> (q a)\n              [(p b b) (not (q b))] ; rule (p b b) <-> (q b)\n              [(p a a) (p b b) (p c c)]\n              [(not (q a)) (remove-me x Y)]\n              [(not (q b)) (remove-me x Y)]\n              [(not (p c c)) (remove-me x Y)]\n              [(not (remove-me X y))] ; defeats urw\n              ))))\n    (check-equal? (dict-ref res 'status) 'refuted)\n    (when atom<=>\n      (check-equal? (dict-ref res 'binary-rules) 4)\n      (check-true (> (dict-ref res 'binary-rewrites) 0))))\n  ;; TODO: Same test but with rules loaded from a file\n\n  ;; Greedy selection of binary rewrites can lead to failure\n  (replay-on-failure\n    (define res\n      (saturation\n       (map clausify\n            '(; equivalences\n              [(not (q A B C D)) (p A B C)] ; (q A B C D) <=> (p A B C)\n              [(q A B C D) (not (p A B C))]\n              [(not (p A b C)) (t a)]       ; (p A b C) <=> (t a)\n              [(p A b C) (not (t a))]\n              [(not (q A B c D)) (s b c)]   ; (q A b c D) <=> (s b c)\n              [(q A B c D) (not (s b c))]\n              ; inputs\n              ; may be rewritten to (s b c)\n              [(q a b c d) (remove-me x Y) (remove-me y Y) (remove-me z Y)]\n              [(not (t a)) (remove-me x Y) (remove-me y Y) (remove-me z Y)]\n              ;\n              [(not (remove-me X y))] ; defeats urw\n              ))))\n    (check-equal? (dict-ref res 'status) 'refuted)\n    (when atom<=>\n      (check-equal? (dict-ref res 'binary-rules) 6)\n      (check-true (> (dict-ref res 'binary-rewrites) 0))))\n\n  ;; Overlapping rewrites can lead to failures (but not without rewrites)\n  (replay-on-failure\n    (define res\n      (saturation\n       (map clausify\n            '(; equivalences\n              [(not (q A B C D)) (p A B C)] ; (q A B C D) <=> (p A B C)\n              [(q A B C D) (not(p A B C))]\n              [(not (p A b C)) (t a)]       ; (p A b C) <=> (t a)\n              [(p A b C) (not (t a))]\n              [(not (q A b c D)) (s b c)]   ; (q A b c D) <=> (s b c)\n              [(q A b c D) (not (s b c))]\n              ; inputs\n              [(s b c) (remove-me x Y) (remove-me y Y) (remove-me z Y)]\n              [(not (t a)) (remove-me x Y) (remove-me y Y) (remove-me z Y)]\n              ;\n              [(not (remove-me X y))] ; defeats urw\n              ))))\n    (check-equal? (dict-ref res 'status) 'refuted)\n    (when atom<=>\n      (check-equal? (dict-ref res 'binary-rules) 6)\n      (check-true (> (dict-ref res 'binary-rewrites) 0))))\n\n  ;; Greedy selection of overlapping rewrites can lead to failures\n  (replay-on-failure\n    (define res\n      (saturation\n       (map clausify\n            '(; equivalences\n              [(not (q A B C D)) (p A B C)] ; (q A B C D) <=> (p A B C)\n              [(q A B C D) (not(p A B C))]\n              [(not (p A b C)) (r A C)]     ; (p A b C) <=> (r A C)\n              [(p A b C) (not (r A C))]\n              [(not (r A c)) (t a)]         ; (r A c) <=> (t a)\n              [(r A c) (not (t a))]\n              [(not (q A b c D)) (s b c)]   ; (q A b c D) <=> (s b c)\n              [(q A b c D) (not (s b c))]\n              ; inputs\n              [(s b c) (remove-me x Y) (remove-me y Y) (remove-me z Y)]\n              [(not (t a)) (remove-me x Y) (remove-me y Y) (remove-me z Y)]\n              ;\n              [(not (remove-me X y))] ; defeats urw\n              ))))\n    (check-equal? (dict-ref res 'status) 'refuted)\n    (when atom<=>\n      (check-equal? (dict-ref res 'binary-rules) 8)\n      (check-true (> (dict-ref res 'binary-rewrites) 0)))))\n"
  },
  {
    "path": "satore/tests/stress-test1.rkt",
    "content": "#lang racket/base\n\n(require satore/clause\n         satore/unification)\n\n(define cms current-milliseconds)\n\n;;; Stress test.\n;;; There's only one predicate of two arguments.\n;;; This takes basically exponential time with n.\n;;; All the time is taken by clausify (safe-factoring, which includes subsumption check)\n(define (stress n)\n  (define pre (cms))\n  (define cl1\n    (time\n     (clausify\n      (fresh ; ensures the names are adequate variable names\n       (for/list ([i n])\n         `(eq #s(Var ,i) #s(Var ,(+ i 1))))))))\n  (define cl2\n    (time\n     (clausify\n      (fresh\n       (for/list ([i (+ n 1)])\n         `(eq #s(Var ,i) #s(Var ,(+ i 1))))))))\n  (void (time (clause-subsumes cl1 cl2)))\n  (void (time (clause-subsumes cl2 cl1)))\n  (- (cms) pre))\n\n;; Takes about 10s on my desktop machine for n=40 (subsumes-iter-limit=0).\n\n(for/list ([n (in-list '(10 20 30 40))])\n  (printf \"n = ~a\\n\" n)\n  (stress n))\n"
  },
  {
    "path": "satore/tests/trie.rkt",
    "content": "#lang racket/base\n\n(require rackunit\n         satore/trie\n         (only-in satore/unification symbol-variable?))\n\n(let ([atrie (make-trie #:variable? symbol-variable?)])\n  (trie-set! atrie\n             '(a X (f Y) c)\n             'A)\n  (trie-set! atrie\n             '(a b (f Y) c)\n             'B)\n  (trie-set! atrie\n             '(a b (f Y) E)\n             'C)\n  (check-equal?\n   (sort (trie-ref atrie '(a b (f (g e)) c)) symbol<?)\n   '(A B C))\n  (check-equal? (trie-ref atrie '(a Y (f (g e)) c))\n                '(A))\n  (check-equal? (trie-ref atrie '(a Y (f (g Y)) c))\n                '(A))\n  (check-equal? (trie-ref atrie '(a Y (f (g Y)) Z))\n                '())\n  (check-equal? (trie-ref atrie '(a b (f Y) (g e)))\n                '(C))\n  (check-equal? (trie-ref atrie '(a (f (g Y)) (f Y) c))\n                '(A))\n\n  (check-equal? (sort (trie-values atrie) symbol<?)\n                '(A B C))\n  (check-equal? (trie-ref atrie '(X X X X)) '())\n  (check-equal? (sort (trie-inverse-ref atrie '(X X X X)) symbol<?)\n                '(A B C))\n  (check-equal? (trie-inverse-ref atrie '(a b (f e) c)) '())\n\n  (check-equal? (sort (trie-both-ref atrie '(a Y (f c) c)) symbol<?)\n                '(A B C))\n  (check-equal? (sort (trie-both-ref atrie '(a e (f (g X)) c)) symbol<?)\n                '(A))\n  (check-equal? (sort (trie-both-ref atrie '(a b (f c) d)) symbol<?)\n                '(C)))\n\n(let ([atrie (make-trie #:variable? symbol-variable?)])\n  (trie-set! atrie\n             '(eq X0 X1)\n             'A)\n  (trie-set! atrie\n             '(eq X0 (mul X1 one))\n             'B)\n  (trie-set! atrie\n             '(eq X0 (mul X1 X0))\n             'C)\n  (check-equal? (trie-ref atrie '(eq X Y))\n                '(A))\n  (check-equal?\n   (sort (trie-ref atrie '(eq Y (mul Y one))) symbol<?)\n   '(A B C)))\n\n;; Trie traversal\n(let ([atrie (make-trie #:variable? symbol-variable?)])\n  (trie-set! atrie\n             '(a X (f Y) c)\n             'A)\n  (trie-set! atrie\n             '(a b (f Y) c)\n             'B)\n  (trie-set! atrie\n             '(a b (f Y) E)\n             'C)\n  (trie-set! atrie 'X 'D)\n  (trie-set! atrie 'abc 'E)\n  (trie-set! atrie '(a B c) 'F)\n  (trie-set! atrie '(a B c d) 'G)\n  (trie-set! atrie '(a B) 'H)\n  (trie-set! atrie '() 'I)\n  (check-equal? (sort (trie-inverse-ref atrie 'A) symbol<?)\n                '(A B C D E F G H I)))\n"
  },
  {
    "path": "satore/tests/unification-tree.rkt",
    "content": "#lang racket/base\n\n(require racket/list\n         rackunit\n         (submod satore/Clause test)\n         satore/Clause\n         satore/clause\n         satore/unification-tree)\n\n(let ()\n  (define utree (make-unification-tree))\n  (add-Clause! utree (Clausify '[(p A B) (not (q A x B))]))\n  (check-Clause-set-equivalent?\n   (utree-resolve+unsafe-factors utree (Clausify '[(not (p a b)) (q e x f) (q g x h) (p c d)])\n                                 #:L-resolvent-pruning? #false)\n   (map Clausify\n        '([(p c d) (q e x f) (q g x h) (not (q a x b))]\n          [(p c d) (p g h) (q e x f) (not (p a b))]\n          [(p c d) (p e f) (q g x h) (not (p a b))])))\n\n  (check-Clause-set-equivalent?\n   (utree-resolve+unsafe-factors utree (Clausify '[(not (p X Y)) (r X Y Y)])\n                                 #:L-resolvent-pruning? #false)\n   (map Clausify '([(r A B B) (not (q A x B))]))))\n\n(let ()\n  (define utree (make-unification-tree))\n  (add-Clause! utree (Clausify '[(p A b) (not (q A x c))]))\n  (define C2 (Clausify '[(not (p a B)) (q d x B)]))\n  (check-Clause-set-equivalent?\n   (utree-resolve+unsafe-factors utree C2 #:L-resolvent-pruning? #false)\n   (map Clausify '([(not (q a x c)) (q d x b)]\n                   [(p d b) (not (p a c))]))))\n\n\n(define (utree-remove-subsumed! utree cl)\n  (define C (make-Clause cl))\n  (utree-inverse-find/remove! utree C Clause-subsumes))\n\n(define (make-utree1)\n  (define utree (make-unification-tree))\n  (for-each\n   (λ (cl) (add-Clause! utree (make-Clause (clausify cl))))\n   '([(p A) (not (q B))]\n     [(q A) (r B)]\n     [(p c) (r b)]))\n  utree)\n\n(let ()\n  (define utree (make-utree1))\n  (define removed (utree-remove-subsumed! utree (clausify '[(q X)])))\n  (check-equal? (length removed) 1)\n  (check-equal? (length (utree-remove-subsumed! utree (clausify '[(not (q X))]))) 1)\n  (check-equal? (length (utree-remove-subsumed! utree (clausify '[(r X)]))) 1)\n  (check-equal? (append* (trie-values utree)) '()))\n\n(let ()\n  (define utree (make-utree1))\n  (define removed (utree-remove-subsumed! utree (clausify '[(p d)])))\n  (check-equal? (length removed) 0)\n  (define removed2 (utree-remove-subsumed! utree (clausify '[(p c)])))\n  (check-equal? (length removed2) 1))\n\n(let ()\n  (define utree (make-utree1))\n  (define removed (utree-remove-subsumed! utree (clausify '[(p X)])))\n  (check-equal? (length removed) 2))\n\n"
  },
  {
    "path": "satore/tests/unification.rkt",
    "content": "#lang racket/base\n\n(require (submod bazaar/order test)\n         racket/list\n         racket/match\n         rackunit\n         satore/clause\n         satore/unification)\n\n(define (subst/#false->imsubst s)\n  (cond [(subst? s)\n         (subst->list s)]\n        [(list? s)\n         (sort (map (λ (p) (cons (Var-name (Varify (car p)))\n                                 (Varify (cdr p))))\n                    s)\n               Var-name<? #:key car)]\n        [else s]))\n\n\n(check-eq? (Var-name->symbol (symbol->Var-name 'C)) 'C)\n(check-eq? (Var-name->symbol (symbol->Var-name 'X0)) 'X0)\n(check-eq? (Var-name->symbol (symbol->Var-name 'X1353)) 'X1353)\n\n\n(check-equal?\n (find-var-names (Varify '(p D C A B)))\n (map Var-name (Varify '(D C A B))))\n(check-equal?\n (find-var-names (Varify '(p (q D E) C A B E D D A)))\n (map Var-name (Varify '(D E C A B))))\n\n(let ()\n  (define-check (check/fail-var-occs<=> p q c)\n    (let ([res (var-occs<=> p q)])\n      (unless (eq? res c)\n        (fail-check (format \"Params: ~a ~a \\nExpected: ~a\\nGot: ~a\\n\" p q c res)))))\n  (define (check-var-occs<=> p q c)\n    (let ([p (Varify p)] [q (Varify q)])\n      (check/fail-var-occs<=> p q c)\n      (case c\n        [(<) (check/fail-var-occs<=> q p '>)]\n        [(>) (check/fail-var-occs<=> q p '<)]\n        [(= #false) (check/fail-var-occs<=> q p c)])))\n\n  (check-var-occs<=> '(p) '(q) '=)\n  (check-var-occs<=> '(p X) '(q) '>)\n  (check-var-occs<=> '(p X) '(q X) '=)\n  (check-var-occs<=> '(p X X) '(q X) '>)\n  (check-var-occs<=> '(p X Y) '(q X) '>)\n  (check-var-occs<=> '(p X Y) '(q X Z) #false)\n  (check-var-occs<=> '(p X X Y) '(q X Z) #false)\n  (check-var-occs<=> '(p X X Y) '(q X Y) '>)\n  (check-var-occs<=> '(p X X Y) '(q X Y Y) #false))\n\n(let ()\n  (check equal? (lnot 'auie) `(not auie))\n  (check equal? (lnot (lnot 'auie)) 'auie)\n  (check equal? (lnot lfalse) ltrue)\n  (check equal? (lnot `(not ,lfalse)) lfalse) ; to fix non-reduced values\n  (check equal? (lnot `(not ,ltrue)) ltrue) ; to fix non-reduced values\n  (check equal? (lnot ltrue) lfalse)\n  (check equal? (lnot (lnot ltrue)) ltrue)\n  (check equal? (lnot (lnot lfalse)) lfalse)\n  (check<=> polarity<=> 'a '(not a) '<))\n\n\n(let ()\n  (define-simple-check (check-atom1<=> a b res)\n    (check<=> atom1<=> (Varify a) (Varify b) res))\n\n  (check-atom1<=> lfalse 'a '<)\n  (check-atom1<=> lfalse lfalse '=)\n  (check-atom1<=> '() '() '=)\n  (check-atom1<=> '(eq b a) '(eq a b) '>) ; lexicographical order\n  (check-atom1<=> '(p X Y) '(p Y X) '=) ; no lex order between variables\n  (check-atom1<=> '(p a X) '(p X a) '=) ; no lex order between variable and symbol\n  (check-atom1<=> '(p A (q B))\n                 '(p (q A) B)\n                 '=) ; no lex order when variable is involved\n  (check-atom1<=> '(p A (q b))\n                 '(p (q A) b)\n                 '=) ; ????\n  (check-atom1<=> '(not (eq X0 X1 X1)) ; var-occs=\n                 '(not (eq X0 X1 X1))\n                 '=)\n\n  (check-atom1<=> '(eq X0 X1 X1)\n                 '(not (eq X0 X1 X1))\n                 '=) ; negation should NOT count\n  ;;; This is very important, otherwise the following problem can end with 'saturated:\n  ;;; ((notp A B) (p A B)) ; axiom, binary clause\n  ;;; ((not (notp A B)) (not (p A B))) ; axiom, converse binary clause\n  ;;; ((p a A)) ; these two clauses should resolve to '() immediately\n  ;;; ((not (p A a))) ; Note that 'a A' is to prevent unit-clause rewrites\n\n\n  (check-atom1<=> 'p 'q '<)\n  (check-atom1<=> '(not p) '(not q) '<)\n\n  (check-atom1<=> '(not (eq X0 X1 X1))\n                 '(not (eq X1 X0))\n                 '>)\n  (check-atom1<=> '(p X Y Z)\n                 '(p X Y one)\n                 '>)\n  (check-atom1<=> '(p X A one)\n                 '(p X Y one)\n                 '#false)\n  (check-atom1<=> '(p X one one)\n                 '(p X one)\n                 '>)\n  (check-atom1<=> '(p X one (q one))\n                 '(p X one one)\n                 '>)\n\n\n  )\n\n\n;; Tests for KBO\n(let ()\n  (define-simple-check (check-KBO1lex<=> a b res)\n    (check<=> KBO1lex<=> (Varify a) (Varify b) res))\n\n\n  (check-KBO1lex<=> lfalse 'a '<)\n  (check-KBO1lex<=> lfalse lfalse '=)\n\n\n  ;(check-KBO1lex<=> '() '() '=) ; not a term\n  (check-KBO1lex<=> '(eq b a) '(eq a b) '>) ; lexicographical order\n  (check-KBO1lex<=> '(p X Y) '(p Y X) #false) ; commutativity cannot be oriented\n  (check-KBO1lex<=> '(p a X) '(p X a) #false) ; left->right order: a <=> X -> #false\n  (check-KBO1lex<=> '(p A (q B))\n                    '(p (q A) B)\n                    '<) ; left->right order: A < (q A)\n  (check-KBO1lex<=> '(p A (q b))\n                    '(p (q A) b)\n                    '<) ; left->right order: A < (q A)\n  (check-KBO1lex<=> '(not (eq X0 X1 X1)) ; var-occs=\n                    '(not (eq X0 X1 X1))\n                    '=)\n\n  (check-KBO1lex<=> '(eq X0 X1 X1)\n                    '(not (eq X0 X1 X1))\n                    '=) ; negation should NOT count\n  ;;; This is very important, otherwise the following problem can end with 'saturated:\n  ;;; ((notp A B) (p A B)) ; axiom, binary clause\n  ;;; ((not (notp A B)) (not (p A B))) ; axiom, converse binary clause\n  ;;; ((p a A)) ; these two clauses should resolve to '() immediately\n  ;;; ((not (p A a))) ; Note that 'a A' is to prevent unit-clause rewrites\n\n\n  (check-KBO1lex<=> 'p 'q '<) ; lex\n  (check-KBO1lex<=> '(not p) '(not q) '<) ; lex\n\n  (check-KBO1lex<=> '(not (eq X0 X1 X1))\n                    '(not (eq X1 X0))\n                    '>) ; by var-occs and weight\n  (check-KBO1lex<=> '(p X Y Z)\n                    '(p X Y one)\n                    #false) ; var-occs incomparable\n  (check-KBO1lex<=> '(p X Y (f Z))\n                    '(p X (f Y) one)\n                    #false) ; var-occs incomparable\n  (check-KBO1lex<=> '(p X Y (f Z))\n                    '(p X (f Y) Z)\n                    '<) ; same weight, Y < (f Y)\n  (check-KBO1lex<=> '(p X A one)\n                    '(p X Y one)\n                    #false)\n  (check-KBO1lex<=> '(p X one one)\n                    '(p X one)\n                    '>)\n  (check-KBO1lex<=> '(p X one (q one))\n                    '(p X one one)\n                    '>)\n\n  (check-KBO1lex<=> '(p A (p B C))\n                    '(p (p A B) C)\n                    '<) ; associativity ok: A < (p A B)\n  )\n\n(let ()\n  (check-equal? (term-lex2<=> '(p a) '(p b)) '<))\n\n(let ()\n  (define-simple-check (check-term-lex<=> a b res)\n    (let-values ([(a b) (apply values (fresh (Varify (list a b))))])\n      (check<=> term-lex<=> (Varify a) (Varify b) res)))\n  (check-term-lex<=> 'a (Var 'X) '>)\n  (check-term-lex<=> (Var 'X) (Var 'X) '=)\n  (check-term-lex<=> 'a 'a '=)\n  (check-term-lex<=> 'a 'b '<)\n\n  (define-simple-check (check-literal<=> a b res)\n    (let-values ([(a b) (apply values (fresh (Varify (list a b))))])\n      (check<=> literal<=> (Varify a) (Varify b) res)))\n  (check-literal<=> 'a '(not a) '<)\n  (check-literal<=> 'a 'b '<)\n  (check-literal<=> 'z '(not a) '<)\n  (check-literal<=> '(z b) '(not a) '<)\n  (check-literal<=> 'a 'a '=)\n  (check-literal<=> 'z '(a a) '>)\n  (check-literal<=> '(z z) '(z (a a)) '<))\n\n(let ()\n  (check-true (literal==? 'a 'a))\n  (check-true (literal==? (Var 'X) (Var 'X)))\n  (check-true (literal==? (Var 'X) #s(Var X))) ; prefab\n  (check-false (literal==? (Var 'X) (Var 'Y)))\n  (check-false (literal==? (fresh (Var 'X)) (Var 'X)))\n  (check-false (literal==? 'X (Var 'X))) ; not considered the same??\n  (check-true (literal==? `(p (f ,(Var 'X) ,(Var 'X)) y) `(p (f ,(Var 'X) ,(Var 'X)) y))))\n\n\n(let ()\n  (define-check (test-unify t1 t2 subst)\n    (let ([t1 (Varify t1)] [t2 (Varify t2)])\n      (set! subst (subst/#false->imsubst subst))\n      (define sh (unify t1 t2))\n      (define sl (subst/#false->imsubst\n                  (and sh\n                       (for/list ([(k v) (in-subst sh)])\n                         (cons (Var k)\n                               (if (already-substed? v)\n                                   (already-substed-term v)\n                                   v))))))\n      (unless (equal? sl subst)\n        (fail-check (format \"Expected ~a. Got: ~a\\nt1 = ~a\\nt2 = ~a\\n\"\n                            subst sl\n                            t1 t2)))\n      (when sh\n        (define r1 (substitute t1 sh))\n        (define r2 (substitute t2 sh))\n        (unless (equal? r1 r2)\n          (fail-check \"r1≠r2\" sh r1 r2)))))\n\n  (test-unify '(p X)\n              '(p X)\n              '())\n  (test-unify '(p (f X) X)\n              '(p (f a) a)\n              '((X . a)))\n  (test-unify '(p (f c) (g X))\n              '(p Y Y)\n              #false)\n  (test-unify '(p X (f X))\n              '(p a Y)\n              '((X . a) (Y . (f a))))\n  (test-unify '(p (f X Y) (f Y Z))\n              '(p (f (f a) (f b)) (f (f b) c))\n              '((X . (f a)) (Y . (f b)) (Z . c)))\n  (test-unify '(p X (p X) a)\n              '(p Y (p (p Z)) Z)\n              (if reduce-mgu?\n                  '((Z . a) (X . (p a)) (Y . (p a)))\n                  '((X . Y) (Y . (p Z)) (Z . a))))\n  (test-unify '(p X (p X) (p (p X)))\n              '(p a Y Z)\n              '((X . a) (Y . (p a)) (Z . (p (p a)))))\n  (test-unify '(p X (p X) (p (p X)))\n              '(p a (p Y) (p (p Z)))\n              '((X . a) (Y . a) (Z . a)))\n  (test-unify '(p (p X) (p X) a)\n              '(p Y (p (p Z)) Z)\n              (if reduce-mgu?\n                  '((Z . a) (X . (p a)) (Y . (p (p a))))\n                  '((Y . (p X)) (X . (p Z)) (Z . a))))\n  (test-unify '(p X X)\n              '(p a Y)\n              '((X . a) (Y . a)))\n  (test-unify '(p X X)\n              '(p (f Y) Z)\n              '((X . (f Y)) (Z . (f Y))))\n  (test-unify '(p X X) '(p (f Y) Y) #false)\n  (test-unify '(p (f X       Y)  (g Z Z))\n              '(p (f (f W U) V)  W)\n              (if reduce-mgu?\n                  '((W . (g Z Z)) (Y . V) (X . (f (g Z Z) U)))\n                  '((X . (f W U)) (Y . V) (W . (g Z Z)))))\n\n  (test-unify '(eq X30 (mul X31 (mul X32 (inv (mul X31 X32)))))\n              '(eq (mul X25 one) X26)\n              `((X26 . (mul X31 (mul X32 (inv (mul X31 X32)))))\n                (X30 . (mul X25 one))))\n  (test-unify '(p A B)\n              '(p B A)\n              '((A . B)))\n  )\n\n(let ()\n  (define (test-suite-left-unify left-unify)\n    (define-simple-check (test-left-unify t1 t2 subst)\n      (let ([t1 (Varify t1)] [t2 (Varify t2)])\n        (set! subst (subst/#false->imsubst subst))\n        (define sh (left-unify t1 t2))\n        (define sl (subst/#false->imsubst sh))\n        (check-equal? sl subst\n                      (format \"Expected ~a. Got: ~at1 = ~a\\nt2 = ~a\\n\"\n                              subst sl\n                              t1 t2))\n        (when sh\n          (define r1 (left-substitute t1 sh))\n          (check-equal? r1 t2 (format \"r1≠t2\\nsh=~a\\nr1=~a\\nt2=~a\\n\" sh r1 t2)))))\n\n    (test-left-unify '(p (f X) X)\n                     '(p (f a) a)\n                     '((X . a)))\n    (test-left-unify '(p (f c) (g X))\n                     '(p Y Y)\n                     #false)\n    (test-left-unify '(p X (f X)) '(p a Y) #false)\n    (test-left-unify '(p (f X Y) (f Y Z))\n                     '(p (f (f a) (f b)) (f (f b) c))\n                     '((Z . c) (Y . (f b)) (X . (f a))))\n    (test-left-unify '(p X X) '(p a Y) #false)\n    (test-left-unify '(p X X) '(p (f Y) Z) #false)\n    (test-left-unify '(p X X) '(p (f Y) Y) #false)\n    (test-left-unify '(p (f X       Y)  (g Z Z))\n                     '(p (f (f W U) V)  W)\n                     #false)\n    (test-left-unify '(p X X)\n                     '(p A B)\n                     #false)\n    ; This MUST return false because of the circularity.\n    ; The found substitution must be specializing, that is C2σ = C2 (and C1σ = C2),\n    ; otherwise safe factoring can fail, in particular.\n    ; Hence we must ensure that vars(C2) ∩ dom(σ) = ø.\n    (test-left-unify '(p A B)\n                     '(p B A)\n                     #false)\n    (test-left-unify '(p B A)\n                     '(p A B)\n                     #false)\n    (test-left-unify '(p A A)\n                     '(p B B)\n                     '((A . B)))\n    (test-left-unify '(p A)\n                     '(p A)\n                     '())\n    (test-left-unify '(p a)\n                     '(p a)\n                     '())\n    (test-left-unify '(p A X)\n                     '(p X Y)\n                     #false))\n\n  (test-suite-left-unify left-unify)\n  (test-suite-left-unify (λ (t1 t2) (define subst-assoc (left-unify/assoc t1 t2))\n                           (and subst-assoc (make-subst subst-assoc)))))\n\n\n(let ([pat '(_not_ (_not_ #s(Var A)))]\n      [t (fresh (Varify '(q (p (_not_ (_not_ (f A B)))))))])\n  (define s\n    (left-unify-anywhere pat t))\n  (check-equal? (left-substitute pat s)\n                (cadadr t)))\n\n(let ([t '(q (p (_not_ (_not_ (f A B)))))])\n  (check-equal?\n   (match-anywhere (match-lambda [`(_not_ (_not_ ,x)) `([x . ,x])] [else #false])\n                   t)\n   '([x . (f A B)])))\n\n(let ([c1 (clausify '((theorem (or A B)) (not (theorem (or A (or (or A B) B))))))]\n      [c2 (clausify '((theorem (or (_not_ A) (or B A)))))])\n  (define s1 (unify (first c2) (lnot (second c1))))\n  (define s2 (unify (lnot (second c1)) (first c2)))\n  (list c1\n        c2\n        s1\n        (substitute (first c1) s1)\n        s2\n        (substitute (first c1) s2))\n  (check clause-equivalence?\n         (substitute (list (first c1)) s1)\n         (substitute (list (first c1)) s2)))\n\n;; Stress test for unification\n;; This should take 0ms\n;; See https://en.wikipedia.org/wiki/Unification_(computer_science)\n;;       #Examples_of_syntactic_unification_of_first-order_terms\n(let ()\n  (define last-var? #true)\n  (define (stress-unify n)\n    (define A\n      (let left ([d 1])\n        (if (>= d n)\n            (list '* (Var d) (if last-var? (Var (+ d 1)) 'a))\n            (list '* (left (+ d 1)) (Var d)))))\n    (define B\n      (let right ([d 1])\n        (if (>= d n)\n            (list '* (if last-var? (Var (+ d 1)) 'a) (Var d))\n            (list '* (Var d) (right (+ d 1))))))\n    (define subst (time (unify A B)))\n    ; Verify that there's only 1 variable in the each rhs\n    (when (and reduce-mgu? last-var?)\n      (check-equal? (length (Vars (map cdr (subst->list subst))))\n                    1\n                    subst))\n    (time (substitute A subst)))\n  (for ([n (in-range 30 50)])\n    (printf \"~a: \" n)\n    (stress-unify n)))\n"
  },
  {
    "path": "satore/tptp.rkt",
    "content": "#lang racket/base\n\n;**************************************************************************************;\n;****                           Tptp Input/Output Format                           ****;\n;**************************************************************************************;\n\n(require bazaar/debug\n         bazaar/string\n         global\n         racket/dict\n         racket/file\n         racket/format\n         racket/list\n         racket/match\n         racket/port\n         racket/string\n         satore/clause\n         satore/unification)\n\n(provide (all-defined-out))\n\n(define-global:boolean *tptp-out?* #false\n  \"Output is in TPTP format?\")\n\n#|\nFile formats:\n  .rktd: Racket data, one Racket clause per line.\n  .p: Prolog format, with Prolog clauses that contain tptp (FOL) clauses.\n  .tptp: only the tptp clauses, one per line.\n\n|#\n\n;; Reads a .p file and returns a list of clauses.\n;;\n;; program-file : file?\n;; -> (listof clause?)\n(define (tptp-program-file->clauses program-file)\n  ; Not efficient: Loads the whole program as a string then parses it.\n  ; It would be more efficient to read it as a stream with an actual parser.\n  ; Another possibility is to read it line by line and parse each line as a cnf(…)\n  ; but that will file if the cnf(…) is multiline.\n  (tptp-prog->clauses (file->string program-file)))\n\n;; Helper function\n(define (tptp-pre-clauses->clauses pre-clauses)\n  (define clauses\n    (for/list ([cl (in-list pre-clauses)])\n      (let loop ([t cl])\n        (match t\n          [(? symbol? x) x]\n          [(? string? x)\n           (string->symbol (string-append \"_str_\" x))] ; to avoid being interpreted as a variable\n          ['() '()]\n          [(list '~ (? symbol? pred) (list a ...) r ...)\n           (cons (list 'not (cons (loop pred) (loop a)))\n                 (loop r))]\n          [(list  (? symbol? pred) (list a ...) r ...)\n           (cons (cons (loop pred) (loop a))\n                 (loop r))]\n          [(list '~ x r ...)\n           (cons (list 'not (loop x))\n                 (loop r))]\n          [(list x a ...)\n           (cons (loop x) (loop a))]\n          [else (error \"Unrecognized token: \" t)]))))\n  (map (compose clausify symbol-variables->Vars) clauses))\n\n;; Reads the .p program given as a string and returns a list of clauses.\n;;\n;; str : string?\n;; -> (listof clause?)\n(define (tptp-prog->clauses str)\n\n  ; hardly tested and not strict enough\n  ; It should be mostly robust to line breaking though.\n  ; Doesn't parse strings properly (will remove lines that look like comments in multiline strings)\n  (define l\n    (filter\n     (λ (x)\n       (if (list? x)\n         x\n         (begin\n           (assert (memq x '(cnf end_cnf))\n                   x)\n           #false)))\n     ; Ensure operators are surrounded with spaces\n     ; turn racket special symbols (| and ,) into normal symbols.\n     ; then use racket's reader to parse it like an s-expression\n     (string->data\n      (regexp-replaces\n       str\n       (list*\n        '[#px\"(?:^|\\n)\\\\s*[%#][^\\n]*\" \"\\n\"] ; prolog and shell/python/eprover full-line comments\n        '[#px\"\\\\bnot\\\\b\" \"_not_\"] ;; To do: Use $not for `lnot` instead? (as in TPTP)\n        (map (λ (p) (list (regexp-quote (first p))\n                          (string-append \" \" (regexp-replace-quote (second p)) \" \")))\n             '([\"|\" \"\" ]\n               [\"&\" \"\" ]\n               [\",\" \"\" ]\n               [\"$false\" \"\"] ; empty literal\n               [\"~\" \"~\"]\n               [\".\" \"end_cnf\"]\n               [\"'\" \"\\\"\"])))))))\n  ; first is name, second is type, third is clause, rest is comments(?)\n  (define pre-clauses (map third l))\n  (tptp-pre-clauses->clauses pre-clauses))\n\n\n;; Simple parser for the proposer output into s-exp clauses.\n;; The format is expected to be in cnf.\n;;\n;; str : string?\n;; -> (listof clause?)\n(define (tptp-string->clauses str)\n  ; To do: Optimize. This can be very slow for large conjectures.\n  (define pre-clauses\n    (append*\n     ; split first to avoid regenerating the whole string after each substitution?\n     (for/list ([str (in-list (string-split str #px\"&|\\n\"))]) ; & and \\n play the same role\n       (with-handlers ([exn? (λ (e) (displayln str) (raise e))])\n         (string->data\n          ; Ensure operators are surrounded with spaces\n          ; turn racket special symbols (| and ,) into normal symbols\n          (regexp-replaces\n           str\n           (list*\n            '[#px\"\\\\bnot\\\\b\" \"_not_\"] ;; To do: use $not for `lnot` instead? (as TPTP)\n            (map (λ (p) (list (regexp-quote (first p))\n                              (string-append \" \" (regexp-replace-quote (second p)) \" \")))\n                 '([\"|\" \"\"]\n                   [\",\" \"\"]\n                   [\"~\" \"~\"]\n                   [\"'\" \"\\\"\"])))))))))\n  (tptp-pre-clauses->clauses pre-clauses))\n\n;; Returns a string representing the literal lit.\n;;\n;; lit : literal?\n;; -> string?\n(define (literal->tptp-string lit)\n    (cond\n      [(lnot? lit)\n       (string-append \"~ \" (literal->tptp-string (second lit)))]\n      [(empty? lit)\n       \"$false\"]\n      [(list? lit)\n       (string-append (literal->tptp-string (first lit))\n                      \"(\"\n                      (string-join (map literal->tptp-string (rest lit)) \", \")\n                      \")\")]\n      [(Var? lit) (symbol->string (Var-name->symbol lit))]\n      [else (format \"~a\" lit)]))\n\n;; Returns a string representing the clause cl.\n;;\n;; cl : clause?\n;; ->string?\n(define (clause->tptp-string cl)\n  (string-join\n   (map literal->tptp-string (Vars->symbols cl))\n   \" | \"))\n\n;; Returns a string representing the clauses cls.\n;;\n;; cls : (listof clause?)\n;; -> string?\n(define (clauses->tptp-string cls)\n  (string-join (map clause->tptp-string cls) \"\\n\"))\n\n;; String replacement of tptp names with shorter ones to improve readability\n;;\n;; str : string?\n;; -> string?\n(define (tptp-shortener str)\n  (define substs\n    (sort\n     (map (λ (p) (cons (~a (car p)) (~a (cdr p))))\n          ; fld_1\n          (append\n          '((multiplicative_identity . _1)\n            (additive_identity . _0)\n            (less_or_equal . ≤)\n            (additive_inverse . –)\n            (multiplicative_inverse . /)\n            (equalish . ≃)\n            (multiply . ×)\n            (product . ×=)\n            (inverse . /)\n            (add . +)\n            )\n          ;grp_5\n          '((equalish . ≃)\n            (multiply . ×)\n            (product . ×=)\n            (inverse . /)\n            (identity . _1)\n            )\n          ; geo\n          '((convergent_lines . /\\\\)\n            (unorthogonal_lines . ¬⊥)\n            (orthogonal_through_point . ⊥_thru_pt)\n            (parallel_through_point . //_thru_pt)\n            (distinct_lines . ≠_ln)\n            (apart_point_and_line . ≠_pt_ln)\n            (orthogonal_lines . ⊥)\n            (distinct_points . ≠_pt)\n            (parallel_lines . //)\n            (equal_lines . =_ln)\n            (equal_points . =_pt)))\n          )\n     ; forces prefixes to appear later to match longer strings first:\n     > #:key (compose string-length car)))\n\n\n  (string-join\n   (for/list ([line (in-lines (open-input-string str))])\n     (for/fold ([line line])\n               ([(from to) (in-dict substs)])\n       (string-replace line from to #:all? #true)))\n   \"\\n\"))\n\n;; Helper: Surround any printing operation with this macro\n;; to automatically replace the output with shortened names.\n(define-syntax-rule (with-tptp-shortener body ...)\n  (let ([str (with-output-to-string (λ () body ...))])\n    (displayln (tptp-shortener str))))\n\n;============;\n;=== Main ===;\n;============;\n\n(module+ main\n  (require global\n           racket/file)\n\n  (define-global *rktd-file* #false\n    \"file in rktd format to output in tptp format\"\n    file-exists?\n    values)\n\n  (void (globals->command-line))\n\n  (when (*rktd-file*)\n    (displayln (clauses->tptp-string (file->list (*rktd-file*))))))\n"
  },
  {
    "path": "satore/trie.rkt",
    "content": "#lang racket/base\n\n;***************************************************************************************;\n;****                      Trie: Imperfect Discrimination Tree                      ****;\n;***************************************************************************************;\n\n;;; A discrimination tree is like a hashtable where the key is a list of elements.\n;;; The keys are organized in a tree structure so that to retrieving an object\n;;; takes at most O(A×l) steps, where l is the length of the key and A is the size of\n;;; the alphabet. In practice it will be closer to O(l) since a hash table is used\n;;; at each node to store the branches.\n;;;\n;;; A key is a actually tree (a list of lists of ...), which is flattened to a list\n;;; where parenthesis are replaced with symbols.\n;;; Variables are considered to be unnamed and there is no unification/matching.\n;;; The only dependency on first-order logic specifics is `variable?`.\n;;;\n;;; An imperfect discrimination tree does not differentiate variable names.\n;;; Hence p(X Y) is stored in the same node as p(A A). An additional tests\n;;; is required to tell them apart.\n\n(require bazaar/cond-else\n         define2\n         racket/list\n         racket/match\n         satore/misc)\n\n(provide (except-out (all-defined-out) no-value)\n         (rename-out [no-value trie-no-value]))\n\n;; Default value at the leaves. Should not be visible to the user.\n(define no-value       (string->uninterned-symbol \"no-value\"))\n; Tokens used in the keys of the tree\n(define anyvar         (string->uninterned-symbol \"¿\"))\n(define sublist-begin  (string->uninterned-symbol \"<<\"))\n(define sublist-end    (string->uninterned-symbol \">>\"))\n\n;; edges : hasheq(key . node?)\n;; value : any/c\n(struct trie-node (edges value)\n  #:transparent\n  #:mutable)\n(define (make-node)\n  (trie-node (make-hasheq) no-value))\n\n;; Trie structure with variables.\n;;\n;; root : trie-node?\n;; variable? : any/c -> boolean?\n(struct trie (root variable?))\n\n;; Trie constructor.\n;;\n;; constructor : procedure?\n;; variable? : any/c -> boolean?\n;; other-args  : (listof any/c)\n;; -> trie?\n(define (make-trie #:? [constructor trie]\n                   #:? [variable? (λ (x) #false)]\n                   . other-args)\n  (apply constructor (make-node) variable? other-args))\n\n;; Updates the value of the node for the given key (or sets one if none exists).\n;; If default-val/proc is a procedure of arity 0, then it is applied to produce the\n;; default value when requested, otherwise default-val/proc is used itself as the\n;; default value.\n;;\n;; atrie : trie?\n;; key : any/c\n;; update : any/c -> any/c\n;; default-val/proc : (or/c thunk? any/c)\n;; -> void?\n(define (trie-update! atrie key update default-val/proc)\n  (match-define (trie root variable?) atrie)\n  ; The key is `list`ed because we need a list, and this allows the given key to not be a list.\n  (let node-insert! ([nd root] [key (list key)])\n    (cond/else\n     [(empty? key)\n      ; Stop here.\n      (define old-value (trie-node-value nd))\n      (set-trie-node-value! nd (update (if (eq? old-value no-value)\n                                           (if (thunk? default-val/proc)\n                                               (default-val/proc)\n                                               default-val/proc)\n                                           old-value)))]\n     #:else ; key is a list\n     (define k (car key))\n     (define edges (trie-node-edges nd))\n     #:cond\n     [(pair? k)\n      ; Linearize the tree structure of the key.\n      (define key2 (cons sublist-begin (append k (cons sublist-end (cdr key)))))\n      (node-insert! nd key2)]\n     #:else ; nil, atom, variable\n     (let ([k (if (variable? k) anyvar k)])\n       (define nd2 (hash-ref! edges k make-node))\n       (node-insert! nd2 (cdr key))))))\n\n;; Keeps a list of values at the leaves.\n;; If `trie-insert!` is used, any use of `trie-update!` should be consistent with values being lists.\n;;\n;; atrie : trie?\n;; key : any/c\n;; val : any/c\n;; -> void?\n(define (trie-insert! atrie key val)\n  (trie-update! atrie key (λ (old) (cons val old)) '()))\n\n;; Replacing the current value (if any) for key with val.\n;;\n;; atrie : trie?\n;; key : any/c\n;; val : any/C\n(define (trie-set! atrie key val)\n  (trie-update! atrie key (λ _ val) #false))\n\n;; Applies on-leaf at each node that match with key.\n;; The matching keys of the trie are necessarily no less general than the given key.\n;; `on-leaf` may be effectful.\n;;\n;; atrie : trie?\n;; key : any/c\n;; on-leaf : trie-node? -> any\n;; -> void?\n(define (trie-find atrie key on-leaf)\n  (define variable? (trie-variable? atrie))\n  (let node-ref ([nd (trie-root atrie)] [key (list key)])\n    (cond/else\n     [(empty? key)\n      ; Leaf found.\n      (unless (eq? no-value (trie-node-value nd))\n        (on-leaf nd))]\n     #:else\n     (define k (car key))\n     (define var-nd (hash-ref (trie-node-edges nd) anyvar #false))\n     #:cond\n     [(variable? k)\n      (when var-nd\n        ; both the key and the node are variables\n        (node-ref var-nd (cdr key)))]\n     #:else\n     (when var-nd\n       ; If a variable matches, consider the two paths.\n       (node-ref var-nd (cdr key)))\n     #:cond\n     [(pair? k)\n      ; Linearize the tree structure of the key.\n      (define key2 (cons sublist-begin (append k (cons sublist-end (cdr key)))))\n      (node-ref nd key2)]\n     #:else\n     (define nd2 (hash-ref (trie-node-edges nd) k #false))\n     (when nd2\n       (node-ref nd2 (cdr key))))))\n\n;; Applies the procedure `on-leaf` to any node for which the key is matched by the given key.\n;; The matching keys of the trie are necessarily no more general than the given key.\n;; `on-leaf` may be effectful.\n;;\n;; atrie : trie?\n;; key : any/c\n;; on-leaf : trie-node -> any/c\n;; -> void?\n(define (trie-inverse-find atrie key on-leaf)\n  (define variable? (trie-variable? atrie))\n  (let node-find ([nd (trie-root atrie)] [key (list key)] [depth 0])\n    (define edges (trie-node-edges nd))\n    (cond/else\n     [(> depth 0)\n      ; If the depth is positive, that means we are currently matching a variable.\n      ; We need to continue through every branch and decrease the depth only if we encounter\n      ; a sublist-end, and increase the counter if we encounter a sublist-begin.\n      ; Note that key can be empty while depth > 0.\n      (for([(k2 nd2) (in-hash edges)])\n        (node-find nd2 key\n                  (cond [(eq? k2 sublist-begin) (+ depth 1)]\n                        [(eq? k2 sublist-end) (- depth 1)]\n                        [else depth])))]\n     [(empty? key)\n      ; Leaf found.\n      (unless (eq? no-value (trie-node-value nd))\n        (on-leaf nd))]\n     #:else\n     (define k (car key))\n     #:cond\n     [(variable? k)\n      ;; Anything matches. For sublist we need to keep track of the depth.\n      ;; Note that variables in the tree can only be matched if k is a variable.\n      (for ([(k2 nd2) (in-hash edges)])\n        (node-find nd2 (cdr key) (if (eq? k2 sublist-begin) 1 0)))]\n     [(pair? k)\n      ; Linearize the tree structure of the key.\n      (define key2 (cons sublist-begin (append k (cons sublist-end (cdr key)))))\n      (node-find nd key2 0)]\n     #:else\n     (define nd2 (hash-ref edges k #false))\n     (when nd2\n       (node-find nd2 (cdr key) 0)))))\n\n;; Both find and inverse-find at the same time.\n;; Useful when (full) unification must be performed afterwards.\n;; `on-leaf` may be effectful.\n;;\n;; atrie : trie?\n;; key : any/c\n;; on-leaf : trie-node? -> any\n;; -> void?\n(define (trie-both-find atrie key on-leaf)\n  (define variable? (trie-variable? atrie))\n  (let node-find ([nd (trie-root atrie)] [key (list key)] [depth 0])\n    (define edges (trie-node-edges nd))\n    (cond/else\n     [(> depth 0)\n      ; If the depth is positive, that means we are currently matching a variable.\n      ; Consume everything until we find a sublist-end at depth 1.\n      ; We need to continue through every branch and decrease the depth only if we encounter\n      ; a sublist-end, and increase the counter if we encounter a sublist-begin.\n      ; Note that key can be empty while depth > 0.\n      (for([(k2 nd2) (in-hash edges)])\n        (node-find nd2 key\n                  (cond [(eq? k2 sublist-begin) (+ depth 1)]\n                        [(eq? k2 sublist-end) (- depth 1)]\n                        [else depth])))]\n     [(empty? key)\n      ; Leaf found.\n      (unless (eq? no-value (trie-node-value nd))\n        (on-leaf nd))]\n     #:else\n     (define k (car key))\n     (define var-nd (hash-ref (trie-node-edges nd) anyvar #false))\n     #:cond\n     [(variable? k)\n      ;; Anything matches. For sublist we need to keep track of the depth.\n      ;; Note that variables in the tree can only be matched if k is a variable.\n      (for ([(k2 nd2) (in-hash edges)])\n        (node-find nd2 (cdr key) (if (eq? k2 sublist-begin) 1 0)))]\n     #:else\n     (when var-nd\n      ; The node contains a variable, which thus matches the key.\n       (node-find var-nd (cdr key) 0))\n     #:cond\n     [(pair? k)\n      ; Linearize the tree structure of the key.\n      (define key2 (cons sublist-begin (append k (cons sublist-end (cdr key)))))\n      (node-find nd key2 0)]\n     #:else\n     (define nd2 (hash-ref edges k #false))\n     (when nd2\n       (node-find nd2 (cdr key) 0)))))\n\n;; Helper function\n(define ((make-proc-tree-ref proc) atrie key)\n  (define res '())\n  (proc atrie\n        key\n        (λ (nd) (set! res (cons (trie-node-value nd) res))))\n  res)\n\n;; Returns a list of values which keys are matched by the given key.\n;; The matching keys of the trie are necessarily no more general than the given key.\n;; These functions do not have side effects.\n;;\n;; Each function takes as input:\n;; atrie : trie?\n;; key : any/c\n;; -> list?\n(define trie-inverse-ref (make-proc-tree-ref trie-inverse-find))\n(define trie-ref         (make-proc-tree-ref trie-find))\n(define trie-both-ref    (make-proc-tree-ref trie-both-find))\n\n;; Returns the list of all values in all nodes.\n;;\n;; atrie : trie?\n;; -> list?\n(define (trie-values atrie)\n  (let loop ([nd (trie-root atrie)] [res '()])\n    (define edges (trie-node-edges nd))\n    (define val (trie-node-value nd))\n    (for/fold ([res (if (eq? val no-value) res (cons val res))])\n              ([(key nd2) (in-hash edges)])\n      (loop nd2 res))))\n"
  },
  {
    "path": "satore/unification-tree.rkt",
    "content": "#lang racket/base\n\n;**************************************************************************************;\n;****                               Unification Tree                               ****;\n;**************************************************************************************;\n\n;;; An imperfect discrimination tree specialized for unifying literals and other\n;;; operations. This is *different* from \"substitution trees\"\n;;; (https://link.springer.com/chapter/10.1007%2F3-540-59200-8_52)\n;;; Note: This should be probably named a Clause-trie instead, since the\n;;;   major difference with the trie is that we are dealing with Clauses, which\n;;;   are lists of literals, and the same Clause can appear in different leaves\n;;;   of the trie. Unification is only one of the operations performed on Clauses.\n\n(require bazaar/list\n         bazaar/loop\n         bazaar/mutation\n         define2\n         global\n         racket/list\n         satore/Clause\n         satore/clause\n         satore/misc\n         satore/trie\n         satore/unification)\n\n(provide (all-defined-out)\n         (all-from-out satore/trie))\n\n(module+ test\n  (require rackunit))\n\n;; Experimental.\n;; Based on \"A Unifying Principle for Clause Elimination in First-Order Logic\",\n;; by Kiesl, Benjamin and Suda, Martin, CADE 26, 2017.\n;;\n;; Notice: This cannot be applied to input clauses.\n;; Notice: To pass Russell's problem, we must\n;; do 1-to-N resolution (non-binary resolution), OR, maybe,\n;; binary resolution + unsafe factoring, but the 'resolutions'\n;; for factoring must be taken into account too.\n(define-global:boolean *L-resolvent-pruning?* #false\n  '(\"Discard clauses for which a literal leads to 0 resolvents.\"\n    \"Currently doesn't apply to input clauses.\"))\n\n(define-counter n-L-resolvent-pruning 0)\n\n;========================;\n;=== Unification Tree ===;\n;========================;\n\n;; A unification tree is simply a discrimination tree where trie-node-values\n;; are lists of `utree-leaf`.\n(struct unification-tree trie () #:transparent)\n\n;; A leaf value.\n;; Several leaves may have the same clause-idx but different clauses——well, the same clauses\n;; but ordered differently. It's named `uclause` to make it clear it's not a well-formed clause\n;; (stands for unordered-clause).\n(struct utree-leaf (Clause uclause) #:transparent)\n\n;; Returns a new unification tree (or a substruct).\n;;\n;; constructor : procedure?\n;; other-args : list?\n;; -> unification-tree?\n(define (make-unification-tree #:constructor [constructor unification-tree]\n                               . other-args)\n  (apply make-trie\n         #:constructor constructor\n         #:variable? Var?\n         other-args))\n\n;; Inserts a Clause into the unification tree.\n;; Each literal of the clause cl is added to the tree, and the leaf value at each literal lite is the\n;; clause, but where the first literal is lit.\n;; Notice: Thus the clause is *not* sorted according to `sort-clause`.\n;; Note: We could also keep the clause unchanged and cons the index of the literal,\n;; that would avoid using up new cons cells, while keeping the clause intact.\n;;\n;; unification-tree? Clause? -> void?\n(define (add-Clause! utree C)\n  (define cl (Clause-clause C))\n  (zip-loop ([(left lit right) cl])\n    (define reordered-clause (cons lit (rev-append left right)))\n    (trie-insert! utree lit (utree-leaf C reordered-clause))))\n\n;; Returns the list of unique Clauses present in the utree.\n;;\n;; unification-tree? -> (listof Clause?)\n(define (unification-tree-Clauses utree)\n  (remove-duplicates (map utree-leaf-Clause (append* (trie-values utree))) eq?))\n\n;; Calls `on-unified` for each literal of each clause of utree that unifies with `lit`.\n;; If a clause `cl` has n literals that unify with `lit`, then `on-unified` is called n times.\n;;\n;; utree : unification-tree?\n;; lit : literal?\n;; on-unified : utree-leaf? subst lit1 lit2 other-lit2s -> void?\n;; -> void?\n(define (find-unifiers utree lit on-unified)\n  (trie-both-find utree lit\n                  (λ (nd)\n                    (define val (trie-node-value nd))\n                    (when (list? val)\n                      (for ([lf (in-list val)])\n                        (define cl (utree-leaf-uclause lf))\n                        ; Unify only with the first literal, assuming clauses in node-values\n                        ; are so that the first literal corresponds to the key\n                        ; (the path from the root)\n                        (define lit2 (first cl))\n                        (define subst (unify lit2 lit))\n                        (when subst\n                          (on-unified lf subst lit lit2 (rest cl))))))))\n\n;; Returns the set of Clauses that *may* left-unify with lit.\n;; The returned clauses are sorted according to `sort-clause` and duplicate clauses are removed.\n;;\n;; unification-tree? literal? -> (listof Clause?)\n(define (unification-tree-ref utree lit)\n  ; Node values are lists of rules, and trie-ref returns a list of node-values,\n  ; hence the append*.\n  (remove-duplicates (append* (map utree-leaf-Clause (trie-ref utree lit))) eq?))\n\n;; Helper for the resolve/factors functions below.\n;; Defines a new set of Clauses, and a helper function that creates new Clauses,\n;; rewrites them, checks for tautologies and add them to the new-Clauses.\n(define-syntax-rule (define-add-Clause! C new-Clauses add-Clause! rewriter)\n  (begin\n    (define new-Clauses '())\n    (define (add-Clause! lits subst type parents)\n      (define cl (clause-normalize (substitute lits subst)))\n      (define new-C (make-Clause cl (cons C parents) #:type type))\n      ; Rewrite\n      (let ([new-C (rewriter new-C)])\n        (unless (Clause-tautology? new-C)\n          (cons! new-C new-Clauses))))))\n\n;; Resolves the Clause `C` with all the Clauses in `utree` and returns the list of resolvents.\n;; Uses negative literal selection based on `literal-cost`:\n;; If `C` has at least one negative literal, the costliest one is selected using `literal-cost`,\n;; and only this literal is used for resolution with other Clauses.\n;; The resolvents are immediately rewritten with `rewriter`.\n;;\n;; utree : unification-tree?\n;; C : Clause?\n;; rewriter : Clause? -> Clause?\n;; literal-cost : literal? -> number?\n;; -> (listof Clause?)\n(define (utree-resolve/select-literal utree C\n                                      #:? [rewriter (λ (C) C)]\n                                      #:? [literal-cost literal-size])\n\n  (define cl (Clause-clause C))\n  ;; Choose the costliest negative literal if any (for elimination)\n  (define selected-idx\n    (for/fold ([best-idx #false]\n               [best-cost -inf.0]\n               #:result best-idx)\n              ([lit (in-list cl)]\n               [idx (in-naturals)]\n               #:when (lnot? lit)) ; negative literals only\n      (define c (literal-cost lit))\n      (if (> c best-cost)\n          (values idx c)\n          (values best-idx best-cost))))\n\n  (zip-loop ([(left lit right) cl]\n             [resolvents '()]\n             [lit-idx 0]\n             #:result (or resolvents '()))\n    (cond\n      [(or (not selected-idx)\n           (= lit-idx selected-idx))\n\n       (define-add-Clause! C new-Clauses add-Clause! rewriter)\n\n       ; Find resolvents\n       (find-unifiers utree\n                      (lnot lit)\n                      (λ (lf subst nlit lit2 rcl2)\n                        (add-Clause! (rev-append left (rev-append right rcl2))\n                                     subst\n                                     'res\n                                     (list (utree-leaf-Clause lf)))))\n       (values (rev-append new-Clauses resolvents)\n               (+ 1 lit-idx))]\n      [else\n       (values resolvents\n               (+ 1 lit-idx))])))\n\n;; Returns the list of unsafe factors of `C`.\n;; Factors are immediately rewritten with `rewriter`.\n;;\n;; C : Clause?\n;; rewriter : Clause? -> Clause?\n;; -> (listof Clause?)\n(define (unsafe-factors C #:? [rewriter (λ (C) C)])\n  (define-add-Clause! C factors add-Clause! rewriter)\n  (define cl (Clause-clause C))\n\n  (zip-loop ([(left lit1 right) cl])\n    (define pax (predicate.arity lit1))\n    (zip-loop ([(left2 lit2 right2) right]\n               ; Literals are sorted, so no need to go further.\n               #:break (not (equal? pax (predicate.arity lit2))))\n      (define subst (unify lit1 lit2))\n      ; We could do left-unify instead, but then we need to do both sides,\n      ; at the risk of generating twice as many clauses, so may not be worth it.\n      (when subst\n        (add-Clause! (rev-append left right) ; remove lit1\n                     subst\n                     'fac\n                     '()))))\n  factors)\n\n;; Appends and returns the results of `unsafe-factors` and `utree-resolve/select-literal`.\n;;\n;; utree : unification-tree?\n;; C : Clause?\n;; rewriter : Clause? -> Clause?\n;; literal-cost : literal? -> number?\n;; -> (listof Clause?)\n(define (utree-resolve+unsafe-factors/select utree C #:? rewriter #:? literal-cost)\n  (rev-append\n   (unsafe-factors C #:rewriter rewriter)\n   (utree-resolve/select-literal utree C\n                                 #:rewriter rewriter\n                                 #:literal-cost literal-cost)))\n\n;; Like `utree-resolve+unsafe-factors/select` but without negative literal selection,\n;; and with L-resolvent pruning.\n;; Returns the set of Clauses from resolutions between cl and the clauses in utree,\n;; as well as the factors.\n;; Clauses are immediately rewritten with `rewriter`.\n;;\n;; utree : unification-tree?\n;; C : Clause?\n;; rewriter : Clause? -> Clause?\n;; L-resolvent-pruning? : boolean?\n;; -> (listof Clause?)\n(define (utree-resolve+unsafe-factors utree C\n                                      #:? [rewriter (λ (C) C)]\n                                      #:! L-resolvent-pruning?)\n  ;; Used to prevent pruning by L-resolvent-discard.\n  ;; This is used to mark the second literals in unsafe factors.\n  (define lit-marks (make-vector (Clause-n-literals C) #false))\n  (define (mark-literal! idx) (vector-set! lit-marks idx #true))\n  (define (literal-marked? idx) (vector-ref lit-marks idx))\n\n\n  (zip-loop ([(left lit right) (Clause-clause C)]\n             [resolvents+factors '()]\n             [lit-idx 0]\n             #:break (not resolvents+factors) ; shortcut\n             #:result (or resolvents+factors '()))\n\n    (define-add-Clause! C new-Clauses add-Clause! rewriter)\n\n    ;; Resolutions\n    (find-unifiers utree\n                   (lnot lit)\n                   (λ (lf subst nlit lit2 rcl2)\n                     (add-Clause! (rev-append left (rev-append right rcl2))\n                                  subst\n                                  'res\n                                  (list (utree-leaf-Clause lf)))))\n    ;; Unsafe binary factors\n    ;; Somewhat efficient implementation since the literals are sorted by predicate.arity.\n    (define pax (predicate.arity lit))\n    (zip-loop ([(left2 lit2 right2) right]\n               [lit2-idx (+ 1 lit-idx)]\n               #:break (not (equal? pax (predicate.arity lit2))))\n      (define subst (unify lit lit2))\n      (when subst\n        (mark-literal! lit2-idx) ; prevents pruning\n        (add-Clause! (rev-append left right) ; remove lit\n                     subst\n                     'fac\n                     '()))\n      (+ 1 lit2-idx))\n\n    ;; L-resolvent 'pruning'\n    ;; See the principle of implication modulo resolution:\n    ;;   \"A unifying principle for clause elimination in first-order logic\", CADE 26.\n    ;;   which contains other techniques and short proofs of their soundness.\n    ;; We return the empty set of resolution, meaning that the selected clause\n    ;; can (must) be discarded, i.e., not added to the active set.\n    (cond [(and L-resolvent-pruning?\n                (empty? new-Clauses)\n                (not (literal-marked? lit-idx)))\n           (++n-L-resolvent-pruning)\n           (values #false (+ 1 lit-idx))]\n          [else\n           (values (rev-append new-Clauses resolvents+factors)\n                   (+ 1 lit-idx))])))\n\n;; Returns the first (in any order) Clause C2 such that\n;; there is a literal of C2 that imperfectly matches a literal of C,\n;; and (pred C C2).\n;;\n;; utree : unification-tree?\n;; C2 : Clause?\n;; pred : Clause? Clause? -> boolean?\n(define (utree-find/any utree C2 pred)\n  (define tested (make-hasheq)) ; don't test the same C2 twice\n  (define cl2 (Clause-clause C2))\n  (let/ec return\n    (for ([lit (in-list cl2)])\n      (trie-find utree lit\n                 (λ (nd)\n                   (define val (trie-node-value nd))\n                   (when (list? val)\n                     (for ([lf (in-list val)])\n                       (define C (utree-leaf-Clause lf))\n                       (hash-ref! tested\n                                  C\n                                  (λ ()\n                                    (when (pred C C2)\n                                      (return C))\n                                    #true)))))))\n    #false))\n\n;; Return all Clauses C that left-subunify on at least one literal and for which (pred C C2).\n;;\n;; utree : unification-tree?\n;; C2 : Clause?\n;; pred : Clause? Clause? -> boolean?\n(define (utree-find/all utree C2 pred)\n  (define tested (make-hasheq)) ; don't test the same C2 twice\n  (define cl2 (Clause-clause C2))\n  (define res '())\n  (for ([lit (in-list cl2)])\n    (trie-find utree lit\n               (λ (nd)\n                 (define val (trie-node-value nd))\n                 (when (list? val)\n                   (for ([lf (in-list val)])\n                     (define C (utree-leaf-Clause lf))\n                     (hash-ref! tested\n                                C\n                                (λ ()\n                                  (when (pred C C2)\n                                    (set! res (cons C res)))\n                                  #true)))))))\n  res)\n\n;; Removes the Clause C from the utree.\n;;\n;; utree : unification-tree?\n;; C : Clause?\n(define (utree-remove-Clause! utree C)\n  (define cl (Clause-clause C))\n  (for ([lit (in-list cl)])\n    (trie-find utree lit\n               (λ (nd)\n                 (define val (trie-node-value nd))\n                 (when (list? val)\n                   (set-trie-node-value! nd\n                     (filter-not (λ (lf2) (eq? C (utree-leaf-Clause lf2)))\n                                 val)))))))\n\n;; Finds the leaves for which C loosely left-unifies on some literal and remove those which clause C2\n;; where (pred C C2).\n;; Returns the set of Clauses that have been removed.\n;;\n;; utree : unification-tree?\n;; C2 : Clause?\n;; pred: Clause? Clause? -> boolean\n(define (utree-inverse-find/remove! utree C pred)\n  ; Since the same Clause may match multiple times,\n  ; We use a hash to remember which clauses have already been tested (and if the result\n  ; was #true or #false).\n  ; Then remove all the leaves of each clause to remove.\n  (define tested (make-hasheq))\n  (define Clauses-to-remove '())\n  (define cl (Clause-clause C))\n  (for ([lit (in-list cl)])\n    (trie-inverse-find utree lit\n                       (λ (nd)\n                         (define val (trie-node-value nd))\n                         (when (list? val)\n                           (for ([lf (in-list (trie-node-value nd))])\n                             (define C2 (utree-leaf-Clause lf))\n                             (hash-ref! tested\n                                        C2\n                                        (λ ()\n                                          (cond [(pred C C2)\n                                                 (cons! C2 Clauses-to-remove)\n                                                 #true]\n                                                [else #false]))))))))\n  (for ([C2 (in-list Clauses-to-remove)])\n    (utree-remove-Clause! utree C2))\n  Clauses-to-remove)\n"
  },
  {
    "path": "satore/unification.rkt",
    "content": "#lang racket/base\n\n;***************************************************************************************;\n;****                Operations On Literals: Unification And Friends                ****;\n;***************************************************************************************;\n\n;;; * A literal A unifies with a literal B iff there exists a substitution σ s.t. Aσ = Bσ.\n;;; * A literal A left-unifies (= matches) with a literal B iff there exists a substitution\n;;;   σ s.t. Aσ = B.\n;;;   Note that left-unifies => unifies.\n\n(require bazaar/cond-else\n         bazaar/list\n         bazaar/mutation\n         (except-in bazaar/order atom<=>)\n         define2\n         global\n         racket/dict\n         racket/list\n         racket/match\n         (submod racket/performance-hint begin-encourage-inline))\n\n(provide (all-defined-out))\n\n;===============;\n;=== Globals ===;\n;===============;\n\n(define-global:category *atom-order* 'atom1\n  '(atom1 KBO1lex)\n  \"Atom comparison function for rewrite rules.\")\n\n(define (get-atom<=> #:? [atom-order (*atom-order*)])\n  (case atom-order\n    [(KBO1lex) KBO1lex<=>]\n    [(atom1)     atom1<=>]\n    [else (error \"Unknown atom order: ~a\" (*atom-order*))]))\n\n;=================;\n;=== Variables ===;\n;=================;\n\n;; The name of a variable is a number.\n(struct Var (name)\n  #:prefab)\n\n;; Comparisons between variables\n(begin-encourage-inline\n  (define Var-name<?  <)\n  (define Var-name=?  eqv?)\n  (define Var-name<=> number<=>)\n\n  (define (Var=? v1 v2) (Var-name=? (Var-name v1) (Var-name v2)))\n  (define (Var<? v1 v2) (Var-name<? (Var-name v1) (Var-name v2))))\n(define (Var<=> v1 v2) (Var-name<=> (Var-name v1) (Var-name v2)))\n; Ensures: (order=? (Var<=> v1 v2)) = (Vars=? v1 v2)\n\n;:::::::::::::::::::::::::::::::::::;\n;:: Basic operations on Variables ::;\n;:::::::::::::::::::::::::::::::::::;\n\n;; All symbols starting with a capitale letter are considered as variables.\n;;\n;; any/c -> boolean?\n(define (symbol-variable? t)\n  (and (symbol? t)\n       (char<=? #\\A (string-ref (symbol->string t) 0) #\\Z)))\n\n;; Returns a variable 'name' corresponding to the given symbol.\n;; Currently accepts only symbols like X1, X2, … and A, B, C, …\n;; The same symbol is always mapped to the same Var-name, globally.\n;;\n;; symbol? -> exact-nonnegative-integer?\n(define (symbol->Var-name s)\n  (define str (symbol->string s))\n  (cond [(regexp-match #px\"^X(\\\\d+)$\" str)\n         => (λ (m) (+ 26 (string->number (second m))))]\n        [(regexp-match #px\"^[A-Z]$\" str)\n         => (λ (m) (- (char->integer (string-ref str 0))\n                      (char->integer #\\A)))]\n        [else\n         (error 'Varify \"Unknown variable format: ~a\" s)]))\n\n;; Inverse operation of symbol->Var-name.\n;; The same Var-name is always mapped to the same symbol, globally.\n;;\n;; exact-nonnegative-integer? -> symbol?\n(define (Var-name->symbol n)\n  (cond [(symbol-variable? n) n]\n        [(number? n)\n         (if (< n 26)\n             (string->symbol (string (integer->char (+ (char->integer #\\A) n))))\n             (string->symbol (format \"X~a\" (- n 26))))]\n        [else (error 'Var-name->symbol \"Don't know what to do with ~a\" n)]))\n\n;; Returns a new atom like t where all symbol-variables have been turned into `Var?`s.\n;; Notice: Does *not* ensure unicity of the variables across clauses.\n;;\n;; tree? -> atom?\n(define (Varify t)\n  (cond [(pair? t)\n         ; Works also in assocs\n         (cons (Varify (car t))\n               (Varify (cdr t)))]\n        [(symbol-variable? t)\n         (Var (symbol->Var-name t))]\n        [else t]))\n\n;====================================;\n;=== Substitutions data structure ===;\n;====================================;\n\n;; Basic substitution operations.\n;; Simply put, a substitution is a `hasheqv`, where the keys are variables names,\n;; and the values are terms.\n(begin-encourage-inline\n  (define make-subst       make-hasheqv)\n  (define subst?           hash?)\n  (define in-subst         in-hash)\n  (define subst-count      hash-count)\n  (define subst-ref/name   hash-ref) ; for when the name is retrieved from the subst\n  (define subst-set!/name  hash-set!)\n  (define subst-copy       hash-copy)\n\n  ;; Modifies the substitution to bind `t` to `var`.\n  ;; Returns the substitution to mimick the immutable update behaviour.\n  ;;\n  ;; subst? Var? term? -> subst?\n  (define (subst-set! subst V t)\n    (hash-set! subst (Var-name V) t)\n    subst)\n\n  ;; Returns the binding for the variable `V` in `subst`, or `default` if it doesn't exist.\n  ;;\n  ;; susbt? Var? term? -> term?\n  (define (subst-ref subst V [default #false])\n    (hash-ref subst (Var-name V) default))\n\n  ;; Returns the binding for the variable `V` in `susbt` if it exists,\n  ;; otherwise sets it to `default` and returns `default`.\n  ;;\n  ;; subst? Var? term? -> term?\n  (define (subst-ref! subst V default)\n    (hash-ref! subst (Var-name V) default))\n\n  ;; Updates the binding for the variable `V` with `update`\n  ;; Returns the modified substitution\n  ;;\n  ;; subst : subst?\n  ;; V : Var?\n  ;; update : term? -> term?\n  ;; default : term\n  (define (subst-update! subst V update default)\n    (hash-update! subst (Var-name V) update default)\n    subst)\n\n  ;; Returns the substitution as an association list sorted by `Var-name<?`.\n  ;;\n  ;; subst -> list?\n  (define (subst->list s)\n    (sort (hash->list s) Var-name<? #:key car)))\n\n;::::::::::::::::::::::::::::;\n;:: Immutable substitution ::;\n;::::::::::::::::::::::::::::;\n\n;;; Like mutable substitions above, but uses an immutable association list.\n;;; This can be faster in some contexts\n\n(begin-encourage-inline\n  ;; Returns a new immutable substitution.\n  ;;\n  ;; list? -> list?\n  (define (make-imsubst [pairs '()]) pairs)\n\n  ;; Like subst-ref for immutable substitutions.\n  ;;\n  ;; imsubst? Var? term? -> term?\n  (define (imsubst-ref subst V default)\n    (define p (assoc (Var-name V) subst Var-name=?))\n    (if p (cdr p) default)))\n\n;; like subst-set!, but does not modify the substitution and returns a new substitution.\n;;\n;; subst : imsubst?\n;; V : var?\n;; t : term?\n(define (imsubst-set subst V t)\n  (define name (Var-name V))\n  (let loop ([s subst] [left '()])\n    (cond/else\n     [(empty? s)\n      (cons (cons name t) subst)]\n     #:else\n     (define p (car s))\n     #:cond\n     [(Var-name=? (car p) name)\n      (rev-append left (cons (cons name t) (cdr s)))]\n     #:else\n     (loop (cdr s) (cons p left)))))\n\n;===============================;\n;=== Operations on Variables ===;\n;===============================;\n\n;; Global index to ensure unicity of variable names.\n(define fresh-idx 0)\n\n;; Returns a fresh variable with a unique name.\n;;\n;; -> Var?\n(define (new-Var)\n  (++ fresh-idx)\n  (Var fresh-idx))\n\n;; Renames all variables with fresh names to avoid collisions.\n;;\n;; term? -> term?\n(define (fresh t)\n  (define h (make-subst))\n  (let loop ([t t])\n    (cond [(pair? t)\n           (cons (loop (car t)) (loop (cdr t)))]\n          [(Var? t)\n           (subst-ref! h t new-Var)]\n          [else t])))\n\n;; Variables names are mapped to a unique symbol, but the resulting Var-name is unpredictable,\n;; and this mapping is guaranteed to be consistent only locally to the term t.\n;; Used mostly to turn human-readable expressions into terms, without needing to worry about\n;; the actual names of the variables.\n;;\n;; tree? -> term?\n(define (symbol-variables->Vars t)\n  (define h (make-hasheq))\n  (let loop ([t t])\n    (cond [(pair? t)\n           (cons (loop (car t)) (loop (cdr t)))]\n          [(symbol-variable? t)\n           (hash-ref! h t new-Var)]\n          [else t])))\n\n;; Variables are replaced with symbols by order of appearence. Mostly for ease of reading by humans.\n;;\n;; term? -> tree?\n(define (Vars->symbols t)\n  (define h (make-subst))\n  (define idx -1)\n  (let loop ([t t])\n    (cond [(pair? t)\n           (cons (loop (car t)) (loop (cdr t)))]\n          [(Var? t)\n           (subst-ref! h t (λ () (++ idx) (Var-name->symbol idx)))]\n          [else t])))\n\n;; Returns a subst of the number of occurrences of the variables *names* in the term `t`.\n;;\n;; term? -> subst?\n(define (var-occs t)\n  (define h (make-subst))\n  (let loop ([t t])\n    (cond [(pair? t)\n           (loop (car t))\n           (loop (cdr t))]\n          [(Var? t)\n           (subst-update! h t add1 0)]))\n  h)\n\n;; Returns the variable names of the term `t`.\n;;\n;; term? -> list?\n(define (vars t)\n  (map car (subst->list (var-occs t))))\n\n;; Returns the variables of the term `t`.\n;;\n;; term? -> (listof Var?)\n(define (Vars t)\n  (map Var (vars t)))\n\n;; Returns the set of variables *names* that appear in `t1` but not in `t2`.\n;;\n;; term? term? -> list?\n(define (variables-minus t1 t2)\n  (define h2 (var-occs t2))\n  (for/list ([(v n) (in-hash (var-occs t1))]\n             #:unless (hash-has-key? h2 v))\n    v))\n\n;; Returns the lexicographical index of each occurrence of the variable names of `t`,\n;; in depth-first order.\n;;\n;; term? -> list?\n(define (find-var-names t)\n  (define h (make-subst))\n  (let loop ([t t] [idx 0])\n    (cond [(pair? t)\n           (loop (cdr t) (loop (car t) idx))]\n          [(Var? t)\n           (subst-update! h t min idx)\n           (+ idx 1)]\n          [else idx]))\n  (map car (sort (subst->list h) < #:key cdr)))\n\n;; Returns '< if each variable of t1 appears no more times in t1\n;; than the same variable in t2,\n;; and at least one variable appears strictly fewer times.\n;; Returns '= if the occurrences are equal.\n;; Returns #false otherwise.\n;; This can be seen as a kind of Pareto dominance.\n;; This is used for KBO in particular.\n;; Note: (var-occs<=> t1 t2) == (var-occs<=> t2 t1)\n;; Note: t1 and t2 may have variables in common if they are two subterms of the same clause.\n;;\n;; term? term? -> (or/c '< '> '= #false)\n(define (var-occs<=> t1 t2)\n  (define h1 (var-occs t1)) ; assumes does not contain 0s\n  (define h2 (var-occs t2)) ; assumes does not contain 0s\n  (define n-common 0)\n  (define cmp\n    (for/fold ([cmp '=])\n              ([(v1 n1) (in-subst h1)])\n      (define n2 (subst-ref/name h2 v1 0))\n      (cond\n        [(> n2 0)\n         (++ n-common)\n         (define c (number<=> n1 n2))\n         (cond [(eq? cmp '=) c]\n               [(eq? c   '=) cmp]\n               [(eq? cmp c)  c]\n               [else #false])] ; incomparable\n        [else cmp])))\n\n  (define n1 (subst-count h1))\n  (define n2 (subst-count h2))\n  (cond [(and (< n-common n1)\n              (< n-common n2))\n         #false]\n        [(< n-common n2)\n         (case cmp [(< =) '<] [else #false])]\n        [(< n-common n1)\n         (case cmp [(> =) '>] [else #false])]\n        [else cmp]))\n\n;=====================;\n;=== Boolean logic ===;\n;=====================;\n\n(begin-encourage-inline\n  ;; Logical false\n  (define lfalse '$false)\n  ;; any/c -> boolean\n  (define (lfalse? x) (eq? lfalse x))\n\n  ;; lfalse must be the bottom element for the various atom orders.\n  ;;\n  ;; any/c any/c -> (or/c '< '> '= #false)\n  (define (lfalse<=> a b)\n    (define afalse? (lfalse? a))\n    (define bfalse? (lfalse? b))\n    (cond [(and afalse? bfalse?) '=]\n          [afalse? '<]\n          [bfalse? '>]\n          [else #false]))\n\n  (define ltrue '$true)\n  ;; any/c -> boolean?\n  (define (ltrue? x) (eq? x ltrue))\n\n  ;; Returns whether the literal `lit` has negative polarity.\n  ;;\n  ;; literal? -> boolean?\n  (define (lnot? lit)\n    (and (pair? lit)\n         (eq? 'not (car lit))))\n\n  ;; Inverses the polarity of the literal.\n  ;; NOTICE: Always use `lnot`, do not construct negated atoms yourself.\n  ;;\n  ;; literal? -> literal?\n  (define (lnot x)\n    (cond [(lnot? x) (cadr x)]\n          [(lfalse? x) ltrue]\n          [(ltrue? x) lfalse]\n          [else (list 'not x)]))\n\n  ;; Compares the polarities of the two literals.\n  ;; (polarity<=> 'a '(not a)) returns '<\n  ;;\n  ;; literal? literal? -> (or/c '< '> '= #false)\n  (define (polarity<=> lit1 lit2)\n    (boolean<=> (lnot? lit1) (lnot? lit2))))\n\n;=================================;\n;=== Literals, atoms, terms, … ===;\n;=================================;\n\n#|\nliteral   = atom | (not atom)\natom      = constant | (predicate term ...)\nterm      = (funtion term ...) | variable | constant\npredicate = symbol?\nfunction  = symbol?\nconstant  = symbol?\nvariable  = (Var number?)\n\nFor simplicity, we sometimes use 'term' to mean 'atom or term', or even\n'literal, atom or term'.\n|#\n\n;; Returns the number of nodes in the tree representing the term `t` (or literal, atom).\n;;\n;; term? -> exact-nonnegative-integer?\n(define (tree-size t)\n  (let loop ([t t] [s 0])\n    (cond [(Var? t) (+ s 1)]\n          [(pair? t)\n           (loop (cdr t) (loop (car t) s))]\n          [else (+ s 1)])))\n\n;; The literals are depolarized first, because negation should not count.\n;;\n;; literal? -> exact-nonnegative-integer?\n(define (literal-size lit)\n  (tree-size (depolarize lit)))\n\n;; In particular, it should be as easy to prove A | B as ~A | ~B, otherwise finding equivalences\n;; can be more difficult.\n;;\n;; clause? -> exact-nonnegative-integer?\n(define (clause-size cl)\n  (for/sum ([lit (in-list cl)])\n    (literal-size lit)))\n\n;; Comparison of atoms (or literals) for atom rewriting.\n;; Returns < if for every substitution α, (atom1<=> t1α t2α) returns <.\n;; (Can this be calculated given a base atom1<=> ?)\n;; - Rk: variables of t2 that don't appear in t1 are not a problem since they are not instanciated\n;;   in t2α.\n;; - Equality is loose and is based only on *some* properties of the atoms.\n;; - This is a good first comparator, but not good enough (e.g., does not associativity)\n;; Notice: (order=? (atom<=> t1 t2)) does NOT necessarily mean that t1 and t2 are syntactically equal.\n;;\n;; literal? literal? -> (or/c '< '> '= #false)\n(define (atom1<=> lit1 lit2)\n  (let ([t1 (depolarize lit1)]\n        [t2 (depolarize lit2)])\n    (cond/else\n     [(lfalse<=> t1 t2)] ; continue if neither is lfalse\n     #:else\n     (define size (number<=> (tree-size t1) (tree-size t2)))\n     (define vs (var-occs<=> t1 t2))\n     #:cond\n     [(and (order=? vs) (order=? size)) (or (term-lex2<=> t1 t2) '=)] ; for commutativity\n     [(and (order≤? vs) (order≤? size)) '<] ; one is necessarily '<\n     [(and (order≥? vs) (order≥? size)) '>]\n     #:else #false)))\n\n;; For KBO.\n;; fun-weight is also for constants, hence it's more like symbol-weight\n;; (but the name 'function' is commonly used for constants too).\n;;\n;; t : term?\n;; var-weight : number?\n;; fun-weight : symbol? -> number?\n;; -> number?\n(define (term-weight t #:? [var-weight 1] #:? [fun-weight (λ (f) 1)])\n  (let loop ([t t])\n    (cond [(Var? t) var-weight]\n          [(symbol? t) (fun-weight t)]\n          [(list? t) (for/sum ([s (in-list t)]) (loop s))]\n          [else (error \"Unknown term ~a\" t)])))\n\n;; Knuth-Bendix Ordering, naive version.\n;; Can be used for atom rewriting.\n;; To do: Implement a faster version.\n;; See \"Things to know when implementing KB\", Löchner, 2006.\n;; var-weight MUST be ≤ to all fun-weights of constants.\n;; Simple version for clarity and proximity to the specifications.\n;;\n;; var-weight : number?\n;; fun-weight : symbol? -> number?\n;; fun<=> : symbol? symbol? -> (or/c '< '> '= #false)\n;; -> (term? term? -> (or/c '< '> '= #false))\n(define (make-KBO<=> #:? var-weight #:? fun-weight #:? [fun<=> symbol<=>])\n  (define (weight t)\n    (term-weight t #:var-weight var-weight #:fun-weight fun-weight))\n\n  (define (KBO<=> t1 t2)\n    (cond\n      [(and (Var? t1) (Var? t2)) (and (Var=? t1 t2) '=)] ; not specified, but surely right?\n      [(Var? t1) (and (occurs? t1 t2) '<)]\n      [(Var? t2) (and (occurs? t2 t1) '>)]\n      [else ; both are fun apps or constants\n       (define v (var-occs<=> t1 t2))\n       (and v\n            (let ([t-cmp (sub-KBO<=> (if (list? t1) t1 (list t1)) ; turn constants into fun apps.\n                                     (if (list? t2) t2 (list t2)))])\n              (case v\n                [(<) (and (order<=? t-cmp) t-cmp)]\n                [(>) (and (order>=? t-cmp) t-cmp)]\n                [(=) t-cmp])))]))\n\n  ;; t1 and t2 MUST be lists.\n  (define (sub-KBO<=> t1 t2)\n    (chain-comparisons\n     (number<=> (weight t1) (weight t2))\n     (fun<=>     (first t1)  (first t2))\n     ;; Chain on subterms.\n     (<=>map KBO<=> (rest t1) (rest t2))))\n\n  (λ (t1 t2)\n    (let ([t1 (depolarize t1)]\n          [t2 (depolarize t2)])\n      (or (lfalse<=> t1 t2)\n          (KBO<=> t1 t2)))))\n\n;; Default KBO comparator.\n;;\n;; term? term? -> (or/c '< '> '= #false)\n(define KBO1lex<=> (make-KBO<=>))\n\n;; Returns the atom of the literal.\n;;\n;; literal? -> atom?\n(define (depolarize lit)\n  (match lit\n    [`(not ,x) x]\n    [else lit]))\n\n;; Returns the number of arguments of the predicate of the literal lit, after depolarizing it.\n;;\n;; literal? -> exact-nonnegative-integer?\n(define (literal-arity lit)\n  (let ([lit (depolarize lit)])\n    (if (list? lit)\n        (length lit)\n        0)))\n\n;; Returns the name of the predicate (or constant) of the literal.\n;;\n;; literal? -> symbol?\n(define (literal-symbol lit)\n  (match lit\n    [`(not (,p . ,r)) p]\n    [`(not ,a) a]\n    [`(,p . ,r) p]\n    [else lit]))\n\n;; Lexicographical comparison.\n;; Used in literal<=> to sort literals within a clause. NOT used for rewriting.\n;; Guarantees: (order=? (term-lex<=> t1 t2)) = (term==? t1 t2) (but maybe a slightly slower?)\n;;\n;; term? term? -> (or/c '< '> '= #false)\n(define (term-lex<=> t1 t2)\n  (cond [(eq? t1 t2) '=] ; takes care of '()\n        [(and (pair? t1) (pair? t2))\n         (chain-comparisons (term-lex<=> (car t1) (car t2))\n                            (term-lex<=> (cdr t1) (cdr t2)))]\n        [(pair? t1) '>]\n        [(pair? t2) '<]\n        [(and (Var? t1) (Var? t2))\n         (Var<=> t1 t2)]\n        [(Var? t1) '<]\n        [(Var? t2) '>]\n        [(and (symbol? t1) (symbol? t2))\n         (symbol<=> t1 t2)]\n        [else\n         (error 'term-lex<=> \"Unknown term kind for: ~a, ~a\" t1 t2)]))\n\n;; Comparator for terms used in atom1<=> for atom rewriting.\n;; Can't compare vars with symbols, or vars with vars. Can only compare ground symbols:\n;; A binary rule can't be oriented with variables\n;;\n;; term? term? -> (or/c '< '> '= #false)\n(define (term-lex2<=> t1 t2)\n  (cond [(eq? t1 t2) '=] ; takes care of '()\n        [(and (Var? t1) (Var? t2) (Var=? t1 t2)) '=]\n        [(or  (Var? t1) (Var? t2)) #false] ; incomparable, cannot be oriented\n        [(and (pair? t1) (pair? t2))\n         (chain-comparisons (term-lex2<=> (car t1) (car t2))\n                            (term-lex2<=> (cdr t1) (cdr t2)))]\n        [(pair? t1) '>]\n        [(pair? t2) '<]\n        [(and (symbol? t1) (symbol? t2))\n         (symbol<=> t1 t2)]\n        [else\n         (error 'term-lex2<=> \"Unknown term kind for: ~a, ~a\" t1 t2)]))\n\n;; Depth-first lexicographical order (df-lex)\n;; Used for literal ordering in clauses. Not used for atom rewriting.\n;; Guarantees: (order=? (literal<=> lit1 lit2)) = (literal==? lit1 lit2). (or it's a bug)\n;;\n;; literal? literal? -> (or/c '< '> '= #false)\n(define (literal<=> lit1 lit2)\n  (chain-comparisons\n   (polarity<=> lit1 lit2)\n   (symbol<=> (literal-symbol lit1) (literal-symbol lit2)) ; A literal cannot be a variable\n   (cond [(and (list? lit1) (list? lit2))\n          ; this also checks arity\n          (<=>map term-lex<=> (rest lit1) (rest lit2))]\n         [(list? lit2) '<]\n         [(list? lit1) '>]\n         [else '=])))\n\n;; Used to sort literals in a clause.\n;;\n;; literal? literal? -> boolean?\n(define (literal<? lit1 lit2)\n  (order<? (literal<=> lit1 lit2)))\n\n;; Syntactic comparison of terms and literals.\n;; This works because variables are transparent (prefab), hence equal? traverses the Var struct too.\n;; We use `==` to denote syntactic equivalence.\n;;\n;; term? term? -> boolean?\n(define term==? equal?)\n;; literal? literal? -> boolean?\n(define literal==? equal?)\n\n;==================================;\n;=== Substitution / Unification ===;\n;==================================;\n\n;; Notice: Setting this to #true forces the mgu substitutions to ensure\n;; dom(σ)\\cap vran(σ) = ø\n;; but can be exponentially slow in some rare cases.\n;; Also, it's not necessary.\n(define reduce-mgu? #false)\n\n;; Returns a term where the substitution s is applied to the term t.\n;; The substitution `s` may not be 'reduced' in the sense that variables\n;; of the domain may appear in the range.\n;;\n;; term? subst? -> term?\n(define (substitute/slow t s)\n  (define t-orig t)\n  (let loop ([t t])\n    (cond\n      [(null? t) t]\n      [(pair? t)\n       (cons (loop (car t))\n             (loop (cdr t)))]\n      [(and (Var? t)\n            (subst-ref s t #false))\n       ; Recur into the substitution.\n       => loop]\n      [else t])))\n\n;; A simple box to signify that there is no need to attempt to substitute\n;; inside `term` as this has already been done.\n(struct already-substed (term) #:prefab)\n\n;; Like `substitute/slow` but avoids unnecessary work.\n;; Such substitutions are performed 'on-demand', if needed.\n;; Once a substitution has been applied recursively to a rhs, the resulting\n;; term is marked with `already-substed` to avoid attempting it again.\n;;\n;; Notice: This function can only be used if `s` is *not* going to be extended,\n;; otherwise it may not produce the correct result.\n;;\n;; term? subst? -> term?\n(define (substitute t s)\n  (define t-orig t)\n  (let loop ([t t])\n    (cond\n      [(null? t) t]\n      [(pair? t)\n       (cons (loop (car t))\n             (loop (cdr t)))]\n      [(and (Var? t)\n            (subst-ref s t #false))\n       ; Recur into the substitution.\n       ; This avoids recurring many times inside the same substitution.\n       =>\n       (λ (rhs)\n         (cond [(already-substed? rhs)\n                ; No need to loop inside the new term.\n                (already-substed-term rhs)]\n               [else\n                (define new-rhs (loop rhs))\n                (subst-set! s t (already-substed new-rhs))\n                new-rhs]))]\n      [else t])))\n\n;; Checks whether the variable `V` occurs un `t`.\n;;\n;; Var? term? -> boolean?\n(define (occurs? V t)\n  (cond [(Var? t) (Var=? V t)]\n        [(pair? t)\n         (or (occurs? V (car t))\n             (occurs? V (cdr t)))]\n        [else #false]))\n\n;; Returns #false if `V` occurs in `t2`, otherwise binds `t2` to `V` in `subst` and returns `subst`.\n;;\n;; Var? term? subst? -> (or/c #false subst?)\n(define (occurs?/extend V t2 subst)\n  (define t2c (substitute/slow t2 subst))\n  (if (occurs? V t2c)\n    #false\n    (begin\n      (subst-set! subst V t2c)\n      subst)))\n\n;; Returns one most general unifier α such that t1α = t2α.\n;;\n;; term? term? subst? -> subst?\n(define (unify t1 t2 [subst (make-subst)])\n  (define success?\n    (let loop ([t1 t1] [t2 t2])\n      (cond/else\n       [(eq? t1 t2) ; takes care of both null?\n        subst]\n       [(and (pair? t1) (pair? t2))\n        (and (loop (car t1) (car t2))\n             (loop (cdr t1) (cdr t2)))]\n       #:else\n       (define v1? (Var? t1))\n       (define v2? (Var? t2))\n       #:cond\n       [(and (not v1?) (not v2?)) ; since they are not `eq?`\n        #false]\n       [(and v1? v2? (Var=? t1 t2)) ; since at least one is a Var\n        ; Same variable, no need to substitute, and should not fail occurs?/extend.\n        subst]\n       #:else\n       (define t1b (and v1? (subst-ref subst t1 #false)))\n       (define t2b (and v2? (subst-ref subst t2 #false)))\n       #:cond\n       [(or t1b t2b)\n        ; rec\n        (loop (or t1b t1) (or t2b t2))]\n       [v1? ; t2 may also be a variable\n        (occurs?/extend t1 t2 subst)]\n       [v2? ; v2? but not v1?\n        (occurs?/extend t2 t1 subst)]\n       #:else (void))))\n  ; Make sure we return a most general unifier\n  ; NOTICE: This can take a lot of time (see strest tests), but may prevent issues too.\n  (and success?\n       (if reduce-mgu?\n           (let ([s2 (make-subst)])\n             (for ([(k v) (in-subst subst)])\n               (subst-set!/name s2 k (substitute v subst)))\n             s2)\n           subst)))\n\n;; Creates a procedure that returns the substitution α such that t1α = t2, of #false if none exists.\n;; t2 is assumed to not contain any variable of t1.\n;; Also known as matching\n;; - The optional argument is useful to chain left-unify over several literals, say.\n;; - Works with both mutable and immutable substitutions.\n;; NOTICE:\n;; The found substitution must be specializing, that is C2σ = C2 (and C1σ = C2),\n;; otherwise safe factoring can fail, in particular.\n;; Hence we must ensure that vars(C2) ∩ dom(σ) = ø.\n(define-syntax-rule\n  (define-left-subst+unify left-substitute left-unify make-subst subst-ref subst-set)\n  (begin\n    ;; Returns a term like `t` where the substitution `s` has been applied.\n    ;;\n    ;; term? subst? -> term?\n    (define (left-substitute t s)\n      (let loop ([t t])\n        (cond\n          [(null? t) t]\n          [(pair? t)\n           (cons (loop (car t))\n                 (loop (cdr t)))]\n          [(and (Var? t)\n                (subst-ref s t #false))]\n          [else t])))\n\n    ;; Returns a substitution α such that t1α = t2, if it exists, #false otherwise.\n    ;;\n    ;; term? term? subst? -> (or/c #false subst?)\n    (define (left-unify t1 t2 [subst (make-subst)])\n      (cond/else\n       [(eq? t1 t2) ; takes care of both null?\n        subst]\n       [(and (pair? t1) (pair? t2))\n        (define new-subst (left-unify (car t1) (car t2) subst))\n        (and new-subst\n             (left-unify (cdr t1) (cdr t2) new-subst))]\n       [(term==? t1 t2) subst] ; To do: This is costly\n       [(not (Var? t1)) #false]\n       #:else\n       (define t1b (subst-ref subst t1 #false))\n       #:cond\n       [t1b (and (term==? t1b t2) subst)]\n       ; This ensures that vars(C2) ∩ dom(σ) = ø:\n       ; if var, t1 must not occur in rhs of subst\n       ; and any lhs of subst and t1 must not occur in t2\n       [(or (occurs? t1 t2)\n            (for/or ([(var-name val) (in-dict subst)])\n              (or (occurs? t1 val)\n                  (occurs? (Var var-name) t2))))\n        #false]\n       #:else\n       (subst-set subst t1 t2)))))\n\n;; Mutable substitutions\n(define-left-subst+unify left-substitute left-unify make-subst subst-ref subst-set!)\n;; Immutable substitutions\n(define-left-subst+unify left-substitute/assoc left-unify/assoc make-imsubst imsubst-ref imsubst-set)\n\n;; Returns #true if `pat` left-unifies with any subterm of `t`.\n;;\n;; term? term? -> (or/c #false term?)\n(define (left-unify-anywhere pat t)\n  (let loop ([t t])\n    (cond [(left-unify pat t)]\n          [(list? t) (ormap loop t)]\n          [else #false])))\n\n;; Returns #true if `(filt tt)` is true for any subterm `tt` of `t`.\n;;\n;; (term? -> boolean?) term? -> boolean?\n(define (match-anywhere filt t)\n  (let loop ([t t])\n    (cond [(filt t)]\n          [(list? t) (ormap loop (rest t))]\n          [else #false])))\n"
  },
  {
    "path": "scratchgan/README.md",
    "content": "# ScratchGAN\n\nThis is the example code for the following NeurIPS 2019 paper. If you use the\ncode here please cite this paper:\n\n    @article{DBLP:journals/corr/abs-1905-09922,\n      author    = {Cyprien de Masson d'Autume and\n                   Mihaela Rosca and\n                   Jack W. Rae and\n                   Shakir Mohamed},\n      title     = {Training language GANs from Scratch},\n      journal   = {CoRR},\n      volume    = {abs/1905.09922},\n      year      = {2019},\n      url       = {http://arxiv.org/abs/1905.09922},\n      archivePrefix = {arXiv},\n      eprint    = {1905.09922},\n      timestamp = {Wed, 29 May 2019 11:27:50 +0200},\n      biburl    = {https://dblp.org/rec/bib/journals/corr/abs-1905-09922},\n      bibsource = {dblp computer science bibliography, https://dblp.org}\n    }\n\n\n## Contents\n\nThe code contains:\n\n  * `generators.py`: implementation of the generator.\n  * `discriminator_nets.py`: implementation of the discriminator.\n  * `eval_metrics.py`: implementation of the FED metric.\n  * `losses.py`: implementation of the RL loss for the generator.\n  * `reader.py`: data reader / tokenizer.\n  * `experiment.py`: main training script.\n\nThe data contains:\n\n  * `{train,valid,test}.json`: the EMNLP2017 News dataset.\n  * `glove_emnlp2017.txt`: the relevant subset of GloVe embeddings.\n\n## Running\n\n    ./scratchgan/run.sh\n"
  },
  {
    "path": "scratchgan/__init__.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n"
  },
  {
    "path": "scratchgan/discriminator_nets.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Discriminator networks for text data.\"\"\"\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\nfrom scratchgan import utils\n\n\nclass LSTMEmbedDiscNet(snt.AbstractModule):\n  \"\"\"An LSTM discriminator that operates on word indexes.\"\"\"\n\n  def __init__(self,\n               feature_sizes,\n               vocab_size,\n               use_layer_norm,\n               trainable_embedding_size,\n               dropout,\n               pad_token,\n               embedding_source=None,\n               vocab_file=None,\n               name='LSTMEmbedDiscNet'):\n    super(LSTMEmbedDiscNet, self).__init__(name=name)\n    self._feature_sizes = feature_sizes\n    self._vocab_size = vocab_size\n    self._use_layer_norm = use_layer_norm\n    self._trainable_embedding_size = trainable_embedding_size\n    self._embedding_source = embedding_source\n    self._vocab_file = vocab_file\n    self._dropout = dropout\n    self._pad_token = pad_token\n    if self._embedding_source:\n      assert vocab_file\n\n  def _build(self, sequence, sequence_length, is_training=True):\n    \"\"\"Connect to the graph.\n\n    Args:\n      sequence: A [batch_size, max_sequence_length] tensor of int. For example\n        the indices of words as sampled by the generator.\n      sequence_length: A [batch_size] tensor of int. Length of the sequence.\n      is_training: Boolean, False to disable dropout.\n\n    Returns:\n      A [batch_size, max_sequence_length, feature_size] tensor of floats. For\n      each sequence in the batch, the features should (hopefully) allow to\n      distinguish if the value at each timestep is real or generated.\n    \"\"\"\n    batch_size, max_sequence_length = sequence.shape.as_list()\n    keep_prob = (1.0 - self._dropout) if is_training else 1.0\n\n    if self._embedding_source:\n      all_embeddings = utils.make_partially_trainable_embeddings(\n          self._vocab_file, self._embedding_source, self._vocab_size,\n          self._trainable_embedding_size)\n    else:\n      all_embeddings = tf.get_variable(\n          'trainable_embedding',\n          shape=[self._vocab_size, self._trainable_embedding_size],\n          trainable=True)\n    _, self._embedding_size = all_embeddings.shape.as_list()\n    input_embeddings = tf.nn.dropout(all_embeddings, keep_prob=keep_prob)\n    embeddings = tf.nn.embedding_lookup(input_embeddings, sequence)\n    embeddings.shape.assert_is_compatible_with(\n        [batch_size, max_sequence_length, self._embedding_size])\n    position_dim = 8\n    embeddings_pos = utils.append_position_signal(embeddings, position_dim)\n    embeddings_pos = tf.reshape(\n        embeddings_pos,\n        [batch_size * max_sequence_length, self._embedding_size + position_dim])\n    lstm_inputs = snt.Linear(self._feature_sizes[0])(embeddings_pos)\n    lstm_inputs = tf.reshape(\n        lstm_inputs, [batch_size, max_sequence_length, self._feature_sizes[0]])\n    lstm_inputs.shape.assert_is_compatible_with(\n        [batch_size, max_sequence_length, self._feature_sizes[0]])\n\n    encoder_cells = []\n    for feature_size in self._feature_sizes:\n      encoder_cells += [\n          snt.LSTM(feature_size, use_layer_norm=self._use_layer_norm)\n      ]\n    encoder_cell = snt.DeepRNN(encoder_cells)\n    initial_state = encoder_cell.initial_state(batch_size)\n\n    hidden_states, _ = tf.nn.dynamic_rnn(\n        cell=encoder_cell,\n        inputs=lstm_inputs,\n        sequence_length=sequence_length,\n        initial_state=initial_state,\n        swap_memory=True)\n\n    hidden_states.shape.assert_is_compatible_with(\n        [batch_size, max_sequence_length,\n         sum(self._feature_sizes)])\n    logits = snt.BatchApply(snt.Linear(1))(hidden_states)\n    logits.shape.assert_is_compatible_with([batch_size, max_sequence_length, 1])\n    logits_flat = tf.reshape(logits, [batch_size, max_sequence_length])\n\n    # Mask past first PAD symbol\n    #\n    # Note that we still rely on tf.nn.bidirectional_dynamic_rnn taking\n    # into account the sequence_length properly, because otherwise\n    # the logits at a given timestep will depend on the inputs for all other\n    # timesteps, including the ones that should be masked.\n    mask = utils.get_mask_past_symbol(sequence, self._pad_token)\n    masked_logits_flat = logits_flat * tf.cast(mask, tf.float32)\n    return masked_logits_flat\n"
  },
  {
    "path": "scratchgan/eval_metrics.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Evaluation metrics.\"\"\"\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tensorflow.compat.v1 as tf\nimport tensorflow_gan as tfgan\nimport tensorflow_hub as hub\n\n\ndef fid(generated_sentences, real_sentences):\n  \"\"\"Compute FID rn sentences using pretrained universal sentence encoder.\n\n  Args:\n    generated_sentences: list of N strings.\n    real_sentences: list of N strings.\n\n  Returns:\n    Frechet distance between activations.\n  \"\"\"\n  embed = hub.Module(\"https://tfhub.dev/google/universal-sentence-encoder/2\")\n  real_embed = embed(real_sentences)\n  generated_embed = embed(generated_sentences)\n  distance = tfgan.eval.frechet_classifier_distance_from_activations(\n      real_embed, generated_embed)\n\n  # Restrict the thread pool size to prevent excessive CPU usage.\n  config = tf.ConfigProto()\n  config.intra_op_parallelism_threads = 16\n  config.inter_op_parallelism_threads = 16\n  with tf.Session(config=config) as session:\n    session.run(tf.global_variables_initializer())\n    session.run(tf.tables_initializer())\n    distance_np = session.run(distance)\n  return distance_np\n"
  },
  {
    "path": "scratchgan/experiment.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Training script for ScratchGAN.\"\"\"\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\nimport os\nimport time\n\nfrom absl import app\nfrom absl import flags\nfrom absl import logging\nimport numpy as np\nimport tensorflow.compat.v1 as tf\nfrom tensorflow.compat.v1.io import gfile\nfrom scratchgan import discriminator_nets\nfrom scratchgan import eval_metrics\nfrom scratchgan import generators\nfrom scratchgan import losses\nfrom scratchgan import reader\nfrom scratchgan import utils\n\nflags.DEFINE_string(\"dataset\", \"emnlp2017\", \"Dataset.\")\nflags.DEFINE_integer(\"batch_size\", 512, \"Batch size\")\nflags.DEFINE_string(\"gen_type\", \"lstm\", \"Generator type.\")\nflags.DEFINE_string(\"disc_type\", \"lstm\", \"Discriminator type.\")\nflags.DEFINE_string(\"disc_loss_type\", \"ce\", \"Loss type.\")\nflags.DEFINE_integer(\"gen_feature_size\", 512, \"Generator feature size.\")\nflags.DEFINE_integer(\"disc_feature_size\", 512, \"Discriminator feature size.\")\nflags.DEFINE_integer(\"num_layers_gen\", 2, \"Number of generator layers.\")\nflags.DEFINE_integer(\"num_layers_disc\", 1, \"Number of discriminator layers.\")\nflags.DEFINE_bool(\"layer_norm_gen\", False, \"Layer norm generator.\")\nflags.DEFINE_bool(\"layer_norm_disc\", True, \"Layer norm discriminator.\")\nflags.DEFINE_float(\"gen_input_dropout\", 0.0, \"Input dropout generator.\")\nflags.DEFINE_float(\"gen_output_dropout\", 0.0, \"Input dropout discriminator.\")\nflags.DEFINE_float(\"l2_gen\", 0.0, \"L2 regularization generator.\")\nflags.DEFINE_float(\"l2_disc\", 1e-6, \"L2 regularization discriminator.\")\nflags.DEFINE_float(\"disc_dropout\", 0.1, \"Dropout discriminator\")\nflags.DEFINE_integer(\"trainable_embedding_size\", 64,\n                     \"Size of trainable embedding.\")\nflags.DEFINE_bool(\"use_pretrained_embedding\", True, \"Use pretrained embedding.\")\nflags.DEFINE_integer(\"num_steps\", int(200 * 1000), \"Number of training steps.\")\nflags.DEFINE_integer(\"num_disc_updates\", 1, \"Number of discriminator updates.\")\nflags.DEFINE_integer(\"num_gen_updates\", 1, \"Number of generator updates.\")\nflags.DEFINE_string(\"data_dir\", \"/tmp/emnlp2017\", \"Directory where data is.\")\nflags.DEFINE_float(\"gen_lr\", 9.59e-5, \"Learning rate generator.\")\nflags.DEFINE_float(\"disc_lr\", 9.38e-3, \"Learning rate discriminator.\")\nflags.DEFINE_float(\"gen_beta1\", 0.5, \"Beta1 for generator.\")\nflags.DEFINE_float(\"disc_beta1\", 0.5, \"Beta1 for discriminator.\")\nflags.DEFINE_float(\"gamma\", 0.23, \"Discount factor.\")\nflags.DEFINE_float(\"baseline_decay\", 0.08, \"Baseline decay rate.\")\nflags.DEFINE_string(\"mode\", \"train\", \"train or evaluate_pair.\")\nflags.DEFINE_string(\"checkpoint_dir\", \"/tmp/emnlp2017/checkpoints/\",\n                    \"Directory for checkpoints.\")\nflags.DEFINE_integer(\"export_every\", 1000, \"Frequency of checkpoint exports.\")\nflags.DEFINE_integer(\"num_examples_for_eval\", int(1e4),\n                     \"Number of examples for evaluation\")\n\nEVALUATOR_SLEEP_PERIOD = 60  # Seconds evaluator sleeps if nothing to do.\n\n\ndef main(_):\n  config = flags.FLAGS\n\n  gfile.makedirs(config.checkpoint_dir)\n  if config.mode == \"train\":\n    train(config)\n  elif config.mode == \"evaluate_pair\":\n    while True:\n      checkpoint_path = utils.maybe_pick_models_to_evaluate(\n          checkpoint_dir=config.checkpoint_dir)\n      if checkpoint_path:\n        evaluate_pair(\n            config=config,\n            batch_size=config.batch_size,\n            checkpoint_path=checkpoint_path,\n            data_dir=config.data_dir,\n            dataset=config.dataset,\n            num_examples_for_eval=config.num_examples_for_eval)\n      else:\n        logging.info(\"No models to evaluate found, sleeping for %d seconds\",\n                     EVALUATOR_SLEEP_PERIOD)\n        time.sleep(EVALUATOR_SLEEP_PERIOD)\n  else:\n    raise Exception(\n        \"Unexpected mode %s, supported modes are \\\"train\\\" or \\\"evaluate_pair\\\"\"\n        % (config.mode))\n\n\ndef train(config):\n  \"\"\"Train.\"\"\"\n  logging.info(\"Training.\")\n\n  tf.reset_default_graph()\n  np.set_printoptions(precision=4)\n\n  # Get data.\n  raw_data = reader.get_raw_data(\n      data_path=config.data_dir, dataset=config.dataset)\n  train_data, valid_data, word_to_id = raw_data\n  id_to_word = {v: k for k, v in word_to_id.items()}\n  vocab_size = len(word_to_id)\n  max_length = reader.MAX_TOKENS_SEQUENCE[config.dataset]\n  logging.info(\"Vocabulary size: %d\", vocab_size)\n\n  iterator = reader.iterator(raw_data=train_data, batch_size=config.batch_size)\n  iterator_valid = reader.iterator(\n      raw_data=valid_data, batch_size=config.batch_size)\n\n  real_sequence = tf.placeholder(\n      dtype=tf.int32,\n      shape=[config.batch_size, max_length],\n      name=\"real_sequence\")\n  real_sequence_length = tf.placeholder(\n      dtype=tf.int32, shape=[config.batch_size], name=\"real_sequence_length\")\n  first_batch_np = next(iterator)\n  valid_batch_np = next(iterator_valid)\n\n  test_real_batch = {k: tf.constant(v) for k, v in first_batch_np.items()}\n  test_fake_batch = {\n      \"sequence\":\n          tf.constant(\n              np.random.choice(\n                  vocab_size, size=[config.batch_size,\n                                    max_length]).astype(np.int32)),\n      \"sequence_length\":\n          tf.constant(\n              np.random.choice(max_length,\n                               size=[config.batch_size]).astype(np.int32)),\n  }\n  valid_batch = {k: tf.constant(v) for k, v in valid_batch_np.items()}\n\n  # Create generator.\n  if config.use_pretrained_embedding:\n    embedding_source = utils.get_embedding_path(config.data_dir, config.dataset)\n    vocab_file = \"/tmp/vocab.txt\"\n    with gfile.GFile(vocab_file, \"w\") as f:\n      for i in range(len(id_to_word)):\n        f.write(id_to_word[i] + \"\\n\")\n    logging.info(\"Temporary vocab file: %s\", vocab_file)\n  else:\n    embedding_source = None\n    vocab_file = None\n\n  gen = generators.LSTMGen(\n      vocab_size=vocab_size,\n      feature_sizes=[config.gen_feature_size] * config.num_layers_gen,\n      max_sequence_length=reader.MAX_TOKENS_SEQUENCE[config.dataset],\n      batch_size=config.batch_size,\n      use_layer_norm=config.layer_norm_gen,\n      trainable_embedding_size=config.trainable_embedding_size,\n      input_dropout=config.gen_input_dropout,\n      output_dropout=config.gen_output_dropout,\n      pad_token=reader.PAD_INT,\n      embedding_source=embedding_source,\n      vocab_file=vocab_file,\n  )\n  gen_outputs = gen()\n\n  # Create discriminator.\n  disc = discriminator_nets.LSTMEmbedDiscNet(\n      vocab_size=vocab_size,\n      feature_sizes=[config.disc_feature_size] * config.num_layers_disc,\n      trainable_embedding_size=config.trainable_embedding_size,\n      embedding_source=embedding_source,\n      use_layer_norm=config.layer_norm_disc,\n      pad_token=reader.PAD_INT,\n      vocab_file=vocab_file,\n      dropout=config.disc_dropout,\n  )\n  disc_logits_real = disc(\n      sequence=real_sequence, sequence_length=real_sequence_length)\n  disc_logits_fake = disc(\n      sequence=gen_outputs[\"sequence\"],\n      sequence_length=gen_outputs[\"sequence_length\"])\n\n  # Loss of the discriminator.\n  if config.disc_loss_type == \"ce\":\n    targets_real = tf.ones(\n        [config.batch_size, reader.MAX_TOKENS_SEQUENCE[config.dataset]])\n    targets_fake = tf.zeros(\n        [config.batch_size, reader.MAX_TOKENS_SEQUENCE[config.dataset]])\n    loss_real = losses.sequential_cross_entropy_loss(disc_logits_real,\n                                                     targets_real)\n    loss_fake = losses.sequential_cross_entropy_loss(disc_logits_fake,\n                                                     targets_fake)\n    disc_loss = 0.5 * loss_real + 0.5 * loss_fake\n\n  # Loss of the generator.\n  gen_loss, cumulative_rewards, baseline = losses.reinforce_loss(\n      disc_logits=disc_logits_fake,\n      gen_logprobs=gen_outputs[\"logprobs\"],\n      gamma=config.gamma,\n      decay=config.baseline_decay)\n\n  # Optimizers\n  disc_optimizer = tf.train.AdamOptimizer(\n      learning_rate=config.disc_lr, beta1=config.disc_beta1)\n  gen_optimizer = tf.train.AdamOptimizer(\n      learning_rate=config.gen_lr, beta1=config.gen_beta1)\n\n  # Get losses and variables.\n  disc_vars = disc.get_all_variables()\n  gen_vars = gen.get_all_variables()\n  l2_disc = tf.reduce_sum(tf.add_n([tf.nn.l2_loss(v) for v in disc_vars]))\n  l2_gen = tf.reduce_sum(tf.add_n([tf.nn.l2_loss(v) for v in gen_vars]))\n  scalar_disc_loss = tf.reduce_mean(disc_loss) + config.l2_disc * l2_disc\n  scalar_gen_loss = tf.reduce_mean(gen_loss) + config.l2_gen * l2_gen\n\n  # Update ops.\n  global_step = tf.train.get_or_create_global_step()\n  disc_update = disc_optimizer.minimize(\n      scalar_disc_loss, var_list=disc_vars, global_step=global_step)\n  gen_update = gen_optimizer.minimize(\n      scalar_gen_loss, var_list=gen_vars, global_step=global_step)\n\n  # Saver.\n  saver = tf.train.Saver()\n\n  # Metrics\n  test_disc_logits_real = disc(**test_real_batch)\n  test_disc_logits_fake = disc(**test_fake_batch)\n  valid_disc_logits = disc(**valid_batch)\n  disc_predictions_real = tf.nn.sigmoid(disc_logits_real)\n  disc_predictions_fake = tf.nn.sigmoid(disc_logits_fake)\n  valid_disc_predictions = tf.reduce_mean(\n      tf.nn.sigmoid(valid_disc_logits), axis=0)\n  test_disc_predictions_real = tf.reduce_mean(\n      tf.nn.sigmoid(test_disc_logits_real), axis=0)\n  test_disc_predictions_fake = tf.reduce_mean(\n      tf.nn.sigmoid(test_disc_logits_fake), axis=0)\n\n  # Only log results for the first element of the batch.\n  metrics = {\n      \"scalar_gen_loss\": scalar_gen_loss,\n      \"scalar_disc_loss\": scalar_disc_loss,\n      \"disc_predictions_real\": tf.reduce_mean(disc_predictions_real),\n      \"disc_predictions_fake\": tf.reduce_mean(disc_predictions_fake),\n      \"test_disc_predictions_real\": tf.reduce_mean(test_disc_predictions_real),\n      \"test_disc_predictions_fake\": tf.reduce_mean(test_disc_predictions_fake),\n      \"valid_disc_predictions\": tf.reduce_mean(valid_disc_predictions),\n      \"cumulative_rewards\": tf.reduce_mean(cumulative_rewards),\n      \"baseline\": tf.reduce_mean(baseline),\n  }\n\n  # Training.\n  logging.info(\"Starting training\")\n  with tf.Session() as sess:\n\n    sess.run(tf.global_variables_initializer())\n    latest_ckpt = tf.train.latest_checkpoint(config.checkpoint_dir)\n    if latest_ckpt:\n      saver.restore(sess, latest_ckpt)\n\n    for step in range(config.num_steps):\n      real_data_np = next(iterator)\n      train_feed = {\n          real_sequence: real_data_np[\"sequence\"],\n          real_sequence_length: real_data_np[\"sequence_length\"],\n      }\n\n      # Update generator and discriminator.\n      for _ in range(config.num_disc_updates):\n        sess.run(disc_update, feed_dict=train_feed)\n      for _ in range(config.num_gen_updates):\n        sess.run(gen_update, feed_dict=train_feed)\n\n      # Reporting\n      if step % config.export_every == 0:\n        gen_sequence_np, metrics_np = sess.run(\n            [gen_outputs[\"sequence\"], metrics], feed_dict=train_feed)\n        metrics_np[\"gen_sentence\"] = utils.sequence_to_sentence(\n            gen_sequence_np[0, :], id_to_word)\n        saver.save(\n            sess,\n            save_path=config.checkpoint_dir + \"scratchgan\",\n            global_step=global_step)\n        metrics_np[\"model_path\"] = tf.train.latest_checkpoint(\n            config.checkpoint_dir)\n        logging.info(metrics_np)\n\n    # After training, export models.\n    saver.save(\n        sess,\n        save_path=config.checkpoint_dir + \"scratchgan\",\n        global_step=global_step)\n    logging.info(\"Saved final model at %s.\",\n                 tf.train.latest_checkpoint(config.checkpoint_dir))\n\n\ndef evaluate_pair(config, batch_size, checkpoint_path, data_dir, dataset,\n                  num_examples_for_eval):\n  \"\"\"Evaluates a pair generator discriminator.\n\n  This function loads a discriminator from disk, a generator, and evaluates the\n  discriminator against the generator.\n\n  It returns the mean probability of the discriminator against several batches,\n  and the FID of the generator against the validation data.\n\n  It also writes evaluation samples to disk.\n\n  Args:\n    config: dict, the config file.\n    batch_size: int, size of the batch.\n    checkpoint_path: string, full path to the TF checkpoint on disk.\n    data_dir: string, path to a directory containing the dataset.\n    dataset: string, \"emnlp2017\", to select the right dataset.\n    num_examples_for_eval: int, number of examples for evaluation.\n  \"\"\"\n  tf.reset_default_graph()\n  logging.info(\"Evaluating checkpoint %s.\", checkpoint_path)\n\n  # Build graph.\n  train_data, valid_data, word_to_id = reader.get_raw_data(\n      data_dir, dataset=dataset)\n  id_to_word = {v: k for k, v in word_to_id.items()}\n  vocab_size = len(word_to_id)\n  train_iterator = reader.iterator(raw_data=train_data, batch_size=batch_size)\n  valid_iterator = reader.iterator(raw_data=valid_data, batch_size=batch_size)\n  train_sequence = tf.placeholder(\n      dtype=tf.int32,\n      shape=[batch_size, reader.MAX_TOKENS_SEQUENCE[dataset]],\n      name=\"train_sequence\")\n  train_sequence_length = tf.placeholder(\n      dtype=tf.int32, shape=[batch_size], name=\"train_sequence_length\")\n  valid_sequence = tf.placeholder(\n      dtype=tf.int32,\n      shape=[batch_size, reader.MAX_TOKENS_SEQUENCE[dataset]],\n      name=\"valid_sequence\")\n  valid_sequence_length = tf.placeholder(\n      dtype=tf.int32, shape=[batch_size], name=\"valid_sequence_length\")\n  disc_inputs_train = {\n      \"sequence\": train_sequence,\n      \"sequence_length\": train_sequence_length,\n  }\n  disc_inputs_valid = {\n      \"sequence\": valid_sequence,\n      \"sequence_length\": valid_sequence_length,\n  }\n  if config.use_pretrained_embedding:\n    embedding_source = utils.get_embedding_path(config.data_dir, config.dataset)\n    vocab_file = \"/tmp/vocab.txt\"\n    with gfile.GFile(vocab_file, \"w\") as f:\n      for i in range(len(id_to_word)):\n        f.write(id_to_word[i] + \"\\n\")\n    logging.info(\"Temporary vocab file: %s\", vocab_file)\n  else:\n    embedding_source = None\n    vocab_file = None\n  gen = generators.LSTMGen(\n      vocab_size=vocab_size,\n      feature_sizes=[config.gen_feature_size] * config.num_layers_gen,\n      max_sequence_length=reader.MAX_TOKENS_SEQUENCE[config.dataset],\n      batch_size=config.batch_size,\n      use_layer_norm=config.layer_norm_gen,\n      trainable_embedding_size=config.trainable_embedding_size,\n      input_dropout=config.gen_input_dropout,\n      output_dropout=config.gen_output_dropout,\n      pad_token=reader.PAD_INT,\n      embedding_source=embedding_source,\n      vocab_file=vocab_file,\n  )\n  gen_outputs = gen()\n\n  disc = discriminator_nets.LSTMEmbedDiscNet(\n      vocab_size=vocab_size,\n      feature_sizes=[config.disc_feature_size] * config.num_layers_disc,\n      trainable_embedding_size=config.trainable_embedding_size,\n      embedding_source=embedding_source,\n      use_layer_norm=config.layer_norm_disc,\n      pad_token=reader.PAD_INT,\n      vocab_file=vocab_file,\n      dropout=config.disc_dropout,\n  )\n\n  disc_inputs = {\n      \"sequence\": gen_outputs[\"sequence\"],\n      \"sequence_length\": gen_outputs[\"sequence_length\"],\n  }\n  gen_logits = disc(**disc_inputs)\n  train_logits = disc(**disc_inputs_train)\n  valid_logits = disc(**disc_inputs_valid)\n\n  # Saver.\n  saver = tf.train.Saver()\n\n  # Reduce over time and batch.\n  train_probs = tf.reduce_mean(tf.nn.sigmoid(train_logits))\n  valid_probs = tf.reduce_mean(tf.nn.sigmoid(valid_logits))\n  gen_probs = tf.reduce_mean(tf.nn.sigmoid(gen_logits))\n\n  outputs = {\n      \"train_probs\": train_probs,\n      \"valid_probs\": valid_probs,\n      \"gen_probs\": gen_probs,\n      \"gen_sequences\": gen_outputs[\"sequence\"],\n      \"valid_sequences\": valid_sequence\n  }\n\n  # Get average discriminator score and store generated sequences.\n  all_valid_sentences = []\n  all_gen_sentences = []\n  all_gen_sequences = []\n  mean_train_prob = 0.0\n  mean_valid_prob = 0.0\n  mean_gen_prob = 0.0\n\n  logging.info(\"Graph constructed, generating batches.\")\n  num_batches = num_examples_for_eval // batch_size + 1\n\n  # Restrict the thread pool size to prevent excessive GCU usage on Borg.\n  tf_config = tf.ConfigProto()\n  tf_config.intra_op_parallelism_threads = 16\n  tf_config.inter_op_parallelism_threads = 16\n\n  with tf.Session(config=tf_config) as sess:\n\n    # Restore variables from checkpoints.\n    logging.info(\"Restoring variables.\")\n    saver.restore(sess, checkpoint_path)\n\n    for i in range(num_batches):\n      logging.info(\"Batch %d / %d\", i, num_batches)\n      train_data_np = next(train_iterator)\n      valid_data_np = next(valid_iterator)\n      feed_dict = {\n          train_sequence: train_data_np[\"sequence\"],\n          train_sequence_length: train_data_np[\"sequence_length\"],\n          valid_sequence: valid_data_np[\"sequence\"],\n          valid_sequence_length: valid_data_np[\"sequence_length\"],\n      }\n      outputs_np = sess.run(outputs, feed_dict=feed_dict)\n      all_gen_sequences.extend(outputs_np[\"gen_sequences\"])\n      gen_sentences = utils.batch_sequences_to_sentences(\n          outputs_np[\"gen_sequences\"], id_to_word)\n      valid_sentences = utils.batch_sequences_to_sentences(\n          outputs_np[\"valid_sequences\"], id_to_word)\n      all_valid_sentences.extend(valid_sentences)\n      all_gen_sentences.extend(gen_sentences)\n      mean_train_prob += outputs_np[\"train_probs\"] / batch_size\n      mean_valid_prob += outputs_np[\"valid_probs\"] / batch_size\n      mean_gen_prob += outputs_np[\"gen_probs\"] / batch_size\n\n  logging.info(\"Evaluating FID.\")\n\n  # Compute FID\n  fid = eval_metrics.fid(\n      generated_sentences=all_gen_sentences[:num_examples_for_eval],\n      real_sentences=all_valid_sentences[:num_examples_for_eval])\n\n  utils.write_eval_results(config.checkpoint_dir, all_gen_sentences,\n                           os.path.basename(checkpoint_path), mean_train_prob,\n                           mean_valid_prob, mean_gen_prob, fid)\n\n\nif __name__ == \"__main__\":\n  app.run(main)\n"
  },
  {
    "path": "scratchgan/generators.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Generators for text data.\"\"\"\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nfrom absl import logging\nimport sonnet as snt\nimport tensorflow.compat.v1 as tf\nimport tensorflow_probability as tfp\nfrom scratchgan import utils\n\n\nclass LSTMGen(snt.AbstractModule):\n  \"\"\"A multi-layer LSTM language model.\n\n  Uses tied input/output embedding weights.\n  \"\"\"\n\n  def __init__(self,\n               vocab_size,\n               feature_sizes,\n               max_sequence_length,\n               batch_size,\n               use_layer_norm,\n               trainable_embedding_size,\n               input_dropout,\n               output_dropout,\n               pad_token,\n               embedding_source=None,\n               vocab_file=None,\n               name='lstm_gen'):\n    super(LSTMGen, self).__init__(name=name)\n    self._feature_sizes = feature_sizes\n    self._max_sequence_length = max_sequence_length\n    self._vocab_size = vocab_size\n    self._batch_size = batch_size\n    self._use_layer_norm = use_layer_norm\n    self._trainable_embedding_size = trainable_embedding_size\n    self._embedding_source = embedding_source\n    self._vocab_file = vocab_file\n    self._input_dropout = input_dropout\n    self._output_dropout = output_dropout\n    self._pad_token = pad_token\n    if self._embedding_source:\n      assert vocab_file\n\n  def _build(self, is_training=True, temperature=1.0):\n    input_keep_prob = (1. - self._input_dropout) if is_training else 1.0\n    output_keep_prob = (1. - self._output_dropout) if is_training else 1.0\n\n    batch_size = self._batch_size\n    max_sequence_length = self._max_sequence_length\n    if self._embedding_source:\n      all_embeddings = utils.make_partially_trainable_embeddings(\n          self._vocab_file, self._embedding_source, self._vocab_size,\n          self._trainable_embedding_size)\n    else:\n      all_embeddings = tf.get_variable(\n          'trainable_embeddings',\n          shape=[self._vocab_size, self._trainable_embedding_size],\n          trainable=True)\n    _, self._embedding_size = all_embeddings.shape.as_list()\n    input_embeddings = tf.nn.dropout(all_embeddings, keep_prob=input_keep_prob)\n    output_embeddings = tf.nn.dropout(\n        all_embeddings, keep_prob=output_keep_prob)\n\n    out_bias = tf.get_variable(\n        'out_bias', shape=[1, self._vocab_size], dtype=tf.float32)\n    in_proj = tf.get_variable(\n        'in_proj', shape=[self._embedding_size, self._feature_sizes[0]])\n    # If more than 1 layer, then output has dim sum(self._feature_sizes),\n    # which is different from input dim == self._feature_sizes[0]\n    # So we need a different projection matrix for input and output.\n    if len(self._feature_sizes) > 1:\n      out_proj = tf.get_variable(\n          'out_proj', shape=[self._embedding_size,\n                             sum(self._feature_sizes)])\n    else:\n      out_proj = in_proj\n\n    encoder_cells = []\n    for feature_size in self._feature_sizes:\n      encoder_cells += [\n          snt.LSTM(feature_size, use_layer_norm=self._use_layer_norm)\n      ]\n    encoder_cell = snt.DeepRNN(encoder_cells)\n    state = encoder_cell.initial_state(batch_size)\n\n    # Manual unrolling.\n    samples_list, logits_list, logprobs_list, embeddings_list = [], [], [], []\n    sample = tf.tile(\n        tf.constant(self._pad_token, dtype=tf.int32)[None], [batch_size])\n    logging.info('Unrolling over %d steps.', max_sequence_length)\n    for _ in range(max_sequence_length):\n      # Input is sampled word at t-1.\n      embedding = tf.nn.embedding_lookup(input_embeddings, sample)\n      embedding.shape.assert_is_compatible_with(\n          [batch_size, self._embedding_size])\n      embedding_proj = tf.matmul(embedding, in_proj)\n      embedding_proj.shape.assert_is_compatible_with(\n          [batch_size, self._feature_sizes[0]])\n\n      outputs, state = encoder_cell(embedding_proj, state)\n      outputs_proj = tf.matmul(outputs, out_proj, transpose_b=True)\n      logits = tf.matmul(\n          outputs_proj, output_embeddings, transpose_b=True) + out_bias\n      categorical = tfp.distributions.Categorical(logits=logits/temperature)\n      sample = categorical.sample()\n      logprobs = categorical.log_prob(sample)\n\n      samples_list.append(sample)\n      logits_list.append(logits)\n      logprobs_list.append(logprobs)\n      embeddings_list.append(embedding)\n\n    # Create an op to retrieve embeddings for full sequence, useful for testing.\n    embeddings = tf.stack(  # pylint: disable=unused-variable\n        embeddings_list,\n        axis=1,\n        name='embeddings')\n    sequence = tf.stack(samples_list, axis=1)\n    logprobs = tf.stack(logprobs_list, axis=1)\n\n    # The sequence stops after the first occurrence of a PAD token.\n    sequence_length = utils.get_first_occurrence_indices(\n        sequence, self._pad_token)\n    mask = utils.get_mask_past_symbol(sequence, self._pad_token)\n    masked_sequence = sequence * tf.cast(mask, tf.int32)\n    masked_logprobs = logprobs * tf.cast(mask, tf.float32)\n    return {\n        'sequence': masked_sequence,\n        'sequence_length': sequence_length,\n        'logprobs': masked_logprobs\n    }\n"
  },
  {
    "path": "scratchgan/losses.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Losses for sequential GANs.\"\"\"\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport numpy as np\nimport tensorflow.compat.v1 as tf\n\n\ndef sequential_cross_entropy_loss(logits, expected):\n  \"\"\"The cross entropy loss for binary classification.\n\n  Used to train the discriminator when not using WGAN loss.\n  Assume logits is the log probability of classifying as 1. (real).\n\n  Args:\n    logits: a `tf.Tensor`, the model produced logits, shape [batch_size,\n      sequence_length].\n    expected: a `tf.Tensor`, the expected output, shape [batch_size,\n      sequence_length].\n\n  Returns:\n    A scalar `tf.Tensor`, the average loss obtained on the given inputs.\n  \"\"\"\n  batch_size, sequence_length = logits.shape.as_list()\n  expected = tf.cast(expected, tf.float32)\n\n  ce = tf.nn.sigmoid_cross_entropy_with_logits(labels=expected, logits=logits)\n  return tf.reshape(ce, [batch_size, sequence_length])\n\n\ndef reinforce_loss(disc_logits, gen_logprobs, gamma, decay):\n  \"\"\"The REINFORCE loss.\n\n  Args:\n      disc_logits: float tensor, shape [batch_size, sequence_length].\n      gen_logprobs: float32 tensor, shape [batch_size, sequence_length]\n      gamma: a float, discount factor for cumulative reward.\n      decay: a float, decay rate for the EWMA baseline of REINFORCE.\n\n  Returns:\n    Float tensor, shape [batch_size, sequence_length], the REINFORCE loss for\n    each timestep.\n  \"\"\"\n  # Assume 1 logit for each timestep.\n  batch_size, sequence_length = disc_logits.shape.as_list()\n  gen_logprobs.shape.assert_is_compatible_with([batch_size, sequence_length])\n\n  disc_predictions = tf.nn.sigmoid(disc_logits)\n\n  # MaskGAN uses log(D), but this is more stable empirically.\n  rewards = 2.0 * disc_predictions - 1\n\n  # Compute cumulative rewards.\n  rewards_list = tf.unstack(rewards, axis=1)\n  cumulative_rewards = []\n  for t in range(sequence_length):\n    cum_value = tf.zeros(shape=[batch_size])\n    for s in range(t, sequence_length):\n      cum_value += np.power(gamma, (s - t)) * rewards_list[s]\n    cumulative_rewards.append(cum_value)\n  cumulative_rewards = tf.stack(cumulative_rewards, axis=1)\n\n  cumulative_rewards.shape.assert_is_compatible_with(\n      [batch_size, sequence_length])\n\n  with tf.variable_scope(\"reinforce\", reuse=tf.AUTO_REUSE):\n    ewma_reward = tf.get_variable(\"ewma_reward\", initializer=0.0)\n\n  mean_reward = tf.reduce_mean(cumulative_rewards)\n  new_ewma_reward = decay * ewma_reward + (1.0 - decay) * mean_reward\n  update_op = tf.assign(ewma_reward, new_ewma_reward)\n\n  # REINFORCE\n  with tf.control_dependencies([update_op]):\n    advantage = cumulative_rewards - ewma_reward\n    loss = -tf.stop_gradient(advantage) * gen_logprobs\n\n  loss.shape.assert_is_compatible_with([batch_size, sequence_length])\n  return loss, cumulative_rewards, ewma_reward\n"
  },
  {
    "path": "scratchgan/reader.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Utilities for parsing text files.\"\"\"\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport collections\nimport json\nimport os\n\nfrom absl import logging\nimport numpy as np\nfrom tensorflow.compat.v1.io import gfile\n\n# sequences: [N, MAX_TOKENS_SEQUENCE] array of int32\n# lengths: [N, 2] array of int32, such that\n#   lengths[i, 0] is the number of non-pad tokens in sequences[i, :]\nFILENAMES = {\n    \"emnlp2017\": (\"train.json\", \"valid.json\", \"test.json\"),\n}\n\n# EMNLP2017 sentences have max length 50, add one for a PAD token so that all\n# sentences end with PAD.\nMAX_TOKENS_SEQUENCE = {\"emnlp2017\": 52}\n\nUNK = \"<unk>\"\nPAD = \" \"\n\nPAD_INT = 0\n\n\ndef tokenize(sentence):\n  \"\"\"Split a string into words.\"\"\"\n  return sentence.split(\" \") + [PAD]\n\n\ndef _build_vocab(json_data):\n  \"\"\"Builds full vocab from json data.\"\"\"\n  vocab = collections.Counter()\n  for sentence in json_data:\n    tokens = tokenize(sentence[\"s\"])\n    vocab.update(tokens)\n    for title in sentence[\"t\"]:\n      title_tokens = tokenize(title)\n      vocab.update(title_tokens)\n  # Most common words first.\n  count_pairs = sorted(list(vocab.items()), key=lambda x: (-x[1], x[0]))\n  words, _ = list(zip(*count_pairs))\n  words = list(words)\n  if UNK not in words:\n    words = [UNK] + words\n  word_to_id = dict(list(zip(words, list(range(len(words))))))\n\n  # Tokens are now sorted by frequency. There's no guarantee that `PAD` will\n  # end up at `PAD_INT` index. Enforce it by swapping whatever token is\n  # currently at the `PAD_INT` index with the `PAD` token.\n  word = list(word_to_id.keys())[list(word_to_id.values()).index(PAD_INT)]\n  word_to_id[PAD], word_to_id[word] = word_to_id[word], word_to_id[PAD]\n  assert word_to_id[PAD] == PAD_INT\n\n  return word_to_id\n\n\ndef string_sequence_to_sequence(string_sequence, word_to_id):\n  result = []\n  for word in string_sequence:\n    if word in word_to_id:\n      result.append(word_to_id[word])\n    else:\n      result.append(word_to_id[UNK])\n  return result\n\n\ndef _integerize(json_data, word_to_id, dataset):\n  \"\"\"Transform words into integers.\"\"\"\n  sequences = np.full((len(json_data), MAX_TOKENS_SEQUENCE[dataset]),\n                      word_to_id[PAD], np.int32)\n  sequence_lengths = np.zeros(shape=(len(json_data)), dtype=np.int32)\n  for i, sentence in enumerate(json_data):\n    sequence_i = string_sequence_to_sequence(\n        tokenize(sentence[\"s\"]), word_to_id)\n    sequence_lengths[i] = len(sequence_i)\n    sequences[i, :sequence_lengths[i]] = np.array(sequence_i)\n  return {\n      \"sequences\": sequences,\n      \"sequence_lengths\": sequence_lengths,\n  }\n\n\ndef get_raw_data(data_path, dataset, truncate_vocab=20000):\n  \"\"\"Load raw data from data directory \"data_path\".\n\n  Reads text files, converts strings to integer ids,\n  and performs mini-batching of the inputs.\n\n  Args:\n    data_path: string path to the directory where simple-examples.tgz has been\n      extracted.\n    dataset: one of [\"emnlp2017\"]\n    truncate_vocab: int, number of words to keep in the vocabulary.\n\n  Returns:\n    tuple (train_data, valid_data, vocabulary) where each of the data\n    objects can be passed to iterator.\n\n  Raises:\n    ValueError: dataset not in [\"emnlp2017\"].\n  \"\"\"\n  if dataset not in FILENAMES:\n    raise ValueError(\"Invalid dataset {}. Valid datasets: {}\".format(\n        dataset, list(FILENAMES.keys())))\n  train_file, valid_file, _ = FILENAMES[dataset]\n\n  train_path = os.path.join(data_path, train_file)\n  valid_path = os.path.join(data_path, valid_file)\n\n  with gfile.GFile(train_path, \"r\") as json_file:\n    json_data_train = json.load(json_file)\n  with gfile.GFile(valid_path, \"r\") as json_file:\n    json_data_valid = json.load(json_file)\n\n  word_to_id = _build_vocab(json_data_train)\n  logging.info(\"Full vocab length: %d\", len(word_to_id))\n  # Assume the vocab is sorted by frequency.\n  word_to_id_truncated = {\n      k: v for k, v in word_to_id.items() if v < truncate_vocab\n  }\n  logging.info(\"Truncated vocab length: %d\", len(word_to_id_truncated))\n\n  train_data = _integerize(json_data_train, word_to_id_truncated, dataset)\n  valid_data = _integerize(json_data_valid, word_to_id_truncated, dataset)\n  return train_data, valid_data, word_to_id_truncated\n\n\ndef iterator(raw_data, batch_size, random=False):\n  \"\"\"Looping iterators on the raw data.\"\"\"\n  sequences = raw_data[\"sequences\"]\n  sequence_lengths = raw_data[\"sequence_lengths\"]\n\n  num_examples = sequences.shape[0]\n  indice_range = np.arange(num_examples)\n\n  if random:\n    while True:\n      indices = np.random.choice(indice_range, size=batch_size, replace=True)\n      yield {\n          \"sequence\": sequences[indices, :],\n          \"sequence_length\": sequence_lengths[indices],\n      }\n  else:\n    start = 0\n    while True:\n      sequence = sequences[start:(start + batch_size), :]\n      sequence_length = sequence_lengths[start:(start + batch_size)]\n      start += batch_size\n      if start + batch_size > num_examples:\n        start = (start + batch_size) % num_examples\n      yield {\n          \"sequence\": sequence,\n          \"sequence_length\": sequence_length,\n      }\n"
  },
  {
    "path": "scratchgan/requirements.txt",
    "content": "absl-py==0.7.1\ndm-sonnet==1.34\nnumpy==1.16.4\ntensorflow==1.15\ntensorflow-probability==0.7.0\ntensorflow-gan == 1.0.0.dev0\ntensorflow-hub == 0.6.0\ntensorflow-io == 0.8.0\ntensorflow-gpu==1.15\n"
  },
  {
    "path": "scratchgan/run.sh",
    "content": "#!/bin/sh\n# Copyright 2019 Deepmind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\n# Get EMNLP data.\nmkdir -p /tmp/emnlp2017\ncurl https://storage.googleapis.com/deepmind-scratchgan-data/train.json --output /tmp/emnlp2017/train.json\ncurl https://storage.googleapis.com/deepmind-scratchgan-data/valid.json --output /tmp/emnlp2017/valid.json\ncurl https://storage.googleapis.com/deepmind-scratchgan-data/test.json --output /tmp/emnlp2017/test.json\ncurl https://storage.googleapis.com/deepmind-scratchgan-data/glove_emnlp2017.txt --output /tmp/emnlp2017/glove_emnlp2017.txt\n\n\n# Install python3.5\nwhich python3.5\nif  [ $? -eq 1 ]; then\n  echo 'Installing python3.5'\n  (cd /usr/src/\n   sudo wget https://www.python.org/ftp/python/3.5.6/Python-3.5.6.tgz\n   tar -xvzf Python-3.5.6.tgz\n   sudo tar -xvzf Python-3.5.6.tgz\n   cd Python-3.5.6\n   ./configure --enable-loadable-sqlite-extensions --enable-optimizations\n   sudo make altinstall)\nfi\n# Fail on any error.\nset -e\npython3.5 -m venv scratchgan-venv\necho 'Created venv'\nsource scratchgan-venv/bin/activate\necho 'Installing pip'\ncurl https://bootstrap.pypa.io/get-pip.py -o get-pip.py\npython3.5 get-pip.py pip==20.2.3\n\n\necho 'Getting requirements.'\npip install -r scratchgan/requirements.txt\n\necho 'Starting training...'\npython3.5 -m scratchgan.experiment --mode=\"train\" &\npython3.5 -m scratchgan.experiment --mode=\"evaluate_pair\" &\n"
  },
  {
    "path": "scratchgan/utils.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited and Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Utilities.\"\"\"\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\nimport math\nimport os\nfrom absl import logging\nimport numpy as np\nimport tensorflow.compat.v1 as tf\nfrom tensorflow.compat.v1.io import gfile\nfrom scratchgan import reader\n\nEVAL_FILENAME = \"evaluated_checkpoints.csv\"\nGLOVE_DIM = 300\nGLOVE_STD = 0.3836  # Standard dev. of GloVe embeddings.\n\n\ndef _get_embedding_initializer(vocab_file, embedding_source, vocab_size):\n  \"\"\"Loads pretrained embeddings from a file in GloVe format.\"\"\"\n  with gfile.GFile(embedding_source, \"r\") as f:\n    embedding_lines = f.readlines()\n\n  # First line contains embedding dim.\n  _, embedding_dim = list(map(int, embedding_lines[0].split()))\n  # Get the tokens as strings.\n  tokens = [line.split()[0] for line in embedding_lines[1:]]\n  # Get the actual embedding matrix.\n  unsorted_emb = np.array(\n      [[float(x) for x in line.split()[1:]] for line in embedding_lines[1:]])\n\n  # Get the expected vocab order.\n  with gfile.GFile(vocab_file, \"r\") as f:\n    tokens_order = [l.strip() for l in f.readlines()]\n  assert vocab_size == len(tokens_order)\n\n  # Put the embeddings in the order.\n  sorted_emb = np.zeros((vocab_size, embedding_dim))\n  for i, token in enumerate(tokens_order):\n    if token in tokens:\n      sorted_emb[i, :] = unsorted_emb[tokens.index(token), :]\n    else:  # If we don't have a pretrained embedding, initialize randomly.\n      sorted_emb[i, :] = np.random.normal(\n          loc=0.0, scale=GLOVE_STD, size=(GLOVE_DIM,))\n\n  return sorted_emb.astype(np.float32)\n\n\ndef append_position_signal(embeddings, position_dim=8):\n  \"\"\"Append position signal. See get_position_signal.\"\"\"\n  batch_size, sequence_length, embedding_dim = embeddings.get_shape().as_list()\n  positions = get_position_signal(sequence_length, position_dim)\n\n  # Append to embeddings.\n  position_inputs = tf.tile(positions[None, :, :], [batch_size, 1, 1])\n  embeddings_pos = tf.concat([embeddings, position_inputs], axis=2)\n  embeddings_pos.shape.assert_is_compatible_with(\n      [batch_size, sequence_length, embedding_dim + position_dim])\n  return embeddings_pos\n\n\ndef get_position_signal(sequence_length, position_dim=8):\n  \"\"\"Return fixed position signal as sine waves.\n\n  Sine waves frequencies are linearly spaced so that shortest is 2 and\n  longest is half the maximum length. That way the longest frequency\n  is long enough to be monotonous over the whole sequence length.\n  Sine waves are also shifted so that they don't all start with the same\n  value.\n  We don't use learned positional embeddings because these embeddings are\n  projected linearly along with the original embeddings, and the projection is\n  learned.\n\n  Args:\n    sequence_length: int, T, length of the sequence..\n    position_dim: int, P, number of sine waves.\n\n  Returns:\n    A [T, P] tensor, position embeddings.\n  \"\"\"\n  # Compute the frequencies.\n  periods = tf.exp(\n      tf.lin_space(\n          tf.log(2.0), tf.log(tf.to_float(sequence_length)), position_dim))\n  frequencies = 1.0 / periods  # Shape [T, P].\n\n  # Compute the sine waves.\n  xs = frequencies[None, :] * tf.to_float(tf.range(sequence_length)[:, None])\n  shifts = tf.lin_space(0.0, 2.0, position_dim)[None, :]  # [1, P]\n  positions = tf.math.cos(math.pi * (xs + shifts))  # [T, P]\n  positions.shape.assert_is_compatible_with([sequence_length, position_dim])\n  return positions\n\n\ndef get_mask_by_length(lengths, max_length):\n  \"\"\"Returns a mask where x[i , j] = (j < lengths[i]).\n\n  Args:\n    lengths: [B] tensor of int32 such that 0 <= lengths[i] <= max_length.\n    max_length: scalar tensor of int32.\n\n  Returns:\n    [B, max_length] tensor of booleans such that x[i, j] is True\n    if and only if j < lengths[i].\n  \"\"\"\n  batch_size = lengths.get_shape().as_list()[0]\n  indices = tf.range(start=0, limit=max_length)\n  all_indices = tf.tile(indices[None, :], [batch_size, 1])\n  all_lengths = tf.tile(lengths[:, None], [1, max_length])\n  mask = (all_indices < all_lengths)\n  mask_boolean = tf.cast(mask, tf.bool)\n  return mask_boolean\n\n\ndef get_mask_past_symbol(reference, symbol, optimize_for_tpu=False):\n  \"\"\"For each row, mask is True before and at the first occurrence of symbol.\"\"\"\n  batch_size, max_length = reference.get_shape().as_list()\n  symbol = tf.convert_to_tensor(symbol)\n  symbol.shape.assert_is_compatible_with([])\n\n  first_indices = get_first_occurrence_indices(reference, symbol,\n                                               optimize_for_tpu)\n  first_indices.shape.assert_is_compatible_with([batch_size])\n\n  keep_lengths = tf.minimum(first_indices, max_length)\n  mask = get_mask_by_length(keep_lengths, max_length)\n  mask.shape.assert_is_compatible_with([batch_size, max_length])\n  mask.set_shape([batch_size, max_length])\n  return mask\n\n\ndef get_first_occurrence_indices(reference, symbol, optimize_for_tpu=False):\n  \"\"\"For each row in reference, get index after the first occurrence of symbol.\n\n  If symbol is not present on a row, return reference.shape[1] instead.\n\n  Args:\n    reference: [B, T] tensor of elements of the same type as symbol.\n    symbol: int or [] scalar tensor of the same dtype as symbol.\n    optimize_for_tpu: bool, whether to use a TPU-capable variant.\n\n  Returns:\n    A [B] reference of tf.int32 where x[i] is such that\n    reference[i, x[i]-1] == symbol, and reference[i, j] != symbol\n    for j<i-1. If symbol is not present on row i then x[i] = T.\n  \"\"\"\n  if optimize_for_tpu:\n    # Run code which can be compiled on TPU.\n    # Transpose refernce to [T, B]\n    reference = tf.transpose(reference, [1, 0])\n    range_tensor = tf.range(reference.shape.as_list()[0])\n    indexes = tf.stack([range_tensor] * reference.shape.as_list()[1], 1)\n    symbol = tf.stack([symbol] * reference.shape.as_list()[1], 0)\n\n    initial_indices = tf.constant(\n        reference.shape.as_list()[0],\n        shape=[reference.shape.as_list()[1]],\n        dtype=tf.int32)\n\n    # We want a function which moves backwards.\n    def fn(current_index, elems):\n      ref, ind = elems\n      return tf.where(tf.equal(ref, symbol), ind + 1, current_index)\n\n    min_indexes = tf.scan(\n        fn, (reference, indexes),\n        initializer=initial_indices,\n        parallel_iterations=1,\n        reverse=True)\n    return min_indexes[0]\n\n  batch_size, max_length = reference.get_shape().as_list()\n  symbol = tf.convert_to_tensor(symbol)\n  symbol.shape.assert_is_compatible_with([])\n  # Add symbol at the end of each row, to make sure tf.where works.\n  tensor = tf.concat(\n      [reference, tf.tile(symbol[None, None], [batch_size, 1])], axis=1)\n  index_all_occurrences = tf.where(tf.equal(tensor, symbol))\n  index_all_occurrences = tf.cast(index_all_occurrences, tf.int32)\n  # `index_all_occurrences` is a [N, 2] tensor with coordinates of all positions\n  # of `symbol` in `tensor`. So N will be >= batch size since there can be\n  # several `symbol` in one row of tensor. We need to take only the position\n  # of the first occurrence for each row. `segment_min` does that, taking the\n  # lowest column index for each row index.\n  index_first_occurrences = tf.segment_min(index_all_occurrences[:, 1],\n                                           index_all_occurrences[:, 0])\n  index_first_occurrences.set_shape([batch_size])\n  index_first_occurrences = tf.minimum(index_first_occurrences + 1, max_length)\n  return index_first_occurrences\n\n\ndef sequence_to_sentence(sequence, id_to_word):\n  \"\"\"Turn a sequence into a sentence , inverse of sentence_to_sequence.\"\"\"\n  words = []\n  for token_index in sequence:\n    if token_index in id_to_word:\n      words.append(id_to_word[token_index])\n    else:\n      words.append(reader.UNK)\n  return \" \".join(words)\n\n\ndef batch_sequences_to_sentences(sequences, id_to_word):\n  return [sequence_to_sentence(sequence, id_to_word) for sequence in sequences]\n\n\ndef write_eval_results(checkpoint_dir, all_gen_sentences, checkpoint_name,\n                       mean_train_prob, mean_valid_prob, mean_gen_prob, fid):\n  \"\"\"Write evaluation results to disk.\"\"\"\n  to_write = \",\".join(\n      map(str, [\n          checkpoint_name, mean_train_prob, mean_valid_prob, mean_gen_prob, fid\n      ]))\n  eval_filepath = os.path.join(checkpoint_dir, EVAL_FILENAME)\n  previous_eval_content = \"\"\n  if gfile.exists(eval_filepath):\n    with gfile.GFile(eval_filepath, \"r\") as f:\n      previous_eval_content = f.read()\n  with gfile.GFile(eval_filepath, \"w\") as f:\n    f.write(previous_eval_content + to_write + \"\\n\")\n\n  with gfile.GFile(\n      os.path.join(checkpoint_dir, checkpoint_name + \"_sentences.txt\"),\n      \"w\") as f:\n    f.write(\"\\n\".join(all_gen_sentences))\n\n\ndef maybe_pick_models_to_evaluate(checkpoint_dir):\n  \"\"\"Pick a checkpoint to evaluate that has not been evaluated already.\"\"\"\n  logging.info(\"Picking checkpoint to evaluate from %s.\", checkpoint_dir)\n\n  filenames = gfile.listdir(checkpoint_dir)\n  filenames = [f[:-5] for f in filenames if f[-5:] == \".meta\"]\n  logging.info(\"Found existing checkpoints: %s\", filenames)\n\n  evaluated_filenames = []\n  if gfile.exists(os.path.join(checkpoint_dir, EVAL_FILENAME)):\n    with gfile.GFile(os.path.join(checkpoint_dir, EVAL_FILENAME), \"r\") as f:\n      evaluated_filenames = [l.strip().split(\",\")[0] for l in f.readlines()]\n    logging.info(\"Found already evaluated checkpoints: %s\", evaluated_filenames)\n\n  checkpoints_to_evaluate = [\n      f for f in filenames if f not in evaluated_filenames\n  ]\n  logging.info(\"Remaining potential checkpoints: %s\", checkpoints_to_evaluate)\n\n  if checkpoints_to_evaluate:\n    return os.path.join(checkpoint_dir, checkpoints_to_evaluate[0])\n  else:\n    return None\n\n\ndef get_embedding_path(data_dir, dataset):\n  \"\"\"By convention, this is where we store the embedding.\"\"\"\n  return os.path.join(data_dir, \"glove_%s.txt\" % dataset)\n\n\ndef make_partially_trainable_embeddings(vocab_file, embedding_source,\n                                        vocab_size, trainable_embedding_size):\n  \"\"\"Makes embedding matrix with pretrained GloVe [1] part and trainable part.\n\n  [1] Pennington, J., Socher, R., & Manning, C. (2014, October). Glove: Global\n  vectors for word representation. In Proceedings of the 2014 conference on\n  empirical methods in natural language processing (EMNLP) (pp. 1532-1543).\n\n  Args:\n    vocab_file: vocabulary file.\n    embedding_source: path to the actual embeddings.\n    vocab_size: number of words in vocabulary.\n    trainable_embedding_size: size of the trainable part of the embeddings.\n\n  Returns:\n    A matrix of partially pretrained embeddings.\n  \"\"\"\n\n  # Our embeddings have 2 parts: a pre-trained, frozen, GloVe part,\n  # and a trainable, randomly initialized part.\n  # The standard deviation of the GloVe part is used to initialize\n  # the trainable part, so that both part have roughly the same distribution.\n  #\n  # Let g_ij be the j-th coordinates of the GloVe embedding of the i-th word.\n  # So that 0 < i < |vocab| and 0 < j < 300.\n  # Then sum_ij (g_ij - sum_kl g_kl)^2 = (0.3836)^2\n  #\n  # In reality g_ij follows a truncated normal distribution\n  # min(max(N(0, s), -4.2), 4.2) but we approximate it by N(0, 0.3836).\n  embedding_initializer = _get_embedding_initializer(\n      vocab_file=vocab_file,\n      embedding_source=embedding_source,\n      vocab_size=vocab_size)\n  pretrained_embedding = tf.get_variable(\n      \"pretrained_embedding\",\n      initializer=embedding_initializer,\n      dtype=tf.float32)\n  trainable_embedding = tf.get_variable(\n      \"trainable_embedding\",\n      shape=[vocab_size, trainable_embedding_size],\n      initializer=tf.initializers.random_normal(mean=0.0, stddev=GLOVE_STD))\n  # We just concatenate embeddings, they will pass through a projection\n  # matrix afterwards.\n  embedding = tf.concat([pretrained_embedding, trainable_embedding], axis=1)\n  return embedding\n"
  },
  {
    "path": "side_effects_penalties/README.md",
    "content": "# Side effects penalties\n\nSide effects are unnecessary disruptions to the agent's environment while completing a task. Instead of trying to explicitly penalize all possible side effects, we give the agent a general penalty for impacting the environment, defined as a deviation from some baseline state. For example, a reversibility penalty measures unreachability (deviation) of the starting state (baseline). This code implements a tabular Q-learning agent with different impact penalties. Each penalty consists of a deviation measure (none, unreachability, relative reachability, or attainable utility), a baseline (starting state, inaction, or stepwise inaction), and some other design choices. This is the code for the paper [Penalizing side effects using stepwise relative reachability](https://arxiv.org/abs/1806.01186) by Krakovna et al (2019).\n\nIn our latest paper \"Avoiding Side Effects By Considering Future Tasks\" by Krakovna et al (NeurIPS 2020), the agent receives an auxiliary reward for preserving the ability to perform future tasks. This approach is equivalent to relative reachability with an inaction baseline in deterministic environments. The UVFA approximation for the auxiliary reward is included as an option for the deviation measure.\n\n## Instructions\n\nClone the repository:\n\n`git clone https://github.com/deepmind/deepmind-research/side_effects_penalties.git`\n\n### Running an agent with a side effects penalty\n\nRun the agent with a given penalty on an AI Safety Gridworlds environment:\n\n`python -m side_effects_penalties.run_experiment -baseline <X> -dev_measure <Y> -env_name <Z> -suffix <S>`\n\nThe following settings can be specified for the side effects penalty:\n* Baseline state (`-baseline`): starting state (`start`), inaction (`inaction`),\n  stepwise inaction with rollouts (`stepwise`), stepwise inaction without\n  rollouts (`step_noroll`)\n* Deviation measure (`-dev_measure`): none (`none`), unreachability (`reach`),\n  relative reachability (`rel_reach`), attainable utility (`att_util`),\n  UVFA approximation of relative reachability (`uvfa_rel_reach`)\n* Summary function to apply to the relative reachability or attainable utility\n  deviation measure (`-dev_fun`): max (0, x) (`truncation`) or |x| (`absolute`)\n* Discount factor for rewards (`discount`). We use `discount=0.95` for the UVFA\n  approximation of relative reachability.\n* Discount factor for the deviation measure value function (`-value_discount`).\n  Should be the same as `discount` unless using an undiscounted reachability\n  measure.\n* Weight for the side effects penalty relative to the reward (`-beta`)\n* Penalty for nonterminal states relative to terminal states (`-nonterminal'):\n  1 (`full`) is used in the stepwise relative reachability paper, while\n  (1-discount) (`disc`) is used in the future tasks paper.\n\nOther settings include:\n* Number of episodes (`-num_episodes`)\n* AI Safety Gridworlds environment name (`-env_name`)\n* Filename suffix for saving result files (`-suffix`)\n\n### Plotting the results\n\nMake a summary data frame from the result files generated by `run_experiment`:\n\n`python -m side_effects_penalties.results_summary -compare_penalties -input_suffix <S>`\n\nArguments:\n* -bar_plot: make a data frame for a bar plot (True) or learning curve plot (False)\n* -compare_penalties: compare different penalties using the best beta value for\n  each penalty (True), or compare different beta values for a given penalty (False)\n* If compare_penalties=False, specify the penalty parameters (`-dev_measure`,\n  `-dev_fun` and `-value_discount`)\n* Environment name (`-env_name`)\n* Filename suffix for loading result files (`-input_suffix`)\n* Filename suffix for the summary data frame (`-output_suffix`)\n\nImport the summary data frame into `plot_results.ipynb` and make a bar plot or\nlearning curve plot.\n\n## Dependencies\n\n* Python 2.7 or 3 (tested with Python 2.7.15 and 3.6.7)\n* [AI Safety Gridworlds](https://github.com/deepmind/ai-safety-gridworlds) suite\n  of safety environments\n* [Abseil](https://github.com/abseil/abseil-py) Python common libraries\n* Numpy\n* Tensorflow 1\n* Sonnet\n* Pandas\n* Six\n* Matplotlib\n* Seaborn\n\n\n## Citing this work\n\nIf you use this code in your work, please cite one of the accompanying papers:\n\n`@article{srr2019,\n  title = {Penalizing Side Effects using Stepwise Relative Reachability},\n  author = {Victoria Krakovna and Laurent Orseau and Ramana Kumar and Miljan Martic and Shane Legg},\n  journal = {CoRR},\n  volume = {abs/1806.01186},\n  year = {2019}\n}`\n\n`@inproceedings{ft2020,\n  title = {Avoiding Side Effects By Considering Future Tasks},\n  author = {Victoria Krakovna and Laurent Orseau and Richard Ngo and Miljan Martic and Shane Legg},\n  booktitle = {Neural Information Processing Systems},\n  year = {2020}\n}`\n"
  },
  {
    "path": "side_effects_penalties/__init__.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n"
  },
  {
    "path": "side_effects_penalties/agent.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Vanilla Q-Learning agent.\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport collections\nfrom collections import abc\nimport numpy as np\nfrom six.moves import range\n\n\nclass EpsilonGreedyPolicy(object):\n  \"\"\"Epsilon greedy policy for table value function lookup.\"\"\"\n\n  def __init__(self, value_function, actions):\n    \"\"\"Construct an epsilon greedy policy object.\n\n    Args:\n      value_function: agent value function as a dict.\n      actions: list of possible actions.\n\n    Raises:\n      ValueError: if `actions` agument is not an iterable.\n    \"\"\"\n    if not isinstance(actions, abc.Iterable):\n      raise ValueError('`actions` argument must be an iterable.')\n\n    self._value_function = value_function\n    self._actions = actions\n\n  def get_action(self, epsilon, state):\n    \"\"\"Get action following the e-greedy policy.\n\n    Args:\n      epsilon: probability of selecting a random action\n      state: current state of the game as a state/action tuple.\n\n    Returns:\n      Chosen action.\n    \"\"\"\n    if np.random.random() < epsilon:\n      return np.random.choice(self._actions)\n    else:\n      values = [self._value_function[(state, action)]\n                for action in self._actions]\n\n      max_value = max(values)\n      max_indices = [i for i, value in enumerate(values) if value == max_value]\n\n      return self._actions[np.random.choice(max_indices)]\n\n\nclass QLearning(object):\n  \"\"\"Q-learning agent.\"\"\"\n\n  def __init__(self, actions, alpha=0.1, epsilon=0.1, q_initialisation=0.0,\n               discount=0.99):\n    \"\"\"Create a Q-learning agent.\n\n    Args:\n      actions: a BoundedArraySpec that specifes full discrete action spec.\n      alpha: agent learning rate.\n      epsilon: agent exploration rate.\n      q_initialisation: float, used to initialise the value function.\n      discount: discount factor for rewards.\n    \"\"\"\n\n    self._value_function = collections.defaultdict(lambda: q_initialisation)\n    self._valid_actions = list(range(actions.minimum, actions.maximum + 1))\n    self._policy = EpsilonGreedyPolicy(self._value_function,\n                                       self._valid_actions)\n\n    # Hyperparameters.\n    self.alpha = alpha\n    self.epsilon = epsilon\n    self.discount = discount\n\n    # Episode internal variables.\n    self._current_action = None\n    self._current_state = None\n\n  def begin_episode(self):\n    \"\"\"Perform episode initialisation.\"\"\"\n    self._current_state = None\n    self._current_action = None\n\n  def _timestep_to_state(self, timestep):\n    return tuple(map(tuple, np.copy(timestep.observation['board'])))\n\n  def step(self, timestep):\n    \"\"\"Perform a single step in the environment.\"\"\"\n    # Get state observations.\n    state = self._timestep_to_state(timestep)\n\n    # This is one of the follow up states (i.e. not the initial state).\n    if self._current_state is not None:\n      self._update(timestep, state)\n\n    self._current_state = state\n    # Determine action.\n    self._current_action = self._policy.get_action(self.epsilon, state)\n    # Emit action.\n    return self._current_action\n\n  def _calculate_reward(self, timestep, unused_state):\n    \"\"\"Calculate reward: to be extended when impact penalty is added.\"\"\"\n    reward = timestep.reward\n    return reward\n\n  def _update(self, timestep, state):\n    \"\"\"Perform value function update.\"\"\"\n\n    reward = self._calculate_reward(timestep, state)\n\n    # Terminal state.\n    if not state:\n      delta = (reward - self._value_function[(self._current_state,\n                                              self._current_action)])\n    # Non-terminal state.\n    else:\n      max_action = self._policy.get_action(0, state)\n      delta = (\n          reward + self.discount * self._value_function[(state, max_action)] -\n          self._value_function[(self._current_state, self._current_action)])\n\n    self._value_function[(self._current_state,\n                          self._current_action)] += self.alpha * delta\n\n  def end_episode(self, timestep):\n    \"\"\"Performs episode cleanup.\"\"\"\n    # Update for the terminal state.\n    self._update(timestep, None)\n\n  @property\n  def value_function(self):\n    return self._value_function\n"
  },
  {
    "path": "side_effects_penalties/agent_with_penalties.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Q-learning with side effects penalties.\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport numpy as np\nfrom side_effects_penalties import agent\nfrom side_effects_penalties import side_effects_penalty as sep\n\n\nclass QLearningSE(agent.QLearning):\n  \"\"\"Q-learning agent with side-effects penalties.\"\"\"\n\n  def __init__(\n      self, actions, alpha=0.1, epsilon=0.1, q_initialisation=0.0,\n      baseline='start', dev_measure='none', dev_fun='truncation',\n      discount=0.99, value_discount=1.0, beta=1.0, num_util_funs=10,\n      exact_baseline=False, baseline_env=None, start_timestep=None,\n      state_size=None, nonterminal_weight=0.01):\n    \"\"\"Create a Q-learning agent with a side effects penalty.\n\n    Args:\n      actions: full discrete action spec.\n      alpha: agent learning rate.\n      epsilon: agent exploration rate.\n      q_initialisation: float, used to initialise the value function.\n      baseline: which baseline state to use ('start', 'inaction', 'stepwise').\n      dev_measure: deviation measure:\n        - \"none\" for no penalty,\n        - \"reach\" for unreachability,\n        - \"rel_reach\" for relative reachability,\n        - \"att_util\" for attainable utility,\n      dev_fun: what function to apply in the deviation measure ('truncation' or\n        'absolute' (for 'rel_reach' and 'att_util'), or 'none' (otherwise)).\n      discount: discount factor for rewards.\n      value_discount: discount factor for value functions in penalties.\n      beta: side effects penalty weight.\n      num_util_funs: number of random utility functions for attainable utility.\n      exact_baseline: whether to use an exact or approximate baseline.\n      baseline_env: copy of environment (with noops) for the exact baseline.\n      start_timestep: copy of starting timestep for the baseline.\n      state_size: the size of each state (flattened) for NN reachability.\n      nonterminal_weight: penalty weight on nonterminal states.\n\n    Raises:\n      ValueError: for incorrect baseline, dev_measure, or dev_fun\n    \"\"\"\n\n    super(QLearningSE, self).__init__(actions, alpha, epsilon, q_initialisation,\n                                      discount)\n\n    # Impact penalty: set dev_fun (f)\n    if 'rel_reach' in dev_measure or 'att_util' in dev_measure:\n      if dev_fun == 'truncation':\n        dev_fun = lambda diff: np.maximum(0, diff)\n      elif dev_fun == 'absolute':\n        dev_fun = np.abs\n      else:\n        raise ValueError('Deviation function not recognized')\n    else:\n      assert dev_fun == 'none'\n      dev_fun = None\n\n    # Impact penalty: create deviation measure\n    if dev_measure in {'reach', 'rel_reach'}:\n      deviation = sep.Reachability(value_discount, dev_fun, discount)\n    elif dev_measure == 'uvfa_rel_reach':\n      deviation = sep.UVFAReachability(value_discount, dev_fun, discount,\n                                       state_size)\n    elif dev_measure == 'att_util':\n      deviation = sep.AttainableUtility(value_discount, dev_fun, num_util_funs,\n                                        discount)\n    elif dev_measure == 'none':\n      deviation = sep.NoDeviation()\n    else:\n      raise ValueError('Deviation measure not recognized')\n\n    use_inseparable_rollout = (\n        dev_measure == 'reach' and baseline == 'stepwise')\n\n    # Impact penalty: create baseline\n    if baseline in {'start', 'inaction', 'stepwise'}:\n      baseline_class = getattr(sep, baseline.capitalize() + 'Baseline')\n      baseline = baseline_class(start_timestep, exact_baseline, baseline_env,\n                                self._timestep_to_state)\n    elif baseline == 'step_noroll':\n      baseline_class = getattr(sep, 'StepwiseBaseline')\n      baseline = baseline_class(start_timestep, exact_baseline, baseline_env,\n                                self._timestep_to_state, False)\n    else:\n      raise ValueError('Baseline not recognized')\n\n    self._impact_penalty = sep.SideEffectPenalty(\n        baseline, deviation, beta, nonterminal_weight, use_inseparable_rollout)\n\n  def begin_episode(self):\n    \"\"\"Perform episode initialisation.\"\"\"\n    super(QLearningSE, self).begin_episode()\n    self._impact_penalty.reset()\n\n  def _calculate_reward(self, timestep, state):\n    reward = super(QLearningSE, self)._calculate_reward(timestep, state)\n    return (reward - self._impact_penalty.calculate(\n        self._current_state, self._current_action, state))\n"
  },
  {
    "path": "side_effects_penalties/file_loading.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Helper functions for loading files.\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport os.path\nimport pandas as pd\n\n\ndef filename(env_name, noops, dev_measure, dev_fun, baseline, beta,\n             value_discount, seed, path='', suffix=''):\n  \"\"\"Generate filename for the given set of parameters.\"\"\"\n  noop_str = 'noops' if noops else 'nonoops'\n  seed_str = '_' + str(seed) if seed else ''\n  filename_template = ('{env_name}_{noop_str}_{dev_measure}_{dev_fun}' +\n                       '_{baseline}_beta_{beta}_vd_{value_discount}' +\n                       '{suffix}{seed_str}.csv')\n  full_path = os.path.join(path, filename_template.format(\n      env_name=env_name, noop_str=noop_str, dev_measure=dev_measure,\n      dev_fun=dev_fun, baseline=baseline, beta=beta,\n      value_discount=value_discount, suffix=suffix, seed_str=seed_str))\n  return full_path\n\n\ndef load_files(baseline, dev_measure, dev_fun, value_discount, beta, env_name,\n               noops, path, suffix, seed_list, final=True):\n  \"\"\"Load result files generated by run_experiment with the given parameters.\"\"\"\n  def try_loading(f, final):\n    if os.path.isfile(f):\n      df = pd.read_csv(f, index_col=0)\n      if final:\n        last_episode = max(df['episode'])\n        return df[df.episode == last_episode]\n      else:\n        return df\n    else:\n      return pd.DataFrame()\n  dataframes = []\n  for seed in seed_list:\n    f = filename(baseline=baseline, dev_measure=dev_measure, dev_fun=dev_fun,\n                 value_discount=value_discount, beta=beta, env_name=env_name,\n                 noops=noops, path=path, suffix=suffix, seed=int(seed))\n    df_part = try_loading(f, final)\n    dataframes.append(df_part)\n  df = pd.concat(dataframes)\n  return df\n"
  },
  {
    "path": "side_effects_penalties/plot_results.ipynb",
    "content": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"rINYEKJlYpQU\"\n      },\n      \"source\": [\n        \"Copyright 2019 DeepMind Technologies Limited.\\n\",\n        \"\\n\",\n        \"Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n\",\n        \"you may not use this file except in compliance with the License.\\n\",\n        \"You may obtain a copy of the License at\\n\",\n        \"\\n\",\n        \"https://www.apache.org/licenses/LICENSE-2.0\\n\",\n        \"\\n\",\n        \"Unless required by applicable law or agreed to in writing, software\\n\",\n        \"distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n\",\n        \"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n\",\n        \"See the License for the specific language governing permissions and\\n\",\n        \"limitations under the License.\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"KbCarv91XChI\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"from __future__ import absolute_import\\n\",\n        \"from __future__ import division\\n\",\n        \"from __future__ import print_function\\n\",\n        \"\\n\",\n        \"from google.colab import files\\n\",\n        \"import io\\n\",\n        \"import pandas as pd\\n\",\n        \"import seaborn as sns\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"irahOycBZM1E\"\n      },\n      \"source\": [\n        \"### Plot parameters (edit as needed)\\n\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"VeaB-Y9TYWCP\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"# Make a bar plot for average results from the final 100 episodes (True),\\n\",\n        \"# or make a learning curve plot (False)\\n\",\n        \"bar_plot = False\\n\",\n        \"\\n\",\n        \"# Compare different penalties using the best beta value for each penalty (True),\\n\",\n        \"# or compare different beta values for the same penalty (False):\\n\",\n        \"compare_penalties = False\\n\",\n        \"\\n\",\n        \"# If compare_penalties is False, specify the penalty parameters:\\n\",\n        \"dev_measure = 'rel_reach'\\n\",\n        \"dev_fun = 'truncation'\\n\",\n        \"value_discount = 0.99\\n\",\n        \"\\n\",\n        \"# Environment name\\n\",\n        \"env_name = 'box'\\n\",\n        \"\\n\",\n        \"# Filename suffix\\n\",\n        \"suffix = '' \"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"t8hYO3f2ZaHq\"\n      },\n      \"source\": [\n        \"### Plot settings\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"foyP_qrUeTsx\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"final_str = '_final' if bar_plot else ''\\n\",\n        \"if compare_penalties:\\n\",\n        \"  var = 'label'\\n\",\n        \"  x_label = 'deviation_measure'\\n\",\n        \"  legend_title = 'penalty'\\n\",\n        \"  palette = sns.color_palette()\\n\",\n        \"  filename = ('df_summary_penalties_' + env_name + final_str + suffix\\n\",\n        \"              + '.csv')\\n\",\n        \"else:\\n\",\n        \"  var = 'beta'\\n\",\n        \"  x_label = 'beta'\\n\",\n        \"  legend_title = 'beta'\\n\",\n        \"  palette = sns.cubehelix_palette()\\n\",\n        \"  filename = ('df_summary_betas_' + env_name + '_' + dev_measure + '_' + dev_fun \\n\",\n        \"              + '_' + str(value_discount) + final_str + suffix + '.csv')\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"5RakwQsFZc0V\"\n      },\n      \"source\": [\n        \"### Load summary data output by results_summary.py\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"PQ615uuGYLF3\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"uploaded = files.upload()\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"-FoI7u8BtYol\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"df = pd.read_csv(io.BytesIO(uploaded[filename]))\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"A7BGierpZi6t\"\n      },\n      \"source\": [\n        \"### Make bar plots\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"ch06DzzeXlGK\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"plot = sns.catplot(data=df, col='baseline', x=var, y='performance_smooth',\\n\",\n        \"                   kind='bar', height=4, aspect=1.3)\\n\",\n        \"axes = plot.axes.flatten()\\n\",\n        \"for ax in axes:\\n\",\n        \"  title = ax.get_title().split()\\n\",\n        \"  ax.set_title(title[2] + ' baseline')\\n\",\n        \"  ax.set_ylabel('performance')\\n\",\n        \"  ax.set_xlabel(x_label)\"\n      ]\n    },\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"colab_type\": \"text\",\n        \"id\": \"BU9PYyzOZlRu\"\n      },\n      \"source\": [\n        \"### Make learning curve plots\"\n      ]\n    },\n    {\n      \"cell_type\": \"code\",\n      \"execution_count\": 0,\n      \"metadata\": {\n        \"colab\": {},\n        \"colab_type\": \"code\",\n        \"id\": \"RRfU_2iIX-jo\"\n      },\n      \"outputs\": [],\n      \"source\": [\n        \"plot = sns.FacetGrid(df, col='baseline', size=5, aspect=1.3,\\n\",\n        \"                     sharey=False, sharex=False)\\n\",\n        \"plot.map_dataframe(sns.tsplot, time='episode', unit='seed', condition=var,\\n\",\n        \"                   value='performance_smooth', n_boot=100, color=palette,\\n\",\n        \"                   alpha=1.0, linewidth=1)\\n\",\n        \"plot.add_legend(title=legend_title)\\n\",\n        \"axes = plot.axes.flatten()\\n\",\n        \"for ax in axes:\\n\",\n        \"  title = ax.get_title().split()\\n\",\n        \"  ax.set_title(title[2] + ' baseline')\\n\",\n        \"  ax.set_ylabel('performance')\\n\",\n        \"  ax.set_xlabel('episode')\"\n      ]\n    }\n  ],\n  \"metadata\": {\n    \"colab\": {\n      \"collapsed_sections\": [],\n      \"name\": \"plot_results.ipynb\",\n      \"provenance\": [\n        {\n          \"file_id\": \"1a8ub19XYD4M-r5mGm0lKYTrNwTo1zF7Z\",\n          \"timestamp\": 1569850224175\n        }\n      ]\n    },\n    \"kernelspec\": {\n      \"display_name\": \"Python 2\",\n      \"name\": \"python2\"\n    }\n  },\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "side_effects_penalties/requirements.txt",
    "content": "absl-py==0.10.0\napparmor==2.13.4\nasn1crypto==0.24.0\nattrs==19.3.0\nbcrypt==3.1.7\nbeautifulsoup4==4.9.1\nblinker==1.4\nBrlapi==0.7.0\ncertifi==2020.4.5.1\nchardet==3.0.4\nchrome-gnome-shell==0.0.0\ncloudpickle==1.6.0\nCredentialKit==0.7\ncredentialkit-client==1\ncryptography==2.8\ncupshelpers==1.0\ndbus-python==1.2.16\ndecorator==4.4.2\ndistro==1.5.0\ndistro-info==0.23\ndm-tree==0.1.5\nduplicity==0.8.12.0\nentrypoints==0.3\nenum34==1.1.10\nevdev==1.3.0\nextras==1.0.0\nfasteners==0.14.1\nfixtures==3.0.0\nfuture==0.18.2\ngast==0.4.0\ngbulb==0.6.1\ngpg===1.13.1-unknown\nhg-evolve==10.1.0.dev0\nhtml5lib==1.0.1\nhttplib2==0.18.1\nidna==2.9\niniparse==0.4\nIPy==1.0\njeepney==0.4.3\nkeyring==18.0.1\nkeyrings.alt==3.4.0\nLibAppArmor==2.13.4\nlinecache2==1.0.0\nlockfile==0.12.2\nlouis==3.14.0\nlxml==4.5.0\nlz4==3.0.2+dfsg\nmercurial==5.5.1+348.80bf7b1ada15\nmonotonic==1.5\nmox3==1.0.0\nnetworkx==1.8.1\nnumpy==1.18.4\noauthlib==3.1.0\nobno==39\nolefile==0.46\nonboard==1.4.1\nPAM==0.4.2\npandas==1.1.3\nparamiko==2.6.0\npbr==5.4.5\npexpect==4.6.0\nPillow==7.2.0\nprotobuf==3.11.4\npsutil==5.6.7\npyasn1==0.4.2\npyasn1-modules==0.2.1\npycairo==1.16.2\npycrypto==2.6.1\npycups==1.9.73\npycurl==7.43.0.2\nPygments==2.3.1\nPyGObject==3.36.0\npyinotify==0.9.6\nPyJWT==1.7.1\nPyKCS11==1.5.8\nPyNaCl==1.4.0\npyOpenSSL==19.1.0\npyparsing==2.4.7\npysmbc==1.0.22\npython-apt==2.1.3\npython-augeas==0.5.0\npython-dateutil==2.8.1\npython-debian==0.1.37\npython-mimeparse==1.6.0\npython-networkmanager==2.1\npython-pam==1.8.4\npython-xapp==2.0.1\npython-xlib==0.27\npytz==2020.1\npyudev==0.21.0\npyusb==1.0.2\npyxattr==0.6.1\npyxdg==0.26\nPyYAML==5.3.1\nreboot-enforcer==0.1\nreconfigure==0.1.81\nrekey==1\nrequests==2.23.0\nscour==0.37\nSecretStorage==3.1.2\nsetproctitle==1.1.10\nsix==1.15.0\nsonnet==0.1.6\nsoupsieve==2.0.1\ntensorflow-probability==0.11.1\ntesttools==2.3.0\ntinycss==0.4\ntinycss2==1.0.2\ntraceback2==1.4.0\nufw==0.36\nunittest2==1.1.0\nurllib3==1.25.9\nwebencodings==0.5.1\nyoutube-dl==2020.6.16.1\n"
  },
  {
    "path": "side_effects_penalties/results_summary.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Plot results for different side effects penalties.\n\nLoads csv result files generated by `run_experiment' and outputs a summary data\nframe in a csv file to be used for plotting by plot_results.ipynb.\n\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport os.path\nfrom absl import app\nfrom absl import flags\nimport pandas as pd\nfrom side_effects_penalties.file_loading import load_files\n\n\nFLAGS = flags.FLAGS\n\nif __name__ == '__main__':  # Avoid defining flags when used as a library.\n  flags.DEFINE_string('path', '', 'File path.')\n  flags.DEFINE_string('input_suffix', '',\n                      'Filename suffix to use when loading data files.')\n  flags.DEFINE_string('output_suffix', '',\n                      'Filename suffix to use when saving files.')\n  flags.DEFINE_bool('bar_plot', True,\n                    'Make a data frame for a bar plot (True) ' +\n                    'or learning curves (False)')\n  flags.DEFINE_string('env_name', 'box', 'Environment name.')\n  flags.DEFINE_bool('noops', True, 'Whether the environment includes noops.')\n  flags.DEFINE_list('beta_list', [0.1, 0.3, 1.0, 3.0, 10.0, 30.0, 100.0],\n                    'List of beta values.')\n  flags.DEFINE_list('seed_list', [1], 'List of random seeds.')\n  flags.DEFINE_bool('compare_penalties', True,\n                    'Compare different penalties using the best beta value ' +\n                    'for each penalty (True), or compare different beta values '\n                    + 'for the same penalty (False).')\n  flags.DEFINE_enum('dev_measure', 'rel_reach',\n                    ['none', 'reach', 'rel_reach', 'att_util'],\n                    'Deviation measure (used if compare_penalties=False).')\n  flags.DEFINE_enum('dev_fun', 'truncation', ['truncation', 'absolute'],\n                    'Summary function for the deviation measure ' +\n                    '(used if compare_penalties=False)')\n  flags.DEFINE_float('value_discount', 0.99,\n                     'Discount factor for deviation measure value function ' +\n                     '(used if compare_penalties=False)')\n\n\ndef beta_choice(baseline, dev_measure, dev_fun, value_discount, env_name,\n                beta_list, seed_list, noops=False, path='', suffix=''):\n  \"\"\"Choose beta value that gives the highest final performance.\"\"\"\n  if dev_measure == 'none':\n    return 0.1\n  perf_max = float('-inf')\n  best_beta = 0.0\n  for beta in beta_list:\n    df = load_files(baseline=baseline, dev_measure=dev_measure,\n                    dev_fun=dev_fun, value_discount=value_discount, beta=beta,\n                    env_name=env_name, noops=noops, path=path, suffix=suffix,\n                    seed_list=seed_list)\n    if df.empty:\n      perf = float('-inf')\n    else:\n      perf = df['performance_smooth'].mean()\n    if perf > perf_max:\n      perf_max = perf\n      best_beta = beta\n  return best_beta\n\n\ndef penalty_label(dev_measure, dev_fun, value_discount):\n  \"\"\"Penalty label specifying design choices.\"\"\"\n  dev_measure_labels = {\n      'none': 'None', 'rel_reach': 'RR', 'att_util': 'AU', 'reach': 'UR'}\n  label = dev_measure_labels[dev_measure]\n  disc_lab = 'u' if value_discount == 1.0 else 'd'\n  dev_lab = ''\n  if dev_measure in ['rel_reach', 'att_util']:\n    dev_lab = 't' if dev_fun == 'truncation' else 'a'\n  if dev_measure != 'none':\n    label = label + '(' + disc_lab + dev_lab + ')'\n  return label\n\n\ndef make_summary_data_frame(\n    env_name, beta_list, seed_list, final=True, baseline=None, dev_measure=None,\n    dev_fun=None, value_discount=None, noops=False, compare_penalties=True,\n    path='', input_suffix='', output_suffix=''):\n  \"\"\"Make summary dataframe from multiple csv result files and output to csv.\"\"\"\n  # For each of the penalty parameters (baseline, dev_measure, dev_fun, and\n  # value_discount), compare a list of multiple values if the parameter is None,\n  # or use the provided parameter value if it is not None\n  baseline_list = ['start', 'inaction', 'stepwise', 'step_noroll']\n  if dev_measure is not None:\n    dev_measure_list = [dev_measure]\n  else:\n    dev_measure_list = ['none', 'reach', 'rel_reach', 'att_util']\n  dataframes = []\n  for dev_measure in dev_measure_list:\n    # These deviation measures don't have a deviation function:\n    if dev_measure in ['reach', 'none']:\n      dev_fun_list = ['none']\n    elif dev_fun is not None:\n      dev_fun_list = [dev_fun]\n    else:\n      dev_fun_list = ['truncation', 'absolute']\n    # These deviation measures must be discounted:\n    if dev_measure in ['none', 'att_util']:\n      value_discount_list = [0.99]\n    elif value_discount is not None:\n      value_discount_list = [value_discount]\n    else:\n      value_discount_list = [0.99, 1.0]\n    for baseline in baseline_list:\n      for vd in value_discount_list:\n        for devf in dev_fun_list:\n          # Choose the best beta for this set of penalty parameters if\n          # compare_penalties=True, or compare all betas otherwise\n          if compare_penalties:\n            beta = beta_choice(\n                baseline=baseline, dev_measure=dev_measure, dev_fun=devf,\n                value_discount=vd, env_name=env_name, noops=noops,\n                beta_list=beta_list, seed_list=seed_list, path=path,\n                suffix=input_suffix)\n            betas = [beta]\n          else:\n            betas = beta_list\n          for beta in betas:\n            label = penalty_label(\n                dev_measure=dev_measure, dev_fun=devf, value_discount=vd)\n            df_part = load_files(\n                baseline=baseline, dev_measure=dev_measure, dev_fun=devf,\n                value_discount=vd, beta=beta, env_name=env_name,\n                noops=noops, path=path, suffix=input_suffix, final=final,\n                seed_list=seed_list)\n            df_part = df_part.assign(\n                baseline=baseline, dev_measure=dev_measure, dev_fun=devf,\n                value_discount=vd, beta=beta, env_name=env_name, label=label)\n            dataframes.append(df_part)\n  df = pd.concat(dataframes, sort=False)\n  # Output summary data frame\n  final_str = '_final' if final else ''\n  if compare_penalties:\n    filename = ('df_summary_penalties_' + env_name + final_str +\n                output_suffix + '.csv')\n  else:\n    filename = ('df_summary_betas_' + env_name + '_' + dev_measure + '_' +\n                dev_fun + '_' + str(value_discount) + final_str + output_suffix\n                + '.csv')\n  f = os.path.join(path, filename)\n  df.to_csv(f)\n  return df\n\n\ndef main(unused_argv):\n  compare_penalties = FLAGS.compare_penalties\n  dev_measure = None if compare_penalties else FLAGS.dev_measure\n  dev_fun = None if compare_penalties else FLAGS.dev_fun\n  value_discount = None if compare_penalties else FLAGS.value_discount\n  make_summary_data_frame(\n      compare_penalties=compare_penalties, env_name=FLAGS.env_name,\n      noops=FLAGS.noops, final=FLAGS.bar_plot, dev_measure=dev_measure,\n      value_discount=value_discount, dev_fun=dev_fun, path=FLAGS.path,\n      input_suffix=FLAGS.input_suffix, output_suffix=FLAGS.output_suffix,\n      beta_list=FLAGS.beta_list, seed_list=FLAGS.seed_list)\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "side_effects_penalties/run_experiment.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Run a Q-learning agent with a side effects penalty.\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nfrom absl import app\nfrom absl import flags\nimport pandas as pd\nfrom six.moves import range\nfrom six.moves import zip\nfrom side_effects_penalties import agent_with_penalties\nfrom side_effects_penalties import training\nfrom side_effects_penalties.file_loading import filename\n\n\nFLAGS = flags.FLAGS\n\nif __name__ == '__main__':  # Avoid defining flags when used as a library.\n  # Side effects penalty settings\n  flags.DEFINE_enum('baseline', 'inaction',\n                    ['start', 'inaction', 'stepwise', 'step_noroll'],\n                    'Baseline.')\n  flags.DEFINE_enum('dev_measure', 'rel_reach',\n                    ['none', 'reach', 'rel_reach',\n                     'uvfa_rel_reach', 'att_util'],\n                    'Deviation measure.')\n  flags.DEFINE_enum('dev_fun', 'truncation', ['truncation', 'absolute'],\n                    'Summary function for the deviation measure.')\n  flags.DEFINE_float('discount', 0.99, 'Discount factor for rewards.')\n  flags.DEFINE_float('value_discount', 0.99,\n                     'Discount factor for deviation measure value function.')\n  flags.DEFINE_float('beta', 30.0, 'Weight for side effects penalty.')\n  flags.DEFINE_string('nonterminal', 'disc',\n                      'Penalty for nonterminal states relative to terminal'\n                      'states: none (0), full (1), or disc (1-discount).')\n  flags.DEFINE_bool('exact_baseline', False,\n                    'Compute the exact baseline using an environment copy.')\n  # Agent settings\n  flags.DEFINE_bool('anneal', True,\n                    'Whether to anneal the exploration rate from 1 to 0.')\n  flags.DEFINE_integer('num_episodes', 10000, 'Number of episodes.')\n  flags.DEFINE_integer('num_episodes_noexp', 0,\n                       'Number of episodes with no exploration.')\n  flags.DEFINE_integer('seed', 1, 'Random seed.')\n  # Environment settings\n  flags.DEFINE_string('env_name', 'box', 'Environment name.')\n  flags.DEFINE_bool('noops', True, 'Whether the environment includes noops.')\n  flags.DEFINE_integer('movement_reward', 0, 'Movement reward.')\n  flags.DEFINE_integer('goal_reward', 1, 'Reward for reaching a goal state.')\n  flags.DEFINE_integer('side_effect_reward', -1,\n                       'Hidden reward for causing side effects.')\n  # Settings for outputting results\n  flags.DEFINE_enum('mode', 'save', ['print', 'save'],\n                    'Print results or save to file.')\n  flags.DEFINE_string('path', '', 'File path.')\n  flags.DEFINE_string('suffix', '', 'Filename suffix.')\n\n\ndef run_experiment(\n    baseline, dev_measure, dev_fun, discount, value_discount, beta, nonterminal,\n    exact_baseline, anneal, num_episodes, num_episodes_noexp, seed,\n    env_name, noops, movement_reward, goal_reward, side_effect_reward,\n    mode, path, suffix):\n  \"\"\"Run agent and save or print the results.\"\"\"\n  performances = []\n  rewards = []\n  seeds = []\n  episodes = []\n  if 'rel_reach' not in dev_measure and 'att_util' not in dev_measure:\n    dev_fun = 'none'\n  nonterminal_weights = {'none': 0.0, 'disc': 1.0-discount, 'full': 1.0}\n  nonterminal_weight = nonterminal_weights[nonterminal]\n  reward, performance = training.run_agent(\n      baseline=baseline,\n      dev_measure=dev_measure,\n      dev_fun=dev_fun,\n      discount=discount,\n      value_discount=value_discount,\n      beta=beta,\n      nonterminal_weight=nonterminal_weight,\n      exact_baseline=exact_baseline,\n      anneal=anneal,\n      num_episodes=num_episodes,\n      num_episodes_noexp=num_episodes_noexp,\n      seed=seed,\n      env_name=env_name,\n      noops=noops,\n      movement_reward=movement_reward,\n      goal_reward=goal_reward,\n      side_effect_reward=side_effect_reward,\n      agent_class=agent_with_penalties.QLearningSE)\n  rewards.extend(reward)\n  performances.extend(performance)\n  seeds.extend([seed] * (num_episodes + num_episodes_noexp))\n  episodes.extend(list(range(num_episodes + num_episodes_noexp)))\n  if mode == 'save':\n    d = {'reward': rewards, 'performance': performances,\n         'seed': seeds, 'episode': episodes}\n    df = pd.DataFrame(d)\n    df1 = add_smoothed_data(df)\n    f = filename(env_name, noops, dev_measure, dev_fun, baseline, beta,\n                 value_discount, path=path, suffix=suffix, seed=seed)\n    df1.to_csv(f)\n  return reward, performance\n\n\ndef _smooth(values, window=100):\n  return values.rolling(window,).mean()\n\n\ndef add_smoothed_data(df, groupby='seed', window=100):\n  grouped = df.groupby(groupby)[['reward', 'performance']]\n  grouped = grouped.apply(_smooth, window=window).rename(columns={\n      'performance': 'performance_smooth', 'reward': 'reward_smooth'})\n  temp = pd.concat([df, grouped], axis=1)\n  return temp\n\n\ndef main(unused_argv):\n  reward, performance = run_experiment(\n      baseline=FLAGS.baseline,\n      dev_measure=FLAGS.dev_measure,\n      dev_fun=FLAGS.dev_fun,\n      discount=FLAGS.discount,\n      value_discount=FLAGS.value_discount,\n      beta=FLAGS.beta,\n      nonterminal=FLAGS.nonterminal,\n      exact_baseline=FLAGS.exact_baseline,\n      anneal=FLAGS.anneal,\n      num_episodes=FLAGS.num_episodes,\n      num_episodes_noexp=FLAGS.num_episodes_noexp,\n      seed=FLAGS.seed,\n      env_name=FLAGS.env_name,\n      noops=FLAGS.noops,\n      movement_reward=FLAGS.movement_reward,\n      goal_reward=FLAGS.goal_reward,\n      side_effect_reward=FLAGS.side_effect_reward,\n      mode=FLAGS.mode,\n      path=FLAGS.path,\n      suffix=FLAGS.suffix)\n  if FLAGS.mode == 'print':\n    print('Performance and reward in the last 10 steps:')\n    print(list(zip(performance, reward))[-10:-1])\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "side_effects_penalties/side_effects_penalty_test.py",
    "content": "# Copyright 2019 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============================================================================\n\"\"\"Tests for side_effects_penalty.\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nfrom absl.testing import absltest\nfrom absl.testing import parameterized\nimport numpy as np\nfrom six.moves import range\nfrom side_effects_penalties import side_effects_penalty\nfrom side_effects_penalties import training\nfrom side_effects_penalties.side_effects_penalty import Actions\n\n\nenvironments = ['box', 'vase', 'sushi_goal']\n\n\nclass SideEffectsTestCase(parameterized.TestCase):\n\n  def _timestep_to_state(self, timestep):\n    return tuple(map(tuple, np.copy(timestep.observation['board'])))\n\n  def _env_to_action_range(self, env):\n    action_spec = env.action_spec()\n    action_range = list(range(action_spec.minimum, action_spec.maximum + 1))\n    return action_range\n\n\nclass BaselineTestCase(SideEffectsTestCase):\n\n  def _create_baseline(self, env_name):\n    self._env, _ = training.get_env(env_name, True)\n    self._baseline_env, _ = training.get_env(env_name, True)\n    baseline_class = getattr(side_effects_penalty,\n                             self.__class__.__name__[:-4])  # remove 'Test'\n    self._baseline = baseline_class(\n        self._env.reset(), True, self._baseline_env, self._timestep_to_state)\n\n  def _test_trajectory(self, actions, key):\n    init_state = self._timestep_to_state(self._env.reset())\n    self._baseline.reset()\n    current_state = init_state\n    for action in actions:\n      timestep = self._env.step(action)\n      next_state = self._timestep_to_state(timestep)\n      baseline_state = self._baseline.calculate(current_state, action,\n                                                next_state)\n      comparison_dict = {\n          'current_state': current_state,\n          'next_state': next_state,\n          'init_state': init_state\n      }\n      self.assertEqual(baseline_state, comparison_dict[key])\n      current_state = next_state\n      if timestep.last():\n        return\n\n\nclass StartBaselineTest(BaselineTestCase):\n\n  @parameterized.parameters(*environments)\n  def testInit(self, env_name):\n    self._create_baseline(env_name)\n    self._test_trajectory([Actions.NOOP], 'init_state')\n\n  @parameterized.parameters(*environments)\n  def testTenNoops(self, env_name):\n    self._create_baseline(env_name)\n    self._test_trajectory([Actions.NOOP for _ in range(10)], 'init_state')\n\n\nclass InactionBaselineTest(BaselineTestCase):\n\n  box_env, _ = training.get_env('box', True)\n  box_action_spec = box_env.action_spec()\n\n  @parameterized.parameters(\n      *list(range(box_action_spec.minimum, box_action_spec.maximum + 1)))\n  def testStaticEnvOneAction(self, action):\n    self._create_baseline('box')\n    self._test_trajectory([action], 'init_state')\n\n  def testStaticEnvRandomActions(self):\n    self._create_baseline('box')\n    num_steps = np.random.randint(low=1, high=20)\n    action_range = self._env_to_action_range(self._env)\n    actions = [np.random.choice(action_range) for _ in range(num_steps)]\n    self._test_trajectory(actions, 'init_state')\n\n  @parameterized.parameters(*environments)\n  def testInactionPolicy(self, env_name):\n    self._create_baseline(env_name)\n    num_steps = np.random.randint(low=1, high=20)\n    self._test_trajectory([Actions.NOOP for _ in range(num_steps)],\n                          'next_state')\n\n\nclass StepwiseBaselineTest(BaselineTestCase):\n\n  def testStaticEnvRandomActions(self):\n    self._create_baseline('box')\n    action_range = self._env_to_action_range(self._env)\n    num_steps = np.random.randint(low=1, high=20)\n    actions = [np.random.choice(action_range) for _ in range(num_steps)]\n    self._test_trajectory(actions, 'current_state')\n\n  @parameterized.parameters(*environments)\n  def testInactionPolicy(self, env_name):\n    self._create_baseline(env_name)\n    num_steps = np.random.randint(low=1, high=20)\n    self._test_trajectory([Actions.NOOP for _ in range(num_steps)],\n                          'next_state')\n\n  @parameterized.parameters(*environments)\n  def testInactionRollout(self, env_name):\n    self._create_baseline(env_name)\n    init_state = self._timestep_to_state(self._env.reset())\n    self._baseline.reset()\n    action = Actions.NOOP\n    state1 = init_state\n    trajectory = [init_state]\n    for _ in range(10):\n      trajectory.append(self._timestep_to_state(self._env.step(action)))\n      state2 = trajectory[-1]\n      self._baseline.calculate(state1, action, state2)\n      state1 = state2\n    chain = self._baseline.rollout_func(init_state)\n    self.assertEqual(chain, trajectory[:len(chain)])\n    if len(chain) < len(trajectory):\n      self.assertEqual(trajectory[len(chain) - 1], trajectory[len(chain)])\n\n  def testStaticRollouts(self):\n    self._create_baseline('box')\n    action_range = self._env_to_action_range(self._env)\n    num_steps = np.random.randint(low=1, high=20)\n    actions = [np.random.choice(action_range) for _ in range(num_steps)]\n    state1 = self._timestep_to_state(self._env.reset())\n    states = [state1]\n    self._baseline.reset()\n    for action in actions:\n      state2 = self._timestep_to_state(self._env.step(action))\n      states.append(state2)\n      self._baseline.calculate(state1, action, state2)\n      state1 = state2\n    i1, i2 = np.random.choice(len(states), 2)\n    chain = self._baseline.parallel_inaction_rollouts(states[i1], states[i2])\n    self.assertLen(chain, 1)\n    chain1 = self._baseline.rollout_func(states[i1])\n    self.assertLen(chain1, 1)\n    chain2 = self._baseline.rollout_func(states[i2])\n    self.assertLen(chain2, 1)\n\n  @parameterized.parameters(('parallel', 'vase'), ('parallel', 'sushi'),\n                            ('inaction', 'vase'), ('inaction', 'sushi'))\n  def testConveyorRollouts(self, which_rollout, env_name):\n    self._create_baseline(env_name)\n    init_state = self._timestep_to_state(self._env.reset())\n    self._baseline.reset()\n    action = Actions.NOOP\n    state1 = init_state\n    init_state_next = self._timestep_to_state(self._env.step(action))\n    state2 = init_state_next\n    self._baseline.calculate(state1, action, state2)\n    state1 = state2\n    for _ in range(10):\n      state2 = self._timestep_to_state(self._env.step(action))\n      self._baseline.calculate(state1, action, state2)\n      state1 = state2\n    if which_rollout == 'parallel':\n      chain = self._baseline.parallel_inaction_rollouts(init_state,\n                                                        init_state_next)\n    else:\n      chain = self._baseline.rollout_func(init_state)\n    self.assertLen(chain, 5)\n\n\nclass NoDeviationTest(SideEffectsTestCase):\n\n  def _random_initial_transition(self):\n    env_name = np.random.choice(environments)\n    noops = np.random.choice([True, False])\n    env, _ = training.get_env(env_name, noops)\n    action_range = self._env_to_action_range(env)\n    action = np.random.choice(action_range)\n    state1 = self._timestep_to_state(env.reset())\n    state2 = self._timestep_to_state(env.step(action))\n    return (state1, state2)\n\n  def testNoDeviation(self):\n    deviation = side_effects_penalty.NoDeviation()\n    state1, state2 = self._random_initial_transition()\n    self.assertEqual(deviation.calculate(state1, state2), 0)\n\n  def testNoDeviationUpdate(self):\n    deviation = side_effects_penalty.NoDeviation()\n    state1, state2 = self._random_initial_transition()\n    deviation.update(state1, state2)\n    self.assertEqual(deviation.calculate(state1, state2), 0)\n\n\nclass UnreachabilityTest(SideEffectsTestCase):\n\n  @parameterized.named_parameters(('Discounted', 0.99), ('Undiscounted', 1.0))\n  def testUnreachabilityCycle(self, gamma):\n    # Reachability with no dev_fun means unreachability\n    deviation = side_effects_penalty.Reachability(value_discount=gamma)\n    env, _ = training.get_env('box', False)\n\n    state0 = self._timestep_to_state(env.reset())\n    state1 = self._timestep_to_state(env.step(Actions.LEFT))\n    # deviation should not be calculated before calling update\n\n    deviation.update(state0, state1)\n    self.assertEqual(deviation.calculate(state0, state0), 1.0 - 1.0)\n    self.assertEqual(deviation.calculate(state0, state1), 1.0 - gamma)\n    self.assertEqual(deviation.calculate(state1, state0), 1.0 - 0.0)\n\n    state2 = self._timestep_to_state(env.step(Actions.RIGHT))\n    self.assertEqual(state0, state2)\n\n    deviation.update(state1, state2)\n    self.assertEqual(deviation.calculate(state0, state0), 1.0 - 1.0)\n    self.assertEqual(deviation.calculate(state0, state1), 1.0 - gamma)\n    self.assertEqual(deviation.calculate(state1, state0), 1.0 - gamma)\n    self.assertEqual(deviation.calculate(state1, state1), 1.0 - 1.0)\n\n\nif __name__ == '__main__':\n  absltest.main()\n"
  },
  {
    "path": "sketchy/README.md",
    "content": "# Sketchy data\n\nThis is a dataset accompanying the paper\n[Scaling data-driven robotics with reward sketching and batch reinforcement learning](https://arxiv.org/abs/1909.12200).\nIf you use this dataset in your research please cite\n\n```\n@article{cabi2019,\n  title={Scaling data-driven robotics with reward sketching and batch reinforcement learning},\n  author={Serkan Cabi and\n    Sergio G{\\'o}mez Colmenarejo and\n    Alexander Novikov and\n    Ksenia Konyushkova and\n    Scott Reed and\n    Rae Jeong and\n    Konrad Zolna and\n    Yusuf Aytar and\n    David Budden and\n    Mel Vecerik and\n    Oleg Sushkov and\n    David Barker and\n    Jonathan Scholz and\n    Misha Denil and\n    Nando de Freitas and\n    Ziyu Wang},\n  journal={arXiv preprint arXiv:1909.12200},\n  year={2019}\n}\n```\n\n## See example data\n\nThere is a small amount of example data included in this repository.  To examine\nit, run the following commands from the repository root (i.e. one level up from\nthis folder):\n\n```\npython3 -m venv .sketchy_env\nsource .sketchy_env/bin/activate\npip install --upgrade pip\npip install -r sketchy/requirements.txt\npython -m sketchy.dataset_example --show_images\n```\n\nFor an example of loading rewards for episodes see `reward_example.py`.\n\n## Download the full dataset\n\nRun `./download.sh path/to/download/folder` to download the full dataset.  The\nfull dataset requires ~5.0TB of disk space to download, and extracts to approximately the same size.\n\nYou can edit `download.sh` to download subsets of the data.\n\nOnce the dataset has been downloaded it can be extracted wtih\n`./extract.sh path/to/download/folder`.\n\n### Named subsets\n\nWe provide several named subsets of the full dataset, which can be easily\ndownloaded on their own.  See `download.sh` for a description of the subsets\nthat are provided.\n\nThe episodes in each of these named subsets are identified by a tag in the\nmetadata.\nIf you would like to curate your own subset you can download the metadata\nfile and inspect the `ArchiveFiles` table (see below) to figure out which\narchive files contain the episodes you want.\n\n# Dataset Contents\n\nThe dataset is distribted as a *metadata file* (`metadata.sqlite`) and a\ncollection of *archive files* (with names ending in `.tar.bz2`).\n\nThe metadata file contains information about the episodes, including annotated\nrewards for a subset of the episodes.\n\nEach archive file contains several *episode files*, which have names like\n`10000313341320364033_b615a417-ce34-41a8-8411-2a1ce3f3bd07`.\n\nEach episode file is a\n[tfrecord](https://www.tensorflow.org/tutorials/load_data/tfrecord) file,\ncontaining a sequence of *timesteps* for a single episode.\n\nEach timestep is a `tf.train.Example` proto containing features corresponding to\nthe observations and actions from a particular point in time.\n\n## Metadata\n\nThe metadata file, `metadata.sqlite`, is a sqlite database containing metadata\ndescribing the contents of the files in the dataset.\n\nThe following sections describe the important metadata tables.  You can find the\nfull schema by running\n\n```\nsqlite3 metadata.sqlite <<< .schema\n```\n\n### Episodes\n\n- `EpisodeId`: A string of digits that uniquely identifies the episode.\n- `TaskId`: A human readable name for the task corresponding to the behavior\n  that generated the episode.\n- `DataPath`: The name of the episode file holding the data for this episode.\n- `EpisodeType`: A string describing the type of policy that generated the\n  episode.  Possible values are:\n  - `EPISODE_ROBOT_AGENT`: The behavior policy is a learned or scripted\n    controller.\n  - `EPISODE_ROBOT_TELEOPERATION`: The behavior policy is a human teleoperating\n    the robot.\n  - `EPISODE_ROBOT_DAGGER`: The behavior policy is a mix of controller and human\n    generated actions.\n- `Timestamp`: A unix timestamp recording when the episode was generated.\n\n### EpisodeTags\n\n- `EpisodeId`: Foreign key into the `Episodes` table.\n- `Tag`: A human readable identifier for some aspect of the episode (e.g. which\n  object set is used).\n\n### RewardSequences\n\n- `EpisodeId`: Foreign key into the `Episodes` table.\n- `RewardSequenceId`: Distinguishes multiple rewards for the same episode.\n- `RewardTaskId`: A human readable name of the task for this reward signal.\n  Typically the same as the corresponding `TaskId` in the `Episodes` table.\n- `Type`: A string describing the type of reward signal.  Currently the only\n  value is `REWARD_SKETCH`.\n- `Values`: A sequence of float32 values, packed as a binary blob.  There is one\n  float value for each frame of the episode, corresponding to the annotated\n  reward.\n\n### ArchiveFiles\n\n- `EpisodeId`: Foreign key into the `Episodes` table.\n- `ArchiveFile`: Name of the archive file containing the corresponding episode.\n\n## Episodes\n\nEach episode file is a\n[tfrecords](https://www.tensorflow.org/tutorials/load_data/tfrecord) file\ncontaining a sequence of timesteps, encoded as\n[`tf.train.Example`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/example/example.proto)\nprotos.\n\nEach episode file contains a single episode, and each timestep within an episode\ncontains all of the observations and actions associated with a that timestep as\na single `tf.train.Example`. Within each episode file the timesteps are\ntemporally ordered, so reading a file from beginning to end will visit all of\nthe timesteps from the episode in the order they occurred.\n\nObservations and actions occur at 10Hz.\n\n## Timesteps\n\nEach timestep is a collection of observations and actions. Actions stored with a\ntimestep correspond to actions taken in response to the observations they are\nstored with.\n\nFor a description of the shapes and types of the timestep data, see the data\nloader in `sketchy.py`.\n\n# Dataset Metadata\n\nThe following table is necessary for this dataset to be indexed by search\nengines such as <a href=\"https://g.co/datasetsearch\">Google Dataset Search</a>.\n<div itemscope itemtype=\"http://schema.org/Dataset\">\n<table>\n  <tr>\n    <th>property</th>\n    <th>value</th>\n  </tr>\n  <tr>\n    <td>name</td>\n    <td><code itemprop=\"name\">Sketchy</code></td>\n  </tr>\n  <tr>\n    <td>url</td>\n    <td><code itemprop=\"url\">https://github.com/deepmind/deepmind-research/tree/master/sketchy</code></td>\n  </tr>\n  <tr>\n    <td>sameAs</td>\n    <td><code itemprop=\"sameAs\">https://github.com/deepmind/deepmind-research/tree/master/sketchy</code></td>\n  </tr>\n  <tr>\n    <td>description</td>\n    <td><code itemprop=\"description\">\n      Data accompanying\n[Scaling data-driven robotics with reward sketching and batch reinforcement learning](https://arxiv.org/abs/1909.12200).\n      </code></td>\n  </tr>\n  <tr>\n    <td>provider</td>\n    <td>\n      <div itemscope itemtype=\"http://schema.org/Organization\" itemprop=\"provider\">\n        <table>\n          <tr>\n            <th>property</th>\n            <th>value</th>\n          </tr>\n          <tr>\n            <td>name</td>\n            <td><code itemprop=\"name\">DeepMind</code></td>\n          </tr>\n          <tr>\n            <td>sameAs</td>\n            <td><code itemprop=\"sameAs\">https://en.wikipedia.org/wiki/DeepMind</code></td>\n          </tr>\n        </table>\n      </div>\n    </td>\n  </tr>\n  <tr>\n    <td>citation</td>\n    <td><code itemprop=\"citation\">https://identifiers.org/arxiv:1909.12200</code></td>\n  </tr>\n</table>\n</div>\n"
  },
  {
    "path": "sketchy/__init__.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n"
  },
  {
    "path": "sketchy/dataset_example.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Example of loading sketchy data in tensorflow.\"\"\"\n\nfrom absl import app\nfrom absl import flags\nimport matplotlib.pyplot as plt\nimport tensorflow.compat.v2 as tf\n\nfrom sketchy import sketchy\n\nflags.DEFINE_boolean('show_images', False, 'Enable to show example images.')\nFLAGS = flags.FLAGS\n\n\ndef main(argv):\n  if len(argv) > 1:\n    raise app.UsageError('Too many command-line arguments.')\n\n  tf.enable_v2_behavior()\n\n  # The example file contains only a few timesteps from a single episode.\n  dataset = sketchy.load_frames('sketchy/example_data.tfrecords')\n  dataset = dataset.prefetch(5)\n\n  for example in dataset:\n    print('---')\n    for name, value in sorted(example.items()):\n      print(name, value.dtype, value.shape)\n\n    if FLAGS.show_images:\n      plt.imshow(example['pixels/basket_front_left'])\n      plt.show()\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "sketchy/download.sh",
    "content": "#!/bin/bash\n\n# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Use this script to download the sketchy dataset.\n#\n# You will need to extract the archive files before using them.  Each archive\n# (except for the last in each group) contains 100 episodes.\n\nif [ -z \"$1\" ]; then\n  echo \"Usage: $(basename \"$0\") download_folder\" >&2\n  exit 1\nfi\n\nDOWNLOAD_FOLDER=\"$1\"\nNUM_PARALLEL_DOWNLOADS=\"4\"  # set the number of download workers\nDATA_URL=\"https://storage.googleapis.com/sketchy-data\"\n\nfunction download_shards {\n  # Usage: download_shards prefix num_shards\n  local PREFIX=\"$1\"\n  local LIMIT=\"$(printf \"%05d\" \"$2\")\"\n  # Avoid leading zeros or this will be interpreted as an octal number.\n  local MAX=\"$((\"$2\"-1))\"\n\n  (\n    for IDX in $(seq -f'%05.0f' 0 \"$MAX\"); do\n      echo \"${PREFIX}-${IDX}-of-${LIMIT}.tar.bz2\"\n    done\n  ) | xargs -I{} -n1 -P\"${NUM_PARALLEL_DOWNLOADS}\" \\\n    curl \"${DATA_URL}/{}\" --output \"${DOWNLOAD_FOLDER}/{}\"\n}\n\n# This is the metadata. This file is small, you always want it.\ncurl \"${DATA_URL}/metadata.sqlite\" --output \"${DOWNLOAD_FOLDER}/metadata.sqlite\"\n\n# Download these files if you want all and only the episodes with an associated\n# reward sequence.\n#\n# sqlite3 metadata.sqlite <<EOF\n# SELECT DISTINCT(Episodes.DataPath)\n# FROM Episodes, RewardSequences\n# WHERE Episodes.EpisodeId = RewardSequences.EpisodeId\n# EOF\n#\n# If you are downloading the full dataset then you do not need these files. The\n# episodes they contain are included in the other subsets.\n#\n# download_shards episodes_with_rewards 58\n\n# These files contain a curated set of high quality demonstrations for the\n# lift_green task.\n#\n# sqlite3 metadata.sqlite <<EOF\n# SELECT Episodes.DataPath\n# FROM Episodes, EpisodeTags\n# WHERE EpisodeTags.Tag='lift_green__demos'\n# AND Episodes.EpisodeId = EpisodeTags.EpisodeId\n# EOF\n#\ndownload_shards lift_green__demos 2\n\n# These files contain a broader set of episodes for the lift_green task.  If you\n# download these you should also download the lift_green__demos files.\n#\n# sqlite3 metadata.sqlite <<EOF\n# SELECT Episodes.DataPath\n# FROM Episodes, EpisodeTags\n# WHERE EpisodeTags.Tag='lift_green__episodes'\n# AND Episodes.EpisodeId = EpisodeTags.EpisodeId\n# AND EpisodeTags.EpisodeId NOT IN (\n#   SELECT ET.EpisodeId\n#   FROM EpisodeTags AS ET\n#   WHERE ET.Tag IN ('lift_green__demos')\n#   )\n# EOF\n#\ndownload_shards lift_green__episodes 70\n\n# These files contain a curated set of high quality demonstrations for the\n# stack_green_on_red task.\n#\n# sqlite3 metadata.sqlite <<EOF\n# SELECT Episodes.DataPath\n# FROM Episodes, EpisodeTags\n# WHERE EpisodeTags.Tag='stack_green_on_red__demos'\n# AND Episodes.EpisodeId = EpisodeTags.EpisodeId\n# AND EpisodeTags.EpisodeId NOT IN (\n#   SELECT ET.EpisodeId\n#   FROM EpisodeTags AS ET\n#   WHERE ET.Tag IN ('lift_green__demos', 'lift_green__episodes')\n#   )\n# EOF\n#\ndownload_shards stack_green_on_red__demos 2\n\n# These files contain a broader set of episodes for the stack_green_on_red task.\n# If you download these you should also download the stack_green_on_red__demos\n# files.\n#\n# sqlite3 metadata.sqlite <<EOF\n# SELECT Episodes.DataPath\n# FROM Episodes, EpisodeTags\n# WHERE EpisodeTags.Tag='stack_green_on_red__episodes'\n# AND Episodes.EpisodeId = EpisodeTags.EpisodeId\n# AND EpisodeTags.EpisodeId NOT IN (\n#   SELECT ET.EpisodeId\n#   FROM EpisodeTags AS ET\n#   WHERE ET.Tag IN (\n#     'lift_green__demos',\n#     'lift_green__episodes',\n#     'stack_green_on_red__demos')\n#   )\n# EOF\n#\ndownload_shards stack_green_on_red__episodes 101\n\n# These files contain a large variety of episodes using the same object set as\n# the lift_green and stack_green_on_red tasks.  There are many tasks represented\n# here, and the episode quality is highly variable.\n#\n# sqlite3 metadata.sqlite <<EOF\n# SELECT Episodes.DataPath\n# FROM Episodes, EpisodeTags\n# WHERE EpisodeTags.Tag='rgb30__all'\n# AND Episodes.EpisodeId = EpisodeTags.EpisodeId\n# AND EpisodeTags.EpisodeId NOT IN (\n#   SELECT ET.EpisodeId\n#   FROM EpisodeTags AS ET\n#   WHERE ET.Tag IN (\n#     'lift_green__demos',\n#     'lift_green__episodes',\n#     'stack_green_on_red__demos',\n#     'stack_green_on_red__episodes')\n#   )\n# EOF\n#\ndownload_shards rgb30__all 205\n\n# These files contain a broad set of episodes for the pull_cloth_up task.\n#\n# sqlite3 metadata.sqlite <<EOF\n# SELECT Episodes.DataPath\n# FROM Episodes, EpisodeTags\n# WHERE EpisodeTags.Tag='pull_cloth_up__episodes'\n# AND Episodes.EpisodeId = EpisodeTags.EpisodeId\n# EOF\n#\ndownload_shards pull_cloth_up__episodes 133\n\n# These files contain a large variety of episodes using the same object set as\n# the pull_cloth_up task.\n#\n# sqlite3 metadata.sqlite <<EOF\n# SELECT Episodes.DataPath\n# FROM Episodes, EpisodeTags\n# WHERE EpisodeTags.Tag='deform8__all'\n# AND Episodes.EpisodeId = EpisodeTags.EpisodeId\n# AND EpisodeTags.EpisodeId NOT IN (\n#   SELECT ET.EpisodeId\n#   FROM EpisodeTags AS ET\n#   WHERE ET.Tag IN ('pull_cloth_up__episodes')\n#   )\n# EOF\n#\ndownload_shards deform8__all 233\n"
  },
  {
    "path": "sketchy/extract.sh",
    "content": "#!/bin/bash\n\n# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Use this script to extract the downloaded sketchy dataset.\n\nif [ -z \"$1\" ]; then\n  echo \"Usage: $(basename \"$0\") download_folder\" >&2\n  exit 1\nfi\n\nDOWNLOAD_FOLDER=\"$1\"\nNUM_PARALLEL_WORKERS=\"$(grep processor /proc/cpuinfo | wc -l)\"\n\ncd \"$DOWNLOAD_FOLDER\"\n\nfind . -name '*.tar.bz2' -print0 \\\n  | xargs -0 -n1 -P\"$NUM_PARALLEL_WORKERS\" tar xf\n"
  },
  {
    "path": "sketchy/metadata_schema.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Sqlalchemy schema for the metadata db.\"\"\"\n\nimport sqlalchemy\n\nfrom sqlalchemy.ext import declarative\n\n\nColumn = sqlalchemy.Column\nInteger = sqlalchemy.Integer\nString = sqlalchemy.String\nLargeBinary = sqlalchemy.LargeBinary\nForeignKey = sqlalchemy.ForeignKey\n\n# pylint: disable=invalid-name\n\n# https://docs.sqlalchemy.org/en/13/orm/tutorial.html\n\nBase = declarative.declarative_base()\n\n\nEpisodeTag = sqlalchemy.Table(\n    'EpisodeTags', Base.metadata,\n    Column(\n        'EpisodeId', String, ForeignKey('Episodes.EpisodeId'),\n        primary_key=True),\n    Column('Tag', String, ForeignKey('Tags.Name'), primary_key=True))\n\"\"\"Table relating episodes and tags.\n\nAttributes:\n  EpisodeId: A string of digits that uniquely identifies the episode.\n  Tag: Human readable tag name.\n\"\"\"\n\n\nclass Episode(Base):\n  \"\"\"Table describing individual episodes.\n\n  Attributes:\n    EpisodeId: A string of digits that uniquely identifies the episode.\n    TaskId: A human readable name for the task corresponding to the behavior\n        that generated the episode.\n    DataPath: The name of the episode file holding the data for this episode.\n    Timestamp: A unix timestamp recording when the episode was generated.\n    EpisodeType: A string describing the type of policy that generated the\n        episode.  Possible values are:\n        - `EPISODE_ROBOT_AGENT`: The behavior policy is a learned or scripted\n          controller.\n        - `EPISODE_ROBOT_TELEOPERATION`: The behavior policy is a human\n           teleoperating the robot.\n        - `EPISODE_ROBOT_DAGGER`: The behavior policy is a mix of controller\n          and human generated actions.\n    Tags: A list of tags attached to this episode.\n    Rewards: A list of `RewardSequence`s containing sketched rewards for this\n      episode.\n  \"\"\"\n  __tablename__ = 'Episodes'\n  EpisodeId = Column(String, primary_key=True)\n  TaskId = Column(String)\n  DataPath = Column(String)\n  Timestamp = Column(Integer)\n  EpisodeType = Column(String)\n  Tags = sqlalchemy.orm.relationship(\n      'Tag', secondary=EpisodeTag, back_populates='Episodes')\n  Rewards = sqlalchemy.orm.relationship(\n      'RewardSequence', backref='Episode')\n\n\nclass Tag(Base):\n  \"\"\"Table of tags that can be attached to episodes.\n\n  Attributes:\n    Name: Human readable tag name.\n    Episodes: The epsidoes that have been annotated with this tag.\n  \"\"\"\n  __tablename__ = 'Tags'\n  Name = Column(String, primary_key=True)\n  Episodes = sqlalchemy.orm.relationship(\n      'Episode', secondary=EpisodeTag, back_populates='Tags')\n\n\nclass RewardSequence(Base):\n  \"\"\"Table describing reward sequences for episodes.\n\n  Attributes:\n    EpisodeId: Foreign key into the `Episodes` table.\n    RewardSequenceId: Distinguishes multiple rewards for the same episode.\n    RewardTaskId: A human readable name of the task for this reward signal.\n        Typically the same as the corresponding `TaskId` in the `Episodes`\n        table.\n    Type: A string describing the type of reward signal.  Currently the only\n        value is `REWARD_SKETCH`.\n    User: The name of the user who produced this reward sequence.\n    Values: A sequence of float32 values, packed as a binary blob.  There is one\n        float value for each frame of the episode, corresponding to the\n        annotated reward.\n  \"\"\"\n  __tablename__ = 'RewardSequences'\n  EpisodeId = Column(\n      'EpisodeId', String, ForeignKey('Episodes.EpisodeId'), primary_key=True)\n  RewardSequenceId = Column(String, primary_key=True)\n  RewardTaskId = Column('RewardTaskId', String)\n  Type = Column(String)\n  User = Column(String)\n  Values = Column(LargeBinary)\n\n\nclass ArchiveFile(Base):\n  \"\"\"Table describing where episodes are stored in archives.\n\n  This information is relevant if you want to download or extract a specific\n  episode from the archives they are distributed in.\n\n  Attributes:\n    EpisodeId: Foreign key into the `Episodes` table.\n    ArchiveFile: Name of the archive file containing the corresponding episode.\n  \"\"\"\n  __tablename__ = 'ArchiveFiles'\n  EpisodeId = Column(\n      'EpisodeId', String, ForeignKey('Episodes.EpisodeId'), primary_key=True)\n  ArchiveFile = Column(String)\n\n\n# pylint: enable=invalid-name\n"
  },
  {
    "path": "sketchy/requirements.txt",
    "content": "absl-py==0.9.0\nastor==0.8.1\ncachetools==4.0.0\ncertifi==2019.11.28\nchardet==3.0.4\ncycler==0.10.0\ngast==0.2.2\ngoogle-auth==1.10.0\ngoogle-auth-oauthlib==0.4.1\ngoogle-pasta==0.1.8\ngrpcio==1.26.0\nh5py==2.10.0\nidna==2.8\nKeras-Applications==1.0.8\nKeras-Preprocessing==1.1.0\nkiwisolver==1.1.0\nMarkdown==3.1.1\nmatplotlib==3.1.2\nnumpy==1.18.1\noauthlib==3.1.0\nopt-einsum==3.1.0\nprotobuf==3.11.2\npyasn1==0.4.8\npyasn1-modules==0.2.7\npyparsing==2.4.6\npython-dateutil==2.8.1\nrequests==2.22.0\nrequests-oauthlib==1.3.0\nrsa==4.0\nsix==1.13.0\nSQLAlchemy==1.3.12\ntensorboard==2.0.2\ntensorflow==2.0.0\ntensorflow-estimator==2.0.1\ntermcolor==1.1.0\nurllib3==1.25.7\nWerkzeug==0.16.0\nwrapt==1.11.2\n"
  },
  {
    "path": "sketchy/reward_example.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Example of loading rewards from the metadata file.\"\"\"\n\nfrom absl import app\nfrom absl import flags\nimport numpy as np\nimport sqlalchemy\n\nfrom sketchy import metadata_schema\n\nflags.DEFINE_string(\n    'metadata', '/tmp/metadata.sqlite', 'Path to metadata file.')\n\nFLAGS = flags.FLAGS\n\n\ndef main(argv):\n  if len(argv) > 1:\n    raise app.UsageError('Too many command-line arguments.')\n\n  engine = sqlalchemy.create_engine('sqlite:///' + FLAGS.metadata)\n  session = sqlalchemy.orm.sessionmaker(bind=engine)()\n\n  episodes = session.query(metadata_schema.Episode).join(\n      metadata_schema.RewardSequence).limit(5)\n\n  for episode in episodes:\n    rewards = np.frombuffer(episode.Rewards[0].Values, dtype=np.float32)\n    print('---')\n    print(f'Episode: {episode.EpisodeId}')\n    print(f'Episode file: {episode.DataPath}')\n    print(f'Reward type: {episode.Rewards[0].Type}')\n    print(f'Reward values: {rewards}')\n\n\nif __name__ == '__main__':\n  app.run(main)\n"
  },
  {
    "path": "sketchy/run.sh",
    "content": "#!/bin/bash\n\n# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\npython3 -m venv /tmp/sketchy_env\nsource /tmp/sketchy_env/bin/activate\npip install --upgrade pip\npip install -r sketchy/requirements.txt\npython -m sketchy.dataset_example --noshow_images\n"
  },
  {
    "path": "sketchy/sketchy.py",
    "content": "# Copyright 2020 DeepMind Technologies Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Interface for loading sketchy data into tensorflow.\"\"\"\n\nimport tensorflow.compat.v2 as tf\n\n\ndef load_frames(filenames, num_parallel_reads=1, num_map_threads=None):\n  if not num_map_threads:\n    num_map_threads = num_parallel_reads\n  dataset = tf.data.TFRecordDataset(\n      filenames, num_parallel_reads=num_parallel_reads)\n  return dataset.map(_parse_example, num_parallel_calls=num_map_threads)\n\n\n_FEATURES = {\n    # Actions\n    'actions':\n        tf.io.FixedLenFeature(shape=7, dtype=tf.float32),\n\n    # Observations\n    'gripper/joints/velocity':\n        tf.io.FixedLenFeature(shape=1, dtype=tf.float32),\n    'gripper/joints/torque':\n        tf.io.FixedLenFeature(shape=1, dtype=tf.float32),\n    'gripper/grasp':\n        tf.io.FixedLenFeature(shape=1, dtype=tf.int64),\n    'gripper/joints/angle':\n        tf.io.FixedLenFeature(shape=1, dtype=tf.float32),\n    'sawyer/joints/velocity':\n        tf.io.FixedLenFeature(shape=7, dtype=tf.float32),\n    'sawyer/pinch/pose':\n        tf.io.FixedLenFeature(shape=7, dtype=tf.float32),\n    'sawyer/tcp/pose':\n        tf.io.FixedLenFeature(shape=7, dtype=tf.float32),\n    'sawyer/tcp/effort':\n        tf.io.FixedLenFeature(shape=6, dtype=tf.float32),\n    'sawyer/joints/torque':\n        tf.io.FixedLenFeature(shape=7, dtype=tf.float32),\n    'sawyer/tcp/velocity':\n        tf.io.FixedLenFeature(shape=6, dtype=tf.float32),\n    'sawyer/joints/angle':\n        tf.io.FixedLenFeature(shape=7, dtype=tf.float32),\n    'wrist/torque':\n        tf.io.FixedLenFeature(shape=3, dtype=tf.float32),\n    'wrist/force':\n        tf.io.FixedLenFeature(shape=3, dtype=tf.float32),\n    'pixels/basket_front_left':\n        tf.io.FixedLenFeature(shape=1, dtype=tf.string),\n    'pixels/basket_back_left':\n        tf.io.FixedLenFeature(shape=1, dtype=tf.string),\n    'pixels/basket_front_right':\n        tf.io.FixedLenFeature(shape=1, dtype=tf.string),\n    'pixels/royale_camera_driver_depth':\n        tf.io.FixedLenFeature(shape=(171, 224, 1), dtype=tf.float32),\n    'pixels/royale_camera_driver_gray':\n        tf.io.FixedLenFeature(shape=1, dtype=tf.string),\n    'pixels/usbcam0':\n        tf.io.FixedLenFeature(shape=1, dtype=tf.string),\n    'pixels/usbcam1':\n        tf.io.FixedLenFeature(shape=1, dtype=tf.string),\n}\n\n\ndef _parse_example(example):\n  return _decode_images(tf.io.parse_single_example(example, _FEATURES))\n\n\ndef _decode_images(record):\n  for name, value in list(record.items()):\n    if value.dtype == tf.string:\n      record[name] = tf.io.decode_jpeg(value[0])\n  return record\n"
  },
  {
    "path": "synthetic_returns/README.md",
    "content": "# Code for Synthetic Returns\n\nThis repository contains code for the arXiv preprint\n[\"Synthetic Returns for Long-Term Credit Assignment\"](https://arxiv.org/abs/2102.12425)\nby David Raposo, Sam Ritter, Adam Santoro, Greg Wayne, Theophane Weber, Matt\nBotvinick, Hado van Hasselt, and Francis Song.\n\nTo cite this work:\n\n```\n@article{raposo2021synthetic,\n  title={Rapid Task-Solving in Novel Environments},\n  author={Raposo, David and Ritter, Sam and Santoro, Adam and Wayne, Greg and\n  Weber, Theophane and Botvinick, Matt and van Hasselt, Hado and Song, Francis},\n  journal={arXiv preprint arXiv:2102.12425},\n  year={2021}\n}\n```\n\n### Agent core wrapper\n\nWe implemented the Synthetic Returns module as a wrapper to a recurrent neural\nnetwork (RNN), so it should be compatible with any Deep-RL agent with an\narbitrary RNN core, whose inputs consist of batches of vectors. This could be an\nLSTM as in the example below, or a more sophisticated core as long as it\nimplements an `hk.RNNCore`.\n\n```python\nagent_core = hk.LSTM(128)\n```\n\nTo build the SR wrapper, simply pass the existing agent core to the constructor,\nalong with the SR configuration:\n\n```python\nsr_config = {\n    \"memory_size\": 128,\n    \"capacity\": 300,\n    \"hidden_layers\": (128, 128),\n    \"alpha\": 0.3,\n    \"beta\": 1.0,\n}\nsr_agent_core = hk.ResetCore(\n  SyntheticReturnsCoreWrapper(core=agent_core, **sr_config))\n```\n\nTypically, the SR wrapper should itself be wrapped in a `hk.ResetCore` in order\nto reset the core state in the beginning of a new episode. This will reset not\nonly the episodic memory but also the original agent core that was passed to the\nSR wrapper constructor.\n\n### Learner\n\nConsider the distributed setting, wherein a learner receives mini-batches of\ntrajectories of length `T` produced by the actors.\n\n`trajectory` is a nested structure of tensors of size `[T,B,...]` (where `B` is\nthe batch size) containing observations, agent states, rewards and step type\nindicators.\n\nWe start by producing inputs to the SR core, which consist of tuples of current\nstate embeddings and return targets. The current state embeddings can be\nproduced by a ConvNet, for example. In our experiments we used the current step\nreward as target. Note that the current step reward correspond to the rewards in\nthe trajectory shifted by one, relative to the observations:\n\n```python\nobservations = jax.tree_map(lambda x: x[:-1], trajectory.observation)\nvision_output = hk.BatchApply(vision_net)(observations)\nreturn_targets = trajectory.reward[1:]\nsr_core_inputs = (vision_output, return_targets)\n```\n\nFor purposes of core resetting at the beginning of a new episode, we also need\nto pass an indicator of which steps correspond to the first step of an episode.\n\n```python\nshould_reset = jnp.equal(\n  trajectory.step_type[:-1], int(dm_env.StepType.FIRST))\ncore_inputs = (sr_core_inputs, should_reset)\n```\n\nWe can now produce an unroll using `hk.dynamic_unroll` and passing it the SR\ncore, the core inputs we produced, and the initial state of the unroll, which\ncorresponds to the agent state in the first step of the trajectory:\n\n```python\nstate = jax.tree_map(lambda t: t[0], trajectory.agent_state)\ncore_output, state = hk.dynamic_unroll(\n  sr_agent_core, core_inputs, state)\n```\n\nThe SR wrapper produces 4 output tensors: the output of the agent core, the\nsynthetic returns, the SR-augmented return, and the SR loss.\n\nThe synthetic returns are taken into account when computing the augmented return\nand the SR loss. Therefore they are not needed anymore and can be discarded or\nused for logging purposes.\n\nThe agent core outputs should be used, as usual, for producing a policy. In an\nactor-critic, policy gradient set-up, like IMPALA, we would produce policy\nlogits and values:\n\n```python\npolicy_logits = hk.BatchApply(policy_net)(core_output.output)\nvalue = hk.BatchApply(baseline_net)(core_output.output)\n```\n\nSimilarly, in a Q-learning setting we would use the agent core outputs to\nproduce q-values.\n\nThe SR-augmented returns should be used in place of the environment rewards for\nthe policy updates (e.g. when computing the policy gradient and baseline\nlosses):\n\n```python\nrewards = core_output.augmented_return\n```\n\nFinally, the SR loss, summed over batch and time dimensions, should be added to\nthe total learner loss to be minimized:\n\n```python\ntotal_loss += jnp.sum(core_output.sr_loss)\n```\n"
  },
  {
    "path": "synthetic_returns/requirements.txt",
    "content": "dm-haiku>=0.0.3\njax>=0.2.8\n"
  },
  {
    "path": "synthetic_returns/synthetic_returns.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Episodic Memory and Synthetic Returns Core Wrapper modules.\"\"\"\nimport collections\n\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\n\nSRCoreWrapperOutput = collections.namedtuple(\n    \"SRCoreWrapperOutput\", [\"output\", \"synthetic_return\", \"augmented_return\",\n                            \"sr_loss\"])\n\n\nclass EpisodicMemory(hk.RNNCore):\n  \"\"\"Episodic Memory module.\"\"\"\n\n  def __init__(self, memory_size, capacity, name=\"episodic_memory\"):\n    \"\"\"Constructor.\n\n    Args:\n      memory_size: Integer. The size of the vectors to be stored.\n      capacity: Integer. The maximum number of memories to store before it\n          becomes necessary to overwrite old memories.\n      name: String. A name for this Haiku module instance.\n    \"\"\"\n    super().__init__(name=name)\n    self._memory_size = memory_size\n    self._capacity = capacity\n\n  def __call__(self, inputs, prev_state):\n    \"\"\"Writes a new memory into the episodic memory.\n\n    Args:\n      inputs: A Tensor of shape ``[batch_size, memory_size]``.\n      prev_state: The previous state of the episodic memory, which is a tuple\n         with a (i) counter of shape ``[batch_size, 1]`` indicating how many\n         memories have been written so far, and (ii) a tensor of shape\n         ``[batch_size, capacity, memory_size]`` with the full content of the\n         episodic memory.\n    Returns:\n      A tuple with (i) a tensor of shape ``[batch_size, capacity, memory_size]``\n          with the full content of the episodic memory, including the newly\n          written memory, and (ii) the new state of the episodic memory.\n    \"\"\"\n    inputs = jax.lax.stop_gradient(inputs)\n    counter, memories = prev_state\n    counter_mod = jnp.mod(counter, self._capacity)\n    slot_selector = jnp.expand_dims(\n        jax.nn.one_hot(counter_mod, self._capacity), axis=2)\n    memories = memories * (1 - slot_selector) + (\n        slot_selector * jnp.expand_dims(inputs, 1))\n    counter = counter + 1\n    return memories, (counter, memories)\n\n  def initial_state(self, batch_size):\n    \"\"\"Creates the initial state of the episodic memory.\n\n    Args:\n      batch_size: Integer. The batch size of the episodic memory.\n    Returns:\n      A tuple with (i) a counter of shape ``[batch_size, 1]`` and (ii) a tensor\n          of shape ``[batch_size, capacity, memory_size]`` with the full content\n          of the episodic memory.\n    \"\"\"\n    if batch_size is None:\n      shape = []\n    else:\n      shape = [batch_size]\n    counter = jnp.zeros(shape)\n    memories = jnp.zeros(shape + [self._capacity, self._memory_size])\n    return (counter, memories)\n\n\nclass SyntheticReturnsCoreWrapper(hk.RNNCore):\n  \"\"\"Synthetic Returns core wrapper.\"\"\"\n\n  def __init__(self, core, memory_size, capacity, hidden_layers, alpha, beta,\n               loss_func=(lambda x, y: 0.5 * jnp.square(x - y)),\n               apply_core_to_input=False, name=\"synthetic_returns_wrapper\"):\n    \"\"\"Constructor.\n\n    Args:\n      core: hk.RNNCore. The recurrent core of the agent. E.g. an LSTM.\n      memory_size: Integer. The size of the vectors to be stored in the episodic\n          memory.\n      capacity: Integer. The maximum number of memories to store before it\n          becomes necessary to overwrite old memories.\n      hidden_layers: Tuple or list of integers, indicating the size of the\n          hidden layers of the MLPs used to produce synthetic returns, current\n          state bias, and gate.\n      alpha: The multiplier of the synthetic returns term in the augmented\n          return.\n      beta: The multiplier of the environment returns term in the augmented\n          return.\n      loss_func: A function of two arguments (predictions and targets) to\n          compute the SR loss.\n      apply_core_to_input: Boolean. Whether to apply the core on the inputs. If\n          true, the synthetic returns will be computed from the outputs of the\n          RNN core passed to the constructor. If false, the RNN core will be\n          applied only at the output of this wrapper, and the synthetic returns\n          will be computed from the inputs.\n      name: String. A name for this Haiku module instance.\n    \"\"\"\n    super().__init__(name=name)\n    self._em = EpisodicMemory(memory_size, capacity)\n    self._capacity = capacity\n    hidden_layers = list(hidden_layers)\n    self._synthetic_return = hk.nets.MLP(hidden_layers + [1])\n    self._bias = hk.nets.MLP(hidden_layers + [1])\n    self._gate = hk.Sequential([\n        hk.nets.MLP(hidden_layers + [1]),\n        jax.nn.sigmoid,\n    ])\n    self._apply_core_to_input = apply_core_to_input\n    self._core = core\n    self._alpha = alpha\n    self._beta = beta\n    self._loss = loss_func\n\n  def initial_state(self, batch_size):\n    return (\n        self._em.initial_state(batch_size),\n        self._core.initial_state(batch_size)\n    )\n\n  def __call__(self, inputs, prev_state):\n    current_input, return_target = inputs\n\n    em_state, core_state = prev_state\n    (counter, memories) = em_state\n\n    if self._apply_core_to_input:\n      current_input, core_state = self._core(current_input, core_state)\n\n    # Synthetic return for the current state\n    synth_return = jnp.squeeze(self._synthetic_return(current_input), -1)\n\n    # Current state bias term\n    bias = self._bias(current_input)\n\n    # Gate computed from current state\n    gate = self._gate(current_input)\n\n    # When counter > capacity, mask will be all ones\n    mask = 1 - jnp.cumsum(jax.nn.one_hot(counter, self._capacity), axis=1)\n    mask = jnp.expand_dims(mask, axis=2)\n\n    # Synthetic returns for each state in memory\n    past_synth_returns = hk.BatchApply(self._synthetic_return)(memories)\n\n    # Sum of synthetic returns from previous states\n    sr_sum = jnp.sum(past_synth_returns * mask, axis=1)\n\n    prediction = jnp.squeeze(sr_sum * gate + bias, -1)\n    sr_loss = self._loss(prediction, return_target)\n\n    augmented_return = jax.lax.stop_gradient(\n        self._alpha * synth_return + self._beta * return_target)\n\n    # Write current state to memory\n    _, em_state = self._em(current_input, em_state)\n\n    if not self._apply_core_to_input:\n      output, core_state = self._core(current_input, core_state)\n    else:\n      output = current_input\n\n    output = SRCoreWrapperOutput(\n        output=output,\n        synthetic_return=synth_return,\n        augmented_return=augmented_return,\n        sr_loss=sr_loss,\n    )\n    return output, (em_state, core_state)\n"
  },
  {
    "path": "tandem_dqn/gym_atari.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"dm_env environment wrapper around Gym Atari configured to be like Xitari.\n\nGym Atari is built on the Arcade Learning Environment (ALE), whereas Xitari is\nan old fork of the ALE.\n\"\"\"\n\n# pylint: disable=g-bad-import-order\n\nfrom typing import Optional, Tuple\n\nimport atari_py  # pylint: disable=unused-import for gym to load Atari games.\nimport dm_env\nfrom dm_env import specs\nimport gym\nimport numpy as np\n\nfrom tandem_dqn import atari_data\n\n_GYM_ID_SUFFIX = '-xitari-v1'\n_SA_SUFFIX = '-sa'\n\n\ndef _game_id(game, sticky_actions):\n  return game + (_SA_SUFFIX if sticky_actions else '') + _GYM_ID_SUFFIX\n\n\ndef _register_atari_environments():\n  \"\"\"Registers Atari environments in Gym to be as similar to Xitari as possible.\n\n  Main difference from PongNoFrameSkip-v4, etc. is max_episode_steps is unset\n  and only the usual 57 Atari games are registered.\n\n  Additionally, sticky-actions variants of the environments are registered\n  with an '-sa' suffix.\n  \"\"\"\n  for sticky_actions in [False, True]:\n    for game in atari_data.ATARI_GAMES:\n      repeat_action_probability = 0.25 if sticky_actions else 0.0\n      gym.envs.registration.register(\n          id=_game_id(game, sticky_actions),\n          entry_point='gym.envs.atari:AtariEnv',\n          kwargs={  # Explicitly set all known arguments.\n              'game': game,\n              'mode': None,  # Not necessarily the same as 0.\n              'difficulty': None,  # Not necessarily the same as 0.\n              'obs_type': 'image',\n              'frameskip': 1,  # Get every frame.\n              'repeat_action_probability': repeat_action_probability,\n              'full_action_space': False,\n          },\n          max_episode_steps=None,  # No time limit, handled in run loop.\n          nondeterministic=False,  # Xitari is deterministic.\n      )\n\n\n_register_atari_environments()\n\n\nclass GymAtari(dm_env.Environment):\n  \"\"\"Gym Atari with a `dm_env.Environment` interface.\"\"\"\n\n  def __init__(self, game, sticky_actions, seed):\n    self._gym_env = gym.make(_game_id(game, sticky_actions))\n    self._gym_env.seed(seed)\n    self._start_of_episode = True\n\n  def reset(self) -> dm_env.TimeStep:\n    \"\"\"Resets the environment and starts a new episode.\"\"\"\n    observation = self._gym_env.reset()\n    lives = np.int32(self._gym_env.ale.lives())\n    timestep = dm_env.restart((observation, lives))\n    self._start_of_episode = False\n    return timestep\n\n  def step(self, action: np.int32) -> dm_env.TimeStep:\n    \"\"\"Updates the environment given an action and returns a timestep.\"\"\"\n    # If the previous timestep was LAST then we call reset() on the Gym\n    # environment, otherwise step(). Although Gym environments allow you to step\n    # through episode boundaries (similar to dm_env) they emit a warning.\n    if self._start_of_episode:\n      step_type = dm_env.StepType.FIRST\n      observation = self._gym_env.reset()\n      discount = None\n      reward = None\n      done = False\n    else:\n      observation, reward, done, info = self._gym_env.step(action)\n      if done:\n        assert 'TimeLimit.truncated' not in info, 'Should never truncate.'\n        step_type = dm_env.StepType.LAST\n        discount = 0.\n      else:\n        step_type = dm_env.StepType.MID\n        discount = 1.\n\n    lives = np.int32(self._gym_env.ale.lives())\n    timestep = dm_env.TimeStep(\n        step_type=step_type,\n        observation=(observation, lives),\n        reward=reward,\n        discount=discount,\n    )\n    self._start_of_episode = done\n    return timestep\n\n  def observation_spec(self) -> Tuple[specs.Array, specs.Array]:\n    space = self._gym_env.observation_space\n    return (specs.Array(shape=space.shape, dtype=space.dtype, name='rgb'),\n            specs.Array(shape=(), dtype=np.int32, name='lives'))\n\n  def action_spec(self) -> specs.DiscreteArray:\n    space = self._gym_env.action_space\n    return specs.DiscreteArray(\n        num_values=space.n, dtype=np.int32, name='action')\n\n  def close(self):\n    self._gym_env.close()\n\n\nclass RandomNoopsEnvironmentWrapper(dm_env.Environment):\n  \"\"\"Adds a random number of noop actions at the beginning of each episode.\"\"\"\n\n  def __init__(self,\n               environment: dm_env.Environment,\n               max_noop_steps: int,\n               min_noop_steps: int = 0,\n               noop_action: int = 0,\n               seed: Optional[int] = None):\n    \"\"\"Initializes the random noops environment wrapper.\"\"\"\n    self._environment = environment\n    if max_noop_steps < min_noop_steps:\n      raise ValueError('max_noop_steps must be greater or equal min_noop_steps')\n    self._min_noop_steps = min_noop_steps\n    self._max_noop_steps = max_noop_steps\n    self._noop_action = noop_action\n    self._rng = np.random.RandomState(seed)\n\n  def reset(self):\n    \"\"\"Begins new episode.\n\n    This method resets the wrapped environment and applies a random number\n    of noop actions before returning the last resulting observation\n    as the first episode timestep. Intermediate timesteps emitted by the inner\n    environment (including all rewards and discounts) are discarded.\n\n    Returns:\n      First episode timestep corresponding to the timestep after a random number\n      of noop actions are applied to the inner environment.\n\n    Raises:\n      RuntimeError: if an episode end occurs while the inner environment\n        is being stepped through with the noop action.\n    \"\"\"\n    return self._apply_random_noops(initial_timestep=self._environment.reset())\n\n  def step(self, action):\n    \"\"\"Steps environment given action.\n\n    If beginning a new episode then random noops are applied as in `reset()`.\n\n    Args:\n      action: action to pass to environment conforming to action spec.\n\n    Returns:\n      `Timestep` from the inner environment unless beginning a new episode, in\n      which case this is the timestep after a random number of noop actions\n      are applied to the inner environment.\n    \"\"\"\n    timestep = self._environment.step(action)\n    if timestep.first():\n      return self._apply_random_noops(initial_timestep=timestep)\n    else:\n      return timestep\n\n  def _apply_random_noops(self, initial_timestep):\n    assert initial_timestep.first()\n    num_steps = self._rng.randint(self._min_noop_steps,\n                                  self._max_noop_steps + 1)\n    timestep = initial_timestep\n    for _ in range(num_steps):\n      timestep = self._environment.step(self._noop_action)\n      if timestep.last():\n        raise RuntimeError('Episode ended while applying %s noop actions.' %\n                           num_steps)\n\n    # We make sure to return a FIRST timestep, i.e. discard rewards & discounts.\n    return dm_env.restart(timestep.observation)\n\n  ## All methods except for reset and step redirect to the underlying env.\n\n  def observation_spec(self):\n    return self._environment.observation_spec()\n\n  def action_spec(self):\n    return self._environment.action_spec()\n\n  def reward_spec(self):\n    return self._environment.reward_spec()\n\n  def discount_spec(self):\n    return self._environment.discount_spec()\n\n  def close(self):\n    return self._environment.close()\n"
  },
  {
    "path": "tandem_dqn/losses.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Losses for TandemDQN.\"\"\"\n\nfrom typing import Any, Callable\n\nimport chex\nimport jax\nimport jax.numpy as jnp\nimport rlax\n\nfrom tandem_dqn import networks\n\n# Batch variants of double_q_learning and SARSA.\nbatch_double_q_learning = jax.vmap(rlax.double_q_learning)\nbatch_sarsa_learning = jax.vmap(rlax.sarsa)\n\n# Batch variant of quantile_q_learning with fixed tau input across batch.\nbatch_quantile_q_learning = jax.vmap(\n    rlax.quantile_q_learning, in_axes=(0, None, 0, 0, 0, 0, 0, None))\n\n\ndef _mc_learning(\n    q_tm1: chex.Array,\n    a_tm1: chex.Numeric,\n    mc_return_tm1: chex.Array,\n) -> chex.Numeric:\n  \"\"\"Calculates the MC return error.\"\"\"\n  chex.assert_rank([q_tm1, a_tm1], [1, 0])\n  chex.assert_type([q_tm1, a_tm1], [float, int])\n  return mc_return_tm1 - q_tm1[a_tm1]\n\n# Batch variant of MC learning.\nbatch_mc_learning = jax.vmap(_mc_learning)\n\n\ndef _qr_loss(q_tm1, q_t, q_target_t, transitions, rng_key):\n  \"\"\"Calculates QR-Learning loss from network outputs and transitions.\"\"\"\n  del q_t, rng_key  # Unused.\n  # Compute Q value distributions.\n  huber_param = 1.\n  quantiles = networks.make_quantiles()\n  losses = batch_quantile_q_learning(\n      q_tm1.q_dist,\n      quantiles,\n      transitions.a_tm1,\n      transitions.r_t,\n      transitions.discount_t,\n      q_target_t.q_dist,  # No double Q-learning here.\n      q_target_t.q_dist,\n      huber_param,\n  )\n  loss = jnp.mean(losses)\n  return loss\n\n\ndef _sarsa_loss(q_tm1, q_t, transitions, rng_key):\n  \"\"\"Calculates SARSA loss from network outputs and transitions.\"\"\"\n  del rng_key  # Unused.\n  grad_error_bound = 1. / 32\n  td_errors = batch_sarsa_learning(\n      q_tm1.q_values,\n      transitions.a_tm1,\n      transitions.r_t,\n      transitions.discount_t,\n      q_t.q_values,\n      transitions.a_t\n  )\n  td_errors = rlax.clip_gradient(td_errors, -grad_error_bound, grad_error_bound)\n  losses = rlax.l2_loss(td_errors)\n  loss = jnp.mean(losses)\n  return loss\n\n\ndef _mc_loss(q_tm1, transitions, rng_key):\n  \"\"\"Calculates Monte-Carlo return loss, i.e. regression towards MC return.\"\"\"\n  del rng_key  # Unused.\n  errors = batch_mc_learning(q_tm1.q_values, transitions.a_tm1,\n                             transitions.mc_return_tm1)\n  loss = jnp.mean(rlax.l2_loss(errors))\n  return loss\n\n\ndef _double_q_loss(q_tm1, q_t, q_target_t, transitions, rng_key):\n  \"\"\"Calculates Double Q-Learning loss from network outputs and transitions.\"\"\"\n  del rng_key  # Unused.\n  grad_error_bound = 1. / 32\n  td_errors = batch_double_q_learning(\n      q_tm1.q_values,\n      transitions.a_tm1,\n      transitions.r_t,\n      transitions.discount_t,\n      q_target_t.q_values,\n      q_t.q_values,\n  )\n  td_errors = rlax.clip_gradient(td_errors, -grad_error_bound, grad_error_bound)\n  losses = rlax.l2_loss(td_errors)\n  loss = jnp.mean(losses)\n  return loss\n\n\ndef _q_regression_loss(q_tm1, q_tm1_target):\n  \"\"\"Loss for regression of all action values towards targets.\"\"\"\n  errors = q_tm1.q_values - jax.lax.stop_gradient(q_tm1_target.q_values)\n  loss = jnp.mean(rlax.l2_loss(errors))\n  return loss\n\n\ndef make_loss_fn(loss_type: str, active: bool) -> Callable[..., Any]:\n  \"\"\"Create active or passive loss function of given type.\"\"\"\n\n  if active:\n    primary = lambda x: x.active\n    secondary = lambda x: x.passive\n  else:\n    primary = lambda x: x.passive\n    secondary = lambda x: x.active\n\n  def sarsa_loss_fn(q_tm1, q_t, q_target_t, transitions, rng_key):\n    \"\"\"SARSA loss using own networks.\"\"\"\n    del q_t  # Unused.\n    return _sarsa_loss(primary(q_tm1), primary(q_target_t), transitions,\n                       rng_key)\n\n  def mc_loss_fn(q_tm1, q_t, q_target_t, transitions, rng_key):\n    \"\"\"MonteCarlo loss.\"\"\"\n    del q_t, q_target_t\n    return _mc_loss(primary(q_tm1), transitions, rng_key)\n\n  def double_q_loss_fn(q_tm1, q_t, q_target_t, transitions, rng_key):\n    \"\"\"Regular DoubleQ loss using own networks.\"\"\"\n    return _double_q_loss(primary(q_tm1), primary(q_t), primary(q_target_t),\n                          transitions, rng_key)\n\n  def double_q_loss_v_fn(q_tm1, q_t, q_target_t, transitions, rng_key):\n    \"\"\"DoubleQ loss using other network's (target) value function.\"\"\"\n    return _double_q_loss(primary(q_tm1), primary(q_t), secondary(q_target_t),\n                          transitions, rng_key)\n\n  def double_q_loss_p_fn(q_tm1, q_t, q_target_t, transitions, rng_key):\n    \"\"\"DoubleQ loss using other network's (online) argmax policy.\"\"\"\n    return _double_q_loss(primary(q_tm1), secondary(q_t), primary(q_target_t),\n                          transitions, rng_key)\n\n  def double_q_loss_pv_fn(q_tm1, q_t, q_target_t, transitions, rng_key):\n    \"\"\"DoubleQ loss using other network's argmax policy & target value fn.\"\"\"\n    return _double_q_loss(primary(q_tm1), secondary(q_t), secondary(q_target_t),\n                          transitions, rng_key)\n\n  # Pure regression.\n  def q_regression_loss_fn(q_tm1, q_t, q_target_t, transitions, rng_key):\n    \"\"\"Pure regression of q_tm1(self) towards q_tm1(other).\"\"\"\n    del q_t, q_target_t, transitions, rng_key   # Unused.\n    return _q_regression_loss(primary(q_tm1), secondary(q_tm1))\n\n  # QR loss.\n  def qr_loss_fn(q_tm1, q_t, q_target_t, transitions, rng_key):\n    \"\"\"QR-Q loss using own networks.\"\"\"\n    return _qr_loss(primary(q_tm1), primary(q_t), primary(q_target_t),\n                    transitions, rng_key)\n\n  if loss_type == 'double_q':\n    return double_q_loss_fn\n  elif loss_type == 'sarsa':\n    return sarsa_loss_fn\n  elif loss_type == 'mc_return':\n    return mc_loss_fn\n  elif loss_type == 'double_q_v':\n    return double_q_loss_v_fn\n  elif loss_type == 'double_q_p':\n    return double_q_loss_p_fn\n  elif loss_type == 'double_q_pv':\n    return double_q_loss_pv_fn\n  elif loss_type == 'q_regression':\n    return q_regression_loss_fn\n  elif loss_type == 'qr':\n    return qr_loss_fn\n  else:\n    raise ValueError('Unknown loss \"{}\"'.format(loss_type))\n"
  },
  {
    "path": "tandem_dqn/networks.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"DQN agent network components and implementation.\"\"\"\n\nimport typing\nfrom typing import Any, Callable, Tuple, Union\n\nimport chex\nimport haiku as hk\nimport jax\nimport jax.numpy as jnp\nimport numpy as np\n\nNetwork = hk.Transformed\nParams = hk.Params\nNetworkFn = Callable[..., Any]\n\n\nclass QNetworkOutputs(typing.NamedTuple):\n  q_values: jnp.ndarray\n\n\nclass QRNetworkOutputs(typing.NamedTuple):\n  q_values: jnp.ndarray\n  q_dist: jnp.ndarray\n\n\nNUM_QUANTILES = 201\n\n\ndef _dqn_default_initializer(\n    num_input_units: int) -> hk.initializers.Initializer:\n  \"\"\"Default initialization scheme inherited from past implementations of DQN.\n\n  This scheme was historically used to initialize all weights and biases\n  in convolutional and linear layers of DQN-type agents' networks.\n  It initializes each weight as an independent uniform sample from [`-c`, `c`],\n  where `c = 1 / np.sqrt(num_input_units)`, and `num_input_units` is the number\n  of input units affecting a single output unit in the given layer, i.e. the\n  total number of inputs in the case of linear (dense) layers, and\n  `num_input_channels * kernel_width * kernel_height` in the case of\n  convolutional layers.\n\n  Args:\n    num_input_units: number of input units to a single output unit of the layer.\n\n  Returns:\n    Haiku weight initializer.\n  \"\"\"\n  max_val = np.sqrt(1 / num_input_units)\n  return hk.initializers.RandomUniform(-max_val, max_val)\n\n\ndef make_quantiles():\n  \"\"\"Quantiles for QR-DQN.\"\"\"\n  return (jnp.arange(0, NUM_QUANTILES) + 0.5) / float(NUM_QUANTILES)\n\n\ndef conv(\n    num_features: int,\n    kernel_shape: Union[int, Tuple[int, int]],\n    stride: Union[int, Tuple[int, int]],\n    name=None,\n) -> NetworkFn:\n  \"\"\"Convolutional layer with DQN's legacy weight initialization scheme.\"\"\"\n\n  def net_fn(inputs):\n    \"\"\"Function representing conv layer with DQN's legacy initialization.\"\"\"\n    num_input_units = inputs.shape[-1] * kernel_shape[0] * kernel_shape[1]\n    initializer = _dqn_default_initializer(num_input_units)\n    layer = hk.Conv2D(\n        num_features,\n        kernel_shape=kernel_shape,\n        stride=stride,\n        w_init=initializer,\n        b_init=initializer,\n        padding='VALID',\n        name=name)\n    return layer(inputs)\n\n  return net_fn\n\n\ndef linear(num_outputs: int, with_bias=True, name=None) -> NetworkFn:\n  \"\"\"Linear layer with DQN's legacy weight initialization scheme.\"\"\"\n\n  def net_fn(inputs):\n    \"\"\"Function representing linear layer with DQN's legacy initialization.\"\"\"\n    initializer = _dqn_default_initializer(inputs.shape[-1])\n    layer = hk.Linear(\n        num_outputs,\n        with_bias=with_bias,\n        w_init=initializer,\n        b_init=initializer,\n        name=name)\n    return layer(inputs)\n\n  return net_fn\n\n\ndef linear_with_shared_bias(num_outputs: int, name=None) -> NetworkFn:\n  \"\"\"Linear layer with single shared bias instead of one bias per output.\"\"\"\n\n  def layer_fn(inputs):\n    \"\"\"Function representing a linear layer with single shared bias.\"\"\"\n    initializer = _dqn_default_initializer(inputs.shape[-1])\n    bias_free_linear = hk.Linear(\n        num_outputs, with_bias=False, w_init=initializer, name=name)\n    linear_output = bias_free_linear(inputs)\n    bias = hk.get_parameter('b', [1], inputs.dtype, init=initializer)\n    bias = jnp.broadcast_to(bias, linear_output.shape)\n    return linear_output + bias\n\n  return layer_fn\n\n\ndef dqn_torso() -> NetworkFn:\n  \"\"\"DQN convolutional torso.\n\n  Includes scaling from [`0`, `255`] (`uint8`) to [`0`, `1`] (`float32`)`.\n\n  Returns:\n    Network function that `haiku.transform` can be called on.\n  \"\"\"\n\n  def net_fn(inputs):\n    \"\"\"Function representing convolutional torso for a DQN Q-network.\"\"\"\n    network = hk.Sequential([\n        lambda x: x.astype(jnp.float32) / 255.,\n        conv(32, kernel_shape=(8, 8), stride=(4, 4), name='conv1'),\n        jax.nn.relu,\n        conv(64, kernel_shape=(4, 4), stride=(2, 2), name='conv2'),\n        jax.nn.relu,\n        conv(64, kernel_shape=(3, 3), stride=(1, 1), name='conv3'),\n        jax.nn.relu,\n        hk.Flatten(),\n    ])\n    return network(inputs)\n\n  return net_fn\n\n\ndef dqn_value_head(num_actions: int, shared_bias: bool = False) -> NetworkFn:\n  \"\"\"Regular DQN Q-value head with single hidden layer.\"\"\"\n\n  last_layer = linear_with_shared_bias if shared_bias else linear\n\n  def net_fn(inputs):\n    \"\"\"Function representing value head for a DQN Q-network.\"\"\"\n    network = hk.Sequential([\n        linear(512, name='linear1'),\n        jax.nn.relu,\n        last_layer(num_actions, name='output'),\n    ])\n    return network(inputs)\n\n  return net_fn\n\n\ndef qr_atari_network(num_actions: int, quantiles: jnp.ndarray) -> NetworkFn:\n  \"\"\"QR-DQN network, expects `uint8` input.\"\"\"\n\n  chex.assert_rank(quantiles, 1)\n  num_quantiles = len(quantiles)\n\n  def net_fn(inputs):\n    \"\"\"Function representing QR-DQN Q-network.\"\"\"\n    network = hk.Sequential([\n        dqn_torso(),\n        dqn_value_head(num_quantiles * num_actions),\n    ])\n    network_output = network(inputs)\n    q_dist = jnp.reshape(network_output, (-1, num_quantiles, num_actions))\n    q_values = jnp.mean(q_dist, axis=1)\n    q_values = jax.lax.stop_gradient(q_values)\n    return QRNetworkOutputs(q_dist=q_dist, q_values=q_values)\n\n  return net_fn\n\n\ndef double_dqn_atari_network(num_actions: int) -> NetworkFn:\n  \"\"\"DQN network with shared bias in final layer, expects `uint8` input.\"\"\"\n\n  def net_fn(inputs):\n    \"\"\"Function representing DQN Q-network with shared bias output layer.\"\"\"\n    network = hk.Sequential([\n        dqn_torso(),\n        dqn_value_head(num_actions, shared_bias=True),\n    ])\n    return QNetworkOutputs(q_values=network(inputs))\n\n  return net_fn\n\n\ndef make_network(network_type: str, num_actions: int) -> Network:\n  \"\"\"Constructs network.\"\"\"\n  if network_type == 'double_q':\n    network_fn = double_dqn_atari_network(num_actions)\n  elif network_type == 'qr':\n    quantiles = make_quantiles()\n    network_fn = qr_atari_network(num_actions, quantiles)\n  else:\n    raise ValueError('Unknown network \"{}\"'.format(network_type))\n\n  return hk.transform(network_fn)\n"
  },
  {
    "path": "tandem_dqn/processors.py",
    "content": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"Composable timestep processing, for DQN Atari preprocessing.\n\nAims:\n* Be self-contained.\n* Easy to have the preprocessing on the agent side or on the environment side.\n* Easy to swap out and modify parts of the processing.\n\nConventions:\n* The term \"processor\" is used to refer to any callable that could also have\n  a `reset()` function to clear any internal state. E.g. a plain function. Or an\n  instance of a class with `__call__` method, with or without a `reset()`\n  method.\n* `None` means no output when subsampling inputs.\n\"\"\"\n\nimport collections\nfrom typing import Any, Callable, List, Iterable, Optional, Sequence, Text, Tuple\n\nimport dm_env\nfrom dm_env import specs\nimport numpy as np\nfrom PIL import Image\n\nProcessor = Callable  # Actually a callable that may also have a reset() method.\nNest = Any  # Recursive types are not yet supported by pytype.\nNamedTuple = Any\nStepType = dm_env.StepType\n\n\ndef reset(processor: Processor[[Any], Any]) -> None:\n  \"\"\"Calls `reset()` on a `Processor` or function if the method exists.\"\"\"\n  if hasattr(processor, 'reset'):\n    processor.reset()\n\n\nidentity = lambda v: v\n\n\ndef trailing_zero_pad(\n    length: int) -> Processor[[List[np.ndarray]], List[np.ndarray]]:\n  \"\"\"Adds trailing zero padding to array lists to ensure a minimum length.\"\"\"\n\n  def trailing_zero_pad_fn(arrays):\n    padding_length = length - len(arrays)\n    if padding_length <= 0:\n      return arrays\n    zero = np.zeros_like(arrays[0])\n    return arrays + [zero] * padding_length\n\n  return trailing_zero_pad_fn\n\n\ndef none_to_zero_pad(values: List[Optional[NamedTuple]]) -> List[NamedTuple]:\n  \"\"\"Replaces `None`s in a list of named tuples with zeros of same structure.\"\"\"\n\n  actual_values = [n for n in values if n is not None]\n  if not actual_values:\n    raise ValueError('Must have at least one value which is not None.')\n  if len(actual_values) == len(values):\n    return values\n  example = actual_values[0]\n  zero = type(example)(*(np.zeros_like(x) for x in example))\n  return [zero if v is None else v for v in values]\n\n\ndef named_tuple_sequence_stack(values: Sequence[NamedTuple]) -> NamedTuple:\n  \"\"\"Converts a sequence of named tuples into a named tuple of tuples.\"\"\"\n  # [T(1, 2), T(3, 4), T(5, 6)].\n  transposed = zip(*values)\n  # ((1, 3, 5), (2, 4, 6)).\n  return type(values[0])(*transposed)\n  # T((1, 3, 5), (2, 4, 6)).\n\n\nclass Deque:\n  \"\"\"Double ended queue with a maximum length and initial values.\"\"\"\n\n  def __init__(self, max_length: int, initial_values=None):\n    self._deque = collections.deque(maxlen=max_length)\n    self._initial_values = initial_values or []\n\n  def reset(self) -> None:\n    self._deque.clear()\n    self._deque.extend(self._initial_values)\n\n  def __call__(self, value: Any) -> collections.deque:\n    self._deque.append(value)\n    return self._deque\n\n\nclass FixedPaddedBuffer:\n  \"\"\"Fixed size `None`-padded buffer which is cleared after it is filled.\n\n  E.g. with `length = 3`, `initial_index = 2` and values `[0, 1, 2, 3, 4, 5, 6]`\n  this will return `~~0`, `1~~`, `12~`, `123`, `4~~`, `45~`, `456`, where `~`\n  represents `None`. Used to concatenate timesteps for action repeats.\n\n  Action repeat requirements are:\n  * Fixed size buffer of timesteps.\n  * The `FIRST` timestep should return immediately to get the first action of\n    the episode, as there is no preceding action to repeat. Prefix with padding.\n  * For `MID` timesteps, the timestep buffer is periodically returned when full.\n  * When a `LAST` timestep is encountered, the current buffer of timesteps is\n    returned, suffixed with padding, as buffers should not cross episode\n    boundaries.\n\n  The requirements can be fulfilled by conditionally subsampling the output of\n  this processor.\n  \"\"\"\n\n  def __init__(self, length: int, initial_index: int):\n    self._length = length\n    self._initial_index = initial_index % length\n\n    self._index = self._initial_index\n    self._buffer = [None] * self._length\n\n  def reset(self) -> None:\n    self._index = self._initial_index\n    self._buffer = [None] * self._length\n\n  def __call__(self, value: Any) -> Sequence[Any]:\n    if self._index >= self._length:\n      assert self._index == self._length\n      self._index = 0\n      self._buffer = [None] * self._length\n    self._buffer[self._index] = value\n    self._index += 1\n    return self._buffer\n\n\nclass ConditionallySubsample:\n  \"\"\"Conditionally passes through input, returning `None` otherwise.\"\"\"\n\n  def __init__(self, condition: Processor[[Any], bool]):\n    self._condition = condition\n\n  def reset(self) -> None:\n    reset(self._condition)\n\n  def __call__(self, value: Any) -> Optional[Any]:\n    return value if self._condition(value) else None\n\n\nclass TimestepBufferCondition:\n  \"\"\"Returns `True` when an iterable of timesteps should be passed on.\n\n  Specifically returns `True`:\n  * If timesteps contain a `FIRST`.\n  * If timesteps contain a `LAST`.\n  * If number of steps passed since `FIRST` timestep modulo `period` is `0`.\n\n  Returns `False` otherwise. Used for action repeats in Atari preprocessing.\n  \"\"\"\n\n  def __init__(self, period: int):\n    self._period = period\n    self._steps_since_first_timestep = None\n    self._should_reset = False\n\n  def reset(self):\n    self._should_reset = False\n    self._steps_since_first_timestep = None\n\n  def __call__(self, timesteps: Iterable[dm_env.TimeStep]) -> bool:\n    if self._should_reset:\n      raise RuntimeError('Should have reset.')\n\n    # Find the main step type, FIRST and LAST take precedence over MID.\n    main_step_type = StepType.MID\n    precedent_step_types = (StepType.FIRST, StepType.LAST)\n    for timestep in timesteps:\n      if timestep is None:\n        continue\n      if timestep.step_type in precedent_step_types:\n        if main_step_type in precedent_step_types:\n          raise RuntimeError('Expected at most one FIRST or LAST.')\n        main_step_type = timestep.step_type\n\n    # Must have FIRST timestep after a reset.\n    if self._steps_since_first_timestep is None:\n      if main_step_type != StepType.FIRST:\n        raise RuntimeError('After reset first timestep should be FIRST.')\n\n    # pytype: disable=unsupported-operands\n    if main_step_type == StepType.FIRST:\n      self._steps_since_first_timestep = 0\n      return True\n    elif main_step_type == StepType.LAST:\n      self._steps_since_first_timestep = None\n      self._should_reset = True\n      return True\n    elif (self._steps_since_first_timestep + 1) % self._period == 0:\n      self._steps_since_first_timestep += 1\n      return True\n    else:\n      self._steps_since_first_timestep += 1\n      return False\n    # pytype: enable=unsupported-operands\n\n\nclass ApplyToNamedTupleField:\n  \"\"\"Runs processors on a particular field of a named tuple.\"\"\"\n\n  def __init__(self, field: Text, *processors: Processor[[Any], Any]):\n    self._field = field\n    self._processors = processors\n\n  def reset(self) -> None:\n    for processor in self._processors:\n      reset(processor)\n\n  def __call__(self, value: NamedTuple) -> NamedTuple:\n    attr_value = getattr(value, self._field)\n    for processor in self._processors:\n      attr_value = processor(attr_value)\n\n    return value._replace(**{self._field: attr_value})\n\n\nclass Maybe:\n  \"\"\"Wraps another processor so that `None` is returned when `None` is input.\"\"\"\n\n  def __init__(self, processor: Processor[[Any], Any]):\n    self._processor = processor\n\n  def reset(self) -> None:\n    reset(self._processor)\n\n  def __call__(self, value: Optional[Any]) -> Optional[Any]:\n    if value is None:\n      return None\n    else:\n      return self._processor(value)\n\n\nclass Sequential:\n  \"\"\"Chains together multiple processors.\"\"\"\n\n  def __init__(self, *processors: Processor[[Any], Any]):\n    self._processors = processors\n\n  def reset(self) -> None:\n    for processor in self._processors:\n      reset(processor)\n\n  def __call__(self, value: Any) -> Any:\n    for processor in self._processors:\n      value = processor(value)\n    return value\n\n\nclass ZeroDiscountOnLifeLoss:\n  \"\"\"Sets discount to zero on timestep if number of lives has decreased.\n\n  This processor assumes observations to be tuples whose second entry is a\n  scalar indicating the remaining number of lives.\n  \"\"\"\n\n  def __init__(self):\n    self._num_lives_on_prev_step = None\n\n  def reset(self) -> None:\n    self._num_lives_on_prev_step = None\n\n  def __call__(self, timestep: dm_env.TimeStep) -> dm_env.TimeStep:\n    # We have a life loss when the timestep is a regular transition and lives\n    # have decreased since the previous timestep.\n    num_lives = timestep.observation[1]\n    life_lost = timestep.mid() and (num_lives < self._num_lives_on_prev_step)\n    self._num_lives_on_prev_step = num_lives\n    return timestep._replace(discount=0.) if life_lost else timestep\n\n\ndef reduce_step_type(step_types: Sequence[StepType],\n                     debug: bool = False) -> StepType:\n  \"\"\"Outputs a representative step type from an array of step types.\"\"\"\n  # Zero padding will appear to be FIRST. Padding should only be seen before the\n  # FIRST (e.g. 000F) or after LAST (e.g. ML00).\n  if debug:\n    np_step_types = np.array(step_types)\n  output_step_type = StepType.MID\n  for i, step_type in enumerate(step_types):\n    if step_type == 0:  # step_type not actually FIRST, but we do expect 000F.\n      if debug and not (np_step_types == 0).all():\n        raise ValueError('Expected zero padding followed by FIRST.')\n      output_step_type = StepType.FIRST\n      break\n    elif step_type == StepType.LAST:\n      output_step_type = StepType.LAST\n      if debug and not (np_step_types[i + 1:] == 0).all():\n        raise ValueError('Expected LAST to be followed by zero padding.')\n      break\n    else:\n      if step_type != StepType.MID:\n        raise ValueError('Expected MID if not FIRST or LAST.')\n  return output_step_type\n\n\ndef aggregate_rewards(rewards: Sequence[Optional[float]],\n                      debug: bool = False) -> Optional[float]:\n  \"\"\"Sums up rewards, assumes discount is 1.\"\"\"\n  if None in rewards:\n    if debug:\n      np_rewards = np.array(rewards)\n      if not (np_rewards[-1] is None and (np_rewards[:-1] == 0).all()):\n        # Should only ever have [0, 0, 0, None] due to zero padding.\n        raise ValueError('Should only have a None reward for FIRST.')\n    return None\n  else:\n    # Faster than np.sum for a list of floats.\n    return sum(rewards)\n\n\ndef aggregate_discounts(discounts: Sequence[Optional[float]],\n                        debug: bool = False) -> Optional[float]:\n  \"\"\"Aggregates array of discounts into a scalar, expects `0`, `1` or `None`.\"\"\"\n  if debug:\n    np_discounts = np.array(discounts)\n    if not np.isin(np_discounts, [0., 1., None]).all():\n      raise ValueError('All discounts should be 0 or 1, got: %s.' %\n                       np_discounts)\n  if None in discounts:\n    if debug:\n      if not (np_discounts[-1] is None and (np_discounts[:-1] == 0).all()):\n        # Should have [0, 0, 0, None] due to zero padding.\n        raise ValueError('Should only have a None discount for FIRST.')\n    return None\n  else:\n    # Faster than np.prod for a list of floats.\n    result = 1\n    for d in discounts:\n      result *= d\n    return result\n\n\ndef rgb2y(array: np.ndarray) -> np.ndarray:\n  \"\"\"Converts RGB image array into grayscale.\"\"\"\n  if array.ndim != 3:\n    raise ValueError('Input array should be 3D, got %s.' % array.ndim)\n  output = np.tensordot(array, [0.299, 0.587, 1 - (0.299 + 0.587)], (-1, 0))\n  return output.astype(np.uint8)\n\n\ndef resize(shape: Tuple[int, ...]) -> Processor[[np.ndarray], np.ndarray]:\n  \"\"\"Resizes array to the given shape.\"\"\"\n  if len(shape) != 2:\n    raise ValueError('Resize shape has to be 2D, given: %s.' % str(shape))\n  # Image.resize takes (width, height) as output_shape argument.\n  image_shape = (shape[1], shape[0])\n\n  def resize_fn(array):\n    image = Image.fromarray(array).resize(image_shape, Image.BILINEAR)\n    return np.array(image, dtype=np.uint8)\n\n  return resize_fn\n\n\ndef select_rgb_observation(timestep: dm_env.TimeStep) -> dm_env.TimeStep:\n  \"\"\"Replaces an observation tuple by its first entry (the RGB observation).\"\"\"\n  return timestep._replace(observation=timestep.observation[0])\n\n\ndef apply_additional_discount(\n    additional_discount: float) -> Processor[[float], float]:\n  \"\"\"Returns a function that scales its non-`None` input by a constant.\"\"\"\n  return lambda d: None if d is None else additional_discount * d\n\n\ndef clip_reward(bound: float) -> Processor[[Optional[float]], Optional[float]]:\n  \"\"\"Returns a function that clips non-`None` inputs to (`-bound`, `bound`).\"\"\"\n\n  def clip_reward_fn(reward):\n    return None if reward is None else max(min(reward, bound), -bound)\n\n  return clip_reward_fn\n\n\ndef show(prefix: Text) -> Processor[[Any], Any]:\n  \"\"\"Prints value and passes through, for debugging.\"\"\"\n\n  def show_fn(value):\n    print('%s: %s' % (prefix, value))\n    return value\n\n  return show_fn\n\n\ndef atari(\n    additional_discount: float = 0.99,\n    max_abs_reward: Optional[float] = 1.0,\n    resize_shape: Optional[Tuple[int, int]] = (84, 84),\n    num_action_repeats: int = 4,\n    num_pooled_frames: int = 2,\n    zero_discount_on_life_loss: bool = True,\n    num_stacked_frames: int = 4,\n    grayscaling: bool = True,\n) -> Processor[[dm_env.TimeStep], Optional[dm_env.TimeStep]]:\n  \"\"\"Standard DQN preprocessing on Atari.\"\"\"\n\n  # This processor does the following to a sequence of timesteps.\n  #\n  # 1. Zeroes discount on loss of life.\n  # 2. Repeats actions (previous action should be repeated if None is returned).\n  # 3. Max pools action repeated observations.\n  # 4. Grayscales observations.\n  # 5. Resizes observations.\n  # 6. Stacks observations.\n  # 7. Clips rewards.\n  # 8. Applies an additional discount.\n  #\n  # For more detail see the annotations in the processors below.\n\n  # The FixedPaddedBuffer, ConditionallySubsample, none_to_zero_pad, stack and\n  # max_pool on the observation collectively does this (step types: F = FIRST,\n  # M = MID, L = LAST, ~ is None):\n  #\n  #   Type:      F   |   M     M     M     M   |   M     M     L   |   F   |\n  #   Frames:    A   |   B     C     D     E   |   F     G     H   |   I   |\n  #   Output: max[0A]|   ~     ~     ~  max[DE]|   ~     ~  max[H0]|max[0I]|\n  return Sequential(\n      # When the number of lives decreases, set discount to 0.\n      ZeroDiscountOnLifeLoss() if zero_discount_on_life_loss else identity,\n      # Select the RGB observation as the main observation, dropping lives.\n      select_rgb_observation,\n      # obs: 1, 2, 3, 4, 5, 6, 7, 8, 9, ...\n      # Write timesteps into a fixed-sized buffer padded with None.\n      FixedPaddedBuffer(length=num_action_repeats, initial_index=-1),\n      # obs: ~~~1, 2~~~, 23~~, 234~, 2345, 6~~~, 67~~, 678~, 6789, ...\n      # Periodically return the deque of timesteps, when the current timestep is\n      # FIRST, after that every 4 steps, and when the current timestep is LAST.\n      ConditionallySubsample(TimestepBufferCondition(num_action_repeats)),\n      # obs: ~~~1, ~, ~, ~, 2345, ~, ~, ~, 6789, ...\n      # If None pass through, otherwise apply the processor.\n      Maybe(\n          Sequential(\n              # Replace Nones with zero padding in each buffer.\n              none_to_zero_pad,\n              # obs: 0001, ~, ~, ~, 2345, ~, ~, ~, 6789, ...\n              # Convert sequence of nests into a nest of sequences.\n              named_tuple_sequence_stack,\n              # Choose representative step type from an array of step types.\n              ApplyToNamedTupleField('step_type', reduce_step_type),\n              # Rewards: sum then clip.\n              ApplyToNamedTupleField(\n                  'reward',\n                  aggregate_rewards,\n                  clip_reward(max_abs_reward) if max_abs_reward else identity,\n              ),\n              # Discounts: take product and scale by an additional discount.\n              ApplyToNamedTupleField(\n                  'discount',\n                  aggregate_discounts,\n                  apply_additional_discount(additional_discount),\n              ),\n              # Observations: max pool, grayscale, resize, and stack.\n              ApplyToNamedTupleField(\n                  'observation',\n                  lambda obs: np.stack(obs[-num_pooled_frames:], axis=0),\n                  lambda obs: np.max(obs, axis=0),\n                  # obs: max[01], ~, ~, ~, max[45], ~, ~, ~, max[89], ...\n                  # obs:    A,    ~, ~, ~,    B,    ~, ~, ~,    C, ...\n                  rgb2y if grayscaling else identity,\n                  resize(resize_shape) if resize_shape else identity,\n                  Deque(max_length=num_stacked_frames),\n                  # obs: A, ~, ~, ~, AB, ~, ~, ~, ABC, ~, ~, ~, ABCD, ~, ~, ~,\n                  #      BCDE, ~, ~, ~, CDEF, ...\n                  list,\n                  trailing_zero_pad(length=num_stacked_frames),\n                  # obs: A000, ~, ~, ~, AB00, ~, ~, ~, ABC0, ~, ~, ~, ABCD,\n                  #      ~, ~, ~, BCDE, ...\n                  lambda obs: np.stack(obs, axis=-1),\n              ),\n          )),\n  )\n\n\nclass AtariEnvironmentWrapper(dm_env.Environment):\n  \"\"\"Python environment wrapper that provides DQN Atari preprocessing.\n\n  This is a thin wrapper around the Atari processor.\n\n  Expects underlying Atari environment to have interleaved pixels (HWC) and\n  zero-indexed actions.\n  \"\"\"\n\n  def __init__(\n      self,\n      environment: dm_env.Environment,\n      additional_discount: float = 0.99,\n      max_abs_reward: Optional[float] = 1.0,\n      resize_shape: Optional[Tuple[int, int]] = (84, 84),\n      num_action_repeats: int = 4,\n      num_pooled_frames: int = 2,\n      zero_discount_on_life_loss: bool = True,\n      num_stacked_frames: int = 4,\n      grayscaling: bool = True,\n  ):\n    rgb_spec, unused_lives_spec = environment.observation_spec()\n    if rgb_spec.shape[2] != 3:\n      raise ValueError(\n          'This wrapper assumes interleaved pixel observations with shape '\n          '(height, width, channels).')\n    if int(environment.action_spec().minimum) != 0:\n      raise ValueError('This wrapper assumes zero-indexed actions.')\n\n    self._environment = environment\n    self._processor = atari(\n        additional_discount=additional_discount,\n        max_abs_reward=max_abs_reward,\n        resize_shape=resize_shape,\n        num_action_repeats=num_action_repeats,\n        num_pooled_frames=num_pooled_frames,\n        zero_discount_on_life_loss=zero_discount_on_life_loss,\n        num_stacked_frames=num_stacked_frames,\n        grayscaling=grayscaling,\n    )\n\n    if grayscaling:\n      self._observation_shape = resize_shape + (num_stacked_frames,)\n      self._observation_spec_name = 'grayscale'\n    else:\n      self._observation_shape = resize_shape + (3, num_stacked_frames)\n      self._observation_spec_name = 'RGB'\n\n    self._reset_next_step = True\n\n  def reset(self) -> dm_env.TimeStep:\n    \"\"\"Resets environment and provides the first processed timestep.\"\"\"\n    reset(self._processor)\n    timestep = self._environment.reset()\n    processed_timestep = self._processor(timestep)\n    assert processed_timestep is not None\n    self._reset_next_step = False\n    return processed_timestep\n\n  def step(self, action: int) -> dm_env.TimeStep:\n    \"\"\"Steps up to `num_action_repeat` times, returns a processed timestep.\"\"\"\n    # This implements the action repeat by repeatedly passing in the last action\n    # until an actual timestep is returned by the processor.\n\n    if self._reset_next_step:\n      return self.reset()  # Ignore action.\n\n    processed_timestep = None\n    while processed_timestep is None:\n      timestep = self._environment.step(action)\n      processed_timestep = self._processor(timestep)\n      if timestep.last():\n        self._reset_next_step = True\n        assert processed_timestep is not None\n    return processed_timestep\n\n  def action_spec(self) -> specs.DiscreteArray:\n    return self._environment.action_spec()\n\n  def observation_spec(self) -> specs.Array:\n    return specs.Array(\n        shape=self._observation_shape,\n        dtype=np.uint8,\n        name=self._observation_spec_name)\n\n\nclass AtariSimpleActionEnvironmentWrapper(dm_env.Environment):\n  \"\"\"Python environment wrapper for Atari so it takes integer actions.\n\n  Use this when processing is done on the agent side.\n  \"\"\"\n\n  def __init__(self, environment: dm_env.Environment):\n    self._environment = environment\n    if int(environment.action_spec()[0].minimum) != 0:\n      raise ValueError(\n          'This wrapper assumes zero-indexed actions. Use the Atari setting '\n          'zero_indexed_actions=\\\"true\\\" to get actions in this format.')\n\n  def reset(self) -> dm_env.TimeStep:\n    return self._environment.reset()\n\n  def step(self, action: int) -> dm_env.TimeStep:\n    return self._environment.step([np.array(action).reshape((1,))])\n\n  def action_spec(self) -> specs.DiscreteArray:\n    action_spec = self._environment.action_spec()[0]\n    return specs.DiscreteArray(\n        num_values=action_spec.maximum.item() + 1,\n        dtype=action_spec.dtype,\n        name='action_spec')\n\n  def observation_spec(self) -> specs.Array:\n    return self._environment.observation_spec()\n"
  }
]